From Video Game Music Preservation Foundation Wiki
Jump to: navigation, search
Developer: Chris Hülsbeck
Header: Custom
Content: Notational
Instruments: External
Target Output
Output - Digital Audio.png Output - MIDI - No.png Output - FM Synthesis - No.png Output - PSG - No.png
Released: 1989
First Game: Danger Freak (AMI)
  • mdat.*
  • *.tfx

MDAT is a song format and part of TFMX (The Final Musicsystem Extended) created by Chris Hülsbeck for the Commodore Amiga and later enhanced for the Atari ST. On the Amiga, each MDAT file comes with an SMPL file.

In summer 1988, Hülsbeck created an early version of TFMX for the Commodore 64. Later that year, Hülsbeck started re-designing TFMX for the Amiga.

Since late 1990, TFMX supports manipulating existing samples in real-time (just as the song plays).

Until early 1991, TFMX only supported the Amiga's normal 4 voices. Oktalyzer already emulated 8 voices, but Hülsbeck did not like the sound quality. Meanwhile, back since 1988, Jochen Hippel was developing music drivers that played 4 samples on the Atari ST in order to emulate the Amiga. When Hülsbeck heard Turrican (AST), he realized that only low sounds should be mixed, and asked Hippel if he could have his source code. Since then, TFMX supports 7 voices. This was first heard in Turrican II: The Final Fight (AMI); in fact, Hülsbeck called the title song a demonstration. However, 7 voices are also CPU-intensive and were only used in title, high-score and ending songs, whereas in-game soundtracks stayed at 4 voices.

The official editor and most players use the mdat.* and smpl.* extensions. DOS games use *.tfx and *.sam. Some players use other extensions, but their source is unknown.



Hülsbeck also mentioned (without name) a very buggy DOS player from his Soundfactory CD.




Released Title Sample
1989-0?-?? Danger Freak (AMI)
1990-??-?? The Curse of RA (AMI)
1991-0?-?? Gem'X (AMI)
1991-02-?? Turrican II: The Final Fight (AMI)

How to Obtain

MDAT files usually have to be manually extracted from game files, a process that is different for pretty much every game that uses them.

One MDAT file can store up to 32 songs. Some of them may be subsets of other songs, probably made by the arranger for quick testing, not used by the game, and not necessary to record.


Early MDAT files have exactly 128 patterns (each addressed by a table at 200hex), 128 macros (table at 400hex), a track table at 600hex, and pattern 7Fhex is a table of sound effects (8 bytes per entry). Since early 1990, the sound effect table can be at 200hex, the track table address at 1D0hex, the truncated pattern-table address at 1D4hex, and the truncated macro table address at 1D8hex.

When using 7 voices, TFMX plays voices 0 to 2 on the Amiga's normal voices and mixes virtual voices 4 to 7 together into the Amiga's voice 3. The effect of a person using voice 3 directly is not researched.

Normally, everything is in big endian (the Amiga's native order). However, the DOS game driver expects the three addresses at 1D0hex (and oddly, or lazily, only them) in little endian (the PC's native order).

Besides music, MDAT files have an 40×6 intro-text. Most of them are either "(Empty)" or

Date : dd.MM.yy

Time : HH:mm

with either x or an actual date and time.