笑い声
笑い声の処理は通常の処理とは切り離された単独の処理になっています。
なので笑い声中は曲の演奏処理が一切行えません。
笑い声は曲番号53Hでセットされますが、処理内容は(E2BFH)b0[笑い声処理中フラグ]、b1[笑い声初期化フラグ]を1にし、(E2BEH)[曲データのバンク種別]を3(バンク19H)にするだけです。
ドライバの処理では、笑い声フラグを確認して分岐します。
初期化フラグが立っていると、SCCを出しCh.Aの音量を15にし、Ch.Aのみキーオン、(E2C0H)[笑い声データアドレスポインタ]をB111Hに設定、初期化フラグを伏せます。
メイン処理では、SCCを出し、[笑い声データアドレスポインタ]のアドレスから分周比2バイトを読み込みアドレスポインタを進めます。分周比が0であれば終了です。
理由は良く分かりませんが分周比を3倍します。データに書かれているのが1/3の値なのか、調整のためなのか不明です。
アドレスポインタは波形データの場所を指しているので、そこから波形データを32バイト転送し、アドレスポインタも更新してそのクロックの終了です。
データフォーマットは分周比2バイト、波形データ32バイトのセットで、それをクロック単位で更新していく形です。
通常のドライバデータで処理もできるような気がしましたが、波形データをクロック単位で変更する点が波形番号0-127の消費との兼ね合いで単独処理になったのだと思われます。
おまけ
分周比3倍が気になったので、3倍バージョンとそのままバージョンで比較してみます。
一気に小物臭くなってしまいました…。調整用と考えて良さそうですかね。