| |
Format name
: Promizer 2.0 packer format
Created by : Franck Hulsmann (MC68000/Masque)
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 more in
this version. Periods are replaced by relative note numbers. Far
easier to handle when converting :)
Sources :
* Two ripped PM20 from various cracktro ..
* "PM20.Drd" sent by Gryzor (Thx !). Bubble
Bobble rules :)
|
OFFSET
|
SIZE (bytes)
|
COMMENT
|
|
0
-
-
-
-
13E6h
-
-
-
-
144Eh
1450h
-
1452h
|
13E6h
-
-
-
-
48h
-
-
-
-
2
2
-
80h
|
- 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 much important
- all the 36 note pitch (similar to ptk's). Each is 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 :)
- Number of pattern (REAL !)
- "used" size of the pattern table. Divide by 2 to
get pattern list size ...
- 64 word pattern table
|
The following is repeated 31 times
with 8 bytes description for one sample
|
1552h
1554h
1555h
1556h
1558h
|
2
1
1
2
2
|
- Sample Size / 2
- Finetune (0 -> 1Eh) (*2 !)
- Volume (0->40h)
- Loop Size / 2
- Loop Start / 2
|
|
164Ah
-
164Eh
-
|
4
-
4
-
|
- Address of sample data + $144E
($144E is the number of pattern address)
- Address of the "reference table" + $144E |
Note : These two dword give us the size
of the "reference table" when substracting. ($164A - $164E)
|
1652h
-
-
-
-
-
-
-
-
-
-
-
-
$144Eh+$164Eh
-
-
-
-
-
-
|
?
-
-
-
-
-
-
-
-
-
-
-
-
???
-
-
-
-
-
-
|
- pattern data. Each pattern is 512
bytes long. Though, 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.
- the "reference table" which contains the standard 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 |
Note Packing :
0000-0000 0000-0000 0000-0000 0000-0000
|| ||| | | | | | | | |
| \ / || \ / | | \/ \ /
|sample|| relative \/ effect effect
| || note nbr unused value
unused unused
|
relative note number:
(Protracker)
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 ! |
Next come the sample datas. We got two ways to find the starting address.
We could follow step by step, as described here, but with a lot of calculating
... . Now, there is this long byte in the description that I find very
useful for the job. I use this way below. So, first there is less calculating,
but also, I think it's FAR safer that way !
|
$144Eh+$164Ah
|
?
|
- Sample datas |
Note : It seems Gryzor's ProWizard adds
four empty bytes here when ripping ... . The original packer, promizer
2.0, doesn't.
|
|