Postby Orion_ » Sun Nov 08, 2015 7:43 pm
ok I tried to watch the difference between STF and STe behavior on this demo using Steem debugger
Timer A routine @ $00A388 is started just at the white screen after the screaming sangoku picture.
The problem is, this routine writes to the A1 register which should contain the YM register address $FF8800.
But instead, during that white fading (2 frames), it contains the address $09FBCA, so, the Timer A routine writes junk in the memory.
and specifically at the $09FBCE address which is later used as an index to fetch an address in a table. (Code at $A0D0 / $A0F2)
on STF this index is 0, on STe it is $EC00, which give the wrong offset address, and when writing at this wrong address, it crashes (at $A11A)
I'm not sure why there is this difference on STF or STe about this, maybe a different Timer A behavior.