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

Dungeon Magic

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Dungeon Magic

Also known as: Light Bringer (Japan)
Developer: Taito
Publisher: Taito
Platform: Arcade (Taito F3 System)
Released internationally: 1994
Released in JP: March 1994[1]


AreasIcon.png This game has unused areas.
DevMessageIcon.png This game has a hidden developer message.
DevTextIcon.png This game has hidden development-related text.
EnemyIcon.png This game has unused enemies.
ObjectIcon.png This game has unused objects.
GraphicsIcon.png This game has unused graphics.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
LevelSelectIcon.png This game has a hidden level select.
RegionIcon.png This game has regional differences.
Carts.png This game has revisional differences.


Dungeon Magic is a unique non-linear isometric action-RPG arcade game where the player must explore many rooms and find his way to the exit.

Sub-Pages

DungeonMagicSketchRoom10.png
Unused Maps
Unreferenced maps, sketch maps, and chunk data.
DungeonMagicArcLevelUpItem.png
Unused Objects
Enemies, items, obstacles, etc.
DungeonMagicArcQuizElf.gif
Unused Graphics
Here there be dragons (and a bunch of other stuff)

Debug Functions

Level Select/Screen Editor

DungeonmagicAC-levelselect.png
This game uses the Taito Code:

  1. Hold the Service Coin button upon booting, and wait until a "SERVICE SWITCH ERROR" message pops up on the screen.
  2. Press 1P Start (x3), Service Coin, then 1P Start again.

Afterwards, the game boots as normal. However, upon inserting a credit, the game redirects to a level select screen. The inputs are the same between P1 and P2.

  • Left/Right or Up/Down - Switch between "GAME" and "SCREEN EDITER".
  • Button 1 + Left/Right / Up/Down - Change Round value.
  • Button 2 + Left/Right / Up/Down - Change Room value.
  • Start - Apply

DungeonmagicAC-screeneditor.png
Should the "Screen Editor" function be chosen, the player is redirected to what seems to be a level editor of sorts. Controls:

  • 1P Start: Switch between "Scroll" and "Edit" functions.
  • SCROLL
    • 1P Up/Down/Left/Right - Move camera.
    • 1P Button 1 + 1P Up/Down - Change PRI parameter of tile.
    • 1P Button 2 + 1P Up/Down - Change COND parameter of tile (by 1).
    • 1P Button 2 + 1P Left/Right - Change COND parameter of tile (by 10).
    • 1P Button 3 + 1P Up/Down - Change ZxHI (height) parameter of tile (by 1).
    • 1P Button 3 + 1P Left/Right - Change ZxHI (height) parameter of tile (by 10).
  • EDIT
    • 1P Button 1 - Change boundary shape.
    • 1P Up/Down - Move X placement of shape.
    • 1P Left/Right - Move Y placement of shape.
(Source: RyogaMasaki)

Debug Flags

There are doubleword-sized flags at ROM addresses 0x00300 to 0x00324 that enable debug functions if set to non-zero values. Put the codes listed below in MAME's dungeonm.xml (Dungeon Magic) or lightbr.xml (Light Bringer) cheat file to enable the functions described in each subsection.

Game Pause

  <cheat desc="Game Pause">
    <script state="run">
      <action>maincpu.md@000300=00000001</action>
    </script>
    <script state="off">
      <action>maincpu.md@000300=00000000</action>
    </script>
  </cheat>

This tool allows the user to pause and resume the game at their leisure.

Controls

  • 1P Button 3: Pauses the game. If already paused, advances the game by 1 frame.
  • 2P Button 3: Resumes the game at normal speed.

Enable Crash Handler

  <cheat desc="Enable Crash Handler">
    <script state="run">
      <action>maincpu.md@000304=00000000</action>
    </script>
    <script state="off">
      <action>maincpu.md@000304=00000001</action>
    </script>
  </cheat>

DungeonMagicArcExceptionHandler1.png DungeonMagicArcExceptionHandler2.png
Has the following effects:

  • When the game crashes, an exception handler will be displayed that lists the exception name, the last running task, and the values of the status register, program counter, and data/address registers at the time of the crash. There are two different messages at the bottom that are picked at random.
  • The Tilt and Coin Error screens, which normally wailt until the game detects that it's an infinite loop - about 80 frames - will instead wait for 180 frames before the game resets.

CPU Meter

  <cheat desc="CPU Meter">
    <script state="run">
      <action>maincpu.md@000308=00000001</action>
    </script>
    <script state="off">
      <action>maincpu.md@000308=00000000</action>
    </script>
  </cheat>

DungeonMagicArcCPUMeter1.png DungeonMagicArcCPUMeter2.png
Adds a CPU usage meter to the left side of the screen. This is normally black, but will turn different colors if the game is under heavy load, like when the game loads a new area.

Sprite Viewer

  <cheat desc="Sprite Viewer">
    <script state="run">
      <action>maincpu.md@000320=00000001</action>
    </script>
    <script state="off">
      <action>maincpu.md@000320=00000000</action>
    </script>
  </cheat>

DungeonMagicArcSpriteViewer.png
Enables a sprite viewer. The game will keep running while this is active, so it's advised to pick an uncluttered screen (Like the stage select) and pausing the game to use this viewer - the editor will remain active while the game is paused.

Controls

  • 1P Left/Right: Adjusts sprite number by 01.
  • 1P Up/Down: Adjusts stprite number by 40.
  • 1P Button 1 + 1P Joystick: Adjusts the position of the current sprite.
  • 1P Button 2 + 1P Left/Right: Adjusts palette number by 20.
  • 1P Button 2 + 1P Up/Down: Adjusts palette number by 02.

Extended Sound Test / Demo Recorder

  <cheat desc="Extend Sound Test / Demo Recorder">
    <script state="run">
      <action>maincpu.md@000324=00000001</action>
    </script>
    <script state="off">
      <action>maincpu.md@000324=00000000</action>
    </script>
  </cheat>

DungeonMagicArcSoundTestEX1.png DungeonMagicArcSoundTestEX2.png
This debug flag adds information to the game's sound test that lists the raw data of each sound effect / BGM, and adds a couple more features:

  • The "Reset" option resets the game.
  • The "Code Volume" option lets the player play the selected sound / music track and also lets them set their relative volume.

DungeonMagicArcDemoViewer.png
This flag also enables a demo recorder. In attract mode, when a demo is triggered, the player has full control of the character and the game records the player's input to RAM:

Type Start End
Ash Demo 0x410030 0x4108C8
Cisty Demo 0x4108E0 0x41136C
Tutorial 0x411380 0x411C0E
Gren Demo 0x411C20 0x4126AC
Vold Demo 0x4126C0 0x41314C

The "TRACE" text at the bottom displays the starting address and the address that's currently being written to, "DATA" is the raw value of the player's input (Inverted from how it's actually stored in RAM), and "TIME" keeps track of how many frames have passed in the current demo.

Running Debug

  <cheat desc="Running Debug">
    <script state="run">
      <action>maincpu.md@0E3C22=0x4EB90006</action>
      <action>maincpu.md@0E3C26=0xE1884E71</action>
      <action>maincpu.mw@0E3C2A=0x4E71</action>
    </script>
    <script state="off">
      <action>maincpu.md@0E3C22=0x082D0000</action>
      <action>maincpu.md@0E3C26=0x82206700</action>
      <action>maincpu.mw@0E3C2A=0x058A</action>
    </script>
  </cheat>

DungeonMagicArcRunningDebugT0.png
Controls

  • 1P Button 3: Pauses the game. If game is already paused, advances the game by one frame.
  • 2P Button 3: Unpauses the game.
  • 4P Button 3: Loads next tool.

This debugger allows the user to cycle through sixteen different debugging tools while playing the game. A few notes on using this feature:

  • The stage timer keeps going while the game is paused, so a separate cheat should be enabled to stop the timer.
  • Some of the graphic overlays use will be gray if the game isn't paused beforehand. To fix this, simply pause and then unpause the game.
  • Overlay graphics may be corrupted when entering a new room. To fix this, cycle through each debug until the dialogue viewer is reached, then press 4P Button 3.

DungeonMagicArcRunningDebugT1.png
Tool 1
Displays the floor (cyan) and ceiling (pink) collision points for each object.

DungeonMagicArcRunningDebugT2.png
Tool 2
Displays the floor and ceiling collision boxes for each object. The subroutine to draw these boxes is highly CPU-intensive, and the game will lag or even crash if there are too many objects on screen.

DungeonMagicArcRunningDebugT16.png
Tool 3
Displays the sequence number of each object. Lower-numbered objects are loaded into the map before higher-number objects.

DungeonMagicArcRunningDebugT3.png
Tool 4
Displays the starting points in RAM for each object. The address on top is for the main object, and address on the bottom is for the object's sub-sprites like weapons, shields, etc.

DungeonMagicArcRunningDebugT4.png
Tool 5
Displays unknown data for each object in the room.

DungeonMagicArcRunningDebugT5.png
Tool 6
Displays the state of eight player status bits:

  • ATTACK: Player is performing an attack.
  • SYNCOPE: Player is currently being controlled by another object (For example, being held and thrown by an enemy)
  • NOCONTROL: Unknown
  • ATT_HIT: Player is performing a dash attack and has collided with an object.
  • TOUCH_HIT: Player is colliding with a solid object (Crates, platforms, etc.)
  • NODAMAGE: Player is currently invincible.
  • NOTUCH: Unknown
  • DAMAGE: Player has just taken damage.

DungeonMagicArcRunningDebugT6.png
Tool 7
Displays the state of seven more player status bits:

  • SHADOW: Player's shadow is rendered.
  • INOUT: Unknown
  • NOTCLR: Unknown
  • JUMP: Player is currently in the air.
  • PRTCHG: Unknown
  • OBJSCRHIT: Player is not currently standing on a solid object.
  • SCRHIT: Unknown

DungeonMagicArcRunningDebugT7.png
Tool 8
Displays the hurtboxes of each object in the room.

DungeonMagicArcRunningDebugT8.png
Tool 9
Displays the hitboxes of each object in the room.

Tool 10
Displays both hurtboxes and hitboxes, alternating between the two every frame.

DungeonMagicArcRunningDebugT9.png
Tool 11
Displays the state of eight additional player status bits:

  • JUMPATT: Player is jumping and not attacking.
  • TOUCHCHK: Unknown
  • SCRAVOID: Player is pushing against a wall or screen boundary.
  • PICKUP: Player is holding an object.
  • PICKOK: Player is currently able to pick up an object.
  • HAIKEI: Unknown
  • PRTONETM: Unknown. Always seems to be active.
  • NAGE: Player has just performed a throw.

DungeonMagicArcRunningDebugT10.png
Tool 12
Displays the state of still more player status bits:

  • VINV: Player's vertical rotation bit is set. Doesn't seem to be used.
  • HINV: Player's horizontal rotation bit is set.
  • DISP: Player's sprite is visible. Disabled when the player is flashing while dying.
  • ZADJ: Unknown. Always seems to be active.
  • SD: Unknown. Always seems to be active.
  • NOHIT: Unknown.
  • BUSY: Unknown. Always seems to be active.

DungeonMagicArcRunningDebugT11.png
Tool 13
Displays the X, Y, and Z coordinates of each object in the room.

DungeonMagicArcRunningDebugT12.png
Tool 14
A handy in-game sound test feature.

Controls

  • 3P Left/Right: Selects which sound to play
  • 3P Button 1: Plays the selected sound.

DungeonMagicArcRunningDebugT13.png
Tool 15
Should act like a sprite viewer, but doesn't seem to work - no sprites are displayed.

Controls

  • 3P Left/Right: Adjust style number by 1.
  • 3P Button 1 + 3P Left/Right: Adjusts style number by 10.
  • 3P Button 2 + 3P Left/Right: Adjusts style number by 80.
  • 3P Up/Down: Adjusts palette number by 2.

DungeonMagicArcRunningDebugT14.png DungeonMagicArcRunningDebugT15.png
Tool 16
Lets the user view all of the game's dialogue. Even-numbered entries are JP, and odd-numbered entries are EN. Japanese text will only display correctly on a JP region set.

Controls

  • 3P Left/Right: Adjusts text number by 1.
  • 3P Button 1 + 3P Left/Right: Adjusts text number by 10.
  • 3P Button 2 + 3P Left/Right: Adjusts text number by 80.
  • 3P Up/Down: Adjusts palette number by 2. This doesn't seem have any effect on the dialogue window.
  • 3P Button 1: Displays the selected text by ID.
(All other functions: Original TCRF research)

Unseen Object Names

There are many object labels that the game assigns to objects that are never seen in-game. This is mainly due to two factors:

  • The player has to directly interact with an object for a label to appear.
  • The only label and health bar displayed in boss fights are for the boss.
Object ID Icon Name Context
001
DungeonMagicArcIconAsh.png
  ASH   
Players can't directly interact with or attack other players.
002
DungeonMagicArcIconGren.png
  GREN  
003
DungeonMagicArcIconCisty.png
 CISTY  
004
DungeonMagicArcIconVold.png
  VOLD  
00A
DungeonMagicArcIconGhost02.png
SPECIAL 
  ATTACK
This is the large explosion that makes up the main part of Gren's crash attack.
09D
DungeonMagicArcIconSpider.png
 SPIDER 
The spiders that pop out of the Queen Spider after her abdomen bursts. The icon is otherwise completely unused.
0A5
DungeonMagicArcIconQuestion.png
 WATER  
 ELEMENT
The blue fire that appears in the Queen Spider fight. "ELEMENT" wouldn't be used anyway because the label is coded to only use a single line of text.
0C0
DungeonMagicArcIconQuestion29.png
PRINCESS
The princess that Venom kidnapped. The player can't directly interact with her at any point.
0C3
DungeonMagicArcLesserDemon1C.png
SMOKES2 
These are the smoke sprites generated by the Lesser Demon when he flies off with the princess at the start of the game.
0C6
DungeonMagicArcLesserDemon1C.png
WIRESHOT
This is the giant web that the Queen Spider shoots out when the player is cornered.
0C8
DungeonMagicArcLesserDemon1C.png
WIRECHIP
"WIRESHOT" splits into these once the web hits something.
0C9
DungeonMagicArcIconDarkKnight.png
D.KNIGHT
 WEAPON 
Applies to both Dark Knight's sword and shield.
0CA
DungeonMagicArcIconQuestion29.png
 MAGIC  
 CRYSTAL
Used by both the freed blue crystals in the Northern Ruins and the harmful red crystals in the Lesser Demon fight.
0CC
DungeonMagicArcIconQuestion29.png
 VENOM  
   GHOST
This is the game's term for Venom's after-images.
0CD
DungeonMagicArcIconQuestion29.png
FONTEENE
Used by the passed out Fontaine in the Queen Spider fight. Also used by the dying guards in Fontaine's temple and by the old man in the Northern Ruins.
0CE
DungeonMagicArcIconQuestion29.png
GARGOYLE
The label for the princess-carrying Lesser Demon that appears outside The White Deer.
1C0
DungeonMagicArcIconGhost02.png
SPECIAL 
  ATTACK
This is the object that generates the energy waves from Gren's fully charged attack...
1C1
DungeonMagicArcIconGhost02.png
SPECIAL 
  ATTACK
...and these objects are the left and right waves respectively.
1C2
DungeonMagicArcIconGhost02.png
SPECIAL 
  ATTACK
(Source: Original TCRF research)

Unused Floor Types

Put the codes listed below in MAME's dungeonm.xml (Dungeon Magic) or lightbr.xml (Light Bringer) cheat file to change the southern border of the lava in Round 00, Room 0B with an unused terrain type:

  <cheat desc="Change Border of Burning Floor">
    <parameter>
      <item value="0x04000400">Steep Slope - SE</item>
      <item value="0x05000500">Steep Slope - SW</item>
      <item value="0x06000600">Steepest Slope - SE</item>
      <item value="0x07000700">Steepest Slope - SW</item>
      <item value="0x0A000A00">Freezing Floor</item>
      <item value="0x0B000B00">Spark Floor</item>
    </parameter>
    <script state="run">
      <action>maincpu.md@14768C=param</action>
      <action>maincpu.md@147690=param</action>
      <action>maincpu.md@147694=param</action>
      <action>maincpu.md@147698=param</action>
      <action>maincpu.md@14769C=param</action>
      <action>maincpu.md@1476A0=param</action>
      <action>maincpu.md@1476A4=param</action>
    </script>
    <script state="off">
      <action>maincpu.md@14768C=0x09000900</action>
      <action>maincpu.md@147690=0x09000900</action>
      <action>maincpu.md@147694=0x09000900</action>
      <action>maincpu.md@147698=0x09000900</action>
      <action>maincpu.md@14769C=0x09000900</action>
      <action>maincpu.md@1476A0=0x09000900</action>
      <action>maincpu.md@1476A4=0x09000900</action>
    </script>
  </cheat>

DungeonMagicArcSlopeSmoke.png
Types 0x04 + 0x05: Steep slopes.
Types 0x06 + 0x07: Steepest slopes.
Unused slope types. Steel slopes push the player back down if they stay on them too long without moving, while the steepest slopes only allow players to walk up for a few seconds before they're pushed back down. The SE steep and steepest slopes are used on a few unused maps, but both SW slope types are completely unused.

DungeonMagicArcFreezingFloor.png DungeonMagicArcSparkFloor.png
Type 0x0A: Freezing Floor.
Type 0x0B: Spark Floor.
Unused elemental hazards. Act identically to the used Burning Floor, just with different elements.

There's one more unused floor type that doesn't have a type ID assigned to it in the final game. Use this code (and disable the previous cheat) to change the way Burning Floors work:

  <cheat desc="Change Burning Floor Behavior">
    <script state="run">
      <action>maincpu.mw@0642AE=0x1043</action>
    </script>
    <script state="off">
      <action>maincpu.mw@0642AE=0x1041</action>
    </script>
  </cheat>

DungeonMagicArcPoisonWater.png
This is an early version of the poison water behavior that's used in Fontaine's Temple. Instead of constantly taking poison damage while in contact with the floor, the player is knocked back (taking the same amount of damage as the other hazard floors) and then takes residual poison damage.

(Source: Original TCRF research)

Unused Dialogue

Cacti may speak Japanese, but do they speak it well?
...But does it make sense?
The translations on this page need to be proofread. If you are fluent enough in this language, please make any corrections necessary!

All of the following text can be viewed using the dialogue debugging tool.

Japanese Translated English
はいってないのよ There's nothing in here. Message undefined.

Message IDs: 30, 32, 34, 36 (JP), 31, 33, 35, 37 (EN)
Simple placeholder messages that were never filled in.

DungeonMagicArcIconPrinting.png Now printing!

Message IDs: 63, 65, 67, 69, 6B, 6D, 6F, 71, 73, 75, 77 (EN only)
In the Japanese set, the even-numbered message IDs in this set are used for character endings. The English-language sets uses a different text system for those endings, leaving these IDs unused.

Japanese Translated English
DungeonMagicArcIconPrincess.png「キャー・・・・・・」 DungeonMagicArcIconPrincess.png Kyaa...... DungeonMagicArcIconPrincess.png Help!

Message IDs: C2 (JP), C3 (EN)

In the Northern Ruins, one of the Old Man NPCs says the seemingly non-sequitur line, "It's her!". The above line from the princess was supposed to appear before that, but it was mistakenly excluded, leaving the old guy to come across as a loon.

Japanese Translated English
DungeonMagicArcIconVenom.png 「フハハハハハ・・・・
おまえも,おろかな人間だったか。
 もうおそい!
 魔神は復活する」
DungeonMagicArcIconVenom.png Fwahahahahaha...
You foolish human.
You're too late! The demon
will be resurrected soon.
DungeonMagicArcIconVenom.png Heh heh heh... foolish human.
You're too late! The demon
will be back to life soon.

Message IDs: 1A (JP), 1B (EN)

Dialogue from Venom that would have been placed at some point after the second Dark Knight fight.

(Source: Original TCRF research)

Unused Text

Developer Credit

The following text is at 0x00D040 in the main CPU:

hayalib.s programed by HAYA. mercury power make up !

Haya is Toshiyuki Hayashi (林 俊幸), a Taito programmer who worked on Prime Time Fighter. The message is a reference to Sailor Moon's Sailor Mercury; similar messages are in Grid Seeker: Project Storm Hammer.

Region 0 Text

The region flag at 0x0FFFFF is normally set to one of three values: 01 (Japan), 02 (US), or 03 (World). Setting it to the invalid value 00 will allow the user to use two strings that were probably assigned to one of the other region flags during development.

DungeonMagicArcTitleRegion0.png
First, the copyright string changes to "Taito Osaka R&D 1993."

DungeonMagicArcTestModeRegion0.png
Second, the game name in the test mode changes to "Ninja Kids 2"! This was most likely just added in as a joke , but it does make one think.

(Source: Original TCRF research)

Revisional Differences

2.1 2.2
DungeonMagicArcConfigOld.png DungeonMagicArcConfigNew.png

Early game sets had a "Violence Mode" option in the game configuration menu. This could be set to one of four values:

Normal Hard Change
DungeonMagicArcBloodNormal.png DungeonMagicArcBloodHard.png DungeonMagicArcBloodChange.png
  • Normal: Enemies and players will spurt out three blood sprites on most hits.
  • Hard: Enemies and players spurt out five blood sprites on most hits. These are randomized between a standard blood spray and a darker-colored spray.
  • Change: Same as Normal, but the blood is now bright green.
  • None: Disables blood sprays.

Starting with Version 2.2, this option was removed and blood is instead determined by the region flag: JP and World sets are bloodless, while the US set uses the green "Change" blood spites.

Regional Differences

Title Screen

JP US
Lightbringer arcade w title.png DungeonmagicAC-title.png

The game's name is different depending on the region flag and game version:

  • The JP sets always use the original name, Lightbringer.
  • The US sets rename the game Dungeon Magic; this might have been an attempt to link the game with the otherwise unrelated NES title Dungeon Magic: Sword of the Elements, which Taito also published.
  • The World set uses Dungeon Magic in Version 2.1 and Lightbringer in Version 2.2.

Character Bios

Cacti may speak Japanese, but do they speak it well?
...But does it make sense?
The translations on this page need to be proofread. If you are fluent enough in this language, please make any corrections necessary!
JP INT
DungeonMagicArcBioJP.png DungeonMagicArcBioEN.png

Both Japanese and English-language bios have information that the other set doesn't: The Japanese bios give background information for each character, while the English bios list character ages and races.

Japanese Translated English
剣士  アッシュ

 行方不明となった
騎士団長の父をさが
している熱血漢
 剣技の腕は一流
Swordsman
Ash


A hot-blooded man who is
searching for his missing father,
the commander of the knights.
His swordsmanship is top-notch.
ASH
AGE 21
KNIGHT
HUMAN
戦士  グレン

 武者修業のため,
諸国をさすらう東洋
の戦士
 格闘術の達人
Warrior
Gren


A warrior from the east who is
traveling from country to country
as part of his training.
A master of martial arts.
GREN
AGE 29
FIGHTER
HUMAN
エルフ システィー

 一族の村を襲った
魔物を追った, 旅を
続けている
 弓の名手
Elf
Cisty


In pursuit of the demon who
destroyed her clan's village,
she's continuing her journey.
An expert archer.
CISTY
AGE ?
ARCHER
ELF
魔術士 ヴォルド

 邪神に魂を売った
かつての弟子を倒す
ことが使命
 上位魔法の使い手
Wizard
Vold


He's on a mission to defeat his
former disciple who sold his
soul to an evil god.
A user of high-level magic.
VOLD
AGE 88
WIZARD
HUMAN

Bunny Girl

Lightbringer j bunny-1.png Lightbringer j bunny-2.png

In the Japanese version, you can trigger a secret after defeating the last boss. First, collect all the chests in the room, then walk near the entrance or the right-side of the room (the location can vary) and a bunny will magically appear. The bunny will turn into a bunny girl and she'll drop several pieces of equipment for you.