mirror of https://github.com/zeldaret/tmc.git
Decompile WindTribeTeleporter
This commit is contained in:
parent
1e33e5a55d
commit
6d1424aad0
|
|
@ -1,741 +0,0 @@
|
|||
.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 IsCollidingPlayer
|
||||
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}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08124C10:: @ 08124C10
|
||||
.4byte sub_080A0F44
|
||||
.4byte sub_080A0FB0
|
||||
.4byte sub_080A1000
|
||||
.4byte sub_080A10E0
|
||||
|
|
@ -410,7 +410,7 @@ void ObjectB4(Entity*);
|
|||
void ObjectB5(Entity*);
|
||||
void ObjectB6(Entity*);
|
||||
void Well(Entity*);
|
||||
void WindTribeTeleporter(Entity*);
|
||||
void WindTribeTeleporter();
|
||||
void ObjectB9(Entity*);
|
||||
void GyorgBossObject(Entity*);
|
||||
void Windcrest(Entity*);
|
||||
|
|
|
|||
|
|
@ -831,7 +831,7 @@ SECTIONS {
|
|||
src/object/objectB5.o(.text);
|
||||
asm/object/objectB6.o(.text);
|
||||
src/object/well.o(.text);
|
||||
asm/object/windTribeTeleporter.o(.text);
|
||||
src/object/windTribeTeleporter.o(.text);
|
||||
asm/object/objectB9.o(.text);
|
||||
src/object/gyorgBossObject.o(.text);
|
||||
src/object/windcrest.o(.text);
|
||||
|
|
@ -1587,7 +1587,7 @@ SECTIONS {
|
|||
data/const/object/objectB4.o(.rodata);
|
||||
data/animations/object/objectB4.o(.rodata);
|
||||
data/const/object/well.o(.rodata);
|
||||
data/const/object/windTribeTeleporter.o(.rodata);
|
||||
src/object/windTribeTeleporter.o(.rodata);
|
||||
data/const/object/objectB9.o(.rodata);
|
||||
src/object/gyorgBossObject.o(.rodata);
|
||||
data/const/object/windcrest.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,195 @@
|
|||
/**
|
||||
* @file windTribeTeleporter.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief WindTribeTeleporter object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
#include "hitbox.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68;
|
||||
} WindTribeTeleporterEntity;
|
||||
|
||||
extern ScreenTransitionData gUnk_0813ADEC[];
|
||||
|
||||
void WindTribeTeleporter_Init(WindTribeTeleporterEntity*);
|
||||
void WindTribeTeleporter_Action1(WindTribeTeleporterEntity*);
|
||||
void WindTribeTeleporter_Action2(WindTribeTeleporterEntity*);
|
||||
void WindTribeTeleporter_Action3(WindTribeTeleporterEntity*);
|
||||
void sub_080A11E0(WindTribeTeleporterEntity*);
|
||||
bool32 sub_080A11C0(WindTribeTeleporterEntity*);
|
||||
|
||||
void WindTribeTeleporter(WindTribeTeleporterEntity* this) {
|
||||
static void (*const WindTribeTeleporter_Actions[])(WindTribeTeleporterEntity*) = {
|
||||
WindTribeTeleporter_Init,
|
||||
WindTribeTeleporter_Action1,
|
||||
WindTribeTeleporter_Action2,
|
||||
WindTribeTeleporter_Action3,
|
||||
};
|
||||
WindTribeTeleporter_Actions[super->action](this);
|
||||
sub_080A11E0(this);
|
||||
}
|
||||
|
||||
void WindTribeTeleporter_Init(WindTribeTeleporterEntity* this) {
|
||||
super->action = 1;
|
||||
super->frameDuration = 8;
|
||||
super->spritePriority.b0 = 7;
|
||||
super->hitbox = (Hitbox*)&gHitbox_22;
|
||||
SetDefaultPriority(super, 6);
|
||||
if (sub_080A11C0(this)) {
|
||||
gPlayerEntity.x.HALF.HI = super->x.HALF.HI;
|
||||
gPlayerEntity.y.HALF.HI = super->y.HALF.HI;
|
||||
SetPlayerControl(CONTROL_DISABLED);
|
||||
sub_08078B48();
|
||||
SetPlayerEventPriority();
|
||||
SoundReq(SFX_112);
|
||||
super->action = 3;
|
||||
super->subAction = 0;
|
||||
this->unk_68 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void WindTribeTeleporter_Action1(WindTribeTeleporterEntity* this) {
|
||||
if (sub_080A11C0(this)) {
|
||||
if (this->unk_68 == 0) {
|
||||
gPlayerEntity.x.HALF.HI = super->x.HALF.HI;
|
||||
gPlayerEntity.y.HALF.HI = super->y.HALF.HI;
|
||||
SetPlayerControl(CONTROL_DISABLED);
|
||||
sub_08078B48();
|
||||
SetPlayerEventPriority();
|
||||
SoundReq(SFX_112);
|
||||
super->action = 2;
|
||||
super->subAction = 0;
|
||||
}
|
||||
} else {
|
||||
this->unk_68 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void WindTribeTeleporter_Action2(WindTribeTeleporterEntity* this) {
|
||||
switch (super->subAction) {
|
||||
case 0:
|
||||
super->actionDelay = 0x1e;
|
||||
super->subAction++;
|
||||
break;
|
||||
case 1:
|
||||
if (--super->actionDelay == 0) {
|
||||
super->subAction++;
|
||||
super->actionDelay = 0x1e;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (--super->actionDelay == 0) {
|
||||
super->subAction++;
|
||||
super->actionDelay = 0x1e;
|
||||
SoundReq(SFX_113);
|
||||
} else {
|
||||
if ((gRoomTransition.frameCount & 7) == 0) {
|
||||
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (--super->actionDelay == 0) {
|
||||
super->subAction++;
|
||||
super->actionDelay = 0x1e;
|
||||
} else {
|
||||
if ((gRoomTransition.frameCount & 3) == 0) {
|
||||
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (--super->actionDelay == 0) {
|
||||
#if defined(DEMO_JP) || defined(JP) || defined(EU)
|
||||
#ifdef DEMO_JP
|
||||
SetLocalFlag(0xfc);
|
||||
#endif
|
||||
DoExitTransition(&gUnk_0813ADEC[super->type2]);
|
||||
#else
|
||||
if (gRoomControls.area == 3) {
|
||||
SetLocalFlag(0xf9);
|
||||
}
|
||||
DoExitTransition(&gUnk_0813ADEC[super->type2]);
|
||||
#endif
|
||||
} else {
|
||||
if ((gRoomTransition.frameCount & 1) == 0) {
|
||||
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void WindTribeTeleporter_Action3(WindTribeTeleporterEntity* this) {
|
||||
switch (super->subAction) {
|
||||
case 0:
|
||||
super->subAction = 1;
|
||||
super->actionDelay = 0x1e;
|
||||
SoundReq(SFX_114);
|
||||
break;
|
||||
case 1:
|
||||
if (--super->actionDelay != 0) {
|
||||
if ((gRoomTransition.frameCount & 1) == 0) {
|
||||
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
|
||||
}
|
||||
} else {
|
||||
super->subAction++;
|
||||
super->actionDelay = 0x1e;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (--super->actionDelay == 0) {
|
||||
super->subAction++;
|
||||
super->actionDelay = 0x1e;
|
||||
} else {
|
||||
if ((gRoomTransition.frameCount & 3) == 0) {
|
||||
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (--super->actionDelay == 0) {
|
||||
super->subAction++;
|
||||
} else {
|
||||
if ((gRoomTransition.frameCount & 7) == 0) {
|
||||
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (gPlayerEntity.animationState != 4) {
|
||||
if ((gRoomTransition.frameCount & 7U) != 0) {
|
||||
return;
|
||||
}
|
||||
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
|
||||
} else {
|
||||
super->action = 1;
|
||||
super->subAction = 0;
|
||||
gPlayerState.controlMode = 1;
|
||||
ResetPlayerEventPriority();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_080A11C0(WindTribeTeleporterEntity* this) {
|
||||
if (gPlayerEntity.z.HALF.HI != 0) {
|
||||
return FALSE;
|
||||
} else {
|
||||
return IsCollidingPlayer(super);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A11E0(WindTribeTeleporterEntity* this) {
|
||||
if (--super->frameDuration == 0) {
|
||||
super->frameDuration = 8;
|
||||
super->frameIndex = (super->frameIndex + 1) & 3;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue