diff options
Diffstat (limited to 'asm/code_805744C.s')
-rw-r--r-- | asm/code_805744C.s | 552 |
1 files changed, 552 insertions, 0 deletions
diff --git a/asm/code_805744C.s b/asm/code_805744C.s new file mode 100644 index 0000000..4272c44 --- /dev/null +++ b/asm/code_805744C.s @@ -0,0 +1,552 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_805744C +sub_805744C: + push {r4-r6,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r6, [r0, 0x70] + ldrh r1, [r4, 0x2] + ldr r0, _080574A8 + cmp r1, r0 + beq _080574BA + ldrb r1, [r4] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080574B6 + ldrb r1, [r4, 0x1] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080574B6 + cmp r2, 0 + beq _080574BA + adds r0, r6, 0 + adds r0, 0xBC + ldrb r1, [r0] + adds r5, r0, 0 + cmp r1, 0x5 + bne _0805748E + adds r0, r4, 0 + bl MoveDealsDirectDamage + lsls r0, 24 + cmp r0, 0 + beq _080574B6 +_0805748E: + ldrb r0, [r5] + cmp r0, 0x6 + bne _080574BA + ldrh r1, [r4, 0x2] + movs r0, 0xB0 + lsls r0, 1 + cmp r1, r0 + bne _080574AC + movs r1, 0x9C + lsls r1, 1 + adds r0, r6, r1 + ldrb r1, [r0] + b _080574AE + .align 2, 0 +_080574A8: .4byte 0x00000163 +_080574AC: + ldrb r1, [r4] +_080574AE: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _080574BA +_080574B6: + movs r0, 0 + b _080574BC +_080574BA: + movs r0, 0x1 +_080574BC: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805744C + + thumb_func_start sub_80574C4 +sub_80574C4: + push {r4-r6,lr} + sub sp, 0x104 + adds r4, r0, 0 + adds r5, r1, 0 + movs r3, 0 + movs r2, 0 + ldr r0, [r4] + cmp r0, 0 + beq _08057502 + cmp r0, r5 + beq _080574EA +_080574DA: + lsls r0, r3, 2 + mov r6, sp + adds r1, r6, r0 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r3, 0x1 +_080574EA: + adds r2, 0x1 + cmp r2, 0x40 + bgt _08057502 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _08057502 + cmp r0, r5 + beq _080574EA + cmp r3, 0x3F + ble _080574DA +_08057502: + movs r2, 0 + ldr r0, [r4] + b _08057524 +_08057508: + lsls r0, r3, 2 + mov r6, sp + adds r1, r6, r0 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r3, 0x1 +_08057518: + adds r2, 0x1 + cmp r2, 0x40 + bgt _08057530 + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] +_08057524: + cmp r0, 0 + beq _08057530 + cmp r0, r5 + bne _08057518 + cmp r3, 0x3F + ble _08057508 +_08057530: + cmp r3, 0x40 + bgt _08057542 + movs r1, 0 + lsls r0, r3, 2 + add r0, sp +_0805753A: + stm r0!, {r1} + adds r3, 0x1 + cmp r3, 0x40 + ble _0805753A +_08057542: + mov r3, sp + adds r1, r4, 0 + movs r2, 0x40 +_08057548: + ldm r3!, {r0} + stm r1!, {r0} + subs r2, 0x1 + cmp r2, 0 + bge _08057548 + add sp, 0x104 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80574C4 + + thumb_func_start sub_805755C +sub_805755C: + push {r4,lr} + lsls r1, 16 + lsrs r4, r1, 16 + cmp r4, 0x97 + bne _08057576 + bl GetWeather + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08057576 + movs r0, 0 + b _08057580 +_08057576: + adds r0, r4, 0 + bl DoesMoveCharge + lsls r0, 24 + lsrs r0, 24 +_08057580: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805755C + + thumb_func_start sub_8057588 +sub_8057588: + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080575F8 + ldr r5, [r4, 0x70] + movs r3, 0 +_0805759E: + lsls r0, r3, 3 + movs r1, 0x8C + lsls r1, 1 + adds r0, r1 + adds r2, r5, r0 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + adds r4, r3, 0x1 + cmp r0, 0 + beq _080575F2 + movs r3, 0x1 + ldrb r1, [r2, 0x1] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080575C8 + movs r0, 0xEF + ands r0, r1 + strb r0, [r2, 0x1] + movs r3, 0x2 +_080575C8: + ldrb r1, [r2, 0x1] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080575F2 + movs r0, 0xF7 + ands r0, r1 + strb r0, [r2, 0x1] + cmp r6, 0 + beq _080575F2 + cmp r3, 0 + beq _080575F2 + adds r1, r3, 0 +_080575E2: + ldrb r0, [r2, 0x4] + cmp r0, 0 + beq _080575EC + subs r0, 0x1 + strb r0, [r2, 0x4] +_080575EC: + subs r1, 0x1 + cmp r1, 0 + bne _080575E2 +_080575F2: + adds r3, r4, 0 + cmp r3, 0x3 + ble _0805759E +_080575F8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8057588 + + thumb_func_start sub_8057600 +sub_8057600: + push {r4,lr} + ldrh r4, [r0, 0x2] + adds r0, r1, 0 + bl sub_8057620 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_8094828 + lsls r0, 16 + asrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8057600 + + thumb_func_start sub_8057620 +sub_8057620: + push {lr} + cmp r0, 0 + beq _0805762C + lsls r0, 24 + lsrs r0, 24 + b _0805762E +_0805762C: + movs r0, 0 +_0805762E: + pop {r1} + bx r1 + thumb_func_end sub_8057620 + + thumb_func_start sub_8057634 +sub_8057634: + push {r4-r7,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r6, r1, 0 + movs r7, 0 + movs r4, 0x80 + lsls r4, 1 + str r3, [sp] + adds r3, r4, 0 + bl sub_8055640 + cmp r0, 0 + beq _08057678 + movs r7, 0x1 + ldr r0, _08057684 + movs r1, 0 + ldrsh r2, [r0, r1] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_805727C + lsls r0, 24 + cmp r0, 0 + beq _08057678 + ldr r0, _08057688 + ldr r2, [r0] + str r7, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r5, 0 + adds r1, r6, 0 + movs r3, 0x1 + bl sub_8076F80 +_08057678: + adds r0, r7, 0 + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08057684: .4byte gUnknown_80F4DB4 +_08057688: .4byte gUnknown_8106A4C + thumb_func_end sub_8057634 + + thumb_func_start sub_805768C +sub_805768C: + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r3, 0 + movs r6, 0 + ldr r4, _080576B8 + ldr r3, [r4] + adds r3, 0x1 + str r3, [r4] + ldr r4, _080576BC + lsls r3, 2 + adds r3, r4 + ldr r3, [r3] + str r5, [sp] + bl sub_8055640 + cmp r0, 0 + bne _080576C4 + ldr r1, _080576C0 + movs r0, 0x1 + strb r0, [r1] + b _080576C6 + .align 2, 0 +_080576B8: .4byte gUnknown_202F21C +_080576BC: .4byte gUnknown_8106A54 +_080576C0: .4byte gUnknown_202F220 +_080576C4: + movs r6, 0x1 +_080576C6: + adds r0, r6, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805768C + + thumb_func_start sub_80576D0 +sub_80576D0: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _080576F4 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r2, r0, 0 + adds r2, 0x1 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075F34 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080576F4: .4byte gUnknown_80F4F28 + thumb_func_end sub_80576D0 + + thumb_func_start sub_80576F8 +sub_80576F8: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _0805771C + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r2, r0, 0 + adds r0, r5, 0 + adds r1, r4, 0 + movs r3, 0x1 + bl sub_8075C58 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805771C: .4byte gUnknown_80F4E74 + thumb_func_end sub_80576F8 + + thumb_func_start sub_8057720 +sub_8057720: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _08057744 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_808417C + adds r2, r0, 0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8075DBC + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08057744: .4byte gUnknown_80F4E78 + thumb_func_end sub_8057720 + + thumb_func_start sub_8057748 +sub_8057748: + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r4, _08057778 + bl GetWeather + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0x1 + str r0, [sp] + adds r0, r5, 0 + adds r1, r6, 0 + movs r3, 0 + bl HealTargetHP + movs r0, 0x1 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08057778: .4byte gUnknown_80F502A + thumb_func_end sub_8057748 + + thumb_func_start sub_805777C +sub_805777C: + push {lr} + bl sub_8079DB8 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_805777C + + thumb_func_start sub_8057788 +sub_8057788: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + adds r6, r2, 0 + mov r8, r3 + movs r0, 0 + mov r9, r0 + adds r0, r4, 0 + bl GetMapTileForDungeonEntity_2 + adds r5, r0, 0 + bl IsTileGround + lsls r0, 24 + cmp r0, 0 + beq _080577BA + ldrh r1, [r5] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _080577CC +_080577BA: + ldr r0, _080577C8 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80522F4 + b _0805780E + .align 2, 0 +_080577C8: .4byte gUnknown_80FD14C +_080577CC: + adds r0, r4, 0 + adds r1, r6, 0 + bl MoveMatchesChargingStatus + lsls r0, 24 + cmp r0, 0 + beq _080577F8 + ldr r0, _080577F4 + ldr r3, [r0] + mov r0, r8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_8055640 + adds r0, r4, 0 + bl sub_8079764 + b _0805780A + .align 2, 0 +_080577F4: .4byte gUnknown_80F4F68 +_080577F8: + ldr r0, _08057820 + ldr r0, [r0] + str r0, [sp] + adds r0, r4, 0 + adds r1, r4, 0 + movs r2, 0xA + adds r3, r6, 0 + bl sub_8079618 +_0805780A: + movs r0, 0x1 + mov r9, r0 +_0805780E: + mov r0, r9 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08057820: .4byte gUnknown_80FAD4C + thumb_func_end sub_8057788 + + .align 2,0 @ Don't pad with nop |