diff options
Diffstat (limited to 'asm/match_call.s')
-rw-r--r-- | asm/match_call.s | 445 |
1 files changed, 445 insertions, 0 deletions
diff --git a/asm/match_call.s b/asm/match_call.s new file mode 100644 index 000000000..af83c30db --- /dev/null +++ b/asm/match_call.s @@ -0,0 +1,445 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_81D1920 +sub_81D1920: @ 81D1920 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r6, r0, 0 + mov r9, r1 + movs r5, 0 + ldr r0, [r6] + cmp r0, 0 + beq _081D1940 + adds r1, r6, 0 +_081D1936: + adds r1, 0x8 + adds r5, 0x1 + ldr r0, [r1] + cmp r0, 0 + bne _081D1936 +_081D1940: + cmp r5, 0 + beq _081D1946 + subs r5, 0x1 +_081D1946: + ldr r0, =0x0000ffff + mov r8, r0 + lsls r0, r5, 3 + adds r0, 0x4 + adds r4, r0, r6 + b _081D195C + .pool +_081D1958: + subs r4, 0x8 + subs r5, 0x1 +_081D195C: + lsls r7, r5, 3 + cmp r5, 0 + beq _081D1974 + ldrh r0, [r4] + cmp r0, r8 + beq _081D1958 + bl FlagGet + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _081D1958 +_081D1974: + adds r4, r7, r6 + ldrh r1, [r4, 0x6] + ldr r0, =0x0000ffff + cmp r1, r0 + beq _081D1984 + adds r0, r1, 0 + bl FlagSet +_081D1984: + ldr r1, [r4] + mov r0, r9 + bl StringExpandPlaceholders + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81D1920 + + thumb_func_start sub_81D199C +sub_81D199C: @ 81D199C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + mov r10, r2 + lsls r1, 16 + lsrs r7, r1, 16 + movs r5, 0 + ldr r0, [r6] + cmp r0, 0 + beq _081D19E6 + ldrh r0, [r6, 0x4] + ldr r1, =0x0000fffe + cmp r0, r1 + beq _081D1A24 + ldr r0, =0x0000ffff + mov r9, r0 + mov r8, r1 + adds r4, r6, 0 +_081D19C6: + ldrh r0, [r4, 0x4] + cmp r0, r9 + beq _081D19D6 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _081D19E6 +_081D19D6: + adds r4, 0x8 + adds r5, 0x1 + ldr r0, [r4] + cmp r0, 0 + beq _081D19E6 + ldrh r0, [r4, 0x4] + cmp r0, r8 + bne _081D19C6 +_081D19E6: + lsls r0, r5, 3 + adds r0, r6 + ldrh r1, [r0, 0x4] + ldr r0, =0x0000fffe + cmp r1, r0 + beq _081D1A24 + cmp r5, 0 + beq _081D19F8 + subs r5, 0x1 +_081D19F8: + lsls r0, r5, 3 + adds r4, r0, r6 + ldrh r1, [r4, 0x6] + ldr r0, =0x0000ffff + cmp r1, r0 + beq _081D1A0A + adds r0, r1, 0 + bl FlagSet +_081D1A0A: + ldr r1, [r4] + mov r0, r10 + bl StringExpandPlaceholders + b _081D1A5C + .pool +_081D1A1C: + adds r5, 0x2 + b _081D1A50 +_081D1A20: + adds r5, 0x3 + b _081D1A50 +_081D1A24: + ldr r0, =0x00000864 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _081D1A50 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldr r1, =0x000009ca + adds r0, r1 + adds r0, r7 + ldrb r0, [r0] + cmp r0, 0 + bne _081D1A1C + adds r0, r7, 0 + bl CountBattledRematchTeams + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _081D1A20 + adds r5, 0x1 +_081D1A50: + lsls r0, r5, 3 + adds r0, r6 + ldr r1, [r0] + mov r0, r10 + bl StringExpandPlaceholders +_081D1A5C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81D199C + + thumb_func_start sub_81D1A78 +sub_81D1A78: @ 81D1A78 + push {r4-r6,lr} + adds r5, r1, 0 + adds r6, r2, 0 + cmp r0, 0x14 + bhi _081D1AA2 + ldr r1, =gUnknown_086252A8 + lsls r0, 2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl sub_81D1574 + ldr r1, =gUnknown_08625374 + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl _call_via_r3 +_081D1AA2: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81D1A78 + + thumb_func_start sub_81D1AB0 +sub_81D1AB0: @ 81D1AB0 + ldr r3, [r0, 0x4] + str r3, [r1] + ldr r0, [r0, 0x8] + str r0, [r2] + bx lr + thumb_func_end sub_81D1AB0 + + thumb_func_start sub_81D1ABC +sub_81D1ABC: @ 81D1ABC + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r0, 0 + ldr r0, [r4, 0xC] + cmp r0, 0 + bne _081D1AD0 + ldrh r0, [r4, 0x4] + bl sub_81D1B0C + b _081D1AD2 +_081D1AD0: + str r0, [r2] +_081D1AD2: + ldr r0, [r4, 0x8] + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81D1ABC + + thumb_func_start sub_81D1ADC +sub_81D1ADC: @ 81D1ADC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrh r0, [r4, 0x4] + bl sub_81D1B0C + ldr r0, [r4, 0x8] + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_81D1ADC + + thumb_func_start sub_81D1AF4 +sub_81D1AF4: @ 81D1AF4 + ldr r3, [r0, 0x4] + str r3, [r1] + ldr r0, [r0, 0x8] + str r0, [r2] + bx lr + thumb_func_end sub_81D1AF4 + + thumb_func_start sub_81D1B00 +sub_81D1B00: @ 81D1B00 + ldr r3, [r0, 0x4] + str r3, [r1] + ldr r0, [r0, 0x8] + str r0, [r2] + bx lr + thumb_func_end sub_81D1B00 + + thumb_func_start sub_81D1B0C +sub_81D1B0C: @ 81D1B0C + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + bl sub_81D15BC + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTrainers + adds r1, r0 + ldrb r2, [r1, 0x1] + movs r0, 0xD + muls r0, r2 + ldr r2, =gTrainerClassNames + adds r0, r2 + str r0, [r4] + adds r1, 0x4 + str r1, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_81D1B0C + + thumb_func_start sub_81D1B40 +sub_81D1B40: @ 81D1B40 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r6, r0, 0 + movs r5, 0 + ldr r2, =gUnknown_08625388 + movs r0, 0x8 + adds r0, r2 + mov r9, r0 +_081D1B54: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _081D1BBC + adds r4, r5, 0x1 + lsls r1, 2 + mov r8, r1 + cmp r4, 0x3 + bhi _081D1BA8 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _081D1BA8 + ldr r7, =gUnknown_08625388 +_081D1B7C: + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + adds r1, r7, 0x4 + adds r0, r1 + ldrh r0, [r0] + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _081D1BA8 + adds r5, r4, 0 + adds r4, r5, 0x1 + cmp r4, 0x3 + bhi _081D1BA8 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + adds r0, r7 + ldrh r0, [r0] + cmp r0, r6 + beq _081D1B7C +_081D1BA8: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + add r0, r8 + add r0, r9 + ldr r0, [r0] + b _081D1BC4 + .pool +_081D1BBC: + adds r5, 0x1 + cmp r5, 0x3 + bls _081D1B54 + movs r0, 0 +_081D1BC4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81D1B40 + + thumb_func_start sub_81D1BD0 +sub_81D1BD0: @ 81D1BD0 + push {lr} + adds r3, r0, 0 + movs r2, 0 + ldr r1, =gUnknown_08625388 +_081D1BD8: + ldrh r0, [r1] + cmp r0, r3 + bne _081D1BE8 + ldrh r0, [r1, 0x2] + b _081D1BF4 + .pool +_081D1BE8: + adds r1, 0x18 + adds r2, 0x1 + cmp r2, 0x3 + bls _081D1BD8 + movs r0, 0x1 + negs r0, r0 +_081D1BF4: + pop {r1} + bx r1 + thumb_func_end sub_81D1BD0 + + thumb_func_start sub_81D1BF8 +sub_81D1BF8: @ 81D1BF8 + push {r4,r5,lr} + adds r5, r0, 0 + movs r4, 0 +_081D1BFE: + adds r0, r4, 0 + bl sub_81D1854 + cmp r0, 0x4E + beq _081D1C10 + cmp r0, r5 + bne _081D1C10 + movs r0, 0x1 + b _081D1C18 +_081D1C10: + adds r4, 0x1 + cmp r4, 0x14 + ble _081D1BFE + movs r0, 0 +_081D1C18: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_81D1BF8 + + thumb_func_start SetMatchCallRegisteredFlag +SetMatchCallRegisteredFlag: @ 81D1C20 + push {lr} + ldr r0, =gSpecialVar_0x8004 + ldrh r0, [r0] + bl sub_81D15CC + cmp r0, 0 + blt _081D1C3C + movs r1, 0xAE + lsls r1, 1 + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + bl FlagSet +_081D1C3C: + pop {r0} + bx r0 + .pool + thumb_func_end SetMatchCallRegisteredFlag |