mirror of
https://github.com/zeldaret/tmc
synced 2026-05-28 16:32:07 -04:00
Match lilypadLarge functions and add const data
This commit is contained in:
@@ -1,564 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r7, r0, #0
|
||||
ldrb r1, [r7, #0x10]
|
||||
movs r0, #0x20
|
||||
orrs r0, r1
|
||||
strb r0, [r7, #0x10]
|
||||
ldr r6, _0808564C @ =gPlayerEntity
|
||||
adds r0, r7, #0
|
||||
adds r1, r6, #0
|
||||
movs r2, #0x18
|
||||
bl sub_0806FC80
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080856EE
|
||||
ldr r3, _08085650 @ =gPlayerState
|
||||
ldr r0, [r3, #0x30]
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
str r0, [r3, #0x30]
|
||||
ldr r4, [r6, #0x34]
|
||||
cmp r4, #0
|
||||
beq _0808561C
|
||||
b _080857CE
|
||||
_0808561C:
|
||||
adds r5, r3, #0
|
||||
adds r5, #0x26
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
beq _08085634
|
||||
adds r2, r6, #0
|
||||
adds r2, #0x3c
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0xfb
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
strb r4, [r5]
|
||||
_08085634:
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x84
|
||||
str r7, [r0]
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x38
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #1
|
||||
bne _08085654
|
||||
adds r0, r6, #0
|
||||
bl ResetCollisionLayer
|
||||
b _0808565A
|
||||
.align 2, 0
|
||||
_0808564C: .4byte gPlayerEntity
|
||||
_08085650: .4byte gPlayerState
|
||||
_08085654:
|
||||
adds r0, r6, #0
|
||||
bl sub_08004542
|
||||
_0808565A:
|
||||
ldrb r0, [r7, #0xf]
|
||||
cmp r0, #0
|
||||
bne _0808568C
|
||||
movs r0, #4
|
||||
strb r0, [r7, #0xf]
|
||||
_08085664:
|
||||
adds r0, r7, #0
|
||||
movs r1, #8
|
||||
movs r2, #0xa
|
||||
bl sub_080A2AF4
|
||||
ldrb r0, [r7, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r7, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r2, r0, #0x18
|
||||
cmp r2, #0
|
||||
bne _08085664
|
||||
movs r0, #1
|
||||
strb r0, [r7, #0xf]
|
||||
ldrb r1, [r7, #0xe]
|
||||
movs r0, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r7, #0xe]
|
||||
str r2, [r7, #0x70]
|
||||
str r2, [r7, #0x6c]
|
||||
_0808568C:
|
||||
ldr r2, _080856B8 @ =gPlayerState
|
||||
ldrb r0, [r2, #0x1c]
|
||||
cmp r0, #3
|
||||
beq _08085696
|
||||
b _080857CE
|
||||
_08085696:
|
||||
ldr r1, _080856BC @ =gUnk_08120620
|
||||
ldrb r0, [r2, #0x1d]
|
||||
subs r0, #1
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r4, [r0]
|
||||
ldr r0, _080856C0 @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
movs r1, #6
|
||||
ands r1, r0
|
||||
cmp r1, #2
|
||||
beq _080856DE
|
||||
cmp r1, #2
|
||||
bgt _080856C4
|
||||
cmp r1, #0
|
||||
beq _080856D6
|
||||
b _080857CE
|
||||
.align 2, 0
|
||||
_080856B8: .4byte gPlayerState
|
||||
_080856BC: .4byte gUnk_08120620
|
||||
_080856C0: .4byte gPlayerEntity
|
||||
_080856C4:
|
||||
cmp r1, #4
|
||||
beq _080856CE
|
||||
cmp r1, #6
|
||||
beq _080856E6
|
||||
b _080857CE
|
||||
_080856CE:
|
||||
ldr r0, [r7, #0x70]
|
||||
subs r0, r0, r4
|
||||
str r0, [r7, #0x70]
|
||||
b _080857CE
|
||||
_080856D6:
|
||||
ldr r0, [r7, #0x70]
|
||||
adds r0, r0, r4
|
||||
str r0, [r7, #0x70]
|
||||
b _080857CE
|
||||
_080856DE:
|
||||
ldr r0, [r7, #0x6c]
|
||||
subs r0, r0, r4
|
||||
str r0, [r7, #0x6c]
|
||||
b _080857CE
|
||||
_080856E6:
|
||||
ldr r0, [r7, #0x6c]
|
||||
adds r0, r0, r4
|
||||
str r0, [r7, #0x6c]
|
||||
b _080857CE
|
||||
_080856EE:
|
||||
ldrb r0, [r7, #0xf]
|
||||
cmp r0, #0
|
||||
beq _080856FC
|
||||
strb r1, [r7, #0xf]
|
||||
movs r0, #0x83
|
||||
bl SoundReq
|
||||
_080856FC:
|
||||
adds r2, r7, #0
|
||||
adds r2, #0x41
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
mov r8, r2
|
||||
cmp r0, #0x13
|
||||
bne _080857C8
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r6, r0]
|
||||
ldr r3, _08085758 @ =gUnk_08126EE4
|
||||
ldrb r2, [r6, #0x14]
|
||||
movs r0, #0xe
|
||||
ands r0, r2
|
||||
adds r0, r0, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
adds r5, r1, r0
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r6, r0]
|
||||
movs r0, #1
|
||||
orrs r0, r2
|
||||
adds r0, r0, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
adds r3, r1, r0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r7, r1]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r7, r2]
|
||||
adds r2, r5, #0
|
||||
bl CalculateDirectionTo
|
||||
strb r0, [r7, #0x15]
|
||||
ldr r0, _0808575C @ =gPlayerState
|
||||
ldrb r0, [r0, #0x1d]
|
||||
cmp r0, #2
|
||||
beq _0808576A
|
||||
cmp r0, #2
|
||||
bgt _08085760
|
||||
cmp r0, #1
|
||||
beq _08085770
|
||||
b _08085774
|
||||
.align 2, 0
|
||||
_08085758: .4byte gUnk_08126EE4
|
||||
_0808575C: .4byte gPlayerState
|
||||
_08085760:
|
||||
cmp r0, #3
|
||||
bne _08085774
|
||||
movs r4, #0x80
|
||||
lsls r4, r4, #3
|
||||
b _08085774
|
||||
_0808576A:
|
||||
movs r4, #0xc0
|
||||
lsls r4, r4, #2
|
||||
b _08085774
|
||||
_08085770:
|
||||
movs r4, #0x80
|
||||
lsls r4, r4, #2
|
||||
_08085774:
|
||||
ldr r6, _080858A8 @ =gSineTable
|
||||
ldrb r0, [r7, #0x15]
|
||||
lsls r0, r0, #4
|
||||
adds r0, r0, r6
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
lsls r4, r4, #0x10
|
||||
asrs r4, r4, #0x18
|
||||
adds r1, r4, #0
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
movs r5, #0x80
|
||||
lsls r5, r5, #1
|
||||
adds r1, r5, #0
|
||||
bl FixedDiv
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #8
|
||||
ldr r1, [r7, #0x6c]
|
||||
adds r1, r1, r0
|
||||
str r1, [r7, #0x6c]
|
||||
ldrb r0, [r7, #0x15]
|
||||
lsls r0, r0, #4
|
||||
adds r0, #0x80
|
||||
adds r0, r0, r6
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r1, r4, #0
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
adds r1, r5, #0
|
||||
bl FixedDiv
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #8
|
||||
ldr r1, [r7, #0x70]
|
||||
subs r1, r1, r0
|
||||
str r1, [r7, #0x70]
|
||||
_080857C8:
|
||||
movs r0, #0
|
||||
mov r1, r8
|
||||
strb r0, [r1]
|
||||
_080857CE:
|
||||
ldr r0, [r7, #0x2c]
|
||||
str r0, [r7, #0x54]
|
||||
ldr r0, [r7, #0x30]
|
||||
str r0, [r7, #0x50]
|
||||
ldr r0, [r7, #0x6c]
|
||||
cmp r0, #0
|
||||
bne _080857E4
|
||||
ldr r0, [r7, #0x70]
|
||||
cmp r0, #0
|
||||
bne _080857E4
|
||||
b _080859F4
|
||||
_080857E4:
|
||||
ldr r0, [r7, #0x70]
|
||||
ldr r1, _080858AC @ =0xFFFF0000
|
||||
cmp r0, r1
|
||||
blt _080857F4
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #9
|
||||
cmp r0, r1
|
||||
ble _080857F6
|
||||
_080857F4:
|
||||
str r1, [r7, #0x70]
|
||||
_080857F6:
|
||||
ldr r0, [r7, #0x6c]
|
||||
ldr r1, _080858AC @ =0xFFFF0000
|
||||
cmp r0, r1
|
||||
blt _08085806
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #9
|
||||
cmp r0, r1
|
||||
ble _08085808
|
||||
_08085806:
|
||||
str r1, [r7, #0x6c]
|
||||
_08085808:
|
||||
ldr r0, _080858B0 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0808581A
|
||||
adds r0, r7, #0
|
||||
bl CreateLargeWaterTrace
|
||||
_0808581A:
|
||||
ldr r0, [r7, #0x2c]
|
||||
ldr r1, [r7, #0x6c]
|
||||
adds r5, r0, r1
|
||||
ldr r1, [r7, #0x30]
|
||||
ldr r2, [r7, #0x70]
|
||||
adds r3, r1, r2
|
||||
adds r2, r5, #0
|
||||
bl CalculateDirectionTo
|
||||
strb r0, [r7, #0x15]
|
||||
ldr r0, [r7, #0x6c]
|
||||
lsls r0, r0, #8
|
||||
asrs r0, r0, #0x10
|
||||
movs r4, #0x80
|
||||
lsls r4, r4, #1
|
||||
adds r1, r4, #0
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
ldr r5, _080858A8 @ =gSineTable
|
||||
ldrb r1, [r7, #0x15]
|
||||
lsls r1, r1, #4
|
||||
adds r1, r1, r5
|
||||
movs r2, #0
|
||||
ldrsh r1, [r1, r2]
|
||||
bl FixedDiv
|
||||
strh r0, [r7, #0x24]
|
||||
ldr r0, [r7, #0x70]
|
||||
lsls r0, r0, #8
|
||||
asrs r0, r0, #0x10
|
||||
adds r1, r4, #0
|
||||
bl FixedMul
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
ldrb r1, [r7, #0x15]
|
||||
lsls r1, r1, #4
|
||||
adds r1, #0x80
|
||||
adds r1, r1, r5
|
||||
movs r2, #0
|
||||
ldrsh r1, [r1, r2]
|
||||
bl FixedDiv
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
rsbs r4, r0, #0
|
||||
movs r1, #0x24
|
||||
ldrsh r0, [r7, r1]
|
||||
cmp r4, r0
|
||||
ble _08085884
|
||||
strh r4, [r7, #0x24]
|
||||
_08085884:
|
||||
ldrb r0, [r7, #0xb]
|
||||
cmp r0, #0
|
||||
beq _080858BC
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x7e
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
ldr r0, _080858B4 @ =0x00000FFF
|
||||
cmp r1, r0
|
||||
bgt _080858B8
|
||||
movs r0, #0x24
|
||||
ldrsh r1, [r7, r0]
|
||||
lsls r1, r1, #0xc
|
||||
ldr r0, [r7, #0x7c]
|
||||
adds r0, r0, r1
|
||||
str r0, [r7, #0x7c]
|
||||
b _080858E0
|
||||
.align 2, 0
|
||||
_080858A8: .4byte gSineTable
|
||||
_080858AC: .4byte 0xFFFF0000
|
||||
_080858B0: .4byte gRoomTransition
|
||||
_080858B4: .4byte 0x00000FFF
|
||||
_080858B8:
|
||||
movs r0, #0
|
||||
b _080858DE
|
||||
_080858BC:
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x7e
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
ldr r0, _080858D8 @ =0xFFFFF000
|
||||
cmp r1, r0
|
||||
ble _080858DC
|
||||
movs r0, #0x24
|
||||
ldrsh r1, [r7, r0]
|
||||
lsls r1, r1, #0xc
|
||||
ldr r0, [r7, #0x7c]
|
||||
subs r0, r0, r1
|
||||
str r0, [r7, #0x7c]
|
||||
b _080858E0
|
||||
.align 2, 0
|
||||
_080858D8: .4byte 0xFFFFF000
|
||||
_080858DC:
|
||||
movs r0, #1
|
||||
_080858DE:
|
||||
strb r0, [r7, #0xb]
|
||||
_080858E0:
|
||||
adds r0, r7, #0
|
||||
bl sub_08085EFC
|
||||
adds r0, r7, #0
|
||||
bl ProcessMovement4
|
||||
ldr r1, [r7, #0x54]
|
||||
ldr r0, [r7, #0x2c]
|
||||
cmp r1, r0
|
||||
bne _0808590C
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x85
|
||||
ldrb r1, [r0]
|
||||
adds r2, r0, #0
|
||||
cmp r1, #2
|
||||
bne _08085906
|
||||
movs r0, #0
|
||||
str r0, [r7, #0x6c]
|
||||
b _08085916
|
||||
_08085906:
|
||||
adds r0, r1, #1
|
||||
strb r0, [r2]
|
||||
b _08085916
|
||||
_0808590C:
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x85
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
adds r2, r1, #0
|
||||
_08085916:
|
||||
ldr r1, [r7, #0x50]
|
||||
ldr r0, [r7, #0x30]
|
||||
cmp r1, r0
|
||||
bne _0808592E
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #2
|
||||
bne _0808592A
|
||||
movs r0, #0
|
||||
str r0, [r7, #0x70]
|
||||
b _08085932
|
||||
_0808592A:
|
||||
adds r0, #1
|
||||
b _08085930
|
||||
_0808592E:
|
||||
movs r0, #0
|
||||
_08085930:
|
||||
strb r0, [r2]
|
||||
_08085932:
|
||||
ldr r0, _0808595C @ =gPlayerState
|
||||
ldr r0, [r0, #0x30]
|
||||
movs r1, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08085944
|
||||
adds r0, r7, #0
|
||||
bl sub_08085F1C
|
||||
_08085944:
|
||||
ldr r1, [r7, #0x6c]
|
||||
cmp r1, #0
|
||||
beq _08085998
|
||||
cmp r1, #0
|
||||
bge _0808596E
|
||||
movs r0, #0x80
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
ble _08085960
|
||||
movs r0, #0
|
||||
b _08085964
|
||||
.align 2, 0
|
||||
_0808595C: .4byte gPlayerState
|
||||
_08085960:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x80
|
||||
_08085964:
|
||||
str r0, [r7, #0x6c]
|
||||
ldrh r2, [r7, #0x2a]
|
||||
movs r1, #0xe0
|
||||
lsls r1, r1, #4
|
||||
b _08085982
|
||||
_0808596E:
|
||||
cmp r1, #0x7f
|
||||
bhi _08085976
|
||||
movs r0, #0
|
||||
b _0808597A
|
||||
_08085976:
|
||||
adds r0, r1, #0
|
||||
subs r0, #0x80
|
||||
_0808597A:
|
||||
str r0, [r7, #0x6c]
|
||||
ldrh r2, [r7, #0x2a]
|
||||
movs r1, #0xe0
|
||||
lsls r1, r1, #8
|
||||
_08085982:
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
cmp r0, r1
|
||||
bne _08085998
|
||||
ldr r0, [r7, #0x6c]
|
||||
cmp r0, #0
|
||||
bge _08085992
|
||||
adds r0, #3
|
||||
_08085992:
|
||||
asrs r0, r0, #2
|
||||
rsbs r0, r0, #0
|
||||
str r0, [r7, #0x6c]
|
||||
_08085998:
|
||||
ldr r1, [r7, #0x70]
|
||||
cmp r1, #0
|
||||
beq _080859E6
|
||||
cmp r1, #0
|
||||
bge _080859C0
|
||||
movs r0, #0x80
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
ble _080859AE
|
||||
movs r0, #0
|
||||
b _080859B2
|
||||
_080859AE:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x80
|
||||
_080859B2:
|
||||
str r0, [r7, #0x70]
|
||||
ldrh r1, [r7, #0x2a]
|
||||
movs r0, #0xe
|
||||
ands r0, r1
|
||||
cmp r0, #0xe
|
||||
bne _080859E6
|
||||
b _080859D8
|
||||
_080859C0:
|
||||
cmp r1, #0x7f
|
||||
bhi _080859C8
|
||||
movs r0, #0
|
||||
b _080859CC
|
||||
_080859C8:
|
||||
adds r0, r1, #0
|
||||
subs r0, #0x80
|
||||
_080859CC:
|
||||
str r0, [r7, #0x70]
|
||||
ldrh r1, [r7, #0x2a]
|
||||
movs r0, #0xe0
|
||||
ands r0, r1
|
||||
cmp r0, #0xe0
|
||||
bne _080859E6
|
||||
_080859D8:
|
||||
ldr r0, [r7, #0x70]
|
||||
cmp r0, #0
|
||||
bge _080859E0
|
||||
adds r0, #3
|
||||
_080859E0:
|
||||
asrs r0, r0, #2
|
||||
rsbs r0, r0, #0
|
||||
str r0, [r7, #0x70]
|
||||
_080859E6:
|
||||
adds r0, r7, #0
|
||||
bl sub_08085D28
|
||||
adds r0, r7, #0
|
||||
bl sub_08085D60
|
||||
b _08085A0A
|
||||
_080859F4:
|
||||
ldr r0, _08085A18 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08085A0A
|
||||
adds r0, r7, #0
|
||||
movs r1, #8
|
||||
movs r2, #0xa
|
||||
bl sub_080A2AF4
|
||||
_08085A0A:
|
||||
adds r0, r7, #0
|
||||
bl sub_08085F48
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08085A18: .4byte gRoomTransition
|
||||
.syntax divided
|
||||
@@ -1,139 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
ldr r2, _08085D94 @ =gPlayerState
|
||||
ldr r0, [r2, #0x30]
|
||||
movs r1, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08085E64
|
||||
adds r0, r2, #0
|
||||
adds r0, #0xa8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x12
|
||||
beq _08085E64
|
||||
ldrb r0, [r2, #2]
|
||||
cmp r0, #0
|
||||
bne _08085E64
|
||||
ldrb r1, [r5, #0x15]
|
||||
movs r0, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08085D98
|
||||
ldrb r6, [r5, #0x15]
|
||||
adds r4, r6, #0
|
||||
b _08085DB0
|
||||
.align 2, 0
|
||||
_08085D94: .4byte gPlayerState
|
||||
_08085D98:
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
movs r4, #8
|
||||
cmp r0, #0
|
||||
beq _08085DA4
|
||||
movs r4, #0x18
|
||||
_08085DA4:
|
||||
ldrb r0, [r5, #0x15]
|
||||
subs r0, #8
|
||||
movs r6, #0x10
|
||||
cmp r0, #0x10
|
||||
ble _08085DB0
|
||||
movs r6, #0
|
||||
_08085DB0:
|
||||
cmp r4, #0x18
|
||||
beq _08085DB8
|
||||
cmp r4, #8
|
||||
bne _08085E20
|
||||
_08085DB8:
|
||||
lsrs r3, r4, #2
|
||||
ldr r1, _08085E10 @ =gUnk_08120638
|
||||
adds r0, r3, r1
|
||||
movs r7, #0
|
||||
ldrsb r7, [r0, r7]
|
||||
adds r0, r3, #1
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
mov r8, r0
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
mov r2, r8
|
||||
bl sub_080B1AF0
|
||||
cmp r0, #0xff
|
||||
bne _08085E20
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r2, _08085E14 @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
subs r0, r0, r1
|
||||
adds r0, r0, r7
|
||||
movs r3, #0x32
|
||||
ldrsh r1, [r5, r3]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r1, r1, r2
|
||||
add r1, r8
|
||||
adds r2, r4, #0
|
||||
movs r3, #5
|
||||
bl sub_080806BC
|
||||
cmp r0, #0
|
||||
bne _08085E1C
|
||||
ldr r0, _08085E18 @ =gPlayerEntity
|
||||
lsrs r1, r4, #3
|
||||
bl sub_0807BD14
|
||||
cmp r0, #0
|
||||
beq _08085E20
|
||||
strb r4, [r5, #0x15]
|
||||
b _08085E52
|
||||
.align 2, 0
|
||||
_08085E10: .4byte gUnk_08120638
|
||||
_08085E14: .4byte gRoomControls
|
||||
_08085E18: .4byte gPlayerEntity
|
||||
_08085E1C:
|
||||
strb r4, [r5, #0x15]
|
||||
b _08085E6C
|
||||
_08085E20:
|
||||
cmp r6, #0
|
||||
beq _08085E28
|
||||
cmp r6, #0x10
|
||||
bne _08085E6C
|
||||
_08085E28:
|
||||
lsrs r3, r6, #2
|
||||
ldr r2, _08085E5C @ =gUnk_08120638
|
||||
adds r0, r3, r2
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
adds r0, r3, #1
|
||||
adds r0, r0, r2
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
adds r0, r5, #0
|
||||
bl sub_080B1AF0
|
||||
cmp r0, #0xff
|
||||
bne _08085E6C
|
||||
ldr r0, _08085E60 @ =gPlayerEntity
|
||||
lsrs r1, r6, #3
|
||||
bl sub_0807BD14
|
||||
cmp r0, #0
|
||||
beq _08085E6C
|
||||
strb r6, [r5, #0x15]
|
||||
_08085E52:
|
||||
adds r0, r5, #0
|
||||
bl sub_08085E74
|
||||
b _08085E6C
|
||||
.align 2, 0
|
||||
_08085E5C: .4byte gUnk_08120638
|
||||
_08085E60: .4byte gPlayerEntity
|
||||
_08085E64:
|
||||
ldrb r1, [r5, #0x10]
|
||||
movs r0, #0xdf
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x10]
|
||||
_08085E6C:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -41971,21 +41971,6 @@
|
||||
"size": 4,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "lilypadLarge/gUnk_08120620.bin",
|
||||
"start": 1181216,
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "lilypadLarge/gUnk_08120638.bin",
|
||||
"start": 1181240,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "lilypadLarge/gUnk_08120640.bin",
|
||||
"start": 1181248,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "evilSpirit/gUnk_08120678.bin",
|
||||
"start": 1181304,
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08120608:: @ 08120608
|
||||
.4byte sub_08085504
|
||||
.4byte sub_080855E8
|
||||
.4byte sub_08085A1C
|
||||
.4byte sub_08085C5C
|
||||
.4byte sub_08085CDC
|
||||
.4byte sub_08085D10
|
||||
|
||||
gUnk_08120620:: @ 08120620
|
||||
.incbin "lilypadLarge/gUnk_08120620.bin"
|
||||
|
||||
gUnk_0812062C:: @ 0812062C
|
||||
.4byte sub_08085A44
|
||||
.4byte sub_08085A98
|
||||
.4byte sub_08085B40
|
||||
|
||||
gUnk_08120638:: @ 08120638
|
||||
.incbin "lilypadLarge/gUnk_08120638.bin"
|
||||
|
||||
gUnk_08120640:: @ 08120640
|
||||
.incbin "lilypadLarge/gUnk_08120640.bin"
|
||||
@@ -1352,7 +1352,7 @@ SECTIONS {
|
||||
src/object/object12.o(.rodata);
|
||||
src/object/railtrack.o(.rodata);
|
||||
data/animations/object/railtrack.o(.rodata);
|
||||
data/const/object/lilypadLarge.o(.rodata);
|
||||
src/object/lilypadLarge.o(.rodata);
|
||||
src/object/object15.o(.rodata);
|
||||
src/object/floatingPlatform.o(.rodata);
|
||||
src/object/object17.o(.rodata);
|
||||
|
||||
+269
-18
@@ -27,12 +27,7 @@ typedef struct {
|
||||
u8 unk_85;
|
||||
} LilypadLargeEntity;
|
||||
|
||||
extern void (*const gUnk_08120608[])(LilypadLargeEntity*);
|
||||
extern Hitbox gUnk_08120640;
|
||||
extern void (*const gUnk_0812062C[])(LilypadLargeEntity*);
|
||||
extern u8 gUnk_08120638[];
|
||||
extern u8 gUnk_08126EE4[];
|
||||
extern u32 gUnk_08120620[];
|
||||
|
||||
void sub_080855E8(LilypadLargeEntity*);
|
||||
void sub_08085CDC(LilypadLargeEntity*);
|
||||
@@ -42,11 +37,25 @@ void sub_08085E74(LilypadLargeEntity*);
|
||||
void sub_08085F48(LilypadLargeEntity*);
|
||||
void sub_08085D28(LilypadLargeEntity*);
|
||||
void sub_08085D60(LilypadLargeEntity*);
|
||||
void sub_08085504(LilypadLargeEntity*);
|
||||
void sub_080855E8(LilypadLargeEntity*);
|
||||
void sub_08085A1C(LilypadLargeEntity*);
|
||||
void sub_08085C5C(LilypadLargeEntity*);
|
||||
void sub_08085CDC(LilypadLargeEntity*);
|
||||
void sub_08085D10(LilypadLargeEntity*);
|
||||
void sub_08085B40(LilypadLargeEntity*);
|
||||
void sub_08085A98(LilypadLargeEntity*);
|
||||
void sub_08085A44(LilypadLargeEntity*);
|
||||
|
||||
void LilypadLarge(LilypadLargeEntity* this) {
|
||||
gUnk_08120608[super->action](this);
|
||||
static void (*const actionFuncs[])(LilypadLargeEntity*) = {
|
||||
sub_08085504, sub_080855E8, sub_08085A1C, sub_08085C5C, sub_08085CDC, sub_08085D10,
|
||||
};
|
||||
actionFuncs[super->action](this);
|
||||
}
|
||||
|
||||
static const Hitbox gUnk_08120640;
|
||||
|
||||
void sub_08085504(LilypadLargeEntity* this) {
|
||||
if (super->type == 0xff) {
|
||||
if (GetInventoryValue(ITEM_FLIPPERS)) {
|
||||
@@ -79,7 +88,7 @@ void sub_08085504(LilypadLargeEntity* this) {
|
||||
super->action = 1;
|
||||
super->speed = 0x100;
|
||||
super->spritePriority.b0 = 6;
|
||||
super->hitbox = &gUnk_08120640;
|
||||
super->hitbox = (Hitbox*)&gUnk_08120640;
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->collisionFlags = 7;
|
||||
super->hitType = 1;
|
||||
@@ -92,10 +101,245 @@ void sub_08085504(LilypadLargeEntity* this) {
|
||||
sub_080855E8(this);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/lilypadLarge/sub_080855E8.inc", void sub_080855E8(LilypadLargeEntity* this));
|
||||
void sub_080855E8(LilypadLargeEntity* this) {
|
||||
static const u32 gUnk_08120620[] = {
|
||||
0x5000,
|
||||
0x18000,
|
||||
0x28000,
|
||||
};
|
||||
s16 sVar3;
|
||||
u32 uVar1;
|
||||
u16 uVar8;
|
||||
s32 sVar10;
|
||||
u32 uVar5;
|
||||
u32 tmp;
|
||||
u32 uVar4;
|
||||
|
||||
super->flags |= 0x20;
|
||||
if (sub_0806FC80(super, &gPlayerEntity, 0x18) != 0) {
|
||||
|
||||
gPlayerState.flags |= 2;
|
||||
if (gPlayerEntity.z.WORD == 0) {
|
||||
if (gPlayerState.swim_state != 0) {
|
||||
gPlayerEntity.collisionFlags &= 0xfb;
|
||||
gPlayerState.swim_state = 0;
|
||||
}
|
||||
*(u32*)&gPlayerState.field_0x82[2] = (u32)this; // TODO
|
||||
if (super->collisionLayer == 1) {
|
||||
ResetCollisionLayer(&gPlayerEntity);
|
||||
} else {
|
||||
sub_08004542(&gPlayerEntity);
|
||||
}
|
||||
if (super->subtimer == 0) {
|
||||
super->subtimer = 4;
|
||||
while (super->subtimer != 0) {
|
||||
sub_080A2AF4(super, 8, 10);
|
||||
super->subtimer--;
|
||||
}
|
||||
super->subtimer = 1;
|
||||
super->timer |= 0x80;
|
||||
this->unk_70 = 0;
|
||||
this->unk_6c = 0;
|
||||
}
|
||||
if (gPlayerState.field_0x1c == 3) {
|
||||
tmp = gUnk_08120620[gPlayerState.gustJarSpeed - 1];
|
||||
switch (gPlayerEntity.animationState & 6) {
|
||||
case 4:
|
||||
this->unk_70 -= tmp;
|
||||
break;
|
||||
case 0:
|
||||
this->unk_70 += tmp;
|
||||
break;
|
||||
case 2:
|
||||
this->unk_6c -= tmp;
|
||||
break;
|
||||
case 6:
|
||||
this->unk_6c += tmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
if (super->subtimer != 0) {
|
||||
super->subtimer = 0;
|
||||
SoundReq(SFX_WATER_WALK);
|
||||
}
|
||||
if ((super->contactFlags & 0x7f) == 0x13) {
|
||||
sVar10 = gPlayerEntity.x.HALF.HI + (s8)gUnk_08126EE4[gPlayerEntity.animationState & 0xe];
|
||||
uVar4 = gPlayerEntity.y.HALF.HI + (s8)gUnk_08126EE4[gPlayerEntity.animationState | 1];
|
||||
super->direction = CalculateDirectionTo(super->x.HALF.HI, super->y.HALF.HI, sVar10, uVar4);
|
||||
|
||||
switch (gPlayerState.gustJarSpeed) {
|
||||
case 3:
|
||||
tmp = 0x400;
|
||||
break;
|
||||
case 2:
|
||||
tmp = 0x300;
|
||||
break;
|
||||
case 1:
|
||||
tmp = 0x200;
|
||||
break;
|
||||
}
|
||||
|
||||
//! @bug: tmp could be uninitialized here
|
||||
sVar3 = FixedMul(gSineTable[(u32)super->direction * 8], ((s16)tmp) >> 8);
|
||||
sVar3 = FixedDiv(sVar3, 0x100);
|
||||
this->unk_6c = this->unk_6c + (((s32)sVar3 << 0x10) >> 8);
|
||||
sVar3 = FixedMul(gSineTable[(u32)super->direction * 8 + 0x40], ((s16)tmp) >> 8);
|
||||
sVar3 = FixedDiv(sVar3, 0x100);
|
||||
this->unk_70 = this->unk_70 - (((s32)sVar3 << 0x10) >> 8);
|
||||
}
|
||||
super->contactFlags = 0;
|
||||
}
|
||||
super->child = (Entity*)super->x.WORD;
|
||||
super->parent = (Entity*)super->y.WORD;
|
||||
if (this->unk_6c != 0 || this->unk_70 != 0) {
|
||||
if ((this->unk_70 < -0x10000)) {
|
||||
this->unk_70 = -0x10000;
|
||||
} else if ((this->unk_70) > 0x10000) {
|
||||
this->unk_70 = 0x10000;
|
||||
}
|
||||
|
||||
if ((this->unk_6c < -0x10000)) {
|
||||
this->unk_6c = -0x10000;
|
||||
} else if ((this->unk_6c) > 0x10000) {
|
||||
this->unk_6c = 0x10000;
|
||||
}
|
||||
|
||||
if ((gRoomTransition.frameCount & 0xfU) == 0) {
|
||||
CreateLargeWaterTrace(super);
|
||||
}
|
||||
sVar10 = super->x.WORD + this->unk_6c;
|
||||
uVar4 = super->y.WORD + this->unk_70;
|
||||
super->direction = CalculateDirectionTo(super->x.WORD, super->y.WORD, sVar10, uVar4);
|
||||
sVar3 = FixedMul((s16)((this->unk_6c << 8) >> 0x10), 0x100);
|
||||
sVar3 = FixedDiv(sVar3, gSineTable[(u32)super->direction * 8]);
|
||||
super->speed = sVar3;
|
||||
sVar3 = FixedMul((s16)((this->unk_70 << 8) >> 0x10), 0x100);
|
||||
sVar3 = FixedDiv(sVar3, gSineTable[(u32)super->direction * 8 + 0x40]);
|
||||
tmp = -sVar3;
|
||||
if ((s32)tmp > super->speed) {
|
||||
super->speed = tmp;
|
||||
}
|
||||
|
||||
if (super->type2 != 0) {
|
||||
if (this->unk_7c.HALF.HI < 0x1000) {
|
||||
this->unk_7c.WORD += super->speed * 0x1000;
|
||||
} else {
|
||||
super->type2 = 0;
|
||||
}
|
||||
} else {
|
||||
if (this->unk_7c.HALF.HI > -0x1000) {
|
||||
this->unk_7c.WORD += super->speed * -0x1000;
|
||||
} else {
|
||||
super->type2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
sub_08085EFC(this);
|
||||
ProcessMovement4(super);
|
||||
if (super->child == (Entity*)super->x.WORD) {
|
||||
if (this->unk_85 == 2) {
|
||||
this->unk_6c = 0;
|
||||
} else {
|
||||
this->unk_85++;
|
||||
}
|
||||
} else {
|
||||
this->unk_85 = 0;
|
||||
}
|
||||
|
||||
if (super->parent == (Entity*)super->y.WORD) {
|
||||
if (this->unk_85 == 2) {
|
||||
this->unk_70 = 0;
|
||||
} else {
|
||||
this->unk_85++;
|
||||
}
|
||||
} else {
|
||||
this->unk_85 = 0;
|
||||
}
|
||||
|
||||
if ((gPlayerState.flags & 2) != 0) {
|
||||
sub_08085F1C(this);
|
||||
}
|
||||
|
||||
if (this->unk_6c != 0) {
|
||||
if (this->unk_6c < 0) {
|
||||
if (this->unk_6c > -0x80) {
|
||||
this->unk_6c = 0;
|
||||
} else {
|
||||
this->unk_6c += 0x80;
|
||||
}
|
||||
if ((super->collisions & 0xe00) == 0xe00) {
|
||||
s32 tmp = this->unk_6c;
|
||||
if (this->unk_6c < 0) {
|
||||
tmp += 3;
|
||||
}
|
||||
this->unk_6c = -(tmp >> 2);
|
||||
}
|
||||
} else {
|
||||
if (this->unk_6c < 0x80u) {
|
||||
this->unk_6c = 0;
|
||||
} else {
|
||||
this->unk_6c -= 0x80;
|
||||
}
|
||||
if ((super->collisions & 0xe000) == 0xe000) {
|
||||
s32 tmp = this->unk_6c;
|
||||
if (this->unk_6c < 0) {
|
||||
tmp += 3;
|
||||
}
|
||||
this->unk_6c = -(tmp >> 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this->unk_70 != 0) {
|
||||
if ((s32)this->unk_70 < 0) {
|
||||
if ((s32)this->unk_70 > -0x80) {
|
||||
this->unk_70 = 0;
|
||||
} else {
|
||||
this->unk_70 += 0x80;
|
||||
}
|
||||
if ((super->collisions & 0xe) == 0xe) {
|
||||
u32 tmp2 = this->unk_70;
|
||||
if ((s32)this->unk_70 < 0) {
|
||||
tmp2 += 3;
|
||||
}
|
||||
this->unk_70 = -((s32)tmp2 >> 2);
|
||||
}
|
||||
} else {
|
||||
if (this->unk_70 < 0x80u) {
|
||||
this->unk_70 = 0;
|
||||
} else {
|
||||
this->unk_70 -= 0x80;
|
||||
}
|
||||
if ((super->collisions & 0xe0) == 0xe0) {
|
||||
// goto _080859D8;
|
||||
u32 tmp2 = this->unk_70;
|
||||
if ((s32)this->unk_70 < 0) {
|
||||
tmp2 += 3;
|
||||
}
|
||||
this->unk_70 = -((s32)tmp2 >> 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
sub_08085D28(this);
|
||||
sub_08085D60(this);
|
||||
} else {
|
||||
end:
|
||||
if ((gRoomTransition.frameCount & 0x1fU) == 0) {
|
||||
sub_080A2AF4(super, 8, 10);
|
||||
}
|
||||
}
|
||||
sub_08085F48(this);
|
||||
}
|
||||
|
||||
void sub_08085A1C(LilypadLargeEntity* this) {
|
||||
gUnk_0812062C[super->subAction](this);
|
||||
static void (*const subActionFuncs[])(LilypadLargeEntity*) = {
|
||||
sub_08085A44,
|
||||
sub_08085A98,
|
||||
sub_08085B40,
|
||||
};
|
||||
subActionFuncs[super->subAction](this);
|
||||
gPlayerState.flags |= PL_FLAGS2;
|
||||
sub_08078B48();
|
||||
}
|
||||
@@ -236,9 +480,15 @@ void sub_08085D28(LilypadLargeEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(LilypadLargeEntity* this)) {
|
||||
void sub_08085D60(LilypadLargeEntity* this) {
|
||||
static const s8 gUnk_08120638[] = {
|
||||
0, -24, 24, 0, 0, 24, -24, 0,
|
||||
};
|
||||
u32 r4; // horizontal direction?
|
||||
u32 r6; // vertical direction?
|
||||
u32 tmp;
|
||||
s32 tmpX, tmpX2;
|
||||
s32 tmpY, tmpY2;
|
||||
if ((gPlayerState.flags & PL_FLAGS2) != 0) {
|
||||
if (gPlayerState.framestate != PL_STATE_DIE) {
|
||||
if (gPlayerState.jump_status == 0) {
|
||||
@@ -258,9 +508,9 @@ NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(Lil
|
||||
}
|
||||
}
|
||||
if (r4 == DirectionWest || r4 == DirectionEast) { // Handle horizontal
|
||||
u32 tmp = r4 >> 2;
|
||||
s32 tmpX = gUnk_08120638[tmp];
|
||||
s32 tmpY = gUnk_08120638[tmp + 1];
|
||||
tmp = r4 >> 2;
|
||||
tmpX = gUnk_08120638[tmp];
|
||||
tmpY = gUnk_08120638[tmp + 1];
|
||||
if (sub_080B1AF0(super, tmpX, tmpY) == 0xff) {
|
||||
|
||||
if (sub_080806BC((super->x.HALF.HI - gRoomControls.origin_x) + tmpX,
|
||||
@@ -277,10 +527,10 @@ NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(Lil
|
||||
}
|
||||
}
|
||||
if (r6 == DirectionNorth || r6 == DirectionSouth) { // Handle vertical
|
||||
u32 tmp = r6 >> 2;
|
||||
s32 tmpX = (u8)gUnk_08120638[tmp];
|
||||
s32 tmpY = gUnk_08120638[tmp + 1];
|
||||
if (sub_080B1AF0(super, tmpX, tmpY) == 0xff) {
|
||||
tmp = r6 >> 2;
|
||||
tmpX2 = gUnk_08120638[tmp];
|
||||
tmpY2 = gUnk_08120638[tmp + 1];
|
||||
if (sub_080B1AF0(super, tmpX2, tmpY2) == 0xff) {
|
||||
if (sub_0807BD14(&gPlayerEntity, r6 >> 3) != 0) {
|
||||
super->direction = (u8)r6;
|
||||
sub_08085E74(this);
|
||||
@@ -293,7 +543,6 @@ NONMATCH("asm/non_matching/lilypadLarge/sub_08085D60.inc", void sub_08085D60(Lil
|
||||
}
|
||||
super->flags &= ~ENT_PERSIST;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_08085E74(LilypadLargeEntity* this) {
|
||||
super->flags |= ENT_PERSIST;
|
||||
@@ -383,3 +632,5 @@ void sub_08085F48(LilypadLargeEntity* this) {
|
||||
}
|
||||
SetAffineInfo(super, this->unk_78.HALF_U.HI, this->unk_78.HALF_U.HI, this->unk_7c.HALF_U.HI);
|
||||
}
|
||||
|
||||
static const Hitbox gUnk_08120640 = { 0, 0, { 16, 14, 14, 16 }, 16, 16 };
|
||||
|
||||
Reference in New Issue
Block a user