From 53af83f6d01571f48a813b78f2d5a82f142abeb3 Mon Sep 17 00:00:00 2001 From: n-a-c-h <> Date: Mon, 31 Jan 2005 04:08:22 +0000 Subject: [PATCH] Functionized offset altering, correct loading of old save states. --- zsnes/src/cpu/zstate.c | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/zsnes/src/cpu/zstate.c b/zsnes/src/cpu/zstate.c index f43a1928..7bbc1422 100755 --- a/zsnes/src/cpu/zstate.c +++ b/zsnes/src/cpu/zstate.c @@ -145,8 +145,6 @@ void copy_state_data(unsigned char *buffer, void (*copy_func)(unsigned char **, if (DSP1Type && !loading_old_state) { copy_func(&buffer, &DSP1COp, 70+128); - copy_func(&buffer, &C4WFXVal, 7*4+7*8+128); - copy_func(&buffer, &C41FXVal, 5*4+128); copy_func(&buffer, &Op00Multiplicand, 3*4+128); copy_func(&buffer, &Op10Coefficient, 4*4+128); copy_func(&buffer, &Op04Angle, 4*4+128); @@ -195,6 +193,11 @@ void copy_state_data(unsigned char *buffer, void (*copy_func)(unsigned char **, copy_func(&buffer, &tempebp, 4); } } + else + { + spcnumread = 0; + spchalted = 0xFFFFFFFF; + } } static void memcpyinc(unsigned char **dest, void *src, size_t len) @@ -542,10 +545,18 @@ static void write_save_state_data(unsigned char **dest, void *data, size_t len) static const char zst_header_old[] = "ZSNES Save State File V0.6\x1a\x3c"; static const char zst_header_cur[] = "ZSNES Save State File V143\x1a\x3c"; +void PrepareOffset() +{ + Curtableaddr -= (unsigned int)tableA; +} + +void ResetOffset() +{ + Curtableaddr += (unsigned int)tableA; +} + void statesaver() { - unsigned int offst; - //'Auto increment savestate slot' code if (AutoIncSaveSlot) { @@ -578,12 +589,10 @@ void statesaver() clim () if ((fhandle = fopen(fnamest+1,"wb"))) - { + { fwrite(zst_header_cur, 1, sizeof(zst_header_cur)-1, fhandle); //-1 for null - offst = (unsigned int)tableA; - Curtableaddr -= offst; - + PrepareOffset(); PrepareSaveState(); unpackfunct(); @@ -631,10 +640,8 @@ void statesaver() Msgptr = txtsavemsg; MessageOn = MsgCount; - - offst = (unsigned int)tableA; - Curtableaddr += offst; + ResetOffset(); ResetState(); } else @@ -769,7 +776,6 @@ static void read_save_state_data(unsigned char **dest, void *data, size_t len) void stateloader (unsigned char *statename, unsigned char keycheck, unsigned char xfercheck) { char zst_header_check[sizeof(zst_header_cur)-1]; - unsigned int offst; if (keycheck) { @@ -853,22 +859,13 @@ void stateloader (unsigned char *statename, unsigned char keycheck, unsigned cha memset(vidmemch8, 1, sizeof(vidmemch8)); MovieProcessing = 0; - prevoamptr = 0xFF; - ioportval = 0xFF; repackfunct(); - - spcnumread = 0; - spchalted = 0xFFFFFFFF; - nexthdma = 0; //headerhack(); //Was in the asm, but why is this needed? initpitch(); - - offst = (unsigned int)tableA; - Curtableaddr += offst; - + ResetOffset(); ResetState(); procexecloop();