Enemy Growths in Thracia 776

Poking around a bit more, growths aren’t read by the autolevelling routine. I’ll do some more searching tomorrow, but it seems likely that you’ll need some asm to do what you want.

Edit:

As suspected, the autolevelling function is quite a mess. To flag a unit for autolevelling, set their base HP to be one of a few specific values. These values specify which set of ‘growths’ to use when levelling a unit.

VAL  HP STR MAG SKL SPD DEF BLD LUK MOV
$FF  50  20   3  15  10  15  15  10   0
$FE  30   3  20  10  10   5   5  10   0
$FD  70  20   0  15  15  10  20  10   0
$FC  70  25   5  25  20  25  25  20   0
$FB  50   5  25  20  20  10  10  20   0
$FA  90  25   3  25  25  20  40  20   0
$F9  75  50  50  50  35  35  40  20   0
$F8  45  25  25  70  70  25  20  50   0
$F7  50  20   3  15  10  15   0  10   0

These growths are at $888246 (mapped, unheadered) and are preceded by a short pointer table with a pointer to each.

The formula the game uses to determine which pointer to the set of growths to use is:


(((val XOR $FF) + $01) << $01) + $888232

There’s quite a bunch more going on here, including the stuff I had you try before, which removes the initial variance. If you really want enemies that follow their growths, you’ll have to learn 65816 or wait for me to write a fix myself.