Final Fantasy 4 のSPCに0x1000バイト以上のシーケンスを入れる試み

は、まだ試してはいませんが、おそらく可能です。
以下卓上論。

一体いつから────0x3000以降が波形専用だと錯覚していた?

シーケンスエリアに入らいなら、波形エリアに入れればいいじゃない?


通常FF4では、シーケンスエリアのサイズが0x1000になっているため、ソレ以上のサイズの曲は入れられません。
が、波形データエリアに、それっぽくデータを作って入れてしまえば鳴ると思います。
(もっとも、SPCエンジンのジャンプ処理を見ていないので確実とは言えないですが)

波形はARAM上の0x3000(SPCでは0x3100)から、波形セットで指定した順番に読み込まれていきます。
転送処理を見た感じでは、曲や場面によって読み込みアドレスが変わるといったことは無いようです。
これを利用して、追加波形もどきとしてシーケンスを挿入してしまえばよいのではないでしょうか、というのが今回のボクの提案。
たぶん以下の方法でできるとおもいます。

  1. 0x3000以降に挿入したいチャンネルのヘッダを 0x3000 に書き換える
  2. 普通にシーケンスを書く要領で、シーケンスを作る
  3. 作成したシーケンスの先頭2バイトにシーケンスのサイズを追加する。ただし、転送ルーチンの都合上3の倍数の大きさになるようにする。(154[0x9a]バイトの場合は、先頭2バイトに 156["9C 00"] を追記)
  4. 追加波形として作成したデータをなんらかの方法で挿入
  5. 波形セットの一番最初で、挿入したデータの波形番号を指定


たぶんこれだけじゃ「なにいってんだこいつ?」って感じでよくわからんと思うので、後々サンプル等を作って行きたいと思います。

とりあえず今日のところはここまで。