Common pitfalls

Check your hardware before checking your code...

=Unwanted resets=
 * Watchdog not written to often enough
 * Misaligned word or longword read/write
 * RTS with wrong return address in stack (or bad SP ?)
 * JSR to BIOSF_BOOTSCR ($C00438) instead of JMP

=Invisible sprites=
 * Sprites are disabled (NeoGeo CD only)
 * The fix layer is filled with non-transparent tiles and hides everything.
 * Sprite position is out of the 320x224 visible area.
 * Sprite size is 0 (SCB3).
 * Sprite tiles are all transparent (bad tile numbers ?).
 * Shrinking values too low (few pixels should still be visible).
 * Bad C ROM, it happens...
 * Reference color (0) is not black.

=Invisible fix layer=
 * Fix is disabled (NeoGeo CD only)
 * 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 loading routine is broken.
 * 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 too fast.

=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.

=Game don't boot (goes directly to the crosshatch)=
 * Check the "NEO-GEO" string at 0x100
 * Check the security code at (0x182).l