mirror of
https://github.com/YohannDR/mzm.git
synced 2025-03-02 10:37:25 +00:00
3740 lines
80 KiB
ArmAsm
3740 lines
80 KiB
ArmAsm
.include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
thumb_func_start sub_0803d860
|
|
sub_0803d860: @ 0x0803d860
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r2, lbl_0803d884 @ =gCurrentSprite
|
|
ldrh r1, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
mov ip, r2
|
|
cmp r0, #0
|
|
beq lbl_0803d888
|
|
mov r0, ip
|
|
adds r0, #0x2a
|
|
ldrb r0, [r0]
|
|
adds r0, #0x80
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
b lbl_0803d88e
|
|
.align 2, 0
|
|
lbl_0803d884: .4byte gCurrentSprite
|
|
lbl_0803d888:
|
|
mov r0, ip
|
|
adds r0, #0x2a
|
|
ldrb r5, [r0]
|
|
lbl_0803d88e:
|
|
ldr r0, lbl_0803d8d4 @ =gSubSpriteData1
|
|
ldrb r1, [r0, #0xf]
|
|
movs r6, #0x80
|
|
lsls r6, r6, #1
|
|
mov r8, r0
|
|
cmp r1, #1
|
|
bne lbl_0803d89e
|
|
adds r6, #0x80
|
|
lbl_0803d89e:
|
|
mov r4, ip
|
|
adds r4, #0x2f
|
|
ldrb r1, [r4]
|
|
ldr r3, lbl_0803d8d8 @ =0x082fab90
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r3
|
|
movs r7, #0
|
|
ldrsh r2, [r0, r7]
|
|
ldr r0, lbl_0803d8dc @ =0x00007fff
|
|
cmp r2, r0
|
|
bne lbl_0803d8ba
|
|
movs r0, #0
|
|
ldrsh r2, [r3, r0]
|
|
movs r1, #0
|
|
lbl_0803d8ba:
|
|
adds r0, r1, #1
|
|
strb r0, [r4]
|
|
mov r1, ip
|
|
ldrh r0, [r1, #0x14]
|
|
cmp r0, #0
|
|
beq lbl_0803d8e0
|
|
lsls r0, r2, #2
|
|
ldrb r1, [r1, #0x1e]
|
|
lsrs r1, r1, #2
|
|
adds r1, #1
|
|
muls r0, r1, r0
|
|
b lbl_0803d8e2
|
|
.align 2, 0
|
|
lbl_0803d8d4: .4byte gSubSpriteData1
|
|
lbl_0803d8d8: .4byte 0x082fab90
|
|
lbl_0803d8dc: .4byte 0x00007fff
|
|
lbl_0803d8e0:
|
|
lsls r0, r2, #4
|
|
lbl_0803d8e2:
|
|
adds r0, r6, r0
|
|
lsls r0, r0, #0x10
|
|
asrs r4, r0, #0x10
|
|
ldr r1, lbl_0803d90c @ =0x0808c71c
|
|
lsls r0, r5, #1
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
bge lbl_0803d910
|
|
rsbs r0, r2, #0
|
|
muls r0, r4, r0
|
|
lsls r0, r0, #8
|
|
asrs r2, r0, #0x10
|
|
mov r3, r8
|
|
ldrh r0, [r3, #6]
|
|
subs r0, r0, r2
|
|
mov r7, ip
|
|
strh r0, [r7, #2]
|
|
b lbl_0803d920
|
|
.align 2, 0
|
|
lbl_0803d90c: .4byte 0x0808c71c
|
|
lbl_0803d910:
|
|
muls r0, r4, r0
|
|
lsls r0, r0, #8
|
|
asrs r0, r0, #0x10
|
|
mov r2, r8
|
|
ldrh r2, [r2, #6]
|
|
adds r0, r0, r2
|
|
mov r3, ip
|
|
strh r0, [r3, #2]
|
|
lbl_0803d920:
|
|
adds r0, r5, #0
|
|
adds r0, #0x40
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
movs r7, #0
|
|
ldrsh r2, [r0, r7]
|
|
mov r0, r8
|
|
movs r1, #8
|
|
ldrsh r3, [r0, r1]
|
|
mov r7, ip
|
|
ldrh r1, [r7]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803d944
|
|
adds r0, r3, r6
|
|
b lbl_0803d946
|
|
lbl_0803d944:
|
|
subs r0, r3, r6
|
|
lbl_0803d946:
|
|
lsls r0, r0, #0x10
|
|
asrs r3, r0, #0x10
|
|
cmp r2, #0
|
|
bge lbl_0803d95e
|
|
rsbs r0, r2, #0
|
|
muls r0, r4, r0
|
|
lsls r0, r0, #8
|
|
asrs r2, r0, #0x10
|
|
subs r0, r3, r2
|
|
mov r1, ip
|
|
strh r0, [r1, #4]
|
|
b lbl_0803d96c
|
|
lbl_0803d95e:
|
|
adds r0, r2, #0
|
|
muls r0, r4, r0
|
|
lsls r0, r0, #8
|
|
asrs r2, r0, #0x10
|
|
adds r0, r3, r2
|
|
mov r2, ip
|
|
strh r0, [r2, #4]
|
|
lbl_0803d96c:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start AcidWormRandomXMovement
|
|
AcidWormRandomXMovement: @ 0x0803d978
|
|
push {r4, r5, lr}
|
|
ldr r3, lbl_0803d9ac @ =gCurrentSprite
|
|
movs r0, #0x2e
|
|
adds r0, r0, r3
|
|
mov ip, r0
|
|
ldrb r2, [r0]
|
|
ldr r4, lbl_0803d9b0 @ =0x082fabd2
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r4
|
|
movs r5, #0
|
|
ldrsh r1, [r0, r5]
|
|
ldr r0, lbl_0803d9b4 @ =0x00007fff
|
|
cmp r1, r0
|
|
bne lbl_0803d99a
|
|
movs r0, #0x28
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, #0x14
|
|
lbl_0803d99a:
|
|
adds r0, r2, #1
|
|
mov r2, ip
|
|
strb r0, [r2]
|
|
ldrh r0, [r3, #4]
|
|
adds r0, r0, r1
|
|
strh r0, [r3, #4]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803d9ac: .4byte gCurrentSprite
|
|
lbl_0803d9b0: .4byte 0x082fabd2
|
|
lbl_0803d9b4: .4byte 0x00007fff
|
|
|
|
thumb_func_start AcidWormChangeTwoGroundCCAA
|
|
AcidWormChangeTwoGroundCCAA: @ 0x0803d9b8
|
|
push {r4, r5, r6, lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r6, r0, #0
|
|
adds r4, r1, #0
|
|
adds r5, r2, #0
|
|
lsls r6, r6, #0x18
|
|
lsrs r6, r6, #0x18
|
|
lsls r4, r4, #0x10
|
|
lsrs r4, r4, #0x10
|
|
lsls r5, r5, #0x10
|
|
lsrs r5, r5, #0x10
|
|
ldr r0, lbl_0803d9fc @ =gCurrentClipdataAffectingAction
|
|
mov r8, r0
|
|
strb r6, [r0]
|
|
adds r4, #0x40
|
|
adds r1, r5, #0
|
|
subs r1, #0x20
|
|
adds r0, r4, #0
|
|
bl ClipdataProcess
|
|
mov r0, r8
|
|
strb r6, [r0]
|
|
adds r5, #0x20
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
bl ClipdataProcess
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803d9fc: .4byte gCurrentClipdataAffectingAction
|
|
|
|
thumb_func_start AcidWormChangeBigBlockDownCCAA
|
|
AcidWormChangeBigBlockDownCCAA: @ 0x0803da00
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
ldr r0, lbl_0803da48 @ =gCurrentSprite
|
|
ldrh r6, [r0, #6]
|
|
ldrh r7, [r0, #8]
|
|
ldr r5, lbl_0803da4c @ =gCurrentClipdataAffectingAction
|
|
strb r4, [r5]
|
|
adds r1, r7, #0
|
|
subs r1, #0x20
|
|
adds r0, r6, #0
|
|
bl ClipdataProcess
|
|
strb r4, [r5]
|
|
adds r1, r7, #0
|
|
adds r1, #0x20
|
|
adds r0, r6, #0
|
|
bl ClipdataProcess
|
|
movs r0, #3
|
|
movs r1, #0x1c
|
|
bl EventFunction
|
|
cmp r0, #0
|
|
bne lbl_0803da42
|
|
adds r0, r6, #0
|
|
subs r0, #0x40
|
|
adds r1, r7, #0
|
|
subs r1, #0x10
|
|
movs r2, #0x22
|
|
bl ParticleSet
|
|
lbl_0803da42:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803da48: .4byte gCurrentSprite
|
|
lbl_0803da4c: .4byte gCurrentClipdataAffectingAction
|
|
|
|
thumb_func_start AcidWormChangeBigBlockMiddleCCAA
|
|
AcidWormChangeBigBlockMiddleCCAA: @ 0x0803da50
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
ldr r1, lbl_0803daa0 @ =gCurrentSprite
|
|
ldrh r0, [r1, #6]
|
|
subs r0, #0x40
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
ldrh r7, [r1, #8]
|
|
ldr r5, lbl_0803daa4 @ =gCurrentClipdataAffectingAction
|
|
strb r4, [r5]
|
|
adds r1, r7, #0
|
|
subs r1, #0x20
|
|
adds r0, r6, #0
|
|
bl ClipdataProcess
|
|
strb r4, [r5]
|
|
adds r1, r7, #0
|
|
adds r1, #0x20
|
|
adds r0, r6, #0
|
|
bl ClipdataProcess
|
|
movs r0, #3
|
|
movs r1, #0x1c
|
|
bl EventFunction
|
|
cmp r0, #0
|
|
bne lbl_0803da98
|
|
adds r0, r6, #0
|
|
subs r0, #0x40
|
|
adds r1, r7, #0
|
|
adds r1, #0x10
|
|
movs r2, #0x22
|
|
bl ParticleSet
|
|
lbl_0803da98:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803daa0: .4byte gCurrentSprite
|
|
lbl_0803daa4: .4byte gCurrentClipdataAffectingAction
|
|
|
|
thumb_func_start AcidWormChangeBigBlockTopCCAA
|
|
AcidWormChangeBigBlockTopCCAA: @ 0x0803daa8
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
ldr r1, lbl_0803db84 @ =gCurrentSprite
|
|
ldrh r0, [r1, #6]
|
|
subs r0, #0x80
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
ldrh r7, [r1, #8]
|
|
ldr r5, lbl_0803db88 @ =gCurrentClipdataAffectingAction
|
|
strb r4, [r5]
|
|
movs r0, #0x20
|
|
rsbs r0, r0, #0
|
|
adds r0, r0, r7
|
|
mov r8, r0
|
|
adds r0, r6, #0
|
|
mov r1, r8
|
|
bl ClipdataProcess
|
|
strb r4, [r5]
|
|
adds r5, r7, #0
|
|
adds r5, #0x20
|
|
adds r0, r6, #0
|
|
adds r1, r5, #0
|
|
bl ClipdataProcess
|
|
movs r0, #3
|
|
movs r1, #0x1c
|
|
bl EventFunction
|
|
cmp r0, #0
|
|
bne lbl_0803db78
|
|
adds r0, r6, #0
|
|
subs r0, #0x40
|
|
adds r1, r7, #0
|
|
subs r1, #8
|
|
movs r2, #0x22
|
|
bl ParticleSet
|
|
adds r4, r6, #0
|
|
subs r4, #0x80
|
|
lsls r4, r4, #0x10
|
|
lsrs r4, r4, #0x10
|
|
adds r2, r4, #0
|
|
subs r2, #0x42
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
mov r3, r8
|
|
bl SpriteDebrisInit
|
|
adds r3, r7, #0
|
|
subs r3, #0x34
|
|
movs r0, #0
|
|
movs r1, #0x12
|
|
adds r2, r4, #0
|
|
bl SpriteDebrisInit
|
|
adds r2, r4, #0
|
|
subs r2, #0x5c
|
|
adds r3, r7, #0
|
|
subs r3, #0x3e
|
|
movs r0, #0
|
|
movs r1, #0x13
|
|
bl SpriteDebrisInit
|
|
movs r0, #0
|
|
movs r1, #4
|
|
adds r2, r4, #0
|
|
mov r3, r8
|
|
bl SpriteDebrisInit
|
|
adds r2, r4, #0
|
|
subs r2, #0x24
|
|
adds r3, r7, #0
|
|
adds r3, #0x52
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl SpriteDebrisInit
|
|
adds r2, r4, #0
|
|
subs r2, #0x4c
|
|
movs r0, #0
|
|
movs r1, #0x12
|
|
adds r3, r5, #0
|
|
bl SpriteDebrisInit
|
|
adds r3, r7, #0
|
|
adds r3, #0x48
|
|
movs r0, #0
|
|
movs r1, #0x13
|
|
adds r2, r4, #0
|
|
bl SpriteDebrisInit
|
|
subs r4, #0x6c
|
|
adds r3, r7, #0
|
|
adds r3, #0x34
|
|
movs r0, #0
|
|
movs r1, #4
|
|
adds r2, r4, #0
|
|
bl SpriteDebrisInit
|
|
lbl_0803db78:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803db84: .4byte gCurrentSprite
|
|
lbl_0803db88: .4byte gCurrentClipdataAffectingAction
|
|
|
|
thumb_func_start AcidWormPlaySound
|
|
AcidWormPlaySound: @ 0x0803db8c
|
|
push {lr}
|
|
ldr r0, lbl_0803dba0 @ =gSubSpriteData1
|
|
ldrb r0, [r0, #0xf]
|
|
cmp r0, #0
|
|
bne lbl_0803dba4
|
|
movs r0, #0xd8
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
b lbl_0803dbac
|
|
.align 2, 0
|
|
lbl_0803dba0: .4byte gSubSpriteData1
|
|
lbl_0803dba4:
|
|
movs r0, #0xd6
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
lbl_0803dbac:
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start AcidWormCollidingWithSamusWhenExtending
|
|
AcidWormCollidingWithSamusWhenExtending: @ 0x0803dbb0
|
|
push {lr}
|
|
ldr r3, lbl_0803dbc4 @ =gCurrentSprite
|
|
ldrh r1, [r3]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803dbc8
|
|
movs r0, #0
|
|
b lbl_0803dbe8
|
|
.align 2, 0
|
|
lbl_0803dbc4: .4byte gCurrentSprite
|
|
lbl_0803dbc8:
|
|
ldr r0, lbl_0803dbec @ =0x0000f7ff
|
|
ands r0, r1
|
|
movs r1, #0
|
|
movs r2, #0
|
|
strh r0, [r3]
|
|
ldr r0, lbl_0803dbf0 @ =0x082fc1c8
|
|
str r0, [r3, #0x18]
|
|
strb r1, [r3, #0x1c]
|
|
strh r2, [r3, #0x16]
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x27
|
|
strb r0, [r1]
|
|
bl AcidWormPlaySound
|
|
movs r0, #1
|
|
lbl_0803dbe8:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
lbl_0803dbec: .4byte 0x0000f7ff
|
|
lbl_0803dbf0: .4byte 0x082fc1c8
|
|
|
|
thumb_func_start AcidWormInit
|
|
AcidWormInit: @ 0x0803dbf4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0xc
|
|
ldr r4, lbl_0803dcdc @ =gCurrentSprite
|
|
ldr r0, lbl_0803dce0 @ =0x0000ffd0
|
|
strh r0, [r4, #0xa]
|
|
movs r1, #0x38
|
|
strh r1, [r4, #0xc]
|
|
subs r0, #8
|
|
strh r0, [r4, #0xe]
|
|
strh r1, [r4, #0x10]
|
|
adds r0, r4, #0
|
|
adds r0, #0x27
|
|
movs r2, #0x1a
|
|
strb r2, [r0]
|
|
adds r1, r4, #0
|
|
adds r1, #0x28
|
|
movs r0, #0x10
|
|
strb r0, [r1]
|
|
adds r0, r4, #0
|
|
adds r0, #0x29
|
|
strb r2, [r0]
|
|
ldr r0, lbl_0803dce4 @ =0x082fc110
|
|
str r0, [r4, #0x18]
|
|
movs r0, #0
|
|
strb r0, [r4, #0x1c]
|
|
movs r1, #0
|
|
strh r1, [r4, #0x16]
|
|
adds r1, r4, #0
|
|
adds r1, #0x25
|
|
movs r0, #0x16
|
|
strb r0, [r1]
|
|
ldr r2, lbl_0803dce8 @ =0x082b0d68
|
|
ldrb r1, [r4, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, #0x14]
|
|
adds r2, r4, #0
|
|
adds r2, #0x32
|
|
ldrb r1, [r2]
|
|
movs r0, #0x40
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r0, r4, #0
|
|
adds r0, #0x24
|
|
movs r2, #1
|
|
strb r2, [r0]
|
|
ldrh r0, [r4]
|
|
movs r2, #0x84
|
|
lsls r2, r2, #8
|
|
adds r1, r2, #0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
adds r0, r4, #0
|
|
adds r0, #0x2f
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #0x14
|
|
strb r0, [r1]
|
|
ldrh r0, [r4, #2]
|
|
subs r0, #0x20
|
|
strh r0, [r4, #2]
|
|
ldrh r0, [r4, #4]
|
|
adds r0, #0x20
|
|
strh r0, [r4, #4]
|
|
ldrh r6, [r4, #2]
|
|
mov r8, r6
|
|
ldrh r5, [r4, #4]
|
|
mov sb, r5
|
|
ldr r2, lbl_0803dcec @ =gSubSpriteData1
|
|
mov sl, r2
|
|
strh r6, [r2, #6]
|
|
strh r5, [r2, #8]
|
|
strh r6, [r4, #6]
|
|
strh r5, [r4, #8]
|
|
movs r0, #0
|
|
strb r0, [r2, #0xf]
|
|
strb r0, [r2, #0xe]
|
|
movs r0, #3
|
|
movs r1, #0x1c
|
|
bl EventFunction
|
|
adds r7, r0, #0
|
|
cmp r7, #0
|
|
beq lbl_0803dcf4
|
|
ldr r1, lbl_0803dcf0 @ =gEffectYPositionOffset
|
|
movs r2, #0x98
|
|
lsls r2, r2, #2
|
|
adds r0, r2, #0
|
|
strh r0, [r1]
|
|
movs r0, #1
|
|
bl AcidWormChangeBigBlockDownCCAA
|
|
movs r0, #1
|
|
bl AcidWormChangeBigBlockMiddleCCAA
|
|
movs r0, #1
|
|
bl AcidWormChangeBigBlockTopCCAA
|
|
movs r0, #1
|
|
adds r1, r6, #0
|
|
adds r2, r5, #0
|
|
bl AcidWormChangeTwoGroundCCAA
|
|
movs r0, #0
|
|
strh r0, [r4]
|
|
b lbl_0803de02
|
|
.align 2, 0
|
|
lbl_0803dcdc: .4byte gCurrentSprite
|
|
lbl_0803dce0: .4byte 0x0000ffd0
|
|
lbl_0803dce4: .4byte 0x082fc110
|
|
lbl_0803dce8: .4byte 0x082b0d68
|
|
lbl_0803dcec: .4byte gSubSpriteData1
|
|
lbl_0803dcf0: .4byte gEffectYPositionOffset
|
|
lbl_0803dcf4:
|
|
movs r0, #3
|
|
movs r1, #0x2e
|
|
bl EventFunction
|
|
cmp r0, #0
|
|
bne lbl_0803dd04
|
|
strh r7, [r4]
|
|
b lbl_0803de02
|
|
lbl_0803dd04:
|
|
ldr r0, lbl_0803de14 @ =gDoorUnlockTimer
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
ldrh r0, [r4, #6]
|
|
subs r0, #0x80
|
|
mov r2, sl
|
|
strh r0, [r2, #0xa]
|
|
movs r0, #0
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r5, [r4, #0x1f]
|
|
adds r0, r4, #0
|
|
adds r0, #0x23
|
|
ldrb r4, [r0]
|
|
mov r0, r8
|
|
adds r0, #0x40
|
|
str r0, [sp]
|
|
mov r1, sb
|
|
str r1, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #1
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
mov r0, r8
|
|
adds r0, #0x80
|
|
str r0, [sp]
|
|
mov r2, sb
|
|
str r2, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #2
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
mov r0, r8
|
|
adds r0, #0xc0
|
|
str r0, [sp]
|
|
mov r0, sb
|
|
str r0, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #3
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
str r0, [sp]
|
|
mov r1, sb
|
|
str r1, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #4
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
movs r0, #0xa0
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
str r0, [sp]
|
|
mov r2, sb
|
|
str r2, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #5
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
str r0, [sp]
|
|
mov r0, sb
|
|
str r0, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #6
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
movs r0, #0xe0
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
str r0, [sp]
|
|
mov r1, sb
|
|
str r1, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #7
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
add r0, r8
|
|
str r0, [sp]
|
|
mov r2, sb
|
|
str r2, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #8
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
movs r0, #0x90
|
|
lsls r0, r0, #2
|
|
add r0, r8
|
|
str r0, [sp]
|
|
mov r0, sb
|
|
str r0, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x25
|
|
movs r1, #9
|
|
adds r2, r5, #0
|
|
adds r3, r4, #0
|
|
bl SpriteSpawnSecondary
|
|
lbl_0803de02:
|
|
add sp, #0xc
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803de14: .4byte gDoorUnlockTimer
|
|
|
|
thumb_func_start acid_worm_check_SamusOnZipline
|
|
AcidWormCheckSamusOnZipline: @ 0x0803de18
|
|
push {lr}
|
|
bl SpriteUtilCheckOnZipline
|
|
cmp r0, #0
|
|
beq lbl_0803de30
|
|
ldr r0, lbl_0803de34 @ =gCurrentSprite
|
|
adds r0, #0x24
|
|
movs r1, #0x42
|
|
strb r1, [r0]
|
|
movs r0, #0x12
|
|
bl FadeMusic
|
|
lbl_0803de30:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803de34: .4byte gCurrentSprite
|
|
|
|
thumb_func_start AcidWormSpawnStart
|
|
AcidWormSpawnStart: @ 0x0803de38
|
|
push {lr}
|
|
bl SpriteUtilCheckOnZipline
|
|
cmp r0, #0
|
|
beq lbl_0803dea4
|
|
ldr r0, lbl_0803dea8 @ =gSamusData
|
|
ldrh r2, [r0, #0x12]
|
|
ldr r3, lbl_0803deac @ =gCurrentSprite
|
|
ldrh r1, [r3, #8]
|
|
adds r0, r1, #0
|
|
subs r0, #0x8c
|
|
cmp r2, r0
|
|
ble lbl_0803dea4
|
|
adds r0, r1, #0
|
|
adds r0, #0x8c
|
|
cmp r2, r0
|
|
bge lbl_0803dea4
|
|
ldrh r1, [r3]
|
|
ldr r0, lbl_0803deb0 @ =0x00007fff
|
|
ands r0, r1
|
|
movs r2, #0
|
|
strh r0, [r3]
|
|
ldr r1, lbl_0803deb4 @ =gSubSpriteData1
|
|
movs r0, #1
|
|
strb r0, [r1, #0xe]
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x43
|
|
strb r0, [r1]
|
|
adds r0, r3, #0
|
|
adds r0, #0x2c
|
|
strb r2, [r0]
|
|
movs r0, #1
|
|
bl AcidWormChangeBigBlockDownCCAA
|
|
movs r0, #0x3c
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartVertical
|
|
movs r0, #0x3c
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartHorizontal
|
|
ldr r0, lbl_0803deb8 @ =0x000001a7
|
|
bl SoundPlay
|
|
movs r0, #0xd4
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
movs r0, #0x3c
|
|
movs r1, #0
|
|
bl PlayMusic
|
|
lbl_0803dea4:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803dea8: .4byte gSamusData
|
|
lbl_0803deac: .4byte gCurrentSprite
|
|
lbl_0803deb0: .4byte 0x00007fff
|
|
lbl_0803deb4: .4byte gSubSpriteData1
|
|
lbl_0803deb8: .4byte 0x000001a7
|
|
|
|
thumb_func_start AcidWormSpawnExtending
|
|
AcidWormSpawnExtending: @ 0x0803debc
|
|
push {r4, lr}
|
|
ldr r4, lbl_0803dee8 @ =gCurrentSprite
|
|
ldrh r3, [r4, #2]
|
|
ldrh r0, [r4, #6]
|
|
ldr r1, lbl_0803deec @ =0xfffffe40
|
|
adds r0, r0, r1
|
|
cmp r3, r0
|
|
bge lbl_0803def4
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r2, #0
|
|
movs r0, #0x45
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803def0 @ =0x082fc388
|
|
str r0, [r4, #0x18]
|
|
strb r2, [r4, #0x1c]
|
|
strh r2, [r4, #0x16]
|
|
movs r0, #0xd5
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
b lbl_0803df46
|
|
.align 2, 0
|
|
lbl_0803dee8: .4byte gCurrentSprite
|
|
lbl_0803deec: .4byte 0xfffffe40
|
|
lbl_0803def0: .4byte 0x082fc388
|
|
lbl_0803def4:
|
|
adds r0, r3, #0
|
|
subs r0, #0x10
|
|
strh r0, [r4, #2]
|
|
ldrh r1, [r4, #2]
|
|
ldrh r2, [r4, #4]
|
|
adds r0, r3, #0
|
|
movs r3, #3
|
|
bl SpriteUtilCheckOutOfRoomEffect
|
|
cmp r0, #0
|
|
beq lbl_0803df10
|
|
ldr r0, lbl_0803df34 @ =0x000001bb
|
|
bl SoundPlay
|
|
lbl_0803df10:
|
|
ldr r1, lbl_0803df38 @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
adds r0, #1
|
|
strh r0, [r1]
|
|
adds r1, r4, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #4
|
|
bne lbl_0803df3c
|
|
movs r0, #1
|
|
bl AcidWormChangeBigBlockMiddleCCAA
|
|
b lbl_0803df46
|
|
.align 2, 0
|
|
lbl_0803df34: .4byte 0x000001bb
|
|
lbl_0803df38: .4byte gEffectYPositionOffset
|
|
lbl_0803df3c:
|
|
cmp r0, #8
|
|
bne lbl_0803df46
|
|
movs r0, #1
|
|
bl AcidWormChangeBigBlockTopCCAA
|
|
lbl_0803df46:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start AcidWormSpawnStayingOnTop
|
|
AcidWormSpawnStayingOnTop: @ 0x0803df4c
|
|
push {lr}
|
|
bl AcidWormRandomXMovement
|
|
bl SpriteUtilCheckEndCurrentSpriteAnim
|
|
cmp r0, #0
|
|
beq lbl_0803df74
|
|
ldr r1, lbl_0803df78 @ =gCurrentSprite
|
|
adds r2, r1, #0
|
|
adds r2, #0x24
|
|
movs r3, #0
|
|
movs r0, #0x47
|
|
strb r0, [r2]
|
|
ldr r0, lbl_0803df7c @ =0x082fc1c8
|
|
str r0, [r1, #0x18]
|
|
strb r3, [r1, #0x1c]
|
|
strh r3, [r1, #0x16]
|
|
ldr r0, lbl_0803df80 @ =0x000001a9
|
|
bl SoundPlay
|
|
lbl_0803df74:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803df78: .4byte gCurrentSprite
|
|
lbl_0803df7c: .4byte 0x082fc1c8
|
|
lbl_0803df80: .4byte 0x000001a9
|
|
|
|
thumb_func_start AcidWormSpawnRetracting
|
|
AcidWormSpawnRetracting: @ 0x0803df84
|
|
push {lr}
|
|
bl AcidWormRandomXMovement
|
|
ldr r3, lbl_0803dfbc @ =gCurrentSprite
|
|
ldrh r0, [r3, #2]
|
|
ldrh r1, [r3, #6]
|
|
cmp r0, r1
|
|
blo lbl_0803dfc0
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
movs r0, #8
|
|
strb r0, [r1]
|
|
ldrh r1, [r3]
|
|
movs r2, #0
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
strh r0, [r3, #0x12]
|
|
adds r0, r3, #0
|
|
adds r0, #0x2a
|
|
strb r2, [r0]
|
|
adds r1, r3, #0
|
|
adds r1, #0x2c
|
|
movs r0, #0x3c
|
|
strb r0, [r1]
|
|
b lbl_0803dff0
|
|
.align 2, 0
|
|
lbl_0803dfbc: .4byte gCurrentSprite
|
|
lbl_0803dfc0:
|
|
ldrh r0, [r3, #2]
|
|
adds r1, r0, #0
|
|
adds r1, #0x10
|
|
strh r1, [r3, #2]
|
|
ldrh r1, [r3, #2]
|
|
ldrh r2, [r3, #4]
|
|
movs r3, #3
|
|
bl SpriteUtilCheckInRoomEffect
|
|
cmp r0, #0
|
|
beq lbl_0803dfdc
|
|
ldr r0, lbl_0803dff4 @ =0x000001bb
|
|
bl SoundPlay
|
|
lbl_0803dfdc:
|
|
ldr r0, lbl_0803dff8 @ =gEffectYPosition
|
|
ldr r1, lbl_0803dffc @ =gSubSpriteData1
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1, #0xa]
|
|
cmp r0, r1
|
|
bls lbl_0803dff0
|
|
ldr r1, lbl_0803e000 @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
subs r0, #1
|
|
strh r0, [r1]
|
|
lbl_0803dff0:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803dff4: .4byte 0x000001bb
|
|
lbl_0803dff8: .4byte gEffectYPosition
|
|
lbl_0803dffc: .4byte gSubSpriteData1
|
|
lbl_0803e000: .4byte gEffectYPositionOffset
|
|
|
|
thumb_func_start sub_0803e004
|
|
sub_0803e004: @ 0x0803e004
|
|
ldr r1, lbl_0803e028 @ =gCurrentSprite
|
|
ldr r0, lbl_0803e02c @ =0x082fc110
|
|
str r0, [r1, #0x18]
|
|
movs r0, #0
|
|
strb r0, [r1, #0x1c]
|
|
strh r0, [r1, #0x16]
|
|
adds r2, r1, #0
|
|
adds r2, #0x24
|
|
movs r0, #9
|
|
strb r0, [r2]
|
|
ldrh r2, [r1]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #3
|
|
adds r0, r3, #0
|
|
orrs r0, r2
|
|
strh r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
lbl_0803e028: .4byte gCurrentSprite
|
|
lbl_0803e02c: .4byte 0x082fc110
|
|
|
|
thumb_func_start AcidWormIdle
|
|
AcidWormIdle: @ 0x0803e030
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r3, lbl_0803e068 @ =gEffectYPosition
|
|
ldr r0, lbl_0803e06c @ =gSubSpriteData1
|
|
ldrh r1, [r3]
|
|
adds r6, r0, #0
|
|
ldrh r0, [r6, #0xa]
|
|
cmp r1, r0
|
|
bls lbl_0803e048
|
|
ldr r1, lbl_0803e070 @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
subs r0, #1
|
|
strh r0, [r1]
|
|
lbl_0803e048:
|
|
ldr r7, lbl_0803e074 @ =gSamusData
|
|
ldrh r2, [r7, #0x14]
|
|
ldr r0, lbl_0803e078 @ =gCurrentSprite
|
|
ldrh r5, [r0, #2]
|
|
adds r4, r0, #0
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bhi lbl_0803e05c
|
|
cmp r2, r5
|
|
bls lbl_0803e07c
|
|
lbl_0803e05c:
|
|
adds r1, r4, #0
|
|
adds r1, #0x2c
|
|
movs r0, #0x3c
|
|
strb r0, [r1]
|
|
b lbl_0803e0dc
|
|
.align 2, 0
|
|
lbl_0803e068: .4byte gEffectYPosition
|
|
lbl_0803e06c: .4byte gSubSpriteData1
|
|
lbl_0803e070: .4byte gEffectYPositionOffset
|
|
lbl_0803e074: .4byte gSamusData
|
|
lbl_0803e078: .4byte gCurrentSprite
|
|
lbl_0803e07c:
|
|
adds r1, r4, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
lsls r0, r0, #0x18
|
|
lsrs r3, r0, #0x18
|
|
cmp r3, #0
|
|
bne lbl_0803e0dc
|
|
subs r0, r5, r2
|
|
subs r0, #0x51
|
|
cmp r0, #0xee
|
|
bhi lbl_0803e0b4
|
|
ldrh r2, [r7, #0x12]
|
|
ldrh r1, [r4, #8]
|
|
ldr r5, lbl_0803e0b0 @ =0xfffffe40
|
|
adds r0, r1, r5
|
|
cmp r2, r0
|
|
ble lbl_0803e0b4
|
|
movs r5, #0xe0
|
|
lsls r5, r5, #1
|
|
adds r0, r1, r5
|
|
cmp r2, r0
|
|
bge lbl_0803e0b4
|
|
strb r3, [r6, #0xf]
|
|
b lbl_0803e0b8
|
|
.align 2, 0
|
|
lbl_0803e0b0: .4byte 0xfffffe40
|
|
lbl_0803e0b4:
|
|
movs r0, #1
|
|
strb r0, [r6, #0xf]
|
|
lbl_0803e0b8:
|
|
ldr r0, lbl_0803e0e4 @ =0x082fc318
|
|
str r0, [r4, #0x18]
|
|
movs r0, #0
|
|
strb r0, [r4, #0x1c]
|
|
strh r0, [r4, #0x16]
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x23
|
|
strb r0, [r1]
|
|
bl SpriteUtilMakeSpriteFaceSamusDirection
|
|
ldrh r1, [r4]
|
|
ldr r0, lbl_0803e0e8 @ =0x0000fbff
|
|
ands r0, r1
|
|
strh r0, [r4]
|
|
ldr r0, lbl_0803e0ec @ =0x000001b5
|
|
bl SoundPlay
|
|
lbl_0803e0dc:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803e0e4: .4byte 0x082fc318
|
|
lbl_0803e0e8: .4byte 0x0000fbff
|
|
lbl_0803e0ec: .4byte 0x000001b5
|
|
|
|
thumb_func_start acid_worm_check_end_warning_anim
|
|
acid_worm_check_end_warning_anim: @ 0x0803e0f0
|
|
push {lr}
|
|
bl sub_0803d860
|
|
bl SpriteUtilCheckEndCurrentSpriteAnim
|
|
cmp r0, #0
|
|
beq lbl_0803e144
|
|
ldr r2, lbl_0803e130 @ =gCurrentSprite
|
|
ldr r0, lbl_0803e134 @ =0x082fc138
|
|
str r0, [r2, #0x18]
|
|
movs r3, #0
|
|
strb r3, [r2, #0x1c]
|
|
strh r3, [r2, #0x16]
|
|
adds r1, r2, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x25
|
|
strb r0, [r1]
|
|
adds r1, #8
|
|
movs r0, #8
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e138 @ =gSubSpriteData1
|
|
ldrh r1, [r0, #0xa]
|
|
ldrh r0, [r2, #6]
|
|
subs r0, #0xc0
|
|
cmp r1, r0
|
|
bne lbl_0803e140
|
|
ldr r1, lbl_0803e13c @ =gEffectYPositionOffset
|
|
movs r2, #0x40
|
|
rsbs r2, r2, #0
|
|
adds r0, r2, #0
|
|
strh r0, [r1]
|
|
b lbl_0803e144
|
|
.align 2, 0
|
|
lbl_0803e130: .4byte gCurrentSprite
|
|
lbl_0803e134: .4byte 0x082fc138
|
|
lbl_0803e138: .4byte gSubSpriteData1
|
|
lbl_0803e13c: .4byte gEffectYPositionOffset
|
|
lbl_0803e140:
|
|
ldr r0, lbl_0803e148 @ =gEffectYPositionOffset
|
|
strh r3, [r0]
|
|
lbl_0803e144:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803e148: .4byte gEffectYPositionOffset
|
|
|
|
thumb_func_start AcidWormExtend
|
|
AcidWormExtend: @ 0x0803e14c
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r3, lbl_0803e194 @ =0x082b0d68
|
|
ldr r2, lbl_0803e198 @ =gCurrentSprite
|
|
ldrb r1, [r2, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
ldrh r7, [r0]
|
|
adds r1, r2, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
mov r8, r2
|
|
cmp r0, #0
|
|
beq lbl_0803e1cc
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq lbl_0803e17a
|
|
b lbl_0803e49a
|
|
lbl_0803e17a:
|
|
ldr r0, lbl_0803e19c @ =gSubSpriteData1
|
|
ldrb r0, [r0, #0xf]
|
|
cmp r0, #0
|
|
bne lbl_0803e1c0
|
|
ldrh r1, [r2, #0x14]
|
|
lsrs r0, r7, #2
|
|
cmp r1, r0
|
|
bhi lbl_0803e1a4
|
|
ldr r0, lbl_0803e1a0 @ =0x000001af
|
|
bl SoundPlay
|
|
b lbl_0803e49a
|
|
.align 2, 0
|
|
lbl_0803e194: .4byte 0x082b0d68
|
|
lbl_0803e198: .4byte gCurrentSprite
|
|
lbl_0803e19c: .4byte gSubSpriteData1
|
|
lbl_0803e1a0: .4byte 0x000001af
|
|
lbl_0803e1a4:
|
|
lsrs r0, r7, #1
|
|
cmp r1, r0
|
|
bhi lbl_0803e1b4
|
|
movs r0, #0xd7
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
b lbl_0803e49a
|
|
lbl_0803e1b4:
|
|
ldr r0, lbl_0803e1bc @ =0x000001ad
|
|
bl SoundPlay
|
|
b lbl_0803e49a
|
|
.align 2, 0
|
|
lbl_0803e1bc: .4byte 0x000001ad
|
|
lbl_0803e1c0:
|
|
ldr r0, lbl_0803e1c8 @ =0x000001ab
|
|
bl SoundPlay
|
|
b lbl_0803e49a
|
|
.align 2, 0
|
|
lbl_0803e1c8: .4byte 0x000001ab
|
|
lbl_0803e1cc:
|
|
ldr r1, lbl_0803e1ec @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
adds r0, #1
|
|
strh r0, [r1]
|
|
ldr r0, lbl_0803e1f0 @ =gSubSpriteData1
|
|
ldrb r1, [r0, #0xf]
|
|
adds r5, r0, #0
|
|
cmp r1, #0
|
|
bne lbl_0803e200
|
|
mov r0, r8
|
|
ldrh r1, [r0, #0x14]
|
|
lsrs r0, r7, #2
|
|
cmp r1, r0
|
|
bhi lbl_0803e1f4
|
|
movs r2, #4
|
|
b lbl_0803e202
|
|
.align 2, 0
|
|
lbl_0803e1ec: .4byte gEffectYPositionOffset
|
|
lbl_0803e1f0: .4byte gSubSpriteData1
|
|
lbl_0803e1f4:
|
|
lsrs r0, r7, #1
|
|
movs r2, #2
|
|
cmp r1, r0
|
|
bhi lbl_0803e202
|
|
movs r2, #3
|
|
b lbl_0803e202
|
|
lbl_0803e200:
|
|
movs r2, #2
|
|
lbl_0803e202:
|
|
movs r4, #0
|
|
mov r3, r8
|
|
ldrh r1, [r3]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803e236
|
|
mov r1, r8
|
|
adds r1, #0x2a
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x3e
|
|
bls lbl_0803e220
|
|
movs r4, #1
|
|
b lbl_0803e224
|
|
lbl_0803e220:
|
|
adds r0, r2, r0
|
|
strb r0, [r1]
|
|
lbl_0803e224:
|
|
ldrh r1, [r5, #8]
|
|
mov r3, r8
|
|
ldrh r0, [r3, #8]
|
|
adds r0, #0x40
|
|
cmp r1, r0
|
|
bge lbl_0803e260
|
|
adds r0, r1, r2
|
|
strh r0, [r5, #8]
|
|
b lbl_0803e266
|
|
lbl_0803e236:
|
|
mov r3, r8
|
|
adds r3, #0x2a
|
|
ldrb r1, [r3]
|
|
subs r0, r1, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0xbf
|
|
bhi lbl_0803e24a
|
|
movs r4, #1
|
|
b lbl_0803e24e
|
|
lbl_0803e24a:
|
|
subs r0, r1, r2
|
|
strb r0, [r3]
|
|
lbl_0803e24e:
|
|
ldrh r1, [r5, #8]
|
|
mov r3, r8
|
|
ldrh r0, [r3, #8]
|
|
subs r0, #0x40
|
|
cmp r1, r0
|
|
ble lbl_0803e260
|
|
subs r0, r1, r2
|
|
strh r0, [r5, #8]
|
|
b lbl_0803e266
|
|
lbl_0803e260:
|
|
adds r0, r4, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
lbl_0803e266:
|
|
ldrh r1, [r5, #6]
|
|
mov r3, r8
|
|
ldrh r0, [r3, #6]
|
|
subs r0, #0x30
|
|
cmp r1, r0
|
|
ble lbl_0803e278
|
|
subs r0, r1, r2
|
|
strh r0, [r5, #6]
|
|
b lbl_0803e27e
|
|
lbl_0803e278:
|
|
adds r0, r4, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
lbl_0803e27e:
|
|
mov r0, r8
|
|
ldrh r6, [r0, #2]
|
|
bl sub_0803d860
|
|
mov r3, r8
|
|
ldrh r1, [r3, #2]
|
|
ldrh r2, [r3, #4]
|
|
adds r0, r6, #0
|
|
movs r3, #3
|
|
bl SpriteUtilCheckOutOfRoomEffect
|
|
cmp r0, #0
|
|
beq lbl_0803e29e
|
|
ldr r0, lbl_0803e2dc @ =0x000001bb
|
|
bl SoundPlay
|
|
lbl_0803e29e:
|
|
bl AcidWormCollidingWithSamusWhenExtending
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq lbl_0803e2aa
|
|
b lbl_0803e49a
|
|
lbl_0803e2aa:
|
|
cmp r4, #3
|
|
beq lbl_0803e2b0
|
|
b lbl_0803e49a
|
|
lbl_0803e2b0:
|
|
mov r1, r8
|
|
adds r1, #0x24
|
|
movs r0, #0xf
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e2e0 @ =gSubSpriteData1
|
|
ldrb r0, [r0, #0xf]
|
|
cmp r0, #0
|
|
beq lbl_0803e2c2
|
|
b lbl_0803e48c
|
|
lbl_0803e2c2:
|
|
mov r0, r8
|
|
ldrh r6, [r0, #2]
|
|
ldrh r5, [r0, #4]
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803e2e4
|
|
adds r0, r5, #0
|
|
adds r0, #0x40
|
|
b lbl_0803e2e8
|
|
.align 2, 0
|
|
lbl_0803e2dc: .4byte 0x000001bb
|
|
lbl_0803e2e0: .4byte gSubSpriteData1
|
|
lbl_0803e2e4:
|
|
adds r0, r5, #0
|
|
subs r0, #0x40
|
|
lbl_0803e2e8:
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
ldr r1, lbl_0803e37c @ =gCurrentSprite
|
|
mov r8, r1
|
|
ldrh r1, [r1, #0x14]
|
|
lsrs r0, r7, #2
|
|
cmp r1, r0
|
|
bhi lbl_0803e384
|
|
movs r0, #0x28
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartVertical
|
|
movs r0, #0x28
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartHorizontal
|
|
adds r2, r6, #0
|
|
subs r2, #0x42
|
|
adds r3, r5, #0
|
|
subs r3, #0x20
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl SpriteDebrisInit
|
|
movs r0, #0
|
|
movs r1, #4
|
|
adds r2, r6, #0
|
|
adds r3, r5, #0
|
|
bl SpriteDebrisInit
|
|
adds r3, r5, #0
|
|
adds r3, #0x34
|
|
movs r0, #0
|
|
movs r1, #0x12
|
|
adds r2, r6, #0
|
|
bl SpriteDebrisInit
|
|
adds r2, r6, #0
|
|
subs r2, #0x5c
|
|
adds r3, r5, #0
|
|
subs r3, #0x3e
|
|
movs r0, #0
|
|
movs r1, #0x13
|
|
bl SpriteDebrisInit
|
|
adds r4, r6, #0
|
|
adds r4, #0x20
|
|
adds r3, r5, #0
|
|
adds r3, #0x20
|
|
movs r0, #0
|
|
movs r1, #4
|
|
adds r2, r4, #0
|
|
bl SpriteDebrisInit
|
|
adds r2, r6, #0
|
|
adds r2, #0x40
|
|
movs r0, #0
|
|
movs r1, #0x12
|
|
adds r3, r5, #0
|
|
bl SpriteDebrisInit
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
movs r2, #0x22
|
|
bl ParticleSet
|
|
mov r1, r8
|
|
adds r1, #0x2c
|
|
movs r0, #0x78
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e380 @ =0x000001b3
|
|
bl SoundPlay
|
|
b lbl_0803e440
|
|
.align 2, 0
|
|
lbl_0803e37c: .4byte gCurrentSprite
|
|
lbl_0803e380: .4byte 0x000001b3
|
|
lbl_0803e384:
|
|
lsrs r0, r7, #1
|
|
cmp r1, r0
|
|
bhi lbl_0803e3f6
|
|
movs r0, #0x14
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartVertical
|
|
movs r0, #0x14
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartHorizontal
|
|
adds r2, r6, #0
|
|
subs r2, #0x42
|
|
adds r3, r5, #0
|
|
subs r3, #0x20
|
|
movs r0, #0
|
|
movs r1, #0x11
|
|
bl SpriteDebrisInit
|
|
adds r3, r5, #0
|
|
adds r3, #0x34
|
|
movs r0, #0
|
|
movs r1, #0x12
|
|
adds r2, r6, #0
|
|
bl SpriteDebrisInit
|
|
adds r2, r6, #0
|
|
subs r2, #0x5c
|
|
adds r3, r5, #0
|
|
subs r3, #0x3e
|
|
movs r0, #0
|
|
movs r1, #0x13
|
|
bl SpriteDebrisInit
|
|
adds r4, r6, #0
|
|
adds r4, #0x20
|
|
adds r3, r5, #0
|
|
adds r3, #0x20
|
|
movs r0, #0
|
|
movs r1, #4
|
|
adds r2, r4, #0
|
|
bl SpriteDebrisInit
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
movs r2, #0x21
|
|
bl ParticleSet
|
|
mov r1, r8
|
|
adds r1, #0x2c
|
|
movs r0, #0x8c
|
|
strb r0, [r1]
|
|
movs r0, #0xd9
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
b lbl_0803e440
|
|
lbl_0803e3f6:
|
|
movs r0, #0xa
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartVertical
|
|
movs r0, #0xa
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartHorizontal
|
|
adds r2, r6, #0
|
|
subs r2, #0x42
|
|
adds r3, r5, #0
|
|
subs r3, #0x20
|
|
movs r0, #0
|
|
movs r1, #0x12
|
|
bl SpriteDebrisInit
|
|
adds r4, r6, #0
|
|
adds r4, #0x20
|
|
adds r3, r5, #0
|
|
adds r3, #0x20
|
|
movs r0, #0
|
|
movs r1, #4
|
|
adds r2, r4, #0
|
|
bl SpriteDebrisInit
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
movs r2, #0x20
|
|
bl ParticleSet
|
|
mov r1, r8
|
|
adds r1, #0x2c
|
|
movs r0, #0xa0
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e458 @ =0x000001b1
|
|
bl SoundPlay
|
|
lbl_0803e440:
|
|
ldr r0, lbl_0803e45c @ =gDifficulty
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne lbl_0803e464
|
|
ldr r2, lbl_0803e460 @ =gCurrentSprite
|
|
adds r1, r2, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
adds r0, #0x3c
|
|
strb r0, [r1]
|
|
mov r8, r2
|
|
b lbl_0803e476
|
|
.align 2, 0
|
|
lbl_0803e458: .4byte 0x000001b1
|
|
lbl_0803e45c: .4byte gDifficulty
|
|
lbl_0803e460: .4byte gCurrentSprite
|
|
lbl_0803e464:
|
|
ldr r3, lbl_0803e484 @ =gCurrentSprite
|
|
mov r8, r3
|
|
cmp r0, #2
|
|
bne lbl_0803e476
|
|
mov r1, r8
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
subs r0, #0x14
|
|
strb r0, [r1]
|
|
lbl_0803e476:
|
|
ldr r0, lbl_0803e488 @ =0x082fc1c8
|
|
mov r1, r8
|
|
str r0, [r1, #0x18]
|
|
adds r1, #0x2d
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
b lbl_0803e492
|
|
.align 2, 0
|
|
lbl_0803e484: .4byte gCurrentSprite
|
|
lbl_0803e488: .4byte 0x082fc1c8
|
|
lbl_0803e48c:
|
|
ldr r0, lbl_0803e4a4 @ =0x082fc150
|
|
mov r3, r8
|
|
str r0, [r3, #0x18]
|
|
lbl_0803e492:
|
|
movs r0, #0
|
|
mov r1, r8
|
|
strb r0, [r1, #0x1c]
|
|
strh r0, [r1, #0x16]
|
|
lbl_0803e49a:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803e4a4: .4byte 0x082fc150
|
|
|
|
thumb_func_start AcidWormExtended
|
|
AcidWormExtended: @ 0x0803e4a8
|
|
push {r4, r5, lr}
|
|
sub sp, #0xc
|
|
movs r5, #0
|
|
bl sub_0803d860
|
|
ldr r0, lbl_0803e504 @ =gSubSpriteData1
|
|
ldrb r0, [r0, #0xf]
|
|
cmp r0, #0
|
|
bne lbl_0803e50c
|
|
bl AcidWormCollidingWithSamusWhenExtending
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq lbl_0803e4c6
|
|
b lbl_0803e6a8
|
|
lbl_0803e4c6:
|
|
ldr r4, lbl_0803e508 @ =gCurrentSprite
|
|
adds r5, r4, #0
|
|
adds r5, #0x2d
|
|
ldrb r1, [r5]
|
|
movs r0, #0x1f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803e4de
|
|
movs r0, #0xda
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
lbl_0803e4de:
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
adds r1, r4, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq lbl_0803e4f6
|
|
b lbl_0803e6a8
|
|
lbl_0803e4f6:
|
|
subs r1, #8
|
|
movs r0, #0x27
|
|
strb r0, [r1]
|
|
bl AcidWormPlaySound
|
|
b lbl_0803e6a8
|
|
.align 2, 0
|
|
lbl_0803e504: .4byte gSubSpriteData1
|
|
lbl_0803e508: .4byte gCurrentSprite
|
|
lbl_0803e50c:
|
|
ldr r0, lbl_0803e52c @ =gSamusData
|
|
ldrh r2, [r0, #0x12]
|
|
ldr r0, lbl_0803e530 @ =gCurrentSprite
|
|
ldrh r1, [r0, #8]
|
|
ldr r3, lbl_0803e534 @ =0xfffffe40
|
|
adds r0, r1, r3
|
|
cmp r2, r0
|
|
ble lbl_0803e538
|
|
movs r4, #0xe0
|
|
lsls r4, r4, #1
|
|
adds r0, r1, r4
|
|
cmp r2, r0
|
|
bge lbl_0803e538
|
|
movs r5, #1
|
|
b lbl_0803e546
|
|
.align 2, 0
|
|
lbl_0803e52c: .4byte gSamusData
|
|
lbl_0803e530: .4byte gCurrentSprite
|
|
lbl_0803e534: .4byte 0xfffffe40
|
|
lbl_0803e538:
|
|
bl SpriteUtilCheckEndCurrentSpriteAnim
|
|
cmp r0, #0
|
|
beq lbl_0803e546
|
|
adds r0, r5, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
lbl_0803e546:
|
|
ldr r1, lbl_0803e560 @ =gCurrentSprite
|
|
ldrh r0, [r1, #0x16]
|
|
mov ip, r1
|
|
cmp r0, #1
|
|
bne lbl_0803e564
|
|
ldrb r0, [r1, #0x1c]
|
|
cmp r0, #1
|
|
bne lbl_0803e564
|
|
movs r0, #0xdb
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
b lbl_0803e68e
|
|
.align 2, 0
|
|
lbl_0803e560: .4byte gCurrentSprite
|
|
lbl_0803e564:
|
|
mov r1, ip
|
|
ldrh r0, [r1, #0x16]
|
|
cmp r0, #2
|
|
bne lbl_0803e580
|
|
ldrb r0, [r1, #0x1c]
|
|
cmp r0, #1
|
|
bne lbl_0803e580
|
|
ldr r0, lbl_0803e57c @ =0x000001b7
|
|
bl SoundPlay
|
|
b lbl_0803e68e
|
|
.align 2, 0
|
|
lbl_0803e57c: .4byte 0x000001b7
|
|
lbl_0803e580:
|
|
mov r3, ip
|
|
ldrh r0, [r3, #0x16]
|
|
cmp r0, #5
|
|
bne lbl_0803e5d8
|
|
ldrb r0, [r3, #0x1c]
|
|
cmp r0, #1
|
|
bne lbl_0803e5d8
|
|
ldrh r1, [r3]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r1, r0, #0x10
|
|
cmp r1, #0
|
|
beq lbl_0803e5b8
|
|
ldrb r2, [r3, #0x1f]
|
|
mov r0, ip
|
|
adds r0, #0x23
|
|
ldrb r3, [r0]
|
|
mov r4, ip
|
|
ldrh r0, [r4, #2]
|
|
str r0, [sp]
|
|
ldrh r0, [r4, #4]
|
|
adds r0, #0x30
|
|
str r0, [sp, #4]
|
|
movs r0, #0x40
|
|
str r0, [sp, #8]
|
|
b lbl_0803e5ce
|
|
lbl_0803e5b8:
|
|
mov r0, ip
|
|
ldrb r2, [r0, #0x1f]
|
|
adds r0, #0x23
|
|
ldrb r3, [r0]
|
|
mov r4, ip
|
|
ldrh r0, [r4, #2]
|
|
str r0, [sp]
|
|
ldrh r0, [r4, #4]
|
|
subs r0, #0x30
|
|
str r0, [sp, #4]
|
|
str r1, [sp, #8]
|
|
lbl_0803e5ce:
|
|
movs r0, #0x26
|
|
movs r1, #0
|
|
bl SpriteSpawnSecondary
|
|
b lbl_0803e68e
|
|
lbl_0803e5d8:
|
|
mov r1, ip
|
|
ldrh r0, [r1, #0x16]
|
|
cmp r0, #7
|
|
bne lbl_0803e632
|
|
ldrb r0, [r1, #0x1c]
|
|
cmp r0, #1
|
|
bne lbl_0803e632
|
|
ldrh r1, [r1]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r1, r0, #0x10
|
|
cmp r1, #0
|
|
beq lbl_0803e612
|
|
mov r3, ip
|
|
ldrb r2, [r3, #0x1f]
|
|
mov r0, ip
|
|
adds r0, #0x23
|
|
ldrb r3, [r0]
|
|
mov r4, ip
|
|
ldrh r0, [r4, #2]
|
|
str r0, [sp]
|
|
ldrh r0, [r4, #4]
|
|
adds r0, #0x30
|
|
str r0, [sp, #4]
|
|
movs r0, #0x40
|
|
str r0, [sp, #8]
|
|
b lbl_0803e628
|
|
lbl_0803e612:
|
|
mov r0, ip
|
|
ldrb r2, [r0, #0x1f]
|
|
adds r0, #0x23
|
|
ldrb r3, [r0]
|
|
mov r4, ip
|
|
ldrh r0, [r4, #2]
|
|
str r0, [sp]
|
|
ldrh r0, [r4, #4]
|
|
subs r0, #0x30
|
|
str r0, [sp, #4]
|
|
str r1, [sp, #8]
|
|
lbl_0803e628:
|
|
movs r0, #0x26
|
|
movs r1, #1
|
|
bl SpriteSpawnSecondary
|
|
b lbl_0803e68e
|
|
lbl_0803e632:
|
|
mov r4, ip
|
|
ldrh r0, [r4, #0x16]
|
|
cmp r0, #9
|
|
bne lbl_0803e68e
|
|
ldrb r0, [r4, #0x1c]
|
|
cmp r0, #1
|
|
bne lbl_0803e68e
|
|
ldrh r1, [r4]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r1, r0, #0x10
|
|
cmp r1, #0
|
|
beq lbl_0803e670
|
|
ldrb r2, [r4, #0x1f]
|
|
adds r0, r4, #0
|
|
adds r0, #0x23
|
|
ldrb r3, [r0]
|
|
ldrh r0, [r4, #2]
|
|
str r0, [sp]
|
|
ldrh r0, [r4, #4]
|
|
adds r0, #0x30
|
|
str r0, [sp, #4]
|
|
movs r0, #0x40
|
|
str r0, [sp, #8]
|
|
movs r0, #0x26
|
|
movs r1, #2
|
|
bl SpriteSpawnSecondary
|
|
b lbl_0803e68e
|
|
lbl_0803e670:
|
|
mov r0, ip
|
|
ldrb r2, [r0, #0x1f]
|
|
adds r0, #0x23
|
|
ldrb r3, [r0]
|
|
mov r4, ip
|
|
ldrh r0, [r4, #2]
|
|
str r0, [sp]
|
|
ldrh r0, [r4, #4]
|
|
subs r0, #0x30
|
|
str r0, [sp, #4]
|
|
str r1, [sp, #8]
|
|
movs r0, #0x26
|
|
movs r1, #2
|
|
bl SpriteSpawnSecondary
|
|
lbl_0803e68e:
|
|
cmp r5, #0
|
|
beq lbl_0803e6a8
|
|
ldr r1, lbl_0803e6b0 @ =gCurrentSprite
|
|
ldr r0, lbl_0803e6b4 @ =0x082fc1c8
|
|
str r0, [r1, #0x18]
|
|
movs r0, #0
|
|
strb r0, [r1, #0x1c]
|
|
strh r0, [r1, #0x16]
|
|
adds r1, #0x24
|
|
movs r0, #0x27
|
|
strb r0, [r1]
|
|
bl AcidWormPlaySound
|
|
lbl_0803e6a8:
|
|
add sp, #0xc
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803e6b0: .4byte gCurrentSprite
|
|
lbl_0803e6b4: .4byte 0x082fc1c8
|
|
|
|
thumb_func_start AcidWormRetracting
|
|
AcidWormRetracting: @ 0x0803e6b8
|
|
push {r4, r5, r6, r7, lr}
|
|
movs r4, #2
|
|
movs r7, #0
|
|
ldr r2, lbl_0803e6e4 @ =gCurrentSprite
|
|
ldrh r1, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r3, r0, #0x10
|
|
adds r5, r2, #0
|
|
cmp r3, #0
|
|
beq lbl_0803e704
|
|
adds r1, r5, #0
|
|
adds r1, #0x2a
|
|
ldrb r0, [r1]
|
|
cmp r0, #2
|
|
bhi lbl_0803e6e8
|
|
movs r7, #1
|
|
movs r0, #0
|
|
b lbl_0803e6ea
|
|
.align 2, 0
|
|
lbl_0803e6e4: .4byte gCurrentSprite
|
|
lbl_0803e6e8:
|
|
subs r0, #2
|
|
lbl_0803e6ea:
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e700 @ =gSubSpriteData1
|
|
ldrh r1, [r0, #8]
|
|
ldrh r2, [r5, #8]
|
|
adds r3, r0, #0
|
|
cmp r1, r2
|
|
bls lbl_0803e730
|
|
subs r0, r1, r4
|
|
strh r0, [r3, #8]
|
|
b lbl_0803e738
|
|
.align 2, 0
|
|
lbl_0803e700: .4byte gSubSpriteData1
|
|
lbl_0803e704:
|
|
adds r1, r5, #0
|
|
adds r1, #0x2a
|
|
ldrb r0, [r1]
|
|
cmp r0, #2
|
|
bhi lbl_0803e714
|
|
movs r7, #1
|
|
strb r3, [r1]
|
|
b lbl_0803e718
|
|
lbl_0803e714:
|
|
adds r0, #2
|
|
strb r0, [r1]
|
|
lbl_0803e718:
|
|
ldr r0, lbl_0803e72c @ =gSubSpriteData1
|
|
ldrh r1, [r0, #8]
|
|
ldrh r2, [r5, #8]
|
|
adds r3, r0, #0
|
|
cmp r1, r2
|
|
bhs lbl_0803e730
|
|
adds r0, r1, r4
|
|
strh r0, [r3, #8]
|
|
b lbl_0803e738
|
|
.align 2, 0
|
|
lbl_0803e72c: .4byte gSubSpriteData1
|
|
lbl_0803e730:
|
|
adds r0, r7, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
strh r2, [r3, #8]
|
|
lbl_0803e738:
|
|
ldrh r0, [r3, #6]
|
|
ldrh r1, [r5, #6]
|
|
cmp r0, r1
|
|
bhs lbl_0803e746
|
|
adds r0, #2
|
|
strh r0, [r3, #6]
|
|
b lbl_0803e74e
|
|
lbl_0803e746:
|
|
strh r1, [r3, #6]
|
|
adds r0, r7, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
lbl_0803e74e:
|
|
ldr r0, lbl_0803e7f8 @ =gEffectYPosition
|
|
ldrh r0, [r0]
|
|
ldrh r3, [r3, #0xa]
|
|
cmp r0, r3
|
|
bls lbl_0803e760
|
|
ldr r1, lbl_0803e7fc @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
subs r0, #1
|
|
strh r0, [r1]
|
|
lbl_0803e760:
|
|
adds r4, r5, #0
|
|
ldrh r6, [r4, #2]
|
|
bl sub_0803d860
|
|
ldrh r1, [r4, #2]
|
|
ldrh r2, [r4, #4]
|
|
adds r0, r6, #0
|
|
movs r3, #3
|
|
bl SpriteUtilCheckInRoomEffect
|
|
cmp r0, #0
|
|
beq lbl_0803e77e
|
|
ldr r0, lbl_0803e800 @ =0x000001bb
|
|
bl SoundPlay
|
|
lbl_0803e77e:
|
|
ldr r4, lbl_0803e804 @ =gSamusData
|
|
ldrh r3, [r4, #0x14]
|
|
ldrh r6, [r5, #2]
|
|
cmp r7, #3
|
|
bne lbl_0803e856
|
|
ldr r2, lbl_0803e808 @ =0x082b0d68
|
|
ldrb r1, [r5, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r5, #0x14]
|
|
lsrs r0, r0, #1
|
|
cmp r1, r0
|
|
bhi lbl_0803e83c
|
|
ldr r0, lbl_0803e80c @ =gDifficulty
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq lbl_0803e83c
|
|
ldrh r0, [r5]
|
|
movs r1, #0x20
|
|
eors r0, r1
|
|
strh r0, [r5]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803e81c
|
|
subs r0, r6, r3
|
|
subs r0, #0x51
|
|
cmp r0, #0xee
|
|
bhi lbl_0803e81c
|
|
ldrh r2, [r4, #0x12]
|
|
ldrh r1, [r5, #8]
|
|
ldr r3, lbl_0803e810 @ =0xfffffe40
|
|
adds r0, r1, r3
|
|
cmp r2, r0
|
|
ble lbl_0803e81c
|
|
movs r3, #0xe0
|
|
lsls r3, r3, #1
|
|
adds r0, r1, r3
|
|
cmp r2, r0
|
|
bge lbl_0803e81c
|
|
adds r1, r5, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x29
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e814 @ =0x082fc138
|
|
str r0, [r5, #0x18]
|
|
movs r0, #0
|
|
strb r0, [r5, #0x1c]
|
|
movs r0, #0
|
|
strh r0, [r5, #0x16]
|
|
adds r1, #8
|
|
movs r0, #0x28
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e818 @ =0x000001b9
|
|
bl SoundPlay
|
|
b lbl_0803e856
|
|
.align 2, 0
|
|
lbl_0803e7f8: .4byte gEffectYPosition
|
|
lbl_0803e7fc: .4byte gEffectYPositionOffset
|
|
lbl_0803e800: .4byte 0x000001bb
|
|
lbl_0803e804: .4byte gSamusData
|
|
lbl_0803e808: .4byte 0x082b0d68
|
|
lbl_0803e80c: .4byte gDifficulty
|
|
lbl_0803e810: .4byte 0xfffffe40
|
|
lbl_0803e814: .4byte 0x082fc138
|
|
lbl_0803e818: .4byte 0x000001b9
|
|
lbl_0803e81c:
|
|
ldr r2, lbl_0803e834 @ =gCurrentSprite
|
|
adds r1, r2, #0
|
|
adds r1, #0x24
|
|
movs r0, #8
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e838 @ =gSpriteRNG
|
|
ldrb r1, [r0]
|
|
movs r0, #7
|
|
ands r0, r1
|
|
lsls r0, r0, #3
|
|
adds r0, #0x3c
|
|
b lbl_0803e852
|
|
.align 2, 0
|
|
lbl_0803e834: .4byte gCurrentSprite
|
|
lbl_0803e838: .4byte gSpriteRNG
|
|
lbl_0803e83c:
|
|
ldr r2, lbl_0803e85c @ =gCurrentSprite
|
|
adds r1, r2, #0
|
|
adds r1, #0x24
|
|
movs r0, #8
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803e860 @ =gSpriteRNG
|
|
ldrb r1, [r0]
|
|
movs r0, #7
|
|
ands r0, r1
|
|
lsls r0, r0, #3
|
|
adds r0, #0x50
|
|
lbl_0803e852:
|
|
adds r2, #0x2c
|
|
strb r0, [r2]
|
|
lbl_0803e856:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803e85c: .4byte gCurrentSprite
|
|
lbl_0803e860: .4byte gSpriteRNG
|
|
|
|
thumb_func_start AcidWormRaiseAcid
|
|
AcidWormRaiseAcid: @ 0x0803e864
|
|
push {lr}
|
|
ldr r0, lbl_0803e88c @ =gFrameCounter8Bit
|
|
ldrb r1, [r0]
|
|
movs r0, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803e87a
|
|
movs r0, #0xa
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartHorizontal
|
|
lbl_0803e87a:
|
|
ldr r2, lbl_0803e890 @ =gCurrentSprite
|
|
adds r1, r2, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq lbl_0803e894
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
b lbl_0803e8ba
|
|
.align 2, 0
|
|
lbl_0803e88c: .4byte gFrameCounter8Bit
|
|
lbl_0803e890: .4byte gCurrentSprite
|
|
lbl_0803e894:
|
|
ldr r1, lbl_0803e8c0 @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
subs r0, #1
|
|
strh r0, [r1]
|
|
ldr r0, lbl_0803e8c4 @ =gEffectYPosition
|
|
ldrh r1, [r0]
|
|
ldrh r0, [r2, #6]
|
|
ldr r3, lbl_0803e8c8 @ =0xfffffec0
|
|
adds r0, r0, r3
|
|
cmp r1, r0
|
|
bge lbl_0803e8ba
|
|
adds r0, r2, #0
|
|
adds r0, #0x24
|
|
movs r1, #0x2b
|
|
strb r1, [r0]
|
|
movs r0, #0xdd
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
lbl_0803e8ba:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803e8c0: .4byte gEffectYPositionOffset
|
|
lbl_0803e8c4: .4byte gEffectYPosition
|
|
lbl_0803e8c8: .4byte 0xfffffec0
|
|
|
|
thumb_func_start AcidWormAcidGoDown
|
|
AcidWormAcidGoDown: @ 0x0803e8cc
|
|
push {r4, lr}
|
|
ldr r4, lbl_0803e928 @ =gEffectYPositionOffset
|
|
ldrh r0, [r4]
|
|
adds r0, #1
|
|
strh r0, [r4]
|
|
ldr r0, lbl_0803e92c @ =gFrameCounter8Bit
|
|
ldrb r1, [r0]
|
|
movs r0, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803e8ea
|
|
movs r0, #0xa
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartHorizontal
|
|
lbl_0803e8ea:
|
|
ldr r0, lbl_0803e930 @ =gEffectYPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, lbl_0803e934 @ =gCurrentSprite
|
|
ldrh r0, [r2, #6]
|
|
subs r0, #0xc0
|
|
cmp r1, r0
|
|
ble lbl_0803e920
|
|
adds r1, r2, #0
|
|
adds r1, #0x24
|
|
movs r0, #8
|
|
strb r0, [r1]
|
|
adds r1, #8
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
movs r1, #0x40
|
|
rsbs r1, r1, #0
|
|
adds r0, r1, #0
|
|
strh r0, [r4]
|
|
ldr r3, lbl_0803e938 @ =gSubSpriteData1
|
|
ldrh r1, [r3, #0xa]
|
|
ldrh r2, [r2, #6]
|
|
adds r0, r2, #0
|
|
subs r0, #0x80
|
|
cmp r1, r0
|
|
bne lbl_0803e920
|
|
subs r0, #0x40
|
|
strh r0, [r3, #0xa]
|
|
lbl_0803e920:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803e928: .4byte gEffectYPositionOffset
|
|
lbl_0803e92c: .4byte gFrameCounter8Bit
|
|
lbl_0803e930: .4byte gEffectYPosition
|
|
lbl_0803e934: .4byte gCurrentSprite
|
|
lbl_0803e938: .4byte gSubSpriteData1
|
|
|
|
thumb_func_start AcidWormDeathGFXInit
|
|
AcidWormDeathGFXInit: @ 0x0803e93c
|
|
ldr r0, lbl_0803e958 @ =gCurrentSprite
|
|
ldr r1, lbl_0803e95c @ =0x082fc138
|
|
str r1, [r0, #0x18]
|
|
movs r1, #0
|
|
strb r1, [r0, #0x1c]
|
|
strh r1, [r0, #0x16]
|
|
adds r2, r0, #0
|
|
adds r2, #0x24
|
|
movs r1, #0x67
|
|
strb r1, [r2]
|
|
adds r0, #0x2b
|
|
movs r1, #0x50
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
lbl_0803e958: .4byte gCurrentSprite
|
|
lbl_0803e95c: .4byte 0x082fc138
|
|
|
|
thumb_func_start AcidWormDeathFlashingAnim
|
|
AcidWormDeathFlashingAnim: @ 0x0803e960
|
|
push {r4, r5, lr}
|
|
ldr r4, lbl_0803e9b0 @ =gCurrentSprite
|
|
adds r0, r4, #0
|
|
adds r0, #0x26
|
|
movs r5, #1
|
|
strb r5, [r0]
|
|
bl sub_0803d860
|
|
adds r2, r4, #0
|
|
adds r2, #0x2b
|
|
ldrb r1, [r2]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803e9e2
|
|
subs r0, r1, #1
|
|
strb r0, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
adds r2, r1, #0
|
|
movs r0, #3
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803e9e2
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803e9b4
|
|
adds r0, r4, #0
|
|
adds r0, #0x33
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r4, #0x1f]
|
|
adds r0, r0, r1
|
|
movs r1, #0xe
|
|
subs r1, r1, r0
|
|
adds r0, r4, #0
|
|
adds r0, #0x20
|
|
strb r1, [r0]
|
|
b lbl_0803e9e2
|
|
.align 2, 0
|
|
lbl_0803e9b0: .4byte gCurrentSprite
|
|
lbl_0803e9b4:
|
|
adds r0, r4, #0
|
|
adds r0, #0x34
|
|
ldrb r1, [r0]
|
|
subs r0, #0x14
|
|
strb r1, [r0]
|
|
cmp r2, #0
|
|
bne lbl_0803e9e2
|
|
ldrh r0, [r4, #2]
|
|
ldrh r1, [r4, #4]
|
|
movs r2, #0x22
|
|
bl ParticleSet
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x68
|
|
strb r0, [r1]
|
|
ldrh r1, [r4]
|
|
movs r0, #4
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
adds r0, r4, #0
|
|
adds r0, #0x2c
|
|
strb r5, [r0]
|
|
lbl_0803e9e2:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start AcidWormDying
|
|
AcidWormDying: @ 0x0803e9e8
|
|
push {r4, lr}
|
|
ldr r0, lbl_0803ea10 @ =gEffectYPosition
|
|
ldrh r1, [r0]
|
|
ldr r3, lbl_0803ea14 @ =gCurrentSprite
|
|
ldrh r2, [r3, #6]
|
|
movs r4, #0xf0
|
|
lsls r4, r4, #1
|
|
adds r0, r2, r4
|
|
cmp r1, r0
|
|
ble lbl_0803ea1c
|
|
ldr r0, lbl_0803ea18 @ =gSubSpriteData1
|
|
ldrb r0, [r0, #0xe]
|
|
cmp r0, #0
|
|
bne lbl_0803eaa8
|
|
strh r0, [r3]
|
|
movs r0, #0xb
|
|
movs r1, #0
|
|
bl PlayMusic
|
|
b lbl_0803eaa8
|
|
.align 2, 0
|
|
lbl_0803ea10: .4byte gEffectYPosition
|
|
lbl_0803ea14: .4byte gCurrentSprite
|
|
lbl_0803ea18: .4byte gSubSpriteData1
|
|
lbl_0803ea1c:
|
|
ldr r0, lbl_0803ea48 @ =gSubSpriteData1
|
|
ldrb r0, [r0, #0xe]
|
|
cmp r0, #0
|
|
bne lbl_0803ea5c
|
|
cmp r1, r2
|
|
bhs lbl_0803ea54
|
|
ldr r0, lbl_0803ea4c @ =gFrameCounter8Bit
|
|
ldrb r1, [r0]
|
|
movs r0, #0x1f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803ea5c
|
|
ldr r0, lbl_0803ea50 @ =gSpriteRNG
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #3
|
|
adds r0, #0x48
|
|
adds r0, r2, r0
|
|
ldrh r1, [r3, #8]
|
|
movs r2, #0x39
|
|
bl ParticleSet
|
|
b lbl_0803ea5c
|
|
.align 2, 0
|
|
lbl_0803ea48: .4byte gSubSpriteData1
|
|
lbl_0803ea4c: .4byte gFrameCounter8Bit
|
|
lbl_0803ea50: .4byte gSpriteRNG
|
|
lbl_0803ea54:
|
|
ldr r1, lbl_0803ea7c @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
adds r0, #1
|
|
strh r0, [r1]
|
|
lbl_0803ea5c:
|
|
ldr r0, lbl_0803ea80 @ =gCurrentSprite
|
|
adds r1, r0, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq lbl_0803ea84
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne lbl_0803eaa8
|
|
movs r0, #0xdf
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
b lbl_0803eaa8
|
|
.align 2, 0
|
|
lbl_0803ea7c: .4byte gEffectYPositionOffset
|
|
lbl_0803ea80: .4byte gCurrentSprite
|
|
lbl_0803ea84:
|
|
ldr r1, lbl_0803eab0 @ =gEffectYPositionOffset
|
|
ldrh r0, [r1]
|
|
adds r0, #1
|
|
strh r0, [r1]
|
|
ldr r0, lbl_0803eab4 @ =gFrameCounter8Bit
|
|
ldrb r1, [r0]
|
|
movs r0, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803eaa8
|
|
movs r0, #0xa
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartVertical
|
|
movs r0, #0xa
|
|
movs r1, #0x81
|
|
bl ScreenShakeStartHorizontal
|
|
lbl_0803eaa8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803eab0: .4byte gEffectYPositionOffset
|
|
lbl_0803eab4: .4byte gFrameCounter8Bit
|
|
|
|
thumb_func_start AcidWormBodyInit
|
|
AcidWormBodyInit: @ 0x0803eab8
|
|
push {r4, lr}
|
|
ldr r0, lbl_0803eb2c @ =gCurrentSprite
|
|
mov ip, r0
|
|
ldrh r1, [r0]
|
|
ldr r0, lbl_0803eb30 @ =0x0000fffb
|
|
ands r0, r1
|
|
movs r2, #0
|
|
movs r4, #0
|
|
movs r3, #0x80
|
|
lsls r3, r3, #8
|
|
adds r1, r3, #0
|
|
orrs r0, r1
|
|
mov r1, ip
|
|
strh r0, [r1]
|
|
adds r1, #0x25
|
|
movs r0, #0x15
|
|
strb r0, [r1]
|
|
subs r1, #1
|
|
movs r0, #0x43
|
|
strb r0, [r1]
|
|
mov r3, ip
|
|
strb r2, [r3, #0x1c]
|
|
strh r4, [r3, #0x16]
|
|
mov r2, ip
|
|
adds r2, #0x32
|
|
ldrb r1, [r2]
|
|
movs r0, #0x40
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
strh r0, [r3, #0x14]
|
|
mov r0, ip
|
|
adds r0, #0x27
|
|
movs r1, #0x10
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
strb r1, [r0]
|
|
ldrb r0, [r3, #0x1e]
|
|
lsls r0, r0, #1
|
|
movs r1, #0x14
|
|
subs r1, r1, r0
|
|
mov r0, ip
|
|
adds r0, #0x2e
|
|
strb r1, [r0]
|
|
ldrb r0, [r3, #0x1e]
|
|
subs r0, #1
|
|
cmp r0, #8
|
|
bls lbl_0803eb20
|
|
b lbl_0803ed04
|
|
lbl_0803eb20:
|
|
lsls r0, r0, #2
|
|
ldr r1, lbl_0803eb34 @ =lbl_0803eb38
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
lbl_0803eb2c: .4byte gCurrentSprite
|
|
lbl_0803eb30: .4byte 0x0000fffb
|
|
lbl_0803eb34: .4byte lbl_0803eb38
|
|
lbl_0803eb38: @ jump table
|
|
.4byte lbl_0803eb5c @ case 0
|
|
.4byte lbl_0803eb84 @ case 1
|
|
.4byte lbl_0803ebbc @ case 2
|
|
.4byte lbl_0803ebec @ case 3
|
|
.4byte lbl_0803ec1c @ case 4
|
|
.4byte lbl_0803ec44 @ case 5
|
|
.4byte lbl_0803ec74 @ case 6
|
|
.4byte lbl_0803eca4 @ case 7
|
|
.4byte lbl_0803ecd4 @ case 8
|
|
lbl_0803eb5c:
|
|
ldr r1, lbl_0803eb7c @ =0x0000fff0
|
|
strh r1, [r3, #0xa]
|
|
movs r0, #0x10
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803eb80 @ =0x082fc1f0
|
|
str r0, [r3, #0x18]
|
|
adds r0, r3, #0
|
|
adds r0, #0x2c
|
|
movs r1, #8
|
|
b lbl_0803ec0a
|
|
.align 2, 0
|
|
lbl_0803eb7c: .4byte 0x0000fff0
|
|
lbl_0803eb80: .4byte 0x082fc1f0
|
|
lbl_0803eb84:
|
|
ldr r1, lbl_0803ebb4 @ =0x0000ffd0
|
|
strh r1, [r3, #0xa]
|
|
movs r0, #0x30
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803ebb8 @ =0x082fc200
|
|
str r0, [r3, #0x18]
|
|
adds r0, r3, #0
|
|
adds r0, #0x2c
|
|
movs r2, #0x10
|
|
strb r2, [r0]
|
|
movs r0, #0x32
|
|
adds r0, r0, r3
|
|
mov ip, r0
|
|
ldrb r1, [r0]
|
|
movs r0, #0xbf
|
|
ands r0, r1
|
|
mov r1, ip
|
|
b lbl_0803ecf2
|
|
.align 2, 0
|
|
lbl_0803ebb4: .4byte 0x0000ffd0
|
|
lbl_0803ebb8: .4byte 0x082fc200
|
|
lbl_0803ebbc:
|
|
ldr r0, lbl_0803ebe0 @ =0x0000ffd0
|
|
strh r0, [r3, #0xa]
|
|
movs r0, #0x30
|
|
strh r0, [r3, #0xc]
|
|
ldr r0, lbl_0803ebe4 @ =0x0000ffd8
|
|
strh r0, [r3, #0xe]
|
|
movs r0, #0x28
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803ebe8 @ =0x082fc270
|
|
str r0, [r3, #0x18]
|
|
adds r0, r3, #0
|
|
adds r0, #0x2c
|
|
movs r1, #0x18
|
|
b lbl_0803ec0a
|
|
.align 2, 0
|
|
lbl_0803ebe0: .4byte 0x0000ffd0
|
|
lbl_0803ebe4: .4byte 0x0000ffd8
|
|
lbl_0803ebe8: .4byte 0x082fc270
|
|
lbl_0803ebec:
|
|
ldr r1, lbl_0803ec14 @ =0x0000ffdc
|
|
strh r1, [r3, #0xa]
|
|
movs r0, #0x24
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803ec18 @ =0x082fc280
|
|
str r0, [r3, #0x18]
|
|
adds r0, r3, #0
|
|
adds r0, #0x2c
|
|
movs r1, #0x20
|
|
lbl_0803ec0a:
|
|
strb r1, [r0]
|
|
adds r0, #3
|
|
strb r1, [r0]
|
|
b lbl_0803ed08
|
|
.align 2, 0
|
|
lbl_0803ec14: .4byte 0x0000ffdc
|
|
lbl_0803ec18: .4byte 0x082fc280
|
|
lbl_0803ec1c:
|
|
movs r2, #0
|
|
ldr r1, lbl_0803ec3c @ =0x0000ffe0
|
|
strh r1, [r3, #0xa]
|
|
movs r0, #0x20
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803ec40 @ =0x082fc290
|
|
str r0, [r3, #0x18]
|
|
adds r1, #0xa
|
|
movs r0, #0x28
|
|
b lbl_0803ecf2
|
|
.align 2, 0
|
|
lbl_0803ec3c: .4byte 0x0000ffe0
|
|
lbl_0803ec40: .4byte 0x082fc290
|
|
lbl_0803ec44:
|
|
ldr r1, lbl_0803ec6c @ =0x0000ffe0
|
|
strh r1, [r3, #0xa]
|
|
movs r0, #0x20
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803ec70 @ =0x082fc290
|
|
str r0, [r3, #0x18]
|
|
adds r1, #0xa
|
|
movs r0, #0x30
|
|
strb r0, [r1]
|
|
adds r1, #3
|
|
movs r0, #8
|
|
strb r0, [r1]
|
|
b lbl_0803ed08
|
|
.align 2, 0
|
|
lbl_0803ec6c: .4byte 0x0000ffe0
|
|
lbl_0803ec70: .4byte 0x082fc290
|
|
lbl_0803ec74:
|
|
ldr r1, lbl_0803ec9c @ =0x0000ffe0
|
|
strh r1, [r3, #0xa]
|
|
movs r0, #0x20
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803eca0 @ =0x082fc290
|
|
str r0, [r3, #0x18]
|
|
adds r1, #0xa
|
|
movs r0, #0x38
|
|
strb r0, [r1]
|
|
adds r1, #3
|
|
movs r0, #0x10
|
|
strb r0, [r1]
|
|
b lbl_0803ed08
|
|
.align 2, 0
|
|
lbl_0803ec9c: .4byte 0x0000ffe0
|
|
lbl_0803eca0: .4byte 0x082fc290
|
|
lbl_0803eca4:
|
|
ldr r1, lbl_0803eccc @ =0x0000ffe0
|
|
strh r1, [r3, #0xa]
|
|
movs r0, #0x20
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803ecd0 @ =0x082fc290
|
|
str r0, [r3, #0x18]
|
|
adds r1, #0xa
|
|
movs r0, #0x40
|
|
strb r0, [r1]
|
|
adds r1, #3
|
|
movs r0, #0x18
|
|
strb r0, [r1]
|
|
b lbl_0803ed08
|
|
.align 2, 0
|
|
lbl_0803eccc: .4byte 0x0000ffe0
|
|
lbl_0803ecd0: .4byte 0x082fc290
|
|
lbl_0803ecd4:
|
|
ldr r1, lbl_0803ecfc @ =0x0000ffe0
|
|
strh r1, [r3, #0xa]
|
|
movs r2, #0x20
|
|
movs r0, #0x20
|
|
strh r0, [r3, #0xc]
|
|
strh r1, [r3, #0xe]
|
|
strh r0, [r3, #0x10]
|
|
adds r1, r3, #0
|
|
adds r1, #0x22
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803ed00 @ =0x082fc290
|
|
str r0, [r3, #0x18]
|
|
adds r1, #0xa
|
|
movs r0, #0x48
|
|
lbl_0803ecf2:
|
|
strb r0, [r1]
|
|
adds r0, r3, #0
|
|
adds r0, #0x2f
|
|
strb r2, [r0]
|
|
b lbl_0803ed08
|
|
.align 2, 0
|
|
lbl_0803ecfc: .4byte 0x0000ffe0
|
|
lbl_0803ed00: .4byte 0x082fc290
|
|
lbl_0803ed04:
|
|
mov r3, ip
|
|
strh r4, [r3]
|
|
lbl_0803ed08:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start AcidWormBodyMove
|
|
AcidWormBodyMove: @ 0x0803ed10
|
|
push {r4, r5, lr}
|
|
ldr r4, lbl_0803ed4c @ =gCurrentSprite
|
|
adds r0, r4, #0
|
|
adds r0, #0x23
|
|
ldrb r5, [r0]
|
|
ldr r1, lbl_0803ed50 @ =gSpriteData
|
|
lsls r0, r5, #3
|
|
subs r0, r0, r5
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x43
|
|
bne lbl_0803ed54
|
|
ldrh r3, [r4, #2]
|
|
adds r0, r3, #0
|
|
subs r0, #0x10
|
|
strh r0, [r4, #2]
|
|
ldrb r1, [r4, #0x1e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803eda8
|
|
ldrh r1, [r4, #2]
|
|
ldrh r2, [r4, #4]
|
|
adds r0, r3, #0
|
|
movs r3, #3
|
|
bl SpriteUtilCheckOutOfRoomEffect
|
|
b lbl_0803eda8
|
|
.align 2, 0
|
|
lbl_0803ed4c: .4byte gCurrentSprite
|
|
lbl_0803ed50: .4byte gSpriteData
|
|
lbl_0803ed54:
|
|
cmp r0, #0x47
|
|
bne lbl_0803ed7c
|
|
bl AcidWormRandomXMovement
|
|
ldrh r3, [r4, #2]
|
|
adds r0, r3, #0
|
|
adds r0, #0x10
|
|
strh r0, [r4, #2]
|
|
ldrb r1, [r4, #0x1e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803eda8
|
|
ldrh r1, [r4, #2]
|
|
ldrh r2, [r4, #4]
|
|
adds r0, r3, #0
|
|
movs r3, #3
|
|
bl SpriteUtilCheckInRoomEffect
|
|
b lbl_0803eda8
|
|
lbl_0803ed7c:
|
|
cmp r0, #0x45
|
|
bne lbl_0803ed86
|
|
bl AcidWormRandomXMovement
|
|
b lbl_0803eda8
|
|
lbl_0803ed86:
|
|
cmp r0, #8
|
|
bne lbl_0803eda8
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r0, #9
|
|
strb r0, [r1]
|
|
ldrh r1, [r4]
|
|
movs r0, #0x80
|
|
movs r2, #0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
strh r0, [r4, #0x12]
|
|
adds r0, r4, #0
|
|
adds r0, #0x2a
|
|
strb r2, [r0]
|
|
lbl_0803eda8:
|
|
ldr r1, lbl_0803ee0c @ =gSpriteData
|
|
lsls r0, r5, #3
|
|
subs r0, r0, r5
|
|
lsls r0, r0, #3
|
|
adds r3, r0, r1
|
|
adds r0, r3, #0
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
ldr r4, lbl_0803ee10 @ =gCurrentSprite
|
|
cmp r0, #0x42
|
|
bls lbl_0803edc6
|
|
ldrh r1, [r4]
|
|
ldr r0, lbl_0803ee14 @ =0x00007fff
|
|
ands r0, r1
|
|
strh r0, [r4]
|
|
lbl_0803edc6:
|
|
ldrb r0, [r4, #0x1e]
|
|
cmp r0, #2
|
|
bne lbl_0803ee04
|
|
ldrh r1, [r4, #0x14]
|
|
ldr r0, lbl_0803ee18 @ =0x000003ff
|
|
cmp r1, r0
|
|
bhi lbl_0803ee04
|
|
adds r2, r4, #0
|
|
adds r2, #0x2b
|
|
ldrb r0, [r2]
|
|
adds r1, r3, #0
|
|
adds r1, #0x2b
|
|
strb r0, [r1]
|
|
ldrb r1, [r2]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrh r1, [r4, #0x14]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #3
|
|
adds r0, r2, #0
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r1, r0, #0x10
|
|
ldrh r0, [r3, #0x14]
|
|
cmp r0, r1
|
|
bls lbl_0803ee04
|
|
subs r0, r0, r1
|
|
strh r0, [r3, #0x14]
|
|
adds r0, r2, #0
|
|
strh r0, [r4, #0x14]
|
|
lbl_0803ee04:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803ee0c: .4byte gSpriteData
|
|
lbl_0803ee10: .4byte gCurrentSprite
|
|
lbl_0803ee14: .4byte 0x00007fff
|
|
lbl_0803ee18: .4byte 0x000003ff
|
|
|
|
thumb_func_start AcidWormBodyMainLoop
|
|
AcidWormBodyMainLoop: @ 0x0803ee1c
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
ldr r2, lbl_0803ee5c @ =gCurrentSprite
|
|
adds r0, r2, #0
|
|
adds r0, #0x23
|
|
ldrb r0, [r0]
|
|
mov r8, r0
|
|
adds r0, r2, #0
|
|
adds r0, #0x2c
|
|
ldrb r5, [r0]
|
|
adds r6, r5, #0
|
|
ldr r1, lbl_0803ee60 @ =gSpriteData
|
|
mov r3, r8
|
|
lsls r0, r3, #3
|
|
subs r0, r0, r3
|
|
lsls r0, r0, #3
|
|
adds r4, r0, r1
|
|
ldrh r3, [r4, #0x14]
|
|
adds r7, r1, #0
|
|
cmp r3, #0
|
|
bne lbl_0803ee64
|
|
adds r1, r2, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x67
|
|
strb r0, [r1]
|
|
adds r0, r2, #0
|
|
adds r0, #0x25
|
|
strb r3, [r0]
|
|
strh r3, [r2, #0x14]
|
|
b lbl_0803effa
|
|
.align 2, 0
|
|
lbl_0803ee5c: .4byte gCurrentSprite
|
|
lbl_0803ee60: .4byte gSpriteData
|
|
lbl_0803ee64:
|
|
ldrh r1, [r4]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #2
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803ee84
|
|
ldrh r1, [r2]
|
|
adds r0, r3, #0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
adds r0, r4, #0
|
|
adds r0, #0x2a
|
|
ldrb r0, [r0]
|
|
subs r0, r0, r5
|
|
b lbl_0803ee94
|
|
lbl_0803ee84:
|
|
ldrh r1, [r2]
|
|
ldr r0, lbl_0803eee0 @ =0x0000fdff
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
adds r0, r4, #0
|
|
adds r0, #0x2a
|
|
ldrb r0, [r0]
|
|
adds r0, r6, r0
|
|
lbl_0803ee94:
|
|
adds r1, r2, #0
|
|
adds r1, #0x2a
|
|
strb r0, [r1]
|
|
mov r0, r8
|
|
lsls r2, r0, #3
|
|
subs r0, r2, r0
|
|
lsls r0, r0, #3
|
|
adds r5, r0, r7
|
|
ldrh r1, [r5]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
ands r0, r1
|
|
mov sb, r2
|
|
cmp r0, #0
|
|
bne lbl_0803ef02
|
|
ldr r4, lbl_0803eee4 @ =gCurrentSprite
|
|
ldrh r6, [r4, #2]
|
|
adds r7, r6, #0
|
|
bl sub_0803d860
|
|
adds r0, r5, #0
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x25
|
|
bne lbl_0803eee8
|
|
ldrb r1, [r4, #0x1e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803ef02
|
|
ldrh r1, [r4, #2]
|
|
ldrh r2, [r4, #4]
|
|
adds r0, r6, #0
|
|
movs r3, #3
|
|
bl SpriteUtilCheckOutOfRoomEffect
|
|
b lbl_0803ef02
|
|
.align 2, 0
|
|
lbl_0803eee0: .4byte 0x0000fdff
|
|
lbl_0803eee4: .4byte gCurrentSprite
|
|
lbl_0803eee8:
|
|
cmp r0, #0x27
|
|
bne lbl_0803ef02
|
|
ldrb r1, [r4, #0x1e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_0803ef02
|
|
ldrh r1, [r4, #2]
|
|
ldrh r2, [r4, #4]
|
|
adds r0, r7, #0
|
|
movs r3, #3
|
|
bl SpriteUtilCheckInRoomEffect
|
|
lbl_0803ef02:
|
|
ldr r4, lbl_0803ef70 @ =gCurrentSprite
|
|
ldrb r6, [r4, #0x1e]
|
|
cmp r6, #2
|
|
beq lbl_0803ef0c
|
|
b lbl_0803f006
|
|
lbl_0803ef0c:
|
|
ldrh r1, [r4, #0x14]
|
|
ldr r0, lbl_0803ef74 @ =0x000003ff
|
|
cmp r1, r0
|
|
bhi lbl_0803efcc
|
|
ldr r1, lbl_0803ef78 @ =gSpriteData
|
|
mov r2, sb
|
|
mov r3, r8
|
|
subs r0, r2, r3
|
|
lsls r0, r0, #3
|
|
adds r3, r0, r1
|
|
adds r2, r4, #0
|
|
adds r2, #0x2b
|
|
ldrb r0, [r2]
|
|
adds r1, r3, #0
|
|
adds r1, #0x2b
|
|
movs r5, #0
|
|
strb r0, [r1]
|
|
ldrb r1, [r2]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrh r1, [r4, #0x14]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #3
|
|
adds r0, r2, #0
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r1, r0, #0x10
|
|
ldrh r0, [r3, #0x14]
|
|
cmp r0, r1
|
|
bls lbl_0803ef98
|
|
subs r0, r0, r1
|
|
strh r0, [r3, #0x14]
|
|
adds r0, r2, #0
|
|
strh r0, [r4, #0x14]
|
|
ldr r2, lbl_0803ef7c @ =0x082b0d68
|
|
ldrb r1, [r3, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r1, [r0]
|
|
ldrh r2, [r3, #0x14]
|
|
lsrs r0, r1, #2
|
|
cmp r2, r0
|
|
bhi lbl_0803ef80
|
|
adds r0, r3, #0
|
|
adds r0, #0x34
|
|
strb r6, [r0]
|
|
b lbl_0803ef8e
|
|
.align 2, 0
|
|
lbl_0803ef70: .4byte gCurrentSprite
|
|
lbl_0803ef74: .4byte 0x000003ff
|
|
lbl_0803ef78: .4byte gSpriteData
|
|
lbl_0803ef7c: .4byte 0x082b0d68
|
|
lbl_0803ef80:
|
|
lsrs r0, r1, #1
|
|
cmp r2, r0
|
|
bhi lbl_0803ef8e
|
|
adds r1, r3, #0
|
|
adds r1, #0x34
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
lbl_0803ef8e:
|
|
movs r0, #0xde
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
b lbl_0803efcc
|
|
lbl_0803ef98:
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x62
|
|
strb r0, [r1]
|
|
movs r1, #0
|
|
strh r5, [r3, #0x14]
|
|
adds r0, r3, #0
|
|
adds r0, #0x25
|
|
strb r1, [r0]
|
|
strh r5, [r4, #0x14]
|
|
ldrh r0, [r4]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #8
|
|
adds r1, r3, #0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
adds r1, r4, #0
|
|
adds r1, #0x26
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803efc8 @ =0x000001bd
|
|
bl SoundPlay
|
|
b lbl_0803f006
|
|
.align 2, 0
|
|
lbl_0803efc8: .4byte 0x000001bd
|
|
lbl_0803efcc:
|
|
ldr r0, lbl_0803efec @ =gSpriteData
|
|
mov r2, sb
|
|
mov r3, r8
|
|
subs r1, r2, r3
|
|
lsls r1, r1, #3
|
|
adds r1, r1, r0
|
|
adds r1, #0x2a
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq lbl_0803eff8
|
|
ldr r2, lbl_0803eff0 @ =gCurrentSprite
|
|
ldrh r1, [r2]
|
|
ldr r0, lbl_0803eff4 @ =0x00007fff
|
|
ands r0, r1
|
|
b lbl_0803f004
|
|
.align 2, 0
|
|
lbl_0803efec: .4byte gSpriteData
|
|
lbl_0803eff0: .4byte gCurrentSprite
|
|
lbl_0803eff4: .4byte 0x00007fff
|
|
lbl_0803eff8:
|
|
ldr r2, lbl_0803f014 @ =gCurrentSprite
|
|
lbl_0803effa:
|
|
ldrh r1, [r2]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #8
|
|
adds r0, r3, #0
|
|
orrs r0, r1
|
|
lbl_0803f004:
|
|
strh r0, [r2]
|
|
lbl_0803f006:
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f014: .4byte gCurrentSprite
|
|
|
|
thumb_func_start AcidWormBodyDeath
|
|
AcidWormBodyDeath: @ 0x0803f018
|
|
push {r4, r5, lr}
|
|
sub sp, #4
|
|
ldr r5, lbl_0803f054 @ =gCurrentSprite
|
|
adds r0, r5, #0
|
|
adds r0, #0x23
|
|
ldrb r4, [r0]
|
|
adds r1, r5, #0
|
|
adds r1, #0x26
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
bl sub_0803d860
|
|
ldr r1, lbl_0803f058 @ =gSpriteData
|
|
lsls r0, r4, #3
|
|
subs r0, r0, r4
|
|
lsls r0, r0, #3
|
|
adds r4, r0, r1
|
|
adds r0, r4, #0
|
|
adds r0, #0x2b
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq lbl_0803f05c
|
|
adds r0, r4, #0
|
|
adds r0, #0x20
|
|
ldrb r1, [r0]
|
|
adds r0, r5, #0
|
|
adds r0, #0x20
|
|
strb r1, [r0]
|
|
b lbl_0803f0cc
|
|
.align 2, 0
|
|
lbl_0803f054: .4byte gCurrentSprite
|
|
lbl_0803f058: .4byte gSpriteData
|
|
lbl_0803f05c:
|
|
adds r1, r5, #0
|
|
adds r1, #0x2c
|
|
ldrb r0, [r1]
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #0
|
|
bne lbl_0803f0cc
|
|
ldrb r0, [r5, #0x1e]
|
|
movs r5, #0x21
|
|
cmp r0, #2
|
|
beq lbl_0803f0bc
|
|
movs r5, #0x20
|
|
cmp r0, #9
|
|
bne lbl_0803f0bc
|
|
ldr r0, lbl_0803f0d4 @ =gSubSpriteData1
|
|
strb r1, [r0, #0xe]
|
|
ldrh r0, [r4, #6]
|
|
adds r0, #0x60
|
|
ldrh r1, [r4, #8]
|
|
movs r2, #0x21
|
|
bl ParticleSet
|
|
ldrh r0, [r4, #6]
|
|
adds r0, #0x40
|
|
ldrh r1, [r4, #8]
|
|
movs r2, #0x21
|
|
bl ParticleSet
|
|
ldrh r1, [r4, #6]
|
|
ldrh r2, [r4, #8]
|
|
movs r0, #1
|
|
bl AcidWormChangeTwoGroundCCAA
|
|
movs r0, #1
|
|
movs r1, #0x1c
|
|
bl EventFunction
|
|
ldr r1, lbl_0803f0d8 @ =gDoorUnlockTimer
|
|
movs r2, #0x14
|
|
rsbs r2, r2, #0
|
|
adds r0, r2, #0
|
|
strb r0, [r1]
|
|
movs r0, #0x87
|
|
lsls r0, r0, #1
|
|
bl FadeMusic
|
|
lbl_0803f0bc:
|
|
ldr r0, lbl_0803f0dc @ =gCurrentSprite
|
|
ldrh r1, [r0, #2]
|
|
ldrh r2, [r0, #4]
|
|
str r5, [sp]
|
|
movs r0, #0
|
|
movs r3, #0
|
|
bl SpriteUtilSpriteDeath
|
|
lbl_0803f0cc:
|
|
add sp, #4
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f0d4: .4byte gSubSpriteData1
|
|
lbl_0803f0d8: .4byte gDoorUnlockTimer
|
|
lbl_0803f0dc: .4byte gCurrentSprite
|
|
|
|
thumb_func_start AcidWormSpitInit
|
|
AcidWormSpitInit: @ 0x0803f0e0
|
|
push {r4, lr}
|
|
ldr r0, lbl_0803f158 @ =gCurrentSprite
|
|
mov ip, r0
|
|
ldrh r1, [r0]
|
|
ldr r0, lbl_0803f15c @ =0x0000fffb
|
|
ands r0, r1
|
|
movs r3, #0
|
|
movs r2, #0
|
|
mov r1, ip
|
|
strh r0, [r1]
|
|
mov r4, ip
|
|
adds r4, #0x32
|
|
ldrb r1, [r4]
|
|
movs r0, #4
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
mov r0, ip
|
|
adds r0, #0x27
|
|
movs r1, #8
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
strb r1, [r0]
|
|
ldr r1, lbl_0803f160 @ =0x0000fff0
|
|
mov r4, ip
|
|
strh r1, [r4, #0xa]
|
|
movs r0, #0x10
|
|
strh r0, [r4, #0xc]
|
|
strh r1, [r4, #0xe]
|
|
strh r0, [r4, #0x10]
|
|
ldr r0, lbl_0803f164 @ =0x082fc2c8
|
|
str r0, [r4, #0x18]
|
|
strb r3, [r4, #0x1c]
|
|
strh r2, [r4, #0x16]
|
|
mov r1, ip
|
|
adds r1, #0x22
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
ldr r2, lbl_0803f168 @ =0x082b1be4
|
|
ldrb r1, [r4, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, #0x14]
|
|
mov r0, ip
|
|
adds r0, #0x2f
|
|
strb r3, [r0]
|
|
mov r1, ip
|
|
adds r1, #0x24
|
|
movs r0, #9
|
|
strb r0, [r1]
|
|
adds r1, #1
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f158: .4byte gCurrentSprite
|
|
lbl_0803f15c: .4byte 0x0000fffb
|
|
lbl_0803f160: .4byte 0x0000fff0
|
|
lbl_0803f164: .4byte 0x082fc2c8
|
|
lbl_0803f168: .4byte 0x082b1be4
|
|
|
|
thumb_func_start AcidWormSpitMove
|
|
AcidWormSpitMove: @ 0x0803f16c
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r0, lbl_0803f1a0 @ =gCurrentSprite
|
|
ldrb r1, [r0, #0x1e]
|
|
adds r4, r0, #0
|
|
cmp r1, #2
|
|
bne lbl_0803f1ac
|
|
movs r6, #2
|
|
adds r5, r4, #0
|
|
adds r5, #0x2f
|
|
ldrb r1, [r5]
|
|
ldr r3, lbl_0803f1a4 @ =0x082fab14
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r3
|
|
movs r7, #0
|
|
ldrsh r2, [r0, r7]
|
|
ldr r0, lbl_0803f1a8 @ =0x00007fff
|
|
cmp r2, r0
|
|
bne lbl_0803f210
|
|
subs r0, r1, #1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
ldrh r7, [r4, #2]
|
|
adds r0, r0, r7
|
|
b lbl_0803f218
|
|
.align 2, 0
|
|
lbl_0803f1a0: .4byte gCurrentSprite
|
|
lbl_0803f1a4: .4byte 0x082fab14
|
|
lbl_0803f1a8: .4byte 0x00007fff
|
|
lbl_0803f1ac:
|
|
cmp r1, #1
|
|
bne lbl_0803f1e0
|
|
movs r6, #0xa
|
|
adds r5, r4, #0
|
|
adds r5, #0x2f
|
|
ldrb r1, [r5]
|
|
ldr r3, lbl_0803f1d8 @ =0x082fab34
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r3
|
|
movs r7, #0
|
|
ldrsh r2, [r0, r7]
|
|
ldr r0, lbl_0803f1dc @ =0x00007fff
|
|
cmp r2, r0
|
|
bne lbl_0803f210
|
|
subs r0, r1, #1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
ldrh r7, [r4, #2]
|
|
adds r0, r0, r7
|
|
b lbl_0803f218
|
|
.align 2, 0
|
|
lbl_0803f1d8: .4byte 0x082fab34
|
|
lbl_0803f1dc: .4byte 0x00007fff
|
|
lbl_0803f1e0:
|
|
movs r6, #7
|
|
adds r5, r4, #0
|
|
adds r5, #0x2f
|
|
ldrb r1, [r5]
|
|
ldr r3, lbl_0803f208 @ =0x082fab68
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r3
|
|
movs r7, #0
|
|
ldrsh r2, [r0, r7]
|
|
ldr r0, lbl_0803f20c @ =0x00007fff
|
|
cmp r2, r0
|
|
bne lbl_0803f210
|
|
subs r0, r1, #1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
ldrh r7, [r4, #2]
|
|
adds r0, r0, r7
|
|
b lbl_0803f218
|
|
.align 2, 0
|
|
lbl_0803f208: .4byte 0x082fab68
|
|
lbl_0803f20c: .4byte 0x00007fff
|
|
lbl_0803f210:
|
|
adds r0, r1, #1
|
|
strb r0, [r5]
|
|
ldrh r0, [r4, #2]
|
|
adds r0, r0, r2
|
|
lbl_0803f218:
|
|
strh r0, [r4, #2]
|
|
ldrh r1, [r4]
|
|
movs r0, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803f22a
|
|
ldrh r0, [r4, #4]
|
|
adds r0, r6, r0
|
|
b lbl_0803f22e
|
|
lbl_0803f22a:
|
|
ldrh r0, [r4, #4]
|
|
subs r0, r0, r6
|
|
lbl_0803f22e:
|
|
strh r0, [r4, #4]
|
|
adds r3, r4, #0
|
|
ldr r0, lbl_0803f254 @ =gEffectYPosition
|
|
ldrh r5, [r0]
|
|
ldrh r0, [r3, #2]
|
|
cmp r0, r5
|
|
blo lbl_0803f25c
|
|
movs r1, #0
|
|
movs r2, #0
|
|
strh r5, [r3, #2]
|
|
ldr r0, lbl_0803f258 @ =0x082fc2e8
|
|
str r0, [r3, #0x18]
|
|
strb r1, [r3, #0x1c]
|
|
strh r2, [r3, #0x16]
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x45
|
|
b lbl_0803f276
|
|
.align 2, 0
|
|
lbl_0803f254: .4byte gEffectYPosition
|
|
lbl_0803f258: .4byte 0x082fc2e8
|
|
lbl_0803f25c:
|
|
ldrh r0, [r4, #2]
|
|
ldrh r1, [r4, #4]
|
|
bl SpriteUtilCheckCollisionAtPosition
|
|
ldr r0, lbl_0803f280 @ =gPreviousCollisionCheck
|
|
ldrb r1, [r0]
|
|
movs r0, #0xf0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_0803f278
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x42
|
|
lbl_0803f276:
|
|
strb r0, [r1]
|
|
lbl_0803f278:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f280: .4byte gPreviousCollisionCheck
|
|
|
|
thumb_func_start AcidWormSpitExplodingGFXInit
|
|
AcidWormSpitExplodingGFXInit: @ 0x0803f284
|
|
push {lr}
|
|
ldr r2, lbl_0803f2c0 @ =gCurrentSprite
|
|
ldr r0, lbl_0803f2c4 @ =0x082fc2e8
|
|
str r0, [r2, #0x18]
|
|
movs r0, #0
|
|
strb r0, [r2, #0x1c]
|
|
strh r0, [r2, #0x16]
|
|
adds r1, r2, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x43
|
|
strb r0, [r1]
|
|
ldr r0, lbl_0803f2c8 @ =gIoRegistersBackup
|
|
ldrb r1, [r0, #0xc]
|
|
movs r0, #3
|
|
ands r0, r1
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
strb r0, [r1]
|
|
ldrh r1, [r2]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #8
|
|
adds r0, r3, #0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
movs r0, #0xdc
|
|
lsls r0, r0, #1
|
|
bl SoundPlay
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f2c0: .4byte gCurrentSprite
|
|
lbl_0803f2c4: .4byte 0x082fc2e8
|
|
lbl_0803f2c8: .4byte gIoRegistersBackup
|
|
|
|
thumb_func_start acid_worm_check_exploding_anim_ended
|
|
acid_worm_check_exploding_anim_ended: @ 0x0803f2cc
|
|
push {r4, lr}
|
|
ldr r4, lbl_0803f2ec @ =gCurrentSprite
|
|
adds r1, r4, #0
|
|
adds r1, #0x26
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
bl SpriteUtilCheckEndCurrentSpriteAnim
|
|
cmp r0, #0
|
|
beq lbl_0803f2e4
|
|
movs r0, #0
|
|
strh r0, [r4]
|
|
lbl_0803f2e4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f2ec: .4byte gCurrentSprite
|
|
|
|
thumb_func_start acid_worm_check_exploding_on_acid_anim_ended
|
|
acid_worm_check_exploding_on_acid_anim_ended: @ 0x0803f2f0
|
|
push {r4, lr}
|
|
ldr r4, lbl_0803f314 @ =gCurrentSprite
|
|
ldr r0, lbl_0803f318 @ =gEffectYPosition
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, #2]
|
|
adds r1, r4, #0
|
|
adds r1, #0x26
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
bl SpriteUtilCheckEndCurrentSpriteAnim
|
|
cmp r0, #0
|
|
beq lbl_0803f30e
|
|
movs r0, #0
|
|
strh r0, [r4]
|
|
lbl_0803f30e:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f314: .4byte gCurrentSprite
|
|
lbl_0803f318: .4byte gEffectYPosition
|
|
|
|
thumb_func_start AcidWorm
|
|
AcidWorm: @ 0x0803f31c
|
|
push {lr}
|
|
ldr r0, lbl_0803f334 @ =gCurrentSprite
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x68
|
|
bls lbl_0803f32a
|
|
b lbl_0803f542
|
|
lbl_0803f32a:
|
|
lsls r0, r0, #2
|
|
ldr r1, lbl_0803f338 @ =lbl_0803f33c
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
lbl_0803f334: .4byte gCurrentSprite
|
|
lbl_0803f338: .4byte lbl_0803f33c
|
|
lbl_0803f33c: @ jump table
|
|
.4byte lbl_0803f4e0 @ case 0
|
|
.4byte lbl_0803f4e6 @ case 1
|
|
.4byte lbl_0803f542 @ case 2
|
|
.4byte lbl_0803f542 @ case 3
|
|
.4byte lbl_0803f542 @ case 4
|
|
.4byte lbl_0803f542 @ case 5
|
|
.4byte lbl_0803f542 @ case 6
|
|
.4byte lbl_0803f542 @ case 7
|
|
.4byte lbl_0803f504 @ case 8
|
|
.4byte lbl_0803f508 @ case 9
|
|
.4byte lbl_0803f542 @ case 10
|
|
.4byte lbl_0803f542 @ case 11
|
|
.4byte lbl_0803f542 @ case 12
|
|
.4byte lbl_0803f542 @ case 13
|
|
.4byte lbl_0803f542 @ case 14
|
|
.4byte lbl_0803f520 @ case 15
|
|
.4byte lbl_0803f542 @ case 16
|
|
.4byte lbl_0803f542 @ case 17
|
|
.4byte lbl_0803f542 @ case 18
|
|
.4byte lbl_0803f542 @ case 19
|
|
.4byte lbl_0803f542 @ case 20
|
|
.4byte lbl_0803f542 @ case 21
|
|
.4byte lbl_0803f542 @ case 22
|
|
.4byte lbl_0803f542 @ case 23
|
|
.4byte lbl_0803f542 @ case 24
|
|
.4byte lbl_0803f542 @ case 25
|
|
.4byte lbl_0803f542 @ case 26
|
|
.4byte lbl_0803f542 @ case 27
|
|
.4byte lbl_0803f542 @ case 28
|
|
.4byte lbl_0803f542 @ case 29
|
|
.4byte lbl_0803f542 @ case 30
|
|
.4byte lbl_0803f542 @ case 31
|
|
.4byte lbl_0803f542 @ case 32
|
|
.4byte lbl_0803f542 @ case 33
|
|
.4byte lbl_0803f542 @ case 34
|
|
.4byte lbl_0803f50e @ case 35
|
|
.4byte lbl_0803f542 @ case 36
|
|
.4byte lbl_0803f514 @ case 37
|
|
.4byte lbl_0803f542 @ case 38
|
|
.4byte lbl_0803f51a @ case 39
|
|
.4byte lbl_0803f542 @ case 40
|
|
.4byte lbl_0803f526 @ case 41
|
|
.4byte lbl_0803f542 @ case 42
|
|
.4byte lbl_0803f52c @ case 43
|
|
.4byte lbl_0803f542 @ case 44
|
|
.4byte lbl_0803f542 @ case 45
|
|
.4byte lbl_0803f542 @ case 46
|
|
.4byte lbl_0803f542 @ case 47
|
|
.4byte lbl_0803f542 @ case 48
|
|
.4byte lbl_0803f542 @ case 49
|
|
.4byte lbl_0803f542 @ case 50
|
|
.4byte lbl_0803f542 @ case 51
|
|
.4byte lbl_0803f542 @ case 52
|
|
.4byte lbl_0803f542 @ case 53
|
|
.4byte lbl_0803f542 @ case 54
|
|
.4byte lbl_0803f542 @ case 55
|
|
.4byte lbl_0803f542 @ case 56
|
|
.4byte lbl_0803f542 @ case 57
|
|
.4byte lbl_0803f542 @ case 58
|
|
.4byte lbl_0803f542 @ case 59
|
|
.4byte lbl_0803f542 @ case 60
|
|
.4byte lbl_0803f542 @ case 61
|
|
.4byte lbl_0803f542 @ case 62
|
|
.4byte lbl_0803f542 @ case 63
|
|
.4byte lbl_0803f542 @ case 64
|
|
.4byte lbl_0803f542 @ case 65
|
|
.4byte lbl_0803f4ec @ case 66
|
|
.4byte lbl_0803f4f2 @ case 67
|
|
.4byte lbl_0803f542 @ case 68
|
|
.4byte lbl_0803f4f8 @ case 69
|
|
.4byte lbl_0803f542 @ case 70
|
|
.4byte lbl_0803f4fe @ case 71
|
|
.4byte lbl_0803f542 @ case 72
|
|
.4byte lbl_0803f542 @ case 73
|
|
.4byte lbl_0803f542 @ case 74
|
|
.4byte lbl_0803f542 @ case 75
|
|
.4byte lbl_0803f542 @ case 76
|
|
.4byte lbl_0803f542 @ case 77
|
|
.4byte lbl_0803f542 @ case 78
|
|
.4byte lbl_0803f542 @ case 79
|
|
.4byte lbl_0803f542 @ case 80
|
|
.4byte lbl_0803f542 @ case 81
|
|
.4byte lbl_0803f542 @ case 82
|
|
.4byte lbl_0803f542 @ case 83
|
|
.4byte lbl_0803f542 @ case 84
|
|
.4byte lbl_0803f542 @ case 85
|
|
.4byte lbl_0803f542 @ case 86
|
|
.4byte lbl_0803f542 @ case 87
|
|
.4byte lbl_0803f542 @ case 88
|
|
.4byte lbl_0803f542 @ case 89
|
|
.4byte lbl_0803f542 @ case 90
|
|
.4byte lbl_0803f542 @ case 91
|
|
.4byte lbl_0803f542 @ case 92
|
|
.4byte lbl_0803f542 @ case 93
|
|
.4byte lbl_0803f542 @ case 94
|
|
.4byte lbl_0803f542 @ case 95
|
|
.4byte lbl_0803f542 @ case 96
|
|
.4byte lbl_0803f542 @ case 97
|
|
.4byte lbl_0803f532 @ case 98
|
|
.4byte lbl_0803f542 @ case 99
|
|
.4byte lbl_0803f542 @ case 100
|
|
.4byte lbl_0803f542 @ case 101
|
|
.4byte lbl_0803f542 @ case 102
|
|
.4byte lbl_0803f538 @ case 103
|
|
.4byte lbl_0803f53e @ case 104
|
|
lbl_0803f4e0:
|
|
bl AcidWormInit
|
|
b lbl_0803f542
|
|
lbl_0803f4e6:
|
|
bl AcidWormCheckSamusOnZipline
|
|
b lbl_0803f542
|
|
lbl_0803f4ec:
|
|
bl AcidWormSpawnStart
|
|
b lbl_0803f542
|
|
lbl_0803f4f2:
|
|
bl AcidWormSpawnExtending
|
|
b lbl_0803f542
|
|
lbl_0803f4f8:
|
|
bl AcidWormSpawnStayingOnTop
|
|
b lbl_0803f542
|
|
lbl_0803f4fe:
|
|
bl AcidWormSpawnRetracting
|
|
b lbl_0803f542
|
|
lbl_0803f504:
|
|
bl sub_0803e004
|
|
lbl_0803f508:
|
|
bl AcidWormIdle
|
|
b lbl_0803f542
|
|
lbl_0803f50e:
|
|
bl acid_worm_check_end_warning_anim
|
|
b lbl_0803f542
|
|
lbl_0803f514:
|
|
bl AcidWormExtend
|
|
b lbl_0803f542
|
|
lbl_0803f51a:
|
|
bl AcidWormRetracting
|
|
b lbl_0803f542
|
|
lbl_0803f520:
|
|
bl AcidWormExtended
|
|
b lbl_0803f542
|
|
lbl_0803f526:
|
|
bl AcidWormRaiseAcid
|
|
b lbl_0803f542
|
|
lbl_0803f52c:
|
|
bl AcidWormAcidGoDown
|
|
b lbl_0803f542
|
|
lbl_0803f532:
|
|
bl AcidWormDeathGFXInit
|
|
b lbl_0803f542
|
|
lbl_0803f538:
|
|
bl AcidWormDeathFlashingAnim
|
|
b lbl_0803f542
|
|
lbl_0803f53e:
|
|
bl AcidWormDying
|
|
lbl_0803f542:
|
|
ldr r0, lbl_0803f564 @ =gSubSpriteData1
|
|
ldrb r1, [r0, #0xe]
|
|
cmp r1, #0
|
|
beq lbl_0803f574
|
|
ldr r1, lbl_0803f568 @ =gLockScreen
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
ldr r2, lbl_0803f56c @ =gCurrentSprite
|
|
ldr r3, lbl_0803f570 @ =0xffffff00
|
|
adds r0, r3, #0
|
|
ldrh r3, [r2, #6]
|
|
adds r0, r0, r3
|
|
strh r0, [r1, #4]
|
|
ldrh r0, [r2, #8]
|
|
strh r0, [r1, #2]
|
|
b lbl_0803f578
|
|
.align 2, 0
|
|
lbl_0803f564: .4byte gSubSpriteData1
|
|
lbl_0803f568: .4byte gLockScreen
|
|
lbl_0803f56c: .4byte gCurrentSprite
|
|
lbl_0803f570: .4byte 0xffffff00
|
|
lbl_0803f574:
|
|
ldr r0, lbl_0803f57c @ =gLockScreen
|
|
strb r1, [r0]
|
|
lbl_0803f578:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_0803f57c: .4byte gLockScreen
|
|
|
|
thumb_func_start AcidWormBody
|
|
AcidWormBody: @ 0x0803f580
|
|
push {r4, r5, r6, lr}
|
|
ldr r3, lbl_0803f5d4 @ =gCurrentSprite
|
|
adds r0, r3, #0
|
|
adds r0, #0x23
|
|
ldrb r1, [r0]
|
|
ldr r2, lbl_0803f5d8 @ =gSpriteData
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #3
|
|
adds r2, r0, r2
|
|
adds r5, r2, #0
|
|
adds r5, #0x34
|
|
ldrb r6, [r5]
|
|
adds r0, r3, #0
|
|
adds r0, #0x34
|
|
strb r6, [r0]
|
|
adds r0, r2, #0
|
|
adds r0, #0x20
|
|
ldrb r4, [r0]
|
|
ldrb r1, [r2, #0x1f]
|
|
adds r0, #0x13
|
|
ldrb r0, [r0]
|
|
adds r1, r1, r0
|
|
movs r0, #0xe
|
|
subs r0, r0, r1
|
|
adds r2, r3, #0
|
|
cmp r4, r0
|
|
bne lbl_0803f5dc
|
|
adds r0, r2, #0
|
|
adds r0, #0x33
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r2, #0x1f]
|
|
adds r0, r0, r1
|
|
movs r1, #0xe
|
|
subs r1, r1, r0
|
|
adds r0, r2, #0
|
|
adds r0, #0x20
|
|
strb r1, [r0]
|
|
ldrb r0, [r2, #0x1c]
|
|
adds r0, #1
|
|
strb r0, [r2, #0x1c]
|
|
b lbl_0803f5e8
|
|
.align 2, 0
|
|
lbl_0803f5d4: .4byte gCurrentSprite
|
|
lbl_0803f5d8: .4byte gSpriteData
|
|
lbl_0803f5dc:
|
|
ldrb r5, [r5]
|
|
cmp r4, r5
|
|
bne lbl_0803f5e8
|
|
adds r0, r2, #0
|
|
adds r0, #0x20
|
|
strb r6, [r0]
|
|
lbl_0803f5e8:
|
|
adds r0, r2, #0
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x43
|
|
beq lbl_0803f60c
|
|
cmp r0, #0x43
|
|
bgt lbl_0803f600
|
|
cmp r0, #0
|
|
beq lbl_0803f606
|
|
cmp r0, #9
|
|
beq lbl_0803f612
|
|
b lbl_0803f61c
|
|
lbl_0803f600:
|
|
cmp r0, #0x67
|
|
beq lbl_0803f618
|
|
b lbl_0803f61c
|
|
lbl_0803f606:
|
|
bl AcidWormBodyInit
|
|
b lbl_0803f61c
|
|
lbl_0803f60c:
|
|
bl AcidWormBodyMove
|
|
b lbl_0803f61c
|
|
lbl_0803f612:
|
|
bl AcidWormBodyMainLoop
|
|
b lbl_0803f61c
|
|
lbl_0803f618:
|
|
bl AcidWormBodyDeath
|
|
lbl_0803f61c:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start AcidWormSpit
|
|
AcidWormSpit: @ 0x0803f624
|
|
push {lr}
|
|
sub sp, #4
|
|
ldr r1, lbl_0803f648 @ =gCurrentSprite
|
|
adds r0, r1, #0
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
adds r2, r1, #0
|
|
cmp r0, #0x43
|
|
beq lbl_0803f662
|
|
cmp r0, #0x43
|
|
bgt lbl_0803f64c
|
|
cmp r0, #0x42
|
|
beq lbl_0803f65e
|
|
cmp r0, #0
|
|
beq lbl_0803f652
|
|
cmp r0, #9
|
|
beq lbl_0803f658
|
|
b lbl_0803f66e
|
|
.align 2, 0
|
|
lbl_0803f648: .4byte gCurrentSprite
|
|
lbl_0803f64c:
|
|
cmp r0, #0x45
|
|
beq lbl_0803f668
|
|
b lbl_0803f66e
|
|
lbl_0803f652:
|
|
bl AcidWormSpitInit
|
|
b lbl_0803f67e
|
|
lbl_0803f658:
|
|
bl AcidWormSpitMove
|
|
b lbl_0803f67e
|
|
lbl_0803f65e:
|
|
bl AcidWormSpitExplodingGFXInit
|
|
lbl_0803f662:
|
|
bl acid_worm_check_exploding_anim_ended
|
|
b lbl_0803f67e
|
|
lbl_0803f668:
|
|
bl acid_worm_check_exploding_on_acid_anim_ended
|
|
b lbl_0803f67e
|
|
lbl_0803f66e:
|
|
ldrh r1, [r2, #2]
|
|
ldrh r2, [r2, #4]
|
|
movs r0, #0x1f
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
movs r3, #1
|
|
bl SpriteUtilSpriteDeath
|
|
lbl_0803f67e:
|
|
add sp, #4
|
|
pop {r0}
|
|
bx r0
|
|
|