Sa・Ga2の正体
〜Sa・Ga2の作り方〜
ここでは、Sa・Ga2「秘宝伝説」の徹底解剖を行いたいと思います。
なお、裏技やデータなど、表向きの知識はこちらからご覧下さい。
0.はじめに
ここでは主に、「オブジェクト指向」を取り上げて解説をしていく。よって(自分も偉そ
うなことを言える程知識はないが)、ある程度のプログラミング知識(C++、JAVA等)
を持って読まれることが望ましい。ただ、それでなくとも意味は分かる文章にしてみ
るつもりではある。
また、私は決して本ソフト「秘宝伝説」を改造したり、プログラムを見たりはしていな
い(一部、他サイトで改造コードを見たことはあるが)。あくまで推測である。よって、
これが完全・正確な情報だとは思わないでもらいたい。
1.キャラクターについて
まず、キャラクターについて解説する。敵味方問わず、キャラクターには以下のクラ
ス・変数が設定されていると思われる。
class chara { ……クラス・キャラクター
char name[4], ……名前
race[8], ……種族(モンスター)名
item_name[9][8], ……装備の名前×8+1個
secret_name[8]; ……秘宝の名前
int hp, ……現在HP
max_hp, ……最大HP
offense, ……ちから
max_offense, ……ちから(戦闘中)
defense, ……ぼうぎょ
max_defense, ……ぼうぎょ(戦闘中)
speed, ……すばやさ
max_speed, ……すばやさ(戦闘中)
magic, ……まりょく
max_magic, ……まりょく(戦闘中)
item_num[9], ……装備の使用回数×8+1個
secret_num;
} ……装備している秘宝の個数
緑の文字は、普通考えて思い浮かばないものである。maxとしているのは正確には
誤りである。「ちから」と「すばやさ」に関しては、戦闘中は下がることもあるからであ
る。また、ではなぜ「ぼうぎょ」と「まりょく」があるのか、というと……思い出して欲し
い。戦闘中にパラメータを上昇させるものがあったことを。そう。「マギ」である。この
マギを装備すると、「5+マギの個数」ほどパラメータが上がる。これはROTさんの
サイトの情報を借用してきたものである。
では、青の文字は何か。実はこれは誤りである。正しくは以下の通りになる。
int race, ……種族(モンスター)コード
item_code[8], ……アイテムコード×8
secret_code; ……秘宝コード
つまり、どういうことか。「キャラクター」というクラスの中にわざわざ文字列を保存せ
ず、(別の所で宣言している)アイテム・秘宝のコード(つけられた番号)を覚えてお
いて、メニュー・戦闘画面の呼び出し時にはじめて、そのコードに合った名前を表示
する、というわけである(正確には、名前もコードである。つまり文字に番号をつけて
おき、2ビット×4を記憶させるわけだが、ここは分かりやすいように文字列とする)。
で、これらの初期設定であるが、整数値は全て0、文字列はヌル(null)である。ゲ
ームスタートして、主人公の種族・名前を決定してようやく、パーティ1人目のこれら
の値が埋まるわけである。この事実は、ある裏技に基づいている。
それはどんな裏技か。「えのき主人公」である。主人公の名前決定直後にセレクト
ボタン(またはスタートボタン)を押すと、主人公+えのき3匹のメニュー画面が出る。
だがこの時のえのきは、パラメータ全てが0であるばかりかHPも0、装備は全て「バ
トルハンマー」で使用回数はやはり0になっている。そして注視したいのは名前で、
戦闘に入るとよく分かるが「スペース4つ」で埋められているのではなく、正真正銘
の名無し、文字数なしである。これがヌル、数値でいう0のことである。つまり、ゲー
ムスタート直後は、クラス・キャラクター内の全ての変数が0であることが分かる。
ちなみに、これはあるサイトを検索して分かったことだが、アイテムコードの00(2ビ
ット)が「バトルハンマー」であり、種族コードの00(同じく2ビット)が「えのきもどき」
である。つまり、こういったコードも全て初期値が0であることが分かる。
また、この裏技から、新たな変数を発見することもできる。「えのき主人公」の裏技
をやったことのない人には分かりにくいと思うが、このえのきは人間種族と同様、
パラメータアップすることができる。またアイテムも装備でき、モンスターのように食
肉ができない。このことから、種族コードとは別に「体質変数(仮名)」があると予想
される。つまりこれが0なわけで、その内容は以下の通りと思われる。
0:人間種族。アイテムを装備でき、パラメータアップする。
1:エスパー種族。アイテムを装備でき、パラメータアップ、能力を取得する。
2:モンスター種族。宿に泊まると能力が回復、食肉ができる。
3:メカ種族。装備によってパラメータが変動、宿に泊まると装備が1/2回復。
4:NPC種族。装備できるが外せない。パラメータアップもない。
(5:「せんせい」。装備も食肉もできない)
最初、これらは種族コードで決められることかと思っていたが、そうするとえのきも
食肉できるはずだし、アイテム装備もできないはずである。つまり、このことにより、
種族コードとは別の、「パラメータアップできる」と判別する変数が存在することが
分かるわけである。
だか、1つ分からないことがある。このえのき、モンスターの「えのきもどき」と1つ、
共通することがある。それは「ドレイン防止」という性質である。これは「とかす」
以外のHP吸収能力(「ちをすう」は未確認)を、ダメージは受けるがHPを吸い取ら
れないというものである。これがえのきにもあるということは、このことはひょっとし
て種族コードで特別に決定すことなのかもしれない。
(ここから話は全く別になります^^;)
ところで、秘宝伝説の改造プレイレポートなるものを作成してみました(ただしエ○
ュを、バイナリエディタを用いてですが)。
興味がある方はご覧下さい。パスワードは「重戦車」という英単語(11文字)です。
リターンキーを押すとエラーとなるので、ボタンをクリックして下さい。