5.25. 職業構造体解析

5.25.1. 解析
5.25.1.1. $C4179E 職業構造体
5.25.2. TODO リスト

職業構造体(a.k.a. レベルアップ構造体)$C4179E のメンバー解析を行う。

5.25.1. 解析

職業構造体は、言うまでもなくレベルアップ時の処理に密接な関係を持つ。

5.25.1.1. $C4179E 職業構造体

アドレス $C4179E からすべての職業構造体データが定義されている。 ひとつの構造体データが占めるデータサイズは #$0173 byte と非常に巨大だ。 これが 9 個配列されている。 注意しなければならないのは、職業構造体にはいわゆるヌルデータの概念がないという事実だ。 ID がゼロの職業は、普通に有効なデータ(戦士のもの)である。

また、アドレス $C424A9 からは、各データの先頭アドレスを格納する配列となっている。 ただし、$C424A9 (1byte) だけはデータバンク #$C2 を意味する。

職業構造体のメモリレイアウトは以下のようになっている。 巨大な構造体であるので、記述を一部簡略化してある。

表 5.37 $C4179E 職業構造体

Byte:Bit 80 40 20 10 08 04 02 01
00 文字列 ID
01
02 グラフィック 男
03 グラフィック 女
04 グラフィック 水着
05 未解析
06 初期性格決定テーブルの ID [0]
07 初期性格決定テーブルの ID [1]
08 初期性格決定テーブルの ID [2]
09 初期性格決定テーブルの ID [3]
0A 初期性格決定テーブルの ID [4]
0B 習得呪文配列先頭アドレス
0C
0D
0E 習得呪文配列サイズ
0F レベル 2 経験値
10
11
12 レベル 3 経験値
13
14
... レベル N 経験値のフィールドが続く...
132 レベル 99 経験値
133
134
135 男キャラ Lv 1 のちから
136 女キャラ Lv 1 のちから
137 ちから成長 レベル境界値[0]
138 ちから成長幅 [0]
139 ちから成長 レベル境界値[1]
13A ちから成長幅 [1]
13B ちから成長 レベル境界値[2]
13C ちから成長幅 [2]
13D ちから成長 レベル境界値[3]
13E ちから成長幅 [3]
13F ちから成長 レベル境界値[4]
140 ちから成長幅 [4]
141 男キャラ Lv 1 のすばやさ
142 女キャラ Lv 1 のすばやさ
143 すばやさ成長 レベル境界値[0]
144 すばやさ成長幅 [0]
145 すばやさ成長 レベル境界値[1]
146 すばやさ成長幅 [1]
147 すばやさ成長 レベル境界値[2]
148 すばやさ成長幅 [2]
149 すばやさ成長 レベル境界値[3]
14A すばやさ成長幅 [3]
14B すばやさ成長 レベル境界値[4]
14C すばやさ成長幅 [4]
14D 男キャラ Lv 1 のたいりょく
14E 女キャラ Lv 1 のたいりょく
14F たいりょく成長 レベル境界値[0]
150 たいりょく成長幅 [0]
151 たいりょく成長 レベル境界値[1]
152 たいりょく成長幅 [1]
153 たいりょく成長 レベル境界値[2]
154 たいりょく成長幅 [2]
155 たいりょく成長 レベル境界値[3]
156 たいりょく成長幅 [3]
157 たいりょく成長 レベル境界値[4]
158 たいりょく成長幅 [4]
159 たいりょく成長 レベル境界値[5]
15A たいりょく成長幅 [5]
15B 男キャラ Lv 1 のかしこさ
15C 女キャラ Lv 1 のかしこさ
15D かしこさ成長 レベル境界値[0]
15E かしこさ成長幅 [0]
15F かしこさ成長 レベル境界値[1]
160 かしこさ成長幅 [1]
161 かしこさ成長 レベル境界値[2]
162 かしこさ成長幅 [2]
163 かしこさ成長 レベル境界値[3]
164 かしこさ成長幅 [3]
165 かしこさ成長 レベル境界値[4]
166 かしこさ成長幅 [4]
167 男キャラ Lv 1 のうんのよさ
168 女キャラ Lv 1 のうんのよさ
169 うんのよさ成長 レベル境界値[0]
16A うんのよさ成長幅 [0]
16B うんのよさ成長 レベル境界値[1]
16C うんのよさ成長幅 [1]
16D うんのよさ成長 レベル境界値[2]
16E うんのよさ成長幅 [2]
16F うんのよさ成長 レベル境界値[3]
170 うんのよさ成長幅 [3]
171 うんのよさ成長 レベル境界値[4]
172 うんのよさ成長幅 [4]

文字列 ID

職業の名前を表す文字列 ID である。

グラフィック 男

この職業の男キャラクターのキャラクターグラフィック構造体 ($C893D4) の ID である。

以下の同類フィールドの説明ではいちいち断らないが、 サブルーチン $C63084 を解析すればわかるように、 この値はそのキャラクターが死んでいるとき、 ぬいぐるみ着用時、 レムオル系使用時や、 各種イベント時(例えばロマリア王様モード)等は使用されない。

グラフィック 女

上述「グラフィック 男」フィールドの女キャラクター版である。

グラフィック 水着

この職業の女キャラクターが、以下のどれかを装備している場合に表示されるキャラクターグラフィックの、 キャラクターグラフィック構造体 ($C893D4) の ID である。

  • あぶないみずぎ
  • しんぴのビキニ
  • まほうのビキニ
未解析

未解析。

各職業に対して、非ゼロの値が格納されていることから、 未使用ではない可能性が強い。 遺憾ながら、記者はこのフィールドを参照しているコードを発見することができなかった。

初期性格決定テーブルの ID [0..4]

この職業のキャラクターを仲間登録所で新規に作成する際に参照される。 性格条件群の決定の項以下を参照。

習得呪文配列先頭アドレス

この職業のキャラクターが、レベルアップ時に習得する可能性のあるレベルと、 習得呪文のペアを定義する配列のアドレスである。 厳密には、呪文 ID を直接保持するわけではなく、 $7E3925 構造体データの一部である「習得済み呪文フラグ」の位置を指示する配列 ($C456AC) のインデックスを保持する。

フラグと呪文の対応関係を解析するのであれば、 まずはサブルーチン $C458C8 から始めて、 呼び出しの深いほうに解析していくとよい。

習得呪文配列サイズ

上述「習得呪文配列」のサイズである。 例えば賢者の習得呪文配列サイズは、魔法使いのそれと僧侶のそれの和に等しい。 しかし、三者の習得呪文配列はいずれも異なる。

レベル N 経験値

この職業のキャラクターが、レベル N であるための必要最低限の経験値である。 N は 2 から 99 までの値である。

男キャラ Lv 1 のちから

この職業の男キャラクターを仲間登録所で新規に作成する際、ちからパラメータの初期値となる。 つまり、タネを使ってそのキャラクターのパラメータを上げる前に、 ウィンドウで確認できる値の 16 倍の値である。

女キャラ Lv 1 のちから

上述「男キャラ Lv 1 のちから」フィールドの女版である。

ちから成長 レベル境界値[0..4], ちから成長幅 [0..4]

レベルアップ時に再設定されるちからパラメータの値(の基準値)を計算するのに用いられるフィールドである。 例えば、この職業のキャラクターのレベルアップ直後のパラメータ基準値は、 キャラクターのレベルが「レベル境界値 [k] を越えていて、かつレベル境界値 [k + 1] 未満」と仮定の下で、 以下のように評価される。

基準値 = (上述レベル 1 の値
        + 成長幅[0]     * (レベル境界値[0]     - 2)
       + 成長幅[1]     * (レベル境界値[1]     - レベル境界値[0])
       + ...  
       + 成長幅[k - 1] * (レベル境界値[k - 1] - レベル境界値[k - 2])
       + 成長幅[k]     * (現在レベル           - レベル境界値[k]))
       / 16
男キャラ Lv 1 のすばやさ

上述「男キャラ Lv 1 のちから」フィールドのすばやさ版である。

女キャラ Lv 1 のすばやさ

上述「女キャラ Lv 1 のちから」フィールドのすばやさ版である。

すばやさ成長 レベル境界値[0..4], すばやさ成長幅 [0..4]

上述「ちから成長 レベル境界値」「ちから成長幅」フィールドのすばやさ版である。

男キャラ Lv 1 のたいりょく

上述「男キャラ Lv 1 のちから」フィールドのたいりょく版である。

女キャラ Lv 1 のたいりょく

上述「女キャラ Lv 1 のちから」フィールドのたいりょく版である。

たいりょく成長 レベル境界値[0..5], たいりょく成長幅 [0..5]

上述「ちから成長 レベル境界値」「ちから成長幅」フィールドのたいりょく版である。

男キャラ Lv 1 のかしこさ

上述「男キャラ Lv 1 のちから」フィールドのかしこさ版である。

女キャラ Lv 1 のかしこさ

上述「女キャラ Lv 1 のちから」フィールドのかしこさ版である。

かしこさ成長 レベル境界値[0..4], かしこさ成長幅 [0..4]

上述「ちから成長 レベル境界値」「ちから成長幅」フィールドのかしこさ版である。

男キャラ Lv 1 のうんのよさ

上述「男キャラ Lv 1 のちから」フィールドのうんのよさ版である。

女キャラ Lv 1 のうんのよさ

上述「女キャラ Lv 1 のちから」フィールドのうんのよさ版である。

うんのよさ成長 レベル境界値[0..4], うんのよさ成長幅 [0..4]

上述「ちから成長 レベル境界値」「ちから成長幅」フィールドのうんのよさ版である。

5.25.2. TODO リスト

  • 職業構造体 5byte 目にある 1byte 部分の参照位置特定