入力/選択可能な箇所の数値を、バイナリ操作によって意図しない値に変更した場合の挙動

数値指定する箇所を変更した場合の挙動

以下のイベントを含むマップイベントを持ったマップデータを作成する。

イベント

このマップデータをバイナリエディタで開く。

画像赤枠で囲った部分が右辺1(65535)を表す部分。(ウディタは数値をリトルエンディアンで扱っている)

バイナリ1

これを-2,000,000,000 未満になるよう編集する。

(0x80 00 00 FF = -2,147,483,393)

バイナリ2

編集後、ウディタで該当イベントを開く。

マップイベント

設定した値がそのまま表示されている。

この変数の中身を表示してみる。

デバッグ表示

実行時には -2,000,000,000 に矯正される。

このイベント行をダブルクリックし、編集ウィンドウを開く。

イベント編集

やはり -2,000,000,000 に矯正される。

変数しか指定できない箇所を変更した場合の挙動

変数操作のイベントコードを入力し、バイナリエディタで開く。

イベント
バイナリ

0x00 10 C8 E0 = 1,100,000 (「このマップイベントのセルフ変数0」を表す数値)なので、この数値を変数呼び出し値ではない値に変更する。

ここでは 255 (0x00 00 00 FF)に設定する。

バイナリ

この状態でマップイベントを開く。

マップバイナリ

変更した値が表示されている。

このイベントコマンドのあとにデバッグ文表示コマンドを挿入し、イベント起動してみる。

イベント実行

イベントも問題なく実行される。エラーにもならない。

なお、これに限らず、エラーになりそうな値を入力してもエラーにならない箇所がいろいろある。

変数操作+で座標情報を取得する際に座標に負数を指定するなど。

エラーになる場合もある。

可変/ユーザ/システムDBに対する読み書きで定義されていない項目にアクセスした場合など。

このイベントコマンドをダブルクリックして編集ウィンドウを開く。

イベント編集

数値同様、初期表示は矯正される。

このウィンドを閉じたり、(イベントの編集はせずに)マップを保存したりしても、代入先として設定された"255"の値が勝手に矯正されることはない。

演算子など、変数呼び出し値以外の、ウディタ上で選択する値を変更した場合の挙動

変数操作コマンドで確認する。

変数操作コマンドを選択すると、右辺1と右辺2の演算子を決めることができる。

演算子選択

この演算子は内部的にはそれぞれ 0x00 ~ 0x60 の値を持っている。

この値をバイナリ上で存在しない値に変えた場合の挙動を確認する。

バイナリ

赤枠で囲った箇所が演算子を表すデータ。

この値を、演算子が割り当てられていない値(今回は0xA0)に編集する。

イベントを開く。

マップイベント

やはり表示が崩れるが、エラーにはならない。

イベントを少し編集して実行してみる。

イベント実行

よくわからない挙動をする。

さらに、変数に 2,000,000,000 を超える値が入っていることが確認できる。

このあと先程編集した値を別の値(具体的には0xB0)に変更して動作を確認したが、同じような挙動を示すことを確認した。

代入演算子を変更した場合はどうなるか確認してみる。

バイナリ

代入演算子も同じアドレスで管理されており、 0x00 ~ 0x0B が割り当てられている。

上記以外の値(今回は0x0C)に編集し、イベントを開く。正常に参照できることを確認した上で、これまで同様イベントを実行する。

代入演算子が不正な場合のイベント実行

代入演算子が不正な場合は代入処理は行われないようである。