mrehkopf / sd2snes

SD card based multi-purpose cartridge for the SNES
http://sd2snes.de
GNU General Public License v2.0
579 stars 114 forks source link

Fixed CTX DMA write snoops in CT by blocking concurrent PARD assertion. #219

Closed redacted173 closed 1 year ago

redacted173 commented 1 year ago

Chrono Trigger uses the PPU $2134 register as a source to zero out WRAM using a DMA. The CTX state machine captures the WRAM write then immediately overwrites the shadow address with the PPU register. This means we lose the zeroing of WRAM in the save state. These locations for WRAM are used for indirect HDMA source data to PPU registers which causes graphics to mess up when the save state is loaded. I'm sure this isn't the only game which does this kind of DMA so hopefully others are working now, too. The fix blocks the PARD snoop when there is a write.

mrehkopf commented 1 year ago

Ah nice, thanks! This will likely also fix save state issues with Super Mario All-Stars.