diff --git a/zsnes/src/initc.c b/zsnes/src/initc.c index 5ea017be..ff3f7411 100755 --- a/zsnes/src/initc.c +++ b/zsnes/src/initc.c @@ -1958,7 +1958,7 @@ void initpitch() extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR; extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists; extern unsigned char *setaramdata, *wramdata, *SA1RAMArea, cbitmode, curromsize; -extern unsigned char ForcePal, ForceROMTiming, romispal; +extern unsigned char ForcePal, ForceROMTiming, romispal, MovieWaiting; extern unsigned short totlines; void SetAddressingModes(), GenerateBank0Table(); void SetAddressingModesSA1(), GenerateBank0TableSA1(); @@ -1967,11 +1967,11 @@ void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw(); void SPC7110Load(), DOSClearScreen(), dosmakepal(); void CheckROMType() -{ +{ // used by both movie and normal powercycles unsigned char *ROM = (unsigned char *)romdata; BankCheck(); - MirrorROM(); + if (!MovieWaiting) { MirrorROM(); } lorommapmode2 = 0; if (!strncmp((char *)ROM+0x207FC0, "DERBY STALLION 96", 17) || !strncmp((char *)ROM+Lo, "SOUND NOVEL-TCOOL", 17)) @@ -2198,7 +2198,7 @@ void SetupROM() } void powercycle(bool sramload) -{ +{ // currently only used by movies - rom already loaded, no need for init memset(sram, 0xFF, 32768); clearSPCRAM(); @@ -2214,7 +2214,7 @@ void powercycle(bool sramload) if (sramload) { loadSRAM((char *)fnames+1); } SetupROM(); - asm_call(initsnes); +// asm_call(initsnes); sramsavedis = 0; diff --git a/zsnes/src/zmovie.c b/zsnes/src/zmovie.c index 861a339a..c3cad687 100644 --- a/zsnes/src/zmovie.c +++ b/zsnes/src/zmovie.c @@ -54,6 +54,10 @@ extern unsigned char MovieStartMethod, GUIReset, ReturnFromSPCStall, GUIQuit; extern unsigned char MovieProcessing, CMovieExt, EmuSpeed; extern char *Msgptr, fnamest[512]; extern bool romispal; +bool MovieWaiting = false; + +enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY }; +#define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode) extern unsigned char snesmouse; extern unsigned short latchx, latchy; @@ -907,6 +911,7 @@ static void zmv_create(char *filename) case zmv_sm_zst: break; case zmv_sm_power: + MovieWaiting = true; powercycle(true); break; case zmv_sm_reset: @@ -915,6 +920,7 @@ static void zmv_create(char *filename) ReturnFromSPCStall = 0; break; case zmv_sm_clear_all: + MovieWaiting = true; powercycle(false); break; } @@ -1157,6 +1163,7 @@ static bool zmv_open(char *filename) zst_compressed_loader(zmv_vars.fp); break; case zmv_sm_power: + MovieWaiting = true; powercycle(false); zst_sram_load_compressed(zmv_vars.fp); break; @@ -1167,6 +1174,7 @@ static bool zmv_open(char *filename) zst_sram_load_compressed(zmv_vars.fp); break; case zmv_sm_clear_all: + MovieWaiting = true; powercycle(false); fseek(zmv_vars.fp, internal_chapter_length(ftell(zmv_vars.fp)), SEEK_CUR); break; @@ -2008,10 +2016,6 @@ static size_t MovieSub_GetDuration() ///////////////////////////////////////////////////////// -bool MovieWaiting = false; -enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY }; -#define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode) - bool RawDumpInProgress = false; bool PrevSRAMState; @@ -2159,11 +2163,6 @@ static void OldMoviePlay(FILE *fp) MessageOn = MsgCount; } - - - - - void MovieInsertChapter() { switch (MovieProcessing) @@ -2434,9 +2433,9 @@ void MovieRecord() PrevSRAMState = SRAMState; SRAMState = true; + SetMovieMode(MOVIE_RECORD); zmv_create(fnamest+1); zmv_alloc_rewind_buffer(AllocatedRewindStates); - SetMovieMode(MOVIE_RECORD); Msgptr = "MOVIE RECORDING."; MessageOn = MsgCount; } @@ -2481,5 +2480,3 @@ void MovieDumpRaw() break; } } - -