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 and sms savestates. Core-independent z80 state. SS bugfixing/refactoring.
[picodrive.git]
/
pico
/
sms.c
diff --git
a/pico/sms.c
b/pico/sms.c
index
e94e731
..
cc75bff
100644
(file)
--- a/
pico/sms.c
+++ b/
pico/sms.c
@@
-103,7
+103,7
@@
static unsigned char z80_sms_in(unsigned short a)
break;
case 0xc1: /* I/O port B and miscellaneous */
break;
case 0xc1: /* I/O port B and miscellaneous */
- d = (Pico.
sms_io_ctl & 0x80) | ((Pico.sms_
io_ctl << 1) & 0x40) | 0x30;
+ d = (Pico.
ms.io_ctl & 0x80) | ((Pico.ms.
io_ctl << 1) & 0x40) | 0x30;
d |= ~(PicoPad[1] >> 2) & 0x0f;
break;
}
d |= ~(PicoPad[1] >> 2) & 0x0f;
break;
}
@@
-119,7
+119,7
@@
static void z80_sms_out(unsigned short a, unsigned char d)
switch (a)
{
case 0x01:
switch (a)
{
case 0x01:
- Pico.
sms_
io_ctl = d;
+ Pico.
ms.
io_ctl = d;
break;
case 0x40:
break;
case 0x40:
@@
-167,6
+167,7
@@
static void write_bank(unsigned short a, unsigned char d)
#endif
break;
}
#endif
break;
}
+ Pico.ms.carthw[a & 0x0f] = d;
}
static void xwrite(unsigned int a, unsigned char d)
}
static void xwrite(unsigned int a, unsigned char d)
@@
-174,7
+175,7
@@
static void xwrite(unsigned int a, unsigned char d)
elprintf(EL_IO, "z80 write [%04x] %02x", a, d);
if (a >= 0xc000)
Pico.zram[a & 0x1fff] = d;
elprintf(EL_IO, "z80 write [%04x] %02x", a, d);
if (a >= 0xc000)
Pico.zram[a & 0x1fff] = d;
- if (a >= 0xfff
0
)
+ if (a >= 0xfff
8
)
write_bank(a, d);
}
write_bank(a, d);
}
@@
-203,6
+204,9
@@
void PicoPowerMS(void)
tmp = 1 << s;
bank_mask = (tmp - 1) >> 14;
tmp = 1 << s;
bank_mask = (tmp - 1) >> 14;
+ Pico.ms.carthw[0x0e] = 1;
+ Pico.ms.carthw[0x0f] = 2;
+
PicoReset();
}
PicoReset();
}
@@
-229,6
+233,12
@@
void PicoMemSetupMS(void)
#endif
}
#endif
}
+void PicoStateLoadedMS(void)
+{
+ write_bank(0xfffe, Pico.ms.carthw[0x0e]);
+ write_bank(0xffff, Pico.ms.carthw[0x0f]);
+}
+
void PicoFrameMS(void)
{
struct PicoVideo *pv = &Pico.video;
void PicoFrameMS(void)
{
struct PicoVideo *pv = &Pico.video;