decompile LikeLike and SpearMoblin

remove redundant function definitions
This commit is contained in:
Behemoth 2020-09-17 01:43:57 +02:00
parent c0a95b9063
commit 7ecc2caf21
26 changed files with 1238 additions and 1861 deletions

View File

@ -1,652 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start LikeLike
LikeLike: @ 0x08027D6C
push {r4, lr}
adds r4, r0, #0
ldr r1, _08027D88 @ =gUnk_080CC6FC
bl EnemyFunctionHandler
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
pop {r4, pc}
.align 2, 0
_08027D88: .4byte gUnk_080CC6FC
thumb_func_start sub_08027D8C
sub_08027D8C: @ 0x08027D8C
push {lr}
ldr r2, _08027DA0 @ =gUnk_080CC714
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08027DA0: .4byte gUnk_080CC714
thumb_func_start sub_08027DA4
sub_08027DA4: @ 0x08027DA4
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x3f
ldrb r0, [r2]
cmp r0, #1
bne _08027DC4
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #0x8c
strb r0, [r2]
b _08027E0E
_08027DC4:
ldrb r0, [r4, #0xc]
cmp r0, #7
bne _08027DD2
adds r0, r4, #0
bl sub_0802810C
b _08027E0E
_08027DD2:
adds r0, r4, #0
adds r0, #0x41
ldrb r2, [r0]
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _08027E0E
movs r1, #0x7f
ands r1, r2
cmp r1, #0
bne _08027E0E
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x5f
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r2, r4, #0
adds r2, #0x3b
ldrb r1, [r2]
movs r0, #0xfc
ands r0, r1
strb r0, [r2]
ldr r0, _08027E38 @ =gPlayerEntity
adds r0, #0x29
ldrb r0, [r0]
lsls r0, r0, #0x1a
lsrs r0, r0, #0x1d
adds r1, r4, #0
adds r1, #0x83
strb r0, [r1]
_08027E0E:
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _08027E1C
movs r0, #0x20
strb r0, [r4, #0xe]
_08027E1C:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08027E2E
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08027E2E:
ldr r1, _08027E3C @ =gUnk_080CC6FC
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08027E38: .4byte gPlayerEntity
_08027E3C: .4byte gUnk_080CC6FC
thumb_func_start sub_08027E40
sub_08027E40: @ 0x08027E40
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #2
bne _08027E62
adds r5, r4, #0
adds r5, #0x80
ldrb r0, [r5]
cmp r0, #0xff
beq _08027E62
adds r0, r4, #0
movs r1, #3
bl sub_0805E3A0
ldrb r0, [r5]
bl sub_08028224
_08027E62:
adds r0, r4, #0
bl sub_0804A7D4
pop {r4, r5, pc}
.align 2, 0
thumb_func_start nullsub_139
nullsub_139: @ 0x08027E6C
bx lr
.align 2, 0
thumb_func_start sub_08027E70
sub_08027E70: @ 0x08027E70
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
ldrb r3, [r4, #0xa]
cmp r3, #1
beq _08027EA6
cmp r3, #1
bgt _08027E88
cmp r3, #0
beq _08027E8E
b _08027EE4
_08027E88:
cmp r3, #2
beq _08027EC4
b _08027EE4
_08027E8E:
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #7
ands r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
strb r3, [r4, #0xe]
b _08027EE4
_08027EA6:
movs r2, #1
strb r3, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #8
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
b _08027EE4
_08027EC4:
movs r3, #0
movs r2, #1
strb r2, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
strb r3, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x3f
strb r2, [r0]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08027EE4:
movs r0, #0
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x82
strb r0, [r1]
strb r0, [r4, #0x14]
adds r1, #1
strb r0, [r1]
subs r1, #3
movs r0, #0xff
strb r0, [r1]
pop {r4, pc}
thumb_func_start sub_08027EFC
sub_08027EFC: @ 0x08027EFC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #1
beq _08027F7C
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08027F68
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _08027F32
bl Random
movs r1, #0x30
ands r1, r0
cmp r1, #0
beq _08027F32
adds r0, r4, #0
bl sub_08049EE4
b _08027F38
_08027F32:
adds r0, r4, #0
adds r0, #0x82
ldrb r0, [r0]
_08027F38:
strb r0, [r4, #0x15]
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08027F5A
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x82
strb r0, [r1]
movs r0, #8
strb r0, [r4, #0xe]
_08027F5A:
adds r0, r4, #0
bl ProcessMovement
adds r0, r4, #0
bl GetNextFrame
b _08027F7C
_08027F68:
movs r0, #6
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
_08027F7C:
pop {r4, pc}
.align 2, 0
thumb_func_start nullsub_12
nullsub_12: @ 0x08027F80
bx lr
.align 2, 0
thumb_func_start sub_08027F84
sub_08027F84: @ 0x08027F84
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08027FB0
movs r0, #5
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #9
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
adds r0, r4, #0
bl CreateDust
_08027FB0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08027FB4
sub_08027FB4: @ 0x08027FB4
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08027FD6
movs r1, #1
movs r0, #1
strb r0, [r2, #0xc]
strb r0, [r2, #0xe]
adds r3, r2, #0
adds r3, #0x3b
ldrb r0, [r3]
orrs r0, r1
strb r0, [r3]
_08027FD6:
adds r0, r2, #0
bl GetNextFrame
pop {pc}
.align 2, 0
thumb_func_start sub_08027FE0
sub_08027FE0: @ 0x08027FE0
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r2, #1
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _08028028
strb r2, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
movs r2, #8
movs r0, #8
strb r0, [r4, #0xe]
adds r3, r4, #0
adds r3, #0x29
ldrb r1, [r3]
subs r0, #0x41
ands r0, r1
orrs r0, r2
strb r0, [r3]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
_08028028:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0802802C
sub_0802802C: @ 0x0802802C
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0802805A
movs r2, #0
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #7
ands r0, r1
strb r0, [r4, #0x18]
strb r2, [r4, #0x15]
strb r2, [r4, #0xe]
adds r0, r4, #0
bl CreateDust
_0802805A:
pop {r4, pc}
thumb_func_start sub_0802805C
sub_0802805C: @ 0x0802805C
push {r4, r5, lr}
adds r5, r0, #0
movs r1, #2
bl UpdateAnimationVariableFrames
bl sub_0807953C
cmp r0, #0
beq _0802807E
bl Random
ldrb r2, [r5, #0xf]
adds r2, #1
movs r1, #1
ands r1, r0
adds r2, r2, r1
strb r2, [r5, #0xf]
_0802807E:
ldrb r0, [r5, #0xf]
cmp r0, #0x18
bhi _0802808E
ldr r0, _08028098 @ =gUnk_02002A40
adds r0, #0xaa
ldrb r0, [r0]
cmp r0, #0
bne _0802809C
_0802808E:
adds r0, r5, #0
bl sub_0802810C
b _08028102
.align 2, 0
_08028098: .4byte gUnk_02002A40
_0802809C:
bl ResetPlayer
ldr r2, _08028104 @ =gPlayerState
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x1a]
ldr r4, _08028108 @ =gPlayerEntity
movs r3, #0x80
lsls r3, r3, #9
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0
bl PositionRelative
ldrh r0, [r5, #0x12]
ldrb r1, [r5, #0x1e]
bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r0]
adds r2, r4, #0
adds r2, #0x62
strb r1, [r2]
ldrb r0, [r0, #1]
adds r1, r4, #0
adds r1, #0x63
strb r0, [r1]
adds r4, #0x29
ldrb r1, [r4]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080280F0
adds r0, r5, #0
bl sub_080281A0
_080280F0:
ldrb r1, [r5, #0xe]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _08028102
movs r0, #0x82
lsls r0, r0, #1
bl EnqueueSFX
_08028102:
pop {r4, r5, pc}
.align 2, 0
_08028104: .4byte gPlayerState
_08028108: .4byte gPlayerEntity
thumb_func_start sub_0802810C
sub_0802810C: @ 0x0802810C
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _08028198 @ =gPlayerState
movs r1, #0
movs r0, #0x41
strb r0, [r2, #2]
strb r1, [r2, #0xa]
ldr r0, [r2, #0x30]
subs r1, #0x11
ands r0, r1
str r0, [r2, #0x30]
ldr r0, _0802819C @ =gPlayerEntity
mov ip, r0
ldrb r0, [r0, #0x10]
movs r1, #0x80
orrs r0, r1
mov r1, ip
strb r0, [r1, #0x10]
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r1, #0x20]
adds r1, #0x3d
movs r0, #0xc4
strb r0, [r1]
movs r3, #0
mov r2, ip
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
strb r0, [r2, #0x15]
adds r0, r4, #0
adds r0, #0x83
ldrb r0, [r0]
mov r5, ip
adds r5, #0x29
movs r1, #7
ands r1, r0
lsls r1, r1, #3
ldrb r2, [r5]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5]
mov r1, ip
adds r1, #0x63
movs r0, #0
ldrsb r0, [r1, r0]
mov r2, ip
strh r0, [r2, #0x36]
strb r3, [r1]
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x50
strb r0, [r4, #0xe]
strb r3, [r4, #0xf]
adds r2, r4, #0
adds r2, #0x3b
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08028196
movs r0, #0xee
strb r0, [r1]
_08028196:
pop {r4, r5, pc}
.align 2, 0
_08028198: .4byte gPlayerState
_0802819C: .4byte gPlayerEntity
thumb_func_start sub_080281A0
sub_080281A0: @ 0x080281A0
push {r4, lr}
adds r4, r0, #0
movs r0, #0x19
strb r0, [r4, #0xf]
movs r0, #0xe
bl sub_080281E0
cmp r0, #0
beq _080281BA
adds r0, r4, #0
adds r0, #0x80
movs r1, #0xe
b _080281CA
_080281BA:
movs r0, #0xd
bl sub_080281E0
cmp r0, #0
beq _080281D6
adds r0, r4, #0
adds r0, #0x80
movs r1, #0xd
_080281CA:
strb r1, [r0]
movs r0, #0xaf
lsls r0, r0, #3
bl TextboxNoOverlapFollow
b _080281DE
_080281D6:
movs r0, #1
rsbs r0, r0, #0
bl ModHealth
_080281DE:
pop {r4, pc}
thumb_func_start sub_080281E0
sub_080281E0: @ 0x080281E0
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
movs r4, #0
bl GetInventoryValue
cmp r0, #1
bne _0802821A
ldr r6, _08028220 @ =gUnk_02002A40
adds r5, r6, #0
adds r5, #0xb4
ldrb r0, [r5]
bl sub_080544B4
cmp r0, #0
beq _08028200
strb r4, [r5]
_08028200:
adds r5, r6, #0
adds r5, #0xb5
ldrb r0, [r5]
bl sub_080544B4
cmp r0, #0
beq _08028210
strb r4, [r5]
_08028210:
adds r0, r7, #0
movs r1, #0
bl sub_0807CAA0
movs r4, #1
_0802821A:
adds r0, r4, #0
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08028220: .4byte gUnk_02002A40
thumb_func_start sub_08028224
sub_08028224: @ 0x08028224
push {lr}
movs r1, #0
movs r2, #1
bl sub_080A7C18
ldr r0, _08028238 @ =0x00000579
bl TextboxNoOverlapFollow
pop {pc}
.align 2, 0
_08028238: .4byte 0x00000579

View File

@ -0,0 +1,81 @@
.syntax unified
.text
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _08028198 @ =gPlayerState
movs r1, #0
movs r0, #0x41
strb r0, [r2, #2]
strb r1, [r2, #0xa]
ldr r0, [r2, #0x30]
subs r1, #0x11
ands r0, r1
str r0, [r2, #0x30]
ldr r0, _0802819C @ =gPlayerEntity
mov ip, r0
ldrb r0, [r0, #0x10]
movs r1, #0x80
orrs r0, r1
mov r1, ip
strb r0, [r1, #0x10]
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r1, #0x20]
adds r1, #0x3d
movs r0, #0xc4
strb r0, [r1]
movs r3, #0
mov r2, ip
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
strb r0, [r2, #0x15]
adds r0, r4, #0
adds r0, #0x83
ldrb r0, [r0]
mov r5, ip
adds r5, #0x29
movs r1, #7
ands r1, r0
lsls r1, r1, #3
ldrb r2, [r5]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5]
mov r1, ip
adds r1, #0x63
movs r0, #0
ldrsb r0, [r1, r0]
mov r2, ip
strh r0, [r2, #0x36]
strb r3, [r1]
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x50
strb r0, [r4, #0xe]
strb r3, [r4, #0xf]
adds r2, r4, #0
adds r2, #0x3b
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08028196
movs r0, #0xee
strb r0, [r1]
_08028196:
pop {r4, r5, pc}
.align 2, 0
_08028198: .4byte gPlayerState
_0802819C: .4byte gPlayerEntity
.syntax divided

View File

@ -1,77 +0,0 @@
.syntax unified
.text
push {r4, lr}
adds r4, r0, #0
movs r0, #1
bl sub_08049DF4
adds r2, r0, #0
cmp r2, #0
beq _08025922
movs r0, #0x2e
ldrsh r1, [r2, r0]
movs r3, #0x2e
ldrsh r0, [r4, r3]
subs r3, r1, r0
adds r0, r3, #0
muls r0, r3, r0
adds r3, r0, #0
movs r1, #0x32
ldrsh r0, [r2, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r1, r0, #0
muls r1, r0, r1
adds r0, r1, #0
adds r3, r3, r0
adds r0, r4, #0
adds r0, #0x84
ldrh r0, [r0]
cmp r0, #0
bne _0802591A
adds r0, r4, #0
adds r0, #0x81
ldrb r1, [r0]
cmp r1, #0
bne _0802591A
movs r0, #0x80
lsls r0, r0, #3
cmp r3, r0
bgt _0802591A
movs r0, #9
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
b _08025942
_0802591A:
movs r0, #0x90
lsls r0, r0, #4
cmp r3, r0
ble _08025926
_08025922:
movs r0, #0
b _08025944
_08025926:
movs r0, #0xb
strb r0, [r4, #0xc]
movs r0, #1
strb r0, [r4, #0xe]
bl Random
ldr r2, _08025948 @ =gUnk_080CC050
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
ldrb r1, [r1]
adds r0, r4, #0
adds r0, #0x78
strh r1, [r0]
_08025942:
movs r0, #1
_08025944:
pop {r4, pc}
.align 2, 0
_08025948: .4byte gUnk_080CC050
.syntax divided

View File

@ -0,0 +1,104 @@
.syntax unified
.text
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #0
strb r1, [r4, #0xf]
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #1
bne _080286B0
bl Random
ldr r2, _08028650 @ =gUnk_080CC7BC
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
beq _08028658
bl Random
ldr r2, _08028654 @ =gUnk_080CC7D0
movs r1, #7
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r0, #0x18
ldrb r1, [r4, #0x15]
adds r0, r0, r1
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
b _080286B8
.align 2, 0
_08028650: .4byte gUnk_080CC7BC
_08028654: .4byte gUnk_080CC7D0
_08028658:
adds r0, r4, #0
bl sub_08049EE4
adds r5, r0, #0
adds r6, r4, #0
adds r6, #0x83
ldrb r0, [r6]
cmp r0, #0
bne _08028684
bl Random
ldr r2, _08028680 @ =gUnk_080CC7C0
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r5, r5, r0
b _080286A2
.align 2, 0
_08028680: .4byte gUnk_080CC7C0
_08028684:
bl Random
ldr r2, _080286AC @ =gUnk_080CC7C0
movs r1, #7
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r5, r5, r0
ldrb r0, [r4, #0xe]
adds r0, #0x10
strb r0, [r4, #0xe]
ldrb r0, [r6]
subs r0, #1
strb r0, [r6]
_080286A2:
adds r0, r5, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
b _080286B8
.align 2, 0
_080286AC: .4byte gUnk_080CC7C0
_080286B0:
movs r0, #0xc
strb r0, [r4, #0xe]
strh r1, [r4, #0x24]
ldrb r0, [r4, #0x15]
_080286B8:
lsrs r5, r0, #2
ldrb r0, [r4, #0x14]
cmp r5, r0
beq _080286C8
strb r5, [r4, #0x14]
adds r0, r4, #0
bl sub_080287E0
_080286C8:
pop {r4, r5, r6, pc}
.align 2, 0
.syntax divided

View File

@ -1,921 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start SpearMoblin
SpearMoblin: @ 0x0802823C
push {r4, lr}
adds r4, r0, #0
ldr r1, _08028268 @ =gUnk_080CC790
bl EnemyFunctionHandler
movs r3, #0x20
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
ldr r1, [r4, #0x54]
cmp r1, #0
beq _08028266
ldr r0, [r1, #4]
cmp r0, #0
beq _08028266
adds r0, r4, #0
bl CopyPosition
_08028266:
pop {r4, pc}
.align 2, 0
_08028268: .4byte gUnk_080CC790
thumb_func_start sub_0802826C
sub_0802826C: @ 0x0802826C
push {lr}
ldr r2, _08028280 @ =gUnk_080CC7A8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08028280: .4byte gUnk_080CC7A8
thumb_func_start sub_08028284
sub_08028284: @ 0x08028284
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08028298
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08028298:
ldr r1, _080282BC @ =gUnk_080CC790
adds r0, r4, #0
bl sub_0804AA30
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080282DE
ldrb r0, [r4, #0xc]
cmp r0, #4
beq _080282C0
adds r0, r4, #0
bl sub_08028754
b _080282DE
.align 2, 0
_080282BC: .4byte gUnk_080CC790
_080282C0:
movs r0, #0x3f
ands r0, r1
cmp r0, #0
bne _080282DE
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r1, #7
movs r0, #0x16
strb r0, [r1]
adds r0, r4, #0
bl sub_08028784
_080282DE:
ldr r0, [r4, #0x54]
adds r1, r4, #0
adds r1, #0x3d
ldrb r1, [r1]
adds r0, #0x3d
strb r1, [r0]
adds r0, r4, #0
adds r0, #0x45
ldrb r5, [r0]
cmp r5, #0
bne _0802830C
movs r0, #0
strh r5, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x82
strb r0, [r1]
adds r0, r4, #0
bl sub_080287E0
ldr r0, [r4, #0x54]
bl DeleteEntity
str r5, [r4, #0x54]
_0802830C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start nullsub_13
nullsub_13: @ 0x08028310
bx lr
.align 2, 0
thumb_func_start sub_08028314
sub_08028314: @ 0x08028314
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r1, #0
movs r2, #1
strb r2, [r4, #0xc]
strb r1, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x7b
strb r1, [r0]
adds r0, #5
strb r1, [r0]
adds r0, #3
strb r1, [r0]
subs r0, #2
strb r1, [r0]
subs r0, #7
strb r1, [r0]
adds r0, #8
strb r2, [r0]
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0802835E
ldrb r1, [r4, #0xb]
lsls r0, r1, #1
strb r0, [r4, #0x14]
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
lsls r1, r1, #3
strb r1, [r4, #0x15]
adds r0, r4, #0
bl sub_080287E0
b _08028368
_0802835E:
movs r0, #0x10
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08028604
_08028368:
movs r0, #3
bl sub_080A7EE0
cmp r0, #0
beq _08028376
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_08028376:
pop {r4, pc}
thumb_func_start sub_08028378
sub_08028378: @ 0x08028378
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x81
ldrb r0, [r1]
cmp r0, #0
beq _0802838A
subs r0, #1
strb r0, [r1]
_0802838A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r2, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _080283B8
adds r1, r4, #0
adds r1, #0x80
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ands r0, r2
cmp r0, #0xf
bls _080283B0
adds r0, r4, #0
bl sub_08028728
b _080283FC
_080283B0:
adds r0, r4, #0
bl sub_08028604
b _080283FC
_080283B8:
adds r0, r4, #0
bl sub_080286CC
cmp r0, #0
beq _080283CE
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
_080283CE:
adds r0, r4, #0
bl sub_080288A4
cmp r0, #0
beq _080283FC
ldrh r1, [r4, #0x2a]
adds r0, r4, #0
bl sub_0800417E
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r1, r4, #0
adds r1, #0x83
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_080287E0
_080283FC:
ldrb r0, [r4, #0xf]
cmp r0, #0xb
bls _08028414
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0
beq _08028418
adds r0, r4, #0
bl sub_08028754
b _08028418
_08028414:
adds r0, #1
strb r0, [r4, #0xf]
_08028418:
adds r0, r4, #0
bl sub_08028858
pop {r4, pc}
thumb_func_start sub_08028420
sub_08028420: @ 0x08028420
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0802844C
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x82
strb r1, [r0]
subs r0, #2
strb r1, [r0]
movs r0, #0x10
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08028604
b _08028462
_0802844C:
adds r0, r4, #0
bl sub_080286CC
cmp r0, #0
beq _08028462
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
_08028462:
ldrb r0, [r4, #0xf]
cmp r0, #0xb
bls _0802847A
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0
beq _0802847E
adds r0, r4, #0
bl sub_08028754
b _0802847E
_0802847A:
adds r0, #1
strb r0, [r4, #0xf]
_0802847E:
adds r0, r4, #0
bl sub_08028858
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08028488
sub_08028488: @ 0x08028488
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0
bne _08028520
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
adds r3, r0, #0
cmp r1, #2
beq _080284D2
cmp r1, #2
ble _080284F0
cmp r1, #3
beq _080284B4
cmp r1, #4
beq _080284E6
b _080284F0
_080284B4:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
movs r0, #0x8f
lsls r0, r0, #1
bl EnqueueSFX
b _0802850A
_080284D2:
strb r1, [r4, #0xc]
strh r2, [r4, #0x24]
bl Random
movs r1, #7
ands r0, r1
lsls r1, r0, #1
adds r1, r1, r0
adds r1, #0x40
b _08028508
_080284E6:
ldrb r0, [r4, #0x15]
adds r0, #0x10
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
_080284F0:
movs r0, #1
strb r0, [r4, #0xc]
strb r0, [r3]
movs r0, #0x80
strh r0, [r4, #0x24]
bl Random
movs r1, #7
ands r0, r1
lsls r1, r0, #1
adds r1, r1, r0
adds r1, #0x22
_08028508:
strb r1, [r4, #0xe]
_0802850A:
movs r0, #0
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_080287E0
_08028520:
adds r0, r4, #0
bl sub_08028858
pop {r4, pc}
thumb_func_start sub_08028528
sub_08028528: @ 0x08028528
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #1
bl sub_08049DF4
adds r5, r0, #0
cmp r5, #0
bne _08028542
strb r5, [r4, #0xf]
adds r0, r4, #0
bl sub_08028728
b _08028600
_08028542:
adds r0, r4, #0
bl sub_080288C0
ldr r1, _08028590 @ =gUnk_080CC944
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r1
ldr r2, [r0]
ldr r1, [r4, #0x48]
ldrb r0, [r2]
strb r0, [r1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #1]
strb r0, [r1, #1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #6]
strb r0, [r1, #6]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #7]
strb r0, [r1, #7]
adds r0, r4, #0
adds r0, #0x7a
ldrb r1, [r0]
adds r6, r0, #0
cmp r1, #0
beq _08028594
movs r0, #0
strb r0, [r6]
adds r1, r4, #0
adds r1, #0x81
movs r0, #0x16
strb r0, [r1]
adds r0, r4, #0
bl sub_08028784
adds r1, r4, #0
adds r1, #0x7b
b _080285EE
.align 2, 0
_08028590: .4byte gUnk_080CC944
_08028594:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x20
bne _080285BC
strb r1, [r4, #0xe]
adds r0, r4, #0
adds r1, r5, #0
bl GetFacingDirection
adds r5, r0, #0
ldrb r0, [r4, #0x15]
adds r1, r5, #0
bl sub_08028828
cmp r0, #0
beq _080285BC
strb r5, [r4, #0x15]
_080285BC:
ldrb r1, [r4, #0xe]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _080285D6
movs r0, #0xf0
bl EnqueueSFX
adds r0, r4, #0
movs r1, #2
movs r2, #0x40
bl CreateFx
_080285D6:
adds r1, r4, #0
adds r1, #0x7b
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x80
bne _080285EE
ldrb r0, [r6]
adds r0, #1
strb r0, [r6]
_080285EE:
ldrb r0, [r1]
cmp r0, #0x20
bls _080285FA
adds r0, r4, #0
bl ProcessMovement
_080285FA:
adds r0, r4, #0
bl GetNextFrame
_08028600:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08028604
sub_08028604: @ 0x08028604
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #0
strb r1, [r4, #0xf]
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #1
bne _080286B0
bl Random
ldr r2, _08028650 @ =gUnk_080CC7BC
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
beq _08028658
bl Random
ldr r2, _08028654 @ =gUnk_080CC7D0
movs r1, #7
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r0, #0x18
ldrb r1, [r4, #0x15]
adds r0, r0, r1
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
b _080286B8
.align 2, 0
_08028650: .4byte gUnk_080CC7BC
_08028654: .4byte gUnk_080CC7D0
_08028658:
adds r0, r4, #0
bl sub_08049EE4
adds r5, r0, #0
adds r6, r4, #0
adds r6, #0x83
ldrb r0, [r6]
cmp r0, #0
bne _08028684
bl Random
ldr r2, _08028680 @ =gUnk_080CC7C0
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r5, r5, r0
b _080286A2
.align 2, 0
_08028680: .4byte gUnk_080CC7C0
_08028684:
bl Random
ldr r2, _080286AC @ =gUnk_080CC7C0
movs r1, #7
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r5, r5, r0
ldrb r0, [r4, #0xe]
adds r0, #0x10
strb r0, [r4, #0xe]
ldrb r0, [r6]
subs r0, #1
strb r0, [r6]
_080286A2:
adds r0, r5, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
b _080286B8
.align 2, 0
_080286AC: .4byte gUnk_080CC7C0
_080286B0:
movs r0, #0xc
strb r0, [r4, #0xe]
strh r1, [r4, #0x24]
ldrb r0, [r4, #0x15]
_080286B8:
lsrs r5, r0, #2
ldrb r0, [r4, #0x14]
cmp r5, r0
beq _080286C8
strb r5, [r4, #0x14]
adds r0, r4, #0
bl sub_080287E0
_080286C8:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080286CC
sub_080286CC: @ 0x080286CC
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
bne _08028724
movs r0, #1
bl sub_08049DF4
adds r4, r0, #0
cmp r4, #0
beq _08028724
adds r0, r5, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #2
bne _080286FC
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x30
bl sub_0806FC80
cmp r0, #0
bne _08028720
_080286FC:
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x40
bl sub_0806FC80
cmp r0, #0
beq _08028724
adds r0, r5, #0
adds r1, r4, #0
bl GetFacingDirection
adds r0, #4
movs r1, #0x18
ands r0, r1
lsrs r0, r0, #2
ldrb r5, [r5, #0x14]
cmp r0, r5
bne _08028724
_08028720:
movs r0, #1
b _08028726
_08028724:
movs r0, #0
_08028726:
pop {r4, r5, pc}
thumb_func_start sub_08028728
sub_08028728: @ 0x08028728
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x83
ldrb r0, [r1]
lsrs r0, r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_080287B4
adds r4, #0x82
movs r0, #2
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_08028754
sub_08028754: @ 0x08028754
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049F84
movs r2, #0
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x83
strb r2, [r0]
adds r0, r4, #0
bl sub_080287B4
adds r4, #0x82
movs r0, #3
strb r0, [r4]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08028784
sub_08028784: @ 0x08028784
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
movs r1, #0
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x83
strb r1, [r0]
adds r0, r4, #0
bl sub_080287B4
ldrb r0, [r4, #0xe]
lsls r0, r0, #1
strb r0, [r4, #0xe]
adds r4, #0x82
movs r0, #4
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_080287B4
sub_080287B4: @ 0x080287B4
push {lr}
adds r2, r0, #0
movs r1, #0
movs r0, #3
strb r0, [r2, #0xc]
movs r0, #0x20
strb r0, [r2, #0xe]
strb r1, [r2, #0xf]
adds r0, r2, #0
adds r0, #0x80
strb r1, [r0]
subs r0, #5
strb r1, [r0]
movs r0, #0
strh r1, [r2, #0x24]
adds r1, r2, #0
adds r1, #0x82
strb r0, [r1]
adds r0, r2, #0
bl sub_080287E0
pop {pc}
thumb_func_start sub_080287E0
sub_080287E0: @ 0x080287E0
push {lr}
adds r3, r0, #0
ldrb r0, [r3, #0x14]
lsrs r2, r0, #1
adds r0, r3, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #4
bhi _0802881E
lsls r0, r0, #2
ldr r1, _080287FC @ =_08028800
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080287FC: .4byte _08028800
_08028800: @ jump table
.4byte _0802881E @ case 0
.4byte _08028814 @ case 1
.4byte _0802881C @ case 2
.4byte _08028818 @ case 3
.4byte _08028814 @ case 4
_08028814:
adds r2, #4
b _0802881E
_08028818:
adds r2, #8
b _0802881E
_0802881C:
adds r2, #0xc
_0802881E:
adds r0, r3, #0
adds r1, r2, #0
bl InitializeAnimation
pop {pc}
thumb_func_start sub_08028828
sub_08028828: @ 0x08028828
push {r4, lr}
adds r4, r0, #0
adds r3, r1, #0
adds r0, r3, #4
movs r2, #0x18
ands r0, r2
adds r1, r4, #4
ands r1, r2
cmp r0, r1
bne _08028852
adds r0, r3, #5
movs r1, #7
ands r0, r1
adds r2, r4, #5
ands r2, r1
cmp r0, #2
bhi _08028852
cmp r2, #2
bhi _08028852
movs r0, #1
b _08028854
_08028852:
movs r0, #0
_08028854:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08028858
sub_08028858: @ 0x08028858
push {r4, lr}
adds r4, r0, #0
bl sub_080288C0
ldr r1, _080288A0 @ =gUnk_080CC944
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r1
ldr r2, [r0]
ldr r1, [r4, #0x48]
ldrb r0, [r2]
strb r0, [r1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #1]
strb r0, [r1, #1]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #6]
strb r0, [r1, #6]
ldr r1, [r4, #0x48]
ldrb r0, [r2, #7]
strb r0, [r1, #7]
adds r0, r4, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #0
bne _08028890
strh r0, [r4, #0x24]
_08028890:
adds r0, r4, #0
bl ProcessMovement
adds r0, r4, #0
bl GetNextFrame
pop {r4, pc}
.align 2, 0
_080288A0: .4byte gUnk_080CC944
thumb_func_start sub_080288A4
sub_080288A4: @ 0x080288A4
ldr r2, _080288BC @ =gUnk_080CC7D8
ldrb r1, [r0, #0x14]
lsrs r1, r1, #1
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r0, #0x2a]
ldrh r1, [r1]
ands r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
bx lr
.align 2, 0
_080288BC: .4byte gUnk_080CC7D8
thumb_func_start sub_080288C0
sub_080288C0: @ 0x080288C0
push {lr}
mov ip, r0
ldr r2, [r0, #0x54]
cmp r2, #0
beq _08028908
adds r0, r2, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08028908
adds r0, r2, #0
adds r0, #0x3e
ldrb r0, [r0]
mov r1, ip
adds r1, #0x3e
strb r0, [r1]
adds r0, r2, #0
adds r0, #0x3d
ldrb r0, [r0]
rsbs r0, r0, #0
subs r1, #1
strb r0, [r1]
adds r0, r2, #0
adds r0, #0x46
ldrh r0, [r0]
adds r1, #9
movs r3, #0
strh r0, [r1]
adds r2, #0x42
ldrb r1, [r2]
mov r0, ip
adds r0, #0x42
strb r1, [r0]
strb r3, [r2]
_08028908:
pop {pc}
.align 2, 0

View File

@ -0,0 +1,97 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CC2DF:: @ 080CC2DF
.incbin "baserom.gba", 0x0CC2DF, 0x0000004
gUnk_080CC2E3:: @ 080CC2E3
.incbin "baserom.gba", 0x0CC2E3, 0x0000004
gUnk_080CC2E7:: @ 080CC2E7
.incbin "baserom.gba", 0x0CC2E7, 0x0000004
gUnk_080CC2EB:: @ 080CC2EB
.incbin "baserom.gba", 0x0CC2EB, 0x0000004
gUnk_080CC2EF:: @ 080CC2EF
.incbin "baserom.gba", 0x0CC2EF, 0x0000005
gUnk_080CC2F4:: @ 080CC2F4
.incbin "baserom.gba", 0x0CC2F4, 0x0000011
gUnk_080CC305:: @ 080CC305
.incbin "baserom.gba", 0x0CC305, 0x0000019
gUnk_080CC31E:: @ 080CC31E
.incbin "baserom.gba", 0x0CC31E, 0x000000D
gUnk_080CC32B:: @ 080CC32B
.incbin "baserom.gba", 0x0CC32B, 0x000000D
gUnk_080CC338:: @ 080CC338
.incbin "baserom.gba", 0x0CC338, 0x0000005
gUnk_080CC33D:: @ 080CC33D
.incbin "baserom.gba", 0x0CC33D, 0x0000009
gUnk_080CC346:: @ 080CC346
.incbin "baserom.gba", 0x0CC346, 0x000000D
gUnk_080CC353:: @ 080CC353
.incbin "baserom.gba", 0x0CC353, 0x0000009
gUnk_080CC35C:: @ 080CC35C
.incbin "baserom.gba", 0x0CC35C, 0x000000D
gUnk_080CC369:: @ 080CC369
.incbin "baserom.gba", 0x0CC369, 0x0000009
gUnk_080CC372:: @ 080CC372
.incbin "baserom.gba", 0x0CC372, 0x0000009
gUnk_080CC37B:: @ 080CC37B
.incbin "baserom.gba", 0x0CC37B, 0x0000021
gUnk_080CC39C:: @ 080CC39C
.incbin "baserom.gba", 0x0CC39C, 0x0000038
gUnk_080CC3D4:: @ 080CC3D4
.incbin "baserom.gba", 0x0CC3D4, 0x0000038
gUnk_080CC40C:: @ 080CC40C
.incbin "baserom.gba", 0x0CC40C, 0x0000034
gUnk_080CC440:: @ 080CC440
.incbin "baserom.gba", 0x0CC440, 0x0000038
gUnk_080CC478:: @ 080CC478
.incbin "baserom.gba", 0x0CC478, 0x0000038
gUnk_080CC4B0:: @ 080CC4B0
.incbin "baserom.gba", 0x0CC4B0, 0x0000065
gUnk_080CC515:: @ 080CC515
.incbin "baserom.gba", 0x0CC515, 0x000006D
gUnk_080CC582:: @ 080CC582
.incbin "baserom.gba", 0x0CC582, 0x000006D
gUnk_080CC5EF:: @ 080CC5EF
.incbin "baserom.gba", 0x0CC5EF, 0x000006D
gUnk_080CC65C:: @ 080CC65C
.incbin "baserom.gba", 0x0CC65C, 0x0000021
gUnk_080CC67D:: @ 080CC67D
.incbin "baserom.gba", 0x0CC67D, 0x0000007
gUnk_080CC684:: @ 080CC684
.incbin "baserom.gba", 0x0CC684, 0x0000018
gUnk_080CC69C:: @ 080CC69C
.incbin "baserom.gba", 0x0CC69C, 0x0000038
gUnk_080CC6D4:: @ 080CC6D4
.incbin "baserom.gba", 0x0CC6D4, 0x0000028

View File

@ -0,0 +1,16 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CC734:: @ 080CC734
.incbin "baserom.gba", 0x0CC734, 0x0000025
gUnk_080CC759:: @ 080CC759
.incbin "baserom.gba", 0x0CC759, 0x0000015
gUnk_080CC76E:: @ 080CC76E
.incbin "baserom.gba", 0x0CC76E, 0x0000012
gUnk_080CC780:: @ 080CC780
.incbin "baserom.gba", 0x0CC780, 0x0000010

View File

@ -3,183 +3,6 @@
.section .rodata
gUnk_080CC19C:: @ 080CC19C
.incbin "baserom.gba", 0x0CC19C, 0x0000014
gUnk_080CC1B0:: @ 080CC1B0
.incbin "baserom.gba", 0x0CC1B0, 0x0000008
gUnk_080CC1B8:: @ 080CC1B8
.incbin "baserom.gba", 0x0CC1B8, 0x0000010
gUnk_080CC1C8:: @ 080CC1C8
.incbin "baserom.gba", 0x0CC1C8, 0x0000014
gUnk_080CC1DC:: @ 080CC1DC
.incbin "baserom.gba", 0x0CC1DC, 0x0000030
gUnk_080CC20C:: @ 080CC20C
.incbin "baserom.gba", 0x0CC20C, 0x0000028
gUnk_080CC234:: @ 080CC234
.incbin "baserom.gba", 0x0CC234, 0x000001B
gUnk_080CC24F:: @ 080CC24F
.incbin "baserom.gba", 0x0CC24F, 0x0000009
gUnk_080CC258:: @ 080CC258
.incbin "baserom.gba", 0x0CC258, 0x000000C
gUnk_080CC264:: @ 080CC264
.incbin "baserom.gba", 0x0CC264, 0x0000008
gUnk_080CC26C:: @ 080CC26C
.incbin "baserom.gba", 0x0CC26C, 0x000000C
gUnk_080CC278:: @ 080CC278
.incbin "baserom.gba", 0x0CC278, 0x0000004
gUnk_080CC27C:: @ 080CC27C
.incbin "baserom.gba", 0x0CC27C, 0x0000020
gUnk_080CC29C:: @ 080CC29C
.incbin "baserom.gba", 0x0CC29C, 0x0000020
gUnk_080CC2BC:: @ 080CC2BC
.incbin "baserom.gba", 0x0CC2BC, 0x0000020
gUnk_080CC2DC:: @ 080CC2DC
.incbin "baserom.gba", 0x0CC2DC, 0x0000003
gUnk_080CC2DF:: @ 080CC2DF
.incbin "baserom.gba", 0x0CC2DF, 0x0000004
gUnk_080CC2E3:: @ 080CC2E3
.incbin "baserom.gba", 0x0CC2E3, 0x0000004
gUnk_080CC2E7:: @ 080CC2E7
.incbin "baserom.gba", 0x0CC2E7, 0x0000004
gUnk_080CC2EB:: @ 080CC2EB
.incbin "baserom.gba", 0x0CC2EB, 0x0000004
gUnk_080CC2EF:: @ 080CC2EF
.incbin "baserom.gba", 0x0CC2EF, 0x0000005
gUnk_080CC2F4:: @ 080CC2F4
.incbin "baserom.gba", 0x0CC2F4, 0x0000011
gUnk_080CC305:: @ 080CC305
.incbin "baserom.gba", 0x0CC305, 0x0000019
gUnk_080CC31E:: @ 080CC31E
.incbin "baserom.gba", 0x0CC31E, 0x000000D
gUnk_080CC32B:: @ 080CC32B
.incbin "baserom.gba", 0x0CC32B, 0x000000D
gUnk_080CC338:: @ 080CC338
.incbin "baserom.gba", 0x0CC338, 0x0000005
gUnk_080CC33D:: @ 080CC33D
.incbin "baserom.gba", 0x0CC33D, 0x0000009
gUnk_080CC346:: @ 080CC346
.incbin "baserom.gba", 0x0CC346, 0x000000D
gUnk_080CC353:: @ 080CC353
.incbin "baserom.gba", 0x0CC353, 0x0000009
gUnk_080CC35C:: @ 080CC35C
.incbin "baserom.gba", 0x0CC35C, 0x000000D
gUnk_080CC369:: @ 080CC369
.incbin "baserom.gba", 0x0CC369, 0x0000009
gUnk_080CC372:: @ 080CC372
.incbin "baserom.gba", 0x0CC372, 0x0000009
gUnk_080CC37B:: @ 080CC37B
.incbin "baserom.gba", 0x0CC37B, 0x0000021
gUnk_080CC39C:: @ 080CC39C
.incbin "baserom.gba", 0x0CC39C, 0x0000038
gUnk_080CC3D4:: @ 080CC3D4
.incbin "baserom.gba", 0x0CC3D4, 0x0000038
gUnk_080CC40C:: @ 080CC40C
.incbin "baserom.gba", 0x0CC40C, 0x0000034
gUnk_080CC440:: @ 080CC440
.incbin "baserom.gba", 0x0CC440, 0x0000038
gUnk_080CC478:: @ 080CC478
.incbin "baserom.gba", 0x0CC478, 0x0000038
gUnk_080CC4B0:: @ 080CC4B0
.incbin "baserom.gba", 0x0CC4B0, 0x0000065
gUnk_080CC515:: @ 080CC515
.incbin "baserom.gba", 0x0CC515, 0x000006D
gUnk_080CC582:: @ 080CC582
.incbin "baserom.gba", 0x0CC582, 0x000006D
gUnk_080CC5EF:: @ 080CC5EF
.incbin "baserom.gba", 0x0CC5EF, 0x000006D
gUnk_080CC65C:: @ 080CC65C
.incbin "baserom.gba", 0x0CC65C, 0x0000021
gUnk_080CC67D:: @ 080CC67D
.incbin "baserom.gba", 0x0CC67D, 0x0000007
gUnk_080CC684:: @ 080CC684
.incbin "baserom.gba", 0x0CC684, 0x0000018
gUnk_080CC69C:: @ 080CC69C
.incbin "baserom.gba", 0x0CC69C, 0x0000038
gUnk_080CC6D4:: @ 080CC6D4
.incbin "baserom.gba", 0x0CC6D4, 0x0000028
gUnk_080CC6FC:: @ 080CC6FC
.incbin "baserom.gba", 0x0CC6FC, 0x0000018
gUnk_080CC714:: @ 080CC714
.incbin "baserom.gba", 0x0CC714, 0x0000020
gUnk_080CC734:: @ 080CC734
.incbin "baserom.gba", 0x0CC734, 0x0000025
gUnk_080CC759:: @ 080CC759
.incbin "baserom.gba", 0x0CC759, 0x0000015
gUnk_080CC76E:: @ 080CC76E
.incbin "baserom.gba", 0x0CC76E, 0x0000012
gUnk_080CC780:: @ 080CC780
.incbin "baserom.gba", 0x0CC780, 0x0000010
gUnk_080CC790:: @ 080CC790
.incbin "baserom.gba", 0x0CC790, 0x0000018
gUnk_080CC7A8:: @ 080CC7A8
.incbin "baserom.gba", 0x0CC7A8, 0x0000014
gUnk_080CC7BC:: @ 080CC7BC
.incbin "baserom.gba", 0x0CC7BC, 0x0000004
gUnk_080CC7C0:: @ 080CC7C0
.incbin "baserom.gba", 0x0CC7C0, 0x0000010
gUnk_080CC7D0:: @ 080CC7D0
.incbin "baserom.gba", 0x0CC7D0, 0x0000008
gUnk_080CC7D8:: @ 080CC7D8
.incbin "baserom.gba", 0x0CC7D8, 0x0000008
gUnk_080CC7E0:: @ 080CC7E0
.incbin "baserom.gba", 0x0CC7E0, 0x0000009

View File

@ -15,13 +15,9 @@ extern void sub_0805EC9C();
extern void sub_0805EC60();
extern void sub_080873D0();
extern void DeleteEntity();
extern u32 sub_080045D4();
extern void sub_0806F69C();
extern u32 Random();
extern void sub_0805E3A0(Entity*, u32);
extern Entity* FindEntityInListBySubtype(u32, u32, u32);
extern void sub_080791D0();
extern u32 FindEntityInListByForm(u32, u32, u32, u32, u32);
extern void (*const GreatFairy_Main[])(Entity*);
extern void (*const GreatFairy_Behaviors[])(Entity*);
extern void (*const GreatFairy_WingsBehaviors[])(Entity*);

View File

@ -345,8 +345,8 @@ SECTIONS {
src/enemy/pesto.o(.text);
src/enemy/puffstool.o(.text);
asm/chuchuBoss.o(.text);
asm/likeLike.o(.text);
asm/spearMoblin.o(.text);
src/enemy/likeLike.o(.text);
src/enemy/spearMoblin.o(.text);
asm/businessScrub.o(.text);
src/enemy/rupeeLike.o(.text);
asm/madderpillar.o(.text);
@ -941,7 +941,12 @@ SECTIONS {
data/animations/pesto.o(.rodata);
src/enemy/puffstool.o(.rodata);
data/animations/puffstool.o(.rodata);
data/data_080CC19C.o(.rodata);
src/enemy/chuchuBoss.o(.rodata);
data/animations/chuchuBoss.o(.rodata);
src/enemy/likeLike.o(.rodata);
data/animations/likeLike.o(.rodata);
src/enemy/spearMoblin.o(.rodata);
data/data_080CC6FC.o(.rodata);
src/enemy.o(.rodata);
data/data_080D3D94.o(.rodata);
data/areaPropertyLists.o(.rodata);

View File

@ -16,7 +16,6 @@ extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*));
extern u32 sub_0806FCB8(Entity*, u32, u32, u32);
extern u32 GetNextFunction(Entity*);
extern void SetChildOffset(Entity*, s32, s32, s32);
extern u32 Random(void);
extern Entity* gUnk_020000B0;
extern u8 gEntCount;

190
src/enemy/chuchuBoss.c Normal file
View File

@ -0,0 +1,190 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
extern void sub_08078B48(void);
void sub_08027870(Entity*);
extern void (*const gUnk_080CC19C[])(Entity*);
extern void (*const gUnk_080CC1B0[])(Entity*);
extern const u8 gUnk_080CC1B8[];
extern void (*const gUnk_080CC1C8[])(Entity*);
extern void (*const gUnk_080CC1DC[])(Entity*);
extern void (*const gUnk_080CC20C[])(Entity*);
extern const u8 gUnk_080CC234[];
extern const u8 gUnk_080CC24F[];
extern void (*const gUnk_080CC258[])(Entity*);
extern void (*const gUnk_080CC264[])(Entity*);
extern void (*const gUnk_080CC26C[])(Entity*);
extern const u8 gUnk_080CC278[];
extern const u16 gUnk_080CC27C[];
extern const u16 gUnk_080CC29C[];
extern const u16 gUnk_080CC2BC[];
extern const s8 gUnk_080CC2DC[];
void sub_08025DC0(Entity*);
void sub_08025CBC(Entity*);
void sub_08025CD4(Entity*);
void sub_08001242(Entity*);
void sub_08025DD8(Entity*);
void sub_08026060(Entity*);
void sub_08026110(Entity*);
void sub_080272D4(Entity*);
void sub_0802720C(Entity*);
void sub_0802720C(Entity*);
void sub_08026090(Entity*);
void sub_0802626C(Entity*);
void sub_08026580(Entity*);
void sub_08026634(Entity*);
void sub_08026750(Entity*);
void sub_0802686C(Entity*);
void sub_080268C8(Entity*);
void sub_0802694C(Entity*);
void sub_08026C40(Entity*);
void sub_08026E1C(Entity*);
void sub_08026FA4(Entity*);
void sub_08027064(Entity*);
void sub_08026F1C(Entity*);
void sub_080262A8(Entity*);
void sub_08026328(Entity*);
void sub_08026358(Entity*);
void sub_080263B4(Entity*);
void sub_08026414(Entity*);
void sub_0802647C(Entity*);
void sub_080264AC(Entity*);
void sub_080264D4(Entity*);
void sub_0802650C(Entity*);
void sub_0802653C(Entity*);
void sub_08026774(Entity*);
void sub_080267D0(Entity*);
void sub_08026808(Entity*);
void sub_080268EC(Entity*);
void sub_08026914(Entity*);
void sub_08026968(Entity*);
void sub_080269CC(Entity*);
void sub_08026BE8(Entity*);
// clang-format off
void (*const gUnk_080CC19C[])(Entity*) = {
sub_08025DC0,
sub_08025DC0,
sub_08025CBC,
sub_08025CD4,
sub_08001242,
};
void (*const gUnk_080CC1B0[])(Entity*) = {
sub_08025DD8,
sub_08026060,
};
const u8 gUnk_080CC1B8[] = {
0, 4,
0, 0,
0, 4,
0, 0,
1, 4,
0, 0,
2, 4,
0, 0,
};
void (*const gUnk_080CC1C8[])(Entity*) = {
sub_08026110,
sub_080272D4,
sub_0802720C,
sub_0802720C,
sub_08026090,
};
void (*const gUnk_080CC1DC[])(Entity*) = {
sub_0802626C,
sub_08026580,
sub_08026634,
sub_08026750,
sub_0802686C,
sub_080268C8,
sub_0802694C,
sub_08026C40,
sub_08026E1C,
sub_08026FA4,
sub_08027064,
sub_08026F1C,
};
void (*const gUnk_080CC20C[])(Entity*) = {
sub_080262A8,
sub_08026328,
sub_08026358,
sub_080263B4,
sub_08026414,
sub_0802647C,
sub_080264AC,
sub_080264D4,
sub_0802650C,
sub_0802653C,
};
const u8 gUnk_080CC234[] = {
0x3C, 0x1E, 0x1E, 0x1E,
0x1E, 0x0F, 0x0F, 0x0F,
0x04, 0x04, 0x04, 0x04,
0x04, 0x04, 0x0A, 0x0A,
0x0A, 0x0F, 0x0F, 0x0F,
0x1E, 0x1E, 0x2D, 0x0A,
0x5A, 0x1E, 0xFF,
};
const u8 gUnk_080CC24F[] = {
2, 2, 4, 4,
4, 6, 6, 8,
};
void (*const gUnk_080CC258[])(Entity*) = {
sub_08026774,
sub_080267D0,
sub_08026808,
};
void (*const gUnk_080CC264[])(Entity*) = {
sub_080268EC,
sub_08026914,
};
void (*const gUnk_080CC26C[])(Entity*) = {
sub_08026968,
sub_080269CC,
sub_08026BE8,
};
const u8 gUnk_080CC278[] = {
150, 180, 210, 250,
};
const u16 gUnk_080CC27C[] = {
0x80, 0x8, 0x100, 0x6,
0x80, 0x18, 0x100, 0x8,
0x180, 0x6, 0x100, 0x10,
0x0, 0x0, 0xA0, 0x18,
};
const u16 gUnk_080CC29C[] = {
0x80, 0x8, 0x100, 0x4,
0x80, 0xC, 0x80, 0x6,
0x200, 0x6, 0x100, 0xC,
0x0, 0x0, 0xA0, 0x14,
};
const u16 gUnk_080CC2BC[] = {
0x80, 0x8, 0x100, 0x0,
0x60, 0x2, 0x80, 0x2,
0x200, 0x6, 0x100, 0x8,
0x0, 0x0, 0xA0, 0x10,
};
const s8 gUnk_080CC2DC[] = {
-7, -9, -7,
};
// clang-format on

287
src/enemy/likeLike.c Normal file
View File

@ -0,0 +1,287 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
#include "textbox.h"
extern bool32 sub_080544B4(u32);
extern void sub_0807CAA0(u32, u32);
void sub_0802810C(Entity*);
void sub_080281A0(Entity*);
bool32 sub_080281E0(u32);
void sub_08028224(u32);
extern void (*const gUnk_080CC6FC[])(Entity*);
extern void (*const gUnk_080CC714[])(Entity*);
void LikeLike(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CC6FC);
SetChildOffset(this, 0, 1, -0x10);
}
void sub_08027D8C(Entity* this) {
gUnk_080CC714[this->action](this);
}
void sub_08027DA4(Entity* this) {
if (this->damageType == 1) {
this->action = 3;
this->flags &= ~0x80;
this->damageType = 0x8c;
} else {
if (this->action == 7) {
sub_0802810C(this);
} else if (this->bitfield & 0x80) {
u8 tmp = this->bitfield & ~0x80;
if (!tmp) {
this->action = 7;
this->actionDelay = 0x5f;
this->field_0xf = tmp;
this->flags2 &= 0xfc;
this->field_0x82.HALF.HI = gPlayerEntity.spritePriority.b1;
}
}
}
if (this->currentHealth == 0) {
this->actionDelay = 0x20;
}
if (this->field_0x43) {
sub_0804A9FC(this, 0x1c);
}
sub_0804AA30(this, gUnk_080CC6FC);
}
void sub_08027E40(Entity* this) {
if (this->actionDelay == 2 && this->field_0x80.HALF.LO != 0xff) {
sub_0805E3A0(this, 3);
sub_08028224(this->field_0x80.HALF.LO);
}
sub_0804A7D4(this);
}
void nullsub_139(Entity* this) {
/* ... */
}
void sub_08027E70(Entity* this) {
sub_0804A720(this);
switch (this->entityType.form) {
case 0:
this->action = 3;
this->spriteSettings.b.draw = 0;
this->flags = this->flags & 0x7f;
this->actionDelay = 0;
break;
case 1:
this->action = 1;
this->spriteSettings.b.draw = 1;
this->actionDelay = 8;
InitializeAnimation(this, 1);
break;
case 2:
this->action = 1;
this->spriteSettings.b.draw = 0;
this->actionDelay = 0;
this->damageType = 1;
InitializeAnimation(this, 0);
break;
}
this->direction = 0;
this->field_0x82.HALF.LO = 0;
this->animationState = 0;
this->field_0x82.HALF.HI = 0;
this->field_0x80.HALF.LO = 0xff;
}
void sub_08027EFC(Entity* this) {
if (this->damageType == 1)
return;
if (sub_08049FDC(this, 1)) {
if (!sub_08049FA0(this) && (Random() & 0x30)) {
this->direction = sub_08049EE4(this);
} else {
this->direction = this->field_0x82.HALF.LO;
}
if (--this->actionDelay == 0) {
this->direction = sub_08049F84(this, 1);
this->field_0x82.HALF.LO = this->direction;
this->actionDelay = 8;
}
ProcessMovement(this);
GetNextFrame(this);
} else {
this->action = 6;
this->flags &= ~0x80;
InitializeAnimation(this, 2);
}
}
void nullsub_12(Entity* this) {
/* ... */
}
void sub_08027F84(Entity* this) {
if (sub_08049FDC(this, 1)) {
this->action = 5;
this->spriteSettings.b.draw = 1;
InitializeAnimation(this, 0);
CreateDust(this);
}
}
void sub_08027FB4(Entity* this) {
if (--this->actionDelay == 0) {
this->action = 1;
this->actionDelay = 1;
this->flags2 |= 1;
}
GetNextFrame(this);
}
void sub_08027FE0(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 1) {
this->action = 1;
this->flags |= 0x80;
this->direction = sub_08049F84(this, 1);
this->actionDelay = 8;
this->spritePriority.b1 = 1;
InitializeAnimation(this, 1);
}
}
void sub_0802802C(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 1) {
this->action = 3;
this->spriteSettings.b.draw = 0;
this->direction = 0;
this->actionDelay = 0;
CreateDust(this);
}
}
void sub_0802805C(Entity* this) {
u8* tmp;
UpdateAnimationVariableFrames(this, 2);
if (sub_0807953C()) {
u32 tmp2 = Random();
u32 tmp3 = this->field_0xf + 1;
tmp3 += (tmp2 & 1);
this->field_0xf = tmp3;
}
if (this->field_0xf >= 0x19 || gUnk_02002A40.stats.health == 0) {
sub_0802810C(this);
} else {
ResetPlayer();
gPlayerState.field_0x1a[0] |= 0x80;
PositionRelative(this, &gPlayerEntity, 0, 0x10000);
tmp = GetSpriteSubEntryOffsetDataPointer((u16)this->spriteIndex, this->frameIndex);
gPlayerEntity.spriteOffsetX = tmp[0];
gPlayerEntity.spriteOffsetY = tmp[1];
gPlayerEntity.spritePriority.b1 = 0;
if (--this->actionDelay == 0) {
sub_080281A0(this);
}
if ((this->actionDelay & 3) == 0) {
EnqueueSFX(0x104);
}
}
}
#if NON_MATCHING
void sub_0802810C(Entity* this) {
gPlayerState.jumpStatus = 0x41;
gPlayerState.field_0xa = 0;
gPlayerState.flags.all &= 0xffffffef;
gPlayerEntity.flags |= 0x80;
gPlayerEntity.field_0x20 = 0x18000;
gPlayerEntity.hurtBlinkTime = -60;
gPlayerEntity.direction = gPlayerEntity.animationState << 2;
gPlayerEntity.spritePriority.b1 = this->field_0x82.HALF.HI;
gPlayerEntity.height.HALF.HI = gPlayerEntity.spriteOffsetY;
gPlayerEntity.spriteOffsetY = 0;
this->action = 4;
this->actionDelay = 0x50;
this->field_0xf = 0;
this->flags2 |= 2;
if (this->hurtBlinkTime == 0) {
this->hurtBlinkTime = -18;
}
}
#else
NAKED
void sub_0802810C(Entity* this) {
asm(".include \"asm/non_matching/likeLike/sub_0802810C.inc\"");
}
#endif
void sub_080281A0(Entity* this) {
this->field_0xf = 0x19;
if (sub_080281E0(0xe)) {
this->field_0x80.HALF.LO = 0xe;
TextboxNoOverlapFollow(0x578);
} else if (sub_080281E0(0xd)) {
this->field_0x80.HALF.LO = 0xd;
TextboxNoOverlapFollow(0x578);
} else {
ModHealth(-1);
}
}
bool32 sub_080281E0(u32 param_1) {
bool32 ret = FALSE;
if (GetInventoryValue(param_1) == 1) {
if (sub_080544B4(gUnk_02002A40.stats.itemOnA)) {
gUnk_02002A40.stats.itemOnA = 0;
}
if (sub_080544B4(gUnk_02002A40.stats.itemOnB)) {
gUnk_02002A40.stats.itemOnB = 0;
}
sub_0807CAA0(param_1, 0);
ret = TRUE;
}
return ret;
}
void sub_08028224(u32 param_1) {
sub_080A7C18(param_1, 0, 1);
TextboxNoOverlapFollow(0x579);
}
void (*const gUnk_080CC6FC[])(Entity *) = {
sub_08027D8C,
sub_08027DA4,
sub_08001324,
sub_08027E40,
sub_08001242,
nullsub_139,
};
void (*const gUnk_080CC714[])(Entity *) = {
sub_08027E70,
sub_08027EFC,
nullsub_12,
sub_08027F84,
sub_08027FB4,
sub_08027FE0,
sub_0802802C,
sub_0802805C,
};

View File

@ -10,7 +10,6 @@ extern u32 sub_0806F520();
extern void sub_0806F4E8();
extern void UpdateAnimationVariableFrames();
extern void sub_0804A720();
extern u32 Random();
extern Entity* sub_08049DF4(u32);
void Octorok_Pause();
@ -233,7 +232,10 @@ const u8 gOctorokSpitChanceModifier[] = {
};
const u8 gOctorokNutOffset[] = {
0, -3, 4, 0, 0, 2, -4, 0,
0, -3,
4, 0,
0, 2,
-4, 0,
};
const s8 gUnk_080CA17E[] = {

439
src/enemy/spearMoblin.c Normal file
View File

@ -0,0 +1,439 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
extern bool32 sub_0806FC80(Entity*, Entity*, u32);
extern Entity* sub_080A7EE0(u32);
extern Entity* sub_08049DF4(u32);
void sub_08028604(Entity*);
void sub_08028754(Entity*);
void sub_08028784(Entity*);
void sub_080287E0(Entity*);
void sub_08028728(Entity*);
bool32 sub_080286CC(Entity*);
bool32 sub_080288A4(Entity*);
void sub_08028858(Entity*);
void sub_080288C0(Entity*);
bool32 sub_08028828(u32, u32);
void sub_080287B4(Entity*);
extern void (*const gUnk_080CC790[])(Entity*);
extern void (*const gUnk_080CC7A8[])(Entity*);
extern const u8 gUnk_080CC7BC[];
extern const s8 gUnk_080CC7C0[];
extern const u8 gUnk_080CC7D0[];
extern const u16 gUnk_080CC7D8[];
extern const BoundingBox* const gUnk_080CC944[];
void SpearMoblin(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CC790);
SetChildOffset(this, 0, 1, -0x20);
if (this->attachedEntity && this->attachedEntity->next) {
CopyPosition(this, this->attachedEntity);
}
}
void sub_0802826C(Entity* this) {
gUnk_080CC7A8[this->action](this);
}
void sub_08028284(Entity* this) {
if (this->field_0x43 != 0)
sub_0804A9FC(this, 0x1c);
sub_0804AA30(this, gUnk_080CC790);
if (this->bitfield & 0x80) {
if (this->action != 4) {
sub_08028754(this);
} else {
if ((this->bitfield & 0x3f) == 0) {
this->field_0x7a.HALF.LO++;
this->field_0x80.HALF.HI = 0x16;
sub_08028784(this);
}
}
}
this->attachedEntity->hurtBlinkTime = this->hurtBlinkTime;
if (this->currentHealth == 0) {
this->nonPlanarMovement = 0;
this->field_0x82.HALF.LO = 0;
sub_080287E0(this);
DeleteEntity(this->attachedEntity);
this->attachedEntity = NULL;
}
}
void nullsub_13(Entity* this) {
/* ... */
}
void sub_08028314(Entity* this) {
Entity* pEVar2;
sub_0804A720(this);
this->action = 1;
this->animationState = 0;
this->field_0x7a.HALF.HI = 0;
this->field_0x80.HALF.LO = 0;
this->field_0x82.HALF.HI = 0;
this->field_0x80.HALF.HI = 0;
this->field_0x7a.HALF.LO = 0;
this->field_0x82.HALF.LO = 1;
if (this->actionDelay) {
this->animationState = this->entityType.parameter << 1;
this->actionDelay = 0x1e;
this->nonPlanarMovement = 0x80;
this->direction = this->animationState << 2;
sub_080287E0(this);
} else {
this->animationState = 0x10;
sub_08028604(this);
}
pEVar2 = sub_080A7EE0(3);
if (pEVar2 != NULL) {
pEVar2->parent = this;
this->attachedEntity = pEVar2;
}
}
void sub_08028378(Entity* this) {
if (this->field_0x80.HALF.HI != 0) {
this->field_0x80.HALF.HI--;
}
if (--this->actionDelay == 0) {
if (++this->field_0x80.HALF.LO >= 0x10) {
sub_08028728(this);
} else {
sub_08028604(this);
}
} else {
if (sub_080286CC(this)) {
this->field_0x7a.HALF.HI |= 1;
}
if (sub_080288A4(this)) {
sub_0800417E(this, this->collisions);
this->animationState = DirectionRoundUp(this->direction) >> 2;
this->field_0x82.HALF.HI++;
sub_080287E0(this);
}
}
if (this->field_0xf >= 0xc) {
if (this->field_0x7a.HALF.HI != 0) {
sub_08028754(this);
}
} else {
this->field_0xf++;
}
sub_08028858(this);
}
void sub_08028420(Entity* this) {
if (--this->actionDelay == 0) {
this->action = 3;
this->field_0x82.HALF.LO = 0;
this->field_0x80.HALF.LO = 0;
this->animationState = 0x10;
sub_08028604(this);
} else {
if (sub_080286CC(this)) {
this->field_0x7a.HALF.HI |= 1;
}
}
if (this->field_0xf >= 0xc) {
if (this->field_0x7a.HALF.HI != 0) {
sub_08028754(this);
}
} else {
this->field_0xf++;
}
sub_08028858(this);
}
void sub_08028488(Entity* this) {
if (--this->actionDelay == 0) {
switch (this->field_0x82.HALF.LO) {
case 3:
this->action = 4;
this->nonPlanarMovement = 0x180;
this->direction = sub_08049F84(this, 1);
EnqueueSFX(0x11e);
break;
case 2:
this->action = 2;
this->nonPlanarMovement = 0;
this->actionDelay = (Random() & 7) * 3 + 0x40;
break;
case 4:
this->direction = (this->direction + 0x10) & 0x18;
/* fallthrough */
case 1:
default:
this->action = 1;
this->field_0x82.HALF.LO = 1;
this->nonPlanarMovement = 0x80;
this->actionDelay = (Random() & 7) * 3 + 0x22;
break;
}
this->field_0xf = 0;
this->animationState = DirectionRoundUp(this->direction) >> 2;
sub_080287E0(this);
}
sub_08028858(this);
}
void sub_08028528(Entity* this) {
Entity* ent = sub_08049DF4(1);
const BoundingBox* box;
if (ent == NULL) {
this->field_0xf = 0;
sub_08028728(this);
} else {
sub_080288C0(this);
box = gUnk_080CC944[this->animationState >> 1];
this->boundingBox->unknown[0] = box->unknown[0];
this->boundingBox->unknown[1] = box->unknown[1];
this->boundingBox->unknown[6] = box->unknown[6];
this->boundingBox->unknown[7] = box->unknown[7];
if (this->field_0x7a.HALF.LO != 0) {
this->field_0x7a.HALF.LO = 0;
this->field_0x80.HALF.HI = 0x16;
sub_08028784(this);
} else {
if (++this->actionDelay == 0x20) {
u32 direction;
this->actionDelay = 0;
direction = GetFacingDirection(this, ent);
if (sub_08028828(this->direction, direction)) {
this->direction = direction;
}
}
if ((this->actionDelay & 7) == 0) {
EnqueueSFX(0xf0);
CreateFx(this, 2, 0x40);
}
if (++this->field_0x7a.HALF.HI == 0x80) {
this->field_0x7a.HALF.LO++;
}
}
if (0x20 < this->field_0x7a.HALF.HI) {
ProcessMovement(this);
}
GetNextFrame(this);
}
}
#if NON_MATCHING
void sub_08028604(Entity* this) {
this->field_0xf = 0;
if (this->field_0x82.HALF.LO == 1) {
this->actionDelay = gUnk_080CC7BC[Random() & 3];
this->nonPlanarMovement = 0x80;
if (sub_08049FA0(this) != 0) {
this->direction = gUnk_080CC7D0[Random() & 7] + 0x18 + this->direction & 0x18;
} else {
u32 iVar3 = sub_08049EE4(this);
u32 uVar1;
if (this->field_0x82.HALF.HI == '\0') {
uVar1 = gUnk_080CC7C0[Random() & 0xf];
} else {
uVar1 = gUnk_080CC7C0[Random() & 7];
this->actionDelay = this->actionDelay + 0x10;
this->field_0x82.HALF.HI--;
}
this->direction = iVar3 + uVar1 + 4U & 0x18;
}
} else {
this->actionDelay = 0xc;
this->nonPlanarMovement = 0;
}
if (this->direction >> 2 != this->animationState) {
this->animationState = this->direction >> 2;
sub_080287E0(this);
}
}
#else
NAKED
void sub_08028604(Entity* this) {
asm(".include \"asm/non_matching/spearMoblin/sub_08028604.inc\"");
}
#endif
bool32 sub_080286CC(Entity* this) {
if (this->field_0x80.HALF.HI == 0) {
Entity* ent = sub_08049DF4(1);
if (ent != NULL) {
if (this->field_0x82.HALF.LO == 2 && sub_0806FC80(this, ent, 0x30))
return TRUE;
if (sub_0806FC80(this, ent, 0x40) &&
DirectionRoundUp(GetFacingDirection(this, ent)) >> 2 == this->animationState)
return TRUE;
}
}
return FALSE;
}
void sub_08028728(Entity* this) {
this->animationState = DirectionRoundUp(this->direction) >> 2;
this->direction = this->animationState << 2;
this->field_0x82.HALF.HI >>= 1;
sub_080287B4(this);
this->field_0x82.HALF.LO = 2;
}
void sub_08028754(Entity* this) {
this->direction = sub_08049F84(this, 1);
this->animationState = DirectionRoundUp(this->direction) >> 2;
this->field_0x82.HALF.HI = 0;
sub_080287B4(this);
this->field_0x82.HALF.LO = 3;
}
void sub_08028784(Entity* this) {
this->animationState = DirectionRoundUp(this->direction) >> 2;
this->direction = this->animationState << 2;
this->field_0x82.HALF.HI = 0;
sub_080287B4(this);
this->actionDelay <<= 1;
this->field_0x82.HALF.LO = 4;
}
void sub_080287B4(Entity* this) {
this->action = 3;
this->actionDelay = 0x20;
this->field_0xf = 0;
this->field_0x80.HALF.LO = 0;
this->field_0x7a.HALF.HI = 0;
this->nonPlanarMovement = 0;
this->field_0x82.HALF.LO = 0;
sub_080287E0(this);
}
void sub_080287E0(Entity* this) {
u32 sprite = this->animationState >> 1;
switch (this->field_0x82.HALF.LO) {
case 0:
/* ... */
break;
case 1:
case 4:
sprite += 4;
break;
case 3:
sprite += 8;
break;
case 2:
sprite += 0xc;
break;
}
InitializeAnimation(this, sprite);
}
bool32 sub_08028828(u32 arg0, u32 arg1) {
if (DirectionRoundUp(arg1) == DirectionRoundUp(arg0)) {
u32 angle1 = (arg1 + 5) & 7;
u32 angle0 = (arg0 + 5) & 7;
if (angle1 < 3 && angle0 < 3)
return TRUE;
}
return FALSE;
}
void sub_08028858(Entity* this) {
const BoundingBox* box;
sub_080288C0(this);
box = gUnk_080CC944[this->animationState >> 1];
this->boundingBox->unknown[0] = box->unknown[0];
this->boundingBox->unknown[1] = box->unknown[1];
this->boundingBox->unknown[6] = box->unknown[6];
this->boundingBox->unknown[7] = box->unknown[7];
if (this->field_0x82.HALF.LO == 0) {
this->nonPlanarMovement = 0;
}
ProcessMovement(this);
GetNextFrame(this);
}
bool32 sub_080288A4(Entity* this) {
return (this->collisions & gUnk_080CC7D8[this->animationState >> 1]) != 0;
}
void sub_080288C0(Entity* this) {
Entity* ent = this->attachedEntity;
if (ent && (ent->bitfield & 0x80)) {
this->field_0x3e = ent->field_0x3e;
this->hurtBlinkTime = -ent->hurtBlinkTime;
this->field_0x46 = ent->field_0x46;
this->field_0x42 = ent->field_0x42;
ent->field_0x42 = 0;
}
}
// clang-format off
void (*const gUnk_080CC790[])(Entity*) = {
sub_0802826C,
sub_08028284,
sub_08001324,
sub_0804A7D4,
sub_08001242,
nullsub_13,
};
void (*const gUnk_080CC7A8[])(Entity*) = {
sub_08028314,
sub_08028378,
sub_08028420,
sub_08028488,
sub_08028528,
};
const u8 gUnk_080CC7BC[] = {
0x30, 0x60, 0x6C, 0x91,
};
const s8 gUnk_080CC7C0[] = {
0xF8, 0x0C,
0xF4, 0x08,
0x04, 0xFA,
0x06, 0xFC,
0x00, 0xFD,
0x01, 0x03,
0xFF, 0x02,
0x00, 0xFE,
};
const u8 gUnk_080CC7D0[] = {
0x08, 0x10,
0x08, 0x00,
0x10, 0x08,
0x10, 0x00,
};
const u16 gUnk_080CC7D8[] = {
0xE, 0xE000, 0xE0, 0xE00,
};
// clang-format on

View File

@ -2,16 +2,15 @@
#include "entity.h"
#include "player.h"
#include "structures.h"
#include "functions.h"
extern void (*gUnk_081140D4[])(Entity*);
extern u16 gUnk_081140CC[];
extern void sub_0805E3A0(Entity*, u32);
extern void sub_0806D0B0(Entity*);
extern void sub_0807DD64(Entity*);
extern void sub_0807DDAC(Entity*, u32);
extern void sub_0807DDE4(Entity*);
extern u32 Random(void);
extern void PlaySFX(u32);
extern void sub_0806D02C(Entity*);
extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32);

View File

@ -15,7 +15,6 @@ extern void (*gUnk_08111914[])(Entity*);
extern void (*gUnk_08111928[])(Entity*);
extern Dialog gUnk_08111938[];
extern void PlaySFX(u32);
extern u32 Random();
extern u32 UpdateFuseInteraction(Entity*);
extern PlayerState gPlayerState;

View File

@ -21,7 +21,6 @@ extern void sub_08060158(Entity*);
extern u32 CheckKinstoneFused(u32);
extern Entity* FindEntityInListBySubtype(u32, u32, u32);
extern void DeleteEntity(Entity*);
extern u32 Random(void);
extern void ModBombs(s32);
extern SpriteLoadData gUnk_0810A348;

View File

@ -6,7 +6,6 @@
extern void sub_08068780(Entity*);
extern void sub_08078778(Entity*);
extern u32 Random(void);
extern void sub_0807DD50(Entity*);
extern void sub_0806F118(Entity*);
extern void sub_0807DDAC(Entity*, u32);

View File

@ -8,7 +8,6 @@ extern u32 sub_0806F5A4(u32);
extern void sub_0806F118(Entity*);
extern Entity* CreateFx(Entity*, u32, u32);
extern void PlaySFX(u32);
extern u32 Random(void);
extern void sub_0807000C(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0807DD50(Entity*);

View File

@ -35,7 +35,6 @@ extern void sub_08062048(Entity*);
extern void sub_08078784(Entity*, u32);
extern void sub_08078778(Entity*);
extern u32 sub_0806F5B0(u32);
extern u32 Random(void);
extern void ResolveEntityOnTop(Entity*, Entity*);
extern void sub_08078850(Entity*, u32, u8, u32*);

View File

@ -3,6 +3,7 @@
#include "room.h"
#include "player.h"
#include "flags.h"
#include "functions.h"
extern void sub_0809F7BC(Entity*);
extern void PlaySFX(u32);
@ -13,7 +14,6 @@ extern void DeleteThisEntity();
extern u32 CheckRoomFlag(u32);
extern void sub_08078A90(u32);
extern void sub_08078B48(void);
extern u32 Random(void);
extern void sub_0806F69C(Entity*);
extern void (*gUnk_08124798[])(Entity*);
extern void (*gUnk_081247A0[])(Entity*);
@ -23,7 +23,6 @@ extern void PositionEntityOnTop(Entity*, Entity*);
extern void sub_0807BB68(u32*, u32, u32);
extern u8 gUnk_02034490;
extern u32 gScreenTransition;
extern void* gUnk_080DD750;
extern Entity gPlayerEntity;
extern PlayerState gPlayerState;
@ -62,7 +61,7 @@ void sub_0809F548(Entity* this) {
sub_0809F814((((this->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 63) |
(((this->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 63) << 6);
} else {
if ((gScreenTransition & 7) == 0) {
if ((gScreenTransition.frameCount & 7) == 0) {
sub_0809F7BC(this);
}
sub_0809F7F4(this);
@ -110,7 +109,7 @@ void sub_0809F61C(Entity* this) {
sub_0809F814((((this->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 63) |
(((this->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 63) << 6);
} else {
if ((gScreenTransition & 7) == 0) {
if ((gScreenTransition.frameCount & 7) == 0) {
sub_0809F7BC(this);
}
sub_0809F7F4(this);
@ -145,7 +144,7 @@ void sub_0809F700(Entity* this) {
this->actionDelay = (Random() & 30) + 8;
this->flags = this->flags | 12;
}
if ((gScreenTransition & 3) == 0) {
if ((gScreenTransition.frameCount & 3) == 0) {
uVar2 = Random();
this->spriteOffsetX = gUnk_081247C0[uVar2 & 7];
this->spriteOffsetY = gUnk_081247C0[uVar2 >> 4 & 7];

View File

@ -4,6 +4,7 @@
#include "screen.h"
#include "greatFairy.h"
#include "structures.h"
#include "functions.h"
enum {
BEHAVIORS,
@ -550,14 +551,14 @@ void sub_08087424(Entity* arg0, struct_08087424* arg1) {
void sub_0808747C(u32 arg0, u32 arg1) {
u32 iVar1;
iVar1 = FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0);
iVar1 = (u32)FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0);
if (iVar1 != 0) {
iVar1 = 1;
}
*(u32*)(arg1 + 0x14) = iVar1;
}
//clang-format off
// clang-format off
void (*const GreatFairy_Main[])(Entity*) = {
GreatFairy_CallBehavior,
GreatFairy_WingsCallBehavior,
@ -647,5 +648,4 @@ void (*const GreatFairy_Form2Behaviors[])(Entity*) = {
sub_08087264,
sub_0808727C
};
//clang-format on
// clang-format on

View File

@ -1,7 +1,6 @@
#include "global.h"
#include "entity.h"
extern u32 Random();
extern bool32 CheckIsDungeon();
extern void sub_080AE068(Entity*);
extern void LoadFixedGFX(Entity*, u32);

View File

@ -1,10 +1,8 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
extern void sub_08086A6C();
extern s32 sub_080044EC();
extern void ProcessMovement();
extern u32 Random(void);
extern void (*gUnk_081206C4[99])(Entity*);
@ -33,12 +31,10 @@ void sub_080869DC(Entity* ent) {
}
void sub_08086A28(Entity* ent) {
s32 iVar1;
if (ent->attachedEntity->next == NULL) {
ent->action = 2;
} else {
iVar1 = sub_080044EC(ent, 10240);
u32 iVar1 = sub_080044EC(ent, 10240);
if (iVar1 == 0) {
ent->action = 2;
}

View File

@ -1,7 +1,7 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
extern u32 Random(void);
extern void sub_0806F69C(Entity*);
extern void (*const gUnk_08121060[])(Entity*);