diff options
author | Michael Pavone <pavone@retrodev.com> | 2020-04-03 23:47:17 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2020-04-03 23:47:17 -0700 |
commit | 74746f4da558abed6b5f6a000d4e915a0a57d21e (patch) | |
tree | 24f15b39242a9ce1c5dc1076f3d7b13d53cb2330 | |
parent | 80602a8245784185c509b3bd7a170211fb0e2415 (diff) |
Top bits of address register should be cleared on partial command word write. Fixes Mona in 344 bytes demo
-rw-r--r-- | vdp.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -3732,7 +3732,9 @@ int vdp_control_port_write(vdp_context * context, uint16_t value) } } else { uint8_t mode_5 = context->regs[REG_MODE_2] & BIT_MODE_5; - context->address = (context->address &0xC000) | (value & 0x3FFF); + //contrary to what's in Charles MacDonald's doc, it seems top 2 address bits are cleared + //needed for the Mona in 344 Bytes demo + context->address = value & 0x3FFF; context->cd = (context->cd & 0x3C) | (value >> 14); if ((value & 0xC000) == 0x8000) { //Register write |