最新の10件
ページ | 日付 |
---|---|
en:guid:febuildergba:work_support | 2023/06/08 20:25 |
guide:febuildergba:作品支援 | 2023/06/08 20:24 |
最新の10件
ページ | 日付 |
---|---|
en:guid:febuildergba:work_support | 2023/06/08 20:25 |
guide:febuildergba:作品支援 | 2023/06/08 20:24 |
FEといえば、特徴的な要素として村訪問イベントがあります。
村を盗賊より早く訪問しなければならないため、プレイヤーを急がせてミスを誘えます。
また、空が飛べるユニットで先回りしたり、村を守るため兵力分散を強いたりと、新しい遊び方を追加してくれます。
村があるかないか、盗賊の初期位置がどうかという要素だけで、マップの難易度がかわることはよくあることです。
ただ、村訪問イベントを作るのは、とても困難です。
いろいろなものを設定しないと作ることが出来ません。初心者の挫折ポイントの一つだと思います。
ここではできるだけわかり易く解説します。
マップエディタ(FEMapCreator とか)
MAR array inserter.exe
mar_conv_Changes2.exe
ProjectFEGBA
サンプル
http://ux.getuploader.com/FE4/download/247/fe8_town_sample.7z
こんなマップを作ってみました。
15×10のマップです。
(15×10といえば狭いようですが、ゲームでプレイしてみるとそれほどでもないです。)
(a_map.marとして保存しました)
せっかくなので、閉じ村と、廃村も作りましょう。
(b_tojimura.marとして保存しました)
(c_haison.marとして保存しました)
フィールドマップならば、閉じ村:8A9B25C 廃村:8A9B03C として、データはあるので作らなくてもいいのですが、せっかくなので説明用に作成します。
メインマップを追加します。
今回は、序章を改造します。
MAR array inserter.exe でメインマップ a_map.mar を追加します。
アドレスは 0x1000000 としました。
追加したら、追加したアドレスをメモっておきましょう。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
マップの部分変更を作るときは、MAR array inserter.exeではなく、mar_conv_Changes2.exe を使います。
mar_conv_Changes2.exeに、部分変化する部分 *.mar をドラッグします。
まずは、閉じ村の b_tojimura.mar からやってみます。
mar_conv_Changes2.exeに、b_tojimura.mar をドラッグします。
そうすると、一瞬、dos窓が表示された後で Change_MAP.gba というファイルができます。
Change_MAP.gbaには、マップ変化させる情報がはいっています。
Change_MAP.gbaをバイナリエディタで開き、中身を ROM の適当な場所にコピーします。
今回は、末尾に入れてみます。
b_tojimura.mar を、mar_conv_Changes2.exeで変換してできたファイル。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
部分変化 閉じ村 | 0x1000044 |
続いて、c_haison も、同じように mar_conv_Changes2.exe で変換して、ROMの末尾に追記します。
c_haison.mar を、mar_conv_Changes2.exeで変換してできたファイル。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
部分変化 閉じ村 | 0x1000044 |
部分変化 廃村 | 0x1000046 |
メモを取り出してください。こう書いてありますよね。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
部分変化 閉じ村 | 0x1000044 |
部分変化 廃村 | 0x1000046 |
それでは、1000000 と入れる・・・
わけではありません。
マップはポインタですので、+0x8000000しないといけません。
0x1000000 + 0x8000000 = 0x9000000 となり、
0x9000000 が、入れる値になります。
GBAでは実行時にROMの内容が 0x8000000以降に配置されるためです。そのため、実行時に参照するものは +0x8000000 を足さないといけません。
よって、入れる値は、0x9000000になります。
ここで一つ困ったことがあります。
序章には、「制圧ポイント、宝箱、扉等のオブジェクト」が一切ありません。
そのため、追加できる領域がありません。
新規に領域を確保しなくてはいけません。
(既存のイベント条件などの適当な領域を再利用するのは危険です。たいていのフリーズはイベント条件で変な値が立ってしまったことによっておきます。できるだけイベントの再利用はさけて、新規に領域を割り振ることをおすすめします。1つたったの12バイトです。そのために危険を犯すことはないでしょう?)
保存したら、ProjectFEGBAでもう一度先ほどの画面にアクセスします。
確保した領域を割り当てていきましょう。
とりあえず、今回はイベント条件を0x1000070から割り当てていきましょう。
割当を決めたら、メモに書いておきましょう。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
部分変化 閉じ村 | 0x1000044 |
部分変化 廃村 | 0x1000046 |
イベント条件 | 0x1000070 |
割当は、0x1000070ですが、マップ同様にポインタですので、+8000000して、0x9000070 がイベントポインタに書くべき値になります。
値を書いたら、一時書き込みで保存してください。
00 00 00 00 まで検索するのチェックを外して、検索ボタンを押してください。
このポインタ先に書いてあるイベントが表示されます。
もし、このようなエラーがでたら無視してください。
ProjectFEGBAは、よくこのエラーを吐きますが、ガン無視してください。
これ一つ一つが、「制圧ポイント、宝箱、扉等」のイベントになります。
例えば、宝箱を10個だしたければ、10個のイベントを消費します。
村訪問もその1つです。
村訪問は例外的に、イベントを2つ消費して作ります。
訪問するイベントと、盗賊が村を襲うときに利用する村の中心イベントの2つからなります。
まずは、先頭の 01000070を選択してください。
以下のように入力してください。
発生タイプ | 6(訪問村) |
フラグ | 9 |
イベント | 9000100 |
種類 | 10(民家) |
X | 10 |
Y | 3 |
設定値:6(訪問村)
村訪問の場合は、必ず6(訪問村)にしてください。5の王座、民家ではダメです。
設定値:9
村に何度も入れるのはまずいので、フラグを立てます。
村に入ると、自動的に、フラグ9がたち、フラグ9が立っていれば、このイベントは発生しなくするという意味になります。
ステージ中では、おもに 7 ~ xx が使われます。
[http://ngmansion.webcrow.jp/wiki/hackfe/index.php?%E3%83%95%E3%83%A9%E3%82%B0|フラグ一覧]
設定値:9000100
村に入った時に、発生させるイベント命令を書きます。
今回は、0x1000100 から割り当てます。
いつもの通り、+0x08000000 した値を書いています。
0x1000100 + 0x08000000 = 0x9000100 です。
イベント命令の場所を決めたのでメモに書いておきましょう。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
部分変化 閉じ村 | 0x1000044 |
部分変化 廃村 | 0x1000046 |
イベント条件 | 0x1000070 |
イベント命令 | 0x1000100 |
設定値:10(民家)
街訪問の場合は、民家にしなくてはいけません。
設定値: X=10 Y=3
街の入口の座標を書きます。
座標で言うと、この位置になります。
設定が終わったら、「ポインタ先内容一時書込」ボタンを押して書き込んでください。
次に、100007Cに村の中心を設定します。
100007Cを選択し、以下のように入力してください。
発生タイプ | 5(王座、民家) |
フラグ | 9 |
イベント | 1 |
種類 | 20(村の中心) |
X | 10 |
Y | 2 |
設定値 5(王座、民家)
村の中心の場合、先ほどとは違い、5(王座、民家)とします。
間違っても、6(訪問村)にしてはいけません。
設定値 9
フラグは、訪問村と同じフラグを入れます。
村が破壊されると入れなくならないといけませんので、フラグを同じにする必要があります。
設定値 1
村破壊にイベントはないのですが、習慣的に1を入れることになっています。
設定値 20(村の中心)
設定値: X=10 Y=2
村の中心を設定します。
村の入口Y - 1 を入れます。
設定が終わったら、「ポインタ先内容一時書込」ボタンを押して書き込んでください。
次は、一度、イベント条件を抜けて、
9000100に設定したイベント命令の設定をします。
先頭アドレスに、設定したいイベント命令のアドレスを入れます。
村訪問イベント 0x9000100 を設定したいわけですが、
ここでは、ファイル上での場所を定義するので、+0x8000000していてはいけません。
0x9000100 - 0x8000100 = 0x1000100 として、ファイル城の本来の位置を指定する必要があります。
(それくらい自動でやれよ!といいたいのはわかりますが、そういうものなので我慢してください。)
先頭アドレスに 1000100 と入れて、検索ボタンを押してください。
ROM上に 0 を連打しているので、ひたすら 0 が表示されます。
これを手で消してイベントを入れるべきなのですが、面倒なので、村イベントを用意してきました。
インポートボタンを押して、d_村event.txtを読み込んでください。
d_村event.txtの中身は以下のとおりです。
20150000''BGM音量を小さく??? 4005020002000000400503002B090000400A00004804A608''[02]の背景で[092B]の会話を表示 21150000''BGM音量を大きく??? 400A0000249D5B08''アイテム入手前??? 400503006D0000002037FFFF''[6D]とっこうやく入手 2802070020010000''章イベント終了
一度、保存してゲームを再度初めから開始してください。
今度は、村に入ると、訪問メニューが表示されました。
訪問メニューを押してみましょう。
イベント命令に書いた命令が実行されて、イベントが開始されます。
とっこうやくゲット。
あれ・・・?
閉じ村にならない・・・。
閉じ村にするには、マップ変化というのを設定しないといけません。
今回は設定していないので、閉じ村にはなりません。
残念ながら、序章には、マップ変化がないので、空へのポインタが割り当てられています。
(そのポインタ先は空です)
そのため、メモリを割り当ててあげなければいけません。
今回は、0x1000200 から割り当てます。
いつもの通り、+0x08000000 した値を書いています。
0x1000200 + 0x08000000 = 0x9000200 です。
マップ変化の場所を決めたのでメモに書いておきましょう。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
部分変化 閉じ村 | 0x1000044 |
部分変化 廃村 | 0x1000046 |
イベント条件 | 0x1000070 |
イベント命令 | 0x1000100 |
マップ変化 | 0x1000200 |
設定値 0
0からの連番で指定します。
同一ステージでは、ほかと被らないようにしてください。
設定値 サイズX=3 サイズY=3
廃村は3×3のデータなので、3×3と設定します。
設定値 9000046
step_b03で、廃村は、0x1000046に置きましたよね。
実行時に参照されるものなので、+0x08000000 する必要があります。
0x1000046 + 0x08000000 = 0x9000046 となります。
部分変化 廃村 | 0x1000046 |
~設定したら、一時書込ボタンで書き込んでください。
次はひとつ下の項目を選択し、閉じ村を定義します。
2番目の 00 を選択し、以下のように入力してください。
これは、村訪問した後の閉じ村のデータです。
村を定義するときは、村破壊データの次に閉じ村のマップ変化を作らないといけません。
番号 | 1 |
X | 10 |
Y | 3 |
サイズX | 1 |
サイズY | 1 |
マップ | 9000044 |
設定値 1
0からの連番で指定するので、今回は1になります。
設定値 サイズX=1 サイズY=1
閉じ村は1×1のデータなので、1×1と設定します。
設定値 9000044
step_b02で、閉じ村は、0x1000044に置きましたよね。
実行時に参照されるものなので、+0x08000000 する必要があります。
0x1000043 + 0x08000000 = 0x9000044 となります。
部分変化 閉じ村 | 0x1000044 |
~設定したら、一時書込ボタンで書き込んでください。
最後にもう一つ下の項目を選択し、終端FFを定義します
設定値 FF
データはここで終わりですよという意味です。
必ず、FFを定義しないといけません。
一次AIを 06行動しない(AI2=移動のみ)
ニ次AIを 05村や宝を襲う。その後… となっているを選択してください。
選択が終わったら、入力ボタンを必ずクリックしてください。
ユニット設定では、入力ボタンを押さないと値が確定されないものが多々あります。
注意してください。
早速ゲームを再度スタートしてみましょう。
グラド兵は設定に従い、村を襲います。
襲われた村は、マップ変化によって、廃村になります。
もし、動作しない場合は、AIの設定を変えた後で、入力ボタンを押したか確認してください。
また、聖魔の賊AIは近くに攻撃可能なキャラが居ると、攻撃のほうを優先するので、挙動を観察する場合は、近寄らずに離れましょう。
また、イベント条件で村の中心の設定を間違うと盗賊は移動しません。
そして、マップ変化の設定を間違うと、廃村になりません。
これらをひとつひとつ確認してください。
盗賊は村を襲ったりした後は、すみやかに離脱してほしいものです。
賊の離脱ポイントを作りましょう。
宝箱を獲得して逃げる賊もこれと同じ設定です。
残念なことに、序章には、離脱ポイントがありません。
そのため、領域を割り当てて上げる必要があります。
今回は、 0x1000300 を割り当てることにしました。
離脱ポイントは、実行時に参照されるポインタなので、+0x08000000 する必要があります。
0x1000300 + 0x08000000 = 0x9000300 となります。
離脱ポイントに、9000300 と、入力し、一時書込ボタンで確定させてください。
離脱ポイントの場所を決めたのでメモに書いておきましょう。
メモ 名前 | アドレス |
テストマップ | 0x1000000 |
部分変化 閉じ村 | 0x1000044 |
部分変化 廃村 | 0x1000046 |
イベント条件 | 0x1000070 |
イベント命令 | 0x1000100 |
マップ変化 | 0x1000200 |
離脱ポイント | 0x1000300 |
01 を選択し、終端コード FF を起きます。
X | 255 |
Y | 0 |
255 == 0xFF です。
座標なので、利便性のため10進数でいれることになっていますので、FFを入れるには、255と入力します。
ProjectFEGBAでは、10進数で入れるところはオレンジ色で表現されています。便利ですね。
設定したら、一時書き込みで保存してください。
お疲れ様でした。
これで、村訪問と、盗賊による村破壊、盗賊の離脱の設定はおしまいです。
これだけ理解していれば、たいていのマップは作れるはずです。
いろいろ値を変えながら、面白いステージを作ってください。