LakeSnes: snes_loadState keeps the old memory access time table (FastROM) #64
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
snes_loadStaterestoresfastMem(MEMSEL) but not the access time table built bybuild_accesstime, so a machine loaded from a state runs FastROM code (banks $80+/$C0+) at the speed of its previous history: a fresh core (or the shadow clone, which never ran) runs FF6 at slow-ROM speed after a load.Found by #37: the clone of a waiting port fell 19 lines behind the original inside BattleNMI and diverged (every btlgfx/WaitVblank call mismatched).
Workaround in
core/hw(no LakeSnes patch, no revision bump):hw_sync_memory_speedwrites MEMSEL twice after everysnes_loadState(hw_state_load, shadow clone) and restores the open bus. Power-on movies are unaffected; timing after a state load is now the original's. An upstream fix would rebuild the table insnes_handleState.