Tricky-to-emulate games: Difference between revisions
From SNESdev Wiki
Jump to navigationJump to search
Rainwarrior (talk | contribs) (starting an article about uncommon graphics modes) |
Wuerfel 21 (talk | contribs) (Add another one) |
||
(7 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
It is meant as a quick reference to help others find and debug issues with their own emulation core. | It is meant as a quick reference to help others find and debug issues with their own emulation core. | ||
It can also be used to find games that might be affected by a code change, for regression testing purposes. | It can also be used to find games that might be affected by a code change, for regression testing purposes. | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 26: | Line 24: | ||
* '''Kamaitachi no Yoru''': Doesn't boot | * '''Kamaitachi no Yoru''': Doesn't boot | ||
* '''Soul Blazer''': Doesn't boot | * '''Soul Blazer''': Doesn't boot | ||
|- | |||
| Incorrect ORA [d] implementation | |||
| | |||
* '''Super Mario World''': Corrupted overworld map (bad 3bpp decompression) | |||
|- | |- | ||
| VRAM writes are not ignored during rendering | | VRAM writes are not ignored during rendering | ||
Line 107: | Line 109: | ||
* '''Adventures of Kid Kleets, The''': Broken graphics at power on | * '''Adventures of Kid Kleets, The''': Broken graphics at power on | ||
* '''MechWarrior''': Broken mode 7 graphics during gameplay | * '''MechWarrior''': Broken mode 7 graphics during gameplay | ||
|- | |||
| HDMA ignores "direction" flag | |||
| | |||
* '''Pocky & Rocky''': Broken license/logo screens on power on | |||
|- | |- | ||
| HDMA "do tranfer" flag isn't set/reset properly | | HDMA "do tranfer" flag isn't set/reset properly | ||
Line 121: | Line 127: | ||
* '''Alien vs Predator''': Screen flashes during gameplay | * '''Alien vs Predator''': Screen flashes during gameplay | ||
* '''Pocky & Rocky''': Screen flashes during gameplay | * '''Pocky & Rocky''': Screen flashes during gameplay | ||
|- | |||
| When NMI is triggered as per above, CPU jumps to interrupt vector immediately (should run 1 more instruction) | |||
| | |||
* '''Jaki Crush''': Doesn't boot (may depend on other timing) | |||
|- | |- | ||
| SPC timings are inaccurate (requires SPC to run 1 cycle at a time, rather than 1 instruction at a time) | | SPC timings are inaccurate (requires SPC to run 1 cycle at a time, rather than 1 instruction at a time) | ||
Line 153: | Line 163: | ||
| | | | ||
* '''Yoshi's Island''': Broken effects in tunnels[https://github.com/SourMesen/Mesen-S/issues/25] | * '''Yoshi's Island''': Broken effects in tunnels[https://github.com/SourMesen/Mesen-S/issues/25] | ||
|- | |||
| OAMADD priority sprite rotation is missing | |||
| | |||
* '''Super Mario World''': The lives-indicator Mario is hidden at the top left of the map screen | |||
|- | |||
| HDMA can't affect open bus | |||
| | |||
* '''Speedy Gonzales: Los Gatos Bandidos''': Game locks up in level 6-1[https://mgba.io/2017/07/31/holy-grail-bugs-2/#speedy-gonzales-los-gatos-bandidos] | |||
|} | |} | ||
== See Also == | |||
* [[Uncommon graphics mode games]] | |||
* [[Emulator tests]] |
Latest revision as of 18:58, 26 April 2024
This is a list of various emulation bugs encountered during the development of Mesen-S. It is meant as a quick reference to help others find and debug issues with their own emulation core. It can also be used to find games that might be affected by a code change, for regression testing purposes.
Cause | Affected games |
---|---|
Missing/incorrect open bus implementation (CPU or PPU) |
|
Incorrect or missing BRK/COP implementation |
|
Incorrect ORA [d] implementation |
|
VRAM writes are not ignored during rendering |
|
Ignored VRAM writes during rendering are not incrementing the VRAM address |
|
VRAM read implementation is incorrect |
|
Offset-per-tile wraparound logic is incorrect |
|
Offset-per-tile implementation has bugs |
|
Mode 7 doesn't implement window logic |
|
Mode 7 scroll offsets are not latched at the beginning of the scanline |
|
Mode 7 direct color implementation is wrong |
|
Color window is not applied to all pixels |
|
Color math for subscreen in high resolution modes is incorrect |
|
Implementation of OAM writes during rendering is inaccurate |
|
OAM fetching/rendering timing inaccurate |
|
DMA controller power on state is invalid |
|
CPU doesn't run an extra cycle before starting DMA after write to $420B |
|
DMA controller allows reading B-bus registers using A-bus address |
|
DMA/HDMA timings are inaccurate |
|
DMA is not suspended when HDMA runs |
|
HDMA doesn't ignore "fixed transfer" flag |
|
HDMA doesn't ignore "decrement" flag |
|
HDMA ignores "direction" flag |
|
HDMA "do tranfer" flag isn't set/reset properly |
|
V-IRQ doesn't trigger when V-IRQs are enabled for the current scanline |
|
NMI isn't triggered when NMI is enabled partway through vertical blank |
|
When NMI is triggered as per above, CPU jumps to interrupt vector immediately (should run 1 more instruction) |
|
SPC timings are inaccurate (requires SPC to run 1 cycle at a time, rather than 1 instruction at a time) |
|
CPU read effects do not occur early enough in the CPU's cycle |
|
DSP KOF register is not initialized to $00 |
|
SRAM mappings are incorrect |
|
RAM power on state is "incorrect" |
|
Super FX - RPIX implementation is incorrect |
|
OAMADD priority sprite rotation is missing |
|
HDMA can't affect open bus |
|