Tricky-to-emulate games: Difference between revisions
From SNESdev Wiki
Jump to navigationJump to search
NovaSquirrel (talk | contribs) (Added Speedy Gonzales) |
Wuerfel 21 (talk | contribs) (Jaki Crush may fail to boot without NMI delay) |
||
Line 119: | Line 119: | ||
* '''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) |
Revision as of 17:18, 25 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 |
|
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 "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 |
|