ref: 9f65bbdf7cf9b2bb05d4cfd3f33efd388dc84bc7
parent: 3d449b0dc3467901f6715d8f432056f97e9ccdb0
author: aiju <devnull@localhost>
date: Fri Mar 21 10:25:08 EDT 2014
games/snes: minor oam bugs
--- a/sys/src/games/snes/mem.c
+++ b/sys/src/games/snes/mem.c
@@ -231,7 +231,7 @@
oamaddr = (reg[0x2103] & 1) << 9 | v << 1;
break;
case 0x2103:
- oamaddr = (v & 1) << 9 | reg[0x2102];
+ oamaddr = (v & 1) << 9 | reg[0x2102] << 1;
break;
case 0x2104:
if((oamaddr & 1) == 0)
--- a/sys/src/games/snes/ppu.c
+++ b/sys/src/games/snes/ppu.c
@@ -877,7 +877,8 @@
reg[RDNMI] |= VBLANK;
if((reg[NMITIMEN] & VBLANK) != 0)
nmi = 2;
- oamaddr = reg[0x2102] << 1 | (reg[0x2103] & 1) << 9;
+ if((reg[INIDISP] & 0x80) == 0)
+ oamaddr = reg[0x2102] << 1 | (reg[0x2103] & 1) << 9;
if((reg[NMITIMEN] & AUTOJOY) != 0){memwrite(0x4016, 1);
memwrite(0x4016, 0);
--
⑨