Movies can now record reset. Todo: Make reset during movie replay not crash, anyone want to help with this?
This commit is contained in:
@@ -108,7 +108,7 @@ 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
|
EXTSYM KeyInsrtChap,KeyNextChap,KeyPrevChap,MovieInsertChapter,MovieSeekAhead,ResetDuringMovie,MovieExitLoop
|
||||||
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
EXTSYM dssel
|
EXTSYM dssel
|
||||||
@@ -977,7 +977,13 @@ reexecuteb2:
|
|||||||
.activatereset
|
.activatereset
|
||||||
pushad
|
pushad
|
||||||
mov byte[GUIReset],1
|
mov byte[GUIReset],1
|
||||||
|
cmp byte[MovieProcessing],2 ;Recording
|
||||||
|
jne .nomovierecording
|
||||||
|
call ResetDuringMovie
|
||||||
|
jmp .movieendif
|
||||||
|
.nomovierecording
|
||||||
call GUIDoReset
|
call GUIDoReset
|
||||||
|
.movieendif
|
||||||
popad
|
popad
|
||||||
mov byte[ReturnFromSPCStall],0
|
mov byte[ReturnFromSPCStall],0
|
||||||
jmp continueprog
|
jmp continueprog
|
||||||
@@ -2724,6 +2730,8 @@ NEWSYM cpuover
|
|||||||
pushad
|
pushad
|
||||||
call ProcessMovies
|
call ProcessMovies
|
||||||
popad
|
popad
|
||||||
|
cmp byte[MovieExitLoop],1
|
||||||
|
je execloop.startagain ;Where do we jump to?
|
||||||
.noprocmovie
|
.noprocmovie
|
||||||
|
|
||||||
test byte[INTEnab],1
|
test byte[INTEnab],1
|
||||||
|
|||||||
@@ -841,17 +841,17 @@ static bool zmv_open(char *filename)
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void zmv_replay_command(enum zmv_commands command)
|
//If this returns true, the caller should not proccess another input
|
||||||
|
static bool zmv_replay_command(enum zmv_commands command)
|
||||||
{
|
{
|
||||||
switch (command)
|
switch (command)
|
||||||
{
|
{
|
||||||
case zmv_command_reset:
|
case zmv_command_reset:
|
||||||
GUIReset = 1;
|
GUIReset = 1;
|
||||||
asm_call(GUIDoReset);
|
return(true);
|
||||||
ReturnFromSPCStall = 0;
|
|
||||||
zst_sram_load(zmv_vars.fp);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RESTORE_PAD(cur, prev) cur = (((unsigned int)prev) << 20) | 0x8000
|
#define RESTORE_PAD(cur, prev) cur = (((unsigned int)prev) << 20) | 0x8000
|
||||||
@@ -901,7 +901,10 @@ static bool zmv_replay()
|
|||||||
|
|
||||||
if (flag & BIT(0)) //Command
|
if (flag & BIT(0)) //Command
|
||||||
{
|
{
|
||||||
zmv_replay_command(flag >> 1);
|
if (zmv_replay_command(flag >> 1));
|
||||||
|
{
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
return(zmv_replay());
|
return(zmv_replay());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1762,12 +1765,22 @@ void Replay()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MovieExitLoop = false;
|
||||||
void ProcessMovies()
|
void ProcessMovies()
|
||||||
{
|
{
|
||||||
|
MovieExitLoop = false;
|
||||||
switch (MovieProcessing)
|
switch (MovieProcessing)
|
||||||
{
|
{
|
||||||
case MOVIE_PLAYBACK:
|
case MOVIE_PLAYBACK:
|
||||||
Replay();
|
Replay();
|
||||||
|
if (GUIReset == 1)
|
||||||
|
{
|
||||||
|
SetMovieMode(MOVIE_OFF);
|
||||||
|
asm_call(GUIDoReset);
|
||||||
|
SetMovieMode(MOVIE_PLAYBACK);
|
||||||
|
ReturnFromSPCStall = 0;
|
||||||
|
MovieExitLoop = true;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case MOVIE_RECORD:
|
case MOVIE_RECORD:
|
||||||
zmv_record(SloMo50 ? true : false, ComboCounter);
|
zmv_record(SloMo50 ? true : false, ComboCounter);
|
||||||
@@ -1781,6 +1794,9 @@ void ProcessMovies()
|
|||||||
void ResetDuringMovie()
|
void ResetDuringMovie()
|
||||||
{
|
{
|
||||||
zmv_record_command(zmv_command_reset);
|
zmv_record_command(zmv_command_reset);
|
||||||
|
SetMovieMode(MOVIE_OFF);
|
||||||
|
asm_call(GUIDoReset);
|
||||||
|
SetMovieMode(MOVIE_RECORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkipMovie()
|
void SkipMovie()
|
||||||
|
|||||||
Reference in New Issue
Block a user