Can now load movies via command line parameter.

This commit is contained in:
n-a-c-h
2005-04-04 01:05:26 +00:00
parent c7e796ef6c
commit 4b32275eb6
3 changed files with 47 additions and 15 deletions

View File

@@ -114,7 +114,7 @@ EXTSYM setaaccessbankr16,setaaccessbankw16,setaaccessbankr16a,setaaccessbankw16a
EXTSYM DSP2Read8b,DSP2Read16b,DSP2Write8b,DSP2Write16b,InitDSP2 EXTSYM DSP2Read8b,DSP2Read16b,DSP2Write8b,DSP2Write16b,InitDSP2
EXTSYM DSP4Read8b,DSP4Read16b,DSP4Write8b,DSP4Write16b,InitDSP4 EXTSYM DSP4Read8b,DSP4Read16b,DSP4Write8b,DSP4Write16b,InitDSP4
EXTSYM SetupROMc EXTSYM SetupROMc,CMovieExt,MoviePlay
%ifdef __LINUX__ %ifdef __LINUX__
EXTSYM LoadDir,popdir,pushdir EXTSYM LoadDir,popdir,pushdir
@@ -135,7 +135,8 @@ NEWSYM SfxAC, db 0
blah times 450 db 0 blah times 450 db 0
; FIX STATMAT ; FIX STATMAT
NEWSYM autoloadstate, db 0 ; auto load state slot number NEWSYM autoloadstate, db 0 ; auto load state slot number
; FIX STATMAT NEWSYM autoloadmovie, db 0
NEWSYM EndMessage NEWSYM EndMessage
db ' ',13,10,0 db ' ',13,10,0
@@ -287,7 +288,25 @@ NEWSYM init
%endif %endif
.noautoloadstate .noautoloadstate
; FIX STATMAT
cmp byte[autoloadmovie],1
jb .noautloadmovie
cmp byte[autoloadmovie],10
ja .noautloadmovie
mov al,byte[autoloadmovie]
add al,'0'-1
cmp al,'0'
jne .notzero1
mov al,'v'
.notzero1
mov byte[CMovieExt],al
pushad
call MoviePlay
popad
.noautloadmovie
xor eax,eax xor eax,eax
mov al,[cvidmode] mov al,[cvidmode]
cmp byte[GUI16VID+eax],1 cmp byte[GUI16VID+eax],1

View File

@@ -52,7 +52,7 @@ extern unsigned char Palette0, pl1contrl, pl2contrl, MMXSupport, Force8b, ForceP
antienab, cvidmode, debugdisble, debugger, enterpress, vsyncon, DisplayS, antienab, cvidmode, debugdisble, debugger, enterpress, vsyncon, DisplayS,
fname, SnowOn, Triplebufen, SPC700sh, OffBy1Line, DSPDisable, frameskip, fname, SnowOn, Triplebufen, SPC700sh, OffBy1Line, DSPDisable, frameskip,
gammalevel, guioff, romtype, per2exec, scanlines, soundon, spcon, gammalevel, guioff, romtype, per2exec, scanlines, soundon, spcon,
showallext, autoloadstate, smallscreenon; showallext, autoloadstate, smallscreenon, autoloadmovie;
void ConvertJoyMap1(), ConvertJoyMap2(), zstart(), makeextension(); void ConvertJoyMap1(), ConvertJoyMap2(), zstart(), makeextension();
@@ -163,6 +163,7 @@ static void display_help()
puts(" -w Enable vsync (disables triple buffering)"); puts(" -w Enable vsync (disables triple buffering)");
puts(" -y Enable Anti-Aliasing"); puts(" -y Enable Anti-Aliasing");
puts(" -z Disable Stereo Sound"); puts(" -z Disable Stereo Sound");
puts(" -zm # Auto load specified movie slot on startup ");
puts(" -zs # Auto load specified save state slot on startup "); puts(" -zs # Auto load specified save state slot on startup ");
puts(""); puts("");
puts(" File Formats Supported by GUI : SMC,SFC,SWC,FIG,MGD,UFO,BIN,"); puts(" File Formats Supported by GUI : SMC,SFC,SWC,FIG,MGD,UFO,BIN,");
@@ -512,6 +513,16 @@ static void handle_params(int argc, char *argv[])
} }
} }
else if (tolower(argv[i][1]) == 'z' && argv[i][2] == 'm') //Autoload save state
{
i++;
if ((autoloadmovie = zatoi(argv[i])+1) > 10)
{
puts("Movie load position must be a value of 0 to 9!");
exit(1);
}
}
else else
{ {
display_help(); display_help();

View File

@@ -1561,7 +1561,6 @@ enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY }
extern bool SRAMState, SloMo50; extern bool SRAMState, SloMo50;
bool PrevSRAMState; bool PrevSRAMState;
extern unsigned int statefileloc;
extern unsigned char ComboCounter, MovieRecordWinVal, RewindStates; extern unsigned char ComboCounter, MovieRecordWinVal, RewindStates;
char MovieFrameStr[10]; char MovieFrameStr[10];
void SRAMChdir(); void SRAMChdir();
@@ -1877,6 +1876,7 @@ void MoviePlay()
{ {
if (!MovieProcessing) if (!MovieProcessing)
{ {
size_t fname_len = strlen(fnamest+1);
unsigned char FileExt[4]; unsigned char FileExt[4];
FILE *fp; FILE *fp;
@@ -1884,9 +1884,9 @@ void MoviePlay()
SRAMState = true; SRAMState = true;
GUIQuit = 2; GUIQuit = 2;
memcpy(FileExt, &fnamest[statefileloc-3], 4); memcpy(FileExt, &fnamest[fname_len-3], 4);
memcpy(&fnamest[statefileloc-3], ".zmv", 4); memcpy(&fnamest[fname_len-3], ".zmv", 4);
fnamest[statefileloc] = CMovieExt; fnamest[fname_len] = CMovieExt;
SRAMChdir(); SRAMChdir();
@@ -1903,8 +1903,8 @@ void MoviePlay()
{ {
zmv_alloc_rewind_buffer(RewindStates); zmv_alloc_rewind_buffer(RewindStates);
SetMovieMode(MOVIE_PLAYBACK); SetMovieMode(MOVIE_PLAYBACK);
memcpy(&fnamest[statefileloc-3], ".sub", 4); memcpy(&fnamest[fname_len-3], ".sub", 4);
if (isdigit(CMovieExt)) { fnamest[statefileloc] = CMovieExt; } if (isdigit(CMovieExt)) { fnamest[fname_len] = CMovieExt; }
MovieSub_Open(fnamest+1); MovieSub_Open(fnamest+1);
MessageOn = MsgCount; MessageOn = MsgCount;
} }
@@ -1921,11 +1921,12 @@ void MoviePlay()
} }
else else
{ {
printf(fnamest+1);
Msgptr = "MOVIE COULD NOT BE OPENED."; Msgptr = "MOVIE COULD NOT BE OPENED.";
MessageOn = MsgCount; MessageOn = MsgCount;
} }
memcpy(&fnamest[statefileloc-3], FileExt, 4); memcpy(&fnamest[fname_len-3], FileExt, 4);
asm_call(ChangetoLOADdir); asm_call(ChangetoLOADdir);
} }
} }
@@ -1940,12 +1941,13 @@ void MovieRecord()
if (!MovieProcessing) if (!MovieProcessing)
{ {
size_t fname_len = strlen(fnamest+1);
unsigned char FileExt[4]; unsigned char FileExt[4];
FILE *tempfhandle; FILE *tempfhandle;
memcpy(FileExt, &fnamest[statefileloc-3], 4); memcpy(FileExt, &fnamest[fname_len-3], 4);
memcpy(&fnamest[statefileloc-3], ".zmv", 4); memcpy(&fnamest[fname_len-3], ".zmv", 4);
fnamest[statefileloc] = CMovieExt; fnamest[fname_len] = CMovieExt;
SRAMChdir(); SRAMChdir();
@@ -1974,7 +1976,7 @@ void MovieRecord()
asm_call(ChangetoLOADdir); asm_call(ChangetoLOADdir);
memcpy (&fnamest[statefileloc-3], FileExt, 4); memcpy (&fnamest[fname_len-3], FileExt, 4);
} }
} }