King's Bounty Music Format

From ModdingWiki
Jump to: navigation, search
King's Bounty Music Format
Format typeMusic
Notation typeCustom
InstrumentsPC Speaker
Max channel count1
Max track count1
Max pattern count1
Max order count0

King's Bounty stores its PC speaker music in the EXE file.

  • Note: The 1990 version of the EXE is compressed, offsets listed here are taken after uncompressing it with unexecomp and unexepack.
Offset 1990 Offset 1995 Data Type Description
0x18997 0x18B5D BYTE str[] Tunes (2 bytes per note, 0xFF marks end)
0x189D1 0x18B97 UINT16LE freq[] Note palette (frequencies)
0x18A81 0x18C47 UINT16LE delay[] Duration palette
0x18AA1 0x18C67 UINT16LE offsets[10] Offsets into tunes (add 0x15690 or 0x15850)

For example, in 95 version, tune #0's offset (at 0x18C67) is 0x330D, which leads us to 0x18B5D (0x15850+0x330D). There, we see:

0x28 0x07 0xFF

Which are: index into note palette, index into duration palette, end marker. In default palettes, note 0x28 is 65 hz, and duration 0x07 is a 15 ms delay.