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: simplify logging a bit
[picodrive.git]
/
pico
/
sms.c
diff --git
a/pico/sms.c
b/pico/sms.c
index
e94e731
..
58905bd
100644
(file)
--- a/
pico/sms.c
+++ b/
pico/sms.c
@@
-1,3
+1,10
@@
+/*
+ * SMS emulation
+ * (C) notaz, 2009-2010
+ *
+ * This work is licensed under the terms of MAME license.
+ * See COPYING file in the top-level directory.
+ */
/*
* TODO:
* - start in a state as if BIOS ran
/*
* TODO:
* - start in a state as if BIOS ran
@@
-103,7
+110,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
+126,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
+174,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
+182,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
+211,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
+240,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;
@@
-247,6
+264,8
@@
void PicoFrameMS(void)
for (y = 0; y < lines; y++)
{
pv->v_counter = Pico.m.scanline = y;
for (y = 0; y < lines; y++)
{
pv->v_counter = Pico.m.scanline = y;
+ if (y > 218)
+ pv->v_counter = y - 6;
if (y < lines_vis && !skip)
PicoLineMode4(y);
if (y < lines_vis && !skip)
PicoLineMode4(y);