Itaru
That offset in start.dol is part of the “
rtoc” region, which is a special region of the game dol that stores unchanging data.
This can be loaded very quickly with a
single instruction.
The game likes to store floating point values in rtoc, such as
1.0 or
9999.0
---
Here’s an example of a regular game function that seems to use your
rtoc offset in order to limit a stored floating point to 999.0 if it is currently higher than 999.0
https://i.imgur.com/i5pfoMH.png
This is part of function
8006cc7c “
Damage_Apply&UpdateOnscreenPercent”
I looked around a little and found that this other function also seems to have a hard-coded limit of 999 (as an integer) when updating the HUD
When integers are small enough, the game will include them as a part of the code instructions rather than as stored data:
https://i.imgur.com/Jn8vqTZ.png
This is part of function
802f5b48 “
Ab_HUD_Unknown_1”
---
In total there are 4 additional integers that are written as hard-coded data in the instructions.
Setting all of these values to 9999 instead of 999 in addition to your rtoc value seems to allow the damage cap to be changed.
Here’s a dol mod that makes these overwrites:
Code:
-==-
Set damage cap to 9999%
Does not add a fourth digit
[Punkline, Itaru]
1.02 ----- 0x2F27F8 --- 380003E7 -> 3800270F
1.02 ----- 0x2F27F0 --- 2C0003E7 -> 2C00270F
1.02 ----- 0x2F2900 --- 380003E7 -> 3800270F
1.02 ----- 0x2F28F8 --- 2C0003E7 -> 2C00270F
1.02 ----- 0x431C70 --- 4479C000 -> 461C3C00
This changes the damage cap, but
does not add a 4th digit to the display.
I think the digits work using JObj "joints" or "bones" that contain a DObj linked to a TObj "texture"
Sometimes these TObjs include lists of additional textures, which make an animation index. Some characters blink their eyes using this mechanic.
I’ll look into it more tonight if I can, in the meantime here is a list of calls made by function
802f4edc “
Ab_HUD_UpdatePercents?”
Code:
802F4F4C 802F491C zz_02f491c_
802F4F58 8000B09C zz_000b09c_
802F4F94 8036F644 HSD_JObjRemoveAnim
802F4FB0 8000C07C Ab_HUD_Unknown
802F4FBC 8036F8BC HSD_JObjReqAnimAll
802F4FFC 8035E708 HSD_TObjAddAnimAll
802F5008 80034634 PlayerBlock_0xAD_Stamina_LoadDisplayBool
802F501C 8035E800 HSD_TObjReqAnimAll
802F502C 8035E800 HSD_TObjReqAnimAll
802F5038 8036530C HSD_AObjSetRate
802F5040 8035EB6C HSD_TObjAnim
802F5050 8022F3D8 Ab_Unknown_CalledManyTimesOnMenuMovement
802F50A0 8035E708 HSD_TObjAddAnimAll
802F50D0 8035E800 HSD_TObjReqAnimAll
802F50E8 8036530C HSD_AObjSetRate
802F5148 8035E708 HSD_TObjAddAnimAll
802F5174 8035E800 HSD_TObjReqAnimAll
802F518C 8036530C HSD_AObjSetRate
802F51EC 8035E708 HSD_TObjAddAnimAll
802F5218 8035E800 HSD_TObjReqAnimAll
802F5230 8036530C HSD_AObjSetRate
802F5238 80370928 HSD_JObjAnimAll
802F528C 8035E708 HSD_TObjAddAnimAll
802F52BC 8035E800 HSD_TObjReqAnimAll
802F52D4 8036530C HSD_AObjSetRate
802F5334 8035E708 HSD_TObjAddAnimAll
802F5360 8035E800 HSD_TObjReqAnimAll
802F5378 8036530C HSD_AObjSetRate
802F53E8 80371D9C HSD_JObjSetFlagsAll
802F53F8 80371F9C HSD_JObjClearFlagsAll
802F5460 8035E708 HSD_TObjAddAnimAll
802F5490 8035E800 HSD_TObjReqAnimAll
802F54A8 8036530C HSD_AObjSetRate
802F54E4 80371D9C HSD_JObjSetFlagsAll
802F54F4 80371F9C HSD_JObjClearFlagsAll
802F5510 80034634 PlayerBlock_0xAD_Stamina_LoadDisplayBool
802F5834 8000B09C zz_000b09c_
802F5860 80388220 __assert
802F5884 80388220 __assert
802F5944 80388220 __assert
802F5970 80388220 __assert
802F599C 803732E8 HSD_JObjSetMtxDirtySub
802F59C4 80388220 __assert
802F59F0 80388220 __assert
802F5A1C 803732E8 HSD_JObjSetMtxDirtySub
802F5A98 80388220 __assert
802F5AC4 80388220 __assert
802F5AF0 803732E8 HSD_JObjSetMtxDirtySub
802F5B10 802F4B84 zz_02f4b84_