• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

Request 4-digit damage code

Punkline

Dr. Frankenstack
Joined
May 15, 2015
Messages
423
Itaru 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 8006cc7cDamage_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 802f5b48Ab_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 802f4edcAb_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_
 
Last edited:

Itaru

MasterGanon
Joined
Jun 25, 2014
Messages
279
Location
日本 茨城県
Itaru 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 8006cc7cDamage_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 802f5b48Ab_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 802f4edcAb_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_
Thank you very much for your help. :)
I want to start to make TAS. Can you tell me that it seems possible or impossible?. thanks.
 
Last edited:
Top Bottom