Common pitfalls
Check your hardware before checking your code...
Unwanted resets
- Watchdog not written to fast enough
- Misaligned word or longword read/write
- RTS with wrong return address in stack (or bad SP ?)
Invisible sprites
- Sprites are disabled (NeoGeo CD only ? Register ?)
- The fix layer is filled with non-transparent tiles and hides everything underneath.
- Bad X or Y position (Sprite is out of the 320x224 visible area).
- Size is 0 (SCB3).
- Sprite tiles are all transparent (bad tile numbers ?).
- Shrinking values too low (should still be visible)
- Bad C ROM, it happens...
- Reference color (0) is not black.
Invisible fix layer
- Fix is disabled (NeoGeo CD only ? Register ?)
- No non-transparent tiles mapped (bad S ROM ?)
- Tiles are on the invisible borders.
- Reference color (0) is not black.
Wrong colors
- Reference color (0) is not black. Set $400000 to #$8000.
- Palettes were loaded in bytes instead of words.
- Tiles are assigned to an uninitialized palette.
Shrinked sprites show garbage below them
- The unused part of the sprite maps isn't cleared with a transparent tile (hardware glitch ?).
Erratic sprite movement
- Sprite is driven by the previous one.
- VRAM writes done at the bad moment.
Interrupts don't work
- Some emulators ignore the raster line interrupt, it may work on the real hardware.
- Interrupt mask cause them to be ignored by the 68k. Check the SR register.
- Wrong configuration of the raster line interrupt, see REG_HBLANKCNT ($3C0006).
- The interrupt vector points to an RTE or RTS. Beware of the different levels between cart and CD systems.