01-26-2023, 02:23 AM
(01-26-2023, 02:06 AM)Vega Wrote: Just to get this out of the way, if you haven't seen this "Index" yet, here it is - https://mariokartwii.com/showthread.php?tid=1114
It's a full guide from Beginner to Pro for PPC ASM
To address your question at the very bottom of your reply, well it depends...
Regarding Gecko Codes, you can...
1. Use a C2 Code hooked to an address that occurs every frame in a race and only in a race.
2. Use a C0 code which would require some check to verify you are in a race (to prevent DSI exceptions and what not)
Option 1 is preferred.
C2 Gecko codes work via the Code Handler placing a backwards branch on the address in question. The original instruction at the address is overwritten. The backwards branch jumps to a reserved spot in memory where the C2 Code's specific instructions reside at. C2 Code gets executed, and then it will branch back to where it came from. Therefore, in most C2 codes, you need to supply the Hook Address's original instruction.
Regarding C0 codes, here's a nice tutorial - https://mariokartwii.com/showthread.php?tid=1156
Option 1 (C2 code) can be broken into 2 sub options, in regards to something such as CLF's code...
1. Change the 04 RAM Write code to be a C2 Code.
2. Use an unrelated address and write source to modify the instruction residing at CLF78's address (this would require some cache instructions as you will be doing what is known as self modifying code). This is essentially the same mechanism that would be done on a C0 code (rewrite executable instruction at address)
sub option 1 is obviously the best choice. You could then just write out basic source to check the time left in match and then preform said actions to modify mini map's opacity
---
Unfortunately, the Address on CLF78's code only executes once at the start of a race/battle. Meaning once said race/battle starts, the opacity cannot be changed until next race/battle.
There's probably a complex workaround to this. There's also a possibility of modifying the entire visibility of the HUD as a whole in which that is "allowed" to be done at anytime. Of course the issue is you are effecting the HUD as a whole unit.
Thank you for the guides; I haven't seen them yet as I have registered an account just a few hours ago.
This actually seems a lot do understand, learn and analyze in order to implement this feature - I may come back to this when I'm willing to invest that time and energy in the future.