Watchdog: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
The watchdog is a lock-up/protection feature consisting of a resettable counter (what size ?) located in {{Chipname|NEO-B1}} chip, that resets the system if it underflows. It can be physically disabled by putting pin {{Sig|DOGE|DOGE}} to ground (J2 jumper).
[[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.


It must be therefore "kicked" regularly to reset the counter. This is done by writing any byte to any odd addresses in the $300000~$31FFFF range. Register {{Reg|REG_DIPSW}} is the most often used. [[68k interrupts|VBlank]] routines often take care of this task, but care has to be taken to do it regularly 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 a typical clicking sound, giving a clue for solving boot issues. (Sound file ?)
The NeoGeo CD 2 also has a watchdog timer ?
 
==Timings==
 
This isn't verified.


The NeoGeo CD 2 also has a watchdog timer ?
Charles mvstech.txt specifies this:
 
<pre>
/RESET low          3 244 030 cycles
/RESET high        8 120 860 cycles
Total time        11 364 890 cycles
</pre>
 
[[MAME]]'s source says that a 0.128762s long loop '''sometimes''' resets the system.
 
The counter is clocked by the {{Sig|CHBL|BNKB}} signal.


Informations from [[MAME]]'s source:
*3244030 cycles corresponds to 8 [[Framerate|frames]].
*8120860 cycles corresponds to 20 frames (- 7 lines).
*128762µs is 3090288 cycles, which corresponds to about 7.6 frames.


The watchdog timer will reset the system after 0.128762 seconds (around 7 NTSC frames).
A looping watchdog reset gives a steady 3.7Hz {{Sig|RESET|RESET}} signal, matching the duration of 2 times 8 frames (135.17ms).


Newer games force a reset using the following code (from KOF99):
==As a security measure==
<syntaxhighlight>
(Disable interrupts)
MOVE.L  #$30D40,D0
SUBQ.L  #1,D0
BCC.S    *-0x2
</syntaxhighlight>


The watchdog is used as a form of protecetion on a number of games, previously this was implemented as a specific hack which locked a single address of [[Battery-backed RAM|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.
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 [[Battery-backed RAM|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.


[[Category:Code]]
[[Category:Code]]
[[Category:Base system]]
[[Category:Base system]]

Latest revision as of 20:16, 9 May 2019

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.