ASM Remote condition

Started by Patedj, April 13, 2011, 08:34:30 AM

Previous topic - Next topic

Patedj

042E85C4 60000000 ---> nop timer
[spoiler]C2000B00 0000000E
9421FFB0 BDC10008
3DC0802E 61CE85C0
3DE0806F 61EF0CD8
3A000001 3A200002
91D20000 91F30000
2C130010 41A20024
2C130011 41A20008
48000029 A9720000
39800001 396C000B
B16E0000 48000015
A9720000 39800001
396CFFF5 B16E0000
B9C10008 38210050
60000000 00000000
[/spoiler]
ASM
[spoiler]stwu r1,-80(r1)
stmw r14,8(r1)
lis r14, -32722
ori r14,r14, 34240
lis r15, -32657
ori r15,r15,3288
li r16, 0x0401
li r17, 0x0402
stw r14,0(r18)
stw r15, 0(r19)
cmpwi r19, r16
beq SUBTRACT
cmpwi r19,r17
beq ADD
bl END
ADD:lha r11,0(r18)
li r12, 1
addi r11,r12,r11
sth r11, 0(r14)
bl END

SUBTRACT:
lha r11, 0(r18)
li r12, 1
subi r11,r12,r11
sth r11,0(r14)
END:
lmw r14,8(r1)
addi r1,r1,80[/spoiler]

Why isn't it working?
ASM2
[spoiler]stwu r1,-80(r1)
stmw r14,8(r1)
lwz r14, 62(r3)
lis r15, -32657
ori r15,r15,3288
li r16, 0x1
li r17, 0x2
stw r14,0(r18)
stw r15, 0(r19)
cmpwi r19, r16
beq+ SUBTRACT
cmpwi r19,r17
beq+ ADD
bl END
ADD:lha r11,0(r18)
li r12, 1
addi r11,r12,r11
sth r11, 0(r14)
bl END

SUBTRACT:
lha r11, 0(r18)
li r12, 1
subi r11,r12,r11
sth r11,0(r14)
END:
sth r14,62(r3)
lmw r14,8(r1)
addi r1,r1,80[/spoiler]
Function for NOP
[spoiler]802E859C:  9421FFA0   stwu   r1,-96(r1)
802E85A0:  7C0802A6   mflr   r0
802E85A4:  90010064   stw   r0,100(r1)
802E85A8:  39610060   addi   r11,r1,96
802E85AC:  4825875D   bl   0x80540d08
802E85B0:  7C7F1B78   mr   r31,r3
802E85B4:  880DD071   lbz   r0,-12175(r13)
802E85B8:  2C000000   cmpwi   r0,0
802E85BC:  40820014   bne-   0x802e85d0
802E85C0:  A803003E   lha   r0,62(r3)  -> read
802E85C4:  60000000   nop    -> addi r0,r0,r4
802E85C8:  B003003E   sth   r0,62(r3) -> write
802E85CC:  4800000C   b   0x802e85d8
802E85D0:  38000000   li   r0,0
802E85D4:  980DD071   stb   r0,-12175(r13)
802E85D8:  A80293BE   lha   r0,-27714(r2)
802E85DC:  A883003E   lha   r4,62(r3)
802E85E0:  7C040000   cmpw   r4,r0
802E85E4:  418000C4   blt-   0x802e86a8
802E85E8:  7C002050   sub   r0,r4,r0
802E85EC:  B003003E   sth   r0,62(r3)
802E85F0:  A883003C   lha   r4,60(r3)
802E85F4:  38040001   addi   r0,r4,1
802E85F8:  B003003C   sth   r0,60(r3)
802E85FC:  A88293BC   lha   r4,-27716(r2)
802E8600:  7C000734   extsh   r0,r0
802E8604:  7C002000   cmpw   r0,r4
802E8608:  418000A0   blt-   0x802e86a8
802E860C:  7C040050   sub   r0,r0,r4
802E8610:  B003003C   sth   r0,60(r3)
802E8614:  A8830032   lha   r4,50(r3)
802E8618:  38040001   addi   r0,r4,1
802E861C:  B0030032   sth   r0,50(r3)
802E8620:  3BC00001   li   r30,1
802E8624:  9BC50000   stb   r30,0(r5)
802E8628:  A8E293BA   lha   r7,-27718(r2)
802E862C:  A8A30032   lha   r5,50(r3)
802E8630:  7C053800   cmpw   r5,r7
802E8634:  41800074   blt-   0x802e86a8
802E8638:  A883006A   lha   r4,106(r3)
802E863C:  38040001   addi   r0,r4,1
802E8640:  B003006A   sth   r0,106(r3)
802E8644:  7C072850   sub   r0,r5,r7
802E8648:  B0030032   sth   r0,50(r3)
802E864C:  A8830034   lha   r4,52(r3)
802E8650:  38040001   addi   r0,r4,1
802E8654:  B0030034   sth   r0,52(r3)
802E8658:  9BC60000   stb   r30,0(r6)
802E865C:  4BDBE03D   bl   0x800a6698
802E8660:  4BF6C881   bl   0x80254ee0
802E8664:  A88293B4   lha   r4,-27724(r2)
802E8668:  A81F0034   lha   r0,52(r31)
802E866C:  7C002000   cmpw   r0,r4
802E8670:  40810038   ble-   0x802e86a8
802E8674:  B3DF0034   sth   r30,52(r31)
802E8678:  A87F0040   lha   r3,64(r31)
802E867C:  38030001   addi   r0,r3,1
802E8680:  B01F0040   sth   r0,64(r31)
802E8684:  7C030734   extsh   r3,r0
802E8688:  A80293B8   lha   r0,-27720(r2)
802E868C:  7C030000   cmpw   r3,r0
802E8690:  40810014   ble-   0x802e86a4
802E8694:  B3DF0040   sth   r30,64(r31)
802E8698:  A87F0042   lha   r3,66(r31)
802E869C:  38030001   addi   r0,r3,1
802E86A0:  B01F0042   sth   r0,66(r31)
802E86A4:  B09F006C   sth   r4,108(r31)
802E86A8:  A88293B4   lha   r4,-27724(r2)
802E86AC:  38000033   li   r0,51
802E86B0:  7C6023D6   divw   r3,r0,r4
802E86B4:  7C0321D6   mullw   r0,r3,r4
802E86B8:  23C00033   subfic   r30,r0,51
802E86BC:  3BA30001   addi   r29,r3,1
802E86C0:  7FE3FB78   mr   r3,r31
802E86C4:  38800001   li   r4,1
802E86C8:  4BDCFA4D   bl   0x800b8114
802E86CC:  7C7C0734   extsh   r28,r3
802E86D0:  7FE3FB78   mr   r3,r31
802E86D4:  38800007   li   r4,7
802E86D8:  4BDCFA3D   bl   0x800b8114
802E86DC:  7C7B0734   extsh   r27,r3
802E86E0:  7FE3FB78   mr   r3,r31
802E86E4:  38800000   li   r4,0
802E86E8:  4BDCFA2D   bl   0x800b8114
802E86EC:  7C7A0734   extsh   r26,r3
802E86F0:  7FE3FB78   mr   r3,r31
802E86F4:  38800005   li   r4,5
802E86F8:  4BDCFA1D   bl   0x800b8114
802E86FC:  7C600734   extsh   r0,r3
802E8700:  7C9BE800   cmpw   cr1,r27,r29
802E8704:  41850048   bgt-   cr1,0x802e874c
802E8708:  7C1CF000   cmpw   r28,r30
802E870C:  40810008   ble-   0x802e8714
802E8710:  4186003C   beq-   cr1,0x802e874c
802E8714:  2C1A0006   cmpwi   r26,6
802E8718:  40810014   ble-   0x802e872c
802E871C:  7C1CF000   cmpw   r28,r30
802E8720:  4082000C   bne-   0x802e872c
802E8724:  7C1BE800   cmpw   r27,r29
802E8728:  41820024   beq-   0x802e874c
802E872C:  2C00001E   cmpwi   r0,30
802E8730:  41800078   blt-   0x802e87a8
802E8734:  2C1A0006   cmpwi   r26,6
802E8738:  40820070   bne-   0x802e87a8
802E873C:  7C1CF000   cmpw   r28,r30
802E8740:  40820068   bne-   0x802e87a8
802E8744:  7C1BE800   cmpw   r27,r29
802E8748:  40820060   bne-   0x802e87a8
802E874C:  3861001C   addi   r3,r1,28
802E8750:  38800000   li   r4,0
802E8754:  7FE5FB78   mr   r5,r31
802E8758:  3CC08058   lis   r6,-32680
802E875C:  38C627D0   addi   r6,r6,10192
802E8760:  480000AD   bl   0x802e880c
802E8764:  38610030   addi   r3,r1,48
802E8768:  3881001C   addi   r4,r1,28
802E876C:  4800005D   bl   0x802e87c8
802E8770:  80610030   lwz   r3,48(r1)
802E8774:  80010034   lwz   r0,52(r1)
802E8778:  90610008   stw   r3,8(r1)
802E877C:  9001000C   stw   r0,12(r1)
802E8780:  80610038   lwz   r3,56(r1)
802E8784:  8001003C   lwz   r0,60(r1)
802E8788:  90610010   stw   r3,16(r1)
802E878C:  90010014   stw   r0,20(r1)
802E8790:  80010040   lwz   r0,64(r1)
802E8794:  90010018   stw   r0,24(r1)
802E8798:  481197D1   bl   0x80401f68
802E879C:  38800001   li   r4,1
802E87A0:  38A10008   addi   r5,r1,8
802E87A4:  48119E45   bl   0x804025e8
802E87A8:  387F00C4   addi   r3,r31,196
802E87AC:  48008461   bl   0x802f0c0c
802E87B0:  39610060   addi   r11,r1,96
802E87B4:  482585A1   bl   0x80540d54
802E87B8:  80010064   lwz   r0,100(r1)
802E87BC:  7C0803A6   mtlr   r0
802E87C0:  38210060   addi   r1,r1,96
802E87C4:  4E800020   blr   
[/spoiler]

You can pm me, I've got time for your troubles.

Patedj

The reason seems to be with my cmpwi and my beq... they won't branch.
You can pm me, I've got time for your troubles.

Patedj

#2
V3 with injection directly in the sth's address
[spoiler]stwu r1,-80(r1)
stmw r14,8(r1)
lha r14, 62(r3)
lis r15, -32657
ori r15,r15,3288
lwz r19, 0(r15)
cmpwi r19, 1
beq- SUBTRACT
cmpwi r19,2
beq- ADD
bl END
ADD:
li r12, 1
addi r14,r12,r14
bl END

SUBTRACT:
li r12, 1
subi r14,r12,r14
END:
sth r14,62(r3)
lmw r14,8(r1)
addi r1,r1,80[/spoiler]

this is it's log[spoiler]
802E85C8:  4BD1A310   b   0x800028d8
   ...   ...   ...   ...
800028D8:  9421FFB0   stwu   r1,-80(r1)   r1 = 80F53A08   r1 = 80F53A08   [80F539B8] = 00000002
800028DC:  BDC10008   stmw   r14,8(r1)   r14 = 00000000   r1 = 80F539B8   [80F539C0] = 00000000
800028E0:  A9C3003E   lha   r14,62(r3)   r14 = 00000000   r3 = 8128E018   [8128E056] = 001EFFF3
800028E4:  3DE0806F   lis   r15,-32657   r15 = 00000000
800028E8:  61EF0CD8   ori   r15,r15,3288   r15 = 806F0000   r15 = 806F0000
800028EC:  826F0000   lwz   r19,0(r15)   r19 = 00000000   r15 = 806F0CD8   [806F0CD8] = 00000001
800028F0:  2C130001   cmpwi   r19,1      r19 = 00000001
800028F4:  4182001C   beq-   0x80002910
   ...   ...   ...   ...
80002910:  39800001   li   r12,1      r12 = 800292F0
80002914:  39CCFFF2   subi   r14,r12,14   r14 = FFFFFFF3   r12 = 00000001
80002918:  B1C3003E   sth   r14,62(r3)   r14 = FFFFFFF3   r3 = 8128E018   [8128E056] = 001EFFF3
8000291C:  B9C10008   lmw   r14,8(r1)   r14 = FFFFFFF3   r1 = 80F539B8   [80F539C0] = 00000000
80002920:  38210050   addi   r1,r1,80   r1 = 80F539B8   r1 = 80F539B8

802E85C8:  4BD1A310   b   0x800028d8
   ...   ...   ...   ...
[/spoiler]
This technically works but I want and add function so I'll make addi an add and see what happens
You can pm me, I've got time for your troubles.

Patedj

This works. I'll have to add to the r12 though adding and subbing is not fast enough.
[spoiler]stwu r1,-80(r1)
stmw r14,8(r1)
lha r14, 62(r3)
lis r15, -32657
ori r15,r15,3288
lwz r19, 0(r15)
cmpwi r19, 1
beq- SUBTRACT
cmpwi r19,8
beq- ADD
bl END
ADD:
li r12, 1
add r14,r12,r14
bl END

SUBTRACT:
li r12, 1
sub r14,r14,r12
END:
sth r14,62(r3)
lmw r14,8(r1)
addi r1,r1,80[/spoiler]

Time for sim3 Left button and up button changes the time (i'd like to make it b+up and b+left in v4)
[spoiler]042E85C4 60000000
042E85C8 B003003C
C22E85C8 0000000A
9421FFB0 BDC10008
A9C3003E 3DE0806F
61EF0CD8 826F0000
2C130001 4182001C
2C130008 41820008
48000019 39800001
7DCC7214 4800000D
39800001 7DCC7050
B1C3003E B9C10008
38210050 00000000
E0000000 80008000
[/spoiler]
You can pm me, I've got time for your troubles.

Patedj

V4 Age Timer for Sims3. It advances the time, but doesn't rewind the time. Nonetheless the age does I think.
[spoiler]042E85C4 60000000
042E85C8 B003003C
C22E85C8 0000000A
9421FFB0 BDC10008
A9C3003E 3DE0806F
61EF0CD8 826F0000
2C130401 4182001C
2C130408 41820008
48000019 3980000A
7DCC7214 4800000D
3980000A 7DCC7050
B1C3003E B9C10008
38210050 00000000
E0000000 80008000
[/spoiler]
You can pm me, I've got time for your troubles.

dcx2

Quote from: Patedj on April 13, 2011, 09:29:58 AM
The reason seems to be with my cmpwi and my beq... they won't branch.

cmpwi r19, r16
beq+ SUBTRACT
cmpwi r19,r17
beq+ ADD

cmpwi = CoMPare Word Immediate.  Are r16 and r17 immediates?  Nope...they're registers.  You wanted cmpw.  Also, watch out for cmplw and cmplwi.  the L means "logical", this is used for *unsigned* comparisons, on numbers that are not interpreted as negative.

---

802E85C4:  60000000   nop    -> addi r0,r0,r4

r4 comes from the caller.  If you go to the caller's frame, you might be able to modify r4 before it is passed into this function.