Tricky-to-emulate games: Difference between revisions
From SNESdev Wiki
Jump to navigationJump to search
Rainwarrior (talk | contribs) m (priority spelling) |
Rainwarrior (talk | contribs) (see also) |
||
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 158: | Line 156: | ||
* '''Super Mario World''': The lives-indicator Mario is hidden at the top left of the map screen | * '''Super Mario World''': The lives-indicator Mario is hidden at the top left of the map screen | ||
|} | |} | ||
== See Also == | |||
* [[Uncommon graphics mode games]] | |||
* [[Emulator tests]] |
Revision as of 18:44, 17 August 2022
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 |
|
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 |
|