Files
2019-09-27 01:42:56 -04:00

1977 lines
34 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start Task_RunPerStepCallback
Task_RunPerStepCallback: @ 0x0809D164
push {lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _0809D188
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r2
movs r2, #8
ldrsh r1, [r1, r2]
ldr r2, _0809D18C
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {r0}
bx r0
.align 2, 0
_0809D188: .4byte 0x03005B60
_0809D18C: .4byte 0x084E898C
thumb_func_end Task_RunPerStepCallback
thumb_func_start RunTimeBasedEvents
RunTimeBasedEvents: @ 0x0809D190
push {r4, lr}
adds r4, r0, #0
movs r1, #0
ldrsh r0, [r4, r1]
cmp r0, #0
beq _0809D1A2
cmp r0, #1
beq _0809D1C0
b _0809D1D4
_0809D1A2:
ldr r0, _0809D1BC
ldr r0, [r0, #0x20]
movs r1, #0x80
lsls r1, r1, #5
ands r0, r1
cmp r0, #0
beq _0809D1D4
bl DoTimeBasedEvents
ldrh r0, [r4]
adds r0, #1
b _0809D1D2
.align 2, 0
_0809D1BC: .4byte 0x03002360
_0809D1C0:
ldr r0, _0809D1DC
ldr r0, [r0, #0x20]
movs r1, #0x80
lsls r1, r1, #5
ands r0, r1
cmp r0, #0
bne _0809D1D4
ldrh r0, [r4]
subs r0, #1
_0809D1D2:
strh r0, [r4]
_0809D1D4:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0809D1DC: .4byte 0x03002360
thumb_func_end RunTimeBasedEvents
thumb_func_start Task_RunTimeBasedEvents
Task_RunTimeBasedEvents: @ 0x0809D1E0
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0809D210
adds r4, r1, r0
bl ScriptContext2_IsEnabled
lsls r0, r0, #0x18
cmp r0, #0
bne _0809D208
adds r0, r4, #0
bl RunTimeBasedEvents
adds r0, r4, #2
adds r1, r4, #4
bl UpdateAmbientCry
_0809D208:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0809D210: .4byte 0x03005B68
thumb_func_end Task_RunTimeBasedEvents
thumb_func_start SetUpFieldTasks
SetUpFieldTasks: @ 0x0809D214
push {r4, r5, lr}
ldr r5, _0809D270
adds r0, r5, #0
bl FuncIsActiveTask
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
bne _0809D23E
adds r0, r5, #0
movs r1, #0x50
bl CreateTask
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _0809D274
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
adds r1, r1, r2
strh r4, [r1, #8]
_0809D23E:
ldr r4, _0809D278
adds r0, r4, #0
bl FuncIsActiveTask
lsls r0, r0, #0x18
cmp r0, #0
bne _0809D254
adds r0, r4, #0
movs r1, #0x50
bl CreateTask
_0809D254:
ldr r4, _0809D27C
adds r0, r4, #0
bl FuncIsActiveTask
lsls r0, r0, #0x18
cmp r0, #0
bne _0809D26A
adds r0, r4, #0
movs r1, #0x50
bl CreateTask
_0809D26A:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809D270: .4byte 0x0809D165
_0809D274: .4byte 0x03005B60
_0809D278: .4byte 0x0809DF11
_0809D27C: .4byte 0x0809D1E1
thumb_func_end SetUpFieldTasks
thumb_func_start ActivatePerStepCallback
ActivatePerStepCallback: @ 0x0809D280
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r0, _0809D2B8
bl FindTaskIdByFunc
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0xff
beq _0809D2C2
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
ldr r1, _0809D2BC
adds r1, r0, r1
movs r2, #0
adds r0, r1, #0
adds r0, #0x1e
_0809D2A4:
strh r2, [r0]
subs r0, #2
cmp r0, r1
bge _0809D2A4
cmp r4, #7
bls _0809D2C0
movs r0, #0
strh r0, [r1]
b _0809D2C2
.align 2, 0
_0809D2B8: .4byte 0x0809D165
_0809D2BC: .4byte 0x03005B68
_0809D2C0:
strh r4, [r1]
_0809D2C2:
pop {r4}
pop {r0}
bx r0
thumb_func_end ActivatePerStepCallback
thumb_func_start ResetFieldTasksArgs
ResetFieldTasksArgs: @ 0x0809D2C8
push {lr}
ldr r0, _0809D2F8
bl FindTaskIdByFunc
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
ldr r0, _0809D2FC
bl FindTaskIdByFunc
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0xff
beq _0809D2F2
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
ldr r1, _0809D300
adds r0, r0, r1
movs r1, #0
strh r1, [r0, #2]
strh r1, [r0, #4]
_0809D2F2:
pop {r0}
bx r0
.align 2, 0
_0809D2F8: .4byte 0x0809D165
_0809D2FC: .4byte 0x0809D1E1
_0809D300: .4byte 0x03005B68
thumb_func_end ResetFieldTasksArgs
thumb_func_start DummyPerStepCallback
DummyPerStepCallback: @ 0x0809D304
bx lr
.align 2, 0
thumb_func_end DummyPerStepCallback
thumb_func_start GetPacifidlogBridgeMetatileOffsets
GetPacifidlogBridgeMetatileOffsets: @ 0x0809D308
push {r4, r5, lr}
adds r5, r0, #0
lsls r1, r1, #0x18
lsrs r4, r1, #0x18
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogVerticalLog1
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D320
adds r0, r5, #0
b _0809D358
_0809D320:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogVerticalLog2
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D332
adds r0, r5, #0
adds r0, #8
b _0809D358
_0809D332:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogHorizontalLog1
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D344
adds r0, r5, #0
adds r0, #0x10
b _0809D358
_0809D344:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogHorizontalLog2
lsls r0, r0, #0x18
cmp r0, #0
bne _0809D354
movs r0, #0
b _0809D358
_0809D354:
adds r0, r5, #0
adds r0, #0x18
_0809D358:
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_end GetPacifidlogBridgeMetatileOffsets
thumb_func_start SetPacifidlogBridgeMetatiles
SetPacifidlogBridgeMetatiles: @ 0x0809D360
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
mov r8, r3
lsls r1, r1, #0x10
asrs r6, r1, #0x10
lsls r2, r2, #0x10
asrs r7, r2, #0x10
adds r0, r6, #0
adds r1, r7, #0
bl MapGridGetMetatileBehaviorAt
adds r1, r0, #0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
adds r0, r5, #0
bl GetPacifidlogBridgeMetatileOffsets
adds r4, r0, #0
adds r5, r4, #0
cmp r4, #0
beq _0809D3DE
movs r0, #0
ldrsb r0, [r4, r0]
adds r0, r6, r0
movs r1, #1
ldrsb r1, [r4, r1]
adds r1, r7, r1
ldrh r2, [r4, #2]
bl MapGridSetMetatileIdAt
mov r0, r8
cmp r0, #0
beq _0809D3B6
movs r0, #0
ldrsb r0, [r4, r0]
adds r0, r6, r0
movs r1, #1
ldrsb r1, [r4, r1]
adds r1, r7, r1
bl CurrentMapDrawMetatileAt
_0809D3B6:
movs r0, #4
ldrsb r0, [r5, r0]
adds r0, r6, r0
movs r1, #5
ldrsb r1, [r5, r1]
adds r1, r7, r1
ldrh r2, [r5, #6]
bl MapGridSetMetatileIdAt
mov r0, r8
cmp r0, #0
beq _0809D3DE
movs r0, #4
ldrsb r0, [r5, r0]
adds r0, r6, r0
movs r1, #5
ldrsb r1, [r5, r1]
adds r1, r7, r1
bl CurrentMapDrawMetatileAt
_0809D3DE:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end SetPacifidlogBridgeMetatiles
thumb_func_start UpdateHalfSubmergedBridgeMetatiles
UpdateHalfSubmergedBridgeMetatiles: @ 0x0809D3E8
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
adds r3, r2, #0
ldr r0, _0809D408
lsls r4, r4, #0x10
asrs r4, r4, #0x10
lsls r5, r5, #0x10
asrs r5, r5, #0x10
adds r1, r4, #0
adds r2, r5, #0
bl SetPacifidlogBridgeMetatiles
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809D408: .4byte 0x084E89AC
thumb_func_end UpdateHalfSubmergedBridgeMetatiles
thumb_func_start UpdateFullySubmergedBridgeMetatiles
UpdateFullySubmergedBridgeMetatiles: @ 0x0809D40C
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
adds r3, r2, #0
ldr r0, _0809D42C
lsls r4, r4, #0x10
asrs r4, r4, #0x10
lsls r5, r5, #0x10
asrs r5, r5, #0x10
adds r1, r4, #0
adds r2, r5, #0
bl SetPacifidlogBridgeMetatiles
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809D42C: .4byte 0x084E89CC
thumb_func_end UpdateFullySubmergedBridgeMetatiles
thumb_func_start UpdateFloatingBridgeMetatiles
UpdateFloatingBridgeMetatiles: @ 0x0809D430
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
adds r3, r2, #0
ldr r0, _0809D450
lsls r4, r4, #0x10
asrs r4, r4, #0x10
lsls r5, r5, #0x10
asrs r5, r5, #0x10
adds r1, r4, #0
adds r2, r5, #0
bl SetPacifidlogBridgeMetatiles
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809D450: .4byte 0x084E89EC
thumb_func_end UpdateFloatingBridgeMetatiles
thumb_func_start StandingOnNewPacifidlogBridge
StandingOnNewPacifidlogBridge: @ 0x0809D454
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
mov sl, r8
lsls r1, r1, #0x10
lsrs r7, r1, #0x10
mov sb, r7
lsls r2, r2, #0x10
asrs r6, r2, #0x10
lsls r3, r3, #0x10
asrs r5, r3, #0x10
adds r0, r6, #0
adds r1, r5, #0
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogVerticalLog1
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D498
lsls r0, r7, #0x10
asrs r0, r0, #0x10
cmp r0, r5
ble _0809D4DE
_0809D494:
movs r0, #0
b _0809D4E0
_0809D498:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogVerticalLog2
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D4B0
mov r1, sb
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r0, r5
bge _0809D4DE
b _0809D494
_0809D4B0:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogHorizontalLog1
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D4C8
mov r1, r8
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r0, r6
ble _0809D4DE
b _0809D494
_0809D4C8:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogHorizontalLog2
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D4DE
mov r1, sl
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r0, r6
blt _0809D494
_0809D4DE:
movs r0, #1
_0809D4E0:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end StandingOnNewPacifidlogBridge
thumb_func_start StandingOnSamePacifidlogBridge
StandingOnSamePacifidlogBridge: @ 0x0809D4F0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
mov r8, r2
mov sl, r8
lsls r3, r3, #0x10
lsrs r7, r3, #0x10
mov sb, r7
lsls r0, r0, #0x10
asrs r6, r0, #0x10
lsls r1, r1, #0x10
asrs r5, r1, #0x10
adds r0, r6, #0
adds r1, r5, #0
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogVerticalLog1
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D534
lsls r0, r7, #0x10
asrs r0, r0, #0x10
cmp r5, r0
bge _0809D57A
_0809D530:
movs r0, #0
b _0809D57C
_0809D534:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogVerticalLog2
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D54C
mov r1, sb
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r5, r0
ble _0809D57A
b _0809D530
_0809D54C:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogHorizontalLog1
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D564
mov r1, r8
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r6, r0
bge _0809D57A
b _0809D530
_0809D564:
adds r0, r4, #0
bl MetatileBehavior_IsPacifilogHorizontalLog2
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D57A
mov r1, sl
lsls r0, r1, #0x10
asrs r0, r0, #0x10
cmp r6, r0
bgt _0809D530
_0809D57A:
movs r0, #1
_0809D57C:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_end StandingOnSamePacifidlogBridge
thumb_func_start PacifidlogBridgePerStepCallback
PacifidlogBridgePerStepCallback: @ 0x0809D58C
push {r4, r5, r6, r7, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0809D5C0
adds r4, r1, r0
mov r5, sp
adds r5, #2
mov r0, sp
adds r1, r5, #0
bl PlayerGetDestCoords
movs r1, #2
ldrsh r0, [r4, r1]
adds r6, r5, #0
cmp r0, #1
beq _0809D5E6
cmp r0, #1
bgt _0809D5C4
cmp r0, #0
beq _0809D5CA
b _0809D6F6
.align 2, 0
_0809D5C0: .4byte 0x03005B68
_0809D5C4:
cmp r0, #2
beq _0809D6B4
b _0809D6F6
_0809D5CA:
mov r0, sp
ldrh r0, [r0]
strh r0, [r4, #4]
ldrh r0, [r5]
strh r0, [r4, #6]
mov r0, sp
movs r2, #0
ldrsh r0, [r0, r2]
movs r3, #0
ldrsh r1, [r5, r3]
movs r2, #1
bl UpdateFullySubmergedBridgeMetatiles
b _0809D6F2
_0809D5E6:
mov r0, sp
movs r7, #0
ldrsh r1, [r0, r7]
movs r2, #4
ldrsh r0, [r4, r2]
cmp r1, r0
bne _0809D600
movs r3, #0
ldrsh r1, [r5, r3]
movs r7, #6
ldrsh r0, [r4, r7]
cmp r1, r0
beq _0809D6F6
_0809D600:
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r5, r2]
movs r3, #4
ldrsh r2, [r4, r3]
movs r5, #6
ldrsh r3, [r4, r5]
bl StandingOnNewPacifidlogBridge
cmp r0, #0
beq _0809D648
movs r7, #4
ldrsh r0, [r4, r7]
movs r2, #6
ldrsh r1, [r4, r2]
movs r2, #1
bl UpdateHalfSubmergedBridgeMetatiles
movs r3, #4
ldrsh r0, [r4, r3]
movs r5, #6
ldrsh r1, [r4, r5]
movs r2, #0
bl UpdateFloatingBridgeMetatiles
ldrh r0, [r4, #4]
strh r0, [r4, #8]
ldrh r0, [r4, #6]
strh r0, [r4, #0xa]
movs r0, #2
strh r0, [r4, #2]
movs r0, #8
strh r0, [r4, #0xc]
b _0809D652
_0809D648:
movs r7, #1
rsbs r7, r7, #0
adds r0, r7, #0
strh r0, [r4, #8]
strh r0, [r4, #0xa]
_0809D652:
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
adds r5, r6, #0
movs r2, #0
ldrsh r1, [r5, r2]
movs r3, #4
ldrsh r2, [r4, r3]
movs r7, #6
ldrsh r3, [r4, r7]
bl StandingOnSamePacifidlogBridge
cmp r0, #0
beq _0809D686
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r5, r2]
movs r2, #1
bl UpdateHalfSubmergedBridgeMetatiles
movs r0, #2
strh r0, [r4, #2]
movs r0, #8
strh r0, [r4, #0xc]
_0809D686:
mov r0, sp
ldrh r0, [r0]
strh r0, [r4, #4]
ldrh r0, [r6]
strh r0, [r4, #6]
mov r0, sp
movs r3, #0
ldrsh r0, [r0, r3]
movs r5, #0
ldrsh r1, [r6, r5]
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsPacifidlogLog
lsls r0, r0, #0x18
cmp r0, #0
beq _0809D6F6
movs r0, #0x46
bl PlaySE
b _0809D6F6
_0809D6B4:
ldrh r0, [r4, #0xc]
subs r0, #1
strh r0, [r4, #0xc]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809D6F6
mov r0, sp
movs r7, #0
ldrsh r0, [r0, r7]
movs r2, #0
ldrsh r1, [r5, r2]
movs r2, #1
bl UpdateFullySubmergedBridgeMetatiles
movs r3, #8
ldrsh r0, [r4, r3]
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
beq _0809D6F2
movs r5, #0xa
ldrsh r0, [r4, r5]
cmp r0, r1
beq _0809D6F2
movs r7, #8
ldrsh r0, [r4, r7]
movs r2, #0xa
ldrsh r1, [r4, r2]
movs r2, #1
bl UpdateFloatingBridgeMetatiles
_0809D6F2:
movs r0, #1
strh r0, [r4, #2]
_0809D6F6:
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end PacifidlogBridgePerStepCallback
thumb_func_start SetLoweredForetreeBridgeMetatile
SetLoweredForetreeBridgeMetatile: @ 0x0809D700
push {r4, r5, lr}
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
bl PlayerGetZCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #1
ands r0, r1
cmp r0, #0
bne _0809D75A
lsls r0, r4, #0x10
asrs r4, r0, #0x10
lsls r0, r5, #0x10
asrs r5, r0, #0x10
adds r0, r4, #0
adds r1, r5, #0
bl MapGridGetMetatileIdAt
adds r1, r0, #0
ldr r0, _0809D73C
cmp r1, r0
beq _0809D740
adds r0, #8
cmp r1, r0
beq _0809D750
b _0809D75A
.align 2, 0
_0809D73C: .4byte 0x0000024E
_0809D740:
ldr r2, _0809D74C
adds r0, r4, #0
adds r1, r5, #0
bl MapGridSetMetatileIdAt
b _0809D75A
.align 2, 0
_0809D74C: .4byte 0x0000024F
_0809D750:
ldr r2, _0809D760
adds r0, r4, #0
adds r1, r5, #0
bl MapGridSetMetatileIdAt
_0809D75A:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809D760: .4byte 0x00000257
thumb_func_end SetLoweredForetreeBridgeMetatile
thumb_func_start SetNormalFortreeBridgeMetatile
SetNormalFortreeBridgeMetatile: @ 0x0809D764
push {r4, r5, lr}
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
bl PlayerGetZCoord
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #1
ands r0, r1
cmp r0, #0
bne _0809D7BE
lsls r0, r4, #0x10
asrs r4, r0, #0x10
lsls r0, r5, #0x10
asrs r5, r0, #0x10
adds r0, r4, #0
adds r1, r5, #0
bl MapGridGetMetatileIdAt
adds r1, r0, #0
ldr r0, _0809D7A0
cmp r1, r0
beq _0809D7A4
adds r0, #8
cmp r1, r0
beq _0809D7B4
b _0809D7BE
.align 2, 0
_0809D7A0: .4byte 0x0000024F
_0809D7A4:
ldr r2, _0809D7B0
adds r0, r4, #0
adds r1, r5, #0
bl MapGridSetMetatileIdAt
b _0809D7BE
.align 2, 0
_0809D7B0: .4byte 0x0000024E
_0809D7B4:
ldr r2, _0809D7C4
adds r0, r4, #0
adds r1, r5, #0
bl MapGridSetMetatileIdAt
_0809D7BE:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809D7C4: .4byte 0x00000256
thumb_func_end SetNormalFortreeBridgeMetatile
thumb_func_start FortreeBridgePerStepCallback
FortreeBridgePerStepCallback: @ 0x0809D7C8
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0809D804
adds r6, r1, r0
mov r4, sp
adds r4, #2
mov r0, sp
adds r1, r4, #0
bl PlayerGetDestCoords
movs r0, #2
ldrsh r5, [r6, r0]
mov sb, r4
cmp r5, #1
beq _0809D85C
cmp r5, #1
bgt _0809D808
cmp r5, #0
beq _0809D810
b _0809D9CE
.align 2, 0
_0809D804: .4byte 0x03005B68
_0809D808:
cmp r5, #2
bne _0809D80E
b _0809D93C
_0809D80E:
b _0809D9CE
_0809D810:
mov r0, sp
ldrh r0, [r0]
strh r0, [r6, #4]
mov r1, sb
ldrh r0, [r1]
strh r0, [r6, #6]
mov r0, sp
movs r2, #0
ldrsh r0, [r0, r2]
movs r3, #0
ldrsh r1, [r1, r3]
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsFortreeBridge
lsls r0, r0, #0x18
cmp r0, #0
bne _0809D83A
b _0809D9CA
_0809D83A:
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
mov r2, sb
movs r3, #0
ldrsh r1, [r2, r3]
bl SetLoweredForetreeBridgeMetatile
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
mov r2, sb
movs r3, #0
ldrsh r1, [r2, r3]
bl CurrentMapDrawMetatileAt
b _0809D9CA
_0809D85C:
ldrh r0, [r6, #6]
mov r8, r0
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
ldrh r2, [r6, #4]
mov sl, r2
movs r3, #4
ldrsh r7, [r6, r3]
cmp r0, r7
bne _0809D884
mov r0, sb
movs r2, #0
ldrsh r1, [r0, r2]
mov r3, r8
lsls r0, r3, #0x10
asrs r0, r0, #0x10
cmp r1, r0
bne _0809D884
b _0809D9CE
_0809D884:
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
mov r2, sb
movs r3, #0
ldrsh r1, [r2, r3]
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsFortreeBridge
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #4]
mov r0, r8
lsls r4, r0, #0x10
asrs r1, r4, #0x10
adds r0, r7, #0
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsFortreeBridge
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
bl PlayerGetZCoord
movs r1, #0
ands r5, r0
lsls r0, r5, #0x18
adds r5, r4, #0
cmp r0, #0
bne _0809D8CC
movs r1, #1
_0809D8CC:
cmp r1, #0
beq _0809D8E0
ldr r1, [sp, #4]
cmp r1, #1
beq _0809D8DA
cmp r7, #1
bne _0809D8E0
_0809D8DA:
movs r0, #0x47
bl PlaySE
_0809D8E0:
cmp r7, #0
beq _0809D91C
mov r2, sl
lsls r4, r2, #0x10
asrs r4, r4, #0x10
asrs r5, r5, #0x10
adds r0, r4, #0
adds r1, r5, #0
bl SetNormalFortreeBridgeMetatile
adds r0, r4, #0
adds r1, r5, #0
bl CurrentMapDrawMetatileAt
mov r0, sp
movs r3, #0
ldrsh r0, [r0, r3]
mov r2, sb
movs r3, #0
ldrsh r1, [r2, r3]
bl SetLoweredForetreeBridgeMetatile
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
mov r2, sb
movs r3, #0
ldrsh r1, [r2, r3]
bl CurrentMapDrawMetatileAt
_0809D91C:
mov r0, sl
strh r0, [r6, #8]
mov r1, r8
strh r1, [r6, #0xa]
mov r0, sp
ldrh r0, [r0]
strh r0, [r6, #4]
mov r2, sb
ldrh r0, [r2]
strh r0, [r6, #6]
cmp r7, #0
beq _0809D9CE
movs r0, #0x10
strh r0, [r6, #0xc]
movs r0, #2
strh r0, [r6, #2]
_0809D93C:
ldrh r0, [r6, #0xc]
subs r0, #1
strh r0, [r6, #0xc]
ldrh r3, [r6, #8]
mov sl, r3
ldrh r0, [r6, #0xa]
mov r8, r0
movs r1, #0xc
ldrsh r0, [r6, r1]
movs r1, #7
bl __modsi3
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #7
bhi _0809D9C2
lsls r0, r0, #2
ldr r1, _0809D968
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0809D968: .4byte 0x0809D96C
_0809D96C: @ jump table
.4byte _0809D98C @ case 0
.4byte _0809D9C2 @ case 1
.4byte _0809D9C2 @ case 2
.4byte _0809D9C2 @ case 3
.4byte _0809D99E @ case 4
.4byte _0809D9C2 @ case 5
.4byte _0809D9C2 @ case 6
.4byte _0809D9C2 @ case 7
_0809D98C:
mov r2, sl
lsls r0, r2, #0x10
asrs r0, r0, #0x10
mov r3, r8
lsls r1, r3, #0x10
asrs r1, r1, #0x10
bl CurrentMapDrawMetatileAt
b _0809D9C2
_0809D99E:
mov r0, sl
lsls r5, r0, #0x10
asrs r5, r5, #0x10
mov r1, r8
lsls r4, r1, #0x10
asrs r4, r4, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl SetLoweredForetreeBridgeMetatile
adds r0, r5, #0
adds r1, r4, #0
bl CurrentMapDrawMetatileAt
adds r0, r5, #0
adds r1, r4, #0
bl SetNormalFortreeBridgeMetatile
_0809D9C2:
movs r2, #0xc
ldrsh r0, [r6, r2]
cmp r0, #0
bne _0809D9CE
_0809D9CA:
movs r0, #1
strh r0, [r6, #2]
_0809D9CE:
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end FortreeBridgePerStepCallback
thumb_func_start CoordInIcePuzzleRegion
CoordInIcePuzzleRegion: @ 0x0809D9E0
push {lr}
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
lsls r0, r0, #0x10
ldr r2, _0809DA10
adds r0, r0, r2
lsrs r0, r0, #0x10
cmp r0, #0xa
bhi _0809DA1C
lsls r0, r1, #0x10
asrs r1, r0, #0x10
ldr r2, _0809DA14
adds r0, r0, r2
lsrs r0, r0, #0x10
cmp r0, #0xd
bhi _0809DA1C
ldr r0, _0809DA18
lsls r1, r1, #1
adds r1, r1, r0
ldrh r0, [r1]
cmp r0, #0
beq _0809DA1C
movs r0, #1
b _0809DA1E
.align 2, 0
_0809DA10: .4byte 0xFFFD0000
_0809DA14: .4byte 0xFFFA0000
_0809DA18: .4byte 0x084E8A0C
_0809DA1C:
movs r0, #0
_0809DA1E:
pop {r1}
bx r1
.align 2, 0
thumb_func_end CoordInIcePuzzleRegion
thumb_func_start MarkIcePuzzleCoordVisited
MarkIcePuzzleCoordVisited: @ 0x0809DA24
push {r4, r5, lr}
lsls r0, r0, #0x10
asrs r5, r0, #0x10
lsls r1, r1, #0x10
asrs r4, r1, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl CoordInIcePuzzleRegion
cmp r0, #0
beq _0809DA52
ldr r1, _0809DA58
lsls r0, r4, #1
adds r0, r0, r1
ldrh r0, [r0]
bl GetVarPointer
subs r2, r5, #3
movs r1, #1
lsls r1, r2
ldrh r2, [r0]
orrs r1, r2
strh r1, [r0]
_0809DA52:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809DA58: .4byte 0x084E8A0C
thumb_func_end MarkIcePuzzleCoordVisited
thumb_func_start IsIcePuzzleCoordVisited
IsIcePuzzleCoordVisited: @ 0x0809DA5C
push {r4, r5, lr}
lsls r0, r0, #0x10
asrs r5, r0, #0x10
lsls r1, r1, #0x10
asrs r4, r1, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl CoordInIcePuzzleRegion
cmp r0, #0
beq _0809DA8E
ldr r1, _0809DA94
lsls r0, r4, #1
adds r0, r0, r1
ldrh r0, [r0]
bl VarGet
lsls r0, r0, #0x10
subs r2, r5, #3
movs r1, #0x80
lsls r1, r1, #9
lsls r1, r2
ands r1, r0
cmp r1, #0
bne _0809DA98
_0809DA8E:
movs r0, #0
b _0809DA9A
.align 2, 0
_0809DA94: .4byte 0x084E8A0C
_0809DA98:
movs r0, #1
_0809DA9A:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end IsIcePuzzleCoordVisited
thumb_func_start SetSootopolisGymCrackedIceMetatiles
SetSootopolisGymCrackedIceMetatiles: @ 0x0809DAA0
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
ldr r0, _0809DAF4
ldr r0, [r0]
ldr r1, [r0]
mov sb, r1
ldr r7, [r0, #4]
movs r5, #0
cmp r5, sb
bge _0809DAE8
_0809DAB8:
movs r4, #0
adds r0, r5, #1
mov r8, r0
cmp r4, r7
bge _0809DAE2
lsls r6, r5, #0x10
_0809DAC4:
lsls r1, r4, #0x10
asrs r1, r1, #0x10
asrs r0, r6, #0x10
bl IsIcePuzzleCoordVisited
cmp r0, #1
bne _0809DADC
adds r1, r4, #7
adds r0, r5, #7
ldr r2, _0809DAF8
bl MapGridSetMetatileIdAt
_0809DADC:
adds r4, #1
cmp r4, r7
blt _0809DAC4
_0809DAE2:
mov r5, r8
cmp r5, sb
blt _0809DAB8
_0809DAE8:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0809DAF4: .4byte 0x02036FB8
_0809DAF8: .4byte 0x0000020E
thumb_func_end SetSootopolisGymCrackedIceMetatiles
thumb_func_start SootopolisGymIcePerStepCallback
SootopolisGymIcePerStepCallback: @ 0x0809DAFC
push {r4, r5, r6, r7, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0809DB20
adds r5, r1, r0
movs r1, #2
ldrsh r0, [r5, r1]
cmp r0, #1
beq _0809DB48
cmp r0, #1
bgt _0809DB24
cmp r0, #0
beq _0809DB30
b _0809DC7E
.align 2, 0
_0809DB20: .4byte 0x03005B68
_0809DB24:
cmp r0, #2
beq _0809DBDE
cmp r0, #3
bne _0809DB2E
b _0809DC38
_0809DB2E:
b _0809DC7E
_0809DB30:
mov r4, sp
adds r4, #2
mov r0, sp
adds r1, r4, #0
bl PlayerGetDestCoords
mov r0, sp
ldrh r0, [r0]
strh r0, [r5, #4]
ldrh r0, [r4]
strh r0, [r5, #6]
b _0809DC7A
_0809DB48:
mov r7, sp
adds r7, #2
mov r0, sp
adds r1, r7, #0
bl PlayerGetDestCoords
mov r0, sp
ldrh r2, [r0]
movs r3, #0
ldrsh r1, [r0, r3]
movs r3, #4
ldrsh r0, [r5, r3]
cmp r1, r0
bne _0809DB72
movs r0, #0
ldrsh r1, [r7, r0]
movs r3, #6
ldrsh r0, [r5, r3]
cmp r1, r0
bne _0809DB72
b _0809DC7E
_0809DB72:
strh r2, [r5, #4]
ldrh r0, [r7]
strh r0, [r5, #6]
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, r4, #0x10
lsrs r4, r4, #0x10
ldr r0, _0809DBB4
bl GetVarPointer
adds r6, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
adds r0, r4, #0
bl MetatileBehavior_IsThinIce
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0809DBB8
ldrh r0, [r6]
adds r0, #1
strh r0, [r6]
movs r0, #4
strh r0, [r5, #0xc]
movs r0, #2
b _0809DBD0
.align 2, 0
_0809DBB4: .4byte 0x00004022
_0809DBB8:
adds r0, r4, #0
bl MetatileBehavior_IsCrackedIce
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0809DC7E
movs r0, #0
strh r0, [r6]
movs r0, #4
strh r0, [r5, #0xc]
movs r0, #3
_0809DBD0:
strh r0, [r5, #2]
mov r0, sp
ldrh r0, [r0]
strh r0, [r5, #8]
ldrh r0, [r7]
strh r0, [r5, #0xa]
b _0809DC7E
_0809DBDE:
ldrh r1, [r5, #0xc]
movs r3, #0xc
ldrsh r0, [r5, r3]
cmp r0, #0
bne _0809DC42
mov r1, sp
ldrh r0, [r5, #8]
strh r0, [r1]
mov r4, sp
adds r4, #2
ldrh r0, [r5, #0xa]
strh r0, [r4]
movs r0, #0x2a
bl PlaySE
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r4, r2]
ldr r2, _0809DC34
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, #7
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldrh r1, [r4]
subs r1, #7
lsls r1, r1, #0x10
asrs r1, r1, #0x10
bl MarkIcePuzzleCoordVisited
b _0809DC7A
.align 2, 0
_0809DC34: .4byte 0x0000020E
_0809DC38:
ldrh r1, [r5, #0xc]
movs r3, #0xc
ldrsh r0, [r5, r3]
cmp r0, #0
beq _0809DC48
_0809DC42:
subs r0, r1, #1
strh r0, [r5, #0xc]
b _0809DC7E
_0809DC48:
mov r1, sp
ldrh r0, [r5, #8]
strh r0, [r1]
mov r4, sp
adds r4, #2
ldrh r0, [r5, #0xa]
strh r0, [r4]
movs r0, #0x29
bl PlaySE
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r4, r2]
ldr r2, _0809DC88
bl MapGridSetMetatileIdAt
mov r0, sp
movs r3, #0
ldrsh r0, [r0, r3]
movs r2, #0
ldrsh r1, [r4, r2]
bl CurrentMapDrawMetatileAt
_0809DC7A:
movs r0, #1
strh r0, [r5, #2]
_0809DC7E:
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0809DC88: .4byte 0x00000206
thumb_func_end SootopolisGymIcePerStepCallback
thumb_func_start AshGrassPerStepCallback
AshGrassPerStepCallback: @ 0x0809DC8C
push {r4, r5, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0809DD10
adds r5, r1, r0
mov r4, sp
adds r4, #2
mov r0, sp
adds r1, r4, #0
bl PlayerGetDestCoords
mov r0, sp
ldrh r2, [r0]
movs r3, #0
ldrsh r1, [r0, r3]
movs r3, #2
ldrsh r0, [r5, r3]
cmp r1, r0
bne _0809DCC6
movs r0, #0
ldrsh r1, [r4, r0]
movs r3, #4
ldrsh r0, [r5, r3]
cmp r1, r0
beq _0809DD52
_0809DCC6:
strh r2, [r5, #2]
ldrh r0, [r4]
strh r0, [r5, #4]
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r4, r2]
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsAshGrass
lsls r0, r0, #0x18
cmp r0, #0
beq _0809DD52
mov r0, sp
movs r3, #0
ldrsh r0, [r0, r3]
movs r2, #0
ldrsh r1, [r4, r2]
bl MapGridGetMetatileIdAt
ldr r1, _0809DD14
cmp r0, r1
bne _0809DD1C
mov r0, sp
movs r3, #0
ldrsh r0, [r0, r3]
movs r2, #0
ldrsh r1, [r4, r2]
ldr r2, _0809DD18
movs r3, #4
bl StartAshFieldEffect
b _0809DD2E
.align 2, 0
_0809DD10: .4byte 0x03005B68
_0809DD14: .4byte 0x0000020A
_0809DD18: .4byte 0x00000212
_0809DD1C:
mov r0, sp
movs r3, #0
ldrsh r0, [r0, r3]
movs r2, #0
ldrsh r1, [r4, r2]
ldr r2, _0809DD5C
movs r3, #4
bl StartAshFieldEffect
_0809DD2E:
movs r0, #0x87
lsls r0, r0, #1
movs r1, #1
bl CheckBagHasItem
lsls r0, r0, #0x18
cmp r0, #0
beq _0809DD52
ldr r0, _0809DD60
bl GetVarPointer
adds r2, r0, #0
ldrh r1, [r2]
ldr r0, _0809DD64
cmp r1, r0
bhi _0809DD52
adds r0, r1, #1
strh r0, [r2]
_0809DD52:
add sp, #4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0809DD5C: .4byte 0x00000206
_0809DD60: .4byte 0x00004048
_0809DD64: .4byte 0x0000270E
thumb_func_end AshGrassPerStepCallback
thumb_func_start SetCrackedFloorHoleMetatile
SetCrackedFloorHoleMetatile: @ 0x0809DD68
push {r4, r5, lr}
lsls r0, r0, #0x10
asrs r5, r0, #0x10
lsls r1, r1, #0x10
asrs r4, r1, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl MapGridGetMetatileIdAt
ldr r1, _0809DD9C
ldr r2, _0809DDA0
cmp r0, r1
bne _0809DD84
subs r2, #0x31
_0809DD84:
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
.align 2, 0
_0809DD9C: .4byte 0x0000022F
_0809DDA0: .4byte 0x00000237
thumb_func_end SetCrackedFloorHoleMetatile
thumb_func_start CrackedFloorPerStepCallback
CrackedFloorPerStepCallback: @ 0x0809DDA4
push {r4, r5, r6, r7, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0809DE8C
adds r5, r1, r0
mov r4, sp
adds r4, #2
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, r0, #0x10
lsrs r6, r0, #0x10
ldrh r1, [r5, #8]
movs r3, #8
ldrsh r0, [r5, r3]
adds r7, r4, #0
cmp r0, #0
beq _0809DDF6
subs r0, r1, #1
strh r0, [r5, #8]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809DDF6
movs r1, #0xa
ldrsh r0, [r5, r1]
movs r2, #0xc
ldrsh r1, [r5, r2]
bl SetCrackedFloorHoleMetatile
_0809DDF6:
ldrh r1, [r5, #0xe]
movs r3, #0xe
ldrsh r0, [r5, r3]
cmp r0, #0
beq _0809DE16
subs r0, r1, #1
strh r0, [r5, #0xe]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809DE16
movs r1, #0x10
ldrsh r0, [r5, r1]
movs r2, #0x12
ldrsh r1, [r5, r2]
bl SetCrackedFloorHoleMetatile
_0809DE16:
lsls r0, r6, #0x18
lsrs r6, r0, #0x18
adds r0, r6, #0
bl MetatileBehavior_IsCrackedFloorHole
lsls r0, r0, #0x18
cmp r0, #0
beq _0809DE2E
ldr r0, _0809DE90
movs r1, #0
bl VarSet
_0809DE2E:
mov r0, sp
ldrh r2, [r0]
movs r3, #0
ldrsh r1, [r0, r3]
movs r3, #4
ldrsh r0, [r5, r3]
cmp r1, r0
bne _0809DE4A
movs r0, #0
ldrsh r1, [r7, r0]
movs r3, #6
ldrsh r0, [r5, r3]
cmp r1, r0
beq _0809DEAA
_0809DE4A:
strh r2, [r5, #4]
adds r4, r7, #0
ldrh r0, [r4]
strh r0, [r5, #6]
adds r0, r6, #0
bl MetatileBehavior_IsCrackedFloor
lsls r0, r0, #0x18
cmp r0, #0
beq _0809DEAA
bl GetPlayerSpeed
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #4
beq _0809DE72
ldr r0, _0809DE90
movs r1, #0
bl VarSet
_0809DE72:
movs r1, #8
ldrsh r0, [r5, r1]
cmp r0, #0
bne _0809DE94
movs r0, #3
strh r0, [r5, #8]
mov r0, sp
ldrh r0, [r0]
strh r0, [r5, #0xa]
ldrh r0, [r4]
strh r0, [r5, #0xc]
b _0809DEAA
.align 2, 0
_0809DE8C: .4byte 0x03005B68
_0809DE90: .4byte 0x00004022
_0809DE94:
movs r2, #0xe
ldrsh r0, [r5, r2]
cmp r0, #0
bne _0809DEAA
movs r0, #3
strh r0, [r5, #0xe]
mov r0, sp
ldrh r0, [r0]
strh r0, [r5, #0x10]
ldrh r0, [r7]
strh r0, [r5, #0x12]
_0809DEAA:
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end CrackedFloorPerStepCallback
thumb_func_start SetMuddySlopeMetatile
SetMuddySlopeMetatile: @ 0x0809DEB4
push {r4, r5, lr}
adds r3, r0, #0
lsls r1, r1, #0x10
lsrs r5, r1, #0x10
lsls r2, r2, #0x10
lsrs r4, r2, #0x10
ldrh r0, [r3]
subs r0, #1
strh r0, [r3]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809DED0
movs r2, #0xe8
b _0809DEE4
_0809DED0:
ldr r1, _0809DF0C
movs r2, #0
ldrsh r0, [r3, r2]
cmp r0, #0
bge _0809DEDC
adds r0, #7
_0809DEDC:
asrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
ldrh r2, [r0]
_0809DEE4:
lsls r5, r5, #0x10
asrs r5, r5, #0x10
lsls r4, r4, #0x10
asrs r4, r4, #0x10
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
.align 2, 0
_0809DF0C: .4byte 0x084E8A40
thumb_func_end SetMuddySlopeMetatile
thumb_func_start Task_MuddySlope
Task_MuddySlope: @ 0x0809DF10
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #3
ldr r0, _0809DF58
adds r4, r1, r0
mov r5, sp
adds r5, #2
mov r0, sp
adds r1, r5, #0
bl PlayerGetDestCoords
ldr r0, _0809DF5C
ldr r0, [r0]
movs r1, #4
ldrsb r1, [r0, r1]
lsls r1, r1, #8
ldrb r0, [r0, #5]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
orrs r0, r1
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
movs r0, #2
ldrsh r1, [r4, r0]
mov r8, r5
cmp r1, #0
beq _0809DF60
cmp r1, #1
beq _0809DF8C
b _0809DFE0
.align 2, 0
_0809DF58: .4byte 0x03005B68
_0809DF5C: .4byte 0x03005AEC
_0809DF60:
strh r7, [r4]
mov r0, sp
ldrh r0, [r0]
strh r0, [r4, #4]
ldrh r0, [r5]
strh r0, [r4, #6]
movs r0, #1
strh r0, [r4, #2]
strh r1, [r4, #8]
strh r1, [r4, #0xe]
strh r1, [r4, #0x14]
strh r1, [r4, #0x1a]
b _0809DFE0
_0809DF7A:
movs r0, #0x20
strh r0, [r1]
mov r0, sp
ldrh r0, [r0]
strh r0, [r1, #2]
mov r2, r8
ldrh r0, [r2]
strh r0, [r1, #4]
b _0809DFE0
_0809DF8C:
mov r0, sp
movs r3, #4
ldrsh r1, [r4, r3]
ldrh r2, [r0]
movs r3, #0
ldrsh r0, [r0, r3]
cmp r1, r0
bne _0809DFA8
movs r0, #6
ldrsh r1, [r4, r0]
movs r3, #0
ldrsh r0, [r5, r3]
cmp r1, r0
beq _0809DFE0
_0809DFA8:
strh r2, [r4, #4]
ldrh r0, [r5]
strh r0, [r4, #6]
mov r0, sp
movs r1, #0
ldrsh r0, [r0, r1]
movs r2, #0
ldrsh r1, [r5, r2]
bl MapGridGetMetatileBehaviorAt
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
bl MetatileBehavior_IsMuddySlope
lsls r0, r0, #0x18
cmp r0, #0
beq _0809DFE0
movs r6, #4
adds r1, r4, #0
adds r1, #8
_0809DFD0:
movs r3, #0
ldrsh r0, [r1, r3]
cmp r0, #0
beq _0809DF7A
adds r1, #6
adds r6, #3
cmp r6, #0xd
ble _0809DFD0
_0809DFE0:
ldr r2, _0809DFFC
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0809E000
movs r1, #0
ldrsh r0, [r4, r1]
cmp r7, r0
beq _0809E000
strh r7, [r4]
ldrh r0, [r2, #4]
ldrh r1, [r2, #8]
b _0809E004
.align 2, 0
_0809DFFC: .4byte 0x02036FD4
_0809E000:
movs r0, #0
movs r1, #0
_0809E004:
lsls r0, r0, #0x10
asrs r0, r0, #0x10
mov r8, r0
lsls r0, r1, #0x10
asrs r7, r0, #0x10
adds r5, r4, #0
adds r5, #8
adds r4, r5, #0
movs r6, #9
_0809E016:
movs r2, #0
ldrsh r0, [r4, r2]
cmp r0, #0
beq _0809E03A
ldrh r0, [r4, #2]
mov r3, r8
subs r0, r0, r3
strh r0, [r4, #2]
ldrh r0, [r4, #4]
subs r0, r0, r7
strh r0, [r4, #4]
movs r0, #2
ldrsh r1, [r4, r0]
movs r3, #4
ldrsh r2, [r4, r3]
adds r0, r5, #0
bl SetMuddySlopeMetatile
_0809E03A:
adds r4, #6
adds r5, #6
subs r6, #3
cmp r6, #0
bge _0809E016
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_end Task_MuddySlope