diff options
Diffstat (limited to 'asm/field_tasks.s')
-rw-r--r-- | asm/field_tasks.s | 1921 |
1 files changed, 1921 insertions, 0 deletions
diff --git a/asm/field_tasks.s b/asm/field_tasks.s new file mode 100644 index 000000000..bee4df22d --- /dev/null +++ b/asm/field_tasks.s @@ -0,0 +1,1921 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start task_per_step_callback_manager +task_per_step_callback_manager: @ 809D88C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r2, 0x8 + ldrsh r1, [r1, r2] + ldr r2, =gUnknown_08510348 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .pool + thumb_func_end task_per_step_callback_manager + + thumb_func_start sub_809D8B8 +sub_809D8B8: @ 809D8B8 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0809D8CA + cmp r0, 0x1 + beq _0809D8E8 + b _0809D8FC +_0809D8CA: + ldr r0, =gUnknown_030022C0 + ldr r0, [r0, 0x20] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + beq _0809D8FC + bl sub_809E7B0 + ldrh r0, [r4] + adds r0, 0x1 + b _0809D8FA + .pool +_0809D8E8: + ldr r0, =gUnknown_030022C0 + ldr r0, [r0, 0x20] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + bne _0809D8FC + ldrh r0, [r4] + subs r0, 0x1 +_0809D8FA: + strh r0, [r4] +_0809D8FC: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809D8B8 + + thumb_func_start sub_809D908 +sub_809D908: @ 809D908 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTasks + 0x8 + adds r4, r1, r0 + bl script_env_2_is_enabled + lsls r0, 24 + cmp r0, 0 + bne _0809D930 + adds r0, r4, 0 + bl sub_809D8B8 + adds r0, r4, 0x2 + adds r1, r4, 0x4 + bl wild_encounter_related +_0809D930: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809D908 + + thumb_func_start overworld_ensure_per_step_coros_running +overworld_ensure_per_step_coros_running: @ 809D93C + push {r4,r5,lr} + ldr r5, =task_per_step_callback_manager + adds r0, r5, 0 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0809D966 + adds r0, r5, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] +_0809D966: + ldr r4, =sub_809E638 + adds r0, r4, 0 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _0809D97C + adds r0, r4, 0 + movs r1, 0x50 + bl CreateTask +_0809D97C: + ldr r4, =sub_809D908 + adds r0, r4, 0 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _0809D992 + adds r0, r4, 0 + movs r1, 0x50 + bl CreateTask +_0809D992: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end overworld_ensure_per_step_coros_running + + thumb_func_start activate_per_step_callback +activate_per_step_callback: @ 809D9A8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, =task_per_step_callback_manager + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0809D9EA + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, =gTasks + 0x8 + adds r1, r0, r1 + movs r2, 0 + adds r0, r1, 0 + adds r0, 0x1E +_0809D9CC: + strh r2, [r0] + subs r0, 0x2 + cmp r0, r1 + bge _0809D9CC + cmp r4, 0x7 + bls _0809D9E8 + movs r0, 0 + strh r0, [r1] + b _0809D9EA + .pool +_0809D9E8: + strh r4, [r1] +_0809D9EA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end activate_per_step_callback + + thumb_func_start wild_encounter_reset_coro_args +wild_encounter_reset_coro_args: @ 809D9F0 + push {lr} + ldr r0, =task_per_step_callback_manager + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, =sub_809D908 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xFF + beq _0809DA1A + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, =gTasks + 0x8 + adds r0, r1 + movs r1, 0 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] +_0809DA1A: + pop {r0} + bx r0 + .pool + thumb_func_end wild_encounter_reset_coro_args + + thumb_func_start nullsub_34 +nullsub_34: @ 809DA2C + bx lr + thumb_func_end nullsub_34 + + thumb_func_start sub_809DA30 +sub_809DA30: @ 809DA30 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + adds r0, r4, 0 + bl sub_8089764 + lsls r0, 24 + cmp r0, 0 + beq _0809DA48 + adds r0, r5, 0 + b _0809DA80 +_0809DA48: + adds r0, r4, 0 + bl sub_8089778 + lsls r0, 24 + cmp r0, 0 + beq _0809DA5A + adds r0, r5, 0 + adds r0, 0x8 + b _0809DA80 +_0809DA5A: + adds r0, r4, 0 + bl sub_808978C + lsls r0, 24 + cmp r0, 0 + beq _0809DA6C + adds r0, r5, 0 + adds r0, 0x10 + b _0809DA80 +_0809DA6C: + adds r0, r4, 0 + bl sub_80897A0 + lsls r0, 24 + cmp r0, 0 + bne _0809DA7C + movs r0, 0 + b _0809DA80 +_0809DA7C: + adds r0, r5, 0 + adds r0, 0x18 +_0809DA80: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809DA30 + + thumb_func_start sub_809DA88 +sub_809DA88: @ 809DA88 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + mov r8, r3 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r7, r2, 16 + adds r0, r6, 0 + adds r1, r7, 0 + bl MapGridGetMetatileBehaviorAt + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r5, 0 + bl sub_809DA30 + adds r4, r0, 0 + adds r5, r4, 0 + cmp r4, 0 + beq _0809DB06 + movs r0, 0 + ldrsb r0, [r4, r0] + adds r0, r6, r0 + movs r1, 0x1 + ldrsb r1, [r4, r1] + adds r1, r7, r1 + ldrh r2, [r4, 0x2] + bl MapGridSetMetatileIdAt + mov r0, r8 + cmp r0, 0 + beq _0809DADE + movs r0, 0 + ldrsb r0, [r4, r0] + adds r0, r6, r0 + movs r1, 0x1 + ldrsb r1, [r4, r1] + adds r1, r7, r1 + bl CurrentMapDrawMetatileAt +_0809DADE: + movs r0, 0x4 + ldrsb r0, [r5, r0] + adds r0, r6, r0 + movs r1, 0x5 + ldrsb r1, [r5, r1] + adds r1, r7, r1 + ldrh r2, [r5, 0x6] + bl MapGridSetMetatileIdAt + mov r0, r8 + cmp r0, 0 + beq _0809DB06 + movs r0, 0x4 + ldrsb r0, [r5, r0] + adds r0, r6, r0 + movs r1, 0x5 + ldrsb r1, [r5, r1] + adds r1, r7, r1 + bl CurrentMapDrawMetatileAt +_0809DB06: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809DA88 + + thumb_func_start sub_809DB10 +sub_809DB10: @ 809DB10 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldr r0, =gUnknown_08510368 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_809DA88 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809DB10 + + thumb_func_start sub_809DB34 +sub_809DB34: @ 809DB34 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldr r0, =gUnknown_08510388 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_809DA88 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809DB34 + + thumb_func_start sub_809DB58 +sub_809DB58: @ 809DB58 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldr r0, =gUnknown_085103A8 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_809DA88 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809DB58 + + thumb_func_start sub_809DB7C +sub_809DB7C: @ 809DB7C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r10, r8 + lsls r1, 16 + lsrs r7, r1, 16 + mov r9, r7 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r5, r3, 16 + adds r0, r6, 0 + adds r1, r5, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8089764 + lsls r0, 24 + cmp r0, 0 + beq _0809DBC0 + lsls r0, r7, 16 + asrs r0, 16 + cmp r0, r5 + ble _0809DC06 +_0809DBBC: + movs r0, 0 + b _0809DC08 +_0809DBC0: + adds r0, r4, 0 + bl sub_8089778 + lsls r0, 24 + cmp r0, 0 + beq _0809DBD8 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r5 + bge _0809DC06 + b _0809DBBC +_0809DBD8: + adds r0, r4, 0 + bl sub_808978C + lsls r0, 24 + cmp r0, 0 + beq _0809DBF0 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r6 + ble _0809DC06 + b _0809DBBC +_0809DBF0: + adds r0, r4, 0 + bl sub_80897A0 + lsls r0, 24 + cmp r0, 0 + beq _0809DC06 + mov r1, r10 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r6 + blt _0809DBBC +_0809DC06: + movs r0, 0x1 +_0809DC08: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809DB7C + + thumb_func_start sub_809DC18 +sub_809DC18: @ 809DC18 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + mov r10, r8 + lsls r3, 16 + lsrs r7, r3, 16 + mov r9, r7 + lsls r0, 16 + asrs r6, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + adds r0, r6, 0 + adds r1, r5, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8089764 + lsls r0, 24 + cmp r0, 0 + beq _0809DC5C + lsls r0, r7, 16 + asrs r0, 16 + cmp r5, r0 + bge _0809DCA2 +_0809DC58: + movs r0, 0 + b _0809DCA4 +_0809DC5C: + adds r0, r4, 0 + bl sub_8089778 + lsls r0, 24 + cmp r0, 0 + beq _0809DC74 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + cmp r5, r0 + ble _0809DCA2 + b _0809DC58 +_0809DC74: + adds r0, r4, 0 + bl sub_808978C + lsls r0, 24 + cmp r0, 0 + beq _0809DC8C + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + cmp r6, r0 + bge _0809DCA2 + b _0809DC58 +_0809DC8C: + adds r0, r4, 0 + bl sub_80897A0 + lsls r0, 24 + cmp r0, 0 + beq _0809DCA2 + mov r1, r10 + lsls r0, r1, 16 + asrs r0, 16 + cmp r6, r0 + bgt _0809DC58 +_0809DCA2: + movs r0, 0x1 +_0809DCA4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809DC18 + + thumb_func_start sub_809DCB4 +sub_809DCB4: @ 809DCB4 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTasks + 0x8 + adds r4, r1, r0 + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl PlayerGetDestCoords + movs r1, 0x2 + ldrsh r0, [r4, r1] + adds r6, r5, 0 + cmp r0, 0x1 + beq _0809DD0E + cmp r0, 0x1 + bgt _0809DCEC + cmp r0, 0 + beq _0809DCF2 + b _0809DE1E + .pool +_0809DCEC: + cmp r0, 0x2 + beq _0809DDDC + b _0809DE1E +_0809DCF2: + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x4] + ldrh r0, [r5] + strh r0, [r4, 0x6] + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r3, 0 + ldrsh r1, [r5, r3] + movs r2, 0x1 + bl sub_809DB34 + b _0809DE1A +_0809DD0E: + mov r0, sp + movs r7, 0 + ldrsh r1, [r0, r7] + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0809DD28 + movs r3, 0 + ldrsh r1, [r5, r3] + movs r7, 0x6 + ldrsh r0, [r4, r7] + cmp r1, r0 + beq _0809DE1E +_0809DD28: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r5, 0x6 + ldrsh r3, [r4, r5] + bl sub_809DB7C + cmp r0, 0 + beq _0809DD70 + movs r7, 0x4 + ldrsh r0, [r4, r7] + movs r2, 0x6 + ldrsh r1, [r4, r2] + movs r2, 0x1 + bl sub_809DB10 + movs r3, 0x4 + ldrsh r0, [r4, r3] + movs r5, 0x6 + ldrsh r1, [r4, r5] + movs r2, 0 + bl sub_809DB58 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x8] + ldrh r0, [r4, 0x6] + strh r0, [r4, 0xA] + movs r0, 0x2 + strh r0, [r4, 0x2] + movs r0, 0x8 + strh r0, [r4, 0xC] + b _0809DD7A +_0809DD70: + movs r7, 0x1 + negs r7, r7 + adds r0, r7, 0 + strh r0, [r4, 0x8] + strh r0, [r4, 0xA] +_0809DD7A: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + adds r5, r6, 0 + movs r2, 0 + ldrsh r1, [r5, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r7, 0x6 + ldrsh r3, [r4, r7] + bl sub_809DC18 + cmp r0, 0 + beq _0809DDAE + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + movs r2, 0x1 + bl sub_809DB10 + movs r0, 0x2 + strh r0, [r4, 0x2] + movs r0, 0x8 + strh r0, [r4, 0xC] +_0809DDAE: + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x4] + ldrh r0, [r6] + strh r0, [r4, 0x6] + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r5, 0 + ldrsh r1, [r6, r5] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsPacifidlogLog + lsls r0, 24 + cmp r0, 0 + beq _0809DE1E + movs r0, 0x46 + bl audio_play + b _0809DE1E +_0809DDDC: + ldrh r0, [r4, 0xC] + subs r0, 0x1 + strh r0, [r4, 0xC] + lsls r0, 16 + cmp r0, 0 + bne _0809DE1E + mov r0, sp + movs r7, 0 + ldrsh r0, [r0, r7] + movs r2, 0 + ldrsh r1, [r5, r2] + movs r2, 0x1 + bl sub_809DB34 + movs r3, 0x8 + ldrsh r0, [r4, r3] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _0809DE1A + movs r5, 0xA + ldrsh r0, [r4, r5] + cmp r0, r1 + beq _0809DE1A + movs r7, 0x8 + ldrsh r0, [r4, r7] + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r2, 0x1 + bl sub_809DB58 +_0809DE1A: + movs r0, 0x1 + strh r0, [r4, 0x2] +_0809DE1E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809DCB4 + + thumb_func_start sub_809DE28 +sub_809DE28: @ 809DE28 + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + bl PlayerGetZCoord + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0809DE82 + lsls r0, r4, 16 + asrs r4, r0, 16 + lsls r0, r5, 16 + asrs r5, r0, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + ldr r0, =0x0000024e + cmp r1, r0 + beq _0809DE68 + adds r0, 0x8 + cmp r1, r0 + beq _0809DE78 + b _0809DE82 + .pool +_0809DE68: + ldr r2, =0x0000024f + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt + b _0809DE82 + .pool +_0809DE78: + ldr r2, =0x00000257 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt +_0809DE82: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809DE28 + + thumb_func_start sub_809DE8C +sub_809DE8C: @ 809DE8C + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r5, r1, 16 + bl PlayerGetZCoord + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0809DEE6 + lsls r0, r4, 16 + asrs r4, r0, 16 + lsls r0, r5, 16 + asrs r5, r0, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + ldr r0, =0x0000024f + cmp r1, r0 + beq _0809DECC + adds r0, 0x8 + cmp r1, r0 + beq _0809DEDC + b _0809DEE6 + .pool +_0809DECC: + ldr r2, =0x0000024e + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt + b _0809DEE6 + .pool +_0809DEDC: + ldr r2, =0x00000256 + adds r0, r4, 0 + adds r1, r5, 0 + bl MapGridSetMetatileIdAt +_0809DEE6: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809DE8C + + thumb_func_start sub_809DEF0 +sub_809DEF0: @ 809DEF0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTasks + 0x8 + adds r6, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + movs r0, 0x2 + ldrsh r5, [r6, r0] + mov r9, r4 + cmp r5, 0x1 + beq _0809DF84 + cmp r5, 0x1 + bgt _0809DF30 + cmp r5, 0 + beq _0809DF38 + b _0809E0F6 + .pool +_0809DF30: + cmp r5, 0x2 + bne _0809DF36 + b _0809E064 +_0809DF36: + b _0809E0F6 +_0809DF38: + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, 0x4] + mov r1, r9 + ldrh r0, [r1] + strh r0, [r6, 0x6] + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r3, 0 + ldrsh r1, [r1, r3] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsFortreeBridge + lsls r0, 24 + cmp r0, 0 + bne _0809DF62 + b _0809E0F2 +_0809DF62: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl sub_809DE28 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl CurrentMapDrawMetatileAt + b _0809E0F2 +_0809DF84: + ldrh r0, [r6, 0x6] + mov r8, r0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + ldrh r2, [r6, 0x4] + mov r10, r2 + movs r3, 0x4 + ldrsh r7, [r6, r3] + cmp r0, r7 + bne _0809DFAC + mov r0, r9 + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + lsls r0, r3, 16 + asrs r0, 16 + cmp r1, r0 + bne _0809DFAC + b _0809E0F6 +_0809DFAC: + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsFortreeBridge + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + mov r0, r8 + lsls r4, r0, 16 + asrs r1, r4, 16 + adds r0, r7, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsFortreeBridge + lsls r0, 24 + lsrs r7, r0, 24 + bl PlayerGetZCoord + movs r1, 0 + ands r5, r0 + lsls r0, r5, 24 + adds r5, r4, 0 + cmp r0, 0 + bne _0809DFF4 + movs r1, 0x1 +_0809DFF4: + cmp r1, 0 + beq _0809E008 + ldr r1, [sp, 0x4] + cmp r1, 0x1 + beq _0809E002 + cmp r7, 0x1 + bne _0809E008 +_0809E002: + movs r0, 0x47 + bl audio_play +_0809E008: + cmp r7, 0 + beq _0809E044 + mov r2, r10 + lsls r4, r2, 16 + asrs r4, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809DE8C + adds r0, r4, 0 + adds r1, r5, 0 + bl CurrentMapDrawMetatileAt + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl sub_809DE28 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0 + ldrsh r1, [r2, r3] + bl CurrentMapDrawMetatileAt +_0809E044: + mov r0, r10 + strh r0, [r6, 0x8] + mov r1, r8 + strh r1, [r6, 0xA] + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, 0x4] + mov r2, r9 + ldrh r0, [r2] + strh r0, [r6, 0x6] + cmp r7, 0 + beq _0809E0F6 + movs r0, 0x10 + strh r0, [r6, 0xC] + movs r0, 0x2 + strh r0, [r6, 0x2] +_0809E064: + ldrh r0, [r6, 0xC] + subs r0, 0x1 + strh r0, [r6, 0xC] + ldrh r3, [r6, 0x8] + mov r10, r3 + ldrh r0, [r6, 0xA] + mov r8, r0 + movs r1, 0xC + ldrsh r0, [r6, r1] + movs r1, 0x7 + bl __modsi3 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7 + bhi _0809E0EA + lsls r0, 2 + ldr r1, =_0809E094 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_0809E094: + .4byte _0809E0B4 + .4byte _0809E0EA + .4byte _0809E0EA + .4byte _0809E0EA + .4byte _0809E0C6 + .4byte _0809E0EA + .4byte _0809E0EA + .4byte _0809E0EA +_0809E0B4: + mov r2, r10 + lsls r0, r2, 16 + asrs r0, 16 + mov r3, r8 + lsls r1, r3, 16 + asrs r1, 16 + bl CurrentMapDrawMetatileAt + b _0809E0EA +_0809E0C6: + mov r0, r10 + lsls r5, r0, 16 + asrs r5, 16 + mov r1, r8 + lsls r4, r1, 16 + asrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_809DE28 + adds r0, r5, 0 + adds r1, r4, 0 + bl CurrentMapDrawMetatileAt + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_809DE8C +_0809E0EA: + movs r2, 0xC + ldrsh r0, [r6, r2] + cmp r0, 0 + bne _0809E0F6 +_0809E0F2: + movs r0, 0x1 + strh r0, [r6, 0x2] +_0809E0F6: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809DEF0 + + thumb_func_start sub_809E108 +sub_809E108: @ 809E108 + push {lr} + lsls r1, 16 + lsrs r1, 16 + lsls r0, 16 + ldr r2, =0xfffd0000 + adds r0, r2 + lsrs r0, 16 + cmp r0, 0xA + bhi _0809E144 + lsls r0, r1, 16 + asrs r1, r0, 16 + ldr r2, =0xfffa0000 + adds r0, r2 + lsrs r0, 16 + cmp r0, 0xD + bhi _0809E144 + ldr r0, =gUnknown_085103C8 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + beq _0809E144 + movs r0, 0x1 + b _0809E146 + .pool +_0809E144: + movs r0, 0 +_0809E146: + pop {r1} + bx r1 + thumb_func_end sub_809E108 + + thumb_func_start sub_809E14C +sub_809E14C: @ 809E14C + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_809E108 + cmp r0, 0 + beq _0809E17A + ldr r1, =gUnknown_085103C8 + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + bl GetVarPointer + subs r2, r5, 0x3 + movs r1, 0x1 + lsls r1, r2 + ldrh r2, [r0] + orrs r1, r2 + strh r1, [r0] +_0809E17A: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809E14C + + thumb_func_start sub_809E184 +sub_809E184: @ 809E184 + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_809E108 + cmp r0, 0 + beq _0809E1B6 + ldr r1, =gUnknown_085103C8 + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + bl VarGet + lsls r0, 16 + subs r2, r5, 0x3 + movs r1, 0x80 + lsls r1, 9 + lsls r1, r2 + ands r1, r0 + cmp r1, 0 + bne _0809E1C0 +_0809E1B6: + movs r0, 0 + b _0809E1C2 + .pool +_0809E1C0: + movs r0, 0x1 +_0809E1C2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809E184 + + thumb_func_start sub_809E1C8 +sub_809E1C8: @ 809E1C8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, =gUnknown_02037318 + ldr r0, [r0] + ldr r1, [r0] + mov r9, r1 + ldr r7, [r0, 0x4] + movs r5, 0 + cmp r5, r9 + bge _0809E210 +_0809E1E0: + movs r4, 0 + adds r0, r5, 0x1 + mov r8, r0 + cmp r4, r7 + bge _0809E20A + lsls r6, r5, 16 +_0809E1EC: + lsls r1, r4, 16 + asrs r1, 16 + asrs r0, r6, 16 + bl sub_809E184 + cmp r0, 0x1 + bne _0809E204 + adds r1, r4, 0x7 + adds r0, r5, 0x7 + ldr r2, =0x0000020e + bl MapGridSetMetatileIdAt +_0809E204: + adds r4, 0x1 + cmp r4, r7 + blt _0809E1EC +_0809E20A: + mov r5, r8 + cmp r5, r9 + blt _0809E1E0 +_0809E210: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809E1C8 + + thumb_func_start sub_809E224 +sub_809E224: @ 809E224 + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTasks + 0x8 + adds r5, r1, r0 + movs r1, 0x2 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0809E270 + cmp r0, 0x1 + bgt _0809E24C + cmp r0, 0 + beq _0809E258 + b _0809E3A6 + .pool +_0809E24C: + cmp r0, 0x2 + beq _0809E306 + cmp r0, 0x3 + bne _0809E256 + b _0809E360 +_0809E256: + b _0809E3A6 +_0809E258: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x4] + ldrh r0, [r4] + strh r0, [r5, 0x6] + b _0809E3A2 +_0809E270: + mov r7, sp + adds r7, 0x2 + mov r0, sp + adds r1, r7, 0 + bl PlayerGetDestCoords + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809E29A + movs r0, 0 + ldrsh r1, [r7, r0] + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809E29A + b _0809E3A6 +_0809E29A: + strh r2, [r5, 0x4] + ldrh r0, [r7] + strh r0, [r5, 0x6] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r7, r2] + bl MapGridGetMetatileBehaviorAt + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r0, =0x00004022 + bl GetVarPointer + adds r6, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8089604 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809E2E0 + ldrh r0, [r6] + adds r0, 0x1 + strh r0, [r6] + movs r0, 0x4 + strh r0, [r5, 0xC] + movs r0, 0x2 + b _0809E2F8 + .pool +_0809E2E0: + adds r0, r4, 0 + bl sub_8089618 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0809E3A6 + movs r0, 0 + strh r0, [r6] + movs r0, 0x4 + strh r0, [r5, 0xC] + movs r0, 0x3 +_0809E2F8: + strh r0, [r5, 0x2] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x8] + ldrh r0, [r7] + strh r0, [r5, 0xA] + b _0809E3A6 +_0809E306: + ldrh r1, [r5, 0xC] + movs r3, 0xC + ldrsh r0, [r5, r3] + cmp r0, 0 + bne _0809E36A + mov r1, sp + ldrh r0, [r5, 0x8] + strh r0, [r1] + mov r4, sp + adds r4, 0x2 + ldrh r0, [r5, 0xA] + strh r0, [r4] + movs r0, 0x2A + bl audio_play + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, =0x0000020e + bl MapGridSetMetatileIdAt + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl CurrentMapDrawMetatileAt + mov r0, sp + ldrh r0, [r0] + subs r0, 0x7 + lsls r0, 16 + asrs r0, 16 + ldrh r1, [r4] + subs r1, 0x7 + lsls r1, 16 + asrs r1, 16 + bl sub_809E14C + b _0809E3A2 + .pool +_0809E360: + ldrh r1, [r5, 0xC] + movs r3, 0xC + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _0809E370 +_0809E36A: + subs r0, r1, 0x1 + strh r0, [r5, 0xC] + b _0809E3A6 +_0809E370: + mov r1, sp + ldrh r0, [r5, 0x8] + strh r0, [r1] + mov r4, sp + adds r4, 0x2 + ldrh r0, [r5, 0xA] + strh r0, [r4] + movs r0, 0x29 + bl audio_play + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, =0x00000206 + bl MapGridSetMetatileIdAt + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl CurrentMapDrawMetatileAt +_0809E3A2: + movs r0, 0x1 + strh r0, [r5, 0x2] +_0809E3A6: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809E224 + + thumb_func_start sub_809E3B4 +sub_809E3B4: @ 809E3B4 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTasks + 0x8 + adds r5, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x2 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809E3EE + movs r0, 0 + ldrsh r1, [r4, r0] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0809E47A +_0809E3EE: + strh r2, [r5, 0x2] + ldrh r0, [r4] + strh r0, [r5, 0x4] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsAsh + lsls r0, 24 + cmp r0, 0 + beq _0809E47A + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileIdAt + ldr r1, =0x0000020a + cmp r0, r1 + bne _0809E444 + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, =0x00000212 + movs r3, 0x4 + bl ash + b _0809E456 + .pool +_0809E444: + mov r0, sp + movs r3, 0 + ldrsh r0, [r0, r3] + movs r2, 0 + ldrsh r1, [r4, r2] + ldr r2, =0x00000206 + movs r3, 0x4 + bl ash +_0809E456: + movs r0, 0x87 + lsls r0, 1 + movs r1, 0x1 + bl sub_80D6724 + lsls r0, 24 + cmp r0, 0 + beq _0809E47A + ldr r0, =0x00004048 + bl GetVarPointer + adds r2, r0, 0 + ldrh r1, [r2] + ldr r0, =0x0000270e + cmp r1, r0 + bhi _0809E47A + adds r0, r1, 0x1 + strh r0, [r2] +_0809E47A: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809E3B4 + + thumb_func_start sub_809E490 +sub_809E490: @ 809E490 + push {r4,r5,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r4, r1, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridGetMetatileIdAt + ldr r1, =0x0000022f + ldr r2, =0x00000237 + cmp r0, r1 + bne _0809E4AC + subs r2, 0x31 +_0809E4AC: + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridSetMetatileIdAt + adds r0, r5, 0 + adds r1, r4, 0 + bl CurrentMapDrawMetatileAt + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809E490 + + thumb_func_start sub_809E4CC +sub_809E4CC: @ 809E4CC + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTasks + 0x8 + adds r5, r1, r0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 16 + lsrs r6, r0, 16 + ldrh r1, [r5, 0x8] + movs r3, 0x8 + ldrsh r0, [r5, r3] + adds r7, r4, 0 + cmp r0, 0 + beq _0809E51E + subs r0, r1, 0x1 + strh r0, [r5, 0x8] + lsls r0, 16 + cmp r0, 0 + bne _0809E51E + movs r1, 0xA + ldrsh r0, [r5, r1] + movs r2, 0xC + ldrsh r1, [r5, r2] + bl sub_809E490 +_0809E51E: + ldrh r1, [r5, 0xE] + movs r3, 0xE + ldrsh r0, [r5, r3] + cmp r0, 0 + beq _0809E53E + subs r0, r1, 0x1 + strh r0, [r5, 0xE] + lsls r0, 16 + cmp r0, 0 + bne _0809E53E + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + bl sub_809E490 +_0809E53E: + lsls r0, r6, 24 + lsrs r6, r0, 24 + adds r0, r6, 0 + bl sub_8089918 + lsls r0, 24 + cmp r0, 0 + beq _0809E556 + ldr r0, =0x00004022 + movs r1, 0 + bl VarSet +_0809E556: + mov r0, sp + ldrh r2, [r0] + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809E572 + movs r0, 0 + ldrsh r1, [r7, r0] + movs r3, 0x6 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0809E5D2 +_0809E572: + strh r2, [r5, 0x4] + adds r4, r7, 0 + ldrh r0, [r4] + strh r0, [r5, 0x6] + adds r0, r6, 0 + bl sub_808992C + lsls r0, 24 + cmp r0, 0 + beq _0809E5D2 + bl sub_811A138 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x4 + beq _0809E59A + ldr r0, =0x00004022 + movs r1, 0 + bl VarSet +_0809E59A: + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0809E5BC + movs r0, 0x3 + strh r0, [r5, 0x8] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0xA] + ldrh r0, [r4] + strh r0, [r5, 0xC] + b _0809E5D2 + .pool +_0809E5BC: + movs r2, 0xE + ldrsh r0, [r5, r2] + cmp r0, 0 + bne _0809E5D2 + movs r0, 0x3 + strh r0, [r5, 0xE] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, 0x10] + ldrh r0, [r7] + strh r0, [r5, 0x12] +_0809E5D2: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809E4CC + + thumb_func_start sub_809E5DC +sub_809E5DC: @ 809E5DC + push {r4,r5,lr} + adds r3, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + ldrh r0, [r3] + subs r0, 0x1 + strh r0, [r3] + lsls r0, 16 + cmp r0, 0 + bne _0809E5F8 + movs r2, 0xE8 + b _0809E60C +_0809E5F8: + ldr r1, =gUnknown_085103FC + movs r2, 0 + ldrsh r0, [r3, r2] + cmp r0, 0 + bge _0809E604 + adds r0, 0x7 +_0809E604: + asrs r0, 3 + lsls r0, 1 + adds r0, r1 + ldrh r2, [r0] +_0809E60C: + lsls r5, 16 + asrs r5, 16 + lsls r4, 16 + asrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridSetMetatileIdAt + adds r0, r5, 0 + adds r1, r4, 0 + bl CurrentMapDrawMetatileAt + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0xE8 + bl MapGridSetMetatileIdAt + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_809E5DC + + thumb_func_start sub_809E638 +sub_809E638: @ 809E638 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, =gTasks + 0x8 + adds r4, r1, r0 + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl PlayerGetDestCoords + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + movs r1, 0x4 + ldrsb r1, [r0, r1] + lsls r1, 8 + ldrb r0, [r0, 0x5] + lsls r0, 24 + asrs r0, 24 + orrs r0, r1 + lsls r0, 16 + lsrs r7, r0, 16 + movs r0, 0x2 + ldrsh r1, [r4, r0] + mov r8, r5 + cmp r1, 0 + beq _0809E688 + cmp r1, 0x1 + beq _0809E6B4 + b _0809E708 + .pool +_0809E688: + strh r7, [r4] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, 0x4] + ldrh r0, [r5] + strh r0, [r4, 0x6] + movs r0, 0x1 + strh r0, [r4, 0x2] + strh r1, [r4, 0x8] + strh r1, [r4, 0xE] + strh r1, [r4, 0x14] + strh r1, [r4, 0x1A] + b _0809E708 +_0809E6A2: + movs r0, 0x20 + strh r0, [r1] + mov r0, sp + ldrh r0, [r0] + strh r0, [r1, 0x2] + mov r2, r8 + ldrh r0, [r2] + strh r0, [r1, 0x4] + b _0809E708 +_0809E6B4: + mov r0, sp + movs r3, 0x4 + ldrsh r1, [r4, r3] + ldrh r2, [r0] + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bne _0809E6D0 + movs r0, 0x6 + ldrsh r1, [r4, r0] + movs r3, 0 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0809E708 +_0809E6D0: + strh r2, [r4, 0x4] + ldrh r0, [r5] + strh r0, [r4, 0x6] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsMuddySlope + lsls r0, 24 + cmp r0, 0 + beq _0809E708 + movs r6, 0x4 + adds r1, r4, 0 + adds r1, 0x8 +_0809E6F8: + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _0809E6A2 + adds r1, 0x6 + adds r6, 0x3 + cmp r6, 0xD + ble _0809E6F8 +_0809E708: + ldr r2, =gUnknown_02037334 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0809E728 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r7, r0 + beq _0809E728 + strh r7, [r4] + ldrh r0, [r2, 0x4] + ldrh r1, [r2, 0x8] + b _0809E72C + .pool +_0809E728: + movs r0, 0 + movs r1, 0 +_0809E72C: + lsls r0, 16 + asrs r0, 16 + mov r8, r0 + lsls r0, r1, 16 + asrs r7, r0, 16 + adds r5, r4, 0 + adds r5, 0x8 + adds r4, r5, 0 + movs r6, 0x9 +_0809E73E: + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0809E762 + ldrh r0, [r4, 0x2] + mov r3, r8 + subs r0, r3 + strh r0, [r4, 0x2] + ldrh r0, [r4, 0x4] + subs r0, r7 + strh r0, [r4, 0x4] + movs r0, 0x2 + ldrsh r1, [r4, r0] + movs r3, 0x4 + ldrsh r2, [r4, r3] + adds r0, r5, 0 + bl sub_809E5DC +_0809E762: + adds r4, 0x6 + adds r5, 0x6 + subs r6, 0x3 + cmp r6, 0 + bge _0809E73E + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809E638 + + .align 2, 0 @ Don't pad with nop. |