Skip to content

Nexus File Formats

Daniel Nylander edited this page Aug 1, 2026 · 1 revision

Dungeon Master Nexus File Formats

Dungeon Master Nexus is a Sega Saturn title. All multi-byte values are big-endian (SH-2 native order) unless noted otherwise.

Disc Layout

The game ships on a single CD-ROM. Track 1 is the data track containing the Saturn executable and all game files. Tracks 2-9 are Red Book audio tracks used as level music. The data track is an ISO 9660 filesystem.

DM.BIN — Main Executable

Field Value
Size ~555 KB
CPU Hitachi SH-2 (big-endian, 32-bit RISC)
Load address 0x06004000 (Saturn work RAM high)

The main SH-2 executable contains the game engine, resource table pointers, embedded string tables, and the sound library (sndlib2.c).

Key embedded data regions (offsets within DM.BIN):

Offset Content
0x012880 FONT resource pointer table (3 entries to work RAM)
0x0294C0 TEXT + TABL resource pointer table
0x02AFF8 PLRD resource pointer table (champion data)
0x038F34 SNDLEV01-SNDLEV15 filename table (12 bytes each)
0x039100 SDDRVS.TSK filename string
0x03910C sndlib2.c source reference
0x0373CC FONT256.S2D and STABG.BIN filename strings

VDP Register References

DM.BIN contains direct SH-2 address references to Saturn hardware:

Address range Hardware References
0x25C00000-0x25C7FFFF VDP1 VRAM (command tables, textures) ~238
0x25D00000-0x25D00010 VDP1 registers (TVMR, FBCR, PTMR, EWDR, EWLR, EWRR, MODR) 14
0x25E00000-0x25EFFFFF VDP2 VRAM (tile maps, pattern data) variable
0x25F00000-0x25F00106 VDP2 registers (TVMD, CHCTLA, MPOFN, CLOFEN, COxR/G/B) 10
0x25F80000-0x25FBFFFF VDP2 CRAM (color RAM / palettes) ~45

The 0x25xxxxxx prefix is the Saturn cache-through mirror of 0x05xxxxxx.

0DMSTRT.BIN — Startup Executable

Field Value
Size ~39 KB
CPU SH-2

Secondary SH-2 executable loaded during initial boot. Contains early initialization,ings logo display, and handoff to DM.BIN.

LEVxx.DGN — Dungeon Levels

Field Value
Files LEV00.DGN through LEV15.DGN (16 levels)
Size 147-321 KB each

Each DGN file contains the complete level geometry and game state.

DGN Internal Structure

Structure Content
Structure1A Wall/alcove descriptors, bound to grid cells
Structure1B 64x64 typed cell grid: collision, floor/ceiling/wall materials, animation IDs, height data
Structure1F Direct-coordinate records: items, floor decoration, floor sensors
Structure2 Animated texture descriptors with payload/palette references
Structure3 Texture selector tables for wall/floor/ceiling materials

Structure1B Cell Format

Each cell occupies a fixed number of bytes and encodes:

Field Description
Collision reference Walkability and blocking state
Wall material Index into material texture table
Floor material Index into floor texture table
Floor animation ID Animation descriptor reference
Ceiling material Index into ceiling texture table
Structure1A reference Link to wall/alcove descriptor
Post-grid 0x30 reference Extended geometry data

RLOWFIX.BIN — Resource Archive

Field Value
Size 72,332 bytes
Format RES* tagged resource archive

RES* Archive Format

Offset  Size  Description
0x00    4     Magic: "RES*"
0x04    4     Total file size (big-endian)
0x08    2     Entry count (big-endian)
0x0A    2     Reserved (zero)
0x0C    N*12  Resource directory

Each directory entry is 12 bytes:

Offset  Size  Description
0x00    4     Resource tag (ASCII: "FONT", "TEXT", "PALT", "PLRD", "CRET", "DGT2", "TABL", "LAST")
0x04    4     Resource index (big-endian)
0x08    4     Offset within file (big-endian)

RLOWFIX.BIN Resource Directory

Index Tag Sub-index Offset Description
0 FONT 0 0x000C0 Half-width font (291 glyphs, 6x12, 2bpp)
1 FONT 1 0x01C2C Full-width font (250 glyphs, 12x12, 2bpp)
2 FONT 2 0x03F78 Kanji font (710 glyphs, 12x12, 2bpp)
3 TEXT 0 0x0A374 Text strings bank 0 (449 strings)
4 TEXT 1 0x0C42C Text strings bank 1 (40 strings)
5 TEXT 2 0x0C61C Text strings bank 2 (101 strings)
6 TEXT 3 0x0E480 Text strings bank 3 (25 strings)
7 TEXT 4 0x0E824 Text strings bank 4 (15 strings, menu options)
8 PALT 0 0x0EBA4 Palette data
9 PLRD 0 0x0EDAC Champion/player record data
10 CRET 0 0x0F2B4 Creature data bank 0
11 CRET 1 0x0FF1C Creature data bank 1
12 DGT2 0 0x10B84 DGN type 2 data
13 TABL 0 0x118D4 Character encoding table (216 entries)
14 LAST 0 0x00000 End-of-directory sentinel

FONT Resource Format (FONT012)

Each FONT resource within the RES* archive has a nested header:

Offset  Size  Description
0x00    4     Tag: "FONT"
0x04    4     Resource index (big-endian)
0x08    4     Tag: "FONT" (repeated)
0x0C    4     Data size in bytes (big-endian)
0x10    2     Version/flags
0x12    2     Bits per pixel (0x0002 = 2bpp)
0x14    2     Glyph count (big-endian)
0x16    2     Glyph width in pixels
0x18    2     Glyph height in pixels
0x1A    2     Reserved
0x1C    8     Palette (4 entries, Saturn 15-bit BGR555)
0x24    ...   Glyph bitmap data (2bpp packed)

FONT012 Summary

Font Glyphs Width Height BPP Purpose
FONT0 291 (0x123) 6 12 2 Half-width ASCII/katakana
FONT1 250 (0x0FA) 12 12 2 Full-width hiragana/symbols
FONT2 710 (0x2C6) 12 12 2 Kanji

2bpp Palette

The embedded 4-color palette uses Saturn 15-bit color (MSB + 5-5-5 BGR):

Index Value Color
0 0xFFFF White (B=31, G=31, R=31)
1 0xDEF7 Light gray (B=23, G=23, R=23)
2 0xB9CE Dark gray (B=14, G=14, R=14)
3 0x8000 Black (B=0, G=0, R=0)

TEXT Resource Format

Offset  Size    Description
0x00    4       Tag: "TEXT"
0x04    4       Resource index (big-endian)
0x08    2       String count (big-endian)
0x0A    N*2     String offset table (each offset relative to byte 0x08)
0x0A+N*2  ...   String data (TABL-encoded)

Strings use a custom encoding decoded through the TABL lookup table. Characters in the 0xE0-0xE4 range are multi-byte TABL references that index into the 216-entry TABL character map for Shift-JIS output.

TABL Resource Format

Offset  Size    Description
0x00    4       Tag: "TABL"
0x04    4       Resource index (big-endian)
0x08    432     216 entries x 2 bytes each

Each 2-byte entry maps a TABL index to a character code. If the first byte is 0x00, the second byte alone is the code; otherwise both bytes form a 16-bit Shift-JIS character code.

FONT256.S2D — Champion/Spell/UI Font

Field Value
Size 25,012 bytes
Format SEGA SATURN SCR

SCR Format

Offset  Size  Description
0x00    16    Magic: "SEGA SATURN SCR\0"
0x10    4     Character count (big-endian, low 16 bits: 256)
0x14    4     Header descriptor (0x12 observed)
0x18    8     Reserved
0x20    256   Section table: 32 entries x 8 bytes (offset BE u32, size BE u32)
0x120   ...   Section data

Sections 0, 2, 4, 6 are populated; section indices 1, 3, 5, 7-27 are reserved (zero). Entries 28-31 contain non-zero values that fail bounds checks and are skipped by the parser.

STABG.BIN — String Table

Field Value
Size 53,744 bytes

Game string table used for item names, descriptions, and UI text.

ITEM.IBS — Item Declaration Bank

Field Value
Size 100,352 bytes
Items 243 entries
Record size 40 bytes per item
Data offset 0x800 (first 2048 bytes are header)

IBS Record Format (40 bytes per item)

Offset Size Description
0 1 Item index (verification)
1 1 Item category (0=Weapon, 1=Armor, 2=Accessory, 3=Potion, 4=Scroll, 5=Container, ...)
2 1 Carry locations bitmask
3 1 IBS flags
4-7 4 Raw data (purpose under investigation)
8 1 Weight
9-15 7 Raw data (purpose under investigation)
16-18 3 Action IDs (3 action slots per item)
19 1 Raw data
20-23 4 Inventory image reference
24-27 4 Floor image reference
28-31 4 Name string reference
32-35 4 Description string reference
36-37 2 Attribute word
38-39 2 Action string reference

MNS Files — Monster/Sprite Data

Files Size range
SN_FLOOR.MNS, SN_WALL.MNS 43-49 KB
*.MNS (creatures) 15-88 KB

Monster sprite banks containing TEXT sections and BGR555 pixel data. Each MNS file is a self-contained sprite archive for one creature type or static material set.

Creature MNS Files

File Creature Size
ANTMAN.MNS Ant Man 53,768
BIGWORM.MNS Big Worm 53,784
BORKETH.MNS Borketh 67,644
CHAOS.MNS Chaos / Lord Chaos 88,572
DRA_ZOM.MNS Dragon Zombie 83,508
D_GOLD.MNS Gold Dragon 44,000
D_RED.MNS Red Dragon 55,276
D_SILVER.MNS Silver Dragon 41,952
GHOST.MNS Ghost 48,840
GIGGLER.MNS Giggler 43,484
GOLEM.MNS Golem 48,140
GRN_DRA.MNS Green Dragon 56,976
H_HOUND.MNS Hell Hound 46,364
LAS_MON.MNS Last Monster 76,232
LORD_RIB.MNS Lord Order 19,500
MINI_DRA.MNS Mini Dragon 35,612
MUMMY.MNS Mummy 55,420
OBAKE.MNS Ghost (alt) 15,280
OITU.MNS Oitu 46,524
RAT.MNS Rat 57,496
RED_DRA.MNS Red Dragon (alt) 62,256
ROCKPILE.MNS Rock Pile 57,680
SCORPION.MNS Scorpion 53,052
SCREAMER.MNS Screamer 29,668
S_SHIELD.MNS Animated Shield 31,164
S_SWORD.MNS Animated Sword 49,716
VEXIRK.MNS Vexirk 51,640
WORM.MNS Worm 55,832

MENU.BPK — Menu Graphics Archive

Field Value
Size 89,060 bytes
Entries 162 PRS3-compressed entries

BPK is a packed archive of PRS3-compressed bitmap entries used for menu graphics, UI elements, and startup screens.

PRS3 Compression

PRS3 is an LZ-style compression scheme. Each BPK entry has a header describing mode, dimensions, and packed size. The decompressor reads payload bytes through an indirect register, using a bit-buffer refill pattern with mask 0x0000FF00 for control state.

Decompression details (opcode grammar, literal/back-reference layout, output handling) require Saturn executable evidence and are not yet fully proven.

SMAPxx.BIN — Sprite Map Data

Files SMAP00.BIN through SMAP15.BIN
Size 17-30 KB each

Per-level sprite map data. One file per dungeon level, containing sprite placement and animation state for the level's creatures and objects.

SLEVxx.BIN — Level State Data

Files SLEV00.BIN through SLEV15.BIN
Size 2-11 KB each

Per-level saved state data, tracking dynamic game state (doors opened, items moved, creatures defeated) for each level.

SNDLEVxx.SAL / SNDLEVxx.MAP — Sound Banks

SAL files SNDLEV00.SAL through SNDLEV15.SAL
SAL size 297-469 KB each
MAP files SNDLEV00.MAP through SNDLEV15.MAP
MAP size 66-90 bytes each

SAL Format

SAL files are sound sample archives. Each begins with the container preamble dsp01.EX (8 bytes). The archive contains PCM tone banks with a directory structure described by the companion MAP file.

MAP Format

MAP files contain the tone-bank directory grammar for the corresponding SAL file:

Offset  Size  Description
0x00    2     Header marker
0x02    2     Record count
0x04    N*R   Record table

Each MAP record maps a sound event selector to a tone bank entry within the SAL archive, providing offset, size, sample rate, and loop point information.

SDDRVS.TSK — Saturn Sound Driver

Field Value
Size 26,610 bytes

The Saturn sound driver task, loaded into the sound CPU (MC68EC000) RAM. The main SH-2 CPU communicates with it through the SCSP (Saturn Custom Sound Processor) register interface. The driver implements PCM playback via a submitPCMP call interface, referenced in the embedded sndlib2.c source strings.

Error messages embedded in DM.BIN for the sound system:

  • "playing %s" — SAL file playback log
  • "insufficient mem %d" — memory allocation failure
  • "cannot open sound file %s" — SAL file not found
  • "BUFSIZE should be in boundary of SECTORSIZE" — buffer alignment error
  • "pcmtype = %x" — PCM format diagnostic

FACE.BIN — Character Face Graphics

Field Value
Size 45,104 bytes

Champion portrait/face graphics data.

RHIFIX.BIN — High-Priority Resource Fix

Field Value
Size 5,448 bytes

Small resource fixup file loaded early in initialization.

TITLE.BIN / TITLE.CG — Title Screen

File Size
TITLE.BIN 112,216 bytes
TITLE.CG 167,968 bytes

Title screen graphics. TITLE.CG contains the full-color title artwork; TITLE.BIN contains the title screen layout/metadata.

TM.BIN — Tile Map Data

Field Value
Size 160,044 bytes

Tile map data used by VDP2 for background layer composition.

NBG3.BIN — VDP2 Background Layer

Field Value
Size 7,168 bytes

Normal scroll (background) plane 3 data for VDP2 composition.

LOGOBG.DG2 — Logo Background

Field Value
Size 72,198 bytes

Logo background graphic in DG2 format.

POTEFT.BIN / STONE.BIN / DEATH.BIN — Effect Graphics

File Size Purpose
POTEFT.BIN 3,256 Potion effect graphics
STONE.BIN 4,400 Stone/petrification effect
DEATH.BIN 4,400 Death animation graphics

SWTCHR.BIN — Switch/Sensor Graphics

Field Value
Size 38,640 bytes

Switch, button, and sensor visual state graphics.

WARNING.BIN / GAMEOVER.BIN — Screen Graphics

File Size Purpose
WARNING.BIN 101,256 Warning/disclaimer screen
GAMEOVER.BIN 103,024 Game over screen

DMN_*.TXT — Metadata Text Files

File Size Purpose
DMN_ABS.TXT 182 Abstract/description
DMN_BIB.TXT 91 Bibliography/credits
DMN_CPY.TXT 97 Copyright notice

Plain ASCII text files with game metadata for the Saturn disc browser.

DMVx.AVI — FMV Cutscenes

File Size Purpose
DMV0.AVI ~35.9 MB Opening cinematic
DMV1.AVI ~29.2 MB Mid-game cinematic
DMV2.AVI ~41.0 MB Ending cinematic

Saturn Cinepak AVI video files for full-motion video cutscenes.

CD Audio Tracks

Track Levels Purpose
Track 2 0-1 Dungeon music (levels 0-1)
Track 3 2-3 Dungeon music (levels 2-3)
Track 4 4-5 Dungeon music (levels 4-5)
Track 5 6-7 Dungeon music (levels 6-7)
Track 6 8-9 Dungeon music (levels 8-9)
Track 7 10-11 Dungeon music (levels 10-11)
Track 8 12-13 Dungeon music (levels 12-13)
Track 9 14-15 Dungeon music (levels 14-15)

Saturn Hardware Context

Memory Map

Address Size Description
0x05C00000 512 KB VDP1 VRAM (sprite command tables, texture data)
0x05D00000 32 B VDP1 registers
0x05E00000 512 KB VDP2 VRAM (tile maps, pattern data)
0x05F00000 304 B VDP2 registers
0x05F80000 256 KB VDP2 CRAM (color RAM / palettes)
0x06000000 1 MB Work RAM high (executable, game data)
0x25000000+ Cache-through mirror of above

Color Format

Saturn uses 15-bit BGR555 color with an MSB transparency/priority bit:

Bit:  15  14-10  9-5  4-0
       M  BBBBB GGGGG RRRRR

Where M is the MSB (priority/transparency depending on mode).

Clone this wiki locally