Dungeon Master: Swoosh Construction Kit - A data extractor




"Oh, wow--that totally rocks!
Thanks a million. You've saved me an incredible amount of work."

Mon Ful Ir, Aug 29 2008

"So I checked out the XSLT converter and my goodness: this is an amazing piece of work!
It's fantastic that you can convert DUNGEON.DAT into XML because this info can be used by anyone now (well, anyone who knows how to use XML files).
Excellent work!"

Gambit, Feb 13 2008

"Greatstone's work looks interesting."
Paul Stevens, Feb 14, 2008

i'm gathering info enough to render complete dungeon viewport (DM snes style) in some ways: (i) using sck (swoosh construction kit) to extract viewport information. it includes decoder for "558 item", very excellent!
Kentaro, Mar 11 2007


Data extraction methodology with the sck tool
Goal

The sck tool allows to extract images, palettes, sounds, texts, dungeon maps, animations, savegames from the Dungeon Master games, including Chaos Strikes Back and Dungeon Master II.

It can also play FTL animations.

Inputs

The sck inputs are:

  • the file to decode (to be provided by the user)
  • the signature database (the last version is included in the sck jar archive file)
  • the files descriptions database (the last version is included in the sck jar archive file)

Outputs

The sck outputs are:

  • if necessary, a xml file describing the different parts of the source file
  • each single data in a well-known formats (images as bmp, sounds as wav, texts as txt, palettes as pal, dungeons as xml, other as raw data)

Advantages

Based on these xml files and all the bmp, wav, txt, etc., viewing, reading, converting DM data is easy:

  • no more compression and decryption algorithm to implement
  • no need to know where is located each single data in files provided by FTL for a specific games on a specific platform.
  • no need to implement each algorithm necessary to read these single data.
  • the results are now common to all platforms, languages, versions, packages, games.
  • the extraction uses "mapfile" descriptions (the files descriptions database) and can be easily customized for a specific new game (custom dungeon?).
The sck outputs can also be converted:
  • xml for graphics.dat can become a html page (images as png, sounds as mp3, texts as txt, palettes as png)
  • xml for dungeon.dat can become html pages (graphical web display for each map)
Such post-conversions can be done using the sckExtraPack tool, an additional friend for the sck. As xml is a common language easily translated using xsl language, other developers can also write specific xsl transformations to customize the result. All the pages of the "swoosh construction kit" website, displaying the extracted data themselves, have been generated using the results of the sck and the sckExtraPack tool.

Games, files and formats supported by the sck

The important thing here is to remember that nearly every DM games are differents, depending on the versions, languages, machines, etc.
  • different files,
  • more or less files,
  • differents file formats,
  • different items format inside files,
  • more or less items inside files,
  • different compression algorithms,
  • same information in different locations inside files,
So, supporting more than a few DM games is.. quite interesting :)
The following list is only the already tested games.

Then, there is the full list of supported files and the full list of supported items formats embedded in some of these files.

Games list (tested)

NamePlatformVersionLanguageOrigin
Chaos Strikes Back Amigawiki 3.1 [Betrayal] en cracked
Chaos Strikes Back Amigawiki 3.1 [Endless Piracy]en fr gecracked
Chaos Strikes Back Amigawiki 3.3 en fr ge
Chaos Strikes Back Amigawiki 3.3 [HD Meynaf] en fr gecracked
Chaos Strikes Back Amigawiki 3.5 en original
Chaos Strikes Back Utility Amigawiki fr
Chaos Strikes Back Utility Amigawiki ge
Chaos Strikes Back Utility Amigawiki R1 en
Chaos Strikes Back Utility Amigawiki R2 en
Chaos Strikes Back Utility Amigawiki R3 en
Chaos Strikes Back Atariwiki 2.0 [Replicants] en cracked
Chaos Strikes Back Atariwiki 2.0 [HD] en
Chaos Strikes Back Atariwiki 2.0 [Pasti] en original
Chaos Strikes Back Atariwiki 2.0 [AD192] en cracked
Chaos Strikes Back Atariwiki 2.1
Chaos Strikes Back Atariwiki 2.1 [Pasti] en original
Chaos Strikes Back X68000wiki jp
Chaos Strikes Back X68000wiki 3.1 jp
Chaos Strikes Back FM-Townswiki en
Chaos Strikes Back PC-98wiki 3.1 jp
Dungeon Master Amigawiki 2.0 en
Dungeon Master Amigawiki 2.0 [HD] en
Dungeon Master Amigawiki 2.0 [Kontrasoft] en
Dungeon Master Amigawiki 2.0 fr original
Dungeon Master Amigawiki 2.1 en
Dungeon Master Amigawiki 2.2 en
Dungeon Master Amigawiki 2.2 ge
Dungeon Master Amigawiki 3.6 en fr ge
Dungeon Master Amigawiki 3.6 [CAPS] en fr georiginal
Dungeon Master Atariwiki teaser demo en
Dungeon Master Atariwiki [42crew] en
Dungeon Master Atariwiki [AD097] en cracked broken
Dungeon Master Atariwiki 1.0 [Pasti] en original
Dungeon Master Atariwiki 1.1 [Ford perfect] en cracked
Dungeon Master Atariwiki 1.1 [HD] en
Dungeon Master Atariwiki 1.2 en
Dungeon Master Atariwiki 1.2 [Pasti] en original
Dungeon Master Atariwiki 1.2 [Pasti] ge original
Dungeon Master Atariwiki fr
Dungeon Master Atariwiki [Pasti] fr original
Dungeon Master Apple II gswiki en
Dungeon Master PCwiki sp
Dungeon Master PCwiki 3.4
Dungeon Master SNESwiki 1.0 [NTSC] en
Dungeon Master SNESwiki 1.0 [PAL] en
Dungeon Master SNESwiki 1.0 jp
Dungeon Master SNESwiki 1.1 jp
Dungeon Master FM-Townswiki 2.0 en jp
Dungeon Master PC-98wiki 2.0 jp
Dungeon Master X68000wiki 3.0 jp
Dungeon Master 2 Amigawiki 1.0 [HD CAPS] en fr ge
Dungeon Master 2 FM-Townswiki 1.0 jp
Dungeon Master 2 IBM PS/V
Dungeon Master 2 Macintoshwiki demo en
Dungeon Master 2 Macintoshwiki 1.0 en
Dungeon Master 2 Macintoshwiki 1.0 jp
Dungeon Master 2 PC-9801wiki 1.0 jp
Dungeon Master 2 PC-9821wiki 1.0 jp
Dungeon Master 2 PCwiki 0.9 en
Dungeon Master 2 PCwiki demo en
Dungeon Master 2 PCwiki 1.0 en
Dungeon Master 2 PCwiki 1.0 fr
Dungeon Master 2 PCwiki 1.0 ge
Dungeon Master 2 SegaCDwiki 1.0 en
Dungeon Master 2 MegaCDwiki 1.0 jp
Custom Dungeon - 3D2D1D CSBWin -enPaul Stevens
Custom Dungeon - 3D Maze CSBWin -enPaul Stevens
Custom Dungeon - 5D Maze CSBWin -enPaul Stevens
Custom Dungeon - Angel's Egg CSBWin - enDes
Custom Dungeon - Beastmaster PCwiki 05-AUG-2002 en RobikZ
Custom Dungeon - Bennis dungeon I PCwiki 23-DEC-2000 en sucinum
Custom Dungeon - Bennis dungeon II PCwiki 26-JAN-2001 en sucinum
Custom Dungeon - Chaos Strikes Back Prison PCwiki 25-OCT-2001 en Sphenx
Custom Dungeon - Conan and the Mountain of Tor Al'Kiir PCwiki 08-AUG-1999enDaniel Durgan
Custom Dungeon - Conflux PCwiki 1.11 en Zyx
Custom Dungeon - Conflux 2 CSBWin j en Zyx
Custom Dungeon - Conflux 3 CSBWin BugFix3 en Zyx
Custom Dungeon - Conflux 3 CSBWin BugFix4 en Zyx
Custom Dungeon - Conflux 3 CSBWin BugFix5 en Zyx
Custom Dungeon - Conflux 3 CSBWin BugFix6 en Zyx
Custom Dungeon - CSB! PCwiki 18-APR-1999enGeorge Gilbert
Custom Dungeon - Diablo dungeon PCwiki 24-AUG-2002enRobikZ
Custom Dungeon - DM Alternate PCwiki 1.051 enBeowuuf
Custom Dungeon - Double hard dungeon for CSB Amigawiki -enSimon
Custom Dungeon - Dungeon Master 1.5 PCwiki - enSousou
Custom Dungeon - Dungeon Master 2 Legend of Skullkeep PCwiki 27-DEC-1999enToni Ylisirniö
Custom Dungeon - Dungeon Master Plus PCwiki - enIan Clark
Custom Dungeon - Dust and blood PCwiki 13-APR-2002 en Alpha
Custom Dungeon - Enfers PCwiki 07-MAR-2001 en Zyx
Custom Dungeon - First test dungeon PCwiki 18-JUL-1999enDaniel Durgan
Custom Dungeon - Halk gonzo barbarian PCwiki - enSphenx
Custom Dungeon - Ian test 2 PCwiki -enIan Clark
Custom Dungeon - Imprisoned Again PCwiki 1.1 en sucinum
Custom Dungeon - Imprisoned Again PCwiki 1.2 en sucinum
Custom Dungeon - Imprisoned Again PCwiki 1.3 en sucinum
Custom Dungeon - Imprisoned Again CSBWin 1.3ensucinum
Custom Dungeon - Imprisoned Again PCwiki 1.4 en sucinum
Custom Dungeon - Imprisoned Again CSBWin 1.5ensucinum
Custom Dungeon - Imprisoned Again CSBWin 1.5aensucinum
Custom Dungeon - Kid dungeon Amigawiki 12-MAY-2003 en Gambit
Custom Dungeon - Kid dungeon PCwiki 12-MAY-2003 en Gambit
Custom Dungeon - Kid dungeon PCwiki 11-AUG-2000 en Ian Clark
Custom Dungeon - Mazarbul CSBWin -enZyx
Custom Dungeon - Mildew and Vinegar PCwiki 1.15 en Zyx
Custom Dungeon - Ornate test dungeon PCwiki - enSphenx
Custom Dungeon - Parlous dungeon PCwiki 1 enChristopher
Custom Dungeon - Poison PCwiki 1.7enL.Bridge
Custom Dungeon - Return of Chaos PCwiki 27-AUG-2000 en Toni Ylisirniö
Custom Dungeon - Shadow Shepherd CSBWin R1enTyGuy6
Custom Dungeon - Small demo dungeon PCwiki 09-SEP-2002 en Sphenx
Custom Dungeon - Small demo dungeon CSBWin 09-SEP-2002 en Sphenx
Custom Dungeon - Team dungeon PCwiki alpha en Collective work
Custom Dungeon - Teleporter puzzle CSBWin -enPaul Stevens
Custom Dungeon - The Black Flame PCwiki 28-MAR-2003 en PaulH
Custom Dungeon - The Black Flame CSBWin 25-MAY-2005 en PaulH
Custom Dungeon - The Core PCwiki - enToni Ylisirniö
Custom Dungeon - The grave of King Millias PCwiki 1.1 enToni Ylisirniö
Custom Dungeon - The lost scrolls PCwiki 0.11 enL.Bridge
Custom Dungeon - The lost scrolls PCwiki 0.12 enL.Bridge
Custom Dungeon - The Prison of Dragoth PCwiki 1.3 en sucinum
Custom Dungeon - The Prison of Dragoth CSBWin 1.4ensucinum
Custom Dungeon - The Prisoner PCwiki 26-JAN-2003 en Alpha
Custom Dungeon - The Tomb of King Hissssa PCwiki 05-MAR-2003 en Florian
Custom Dungeon - The Tomb of the Firestaff PCwiki 12-SEP-2002 en PaulH
Custom Dungeon - The Tower of Chaos PCwiki 20-MAR-2004 en PaulH
Custom Dungeon - The Tower of Chaos CSBWin 3.x en PaulH
Custom Dungeon - Theron's Quest Conversion PCwiki 08-AUG-2004 en Sphenx
Custom Dungeon - Theron's Quest Conversion CSBWin 08-AUG-2004 en Sphenx
Custom Dungeon - Traps and Monsters CSBWin - enIan Clark
Custom Dungeon - Venture deeper in the Prison PCwiki 07-JAN-2002en Sphenx
Custom Dungeon - Well of Fortune (Dagoth Crypt) CSBWin 1.20 enZed5Duke
Custom Dungeon - Well of Fortune (Survival Art) CSBWin 2.00 enZed5Duke
Other - R-Type III GBAwiki - - -

Supported file formats list

  • FTL files (*.ftl) and more specifically anim, appa, appb, cnfg, lang, swsh, kaos, cedt,
  • champions portraits (*.cmp),
  • dungeon (dungeon?.dat) from original games and CSBWin clone,
  • savegame (dmsave.dat, csbgame.dat) from original games and CSBWin clone,
  • CSB first dungeon (mini?.dat),
  • multimedia archives (graphics.dat, graphics.game, csbgraphics.dat),
  • oracle hints (hcsb.dat),
  • single media (*.amg) like naked, dragon, explos1, magexplo, swipe, tele2,
  • animation script (animate.dat),
  • animation (anim.dat, stry.dat, titl.dat, enda.dat, swsh.dat, *.anm, etc.),
  • single X68Kwiki media (*.sng) like enter,
  • single PC media (song.dat),
  • logo (swoosh),
  • SNESwiki rom (*.smc).
Supported items formats list

CategoryNameFormatComment
Image IMG1 4bpp, linear, 16 colors, big endian
Image IMG2 4bpp, linear, 16 colors, little endian
Image IMG3 4bpp, linear, 16 colors, little endian
Image IMG4 4bpp, linear, 16 colors, big endian
Image IMG5 4bpp, planar, 16 colorsswoosh amigawiki 2.0
Image IMG6 -todo-DM2
Image IMG7 -todo-DM2
Image IMG8 -todo-DM2
Image IMG9 -todo-DM2
Image IMG10 -todo-DM2
Image IMG11 -todo-DM2
Image IMG12 -todo-DM2
Image IMG13 -todo-DM2
Image IMG14 -todo-DM2
Image IMGEHB Extra HalfBrite, 64 colors from a 32 colors palette Amigawiki , Black Crypt
Image ROMIMG 4bpp, linearCan use compression IMG1/SNES2/none
Image ROMIMG1 4bpp, linear, tile 8*8, reverse order or notUsed in DM/CSB and GBAwiki games
Image ROMIMG2 8bpp, linear, tile 8*8
Image ROMIMG3 4bpp, planar, tile 8*8, composite (2x2bpp)
Image ROMIMG4 2bpp, planar, tile 8*8
Image ROMIMG5 4bpp, planar, tile 16*16, composite (2x2bpp)
Image ROMIMG6 1bpp, linear, tile 8*8
Image ROMIMGH5 ROMIMG with headerheader on 5 bytes with height, width
Image BMP Strict BMPCSBWin Portait and ViewportOverlay
Font FNT1 1bpp, linear
Sound SND1 PCMwiki , 4 bits, mono, unsigned, RLEwiki Atariwiki
Sound SND2 PCMwiki , 8 bits, mono, signed Amigawiki
Sound SND2B SND2 with periodswoosh
Sound SND3 PCMwiki , 8 bits, mono, unsigned FM-Townswiki , PC-98wiki
Sound SND4 ADPCMwiki , 4 bits, mono X68000wiki
Sound SND5 PCMwiki , 8 bits, mono, signed, big endianDM2/ Amigawiki
Sound SND6 PCMwiki , 8 bits, mono, signed, little endianDM2/PC
Sound SND7 PCMwiki , 8 bits, mono, signedDM2/ SegaCDwiki
Sound SND8 8 bits, monoPC/song
Sound SND9 -tdb
Sound SND10 SPC700wiki SNESwiki
Sound SNDS -tdb SegaCDwiki
Sound SEQ1 sequence of music parts
Sound SEQ2 sequence of music parts
Sound MUS1 MIDIwiki
Sound MUS2 HMP
PalettePAL generic item
PaletteP3B1 -todo-
PaletteP4B1 Color index [0-7], 16 colors, 4 bits for RGBAwiki
PaletteP4B2 Color index [0-15], 16 colors, 4 bits for RGBAwiki
PaletteP5B1 Color index [0-31], 16 colors, 5 bits for R G B SNESwiki
PaletteP5B2 Color index [0-31], 256 colors (16 palettes of 16 colors), 5 bits for R G B SNESwiki
PaletteP5B3 Color index [0-31], 512 colors, 5 bits for R G BCSBWin Overlay Palette
PaletteP8B1 16 colors, with max color index = 255, using 8 bits for R, G, B and AFTL files
PaletteP8B2 16 colors, with max color index = 255, using 8 bits for B, G, R and A
PaletteP8B3 -todo-DM2
PalettePALSEL List of palette indexes SNESwiki
Text TXT1 7 bits per character, end with bit 7 = 1
Text TXT2 8 bits per character, end with byte 0x00
Text TXT3 header with following text offsets, 8 bits per character
TilemapTILEMAP1 1 byte per tile
TilemapTILEMAP1D 1 byte per character (each character on 2 tiles)
TilemapTILEMAP2 2 bytes per tile (native SNESwiki tilemap format)
TilemapTILEMAP2H header of 12 bytes with x y width height, 2 bytes per tile
TilemapTILEMAP2H8 header of 8 bytes with width height, 2 bytes per tile
TilemapTILEMAP2JP 1 byte per character (2 tiles for higagana/katakana, 4 bytes for kanjis)
TilemapSPRITEMAP 2 bytes per tile with x y origins for each
TilemapSPRITEMAP2 1 byte per tile with x y origins for each
Raw RAW1 Unknown data
Raw RAW2 Empty data
Raw NULL no data
Raw RAWINSTR Code
Raw RAWINSTR_AMIGA Amigawiki code
Others OFFSET3 3 bytes per offset
Others OFFSET4 4 bytes per offset
Others PALAN Palette modifications to build an animation with one image, found in the swoosh file
Others ROMGH graphics.dat header equivalent SNESwiki
Others ROMDUNGEON dungeon.dat equivalent SNESwiki
Others ROMCHAMPION champion statistics SNESwiki
Others SNES558 item 558 equivalent SNESwiki
Others ECI Embedded Cartridge Information SNESwiki
Others STAT Champion statisticsDM2
Others LST1 Items listDM2
Others LST2 Creatures listDM2
Others CMD1 CommandDM2
Others ICMP Image compositionDM2
CSBWin CW_BGDMASK Atari bit-plan, background maskCSBWin
CSBWin CW_BGDGRAPH Atari bit-plan, background graphicCSBWin
CSBWin CW_SND WAV sound encoded using DPCM, even headerCSBWin
CSBWin CW_AMG Atari bit-plan, AlternateMonsterGraphicsCSBWin
CSBWin CW_WALLDEC Extended wall decorationCSBWin
CSBWin CW_BGDDECFLOORBackground floor decorationCSBWin
CSBWin CW_BGDDECWALL Background wall decorationCSBWin