The function starting at 0x080c9644 initializes an "entity" slot from a "template".
Early at system boot, the default player party is initialized by calling that function in a loop located at 0x080097ce. The loop is coded to execute 6 times and takes its "templates" from offset sequentially from 0x0852cde0.
I would patch to call that function sometimes near startup with additional characters that you want to set. For instance, calling the function manually -- in GDB -- with the second default template adds an extra Montblanc at position 6:
p ((void (*) (void*, void*, unsigned char))0x80c9644) ( (void*) (0x02000080 + 0x108 * 6 ), (void*)0x0852ce10, 0)
This does also seem to also balance the equipment inventory correctly as long as you are filling an empty spot.
Early at system boot, the default player party is initialized by calling that function in a loop located at 0x080097ce. The loop is coded to execute 6 times and takes its "templates" from offset sequentially from 0x0852cde0.
I would patch to call that function sometimes near startup with additional characters that you want to set. For instance, calling the function manually -- in GDB -- with the second default template adds an extra Montblanc at position 6:
p ((void (*) (void*, void*, unsigned char))0x80c9644) ( (void*) (0x02000080 + 0x108 * 6 ), (void*)0x0852ce10, 0)
This does also seem to also balance the equipment inventory correctly as long as you are filling an empty spot.