Watchdog



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