Common pitfalls

From NeoGeo Development Wiki
Revision as of 05:56, 23 May 2011 by Furrtek (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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