Watchdog: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
The watchdog | [[File:Doge.jpg|thumb|The watchdog can be physically disabled for troubleshooting purposes by connecting pin {{Sig|DOGE|DOGE}} (watch'''DOG E'''nable, {{Chipname|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|REG_DIPSW|REG_DIPSW}} (to "kick" the watchdog). [[68k interrupts|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. | A constantly resetting system produces the [[click of death]]: a typical clicking sound, giving a clue for solving boot issues. | ||
Line 23: | Line 23: | ||
[[MAME]]'s source says that a 0.128762s long loop '''sometimes''' resets the system. | [[MAME]]'s source says that a 0.128762s long loop '''sometimes''' resets the system. | ||
The counter is clocked by the {{Sig|CHBL|BNKB}} signal. | |||
*3244030 cycles | *3244030 cycles corresponds to 8 [[Framerate|frames]]. | ||
*8120860 cycles | *8120860 cycles corresponds to 20 frames (- 7 lines). | ||
*128762µs is 3090288 cycles, which corresponds to about 7.6 frames. | *128762µs is 3090288 cycles, which corresponds to about 7.6 frames. | ||
A looping watchdog reset gives a steady 3.7Hz {{Sig|RESET|RESET}} signal, | A looping watchdog reset gives a steady 3.7Hz {{Sig|RESET|RESET}} signal, matching the duration of 2 times 8 frames (135.17ms). | ||
==As a security measure== | ==As a security measure== |
Latest revision as of 20:16, 9 May 2019
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.