3Dダンジョンロールプレイングゲーム 第65回目です。
前回、「探索」→「戦闘」→「探索」→「戦闘」→…の切り替えテストを行いました。
そこで気付いたのですが…、
BGM忘れてました!
普段、パソコンの音を鳴らさないので、BGMがどうなってるか全く気にしていませんでした。
敵と遭遇しフェードアウトする前に「探索」BGMを停止し、敵の表示時に「戦闘」BGMを開始する必要があります。
「戦闘」ロジック進めたいけど、これ今直しておかないと後でバグ取りロジック組みまくることになりそうなので、ここでやっておきます。
これは常駐ロジック(&HC000~&HD9FF)の方に入れる必要があるので、以前に作った使わないフェードアウトCとDを削除し、そこに組み込みます。
まず、走査線割込み内でBGM切り替えロジックを組みます。
(元々は、そのままBGM1 PLAYに進んでいた。)
変数「演奏予約BGMav(&HE023)にBGMb設定しておくと、走査線割り込みが掛かった時に、このロジックでアドレスを設定し演奏が始まります。
演奏開始されると変数「演奏予約BGMavには&HFFがセットされます。
因みに変数「演奏予約BGMavに「0」を代入すると演奏停止になります。
BGM | 曲名 | 使用場所 |
1 | 探索 | ダンジョン探索中 |
2 | 戦闘 | 戦闘中 |
3 | お店 | 宿屋、武器屋、道具屋内 |
(元プログラム)
現状、走査線割込み開始ロジックから直接メインプログラムに飛んでいるのですが、ここは分割し、走査線割込み開始部分だけをサブルーチン化します。
そしてBASICからマシン語コール(695行)する着前に、割込み開始サブルーチンをコールするようにします。(690行)
BASIC部からマシン語コール先を設定する時(745行等)に、併せてBGM番号を設定するようにします。
そして、割込み開始サブルーチンを通るように690行へ制御を飛ばします。(750行等)
これで、「探索」と「戦闘」のBGM切り替えは問題なしです。
因みにBGMは、容量の都合で非常に単純・簡単なものになっております。