Fix Team Rotation Bind Enhanced; GCN [Vega] For GCN only. In the game, sometimes using the C stick (left/right) to select Teammates within the Match can accidentally cause you to activate your Emergency Blast Wave. This code disables the C stick from navigating Teammates, and allows you to select a new Button Combo. Don't be pressing any other buttons when using your new button combo to switch Teammates. This "Enhanced" version is a slightly different to my original Fix Bind code. The DPads are disabled entirely except for this code. Therefore, you can now use something like DPad up/down for switching Teammates. Final Important Note: For this code to work properly, P1's GCN must be in Port 1 and P2's GCN must be Port 2. XXXXXXXX = Button/Combo to replace C-stick Left YYYYYYYY = Button/Combo to replace C-stick Right X/Y Values: 00000004 = Y 00000008 = A 00000002 = B 00000001 = X 00000200 = Z 00000040 = Analog left 00000080 = Analog right 00000010 = Analog Up 00000020 = Analog down 00001000 = L 00000800 = R 00010000 = Dpad left 00020000 = Dpad right 00080000 = Dpad up 00040000 = Dpad down You can combine buttons if desired. For example Z + Dpad Up would be 00000200 + 00080000. The X/Y's value would be 00080200. Use a Hex calculator for the addition(s). NTSC-U C221FD94 00000007 A0010008 A0A10014 3D808000 5404073E 54A6073E 54000036 54A50036 988C03F4 98CC03F6 B0010008 B0A10014 4E800020 60000000 00000000 C20545B8 0000000E 38A00000 3CC0XXXX 60C6XXXX 3D808000 388003F0 817D000C 556B083C 7D6B2214 A11D0846 386B0004 7C6360AE 5463801E 7C684378 7CA928F8 7D0A4838 7C0A3000 38600000 41820010 38000000 7C0B61AE 4800001C 7C0B60AE 2C000001 41820010 38000001 7C0B61AE 38600001 00000000 C20545E0 00000008 3CE0YYYY 60E7YYYY 396B0001 7C0A3800 38600000 41820010 38000000 7C0B61AE 4800001C 7C0B60AE 2C000001 41820010 38000001 7C0B61AE 38600001 00000000 Code creator: Vega 1st ASM Source~ #Address 8021FD94 #Load Port1 & Port1 #sp + 8 = PADRead dump spot port 1 #sp + 0x14 = PADRead dump spot port 2 #Load Port 1 Regular Buttons lhz r0, 0x8 (sp) lhz r5, 0x14 (sp) #Save the DPad bits to EVA #Remove DPad bits from Dump spot (disable them) lis r12, 0x8000 clrlwi r4, r0, 28 clrlwi r6, r5, 28 clrrwi r0, r0, 4 clrrwi r5, r5, 4 stb r4, 0x3F4 (r12) stb r6, 0x3F6 (r12) sth r0, 0x8 (sp) sth r5, 0x14 (sp) #Original instruction is a blr blr ########## 2nd ASM Source~ #Address 800545B8 #r10 thru r12 gets carried over to next ASM!!! they are preserved #Set User Mask li r5, 0x0000 #Null mask to enforce no other buttons allowed to be pressed #Set User Button2 to replace C stick Left lis r6, 0x0008 #Z+Dpad Up used for assembling, adjust this to your needs ori r6, r6, 0x0200 #Set EVA upper lis r12, 0x8000 #Set r11 offset li r4, 0x03F0 #Base lwz r11, 0xC (r29) #Use slot (0 v 1) slwi r11, r11, 1 #3F0, 3F1 = P1, #3F2, 3F3 = P2 add r11, r11, r4 #Add in mult'd slot #Load In-Game Custom Button Flags aka Real button (exclude C stick); also used in 2nd ASM and stays intact lhz r8, 0x846 (r29) #Load disabled D-Pad bits that were saved from PADRead addi r3, r11, 4 #P1 will have this as 3F4, P2 as 3F5 lbzx r3, r3, r12 #Move byte to Byte spot #3 within word slwi r3, r3, 16 #Or r3 with r8 to get final Real button or r8, r3, r8 #Flip User mask not r9, r5 #No need to clear junk upper bits as r8 will always be 0x0000zzzz #AND Real button value with Inverted mask Value and r10, r8, r9 #Compare AND result vs User button cmpw r10, r6 li r3, 0 beq- pressed #mask not pressed, reset button status li r0, 0 stbx r0, r11, r12 b end #r3 still 0 #Button pressed check and adjust status pressed: lbzx r0, r11, r12 cmpwi r0, 1 beq- end #r3 still 0 #Set status, set r3 to 1 li r0, 1 stbx r0, r11, r12 li r3, 1 #End end: # ########### 3rd ASM Source~ #Address 800545E0 #NOTE this carries over info from nearby 1st ASM #r10 = AND result #r11 = offset #r12 = 0x80000000 #Set User Button2 to replace C stick Right, will be used in 2nd ASM (stays intact) lis r7, 0x0004 #Z-Dpad down used for assembling, adjust this to your needs ori r7, r7, 0x0200 #Add 1 to offset, can't collide with Button 1 status addi r11, r11, 1 #Compare AND result vs User button cmpw r10, r7 li r3, 0 beq- pressed #mask not pressed, reset button status li r0, 0 stbx r0, r11, r12 b end #r3 still 0 #Button pressed check and adjust status pressed: lbzx r0, r11, r12 cmpwi r0, 1 beq- end #r3 still 0 #Set status, set r3 to 1 li r0, 1 stbx r0, r11, r12 li r3, 1 #End end: #