4.14. 仲間キャラクター

4.14.1. 解析
4.14.1.1. $C8C5B8 - キャラクター構造体へのポインタ配列
4.14.1.2. $C8BD12 - キャラクター構造体
4.14.2. TODO リスト

ここでは、$C8BD12 に定義されている構造体、 仲間キャラクター(の定数データの一部)構造体について述べる。

4.14.1. 解析

モンスター構造体の解析を先に行うのが望ましいと思われる。 なぜなら、仲間キャラクター構造体の一部メンバーと同じ意味を持つメンバーが存在し、 それの意味の特定には、モンスター構造体のメンバーの意味を知っている必要があるからである。

例によって、仲間キャラクターの ID に対して、 その仲間キャラクター構造体データのアドレスからなる配列が存在する。 それは $C8C5B8 にある。 これはいつものようにサブルーチン $C92AB5 等によってアクセスする。

4.14.1.1. $C8C5B8 - キャラクター構造体へのポインタ配列

格納されている値は、仲間キャラクター ID に対応するキャラクターのデータが格納されているアドレスである。 ただし、この値に #$C80000 を加算したものが、正確なアドレスとなる。

C8/C5B8:    C8    // DB
C8/C5B9:    12BD  // 00 なし
C8/C5BB:    2DBD  // 01 じぶん
C8/C5BD:    48BD  // 02 ハッサン
C8/C5BF:    63BD  // 03 ミレーユ
C8/C5C1:    7EBD  // 04 チャモロ
C8/C5C3:    99BD  // 05 バーバラ
C8/C5C5:    B4BD  // 06 テリー
C8/C5C7:    CFBD  // 07 アモス
C8/C5C9:    EABD  // 08 マリリン
C8/C5CB:    05BE  // 09 ルージュ
C8/C5CD:    20BE  // 0A いいだま
C8/C5CF:    3BBE  // 0B ミッチー
C8/C5D1:    56BE  // 0C ピエール
C8/C5D3:    71BE  // 0D タイゾー
C8/C5D5:    8CBE  // 0E ハヤーカ
C8/C5D7:    A7BE  // 0F ジュン
...

4.14.1.2. $C8BD12 - キャラクター構造体

構造体一個あたりのデータ格納レイアウトを以下に示す。

表 4.34 $C8BD12 キャラクター構造体 メモリレイアウト

Byte:Bit 80 40 20 10 08 04 02 01
00 キャラクターの名前を示す文字列 ID
01
02 何者なのかを示す文字列 ID
03
04 未使用 他人操作 未使用? パーティ常駐 モンスター 性別
05 レベル初期値
06 レベルアップ ID
07 耐性[02]:イオ 耐性[01]:ギラ 耐性[00]:メラ 別れフラグ 未使用
08 耐性[06]:マヌーサ 耐性[05]:デイン 耐性[04]:バギ 耐性[03]:ヒャド
09 耐性[0A]:マホトラ 耐性[09]:ニフラム 耐性[08]:ザキ 耐性[07]:ラリホー
0A 耐性[0E] 耐性[0D]:ルカニ 耐性[0C]:メダパニ 耐性[0B]:マホトーン
0B 耐性[12]:炎 耐性[11]:踊りふうじ 耐性[10]:やすみ 耐性[0F]:毒
0C 耐性[16]:ぐんたい 耐性[15]:まひ 耐性[14]:たたき 耐性[13]:吹雪
0D 次のバイト下位へ続く 自動回復 複数回 不明 D
0E 次のバイト下位へ続く 行動関係? みかわし
0F 未使用 行動関係?
10 初期の装備アイテム ID [00]
11 初期の装備アイテム ID [01]
12 初期の装備アイテム ID [02]
13 初期の装備アイテム ID [03]
14 初期の装備アイテム ID [04]
15 装備状態 装備グループ ID
16 次のバイト下位へ続く
17 次のバイト下位へ続く 移動時画像 ID
18 次のバイト下位へ続く 戦闘時画像 ID
19 未使用 格闘場 ?
1A $C40014 配列 インデックス

不明 D のメンバーは、解読していないモンスター構造体の同名メンバーと同じ意味を持つ。 それ以外のメンバーはおおまかに解読をしたので、それぞれに名前をつけておいた。 以下、その説明をする。

キャラクターの名前を示す文字列 ID

「ハッサン」「ミレーユ」 「スラリン」等の文字列データ ID である。

何者なのか示す文字列 ID

「さすらいのけんし」「いえでむすめ」 「ファーラット」「くさったしたい」等の文字列データ ID である。

性別

そのキャラクターの性別を表す数値が格納されている。 このパラメータは、 「つよさ」ウィンドウの表示、 アイテム装備、およびおしゃれコンテストのエントリーに影響する。

表 4.35 性別

性別
#$00 おとこ
#$01 おんな
#$02 ???

モンスター

このメンバーを参照しているコードが発見できなかったので、意味は不明としておくのが正しい。 しかし、モンスター系統のキャラクターにだけ 1 が格納されているので、 暫定的にモンスターフラグとみなしておく。

パーティ常駐

そのキャラクターが常にパーティにいる必要があることを示すフラグである。 この値は主人公とバーバラだけ 1 である。

他人操作

この値が 2 であるかどうかで、 命名神処理とルイーダ処理の一部に影響があるようだ。 しかし、全キャラクターについてこの値は 1 であるので、 事実上未使用データである。

レベル初期値

そのキャラクターが初めてパーティに加わるときのレベルから 1 を引いた値である。

レベルアップ ID

キャラクターのレベルアップ処理に参照する構造体 ($FFB6C2) データ ID である。

別れフラグ

ルイーダの酒場に預けたキャラクターと別れるときにチェックするフラグ。 ちなみに、これとは別のフラグを先にチェックして、 そのテストを通過したときに初めて参照されるものである。 この値が 1 のキャラクターとは、別れることができる。

耐性

モンスターの各「耐性」メンバーと同様である。

複数回

モンスターの「複数回」メンバーと同様である。

自動回復

モンスターの「自動回復」メンバーと同様である。

みかわし

モンスターの「みかわし」メンバーと同様である。

初期の装備アイテム ID

キャラクターが初めてパーティに加わるときに、 装備しているアイテムのアイテム ID である。

装備グループ ID

キャラクターがあるアイテムを装備できるか否かを決める値である。 アイテム構造体の装備グループフラグと関係する。

装備状態

初期の装備アイテムの、装備しているものがどれなのかを示す値。 詳細は未調査。

移動時画像 ID

キャラクターの移動時に画面に描画される画像の ID である。 ドラクエビューア [URL2] で画像が確認できる。

戦闘時画像 ID

詳細は未調査だが、 戦闘時に、敵方が仲間キャラクターに変身するためにモシャスを使用したときに 参照する画像の ID と思われる。

格闘場

キャラクターがスライム格闘場に選手として参加できるか否かを示すフラグである。 1 でないと選手として試合に参加できない。

$C40014 配列 インデックス

キャラクターに対する何かの(多分モンスター名)文字列の ID を得るための構造体 ($C40000) のアドレスを格納する配列 ($C40014) のインデックスである。 こう書いてもわかりにくいので、データそのものを以下に示す。 人間系統の仲間キャラクターと、スライムのルーキーだけ 0 なのが興味深い。

.dataarea  キャラクターグループ モンスター名を表す文字列 ID
C4/0000:   00 // 00: 人間&ルーキー
C4/0001:   7E // 01: キラーマシン2
C4/0002:   9D // 02: ランプのまおう
C4/0003:   7D // 03: ボストロール
C4/0004:   4B // 04: ウィンドマージ
C4/0005:   6A // 05: キングスライム
C4/0006:   61 // 06: ドランゴ
C4/0007:   56 // 07: ダークホーン
C4/0008:   19 // 08: どろにんぎょう
C4/0009:   17 // 09: スライムナイト
C4/000A:   2F // 0A: ホイミスライム
C4/000B:   5B // 0B: キメイラ
C4/000C:   33 // 0C: くさったしたい
C4/000D:   89 // 0D: はぐれメタル
C4/000E:   0F // 0E: スライム
C4/000F:   50 // 0F: ばくだんいわ
C4/0010:   41 // 10: スーパーテンツク
C4/0011:   02 // 11: ファーラット
C4/0012:   06 // 12: リップス
C4/0013:   4A // 13: レッサーデーモン
@end
.dataarea $C4000 構造体へのポインタ配列
C4/0014:   C4
C4/0015:   0000 // 00: 人間&ルーキー
C4/0017:   0100 // 01: キラーマシン2
C4/0019:   0200 // 02: ランプのまおう
C4/001B:   0300 // 03: ボストロール
C4/001D:   0400 // 04: ウィンドマージ
C4/001F:   0500 // 05: キングスライム
C4/0021:   0600 // 06: ドランゴ
C4/0023:   0700 // 07: ダークホーン
C4/0025:   0800 // 08: どろにんぎょう
C4/0027:   0900 // 09: スライムナイト
C4/0029:   0A00 // 0A: ホイミスライム
C4/002B:   0B00 // 0B: キメイラ
C4/002D:   0C00 // 0C: くさったしたい
C4/002F:   0D00 // 0D: はぐれメタル
C4/0031:   0E00 // 0E: スライム
C4/0033:   0F00 // 0F: ばくだんいわ
C4/0035:   1000 // 10: スーパーテンツク
C4/0037:   1100 // 11: ファーラット
C4/0039:   1200 // 12: リップス
C4/003B:   1300 // 13: レッサーデーモン
@end

4.14.2. TODO リスト

  • 不明メンバー D の解析

  • 行動関係メンバーの解析

  • 構造体末端の未解析部分の解析