summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-06-16 13:25:45 -0700
committerMike Pavone <pavone@retrodev.com>2013-06-16 13:25:45 -0700
commitadcc84b8c3600bc6497c21ac10b1b8c85f264676 (patch)
tree7c6bfe67de04a7078778da609e013b90b870f61b
parent3ed865122438c1a45c54249b7296420f2607d77a (diff)
Implement writes from 68K to Z80 bank register and make reads from port c control register return 0 again
-rw-r--r--blastem.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/blastem.c b/blastem.c
index d01db08..531f72d 100644
--- a/blastem.c
+++ b/blastem.c
@@ -520,6 +520,13 @@ m68k_context * io_write(uint32_t location, m68k_context * context, uint8_t value
} else {
ym_address_write_part1(gen->ym, value);
}
+ } else if (location == 0x6000) {
+ gen->z80->bank_reg = (gen->z80->bank_reg >> 1 | value << 8) & 0x1FF;
+ if (gen->z80->bank_reg < 0x80) {
+ gen->z80->mem_pointers[1] = (gen->z80->bank_reg << 15) + ((char *)gen->z80->mem_pointers[2]);
+ } else {
+ gen->z80->mem_pointers[1] = NULL;
+ }
} else {
printf("68K write to unhandled Z80 address %X\n", location);
exit(1);
@@ -661,6 +668,9 @@ uint8_t io_read(uint32_t location, m68k_context * context)
case 0x5:
value = gamepad_2.control;
break;
+ case 0x6://PORT C control
+ value = 0;
+ break;
default:
value = 0xFF;
}