Merge pull request #80 from HookedBehemoth:beetle

decompile Beetle, DoorMimic and RockChuchu
This commit is contained in:
notyouraveragehooman
2020-08-29 17:54:59 -07:00
committed by GitHub
38 changed files with 1921 additions and 3451 deletions
+1 -1
View File
@@ -90,7 +90,7 @@ C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s $(DATA_ASM_SUBDIR)/**/*.s)
DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s)
-812
View File
@@ -1,812 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Beetle
Beetle: @ 0x08021758
push {lr}
ldr r1, _08021764 @ =gUnk_080CB590
bl EnemyFunctionHandler
pop {pc}
.align 2, 0
_08021764: .4byte gUnk_080CB590
thumb_func_start sub_08021768
sub_08021768: @ 0x08021768
push {lr}
ldr r2, _0802177C @ =gUnk_080CB5A8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0802177C: .4byte gUnk_080CB5A8
thumb_func_start sub_08021780
sub_08021780: @ 0x08021780
push {r4, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x80
beq _08021792
cmp r0, #0x93
beq _080217F4
b _080217FA
_08021792:
ldr r0, _080217A4 @ =gPlayerState
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #0x18
bne _080217A8
adds r0, r4, #0
bl sub_08021768
b _080217FA
.align 2, 0
_080217A4: .4byte gPlayerState
_080217A8:
movs r1, #0
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0xb4
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
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]
ldr r0, _080217EC @ =gPlayerEntity
adds r1, r4, #0
bl CopyPositionAndSpriteOffset
ldr r0, _080217F0 @ =0x0000FFFF
strh r0, [r4, #0x36]
adds r1, r4, #0
adds r1, #0x87
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
movs r1, #6
bl InitializeAnimation
b _080217FA
.align 2, 0
_080217EC: .4byte gPlayerEntity
_080217F0: .4byte 0x0000FFFF
_080217F4:
adds r0, r4, #0
bl sub_08021768
_080217FA:
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
cmp r1, #0
bne _08021808
subs r0, #3
strb r1, [r0]
_08021808:
ldr r1, _08021814 @ =gUnk_080CB590
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08021814: .4byte gUnk_080CB590
thumb_func_start sub_08021818
sub_08021818: @ 0x08021818
push {lr}
adds r3, r0, #0
ldrb r0, [r3, #0xa]
cmp r0, #0
bne _0802182A
adds r0, r3, #0
bl sub_0804A7D4
b _08021844
_0802182A:
ldr r2, [r3, #0x50]
cmp r2, #0
beq _0802183A
ldrb r0, [r2, #0xf]
subs r0, #1
movs r1, #0
strb r0, [r2, #0xf]
str r1, [r3, #0x50]
_0802183A:
adds r0, r3, #0
movs r1, #0xf0
movs r2, #0
bl CreateDeathFx
_08021844:
pop {pc}
.align 2, 0
thumb_func_start sub_08021848
sub_08021848: @ 0x08021848
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
adds r1, r0, #0
cmp r1, #0
beq _0802186C
ldr r0, _08021868 @ =gUnk_080CB5C8
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _0802187A
.align 2, 0
_08021868: .4byte gUnk_080CB5C8
_0802186C:
movs r0, #3
strb r0, [r4, #0xc]
strh r1, [r4, #0x36]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
_0802187A:
pop {r4, pc}
thumb_func_start sub_0802187C
sub_0802187C: @ 0x0802187C
movs r1, #2
strb r1, [r0, #0xd]
bx lr
.align 2, 0
thumb_func_start nullsub_130
nullsub_130: @ 0x08021884
bx lr
.align 2, 0
thumb_func_start sub_08021888
sub_08021888: @ 0x08021888
push {r4, lr}
adds r4, r0, #0
bl sub_0806F3E4
cmp r0, #0
beq _0802189A
adds r0, r4, #0
bl sub_08021818
_0802189A:
pop {r4, pc}
thumb_func_start sub_0802189C
sub_0802189C: @ 0x0802189C
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r0, #1
strb r0, [r4, #0xc]
strb r0, [r4, #0x1c]
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
pop {r4, pc}
thumb_func_start sub_080218B4
sub_080218B4: @ 0x080218B4
push {lr}
ldr r2, _080218C8 @ =gUnk_080CB5D4
ldrb r1, [r0, #0xb]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080218C8: .4byte gUnk_080CB5D4
thumb_func_start sub_080218CC
sub_080218CC: @ 0x080218CC
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xd]
cmp r0, #0
bne _08021916
movs r2, #1
movs r0, #1
strb r0, [r5, #0xd]
ldrb r1, [r5, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r5, #0x18]
adds r0, r5, #0
movs r1, #1
bl sub_08049F84
adds r4, r0, #0
bl Random
movs r1, #0x10
eors r4, r1
ldr r2, _08021980 @ =gUnk_080CB5DC
movs r1, #7
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
adds r0, r0, r4
movs r1, #0x1f
ands r0, r1
strb r0, [r5, #0x15]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r5, #0x24]
movs r0, #0x90
lsls r0, r0, #9
str r0, [r5, #0x20]
_08021916:
adds r0, r5, #0
bl GetNextFrame
adds r2, r5, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r6, #1
adds r0, r6, #0
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _08021948
adds r0, r5, #0
bl sub_080AEFE0
movs r1, #0xe0
lsls r1, r1, #5
adds r0, r5, #0
bl sub_080044EC
cmp r0, #0
bne _08021948
adds r0, r5, #0
adds r0, #0x59
strb r6, [r0]
_08021948:
ldrb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0802197C
movs r0, #2
strb r0, [r5, #0xc]
bl Random
movs r1, #0x38
ands r0, r1
adds r0, #8
strb r0, [r5, #0xe]
movs r0, #1
strb r0, [r5, #0xf]
ldrb r1, [r5, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r5, #0x10]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r5, #0x24]
adds r0, r5, #0
movs r1, #0
bl InitializeAnimation
_0802197C:
pop {r4, r5, r6, pc}
.align 2, 0
_08021980: .4byte gUnk_080CB5DC
thumb_func_start sub_08021984
sub_08021984: @ 0x08021984
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
cmp r0, #0
bne _080219C2
movs r0, #1
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r0, [r4, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x18]
ldr r0, _08021A08 @ =0x0000FF80
strh r0, [r4, #0x36]
ldrb r2, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r4, #0x1b]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x1b]
ldr r0, _08021A0C @ =0x0000012D
bl sub_08004488
_080219C2:
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08021A04
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x10
strb r0, [r4, #0xe]
movs r2, #1
movs r0, #1
strb r0, [r4, #0xf]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x86
movs r0, #0x3c
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
_08021A04:
pop {r4, pc}
.align 2, 0
_08021A08: .4byte 0x0000FF80
_08021A0C: .4byte 0x0000012D
thumb_func_start sub_08021A10
sub_08021A10: @ 0x08021A10
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
ldr r1, _08021A60 @ =gPlayerEntity
adds r0, r4, #0
movs r2, #0x78
movs r3, #0x50
bl sub_080041A0
cmp r0, #0
beq _08021A5E
adds r0, r4, #0
bl sub_08021D00
cmp r0, #0
bne _08021A5E
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08021A5E
movs r0, #3
strb r0, [r4, #0xc]
bl Random
movs r1, #0x3f
ands r0, r1
adds r0, #0x1e
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x15]
adds r0, r4, #0
bl sub_08021D44
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
_08021A5E:
pop {r4, pc}
.align 2, 0
_08021A60: .4byte gPlayerEntity
thumb_func_start sub_08021A64
sub_08021A64: @ 0x08021A64
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08021D00
cmp r0, #0
bne _08021AD4
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r5, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _08021A96
movs r0, #2
strb r0, [r4, #0xc]
bl Random
movs r1, #0x1f
ands r0, r1
adds r0, #0x1e
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08021A96:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
ands r0, r5
cmp r0, #0
bne _08021AC8
movs r0, #8
strb r0, [r4, #0xf]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
adds r1, r0, #0
cmp r1, #0xff
bne _08021AC2
movs r0, #7
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
b _08021AD4
_08021AC2:
adds r0, r4, #0
bl sub_08021D44
_08021AC8:
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl GetNextFrame
_08021AD4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08021AD8
sub_08021AD8: @ 0x08021AD8
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 _08021B3A
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08021B1E
movs r0, #0
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
cmp r0, #0xff
bne _08021B16
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
b _08021B60
_08021B16:
strb r0, [r4, #0x15]
movs r0, #0x7c
bl sub_08004488
_08021B1E:
adds r0, r4, #0
bl sub_080AEFE0
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08021B3A
adds r1, r4, #0
adds r1, #0x59
movs r0, #1
strb r0, [r1]
_08021B3A:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08021B60
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x14
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x86
movs r0, #0x3c
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08021B60:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08021B64
sub_08021B64: @ 0x08021B64
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, _08021B88 @ =gPlayerState
ldr r1, [r0, #0x30]
movs r2, #4
ands r1, r2
adds r6, r0, #0
cmp r1, #0
beq _08021B8C
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
str r1, [r4, #0x34]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
b _08021C4E
.align 2, 0
_08021B88: .4byte gPlayerState
_08021B8C:
movs r5, #1
adds r0, r6, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #0xb
beq _08021BBA
cmp r0, #0x14
beq _08021BBA
bl sub_0807953C
cmp r0, #0
beq _08021BAE
ldrb r1, [r4, #0xa]
lsls r0, r1, #1
adds r0, r0, r1
adds r5, r0, #0
adds r5, #8
_08021BAE:
ldrb r0, [r4, #0xe]
subs r5, r0, r5
cmp r5, #0
bge _08021BB8
movs r5, #0
_08021BB8:
strb r5, [r4, #0xe]
_08021BBA:
ldr r0, [r6, #0x30]
movs r1, #0x88
lsls r1, r1, #1
ands r0, r1
cmp r0, #0
beq _08021BC8
movs r5, #0
_08021BC8:
cmp r5, #0
bne _08021C04
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #0x80
lsls r0, r0, #9
str r0, [r4, #0x20]
adds r0, r4, #0
adds r0, #0x87
strb r5, [r0]
ldr r2, _08021BEC @ =gPlayerEntity
ldrb r1, [r2, #0x15]
adds r0, r1, #0
cmp r0, #0xff
beq _08021BF0
movs r0, #0x10
b _08021BF6
.align 2, 0
_08021BEC: .4byte gPlayerEntity
_08021BF0:
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
movs r1, #0x10
_08021BF6:
eors r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #5
bl InitializeAnimation
b _08021C4E
_08021C04:
ldrb r1, [r6, #0x1a]
movs r0, #0x80
orrs r0, r1
strb r0, [r6, #0x1a]
adds r1, r6, #0
adds r1, #0x80
ldrh r0, [r1]
subs r0, #0x50
strh r0, [r1]
adds r1, #0x2a
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r0, _08021C50 @ =gPlayerEntity
adds r1, r4, #0
bl CopyPositionAndSpriteOffset
ldr r2, _08021C54 @ =gUnk_080CB5E4
ldrb r1, [r4, #0xf]
adds r0, r1, #1
strb r0, [r4, #0xf]
movs r0, #0xe
ands r0, r1
lsrs r0, r0, #1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
adds r0, r4, #0
bl GetNextFrame
_08021C4E:
pop {r4, r5, r6, pc}
.align 2, 0
_08021C50: .4byte gPlayerEntity
_08021C54: .4byte gUnk_080CB5E4
thumb_func_start sub_08021C58
sub_08021C58: @ 0x08021C58
push {r4, r5, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r5, #1
adds r0, r5, #0
ands r0, r1
cmp r0, #0
beq _08021C8A
adds r0, r4, #0
bl sub_080AEFE0
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08021C8A
adds r0, r4, #0
adds r0, #0x59
strb r5, [r0]
_08021C8A:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08021CCC
movs r0, #2
strb r0, [r4, #0xc]
movs r2, #0x3c
strb r2, [r4, #0xe]
movs r0, #1
strb r0, [r4, #0xf]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r3, r4, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r3]
adds r0, r4, #0
adds r0, #0x86
strb r2, [r0]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08021CCC:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08021CD0
sub_08021CD0: @ 0x08021CD0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _08021CE6
adds r0, r4, #0
bl GetNextFrame
_08021CE6:
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
cmp r0, #0xff
beq _08021CFE
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
_08021CFE:
pop {r4, pc}
thumb_func_start sub_08021D00
sub_08021D00: @ 0x08021D00
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x86
ldrb r0, [r1]
cmp r0, #0
beq _08021D16
subs r0, #1
strb r0, [r1]
movs r0, #0
b _08021D40
_08021D16:
adds r0, r4, #0
movs r1, #1
movs r2, #0x10
bl sub_08049F64
cmp r0, #0
bne _08021D28
movs r0, #0
b _08021D40
_08021D28:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #1
strb r0, [r4, #0xe]
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r4, #0x20]
adds r0, r4, #0
movs r1, #4
bl InitializeAnimation
movs r0, #1
_08021D40:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08021D44
sub_08021D44: @ 0x08021D44
push {lr}
adds r2, r0, #0
adds r1, #4
movs r0, #0x18
ands r1, r0
strb r1, [r2, #0x15]
movs r0, #8
ands r1, r0
cmp r1, #0
beq _08021D5E
movs r0, #0xc0
lsls r0, r0, #1
b _08021D60
_08021D5E:
movs r0, #0xc0
_08021D60:
strh r0, [r2, #0x24]
pop {pc}
-346
View File
@@ -1,346 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start CuccoChickAggr
CuccoChickAggr: @ 0x08022918
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _08022930 @ =gUnk_080CBB64
bl GetNextFunction
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_08022930: .4byte gUnk_080CBB64
thumb_func_start sub_08022934
sub_08022934: @ 0x08022934
push {lr}
ldr r2, _08022948 @ =gUnk_080CBB7C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08022948: .4byte gUnk_080CBB7C
thumb_func_start sub_0802294C
sub_0802294C: @ 0x0802294C
push {lr}
ldr r1, _08022958 @ =gUnk_080CBB64
bl sub_0804AA30
pop {pc}
.align 2, 0
_08022958: .4byte gUnk_080CBB64
thumb_func_start nullsub_132
nullsub_132: @ 0x0802295C
bx lr
.align 2, 0
thumb_func_start sub_08022960
sub_08022960: @ 0x08022960
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
adds r0, r4, #0
bl sub_08022A88
pop {r4, pc}
thumb_func_start sub_08022970
sub_08022970: @ 0x08022970
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 _08022986
adds r0, r1, #0
bl sub_08022AA4
_08022986:
pop {pc}
thumb_func_start sub_08022988
sub_08022988: @ 0x08022988
push {r4, lr}
adds r4, r0, #0
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
bne _080229A6
adds r0, r4, #0
bl sub_08022B20
cmp r0, #0
beq _080229A6
adds r0, r4, #0
bl sub_08022B0C
b _080229F6
_080229A6:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _080229C6
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _080229F6
movs r0, #1
strb r0, [r4, #0x1e]
movs r0, #0x80
lsls r0, r0, #9
str r0, [r4, #0x20]
movs r0, #0xd6
bl sub_08004488
_080229C6:
adds r0, r4, #0
bl sub_080AEF88
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
adds r1, r0, #0
cmp r1, #0
bne _080229F6
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080229F0
adds r0, r4, #0
bl sub_08022A88
b _080229F6
_080229F0:
movs r0, #4
strb r0, [r4, #0xf]
strb r1, [r4, #0x1e]
_080229F6:
pop {r4, pc}
thumb_func_start sub_080229F8
sub_080229F8: @ 0x080229F8
push {r4, lr}
adds r4, r0, #0
movs r1, #0xa0
lsls r1, r1, #6
bl sub_08003FC4
cmp r0, #0
bne _08022A3C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _08022A30
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #6
strb r0, [r4, #0xe]
movs r0, #8
strb r0, [r4, #0xf]
strb r1, [r4, #0x1e]
movs r0, #0xc0
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_08022B44
b _08022A3C
_08022A30:
movs r0, #0x80
lsls r0, r0, #9
str r0, [r4, #0x20]
movs r0, #0xd6
bl sub_08004488
_08022A3C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08022A40
sub_08022A40: @ 0x08022A40
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08022A58
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08022A86
movs r0, #1
strb r0, [r4, #0x1e]
_08022A58:
adds r0, r4, #0
bl sub_080AEF88
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08022A86
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08022A80
adds r0, r4, #0
bl sub_08022A88
b _08022A86
_08022A80:
adds r0, r4, #0
bl sub_08022B44
_08022A86:
pop {r4, pc}
thumb_func_start sub_08022A88
sub_08022A88: @ 0x08022A88
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #0
movs r0, #1
strb r0, [r4, #0xc]
bl Random
movs r1, #0xf
ands r0, r1
adds r0, #8
strb r0, [r4, #0xe]
strb r5, [r4, #0x1e]
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08022AA4
sub_08022AA4: @ 0x08022AA4
push {r4, r5, lr}
adds r4, r0, #0
bl Random
adds r5, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
movs r1, #3
adds r0, r5, #0
ands r0, r1
adds r0, #1
strb r0, [r4, #0xe]
movs r0, #1
strb r0, [r4, #0xf]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _08022AE0
lsrs r0, r5, #8
movs r1, #3
ands r0, r1
cmp r0, #0
beq _08022AE0
adds r0, r4, #0
bl sub_08049EE4
b _08022AE6
_08022AE0:
lsrs r0, r5, #0x10
movs r1, #0x1f
ands r0, r1
_08022AE6:
strb r0, [r4, #0x15]
ldrb r1, [r4, #0x15]
movs r0, #0xf
ands r0, r1
cmp r0, #0
beq _08022B08
lsrs r1, r1, #4
movs r0, #1
eors r1, r0
ands r1, r0
lsls r1, r1, #6
ldrb r2, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
_08022B08:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08022B0C
sub_08022B0C: @ 0x08022B0C
push {lr}
movs r1, #3
strb r1, [r0, #0xc]
strb r1, [r0, #0xe]
movs r1, #8
strb r1, [r0, #0xf]
bl sub_08022B44
pop {pc}
.align 2, 0
thumb_func_start sub_08022B20
sub_08022B20: @ 0x08022B20
push {r4, lr}
adds r4, r0, #0
movs r0, #2
bl sub_08049DF4
cmp r0, #0
beq _08022B40
ldr r1, _08022B3C @ =gPlayerEntity
adds r0, r4, #0
movs r2, #0x24
movs r3, #0x24
bl sub_080041A0
b _08022B42
.align 2, 0
_08022B3C: .4byte gPlayerEntity
_08022B40:
movs r0, #0
_08022B42:
pop {r4, pc}
thumb_func_start sub_08022B44
sub_08022B44: @ 0x08022B44
push {r4, lr}
adds r4, r0, #0
movs r0, #0xc0
lsls r0, r0, #8
str r0, [r4, #0x20]
ldr r1, _08022B84 @ =gPlayerEntity
adds r0, r4, #0
bl GetFacingDirection
adds r1, r0, #0
strb r1, [r4, #0x15]
movs r0, #0xf
ands r0, r1
cmp r0, #0
beq _08022B7A
lsls r1, r1, #0x18
lsrs r1, r1, #0x1c
movs r0, #1
eors r1, r0
ands r1, r0
lsls r1, r1, #6
ldrb r2, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
_08022B7A:
movs r0, #0xd6
bl sub_08004488
pop {r4, pc}
.align 2, 0
_08022B84: .4byte gPlayerEntity
-343
View File
@@ -1,343 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start DoorMimic
DoorMimic: @ 0x08021FA8
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _08021FD4 @ =gUnk_080CB734
bl GetNextFunction
lsls r0, r0, #2
adds r0, r0, r5
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldr r1, _08021FD8 @ =gUnk_080CB8A4
ldrb r0, [r4, #0xb]
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r4, #0x1e]
ldr r0, [r0]
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, [r1]
str r0, [r4, #0x48]
pop {r4, r5, pc}
.align 2, 0
_08021FD4: .4byte gUnk_080CB734
_08021FD8: .4byte gUnk_080CB8A4
thumb_func_start sub_08021FDC
sub_08021FDC: @ 0x08021FDC
push {lr}
ldr r2, _08021FF0 @ =gUnk_080CB74C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08021FF0: .4byte gUnk_080CB74C
thumb_func_start sub_08021FF4
sub_08021FF4: @ 0x08021FF4
push {lr}
ldr r1, _08022000 @ =gUnk_080CB734
bl sub_0804AA30
pop {pc}
.align 2, 0
_08022000: .4byte gUnk_080CB734
thumb_func_start sub_08022004
sub_08022004: @ 0x08022004
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x7e
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
adds r0, r4, #0
movs r1, #5
movs r2, #0
bl CreateFx
adds r0, r4, #0
bl sub_08049CF4
bl DeleteThisEntity
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08022034
sub_08022034: @ 0x08022034
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xa]
movs r0, #3
ands r0, r1
strb r0, [r4, #0xb]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
ldr r2, _08022098 @ =gUnk_080CB764
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x2e]
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x78
strh r0, [r1]
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, #1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x32]
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x7a
strh r0, [r1]
ldrb r1, [r4, #0xb]
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_080221C0
pop {r4, pc}
.align 2, 0
_08022098: .4byte gUnk_080CB764
thumb_func_start sub_0802209C
sub_0802209C: @ 0x0802209C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _080220D2
adds r0, r4, #0
adds r0, #0x78
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x7a
ldrh r1, [r1]
movs r2, #0x10
movs r3, #0x10
bl sub_0806FBFC
cmp r0, #0
beq _080220D6
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x12
strb r0, [r4, #0xe]
ldrb r1, [r4, #0xb]
adds r1, #4
adds r0, r4, #0
bl InitializeAnimation
b _080220D6
_080220D2:
subs r0, #1
strb r0, [r4, #0xe]
_080220D6:
pop {r4, pc}
thumb_func_start sub_080220D8
sub_080220D8: @ 0x080220D8
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 _080220EC
movs r0, #3
strb r0, [r1, #0xc]
_080220EC:
pop {pc}
.align 2, 0
thumb_func_start sub_080220F0
sub_080220F0: @ 0x080220F0
push {r4, r5, r6, lr}
adds r5, r0, #0
bl GetNextFrame
adds r0, r5, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08022160
movs r1, #0
movs r0, #4
strb r0, [r5, #0xc]
movs r0, #0x78
strb r0, [r5, #0xe]
adds r0, r5, #0
adds r0, #0x44
strb r1, [r0]
ldrb r1, [r5, #0xb]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _0802215C @ =gUnk_080CB76C
adds r4, r0, r1
movs r6, #0
_08022124:
adds r0, r5, #0
movs r1, #0x11
movs r2, #0
bl CreateFx
adds r1, r0, #0
cmp r1, #0
beq _08022148
movs r0, #0
ldrsb r0, [r4, r0]
ldrh r2, [r1, #0x2e]
adds r0, r0, r2
strh r0, [r1, #0x2e]
movs r0, #1
ldrsb r0, [r4, r0]
ldrh r2, [r1, #0x32]
adds r0, r0, r2
strh r0, [r1, #0x32]
_08022148:
adds r6, #1
adds r4, #2
cmp r6, #5
bls _08022124
movs r0, #0x82
lsls r0, r0, #1
bl sub_08004488
b _08022170
.align 2, 0
_0802215C: .4byte gUnk_080CB76C
_08022160:
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08022170
adds r1, r5, #0
adds r1, #0x44
movs r0, #4
strb r0, [r1]
_08022170:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08022174
sub_08022174: @ 0x08022174
push {r4, lr}
adds r4, r0, #0
bl sub_0800445C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08022196
movs r0, #5
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xb]
adds r1, #8
adds r0, r4, #0
bl InitializeAnimation
_08022196:
pop {r4, pc}
thumb_func_start sub_08022198
sub_08022198: @ 0x08022198
push {r4, lr}
adds r4, r0, #0
bl sub_0800445C
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080221BC
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x5a
strb r0, [r4, #0xe]
_080221BC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080221C0
sub_080221C0: @ 0x080221C0
push {r4, r5, r6, lr}
adds r6, r0, #0
movs r0, #0x2e
ldrsh r4, [r6, r0]
ldr r1, _08022220 @ =gRoomControls
ldrh r0, [r1, #6]
subs r4, r4, r0
asrs r4, r4, #4
movs r2, #0x3f
ands r4, r2
movs r3, #0x32
ldrsh r0, [r6, r3]
ldrh r1, [r1, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
ldr r1, _08022224 @ =gUnk_080B4488
ldrb r0, [r6, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r4, r4, r0
adds r0, r6, #0
adds r0, #0x7e
strh r4, [r0]
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
adds r0, r4, #0
bl sub_080001DA
adds r1, r6, #0
adds r1, #0x7c
strh r0, [r1]
ldr r1, _08022228 @ =gUnk_080CB79C
ldrb r0, [r6, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
ldrb r2, [r5]
adds r1, r4, #0
bl SetTile
pop {r4, r5, r6, pc}
.align 2, 0
_08022220: .4byte gRoomControls
_08022224: .4byte gUnk_080B4488
_08022228: .4byte gUnk_080CB79C
-100
View File
@@ -1,100 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start EnemyE
EnemyE: @ 0x08022FA4
push {lr}
ldr r1, _08022FB0 @ =gUnk_080CBBC8
bl EnemyFunctionHandler
pop {pc}
.align 2, 0
_08022FB0: .4byte gUnk_080CBBC8
thumb_func_start sub_08022FB4
sub_08022FB4: @ 0x08022FB4
push {lr}
ldr r2, _08022FC8 @ =gUnk_080CBBDC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08022FC8: .4byte gUnk_080CBBDC
thumb_func_start nullsub_133
nullsub_133: @ 0x08022FCC
bx lr
.align 2, 0
thumb_func_start sub_08022FD0
sub_08022FD0: @ 0x08022FD0
push {lr}
movs r3, #1
movs r1, #1
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #5
ands r1, r2
orrs r1, r3
strb r1, [r0, #0x18]
movs r1, #0
bl sub_08023000
pop {pc}
.align 2, 0
thumb_func_start sub_08022FEC
sub_08022FEC: @ 0x08022FEC
push {lr}
movs r1, #0x80
bl sub_08023000
pop {pc}
.align 2, 0
thumb_func_start sub_08022FF8
sub_08022FF8: @ 0x08022FF8
bx lr
.align 2, 0
thumb_func_start sub_08022FFC
sub_08022FFC: @ 0x08022FFC
bx lr
.align 2, 0
thumb_func_start sub_08023000
sub_08023000: @ 0x08023000
push {r4, lr}
adds r4, r0, #0
cmp r1, #0x80
bne _0802300E
bl UpdateAnimationSingleFrame
b _08023014
_0802300E:
adds r0, r4, #0
bl InitAnimationForceUpdate
_08023014:
movs r2, #0x80
adds r0, r4, #0
adds r0, #0x5b
ldrb r0, [r0]
cmp r0, #0x40
bne _08023022
rsbs r2, r2, #0
_08023022:
ldrb r0, [r4, #0x19]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x19]
adds r0, r4, #0
adds r1, r2, #0
movs r2, #0x80
movs r3, #0
bl sub_0805EC9C
pop {r4, pc}
-558
View File
@@ -1,558 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Moldorm
Moldorm: @ 0x08022B88
push {lr}
ldr r2, _08022B9C @ =gUnk_080CBB90
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08022B9C: .4byte gUnk_080CBB90
thumb_func_start sub_08022BA0
sub_08022BA0: @ 0x08022BA0
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x79
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x74
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
ldr r1, _08022BD0 @ =gUnk_080CBBA0
adds r0, r4, #0
bl EnemyFunctionHandler
adds r0, r4, #0
bl sub_08022EAC
pop {r4, pc}
.align 2, 0
_08022BD0: .4byte gUnk_080CBBA0
thumb_func_start sub_08022BD4
sub_08022BD4: @ 0x08022BD4
push {lr}
ldr r2, _08022BE8 @ =gUnk_080CBBB4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08022BE8: .4byte gUnk_080CBBB4
thumb_func_start sub_08022BEC
sub_08022BEC: @ 0x08022BEC
push {lr}
adds r2, r0, #0
movs r0, #0x7a
adds r0, r0, r2
mov ip, r0
adds r3, r2, #0
adds r3, #0x45
ldrb r0, [r0]
ldrb r1, [r3]
cmp r0, r1
beq _08022C0A
adds r1, r2, #0
adds r1, #0x7b
movs r0, #0x1e
strb r0, [r1]
_08022C0A:
ldrb r0, [r3]
mov r1, ip
strb r0, [r1]
movs r0, #1
strb r0, [r2, #0xe]
adds r0, r2, #0
adds r0, #0x3e
ldrb r0, [r0]
strb r0, [r2, #0x15]
ldrb r0, [r2, #0x15]
adds r0, #2
movs r1, #0x1c
ands r0, r1
asrs r0, r0, #2
strb r0, [r2, #0x14]
strb r0, [r2, #0x1e]
ldr r0, [r2, #0x54]
adds r3, r2, #0
adds r3, #0x3d
ldrb r1, [r3]
adds r0, #0x3d
strb r1, [r0]
ldr r0, [r2, #0x7c]
ldrb r1, [r3]
adds r0, #0x3d
strb r1, [r0]
adds r0, r2, #0
adds r0, #0x80
ldr r0, [r0]
ldrb r1, [r3]
adds r0, #0x3d
strb r1, [r0]
ldr r1, _08022C54 @ =gUnk_080CBBA0
adds r0, r2, #0
bl sub_0804AA30
pop {pc}
.align 2, 0
_08022C54: .4byte gUnk_080CBBA0
thumb_func_start sub_08022C58
sub_08022C58: @ 0x08022C58
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
ldrb r1, [r7, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r7, #0x10]
ldr r0, _08022D3C @ =gEntCount
ldrb r0, [r0]
cmp r0, #0x44
bhi _08022D34
movs r0, #0xd
movs r1, #1
bl CreateEnemy
mov sb, r0
str r0, [r7, #0x54]
mov r2, sb
adds r2, #0x29
ldrb r1, [r2]
movs r4, #8
rsbs r4, r4, #0
adds r0, r4, #0
ands r0, r1
movs r1, #5
mov r8, r1
mov r1, r8
orrs r0, r1
strb r0, [r2]
mov r0, sb
str r7, [r0, #0x50]
adds r0, r7, #0
mov r1, sb
bl CopyPosition
movs r0, #0xd
movs r1, #2
bl CreateEnemy
adds r6, r0, #0
mov r1, sb
str r6, [r1, #0x54]
adds r2, r6, #0
adds r2, #0x29
ldrb r1, [r2]
adds r0, r4, #0
ands r0, r1
mov r1, r8
orrs r0, r1
strb r0, [r2]
str r7, [r6, #0x50]
adds r0, r7, #0
adds r1, r6, #0
bl CopyPosition
movs r0, #0xd
movs r1, #3
bl CreateEnemy
adds r5, r0, #0
str r5, [r6, #0x54]
adds r1, r5, #0
adds r1, #0x29
ldrb r0, [r1]
ands r4, r0
mov r0, r8
orrs r4, r0
strb r4, [r1]
str r7, [r5, #0x50]
adds r0, r7, #0
adds r1, r5, #0
bl CopyPosition
adds r0, r7, #0
bl sub_0804A720
movs r0, #1
strb r0, [r7, #0xc]
strb r0, [r7, #0xe]
strb r0, [r7, #0xf]
ldrb r0, [r7, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r7, #0x10]
str r7, [r7, #0x50]
mov r1, sb
str r1, [r7, #0x54]
str r6, [r7, #0x7c]
adds r0, r7, #0
adds r0, #0x80
str r5, [r0]
bl Random
movs r1, #0x1f
ands r0, r1
strb r0, [r7, #0x15]
ldrb r0, [r7, #0x15]
adds r0, #2
movs r1, #0x1c
ands r0, r1
asrs r0, r0, #2
strb r0, [r7, #0x14]
strb r0, [r7, #0x1e]
adds r0, r7, #0
adds r0, #0x45
ldrb r1, [r0]
adds r0, #0x35
strb r1, [r0]
_08022D34:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08022D3C: .4byte gEntCount
thumb_func_start sub_08022D40
sub_08022D40: @ 0x08022D40
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x7b
ldrb r1, [r2]
cmp r1, #0
beq _08022D66
adds r0, r1, #0
adds r0, #0xff
strb r0, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08022D8E
ldrb r0, [r4, #0x14]
adds r0, #1
movs r1, #7
ands r0, r1
b _08022D8A
_08022D66:
adds r0, r4, #0
bl sub_08022F14
adds r0, r4, #0
bl sub_080AEF88
ldrh r0, [r4, #0x2a]
cmp r0, #0
beq _08022D8E
adds r1, r0, #0
adds r0, r4, #0
bl sub_0800417E
ldrb r0, [r4, #0x15]
adds r0, #2
movs r1, #0x1c
ands r0, r1
asrs r0, r0, #2
_08022D8A:
strb r0, [r4, #0x14]
strb r0, [r4, #0x1e]
_08022D8E:
pop {r4, pc}
thumb_func_start sub_08022D90
sub_08022D90: @ 0x08022D90
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, [r5, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
beq _08022DE0
ldr r1, _08022DDC @ =gUnk_080CBBBC
ldrb r0, [r5, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
ldr r4, [r5, #0x50]
ldrb r2, [r4, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r4, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r5, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r5, #0x19]
adds r4, #0x38
ldrb r1, [r4]
adds r0, r5, #0
adds r0, #0x38
strb r1, [r0]
b _08022DE6
.align 2, 0
_08022DDC: .4byte gUnk_080CBBBC
_08022DE0:
adds r0, r5, #0
bl DeleteEntity
_08022DE6:
pop {r4, r5, pc}
thumb_func_start sub_08022DE8
sub_08022DE8: @ 0x08022DE8
push {lr}
adds r3, r0, #0
movs r0, #1
strb r0, [r3, #0xc]
adds r0, r3, #0
adds r0, #0x7c
movs r1, #0x88
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #1
strb r1, [r0]
ldr r0, [r3, #0x50]
ldrb r0, [r0, #0x14]
strb r0, [r3, #0x14]
adds r2, r3, #0
adds r2, #0x84
ldrb r1, [r3, #0x14]
lsls r0, r1, #4
adds r0, r0, r1
lsls r1, r0, #8
adds r0, r0, r1
lsls r1, r0, #0x10
adds r0, r0, r1
str r0, [r2]
ldrb r0, [r3, #0xa]
cmp r0, #3
beq _08022E38
adds r0, #7
b _08022E3C
_08022E38:
ldrb r0, [r3, #0x14]
adds r0, #0xa
_08022E3C:
strb r0, [r3, #0x1e]
pop {pc}
thumb_func_start sub_08022E40
sub_08022E40: @ 0x08022E40
push {r4, r5, lr}
adds r4, r0, #0
ldrh r1, [r4, #0x2e]
adds r0, #0x74
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
ldr r2, [r4, #0x50]
adds r2, #0x79
ldrb r0, [r2]
adds r0, #1
movs r3, #7
ands r0, r3
adds r0, #0x7c
adds r0, r4, r0
ldrb r1, [r0]
movs r0, #0xf
ands r0, r1
subs r0, #8
lsrs r1, r1, #4
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r5, [r4, #0x2e]
adds r0, r0, r5
strh r0, [r4, #0x2e]
subs r1, #8
ldrh r0, [r4, #0x32]
adds r1, r1, r0
strh r1, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x84
ldrb r0, [r2]
adds r0, #1
ands r0, r3
lsls r0, r0, #2
ldr r1, [r1]
lsrs r1, r0
movs r0, #7
ands r1, r0
strb r1, [r4, #0x14]
ldrb r0, [r4, #0xa]
cmp r0, #3
bne _08022EA2
adds r0, r1, #0
adds r0, #0xa
strb r0, [r4, #0x1e]
b _08022EA8
_08022EA2:
adds r0, r4, #0
bl sub_08022EAC
_08022EA8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08022EAC
sub_08022EAC: @ 0x08022EAC
push {r4, r5, lr}
mov ip, r0
ldr r1, [r0, #0x54]
cmp r1, #0
beq _08022F12
ldr r0, [r0, #0x50]
adds r0, #0x79
ldrb r0, [r0]
movs r4, #7
adds r3, r4, #0
ands r3, r0
adds r3, r3, r1
adds r3, #0x7c
mov r0, ip
ldrh r1, [r0, #0x2e]
adds r0, #0x74
ldrb r0, [r0]
subs r1, r1, r0
adds r1, #8
movs r5, #0xf
ands r1, r5
mov r2, ip
ldrh r0, [r2, #0x32]
adds r2, #0x76
ldrb r2, [r2]
subs r0, r0, r2
adds r0, #8
ands r0, r5
lsls r0, r0, #4
adds r1, r1, r0
strb r1, [r3]
mov r1, ip
ldr r0, [r1, #0x50]
adds r0, #0x79
ldrb r1, [r0]
adds r0, r4, #0
ands r0, r1
lsls r0, r0, #2
mov r2, ip
ldrb r1, [r2, #0x14]
ands r4, r1
lsls r4, r0
movs r2, #0xf
lsls r2, r0
mov r0, ip
ldr r1, [r0, #0x54]
adds r1, #0x84
ldr r0, [r1]
bics r0, r2
orrs r4, r0
str r4, [r1]
_08022F12:
pop {r4, r5, pc}
thumb_func_start sub_08022F14
sub_08022F14: @ 0x08022F14
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08049FA0
cmp r0, #0
bne _08022F4E
adds r0, r4, #0
bl sub_08049EE4
ldrb r1, [r4, #0x15]
subs r2, r0, r1
movs r1, #0x1f
ands r2, r1
adds r0, r2, #4
ands r0, r1
cmp r0, #8
bls _08022F4E
movs r0, #8
strb r0, [r4, #0xf]
cmp r2, #0xf
bhi _08022F46
adds r1, r4, #0
adds r1, #0x78
movs r0, #1
b _08022F4C
_08022F46:
adds r1, r4, #0
adds r1, #0x78
movs r0, #0xff
_08022F4C:
strb r0, [r1]
_08022F4E:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _08022F9E
movs r0, #4
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
ands r0, r1
adds r5, r4, #0
adds r5, #0x78
cmp r0, #0
bne _08022F84
movs r0, #8
strb r0, [r4, #0xf]
bl Random
ldr r2, _08022FA0 @ =gUnk_080CBBC4
movs r1, #1
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
strb r0, [r5]
_08022F84:
ldrb r0, [r5]
ldrb r1, [r4, #0x15]
adds r0, r0, r1
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
adds r0, #2
movs r1, #0x1c
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
strb r0, [r4, #0x1e]
_08022F9E:
pop {r4, r5, pc}
.align 2, 0
_08022FA0: .4byte gUnk_080CBBC4
+62
View File
@@ -0,0 +1,62 @@
.syntax unified
.text
push {r4, r5, lr}
adds r4, r0, #0
ldrh r1, [r4, #0x2e]
adds r0, #0x74
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
ldr r2, [r4, #0x50]
adds r2, #0x79
ldrb r0, [r2]
adds r0, #1
movs r3, #7
ands r0, r3
adds r0, #0x7c
adds r0, r4, r0
ldrb r1, [r0]
movs r0, #0xf
ands r0, r1
subs r0, #8
lsrs r1, r1, #4
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r5, [r4, #0x2e]
adds r0, r0, r5
strh r0, [r4, #0x2e]
subs r1, #8
ldrh r0, [r4, #0x32]
adds r1, r1, r0
strh r1, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x84
ldrb r0, [r2]
adds r0, #1
ands r0, r3
lsls r0, r0, #2
ldr r1, [r1]
lsrs r1, r0
movs r0, #7
ands r1, r0
strb r1, [r4, #0x14]
ldrb r0, [r4, #0xa]
cmp r0, #3
bne _08022EA2
adds r0, r1, #0
adds r0, #0xa
strb r0, [r4, #0x1e]
b _08022EA8
_08022EA2:
adds r0, r4, #0
bl sub_08022EAC
_08022EA8:
pop {r4, r5, pc}
.align 2, 0
.syntax divided
+60
View File
@@ -0,0 +1,60 @@
.syntax unified
.text
push {r4, r5, lr}
mov ip, r0
ldr r1, [r0, #0x54]
cmp r1, #0
beq _08022F12
ldr r0, [r0, #0x50]
adds r0, #0x79
ldrb r0, [r0]
movs r4, #7
adds r3, r4, #0
ands r3, r0
adds r3, r3, r1
adds r3, #0x7c
mov r0, ip
ldrh r1, [r0, #0x2e]
adds r0, #0x74
ldrb r0, [r0]
subs r1, r1, r0
adds r1, #8
movs r5, #0xf
ands r1, r5
mov r2, ip
ldrh r0, [r2, #0x32]
adds r2, #0x76
ldrb r2, [r2]
subs r0, r0, r2
adds r0, #8
ands r0, r5
lsls r0, r0, #4
adds r1, r1, r0
strb r1, [r3]
mov r1, ip
ldr r0, [r1, #0x50]
adds r0, #0x79
ldrb r1, [r0]
adds r0, r4, #0
ands r0, r1
lsls r0, r0, #2
mov r2, ip
ldrb r1, [r2, #0x14]
ands r4, r1
lsls r4, r0
movs r2, #0xf
lsls r2, r0
mov r0, ip
ldr r1, [r0, #0x54]
adds r1, #0x84
ldr r0, [r1]
bics r0, r2
orrs r4, r0
str r4, [r1]
_08022F12:
pop {r4, r5, pc}
.syntax divided
-237
View File
@@ -1,237 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start RockChuchu
RockChuchu: @ 0x0802222C
push {lr}
ldr r1, _08022238 @ =gUnk_080CB948
bl EnemyFunctionHandler
pop {pc}
.align 2, 0
_08022238: .4byte gUnk_080CB948
thumb_func_start sub_0802223C
sub_0802223C: @ 0x0802223C
push {lr}
ldr r2, _08022250 @ =gUnk_080CB960
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08022250: .4byte gUnk_080CB960
thumb_func_start sub_08022254
sub_08022254: @ 0x08022254
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _08022344
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
subs r0, #4
cmp r0, #0x18
bhi _08022356
lsls r0, r0, #2
ldr r1, _0802227C @ =_08022280
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802227C: .4byte _08022280
_08022280: @ jump table
.4byte _080222E4 @ case 0
.4byte _080222E4 @ case 1
.4byte _080222E4 @ case 2
.4byte _08022356 @ case 3
.4byte _080222E4 @ case 4
.4byte _080222E4 @ case 5
.4byte _080222E4 @ case 6
.4byte _080222E4 @ case 7
.4byte _080222E4 @ case 8
.4byte _080222E4 @ case 9
.4byte _08022356 @ case 10
.4byte _08022356 @ case 11
.4byte _080222E4 @ case 12
.4byte _080222E4 @ case 13
.4byte _080222E4 @ case 14
.4byte _08022356 @ case 15
.4byte _08022356 @ case 16
.4byte _08022356 @ case 17
.4byte _080222F2 @ case 18
.4byte _08022356 @ case 19
.4byte _080222E4 @ case 20
.4byte _080222E4 @ case 21
.4byte _080222E4 @ case 22
.4byte _08022356 @ case 23
.4byte _080222F2 @ case 24
_080222E4:
ldr r0, _08022340 @ =gPlayerState
adds r0, #0xac
ldrh r1, [r0]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _08022356
_080222F2:
adds r0, r4, #0
movs r1, #4
movs r2, #0
bl CreateFx
movs r0, #1
movs r1, #1
bl CreateEnemy
adds r5, r0, #0
cmp r5, #0
beq _08022356
movs r0, #1
strb r0, [r5, #0xb]
adds r1, r5, #0
adds r1, #0x3d
movs r0, #0xf8
strb r0, [r1]
adds r0, r4, #0
adds r1, r5, #0
bl sub_0804A4E4
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
strb r0, [r4, #0x15]
str r5, [r4, #0x54]
b _08022356
.align 2, 0
_08022340: .4byte gPlayerState
_08022344:
adds r0, r4, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x94
beq _08022356
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
_08022356:
ldr r1, _08022360 @ =gUnk_080CB948
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_08022360: .4byte gUnk_080CB948
thumb_func_start nullsub_131
nullsub_131: @ 0x08022364
bx lr
.align 2, 0
thumb_func_start sub_08022368
sub_08022368: @ 0x08022368
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r0, #1
strb r0, [r4, #0xc]
bl Random
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08022390
sub_08022390: @ 0x08022390
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _080223D4
ldrb r1, [r4, #0xe]
adds r0, r1, #1
strb r0, [r4, #0xe]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _080223C0
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
bl Random
movs r1, #4
ands r0, r1
strb r0, [r4, #0xf]
_080223C0:
ldrb r0, [r4, #0xf]
cmp r0, #0
bne _080223CE
adds r0, r4, #0
bl sub_080AEF88
b _080223DA
_080223CE:
subs r0, #1
strb r0, [r4, #0xf]
b _080223DA
_080223D4:
bl Random
strb r0, [r4, #0xe]
_080223DA:
adds r0, r4, #0
bl GetNextFrame
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080223E4
sub_080223E4: @ 0x080223E4
push {lr}
adds r3, r0, #0
ldr r2, [r3, #0x54]
cmp r2, #0
beq _0802240A
adds r1, r2, #0
adds r1, #0x41
movs r0, #0x94
strb r0, [r1]
subs r1, #4
movs r0, #0x10
strb r0, [r1]
adds r1, #5
movs r0, #0xc
strb r0, [r1]
ldrb r1, [r3, #0x15]
adds r0, r2, #0
adds r0, #0x3e
strb r1, [r0]
_0802240A:
adds r0, r3, #0
bl DeleteEntity
pop {pc}
.align 2, 0
-646
View File
@@ -1,646 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start SpinyChuchu
SpinyChuchu: @ 0x08022414
push {r4, lr}
adds r4, r0, #0
ldr r1, _08022430 @ =gUnk_080CBA28
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
_08022430: .4byte gUnk_080CBA28
thumb_func_start sub_08022434
sub_08022434: @ 0x08022434
push {lr}
ldr r2, _08022448 @ =gUnk_080CBA40
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08022448: .4byte gUnk_080CBA40
thumb_func_start sub_0802244C
sub_0802244C: @ 0x0802244C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x45
ldrb r0, [r5]
cmp r0, #0
bne _0802245C
b _08022582
_0802245C:
adds r0, r4, #0
adds r0, #0x3f
ldrb r1, [r0]
adds r6, r0, #0
cmp r1, #0x65
bne _08022522
adds r0, #2
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
subs r0, #2
cmp r0, #0x18
bhi _08022540
lsls r0, r0, #2
ldr r1, _08022480 @ =_08022484
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08022480: .4byte _08022484
_08022484: @ jump table
.4byte _080224E8 @ case 0
.4byte _080224E8 @ case 1
.4byte _08022540 @ case 2
.4byte _08022540 @ case 3
.4byte _08022540 @ case 4
.4byte _08022540 @ case 5
.4byte _08022508 @ case 6
.4byte _08022508 @ case 7
.4byte _08022508 @ case 8
.4byte _08022508 @ case 9
.4byte _08022508 @ case 10
.4byte _08022540 @ case 11
.4byte _08022540 @ case 12
.4byte _08022540 @ case 13
.4byte _08022540 @ case 14
.4byte _08022540 @ case 15
.4byte _08022540 @ case 16
.4byte _08022540 @ case 17
.4byte _08022540 @ case 18
.4byte _08022540 @ case 19
.4byte _08022508 @ case 20
.4byte _08022540 @ case 21
.4byte _08022508 @ case 22
.4byte _08022508 @ case 23
.4byte _08022508 @ case 24
_080224E8:
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xf]
movs r0, #0x5c
strb r0, [r6]
ldr r0, _08022504 @ =gUnk_080FD468
str r0, [r4, #0x48]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
b _08022540
.align 2, 0
_08022504: .4byte gUnk_080FD468
_08022508:
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0x5c
strb r0, [r6]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
b _08022540
_08022522:
adds r0, r4, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x94
bne _08022540
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
movs r0, #5
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
_08022540:
adds r0, r4, #0
adds r0, #0x80
adds r1, r4, #0
adds r1, #0x45
ldrb r2, [r0]
adds r5, r1, #0
adds r7, r0, #0
ldrb r0, [r5]
cmp r2, r0
beq _08022566
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0x5c
strb r0, [r6]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
b _0802258E
_08022566:
ldrb r0, [r4, #0xc]
cmp r0, #3
bne _0802258E
movs r0, #4
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
movs r0, #0xca
lsls r0, r0, #1
bl sub_08004488
b _0802258E
_08022582:
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
adds r7, r4, #0
adds r7, #0x80
_0802258E:
ldrb r0, [r5]
strb r0, [r7]
ldr r1, _0802259C @ =gUnk_080CBA28
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0802259C: .4byte gUnk_080CBA28
thumb_func_start sub_080225A0
sub_080225A0: @ 0x080225A0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #1
bne _080225B2
adds r0, r4, #0
bl GetNextFrame
_080225B2:
adds r0, r4, #0
bl sub_08001318
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080225BC
sub_080225BC: @ 0x080225BC
push {r4, lr}
adds r4, r0, #0
movs r1, #0xc0
lsls r1, r1, #5
bl sub_08003FC4
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080225DE
adds r0, r4, #0
bl sub_0804A7D4
b _080225E4
_080225DE:
adds r0, r4, #0
bl GetNextFrame
_080225E4:
pop {r4, pc}
.align 2, 0
thumb_func_start nullsub_9
nullsub_9: @ 0x080225E8
bx lr
.align 2, 0
thumb_func_start sub_080225EC
sub_080225EC: @ 0x080225EC
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
adds r0, #0x3b
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x81
movs r0, #0x5a
strb r0, [r1]
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _0802261A
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
b _0802264C
_0802261A:
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r2, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r4, #0x1b]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x1b]
ldr r0, _08022650 @ =0x0000FF80
strh r0, [r4, #0x36]
adds r0, r4, #0
movs r1, #6
bl InitializeAnimation
_0802264C:
pop {r4, pc}
.align 2, 0
_08022650: .4byte 0x0000FF80
thumb_func_start sub_08022654
sub_08022654: @ 0x08022654
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
cmp r0, #1
beq _0802268C
cmp r0, #1
bgt _08022668
cmp r0, #0
beq _0802266E
b _080226E4
_08022668:
cmp r0, #2
beq _080226BE
b _080226E4
_0802266E:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _080226E4
movs r0, #1
strb r0, [r4, #0xd]
ldr r0, _080226E8 @ =0x0000012D
bl PlaySFX
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_0802268C:
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _080226E4
movs r0, #2
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
subs r0, #6
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #5
bl InitializeAnimation
movs r0, #0x7d
bl sub_08004488
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
_080226BE:
adds r0, r4, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080226E4
movs r0, #3
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x65
strb r0, [r1]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
_080226E4:
pop {r4, pc}
.align 2, 0
_080226E8: .4byte 0x0000012D
thumb_func_start sub_080226EC
sub_080226EC: @ 0x080226EC
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08022776
adds r0, r4, #0
bl sub_080228CC
cmp r0, #0
beq _0802271A
movs r0, #3
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x65
strb r0, [r1]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
b _0802277C
_0802271A:
adds r0, r4, #0
bl sub_080228F0
cmp r0, #0
beq _08022758
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #0x90
lsls r0, r0, #9
str r0, [r4, #0x20]
movs r0, #0xa0
lsls r0, r0, #1
strh r0, [r4, #0x24]
ldr r0, _08022754 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl GetFacingDirection
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x5a
strb r0, [r1]
adds r0, r4, #0
movs r1, #4
bl InitializeAnimation
b _0802277C
.align 2, 0
_08022754: .4byte gUnk_020000B0
_08022758:
ldrb r1, [r4, #0xe]
adds r0, r1, #1
strb r0, [r4, #0xe]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _08022770
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
_08022770:
adds r0, r4, #0
bl sub_080AEF88
_08022776:
adds r0, r4, #0
bl GetNextFrame
_0802277C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08022780
sub_08022780: @ 0x08022780
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080227AA
movs r0, #4
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
movs r0, #0xca
lsls r0, r0, #1
bl sub_08004488
_080227AA:
pop {r4, pc}
thumb_func_start sub_080227AC
sub_080227AC: @ 0x080227AC
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 _080227CC
ldr r0, _080227C8 @ =gUnk_080FD470
b _080227CE
.align 2, 0
_080227C8: .4byte gUnk_080FD470
_080227CC:
ldr r0, _08022814 @ =gUnk_080FD468
_080227CE:
str r0, [r4, #0x48]
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r3, #2
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _080227EE
movs r0, #0xfd
ands r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x5c
strb r0, [r1]
_080227EE:
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08022812
strb r3, [r4, #0xc]
bl Random
ldr r2, _08022818 @ =gUnk_080CBA60
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
strb r0, [r4, #0xf]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08022812:
pop {r4, pc}
.align 2, 0
_08022814: .4byte gUnk_080FD468
_08022818: .4byte gUnk_080CBA60
thumb_func_start sub_0802281C
sub_0802281C: @ 0x0802281C
push {r4, lr}
adds r4, r0, #0
movs r1, #0xc0
lsls r1, r1, #5
bl sub_08003FC4
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08022852
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x20
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_0804AA1C
_08022852:
pop {r4, pc}
thumb_func_start sub_08022854
sub_08022854: @ 0x08022854
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 _08022898
adds r0, r4, #0
bl sub_080AEFE0
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08022898
movs r0, #7
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x5c
strb r0, [r1]
adds r0, r4, #0
movs r1, #5
bl InitializeAnimation
movs r0, #0x7d
bl sub_08004488
_08022898:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0802289C
sub_0802289C: @ 0x0802289C
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080228CA
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x20
strh r0, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x81
movs r0, #0x78
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_080228CA:
pop {r4, pc}
thumb_func_start sub_080228CC
sub_080228CC: @ 0x080228CC
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xf]
cmp r0, #0
bne _080228E8
adds r0, r1, #0
movs r1, #1
movs r2, #0x28
bl sub_08049F64
cmp r0, #0
beq _080228EC
movs r0, #1
b _080228EE
_080228E8:
subs r0, #1
strb r0, [r1, #0xf]
_080228EC:
movs r0, #0
_080228EE:
pop {pc}
thumb_func_start sub_080228F0
sub_080228F0: @ 0x080228F0
push {lr}
adds r1, r0, #0
adds r2, r1, #0
adds r2, #0x81
ldrb r0, [r2]
cmp r0, #0
bne _08022910
adds r0, r1, #0
movs r1, #1
movs r2, #0x40
bl sub_08049F64
cmp r0, #0
beq _08022914
movs r0, #1
b _08022916
_08022910:
subs r0, #1
strb r0, [r2]
_08022914:
movs r0, #0
_08022916:
pop {pc}
+28
View File
@@ -0,0 +1,28 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CB5EC:: @ 080CB5EC
.incbin "baserom.gba", 0x0CB5EC, 0x0000014
gUnk_080CB600:: @ 080CB600
.incbin "baserom.gba", 0x0CB600, 0x000001C
gUnk_080CB61C:: @ 080CB61C
.incbin "baserom.gba", 0x0CB61C, 0x0000011
gUnk_080CB62D:: @ 080CB62D
.incbin "baserom.gba", 0x0CB62D, 0x0000018
gUnk_080CB645:: @ 080CB645
.incbin "baserom.gba", 0x0CB645, 0x0000018
gUnk_080CB65D:: @ 080CB65D
.incbin "baserom.gba", 0x0CB65D, 0x0000014
gUnk_080CB671:: @ 080CB671
.incbin "baserom.gba", 0x0CB671, 0x000000B
gUnk_080CB67C:: @ 080CB67C
.incbin "baserom.gba", 0x0CB67C, 0x0000020
+25
View File
@@ -0,0 +1,25 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CB8B4:: @ 080CB8B4
.incbin "baserom.gba", 0x0CB8B4, 0x0000005
gUnk_080CB8B9:: @ 080CB8B9
.incbin "baserom.gba", 0x0CB8B9, 0x0000005
gUnk_080CB8BE:: @ 080CB8BE
.incbin "baserom.gba", 0x0CB8BE, 0x0000019
gUnk_080CB8D7:: @ 080CB8D7
.incbin "baserom.gba", 0x0CB8D7, 0x0000019
gUnk_080CB8F0:: @ 080CB8F0
.incbin "baserom.gba", 0x0CB8F0, 0x0000011
gUnk_080CB901:: @ 080CB901
.incbin "baserom.gba", 0x0CB901, 0x0000013
gUnk_080CB914:: @ 080CB914
.incbin "baserom.gba", 0x0CB914, 0x0000034
+7
View File
@@ -0,0 +1,7 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CBBEC:: @ 080CBBEC
.incbin "baserom.gba", 0x0CBBEC, 0x000004C
+13
View File
@@ -0,0 +1,13 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CB706:: @ 080CB706
.incbin "baserom.gba", 0x0CB706, 0x0000018
gUnk_080CB71E:: @ 080CB71E
.incbin "baserom.gba", 0x0CB71E, 0x000000A
gUnk_080CB728:: @ 080CB728
.incbin "baserom.gba", 0x0CB728, 0x000000C
+16
View File
@@ -0,0 +1,16 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CB96C:: @ 080CB96C
.incbin "baserom.gba", 0x0CB96C, 0x0000029
gUnk_080CB995:: @ 080CB995
.incbin "baserom.gba", 0x0CB995, 0x0000041
gUnk_080CB9D6:: @ 080CB9D6
.incbin "baserom.gba", 0x0CB9D6, 0x0000042
gUnk_080CBA18:: @ 080CBA18
.incbin "baserom.gba", 0x0CBA18, 0x0000010
+28
View File
@@ -0,0 +1,28 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
gUnk_080CBA64:: @ 080CBA64
.incbin "baserom.gba", 0x0CBA64, 0x0000041
gUnk_080CBAA5:: @ 080CBAA5
.incbin "baserom.gba", 0x0CBAA5, 0x0000040
gUnk_080CBAE5:: @ 080CBAE5
.incbin "baserom.gba", 0x0CBAE5, 0x0000018
gUnk_080CBAFD:: @ 080CBAFD
.incbin "baserom.gba", 0x0CBAFD, 0x0000024
gUnk_080CBB21:: @ 080CBB21
.incbin "baserom.gba", 0x0CBB21, 0x0000011
gUnk_080CBB32:: @ 080CBB32
.incbin "baserom.gba", 0x0CBB32, 0x000000D
gUnk_080CBB3F:: @ 080CBB3F
.incbin "baserom.gba", 0x0CBB3F, 0x0000005
gUnk_080CBB44:: @ 080CBB44
.incbin "baserom.gba", 0x0CBB44, 0x0000020
@@ -2,268 +2,6 @@
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_080CB570:: @ 080CB570
.incbin "baserom.gba", 0x0CB570, 0x0000018
gUnk_080CB588:: @ 080CB588
.incbin "baserom.gba", 0x0CB588, 0x0000008
gUnk_080CB590:: @ 080CB590
.incbin "baserom.gba", 0x0CB590, 0x0000018
gUnk_080CB5A8:: @ 080CB5A8
.incbin "baserom.gba", 0x0CB5A8, 0x0000020
gUnk_080CB5C8:: @ 080CB5C8
.incbin "baserom.gba", 0x0CB5C8, 0x000000C
gUnk_080CB5D4:: @ 080CB5D4
.incbin "baserom.gba", 0x0CB5D4, 0x0000008
gUnk_080CB5DC:: @ 080CB5DC
.incbin "baserom.gba", 0x0CB5DC, 0x0000008
gUnk_080CB5E4:: @ 080CB5E4
.incbin "baserom.gba", 0x0CB5E4, 0x0000008
gUnk_080CB5EC:: @ 080CB5EC
.incbin "baserom.gba", 0x0CB5EC, 0x0000014
gUnk_080CB600:: @ 080CB600
.incbin "baserom.gba", 0x0CB600, 0x000001C
gUnk_080CB61C:: @ 080CB61C
.incbin "baserom.gba", 0x0CB61C, 0x0000011
gUnk_080CB62D:: @ 080CB62D
.incbin "baserom.gba", 0x0CB62D, 0x0000018
gUnk_080CB645:: @ 080CB645
.incbin "baserom.gba", 0x0CB645, 0x0000018
gUnk_080CB65D:: @ 080CB65D
.incbin "baserom.gba", 0x0CB65D, 0x0000014
gUnk_080CB671:: @ 080CB671
.incbin "baserom.gba", 0x0CB671, 0x000000B
gUnk_080CB67C:: @ 080CB67C
.incbin "baserom.gba", 0x0CB67C, 0x0000020
gUnk_080CB69C:: @ 080CB69C
.incbin "baserom.gba", 0x0CB69C, 0x0000018
gUnk_080CB6B4:: @ 080CB6B4
.incbin "baserom.gba", 0x0CB6B4, 0x0000010
gUnk_080CB6C4:: @ 080CB6C4
.incbin "baserom.gba", 0x0CB6C4, 0x000000C
gUnk_080CB6D0:: @ 080CB6D0
.incbin "baserom.gba", 0x0CB6D0, 0x0000006
gUnk_080CB6D6:: @ 080CB6D6
.incbin "baserom.gba", 0x0CB6D6, 0x0000020
gUnk_080CB6F6:: @ 080CB6F6
.incbin "baserom.gba", 0x0CB6F6, 0x0000010
gUnk_080CB706:: @ 080CB706
.incbin "baserom.gba", 0x0CB706, 0x0000018
gUnk_080CB71E:: @ 080CB71E
.incbin "baserom.gba", 0x0CB71E, 0x000000A
gUnk_080CB728:: @ 080CB728
.incbin "baserom.gba", 0x0CB728, 0x000000C
gUnk_080CB734:: @ 080CB734
.incbin "baserom.gba", 0x0CB734, 0x0000018
gUnk_080CB74C:: @ 080CB74C
.incbin "baserom.gba", 0x0CB74C, 0x0000018
gUnk_080CB764:: @ 080CB764
.incbin "baserom.gba", 0x0CB764, 0x0000008
gUnk_080CB76C:: @ 080CB76C
.incbin "baserom.gba", 0x0CB76C, 0x0000030
gUnk_080CB79C:: @ 080CB79C
.incbin "baserom.gba", 0x0CB79C, 0x0000008
gUnk_080CB7A4:: @ 080CB7A4
.incbin "baserom.gba", 0x0CB7A4, 0x0000008
gUnk_080CB7AC:: @ 080CB7AC
.incbin "baserom.gba", 0x0CB7AC, 0x0000008
gUnk_080CB7B4:: @ 080CB7B4
.incbin "baserom.gba", 0x0CB7B4, 0x0000008
gUnk_080CB7BC:: @ 080CB7BC
.incbin "baserom.gba", 0x0CB7BC, 0x0000008
gUnk_080CB7C4:: @ 080CB7C4
.incbin "baserom.gba", 0x0CB7C4, 0x0000008
gUnk_080CB7CC:: @ 080CB7CC
.incbin "baserom.gba", 0x0CB7CC, 0x0000008
gUnk_080CB7D4:: @ 080CB7D4
.incbin "baserom.gba", 0x0CB7D4, 0x0000008
gUnk_080CB7DC:: @ 080CB7DC
.incbin "baserom.gba", 0x0CB7DC, 0x0000008
gUnk_080CB7E4:: @ 080CB7E4
.incbin "baserom.gba", 0x0CB7E4, 0x0000008
gUnk_080CB7EC:: @ 080CB7EC
.incbin "baserom.gba", 0x0CB7EC, 0x0000008
gUnk_080CB7F4:: @ 080CB7F4
.incbin "baserom.gba", 0x0CB7F4, 0x0000030
gUnk_080CB824:: @ 080CB824
.incbin "baserom.gba", 0x0CB824, 0x0000008
gUnk_080CB82C:: @ 080CB82C
.incbin "baserom.gba", 0x0CB82C, 0x0000008
gUnk_080CB834:: @ 080CB834
.incbin "baserom.gba", 0x0CB834, 0x0000008
gUnk_080CB83C:: @ 080CB83C
.incbin "baserom.gba", 0x0CB83C, 0x0000008
gUnk_080CB844:: @ 080CB844
.incbin "baserom.gba", 0x0CB844, 0x0000008
gUnk_080CB84C:: @ 080CB84C
.incbin "baserom.gba", 0x0CB84C, 0x0000008
gUnk_080CB854:: @ 080CB854
.incbin "baserom.gba", 0x0CB854, 0x0000008
gUnk_080CB85C:: @ 080CB85C
.incbin "baserom.gba", 0x0CB85C, 0x0000008
gUnk_080CB864:: @ 080CB864
.incbin "baserom.gba", 0x0CB864, 0x0000008
gUnk_080CB86C:: @ 080CB86C
.incbin "baserom.gba", 0x0CB86C, 0x0000008
gUnk_080CB874:: @ 080CB874
.incbin "baserom.gba", 0x0CB874, 0x0000030
gUnk_080CB8A4:: @ 080CB8A4
.incbin "baserom.gba", 0x0CB8A4, 0x0000010
gUnk_080CB8B4:: @ 080CB8B4
.incbin "baserom.gba", 0x0CB8B4, 0x0000005
gUnk_080CB8B9:: @ 080CB8B9
.incbin "baserom.gba", 0x0CB8B9, 0x0000005
gUnk_080CB8BE:: @ 080CB8BE
.incbin "baserom.gba", 0x0CB8BE, 0x0000019
gUnk_080CB8D7:: @ 080CB8D7
.incbin "baserom.gba", 0x0CB8D7, 0x0000019
gUnk_080CB8F0:: @ 080CB8F0
.incbin "baserom.gba", 0x0CB8F0, 0x0000011
gUnk_080CB901:: @ 080CB901
.incbin "baserom.gba", 0x0CB901, 0x0000013
gUnk_080CB914:: @ 080CB914
.incbin "baserom.gba", 0x0CB914, 0x0000034
gUnk_080CB948:: @ 080CB948
.incbin "baserom.gba", 0x0CB948, 0x0000018
gUnk_080CB960:: @ 080CB960
.incbin "baserom.gba", 0x0CB960, 0x000000C
gUnk_080CB96C:: @ 080CB96C
.incbin "baserom.gba", 0x0CB96C, 0x0000029
gUnk_080CB995:: @ 080CB995
.incbin "baserom.gba", 0x0CB995, 0x0000041
gUnk_080CB9D6:: @ 080CB9D6
.incbin "baserom.gba", 0x0CB9D6, 0x0000042
gUnk_080CBA18:: @ 080CBA18
.incbin "baserom.gba", 0x0CBA18, 0x0000010
gUnk_080CBA28:: @ 080CBA28
.incbin "baserom.gba", 0x0CBA28, 0x0000018
gUnk_080CBA40:: @ 080CBA40
.incbin "baserom.gba", 0x0CBA40, 0x0000020
gUnk_080CBA60:: @ 080CBA60
.incbin "baserom.gba", 0x0CBA60, 0x0000004
gUnk_080CBA64:: @ 080CBA64
.incbin "baserom.gba", 0x0CBA64, 0x0000041
gUnk_080CBAA5:: @ 080CBAA5
.incbin "baserom.gba", 0x0CBAA5, 0x0000040
gUnk_080CBAE5:: @ 080CBAE5
.incbin "baserom.gba", 0x0CBAE5, 0x0000018
gUnk_080CBAFD:: @ 080CBAFD
.incbin "baserom.gba", 0x0CBAFD, 0x0000024
gUnk_080CBB21:: @ 080CBB21
.incbin "baserom.gba", 0x0CBB21, 0x0000011
gUnk_080CBB32:: @ 080CBB32
.incbin "baserom.gba", 0x0CBB32, 0x000000D
gUnk_080CBB3F:: @ 080CBB3F
.incbin "baserom.gba", 0x0CBB3F, 0x0000005
gUnk_080CBB44:: @ 080CBB44
.incbin "baserom.gba", 0x0CBB44, 0x0000020
gUnk_080CBB64:: @ 080CBB64
.incbin "baserom.gba", 0x0CBB64, 0x0000018
gUnk_080CBB7C:: @ 080CBB7C
.incbin "baserom.gba", 0x0CBB7C, 0x0000014
gUnk_080CBB90:: @ 080CBB90
.incbin "baserom.gba", 0x0CBB90, 0x0000010
gUnk_080CBBA0:: @ 080CBBA0
.incbin "baserom.gba", 0x0CBBA0, 0x0000014
gUnk_080CBBB4:: @ 080CBBB4
.incbin "baserom.gba", 0x0CBBB4, 0x0000008
gUnk_080CBBBC:: @ 080CBBBC
.incbin "baserom.gba", 0x0CBBBC, 0x0000008
gUnk_080CBBC4:: @ 080CBBC4
.incbin "baserom.gba", 0x0CBBC4, 0x0000004
gUnk_080CBBC8:: @ 080CBBC8
.incbin "baserom.gba", 0x0CBBC8, 0x0000014
gUnk_080CBBDC:: @ 080CBBDC
.incbin "baserom.gba", 0x0CBBDC, 0x0000010
gUnk_080CBBEC:: @ 080CBBEC
.incbin "baserom.gba", 0x0CBBEC, 0x000004C
gUnk_080CBC38:: @ 080CBC38
.incbin "baserom.gba", 0x0CBC38, 0x0000018
+1 -4
View File
@@ -19,10 +19,7 @@ typedef struct {
} EntityType;
typedef struct {
u8 unknown[6];
u8 field_0x6;
u8 field_0x7;
u8 unknown2[4];
u8 unknown[8];
} BoundingBox;
typedef struct Entity {
+9 -4
View File
@@ -33,13 +33,15 @@ typedef struct {
/*0x30*/ union {
/* */ u32 all;
/* */ struct {
/* */ u32 filler9 : 3;
/* */ u32 filler9 : 2;
/* */ u32 unk2 : 1;
/* */ u32 noMinishCap : 1;
/* */ u32 pullingState : 1;
/* */ u32 windyState : 1;
/* */ u32 filler6 : 1;
/* */ u32 unk7 : 1;
/* */ u32 filler8 : 2;
/* */ u32 unk8 : 1;
/* */ u32 unk9 : 1;
/* */ u32 slipperyState : 1;
/* */ u32 filler11 : 5;
/* */ u32 filler11b : 16;
@@ -54,7 +56,9 @@ typedef struct {
/* */ u8 swordBlueParticle : 1;
/* */ u8 filler14 : 6;
/*0x3f*/ u8 field_0x3f;
/*0x40*/ u8 field_0x40[75];
/*0x40*/ u8 field_0x40[64];
/*0x80*/ u16 field_0x80;
/*0x82*/ u8 field_0x82[9];
/*0x8b*/ u8 field_0x8b;
/*0x8c*/ u32 field_0x8c;
/*0x90*/ union SplitWord field_0x90;
@@ -63,7 +67,8 @@ typedef struct {
/*0xa9*/ u8 field_0xa9;
/*0xaa*/ u8 field_0xaa;
/*0xab*/ u8 field_0xab;
/*0xac*/ u32 field_0xac;
/*0xac*/ u16 field_0xac;
/*0xae*/ u16 field_0xae;
} PlayerState;
+30 -15
View File
@@ -332,14 +332,14 @@ SECTIONS {
src/enemy/rollobite.o(.text);
src/enemy/darkNut.o(.text);
src/enemy/hangingSeed.o(.text);
asm/beetle.o(.text);
src/enemy/beetle.o(.text);
src/enemy/keese.o(.text);
asm/doorMimic.o(.text);
asm/rockChuchu.o(.text);
asm/spinyChuchu.o(.text);
asm/cuccoChickAggr.o(.text);
asm/moldorm.o(.text);
asm/enemyE.o(.text);
src/enemy/doorMimic.o(.text);
src/enemy/rockChuchu.o(.text);
src/enemy/spinyChuchu.o(.text);
src/enemy/cuccoChickAggr.o(.text);
src/enemy/moldorm.o(.text);
src/enemy/enemyE.o(.text);
asm/moldworm.o(.text);
asm/sluggula.o(.text);
asm/pesto.o(.text);
@@ -906,18 +906,33 @@ SECTIONS {
src/trig.o(.rodata);
data/data_080C93E0.o(.rodata);
src/enemy/octorok.o(.rodata);
data/octorokAnimations.o(.rodata);
data/animations/octorok.o(.rodata);
src/enemy/chuchu.o(.rodata);
data/chuchuAnimations.o(.rodata);
data/animations/chuchu.o(.rodata);
src/enemy/leever.o(.rodata);
data/leeverAnimations.o(.rodata);
data/animations/leever.o(.rodata);
src/enemy/peahat.o(.rodata);
data/peahatAnimations.o(.rodata);
data/animations/peahat.o(.rodata);
src/enemy/rollobite.o(.rodata);
data/rollobiteAnimations.o(.rodata);
data/animations/rollobite.o(.rodata);
src/enemy/darkNut.o(.rodata);
data/darkNutAnimations.o(.rodata);
data/data_080CB570.o(.rodata);
data/animations/darkNut.o(.rodata);
src/enemy/hangingSeed.o(.rodata);
src/enemy/beetle.o(.rodata);
data/animations/beetle.o(.rodata);
src/enemy/keese.o(.rodata);
data/animations/keese.o(.rodata);
src/enemy/doorMimic.o(.rodata);
data/animations/doorMimic.o(.rodata);
src/enemy/rockChuchu.o(.rodata);
data/animations/rockChuchu.o(.rodata);
src/enemy/spinyChuchu.o(.rodata);
data/animations/spinyChuchu.o(.rodata);
src/enemy/cuccoChickAggr.o(.rodata);
src/enemy/moldorm.o(.rodata);
src/enemy/enemyE.o(.rodata);
data/animations/enemyE.o(.rodata);
data/data_080CBC38.o(.rodata);
src/enemy.o(.rodata);
data/data_080D3D94.o(.rodata);
data/areaPropertyLists.o(.rodata);
@@ -934,7 +949,7 @@ SECTIONS {
data/room_headers.o(.rodata);
data/data_0811E454.o(.rodata);
src/object/greatFairy.o(.rodata);
data/greatFairyAnimations.o(.rodata);
data/animations/greatFairy.o(.rodata);
data/data_081208A0.o(.rodata);
src/object/heartContainer.o(.rodata);
data/data_08121C58.o(.rodata);
+360
View File
@@ -0,0 +1,360 @@
#include "entity.h"
#include "functions.h"
#include "player.h"
extern u32 sub_08049F64(Entity*, u32, u32);
u32 sub_08021D00();
void sub_08021D44(Entity* this, u32 param_2);
extern void (*const gUnk_080CB590[])(Entity*);
extern void (*const gUnk_080CB5A8[])(Entity*);
extern void (*const gUnk_080CB5C8[])(Entity*);
extern void (*const gUnk_080CB5D4[])(Entity*);
extern const s8 gUnk_080CB5DC[];
extern const s8 gUnk_080CB5E4[];
void Beetle(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CB590);
}
void sub_08021768(Entity* this) {
gUnk_080CB5A8[this->action](this);
}
void sub_08021780(Entity* this) {
switch (this->bitfield) {
case 0x80:
if (gPlayerState.field_0xa8 == 24) {
sub_08021768(this);
} else {
this->action = 5;
this->actionDelay = 0xb4;
this->field_0xf = 0;
this->flags &= ~0x80;
this->spritePriority.b0 = 3;
CopyPositionAndSpriteOffset(&gPlayerEntity, this);
this->height.HALF.HI = -1;
((u8*)&this->field_0x86)[1] = 1;
InitializeAnimation(this, 6);
}
break;
case 0x93:
sub_08021768(this);
break;
}
if (this->currentHealth == 0)
this->field_0x42 = 0;
sub_0804AA30(this, gUnk_080CB590);
}
void sub_08021818(Entity* this) {
if (this->entityType.form == 0) {
sub_0804A7D4(this);
} else {
Entity* ent = this->parent;
if (ent) {
ent->field_0xf--;
this->parent = NULL;
}
CreateDeathFx(this, 0xf0, 0);
}
}
void sub_08021848(Entity* this) {
if (sub_0806F520(this)) {
gUnk_080CB5C8[this->previousActionFlag](this);
} else {
this->action = 3;
this->height.HALF.HI = 0;
InitializeAnimation(this, 2);
}
}
void sub_0802187C(Entity* this) {
this->previousActionFlag = 2;
}
void nullsub_130(Entity* this) {
}
void sub_08021888(Entity* this) {
if (sub_0806F3E4(this))
sub_08021818(this);
}
void sub_0802189C(Entity* this) {
sub_0804A720(this);
this->action = 1;
this->field_0x1c = 1;
InitializeAnimation(this, 3);
}
void sub_080218B4(Entity* this) {
gUnk_080CB5D4[this->entityType.parameter](this);
}
void sub_080218CC(Entity* this) {
if (this->previousActionFlag == 0) {
this->previousActionFlag = 1;
this->spriteSettings.b.draw = 1;
this->direction = ((sub_08049F84(this, 1) ^ 0x10) + gUnk_080CB5DC[Random() & 7]) & 0x1f;
this->nonPlanarMovement = 0x100;
this->field_0x20 = 0x12000;
}
GetNextFrame(this);
if (this->frames.all & 1) {
sub_080AEFE0(this);
if (sub_080044EC(this, 0x1c00) == 0)
this->frameDuration = 1;
}
if (this->frames.all & 0x80) {
this->action = 2;
this->actionDelay = (Random() & 0x38) + 8;
this->field_0xf = 1;
this->flags |= 0x80;
this->nonPlanarMovement = 0x180;
InitializeAnimation(this, 0);
}
}
void sub_08021984(Entity* this) {
if (this->previousActionFlag == 0) {
this->previousActionFlag = 1;
this->flags |= 0x80;
this->spriteSettings.b.draw = 3;
this->height.HALF.HI = -0x80;
this->spriteRendering.b3 = 1;
this->spriteOrientation.flipY = 1;
sub_08004488(0x12d);
}
if (sub_08003FC4(this, 0x1800) == 0) {
this->action = 2;
this->actionDelay = 16;
this->field_0xf = 1;
this->spriteSettings.b.draw = 1;
this->nonPlanarMovement = 0x180;
((u8*)&this->field_0x86)[0] = 60;
InitializeAnimation(this, 0);
UpdateSpriteForCollisionLayer(this);
}
}
void sub_08021A10(Entity* this) {
GetNextFrame(this);
if (sub_080041A0(this, &gPlayerEntity, 120, 80) && sub_08021D00(this) == 0) {
if (--this->actionDelay == 0) {
this->action = 3;
this->actionDelay = (Random() & 0x3f) + 30;
sub_08021D44(this, this->direction);
InitializeAnimation(this, 2);
}
}
}
void sub_08021A64(Entity* this) {
if (!sub_08021D00(this)) {
if (--this->actionDelay == 0) {
this->action = 2;
this->actionDelay = (Random() & 0x1f) + 0x1e;
InitializeAnimation(this, 0);
}
if (--this->field_0xf == 0) {
u32 tmp;
this->field_0xf = 8;
tmp = sub_08049F84(this, 1);
if (tmp == 0xff) {
this->action = 7;
InitializeAnimation(this, 1);
return;
}
sub_08021D44(this, tmp);
}
sub_080AEF88(this);
GetNextFrame(this);
}
}
void sub_08021AD8(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 1) {
if (this->actionDelay) {
u32 tmp;
this->actionDelay = 0;
tmp = sub_08049F84(this, 1);
if (tmp == 0xff) {
this->action = 2;
this->actionDelay = '\b';
InitializeAnimation(this, 0);
return;
}
this->direction = (u8)tmp;
sub_08004488(0x7c);
}
sub_080AEFE0(this);
if (!sub_08003FC4(this, 0x1800))
this->frameDuration = 1;
}
if (this->frames.all & 0x80) {
this->action = 2;
this->actionDelay = 20;
((u8*)&this->field_0x86)[0] = 60;
InitializeAnimation(this, 0);
}
}
void sub_08021B64(Entity* this) {
if (gPlayerState.flags.all & 4) {
this->action = 3;
this->height.WORD = 0;
InitializeAnimation(this, 2);
} else {
int iVar4 = 1;
if (gPlayerState.field_0xa8 != 11 && gPlayerState.field_0xa8 != 20) {
if (sub_0807953C())
iVar4 = this->entityType.form * 3 + 8;
iVar4 = this->actionDelay - iVar4;
if (iVar4 < 0)
iVar4 = 0;
this->actionDelay = (u8)iVar4;
}
if (gPlayerState.flags.all & 0x110)
iVar4 = 0;
if (iVar4 == 0) {
this->action = 6;
this->field_0x20 = 0x10000;
((u8*)&this->field_0x86)[1] = 0;
if (gPlayerEntity.direction != 0xff) {
this->direction = 0x10 ^ gPlayerEntity.direction;
} else {
this->direction = (gPlayerEntity.animationState << 2) ^ 0x10;
}
InitializeAnimation(this, 5);
} else {
gPlayerState.field_0x1a[0] |= 0x80;
gPlayerState.field_0x80 -= 0x50;
gPlayerState.field_0xaa++;
CopyPositionAndSpriteOffset(&gPlayerEntity, this);
this->x.HALF.HI += gUnk_080CB5E4[(this->field_0xf++ & 0xe) >> 1];
this->height.HALF.HI--;
GetNextFrame(this);
}
}
}
void sub_08021C58(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 1) {
sub_080AEFE0(this);
if (sub_08003FC4(this, 0x1800) == 0)
this->frameDuration = 1;
}
if (this->frames.all & 0x80) {
this->action = 2;
this->actionDelay = 60;
this->field_0xf = 1;
this->flags |= 0x80;
this->spritePriority.b0 = 4;
((u8*)&this->field_0x86)[0] = 60;
InitializeAnimation(this, 0);
}
}
void sub_08021CD0(Entity* this) {
if ((this->frames.all & 0x80) == 0)
GetNextFrame(this);
if (sub_08049F84(this, 1) == 0xff)
return;
this->action = 3;
InitializeAnimation(this, 2);
}
u32 sub_08021D00(Entity* this) {
u32 ret;
if (((u8*)&this->field_0x86)[0]) {
((u8*)&this->field_0x86)[0]--;
ret = 0;
} else if (sub_08049F64(this, 1, 0x10) == 0) {
ret = 0;
} else {
this->action = 4;
this->actionDelay = 1;
this->field_0x20 = 0x18000;
InitializeAnimation(this, 4);
ret = 1;
}
return ret;
}
void sub_08021D44(Entity* this, u32 param_2) {
param_2 += 4;
param_2 &= 0x18;
this->direction = param_2;
if (param_2 & 8) {
this->nonPlanarMovement = 0x180;
} else {
this->nonPlanarMovement = 0xc0;
}
}
// clang-format off
void (*const gUnk_080CB590[])(Entity*) = {
sub_08021768,
sub_08021780,
sub_08001324,
sub_08021818,
sub_08001242,
sub_08021848,
};
void (*const gUnk_080CB5A8[])(Entity*) = {
sub_0802189C,
sub_080218B4,
sub_08021A10,
sub_08021A64,
sub_08021AD8,
sub_08021B64,
sub_08021C58,
sub_08021CD0,
};
void (*const gUnk_080CB5C8[])(Entity*) = {
sub_0802187C,
nullsub_130,
sub_08021888,
};
void (*const gUnk_080CB5D4[])(Entity*) = {
sub_080218CC,
sub_08021984,
};
const s8 gUnk_080CB5DC[] = {
-1, -2, 1, 2, -3, 3, -4, 4,
};
const s8 gUnk_080CB5E4[] = {
-1, -2, -1, 0, 1, 2, 1, 0,
};
// clang-format on
+167
View File
@@ -0,0 +1,167 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
extern Entity* sub_08049DF4(u32);
void sub_08022A88(Entity*);
void sub_08022AA4(Entity*);
void sub_08022B0C(Entity*);
u32 sub_08022B20(Entity*);
void sub_08022B44(Entity*);
extern void (*const gUnk_080CBB64[])(Entity*);
extern void (*const gUnk_080CBB7C[])(Entity*);
void CuccoChickAggr(Entity* this) {
gUnk_080CBB64[GetNextFunction(this)](this);
}
void sub_08022934(Entity* this) {
gUnk_080CBB7C[this->action](this);
}
void sub_0802294C(Entity* this) {
sub_0804AA30(this, gUnk_080CBB64);
}
void nullsub_132(Entity* this) {
}
void sub_08022960(Entity* this) {
sub_0804A720(this);
sub_08022A88(this);
}
void sub_08022970(Entity* this) {
if (--this->actionDelay == 0) {
sub_08022AA4(this);
}
}
void sub_08022988(Entity* this) {
if (this->height.HALF.HI == 0 && sub_08022B20(this)) {
sub_08022B0C(this);
} else {
if (this->field_0xf) {
if (--this->field_0xf)
return;
this->frameIndex = 1;
this->field_0x20 = 0x10000;
sub_08004488(0xd6);
}
sub_080AEF88(this);
if (sub_08003FC4(this, 0x2000) == 0) {
if (--this->actionDelay == 0) {
sub_08022A88(this);
} else {
this->field_0xf = 4;
this->frameIndex = 0;
}
}
}
}
void sub_080229F8(Entity* this) {
if (sub_08003FC4(this, 0x2800) == 0) {
if (--this->actionDelay == 0) {
this->action = 4;
this->actionDelay = 6;
this->field_0xf = 8;
this->frameIndex = 0;
this->nonPlanarMovement = 0xc0;
sub_08022B44(this);
} else {
this->field_0x20 = 0x10000;
sub_08004488(0xd6);
}
}
}
void sub_08022A40(Entity* this) {
if (this->field_0xf) {
if (--this->field_0xf)
return;
this->frameIndex = 1;
}
sub_080AEF88(this);
if (sub_08003FC4(this, 0x2000) == 0) {
if (--this->actionDelay == 0) {
sub_08022A88(this);
} else {
sub_08022B44(this);
}
}
}
void sub_08022A88(Entity* this) {
this->action = 1;
this->actionDelay = (Random() & 0xf) + 8;
this->frameIndex = 0;
}
void sub_08022AA4(Entity* this) {
u32 rand = Random();
this->action = 2;
this->actionDelay = (rand & 3) + 1;
this->field_0xf = 1;
this->nonPlanarMovement = 0x80;
if (!sub_08049FA0(this) && (rand >> 8) & 3) {
this->direction = sub_08049EE4(this);
} else {
this->direction = (rand >> 0x10) & 0x1f;
}
if (this->direction & 0xf)
this->spriteSettings.b.flipX = (this->direction >> 4) ^ 1;
}
void sub_08022B0C(Entity* this) {
this->action = 3;
this->actionDelay = 3;
this->field_0xf = 8;
sub_08022B44(this);
}
u32 sub_08022B20(Entity* this) {
if (!sub_08049DF4(2))
return 0;
return sub_080041A0(this, &gPlayerEntity, 0x24, 0x24);
}
void sub_08022B44(Entity *this){
this->field_0x20 = 0xc000;
this->direction = GetFacingDirection(this,&gPlayerEntity);
if (this->direction & 0xf)
this->spriteSettings.b.flipX = (this->direction >> 4)^1;
sub_08004488(0xd6);
}
// clang-format off
void (*const gUnk_080CBB64[])(Entity*) = {
sub_08022934,
sub_0802294C,
sub_08001324,
sub_0804A7D4,
sub_08001242,
nullsub_132,
};
void (*const gUnk_080CBB7C[])(Entity*) = {
sub_08022960,
sub_08022970,
sub_08022988,
sub_080229F8,
sub_08022A40,
};
// clang-format on
+271
View File
@@ -0,0 +1,271 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
extern s16 sub_080001DA(u32, u32); // ?
extern void sub_08049CF4();
extern u32 sub_0806FBFC(u32, u32, u32, u32);
void sub_080221C0();
typedef struct {
s8 h;
s8 v;
} PACKED PosOffset;
extern void (*const gUnk_080CB734[])(Entity*);
extern void (*const gUnk_080CB74C[])(Entity*);
#if NON_MATCHING
extern const PosOffset gUnk_080CB764[];
#else
extern const s8 gUnk_080CB764[];
#endif
extern const PosOffset gUnk_080CB76C[4][6];
extern const u16 gUnk_080CB79C[];
extern const BoundingBox* const* const gUnk_080CB8A4[];
extern s16 gUnk_080B4488[];
void DoorMimic(Entity* this) {
gUnk_080CB734[GetNextFunction(this)](this);
this->boundingBox = (BoundingBox*)gUnk_080CB8A4[this->entityType.parameter][this->frameIndex];
}
void sub_08021FDC(Entity* this) {
gUnk_080CB74C[this->action](this);
}
void sub_08021FF4(Entity* this) {
sub_0804AA30(this, gUnk_080CB734);
}
void sub_08022004(Entity* this) {
SetTile((u16)this->field_0x7c.HALF.LO, (u16)this->field_0x7c.HALF.HI, this->collisionLayer);
CreateFx(this, 5, 0);
sub_08049CF4(this);
DeleteThisEntity();
}
#if NON_MATCHING
void sub_08022034(Entity* this) {
this->action = 1;
this->entityType.parameter = this->entityType.form & 3;
this->spritePriority.b0 = 5;
this->field_0x78.HWORD = gUnk_080CB764[this->entityType.parameter].h + this->x.HALF.HI;
this->field_0x7a.HWORD = gUnk_080CB764[this->entityType.parameter].v + this->y.HALF.HI;
InitializeAnimation(this, this->entityType.parameter);
sub_080221C0(this);
}
#else
void sub_08022034(Entity* this) {
this->action = 1;
this->entityType.parameter = this->entityType.form & 3;
this->spritePriority.b0 = 5;
this->field_0x78.HWORD = gUnk_080CB764[this->entityType.parameter * 2] + this->x.HALF.HI;
this->field_0x7a.HWORD = gUnk_080CB764[this->entityType.parameter * 2 + 1] + this->y.HALF.HI;
InitializeAnimation(this, this->entityType.parameter);
sub_080221C0(this);
}
#endif
void sub_0802209C(Entity* this) {
if (this->actionDelay == 0) {
if (sub_0806FBFC(this->field_0x78.HWORD, this->field_0x7a.HWORD, 0x10, 0x10)) {
this->action = 2;
this->actionDelay = 0x12;
InitializeAnimation(this, this->entityType.parameter + 4);
}
} else {
this->actionDelay = this->actionDelay - 1;
}
}
void sub_080220D8(Entity* this) {
if (--this->actionDelay == 0)
this->action = 3;
}
void sub_080220F0(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 0x80) {
const PosOffset* off;
u32 i;
this->action = 4;
this->actionDelay = 0x78;
this->field_0x44 = 0;
off = gUnk_080CB76C[this->entityType.parameter];
for (i = 0; i < 6; i++, off++) {
Entity* fx = CreateFx(this, 0x11, 0);
if (fx) {
fx->x.HALF.HI += off->h;
fx->y.HALF.HI += off->v;
}
}
sub_08004488(260);
} else if (this->frames.all & 1) {
this->field_0x44 = 4;
}
}
void sub_08022174(Entity* this) {
sub_0800445C(this);
if (--this->actionDelay == 0) {
this->action = 5;
InitializeAnimation(this, this->entityType.parameter + 8);
}
}
void sub_08022198(Entity* this) {
sub_0800445C(this);
GetNextFrame(this);
if (this->frames.all & 0x80) {
this->action = 1;
this->actionDelay = 0x5a;
}
}
void sub_080221C0(Entity* this) {
u32 tile = COORD_TO_TILE(this) + gUnk_080B4488[this->entityType.parameter];
this->field_0x7c.HALF.HI = tile;
this->field_0x7c.HALF.LO = sub_080001DA(tile, this->collisionLayer);
SetTile(gUnk_080CB79C[this->entityType.parameter], tile, this->collisionLayer);
}
// clang-format off
void (*const gUnk_080CB734[])(Entity*) = {
sub_08021FDC,
sub_08021FF4,
sub_08001324,
sub_08022004,
sub_08001242,
sub_08021FDC,
};
void (*const gUnk_080CB74C[])(Entity*) = {
sub_08022034,
sub_0802209C,
sub_080220D8,
sub_080220F0,
sub_08022174,
sub_08022198,
};
#if NON_MATCHING
const PosOffset gUnk_080CB764[] = {
{-0x08, 0x00},
{-0x10, -0x08},
{-0x08, -0x10},
{ 0x00, -0x08},
};
#else
const s8 gUnk_080CB764[] = {
-0x08, 0x00,
-0x10, -0x08,
-0x08, -0x10,
0x00, -0x08,
};
#endif
const PosOffset gUnk_080CB76C[][6] = {
{
{-0x04, 0x1a},
{ 0x04, 0x1a},
{-0x0c, 0x10},
{ 0x0c, 0x10},
{-0x0c, 0x08},
{ 0x0c, 0x08},
},
{
{-0x1a, -0x04},
{-0x1a, 0x04},
{-0x10, -0x0c},
{-0x10, 0x0c},
{-0x08, -0x0c},
{-0x08, 0x0c},
},
{
{-0x04, -0x1a},
{ 0x04, -0x1a},
{-0x0c, -0x10},
{ 0x0c, -0x10},
{-0x0c, -0x08},
{ 0x0c, -0x08},
},
{
{ 0x1a, -0x04},
{ 0x1a, 0x04},
{ 0x10, -0x0c},
{ 0x10, 0x0c},
{ 0x08, -0x0c},
{ 0x08, 0x0c},
},
};
const u16 gUnk_080CB79C[] = {
0x4023,
0x4025,
0x4026,
0x4024,
};
const BoundingBox gUnk_080CB7A4 = { 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06 };
const BoundingBox gUnk_080CB7AC = { 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04 };
const BoundingBox gUnk_080CB7B4 = { 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04 };
const BoundingBox gUnk_080CB7BC = { 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08 };
const BoundingBox gUnk_080CB7C4 = { 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c };
const BoundingBox gUnk_080CB7CC = { 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
const BoundingBox gUnk_080CB7D4 = { 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04 };
const BoundingBox gUnk_080CB7DC = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04 };
const BoundingBox gUnk_080CB7E4 = { 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
const BoundingBox gUnk_080CB7EC = { 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c };
const BoundingBox *const gUnk_080CB7F4[] = {
&gUnk_080CB7A4,
&gUnk_080CB7AC,
&gUnk_080CB7B4,
&gUnk_080CB7BC,
&gUnk_080CB7C4,
&gUnk_080CB7C4,
&gUnk_080CB7CC,
&gUnk_080CB7D4,
&gUnk_080CB7DC,
&gUnk_080CB7E4,
&gUnk_080CB7EC,
&gUnk_080CB7EC,
};
const BoundingBox gUnk_080CB824 = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
const BoundingBox gUnk_080CB82C = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
const BoundingBox gUnk_080CB834 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
const BoundingBox gUnk_080CB83C = { 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
const BoundingBox gUnk_080CB844 = { 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08 };
const BoundingBox gUnk_080CB84C = { 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
const BoundingBox gUnk_080CB854 = { 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
const BoundingBox gUnk_080CB85C = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08 };
const BoundingBox gUnk_080CB864 = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08 };
const BoundingBox gUnk_080CB86C = { 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08 };
const BoundingBox *const gUnk_080CB874[] = {
&gUnk_080CB84C,
&gUnk_080CB854,
&gUnk_080CB85C,
&gUnk_080CB864,
&gUnk_080CB86C,
&gUnk_080CB86C,
&gUnk_080CB824,
&gUnk_080CB82C,
&gUnk_080CB834,
&gUnk_080CB83C,
&gUnk_080CB844,
&gUnk_080CB844,
};
const BoundingBox *const *const gUnk_080CB8A4[] = {
gUnk_080CB7F4,
gUnk_080CB874,
gUnk_080CB7F4,
gUnk_080CB874,
};
// clang-format on
+69
View File
@@ -0,0 +1,69 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
void sub_08023000(Entity*, int);
extern void (*const gUnk_080CBBC8[])(Entity*);
extern void (*const gUnk_080CBBDC[])(Entity*);
void EnemyE(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CBBC8);
}
void sub_08022FB4(Entity* this) {
gUnk_080CBBDC[this->action](this);
}
void nullsub_133(Entity* this) {
}
void sub_08022FD0(Entity* this) {
this->action = 1;
this->spriteSettings.b.draw = 1;
sub_08023000(this, 0);
}
void sub_08022FEC(Entity* this) {
sub_08023000(this, 0x80);
}
void sub_08022FF8(Entity* this) {
}
void sub_08022FFC(Entity* this) {
}
void sub_08023000(Entity* this, int frames) {
int tmp;
if (frames == 0x80) {
UpdateAnimationSingleFrame(this);
} else {
InitAnimationForceUpdate(this, frames);
}
tmp = 0x80;
if (this->frameSpriteSettings == 0x40)
tmp *= -1;
this->spriteRendering.b0 = 3;
sub_0805EC9C(this, tmp, 0x80, 0);
}
// clang-format off
void (*const gUnk_080CBBC8[])(Entity*) = {
sub_08022FB4,
nullsub_133,
sub_08001324,
sub_0804A7D4,
sub_08001242,
};
void (*const gUnk_080CBBDC[])(Entity*) = {
sub_08022FD0,
sub_08022FEC,
sub_08022FF8,
sub_08022FFC,
};
// clang-format on
+38 -26
View File
@@ -1,39 +1,51 @@
#include "global.h"
#include "entity.h"
extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*));
extern void DeleteThisEntity();
#include "functions.h"
extern void (*const gUnk_080CB570[])(Entity*);
extern void (*const gUnk_080CB588[])(Entity*);
void HangingSeed(Entity *this)
{
EnemyFunctionHandler(this, gUnk_080CB570);
void HangingSeed(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CB570);
}
void sub_080216E4(Entity *this)
{
gUnk_080CB588[this->action](this);
void sub_080216E4(Entity* this) {
gUnk_080CB588[this->action](this);
}
void sub_080216FC(Entity *this)
{
if ((this->bitfield & 0x80) != 0) {
CreateFx(this, 3, 0x80);
DeleteThisEntity();
}
void sub_080216FC(Entity* this) {
if (this->bitfield & 0x80) {
CreateFx(this, 3, 0x80);
DeleteThisEntity();
}
}
void nullsub_7(Entity* this){}
void sub_08021720(Entity *this)
{
this->action = 1;
this->spriteSettings.b.draw = 1;
this->frameIndex = (this->entityType).form;
this->spriteRendering.b3 = 1;
this->spritePriority.b0 = 3;
void nullsub_7(Entity* this) {
}
void nullsub_08(Entity* this){}
void sub_08021720(Entity* this) {
this->action = 1;
this->spriteSettings.b.draw = 1;
this->frameIndex = this->entityType.form;
this->spriteRendering.b3 = 1;
this->spritePriority.b0 = 3;
}
void nullsub_08(Entity* this) {
}
// clang-format off
void (*const gUnk_080CB570[])(Entity*) = {
sub_080216E4,
sub_080216FC,
sub_08001324,
sub_0804A7D4,
sub_08001242,
nullsub_7,
};
void (*const gUnk_080CB588[])(Entity*) = {
sub_08021720,
nullsub_08,
};
// clang-format on
+112 -91
View File
@@ -2,14 +2,14 @@
#include "entity.h"
#include "enemy.h"
#include "player.h"
#include "functions.h"
extern void sub_0804AA30(Entity*, void *);
extern void sub_08001328(Entity*);
extern u32 sub_0806F520(Entity*);
extern void sub_0806F4E8(Entity*);
extern u32 sub_0806F3E4(Entity*);
extern void sub_0804A7D4(Entity*);
extern void sub_0804A720(Entity*);
extern u32 Random();
extern void sub_08021EF0(Entity*);
extern void sub_080AEFB4(Entity*);
extern void sub_08021F24(Entity*);
@@ -17,102 +17,89 @@ extern u32 sub_0806FCB8(Entity*, s32, s32, u32);
extern u32 sub_08049FA0(Entity*);
extern u32 sub_08049EE4(Entity*);
extern void (*gUnk_080CB69C[])(Entity*);
extern void (*gUnk_080CB6B4[])(Entity*);
extern void (*gUnk_080CB6C4[])(Entity*);
extern void (*const gUnk_080CB69C[])(Entity*);
extern void (*const gUnk_080CB6B4[])(Entity*);
extern void (*const gUnk_080CB6C4[])(Entity*);
extern u8 gUnk_080CB6D0[];
extern u16 gUnk_080CB6D6[];
extern u8 gUnk_080CB6F6[];
extern const s8 gUnk_080CB6D0[];
extern const u16 gUnk_080CB6D6[];
extern const u8 gUnk_080CB6F6[];
void Keese(Entity *this)
{
void Keese(Entity* this) {
gUnk_080CB69C[GetNextFunction(this)](this);
}
void sub_08021D80(Entity *this)
{
void sub_08021D80(Entity* this) {
gUnk_080CB6B4[this->action](this);
}
void sub_08021d98(Entity *this)
{
sub_0804AA30(this, &gUnk_080CB69C);
void sub_08021d98(Entity* this) {
sub_0804AA30(this, gUnk_080CB69C);
}
void sub_08021DA8(Entity *this)
{
if (sub_0806F520(this)) {
gUnk_080CB6C4[this->previousActionFlag](this);
}
void sub_08021DA8(Entity* this) {
if (sub_0806F520(this)) {
gUnk_080CB6C4[this->previousActionFlag](this);
}
}
void sub_08021DCC(Entity *this)
{
this->previousActionFlag = 2;
void sub_08021DCC(Entity* this) {
this->previousActionFlag = 2;
}
void sub_08021DD4(Entity *this)
{
sub_0806F4E8(this);
void sub_08021DD4(Entity* this) {
sub_0806F4E8(this);
}
void sub_08021DDC(Entity *this)
{
if (sub_0806F3E4(this)) {
sub_0804A7D4(this);
}
void sub_08021DDC(Entity* this) {
if (sub_0806F3E4(this)) {
sub_0804A7D4(this);
}
}
void sub_08021DF0(Entity *this)
{
sub_0804A720(this);
if ((this->entityType).form != 0) {
this->spritePriority.b1 = 1;
this->height.HALF.HI = -0x10;
}
this->direction = Random() & 0x1f;
this->field_0x1c = 1;
this->spritePriority.b0 = 3;
this->collisionLayer = 3;
UpdateSpriteForCollisionLayer(this);
sub_08021EF0(this);
}
void sub_08021DF0(Entity* this) {
void sub_08021E4C(Entity *this)
{
if (this->field_0x78.HWORD != 0) {
this->field_0x78.HWORD--;
}
if (this->field_0x7a.HWORD != 0) {
(this->field_0x7a.HWORD)--;
}
GetNextFrame(this);
if ((this->frames.b.f3) != 0) {
sub_08021F24(this);
}
else {
sub_080AEFB4(this);
}
this->spriteOffsetY = gUnk_080CB6D0[this->frames.all];
}
void sub_08021EA4(Entity *this)
{
if (--this->actionDelay == 0) {
sub_0804A720(this);
if ((this->entityType).form != 0) {
this->spritePriority.b1 = 1;
this->height.HALF.HI = -0x10;
}
this->direction = Random() & 0x1f;
this->field_0x1c = 1;
this->spritePriority.b0 = 3;
this->collisionLayer = 3;
UpdateSpriteForCollisionLayer(this);
sub_08021EF0(this);
}
}
void sub_08021EBC(Entity *this)
{
void sub_08021E4C(Entity* this) {
if (this->field_0x78.HWORD != 0) {
this->field_0x78.HWORD--;
}
if (this->field_0x7a.HWORD != 0) {
(this->field_0x7a.HWORD)--;
}
GetNextFrame(this);
if ((this->frames.b.f3) != 0) {
sub_08021F24(this);
} else {
sub_080AEFB4(this);
}
this->spriteOffsetY = gUnk_080CB6D0[this->frames.all];
}
void sub_08021EA4(Entity* this) {
if (--this->actionDelay == 0) {
sub_08021EF0(this);
}
}
void sub_08021EBC(Entity* this) {
s32 iVar1;
if (this->actionDelay != 0) {
this->actionDelay--;
}
else {
} else {
iVar1 = sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70);
if (iVar1 != 0) {
sub_08021EF0(this);
@@ -120,37 +107,71 @@ void sub_08021EBC(Entity *this)
}
}
void sub_08021EF0(Entity *this)
{
u32 uVar1;
this->action = 1;
this->field_0x78.HWORD = gUnk_080CB6D6[Random() & 0xf];
this->field_0x7a.HWORD = 0x3c;
InitializeAnimation(this, 0);
void sub_08021EF0(Entity* this) {
u32 uVar1;
this->action = 1;
this->field_0x78.HWORD = gUnk_080CB6D6[Random() & 0xf];
this->field_0x7a.HWORD = 0x3c;
InitializeAnimation(this, 0);
}
void sub_08021F24(Entity *this)
{
void sub_08021F24(Entity* this) {
u32 bVar1;
if (this->field_0x78.HWORD == 0) {
this->action = 2;
this->actionDelay = gUnk_080CB6F6[Random() & 0xf];
InitializeAnimation(this, 1);
}
else if (!this->field_0x7a.HWORD && !(sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70))) {
} else if (!this->field_0x7a.HWORD &&
!(sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70))) {
this->action = 3;
this->actionDelay = 0x1e;
InitializeAnimation(this, 1);
}
else {
} else {
if (sub_08049FA0(this) != 0) {
this->direction = Random() & 0x1f;
}
else {
} else {
this->direction = sub_08049EE4(this);
}
InitializeAnimation(this, 0);
}
}
}
// clang-format off
void (*const gUnk_080CB69C[])(Entity*) = {
sub_08021D80,
sub_08021d98,
sub_08001328,
sub_0804A7D4,
sub_08001242,
sub_08021DA8,
};
void (*const gUnk_080CB6B4[])(Entity*) = {
sub_08021DF0,
sub_08021E4C,
sub_08021EA4,
sub_08021EBC,
};
void (*const gUnk_080CB6C4[])(Entity*) = {
sub_08021DCC,
sub_08021DD4,
sub_08021DDC,
};
const s8 gUnk_080CB6D0[] = {
1, -2, -5, -2, 1, 0,
};
const u16 gUnk_080CB6D6[] = {
180, 180, 300, 300, 300, 300, 300, 300,
480, 480, 480, 480, 480, 480, 720, 720,
};
const u8 gUnk_080CB6F6[] = {
30, 30, 45, 45, 45, 45, 45, 45,
60, 60, 60, 60, 60, 60, 75, 75,
};
// clang-format on
+211
View File
@@ -0,0 +1,211 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
void sub_08022EAC(Entity*);
void sub_08022F14(Entity*);
extern void (*const gUnk_080CBB90[])(Entity*);
extern void (*const gUnk_080CBBA0[])(Entity*);
extern void (*const gUnk_080CBBB4[])(Entity*);
extern void (*const gUnk_080CBBBC[])(Entity*);
extern u8 gEntCount;
extern const s8 gUnk_080CBBC4[];
void Moldorm(Entity* this) {
gUnk_080CBB90[this->entityType.form](this);
}
void sub_08022BA0(Entity* this) {
this->field_0x78.HALF.HI++;
this->field_0x74.HWORD = this->x.HALF.HI;
this->field_0x76.HWORD = this->y.HALF.HI;
EnemyFunctionHandler(this, gUnk_080CBBA0);
sub_08022EAC(this);
}
void sub_08022BD4(Entity* this) {
gUnk_080CBBB4[this->action](this);
}
void sub_08022BEC(Entity* this) {
if (this->field_0x7a.HALF.LO != this->currentHealth)
this->field_0x7a.HALF.HI = 30;
this->field_0x7a.HALF.LO = this->currentHealth;
this->actionDelay = 1;
this->direction = this->field_0x3e;
this->animationState = ((this->direction + 2) & 0x1c) >> 2;
this->frameIndex = this->animationState;
this->attachedEntity->hurtBlinkTime = this->hurtBlinkTime;
(*(Entity**)&this->field_0x7c)->hurtBlinkTime = this->hurtBlinkTime;
(*(Entity**)&this->field_0x80)->hurtBlinkTime = this->hurtBlinkTime;
sub_0804AA30(this, gUnk_080CBBA0);
}
void sub_08022C58(Entity* this) {
Entity *tail0, *tail1, *tail2;
this->flags &= ~0x80;
if (gEntCount >= 0x45)
return;
tail0 = CreateEnemy(0xd, 1);
this->attachedEntity = tail0;
tail0->spritePriority.b0 = 5;
tail0->parent = this;
CopyPosition(this, tail0);
tail1 = CreateEnemy(0xd, 2);
tail0->attachedEntity = tail1;
tail1->spritePriority.b0 = 5;
tail1->parent = this;
CopyPosition(this, tail1);
tail2 = CreateEnemy(0xd, 3);
tail1->attachedEntity = tail2;
tail2->spritePriority.b0 = 5;
tail2->parent = this;
CopyPosition(this, tail2);
sub_0804A720(this);
this->action = 1;
this->actionDelay = 1;
this->field_0xf = 1;
this->flags = this->flags | 0x80;
this->parent = this;
this->attachedEntity = tail0;
*(Entity**)&this->field_0x7c = tail1;
*(Entity**)&this->field_0x80 = tail2;
this->direction = Random() & 0x1f;
this->animationState = ((this->direction + 2) & 0x1c) >> 2;
this->frameIndex = this->animationState;
this->field_0x7a.HALF.LO = this->currentHealth;
}
void sub_08022D40(Entity* this) {
if (this->field_0x7a.HALF.HI) {
if (this->field_0x7a.HALF.HI-- & 1) {
this->animationState = (this->animationState + 1) & 7;
this->frameIndex = this->animationState;
}
} else {
sub_08022F14(this);
sub_080AEF88(this);
if (this->collisions) {
sub_0800417E(this, this->collisions);
this->animationState = ((this->direction + 2) & 0x1c) >> 2;
this->frameIndex = this->animationState;
}
}
}
void sub_08022D90(Entity* this) {
if (this->parent->next) {
Entity* parent;
gUnk_080CBBBC[this->action](this);
parent = this->parent;
this->spriteOrientation.flipY = parent->spriteOrientation.flipY;
this->spriteRendering.b3 = parent->spriteRendering.b3;
this->collisionLayer = parent->collisionLayer;
} else {
DeleteEntity(this);
}
}
void sub_08022DE8(Entity* this) {
this->action = 1;
this->field_0x7c.BYTES.byte0 = 0x88;
this->field_0x7c.BYTES.byte1 = 0x88;
this->field_0x7c.BYTES.byte2 = 0x88;
this->field_0x7c.BYTES.byte3 = 0x88;
this->field_0x80.HALF.LO = 0x88;
this->field_0x80.HALF.HI = 0x88;
this->field_0x82.HALF.LO = 0x88;
this->field_0x82.HALF.HI = 0x88;
this->animationState = this->parent->animationState;
*(u32*)&this->cutsceneBeh = this->animationState * 0x11111111;
if (this->entityType.form != 3) {
this->frameIndex = this->entityType.form + 7;
} else {
this->frameIndex = this->animationState + 10;
}
}
NAKED
void sub_08022E40(Entity* this) {
asm(".include \"asm/non_matching/moldorm/sub_08022E40.inc\"");
}
NAKED
void sub_08022EAC(Entity* this) {
asm(".include \"asm/non_matching/moldorm/sub_08022EAC.inc\"");
}
void sub_08022F14(Entity* this) {
if (sub_08049FA0(this) == 0) {
u32 bVar6 = (sub_08049EE4(this) - this->direction) & 0x1f;
if (8 < ((bVar6 + 4) & 0x1f)) {
this->field_0xf = 8;
if (bVar6 < 0x10) {
this->field_0x78.HALF.LO = 1;
} else {
this->field_0x78.HALF.LO = -1;
}
}
}
if (--this->actionDelay == 0) {
this->actionDelay = 4;
if (--this->field_0xf == 0) {
this->field_0xf = 8;
this->field_0x78.HALF.LO = gUnk_080CBBC4[Random() & 1];
}
this->direction += this->field_0x78.HALF.LO;
this->direction &= 0x1f;
this->animationState = ((this->direction + 2) & 0x1c) >> 2;
this->frameIndex = this->animationState;
}
}
// clang-format off
void (*const gUnk_080CBB90[])(Entity*) = {
sub_08022BA0,
sub_08022D90,
sub_08022D90,
sub_08022D90,
};
void (*const gUnk_080CBBA0[])(Entity*) = {
sub_08022BD4,
sub_08022BEC,
sub_08001324,
sub_0804A7D4,
sub_08001242,
};
void (*const gUnk_080CBBB4[])(Entity*) = {
sub_08022C58,
sub_08022D40,
};
void (*const gUnk_080CBBBC[])(Entity*) = {
sub_08022DE8,
sub_08022E40,
};
const s8 gUnk_080CBBC4[] = {
1, -1, 0, 0,
};
// clang-format off
+122
View File
@@ -0,0 +1,122 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
extern void sub_0804A4E4(Entity*, Entity*);
extern void (*const gUnk_080CB948[])(Entity*);
extern void (*const gUnk_080CB960[])(Entity*);
void RockChuchu(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CB948);
}
void sub_0802223C(Entity* this) {
gUnk_080CB960[this->action](this);
}
void sub_08022254(Entity* this) {
Entity* ent;
if (this->currentHealth) {
switch (this->bitfield & 0x7f) {
case 4:
case 5:
case 6:
case 8:
case 9:
case 10:
case 0xb:
case 0xc:
case 0xd:
case 0x10:
case 0x11:
case 0x12:
case 0x18:
case 0x19:
case 0x1a:
if ((gPlayerState.field_0xac & 8) == 0)
break;
case 0x16:
case 0x1c:
CreateFx(this, 4, 0);
ent = CreateEnemy(1, 1);
if (ent) {
ent->entityType.parameter = 1;
ent->hurtBlinkTime = -8;
sub_0804A4E4(this, ent);
this->action = 2;
this->flags &= ~0x80;
this->spriteSettings.b.draw = 0;
this->direction = this->field_0x3e;
this->attachedEntity = ent;
}
}
} else {
if (this->damageType != 0x94)
InitializeAnimation(this, 2);
}
sub_0804AA30(this, gUnk_080CB948);
}
void nullsub_131(Entity* this) {
}
void sub_08022368(Entity* this) {
sub_0804A720(this);
this->action = 1;
this->actionDelay = Random();
this->direction = sub_08049F84(this, 1);
InitializeAnimation(this, 0);
}
void sub_08022390(Entity* this) {
if (sub_08049FDC(this, 1)) {
if ((this->actionDelay++ & 0xf) == 0) {
this->direction = sub_08049F84(this, 1);
this->field_0xf = Random() & 4;
}
if (this->field_0xf == 0) {
sub_080AEF88(this);
} else {
this->field_0xf = this->field_0xf - 1;
}
} else {
this->actionDelay = Random();
}
GetNextFrame(this);
}
void sub_080223E4(Entity* this) {
Entity* ent;
ent = this->attachedEntity;
if (ent) {
ent->bitfield = 0x94;
ent->hurtBlinkTime = 0x10;
ent->field_0x42 = 0xc;
ent->field_0x3e = this->direction;
}
DeleteEntity(this);
}
// clang-format off
void (*const gUnk_080CB948[])(Entity*) = {
sub_0802223C,
sub_08022254,
sub_08001324,
sub_0804A7D4,
sub_08001242,
nullsub_131,
};
void (*const gUnk_080CB960[])(Entity*) = {
sub_08022368,
sub_08022390,
sub_080223E4,
};
// clang-format on
+285
View File
@@ -0,0 +1,285 @@
#include "enemy.h"
#include "entity.h"
#include "functions.h"
extern void sub_08001318(Entity*);
extern u32 sub_08049F64(Entity*, u32, u32);
extern void sub_0804A4E4(Entity*, Entity*);
extern void sub_0804AA1C(Entity*);
u32 sub_080228CC(Entity*);
u32 sub_080228F0(Entity*);
extern void (*const gUnk_080CBA28[])(Entity*);
extern void (*const gUnk_080CBA40[])(Entity*);
extern const u8 gUnk_080CBA60[];
extern BoundingBox gUnk_080FD468;
extern BoundingBox gUnk_080FD470;
extern Entity* gUnk_020000B0;
void SpinyChuchu(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CBA28);
SetChildOffset(this, 0, 1, -0x10);
}
void sub_08022434(Entity* this) {
gUnk_080CBA40[this->action](this);
}
void sub_0802244C(Entity* this) {
if (this->currentHealth) {
if (this->damageType == 0x65) {
switch (this->bitfield & 0x7f) {
case 2:
case 3:
this->action = 2;
this->field_0xf = 0x3c;
this->damageType = 0x5c;
this->boundingBox = &gUnk_080FD468;
InitializeAnimation(this, 0);
break;
case 8:
case 9:
case 10:
case 0xb:
case 0xc:
case 0x16:
case 0x18:
case 0x19:
case 0x1a:
sub_0804A9FC(this, 0x1c);
this->action = 5;
this->damageType = 0x5c;
InitializeAnimation(this, 1);
}
} else if (this->bitfield == 0x94) {
sub_0804A9FC(this, 0x1c);
this->action = 5;
InitializeAnimation(this, 1);
}
if (this->field_0x80.HALF.LO != this->currentHealth) {
this->action = 5;
this->damageType = 0x5c;
InitializeAnimation(this, 1);
} else {
if (this->action == 3) {
this->action = 4;
InitializeAnimation(this, 3);
sub_08004488(0x194);
}
}
} else {
InitializeAnimation(this, 1);
}
this->field_0x80.HALF.LO = this->currentHealth;
sub_0804AA30(this, gUnk_080CBA28);
}
void sub_080225A0(Entity* this) {
if (this->animIndex == 1)
GetNextFrame(this);
sub_08001318(this);
}
void sub_080225BC(Entity* this) {
sub_08003FC4(this, 0x1800);
if (this->frames.all & 1) {
sub_0804A7D4(this);
} else {
GetNextFrame(this);
}
}
void nullsub_9(Entity* this) {
}
void sub_080225EC(Entity* this) {
sub_0804A720(this);
this->field_0x80.HALF.LO = this->currentHealth;
this->field_0x80.HALF.HI = 0x5a;
if (this->actionDelay == 0) {
this->action = 2;
InitializeAnimation(this, 0);
} else {
this->action = 1;
this->field_0xf = 0x3c;
this->spriteSettings.b.draw = 3;
this->spriteRendering.b3 = 1;
this->spriteOrientation.flipY = 1;
this->height.HALF.HI = -0x80;
InitializeAnimation(this, 6);
}
}
void sub_08022654(Entity* this) {
switch (this->previousActionFlag) {
case 0:
if (--this->field_0xf)
return;
this->previousActionFlag = 1;
PlaySFX(0x12d);
InitializeAnimation(this, 0);
/* fallthrough */
case 1:
if (sub_08003FC4(this, 0x1800))
return;
this->previousActionFlag = 2;
this->spriteSettings.b.draw = 1;
InitializeAnimation(this, 5);
sub_08004488(0x7d);
UpdateSpriteForCollisionLayer(this);
/* fallthrough */
case 2:
GetNextFrame(this);
if (--this->actionDelay == 0) {
this->action = 3;
this->damageType = 0x65;
InitializeAnimation(this, 2);
}
break;
}
}
void sub_080226EC(Entity* this) {
if (sub_08049FDC(this, 1)) {
if (sub_080228CC(this)) {
this->action = 3;
this->damageType = 0x65;
InitializeAnimation(this, 2);
return;
}
if (sub_080228F0(this)) {
this->action = 6;
this->field_0x20 = 0x12000;
this->nonPlanarMovement = 0x140;
this->direction = GetFacingDirection(this, gUnk_020000B0);
this->damageType = 0x5a;
InitializeAnimation(this, 4);
return;
}
if ((this->actionDelay++ & 7) == 0) {
this->direction = sub_08049F84(this, 1);
}
sub_080AEF88(this);
}
GetNextFrame(this);
}
void sub_08022780(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 0x80) {
this->action = 4;
InitializeAnimation(this, 3);
sub_08004488(0x194);
}
}
void sub_080227AC(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 1) {
this->boundingBox = &gUnk_080FD470;
} else {
this->boundingBox = &gUnk_080FD468;
}
if (this->frames.all & 2) {
this->frames.all &= ~2;
this->damageType = 0x5c;
}
if (this->frames.all & 0x80) {
this->action = 2;
this->field_0xf = gUnk_080CBA60[Random() & 3];
InitializeAnimation(this, 0);
}
}
void sub_0802281C(Entity* this) {
sub_08003FC4(this, 0x1800);
GetNextFrame(this);
if (this->frames.all & 0x80) {
this->action = 2;
this->nonPlanarMovement = 0x20;
InitializeAnimation(this, 0);
sub_0804AA1C(this);
}
}
void sub_08022854(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 1) {
sub_080AEFE0(this);
if (sub_08003FC4(this, 0x1800) == 0) {
this->action = 7;
this->damageType = 0x5c;
InitializeAnimation(this, 5);
sub_08004488(0x7d);
}
}
}
void sub_0802289C(Entity* this) {
GetNextFrame(this);
if (this->frames.all & 0x80) {
this->action = 2;
this->nonPlanarMovement = 0x20;
this->field_0x80.HALF.HI = 0x78;
InitializeAnimation(this, 0);
}
}
u32 sub_080228CC(Entity* this) {
if (this->field_0xf == 0) {
if (sub_08049F64(this, 1, 0x28))
return 1;
} else {
this->field_0xf--;
}
return 0;
}
u32 sub_080228F0(Entity* this) {
if (this->field_0x80.HALF.HI == 0) {
if (sub_08049F64(this, 1, 0x40))
return 1;
} else {
this->field_0x80.HALF.HI--;
}
return 0;
}
// clang-format off
void (*const gUnk_080CBA28[])(Entity*) = {
sub_08022434,
sub_0802244C,
sub_080225A0,
sub_080225BC,
sub_08001242,
nullsub_9,
};
void (*const gUnk_080CBA40[])(Entity*) = {
sub_080225EC,
sub_08022654,
sub_080226EC,
sub_08022780,
sub_080227AC,
sub_0802281C,
sub_08022854,
sub_0802289C,
};
const u8 gUnk_080CBA60[] = {
10, 20, 30, 20,
};
// clang-format on
+2 -2
View File
@@ -30,8 +30,8 @@ void MineralWaterSource_Init(Entity *this) {
this->entityType.parameter = unknownParameters->field_0x00;
this->field_0x40 = unknownParameters->field_0x03;
this->boundingBox->field_0x6 = unknownParameters->field_0x01;
this->boundingBox->field_0x7 = unknownParameters->field_0x02;
this->boundingBox->unknown[6] = unknownParameters->field_0x01;
this->boundingBox->unknown[7] = unknownParameters->field_0x02;
this->flags |= 0x80;
+4 -4
View File
@@ -243,10 +243,10 @@ void sub_0808F498(Entity* this) {
this->action = 1;
this->actionDelay = 64;
var0 = this->entityType.parameter != 0 ? 44 : 43;
this->x.HALF.HI -= this->parent->boundingBox->field_0x6;
this->x.HALF.HI += (s32)Random() % (this->parent->boundingBox->field_0x6 * 2);
this->y.HALF.HI -= this->parent->boundingBox->field_0x7;
this->y.HALF.HI += (s32)Random() % (this->parent->boundingBox->field_0x7 * 2);
this->x.HALF.HI -= this->parent->boundingBox->unknown[6];
this->x.HALF.HI += (s32)Random() % (this->parent->boundingBox->unknown[6] * 2);
this->y.HALF.HI -= this->parent->boundingBox->unknown[7];
this->y.HALF.HI += (s32)Random() % (this->parent->boundingBox->unknown[7] * 2);
sub_0801D2B4(this, var0);
InitializeAnimation(this, 4);
}