---------------------------------------------------------------------------- Digi Booster 1.x - module format ---------------- There is one DB format, but the old is a little bit different (but is compatible with the new one). Here you have describtion: ([1] - data stored as one byte) ([2] - data stored as two bytes - word) ([4] - data stored as four bytes - long word) offset |bytes| contents | meaning -------+-----+------------+------------------------------------------------- 000000 | 4 | "DIGI" | char Magic[4] | | | If you support different music file types | | | check these letters. -------+-----+------------+------------------------------------------------- 000004 | 16 | some texts | Not very important[16] -------+-----+------------+------------------------------------------------- | | | There is a version of Digi Booster which 000020 | 4 | "V1.x" | made this file [4] - stored as ASCI | | | -------+-----+------------+------------------------------------------------- 000024 | 1 | | Once again version of DB but stored as hex[1] | | | (protection against lamers). | | | eg. $14 means version 1.4. | | | 000025 | 1 | (8) | Number of channels used in module (always 8) [1] | | | 000026 | 1 | | Pack pointer [1] | | | If 'Pack pointer' is zero, the pattern data | | | isn't crunched. | | | 1 means that is crunched | | | 000027 | 19 | | Reserved[19] -------+-----+------------+------------------------------------------------- | | | PatNum[1] 000046 | 1 | | It specifies the number of different | | | patterns this module has. -------+-----+------------+------------------------------------------------- | | | OrdNum[1] 000047 | 1 | | It specifies the number of different | | | orders (in editor POSITIONS) this module has. -------+-----+------------+------------------------------------------------- 000048 | 128 | | Orders[1] | | | Here you have stored numbers of patterns which | | | the player will play -------+-----+------------+------------------------------------------------- 000176 | 124 | | SamLens[4] | | | Here you have a sample lenghts | | | Number of samples in module is 31. -------+-----+------------+------------------------------------------------- 000300 | 124 | | SamReps[4] | | | Here you have a sample repeat starts -------+-----+------------+------------------------------------------------- 000424 | 124 | | SamRepLens[4] | | | Here you have a sample repeat lenghts -------+-----+------------+------------------------------------------------- 000548 | 31 | | SamVols[1] | | | Sample volumes. -------+-----+------------+------------------------------------------------- 000579 | 31 | | SamFins[1] | | | Sample finetunes. | | | The old format (versions 1.0-1.3) hasn't play | | | finetunes but has store it in module. | | | So. if version of mod. is 1.0-1.3 you have | | | to clear finetunes otherwise the new player | | | will play samples with stored finetunes. | | | (the voice will be out of order) -------+-----+------------+------------------------------------------------- 000610 | 32 | | Song name ended with 0 [32] -------+-----+------------+------------------------------------------------- 000642 | 930 | | Sample names [30] | | | Each sample name has 30 bytes ended with 0 | | | You have 31 samples in module. -------+-----+------------+------------------------------------------------- 001572 | ... | | Patterns. | | | | | | | | | | | | Patterns can be packed and not packed | | | Each not packed pattern takes 2048 bytes | | | So lenght of this hunk (all patterns) you can | | | calculate such like this: PatNum*2048 (easy?) | | | | | | If the patterns are packed... | | | Each packed pattern at beginning has stored | | | its length[2] | | | Address of next pattern you can calculate in | | | this way: | | | - take a length of last packed pattern | | | - and add (2) | | | How to depack pattern read below -------+-----+------------+------------------------------------------------- .... | ... | | Samples stored as signed 8bit RAW -------+-----+------------+------------------------------------------------- Packed pattern format: offset |bytes| contents | meaning -------+-----+------------+------------------------------------------------- 000000 | 2 | | Length of packed pattern[2] -------+-----+------------+------------------------------------------------- 000002 | 64 | | Pack table (stored as bits) | | | If bit is set you have to take a four bytes | | | (long word) from packed datas | | | IF bit is clean you have to clear four bytes. | | | That's all... (very easy?) -------+-----+------------+------------------------------------------------- 000066 | ... | | Packed datas -------+-----+------------+------------------------------------------------- - Each depacked pattern has 64 positions, 8 tracks. - Depacked pattern has following structure: CHN1ADAT, CHN1BDAT, CHN2ADAT, CHN2BDAT,CHN3ADAT, CHN3BDAT, CHN4ADAT, CHN4BDAT