Brought back the undesyncability of ZSNES 0.9xx movies! Reset during movies now work.
This commit is contained in:
@@ -108,8 +108,8 @@ EXTSYM SfxSFR,nosprincr
|
|||||||
EXTSYM cpucycle,debstop,switchtovirqdeb,debstop3,switchtonmideb
|
EXTSYM cpucycle,debstop,switchtovirqdeb,debstop3,switchtonmideb
|
||||||
EXTSYM NetPlayNoMore,MovieSeekBehind
|
EXTSYM NetPlayNoMore,MovieSeekBehind
|
||||||
EXTSYM statefileloc,CHIPBATT,SaveSramData,BackupCVFrame,RestoreCVFrame,loadstate
|
EXTSYM statefileloc,CHIPBATT,SaveSramData,BackupCVFrame,RestoreCVFrame,loadstate
|
||||||
EXTSYM KeyInsrtChap,KeyNextChap,KeyPrevChap,MovieInsertChapter,MovieSeekAhead,ResetDuringMovie,MovieExitLoop
|
EXTSYM KeyInsrtChap,KeyNextChap,KeyPrevChap,MovieInsertChapter,MovieSeekAhead,ResetDuringMovie
|
||||||
EXTSYM EMUPauseKey,INCRFrameKey
|
EXTSYM EMUPauseKey,INCRFrameKey,MovieWaiting
|
||||||
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
EXTSYM dssel
|
EXTSYM dssel
|
||||||
@@ -894,16 +894,6 @@ reexecuteb2:
|
|||||||
call DeInitPostGame
|
call DeInitPostGame
|
||||||
.skippostgame
|
.skippostgame
|
||||||
|
|
||||||
cmp byte[MovieExitLoop],1
|
|
||||||
jne .notmoviereset
|
|
||||||
mov byte[MovieExitLoop],0
|
|
||||||
;mov byte[MovieProcessing],0
|
|
||||||
call GUIDoReset
|
|
||||||
mov byte[MovieProcessing],1
|
|
||||||
mov byte[ReturnFromSPCStall],0
|
|
||||||
jmp continueprog
|
|
||||||
.notmoviereset
|
|
||||||
|
|
||||||
; clear all keys
|
; clear all keys
|
||||||
call Check_Key
|
call Check_Key
|
||||||
cmp al,0
|
cmp al,0
|
||||||
@@ -2003,6 +1993,25 @@ NEWSYM cpuover
|
|||||||
cmp byte[EMUPause],1
|
cmp byte[EMUPause],1
|
||||||
je .nonewgfx
|
je .nonewgfx
|
||||||
.noemupause
|
.noemupause
|
||||||
|
|
||||||
|
cmp byte[MovieProcessing],0
|
||||||
|
je .noprocmovie
|
||||||
|
pushad
|
||||||
|
call ProcessMovies
|
||||||
|
popad
|
||||||
|
cmp byte[GUIReset],1
|
||||||
|
jne .notreset
|
||||||
|
mov byte[MovieWaiting],1
|
||||||
|
mov eax,[KeyQuickRst]
|
||||||
|
mov byte[pressed+eax],01h
|
||||||
|
jnz near exitloop
|
||||||
|
.notreset
|
||||||
|
cmp byte[MovieProcessing],0
|
||||||
|
jne .noprocmovie
|
||||||
|
cmp byte[ZMVZClose],1
|
||||||
|
jne .noprocmovie
|
||||||
|
jmp OSExit
|
||||||
|
.noprocmovie
|
||||||
|
|
||||||
call UpdateRewind
|
call UpdateRewind
|
||||||
|
|
||||||
@@ -2763,23 +2772,6 @@ NEWSYM cpuover
|
|||||||
jmp exitloop
|
jmp exitloop
|
||||||
.noquitb
|
.noquitb
|
||||||
|
|
||||||
cmp byte[MovieProcessing],0
|
|
||||||
je .noprocmovie
|
|
||||||
pushad
|
|
||||||
call ProcessMovies
|
|
||||||
popad
|
|
||||||
cmp byte[MovieProcessing],0
|
|
||||||
jne .notmoviedone
|
|
||||||
cmp byte[ZMVZClose],1
|
|
||||||
jne .notmoviedone
|
|
||||||
jmp OSExit
|
|
||||||
.notmoviedone
|
|
||||||
cmp byte[MovieExitLoop],1
|
|
||||||
jne .noprocmovie
|
|
||||||
mov byte[MovieProcessing],0
|
|
||||||
jmp reexecuteb
|
|
||||||
.noprocmovie
|
|
||||||
|
|
||||||
test byte[INTEnab],1
|
test byte[INTEnab],1
|
||||||
jz .noresetjoy
|
jz .noresetjoy
|
||||||
mov eax,[JoyAOrig]
|
mov eax,[JoyAOrig]
|
||||||
|
|||||||
@@ -882,14 +882,12 @@ static bool zmv_open(char *filename)
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//If this returns true, the caller should not proccess another input
|
|
||||||
static bool zmv_replay_command(enum zmv_commands command)
|
static bool zmv_replay_command(enum zmv_commands command)
|
||||||
{
|
{
|
||||||
switch (command)
|
switch (command)
|
||||||
{
|
{
|
||||||
case zmv_command_reset:
|
|
||||||
GUIReset = 1;
|
default:
|
||||||
return(true);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return(false);
|
return(false);
|
||||||
@@ -942,11 +940,18 @@ static bool zmv_replay()
|
|||||||
|
|
||||||
if (flag & BIT(0)) //Command
|
if (flag & BIT(0)) //Command
|
||||||
{
|
{
|
||||||
if (zmv_replay_command(flag >> 1));
|
unsigned char command = flag >> 1;
|
||||||
|
if (command == zmv_command_reset)
|
||||||
{
|
{
|
||||||
|
GUIReset = 1;
|
||||||
|
ReturnFromSPCStall = 0;
|
||||||
return(true);
|
return(true);
|
||||||
|
}
|
||||||
|
if (zmv_replay_command(command));
|
||||||
|
{
|
||||||
|
return(zmv_replay());
|
||||||
}
|
}
|
||||||
return(zmv_replay());
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag & BIT(1)) //RLE
|
if (flag & BIT(1)) //RLE
|
||||||
@@ -1556,6 +1561,7 @@ static size_t MovieSub_GetDuration()
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool MovieWaiting = false;
|
||||||
enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY };
|
enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY };
|
||||||
#define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode)
|
#define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode)
|
||||||
|
|
||||||
@@ -1805,17 +1811,12 @@ void Replay()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MovieExitLoop = false;
|
|
||||||
void ProcessMovies()
|
void ProcessMovies()
|
||||||
{
|
{
|
||||||
switch (MovieProcessing)
|
switch (MovieProcessing)
|
||||||
{
|
{
|
||||||
case MOVIE_PLAYBACK:
|
case MOVIE_PLAYBACK:
|
||||||
Replay();
|
Replay();
|
||||||
if (GUIReset == 1)
|
|
||||||
{
|
|
||||||
MovieExitLoop = true;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case MOVIE_RECORD:
|
case MOVIE_RECORD:
|
||||||
zmv_record(SloMo50 ? true : false, ComboCounter);
|
zmv_record(SloMo50 ? true : false, ComboCounter);
|
||||||
@@ -1841,7 +1842,7 @@ void SkipMovie()
|
|||||||
|
|
||||||
void MovieStop()
|
void MovieStop()
|
||||||
{
|
{
|
||||||
if (MovieProcessing)
|
if (MovieProcessing && !MovieWaiting)
|
||||||
{
|
{
|
||||||
switch (MovieProcessing)
|
switch (MovieProcessing)
|
||||||
{
|
{
|
||||||
@@ -1870,6 +1871,7 @@ void MovieStop()
|
|||||||
SetMovieMode(MOVIE_OFF);
|
SetMovieMode(MOVIE_OFF);
|
||||||
SRAMState = PrevSRAMState;
|
SRAMState = PrevSRAMState;
|
||||||
}
|
}
|
||||||
|
MovieWaiting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoviePlay()
|
void MoviePlay()
|
||||||
|
|||||||
Reference in New Issue
Block a user