tmc/asm/object/windTribeTeleporter.s

742 lines
12 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start WindTribeTeleporter
WindTribeTeleporter: @ 0x080A0F24
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A0F40 @ =gUnk_08124C10
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080A11E0
pop {r4, pc}
.align 2, 0
_080A0F40: .4byte gUnk_08124C10
thumb_func_start sub_080A0F44
sub_080A0F44: @ 0x080A0F44
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r6, #1
strb r6, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x59
movs r0, #8
strb r0, [r1]
adds r2, r5, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
ldr r0, _080A0FA8 @ =gHitbox_22
str r0, [r5, #0x48]
adds r0, r5, #0
movs r1, #6
bl SetDefaultPriority
adds r0, r5, #0
bl sub_080A11C0
cmp r0, #0
beq _080A0FA4
ldr r1, _080A0FAC @ =gPlayerEntity
ldrh r0, [r5, #0x2e]
movs r4, #0
strh r0, [r1, #0x2e]
ldrh r0, [r5, #0x32]
strh r0, [r1, #0x32]
movs r0, #3
bl SetPlayerControl
bl sub_08078B48
bl SetPlayerEventPriority
movs r0, #0x89
lsls r0, r0, #1
bl SoundReq
movs r0, #3
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
adds r0, r5, #0
adds r0, #0x68
strb r6, [r0]
_080A0FA4:
pop {r4, r5, r6, pc}
.align 2, 0
_080A0FA8: .4byte gHitbox_22
_080A0FAC: .4byte gPlayerEntity
thumb_func_start sub_080A0FB0
sub_080A0FB0: @ 0x080A0FB0
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080A11C0
adds r1, r0, #0
cmp r1, #0
beq _080A0FF8
adds r0, r5, #0
adds r0, #0x68
ldrb r0, [r0]
cmp r0, #0
bne _080A0FFE
ldr r1, _080A0FF4 @ =gPlayerEntity
ldrh r0, [r5, #0x2e]
movs r4, #0
strh r0, [r1, #0x2e]
ldrh r0, [r5, #0x32]
strh r0, [r1, #0x32]
movs r0, #3
bl SetPlayerControl
bl sub_08078B48
bl SetPlayerEventPriority
movs r0, #0x89
lsls r0, r0, #1
bl SoundReq
movs r0, #2
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
b _080A0FFE
.align 2, 0
_080A0FF4: .4byte gPlayerEntity
_080A0FF8:
adds r0, r5, #0
adds r0, #0x68
strb r1, [r0]
_080A0FFE:
pop {r4, r5, pc}
thumb_func_start sub_080A1000
sub_080A1000: @ 0x080A1000
.ifdef DEMO_JP
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xd]
cmp r1, #1
beq _080A0B52
cmp r1, #1
bgt _080A0B3C
cmp r1, #0
beq _080A0B46
b _080A0BB0
_080A0B3C:
cmp r1, #2
beq _080A0B60
cmp r1, #3
beq _080A0B8C
b _080A0BB0
_080A0B46:
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080A0BF0
_080A0B52:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0BF0
b _080A0B98
_080A0B60:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0B7E
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A0BF0
_080A0B7E:
ldr r0, _080A0B88 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
b _080A0BDE
.align 2, 0
_080A0B88: .4byte gRoomTransition
_080A0B8C:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0BA4
_080A0B98:
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _080A0BF0
_080A0BA4:
ldr r0, _080A0BAC @ =gRoomTransition
ldr r0, [r0]
b _080A0BDE
.align 2, 0
_080A0BAC: .4byte gRoomTransition
_080A0BB0:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0BD8
movs r0, #0xfc
bl SetLocalFlag
ldrb r1, [r4, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A0BD4 @ =0x0813AA10
adds r0, r0, r1
bl DoExitTransition
b _080A0BF0
.align 2, 0
_080A0BD4: .4byte 0x0813AA10
_080A0BD8:
ldr r0, _080A0BF4 @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
_080A0BDE:
ands r0, r1
cmp r0, #0
bne _080A0BF0
ldr r0, _080A0BF8 @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A0BF0:
pop {r4, pc}
.align 2, 0
_080A0BF4: .4byte gRoomTransition
_080A0BF8: .4byte gPlayerEntity
.else
.ifdef JP
push {lr}
adds r1, r0, #0
ldrb r2, [r1, #0xd]
cmp r2, #1
beq _080A0DF2
cmp r2, #1
bgt _080A0DDC
cmp r2, #0
beq _080A0DE6
b _080A0E50
_080A0DDC:
cmp r2, #2
beq _080A0E00
cmp r2, #3
beq _080A0E2C
b _080A0E50
_080A0DE6:
movs r0, #0x1e
strb r0, [r1, #0xe]
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
b _080A0E8C
_080A0DF2:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E8C
b _080A0E38
_080A0E00:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E1E
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A0E8C
_080A0E1E:
ldr r0, _080A0E28 @ =0x030010A0
ldr r0, [r0]
movs r1, #7
b _080A0E7A
.align 2, 0
_080A0E28: .4byte 0x030010A0
_080A0E2C:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E44
_080A0E38:
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
b _080A0E8C
_080A0E44:
ldr r0, _080A0E4C @ =0x030010A0
ldr r0, [r0]
ands r0, r2
b _080A0E7C
.align 2, 0
_080A0E4C: .4byte 0x030010A0
_080A0E50:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E74
ldrb r1, [r1, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A0E70 @ =gUnk_0813ADEC
adds r0, r0, r1
bl DoExitTransition
b _080A0E8C
.align 2, 0
_080A0E70: .4byte gUnk_0813ADEC
_080A0E74:
ldr r0, _080A0E90 @ =0x030010A0
ldr r0, [r0]
movs r1, #1
_080A0E7A:
ands r0, r1
_080A0E7C:
cmp r0, #0
bne _080A0E8C
ldr r0, _080A0E94 @ =0x03001160
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A0E8C:
pop {pc}
.align 2, 0
_080A0E90: .4byte 0x030010A0
_080A0E94: .4byte 0x03001160
.else
.ifdef EU
push {lr}
adds r1, r0, #0
ldrb r2, [r1, #0xd]
cmp r2, #1
beq _080A0876
cmp r2, #1
bgt _080A0860
cmp r2, #0
beq _080A086A
b _080A08D4
_080A0860:
cmp r2, #2
beq _080A0884
cmp r2, #3
beq _080A08B0
b _080A08D4
_080A086A:
movs r0, #0x1e
strb r0, [r1, #0xe]
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
b _080A0910
_080A0876:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0910
b _080A08BC
_080A0884:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A08A2
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A0910
_080A08A2:
ldr r0, _080A08AC @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
b _080A08FE
.align 2, 0
_080A08AC: .4byte gRoomTransition
_080A08B0:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A08C8
_080A08BC:
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
b _080A0910
_080A08C8:
ldr r0, _080A08D0 @ =gRoomTransition
ldr r0, [r0]
ands r0, r2
b _080A0900
.align 2, 0
_080A08D0: .4byte gRoomTransition
_080A08D4:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A08F8
ldrb r1, [r1, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A08F4 @ =gUnk_0813ADEC
adds r0, r0, r1
bl DoExitTransition
b _080A0910
.align 2, 0
_080A08F4: .4byte gUnk_0813ADEC
_080A08F8:
ldr r0, _080A0914 @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
_080A08FE:
ands r0, r1
_080A0900:
cmp r0, #0
bne _080A0910
ldr r0, _080A0918 @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A0910:
pop {pc}
.align 2, 0
_080A0914: .4byte gRoomTransition
_080A0918: .4byte gPlayerEntity
.else
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xd]
cmp r1, #1
beq _080A102A
cmp r1, #1
bgt _080A1014
cmp r1, #0
beq _080A101E
b _080A1088
_080A1014:
cmp r1, #2
beq _080A1038
cmp r1, #3
beq _080A1064
b _080A1088
_080A101E:
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080A10D4
_080A102A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A10D4
b _080A1070
_080A1038:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A1056
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A10D4
_080A1056:
ldr r0, _080A1060 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
b _080A10C2
.align 2, 0
_080A1060: .4byte gRoomTransition
_080A1064:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A107C
_080A1070:
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _080A10D4
_080A107C:
ldr r0, _080A1084 @ =gRoomTransition
ldr r0, [r0]
b _080A10C2
.align 2, 0
_080A1084: .4byte gRoomTransition
_080A1088:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A10BC
ldr r0, _080A10B4 @ =gRoomControls
ldrb r0, [r0, #4]
cmp r0, #3
bne _080A10A2
movs r0, #0xf9
bl SetLocalFlag
_080A10A2:
ldrb r1, [r4, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A10B8 @ =gUnk_0813ADEC
adds r0, r0, r1
bl DoExitTransition
b _080A10D4
.align 2, 0
_080A10B4: .4byte gRoomControls
_080A10B8: .4byte gUnk_0813ADEC
_080A10BC:
ldr r0, _080A10D8 @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
_080A10C2:
ands r0, r1
cmp r0, #0
bne _080A10D4
ldr r0, _080A10DC @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A10D4:
pop {r4, pc}
.align 2, 0
_080A10D8: .4byte gRoomTransition
_080A10DC: .4byte gPlayerEntity
.endif
.endif
.endif
thumb_func_start sub_080A10E0
sub_080A10E0: @ 0x080A10E0
push {r4, lr}
adds r2, r0, #0
ldrb r1, [r2, #0xd]
cmp r1, #1
beq _080A110E
cmp r1, #1
bgt _080A10F4
cmp r1, #0
beq _080A10FE
b _080A1180
_080A10F4:
cmp r1, #2
beq _080A1124
cmp r1, #3
beq _080A1148
b _080A1180
_080A10FE:
movs r0, #1
strb r0, [r2, #0xd]
movs r0, #0x1e
strb r0, [r2, #0xe]
adds r0, #0xf6
bl SoundReq
b _080A11BA
_080A110E:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _080A1130
ldr r0, _080A1120 @ =gRoomTransition
ldr r0, [r0]
b _080A1162
.align 2, 0
_080A1120: .4byte gRoomTransition
_080A1124:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A113C
_080A1130:
ldrb r0, [r2, #0xd]
adds r0, #1
strb r0, [r2, #0xd]
movs r0, #0x1e
strb r0, [r2, #0xe]
b _080A11BA
_080A113C:
ldr r0, _080A1144 @ =gRoomTransition
ldr r0, [r0]
movs r1, #3
b _080A1162
.align 2, 0
_080A1144: .4byte gRoomTransition
_080A1148:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A115C
ldrb r0, [r2, #0xd]
adds r0, #1
strb r0, [r2, #0xd]
b _080A11BA
_080A115C:
ldr r0, _080A1178 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
_080A1162:
ands r0, r1
cmp r0, #0
bne _080A11BA
ldr r0, _080A117C @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
b _080A11BA
.align 2, 0
_080A1178: .4byte gRoomTransition
_080A117C: .4byte gPlayerEntity
_080A1180:
ldr r4, _080A11A0 @ =gPlayerEntity
ldrb r3, [r4, #0x14]
cmp r3, #4
beq _080A11A8
ldr r0, _080A11A4 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _080A11BA
adds r0, r3, #2
movs r1, #6
ands r0, r1
strb r0, [r4, #0x14]
b _080A11BA
.align 2, 0
_080A11A0: .4byte gPlayerEntity
_080A11A4: .4byte gRoomTransition
_080A11A8:
movs r0, #0
movs r1, #1
strb r1, [r2, #0xc]
strb r0, [r2, #0xd]
ldr r0, _080A11BC @ =gPlayerState
adds r0, #0x8b
strb r1, [r0]
bl ResetPlayerEventPriority
_080A11BA:
pop {r4, pc}
.align 2, 0
_080A11BC: .4byte gPlayerState
thumb_func_start sub_080A11C0
sub_080A11C0: @ 0x080A11C0
push {lr}
adds r1, r0, #0
ldr r0, _080A11D8 @ =gPlayerEntity
movs r2, #0x36
ldrsh r0, [r0, r2]
cmp r0, #0
bne _080A11DC
adds r0, r1, #0
bl sub_08017850
b _080A11DE
.align 2, 0
_080A11D8: .4byte gPlayerEntity
_080A11DC:
movs r0, #0
_080A11DE:
pop {pc}
thumb_func_start sub_080A11E0
sub_080A11E0: @ 0x080A11E0
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x59
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A1202
movs r0, #8
strb r0, [r1]
ldrb r0, [r2, #0x1e]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r2, #0x1e]
_080A1202:
pop {pc}