APU RAMマップ
スーパードンキーコング2 および、Diddy's Kong Quest で使用されているRareWare Sound Driver が使用するAPU RAMのデータについて説明します。
このサウンド・ドライバは、スーパードンキーコング3 および、Dixie Kong's Doubkle Trouble でも全く同一のものが使用されています。

※ドンキー3改造資料 - APU RAMマップはこのページにリダイレクトされています。

<免責事項>
この表は独自解析に基づく調査結果であり、誤りが含まれている可能性があります。この情報を使用したことに起因するいかなる損害に対しても、著者はその責を負いません。
凡例
データ型は次のように対応します。
byte: 符号なし8ビット整数
sbyte: 符号付8ビット整数
short: 符号付16ビット整数
ushort: 符号なし16ビット整数
bool: ブーリアン型
byte[]: バイト配列

APU RAM ($0000 - $FFFF; 65536 bytes)
DSPのチャネル数は8ですが、ドライバ内部では16チャンネルとして扱われます。DSPの0~7チャネルが、ドライバの0~7チャネルと8~15チャネルに重ねてマップされます。
0~7チャネルはBGMの再生用に、8~15チャネルはSEの再生用に割り当てられ、SE割込が発生した場合には、対応するBGMチャネルが中断されます。
ドライバが使用するレジスタは16チャネル分確保されているものがほとんどですが、SEチャネルが使用しないレジスタはBGM用の8チャネル分の領域のみ確保されます。

アドレス 種別 内容
$0000
byte[4]
buffer
作業領域
$000C
byte[8]
data
各チャネルの特殊Note #$E0用のノートナンバー
$0014
byte[8]
data
各チャネルの特殊Note #$E1用のノートナンバー
$001F
byte
data
現在のテンポ
$0021
byte
data
現在のSEテンポ
$0024
byte[16]
counter
現在の各チャネルのNoteイベントの残りTick数(下位)
$0034
byte[16]
counter
現在の各チャネルのNoteイベントの残りTick数(上位)
$0044
byte[16]
pointer
現在の各チャネルの読出しアドレス(下位)
$0054
byte[16]
pointer
現在の各チャネルの読出しアドレス(上位)
$0064
sbyte[16]
data
現在の各チャネルのチューニング値
$0074
byte[16]
data
現在の各チャネルのピッチ値(下位)
$0084
byte[16]
data
現在の各チャネルのピッチ値(上位)
$00A4
sbyte[16]
data
ビブラート関連
$00B4
sbyte[16]
data
現在の各チャネルのビブラート間隔
$00C4
sbyte[16]
data
現在の各チャネルのビブラート・ディレイ
$00F0
byte
register
TESTレジスタ
$00F1
byte
register
CONTROLレジスタ
$00F2
byte
register
DSP通信アドレス
$00F3
byte
register
DSP通信データ
$00F4
byte
register
CPU入出力0
$00F5
byte
register
CPU入出力1
$00F6
byte
register
CPU入出力2
$00F7
byte
register
CPU入出力3
$00F8
byte
register
RAM
$00F9
byte
register
RAM
$00FA
byte
register
タイマ0スケーリングターゲット
$00FB
byte
register
タイマ1スケーリングターゲット
$00FC
byte
register
タイマ2スケーリングターゲット
$00FD
byte
register
タイマ0出力
$00FE
byte
register
タイマ1出力
$00FF
byte
register
タイマ2出力
$0100
sbyte[16]
buffer
ピッチスライド作業領域
$0110
sbyte[16]
buffer
ピッチスライド作業領域
$0120
byte[16]
data
各チャネルのデフォルト・デュレーション(下位)
$0130
byte[16]
data
各チャネルのデフォルト・デュレーション(上位)
$0140
sbyte[16]
data
現在の各チャネルのトランスポーズ値
$0150
byte[16]
data
各チャネルのピッチスライドおよびビブラート有効フラグ
$0160
byte[16]
data
現在の各チャネルのピッチスライド・ディレイ
$0170
byte[16]
data
現在の各チャネルのビッチ変更間隔
$0180
byte[16]
data
現在の各チャネルのピッチ変更回数1
$0190
byte[16]
data
現在の各チャネルのピッチ変更回数2
$01A0
sbyte[16]
buffer
ピッチスライド作業領域
$01B0
sbyte[16]
data
現在の各チャネルのピッチ変更幅
$01C0
sbyte[16]
buffer
ピッチスライド作業領域
$01D0
bool[16]
flag
各チャネルのデュレーション拡張有効フラグ
$01E0
bool[16]
flag
各チャネルのSE割込みフラグ
$0200
byte[16]
data
ビブラート関連
$0210
byte[16]
data
現在の各チャネルのビブラート間隔
$0220
byte[16]
data
現在の各チャネルのビブラート・ディレイ
$0230
sbyte[2]
data
DSPマスタ音量
$0232
sbyte[2]
data
DSPエコー音量
$0234
sbyte[16]
data
現在の各チャネルのビブラート・デプス
$0244
byte[16]
data
現在の各チャネルのソース・ナンバー
$0254
sbyte[16]
data
現在の各チャネルの左音量
$0264
sbyte[16]
data
現在の各チャネルの右音量
$0274
byte[16]
data
現在の各チャネルのADSR1
$0284
byte[16]
data
現在の各チャネルのADSR2
$0294
bool[16]
flag
各チャネルのエコー有効フラグ
$0334
byte[16][8]
pointer
各チャネルのコール・スタック(下位)
$03BC
byte[16][8]
pointer
各チャネルのコール・スタック(上位)
$0434
byte[16][8]
counter
各チャネルのサブルーチン残り呼び出し回数
$04B3
byte
data
ノイズ・クロック
$04B5
sbyte
data
マスタ音量
$04B7
sbyte[2][2]
data
ボリュームプリセット
$04D8
-
assembly
ドライバ・プログラム
$0560
byte[256]
data
波形テーブル
$0660
-
assembly
ドライバ・プログラム
$0F95
byte[8]
data
ビットマスク用定数テーブル
$0F9D
byte[8]
data
ビットマスク用定数テーブル
$0FA5
ushort[51]
pointer
コマンド処理テーブル
$100B
-
assembly
ドライバ・プログラム
$1199
ushort[98]
data
ピッチ定義テーブル
$125D
byte[163]
-
空き領域
$1300
byte[]
data
シーケンスデータ領域
$2DF0
byte[]
data
SEデータ領域
$3100
byte[1024]
data
波形テーブル
$3500
byte[]
data
波形データ領域
$????
byte[]
buffer
エコー用リングバッファ(開始アドレスはエコー・ディレイの値で決まる)
$FF00
byte[196]
-
空き領域
ただし、エコー・ディレイが0msの場合は$FF00 - $FF03をエコー用領域とし、$FF04から空き領域となる。
$FFC0
-
assembly
IPL ROM(起動用)