以下のイベントを含むマップイベントを持ったマップデータを作成する。
このマップデータをバイナリエディタで開く。
画像赤枠で囲った部分が右辺1(65535)を表す部分。(ウディタは数値をリトルエンディアンで扱っている)
これを-2,000,000,000 未満になるよう編集する。
(0x80 00 00 FF = -2,147,483,393)
編集後、ウディタで該当イベントを開く。
設定した値がそのまま表示されている。
この変数の中身を表示してみる。
実行時には -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)に編集し、イベントを開く。正常に参照できることを確認した上で、これまで同様イベントを実行する。
代入演算子が不正な場合は代入処理は行われないようである。