don't click here

S1 DAC Extraction

Discussion in 'Engineering & Reverse Engineering' started by fuzzbuzz, Mar 3, 2005.

Thread Status:
Not open for further replies.
  1. fuzzbuzz

    fuzzbuzz

    Tech Member
    625
    0
    0
    Here
    Many Many Programming/hacking tools...
    Code (Text):
    1.     dreg = 0x80;
    2.  
    3.     for(I = 0; I < datLen; I++, drPtrDac++)
    4.     {
    5.  &nbsp;datL = *drPtrDac;
    6.  &nbsp;datR = *drPtrDac;
    7.  
    8.  &nbsp;datL &= 0xF0;
    9.  &nbsp;datL = datL >> 4;
    10.  &nbsp;datL += 0x22;
    11.  &nbsp;datL = decZ80[datL];
    12.  &nbsp;datL += dreg;
    13.  &nbsp;dreg = datL;
    14.  
    15.  &nbsp;*buf++ = dreg;
    16.  
    17.  &nbsp;datR &= 0x0F;
    18.  &nbsp;datR += 0x22;
    19.  &nbsp;datR = decZ80[datR];
    20.  &nbsp;datR += dreg;
    21.  &nbsp;dreg = datR;
    22.  
    23.  &nbsp;*buf++ = dreg;
    24.     }
    That produced this.

    My guess is that each instrument has its own sample rate. Each time I think I've figured out Sonic 1 DAC, something trips me up. For example, the above code was only supposed to decode the bass drum sample. It didn't, and it's an exact C port of the Z80 code. :-/ Yucky.

    I'm in a question answering mood. Ask me something about Sonic 1 music. I'll answer it if I can.
     
Thread Status:
Not open for further replies.