Promizer v2.0 format Created by MC68000 / Masque / TRSI (Frank Hlsmann) Analysed by Asle / ReDoX (asle@mygale.org) NOTE: It's more or less the same structure as PM18a. The 'only' great difference is the repacking of the Notes (no more like ptk). thus, all the crap (!) about the finetuned value in PM18a are no longer in this version. Periods are replaced by relative note numbers. Far easier to handle when converting :). Source: - Two ripped PM20 from various cracktro .. - "PM20.Drd" sent by Gryzor (Thx !). Bubble Bobble rules :) Offset size (byte) Comment ------ ----------- ------- 0 5094 (13E6h) Replay routine and, certainly, near the end of this block, some unidentified bytes. Since I could manage without these to convert, I guess they are not that very important. 5094 72 (48h) all the 36 note pitch (similar to ptk's). Each is (13E6h) saved as a word. It's not much use to know this, but there are so many unclear bytes in this format, that I welcome every small "victory" like this :). 5198 2 number of pattern (REAL !) (144Eh) 5200 2 "used" size of the pattern table (1450h) /2 to get pattern list size ... 5202 128 64 word pattern table. (1452h) *************************************** * the following is repeated 31 times * * with 8 bytes description for 1 smp * ****************************************************** * 5458 (1552h) 2 Sample Size / 2 * 5460 (1554h) 1 Finetune (0 -> 1E) (*2 !) * 5461 (1555h) 1 Volume (0 - 40h) * 5462 (1556h) 2 Loop Start / 2 * 5464 (1558h) 2 Loop Size / 2 * * ****************************************************** 5706 4 Address of sample data + $144E (164Ah) ($144E is the number of pattern address) 5710 4 Address of the "reference table" + $144E (164Eh) NOTE: These two dword give us the size of the "reference table" when substracting. ($164A - $164E) 5714 pattern data. Each pattern is 512 bytes long. Though, (1652h) that's the theory because some patterns may NOT be that long. In fact, you'll have to check if the note isn't a PATTERN BREAK command or a PATTERN JUMP. If so, the pattern ends and another begins ... therefore, its size is less than the 512 'standard bytes'. Now, whatever the pattern size is, its meaning does not vary :). In fact, those data are some values which refer to a "reference table" (description is right below). RMQ: first value is 00h. $144E ? the "reference table" which contains the standard +$164E PTK pattern data. Its size is easy to calculate since it consists of blocks of 4 bytes, knowing that there are 'n' blocks ('n' is the highest value in the pattern data). The other way to get the size is described upward. * Here's a quick description of these four bytes 0000-0000 0000-0000 0000-0000 0000-0000 || ||| | | | | | | | | | \ / || \ / | | \/ \ / |sample|| relative \/ effect effect | || note nbr unused value unused unused relative note number (PTK): C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453 C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226 C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113 becomes (PM20): C-1 to B-1 : 02,04,06,08,0a,0c,0e,10,12,14,16,18 C-2 to B-2 : 1a,1c,1e,20,22,24,26,28,2a,2c,2e,30 C-3 to B-3 : 32,34,36,38,3a,3c,3e,40,42,44,46,48 /*******************/ ? 4 Four empty bytes as in PM18a. Still not figured out their meaning !. $144E ? Sample datas. +$164A (NOTE: It seems ProWizard adds four empty bytes here when ripping ... . The original packer, promizer 2.0, doesn't. ).