cheap さんの掲示板に投稿しようとおもったのですが、.pl ファイルが not found で投稿できませんでした. (直してくださったらこの件はそっちに書きます)
[引数なし] 00-bf (未調査) FF2 と同じで町人などの移動や方向制御だと思う c0-cf プレイヤーキャラの移動や方向制御 d0 ゆれる d1 雷鳴 d2 暗くなる d3 明るくなる d4 HP回復 d5 MP回復 d6 隠し通路解錠関連その1 d7 隠し通路解錠関連その2 d8 reset game d9 アムル西に船を停泊 da dance db opening dc poem dd ending de なにかのフラグセットと浮上後(寸前)の外の大陸にいく.; b@6011 |= 0x80; b@0078 = 3 df いきかえり e0 PC $b64f; 外マップでは止まらないが詳細不明 e1 PC $b668; 同上 e2 ひかる fd 1つ前に移動(デジョンx1). fe 繰り返し(?) ff script 終了 [引数1つ] e3-e6 xx 効果なし; rts のみ e7 xx アイテム1つ消費. 引数はアイテムID e8 xx b@6102 &= xx; 状態異常解除(全員), 0x00 で全部解除 e9 xx b@6102 |= xx; 状態異常付加(全員), 0xff で全部付加 ea xx w@601d += xx; 所持金を256ぎる単位で加算 eb xx w@601d -= xx; 上記の減算版 ec xx b@601b += xx; キャパシティ加算 ed xx b@601b -= xx; 上記の減算版 ee xx b@600b = xx; NPC 設定 ef xx 外で起こすようなスプライト制御系統のイベント f0 xx セリフを出すその1 f1 xx セリフを出すその2 f2 xx address $6020-$603f の RAM へ OR 演算で bit を立てる. ゲーム進行のフラグを立てている. 引数の bit2:0 が対象 data bit で、 bit7:3 が address offset. f3 xx 上記の AND 演算で bit を下げる版 f4 xx script data 0xf2 から 対象アドレスを $6080-$609f に変えたもの. f5 xx 上記の AND 演算で bit を下げる版 f6 xx script data 0xe7 の消費を取得に変えたもの f7 xx 戦闘開始. 引数は敵のグループ番号. f8 xx BGM 変更. 引数は曲番号. f9 xx 特定の外の場所へ移動 fa xx 特定の屋内の場所へ移動 fb xx 用途不明; b@0045 = xx; b@0044 = $80 fc xx xx frames 待機
注)
- 移動,戦闘,演出は滞在中の大陸や屋内屋外で挙動が変わるものが結構ある
- b@6102 は address $6102 を byte 単位で扱っての意味. w@601d は little endian 16 bit 単位で扱う.
- &, |, ^ 演算子の意味は C と同じ
- セリフコマンドが2種類ある理由は未調査
(2022年1月19日追記)
command 0xf3 と 0xf5 が XOR 演算版と書いていましたが誤りでした. 該当部は訂正しました. さらに cheap さんにその間違いをアドバイスするという失態. すいませんでした.
言い訳なんですが FF2 は XOR 演算だった先入観と $b9a6 eor #$ff; $and $6020,y を $b9a6 eor $6020,y とななめ読みして、早合点してました.