the cutting room mirror

Martialbeat (Arcade)

An obscure arcade port of the PlayStation martial arts-based exertainment game which is loosely related to Konami's Bemani series. It retains the original's 14 songs, and also features a minigame based on Yie Ar Kung-Fu if you clear the game's courses.

Unused Graphic#

The file sel_albm.lz, found within musi_sel.fcn upon extraction of the filesystem within GAME.DAT and PCCARD2.DAT, contains the album titles displayed on the song selection screen. Of these, there is an unused graphic meant to be displayed for Konami original songs, which Martialbeat does not have.

(Source: tikal.)

Unused Music#

The folder DATA0 in the game's disc contains the game's music files. Of those in the folder DYNAMIC, three are not heard by normal means:

BASIC.DAT This track originates from the original PlayStation release of the game, where it plays as the background music for the Basic Mode menu.

CONG_L.DAT A longer version of the jingle that plays upon completing a game with all stages cleared.

OPENING.DAT The opening theme from the original PlayStation release, complete with the sound effects that sync to that version's intro cinematic. While this track is heard in the operator menu's Sound Volume 2 option, it never actually plays during gameplay.

ENDING.DAT Given the name, this track was likely meant for some sort of ending sequence. While it doesn't originate from the original PlayStation release, it's clearly an original tune, as it has some melodies from that version's opening theme.

(Source: tikal.)

Unused Sounds#

The file system.vas, which can be extracted from the filesystem within GAME.DAT and PCCARD2.DAT, contains the game's sound effects. Of these, the 57th to 60th sounds, which consist of a voiceover followed by a jingle, are unused. Most of these sounds are, however, used in the PlayStation version's main menu, and were most likely meant to serve the same purpose here; the only exception is the 59th sound, which contains a voiceover not heard there.

Number

Audio

Transcription

57

"Attack"

58

"Basic"

59

"Nonstop"

60

"Practice"

(Source: tikal.)

Unused Text#

The following strings can be found at offset 0x2E8C of main.exe, which can be extracted from the filesystem within GAME.DAT and PCCARD2.DAT:

Step on bass drum to hear
different sound effects for comparison

They appear to be leftovers from drummania 5thMIX, as there are some files and aspects copied from that game, such as the menu system font, as well as its config file mentioning it.

(Source: WindyFairy)

Debug Software DIP Switches#

Martialbeat contains software DIP switches, though the function to return the values was stubbed out. The following MAME cheats restore this functionality:

  <cheat desc="Debug Softdip implementation (do not disable)">
    <script state="run">
      <action>maincpu.pd@80010250=3c028001</action>
      <action>maincpu.pd@80010254=2442026c</action>
      <action>maincpu.pd@80010258=00441020</action>
      <action>maincpu.pd@8001025c=80420000</action>
      <action>maincpu.pd@80010260=00000000</action>
      <action>maincpu.pd@80010264=03e00008</action>
      <action>maincpu.pd@80010268=00000000</action>

      <action condition="maincpu.pd@8001026c==37302032">maincpu.pd@8001026c=00000000</action>
      <action condition="maincpu.pd@80010270==3A32353A">maincpu.pd@80010270=00000000</action>
      <action condition="maincpu.pd@80010274==6E203732">maincpu.pd@80010274=00000000</action>
      <action condition="maincpu.pd@80010278==2061646F">maincpu.pd@80010278=00000000</action>

      <!-- Jump to implementation -->
      <action>maincpu.pd@80036170=08004094</action>
      <action>maincpu.pd@80036174=00000000</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: JobBar">
    <script state="off">
      <action>maincpu.pb@8001026c=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@8001026c=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: seq from pc">
    <script state="off">
      <action>maincpu.pb@8001026d=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@8001026d=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: auto">
    <script state="off">
      <action>maincpu.pb@8001026e=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@8001026e=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: debug">
    <script state="off">
      <action>maincpu.pb@8001026f=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@8001026f=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: all">
    <script state="off">
      <action>maincpu.pb@80010270=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010270=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: iofilter">
    <script state="off">
      <action>maincpu.pb@80010271=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010271=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: disp io">
    <script state="off">
      <action>maincpu.pb@80010272=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010272=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: disp point">
    <script state="off">
      <action>maincpu.pb@80010273=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010273=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: disp count">
    <script state="off">
      <action>maincpu.pb@80010274=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010274=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: disp seq">
    <script state="off">
      <action>maincpu.pb@80010275=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010275=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: mv play">
    <script state="off">
      <action>maincpu.pb@80010276=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010276=01</action>
    </script>
  </cheat>

  <cheat desc="Debug Softdip: log print">
    <script state="off">
      <action>maincpu.pb@80010278=00</action>
    </script>
    <script state="on">
      <action>maincpu.pb@80010278=01</action>
    </script>
  </cheat>

(Source: WindyFairy)

These debug switches are documented as follows:

JobBar#

martialbeatAC-jobbar.png

Displays a memory usage meter on the right side of the screen.

seq from pc#

Loads sequence files from a PC. On MAME, this command freezes the game.

auto#

Enables autoplay.

debug#

martialbeatAC-debug.png

Displays the inputs for each of the game's three codes (All Music, Original Voice, and Telop Off), as well as associated press cooldown and completion values, at the top of the screen. These inputs decrease once each of the associated buttons (Left, Right) are pressed.

all#

Enables all songs to be played.

iofilter#

Doesn't seem to do anything.

disp io#

Doesn't seem to do anything.

disp point#

martialbeatAC-disppoint.png

Displays the value of the player's health gauge during gameplay.

disp count#

martialbeatAC-dispcount.png

Displays beat and measure counters, MP3 playback stats, as well as the amount of frames passed and remaining in the song's video during gameplay.

disp seq#

martialbeatAC-dispseq.png

Displays another measure counter. The value seen seems to be equivalent to the D_ADR value displayed if disp count is enabled.

mv play#

Enables a function which allows the player to move the internal game clock by using the Left and Right buttons. This affects movies, charts, as well as animations. Turning this switch off during gameplay will not cause the video to resume playing as normal, however.

measure#

martialbeatAC-measure.png

Displays a grid over the gameplay screen.

log print#

Would enable messages to be printed to the tty debug console, though there is currently no way to display them on MAME.

Revisional Differences#

Two versions of Martialbeat are known to exist, labeled ver.JAB and ver.JBA.

(Source: ONIKU & WindyFairy)

  • Ver.JBA adds a new mode, labeled as "Original Program", which goes through all of the game's songs, either in a specific order or configured by the player.

martialbeatAC-originalprogram1.png martialbeatAC-originalprogram2.png

  • To accommodate the new mode, the main menu was changed, removing the bigger illustration on the left side. In addition, the mode names are written in English in ver.JAB, and in Japanese in ver.JBA. They also have different descriptions:

ver.JAB

ver.JBA

Beginner
初めてでも気軽に最大*曲遊べます

Normal
好きな曲を最大*曲遊べるメインモード

NonStop
最大*曲連続プレイ! 無休の上級者コース

ビギナー
初心者歓迎! 最大*曲遊べる入門モード

ノーマル
お好きな曲を最大*曲遊べるメインモード

ノンストップ
最大*曲連続プレイ! 上級者モード

Beginner
Even first-timers can easily play up to * songs

Normal
The main mode where you can play
up to * of your favorite songs

NonStop
Play up to * songs in a row! Nonstop expert course

Beginner
Beginners welcome! An introductory mode
where you can play up to * songs

Normal
The main mode where you can play
up to * of your favorite songs

Nonstop
Play up to * songs in a row! Expert course

Gameplay#

  • The ending screen has more text in ver.JBA:

ver.JAB

ver.JBA

家庭用でも特訓だ!

家庭用でも特訓だ!
アミューズメントスペースでお披露目だ!

Special training even at home!

Special training even at home!
Debut in amusement spaces!

Burn Date#

The game's disc image has a burn date in its label, 020125_1222, which can be read as January 25, 2002, 12:22.

References#


  1. GAME Watch↩︎