「英雄伝説 空の軌跡 the 3rd」というゲームソフトで遊んでいた。 このソフトのセーブデータを改竄するツールは出回っており、キャラクタのステータスやら装備やらを最強にすることが可能だ。 このゲームには雑魚敵との戦闘を回避する装備なども存在するため、セーブデータの改竄だけでもかなり出来ることが多い。
とは言うものの、ボスキャラとは戦わないと物語が先に進まない。 そして、味方キャラクタのステータスが最強でもボスキャラとの戦闘はほどほどの時間がかかって面倒くさいのである。 そこでチート。 以下の差分を ED6_WIN3.exe に適用すれば敵への攻撃は常にその敵キャラの残り HP と同じダメージを与える。 つまりは必ず一撃で倒せる。 また、味方キャラへの攻撃は常に 0 のダメージしか負わない。
ただし、敵への攻撃をミスした場合にはダメージを与えられないし、敵のガードが成功した場合もダメージを与えられない。 あくまでダメージを与える処理の部分で強制的に値を書換えているだけである。
0000DD21: 90 8B 0000DD22: 90 9E 0000DD23: 90 70 0000DD24: 90 02 0000DD25: 90 00 0000DD26: 90 00 0000DD27: 90 EB 0000DD28: 90 40 0000DD61: 90 66 0000DD62: 90 83 0000DD63: 90 3E 0000DD64: 90 04 0000DD65: 90 73 0000DD66: 90 BA 0000DD67: 90 33 0000DD68: 90 DB 0000DD69: 90 57 0000DD6A: 90 53 0000DD6B: 90 EB 0000DD6C: 90 13 0000DD7E: 57 EB 0000DD7F: 53 E1
ちなみにこの差分はいつものごとくファイル内の位置と書換え前の値、そして書換え後の値をひとつの行で表している。
注意点としては、2007 年発売の Windows 版を想定しているものなので、 Windows7 対応版 (2009 年発売) や Windows8 対応版 (2013 年発売) では効果を確認していない。 おそらくまともに機能しないだろう。
さて、少しだけ差分の内容について解説しておく。 このゲームを構成するプログラムでは敵も味方も同じインターフェイスに基いてダメージの増減をおこなっているようだ。 オブジェクト指向的に表現すれば敵キャラも味方キャラも同じクラス (または同じクラスから派生したクラス) であるということだ。 なので、単純に一撃で倒せるようにする改造すると敵からの攻撃でも一撃で倒されてしまうことになるのである。 幸いにも各オブジェクトは連番を含んでいたのでそれで分岐するように処置をした。 上述の差分で書換え前の値が 90 (ニーモニックでいえば NOP) の部分が多いのは、パディングで空いている隙間に分岐処理などを詰め込んだからである。
Document ID: 1ee52c4658ae6327140a42ee78459047