summaryrefslogtreecommitdiff
path: root/vdp.c
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2020-04-03 23:47:17 -0700
committerMichael Pavone <pavone@retrodev.com>2020-04-03 23:47:17 -0700
commit74746f4da558abed6b5f6a000d4e915a0a57d21e (patch)
tree24f15b39242a9ce1c5dc1076f3d7b13d53cb2330 /vdp.c
parent80602a8245784185c509b3bd7a170211fb0e2415 (diff)
Top bits of address register should be cleared on partial command word write. Fixes Mona in 344 bytes demo
Diffstat (limited to 'vdp.c')
-rw-r--r--vdp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/vdp.c b/vdp.c
index 93ad895..37ad611 100644
--- a/vdp.c
+++ b/vdp.c
@@ -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