General

Offset Sections Section Size
0x37A4 11 36 bytes

Sections

Offset Character
0x37A4 Squall
0x37C8 Zell
0x37EC Irvine
0x3810 Quistis
0x3834 Rinoa
0x3858 Selphie
0x387C Seifer
0x38A0 Edea
0x38C4 Laguna
0x38E8 Kiros
0x390C Ward

Section Structure

Offset Length Description
0x0000 2 bytes Offset to character name

Squall and Rinoa have name offsets of 0xFFFF because their name is in the save game data rather than kernel.bin.
0x0002 1 byte Crisis level hp multiplier
0x0003 1 byte Gender

0x00 - Male
0x01 - Female
0x0004 1 byte Limit Break ID
0x0005 1 byte Limit Break Param

used for the power of each renzokuken hit before finisher
0x0006 1 byte EXP curve — linear factor (low byte): EXP/level ×10. Retail 100 → 1000 EXP/level. See Character level-up curve
0x0007 1 byte EXP curve — quadratic factor (high byte): acceleration ÷256. Retail 0 (flat curve)
0x0008 4 bytes HP curve — 4 coefficients c1..c4 (see Stat curves)
0x000C 4 bytes STR curve — 4 coefficients c1..c4
0x0010 4 bytes VIT curve — 4 coefficients c1..c4
0x0014 4 bytes MAG curve — 4 coefficients c1..c4
0x0018 4 bytes SPR curve — 4 coefficients c1..c4
0x001C 4 bytes SPD curve — 4 coefficients c1..c4
0x0020 4 bytes LUCK curve — 4 coefficients c1..c4

Stat curves

Each stat stores 4 coefficient bytes (c1, c2, c3, c4, in that byte order) that define the character’s base value of that stat at a given level L (1–100), before junctions, equipped-weapon bonuses, and permanent stat-up bonuses are added. There are three distinct curve shapes, verified against the engine:

Stat(s) Base formula Coefficients Function
HP L·c1 − 10·L² / c2 + c3 c1, c2, c3 (c4 unused) Stat_ComputeCharaMaxHP
STR, VIT, MAG, SPR ( L·c1/10 + L/c2 − L² / (2·c4) + c3 ) / 4 all 4 Stat_ComputeCharaStat
SPD, LUCK L·c1 + L/c2 − L/c4 + c3 all 4 Stat_ComputeCharaStat (separate branch)

All divisions are integer/truncating. HP has no cap in the base function (the final battle max-HP is junctionMultiplier% × base, capped at 9999). STR/VIT/MAG/SPR and SPD/LUCK are clamped to a maximum of 255 by CapTo255 after base + bonus + junction are summed.

Note: SPD and LUCK use the plain linear shape (no quadratic term, no /4), not the STR-family formula. The doomtrain editor charts SPD/LUCK with the STR-family formula, which is incorrect.

Worked example — Squall’s base STR at level 100 (coefficients 30, 5, 2, 38): (100·30/10 + 100/5 − 100²/(2·38) + 2) / 4 = (300 + 20 − 131 + 2) / 4 = 47.

Function addresses

Function Address Description
Stat_ComputeCharaMaxHP 0x496310 HP base-stat curve
Stat_ComputeCharaStat 0x496440 STR/VIT/MAG/SPR and SPD/LUCK base-stat curves
CapTo255 0x495930 Clamps a stat to 0–255