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 DSP4Read8b,DSP4Read16b,DSP4Write8b,DSP4Write16b,InitDSP4
EXTSYM SetupROMc
EXTSYM SetupROMc,CMovieExt,MoviePlay
%ifdef __LINUX__
EXTSYM LoadDir,popdir,pushdir
@@ -135,7 +135,8 @@ NEWSYM SfxAC, db 0
blah times 450 db 0
; FIX STATMAT
NEWSYM autoloadstate, db 0 ; auto load state slot number
; FIX STATMAT
NEWSYM autoloadmovie, db 0
NEWSYM EndMessage
db ' ',13,10,0
@@ -287,7 +288,25 @@ NEWSYM init
%endif
.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
mov al,[cvidmode]
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,
fname, SnowOn, Triplebufen, SPC700sh, OffBy1Line, DSPDisable, frameskip,
gammalevel, guioff, romtype, per2exec, scanlines, soundon, spcon,
showallext, autoloadstate, smallscreenon;
showallext, autoloadstate, smallscreenon, autoloadmovie;
void ConvertJoyMap1(), ConvertJoyMap2(), zstart(), makeextension();
@@ -163,6 +163,7 @@ static void display_help()
puts(" -w Enable vsync (disables triple buffering)");
puts(" -y Enable Anti-Aliasing");
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("");
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
{
display_help();

View File

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