ロックマン2
サウンドドライバ$30000($8000) 詳細
メモリ用途
プログラム領域
$8000 : NMI毎に(jsrで)呼ばれるべきところ。引数特に無し。
$8003 : 曲や効果音を選択する時に(jsrで)呼ばれる。
また、曲止め、効果音止め、フェードイン/フェードアウト、テンポアップの際も。
引数 :
Aレジスタ :曲番号($00-$42,$FC-$FF)
$FC : 曲のテンポを速める。
$FD : フェードイン/フェードアウト
$FE : 効果音止める
$FF : 曲止める
Yレジスタ :曲番号が$FC,$FDの時に意味を持つ。
$FCのとき : Y>=$01以上だとテンポが速まる。その速める程度。
$FDのとき : bit : DSSS SSSS
|||| ||||
|+++-++++- $00-$7f 符号無し、効果の早さ。[単位フレーム]
+--------- 0:フェードイン 1:フェードアウト
ワークメモリ領域
$E0 : 曲-効果音、属性-上書き優先順位。
$E1 : 効果音を鳴らす(処理する)チャンネル。bitごとのフラグ。(bit: XXXX NT21)
$E2 $E3 : トラック設定の時に使うポインタ。
$E4 : NMI避けの為のロック機構フラグ。
$E5 : 一時変数。
$E6 : 一時変数。
$E7 : 曲のテンポ速める変数。曲番号$FCに関わる。
$E8 : bit : DSSS SSSS 曲番号$FDに関わる。
|||| ||||
|+++-++++- $00-$7f 符号無し、効果の早さ。[単位フレーム]
+--------- 0:フェードイン、 1:フェードアウト
$E9 : フェードイン、フェードアウトの進度/段階
$EA : NMIでインクリメント。
$EB : チャンネルベース[$4000+XX]のような使われ方。
$EC $ED : チャンネルベースポインタ[($EC),y]のような使われ方。値は $500,$51F,$53E,$55D。
$EE : 今処理しているチャンネル、 4:SQ1, 3:SQ2, 2:TRI, 1:NOI。
$EF : $E1からコピーされて使用される。
$F0 $F1 : 効果音ポインタ(全チャンネル共通)
$F2 : 効果音用、次の音長処理単位までの待ち時間。(効果音命令$00 XX)
$F3 : 効果音用、現在の繰り返し回数。(効果音命令$04 .. .. ..)
$F4 $F5 : 汎用一時変数/ポインタ。
SQ1 , SQ2 , TRI , NOI 属性 説明
$500 $501 , $51F $520 , $53E $53F , $55D $55E :曲 :曲ポインタ
$502 $503 , $521 $522 , $540 $541 , $55F $560 :曲 :音長(符号なし2byte)
$504 , $523 , $542 , $561 :曲 :テンポ(命令$00による)
$505 , $524 , $543 , $562 :曲 :bit7:連符フラグ(命令$30), bit6-0:今の繰り返し回数(命令$04)
$506 , $525 , $544 , $563 :曲 :bit7-5:タイの個数(命令$2X),bit4-0:使用するモジュレーション定義(命令$08)
$507 $508 , $526 $527 , $545 $546 , $564 $565 :曲 :キー値(命令$05)によって変動する、周波数テーブルへのベースポインタ。
$509 , $528 , $547 , $566 :曲 :ピッチエンベロープ変化値(命令$01のXX)。1byte符号あり数。
$50A $50B , $529 $52A , $548 $549 , $567 $568 :曲 :音高レジスタ値(変調前)
$50C , $52B , $54A , $569 :曲 :(命令$02と$03)音量系レジスタへ入れる値。(for $4000,$4004,$4008,$400C)
$50D , $52C , $54B , $56A :曲 :命令$07のXX。
$50E , $52D , $54C , $56B :曲 :音量エンベロープ用カウンタ。
$50F , $52E , $54D , $56C :曲 :音量エンベロープでの現在の音量($0-$F)
$510 , $52F , $54E , $56D :効 :ピッチエンベロープ変化値(命令$01のXX)。1byte符号あり数。
$511 $512 , $530 $531 , $54F $550 , $56E $56F :効 :音高レジスタ値。Reg値のこと。
$513 , $532 , $551 , $570 :効 :(命令$02と$03)音量系レジスタへ入れる値。(for $4000,$4004,$4008,$400C)
$514 , $533 , $552 , $571 :両 :現在使用しているモジュレーション定義のWW(+bit7:ピッチmodが変位0に向かう時のフラグ)
$515 , $534 , $553 , $572 :両 :現在使用しているモジュレーション定義のXX
$516 , $535 , $554 , $573 :両 :現在使用しているモジュレーション定義のYY
$517 , $536 , $555 , $574 :両 :現在使用しているモジュレーション定義のZZ
$518 , $537 , $556 , $575 :両 :ピッチモジュレーション用時刻カウンタ。
$519 , $538 , $557 , $576 :両 :ピッチの上下動情報。bit7:増減傾向。他bit:極小,極大,0,からの変位カウンタ
$51A $51B , $539 $53A , $558 $559 , $577 $578 :両 :ピッチの変位、音高レジスタ単位。2byte符号あり数。
$51C , $53B , $55A , $579 :両 :$4003,$4007,$400B,$400Fの同じ値の二度書き防止用退避変数と思われ。
$51D , $53C , $55B , $57A :両 :音量モジュレーション用カウンタ。
$51E , $53D , $55C , $57B :両 :音量モジュレーションでの現在の音量。
$57C $57D :曲 :モジュレーション定義へのポインタ。
$57E : 未使用!?
$57F : 未使用!?
---------------------------------------------------------------------------------------------------------------------
他のバンクで
$580 : 多くの曲番号のやり取りに使われている。