tmc/asm/objectOnSpinyBeetle.s

652 lines
11 KiB
ArmAsm

.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 sub_0806FAD8
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 @ =gLinkState
adds r0, #0xac
ldrh r1, [r0]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _08098702
b _080986E6
.align 2, 0
_080986DC: .4byte gLinkState
_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 @ =gLinkEntity
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 gLinkEntity
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 @ =gLinkState
ldrb r0, [r0, #5]
cmp r0, #0
bne _080987CE
adds r0, r1, #0
bl sub_080987D4
_080987CE:
pop {pc}
.align 2, 0
_080987D0: .4byte gLinkState
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 @ =gLinkState
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 gLinkState
_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 @ =gLinkState
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 gLinkState
_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 @ =gLinkState
ldrb r0, [r0, #0x1c]
cmp r0, #0
bne _080988D0
adds r0, r2, #0
bl sub_080989C0
b _080988D8
.align 2, 0
_080988CC: .4byte gLinkState
_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 sub_08003FC4
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 sub_0806FAD8
_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 sub_0806FAD8
_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}