DQ3/6 DQ6のBGMをDQ3にインポートする(逆も可)

画像だけインポートしてあるあの御方をだそうと思い、「BGMも合わせたいよなあ」ということでDQ6のボス戦BGM(ID:#$13)をそっくり抜いてDQ3に移植したのですが、さすがにそれだけでうまくいくほど甘く無いということで以下のようになりました。簡単に確認するために、デバッグのサウンドテスト用のプログラム部分をちょこっと弄る必要があります。

  • SR: $01CDEA デバッグBGMテスト
01CDFACMP #$0180A>=#$0180?#017Fから変更
01CDFDBCC #$03if(c==off) goto $01CE02
01CDFFLDA #$017FA=#$017F#017Eから変更

DQ3のオリジナルのBGMは0~#017Eなので、入力値をチェックしてクリップしている部分を1づつ増やす必要があります。なお、音楽データインデックス($0723BC-)も前後に空きが無いので別の場所に移動し、あわせてこのデータにアクセスしているSRを変更しています。レコードごとのアドレス情報を持っておらず、直接アクセスしているので作業量は比較的少なくてすみます。というわけで早速テストしてみます。

(YouTubeにアカウントを取って動画をうpしてみました)

曲調はOKぽいですが、やはりというか波形データが異なるために再現できていません。ただ、一部同じっぽい部分もあるので、おそらく一部の波形データが異なる、ということだと思われます。というわけで、やるべきことは、

  1. DQ3とDQ6で異なる波形データがなにか調べる
  2. DQ6からDQ3に不足している波形データをインポートする
  3. 音楽データ中の波形データのインデックス?をシフトする

なのではないかなあと当たりをつけて見ました。音楽データの構成についてまるでわかっていないので間違っている可能性もありますが。というわけでまず、1について調査してみました。DQ3には波形データは62、DQ6には波形データは67あります。それぞれの実データのアドレスを見て比較するというアレな作業をしていきます面倒くさいので波形データを比較するプログラムを作成し、比較して見ました。DQ3をベースにした場合、DQ6をベースにした場合の結果を以下に示します。

  • DQ3をベースにした場合(DQ3の音楽データをDQ6にインポートする場合)
DQ3DQ6
0000
0101
0202
0303
04×
0504
0605
0706
0808
0909
0A×
0B×
0C0A
0D0E
0E0F
0F10
1011
1112
1213
1315
1417
1519
161A
171B
181C
191D
1A1E
1B1F
1C20
1D21
1E22
1F23
2026
2127
22×
2329
242A
252B
262D
272F
2830
2931
2A32
2B33
2C34
2D35
2E37
2F38
3039
313B
323E
333F
3440
3541
3642
37×
38×
39×
3A×
3B×
3C×
3D×
×
×
×
×
×

  • DQ6をベースにした場合(DQ6の音楽データをDQ3にインポートする場合)
DQ6DQ3
0000
0101
0202
0303
0405
0506
0607
07×
0808
0909
0A0C
0B×
0C×
0D×
0E0D
0F0E
100F
1110
1211
1312
14×
1513
16×
1714
18×
1915
1A16
1B17
1C18
1D19
1E1A
1F1B
201C
211D
221E
231F
24×
25×
2620
2721
28×
2923
2A24
2B25
2C×
2D26
2E×
2F27
3028
3129
322A
332B
342C
352D
36×
372E
382F
3930
3A×
3B31
3C×
3D×
3E32
3F33
4034
4135
4236

この変換表の見方は、上が、DQ3の音楽データをDQ6に移植する際に波形データをDQ6中の何番の波形データに置き換えればいいかというものです。☓マークは存在しないという意味ですが、存在しない場合はDQ3からDQ6に新規に波形データを移植する必要があります。下はその逆です。次に、音楽データ中でどの波形データを使用しているかについては、音楽データの先頭に記述されているようです。例としてDQ6のボス戦BGMの音楽データの先頭は

07 11 10 39 02 08 2B 0F

となっていますが、これは、1バイト目が使用する波形データ数で、その後1バイト目の数だけ使用する波形データIDの配列が続くようです。この場合は7つの波形データが使用され、それぞれ#$11, #$10, #$39, #$02, #$08, #$2B, #$0Fの波形データを使用する、という仕組みになっているようです。幸いにしてこれらの波形データはDQ3には元から存在するようなので、波形データの移植は不要です(上記下の表を参照のこと)。これに従って波形データIDを変換して、再度サウンドテストをしてみます。

長いので出だしだけですが、1ループ聞いても問題なさそうでした(戦闘BGMとして使用し、エフェクトSEが入ってもOKそう)。著作権的にどうなのという話はさておき、技術的には、波形データが存在しない場合にもデータをごっそり移植すればよく、また音楽データ側もいじるのは先頭の数バイトだけなので少なくともDQ3<->DQ6間のBGM移植は比較的容易、ということになりそうです。

コメント

タイトルとURLをコピーしました