mirror of https://github.com/zeldaret/tmc.git
Merge pull request #317 from hatal175/spinybeetle
This commit is contained in:
commit
d9c2998ae9
|
@ -1,966 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start SpinyBeetle
|
||||
SpinyBeetle: @ 0x0803379C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _080337B8 @ =gUnk_080CEBEC
|
||||
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
|
||||
_080337B8: .4byte gUnk_080CEBEC
|
||||
|
||||
thumb_func_start sub_080337BC
|
||||
sub_080337BC: @ 0x080337BC
|
||||
push {lr}
|
||||
ldr r2, _080337D0 @ =gUnk_080CEC04
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080337D0: .4byte gUnk_080CEC04
|
||||
|
||||
thumb_func_start sub_080337D4
|
||||
sub_080337D4: @ 0x080337D4
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x43
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _080337E8
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
bl sub_0804A9FC
|
||||
_080337E8:
|
||||
ldr r1, _08033868 @ =gUnk_080CEBEC
|
||||
adds r0, r4, #0
|
||||
bl sub_0804AA30
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x41
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
adds r5, r2, #0
|
||||
cmp r0, #0
|
||||
beq _08033864
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x3d
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
ble _0803381A
|
||||
ldr r0, [r4, #0x54]
|
||||
cmp r0, #0
|
||||
beq _0803381A
|
||||
adds r0, r4, #0
|
||||
bl sub_08033E1C
|
||||
_0803381A:
|
||||
ldrb r1, [r5]
|
||||
movs r0, #0x3f
|
||||
ands r0, r1
|
||||
cmp r0, #0x14
|
||||
bne _08033864
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #5
|
||||
beq _08033864
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x5a
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0xf]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
subs r0, #0x49
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08049F84
|
||||
adds r0, #4
|
||||
movs r1, #0x18
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x15]
|
||||
adds r0, r4, #0
|
||||
bl sub_08033D78
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl InitializeAnimation
|
||||
_08033864:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08033868: .4byte gUnk_080CEBEC
|
||||
|
||||
thumb_func_start nullsub_159
|
||||
nullsub_159: @ 0x0803386C
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08033870
|
||||
sub_08033870: @ 0x08033870
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08001242
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #5
|
||||
beq _0803388E
|
||||
adds r0, r4, #0
|
||||
bl sub_08033DF0
|
||||
cmp r0, #0
|
||||
beq _0803388E
|
||||
adds r0, r4, #0
|
||||
bl sub_08033E1C
|
||||
_0803388E:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08033890
|
||||
sub_08033890: @ 0x08033890
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
movs r1, #0
|
||||
movs r0, #1
|
||||
strb r0, [r6, #0xc]
|
||||
strb r1, [r6, #0xe]
|
||||
strb r1, [r6, #0xf]
|
||||
ldr r0, [r6, #0x2c]
|
||||
ldr r3, _0803394C @ =0xFFF00000
|
||||
ands r0, r3
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #0xc
|
||||
orrs r0, r2
|
||||
str r0, [r6, #0x7c]
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x80
|
||||
ldr r0, [r6, #0x30]
|
||||
ands r0, r3
|
||||
orrs r0, r2
|
||||
str r0, [r4]
|
||||
ldr r0, [r6, #0x7c]
|
||||
str r0, [r6, #0x2c]
|
||||
ldr r0, [r4]
|
||||
str r0, [r6, #0x30]
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x79
|
||||
strb r1, [r0]
|
||||
adds r0, #1
|
||||
strb r1, [r0]
|
||||
subs r0, #2
|
||||
strb r1, [r0]
|
||||
adds r0, #3
|
||||
strb r1, [r0]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r6, r0]
|
||||
ldr r2, _08033950 @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r6, r4]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x74
|
||||
strh r1, [r4]
|
||||
ldrh r0, [r4]
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
ldr r0, _08033954 @ =0x00004022
|
||||
ldrh r1, [r4]
|
||||
ldrb r2, [r5]
|
||||
bl SetTile
|
||||
ldrb r1, [r6, #0xa]
|
||||
movs r0, #0x7d
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
bne _08033928
|
||||
bl DeleteThisEntity
|
||||
_08033928:
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
str r4, [r6, #0x54]
|
||||
str r6, [r4, #0x50]
|
||||
ldrb r0, [r6, #0xa]
|
||||
cmp r0, #1
|
||||
bne _08033940
|
||||
adds r0, r6, #0
|
||||
bl sub_08033EA8
|
||||
_08033940:
|
||||
adds r0, r6, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0803394C: .4byte 0xFFF00000
|
||||
_08033950: .4byte gRoomControls
|
||||
_08033954: .4byte 0x00004022
|
||||
|
||||
thumb_func_start sub_08033958
|
||||
sub_08033958: @ 0x08033958
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08033DF0
|
||||
cmp r0, #0
|
||||
beq _08033982
|
||||
adds r0, r4, #0
|
||||
bl sub_08033E1C
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x76
|
||||
ldrh r0, [r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
ldrh r1, [r1]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x38
|
||||
ldrb r2, [r2]
|
||||
bl sub_0807B9B8
|
||||
b _08033A72
|
||||
_08033982:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7b
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _08033992
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
b _08033A72
|
||||
_08033992:
|
||||
ldr r0, [r4, #0x7c]
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x80
|
||||
ldr r0, [r0]
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
movs r2, #0x10
|
||||
bl sub_0804A024
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0x10
|
||||
beq _080339E0
|
||||
cmp r5, #0x10
|
||||
bhi _080339BC
|
||||
cmp r5, #0
|
||||
beq _080339C6
|
||||
cmp r5, #8
|
||||
beq _080339F0
|
||||
b _08033A10
|
||||
_080339BC:
|
||||
cmp r5, #0x18
|
||||
beq _08033A00
|
||||
cmp r5, #0xff
|
||||
bne _08033A10
|
||||
b _08033A72
|
||||
_080339C6:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x78
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08033A72
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r4, r1]
|
||||
ldr r1, _080339DC @ =gPlayerEntity
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r1, r2]
|
||||
b _08033A0A
|
||||
.align 2, 0
|
||||
_080339DC: .4byte gPlayerEntity
|
||||
_080339E0:
|
||||
ldr r0, _080339EC @ =gPlayerEntity
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
b _08033A0A
|
||||
.align 2, 0
|
||||
_080339EC: .4byte gPlayerEntity
|
||||
_080339F0:
|
||||
ldr r0, _080339FC @ =gPlayerEntity
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r4, r2]
|
||||
b _08033A0A
|
||||
.align 2, 0
|
||||
_080339FC: .4byte gPlayerEntity
|
||||
_08033A00:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
ldr r1, _08033A74 @ =gPlayerEntity
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r1, r2]
|
||||
_08033A0A:
|
||||
subs r0, r0, r1
|
||||
cmp r0, #0x30
|
||||
bgt _08033A72
|
||||
_08033A10:
|
||||
ldr r0, [r4, #0x54]
|
||||
cmp r0, #0
|
||||
beq _08033A1E
|
||||
bl sub_0806F520
|
||||
cmp r0, #0
|
||||
bne _08033A72
|
||||
_08033A1E:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _08033A2C
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
_08033A2C:
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
strb r5, [r4, #0x15]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #6
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
ldr r0, [r4, #0x30]
|
||||
ldr r1, _08033A78 @ =0xFFF00000
|
||||
ands r0, r1
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #0xc
|
||||
orrs r0, r1
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x76
|
||||
ldrh r0, [r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
ldrh r1, [r1]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x38
|
||||
ldrb r2, [r2]
|
||||
bl sub_0807B9B8
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl InitializeAnimation
|
||||
_08033A72:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08033A74: .4byte gPlayerEntity
|
||||
_08033A78: .4byte 0xFFF00000
|
||||
|
||||
thumb_func_start sub_08033A7C
|
||||
sub_08033A7C: @ 0x08033A7C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08033DF0
|
||||
cmp r0, #0
|
||||
beq _08033A90
|
||||
adds r0, r4, #0
|
||||
bl sub_08033E1C
|
||||
b _08033AC8
|
||||
_08033A90:
|
||||
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 _08033AC8
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x78
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x20
|
||||
strb r0, [r4, #0xf]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
subs r0, #0x59
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl InitializeAnimation
|
||||
_08033AC8:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08033ACC
|
||||
sub_08033ACC: @ 0x08033ACC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08033DF0
|
||||
cmp r0, #0
|
||||
beq _08033AE0
|
||||
adds r0, r4, #0
|
||||
bl sub_08033E1C
|
||||
b _08033B42
|
||||
_08033AE0:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
beq _08033AF8
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
b _08033B42
|
||||
_08033AF8:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08033B3C
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x78
|
||||
strb r0, [r4, #0xe]
|
||||
ldr r2, [r4, #0x2c]
|
||||
ldr r1, _08033B38 @ =0xFFF00000
|
||||
ands r2, r1
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0xc
|
||||
orrs r2, r0
|
||||
str r2, [r4, #0x2c]
|
||||
ldr r0, [r4, #0x30]
|
||||
ands r0, r1
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #0xc
|
||||
orrs r0, r1
|
||||
str r0, [r4, #0x30]
|
||||
str r2, [r4, #0x7c]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x80
|
||||
str r0, [r1]
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
bl InitializeAnimation
|
||||
b _08033B42
|
||||
.align 2, 0
|
||||
_08033B38: .4byte 0xFFF00000
|
||||
_08033B3C:
|
||||
adds r0, r4, #0
|
||||
bl sub_08033D78
|
||||
_08033B42:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08033B44
|
||||
sub_08033B44: @ 0x08033B44
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0xc
|
||||
adds r4, r0, #0
|
||||
bl sub_08033DF0
|
||||
cmp r0, #0
|
||||
beq _08033B62
|
||||
adds r0, r4, #0
|
||||
bl sub_08033E1C
|
||||
b _08033C82
|
||||
_08033B62:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _08033B76
|
||||
b _08033C82
|
||||
_08033B76:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
movs r0, #0
|
||||
mov r8, r0
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x80
|
||||
str r1, [sp, #4]
|
||||
adds r6, r4, #0
|
||||
adds r6, #0x29
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x7b
|
||||
str r2, [sp]
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x74
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x38
|
||||
str r3, [sp, #8]
|
||||
movs r7, #0x76
|
||||
adds r7, r7, r4
|
||||
mov sl, r7
|
||||
ldr r0, _08033C20 @ =gRoomControls
|
||||
mov sb, r0
|
||||
_08033BB2:
|
||||
ldr r1, [r4, #0x2c]
|
||||
ldr r3, _08033C24 @ =0xFFF00000
|
||||
ands r1, r3
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #0xc
|
||||
orrs r1, r2
|
||||
str r1, [r4, #0x2c]
|
||||
ldr r0, [r4, #0x30]
|
||||
ands r0, r3
|
||||
orrs r0, r2
|
||||
str r0, [r4, #0x30]
|
||||
str r1, [r4, #0x7c]
|
||||
ldr r1, [sp, #4]
|
||||
str r0, [r1]
|
||||
ldrb r0, [r6]
|
||||
movs r2, #0x39
|
||||
rsbs r2, r2, #0
|
||||
adds r1, r2, #0
|
||||
ands r0, r1
|
||||
strb r0, [r6]
|
||||
movs r0, #0x78
|
||||
ldr r3, [sp]
|
||||
strb r0, [r3]
|
||||
movs r7, #0x2e
|
||||
ldrsh r2, [r4, r7]
|
||||
mov r1, sb
|
||||
ldrh r0, [r1, #6]
|
||||
subs r2, r2, r0
|
||||
asrs r2, r2, #4
|
||||
movs r3, #0x3f
|
||||
ands r2, r3
|
||||
movs r7, #0x32
|
||||
ldrsh r0, [r4, r7]
|
||||
ldrh r1, [r1, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r2, r0
|
||||
strh r2, [r5]
|
||||
ldrh r0, [r5]
|
||||
ldr r2, [sp, #8]
|
||||
ldrb r1, [r2]
|
||||
bl GetTileIndex
|
||||
mov r3, sl
|
||||
strh r0, [r3]
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
ldr r7, _08033C28 @ =0x00004022
|
||||
cmp r0, r7
|
||||
beq _08033C2C
|
||||
movs r0, #1
|
||||
add r8, r0
|
||||
b _08033C68
|
||||
.align 2, 0
|
||||
_08033C20: .4byte gRoomControls
|
||||
_08033C24: .4byte 0xFFF00000
|
||||
_08033C28: .4byte 0x00004022
|
||||
_08033C2C:
|
||||
ldrb r1, [r4, #0x15]
|
||||
movs r0, #0x18
|
||||
ands r0, r1
|
||||
lsrs r0, r0, #2
|
||||
cmp r0, #2
|
||||
beq _08033C54
|
||||
cmp r0, #2
|
||||
bgt _08033C42
|
||||
cmp r0, #0
|
||||
beq _08033C4C
|
||||
b _08033C68
|
||||
_08033C42:
|
||||
cmp r0, #4
|
||||
beq _08033C5A
|
||||
cmp r0, #6
|
||||
beq _08033C62
|
||||
b _08033C68
|
||||
_08033C4C:
|
||||
ldrh r0, [r4, #0x32]
|
||||
adds r0, #0x10
|
||||
strh r0, [r4, #0x32]
|
||||
b _08033C68
|
||||
_08033C54:
|
||||
ldrh r0, [r4, #0x2e]
|
||||
subs r0, #0x10
|
||||
b _08033C66
|
||||
_08033C5A:
|
||||
ldrh r0, [r4, #0x32]
|
||||
subs r0, #0x10
|
||||
strh r0, [r4, #0x32]
|
||||
b _08033C68
|
||||
_08033C62:
|
||||
ldrh r0, [r4, #0x2e]
|
||||
adds r0, #0x10
|
||||
_08033C66:
|
||||
strh r0, [r4, #0x2e]
|
||||
_08033C68:
|
||||
mov r1, r8
|
||||
cmp r1, #0
|
||||
beq _08033BB2
|
||||
ldr r0, _08033C90 @ =0x00004022
|
||||
ldrh r1, [r5]
|
||||
ldr r3, [sp, #8]
|
||||
ldrb r2, [r3]
|
||||
bl SetTile
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
_08033C82:
|
||||
add sp, #0xc
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08033C90: .4byte 0x00004022
|
||||
|
||||
thumb_func_start sub_08033C94
|
||||
sub_08033C94: @ 0x08033C94
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #3
|
||||
bl UpdateAnimationVariableFrames
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x79
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #1
|
||||
beq _08033CD2
|
||||
cmp r0, #1
|
||||
bgt _08033CB2
|
||||
cmp r0, #0
|
||||
beq _08033CB8
|
||||
b _08033D76
|
||||
_08033CB2:
|
||||
cmp r0, #2
|
||||
beq _08033D18
|
||||
b _08033D76
|
||||
_08033CB8:
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r4, #0x18]
|
||||
lsls r0, r1, #0x1e
|
||||
lsrs r0, r0, #0x1e
|
||||
cmp r0, #1
|
||||
beq _08033CD2
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
_08033CD2:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r2, r0, #0x18
|
||||
cmp r2, #0
|
||||
bne _08033D76
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x79
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
movs r0, #0x78
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x63
|
||||
strb r2, [r0]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08049F84
|
||||
adds r0, #0x14
|
||||
strb r0, [r4, #0x15]
|
||||
bl Random
|
||||
adds r1, r0, #0
|
||||
movs r0, #3
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
beq _08033D12
|
||||
cmp r1, #2
|
||||
beq _08033D68
|
||||
b _08033D6E
|
||||
_08033D12:
|
||||
ldrb r0, [r4, #0x15]
|
||||
adds r0, #8
|
||||
b _08033D6C
|
||||
_08033D18:
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
beq _08033D24
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
b _08033D2A
|
||||
_08033D24:
|
||||
adds r0, r4, #0
|
||||
bl sub_08033D78
|
||||
_08033D2A:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08033D76
|
||||
bl Random
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
adds r0, #0x20
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08049F84
|
||||
adds r0, #0x14
|
||||
strb r0, [r4, #0x15]
|
||||
bl Random
|
||||
adds r1, r0, #0
|
||||
movs r0, #3
|
||||
ands r1, r0
|
||||
cmp r1, #1
|
||||
beq _08033D62
|
||||
cmp r1, #3
|
||||
beq _08033D68
|
||||
b _08033D6E
|
||||
_08033D62:
|
||||
ldrb r0, [r4, #0x15]
|
||||
adds r0, #8
|
||||
b _08033D6C
|
||||
_08033D68:
|
||||
ldrb r0, [r4, #0x15]
|
||||
adds r0, #0x18
|
||||
_08033D6C:
|
||||
strb r0, [r4, #0x15]
|
||||
_08033D6E:
|
||||
ldrb r1, [r4, #0x15]
|
||||
movs r0, #0x18
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x15]
|
||||
_08033D76:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08033D78
|
||||
sub_08033D78: @ 0x08033D78
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
ldrb r0, [r6, #0x15]
|
||||
movs r2, #0x18
|
||||
ands r2, r0
|
||||
lsrs r2, r2, #2
|
||||
ldr r0, _08033DE4 @ =gUnk_080CEC1C
|
||||
adds r2, r2, r0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r6, r1]
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
adds r0, r0, r1
|
||||
ldr r4, _08033DE8 @ =gRoomControls
|
||||
ldrh r1, [r4, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r5, r0, #4
|
||||
movs r3, #0x3f
|
||||
ands r5, r3
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r6, r1]
|
||||
movs r1, #1
|
||||
ldrsb r1, [r2, r1]
|
||||
adds r0, r0, r1
|
||||
ldrh r1, [r4, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r5, r0
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x38
|
||||
ldrb r1, [r4]
|
||||
adds r0, r5, #0
|
||||
bl GetTileType
|
||||
adds r1, r0, #0
|
||||
ldr r0, _08033DEC @ =0x000001C5
|
||||
cmp r1, r0
|
||||
bhi _08033DCE
|
||||
subs r0, #1
|
||||
cmp r1, r0
|
||||
bhs _08033DE2
|
||||
_08033DCE:
|
||||
ldrb r1, [r4]
|
||||
adds r0, r5, #0
|
||||
bl sub_080002E0
|
||||
subs r0, #1
|
||||
cmp r0, #0x3e
|
||||
bls _08033DE2
|
||||
adds r0, r6, #0
|
||||
bl ProcessMovement
|
||||
_08033DE2:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08033DE4: .4byte gUnk_080CEC1C
|
||||
_08033DE8: .4byte gRoomControls
|
||||
_08033DEC: .4byte 0x000001C5
|
||||
|
||||
thumb_func_start sub_08033DF0
|
||||
sub_08033DF0: @ 0x08033DF0
|
||||
push {lr}
|
||||
movs r2, #0
|
||||
ldr r1, [r0, #0x54]
|
||||
cmp r1, #0
|
||||
beq _08033E16
|
||||
ldrb r0, [r1, #0xc]
|
||||
cmp r0, #3
|
||||
beq _08033E10
|
||||
cmp r0, #3
|
||||
bgt _08033E0A
|
||||
cmp r0, #2
|
||||
beq _08033E16
|
||||
b _08033E18
|
||||
_08033E0A:
|
||||
cmp r0, #4
|
||||
bne _08033E18
|
||||
b _08033E16
|
||||
_08033E10:
|
||||
ldrb r0, [r1, #0xd]
|
||||
cmp r0, #1
|
||||
bls _08033E18
|
||||
_08033E16:
|
||||
movs r2, #1
|
||||
_08033E18:
|
||||
adds r0, r2, #0
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_08033E1C
|
||||
sub_08033E1C: @ 0x08033E1C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r2, #0
|
||||
movs r3, #5
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x79
|
||||
strb r2, [r0]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
movs r0, #0x29
|
||||
adds r0, r0, r4
|
||||
mov ip, r0
|
||||
ldrb r1, [r0]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
orrs r0, r3
|
||||
mov r1, ip
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4, #0x30]
|
||||
ldr r1, _08033EA4 @ =0xFFF00000
|
||||
ands r0, r1
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #0xc
|
||||
orrs r0, r1
|
||||
str r0, [r4, #0x30]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3f
|
||||
movs r0, #0x19
|
||||
strb r0, [r1]
|
||||
mov r0, ip
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
mov r1, ip
|
||||
strb r0, [r1]
|
||||
movs r0, #0x30
|
||||
strb r0, [r4, #0xe]
|
||||
strb r2, [r4, #0xf]
|
||||
adds r0, #0xd0
|
||||
strh r0, [r4, #0x24]
|
||||
str r2, [r4, #0x54]
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl InitializeAnimation
|
||||
movs r2, #0xc
|
||||
rsbs r2, r2, #0
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xa
|
||||
bl CreateSpeechBubbleExclamationMark
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08033EA4: .4byte 0xFFF00000
|
||||
|
||||
thumb_func_start sub_08033EA8
|
||||
sub_08033EA8: @ 0x08033EA8
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r0, _08033EC4 @ =gPlayerState
|
||||
adds r0, #0xac
|
||||
ldrh r1, [r0]
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08033EC8
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x3f
|
||||
movs r0, #0x95
|
||||
b _08033ECE
|
||||
.align 2, 0
|
||||
_08033EC4: .4byte gPlayerState
|
||||
_08033EC8:
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x3f
|
||||
movs r0, #0x63
|
||||
_08033ECE:
|
||||
strb r0, [r1]
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
|
@ -25971,16 +25971,6 @@
|
|||
"size": 20,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "spinyBeetle/unusedLabel_0CEBDC.bin",
|
||||
"start": 846812,
|
||||
"size": 16
|
||||
},
|
||||
{
|
||||
"path": "spinyBeetle/gUnk_080CEC1C.bin",
|
||||
"start": 846876,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_MazaalHead_0.bin",
|
||||
"start": 847280,
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
unusedLabel_0CEBDC::
|
||||
.incbin "spinyBeetle/unusedLabel_0CEBDC.bin"
|
||||
|
||||
gUnk_080CEBEC:: @ 080CEBEC
|
||||
.4byte sub_080337BC
|
||||
.4byte sub_080337D4
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08033870
|
||||
.4byte nullsub_159
|
||||
|
||||
gUnk_080CEC04:: @ 080CEC04
|
||||
.4byte sub_08033890
|
||||
.4byte sub_08033958
|
||||
.4byte sub_08033A7C
|
||||
.4byte sub_08033ACC
|
||||
.4byte sub_08033B44
|
||||
.4byte sub_08033C94
|
||||
|
||||
gUnk_080CEC1C:: @ 080CEC1C
|
||||
.incbin "spinyBeetle/gUnk_080CEC1C.bin"
|
|
@ -375,7 +375,7 @@ SECTIONS {
|
|||
asm/enemy/mulldozer.o(.text);
|
||||
src/enemy/bombarossa.o(.text);
|
||||
src/enemy/wisp.o(.text);
|
||||
asm/enemy/spinyBeetle.o(.text);
|
||||
src/enemy/spinyBeetle.o(.text);
|
||||
src/enemy/mazaalHead.o(.text);
|
||||
src/enemy/mazaalMacro.o(.text);
|
||||
src/enemy/mazaalHand.o(.text);
|
||||
|
@ -1036,7 +1036,7 @@ SECTIONS {
|
|||
data/animations/enemy/bombarossa.o(.rodata);
|
||||
data/const/enemy/wisp.o(.rodata);
|
||||
data/animations/enemy/wisp.o(.rodata);
|
||||
data/const/enemy/spinyBeetle.o(.rodata);
|
||||
src/enemy/spinyBeetle.o(.rodata);
|
||||
data/animations/enemy/spinyBeetle.o(.rodata);
|
||||
src/enemy/mazaalHead.o(.rodata);
|
||||
data/animations/enemy/mazaalHead.o(.rodata);
|
||||
|
|
|
@ -0,0 +1,394 @@
|
|||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
#include "object.h"
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
u8 filler[0xc];
|
||||
u16 tile;
|
||||
u16 tileIndex;
|
||||
u8 unk_78;
|
||||
u8 unk_79;
|
||||
u8 unk_7a;
|
||||
u8 unk_7b;
|
||||
s32 unk_7c;
|
||||
s32 unk_80;
|
||||
u16 unk_84;
|
||||
} SpinyBeetleEntity;
|
||||
|
||||
void (*const gUnk_080CEBEC[])(Entity*);
|
||||
void (*const gUnk_080CEC04[])(SpinyBeetleEntity*);
|
||||
const s8 gUnk_080CEC1C[];
|
||||
|
||||
extern void sub_08033E1C(SpinyBeetleEntity*);
|
||||
extern void sub_08033D78(SpinyBeetleEntity*);
|
||||
extern u32 sub_08033DF0(SpinyBeetleEntity*);
|
||||
extern void SpinyBeetle_SetHitType(SpinyBeetleEntity*);
|
||||
extern void sub_0804AA30(Entity*, EntityActionArray);
|
||||
extern void sub_0807B9B8(s32, s32, s32);
|
||||
extern u32 sub_0804A024(Entity*, u32, u32);
|
||||
|
||||
void SpinyBeetle(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CEBEC);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
}
|
||||
|
||||
void sub_080337BC(SpinyBeetleEntity* this) {
|
||||
gUnk_080CEC04[super->action](this);
|
||||
}
|
||||
|
||||
void sub_080337D4(SpinyBeetleEntity* this) {
|
||||
if (super->field_0x43) {
|
||||
sub_0804A9FC(super, 0x1c);
|
||||
}
|
||||
|
||||
sub_0804AA30(super, gUnk_080CEBEC);
|
||||
if (super->bitfield & 0x80) {
|
||||
if (super->iframes > 0 && super->child) {
|
||||
sub_08033E1C(this);
|
||||
}
|
||||
|
||||
if ((super->bitfield & 0x3f) == 0x14 && super->action != 5) {
|
||||
super->action = 3;
|
||||
super->actionDelay = 0x5a;
|
||||
super->field_0xf = 0x10;
|
||||
super->spritePriority.b1 = 1;
|
||||
super->direction = DirectionRoundUp(sub_08049F84(super, 1));
|
||||
sub_08033D78(this);
|
||||
InitializeAnimation(super, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_159(SpinyBeetleEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08033870(SpinyBeetleEntity* this) {
|
||||
sub_08001242(super);
|
||||
|
||||
if (super->action != 5) {
|
||||
if (sub_08033DF0(this)) {
|
||||
sub_08033E1C(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SpinyBeetle_Init(SpinyBeetleEntity* this) {
|
||||
Entity* obj;
|
||||
super->action = 1;
|
||||
super->actionDelay = 0;
|
||||
super->field_0xf = 0;
|
||||
this->unk_7c = (super->x.WORD & 0xfff00000) | 0x80000;
|
||||
this->unk_80 = (super->y.WORD & 0xfff00000) | 0x80000;
|
||||
super->x.WORD = this->unk_7c;
|
||||
super->y.WORD = this->unk_80;
|
||||
this->unk_79 = 0;
|
||||
this->unk_7a = 0;
|
||||
this->unk_78 = 0;
|
||||
this->unk_7b = 0;
|
||||
this->tile = COORD_TO_TILE(super);
|
||||
this->tileIndex = GetTileIndex(this->tile, super->collisionLayer);
|
||||
SetTile(0x4022, this->tile, super->collisionLayer);
|
||||
obj = CreateObject(OBJECT_ON_BEETLE, super->type, 0);
|
||||
|
||||
if (obj == NULL) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
CopyPosition(super, obj);
|
||||
super->child = obj;
|
||||
obj->parent = super;
|
||||
|
||||
if (super->type == 1) {
|
||||
SpinyBeetle_SetHitType(this);
|
||||
}
|
||||
|
||||
InitializeAnimation(super, 0);
|
||||
}
|
||||
|
||||
void sub_08033958(SpinyBeetleEntity* this) {
|
||||
u32 direction;
|
||||
if (sub_08033DF0(this)) {
|
||||
sub_08033E1C(this);
|
||||
sub_0807B9B8(this->tileIndex, this->tile, super->collisionLayer);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->unk_7b) {
|
||||
this->unk_7b--;
|
||||
return;
|
||||
}
|
||||
|
||||
super->x.WORD = this->unk_7c;
|
||||
super->y.WORD = this->unk_80;
|
||||
direction = sub_0804A024(super, 1, 0x10);
|
||||
switch (direction) {
|
||||
case 0xff:
|
||||
return;
|
||||
case 0:
|
||||
if (this->unk_78 == 0)
|
||||
return;
|
||||
if (super->y.HALF.HI - gPlayerEntity.y.HALF.HI > 0x30)
|
||||
return;
|
||||
break;
|
||||
case 0x10:
|
||||
if (gPlayerEntity.y.HALF.HI - super->y.HALF.HI > 0x30)
|
||||
return;
|
||||
break;
|
||||
case 8:
|
||||
if (gPlayerEntity.x.HALF.HI - super->x.HALF.HI > 0x30)
|
||||
return;
|
||||
break;
|
||||
case 0x18:
|
||||
if (super->x.HALF.HI - gPlayerEntity.x.HALF.HI > 0x30)
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
if (super->child && sub_0806F520(super->child)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->unk_78 == 0) {
|
||||
this->unk_78 = 1;
|
||||
}
|
||||
|
||||
super->action = 2;
|
||||
super->direction = direction;
|
||||
super->spriteSettings.draw = 1;
|
||||
COLLISION_ON(super);
|
||||
|
||||
super->y.WORD = (super->y.WORD & 0xfff00000) | 0xC0000;
|
||||
sub_0807B9B8(this->tileIndex, this->tile, super->collisionLayer);
|
||||
InitializeAnimation(super, 2);
|
||||
}
|
||||
|
||||
void sub_08033A7C(SpinyBeetleEntity* this) {
|
||||
if (sub_08033DF0(this)) {
|
||||
sub_08033E1C(this);
|
||||
return;
|
||||
}
|
||||
|
||||
GetNextFrame(super);
|
||||
if ((super->frame & 0x80) == 0)
|
||||
return;
|
||||
|
||||
super->action = 3;
|
||||
super->actionDelay = 0x78;
|
||||
super->field_0xf = 0x20;
|
||||
super->spritePriority.b1 = 1;
|
||||
InitializeAnimation(super, 3);
|
||||
}
|
||||
|
||||
void sub_08033ACC(SpinyBeetleEntity* this) {
|
||||
if (sub_08033DF0(this)) {
|
||||
sub_08033E1C(this);
|
||||
return;
|
||||
}
|
||||
|
||||
GetNextFrame(super);
|
||||
GetNextFrame(super);
|
||||
|
||||
if (super->field_0xf) {
|
||||
super->field_0xf--;
|
||||
return;
|
||||
}
|
||||
|
||||
if (--super->actionDelay == 0) {
|
||||
super->action = 4;
|
||||
super->actionDelay = 0x78;
|
||||
super->x.WORD = (super->x.WORD & 0xfff00000) | 0x80000;
|
||||
super->y.WORD = (super->y.WORD & 0xfff00000) | 0xC0000;
|
||||
this->unk_7c = super->x.WORD;
|
||||
this->unk_80 = super->y.WORD;
|
||||
InitializeAnimation(super, 4);
|
||||
} else {
|
||||
sub_08033D78(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08033B44(SpinyBeetleEntity* this) {
|
||||
u32 stop;
|
||||
if (sub_08033DF0(this)) {
|
||||
sub_08033E1C(this);
|
||||
return;
|
||||
}
|
||||
|
||||
GetNextFrame(super);
|
||||
if (--super->actionDelay)
|
||||
return;
|
||||
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 0;
|
||||
COLLISION_OFF(super);
|
||||
|
||||
stop = 0;
|
||||
while (!stop) {
|
||||
super->x.WORD = (super->x.WORD & 0xfff00000) | 0x80000;
|
||||
super->y.WORD = (super->y.WORD & 0xfff00000) | 0x80000;
|
||||
this->unk_7c = super->x.WORD;
|
||||
this->unk_80 = super->y.WORD;
|
||||
super->spritePriority.b1 = 0;
|
||||
this->unk_7b = 0x78;
|
||||
this->tile = COORD_TO_TILE(super);
|
||||
this->tileIndex = GetTileIndex(this->tile, super->collisionLayer);
|
||||
|
||||
if (this->tileIndex != 0x4022) {
|
||||
stop += 1;
|
||||
} else {
|
||||
switch (DirectionRound(super->direction) >> 2) {
|
||||
case 0:
|
||||
super->y.HALF.HI += 0x10;
|
||||
break;
|
||||
case 2:
|
||||
super->x.HALF.HI -= 0x10;
|
||||
break;
|
||||
case 4:
|
||||
super->y.HALF.HI -= 0x10;
|
||||
break;
|
||||
case 6:
|
||||
super->x.HALF.HI += 0x10;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SetTile(0x4022, this->tile, super->collisionLayer);
|
||||
InitializeAnimation(super, 0);
|
||||
}
|
||||
|
||||
void sub_08033C94(SpinyBeetleEntity* this) {
|
||||
UpdateAnimationVariableFrames(super, 3);
|
||||
switch (this->unk_79) {
|
||||
case 0:
|
||||
this->unk_79 = 1;
|
||||
if (super->spriteSettings.draw != 1) {
|
||||
super->spriteSettings.draw = 1;
|
||||
}
|
||||
case 1:
|
||||
if (--super->actionDelay)
|
||||
return;
|
||||
this->unk_79 = 2;
|
||||
super->actionDelay = 0x78;
|
||||
super->spriteOffsetY = 0;
|
||||
super->direction = sub_08049F84(super, 1) + 0x14;
|
||||
|
||||
switch (Random() & 3) {
|
||||
case 0:
|
||||
super->direction += 8;
|
||||
break;
|
||||
case 2:
|
||||
super->direction += 0x18;
|
||||
break;
|
||||
}
|
||||
|
||||
super->direction &= 0x18;
|
||||
break;
|
||||
case 2:
|
||||
if (super->field_0xf != 0) {
|
||||
super->field_0xf--;
|
||||
} else {
|
||||
sub_08033D78(this);
|
||||
}
|
||||
|
||||
if (--super->actionDelay)
|
||||
return;
|
||||
super->actionDelay = (Random() & 0x1f) + 0x20;
|
||||
super->direction = sub_08049F84(super, 1) + 0x14;
|
||||
switch (Random() & 3) {
|
||||
case 1:
|
||||
super->direction += 8;
|
||||
break;
|
||||
case 3:
|
||||
super->direction += 0x18;
|
||||
break;
|
||||
}
|
||||
|
||||
super->direction &= 0x18;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08033D78(SpinyBeetleEntity* this) {
|
||||
u32 dir = DirectionRound(super->direction) >> 2;
|
||||
const s8* ptr = gUnk_080CEC1C + dir;
|
||||
s32 tile;
|
||||
u32 type;
|
||||
tile = COORD_TO_TILE_OFFSET(super, -ptr[0], -ptr[1]);
|
||||
type = GetTileType(tile, super->collisionLayer);
|
||||
|
||||
switch (type) {
|
||||
case 0x1c4:
|
||||
case 0x1c5:
|
||||
break;
|
||||
default:
|
||||
if (sub_080002E0(tile, super->collisionLayer) - 1 > 0x3e)
|
||||
ProcessMovement(super);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_08033DF0(SpinyBeetleEntity* this) {
|
||||
bool32 rv = 0;
|
||||
if (super->child == NULL) {
|
||||
rv = 1;
|
||||
} else {
|
||||
switch (super->child->action) {
|
||||
case 4:
|
||||
rv = 1;
|
||||
break;
|
||||
case 3:
|
||||
if (super->child->subAction > 1) {
|
||||
rv = 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
rv = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
void sub_08033E1C(SpinyBeetleEntity* this) {
|
||||
super->action = 5;
|
||||
this->unk_79 = 0;
|
||||
super->spriteSettings.draw = 1;
|
||||
COLLISION_ON(super);
|
||||
super->spritePriority.b0 = 5;
|
||||
super->y.WORD = (super->y.WORD & 0xfff00000) | 0xC0000;
|
||||
super->hitType = 0x19;
|
||||
super->spritePriority.b1 = 1;
|
||||
super->actionDelay = 0x30;
|
||||
super->field_0xf = 0;
|
||||
super->speed = 0x100;
|
||||
super->child = NULL;
|
||||
InitializeAnimation(super, 3);
|
||||
CreateSpeechBubbleExclamationMark(super, 0xa, -12);
|
||||
}
|
||||
|
||||
void SpinyBeetle_SetHitType(SpinyBeetleEntity* this) {
|
||||
if ((gPlayerState.field_0xac & 8)) {
|
||||
super->hitType = 0x95;
|
||||
} else {
|
||||
super->hitType = 0x63;
|
||||
}
|
||||
}
|
||||
|
||||
const u16 unusedLabel_0CEBDC[] = {
|
||||
0x3F, 0x1C, 0x50, 0x2A, 0x55, 0x1D, 0x5C, 0x2B,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CEBEC[])(Entity*) = {
|
||||
(EntityActionPtr)sub_080337BC, (EntityActionPtr)sub_080337D4, sub_08001324, sub_0804A7D4,
|
||||
(EntityActionPtr)sub_08033870, (EntityActionPtr)nullsub_159,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CEC04[])(SpinyBeetleEntity*) = {
|
||||
SpinyBeetle_Init, sub_08033958, sub_08033A7C, sub_08033ACC, sub_08033B44, sub_08033C94,
|
||||
};
|
||||
|
||||
const s8 gUnk_080CEC1C[] = { 0, -8, 8, 0, 0, 8, -8, 0 };
|
Loading…
Reference in New Issue