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