We just moved to a different server. Please be patient until all files and pages are restored and the MediaWiki software has been updated. Thank you

Realms of Arkania: Blade of Destiny

From REWiki
Jump to: navigation, search


Realms of Arkania: Blade of Destiny (Das Schwarze Auge: Die Schicksalsklinge) uses similar file formats as it's succesors (Realms of Arkania: Star Trail/Realms of Arkania: Shadows over Riva). If these file formats would be documented it would be rather easy to do a proof of concept engine/game as the underlying rpg system is a cut down version of the third edition of the German Das Schwarze Auge.

See also the documentation on the FreeDSA Project Page (German language)

Contents

Character encoding

All text is stored as uppercase C style strings (\0 byte indecates end of string) with some non-standard encoding:

Char
value
Ingame
60 " (begining quote)
62 " (ending quote)
64 newline (think '\n')
142 Ä
153 Ö
154 Ü
240 end red text (think HTML: "</font>")
241 start red text (think HTML: "<font color="red">")

File formats

.ADV Miles Sound System: Digital (Sampled) Sound Driver
.CHR Player-Character (same as .NPC)
.DAT Various (2 different container formats, the city 2.5d level layout, etc)
.DDT Unknown
.DNG Dungeon 2.5d level layout
.DTX Ingame (dungeon) text (same as .LXT)
.GAM Savegame
.NPC Non-Player-Character (same as .CHR)
.NVF Unknown
.LST Unknown
.LTX Ingame text (same as .DTX)
.TAB Unknown
.TLK Ingame dialog
.VOC Creative Labs Vocal file
.XMI Miles Sound System: Extended MIDI file
SAMPLE.AD Miles Sound System: Global Timbre Library

BLADE.DAT/SCHICK.DAT

The main resource file BLADE.DAT/SCHICK.DAT starts with 308 file offsets (integer, 4 bytes). The filename-list is stored within the main executable, BLADEM.EXE (v3.09, offset=113419) or SCHICKM.EXE (v3.02 offset=116007):

std::string filenames[307] =
{
	"PLAYM_UK",
	"KDBACK.DAT",
	"KCBACK.DAT",
	"KLBACK.DAT",
	"KSBACK.DAT",
	"KARTE.DAT",
	"BICONS",
	"OBJECTS.NVF",
	"LROUT.DAT",
	"SROUT.DAT",
	"HSROUT.DAT",
	"FONT6",
	"FONT8",
	"GGSTS.NVF",
	"TEXT.LTX",
	"ICONS",
	"MONSTER",
	"MONSTER.TAB",
	"COMPASS",
	"MAPTEXT.LTX",
	"ZUSTA_UK",
	"FIGHTTXT.LTX",
	"ANIS",
	"ANIS.TAB",
	"MFIGS",
	"MFIGS.TAB",
	"THORWAL.DAT",
	"SERSKE.DAT",
	"BREIDA.DAT",
	"PEILINEN.DAT",
	"ROVAMUND.DAT",
	"NORDVEST.DAT",
	"KRAVIK.DAT",
	"SKELELLE.DAT",
	"MERSKE.DAT",
	"EFFERDUN.DAT",
	"TJOILA.DAT",
	"RUKIAN.DAT",
	"ANGBODIRTAL.DAT",
	"AUPLOG.DAT",
	"VILNHEIM.DAT",
	"BODON.DAT",
	"OBERORKEN.DAT",
	"PHEXCAER.DAT",
	"GROENVEL.DAT",
	"FELSTEYN.DAT",
	"EINSIEDL.DAT",
	"ORKANGER.DAT",
	"CLANEGH.DAT",
	"LISKOR.DAT",
	"THOSS.DAT",
	"TJANSET.DAT",
	"ALA.DAT",
	"ORVIL.DAT",
	"OVERTHORN.DAT",
	"ROVIK.DAT",
	"HJALSING.DAT",
	"GUDDASUN.DAT",
	"KORD.DAT",
	"TREBAN.DAT",
	"ARYN.DAT",
	"RUNINSHA.DAT",
	"OTTARJE.DAT",
	"SKJAL.DAT",
	"PREM.DAT",
	"DASPOTA.DAT",
	"RYBON.DAT",
	"LJASDAHL.DAT",
	"VARNHEIM.DAT",
	"VAERMHAG.DAT",
	"TYLDON.DAT",
	"VIDSAND.DAT",
	"BRENDHIL.DAT",
	"MANRIN.DAT",
	"FTJOILA.DAT",
	"FANGBODI.DAT",
	"HJALLAND.DAT",
	"RUNIN.DAT",
	"THORWAL.LTX",
	"SERSKE.LTX",
	"BREIDA.LTX",
	"PEILINEN.LTX",
	"ROVAMUND.LTX",
	"NORDVEST.LTX",
	"KRAVIK.LTX",
	"SKELELLE.LTX",
	"MERSKE.LTX",
	"EFFERDUN.LTX",
	"TJOILA.LTX",
	"RUKIAN.LTX",
	"ANGBODIR.LTX",
	"AUPLOG.LTX",
	"VILNHEIM.LTX",
	"BODON.LTX",
	"OBERORKE.LTX",
	"PHEXCAER.LTX",
	"GROENVEL.LTX",
	"FELSTEYN.LTX",
	"EINSIEDL.LTX",
	"ORKANGER.LTX",
	"CLANEGH.LTX",
	"LISKOR.LTX",
	"THOSS.LTX",
	"TJANSET.LTX",
	"ALA.LTX",
	"ORVIL.LTX",
	"OVERTHOR.LTX",
	"ROVIK.LTX",
	"HJALSING.LTX",
	"GUDDASUN.LTX",
	"KORD.LTX",
	"TREBAN.LTX",
	"ARYN.LTX",
	"RUNINSHA.LTX",
	"OTTARJE.LTX",
	"SKJAL.LTX",
	"PREM.LTX",
	"DASPOTA.LTX",
	"RYBON.LTX",
	"LJASDAHL.LTX",
	"VARNHEIM.LTX",
	"VAERMHAG.LTX",
	"TYLDON.LTX",
	"VIDSAND.LTX",
	"BRENDHIL.LTX",
	"MANRIN.LTX",
	"F_TJOILA.LTX",
	"F_ANGBOD.LTX",
	"HJALLAND.LTX",
	"L_RUNIN.LTX",
	"TAVERN.TLK",
	"SPSTAR.NVF",
	"GUERTEL.NVF",
	"HAFEN.LTX",
	"FACE.NVF",
	"HYGBACK.NVF",
	"HYGGELIK.NVF",
	"SKULL.NVF",
	"OUTRO1.NVF",
	"OUTRO2.NVF",
	"OUTRO3.NVF",
	"TOWNPAL.DAT",
	"THORWAL.XMI",
	"SUMMARY.XMI",
	"TEMPLE.XMI",
	"TERMS.XMI",
	"SMITH.XMI",
	"INN.XMI",
	"HEALER.XMI",
	"CAMP.XMI",
	"VICTORY.XMI",
	"SAMPLE.AD",
	"ATTIC",
	"POPUP.DAT",
	"0154", // "\0"
	"0155", // "\0"
	"F092.TLK",
	"HERBERG.TLK",
	"0158", // "\0"
	"DASPOTA1.TLK",
	"DASPOTA2.TLK",
	"DASPOTA3.TLK",
	"INFO1.TLK",
	"INFO2.TLK",
	"INFO3.TLK",
	"INFO4.TLK",
	"INFO5.TLK",
	"INFO6.TLK",
	"INFO7.TLK",
	"SCHMIED.TLK",
	"GHANDEL.TLK",
	"KHANDEL.TLK",
	"WHANDEL.TLK",
	"F115.TLK",
	"EREMIT.TLK",
	"HYGGELIK.TLK",
	"WEAPONS.NVF",
	"BUCH.DAT",
	"SPELLOBJ.NVF",
	"IN_HEADS.NVF",
	"TEMPICON",
	"SHIPSL.NVF",
	"STONESL.NVF",
	"MARBLESL.NVF",
	"TFLOOR1.NVF",
	"TDIVERSE.NVF",
	"HOUSE1.NVF",
	"HOUSE2.NVF",
	"HOUSE3.NVF",
	"HOUSE4.NVF",
	"FEATURE.LTX",
	"FEATURE1.LTX",
	"FEATURE2.LTX",
	"FEATURE3.LTX",
	"FEATURE4.LTX",
	"FEATURE5.LTX",
	"FEATURE6.LTX",
	"FEATURE7.LTX",
	"FEATURE8.LTX",
	"FIGHTOBJ.NVF",
	"SCENARIO.LST",
	"KDLBACK.DAT",
	"KCLBACK.DAT",
	"KLLBACK.DAT",
	"KSLBACK.DAT",
	"FIGHT.LST",
	"SKARTE.NVF",
	"GAMES.NAM",
	"ITEMNAME",
	"MONNAMES",
	"THORWAL1.LTX",
	"THORWAL2.LTX",
	"DUNGEON.XMI",
	"COMBAT.XMI",
	"PLAYM_US",
	"ZUSTA_US",
	"ANI.DAT",
	"WEAPANI.DAT",
	"MONSTER.DAT",
	"BSKILLS.DAT",
	"ITEMS.DAT",
	"CHARTEXT.LTX",
	"SPELLTXT.LTX",
	"WONDER.LTX",
	"STRASSE.LTX",
	"NSC.LTX",
	"NARIELL.NPC",
	"HARIKA.NPC",
	"CURIAN.NPC",
	"ARDORA.NPC",
	"GARSVIK.NPC",
	"ERWO.NPC",
	"FINGER.NVF",
	"LTURM.NVF",
	"WFIGS",
	"WFIGS.TAB",
	"SPLASHES.DAT",
	"FEATURE9.LTX",
	"PHEX1.LTX",
	"PHEX2.LTX",
	"WILD.LTX",
	"WAFFINFO.LTX",
	"SHIP.DNG",
	"F046.DNG",
	"F051.DNG",
	"F061.DNG",
	"F076.DNG",
	"F094.DNG",
	"F100.DNG",
	"F108.DNG",
	"F126.DNG",
	"F129.DNG",
	"F131.DNG",
	"OBER.DNG",
	"PREM.DNG",
	"THORWAL.DNG",
	"FINAL.DNG",
	"SHIP.DDT",
	"F046.DDT",
	"F051.DDT",
	"F061.DDT",
	"F076.DDT",
	"F094.DDT",
	"F100.DDT",
	"F108.DDT",
	"F126.DDT",
	"F129.DDT",
	"F131.DDT",
	"OBER.DDT",
	"PREM.DDT",
	"THORWAL.DDT",
	"FINAL.DDT",
	"SHIP.DTX",
	"F046.DTX",
	"F051.DTX",
	"F061.DTX",
	"F076.DTX",
	"F094.DTX",
	"F100.DTX",
	"F108.DTX",
	"F126.DTX",
	"F129.DTX",
	"F131.DTX",
	"OBER.DTX",
	"PREM.DTX",
	"THORWAL.DTX",
	"FINAL.DTX",
	"TFLOOR2.NVF",
	"STORY.LTX",
	"FX1.VOC",
	"FX2.VOC",
	"FX3.VOC",
	"FX4.VOC",
	"FX5.VOC",
	"FX6.VOC",
	"FX7.VOC",
	"FX8.VOC",
	"FX9.VOC",
	"FX10.VOC",
	"FX11.VOC",
	"FX12.VOC",
	"FX13.VOC",
	"FX14.VOC",
	"FX15.VOC",
	"FX16.VOC",
	"FX17.VOC",
	"FX18.VOC"/*,
	"OUTRO.XMI" // offset = 0 */
};

DSAGEN.DAT

This file starts with a list of filename/offset entries:

struct DSAGEN_DAT_entry
{
	char filename[12];	// 12 bytes, note no \0 if the filename is 12 characters long
				   (8 characters (name) + 1 (".") + 3 (extension))
	int  offset;		//  4 bytes
};

You can calculate length of the entry-list using the first offset omitting empty entries. Note that some files stored within DSAGEN.DAT are compressed by the Amiga PowerPacker (PP20).

Personal tools