It's Raining Ki [Vega] This code will make all Ki Blasts rain in from above, like a meteor shower. There are two different configurations to this code. 1st config effects both 1P & 2P/COM. 2nd config makes you choose between 1P or 2P/COM via the X value. X values (2nd config only): 0 = 1P 1 = 2P/COM NTSC-U Rev1 (1st config) 040007D8 C47A0000 C2164688 00000004 C01F0014 3C608000 C02307D8 EC00082A D01F0014 A87E0012 60000000 00000000 NTSC-U Rev1 (2nd config) 040007D8 C47A0000 C2164688 00000005 A87E0012 2C03000X 40820018 C01F0014 3CA08000 C02507D8 EC00082A D01F0014 60000000 00000000 Code creator: Vega Sources~ 1st config 32-bit RAM Write (present on both configs, so it will only be listed here): At Unused EVA address 0x800007D8, single float value of -1000 is written. By applying this to the Ki Blast's normal Y starting coordinate, it will make the starting location rise up toward the sky. Enough to where, you can' see it in Split Screen regardless of how far away players are from each other. Thus it makes the appearance of Ki Blasts drop down like rain/meteor showers. --- ASM: #START ASSEMBLY #Address #NTSC-U = 80164688 #Hook notes; Hook only executes once for initial Ki launch. #Also note, at this when Hook is executed. Ki Current XYZ (2nd line in struct) is same as Start XYZ (1st line of struct). To make effects take place in game, we need to write to the Current XYZ, NOT the Start XYZ. #r31 = points to start of KiXYZStruct #f0 and f1 safe for use #r3 safe for use if used before Original Instruction #Load Ki Blast Starting Y Coordinate (we can load it from line 1 or line 2 of Struct, it doesnt matter, we'll do line 2) lfs f0, 0x0014 (r31) #Load User flaot constants into f1 lis r3, 0x8000 lfs f1, 0x07D8 (r3) #Apply the updates fadds f0, f0, f1 #Write new Ki Blast Y Coordinate (must be written to 2nd line of Struct) stfs f0, 0x14 (r31) #Original Instruction lha r3, 0x0012 (r30) #Load player slot for r3 arg of upcoming function. (Why does game load it as a signed-extended halfword, huh?) #END ASSEMBLY ======================= 2nd config ASM: #START ASSEMBLY #Address #NTSC-U = 80164688 #Hook notes; Hook only executes once for initial Ki launch. #Also note, at this when Hook is executed. Ki Current XYZ (2nd line in struct) is same as Start XYZ (1st line of struct). To make effects take place in game, we need to write to the Current XYZ, NOT the Start XYZ. #r31 = points to start of KiXYZStruct #f0 and f1 safe for use #r5 safe for use #Original Instruction; we can also use it to check slot, yay lha r3, 0x0012 (r30) #Load player slot for r3 arg of upcoming function. (Why does game load it as a signed-extended halfword, huh?) cmpwi r3, 0 #1P used for compilation, adjust this accordingly bne- end_code #Slot not a match, end the code, allow legit KI starting XYZ position #Load Ki Blast Starting Y Coordinate (we can load it from line 1 or line 2 of Struct, it doesnt matter, we'll do line 2) lfs f0, 0x0014 (r31) #Load User flaot constants into f1 lis r5, 0x8000 lfs f1, 0x07D8 (r5) #Apply the updates fadds f0, f0, f1 #Write new Ki Blast Y Coordinate (must be written to 2nd line of Struct) stfs f0, 0x14 (r31) #End code end_code: #END ASSEMBLY