ADL (Westwood)

From Video Game Music Preservation Foundation Wiki
Revision as of 13:27, 7 July 2022 by Professor Chaos (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Westwood Studios AdLib
ADL (Westwood).png
Developer: Westwood Studios
Header: Custom
Content: Unknown
Instruments: Internal
Target Output
Output - Digital Audio - No.png Output - MIDI - No.png Output - FM Synthesis.png Output - PSG - No.png
Released: 1990-??-??
First Game: Eye of the Beholder (DOS)
  • *.adl

Westwood Studios created this format for storing music that is sent to sound cards equipped with an OPL2 chip (like AdLib and Sound Blaster). It was used in several of their game in the early 1990s.

The music was originally made as ROL files in AdLib Visual Composer, and was then converted to the ADL format. Unlike Visual Composer, ADL stores audio and instrument definitions in the same file, whereas Visual Composer uses the BNK format.

Notice: To play ADL files in AdPlug correctly, you'll need to uncheck option Auto-detect Song End in the plugin configuration. Then, when song is opened, use file information dialog (Alt+3 in Winamp) to seek between different subsongs. The same goes for XMPlay, except you need to right click on song at playlist and choose Plugin file info.





ADL to ?

? to ADL


Released Title Sample
1990-??-?? Eye of the Beholder (DOS)
1991-12-?? Eye of the Beholder II: The Legend of Darkmoon (DOS)
1992-05-?? The Legend of Kyrandia: Book One (DOS)
1992-12-?? Dune II: The Building of a Dynasty (DOS)
1993-??-?? Lands of Lore: The Throne of Chaos (DOS)
1993-??-?? The Legend of Kyrandia: Book Two - Hand of Fate (DOS)


Each ADL file contains these blocks:

  • Song indexes for the following pointer array
  • Pointer array for sound/music tracks
  • Pointer array for adlib instruments
  • Tracks data
  • Instruments data

Each pointer in array is relative to the size of primary indexes block.

The format structure has differences between games. First version of the format was introduced in Eye of the Beholder. The second version is used in the games Eye of the Beholder II, The Legend of Kyrandia and Dune II, where it has undergone minor changes such as the size of the pointer array for tracks which is 300 bytes instead of 500. The third version was introduced in the Lands of Lore and The Legend of Kyrandia 2 - there are major changes, first indexes block now uses 16-bit values instead of 8-bit.

Here is full table of format structure changes:

Game Primary Indexes Track Pointers Instrument Pointers First Track Offset First Track Absolute Offset
EOB 120 (8-bit) 150 (16-bit) 150 (16-bit) 0x258 0x2D0
EOB 2 120 (8-bit) 250 (16-bit) 250 (16-bit) 0x3E8 0x460
Kyrandia 1 120 (8-bit) 250 (16-bit) 250 (16-bit) 0x3E8 0x460
Dune II 120 (8-bit) 250 (16-bit) 250 (16-bit) 0x3E8 0x460
Lands of Lore 250 (16-bit) 500 (16-bit) 500 (16-bit) 0x7D0 0x9C4
Kyrandia 2 250 (16-bit) 500 (16-bit) 500 (16-bit) 0x7D0 0x9C4

Also there is SND (Westwood) format which has very similar structure.

In some Westwood games like Eye of the Beholder II, the music can be hacked into playing at different parts of the game by editing the offsets. For example, in Intro.adl, byte 000C 0C is the introduction music. However, you can set the previous bytes (0000 - 000B) to FF to turn off the sound effects in the introduction. Alternatively, you can set all the previous bytes to 0C so with each sound effect that plays in the intro, the introduction music will replay.

In Eye of the Beholder II, the music and sound bytes begin at 0078 in the .ADL files. The amount of sound ID's can be determined by looking at how many bytes there are until many bytes are 00. For example, in Intro.adl, the music and sound bytes start from 0078 and go up to 00B9 until the addresses are 00.

00B9 (185) - 0078 (120) + 1 = 66. 66/2 = 33, so there would be 33 sound ID's in Intro.adl.

In Intro.adl, the bytes 026C to 02C5 contain the instrument data.