$NetBSD: patch-aq,v 1.1 2004/08/15 12:13:53 dillo Exp $ --- src/gens/sdllayer/g_sdldraw.c.orig 2004-08-15 11:46:04.000000000 +0200 +++ src/gens/sdllayer/g_sdldraw.c @@ -462,7 +462,11 @@ Update_Emulation (void) Write_Sound_Buffer (NULL); } - Update_Controllers (); + if (MoviePlaying) + MoviePlayingStuff(); + else + Update_Controllers(); + FrameCount++; if (Frame_Number++ < Frame_Skip) { @@ -487,7 +491,12 @@ Update_Emulation (void) //{ Write_Sound_Buffer (NULL); //WP = (WP + 1) & (Sound_Segs - 1); - Update_Controllers (); + if (MoviePlaying) + MoviePlayingStuff(); + else + Update_Controllers(); + FrameCount++; + //if (WP != RP) //{ @@ -518,13 +527,21 @@ Update_Emulation (void) for (; Frame_Number > 1; Frame_Number--) { - Update_Controllers (); + if (MoviePlaying) + MoviePlayingStuff(); + else + Update_Controllers(); + FrameCount++; Update_Frame_Fast (); } if (Frame_Number) { - Update_Controllers (); + if (MoviePlaying) + MoviePlayingStuff(); + else + Update_Controllers(); + FrameCount++; Update_Frame (); Flip (); } @@ -540,7 +557,12 @@ Update_Emulation (void) int Update_Emulation_One (void) { - Update_Controllers (); + if (MoviePlaying) + MoviePlayingStuff(); + else + Update_Controllers(); + FrameCount++; + Update_Frame (); Flip (); @@ -686,3 +708,42 @@ Take_Shot () surface->h, surface->w * 2); return 0; } + +void +MoviePlayingStuff() +{ + char PadData[3]; //Modif + + if(FrameCount >= MovieLastFrame) + { + MoviePlaying=0; + sprintf(Str_Tmp, "Movie finished", Current_State); + Put_Info(Str_Tmp, 2000); + return; + } + ReadInMovie(FrameCount,&PadData[0],&PadData[1],&PadData[2]); + Controller_1_Up=(PadData[0]&1); + Controller_1_Down=(PadData[0]&2)>>1; + Controller_1_Left=(PadData[0]&4)>>2; + Controller_1_Right=(PadData[0]&8)>>3; + Controller_1_A=(PadData[0]&16)>>4; + Controller_1_B=(PadData[0]&32)>>5; + Controller_1_C=(PadData[0]&64)>>6; + Controller_1_Start=(PadData[0]&128)>>7; + Controller_2_Up=(PadData[1]&1); + Controller_2_Down=(PadData[1]&2)>>1; + Controller_2_Left=(PadData[1]&4)>>2; + Controller_2_Right=(PadData[1]&8)>>3; + Controller_2_A=(PadData[1]&16)>>4; + Controller_2_B=(PadData[1]&32)>>5; + Controller_2_C=(PadData[1]&64)>>6; + Controller_2_Start=(PadData[1]&128)>>7; + Controller_1_X=(PadData[2]&1); + Controller_1_Y=(PadData[2]&2)>>1; + Controller_1_Z=(PadData[2]&4)>>2; + Controller_1_Mode=(PadData[2]&8)>>3; + Controller_2_X=(PadData[2]&16)>>4; + Controller_2_Y=(PadData[2]&32)>>5; + Controller_2_Z=(PadData[2]&64)>>6; + Controller_2_Mode=(PadData[2]&128)>>7; +}