この節では仲間のキャラクターを表現するデータ構造体のうち、RAM 内に存在するものについて述べる。 すなわち、基本情報構造体、職業経験構造体、習得コマンド構造体を説明する。
呼び名を付けるのが難しいのだが、基本情報構造体とは配列 $7E4025
の要素の型だ。
この構造体はサイズが #$2A
バイトであり、次の表に示すような属性で構成されている:
表 4.65 構造体 $7E4025
オフセット | 桁 | 属性 |
---|---|---|
#$00
|
#$00FF
|
レベル (EOR #$41) |
#$01
|
#$FFFF
|
経験値 (EOR #$4126) |
#$03
|
#$00FF
|
経験値最上位バイト |
#$04
|
#$0001
|
死亡フラグ |
#$04
|
#$0002
|
どくフラグ |
#$04
|
#$0004
|
もうどくフラグ |
#$04
|
#$0008
|
マヒフラグ |
#$04
|
#$0010
|
ねむりフラグ |
#$04
|
#$3FE0
|
ちから |
#$05
|
#$7FC0
|
すばやさ |
#$06
|
#$FF80
|
かしこさ |
#$08
|
#$001F
|
職業 ID |
#$08
|
#$00E0
|
職業レベル |
#$09
|
#$03FF
|
HP |
#$0A
|
#$00FC
|
(未使用) |
#$0B
|
#$03FF
|
さいだい HP |
#$0C
|
#$00FC
|
(未使用) |
#$0D
|
#$03FF
|
MP |
#$0E
|
#$00FC
|
最後に使用した移動中のじゅもん(下位 6 ビット) |
#$0F
|
#$03FF
|
さいだい MP |
#$10
|
#$07FC
|
みのまもり |
#$11
|
#$0FF8
|
かっこよさ |
#$12
|
#$0010
|
ルイーダに預けるの禁止フラグ |
#$12
|
#$00E0
|
最後に使用した移動中のじゅもん(上位 3 ビット) |
#$13
|
#$00FF
|
最後に使用した戦闘中のじゅもん |
#$14
|
#$00FF
|
最後に使用した戦闘中のとくぎ |
#$15
|
#$00FF
|
装備状態 |
#$16
|
#$00FF
|
名前文字列 #$00 |
#$17
|
#$00FF
|
名前文字列 #$01 |
#$18
|
#$00FF
|
名前文字列 #$02 |
#$19
|
#$00FF
|
名前文字列 #$03 |
#$1A
|
#$00FF
|
名前文字列 #$04 |
#$1B
|
#$00FF
|
名前文字列 #$05 |
#$1C
|
#$00FF
|
名前文字列 #$06 |
#$1D
|
#$00FF
|
名前文字列 #$07 |
#$1E
|
#$00FF
|
所持品 #$00 |
#$1F
|
#$00FF
|
所持品 #$01 |
#$20
|
#$00FF
|
所持品 #$02 |
#$21
|
#$00FF
|
所持品 #$03 |
#$22
|
#$00FF
|
所持品 #$04 |
#$23
|
#$00FF
|
所持品 #$05 |
#$24
|
#$00FF
|
所持品 #$06 |
#$25
|
#$00FF
|
所持品 #$07 |
#$26
|
#$00FF
|
所持品 #$08 |
#$27
|
#$00FF
|
所持品 #$09 |
#$28
|
#$00FF
|
所持品 #$0A |
#$29
|
#$00FF
|
所持品 #$0B |
上の表で(未使用)の属性は、プログラムからの参照がない、いわば属性の隙間だ。 以下に各属性の概要を記す。
この属性値は仲間キャラクターのレベルの値と定数 #$41
との排他的論理和を表す。
キャラクターのレベルについては 4.20 レベルアップ で述べる。
仲間キャラクターの経験値は 3 バイト長の値で表現する。
ただし、下位 2 バイトの値は定数 #$4126
との排他的論理和の値を保持するようにしている。
チートツールのユーザーでいきなりレベルアップをしようと企む者は、この点を留意しなければならない。
可能ならばデバッグメニューを駆使したほうがよいだろう。
それぞれが仲間キャラクターの異常状態を示すブーリアン値属性だ。 物によっては同時に 1 とならない属性の組み合わせがある。 例えば死亡フラグが 1 ならば、その他の異常状態フラグはいずれも 0 とするようにしている。
4.21 戦闘キャラクター構造体 で関連属性を述べる。
一般的には、これらの属性値は「つよさ」メニューで確認できる内容の値と異なる。 対象キャラクターの職業と装備品にも依存するからだ。
それぞれ仲間キャラクターの現在の HP と MP の値を示す属性だ。
キャラクターの現在就いている職業を表す値を取る属性だ。 職業については 4.12 職業 で述べる。
キャラクターの現在就いている職業の職業レベルを 0..7 で表す値を取る属性だ。 「つよさ」ウィンドウで確認できる星の数より 1 小さい。
最後にキャラクターが使用したそれぞれのコマンドを記憶しておくための属性だ。
値の型はコマンド ID ではなくコマンド表示位置 ID だ。
後述の 4.15.3 構造体 $7E45DD
: 習得コマンド構造体 の対応コマンドのベースアドレスからの「距離」と解釈してもよい。
それぞれの属性の意味は 表 4.68 構造体 $C8BD12 の対応するそれぞれの属性と同じだ。
#$00
..#$07
)
この 8 バイトでキャラクターの名前を表現する文字コードの列を保持する。 文字列については 4.2 文字列 で述べる。
#$00
..#$0B
)
キャラクターの道具袋に入っているアイテムを順番に表す配列だ。 アイテムについては 4.13 アイテム で述べる。
職業経験構造体とは、キャラクターが戦闘で得た職業経験値を記録するためのオブジェクトを表現する型だ。
構造体の物理的なレイアウトは次の表のようになっている。
構造体の属性のそれぞれが、対応する職業の職業経験値を属性値として取る。
この #$14
バイト長のオブジェクトがアドレス $7E4415
に配列してある。
表 4.66 構造体 $7E4415
オフセット | 桁 | 属性 |
---|---|---|
#$00
|
#$00FF
|
せんし職業経験値 |
#$01
|
#$00FF
|
ぶとうか職業経験値 |
#$02
|
#$00FF
|
まほうつかい職業経験値 |
#$03
|
#$00FF
|
そうりょ職業経験値 |
#$04
|
#$007F
|
おどりこ職業経験値 |
#$04
|
#$7F80
|
とうぞく職業経験値 |
#$05
|
#$7F80
|
まものつかい職業経験値 |
#$06
|
#$7F80
|
しょうにん職業経験値 |
#$07
|
#$7F80
|
あそびにん職業経験値 |
#$08
|
#$7F80
|
バトルマスター職業経験値 |
#$09
|
#$7F80
|
まほうせんし職業経験値 |
#$0A
|
#$FF80
|
パラディン職業経験値 |
#$0C
|
#$01FF
|
けんじゃ職業経験値 |
#$0D
|
#$01FE
|
レンジャー職業経験値 |
#$0E
|
#$01FE
|
スーパースター職業経験値 |
#$0F
|
#$01FE
|
ゆうしゃ職業経験値 |
#$10
|
#$03FE
|
ドラゴン職業経験値 |
#$11
|
#$07FC
|
はぐれメタル職業経験値 |
#$12
|
#$00F8
|
(未使用) |
4.12.1 構造体 $C41C3E
: 職業構造体 で述べるように、このメモリーレイアウトは職業構造体で指定されている。
習得コマンド構造体とは、キャラクターが移動中または戦闘中に実行することができるコマンドを表現するオブジェクト型だ。
構造体の物理的なレイアウトは次の表のようになっている。
構造体の属性の全てが 1 ビットで表現されていて、意味としてはブーリアン値属性の集合だ。
いずれも値が 1 ならば対応するコマンドを利用可能であることを意味する。
この #$14
バイト長のオブジェクトがアドレス $7E45DD
に配列してある。
表 4.67 構造体 $7E45DD
オフセット | 桁 | 属性 |
---|---|---|
#$00
|
#$01
|
ホイミ |
#$00
|
#$02
|
キアリー |
#$00
|
#$04
|
べホイミ |
#$00
|
#$08
|
ザオラル |
#$00
|
#$10
|
べホマ |
#$00
|
#$20
|
ザオリク |
#$00
|
#$40
|
べホマラー |
#$00
|
#$80
|
べホマズン |
#$01
|
#$01
|
メラ |
#$01
|
#$02
|
ギラ |
#$01
|
#$04
|
ヒャド |
#$01
|
#$08
|
バギ |
#$01
|
#$10
|
ザキ |
#$01
|
#$20
|
イオ |
#$01
|
#$40
|
メラミ |
#$01
|
#$80
|
べギラマ |
#$02
|
#$01
|
ヒャダルコ |
#$02
|
#$02
|
バギマ |
#$02
|
#$04
|
ザラキ |
#$02
|
#$08
|
イオラ |
#$02
|
#$10
|
ライデイン |
#$02
|
#$20
|
メラゾーマ |
#$02
|
#$40
|
べギラゴン |
#$02
|
#$80
|
マヒャド |
#$03
|
#$01
|
バギクロス |
#$03
|
#$02
|
ザラキーマ |
#$03
|
#$04
|
イオナズン |
#$03
|
#$08
|
ギガデイン |
#$03
|
#$10
|
ミナデイン |
#$03
|
#$20
|
キアリク |
#$03
|
#$40
|
ニフラム |
#$03
|
#$80
|
マホトーン |
#$04
|
#$01
|
マホトラ |
#$04
|
#$02
|
マホターン |
#$04
|
#$04
|
マホキテ |
#$04
|
#$08
|
マホカンタ |
#$04
|
#$10
|
マジックバリア |
#$04
|
#$20
|
ルカニ |
#$04
|
#$40
|
ルカナン |
#$04
|
#$80
|
スカラ |
#$05
|
#$01
|
スクルト |
#$05
|
#$02
|
ラリホー |
#$05
|
#$04
|
ラリホーマ |
#$05
|
#$08
|
マヌーサ |
#$05
|
#$10
|
メダパニ |
#$05
|
#$20
|
フバーハ |
#$05
|
#$40
|
バイキルト |
#$05
|
#$80
|
アストロン |
#$06
|
#$01
|
ドラゴラム |
#$06
|
#$02
|
メガンテ |
#$06
|
#$04
|
メガザル |
#$06
|
#$08
|
バシルーラ |
#$06
|
#$10
|
パルプンテ |
#$06
|
#$20
|
マダンテ |
#$06
|
#$40
|
ひゃくれつなめ |
#$06
|
#$80
|
ビッグバン |
#$07
|
#$01
|
つめたいいき |
#$07
|
#$02
|
あまいいき |
#$07
|
#$04
|
かえんのいき |
#$07
|
#$08
|
どくのいき |
#$07
|
#$10
|
やけつくいき |
#$07
|
#$20
|
あしばらい |
#$07
|
#$40
|
せいけんづき |
#$07
|
#$80
|
まわしげり |
#$08
|
#$01
|
きゅうしょづき |
#$08
|
#$02
|
かまいたち |
#$08
|
#$04
|
ともえなげ |
#$08
|
#$08
|
みかわしきゃく |
#$08
|
#$10
|
ばくれつけん |
#$08
|
#$20
|
みなごろし |
#$08
|
#$40
|
きあいため |
#$08
|
#$80
|
はやぶさぎり |
#$09
|
#$01
|
もろばぎり |
#$09
|
#$02
|
まじんぎり |
#$09
|
#$04
|
しっぷうづき |
#$09
|
#$08
|
ちからため |
#$09
|
#$10
|
あそび |
#$09
|
#$20
|
おたけび |
#$09
|
#$40
|
なめまわし |
#$09
|
#$80
|
たいあたり |
#$0A
|
#$01
|
ぱふぱふ |
#$0A
|
#$02
|
ぐんたいよび |
#$0A
|
#$04
|
まねまね |
#$0A
|
#$08
|
うけながし |
#$0A
|
#$10
|
さそうおどり |
#$0A
|
#$20
|
マホトラおどり |
#$0A
|
#$40
|
ふしぎなおどり |
#$0A
|
#$80
|
しのおどり |
#$0B
|
#$01
|
メダパニダンス |
#$0B
|
#$02
|
おどりふうじ |
#$0B
|
#$04
|
へんしん |
#$0B
|
#$08
|
とびひざげり |
#$0B
|
#$10
|
しんくうぎり |
#$0B
|
#$20
|
ドラゴンぎり |
#$0B
|
#$40
|
ゾンビぎり |
#$0B
|
#$80
|
がんせきおとし |
#$0C
|
#$01
|
さみだれけん |
#$0C
|
#$02
|
メタルぎり |
#$0C
|
#$04
|
みがわり |
#$0C
|
#$08
|
グランドクロス |
#$0C
|
#$10
|
しんくうは |
#$0C
|
#$20
|
つなみ |
#$0C
|
#$40
|
すてみ |
#$0C
|
#$80
|
しょうかん |
#$0D
|
#$01
|
におうだち |
#$0D
|
#$02
|
じわれ |
#$0D
|
#$04
|
すなけむり |
#$0D
|
#$08
|
じひびき |
#$0D
|
#$10
|
いしつぶて |
#$0D
|
#$20
|
だいぼうぎょ |
#$0D
|
#$40
|
つきとばし |
#$0D
|
#$80
|
ひばしら |
#$0E
|
#$01
|
もうどくのきり |
#$0E
|
#$02
|
おいかぜ |
#$0E
|
#$04
|
ぶきみなひかり |
#$0E
|
#$08
|
まぶしいひかり |
#$0E
|
#$10
|
ハッスルダンス |
#$0E
|
#$20
|
いなずま |
#$0E
|
#$40
|
ムーンサルト |
#$0E
|
#$80
|
メガザルダンス |
#$0F
|
#$01
|
せいれいのうた |
#$0F
|
#$02
|
かえんぎり |
#$0F
|
#$04
|
いてつくはどう |
#$0F
|
#$08
|
いなずまぎり |
#$0F
|
#$10
|
めいそう |
#$0F
|
#$20
|
マヒャドぎり |
#$0F
|
#$40
|
ジゴスパーク |
#$0F
|
#$80
|
マグマ |
#$10
|
#$01
|
ギガスラッシュ |
#$10
|
#$02
|
こごえるふぶき |
#$10
|
#$04
|
ひのいき |
#$10
|
#$08
|
しゃくねつ |
#$10
|
#$10
|
こおりのいき |
#$10
|
#$20
|
かがやくいき |
#$10
|
#$40
|
はげしいほのお |
#$10
|
#$80
|
し |
#$11
|
#$01
|
ルーラ |
#$11
|
#$02
|
リレミト |
#$11
|
#$04
|
インパス |
#$11
|
#$08
|
トラマナ |
#$11
|
#$10
|
トヘロス |
#$11
|
#$20
|
フローミ |
#$11
|
#$40
|
レミラーマ |
#$11
|
#$80
|
タカのめ |
#$12
|
#$01
|
ねる |
#$12
|
#$02
|
とうぞくのはな |
#$12
|
#$04
|
おおごえ |
#$12
|
#$08
|
しのびあし |
#$12
|
#$10
|
くちぶえ |
#$12
|
#$20
|
あなほり |
#$12
|
#$40
|
おもいだす |
#$12
|
#$80
|
もっとおもいだす |
#$13
|
#$01
|
ふかくおもいだす |
#$13
|
#$02
|
わすれる |
#$13
|
#$FC
|
(未使用) |
コマンドの配列規則は配列 $FFC69D
に準じている。
コマンド入力ウィンドウでのメニュー項目位置と対応していることが重要だ。