ロックマン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 : 多くの曲番号のやり取りに使われている。