Freeze/Unfreeze Ki Blast [Vega] With this code, during any time the Ki Blast is traveling after being shot, you can freeze/unfreeze it in place how ever many times you want before it reaches the opponent. By default, you can only freeze a max amount of 5 Ki Blasts simultaneously. Once you try to go beyond 5, the Ki blast will simply not be generated. However, the limit can be increased via my Ki Blast Modifier code. The highest limit possible that the game allows for frozen Ki Blasts is 20 (which is strange because there is literally NO limit if you are shooting Ki Blasts normally). Therefore, the Ki Blast Modifier Code (set to full max) is provided. That way you can freeze up to 20 blasts and shoot an unlimited amount. There are two different configurations to the code. 1st config effects both 1P and 2P/COM. 2nd config allows you to choose between 1P or 2P/COM, via the P value. P values (2nd config only): 0 = 1P 1 = 2P/COM To freeze the Ki Blast in place, press your Button Activator. To unfreeze, press same Button again. X,Y,Z controller/button values - https://mariokartwii.com/nonmkwcodes/dbzbt3/bt3gecko.txt NTSC-U (1st config) C20D79DC 00000002 3C607FFF 6063FFFF 60000000 00000000 021643F2 00000000 283BXXXX YYYYZZZZ 041643D0 60000000 CC000000 00000000 041643D0 4BEA4E49 E0000000 80008000 NTSC-U (2nd config) C20D79DC 00000002 3C607FFF 6063FFFF 60000000 00000000 021643F2 00000000 283BXXXX YYYYZZZZ C21643D0 00000004 A81F0050 2C00000P 41820014 3C008000 60009218 7C0803A6 4E800021 00000000 CC000000 00000000 041643D0 4BEA4E49 E0000000 80008000 Code creator: Vega Sources~ 1st Config Sources: Ki Blast Mod ASM (present in both configs so it will only be listed here): #Address #NTSC-U = 800D79DC #Set Ki Blast Limit in r3. r3 is a return value given back to Parent function to let it know what the Ki Blast cycle limit is. #Original instruction of mr r3, r30 is not needed. #Limit value signed so max is 0x7FFFFFFF lis r3, 0x7FFF #Ki Blasts Unlimited (well techincally 2 billion limit lol) set for compilation ori r3, r3, 0xFFFF --- 16-bit RAM Write (present in both configs so it will only be listed here): At address 801643F0, there is a subic. r0, r3, 1. This is a timer that starts off as 0x78 and decrements while Ki is in the air traveling. If it hits 0 before reaching the opponent, it disappears. The instruction is changed to subic. r0, r3, 0' (via its lower 16 bits with a 16-bit RAM Write at address + 0x2) to prevent the timer decrementing so the Ki will never disappear. I don't see a reason to ever have the Ki Timer decrement in any circumstance, so this 16-bit RAM Write is always on. --- 32-bit RAM Write (off/on depending on button activator): At address 801643D0, the call of function 80009218 is nopped for the "On" state. This function the only thing in the game responsible for keeping updated write values to where the Ki Blast is located after initial set starting position. For the "Off" state the original instruction is simply rewritten. ======================= 2nd config ASM Source: (NOTE: There is no Nop for 801643D0 when freeze is active. An ASM replaces it for slot checking) ASM: #START ASSEMBLY #Address #NTSC-U = 801643D0 #LR & r0 safe for use #r31 + 0x50 (half) = Slot #r31 + 0x52 (half) = Slot as well #No idea why the game loads the slot as signed halfwords. Also not sure why slot is at 2 diff spots right next to each other. I tried doing team battle to see maybe if the second halfword was member-out-of-team based, but it's not. #Check Slot lha r0, 0x0050 (r31) #Might as well load it like the game does, lul cmpwi r0, 0 #1P used for compilation, adjust this accordingly beq- end_code #Skip legit writes/updates to KI XYZ #Slot not a match, call the function (80009218) that does the legit writes/updates to the Ki Blast lis r0, 0x8000 ori r0, r0, 0x9218 mtlr r0 blrl #End code end_code: #END ASSEMBLY