Watchdog

From NeoGeo Development Wiki
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.
The watchdog can be physically disabled for troubleshooting purposes by connecting pin DOGE (watchDOG Enable, NEO-B1 pin 94, J2 jumper on some boards) to ground.

The watchdog is an automatic reset system to prevent games from freezing due to a bug or a hardware fault. It's a common feature of arcade hardware and many electronic systems.

On the NeoGeo, it consists of an internal frame counter which resets the whole system if it goes over a certain value. To avoid this, the software needs to regularly reset the counter by writing any value to REG_DIPSW (to "kick" the watchdog). VBlank routines typically take care of this task, so care has to be taken when the interrupt is disabled.

A constantly resetting system produces the click of death: a typical clicking sound, giving a clue for solving boot issues.

The NeoGeo CD 2 also has a watchdog timer ?

Timings

This isn't verified.

Charles mvstech.txt specifies this:

/RESET low          3 244 030 cycles
/RESET high         8 120 860 cycles
Total time         11 364 890 cycles

MAME's source says that a 0.128762s long loop sometimes resets the system.

The counter is clocked by the CHBL signal.

  • 3244030 cycles corresponds to 8 frames.
  • 8120860 cycles corresponds to 20 frames (- 7 lines).
  • 128762µs is 3090288 cycles, which corresponds to about 7.6 frames.

A looping watchdog reset gives a steady 3.7Hz RESET signal, matching the duration of 2 times 8 frames (135.17ms).

As a security measure

The watchdog is used as a form of protection on a number of games, previously this was implemented as a specific hack which locked a single address of SRAM. If the game doesn't find valid data in the backup ram it will initialize it, then sit in a loop. The watchdog should then reset the system. If the watchdog fails to reset the system the code will continue and set a value in backup ram to indiate that the protection check has failed.