mirror of https://github.com/zeldaret/tmc.git
Decompile ObjectOnSpinyBeetle
This commit is contained in:
parent
8d86343827
commit
4a1d2fb406
|
@ -1,651 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start ObjectOnSpinyBeetle
|
|
||||||
ObjectOnSpinyBeetle: @ 0x08098544
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _08098558 @ =gUnk_0812350C
|
|
||||||
ldrb r1, [r0, #0xc]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl _call_via_r1
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08098558: .4byte gUnk_0812350C
|
|
||||||
|
|
||||||
thumb_func_start sub_0809855C
|
|
||||||
sub_0809855C: @ 0x0809855C
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r3, #0
|
|
||||||
movs r5, #1
|
|
||||||
strb r5, [r4, #0xc]
|
|
||||||
ldrb r0, [r4, #0x10]
|
|
||||||
movs r2, #0x80
|
|
||||||
orrs r0, r2
|
|
||||||
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
|
|
||||||
movs r1, #6
|
|
||||||
orrs r0, r1
|
|
||||||
mov r1, ip
|
|
||||||
strb r0, [r1]
|
|
||||||
ldrb r1, [r4, #0x19]
|
|
||||||
movs r0, #0x3f
|
|
||||||
ands r0, r1
|
|
||||||
orrs r0, r2
|
|
||||||
strb r0, [r4, #0x19]
|
|
||||||
strb r3, [r4, #0xf]
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x3f
|
|
||||||
movs r0, #0x6e
|
|
||||||
strb r0, [r1]
|
|
||||||
subs r1, #4
|
|
||||||
movs r0, #0x86
|
|
||||||
strb r0, [r1]
|
|
||||||
strb r3, [r4, #0x16]
|
|
||||||
ldrb r0, [r4, #0xa]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080985AC
|
|
||||||
movs r0, #2
|
|
||||||
strb r0, [r4, #0x1c]
|
|
||||||
b _080985AE
|
|
||||||
_080985AC:
|
|
||||||
strb r5, [r4, #0x1c]
|
|
||||||
_080985AE:
|
|
||||||
ldr r1, [r4, #0x50]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl SortEntityBelow
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08098918
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080985C0
|
|
||||||
sub_080985C0: @ 0x080985C0
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl sub_080989E4
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080985CE
|
|
||||||
b _080986FC
|
|
||||||
_080985CE:
|
|
||||||
ldrb r0, [r0, #0xc]
|
|
||||||
cmp r0, #4
|
|
||||||
bls _080985D6
|
|
||||||
b _080986E6
|
|
||||||
_080985D6:
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x41
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080985E6
|
|
||||||
b _080986EE
|
|
||||||
_080985E6:
|
|
||||||
movs r0, #0x3f
|
|
||||||
ands r0, r1
|
|
||||||
subs r0, #4
|
|
||||||
cmp r0, #0x1c
|
|
||||||
bls _080985F2
|
|
||||||
b _08098702
|
|
||||||
_080985F2:
|
|
||||||
lsls r0, r0, #2
|
|
||||||
ldr r1, _080985FC @ =_08098600
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.align 2, 0
|
|
||||||
_080985FC: .4byte _08098600
|
|
||||||
_08098600: @ jump table
|
|
||||||
.4byte _080986C4 @ case 0
|
|
||||||
.4byte _080986C4 @ case 1
|
|
||||||
.4byte _080986C4 @ case 2
|
|
||||||
.4byte _08098702 @ case 3
|
|
||||||
.4byte _080986C4 @ case 4
|
|
||||||
.4byte _080986C4 @ case 5
|
|
||||||
.4byte _080986C4 @ case 6
|
|
||||||
.4byte _080986C4 @ case 7
|
|
||||||
.4byte _080986C4 @ case 8
|
|
||||||
.4byte _080986C4 @ case 9
|
|
||||||
.4byte _08098702 @ case 10
|
|
||||||
.4byte _0809867E @ case 11
|
|
||||||
.4byte _080986C4 @ case 12
|
|
||||||
.4byte _080986C4 @ case 13
|
|
||||||
.4byte _080986C4 @ case 14
|
|
||||||
.4byte _08098674 @ case 15
|
|
||||||
.4byte _080986E0 @ case 16
|
|
||||||
.4byte _08098702 @ case 17
|
|
||||||
.4byte _080986E0 @ case 18
|
|
||||||
.4byte _08098702 @ case 19
|
|
||||||
.4byte _080986C4 @ case 20
|
|
||||||
.4byte _080986C4 @ case 21
|
|
||||||
.4byte _080986C4 @ case 22
|
|
||||||
.4byte _08098702 @ case 23
|
|
||||||
.4byte _08098702 @ case 24
|
|
||||||
.4byte _0809867E @ case 25
|
|
||||||
.4byte _08098702 @ case 26
|
|
||||||
.4byte _08098702 @ case 27
|
|
||||||
.4byte _080986E0 @ case 28
|
|
||||||
_08098674:
|
|
||||||
movs r1, #0
|
|
||||||
movs r0, #3
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r1, [r4, #0xd]
|
|
||||||
b _08098702
|
|
||||||
_0809867E:
|
|
||||||
movs r2, #0
|
|
||||||
movs r0, #4
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
movs r0, #0xa8
|
|
||||||
lsls r0, r0, #0xa
|
|
||||||
str r0, [r4, #0x20]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x63
|
|
||||||
strb r2, [r0]
|
|
||||||
ldrb r1, [r4, #0x18]
|
|
||||||
movs r0, #0x31
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #0x10
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, #0x18]
|
|
||||||
adds r3, r4, #0
|
|
||||||
adds r3, #0x29
|
|
||||||
ldrb r1, [r3]
|
|
||||||
movs r0, #0x39
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #0x18
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r3]
|
|
||||||
ldrb r1, [r4, #0x10]
|
|
||||||
movs r0, #0x7f
|
|
||||||
ands r0, r1
|
|
||||||
strb r0, [r4, #0x10]
|
|
||||||
ldr r0, [r4, #0x50]
|
|
||||||
str r2, [r0, #0x54]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080988E8
|
|
||||||
b _08098702
|
|
||||||
_080986C4:
|
|
||||||
ldrb r0, [r4, #0xa]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080986E6
|
|
||||||
ldr r0, _080986DC @ =gPlayerState
|
|
||||||
adds r0, #0xac
|
|
||||||
ldrh r1, [r0]
|
|
||||||
movs r0, #8
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08098702
|
|
||||||
b _080986E6
|
|
||||||
.align 2, 0
|
|
||||||
_080986DC: .4byte gPlayerState
|
|
||||||
_080986E0:
|
|
||||||
ldrb r0, [r4, #0xa]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08098702
|
|
||||||
_080986E6:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
b _08098702
|
|
||||||
_080986EE:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08098918
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08078930
|
|
||||||
b _08098702
|
|
||||||
_080986FC:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
_08098702:
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08098704
|
|
||||||
sub_08098704: @ 0x08098704
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _08098718 @ =gUnk_08123524
|
|
||||||
ldrb r1, [r0, #0xd]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl _call_via_r1
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08098718: .4byte gUnk_08123524
|
|
||||||
|
|
||||||
thumb_func_start sub_0809871C
|
|
||||||
sub_0809871C: @ 0x0809871C
|
|
||||||
adds r3, r0, #0
|
|
||||||
ldrb r1, [r3, #0x10]
|
|
||||||
movs r0, #0x80
|
|
||||||
movs r2, #0
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r3, #0x10]
|
|
||||||
adds r1, r3, #0
|
|
||||||
adds r1, #0x3c
|
|
||||||
movs r0, #7
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r1, #3
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r0, _08098754 @ =gPlayerEntity
|
|
||||||
adds r0, #0x3b
|
|
||||||
ldrb r0, [r0]
|
|
||||||
subs r1, #4
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r0, r3, #0
|
|
||||||
adds r0, #0x63
|
|
||||||
strb r2, [r0]
|
|
||||||
ldr r0, [r3, #0x50]
|
|
||||||
str r2, [r0, #0x54]
|
|
||||||
ldrb r0, [r3, #0xd]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r3, #0xd]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_08098754: .4byte gPlayerEntity
|
|
||||||
|
|
||||||
thumb_func_start nullsub_533
|
|
||||||
nullsub_533: @ 0x08098758
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0809875C
|
|
||||||
sub_0809875C: @ 0x0809875C
|
|
||||||
adds r0, #0x29
|
|
||||||
ldrb r2, [r0]
|
|
||||||
movs r1, #0x39
|
|
||||||
rsbs r1, r1, #0
|
|
||||||
ands r1, r2
|
|
||||||
movs r2, #0x18
|
|
||||||
orrs r1, r2
|
|
||||||
strb r1, [r0]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08098770
|
|
||||||
sub_08098770: @ 0x08098770
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl sub_080043E8
|
|
||||||
cmp r0, #2
|
|
||||||
beq _0809878C
|
|
||||||
cmp r0, #2
|
|
||||||
bhi _08098786
|
|
||||||
cmp r0, #1
|
|
||||||
beq _08098792
|
|
||||||
b _080987A4
|
|
||||||
_08098786:
|
|
||||||
cmp r0, #3
|
|
||||||
beq _08098798
|
|
||||||
b _080987A4
|
|
||||||
_0809878C:
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0xb
|
|
||||||
b _0809879C
|
|
||||||
_08098792:
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0
|
|
||||||
b _0809879C
|
|
||||||
_08098798:
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0xc
|
|
||||||
_0809879C:
|
|
||||||
movs r2, #0
|
|
||||||
bl CreateFx
|
|
||||||
b _080987AC
|
|
||||||
_080987A4:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
b _080987B0
|
|
||||||
_080987AC:
|
|
||||||
bl DeleteThisEntity
|
|
||||||
_080987B0:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080987B4
|
|
||||||
sub_080987B4: @ 0x080987B4
|
|
||||||
push {lr}
|
|
||||||
bl DeleteThisEntity
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_080987BC
|
|
||||||
sub_080987BC: @ 0x080987BC
|
|
||||||
push {lr}
|
|
||||||
adds r1, r0, #0
|
|
||||||
ldr r0, _080987D0 @ =gPlayerState
|
|
||||||
ldrb r0, [r0, #5]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080987CE
|
|
||||||
adds r0, r1, #0
|
|
||||||
bl sub_080987D4
|
|
||||||
_080987CE:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080987D0: .4byte gPlayerState
|
|
||||||
|
|
||||||
thumb_func_start sub_080987D4
|
|
||||||
sub_080987D4: @ 0x080987D4
|
|
||||||
movs r2, #0
|
|
||||||
movs r1, #1
|
|
||||||
strb r1, [r0, #0xc]
|
|
||||||
strb r2, [r0, #0xd]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080987E0
|
|
||||||
sub_080987E0: @ 0x080987E0
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r1, _0809880C @ =gUnk_08123540
|
|
||||||
ldrb r0, [r4, #0xd]
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl _call_via_r1
|
|
||||||
ldrb r0, [r4, #0xd]
|
|
||||||
cmp r0, #1
|
|
||||||
bhi _0809880A
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989E4
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0809880A
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
_0809880A:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0809880C: .4byte gUnk_08123540
|
|
||||||
|
|
||||||
thumb_func_start sub_08098810
|
|
||||||
sub_08098810: @ 0x08098810
|
|
||||||
movs r2, #0
|
|
||||||
movs r1, #1
|
|
||||||
strb r1, [r0, #0xd]
|
|
||||||
movs r1, #0x30
|
|
||||||
strb r1, [r0, #0x1d]
|
|
||||||
strb r2, [r0, #0xe]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08098820
|
|
||||||
sub_08098820: @ 0x08098820
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
ldr r0, _0809884C @ =gPlayerState
|
|
||||||
ldrb r1, [r0, #0x1c]
|
|
||||||
movs r0, #0xf
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #1
|
|
||||||
bne _0809883E
|
|
||||||
adds r0, r2, #0
|
|
||||||
adds r0, #0x41
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x7f
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0x13
|
|
||||||
beq _08098850
|
|
||||||
_0809883E:
|
|
||||||
adds r1, r2, #0
|
|
||||||
adds r1, #0x62
|
|
||||||
movs r0, #0
|
|
||||||
strb r0, [r1]
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r2, #0xc]
|
|
||||||
b _08098856
|
|
||||||
.align 2, 0
|
|
||||||
_0809884C: .4byte gPlayerState
|
|
||||||
_08098850:
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl sub_0806F4E8
|
|
||||||
_08098856:
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08098858
|
|
||||||
sub_08098858: @ 0x08098858
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r1, [r4, #0xe]
|
|
||||||
cmp r1, #0
|
|
||||||
bne _08098878
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x62
|
|
||||||
strb r1, [r0]
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x63
|
|
||||||
movs r0, #0xfe
|
|
||||||
strb r0, [r2]
|
|
||||||
ldr r0, [r4, #0x50]
|
|
||||||
str r1, [r0, #0x54]
|
|
||||||
_08098878:
|
|
||||||
ldr r0, _0809889C @ =gPlayerState
|
|
||||||
ldrb r1, [r0, #0x1c]
|
|
||||||
movs r0, #0xf
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #1
|
|
||||||
bne _08098892
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x41
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x7f
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0x13
|
|
||||||
beq _080988A0
|
|
||||||
_08098892:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
b _080988B4
|
|
||||||
.align 2, 0
|
|
||||||
_0809889C: .4byte gPlayerState
|
|
||||||
_080988A0:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806F3E4
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080988B4
|
|
||||||
ldrb r0, [r4, #0xa]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080988B4
|
|
||||||
bl DeleteThisEntity
|
|
||||||
_080988B4:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080988B8
|
|
||||||
sub_080988B8: @ 0x080988B8
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
ldr r0, _080988CC @ =gPlayerState
|
|
||||||
ldrb r0, [r0, #0x1c]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080988D0
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
b _080988D8
|
|
||||||
.align 2, 0
|
|
||||||
_080988CC: .4byte gPlayerState
|
|
||||||
_080988D0:
|
|
||||||
ldrb r1, [r2, #0x10]
|
|
||||||
movs r0, #0x7f
|
|
||||||
ands r0, r1
|
|
||||||
strb r0, [r2, #0x10]
|
|
||||||
_080988D8:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start nullsub_123
|
|
||||||
nullsub_123: @ 0x080988DC
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080988E0
|
|
||||||
sub_080988E0: @ 0x080988E0
|
|
||||||
push {lr}
|
|
||||||
bl sub_080989C0
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_080988E8
|
|
||||||
sub_080988E8: @ 0x080988E8
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r0, [r4, #0x20]
|
|
||||||
cmp r0, #0
|
|
||||||
bge _080988FA
|
|
||||||
ldrb r0, [r4, #0x18]
|
|
||||||
movs r1, #0x80
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, #0x18]
|
|
||||||
_080988FA:
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #6
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl GravityUpdate
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0809890E
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
_0809890E:
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08098910
|
|
||||||
sub_08098910: @ 0x08098910
|
|
||||||
push {lr}
|
|
||||||
bl sub_080989C0
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08098918
|
|
||||||
sub_08098918: @ 0x08098918
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl sub_080989E4
|
|
||||||
adds r6, r0, #0
|
|
||||||
cmp r6, #0
|
|
||||||
bne _0809892E
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080989C0
|
|
||||||
b _080989BC
|
|
||||||
_0809892E:
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl CopyPosition
|
|
||||||
ldrb r1, [r6, #0x10]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
lsrs r5, r0, #0x18
|
|
||||||
cmp r5, #0
|
|
||||||
beq _08098990
|
|
||||||
ldrb r0, [r4, #0xf]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08098968
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
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 r1, [r4, #0x50]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl SortEntityBelow
|
|
||||||
_08098968:
|
|
||||||
ldr r2, _0809898C @ =gUnk_08123558
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0xf
|
|
||||||
ands r0, r1
|
|
||||||
adds r0, r0, r2
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
subs r0, #8
|
|
||||||
movs r1, #0
|
|
||||||
strh r0, [r4, #0x36]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x63
|
|
||||||
strb r1, [r0]
|
|
||||||
b _080989BC
|
|
||||||
.align 2, 0
|
|
||||||
_0809898C: .4byte gUnk_08123558
|
|
||||||
_08098990:
|
|
||||||
ldrb r0, [r4, #0xf]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080989B2
|
|
||||||
strb r5, [r4, #0xf]
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x29
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, #8
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #6
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
ldr r1, [r4, #0x50]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl SortEntityBelow
|
|
||||||
_080989B2:
|
|
||||||
strh r5, [r4, #0x36]
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x63
|
|
||||||
movs r0, #3
|
|
||||||
strb r0, [r1]
|
|
||||||
_080989BC:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080989C0
|
|
||||||
sub_080989C0: @ 0x080989C0
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl sub_080989E4
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080989D2
|
|
||||||
ldr r1, [r4, #0x50]
|
|
||||||
movs r0, #0
|
|
||||||
str r0, [r1, #0x54]
|
|
||||||
_080989D2:
|
|
||||||
ldrb r1, [r4, #0xa]
|
|
||||||
adds r1, #3
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r2, #0
|
|
||||||
bl CreateFx
|
|
||||||
bl DeleteThisEntity
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_080989E4
|
|
||||||
sub_080989E4: @ 0x080989E4
|
|
||||||
push {lr}
|
|
||||||
ldr r1, [r0, #0x50]
|
|
||||||
cmp r1, #0
|
|
||||||
beq _080989F4
|
|
||||||
ldr r0, [r1, #4]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080989F4
|
|
||||||
movs r1, #0
|
|
||||||
_080989F4:
|
|
||||||
adds r0, r1, #0
|
|
||||||
pop {pc}
|
|
|
@ -44945,11 +44945,6 @@
|
||||||
"start": 1193212,
|
"start": 1193212,
|
||||||
"size": 8
|
"size": 8
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"path": "objectOnSpinyBeetle/gUnk_08123558.bin",
|
|
||||||
"start": 1193304,
|
|
||||||
"size": 16
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"path": "animations/gSpriteAnimations_PicoBloom_0.bin",
|
"path": "animations/gSpriteAnimations_PicoBloom_0.bin",
|
||||||
"start": 1193338,
|
"start": 1193338,
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.section .rodata
|
|
||||||
.align 2
|
|
||||||
|
|
||||||
gUnk_0812350C:: @ 0812350C
|
|
||||||
.4byte sub_0809855C
|
|
||||||
.4byte sub_080985C0
|
|
||||||
.4byte sub_08098704
|
|
||||||
.4byte sub_080987E0
|
|
||||||
.4byte sub_080988E8
|
|
||||||
.4byte sub_08098910
|
|
||||||
|
|
||||||
gUnk_08123524:: @ 08123524
|
|
||||||
.4byte sub_0809871C
|
|
||||||
.4byte nullsub_533
|
|
||||||
.4byte sub_0809875C
|
|
||||||
.4byte sub_08098770
|
|
||||||
.4byte sub_080987B4
|
|
||||||
.4byte sub_080987BC
|
|
||||||
.4byte sub_080987D4
|
|
||||||
|
|
||||||
gUnk_08123540:: @ 08123540
|
|
||||||
.4byte sub_08098810
|
|
||||||
.4byte sub_08098820
|
|
||||||
.4byte sub_08098858
|
|
||||||
.4byte sub_080988B8
|
|
||||||
.4byte nullsub_123
|
|
||||||
.4byte sub_080988E0
|
|
||||||
|
|
||||||
gUnk_08123558:: @ 08123558
|
|
||||||
.incbin "objectOnSpinyBeetle/gUnk_08123558.bin"
|
|
|
@ -351,7 +351,7 @@ void Object79(Entity*);
|
||||||
void Steam(Entity*);
|
void Steam(Entity*);
|
||||||
void PushableLever();
|
void PushableLever();
|
||||||
void MacroShoes(Entity*);
|
void MacroShoes(Entity*);
|
||||||
void ObjectOnSpinyBeetle(Entity*);
|
void ObjectOnSpinyBeetle();
|
||||||
void Object7E(Entity*);
|
void Object7E(Entity*);
|
||||||
void PicoBloom(Entity*);
|
void PicoBloom(Entity*);
|
||||||
void Board(Entity*);
|
void Board(Entity*);
|
||||||
|
|
|
@ -770,7 +770,7 @@ SECTIONS {
|
||||||
src/object/steam.o(.text);
|
src/object/steam.o(.text);
|
||||||
src/object/pushableLever.o(.text);
|
src/object/pushableLever.o(.text);
|
||||||
asm/object/macroShoes.o(.text);
|
asm/object/macroShoes.o(.text);
|
||||||
asm/object/objectOnSpinyBeetle.o(.text);
|
src/object/objectOnSpinyBeetle.o(.text);
|
||||||
src/object/object7E.o(.text);
|
src/object/object7E.o(.text);
|
||||||
asm/object/picoBloom.o(.text);
|
asm/object/picoBloom.o(.text);
|
||||||
asm/object/board.o(.text);
|
asm/object/board.o(.text);
|
||||||
|
@ -1519,7 +1519,7 @@ SECTIONS {
|
||||||
src/object/pushableLever.o(.rodata);
|
src/object/pushableLever.o(.rodata);
|
||||||
data/animations/object/pushableLever.o(.rodata);
|
data/animations/object/pushableLever.o(.rodata);
|
||||||
data/const/object/macroShoes.o(.rodata);
|
data/const/object/macroShoes.o(.rodata);
|
||||||
data/const/object/objectOnSpinyBeetle.o(.rodata);
|
src/object/objectOnSpinyBeetle.o(.rodata);
|
||||||
data/const/object/picoBloom.o(.rodata);
|
data/const/object/picoBloom.o(.rodata);
|
||||||
data/animations/object/picoBloom.o(.rodata);
|
data/animations/object/picoBloom.o(.rodata);
|
||||||
data/const/object/board.o(.rodata);
|
data/const/object/board.o(.rodata);
|
||||||
|
|
|
@ -0,0 +1,305 @@
|
||||||
|
/**
|
||||||
|
* @file objectOnSpinyBeetle.c
|
||||||
|
* @ingroup Objects
|
||||||
|
*
|
||||||
|
* @brief Object on Spiny Beetle object
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define NENT_DEPRECATED
|
||||||
|
#include "global.h"
|
||||||
|
#include "object.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/*0x00*/ Entity base;
|
||||||
|
} ObjectOnSpinyBeetleEntity;
|
||||||
|
|
||||||
|
extern void (*const ObjectOnSpinyBeetle_Actions[])(ObjectOnSpinyBeetleEntity*);
|
||||||
|
extern void (*const ObjectOnSpinyBeetle_Action2Subactions[])(ObjectOnSpinyBeetleEntity*);
|
||||||
|
extern void (*const ObjectOnSpinyBeetle_Action3Subactions[])(ObjectOnSpinyBeetleEntity*);
|
||||||
|
extern const s8 gUnk_08123558[];
|
||||||
|
|
||||||
|
void sub_08098918(ObjectOnSpinyBeetleEntity*);
|
||||||
|
Entity* ObjectOnSpinyBeetle_GetParent(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void sub_080989C0(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Init(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action1(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action3(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action4(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action5(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction0(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction1(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction2(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction3(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction4(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction5(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction6(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction0(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction1(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction2(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction3(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction4(ObjectOnSpinyBeetleEntity*);
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction5(ObjectOnSpinyBeetleEntity*);
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
static void (*const ObjectOnSpinyBeetle_Actions[])(ObjectOnSpinyBeetleEntity*) = {
|
||||||
|
ObjectOnSpinyBeetle_Init, ObjectOnSpinyBeetle_Action1, ObjectOnSpinyBeetle_Action2,
|
||||||
|
ObjectOnSpinyBeetle_Action3, ObjectOnSpinyBeetle_Action4, ObjectOnSpinyBeetle_Action5,
|
||||||
|
};
|
||||||
|
ObjectOnSpinyBeetle_Actions[super->action](this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Init(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
super->action = 1;
|
||||||
|
super->flags |= ENT_COLLIDE;
|
||||||
|
super->spritePriority.b0 = 6;
|
||||||
|
super->spriteRendering.b3 = 2;
|
||||||
|
super->field_0xf = 0;
|
||||||
|
super->hitType = 0x6e;
|
||||||
|
super->flags2 = 0x86;
|
||||||
|
super->field_0x16 = 0;
|
||||||
|
if (super->type != 0) {
|
||||||
|
super->field_0x1c = 2;
|
||||||
|
} else {
|
||||||
|
super->field_0x1c = 1;
|
||||||
|
}
|
||||||
|
SortEntityBelow(super, super->parent);
|
||||||
|
sub_08098918(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action1(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
Entity* parent = ObjectOnSpinyBeetle_GetParent(this);
|
||||||
|
if (parent != NULL) {
|
||||||
|
if (4 < parent->action) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((super->bitfield & 0x80) != 0) {
|
||||||
|
switch (super->bitfield & 0x3f) {
|
||||||
|
case 0x13:
|
||||||
|
super->action = 3;
|
||||||
|
super->subAction = 0;
|
||||||
|
break;
|
||||||
|
case 0xf:
|
||||||
|
case 0x1d:
|
||||||
|
super->action = 4;
|
||||||
|
super->zVelocity = 0x2a000;
|
||||||
|
super->spriteOffsetY = 0;
|
||||||
|
super->spriteSettings.shadow = 1;
|
||||||
|
super->spritePriority.b1 = 3;
|
||||||
|
super->flags &= ~ENT_COLLIDE;
|
||||||
|
(super->parent)->child = NULL;
|
||||||
|
ObjectOnSpinyBeetle_Action4(this);
|
||||||
|
break;
|
||||||
|
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 (super->type == 0 || (gPlayerState.field_0xac & 8) != 0) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0x14:
|
||||||
|
case 0x16:
|
||||||
|
case 0x20:
|
||||||
|
if (super->type == 0) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sub_08098918(this);
|
||||||
|
sub_08078930(super);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sub_080989C0(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
static void (*const ObjectOnSpinyBeetle_Action2Subactions[])(ObjectOnSpinyBeetleEntity*) = {
|
||||||
|
ObjectOnSpinyBeetle_Action2Subaction0, ObjectOnSpinyBeetle_Action2Subaction1,
|
||||||
|
ObjectOnSpinyBeetle_Action2Subaction2, ObjectOnSpinyBeetle_Action2Subaction3,
|
||||||
|
ObjectOnSpinyBeetle_Action2Subaction4, ObjectOnSpinyBeetle_Action2Subaction5,
|
||||||
|
ObjectOnSpinyBeetle_Action2Subaction6,
|
||||||
|
};
|
||||||
|
ObjectOnSpinyBeetle_Action2Subactions[super->subAction](this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction0(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
super->flags |= ENT_COLLIDE;
|
||||||
|
super->field_0x3c = 7;
|
||||||
|
super->hitType = 1;
|
||||||
|
super->flags2 = gPlayerEntity.flags2;
|
||||||
|
super->spriteOffsetY = 0;
|
||||||
|
(super->parent)->child = NULL;
|
||||||
|
super->subAction += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction1(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction2(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
super->spritePriority.b1 = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction3(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
switch (sub_080043E8(super)) {
|
||||||
|
case 2:
|
||||||
|
CreateFx(super, FX_WATER_SPLASH, 0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
CreateFx(super, FX_FALL_DOWN, 0);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
CreateFx(super, FX_LAVA_SPLASH, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sub_080989C0(this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DeleteThisEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction4(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
DeleteThisEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction5(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
if (gPlayerState.heldObject == 0) {
|
||||||
|
ObjectOnSpinyBeetle_Action2Subaction6(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action2Subaction6(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
super->action = 1;
|
||||||
|
super->subAction = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action3(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
static void (*const ObjectOnSpinyBeetle_Action3Subactions[])(ObjectOnSpinyBeetleEntity*) = {
|
||||||
|
ObjectOnSpinyBeetle_Action3Subaction0, ObjectOnSpinyBeetle_Action3Subaction1,
|
||||||
|
ObjectOnSpinyBeetle_Action3Subaction2, ObjectOnSpinyBeetle_Action3Subaction3,
|
||||||
|
ObjectOnSpinyBeetle_Action3Subaction4, ObjectOnSpinyBeetle_Action3Subaction5,
|
||||||
|
};
|
||||||
|
|
||||||
|
ObjectOnSpinyBeetle_Action3Subactions[super->subAction](this);
|
||||||
|
if ((super->subAction < 2) && (ObjectOnSpinyBeetle_GetParent(this) == NULL)) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction0(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
super->subAction = 1;
|
||||||
|
super->field_0x1d = 0x30;
|
||||||
|
super->actionDelay = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction1(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
if ((gPlayerState.field_0x1c & 0xf) != 1 || (super->bitfield & 0x7f) != 0x13) {
|
||||||
|
super->spriteOffsetX = 0;
|
||||||
|
super->action = 1;
|
||||||
|
} else {
|
||||||
|
sub_0806F4E8(super);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction2(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
if (super->actionDelay == 0) {
|
||||||
|
super->actionDelay = 1;
|
||||||
|
super->spriteOffsetX = 0;
|
||||||
|
super->spriteOffsetY = -2;
|
||||||
|
(super->parent)->child = NULL;
|
||||||
|
}
|
||||||
|
if ((gPlayerState.field_0x1c & 0xf) != 1 || (super->bitfield & 0x7f) != 0x13) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
} else {
|
||||||
|
if ((sub_0806F3E4(super) != 0) && (super->type == 0)) {
|
||||||
|
DeleteThisEntity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction3(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
if (gPlayerState.field_0x1c == 0) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
} else {
|
||||||
|
(this->base).flags &= ~ENT_COLLIDE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction4(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action3Subaction5(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action4(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
if (super->zVelocity < 0) {
|
||||||
|
super->spriteSettings.flipY = 1;
|
||||||
|
}
|
||||||
|
if (GravityUpdate(super, 0x2000) == 0) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectOnSpinyBeetle_Action5(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08098918(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
static const s8 gUnk_08123558[] = { 1, 2, 2, 2, 0, -3, -3, -4, -3, -4, -3, -3, -3, 0, 0, 0 };
|
||||||
|
u16 tmp;
|
||||||
|
Entity* parent = ObjectOnSpinyBeetle_GetParent(this);
|
||||||
|
if (parent == NULL) {
|
||||||
|
sub_080989C0(this);
|
||||||
|
} else {
|
||||||
|
CopyPosition(parent, super);
|
||||||
|
tmp = parent->flags & 0x80;
|
||||||
|
if ((parent->flags & ENT_COLLIDE) != 0) {
|
||||||
|
if (super->field_0xf == 0) {
|
||||||
|
super->field_0xf += 1;
|
||||||
|
super->spritePriority.b0 = 3;
|
||||||
|
SortEntityBelow(super, super->parent);
|
||||||
|
}
|
||||||
|
super->z.HALF.HI = gUnk_08123558[parent->frame & 0xf] - 8;
|
||||||
|
super->spriteOffsetY = 0;
|
||||||
|
} else {
|
||||||
|
if (super->field_0xf != 0) {
|
||||||
|
super->field_0xf = tmp;
|
||||||
|
super->spritePriority.b0 = 6;
|
||||||
|
SortEntityBelow(super, super->parent);
|
||||||
|
}
|
||||||
|
super->z.HALF.HI = tmp;
|
||||||
|
super->spriteOffsetY = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080989C0(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
if (ObjectOnSpinyBeetle_GetParent(this) != NULL) {
|
||||||
|
(super->parent)->child = NULL;
|
||||||
|
}
|
||||||
|
CreateFx(super, super->type + FX_BUSH, 0);
|
||||||
|
DeleteThisEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity* ObjectOnSpinyBeetle_GetParent(ObjectOnSpinyBeetleEntity* this) {
|
||||||
|
Entity* parent = super->parent;
|
||||||
|
if ((parent != NULL) && (parent->next == NULL)) {
|
||||||
|
parent = NULL;
|
||||||
|
}
|
||||||
|
return parent;
|
||||||
|
}
|
Loading…
Reference in New Issue