新しくフロアを追加するにあたって、DQ3では存在感のない無限回廊を用意することを考え付いたものの、実装するにはまず仕組みを理解する必要があるわけで、ちょっと中を見てもまるで理解できず前回のパッチリリースではやむなく見送っていました。今回ようやく解析できたのでフロア関連のギミックについて解説します。DQ3マップエディタの使用は必須です。
トピックは以下の3点です。
- 1フロアに複数の通行構成情報をセットし、大きなマップを実現する際の注意点
- 屋根の配置
- 無限回廊の実装方法
まずは1からです。通行構成情報はサイズに制限があり、マップの形が四角でない場合は余計な空白を食ってしまうケースがあります。DQ3(6も?)では、「1マップ上に複数の通行構成情報を展開する」ことで対応しているようです。具体例を挙げると地球のへそB1Fで、4つの通行構成情報を使用しています。
- SR: $0A6691 地球のへそB1F進入時初期化処理
略 | |||
---|---|---|---|
0A66A0 | LDA #$00C5 | A=#$00C5 | 通行構成ID |
0A66A3 | JSL $C774E4 | SR: $0774E4 引数:1#$00 引数:2#$00 引数:3#$01 | 通行構成継ぎ足し設定 |
0A66AA | LDA #$00C6 | A=#$00C6 | 通行構成ID |
0A66AD | JSL $C774E4 | SR: $0774E4 引数:1#$00 引数:2#$00 引数:3#$02 | 通行構成継ぎ足し設定 |
0A66B4 | LDA #$00C7 | A=#$00C7 | 通行構成ID |
0A66B7 | JSL $C774E4 | SR: $0774E4 引数:1#$00 引数:2#$00 引数:3#$03 | 通行構成継ぎ足し設定 |
略 |
DQ3マップエディタでマップ番号253を指定すると地球のへそB1Fのマップが見れます。「通」ボタンを押すと通行構成情報がマップの一部にしか設定されていないことがわかると思います。
そこで、「変」ボタンを押し適用する通行構成IDを#$C5に変更し、再度「通」ボタンを押すとまた別の部分の通行構成情報が設定されているのがわかります。
#$C6、#$C7と値を変えるとそれぞれの担当部分の通行構成情報がわかります。上記プログラムはこれらの情報をインデックス付き(0,1,2,3)でマップ上に展開していると推測できます。この0,1,2,3の番号は後々屋根の設定などでも使用するので覚えておいてください。
さらに通行構成情報を編集する際に注意すべき点があります。継ぎ足すことを前提にしている場合は、互いの通行構成情報は重なる部分を用意すること、さらに、PCが通る部分の継ぎ目に特定のフラグをセットしておくこと、の2点です。上の画像の左下のステータスバーの部分を見てもらいたいんですが、同じ座標を示しています。その右の値はその場所の通行フラグです。通常の床は#$2000(透過)ですが、それぞれ、#$6000、#$E000になっているのがわかると思います。要はそれぞれ通常の#$2000のフラグに加え、#$4000、#$4000+#$8000のフラグがそれぞれONになっているわけです。細かい理屈は調べていないので不明ですが、継ぎ足しの場合は受け渡し?の座標(偶数座標でないと問題がある?)に#$4000, #C000を設定する必要があるようです(実際この設定を行わない場合には正しく動作しませんでした)。この受け渡しの設定は1通行構成情報内に複数設定できるかどうかわかりません。この部分はまじめに調べていないので不明な点がまだあります。
コメント