WiiRd forum

Wii & Gamecube Hacking => Wii Game hacking help => Topic started by: Patedj on February 08, 2011, 07:11:22 AM

Title: Super Mario Galaxy 2 (SB4P01) Clone Code
Post by: Patedj on February 08, 2011, 07:11:22 AM
I found an address that breaks at the clones appearance
it seems to change each time one jumps from 1 to 2 and 0 when they aren't there


[spoiler]809F4708[/spoiler]

Registers
[spoiler]  CR:44200888  XER:00000000  CTR:00000001 DSIS:04000000
DAR:00000028 SRR0:8007A5C0 SRR1:00008032   LR:8007A59C
 r0:00040107   r1:807F8770   r2:807E43A0   r3:00000000
 r4:00000000   r5:00000001   r6:00000000   r7:809F403C
 r8:809F404C   r9:00000020  r10:00000001  r11:807F87B0
r12:00000001  r13:807DCA20  r14:00000000  r15:00000000
r16:00000000  r17:00000000  r18:00000000  r19:00000000
r20:00000000  r21:00000000  r22:00000000  r23:00000000
r24:809F3D54  r25:00000001  r26:809F3D54  r27:809F470C
r28:808E9814  r29:00000001  r30:809F3D58  r31:000001B0

 f0:3F800000   f1:3EB94BF6   f2:3EB22F84   f3:3C638E39
 f4:3F317E4B   f5:00000000   f6:3EAAAAAB   f7:59800000
 f8:3F800000   f9:3F800000  f10:00000000  f11:00000000
f12:00000000  f13:00000000  f14:00000000  f15:00000000
f16:00000000  f17:00000000  f18:00000000  f19:00000000
f20:00000000  f21:00000000  f22:00000000  f23:00000000
f24:00000000  f25:00000000  f26:00000000  f27:00000000
f28:00000000  f29:00000000  f30:00000000  f31:00000000[/spoiler]

Function
[spoiler]8007A550:  9421FFB0   stwu   r1,-80(r1)
8007A554:  7C0802A6   mflr   r0
8007A558:  90010054   stw   r0,84(r1)
8007A55C:  39610040   addi   r11,r1,64
8007A560:  DBE10040   stfd   f31,64(r1)
8007A564:  F3E10048   psq_st   f31,72(r1),0,0
8007A568:  485B3BF9   bl   0x8062e160
8007A56C:  C3E286F4   lfs   f31,-30988(r2)
8007A570:  7C7A1B78   mr   r26,r3
8007A574:  7C9C2378   mr   r28,r4
8007A578:  38640010   addi   r3,r4,16
8007A57C:  7CBD2B78   mr   r29,r5
8007A580:  38810018   addi   r4,r1,24
8007A584:  4BFFF70D   bl   0x80079c90
8007A588:  2C030000   cmpwi   r3,0
8007A58C:  41820014   beq-   0x8007a5a0
8007A590:  38610018   addi   r3,r1,24
8007A594:  389A08E0   addi   r4,r26,2272
8007A598:  4854E679   bl   0x805c8c10
8007A59C:  FFE00890   fmr   f31,f1
8007A5A0:  80BA09B4   lwz   r5,2484(r26) =809F61D8=0
8007A5A4:  38600000   li   r3,0
8007A5A8:  7CA903A6   mtctr   r5
8007A5AC:  2C050000   cmpwi   r5,0
8007A5B0:  408100F0   ble-   0x8007a6a0
8007A5B4:  7F7A1A14   add   r27,r26,r3
8007A5B8:  849B09B8   lwzu   r4,2488(r27)
8007A5BC:  801C0028   lwz   r0,40(r28)
8007A5C0:  80840028   lwz   r4,40(r4)
8007A5C4:  7C040040   cmplw   r4,r0
8007A5C8:  408200D0   bne-   0x8007a698
8007A5CC:  3B400000   li   r26,0
8007A5D0:  3BE00000   li   r31,0
8007A5D4:  7FA903A6   mtctr   r29
8007A5D8:  2C1D0000   cmpwi   r29,0
8007A5DC:  408100B4   ble-   0x8007a690
8007A5E0:  7C1BF82E   lwzx   r0,r27,r31
8007A5E4:  7C9BFA14   add   r4,r27,r31
8007A5E8:  2C000000   cmpwi   r0,0
8007A5EC:  40820014   bne-   0x8007a600
8007A5F0:  93840000   stw   r28,0(r4)
8007A5F4:  7F43D378   mr   r3,r26
8007A5F8:  D3E40004   stfs   f31,4(r4)
8007A5FC:  480000E0   b   0x8007a6dc
8007A600:  C0040004   lfs   f0,4(r4)
8007A604:  FC00F840   fcmpo   cr0,f0,f31
8007A608:  4081007C   ble-   0x8007a684
8007A60C:  381DFFFF   subi   r0,r29,1
8007A610:  93810010   stw   r28,16(r1)
8007A614:  54001838   rlwinm   r0,r0,3,0,28
8007A618:  38610008   addi   r3,r1,8
8007A61C:  D3E10014   stfs   f31,20(r1)
8007A620:  7C9B0214   add   r4,r27,r0
8007A624:  4BFFFF0D   bl   0x8007a530
8007A628:  7F5CD378   mr   r28,r26
8007A62C:  3BBDFFFF   subi   r29,r29,1
8007A630:  575E1838   rlwinm   r30,r26,3,0,28
8007A634:  48000020   b   0x8007a654
8007A638:  381C0001   addi   r0,r28,1
8007A63C:  7C9BF214   add   r4,r27,r30
8007A640:  54001838   rlwinm   r0,r0,3,0,28
8007A644:  7C7B0214   add   r3,r27,r0
8007A648:  4BFFFEE9   bl   0x8007a530
8007A64C:  3B9C0001   addi   r28,r28,1
8007A650:  3BDE0008   addi   r30,r30,8
8007A654:  7C1CE800   cmpw   r28,r29
8007A658:  4180FFE0   blt+   0x8007a638
8007A65C:  7C7BFA14   add   r3,r27,r31
8007A660:  38810010   addi   r4,r1,16
8007A664:  4BFFFECD   bl   0x8007a530
8007A668:  80610008   lwz   r3,8(r1)
8007A66C:  2C030000   cmpwi   r3,0
8007A670:  4182000C   beq-   0x8007a67c
8007A674:  38630010   addi   r3,r3,16
8007A678:  4851C029   bl   0x805966a0
8007A67C:  7F43D378   mr   r3,r26
8007A680:  4800005C   b   0x8007a6dc
8007A684:  3B5A0001   addi   r26,r26,1
8007A688:  3BFF0008   addi   r31,r31,8
8007A68C:  4200FF54   bdnz+   0x8007a5e0
8007A690:  3860FFFF   li   r3,-1
8007A694:  48000048   b   0x8007a6dc
8007A698:  38630018   addi   r3,r3,24
8007A69C:  4200FF18   bdnz+   0x8007a5b4
8007A6A0:  2C050020   cmpwi   r5,32
8007A6A4:  40800034   bge-   0x8007a6d8
8007A6A8:  1C050018   mulli   r0,r5,24
8007A6AC:  38600000   li   r3,0
8007A6B0:  7C9A0214   add   r4,r26,r0
8007A6B4:  938409B8   stw   r28,2488(r4)
8007A6B8:  801A09B4   lwz   r0,2484(r26)
8007A6BC:  1C000018   mulli   r0,r0,24
8007A6C0:  7C9A0214   add   r4,r26,r0
8007A6C4:  D3E409BC   stfs   f31,2492(r4)
8007A6C8:  809A09B4   lwz   r4,2484(r26)
8007A6CC:  38040001   addi   r0,r4,1
8007A6D0:  901A09B4   stw   r0,2484(r26)
8007A6D4:  48000008   b   0x8007a6dc
8007A6D8:  3860FFFF   li   r3,-1
8007A6DC:  39610040   addi   r11,r1,64
8007A6E0:  E3E10048   psq_l   f31,72(r1),0,0
8007A6E4:  CBE10040   lfd   f31,64(r1)
8007A6E8:  485B3AC5   bl   0x8062e1ac
8007A6EC:  80010054   lwz   r0,84(r1)
8007A6F0:  7C0803A6   mtlr   r0
8007A6F4:  38210050   addi   r1,r1,80
8007A6F8:  4E800020   blr   
I Bolded where it breaks (exact, read)
[/spoiler]

I'm not sure onto which way is most likely the way that the compilers decided to do the clones.
I think there would be a counter +1 address
But I went with a equal not equal series to search with.
I came down to 6 codes with only 1 breaking when the clones appear.
I tried a button activator with no success.
I'm thinking that I have to figure out the assembly ops. to understand what is happening.
Title: Re: Super Mario Galaxy 2 (SB4P01) Clone Code
Post by: Patedj on February 08, 2011, 07:38:02 AM
It's definitely them.
Still
[spoiler]809F4690   *80000000*   80000000   80000000   80000000
809F46A0   00000001   809F4AE0   91156814   809F65DC
809F46B0   809F4BE8   809F4BF8   911567C8   809F5554
809F46C0   809F6014   809F6668   809F6398   809F6638
809F46D0   911453B0   9115692C   911575D4   00000000
809F46E0   FFFFFFFF   00000000   FFFFFFFF   00000000
809F46F0   809F4A1C   00000000   01000000   91145198
809F4700   9115C60C   9115CC40   00000001   808EA1D4
809F4710   44676681   00000000   00000000   00000000
809F4720   00000000   00000000   00000000   00000000
809F4730   00000000   00000000   00000000   00000000
809F4740   00000000   00000000   00000000   00000000
809F4750   00000000   00000000   00000000   00000000
809F4760   00000000   00000000   00000000   00000000
809F4770   00000000   00000000   00000000   00000000
809F4780   00000000   00000000   00000000   00000000
[/spoiler]

Jumping
[spoiler]809F4690   *80000000*   80000000   80000000   80000000
809F46A0   00000001   809F4AE0   91156814   809F65DC
809F46B0   809F4BE8   809F4BF8   911567C8   809F5554
809F46C0   809F6014   809F6668   809F6398   809F6638
809F46D0   911453B0   9115692C   911575D4   00000000
809F46E0   FFFFFFFF   00000000   FFFFFFFF   00000000
809F46F0   809F4A1C   00000000   01000000   91145198
809F4700   9115C60C   9115CC40   00000002   808E9814
809F4710   4463bafb   00000000   00000000   00000000
809F4720   00000000   808ea1d4   4463bafb   00000000
809F4730   00000000   00000000   00000000   00000000
809F4740   00000000   00000000   00000000   00000000
809F4750   00000000   00000000   00000000   00000000
809F4760   00000000   00000000   00000000   00000000
809F4770   00000000   00000000   00000000   00000000
809F4780   00000000   00000000   00000000   00000000

[/spoiler]
00000002 = jump or move. changes from 1 to 2 each time they jump
808e9814 #1 = I think they're "pointer address/word/name" which changes at each time they jump
4463bafb = My distance/location? from them or instructions on to what to do.... always comes back to the same
                value and stops when everyone stopped.
80 #2 (808ea1d4)= on for 1 split second then zeros off which is always before the #1 ( so this is the next clone's address)
44 #2 = on for 1 split second then zeros off... maybe direct instructions concerning my distance/location