If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Darkstalkers: The Night Warriors (Arcade)/Debug

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Darkstalkers: The Night Warriors (Arcade).

Darkstalkers and Night Warriors both contain a similar set of debug menus, the specifics of which will be described here.

Main Menu

Main Menu
This main debug menu can be accessed by using the following MAME cheats on each respective game's service menu:
Darkstalkers:

  <cheat desc="Access SCR And OBJ Test Menu From Test Menu">
    <script state="on">
      <action>maincpu.pw@FF8000=2A85</action>
    </script>
  </cheat>

Night Warriors:

  <cheat desc="Access SCR and OBJ Test Menu From Test Menu">
    <script state="on">
      <action>maincpu.pw@FF8000=211E</action>
    </script>
  </cheat>

Char Move Test

Char Test
This is an in-depth character animation menu, with several sub-modes. In some sub-menus, values can be edited, likely an artifact of when the software was still running on development machines. Of course now these edits can't actually be saved. Note that sometimes characters' placements on the screen in this menu can be unpredictable, and the controls to move them seem to be buggy. The following MAME cheats can help you keep the characters where you want them on-screen:
Darkstalkers:

  <cheat desc="1P Pos-X">
    <parameter min="0" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF8398=param</action>
    </script>
  </cheat>  
  
  <cheat desc="1P Pos-Y">
    <parameter min="15" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF839C=param</action>
    </script>
  </cheat> 

  <cheat desc="2P Pos-X">
    <parameter min="0" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF8798=param</action>
    </script>
  </cheat>  
  
  <cheat desc="2P Pos-Y">
    <parameter min="15" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF879C=param</action>
    </script>
  </cheat> 

Night Warriors:

  <cheat desc="1P Pos-X">
    <parameter min="0" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF8398=param</action>
    </script>
  </cheat>  
  
  <cheat desc="1P Pos-Y">
    <parameter min="15" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF839C=param</action>
    </script>
  </cheat> 
  
  <cheat desc="2P Pos-X">
    <parameter min="0" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF8898=param</action>
    </script>
  </cheat>  
  
  <cheat desc="2P Pos-Y">
    <parameter min="15" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF889C=param</action>
    </script>
  </cheat> 

In order to return to this menu from any of the sub-menus, press P1 Start.

Move Chara

Move Chara
This is the standard character animation menu. Every animation sequence of each character can be played back and examined frame by frame. Two characters can be displayed at once, and Player 1's associated animation data is displayed on the left hand side of the screen.
Controls:
P1/P2 Joystick: Move character (buggy).
P1/P2 Light Punch: Hold down to play back current animation sequence in real time.
P1/P2 Medium Punch: Advance to the next frame of animation within the current sequence.
P1/P2 Hard Punch: Reset current animation sequence to its beginning.
P1/P2 Light Kick + Joystick Left/Right: Increment animation sequence.
P1/P2 Light Kick + Joystick Up/Down: Increment character.
P1/P2 Medium Kick: Toggle character sprite flip flags.

Displays:
NAME: Character number and placeholder name.
KIND: Animation sequence number and label.
No.: Animation frame number out of total number of frames in sequence.
COUNT: Game time in frames (1/60 second) to display this animation frame.
POS-X, POS-Y: Position of character on the screen.
REL-X, REL-Y: Relative position of Player 2 character to Player 1 character.
H-FLIP, V-FLIP: Sprite flip flags.
CHAR TP: Behavior flags.
PRIO NO: Sprite drawing priority.
KAGE NO: ID of shadow sprite.
ST: Miscellaneous flags; A = Attack, S = Crouching, G = Blocking, D = Hitstun, B = Falling/Knocked down, d = Dash, T = Throw attempt

Nage Hosei

Nage Hosei
This menu is specifically for checking the sprite positioning of characters grabbed by throw attacks. In this menu, Player 1 takes on the role of the attacker, and Player 2 takes on the role of the victim. Note that for this particular menu, the game will attempt to correctly place the victim in the attacker's grasp, so disable the aforementioned character position codes for Player 2 to see the proper result.
Controls:
P1 Joystick Left/Right: Increment attacker animation sequence.
P1 Joystick Up/Down: Increment attacker character.
P1 Light Punch: Hold down to play back current animation sequence in real time.
P1 Medium Punch: Advance to the next frame of animation within the current sequence.
P1 Hard Punch: Reset current animation sequence to its beginning.
P2 Joystick: Move victim (buggy).
P2 Medium Punch + Joystick Left/Right: Increment victim pose. P2 Medium Punch + Joystick Up/Down: Increment victim character. P2 Hard Punch: Toggle victim sprite flip flags.

Displays:
NAME: Character number and placeholder name.
KIND: Animation sequence number and label.
No.: Animation frame number out of total number of frames in sequence.
COUNT: Game time in frames (1/60 second) to display this animation frame.
POS-X, POS-Y: Position of character on the screen.
REL-X, REL-Y: Relative position of Player 2 character to Player 1 character.
H-FLIP, V-FLIP: Sprite flip flags.

Atari Edit

Atari Edit
This menu is similar to Char Move, but more focused on hitbox and attack properties.

Note that this menu will not function in Darkstalkers, as the code is looking for the hitbox data in the wrong place. Attempting to load the menu as-is will crash the game. You can use the following MAME cheat to correctly point to each character's hitbox table:

  <cheat desc="Atari Edit Debug Menu Hitbox Pointer Fix">
    <parameter>
      <item value="0x35FCCE">Dimitri</item>
      <item value="0x361CCE">Gallon</item>
      <item value="0x363CCE">Victor</item>
      <item value="0x365CCE">Zabelzaroch</item>
      <item value="0x367CCE">Morrigan</item>
      <item value="0x369CCE">Anakaris</item>
      <item value="0x36BCCE">Felicia</item>
      <item value="0x36DCCE">Bishamon</item>
      <item value="0x36FCCE">Aulbath</item>
      <item value="0x371CCE">Sasquatch</item>
      <item value="0x373CCE">Phobos</item>
      <item value="0x375CCE">Pyron</item>
    </parameter>
    <script state="run">
      <action>maincpu.pd@FF83E4=param</action>
    </script>
  </cheat>
Hmmm...
To do:
Make a better cheat that fixes the encrypted Opcode at F61AA, telling it to look at 35FCCE instead of 3D2000.

Controls:
P1 Light Punch: Hold down to play back current animation sequence in real time.
P1 Medium Punch: Advance to the next frame of animation within the current sequence.
P1 Hard Punch: Reset current animation sequence to its beginning.
P1 Joystick Left/Right: Increment animation sequence.
P1 Joystick Up/Down: Increment character.
P2 Joystick: Move selected hitbox's origin.
P2 Medium Punch: ??? Toggles something related to "SIZE X" and "SIZE Y."
P2 Hard Punch: Change which hitbox is selected.

Displays:
NAME: Character number and placeholder name.
KIND: Animation sequence number and label.
No.: Animation frame number out of total number of frames in sequence.
COUNT: Game time in frames (1/60 second) to display this animation frame.
SIZE-X: X origin/radius of selected hitbox.
SIZE-Y: Y origin/radius of selected hitbox.
HE: Head hurtbox ID.
BO: Body hurtbox ID.
FT: Leg hurtbox ID.
WK: Weak point box ID? This might be a leftover from Street Fighter II, and seems to have been repurposed into clash boxes for projectiles.
AT: Attack hitbox ID.
FM: Pushbox ID.
HIT TYPE: Hit ID, used to differentiate successive hits within multi-hit attacks.
DAMAGE No: Base damage number.
DM ADJ-1: Random damage adjustment for high health.
DM ADJ-2: Random damage adjustment for low health.
DM TYPE: Type of damage state opponent is put into upon hit. 1 = Standard, 2 = Trip, 3 = Air-only knockdown, 4 = Knockdown
SPECIAL: Attack class. 000 = Normal, SP = Special, SSP = ES/EX.
UNI ATTACK: 1 = Pursuit attack, capable of hitting opponents lying on the floor.
HIT MARK: Presumably the type of hit spark used upon hit.
GUARD: Blockability flags. J = jumping, N = standing, S = crouching.
HS No: Unknown.