Powercycling sequence corrected, should now work with everything - thanks to pagefault for pointing out the errors \!

This commit is contained in:
grinvader
2005-09-14 11:11:26 +00:00
parent a434c2b89a
commit 462f6af63a
2 changed files with 14 additions and 17 deletions

View File

@@ -1958,7 +1958,7 @@ void initpitch()
extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR; extern unsigned int SfxR1, SfxR2, SetaCmdEnable, SfxSFR, SfxSCMR;
extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists; extern unsigned char lorommapmode2, disablespcclr, *sfxramdata, SramExists;
extern unsigned char *setaramdata, *wramdata, *SA1RAMArea, cbitmode, curromsize; 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; extern unsigned short totlines;
void SetAddressingModes(), GenerateBank0Table(); void SetAddressingModes(), GenerateBank0Table();
void SetAddressingModesSA1(), GenerateBank0TableSA1(); void SetAddressingModesSA1(), GenerateBank0TableSA1();
@@ -1967,11 +1967,11 @@ void InitDSP(), InitDSP2(), InitDSP4(), InitFxTables(), initregr(), initregw();
void SPC7110Load(), DOSClearScreen(), dosmakepal(); void SPC7110Load(), DOSClearScreen(), dosmakepal();
void CheckROMType() void CheckROMType()
{ { // used by both movie and normal powercycles
unsigned char *ROM = (unsigned char *)romdata; unsigned char *ROM = (unsigned char *)romdata;
BankCheck(); BankCheck();
MirrorROM(); if (!MovieWaiting) { MirrorROM(); }
lorommapmode2 = 0; lorommapmode2 = 0;
if (!strncmp((char *)ROM+0x207FC0, "DERBY STALLION 96", 17) || !strncmp((char *)ROM+Lo, "SOUND NOVEL-TCOOL", 17)) 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) void powercycle(bool sramload)
{ { // currently only used by movies - rom already loaded, no need for init
memset(sram, 0xFF, 32768); memset(sram, 0xFF, 32768);
clearSPCRAM(); clearSPCRAM();
@@ -2214,7 +2214,7 @@ void powercycle(bool sramload)
if (sramload) { loadSRAM((char *)fnames+1); } if (sramload) { loadSRAM((char *)fnames+1); }
SetupROM(); SetupROM();
asm_call(initsnes); // asm_call(initsnes);
sramsavedis = 0; sramsavedis = 0;

View File

@@ -54,6 +54,10 @@ extern unsigned char MovieStartMethod, GUIReset, ReturnFromSPCStall, GUIQuit;
extern unsigned char MovieProcessing, CMovieExt, EmuSpeed; extern unsigned char MovieProcessing, CMovieExt, EmuSpeed;
extern char *Msgptr, fnamest[512]; extern char *Msgptr, fnamest[512];
extern bool romispal; 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 char snesmouse;
extern unsigned short latchx, latchy; extern unsigned short latchx, latchy;
@@ -907,6 +911,7 @@ static void zmv_create(char *filename)
case zmv_sm_zst: case zmv_sm_zst:
break; break;
case zmv_sm_power: case zmv_sm_power:
MovieWaiting = true;
powercycle(true); powercycle(true);
break; break;
case zmv_sm_reset: case zmv_sm_reset:
@@ -915,6 +920,7 @@ static void zmv_create(char *filename)
ReturnFromSPCStall = 0; ReturnFromSPCStall = 0;
break; break;
case zmv_sm_clear_all: case zmv_sm_clear_all:
MovieWaiting = true;
powercycle(false); powercycle(false);
break; break;
} }
@@ -1157,6 +1163,7 @@ static bool zmv_open(char *filename)
zst_compressed_loader(zmv_vars.fp); zst_compressed_loader(zmv_vars.fp);
break; break;
case zmv_sm_power: case zmv_sm_power:
MovieWaiting = true;
powercycle(false); powercycle(false);
zst_sram_load_compressed(zmv_vars.fp); zst_sram_load_compressed(zmv_vars.fp);
break; break;
@@ -1167,6 +1174,7 @@ static bool zmv_open(char *filename)
zst_sram_load_compressed(zmv_vars.fp); zst_sram_load_compressed(zmv_vars.fp);
break; break;
case zmv_sm_clear_all: case zmv_sm_clear_all:
MovieWaiting = true;
powercycle(false); powercycle(false);
fseek(zmv_vars.fp, internal_chapter_length(ftell(zmv_vars.fp)), SEEK_CUR); fseek(zmv_vars.fp, internal_chapter_length(ftell(zmv_vars.fp)), SEEK_CUR);
break; 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 RawDumpInProgress = false;
bool PrevSRAMState; bool PrevSRAMState;
@@ -2159,11 +2163,6 @@ static void OldMoviePlay(FILE *fp)
MessageOn = MsgCount; MessageOn = MsgCount;
} }
void MovieInsertChapter() void MovieInsertChapter()
{ {
switch (MovieProcessing) switch (MovieProcessing)
@@ -2434,9 +2433,9 @@ void MovieRecord()
PrevSRAMState = SRAMState; PrevSRAMState = SRAMState;
SRAMState = true; SRAMState = true;
SetMovieMode(MOVIE_RECORD);
zmv_create(fnamest+1); zmv_create(fnamest+1);
zmv_alloc_rewind_buffer(AllocatedRewindStates); zmv_alloc_rewind_buffer(AllocatedRewindStates);
SetMovieMode(MOVIE_RECORD);
Msgptr = "MOVIE RECORDING."; Msgptr = "MOVIE RECORDING.";
MessageOn = MsgCount; MessageOn = MsgCount;
} }
@@ -2481,5 +2480,3 @@ void MovieDumpRaw()
break; break;
} }
} }