The Mr.Pac Sound Driver exists in two versions:
- Ver 1.5b by Mr.Pac h Ber.02/01/08
- Ver 2.0 by Mr.Pac h Ber.02/02/14
The information on this page primarily deals with the first version of the driver as it appears on the SM1 chip.
Command Codes
Code |
Description
|
0x00 |
No operation
|
0x01 |
Slot Switch
|
0x02 |
Play Eyecatch Music
|
0x03 |
Reset
|
0x04 |
Disable music/sound effect playback
|
0x05 |
Disable music playback
|
0x06 |
Disable sound effect playback
|
0x07 |
Enable music/sound effect playback
|
0x08 |
Enable music playback
|
0x09 |
Enable sound effect playback
|
0x0A |
Fade out (0 in SM1's TBL_MCODE )
|
0x0F |
Stop SSG (0 in SM1's TBL_MCODE )
|
0x10 |
ROM/RAM Check
|
0x11 |
Stop fade out (0 in SM1's TBL_MCODE )
|
Voice/Instrument Formats
ADPCM-A
Offset |
Size |
Description
|
0x00 |
byte |
Priority (lower value = higher priority)
|
0x01 |
word |
Start Address
|
0x03 |
word |
End Address
|
0x05 |
byte |
Loop Count
|
0x06 |
word |
Loop Start Address
|
0x08 |
word |
Loop End Address
|
0x0A |
byte |
Volume and Left/Right Output
|
ADPCM-B
Offset |
Size |
Description
|
0x00 |
byte |
Priority
|
0x01 |
word |
Start Address
|
0x03 |
word |
End Address
|
0x05 |
byte |
Loop Count
|
0x06 |
word |
Loop Start Address
|
0x08 |
word |
Loop End Address
|
0x0A |
word |
Delta-N Sampling Rate
|
0x0C |
byte |
Volume
|
0x0D |
byte |
LFO Sync/Delay
|
0x0E |
byte |
LFO Envelope, Left/Right Output
|
0x0F |
word |
Minimum LFO Pitch
|
0x11 |
word |
Maximum LFO Pitch
|
0x13 |
word |
LFO Speed
|
0x15 |
byte |
Volume Portamento
|
0x16 |
byte |
Volume Speed
|
0x17 |
byte |
Initial Volume
|
0x18 |
byte |
Final Volume
|
0x19 |
byte |
Portamento Speed
|
FM
Offset |
Size |
Description
|
0x00 |
byte |
Feedback
|
0x01 |
byte |
Algorithm
|
0x02 |
byte |
Detune (Op1)
|
0x03 |
byte |
Detune (Op2)
|
0x04 |
byte |
Detune (Op3)
|
0x05 |
byte |
Detune (Op4)
|
0x06 |
byte |
Multi (Op1)
|
0x07 |
byte |
Multi (Op2)
|
0x08 |
byte |
Multi (Op3)
|
0x09 |
byte |
Multi (Op4)
|
0x0A |
byte |
Output (Op1)
|
0x0B |
byte |
Output (Op2)
|
0x0C |
byte |
Output (Op3)
|
0x0D |
byte |
Output (Op4)
|
0x0E |
byte |
Key Scale Rate (Op1)
|
0x0F |
byte |
Key Scale Rate (Op2)
|
0x10 |
byte |
Key Scale Rate (Op3)
|
0x11 |
byte |
Key Scale Rate (Op4)
|
0x12 |
byte |
Attack Rate (Op1)
|
0x13 |
byte |
Attack Rate (Op2)
|
0x14 |
byte |
Attack Rate (Op3)
|
0x15 |
byte |
Attack Rate (Op4)
|
0x16 |
byte |
Decay Rate (Op1)
|
0x17 |
byte |
Decay Rate (Op2)
|
0x18 |
byte |
Decay Rate (Op3)
|
0x19 |
byte |
Decay Rate (Op4)
|
0x1A |
byte |
Sustain Rate (Op1)
|
0x1B |
byte |
Sustain Rate (Op2)
|
0x1C |
byte |
Sustain Rate (Op3)
|
0x1D |
byte |
Sustain Rate (Op4)
|
0x1E |
byte |
Sustain Level (Op1)
|
0x1F |
byte |
Sustain Level (Op2)
|
0x20 |
byte |
Sustain Level (Op3)
|
0x21 |
byte |
Sustain Level (Op4)
|
0x22 |
byte |
Release Rate (Op1)
|
0x23 |
byte |
Release Rate (Op2)
|
0x24 |
byte |
Release Rate (Op3)
|
0x25 |
byte |
Release Rate (Op4)
|
0x26 |
byte |
SSG-type Envelope (Op1)
|
0x27 |
byte |
SSG-type Envelope (Op2)
|
0x28 |
byte |
SSG-type Envelope (Op3)
|
0x29 |
byte |
SSG-type Envelope (Op4)
|
0x2A |
byte |
"lfoWave"
|
0x2B |
byte |
"lfoDelay"
|
0x2C |
word |
"lfoSpeed"
|
0x2E |
byte |
"pmd"
|
0x2F |
byte |
"pms"
|
0x30 |
byte |
"intCount"
|
0x31 |
byte |
(unused)
|
0x32 |
byte |
Hardware LFO AMS/PMS
|
0x33 |
byte |
Hardware LFO ??
|
Some values need verification.
Music
Offset |
Size |
Description
|
0x00 |
byte |
"Select Code"
|
0x01 |
word |
Pointer to FM Channel 1 sequence data
|
0x03 |
word |
Pointer to FM Channel 2 sequence data
|
0x05 |
word |
Pointer to FM Channel 3 sequence data
|
0x07 |
word |
Pointer to FM Channel 4 sequence data
|
0x09 |
word |
Pointer to ADPCM-A Channel 1 sequence data
|
0x0B |
word |
Pointer to ADPCM-A Channel 2 sequence data
|
0x0D |
word |
Pointer to ADPCM-A Channel 3 sequence data
|
0x0F |
word |
Pointer to ADPCM-A Channel 4 sequence data
|
0x11 |
word |
Pointer to ADPCM-A Channel 5 sequence data
|
0x13 |
word |
Pointer to ADPCM-A Channel 6 sequence data
|
0x15 |
word |
Pointer to ADPCM-B Channel sequence data
|
0x17 |
byte |
Tempo (music)/Priority (effect)
|
0x18 |
byte |
Initial FM Volume
|
0x19 |
byte |
Initial ADPCM-A Volume
|
0x1A |
byte |
Initial ADPCM-B Volume
|
0x1B |
byte |
Open/Close Flag (FM Channel 1)
|
0x1C |
byte |
Open/Close Flag (FM Channel 2)
|
0x1D |
byte |
Open/Close Flag (FM Channel 3)
|
0x1E |
byte |
Open/Close Flag (FM Channel 4)
|
0x1F |
byte |
Open/Close Flag (ADPCM-A Channel 1)
|
0x20 |
byte |
Open/Close Flag (ADPCM-A Channel 2)
|
0x21 |
byte |
Open/Close Flag (ADPCM-A Channel 3)
|
0x22 |
byte |
Open/Close Flag (ADPCM-A Channel 4)
|
0x23 |
byte |
Open/Close Flag (ADPCM-A Channel 5)
|
0x24 |
byte |
Open/Close Flag (ADPCM-A Channel 6)
|
0x25 |
byte |
Open/Close Flag (ADPCM-B)
|
Sound Effects
Offset |
Size |
Description
|
0x00 |
byte |
Priority
|
0x01 |
word |
Pointer to SSG Channel A sequence data
|
0x03 |
word |
Pointer to SSG Channel B sequence data
|
0x05 |
word |
Pointer to SSG Channel C sequence data
|
0x07 |
word |
Pointer to SSG Noise Channel sequence data
|
0x09 |
byte |
Open/Close Flag (SSG Channel A)
|
0x0A |
byte |
Open/Close Flag (SSG Channel B)
|
0x0B |
byte |
Open/Close Flag (SSG Channel C)
|
0x0C |
byte |
Open/Close Flag (SSG Noise Channel)
|
0x0D |
byte |
Open/Close Flag (Software-mixed Noise)
|
Other Notes
- Timer A seems to be used for sound effect playback. (The Timer A value is also stored in 0xFAD3 (lower 2 bits) and 0xFAD4 (upper 8 bits) in the SM1/BIOS driver)
- Timer B is used as the tempo for music playback. (The Timer B value is also stored in 0xFAD4 in the SM1/BIOS driver)