diff --git a/zsnes/src/init.asm b/zsnes/src/init.asm index b3f0f789..b1576780 100644 --- a/zsnes/src/init.asm +++ b/zsnes/src/init.asm @@ -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 diff --git a/zsnes/src/zloader.c b/zsnes/src/zloader.c index 62b5917c..17f2b349 100644 --- a/zsnes/src/zloader.c +++ b/zsnes/src/zloader.c @@ -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(); diff --git a/zsnes/src/zmovie.c b/zsnes/src/zmovie.c index 454f1895..3b1d0500 100644 --- a/zsnes/src/zmovie.c +++ b/zsnes/src/zmovie.c @@ -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); } }