Hey,
I was having troubles tracing the assembly on this for Mario Kart Wii.
In the game if one shakes, a 1 will be written to the memory for just one frame otherwise 0.
[spoiler]CR:22202088 XER:00000000 CTR:00000000 DSIS:00000000
DAR:00000000 SRR0:8051EBA0 SRR1:0000B032 LR:80745DC0
r0:00000000 r1:80398F58 r2:8038EFA0 r3:90271234
r4:00000000 r5:9026FB10 r6:80890000 r7:00000004
r8:9029BB60 r9:00000028 r10:1CA2995C r11:80398F58
r12:003ED303 r13:8038CC00 r14:BF800000 r15:00000000
r16:00000007 r17:00000000 r18:00000000 r19:808B2F2C
r20:00000000 r21:00000000 r22:00000000 r23:00000000
r24:00000001 r25:00000001 r26:808CB6F8 r27:809C0000
r28:90271234 r29:902712C0 r30:00000000 r31:808A0000
8051EB68: 98830013 stb r4,19(r3)
8051EB6C: 3CA0809C lis r5,-32612
8051EB70: 80A5D70C lwz r5,-10484(r5)
8051EB74: 88054155 lbz r0,16725(r5)
8051EB78: 2C000000 cmpwi r0,0
8051EB7C: 41820024 beq- 0x8051eba0
8051EB80: 2C040003 cmpwi r4,3
8051EB84: 41820010 beq- 0x8051eb94
8051EB88: 2C040004 cmpwi r4,4
8051EB8C: 41820010 beq- 0x8051eb9c
8051EB90: 48000010 b 0x8051eba0
8051EB94: 38800004 li r4,4
8051EB98: 48000008 b 0x8051eba0
8051EB9C: 38800003 li r4,3
8051EBA0: 98830012 stb r4,18(r3) # Store
8051EBA4: 4E800020 blr [/spoiler]
Required is an address which forces exactly one shake when modified and stays like that.
Basically like pushing the Wii Remote upwards and doing nothing else. I'm planning to remap the shake to e.g. a button using a conditional on it.
[spoiler]807467BC: 9421FFD0 stwu r1,-48(r1)
807467C0: 7C0802A6 mflr r0
807467C4: 90010034 stw r0,52(r1)
807467C8: 39610030 addi r11,r1,48
807467CC: 4B8DADCD bl 0x80021598
807467D0: 3CC0808A lis r6,-32630
807467D4: 83A30004 lwz r29,4(r3)
807467D8: C0062BB8 lfs f0,11192(r6)
807467DC: 2C040000 cmpwi r4,0
807467E0: 3FE0808D lis r31,-32627
807467E4: D001000C stfs f0,12(r1)
807467E8: 7C791B78 mr r25,r3
807467EC: 7C9A2378 mr r26,r4
807467F0: D0010008 stfs f0,8(r1)
807467F4: 3BFFB6F8 subi r31,r31,18696
807467F8: 3BC00000 li r30,0 # Shake spam (li r30, 1)
807467FC: 3B800001 li r28,1
80746800: 3B600001 li r27,1
80746804: 41820034 beq- 0x80746838
80746808: C0250004 lfs f1,4(r5)
8074680C: C01F0068 lfs f0,104(r31)
80746810: FC200A10 fabs f1,f1
80746814: FC010040 fcmpo cr0,f1,f0
80746818: 40810008 ble- 0x80746820
8074681C: 3B800000 li r28,0
80746820: C0250008 lfs f1,8(r5)
80746824: C01F006C lfs f0,108(r31)
80746828: FC200A10 fabs f1,f1
8074682C: FC010040 fcmpo cr0,f1,f0
80746830: 40810008 ble- 0x80746838
80746834: 3B600000 li r27,0
80746838: 7FA3EB78 mr r3,r29
8074683C: 38A1000C addi r5,r1,12
80746840: 38800000 li r4,0
80746844: 4BFD5901 bl 0x8071c144
80746848: 2C030000 cmpwi r3,0
8074684C: 4182005C beq- 0x807468a8
80746850: C001000C lfs f0,12(r1)
80746854: 2C1A0000 cmpwi r26,0
80746858: FC000210 fabs f0,f0
8074685C: 4182000C beq- 0x80746868
80746860: C03F0050 lfs f1,80(r31)
80746864: 48000008 b 0x8074686c
80746868: C03F0040 lfs f1,64(r31)
8074686C: FC000840 fcmpo cr0,f0,f1
80746870: 40810038 ble- 0x807468a8
80746874: 80190084 lwz r0,132(r25)
80746878: 2C000000 cmpwi r0,0
8074687C: 4082002C bne- 0x807468a8
80746880: 2C1C0000 cmpwi r28,0
80746884: 41820024 beq- 0x807468a8
80746888: 3C60808A lis r3,-32630
8074688C: C021000C lfs f1,12(r1)
80746890: C0032BB8 lfs f0,11192(r3)
80746894: FC010040 fcmpo cr0,f1,f0
80746898: 4080000C bge- 0x807468a4
8074689C: 3BC00003 li r30,3
807468A0: 48000008 b 0x807468a8
807468A4: 3BC00004 li r30,4
807468A8: 80190088 lwz r0,136(r25)
807468AC: 2C000000 cmpwi r0,0
807468B0: 4081001C ble- 0x807468cc
807468B4: 3400FFFF subic. r0,r0,1
807468B8: 90190088 stw r0,136(r25)
807468BC: 40820010 bne- 0x807468cc
807468C0: 83D9008C lwz r30,140(r25)
807468C4: 38000000 li r0,0
807468C8: 9019008C stw r0,140(r25)
807468CC: 7FA3EB78 mr r3,r29
807468D0: 38A10008 addi r5,r1,8
807468D4: 38800001 li r4,1
807468D8: 4BFD586D bl 0x8071c144
807468DC: 2C030000 cmpwi r3,0
807468E0: 4182005C beq- 0x8074693c
807468E4: C0010008 lfs f0,8(r1)
807468E8: 2C1A0000 cmpwi r26,0
807468EC: FC000210 fabs f0,f0
807468F0: 4182000C beq- 0x807468fc
807468F4: C03F0054 lfs f1,84(r31)
807468F8: 48000008 b 0x80746900
807468FC: C03F0044 lfs f1,68(r31)
80746900: FC000840 fcmpo cr0,f0,f1
80746904: 38000000 li r0,0
80746908: 90190088 stw r0,136(r25)
8074690C: 9019008C stw r0,140(r25)
80746910: 4081002C ble- 0x8074693c
80746914: 2C1B0000 cmpwi r27,0
80746918: 41820024 beq- 0x8074693c
8074691C: 3C60808A lis r3,-32630
80746920: C0210008 lfs f1,8(r1)
80746924: C0032BB8 lfs f0,11192(r3)
80746928: FC010040 fcmpo cr0,f1,f0
8074692C: 4080000C bge- 0x80746938
80746930: 3BC00001 li r30,1
80746934: 48000008 b 0x8074693c
80746938: 3BC00002 li r30,2
8074693C: 80790084 lwz r3,132(r25)
80746940: 3403FFFF subic. r0,r3,1
80746944: 90190084 stw r0,132(r25)
80746948: 4080000C bge- 0x80746954
8074694C: 38000000 li r0,0
80746950: 90190084 stw r0,132(r25)
80746954: 39610030 addi r11,r1,48
80746958: 7FC3F378 mr r3,r30
8074695C: 4B8DAC89 bl 0x800215e4
80746960: 80010034 lwz r0,52(r1)
80746964: 7C0803A6 mtlr r0
80746968: 38210030 addi r1,r1,48
8074696C: 4E800020 blr [/spoiler]I only managed to spam shakes instead. Pretty cool, but it shouldn't do that. :/
After following the link register once:[spoiler]80745BE4: 9421FFB0 stwu r1,-80(r1)
80745BE8: 7C0802A6 mflr r0
80745BEC: 90010054 stw r0,84(r1)
80745BF0: 39610050 addi r11,r1,80
80745BF4: 4B8DB9A9 bl 0x8002159c
80745BF8: 8105000C lwz r8,12(r5)
80745BFC: 3CC0808A lis r6,-32630
80745C00: 80E50010 lwz r7,16(r5)
80745C04: 3F40808D lis r26,-32627
80745C08: 90E10018 stw r7,24(r1)
80745C0C: 7C9C2378 mr r28,r4
80745C10: C0062BBC lfs f0,11196(r6)
80745C14: 7C7B1B78 mr r27,r3
80745C18: 91010014 stw r8,20(r1)
80745C1C: 7CBD2B78 mr r29,r5
80745C20: 3B5AB6F8 subi r26,r26,18696
80745C24: 3BE00000 li r31,0
80745C28: 80050014 lwz r0,20(r5)
80745C2C: 38800000 li r4,0
80745C30: 9001001C stw r0,28(r1)
80745C34: 38A00000 li r5,0
80745C38: 90E1000C stw r7,12(r1)
80745C3C: C021000C lfs f1,12(r1)
80745C40: 91010008 stw r8,8(r1)
80745C44: EC01002A fadds f0,f1,f0
80745C48: 90010010 stw r0,16(r1)
80745C4C: D001000C stfs f0,12(r1)
80745C50: 80630004 lwz r3,4(r3)
80745C54: 4BFD6511 bl 0x8071c164
80745C58: 807B0004 lwz r3,4(r27)
80745C5C: 38800000 li r4,0
80745C60: A8BA0048 lha r5,72(r26)
80745C64: A8DA004A lha r6,74(r26)
80745C68: 4BFD6589 bl 0x8071c1f0
80745C6C: 807B0004 lwz r3,4(r27)
80745C70: 38800001 li r4,1
80745C74: A8BA0048 lha r5,72(r26)
80745C78: A8DA004A lha r6,74(r26)
80745C7C: 4BFD6575 bl 0x8071c1f0
80745C80: 807B0004 lwz r3,4(r27)
80745C84: 38810008 addi r4,r1,8
80745C88: 38A10014 addi r5,r1,20
80745C8C: 4BFD6419 bl 0x8071c0a4
80745C90: 7F63DB78 mr r3,r27
80745C94: 38A10008 addi r5,r1,8
80745C98: 38800000 li r4,0
80745C9C: 48000B21 bl 0x807467bc
80745CA0: 7C7E1B78 mr r30,r3 # r3 into r30 | li r30, 1 (Shake Spam)
80745CA4: A0BA0000 lhz r5,0(r26)
80745CA8: 807D0000 lwz r3,0(r29)
80745CAC: 7C602839 and. r0,r3,r5
80745CB0: 41820008 beq- 0x80745cb8
80745CB4: 63FF0001 ori r31,r31,1
80745CB8: A0DA0002 lhz r6,2(r26)
80745CBC: 7C643039 and. r4,r3,r6
80745CC0: 4182000C beq- 0x80745ccc
80745CC4: 63E00002 ori r0,r31,2
80745CC8: 541F043E rlwinm r31,r0,0,16,31
80745CCC: A01A0004 lhz r0,4(r26)
80745CD0: 7C600039 and. r0,r3,r0
80745CD4: 4182000C beq- 0x80745ce0
80745CD8: 63E00004 ori r0,r31,4
80745CDC: 541F043E rlwinm r31,r0,0,16,31
80745CE0: A01A0006 lhz r0,6(r26)
80745CE4: 7C600039 and. r0,r3,r0
80745CE8: 4182000C beq- 0x80745cf4
80745CEC: 63E00020 ori r0,r31,32
80745CF0: 541F043E rlwinm r31,r0,0,16,31
80745CF4: 2C040000 cmpwi r4,0
80745CF8: 41820024 beq- 0x80745d1c
80745CFC: 7C602839 and. r0,r3,r5
80745D00: 4182001C beq- 0x80745d1c
80745D04: 801D0004 lwz r0,4(r29)
80745D08: 7C003039 and. r0,r0,r6
80745D0C: 41820018 beq- 0x80745d24
80745D10: 38000001 li r0,1
80745D14: 981B0010 stb r0,16(r27)
80745D18: 4800000C b 0x80745d24
80745D1C: 38000000 li r0,0
80745D20: 981B0010 stb r0,16(r27)
80745D24: 881B0010 lbz r0,16(r27)
80745D28: 2C000000 cmpwi r0,0
80745D2C: 4182000C beq- 0x80745d38
80745D30: 63E00008 ori r0,r31,8
80745D34: 541F043E rlwinm r31,r0,0,16,31
80745D38: B3FC0004 sth r31,4(r28)
80745D3C: 801D0000 lwz r0,0(r29)
80745D40: B01C0006 sth r0,6(r28)
80745D44: 881D005D lbz r0,93(r29)
80745D48: 7C000774 extsb r0,r0
80745D4C: 2C00FFFE cmpwi r0,-2
80745D50: 41820064 beq- 0x80745db4
80745D54: 3FE0808A lis r31,-32630
80745D58: 3F60809C lis r27,-32612
80745D5C: C05F2BBC lfs f2,11196(r31)
80745D60: 7F83E378 mr r3,r28
80745D64: C03D0060 lfs f1,96(r29)
80745D68: C01B2C3C lfs f0,11324(r27)
80745D6C: EC22082A fadds f1,f2,f1
80745D70: EC010032 fmuls f0,f1,f0
80745D74: FC00001E fctiwz f0,f0
80745D78: D8010020 stfd f0,32(r1)
80745D7C: 80810024 lwz r4,36(r1)
80745D80: 5484063E rlwinm r4,r4,0,24,31
80745D84: 4BDD8BDD bl 0x8051e960
80745D88: C05F2BBC lfs f2,11196(r31)
80745D8C: 7F83E378 mr r3,r28
80745D90: C03D0064 lfs f1,100(r29)
80745D94: C01B2C3C lfs f0,11324(r27)
80745D98: EC22082A fadds f1,f2,f1
80745D9C: EC010032 fmuls f0,f1,f0
80745DA0: FC00001E fctiwz f0,f0
80745DA4: D8010028 stfd f0,40(r1)
80745DA8: 8081002C lwz r4,44(r1)
80745DAC: 5484063E rlwinm r4,r4,0,24,31
80745DB0: 4BDD8CB1 bl 0x8051ea60
80745DB4: 7F83E378 mr r3,r28
80745DB8: 7FC4F378 mr r4,r30 # r30 into r4 | li r4, 1 (Shake Spam)
80745DBC: 4BDD8DAD bl 0x8051eb68
80745DC0: 881C0014 lbz r0,20(r28)
80745DC4: 39610050 addi r11,r1,80
80745DC8: 60000080 ori r0,r0,128
80745DCC: 981C0014 stb r0,20(r28)
80745DD0: 4B8DB819 bl 0x800215e8
80745DD4: 80010054 lwz r0,84(r1)
80745DD8: 7C0803A6 mtlr r0
80745DDC: 38210050 addi r1,r1,80
80745DE0: 4E800020 blr
[/spoiler]
[spoiler]8071C144: 5480103A rlwinm r0,r4,2,0,29
8071C148: 7C630214 add r3,r3,r0
8071C14C: 8083000C lwz r4,12(r3)
8071C150: 80640008 lwz r3,8(r4)
8071C154: C0030010 lfs f0,16(r3)
8071C158: D0050000 stfs f0,0(r5)
8071C15C: 8864000C lbz r3,12(r4) # li r3 1 (Shake spam when shaked upwards until it is shaked downwards)
8071C160: 4E800020 blr [/spoiler]
On the bright side, I found these addresses for all the buttons but gestures aren't so easy how it seems.
Thank you for helping!
EDIT:
Actually, using a one shot button activator is fine but solving it by tracing would be sweet too!