Now, if I look at the OAM table in WRAM, everything looks fine. Entry number 27 is A820 8B 2F and displays fune. Entry number 28 is B020 8C 2F and displays way off in nowhereland. So something's gotta be going on somewhere else, but damned if I know where. Any tips?

March 20, 2010, 10:43:06 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Got it fixed. For whoever's interested, it turns out there's another part of OAM after the main 512-byte table which contains two bits per tile telling whether they're on-screen or off. Or something. Either way it works :p