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 graphics-related debug menus, the specifics of which will be described here.

Main Menu

Main Menu
This main debug menu (Scr & Obj Test Menu) can be accessed by using the following MAME cheats on each respective game's service menu:

Darkstalkers MAME Cheats
  <cheat desc="Access SCR & OBJ Test Menu From Test Menu (old)">
    <script state="on">
      <action>maincpu.pw@FF8000=2A85</action>
    </script>
  </cheat>

  <cheat desc="Access SCR & OBJ Test Menu From Test Menu">
<comment>Enter, then exit the Input test from the Test menu with this on to access the other menu.
It's in case the above cheat doesn't work in newer versions of MAME.</comment>
    <script state="run">
      <action>maincpu.pw@FF060A=4644</action>
    </script>
  </cheat>
Night Warriors MAME Cheats
  <cheat desc="Access SCR & OBJ Test Menu From Test Menu (old)">
    <script state="on">
      <action>maincpu.pw@FF8000=211E</action>
    </script>
  </cheat>
  
  <cheat desc="Access SCR & OBJ Test Menu From Test Menu">
<comment>Enter, then exit the Input test from the Test menu with this on to access the other menu.
It's in case the above cheat doesn't work in newer versions of MAME.</comment>
    <script state="run">
      <action>maincpu.pw@FF060A=7218</action>
    </script>
  </cheat>

Char Move Test

Char Test
This is an in-depth character animation menu, with several sub-modes. Sub-menus are entered by pressing P1 Start. 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 MAME Cheats
  <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="0" 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="0" max="65535" step="16"/>
    <script state="run">
      <action>maincpu.pw@FF879C=param</action>
    </script>
  </cheat> 
Night Warriors MAME Cheats
  <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="0" 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="0" 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: 16 bits of miscellaneous counters and flags. Seem to be used for various purposes depending on context, but some of the recurring uses are noted below:

CHAR TP Flags
Bit 0 (LSb)
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7 Continue through hitstop
Bit 8
Bit 9
Bit 10
Bit 11
Bit 12 Rapid-fire cancellable
Bit 13
Bit 14
Bit 15 (MSb) End of animation

PRIO NO: Sprite drawing priority.
KAGE NO: ID of shadow sprite.
ST: Miscellaneous status flags:

ST 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:

Darkstalkers MAME Cheats
  <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:

DM TYPE
1 Standard (Knockback on ground, reset in air)
2 Sweep trip
3 Anti-air knockdown
4 Knockdown
5 Air juggle knockdown (3 hit limit)
6 Juggle knockdown (3 hit limit)
7 Air juggle knockdown (indefinite)
8 Juggle knockdown (indefinite)
9 Electrocute knockdown
10 Burn knockdown
11 Freeze
12 Freeze knockdown
13 Freeze juggle (3 hit limit)
14 Dismemberment
15 Poison
16 Lock (Autocombo supers, etc.)
17 Curse
18 Permanent lock? (softlock)
19 Dizzy (only on ground, reset in air)
20 Knockdown into dizzy
21 No knockback (only on ground, reset in air)
22 ? (Can't notice anything different from standard)
23 ? (Knocks down anti-air, can't notice anything else)
24 Pull in trip (Kaeshi Yaiba)
25 Lock (only on ground, knockdown in air)
26 Knockdown into poison
27 Burn into dizzy (Pharaoh Magic)
28 Electrocute into dizzy (Pharaoh Magic)
29 Freeze lock (Pharaoh Magic)
30 OTG hit (locks to ground)
31 Air juggle reset (3 hit limit)
32 Dismemberment knockdown
33 Dismemberment knockdown
34 Stun (Sonic Wave)
35 Launch into air, spinning fall (Aqua Spread)
36 Reset
37 Long push knockback/knockdown (Reflect Wall)
38 Launch and bounce (Mega Spike)
39 Spike knockdown (Mega Spike)
40 Spinning freeze knockdown
41 ? (Can't notice anything different from standard)
42 Burn
43 Electrocute
44 Electrocute reset
45 Seppuku
46 Spinning launch (Circuit Scrapper, Houtengeki)
47 Anti-air lock to position diagonally above (Genocide Vulcan)
48 Confusioner
49 Floaty knockdown juggle (indefinite)
50 Burn knockdown juggle (3 hit limit)
51 Low arc knockdown juggle (indefinite)
52 Burn knockdown juggle (indefinite)
53 OTG hit
54 Burn state w/o fire, fall down (Please Help Me)
55 Trip in place (Tenraiha)
56 ? (knockdown w/ ridiculous Y velocity, screen wrapping)
57 Vertical spike knockdown (Sasquatch/Victor j.HP)
58 Lock (locks to ground level)
59 Burn knockdown juggle (5 hit limit)
60 Electrocute (no invul)
61 Block (lock to ground level)
62 Hit while cursed
63 ? (Opponent loses control, walks backward)

SPECIAL: Attack class:

SPECIAL
000 Normal
SP Special
SSP ES/EX
K Chip damage normal (Victor, DS1 Pyron)

UNI ATTACK: Unique Flag?

SPECIAL
000 Nothing?
001 Hits OTG

HIT MARK: Presumably the type of hit spark used upon hit? Usually seems to be 0.
GUARD: Blockability flags:

GUARD
J Jumping
N Standing
S Crouching

HS No: Unknown?

Okuri Jikan

Okuri jikan
An animation timing editor. Largely the same as the Move Chara menu, but with the ability to change the amount of time each particular frame of animation is displayed on screen via the P2 joystick. However, this actually has no effect, as the default timing values are always read straight from the ROM.

Serifu Disp

Serifu Disp
The name indicates that at one point this might have pointed to a menu for checking win quotes and other such pieces of text, but it actually currently points to an advanced sound test.

Iro Kaeru

Iro Kaeru
Changes the color of the backdrop grid.
P1 Light Punch/Medium Punch: Increment base color.
P1 Hard Punch: Toggle grid lines.
P1 Light Kick/Medium Kick: Increment brightness.
P1 Hard Kick: Reset color to default.

Scroll 1 Mini Block Test

Scroll 1 Mini Block Test
A metatile viewer for the 8x8 Scroll 1 layer.
P1 Up/Down: Increment by 1.
P1 Left/Right: Increment by 16.
P1 Light Punch: Increment by 256.
P1 Start: Increment Palette.
P1 Start + P2 Start: Return to main debug menu.

Scroll 1 Block Test

Scroll 1 Block Test
A tilemap chunk viewer for the 8x8 Scroll 1 layer.
P1 Up/Down: Increment by 1.
P1 Left/Right: Increment by 16.
P1 Light Punch: Increment by 64.
P2 Light Punch: Toggle vertical alignment between default, 16 pixels up, and 16 pixels down.
P1 Start: Increment Palette.
P1 Start + P2 Start: Return to main debug menu.

Scroll 2 Block Test

Scroll 2 Block Test
A tilemap chunk viewer for the 16x16 Scroll 2 layer.
P1 Up/Down: Increment by 1.
P1 Left/Right: Increment by 16.
P1 Light Punch: Increment by 64.
P2 Light Punch: Toggle vertical alignment between default, 16 pixels up, and 16 pixels down.
P1 Start: Increment Palette.
P1 Start + P2 Start: Return to main debug menu.

Scroll 3 Block Test

Scroll 3 Block Test
A tilemap chunk viewer for the 32x32 Scroll 3 layer.
P1 Up/Down: Increment by 1.
P1 Left/Right: Increment by 16.
P1 Light Punch: Increment by 64.
P2 Light Punch: Toggle vertical alignment between default, 16 pixels up, and 16 pixels down.
P1 Start: Increment Palette.
P1 Start + P2 Start: Return to main debug menu.

Scroll 1 Move Test

Scroll 1 Move Test
A scrolling tilemap viewer for the 8x8 Scroll 1 layer.
P1 Up/Down/Left/Right: Scroll.
P1 Light Punch/Light Kick: Increment scrolling speed.
P1 Start: Increment stage/tilemap.
P2 Start: Change transparency mask color.
P1 Start + P2 Start: Return to main debug menu.

Scroll 2 Move Test

Scroll 2 Move Test
A scrolling tilemap viewer for the 16x16 Scroll 2 layer.
P1 Up/Down/Left/Right: Scroll.
P1 Light Punch/Light Kick: Increment scrolling speed.
P1 Start: Increment stage/tilemap.
P2 Start: Change transparency mask color.
P1 Start + P2 Start: Return to main debug menu.

Scroll 3 Move Test

Scroll 3 Move Test
A scrolling tilemap viewer for the 32x32 Scroll 3 layer.
P1 Up/Down/Left/Right: Scroll.
P1 Light Punch/Light Kick: Increment scrolling speed.
P1 Start: Increment stage/tilemap.
P2 Start: Change transparency mask color.
P1 Start + P2 Start: Return to main debug menu.

Scroll 1 2 3 Move Test

Scroll 1 2 3 Move Test
A multilayer parallax scrolling tilemap viewer.
P1 Up/Down/Left/Right: Scroll.
P1 Light Punch/Light Kick: Increment Scroll 1 scrolling speed.
P1 Medium Punch/Medium Kick: Increment Scroll 2 scrolling speed.
P1 Hard Punch/Hard Kick: Increment Scroll 3 scrolling speed.
P1 Start: Increment stage/tilemap.
P2 Start: Reorder Scroll layer priority.