mirror of
https://github.com/Oibaf66/fbzx-wii.git
synced 2024-11-01 06:45:05 +01:00
Syncronised RZX playing to video
This commit is contained in:
parent
6b1eab6ac5
commit
4eb5142dec
149
src/computer.c
149
src/computer.c
@ -651,6 +651,57 @@ void set_memory_pointers () {
|
|||||||
ordenador.block3 = ordenador.memoria + (16384 * ram); // page n minus 49152
|
ordenador.block3 = ordenador.memoria + (16384 * ram); // page n minus 49152
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void end_of_frame()
|
||||||
|
{
|
||||||
|
if (ordenador.osd_time) {
|
||||||
|
ordenador.osd_time--;
|
||||||
|
if (ordenador.osd_time==0) {
|
||||||
|
//ordenador.tab_extended=0;
|
||||||
|
ordenador.esc_again=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ordenador.osd_time>1)
|
||||||
|
print_string (ordenador.screenbuffer,ordenador.osd_text, -1,450, 12, 0,ordenador.screen_width);
|
||||||
|
else if (ordenador.osd_time==1){
|
||||||
|
if (ordenador.zaurus_mini==0)
|
||||||
|
print_string (ordenador.screenbuffer," ",-1, 450, 12, 0,ordenador.screen_width);
|
||||||
|
else
|
||||||
|
print_string (ordenador.screenbuffer," ",-1, 450, 12, 0,ordenador.screen_width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ordenador.recording_rzx) print_string (ordenador.screenbuffer,"RZX Recording",-1, 450, 12, 0,ordenador.screen_width);
|
||||||
|
else if (ordenador.playing_rzx) print_string (ordenador.screenbuffer,"RZX Playing",-1, 450, 12, 0,ordenador.screen_width);
|
||||||
|
|
||||||
|
if (ordenador.tape_start_countdwn==1) ordenador.tape_stop=0; //Autoplay
|
||||||
|
|
||||||
|
if ((ordenador.tape_start_countdwn>0)&&(ordenador.stop_tape_start_countdown ==0)) ordenador.tape_start_countdwn--;
|
||||||
|
if (ordenador.pause_fastload_countdwn>0) ordenador.pause_fastload_countdwn--;
|
||||||
|
|
||||||
|
if (ordenador.mustlock) {
|
||||||
|
SDL_UnlockSurface (ordenador.screen);
|
||||||
|
SDL_Flip (ordenador.screen);
|
||||||
|
SDL_LockSurface (ordenador.screen);
|
||||||
|
} else {
|
||||||
|
SDL_Flip (ordenador.screen);
|
||||||
|
}
|
||||||
|
|
||||||
|
curr_frames=0;
|
||||||
|
ordenador.currline = 0;
|
||||||
|
ordenador.interr = 1;
|
||||||
|
ordenador.readkeyboard = 1;
|
||||||
|
ordenador.cicles_counter=0;
|
||||||
|
ordenador.pixel = ((unsigned char *) (ordenador.screen->pixels))+ordenador.init_line; // +ordenador.init_line;
|
||||||
|
ordenador.p_translt = ordenador.translate;
|
||||||
|
ordenador.p_translt2 = ordenador.translate2;
|
||||||
|
ordenador.contador_flash++;
|
||||||
|
if (ordenador.contador_flash == 16) {
|
||||||
|
ordenador.flash = 1 - ordenador.flash;
|
||||||
|
ordenador.contador_flash = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Paints the spectrum screen during the TSTADOS tstates that the Z80 used
|
/* Paints the spectrum screen during the TSTADOS tstates that the Z80 used
|
||||||
to execute last instruction */
|
to execute last instruction */
|
||||||
|
|
||||||
@ -753,56 +804,11 @@ inline void show_screen (int tstados) {
|
|||||||
|
|
||||||
|
|
||||||
//End of frame
|
//End of frame
|
||||||
if ((ordenador.currline > ordenador.pixalto)&&(ordenador.currpix>63)) {
|
if ((ordenador.currline > ordenador.pixalto)&&(ordenador.currpix>63)&&!ordenador.playing_rzx) {ordenador.currpix=64; end_of_frame();}
|
||||||
ordenador.currpix=64;
|
|
||||||
if (ordenador.osd_time) {
|
}
|
||||||
ordenador.osd_time--;
|
|
||||||
if (ordenador.osd_time==0) {
|
|
||||||
//ordenador.tab_extended=0;
|
|
||||||
ordenador.esc_again=0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ordenador.osd_time>1)
|
|
||||||
print_string (ordenador.screenbuffer,ordenador.osd_text, -1,450, 12, 0,ordenador.screen_width);
|
|
||||||
else if (ordenador.osd_time==1){
|
|
||||||
if (ordenador.zaurus_mini==0)
|
|
||||||
print_string (ordenador.screenbuffer," ",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
else
|
|
||||||
print_string (ordenador.screenbuffer," ",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (ordenador.recording_rzx) print_string (ordenador.screenbuffer,"RZX Recording",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
else if (ordenador.playing_rzx) print_string (ordenador.screenbuffer,"RZX Playing",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
|
|
||||||
if (ordenador.tape_start_countdwn==1) ordenador.tape_stop=0; //Autoplay
|
|
||||||
|
|
||||||
if ((ordenador.tape_start_countdwn>0)&&(ordenador.stop_tape_start_countdown ==0)) ordenador.tape_start_countdwn--;
|
|
||||||
if (ordenador.pause_fastload_countdwn>0) ordenador.pause_fastload_countdwn--;
|
|
||||||
|
|
||||||
if (ordenador.mustlock) {
|
|
||||||
SDL_UnlockSurface (ordenador.screen);
|
|
||||||
SDL_Flip (ordenador.screen);
|
|
||||||
SDL_LockSurface (ordenador.screen);
|
|
||||||
} else {
|
|
||||||
SDL_Flip (ordenador.screen);
|
|
||||||
}
|
|
||||||
|
|
||||||
curr_frames=0;
|
|
||||||
ordenador.currline = 0;
|
|
||||||
ordenador.interr = 1;
|
|
||||||
ordenador.readkeyboard = 1;
|
|
||||||
ordenador.cicles_counter=0;
|
|
||||||
ordenador.pixel = ((unsigned char *) (ordenador.screen->pixels))+ordenador.init_line; // +ordenador.init_line;
|
|
||||||
ordenador.p_translt = ordenador.translate;
|
|
||||||
ordenador.p_translt2 = ordenador.translate2;
|
|
||||||
ordenador.contador_flash++;
|
|
||||||
if (ordenador.contador_flash == 16) {
|
|
||||||
ordenador.flash = 1 - ordenador.flash;
|
|
||||||
ordenador.contador_flash = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Write the screen from 14339 state for 48K and from 14365 for 128k
|
//Write the screen from 14339 state for 48K and from 14365 for 128k
|
||||||
|
|
||||||
@ -1003,53 +1009,8 @@ inline void show_screen_precision (int tstados) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//End of frame
|
//End of frame
|
||||||
if ((ordenador.currline > ordenador.pixalto)&&(ordenador.currpix>ordenador.start_screen)){
|
if ((ordenador.currline > ordenador.pixalto)&&(ordenador.currpix>ordenador.start_screen)&&(!ordenador.playing_rzx)) end_of_frame();
|
||||||
if (ordenador.osd_time) {
|
|
||||||
ordenador.osd_time--;
|
|
||||||
if (ordenador.osd_time==0) {
|
|
||||||
//ordenador.tab_extended=0;
|
|
||||||
ordenador.esc_again=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ordenador.osd_time>1)
|
|
||||||
print_string (ordenador.screenbuffer,ordenador.osd_text, -1,450, 12, 0,ordenador.screen_width);
|
|
||||||
else if (ordenador.osd_time==1) {
|
|
||||||
if (ordenador.zaurus_mini==0)
|
|
||||||
print_string (ordenador.screenbuffer," ",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
else
|
|
||||||
print_string (ordenador.screenbuffer," ",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (ordenador.recording_rzx) print_string (ordenador.screenbuffer,"RZX Recording",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
else if (ordenador.playing_rzx) print_string (ordenador.screenbuffer,"RZX Playing",-1, 450, 12, 0,ordenador.screen_width);
|
|
||||||
|
|
||||||
if (ordenador.tape_start_countdwn==1) ordenador.tape_stop=0; //Autoplay
|
|
||||||
|
|
||||||
if ((ordenador.tape_start_countdwn>0)&&(ordenador.stop_tape_start_countdown ==0)) ordenador.tape_start_countdwn--;
|
|
||||||
if (ordenador.pause_fastload_countdwn>0) ordenador.pause_fastload_countdwn--;
|
|
||||||
|
|
||||||
if (ordenador.mustlock) {
|
|
||||||
SDL_UnlockSurface (ordenador.screen);
|
|
||||||
SDL_Flip (ordenador.screen);
|
|
||||||
SDL_LockSurface (ordenador.screen);
|
|
||||||
} else {
|
|
||||||
SDL_Flip (ordenador.screen);
|
|
||||||
}
|
|
||||||
|
|
||||||
curr_frames=0;
|
|
||||||
ordenador.currline = 0;
|
|
||||||
ordenador.interr = 1;
|
|
||||||
ordenador.readkeyboard = 1;
|
|
||||||
ordenador.cicles_counter=0;
|
|
||||||
ordenador.pixel = ((unsigned char *) (ordenador.screen->pixels))+ordenador.init_line; // +ordenador.init_line;
|
|
||||||
ordenador.p_translt = ordenador.translate;
|
|
||||||
ordenador.p_translt2 = ordenador.translate2;
|
|
||||||
ordenador.contador_flash++;
|
|
||||||
if (ordenador.contador_flash == 16) {
|
|
||||||
ordenador.flash = 1 - ordenador.flash;
|
|
||||||
ordenador.contador_flash = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//End of interrupt
|
//End of interrupt
|
||||||
if (ordenador.cicles_counter == 32) ordenador.interr = 0;
|
if (ordenador.cicles_counter == 32) ordenador.interr = 0;
|
||||||
|
@ -316,5 +316,6 @@ void computer_set_palete();
|
|||||||
void set_palete_entry(unsigned char entry, byte Value);
|
void set_palete_entry(unsigned char entry, byte Value);
|
||||||
void restart_video();
|
void restart_video();
|
||||||
void update_npixels();
|
void update_npixels();
|
||||||
|
void end_of_frame();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1822,7 +1822,9 @@ int main(int argc,char *argv[])
|
|||||||
rzx_close();
|
rzx_close();
|
||||||
}
|
}
|
||||||
|
|
||||||
Z80free_INT(&procesador,255); //Bus always 255
|
Z80free_INT(&procesador,bus_empty());
|
||||||
|
if (!ordenador.precision) ordenador.currpix=64;
|
||||||
|
end_of_frame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user