| |
Format
name : AC1D Packer
Created by : Slammer Anarchy (19??)
NOTE:
This is the "dump" version, not the memory rip. There are some few differences
... first, the ID string is the other way around ($D1CA), next, all the
addresses are useless because they point in the memory ...
Sources :
* "In the Kitchen" demo by Anarchy
|
OFFSET
|
SIZE (bytes)
|
COMMENT
|
|
0
1
2
4
|
1
1
2
4
|
- Number of pattern to play
- Probably the "Noisetracker" byte (7Fh)
- $AC1D ID string
- Sample data address
|
The following is repeated 31 times
with 8 bytes description for one sample
|
8
Ah
Bh
Ch
Eh
|
2
1
1
2
2
|
- Sample Size / 2
- Finetune (0 -> F)
- Volume (0 - 40h)
- Loop Start / 2
- Loop Size / 2 |
|
100h
300h
380h
|
200h
80h
?
|
- Pattern addresses table
- Pattern order table
- Pattern data |
we get something like that:
pattern 0 :
all the 64 row of voice 0
all the 64 row of voice 1
all the 64 row of voice 2
all the 64 row of voice 3
pattern 1 : ...
Each pattern begins with 3 dword. Each
is the number of byte to add to find the voice 1, 2 and 3. (Voice
0 starts always at 0)
The size of each pattern is variable. It
can be up to 300h bytes. One note can be 1 or 3 bytes long, or even
0 bytes :)
The first bit of the first byte is a description
bit. If it is set to 1, it means there wont be any note during the
next (first_byte - $80):
Case 1:
val
/ \
1000 0000
|
if this bit is set, follows 'val' empty in the voice.
|
Case 2:
0000 0000 0000 0000
||\ / \ / \ /
/ | note Smp2 ||
|Smp ||
| bin(0111)
|
Description bit set to 0.
|
As far as I can tell, it seems Fx Command
7 is not supported by this packer, and, therefore, is used here for
another purpose. First, about the 'Smp', it is the sample value (max
$1f). Next, the 'bin' value is, in this case, set to 7, meaning there's
no effect command, nor effect value. At least, the Note. It seems
it is the "standard" relative note number as found in many other packers,
save that it supports one more octave. When converting back to Ptk,
just remove $C to this value ... and check below the correspondance
table
Case 3:
if first bit is set to 0, follows the description
Sample number
/ /\
| | |
0000 0000 0000 0000 0000 0000
| | | | | | |
/ \ / \/ \ /
| relative effect effect
| note (!$7) value
| number
|------------description bit set to 0
|
As in case 2 , with the effect command
!= 7. The only difference with previous case is the adding of an effect
value<
Note: if the Note value is $3F, it means there no note !. On another
hand, if Note value is $00, it means the note is C-1 ($358 under Ptk)
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 : (AC1D)
|
C-1 to B-1 : 00,0d,0e,0f,10,11,12,13,14,15,16,17
C-2 to B-2 : 18,19,1a,1b,1c,1d,1e,1f,20,21,22,23
C-3 to B-3 : 24,25,26,27,28,29,2a,2b,2c,2d,2e,2f
|
Follow Sample datas stored like Protracker.
Nothing is packed..
|
|