We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
H-Sound Engine
From SnesLab
H-Sound is a sound engine created by Tsutomu Hagiwara of Sol for the SPC700 [1] [2]. The sound driver was used in five games.
Only one version, 0.5, was ever used. However, there are technically three different builds, each with very minor differences:
- Yuujin no Furi Furi Girls, compared to Kamen Rider SD, has extra valid drumkit note slots and a single extra opcode that overwrites the timer value to use at the start, thus almost not even qualifying as a build variant.
- The other three games, compared to Kamen Rider SD, are missing an optional inversion operation for the echo volume. This is not controlled by a VCMD within the song.
Game Name | Build ID | VCMD Table Location ($E0 and up) | ROM Offset |
---|---|---|---|
Kamen Rider SD | 1 | 0x0C3D | 0x0C9B91 |
Yuujin no Furi Furi Girls | 2 | 0x0C45 | 0x888000 |
Hisshou Pachi-Slot Fun | 3 | 0x0C69 | 0x088000 |
Honkakuha Igo - Gosei | 3 | 0x0C69 | 0x0C8000 |
Janyuuki Gokuu Randa | 3 | 0x0C69 | 0x1D8000 |
Instrument Format
The instrument format is N-SPC/Kankichi-kun compatible minus noise support for SRCN values above 127.
The instrument format is defined as direct writes to DSP registers for the first four bytes, followed by two pitch-related bytes. They are defined in this order, from top to bottom...
- SRCN
- ADSR1
- ADSR2
- GAIN
- Pitch Base Multiplier
- Pitch Base Fractional Multiplier (in 256ths)
Header Format
Each song's header is a series of eight four byte entries, one per channel. Each entry contains the following bytes in order...
- Two-byte little endian track pointer
- Master track ID (Zero for music, non-zero for SFX)
- Unused byte
Voice Command Format
VCMD ID | Description | Arguments |
---|---|---|
$00-$60 | Note Length | |
$61-$71 | Invalid Velocity | |
$72-$79 | Velocity | |
$7A-$7F | Quantization | |
$80-$C7 | Note | |
$C8 | Instant Slide To Note | |
$C9 | Tie | |
$CA-$DF | Drumkit | |
$E0 | Instrument | xx |
$E1 | Panning | xx |
$E2 | Note Volume | xx |
$E3 | NOP | xx |
$E4 | Pitch Offset | xx |
$E5 | Absolute Transposition | xx |
$E6 | Global Absolute Transposition | xx |
$E7 | Loop Section Start | |
$E8 | Loop Section End | xx |
$E9 | Tempo | xx |
$EA | NOP | |
$EB | Activate Drumkit Mode | |
$EC | Echo On | |
$ED | Echo Off | |
$EE | ADSR | xx yy |
$EF | GAIN | xx |
$F0-$F1 | NOP | |
$F2 | Jump | xx xx |
$F3 | Noise Clock | xx |
$F4 | Noise On | |
$F5 | Noise Off | |
$F6 | Key Off On Quantization Elapse Enable | |
$F7 | Key Off On Quantization Elapse Disable | |
$F8 | FIR Coefficient Table ID | xx |
$F9 | Echo Volume | xx |
$FA | Echo Feedback | xx |
$FB-$FD | NOP | |
$FE | End of Song | |
$FF | NOP |
TODO VCMD documentation