|Westwood Studios AdLib|
|First Game:||Eye of the Beholder (DOS)|
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
|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.