notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
32x: fix savestates
[picodrive.git]
/
pico
/
state.c
diff --git
a/pico/state.c
b/pico/state.c
index
761b64c
..
11eee6f
100644
(file)
--- a/
pico/state.c
+++ b/
pico/state.c
@@
-175,6
+175,8
@@
typedef enum {
CHUNK_DRAM,
\r
CHUNK_32XPAL,
\r
CHUNK_32X_EVT,
\r
CHUNK_DRAM,
\r
CHUNK_32XPAL,
\r
CHUNK_32X_EVT,
\r
+ CHUNK_32X_FIRST = CHUNK_MSH2,
\r
+ CHUNK_32X_LAST = CHUNK_32X_EVT,
\r
//
\r
CHUNK_DEFAULT_COUNT,
\r
CHUNK_CARTHW_ = CHUNK_CARTHW, // defined in PicoInt
\r
//
\r
CHUNK_DEFAULT_COUNT,
\r
CHUNK_CARTHW_ = CHUNK_CARTHW, // defined in PicoInt
\r
@@
-411,8
+413,8
@@
static int state_load(void *file)
if (len < 0 || len > 1024*512) R_ERROR_RETURN("bad length");
\r
if (CHUNK_S68K <= chunk && chunk <= CHUNK_MISC_CD && !(PicoAHW & PAHW_MCD))
\r
R_ERROR_RETURN("cd chunk in non CD state?");
\r
if (len < 0 || len > 1024*512) R_ERROR_RETURN("bad length");
\r
if (CHUNK_S68K <= chunk && chunk <= CHUNK_MISC_CD && !(PicoAHW & PAHW_MCD))
\r
R_ERROR_RETURN("cd chunk in non CD state?");
\r
- if (CHUNK_
MSH2 <= chunk && chunk <= CHUNK_32XPAL
&& !(PicoAHW & PAHW_32X))
\r
-
R_ERROR_RETURN("32x chunk in non 32x state?"
);
\r
+ if (CHUNK_
32X_FIRST <= chunk && chunk <= CHUNK_32X_LAST
&& !(PicoAHW & PAHW_32X))
\r
+
Pico32xStartup(
);
\r
\r
switch (chunk)
\r
{
\r
\r
switch (chunk)
\r
{
\r
@@
-517,18
+519,22
@@
readend:
\r
if (!(Pico_mcd->s68k_regs[0x36] & 1) && (Pico_mcd->scd.Status_CDC & 1))
\r
cdda_start_play();
\r
\r
if (!(Pico_mcd->s68k_regs[0x36] & 1) && (Pico_mcd->scd.Status_CDC & 1))
\r
cdda_start_play();
\r
-
\r
- SekUnpackCpu(buff_s68k, 1);
\r
}
\r
\r
}
\r
\r
+ if (PicoAHW & PAHW_32X)
\r
+ Pico32xStateLoaded(1);
\r
+
\r
// must unpack 68k and z80 after banks are set up
\r
if (!(PicoAHW & PAHW_SMS))
\r
SekUnpackCpu(buff_m68k, 0);
\r
// must unpack 68k and z80 after banks are set up
\r
if (!(PicoAHW & PAHW_SMS))
\r
SekUnpackCpu(buff_m68k, 0);
\r
+ if (PicoAHW & PAHW_MCD)
\r
+ SekUnpackCpu(buff_s68k, 1);
\r
\r
z80_unpack(buff_z80);
\r
\r
\r
z80_unpack(buff_z80);
\r
\r
+ // due to dep from 68k cycles..
\r
if (PicoAHW & PAHW_32X)
\r
if (PicoAHW & PAHW_32X)
\r
- Pico32xStateLoaded();
\r
+ Pico32xStateLoaded(
0
);
\r
\r
return 0;
\r
}
\r
\r
return 0;
\r
}
\r