1 // ----------------------------------------------------------------
3 // ----------------------------------------------------------------
4 // Produce un video de un juego a archivos bmp sueltos
5 // Ideal para generar un video promocional de un juego
7 // Copyrigth Enero 2003, Kronoman
8 // En memoria de mi querido padre
9 // ----------------------------------------------------------------
10 // Para que esto funcione, debe ser llamado en cada actualizacion
11 // logica del juego, de esa manera mantiene los fps constantes
12 // ----------------------------------------------------------------
19 // Globales de configuracion
20 char rvideo_filen
[1024]; // prefijo del video, setear a algo antes de empezar!
21 int rvideo_cadafsave
= 10; // cada cuantas llamadas salvar el frame (1 =todas, 2 = la mitad, etc)
22 int rvideo_step
= 0; // frame actual del step antes de salvar el frame (cuando esto = rvideo_cadafsave, salva el frame)
23 int rvideo_f_actual
= 0; // frame actual de grabacion
24 int rvideo_is_recording
= FALSE
; // estoy grabando? (permite hacer pausas, etc)
25 int rvideo_resize
= TRUE
; // reacomodar el tama~o de salida? SI/NO
26 int rvideo_w
= 320, rvideo_h
= 200;
28 // Funcion de inicializacion, solo por seguridad... :)
31 rvideo_cadafsave
= 10; // default 1/10 de los fps logicos del juego
33 rvideo_f_actual
= 1; // empezo a grabar de 0001
34 sprintf(rvideo_filen
, "rvideo"); // prefijo default
35 rvideo_is_recording
= FALSE
;
41 // Funcion de grabacion, llamar en las actualizaciones logicas del juego
42 // pasarle el bitmap que contiene la imagen, y la paleta
43 void rvideo_record(BITMAP
*bmp
, RGB
*pal
)
45 char filename
[2048]; // archivo a salvar
48 if (!rvideo_is_recording
) return; // no estamos grabando
50 if (rvideo_step
< rvideo_cadafsave
) return; // todavia no salvar
52 sprintf(filename
, "%s%04d.bmp", rvideo_filen
, rvideo_f_actual
);
56 if (rvideo_resize
&& rvideo_w
!= bmp
->w
&& rvideo_h
!= bmp
->h
)
58 // el frame debe ser reajustado en tama~o
59 tmp
= create_bitmap(rvideo_w
, rvideo_h
);
60 if (tmp
== NULL
) return;
62 stretch_blit(bmp
, tmp
, 0, 0, bmp
->w
, bmp
->h
, 0, 0, tmp
->w
, tmp
->h
);
63 save_bmp(filename
, tmp
, pal
); // salvar
65 if (tmp
!= NULL
) destroy_bitmap(tmp
);
70 save_bmp(filename
, bmp
, pal
); // salvar