Hey there! First off, welcome to the forums!
Many functions are very very complex. Especially if something such as the r3 arg is pointing to an area of dynamic memory. For the item box functions, I took a quick look at them before.
Essentially there's a parent function that is ran every frame constantly checking if you hit a box. The exact check for the box is near the end of this function. If a certain value is met, a branch route is taken thus calling a set of child functions, and the whole process starts. There's a lot of other elements involved which caused me to give up on it.
Check out this code http://mkwii.com/showthread.php?tid=1390 and set an Instruction BP on the address.
In the Code View, there is a thing named "Call stack" Which shows the hierarchy of functions. The lower functions on the list are like the 'parent functions'. You can go further down the list (such as setting Instruction BPs on them) and see how/when the parent functions get called.
If you are really good at C++/C and disassembly work, I recommend getting Ghidra. http://mkwii.com/showthread.php?tid=1193
You have probably already looked at the symbol map thread. Unfortunately nobody (that is willing to share their work) has provided any StaticR.rel mapping. Ghidra can get you started on that. Once you have that setup, you can take your function addresses and analyze them on Ghidra.
If you don't want to use Ghidra, you can use IDA pro, or get your hands on a cracked version of the original Metrowerks Codewarrior for the Gamecube/Wii.
Many functions are very very complex. Especially if something such as the r3 arg is pointing to an area of dynamic memory. For the item box functions, I took a quick look at them before.
Essentially there's a parent function that is ran every frame constantly checking if you hit a box. The exact check for the box is near the end of this function. If a certain value is met, a branch route is taken thus calling a set of child functions, and the whole process starts. There's a lot of other elements involved which caused me to give up on it.
Check out this code http://mkwii.com/showthread.php?tid=1390 and set an Instruction BP on the address.
In the Code View, there is a thing named "Call stack" Which shows the hierarchy of functions. The lower functions on the list are like the 'parent functions'. You can go further down the list (such as setting Instruction BPs on them) and see how/when the parent functions get called.
If you are really good at C++/C and disassembly work, I recommend getting Ghidra. http://mkwii.com/showthread.php?tid=1193
You have probably already looked at the symbol map thread. Unfortunately nobody (that is willing to share their work) has provided any StaticR.rel mapping. Ghidra can get you started on that. Once you have that setup, you can take your function addresses and analyze them on Ghidra.
If you don't want to use Ghidra, you can use IDA pro, or get your hands on a cracked version of the original Metrowerks Codewarrior for the Gamecube/Wii.