Key Remapper; Chuck [Vega] Nunchuck only. This code allows you to select a Button (Button 1) that will activate another Button (Button 2). Button 1's original function is disabled. Button 2 still behaves normally. XXXX = Button 1 YYYY = Button 2 X/Y Values: 0001 = Left 0002 = Right 0004 = Down 0008 = Up 0010 = + 0100 = 2 0200 = 1 0400 = B 0800 = A 1000 = - 2000 = Z 4000 = C 8000 = Home NTSC-U Rev1 C225A274 00000007 881F005C 2C000001 4182000C 2C000006 40820020 3960XXXX 819F0000 7D805839 41A20010 7D8C5A78 618CYYYY 919F0000 382100C0 00000000 Code creator: Vega #C2 Hooked Address (instruction right before blr of KPadRead) #NTSC-U Launch 802596A4 #NTSC-U Rev1 8025A274 #PAL 8025AD70 #Symbols .set ExtTypeOffset, 0x5C .set ChuckDumpOffset, 0x0 .set ClassicDumpOffset, 0x60 .set A, 0x10 .set Y, 0x20 .set B, 0x40 .set Chuck, 0x1 .set Classic, 0x2 .set ChuckMPlus, 0x6 .set ClassicMPlus, 0x7 #Make sure classic controller is being used #If not, SKIP code #r31 = Ptr to KPADStatus Struct check_kpad: lbz r0, ExtTypeOffset (r31) cmpwi r0, Chuck beq- set_button_1 cmpwi r0, ChuckMPlus bne- original_instruction #Set Button 1 set_button_1: li r11, 0x0400 #B used for assembling, adjust this to your needs #Load current buttons lwz r12, 0 (r31) #Was Button 1 pressed? and. r0, r12, r11 beq+ original_instruction #Button 1 was pressed. Remove Button 1's value. xor r12, r12, r11 #Place in Button 2's value ori r12, r12, 0x1000 #Minus used for assembling, adjust this to your needs #Write new buttons, end code write_new_buttons: stw r12, 0 (r31) #Original Instruction; pop frame of KPadRead original_instruction: addi sp, sp, 0x00C0