El problema está en el valor del parámetro zoom que le pasas a la función rotozoomSurface, recuerda que su prototipo es:
SDL_Surface * rotozoomSurface (SDL_Surface *src, double angle, double zoom, int smooth);
Por lo tanto para no hacer zoom y mantener el tamaño original debes pasar el valor 1.0 en el parámetro zoom, y no 0 (por eso no la ves!), es decir:
- Código: Seleccionar todo
- // Girado 10 grados y tamaño original
 superficie2=rotozoomSurface(superficie, 10, 1.0, 0);
 
Otro consejo, la superficie que devuelve la función rotozoomSurface guardala en otra superficie.
La función que utilizo para dibujar imagenes rotadas o escalas en tiempo real es la siguiente:
- Código: Seleccionar todo
- void DrawSurface(SDL_Surface *src, int x, int y, float zoomx, float zoomy, float angle)
 {
 // Superficie temporal con las modificaciones correspondientes
 SDL_Surface *tmp;
 
 // Posición donde dibujaremos la superficie en pantalla
 SDL_Rect pos={x, y, 0, 0};
 
 // Creamos superficie rotada y/o escalada sin anti-aliasing
 tmp=rotozoomSurfaceXY(src, angle, zoomx, zoomy, 0);
 
 // Arreglo posición de la imagen ya que la rotación
 // es con respecto al centro de la imagen
 pos.x -= (tmp->w - src->w) / 2;
 pos.y -= (tmp->h - src->h) / 2;
 
 // Dibujamos en pantalla la nueva superficie
 // Nota: screen es la variable que nos devolvió
 // la función SDL_SetVideoMode
 SDL_BlitSurface(tmp, NULL, screen, &pos);
 
 // Eliminamos de la memoria la superficie temporal
 SDL_FreeSurface(tmp);
 }
 
Ojo, que la función anterior puede bajar el rendimiento si es llamada demasiadas veces dentro del game loop, ya que estamos realizando constantemente cálculos de rotación y escalado, y además creando y liberando memoria para superficies.
Una posible optimización al utilizar muchas transformaciones (rotación, escalado) en un juego,  es generarlas antes del ciclo y almacenarlas en varias superficies.
Saludos!