bsnes-emu / bsnes

bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
Other
1.67k stars 154 forks source link

[Accurate and fast PPU issue] Full Throttle - All-American Racing (USA) [bsnes v110.2] #214

Closed Max833 closed 3 years ago

Max833 commented 3 years ago

https://archive.is/LxuUv

df

Near:

This one needs a new hardware test. The game is writing to $420c (HDMA enable) at V=142, H=~1108-1110. This is the starting point where HDMA starts running when enabled. So it ends up being a race condition. When H<=1108, it causes HDMA to run on that scanline, which throws off the HDMA line table by one. That causes the screen to shake as it constantly hits and misses that point. We must make an SNES test ROM that identifies exactly at which point the values written to $420c are latched. It is definitely H=1106 or earlier, and not H=1108 as I do now.

141,1108 : true w420c = 00 @ 142,500 142,1108 : false w420c = 1f @ 143,1108 143,1108 : true 144,1104 : true 145,1108 : true 146,1110 : true 147,1106 : true 148,1104 : true 149,1108 : true 150,1110 : true 151,1106 : true 152,1104 : true 153,1104 : true 154,1108 : true 155,1106 : true 156,1104 : true 157,1106 : true 158,1108 : true 159,1106 : true 160,1104 : true 0111 0000 0000 0111 00f4 03a5 0074 0251 161,1106 : true 141,1106 : true w420c = 00 @ 142,508 142,1104 : false 143,1104 : false w420c = 1f @ 143,1110 144,1110 : true 145,1106 : true 146,1108 : true 147,1104 : true 148,1108 : true 149,1104 : true 150,1106 : true 151,1108 : true 152,1104 : true 153,1108 : true 154,1106 : true 155,1108 : true 156,1104 : true 157,1106 : true 158,1104 : true 159,1108 : true 160,1106 : true 0124 0000 0000 0124 00f4 03a5 0074 024f 161,1108 : true

test roms: https://github.com/undisbeliever/snes-test-roms

Fixed: https://github.com/byuu/bsnes/commit/07427e4697f947542e9e57c0af6bf8f91935d654