mirror of https://github.com/zeldaret/tmc.git
1462 lines
25 KiB
ArmAsm
1462 lines
25 KiB
ArmAsm
.include "asm/macros.inc"
|
|
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
thumb_func_start Enemy64
|
|
Enemy64: @ 0x0804905C
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #0
|
|
beq _0804907C
|
|
adds r0, r5, #0
|
|
adds r0, #0x7d
|
|
ldrb r1, [r0]
|
|
movs r0, #3
|
|
ands r1, r0
|
|
ldrb r2, [r5, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, #0x18]
|
|
_0804907C:
|
|
adds r1, r5, #0
|
|
adds r1, #0x45
|
|
ldrb r0, [r1]
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
bne _08049092
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
movs r0, #4
|
|
strb r0, [r5, #0xc]
|
|
strb r2, [r5, #0xd]
|
|
_08049092:
|
|
ldr r1, _080490F8 @ =gUnk_080D2974
|
|
ldrb r0, [r5, #0xc]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r5, #0
|
|
bl _call_via_r1
|
|
adds r4, r5, #0
|
|
adds r4, #0x78
|
|
ldrh r3, [r4]
|
|
adds r0, r5, #0
|
|
movs r1, #0xaa
|
|
movs r2, #0xaa
|
|
bl sub_0805EC9C
|
|
ldrh r0, [r4]
|
|
lsrs r0, r0, #8
|
|
rsbs r0, r0, #0
|
|
strb r0, [r5, #0x14]
|
|
adds r0, r5, #0
|
|
bl sub_080499F0
|
|
ldrb r0, [r5, #0x18]
|
|
lsls r0, r0, #0x1e
|
|
lsrs r0, r0, #0x1e
|
|
adds r1, r5, #0
|
|
adds r1, #0x7d
|
|
strb r0, [r1]
|
|
ldrb r2, [r5, #0x18]
|
|
lsls r0, r2, #0x1e
|
|
lsrs r0, r0, #0x1e
|
|
cmp r0, #1
|
|
bne _080490F4
|
|
movs r1, #0x32
|
|
ldrsh r0, [r5, r1]
|
|
ldr r1, _080490FC @ =gRoomControls
|
|
movs r3, #0xc
|
|
ldrsh r1, [r1, r3]
|
|
subs r0, r0, r1
|
|
adds r0, #0x30
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
cmp r0, r1
|
|
bls _080490F4
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r5, #0x18]
|
|
_080490F4:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_080490F8: .4byte gUnk_080D2974
|
|
_080490FC: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08049100
|
|
sub_08049100: @ 0x08049100
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r0, #0x7c
|
|
bl CheckFlags
|
|
cmp r0, #0
|
|
beq _08049144
|
|
ldr r4, _08049140 @ =0x00004081
|
|
adds r0, r4, #0
|
|
movs r1, #0xa
|
|
movs r2, #2
|
|
bl SetTile
|
|
adds r0, r4, #0
|
|
movs r1, #0x4a
|
|
movs r2, #2
|
|
bl SetTile
|
|
adds r0, r4, #0
|
|
movs r1, #0x8a
|
|
movs r2, #2
|
|
bl SetTile
|
|
adds r0, r4, #0
|
|
movs r1, #0xca
|
|
movs r2, #2
|
|
bl SetTile
|
|
bl DeleteThisEntity
|
|
b _0804916E
|
|
.align 2, 0
|
|
_08049140: .4byte 0x00004081
|
|
_08049144:
|
|
ldr r4, _080491E8 @ =0x00000323
|
|
adds r0, r4, #0
|
|
movs r1, #0xa
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
adds r0, r4, #0
|
|
movs r1, #0x4a
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
adds r0, r4, #0
|
|
movs r1, #0x8a
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
adds r0, r4, #0
|
|
movs r1, #0xca
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
_0804916E:
|
|
movs r0, #0x22
|
|
bl sub_080A7EE0
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _080491E4
|
|
movs r1, #0
|
|
movs r3, #1
|
|
movs r0, #1
|
|
strb r0, [r2, #0xa]
|
|
str r5, [r2, #0x50]
|
|
str r2, [r5, #0x54]
|
|
strb r0, [r5, #0xc]
|
|
strb r1, [r5, #0xd]
|
|
movs r0, #0x3c
|
|
strb r0, [r5, #0xe]
|
|
movs r0, #0xc0
|
|
strb r0, [r5, #0x15]
|
|
strb r0, [r5, #0x14]
|
|
movs r4, #0
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #2
|
|
strh r0, [r5, #0x24]
|
|
ldrb r1, [r5, #0x19]
|
|
movs r0, #3
|
|
orrs r1, r0
|
|
ldrb r2, [r5, #0x18]
|
|
movs r0, #4
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r3
|
|
strb r0, [r5, #0x18]
|
|
ldrb r2, [r5, #0x1b]
|
|
movs r3, #0x3f
|
|
adds r0, r3, #0
|
|
ands r0, r2
|
|
movs r2, #0x80
|
|
orrs r0, r2
|
|
strb r0, [r5, #0x1b]
|
|
ands r1, r3
|
|
orrs r1, r2
|
|
strb r1, [r5, #0x19]
|
|
adds r1, r5, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r0, r5, #0
|
|
adds r0, #0x7c
|
|
strb r4, [r0]
|
|
subs r0, #4
|
|
movs r1, #0x80
|
|
lsls r1, r1, #7
|
|
strh r1, [r0]
|
|
adds r0, #2
|
|
strh r1, [r0]
|
|
adds r0, r5, #0
|
|
movs r1, #0
|
|
bl InitAnimationForceUpdate
|
|
_080491E4:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_080491E8: .4byte 0x00000323
|
|
|
|
thumb_func_start sub_080491EC
|
|
sub_080491EC: @ 0x080491EC
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _08049208 @ =gUnk_080D2988
|
|
ldrb r0, [r4, #0xd]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r4, #0
|
|
bl _call_via_r1
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08049208: .4byte gUnk_080D2988
|
|
|
|
thumb_func_start sub_0804920C
|
|
sub_0804920C: @ 0x0804920C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #0
|
|
beq _0804921C
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
b _08049268
|
|
_0804921C:
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
ldr r2, _0804926C @ =gRoomControls
|
|
ldrh r0, [r2, #6]
|
|
ldr r1, _08049270 @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
movs r3, #0x2e
|
|
ldrsh r1, [r4, r3]
|
|
cmp r0, r1
|
|
ble _08049268
|
|
movs r0, #1
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x80
|
|
strb r0, [r4, #0x15]
|
|
strb r0, [r4, #0x14]
|
|
movs r0, #0xc0
|
|
strh r0, [r4, #0x24]
|
|
ldrh r0, [r2, #6]
|
|
adds r0, #0xa8
|
|
strh r0, [r4, #0x2e]
|
|
ldrh r0, [r2, #8]
|
|
subs r0, #0x40
|
|
strh r0, [r4, #0x32]
|
|
adds r0, r4, #0
|
|
adds r0, #0x78
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
strh r1, [r0]
|
|
adds r0, #2
|
|
strh r1, [r0]
|
|
_08049268:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0804926C: .4byte gRoomControls
|
|
_08049270: .4byte 0xFFFFFF00
|
|
|
|
thumb_func_start sub_08049274
|
|
sub_08049274: @ 0x08049274
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
ldr r0, _080492A4 @ =gRoomControls
|
|
ldrh r0, [r0, #8]
|
|
adds r0, #0x40
|
|
movs r2, #0x32
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
bge _080492A2
|
|
movs r1, #0
|
|
movs r0, #2
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r4, #0xd]
|
|
_080492A2:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_080492A4: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_080492A8
|
|
sub_080492A8: @ 0x080492A8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _080492C4 @ =gUnk_080D2990
|
|
ldrb r0, [r4, #0xd]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r4, #0
|
|
bl _call_via_r1
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_080492C4: .4byte gUnk_080D2990
|
|
|
|
thumb_func_start sub_080492C8
|
|
sub_080492C8: @ 0x080492C8
|
|
push {r4, r5, lr}
|
|
adds r3, r0, #0
|
|
movs r0, #1
|
|
strb r0, [r3, #0xd]
|
|
movs r1, #0
|
|
movs r0, #0x90
|
|
lsls r0, r0, #1
|
|
strh r0, [r3, #0x24]
|
|
adds r0, r3, #0
|
|
adds r0, #0x6e
|
|
strb r1, [r0]
|
|
movs r0, #0x2e
|
|
ldrsh r1, [r3, r0]
|
|
ldr r2, _08049300 @ =gRoomControls
|
|
ldrh r0, [r2, #6]
|
|
subs r1, r1, r0
|
|
adds r5, r2, #0
|
|
cmp r1, #0xa7
|
|
bgt _08049304
|
|
adds r2, r3, #0
|
|
adds r2, #0x80
|
|
movs r0, #0xd8
|
|
strh r0, [r2]
|
|
adds r1, r3, #0
|
|
adds r1, #0x74
|
|
adds r0, #0x28
|
|
b _08049314
|
|
.align 2, 0
|
|
_08049300: .4byte gRoomControls
|
|
_08049304:
|
|
adds r2, r3, #0
|
|
adds r2, #0x80
|
|
movs r0, #0x78
|
|
strh r0, [r2]
|
|
adds r1, r3, #0
|
|
adds r1, #0x74
|
|
movs r0, #0xff
|
|
lsls r0, r0, #8
|
|
_08049314:
|
|
strh r0, [r1]
|
|
adds r4, r1, #0
|
|
ldrh r0, [r5, #6]
|
|
ldrh r1, [r2]
|
|
adds r0, r0, r1
|
|
strh r0, [r2]
|
|
movs r2, #0x32
|
|
ldrsh r0, [r3, r2]
|
|
ldrh r1, [r5, #8]
|
|
subs r0, r0, r1
|
|
cmp r0, #0x7f
|
|
bgt _08049336
|
|
adds r1, r3, #0
|
|
adds r1, #0x82
|
|
movs r0, #0xb0
|
|
strh r0, [r1]
|
|
b _08049346
|
|
_08049336:
|
|
adds r1, r3, #0
|
|
adds r1, #0x82
|
|
movs r0, #0x50
|
|
strh r0, [r1]
|
|
movs r2, #0
|
|
ldrsh r0, [r4, r2]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r4]
|
|
_08049346:
|
|
ldrh r0, [r5, #8]
|
|
ldrh r2, [r1]
|
|
adds r0, r0, r2
|
|
strh r0, [r1]
|
|
adds r0, r3, #0
|
|
bl sub_08049358
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08049358
|
|
sub_08049358: @ 0x08049358
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
adds r0, #0x80
|
|
ldrh r0, [r0]
|
|
movs r2, #0x2e
|
|
ldrsh r1, [r4, r2]
|
|
subs r0, r0, r1
|
|
adds r1, r4, #0
|
|
adds r1, #0x82
|
|
ldrh r1, [r1]
|
|
movs r3, #0x32
|
|
ldrsh r2, [r4, r3]
|
|
subs r1, r1, r2
|
|
bl sub_080045DA
|
|
adds r3, r0, #0
|
|
ldrb r2, [r4, #0x15]
|
|
subs r0, r2, r3
|
|
adds r0, #2
|
|
movs r1, #0xff
|
|
ands r0, r1
|
|
cmp r0, #4
|
|
bls _08049398
|
|
subs r0, r3, r2
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08049394
|
|
subs r0, r2, #1
|
|
b _08049396
|
|
_08049394:
|
|
adds r0, r2, #1
|
|
_08049396:
|
|
strb r0, [r4, #0x15]
|
|
_08049398:
|
|
ldrb r1, [r4, #0x15]
|
|
movs r5, #0x80
|
|
lsls r5, r5, #1
|
|
subs r1, r5, r1
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
adds r0, r4, #0
|
|
adds r0, #0x80
|
|
ldrh r1, [r0]
|
|
adds r0, #2
|
|
ldrh r2, [r0]
|
|
movs r0, #0x24
|
|
ldrsh r3, [r4, r0]
|
|
asrs r3, r3, #0x10
|
|
adds r3, #0x10
|
|
adds r0, r4, #0
|
|
bl sub_0806FCB8
|
|
cmp r0, #0
|
|
beq _080493E0
|
|
movs r0, #2
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0xc0
|
|
strh r0, [r4, #0x24]
|
|
adds r0, r4, #0
|
|
adds r0, #0x7e
|
|
strh r5, [r0]
|
|
ldrb r0, [r4, #0x15]
|
|
lsls r0, r0, #8
|
|
adds r1, r4, #0
|
|
adds r1, #0x76
|
|
strh r0, [r1]
|
|
_080493E0:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080493E4
|
|
sub_080493E4: @ 0x080493E4
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r1, r4, #0
|
|
adds r1, #0x76
|
|
adds r0, #0x74
|
|
ldrh r0, [r0]
|
|
ldrh r2, [r1]
|
|
adds r0, r0, r2
|
|
strh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x18
|
|
strb r0, [r4, #0x15]
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0804943A
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, #0x32
|
|
ldrsh r1, [r4, r2]
|
|
ldr r3, _08049458 @ =gRoomControls
|
|
ldrh r2, [r3, #6]
|
|
adds r2, #0xa8
|
|
ldrh r3, [r3, #8]
|
|
adds r3, #0x80
|
|
bl sub_080045D4
|
|
adds r0, #2
|
|
movs r1, #0x1c
|
|
ands r0, r1
|
|
ldrb r1, [r4, #0x15]
|
|
lsrs r1, r1, #3
|
|
subs r0, r0, r1
|
|
movs r1, #0xf
|
|
ands r0, r1
|
|
cmp r0, #8
|
|
bne _0804943A
|
|
movs r0, #4
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x3c
|
|
strb r0, [r4, #0xe]
|
|
movs r0, #7
|
|
strb r0, [r4, #0xf]
|
|
_0804943A:
|
|
adds r0, r4, #0
|
|
bl sub_08049944
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08047EA4
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08049458: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_0804945C
|
|
sub_0804945C: @ 0x0804945C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r1, r4, #0
|
|
adds r1, #0x76
|
|
adds r0, #0x74
|
|
ldrh r0, [r0]
|
|
ldrh r2, [r1]
|
|
adds r0, r0, r2
|
|
strh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
lsrs r1, r0, #0x18
|
|
strb r1, [r4, #0x15]
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #0
|
|
bne _0804948C
|
|
movs r0, #0x1f
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
bne _080494B2
|
|
movs r0, #4
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x5a
|
|
strb r0, [r4, #0xe]
|
|
b _080494B2
|
|
_0804948C:
|
|
adds r0, r4, #0
|
|
bl sub_08049A8C
|
|
cmp r0, #0
|
|
beq _080494B2
|
|
movs r0, #0x23
|
|
bl sub_080A7EE0
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _080494B2
|
|
adds r1, r2, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
str r4, [r2, #0x50]
|
|
adds r0, r2, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
_080494B2:
|
|
adds r0, r4, #0
|
|
bl sub_08049944
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08047EA4
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080494D0
|
|
sub_080494D0: @ 0x080494D0
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
ldrb r0, [r4, #0xe]
|
|
subs r1, r0, #1
|
|
strb r1, [r4, #0xe]
|
|
movs r2, #0xff
|
|
lsls r0, r1, #0x18
|
|
cmp r0, #0
|
|
bne _08049518
|
|
ldrb r0, [r4, #0xf]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xf]
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _0804950E
|
|
movs r0, #5
|
|
strb r0, [r4, #0xd]
|
|
ldrh r0, [r4, #0x24]
|
|
adds r0, #0x40
|
|
strh r0, [r4, #0x24]
|
|
b _08049534
|
|
_0804950E:
|
|
movs r0, #3
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0xa
|
|
strb r0, [r4, #0xe]
|
|
b _08049534
|
|
_08049518:
|
|
lsls r0, r1, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0x50
|
|
bne _08049534
|
|
bl Random
|
|
movs r1, #3
|
|
ands r1, r0
|
|
movs r0, #0x62
|
|
bl CreateEnemy
|
|
cmp r0, #0
|
|
beq _08049534
|
|
str r4, [r0, #0x50]
|
|
_08049534:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08049538
|
|
sub_08049538: @ 0x08049538
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
ldr r0, _08049570 @ =gRoomControls
|
|
ldrh r1, [r0, #6]
|
|
adds r1, #0xa8
|
|
ldrh r2, [r0, #8]
|
|
adds r2, #0x80
|
|
adds r0, r4, #0
|
|
movs r3, #0x70
|
|
bl sub_0806FCB8
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
bne _0804956E
|
|
movs r0, #3
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r4, #0xd]
|
|
_0804956E:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08049570: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08049574
|
|
sub_08049574: @ 0x08049574
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _08049590 @ =gUnk_080D29A8
|
|
ldrb r0, [r4, #0xd]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r4, #0
|
|
bl _call_via_r1
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08049590: .4byte gUnk_080D29A8
|
|
|
|
thumb_func_start sub_08049594
|
|
sub_08049594: @ 0x08049594
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r2, _080495C8 @ =gRoomControls
|
|
ldrh r0, [r2, #6]
|
|
movs r3, #0x2e
|
|
ldrsh r1, [r4, r3]
|
|
subs r1, #0xa8
|
|
subs r0, r0, r1
|
|
ldrh r1, [r2, #8]
|
|
movs r3, #0x32
|
|
ldrsh r2, [r4, r3]
|
|
subs r2, #0x80
|
|
subs r1, r1, r2
|
|
bl sub_080045DA
|
|
ldrb r2, [r4, #0x15]
|
|
cmp r0, r2
|
|
beq _080495D2
|
|
subs r0, r0, r2
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080495CC
|
|
subs r0, r2, #1
|
|
strb r0, [r4, #0x15]
|
|
b _080495DC
|
|
.align 2, 0
|
|
_080495C8: .4byte gRoomControls
|
|
_080495CC:
|
|
adds r0, r2, #1
|
|
strb r0, [r4, #0x15]
|
|
b _080495DC
|
|
_080495D2:
|
|
movs r0, #1
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #1
|
|
strh r0, [r4, #0x24]
|
|
_080495DC:
|
|
adds r0, r4, #0
|
|
bl sub_08049944
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08047EA4
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_080495F8
|
|
sub_080495F8: @ 0x080495F8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r0, _08049654 @ =gRoomControls
|
|
ldrh r1, [r0, #6]
|
|
adds r1, #0xa8
|
|
ldrh r2, [r0, #8]
|
|
adds r2, #0x80
|
|
adds r0, r4, #0
|
|
movs r3, #0x28
|
|
bl sub_0806FCB8
|
|
cmp r0, #0
|
|
beq _0804963C
|
|
movs r0, #2
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x2d
|
|
strb r0, [r4, #0xe]
|
|
bl Random
|
|
ldr r2, _08049658 @ =gUnk_080D29B8
|
|
movs r1, #7
|
|
ands r1, r0
|
|
adds r1, r1, r2
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r0, r4, #0
|
|
adds r0, #0x74
|
|
strh r1, [r0]
|
|
ldrb r0, [r4, #0x15]
|
|
lsls r0, r0, #8
|
|
adds r1, r4, #0
|
|
adds r1, #0x76
|
|
strh r0, [r1]
|
|
_0804963C:
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08049654: .4byte gRoomControls
|
|
_08049658: .4byte gUnk_080D29B8
|
|
|
|
thumb_func_start sub_0804965C
|
|
sub_0804965C: @ 0x0804965C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r1, r4, #0
|
|
adds r1, #0x76
|
|
adds r0, #0x74
|
|
ldrh r0, [r0]
|
|
ldrh r2, [r1]
|
|
adds r0, r0, r2
|
|
strh r0, [r1]
|
|
lsrs r0, r0, #8
|
|
strb r0, [r4, #0x15]
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0804969A
|
|
movs r0, #3
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
_0804969A:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0804969C
|
|
sub_0804969C: @ 0x0804969C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #0
|
|
bne _080496C8
|
|
movs r0, #2
|
|
strb r0, [r4, #0xc]
|
|
strb r1, [r4, #0xd]
|
|
_080496C8:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080496CC
|
|
sub_080496CC: @ 0x080496CC
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _080496E8 @ =gUnk_080D29C0
|
|
ldrb r0, [r4, #0xd]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
adds r0, r4, #0
|
|
bl _call_via_r1
|
|
adds r0, r4, #0
|
|
bl UpdateAnimationSingleFrame
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_080496E8: .4byte gUnk_080D29C0
|
|
|
|
thumb_func_start sub_080496EC
|
|
sub_080496EC: @ 0x080496EC
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #0x94
|
|
lsls r0, r0, #1
|
|
bl PlaySFX
|
|
bl sub_08079F8C
|
|
cmp r0, #0
|
|
beq _08049720
|
|
ldr r0, _0804971C @ =gLinkEntity
|
|
movs r1, #0x36
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, #0
|
|
bne _08049720
|
|
movs r0, #2
|
|
bl sub_08078A90
|
|
movs r0, #2
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
b _08049724
|
|
.align 2, 0
|
|
_0804971C: .4byte gLinkEntity
|
|
_08049720:
|
|
movs r0, #1
|
|
strb r0, [r4, #0xd]
|
|
_08049724:
|
|
adds r0, r4, #0
|
|
bl sub_08049944
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0804972C
|
|
sub_0804972C: @ 0x0804972C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl sub_08079F8C
|
|
cmp r0, #0
|
|
beq _08049750
|
|
ldr r0, _08049758 @ =gLinkEntity
|
|
movs r1, #0x36
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, #0
|
|
bne _08049750
|
|
movs r0, #2
|
|
bl sub_08078A90
|
|
movs r0, #2
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
_08049750:
|
|
adds r0, r4, #0
|
|
bl sub_08049944
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08049758: .4byte gLinkEntity
|
|
|
|
thumb_func_start sub_0804975C
|
|
sub_0804975C: @ 0x0804975C
|
|
push {lr}
|
|
adds r1, r0, #0
|
|
ldrb r0, [r1, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r1, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0804977E
|
|
movs r0, #3
|
|
strb r0, [r1, #0xd]
|
|
movs r0, #0xb4
|
|
strb r0, [r1, #0xe]
|
|
adds r0, #0x4c
|
|
strh r0, [r1, #0x24]
|
|
ldrb r0, [r1, #0x15]
|
|
subs r0, #0x40
|
|
strb r0, [r1, #0x15]
|
|
_0804977E:
|
|
adds r0, r1, #0
|
|
bl sub_08049944
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08049788
|
|
sub_08049788: @ 0x08049788
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl sub_08049AB0
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080497B8
|
|
movs r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
movs r0, #4
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
strh r0, [r4, #0x24]
|
|
ldrb r0, [r4, #0x14]
|
|
strb r0, [r4, #0x15]
|
|
movs r0, #0x94
|
|
lsls r0, r0, #1
|
|
bl PlaySFX
|
|
b _080497C6
|
|
_080497B8:
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
eors r0, r1
|
|
strb r0, [r4, #0x15]
|
|
adds r0, r4, #0
|
|
bl sub_08049B20
|
|
_080497C6:
|
|
adds r0, r4, #0
|
|
bl sub_08049944
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080497D0
|
|
sub_080497D0: @ 0x080497D0
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl sub_08049AB0
|
|
ldrb r0, [r4, #0x15]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
subs r1, r1, r0
|
|
movs r0, #0xff
|
|
ands r1, r0
|
|
lsls r1, r1, #8
|
|
adds r0, r4, #0
|
|
bl sub_08049998
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08049802
|
|
movs r0, #5
|
|
strb r0, [r4, #0xd]
|
|
movs r1, #0x10
|
|
bl DoFade
|
|
_08049802:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_08049804
|
|
sub_08049804: @ 0x08049804
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl sub_08049944
|
|
ldr r0, _0804987C @ =gUnk_03000FD0
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08049878
|
|
movs r0, #6
|
|
strb r0, [r4, #0xd]
|
|
ldrb r1, [r4, #0x18]
|
|
movs r3, #4
|
|
rsbs r3, r3, #0
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
strb r0, [r4, #0x18]
|
|
ldr r4, [r4, #0x54]
|
|
ldrb r2, [r4, #0x10]
|
|
movs r1, #0x7f
|
|
adds r0, r1, #0
|
|
ands r0, r2
|
|
strb r0, [r4, #0x10]
|
|
ldrb r2, [r4, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r2
|
|
strb r0, [r4, #0x18]
|
|
ldr r4, [r4, #0x54]
|
|
ldrb r2, [r4, #0x10]
|
|
adds r0, r1, #0
|
|
ands r0, r2
|
|
strb r0, [r4, #0x10]
|
|
ldrb r2, [r4, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r2
|
|
strb r0, [r4, #0x18]
|
|
ldr r4, [r4, #0x54]
|
|
ldrb r0, [r4, #0x10]
|
|
ands r1, r0
|
|
strb r1, [r4, #0x10]
|
|
ldrb r0, [r4, #0x18]
|
|
ands r3, r0
|
|
strb r3, [r4, #0x18]
|
|
ldr r4, _08049880 @ =gLinkEntity
|
|
ldr r1, _08049884 @ =gRoomControls
|
|
ldrh r0, [r1, #6]
|
|
adds r0, #0xa8
|
|
movs r2, #0
|
|
strh r0, [r4, #0x2e]
|
|
ldrh r0, [r1, #8]
|
|
adds r0, #0x80
|
|
strh r0, [r4, #0x32]
|
|
strb r2, [r4, #0x14]
|
|
bl sub_080809D4
|
|
movs r0, #4
|
|
movs r1, #4
|
|
bl DoFade
|
|
_08049878:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0804987C: .4byte gUnk_03000FD0
|
|
_08049880: .4byte gLinkEntity
|
|
_08049884: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08049888
|
|
sub_08049888: @ 0x08049888
|
|
push {lr}
|
|
adds r1, r0, #0
|
|
ldr r0, _080498B0 @ =gUnk_03000FD0
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _080498AE
|
|
movs r0, #7
|
|
strb r0, [r1, #0xd]
|
|
movs r0, #0xa0
|
|
strb r0, [r1, #0xe]
|
|
movs r0, #0x72
|
|
bl PlaySFX
|
|
movs r0, #0x7c
|
|
bl SetFlag
|
|
movs r0, #1
|
|
bl sub_08078A90
|
|
_080498AE:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_080498B0: .4byte gUnk_03000FD0
|
|
|
|
thumb_func_start sub_080498B4
|
|
sub_080498B4: @ 0x080498B4
|
|
push {lr}
|
|
ldrb r1, [r0, #0xe]
|
|
subs r1, #1
|
|
strb r1, [r0, #0xe]
|
|
lsls r0, r1, #0x18
|
|
cmp r0, #0
|
|
bne _080498C8
|
|
bl DeleteThisEntity
|
|
b _0804993E
|
|
_080498C8:
|
|
lsls r0, r1, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0x10
|
|
bne _080498E4
|
|
movs r0, #0x36
|
|
movs r1, #0xca
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
ldr r0, _080498E0 @ =0x00004081
|
|
movs r1, #0xca
|
|
b _0804990E
|
|
.align 2, 0
|
|
_080498E0: .4byte 0x00004081
|
|
_080498E4:
|
|
cmp r0, #0x18
|
|
bne _080498FC
|
|
movs r0, #0x36
|
|
movs r1, #0x8a
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
ldr r0, _080498F8 @ =0x00004081
|
|
movs r1, #0x8a
|
|
b _0804990E
|
|
.align 2, 0
|
|
_080498F8: .4byte 0x00004081
|
|
_080498FC:
|
|
cmp r0, #0x20
|
|
bne _08049920
|
|
movs r0, #0x36
|
|
movs r1, #0x4a
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
ldr r0, _0804991C @ =0x00004081
|
|
movs r1, #0x4a
|
|
_0804990E:
|
|
movs r2, #2
|
|
bl SetTile
|
|
movs r0, #0x71
|
|
bl PlaySFX
|
|
b _0804993E
|
|
.align 2, 0
|
|
_0804991C: .4byte 0x00004081
|
|
_08049920:
|
|
cmp r0, #0x28
|
|
bne _0804993E
|
|
movs r0, #0x36
|
|
movs r1, #0xa
|
|
movs r2, #1
|
|
bl sub_0807B7D8
|
|
ldr r0, _08049940 @ =0x00004081
|
|
movs r1, #0xa
|
|
movs r2, #2
|
|
bl SetTile
|
|
movs r0, #0x71
|
|
bl PlaySFX
|
|
_0804993E:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08049940: .4byte 0x00004081
|
|
|
|
thumb_func_start sub_08049944
|
|
sub_08049944: @ 0x08049944
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
adds r4, #0x7c
|
|
ldrb r3, [r4]
|
|
lsls r2, r3, #1
|
|
movs r1, #0x7f
|
|
ands r2, r1
|
|
movs r1, #0x80
|
|
ands r1, r3
|
|
orrs r2, r1
|
|
strb r2, [r4]
|
|
ldr r5, _08049990 @ =gLinkEntity
|
|
movs r2, #0x2e
|
|
ldrsh r1, [r5, r2]
|
|
movs r3, #0x32
|
|
ldrsh r2, [r5, r3]
|
|
movs r3, #0x20
|
|
bl sub_0806FCB8
|
|
cmp r0, #0
|
|
beq _0804998C
|
|
ldr r2, _08049994 @ =gLinkState
|
|
movs r0, #1
|
|
strb r0, [r2, #0x14]
|
|
movs r1, #0x36
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, #0
|
|
bne _0804998C
|
|
ldr r0, [r2, #0x30]
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
str r0, [r2, #0x30]
|
|
ldrb r0, [r4]
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
_0804998C:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08049990: .4byte gLinkEntity
|
|
_08049994: .4byte gLinkState
|
|
|
|
thumb_func_start sub_08049998
|
|
sub_08049998: @ 0x08049998
|
|
push {r4, r5, r6, lr}
|
|
adds r5, r0, #0
|
|
adds r4, r1, #0
|
|
bl sub_08049944
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl sub_08047EA4
|
|
movs r0, #0x2e
|
|
ldrsh r4, [r5, r0]
|
|
movs r2, #0x32
|
|
ldrsh r6, [r5, r2]
|
|
movs r0, #0x24
|
|
ldrsh r1, [r5, r0]
|
|
ldrb r2, [r5, #0x15]
|
|
adds r0, r5, #0
|
|
bl sub_0806F62C
|
|
adds r0, r5, #0
|
|
adds r0, #0x7c
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080499EA
|
|
bl sub_08079F8C
|
|
cmp r0, #0
|
|
beq _080499EA
|
|
ldr r0, _080499EC @ =gLinkEntity
|
|
ldrh r1, [r5, #0x2e]
|
|
subs r1, r1, r4
|
|
ldrh r2, [r0, #0x2e]
|
|
adds r1, r1, r2
|
|
strh r1, [r0, #0x2e]
|
|
ldrh r1, [r5, #0x32]
|
|
subs r1, r1, r6
|
|
ldrh r2, [r0, #0x32]
|
|
adds r1, r1, r2
|
|
strh r1, [r0, #0x32]
|
|
_080499EA:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_080499EC: .4byte gLinkEntity
|
|
|
|
thumb_func_start sub_080499F0
|
|
sub_080499F0: @ 0x080499F0
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
beq _08049A82
|
|
ldr r5, _08049A84 @ =gLinkEntity
|
|
movs r1, #0x36
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, #0
|
|
bne _08049A82
|
|
bl sub_08079F8C
|
|
cmp r0, #0
|
|
beq _08049A82
|
|
adds r2, r4, #0
|
|
adds r2, #0x7c
|
|
ldrb r1, [r2]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
adds r6, r2, #0
|
|
cmp r0, #0
|
|
bne _08049A82
|
|
movs r2, #0x2e
|
|
ldrsh r1, [r4, r2]
|
|
movs r3, #0x32
|
|
ldrsh r2, [r4, r3]
|
|
adds r0, r5, #0
|
|
movs r3, #0x24
|
|
bl sub_0806FCB8
|
|
cmp r0, #0
|
|
beq _08049A7E
|
|
ldrb r1, [r6]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08049A7E
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, #0x2e
|
|
ldrsh r1, [r4, r2]
|
|
subs r0, r0, r1
|
|
movs r3, #0x32
|
|
ldrsh r1, [r5, r3]
|
|
movs r3, #0x32
|
|
ldrsh r2, [r4, r3]
|
|
subs r1, r1, r2
|
|
bl sub_080045DA
|
|
ldr r3, _08049A88 @ =gSineTable
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r3
|
|
movs r2, #0
|
|
ldrsh r1, [r1, r2]
|
|
lsls r2, r1, #3
|
|
adds r2, r2, r1
|
|
lsls r2, r2, #0xa
|
|
ldr r1, [r4, #0x2c]
|
|
adds r1, r1, r2
|
|
str r1, [r5, #0x2c]
|
|
adds r0, #0x40
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
lsls r1, r0, #3
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #0xa
|
|
ldr r0, [r4, #0x30]
|
|
subs r0, r0, r1
|
|
str r0, [r5, #0x30]
|
|
_08049A7E:
|
|
movs r0, #0
|
|
strb r0, [r6]
|
|
_08049A82:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08049A84: .4byte gLinkEntity
|
|
_08049A88: .4byte gSineTable
|
|
|
|
thumb_func_start sub_08049A8C
|
|
sub_08049A8C: @ 0x08049A8C
|
|
push {lr}
|
|
ldrb r1, [r0, #0xe]
|
|
subs r1, #1
|
|
strb r1, [r0, #0xe]
|
|
lsls r1, r1, #0x18
|
|
cmp r1, #0
|
|
bne _08049AAA
|
|
bl Random
|
|
movs r1, #0xf
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _08049AAA
|
|
movs r0, #1
|
|
b _08049AAC
|
|
_08049AAA:
|
|
movs r0, #0
|
|
_08049AAC:
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08049AB0
|
|
sub_08049AB0: @ 0x08049AB0
|
|
push {r4, r5, lr}
|
|
adds r2, r0, #0
|
|
ldrb r0, [r2, #0xf]
|
|
adds r0, #1
|
|
strb r0, [r2, #0xf]
|
|
movs r1, #0xff
|
|
ands r0, r1
|
|
movs r1, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08049B18
|
|
adds r0, r2, #0
|
|
movs r1, #0x48
|
|
movs r2, #0
|
|
bl CreateFx
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08049B18
|
|
bl Random
|
|
movs r3, #0x30
|
|
adds r1, r0, #0
|
|
ands r1, r3
|
|
ldr r5, _08049B1C @ =0x0000FFE8
|
|
adds r2, r5, #0
|
|
adds r1, r2, r1
|
|
ldrh r5, [r4, #0x2e]
|
|
adds r1, r1, r5
|
|
strh r1, [r4, #0x2e]
|
|
lsrs r0, r0, #8
|
|
ands r0, r3
|
|
adds r2, r2, r0
|
|
ldrh r0, [r4, #0x32]
|
|
adds r2, r2, r0
|
|
strh r2, [r4, #0x32]
|
|
adds r2, r4, #0
|
|
adds r2, #0x29
|
|
ldrb r1, [r2]
|
|
movs r0, #8
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #3
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r0, r4, #0
|
|
bl UpdateSpriteOrderAndFlip
|
|
_08049B18:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08049B1C: .4byte 0x0000FFE8
|
|
|
|
thumb_func_start sub_08049B20
|
|
sub_08049B20: @ 0x08049B20
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
bl sub_08049944
|
|
movs r0, #0x2e
|
|
ldrsh r5, [r4, r0]
|
|
movs r2, #0x32
|
|
ldrsh r6, [r4, r2]
|
|
movs r0, #0x24
|
|
ldrsh r1, [r4, r0]
|
|
ldrb r2, [r4, #0x15]
|
|
adds r0, r4, #0
|
|
bl sub_0806F62C
|
|
adds r0, r4, #0
|
|
adds r0, #0x7c
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08049B68
|
|
bl sub_08079F8C
|
|
cmp r0, #0
|
|
beq _08049B68
|
|
ldr r0, _08049B6C @ =gLinkEntity
|
|
ldrh r1, [r4, #0x2e]
|
|
subs r1, r1, r5
|
|
ldrh r2, [r0, #0x2e]
|
|
adds r1, r1, r2
|
|
strh r1, [r0, #0x2e]
|
|
ldrh r1, [r4, #0x32]
|
|
subs r1, r1, r6
|
|
ldrh r2, [r0, #0x32]
|
|
adds r1, r1, r2
|
|
strh r1, [r0, #0x32]
|
|
_08049B68:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08049B6C: .4byte gLinkEntity
|