戦闘キャラクター構造体とは、戦闘セッションに参加している敵と味方のキャラクターそれぞれに対して割り当てるオブジェクトの構造を与える型だ。 戦闘キャラクター構造体には仲間用と敵用の二種類存在するので、それらの総称として「戦闘キャラクター構造体」と呼ぶ。 本節では、戦闘キャラクター構造体各種のメモリーレイアウトを表で示し、また各メンバーデータの意味とアクセス例とをごく簡単に記す。
次の表で示されるメモリーレイアウトで構成される、サイズが #$0C
バイトのオブジェクトがアドレス $000760
から 8 個直列している。
戦闘開始時に、パーティーメンバーの並び順に準じてこれらのオブジェクトが対応するメンバーの状態に応じて初期化される。
そして、戦闘の状況が変化するに従って、これらのオブジェクトの状態も変化していく。
戦闘終了後はこの 8 個のオブジェクトの内容は放棄される。
表 3.16 構造体 $000760
オフセット | 桁 | 性質 | アクセス例 | 備考 |
---|---|---|---|---|
$000760
|
攻撃力 | BRK #$89 (args: 8011) |
2 バイト値 | |
$000761
|
* | * | ||
$000762
|
守備力 | BRK #$89 (args: 8015) |
2 バイト値 | |
$000763
|
* | * | ||
$000764
|
すばやさ | BRK #$89 (args: 8980) |
||
$000765
|
#$80
|
ねむりフラグ | BRK #$89 (args: 8043, $43: #$08) |
|
* |
#$40
|
おたけびフラグ | BRK #$89 (args: 8041, $43: #$09) |
|
* |
#$20
|
メダパニフラグ | BRK #$89 (args: 8041, $43: #$0A) |
|
* |
#$10
|
マホトーンフラグ | BRK #$89 (args: 8041, $43: #$0B) |
|
* |
#$08
|
マヌーサフラグ | BRK #$89 (args: 8042, $43: #$0C) |
cf. すなけむりフラグ |
* |
#$04
|
フバーハフラグ | BRK #$89 (args: 8041, $43: #$0D) |
|
* |
#$02
|
なめまわしフラグ | BRK #$89 (args: 8041, $43: #$0E) |
|
* |
#$01
|
マホキテフラグ | BRK #$89 (args: 8041, $43: #$0F) |
|
$000766
|
#$80
|
バイキルトフラグ | BRK #$89 (args: 8042, $43: #$10) |
|
* |
#$40
|
マホカンタフラグ | BRK #$89 (args: 8041, $43: #$11) |
|
* |
#$20
|
不明 | BRK #$89 (args: 8043, $43: #$12) |
モシャスフラグのはずだった |
* |
#$10
|
ドラゴラムフラグ | BRK #$89 (args: 8042, $43: #$13) |
|
* |
#$08
|
ちからためフラグ | BRK #$89 (args: 8042, $43: #$14) |
きあいためと共通 |
* |
#$04
|
さそうおどりフラグ | BRK #$89 (args: 8041, $43: #$15) |
|
* |
#$02
|
ぼうぎょ2フラグ | BRK #$89 (args: 8042, $43: #$18) |
|
* |
#$01
|
ぼうぎょフラグ | BRK #$89 (args: 8042, $43: #$17) |
|
$000767
|
#$80
|
ぶきみなひかりフラグ | BRK #$89 (args: 8042, $43: #$19) |
|
* |
#$40
|
みなぎるフラグ | BRK #$89 (args: 8042, $43: #$1A) |
パルプンテ関連 |
* |
#$20
|
はやぶさフラグ | BRK #$89 (args: 8042, $43: #$1B) |
パルプンテ関連 |
* |
#$10
|
すなけむりフラグ | BRK #$89 (args: 8042, $43: #$1C) |
cf. マヌーサフラグ |
* |
#$0C
|
時間停止カウンター | BRK #$89 (args: 8043, $43: #$1D) |
パルプンテ関連 |
* |
#$03
|
まぶしいひかりカウンター | BRK #$89 (args: 8042, $43: #$1E) |
|
$000768
|
#$80
|
あしばらいフラグ | BRK #$89 (args: 8041, $43: #$1F) |
混乱行動関連 |
* |
#$40
|
未使用 | ||
* |
#$30
|
ねむりカウンター | BRK #$89 (args: 8043, $43: #$20) |
cf. ねむりフラグ |
* |
#$08
|
ルカニ・スカラフラグ | BRK #$89 (args: 8042, $43: #$21) |
|
* |
#$04
|
呪い:頭フラグ | BRK #$89 (args: 8041, $43: #$22) |
|
* |
#$02
|
未使用 | ||
* |
#$01
|
呪い:動きフラグ | BRK #$89 (args: 8041, $43: #$24) |
|
$000769
|
#$80
|
守備力変化フラグ | BRK #$89 (args: 8041, $43: #$25) |
「きているものを ぬぎすてた」ら ON |
* |
#$70
|
未使用 | ||
* |
#$0F
|
コマンドカウンター | BRK #$89 (args: 8041, $43: #$27) |
|
$00076A
|
n/a | n/a | 未使用バイトか | |
$00076B
|
* | * | * |
列「オフセット」は実効空間におけるオブジェクトのアドレスだ。
$000760
というのは最初のオブジェクトのアドレスであり、
次の仲間のオブジェクトのアドレスは $00076C
となる。以下同様にオフセットを計算すればよい。
列「桁」が十六進数で埋まっているものは、バイト内の対応する桁が C/C++ 言語で言うところのビットフィールドになっていることを意味する。
例えば #$0C
となっているフィールドは、そのバイトの真ん中からの下位 2 ビットだけを使う整数値型として 0 から 3 までの値を取り得る。
列「性質」はオブジェクトの構成要素それぞれに対して記者が便宜的に付けた呼び名だ。 どうしてもわかりにくいものについては、列「備考」で説明を補足しておいた。
列「アクセス例」は、プログラムコードが対応する特性にアクセスする命令の一例を示す。
原則的に BRK 命令によって各フィールドにアクセスする。
括弧内の args とあるのは、BRK 命令の特別なオペランドをアドレス順に並べたものである。
この辺の仕様については 3.2.3.4 オペランド #$80
, ..., #$93
: オブジェクトのフィールドにアクセス で述べる。
次の表で示されるメモリーレイアウトで構成される、サイズが #$10
バイトのオブジェクトがアドレス $0007C0
から 16 個直列している。
戦闘開始時に何らかの法則に従ってこれらのオブジェクトが初期化される。
その初期化規則は通常戦とボス戦とで異なるだろうが、ここでは触れない。
仲間キャラクター構造体と同様に、戦闘状況に応じてオブジェクトの状態が変化していくが、
戦闘終了後はこの 16 個のオブジェクトの内容は放棄される。
表 3.17 構造体 $0007C0: 敵キャラクター
オフセット | 桁 | 性質 | アクセス例 | 備考 |
---|---|---|---|---|
$0007C0
|
モンスター ID | BRK #$88 (arg1: #$78) |
$238000 構造体オブジェクトの ID を指す |
|
$0007C1
|
#$80
|
不明 | BRK #$88 (arg1: #$7E) |
|
* |
#$40
|
n/a | n/a | |
* |
#$3C
|
グループ内添字? | BRK #$88 (arg1: #$7E) |
所属グループの何番目かを指す? |
* |
#$03
|
グループ | BRK #$88 (arg1: #$7D) |
何番目のグループに所属するか |
$0007C2
|
HP | BRK #$88 (arg1: #$50) |
2 バイト値 | |
$0007C3
|
* | * | ||
$0007C4
|
MP | BRK #$88 (arg1: #$56) |
2 バイト値 | |
$0007C5
|
すばやさ | BRK #$88 (arg1: #$5C) |
||
$0007C6
|
攻撃力 | BRK #$88 (arg1: #$60) |
2 バイト値 | |
$0007C7
|
* | * | ||
$0007C8
|
守備力 | BRK #$88 (arg1: #$64) |
2 バイト値 | |
$0007C9
|
* | * | ||
$0007CA
|
#$80
|
いなくなった・逃げた | BRK #$88 (arg1: #$79, $43: #$28) |
例えば逃げると OFF |
* |
#$40
|
生存フラグ | BRK #$88 (arg1: #$79, $43: #$29) |
|
* |
#$20
|
マヒフラグ | BRK #$88 (arg1: #$79, $43: #$2A) |
|
* |
#$10
|
どくフラグ | BRK #$88 (arg1: #$79, $43: #$2B) |
|
* |
#$08
|
経験値ゴールドを無視 | BRK #$88 (arg1: #$79, $43: #$2C) |
一度生き返ったことがあると ON |
* |
#$04
|
アストロンフラグ | BRK #$88 (arg1: #$79, $43: #$2D) |
cf. アストロンカウンター |
* |
#$02
|
こおりついてうごけない | BRK #$88 (arg1: #$79, $43: #$2E) |
パルプンテ関連 |
* |
#$01
|
なめまわしフラグ | BRK #$88 (arg1: #$79, $43: #$2F) |
|
$0007CB
|
#$80
|
ねむりフラグ | BRK #$88 (arg1: #$79, $43: #$30) |
cf. ねむりカウンター |
* |
#$40
|
おたけびフラグ | BRK #$88 (arg1: #$79, $43: #$31) |
|
* |
#$20
|
メダパニフラグ | BRK #$88 (arg1: #$79, $43: #$32) |
|
* |
#$10
|
マホトーンフラグ | BRK #$88 (arg1: #$79, $43: #$33) |
|
* |
#$08
|
マヌーサフラグ | BRK #$88 (arg1: #$79, $43: #$34) |
|
* |
#$04
|
エサかじりフラグ | BRK #$88 (arg1: #$79, $43: #$35) |
まもののエサが効くと ON |
* |
#$02
|
もうどくフラグ | BRK #$88 (arg1: #$79, $43: #$36) |
|
* |
#$01
|
マホキテフラグ | BRK #$88 (arg1: #$79, $43: #$37) |
|
$0007CC
|
#$80
|
バイキルトフラグ | BRK #$88 (arg1: #$79, $43: #$38) |
|
* |
#$40
|
マホカンタフラグ | BRK #$88 (arg1: #$79, $43: #$39) |
|
* |
#$20
|
モシャスフラグ | BRK #$88 (arg1: #$79, $43: #$3A) |
cf. モシャス相手 |
* |
#$10
|
ドラゴラムフラグ? | BRK #$88 (arg1: #$79, $43: #$3B) |
敵はドラゴラムに対応していないが? |
* |
#$08
|
ちからためフラグ | BRK #$88 (arg1: #$79, $43: #$3C) |
|
* |
#$04
|
さそうおどりフラグ | BRK #$88 (arg1: #$79, $43: #$3D) |
|
* |
#$02
|
ぼうぎょ2フラグ | BRK #$88 (arg1: #$7A, AL: #$40) |
|
* |
#$01
|
ぼうぎょフラグ | BRK #$88 (arg1: #$7A, AL: #$3F) |
|
$0007CD
|
#$80
|
ぶきみなひかりフラグ | BRK #$88 (arg1: #$7A, $43: #$41) |
|
* |
#$40
|
みなぎるフラグ | BRK #$88 (arg1: #$7A, $43: #$42) |
パルプンテ関連 |
* |
#$20
|
はやぶさフラグ | BRK #$88 (arg1: #$79, $43: #$43) |
パルプンテ関連 |
* |
#$10
|
不明 | BRK #$88 (arg1: #$7B, $43: #$44) |
|
* |
#$0C
|
時間停止カウンター | BRK #$88 (arg1: #$79, $43: #$45) |
パルプンテ関連 |
* |
#$03
|
まぶしいひかりカウンター | BRK #$88 (arg1: #$79, $43: #$46) |
|
$0007CE
|
#$80
|
馬車ドア閉めフラグ | BRK #$88 (arg1: #$79, $43: #$47) |
|
* |
#$70
|
コマンドカウンター | BRK #$88 (arg1: #$79, $43: #$48) |
|
* |
#$08
|
ルカニ・スカラフラグ | BRK #$88 (arg1: #$79, $43: #$49) |
|
* |
#$04
|
呪い:頭フラグ | BRK #$88 (arg1: #$7A, AH: #$4A) |
呪われることはないはずだが? |
* |
#$02
|
n/a | n/a | |
* |
#$01
|
呪い:動きフラグ | BRK #$88 (arg1: #$79, $43: #$4C) |
呪われることはないはずだが? |
$0007CF
|
#$C0
|
アストロンカウンター | BRK #$88 (arg1: #$79, $43: #$4D) |
cf. アストロンフラグ |
* |
#$30
|
ねむりカウンター | BRK #$88 (arg1: #$79, $43: #$4E) |
cf. ねむりフラグ |
* |
#$0F
|
余分+モシャス相手の番号 | BRK #$88 (arg1: #$79, $43: #$4F) |
cf. モシャスフラグ |
* |
#$07
|
モシャス相手の番号 | BRK #$88 (arg1: #$F4) |
cf. モシャスフラグ |