mirror of
https://github.com/YohannDR/mzm.git
synced 2025-02-23 23:22:15 +00:00
2035 lines
40 KiB
ArmAsm
2035 lines
40 KiB
ArmAsm
.include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
thumb_func_start HiveSpawnParticle
|
|
HiveSpawnParticle: @ 0x08024a10
|
|
push {r4, r5, lr}
|
|
ldr r0, lbl_08024a38 @ =gCurrentSprite
|
|
ldrh r4, [r0, #2]
|
|
ldrh r5, [r0, #4]
|
|
adds r0, r4, #0
|
|
subs r0, #0x20
|
|
adds r1, r5, #0
|
|
movs r2, #0x35
|
|
bl ParticleSet
|
|
adds r4, #0x60
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
movs r2, #0x36
|
|
bl ParticleSet
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08024a38: .4byte gCurrentSprite
|
|
|
|
thumb_func_start HiveInit
|
|
HiveInit: @ 0x08024a3c
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #0xc
|
|
movs r0, #3
|
|
movs r1, #0x2c
|
|
bl EventFunction
|
|
adds r7, r0, #0
|
|
cmp r7, #0
|
|
beq lbl_08024a60
|
|
ldr r1, lbl_08024a5c @ =gCurrentSprite
|
|
movs r0, #0
|
|
strh r0, [r1]
|
|
b lbl_08024b3e
|
|
.align 2, 0
|
|
lbl_08024a5c: .4byte gCurrentSprite
|
|
lbl_08024a60:
|
|
ldr r0, lbl_08024b4c @ =gCurrentSprite
|
|
mov ip, r0
|
|
adds r0, #0x27
|
|
movs r1, #0x28
|
|
strb r1, [r0]
|
|
mov r0, ip
|
|
adds r0, #0x28
|
|
strb r1, [r0]
|
|
mov r1, ip
|
|
adds r1, #0x29
|
|
movs r0, #0x14
|
|
strb r0, [r1]
|
|
movs r3, #0
|
|
ldr r0, lbl_08024b50 @ =0x0000ff80
|
|
mov r1, ip
|
|
strh r0, [r1, #0xa]
|
|
movs r0, #0x80
|
|
strh r0, [r1, #0xc]
|
|
ldr r0, lbl_08024b54 @ =0x0000ffd0
|
|
strh r0, [r1, #0xe]
|
|
movs r0, #0x30
|
|
strh r0, [r1, #0x10]
|
|
adds r1, #0x25
|
|
movs r0, #0xb
|
|
strb r0, [r1]
|
|
adds r1, #0xe
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, lbl_08024b58 @ =0x082da8ec
|
|
mov r1, ip
|
|
str r0, [r1, #0x18]
|
|
strb r3, [r1, #0x1c]
|
|
strh r7, [r1, #0x16]
|
|
adds r1, #0x22
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
ldr r2, lbl_08024b5c @ =0x082b0d68
|
|
mov r0, ip
|
|
ldrb r1, [r0, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
mov r1, ip
|
|
strh r0, [r1, #0x14]
|
|
adds r1, #0x24
|
|
movs r0, #9
|
|
strb r0, [r1]
|
|
mov r0, ip
|
|
adds r0, #0x2c
|
|
strb r3, [r0]
|
|
mov r0, ip
|
|
ldrh r5, [r0, #2]
|
|
ldrh r4, [r0, #4]
|
|
ldrb r1, [r0, #0x1f]
|
|
mov r8, r1
|
|
ldrb r6, [r0, #0x1e]
|
|
adds r0, #0x23
|
|
ldrb r3, [r0]
|
|
str r5, [sp]
|
|
str r4, [sp, #4]
|
|
str r7, [sp, #8]
|
|
movs r0, #0x11
|
|
adds r1, r6, #0
|
|
mov r2, r8
|
|
bl SpriteSpawnSecondary
|
|
adds r3, r5, #0
|
|
adds r3, #0x40
|
|
adds r0, r4, #0
|
|
subs r0, #0x1f
|
|
str r0, [sp]
|
|
str r7, [sp, #4]
|
|
movs r0, #0x4a
|
|
adds r1, r6, #0
|
|
mov r2, r8
|
|
bl SpriteSpawnPrimary
|
|
adds r3, r5, #0
|
|
adds r3, #0x20
|
|
adds r0, r4, #0
|
|
adds r0, #0x10
|
|
str r0, [sp]
|
|
str r7, [sp, #4]
|
|
movs r0, #0x4a
|
|
adds r1, r6, #0
|
|
mov r2, r8
|
|
bl SpriteSpawnPrimary
|
|
adds r3, r5, #0
|
|
subs r3, #0x48
|
|
adds r0, r4, #0
|
|
subs r0, #0x10
|
|
str r0, [sp]
|
|
str r7, [sp, #4]
|
|
movs r0, #0x4a
|
|
adds r1, r6, #0
|
|
mov r2, r8
|
|
bl SpriteSpawnPrimary
|
|
subs r5, #0x60
|
|
adds r4, #0x1f
|
|
str r4, [sp]
|
|
str r7, [sp, #4]
|
|
movs r0, #0x4a
|
|
adds r1, r6, #0
|
|
mov r2, r8
|
|
adds r3, r5, #0
|
|
bl SpriteSpawnPrimary
|
|
lbl_08024b3e:
|
|
add sp, #0xc
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08024b4c: .4byte gCurrentSprite
|
|
lbl_08024b50: .4byte 0x0000ff80
|
|
lbl_08024b54: .4byte 0x0000ffd0
|
|
lbl_08024b58: .4byte 0x082da8ec
|
|
lbl_08024b5c: .4byte 0x082b0d68
|
|
|
|
thumb_func_start hive_count_mellow
|
|
hive_count_mellow: @ 0x08024b60
|
|
push {r4, r5, r6, r7, lr}
|
|
movs r4, #0
|
|
movs r0, #0x12
|
|
mov ip, r0
|
|
ldr r0, lbl_08024bac @ =gCurrentSprite
|
|
ldrb r5, [r0, #0x1e]
|
|
ldr r2, lbl_08024bb0 @ =gSpriteData
|
|
movs r1, #0xa8
|
|
lsls r1, r1, #3
|
|
adds r0, r2, r1
|
|
cmp r2, r0
|
|
bhs lbl_08024ba4
|
|
movs r7, #1
|
|
adds r3, r2, #0
|
|
adds r3, #0x1e
|
|
adds r6, r0, #0
|
|
lbl_08024b80:
|
|
ldrh r1, [r2]
|
|
adds r0, r7, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08024b9c
|
|
ldrb r0, [r3, #7]
|
|
cmp r0, ip
|
|
bne lbl_08024b9c
|
|
ldrb r0, [r3]
|
|
cmp r0, r5
|
|
bne lbl_08024b9c
|
|
adds r0, r4, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
lbl_08024b9c:
|
|
adds r3, #0x38
|
|
adds r2, #0x38
|
|
cmp r2, r6
|
|
blo lbl_08024b80
|
|
lbl_08024ba4:
|
|
adds r0, r4, #0
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
lbl_08024bac: .4byte gCurrentSprite
|
|
lbl_08024bb0: .4byte gSpriteData
|
|
|
|
thumb_func_start HivePhase1
|
|
HivePhase1: @ 0x08024bb4
|
|
push {lr}
|
|
sub sp, #8
|
|
bl hive_count_mellow
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
bhi lbl_08024bda
|
|
ldr r0, lbl_08024c20 @ =gCurrentSprite
|
|
ldrb r1, [r0, #0x1e]
|
|
ldrb r2, [r0, #0x1f]
|
|
ldrh r3, [r0, #2]
|
|
ldrh r0, [r0, #4]
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
str r0, [sp, #4]
|
|
movs r0, #0x4a
|
|
bl SpriteSpawnPrimary
|
|
lbl_08024bda:
|
|
ldr r3, lbl_08024c20 @ =gCurrentSprite
|
|
ldr r2, lbl_08024c24 @ =0x082b0d68
|
|
ldrb r1, [r3, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r3, #0x14]
|
|
lsrs r0, r0, #1
|
|
cmp r1, r0
|
|
bhs lbl_08024c18
|
|
adds r2, r3, #0
|
|
adds r2, #0x33
|
|
movs r1, #0
|
|
movs r0, #2
|
|
strb r0, [r2]
|
|
ldr r0, lbl_08024c28 @ =0x082da9a4
|
|
str r0, [r3, #0x18]
|
|
strb r1, [r3, #0x1c]
|
|
strh r1, [r3, #0x16]
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x23
|
|
strb r0, [r1]
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #1
|
|
bl SoundPlayNotAlreadyPlaying
|
|
bl HiveSpawnParticle
|
|
lbl_08024c18:
|
|
add sp, #8
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08024c20: .4byte gCurrentSprite
|
|
lbl_08024c24: .4byte 0x082b0d68
|
|
lbl_08024c28: .4byte 0x082da9a4
|
|
|
|
thumb_func_start HivePhase2
|
|
HivePhase2: @ 0x08024c2c
|
|
push {lr}
|
|
sub sp, #8
|
|
bl hive_count_mellow
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
bhi lbl_08024c52
|
|
ldr r0, lbl_08024c98 @ =gCurrentSprite
|
|
ldrb r1, [r0, #0x1e]
|
|
ldrb r2, [r0, #0x1f]
|
|
ldrh r3, [r0, #2]
|
|
ldrh r0, [r0, #4]
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
str r0, [sp, #4]
|
|
movs r0, #0x4a
|
|
bl SpriteSpawnPrimary
|
|
lbl_08024c52:
|
|
ldr r3, lbl_08024c98 @ =gCurrentSprite
|
|
ldr r2, lbl_08024c9c @ =0x082b0d68
|
|
ldrb r1, [r3, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r3, #0x14]
|
|
lsrs r0, r0, #2
|
|
cmp r1, r0
|
|
bhs lbl_08024c90
|
|
adds r2, r3, #0
|
|
adds r2, #0x33
|
|
movs r1, #0
|
|
movs r0, #3
|
|
strb r0, [r2]
|
|
ldr r0, lbl_08024ca0 @ =0x082daa04
|
|
str r0, [r3, #0x18]
|
|
strb r1, [r3, #0x1c]
|
|
strh r1, [r3, #0x16]
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x25
|
|
strb r0, [r1]
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #1
|
|
bl SoundPlayNotAlreadyPlaying
|
|
bl HiveSpawnParticle
|
|
lbl_08024c90:
|
|
add sp, #8
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08024c98: .4byte gCurrentSprite
|
|
lbl_08024c9c: .4byte 0x082b0d68
|
|
lbl_08024ca0: .4byte 0x082daa04
|
|
|
|
thumb_func_start HivePhase3
|
|
HivePhase3: @ 0x08024ca4
|
|
push {lr}
|
|
sub sp, #8
|
|
bl hive_count_mellow
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
bhi lbl_08024cca
|
|
ldr r0, lbl_08024cd0 @ =gCurrentSprite
|
|
ldrb r1, [r0, #0x1e]
|
|
ldrb r2, [r0, #0x1f]
|
|
ldrh r3, [r0, #2]
|
|
ldrh r0, [r0, #4]
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
str r0, [sp, #4]
|
|
movs r0, #0x4a
|
|
bl SpriteSpawnPrimary
|
|
lbl_08024cca:
|
|
add sp, #8
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08024cd0: .4byte gCurrentSprite
|
|
|
|
thumb_func_start HiveDying
|
|
HiveDying: @ 0x08024cd4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #4
|
|
movs r2, #0
|
|
movs r5, #0x4b
|
|
ldr r3, lbl_08024da4 @ =gSpriteData
|
|
movs r1, #0xa8
|
|
lsls r1, r1, #3
|
|
adds r0, r3, r1
|
|
cmp r3, r0
|
|
bhs lbl_08024d1e
|
|
adds r4, r0, #0
|
|
lbl_08024cee:
|
|
ldrh r1, [r3]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08024d18
|
|
adds r0, r3, #0
|
|
adds r0, #0x32
|
|
ldrb r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_08024d18
|
|
ldrb r0, [r3, #0x1d]
|
|
cmp r0, r5
|
|
bne lbl_08024d18
|
|
ldrh r0, [r3, #0x14]
|
|
cmp r0, #0
|
|
beq lbl_08024d18
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
lbl_08024d18:
|
|
adds r3, #0x38
|
|
cmp r3, r4
|
|
blo lbl_08024cee
|
|
lbl_08024d1e:
|
|
cmp r2, #0
|
|
bne lbl_08024d2a
|
|
movs r0, #1
|
|
movs r1, #0x2c
|
|
bl EventFunction
|
|
lbl_08024d2a:
|
|
movs r2, #9
|
|
mov ip, r2
|
|
ldr r0, lbl_08024da8 @ =gCurrentSprite
|
|
ldrb r5, [r0, #0x1e]
|
|
movs r7, #0x12
|
|
ldr r3, lbl_08024da4 @ =gSpriteData
|
|
movs r2, #0xa8
|
|
lsls r2, r2, #3
|
|
adds r1, r3, r2
|
|
adds r4, r0, #0
|
|
cmp r3, r1
|
|
bhs lbl_08024d78
|
|
adds r6, r1, #0
|
|
adds r2, r3, #0
|
|
adds r2, #0x1e
|
|
lbl_08024d48:
|
|
ldrh r1, [r3]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08024d70
|
|
ldrb r0, [r2, #7]
|
|
cmp r0, r7
|
|
bne lbl_08024d70
|
|
ldrb r0, [r2]
|
|
cmp r0, r5
|
|
bne lbl_08024d70
|
|
ldrb r0, [r2, #6]
|
|
cmp r0, ip
|
|
bne lbl_08024d70
|
|
movs r0, #0x25
|
|
strb r0, [r2, #6]
|
|
ldrb r0, [r2, #0x14]
|
|
movs r1, #4
|
|
orrs r0, r1
|
|
strb r0, [r2, #0x14]
|
|
lbl_08024d70:
|
|
adds r2, #0x38
|
|
adds r3, #0x38
|
|
cmp r3, r6
|
|
blo lbl_08024d48
|
|
lbl_08024d78:
|
|
adds r3, r4, #0
|
|
adds r1, r3, #0
|
|
adds r1, #0x24
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x62
|
|
bhi lbl_08024d8e
|
|
adds r0, r3, #0
|
|
adds r0, #0x2c
|
|
ldrb r2, [r0]
|
|
cmp r2, #0
|
|
beq lbl_08024dac
|
|
lbl_08024d8e:
|
|
ldrh r1, [r3, #2]
|
|
adds r1, #0x48
|
|
ldrh r2, [r3, #4]
|
|
movs r0, #0x22
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
movs r3, #1
|
|
bl SpriteUtilSpriteDeath
|
|
b lbl_08024dca
|
|
.align 2, 0
|
|
lbl_08024da4: .4byte gSpriteData
|
|
lbl_08024da8: .4byte gCurrentSprite
|
|
lbl_08024dac:
|
|
movs r0, #0x67
|
|
strb r0, [r1]
|
|
ldr r0, lbl_08024dd8 @ =0x082daa6c
|
|
str r0, [r4, #0x18]
|
|
strb r2, [r4, #0x1c]
|
|
movs r1, #0
|
|
strh r2, [r4, #0x16]
|
|
adds r0, r4, #0
|
|
adds r0, #0x25
|
|
strb r1, [r0]
|
|
ldr r0, lbl_08024ddc @ =0x00000161
|
|
bl SoundPlayNotAlreadyPlaying
|
|
bl HiveSpawnParticle
|
|
lbl_08024dca:
|
|
add sp, #4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08024dd8: .4byte 0x082daa6c
|
|
lbl_08024ddc: .4byte 0x00000161
|
|
|
|
thumb_func_start HiveIgnoreSamusCollision
|
|
HiveIgnoreSamusCollision: @ 0x08024de0
|
|
ldr r0, lbl_08024dec @ =gCurrentSprite
|
|
adds r0, #0x26
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
lbl_08024dec: .4byte gCurrentSprite
|
|
|
|
thumb_func_start HiveRootsInit
|
|
HiveRootsInit: @ 0x08024df0
|
|
push {r4, lr}
|
|
ldr r0, lbl_08024e44 @ =gCurrentSprite
|
|
mov ip, r0
|
|
ldrh r1, [r0]
|
|
ldr r0, lbl_08024e48 @ =0x0000fffb
|
|
ands r0, r1
|
|
movs r2, #0
|
|
movs r3, #0
|
|
mov r1, ip
|
|
strh r0, [r1]
|
|
mov r0, ip
|
|
adds r0, #0x25
|
|
strb r2, [r0]
|
|
adds r0, #2
|
|
strb r2, [r0]
|
|
adds r1, #0x28
|
|
movs r0, #0x20
|
|
strb r0, [r1]
|
|
adds r1, #1
|
|
movs r0, #0x14
|
|
strb r0, [r1]
|
|
ldr r1, lbl_08024e4c @ =0x0000fffc
|
|
mov r4, ip
|
|
strh r1, [r4, #0xa]
|
|
movs r0, #4
|
|
strh r0, [r4, #0xc]
|
|
strh r1, [r4, #0xe]
|
|
strh r0, [r4, #0x10]
|
|
mov r1, ip
|
|
adds r1, #0x24
|
|
movs r0, #9
|
|
strb r0, [r1]
|
|
ldr r0, lbl_08024e50 @ =0x082da984
|
|
str r0, [r4, #0x18]
|
|
strb r2, [r4, #0x1c]
|
|
strh r3, [r4, #0x16]
|
|
adds r1, #0xf
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08024e44: .4byte gCurrentSprite
|
|
lbl_08024e48: .4byte 0x0000fffb
|
|
lbl_08024e4c: .4byte 0x0000fffc
|
|
lbl_08024e50: .4byte 0x082da984
|
|
|
|
thumb_func_start HiveRootsMove
|
|
HiveRootsMove: @ 0x08024e54
|
|
ldr r2, lbl_08024e70 @ =gCurrentSprite
|
|
adds r0, r2, #0
|
|
adds r0, #0x23
|
|
ldrb r1, [r0]
|
|
ldr r3, lbl_08024e74 @ =gSpriteData
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r3
|
|
ldrh r1, [r0, #2]
|
|
strh r1, [r2, #2]
|
|
ldrh r0, [r0, #4]
|
|
strh r0, [r2, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
lbl_08024e70: .4byte gCurrentSprite
|
|
lbl_08024e74: .4byte gSpriteData
|
|
|
|
thumb_func_start MellowInit
|
|
MellowInit: @ 0x08024e78
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #3
|
|
movs r1, #0x2c
|
|
bl EventFunction
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq lbl_08024e8e
|
|
movs r0, #0
|
|
b lbl_08024fbe
|
|
lbl_08024e8e:
|
|
ldrh r1, [r4]
|
|
ldr r0, lbl_08024f04 @ =0x0000fffb
|
|
ands r0, r1
|
|
movs r5, #0
|
|
strh r0, [r4]
|
|
adds r0, r4, #0
|
|
adds r0, #0x27
|
|
movs r1, #8
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
movs r1, #0xc
|
|
strb r1, [r0]
|
|
ldr r0, lbl_08024f08 @ =0x0000fff4
|
|
strh r0, [r4, #0xa]
|
|
strh r1, [r4, #0xc]
|
|
subs r0, #0x14
|
|
strh r0, [r4, #0xe]
|
|
movs r3, #0x20
|
|
strh r3, [r4, #0x10]
|
|
strb r5, [r4, #0x1c]
|
|
strh r2, [r4, #0x16]
|
|
adds r1, r4, #0
|
|
adds r1, #0x25
|
|
movs r0, #0x12
|
|
strb r0, [r1]
|
|
ldr r2, lbl_08024f0c @ =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]
|
|
ldrb r0, [r4, #0x1e]
|
|
cmp r0, #0x88
|
|
beq lbl_08024f3e
|
|
ldr r0, lbl_08024f10 @ =0x082da88c
|
|
str r0, [r4, #0x18]
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r0, #9
|
|
strb r0, [r1]
|
|
ldr r0, lbl_08024f14 @ =gSpriteRNG
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, #2
|
|
adds r2, r4, #0
|
|
adds r2, #0x2f
|
|
strb r0, [r2]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08024f18
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #0x14
|
|
b lbl_08024f1e
|
|
.align 2, 0
|
|
lbl_08024f04: .4byte 0x0000fffb
|
|
lbl_08024f08: .4byte 0x0000fff4
|
|
lbl_08024f0c: .4byte 0x082b0d68
|
|
lbl_08024f10: .4byte 0x082da88c
|
|
lbl_08024f14: .4byte gSpriteRNG
|
|
lbl_08024f18:
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #0x3c
|
|
lbl_08024f1e:
|
|
strb r0, [r1]
|
|
ldrh r1, [r4, #4]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08024f34
|
|
adds r1, r4, #0
|
|
adds r1, #0x22
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
b lbl_08024fc0
|
|
lbl_08024f34:
|
|
adds r1, r4, #0
|
|
adds r1, #0x22
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
b lbl_08024fc0
|
|
lbl_08024f3e:
|
|
ldr r0, lbl_08024f9c @ =0x082da8bc
|
|
str r0, [r4, #0x18]
|
|
ldr r0, lbl_08024fa0 @ =gIoRegistersBackup
|
|
ldrb r2, [r0, #0xc]
|
|
movs r1, #3
|
|
adds r0, r1, #0
|
|
ands r0, r2
|
|
adds r2, r4, #0
|
|
adds r2, #0x21
|
|
strb r0, [r2]
|
|
adds r0, r4, #0
|
|
adds r0, #0x22
|
|
strb r1, [r0]
|
|
adds r0, #0xb
|
|
strb r5, [r0]
|
|
adds r0, #1
|
|
movs r2, #1
|
|
strb r2, [r0]
|
|
subs r0, #2
|
|
strb r5, [r0]
|
|
adds r0, #3
|
|
strb r2, [r0]
|
|
ldr r0, lbl_08024fa4 @ =gSpriteRNG
|
|
ldrb r0, [r0]
|
|
ands r1, r0
|
|
strh r1, [r4, #8]
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x23
|
|
strb r0, [r1]
|
|
strh r3, [r4, #0x12]
|
|
bl SpriteUtilMakeSpriteFaceSamusDirection
|
|
ldrh r2, [r4, #2]
|
|
ldr r1, lbl_08024fa8 @ =gSamusData
|
|
ldr r0, lbl_08024fac @ =gSamusPhysics
|
|
adds r0, #0x70
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
ldrh r1, [r1, #0x14]
|
|
adds r0, r0, r1
|
|
cmp r2, r0
|
|
ble lbl_08024fb4
|
|
ldrh r1, [r4]
|
|
ldr r0, lbl_08024fb0 @ =0x0000fbff
|
|
ands r0, r1
|
|
b lbl_08024fbe
|
|
.align 2, 0
|
|
lbl_08024f9c: .4byte 0x082da8bc
|
|
lbl_08024fa0: .4byte gIoRegistersBackup
|
|
lbl_08024fa4: .4byte gSpriteRNG
|
|
lbl_08024fa8: .4byte gSamusData
|
|
lbl_08024fac: .4byte gSamusPhysics
|
|
lbl_08024fb0: .4byte 0x0000fbff
|
|
lbl_08024fb4:
|
|
ldrh r0, [r4]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #3
|
|
adds r1, r2, #0
|
|
orrs r0, r1
|
|
lbl_08024fbe:
|
|
strh r0, [r4]
|
|
lbl_08024fc0:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start MellowIdle
|
|
MellowIdle: @ 0x08024fc8
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r4, r0, #0
|
|
adds r3, r4, #0
|
|
adds r3, #0x2f
|
|
ldrb r2, [r3]
|
|
ldr r5, lbl_08025030 @ =0x082d88e4
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r5
|
|
movs r6, #0
|
|
ldrsh r1, [r0, r6]
|
|
ldr r6, lbl_08025034 @ =0x00007fff
|
|
cmp r1, r6
|
|
bne lbl_08024fe8
|
|
movs r7, #0
|
|
ldrsh r1, [r5, r7]
|
|
movs r2, #0
|
|
lbl_08024fe8:
|
|
adds r0, r2, #1
|
|
strb r0, [r3]
|
|
ldrh r0, [r4, #2]
|
|
adds r0, r0, r1
|
|
strh r0, [r4, #2]
|
|
adds r3, r4, #0
|
|
adds r3, #0x2e
|
|
ldrb r2, [r3]
|
|
ldr r5, lbl_08025038 @ =0x082d8966
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r5
|
|
movs r7, #0
|
|
ldrsh r1, [r0, r7]
|
|
cmp r1, r6
|
|
bne lbl_0802500c
|
|
movs r0, #0
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, #0
|
|
lbl_0802500c:
|
|
adds r0, r2, #1
|
|
strb r0, [r3]
|
|
ldrh r0, [r4, #4]
|
|
adds r0, r0, r1
|
|
strh r0, [r4, #4]
|
|
ldrb r0, [r3]
|
|
cmp r0, #1
|
|
beq lbl_08025020
|
|
cmp r0, #0x29
|
|
bne lbl_08025040
|
|
lbl_08025020:
|
|
adds r1, r4, #0
|
|
adds r1, #0x22
|
|
ldrb r0, [r1]
|
|
cmp r0, #3
|
|
bne lbl_0802503c
|
|
movs r0, #6
|
|
b lbl_0802503e
|
|
.align 2, 0
|
|
lbl_08025030: .4byte 0x082d88e4
|
|
lbl_08025034: .4byte 0x00007fff
|
|
lbl_08025038: .4byte 0x082d8966
|
|
lbl_0802503c:
|
|
movs r0, #3
|
|
lbl_0802503e:
|
|
strb r0, [r1]
|
|
lbl_08025040:
|
|
movs r0, #0xa0
|
|
lsls r0, r0, #1
|
|
movs r1, #0x88
|
|
lsls r1, r1, #1
|
|
bl SpriteUtilCheckSamusNearSpriteLeftRight
|
|
cmp r0, #0
|
|
beq lbl_08025078
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r2, #0
|
|
movs r0, #0x22
|
|
strb r0, [r1]
|
|
ldr r0, lbl_08025080 @ =0x082da8bc
|
|
str r0, [r4, #0x18]
|
|
strb r2, [r4, #0x1c]
|
|
strh r2, [r4, #0x16]
|
|
ldr r0, lbl_08025084 @ =gIoRegistersBackup
|
|
ldrb r1, [r0, #0xc]
|
|
movs r2, #3
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
adds r1, r4, #0
|
|
adds r1, #0x21
|
|
strb r0, [r1]
|
|
adds r0, r4, #0
|
|
adds r0, #0x22
|
|
strb r2, [r0]
|
|
lbl_08025078:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08025080: .4byte 0x082da8bc
|
|
lbl_08025084: .4byte gIoRegistersBackup
|
|
|
|
thumb_func_start MellowFleeing
|
|
MellowFleeing: @ 0x08025088
|
|
push {lr}
|
|
adds r1, r0, #0
|
|
ldr r0, lbl_080250a8 @ =gSpriteRNG
|
|
ldrb r0, [r0]
|
|
lsrs r3, r0, #2
|
|
adds r2, r3, #0
|
|
adds r2, #8
|
|
adds r0, r1, #0
|
|
adds r0, #0x2e
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x27
|
|
bhi lbl_080250ac
|
|
ldrh r0, [r1, #4]
|
|
adds r0, r0, r2
|
|
b lbl_080250b0
|
|
.align 2, 0
|
|
lbl_080250a8: .4byte gSpriteRNG
|
|
lbl_080250ac:
|
|
ldrh r0, [r1, #4]
|
|
subs r0, r0, r2
|
|
lbl_080250b0:
|
|
strh r0, [r1, #4]
|
|
adds r2, r3, #4
|
|
adds r0, r1, #0
|
|
adds r0, #0x2f
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x1f
|
|
bhi lbl_080250c4
|
|
ldrh r0, [r1, #2]
|
|
adds r0, r0, r2
|
|
b lbl_080250c8
|
|
lbl_080250c4:
|
|
ldrh r0, [r1, #2]
|
|
subs r0, r0, r2
|
|
lbl_080250c8:
|
|
strh r0, [r1, #2]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start MellowSamusDetectedInit
|
|
MellowSamusDetectedInit: @ 0x080250d0
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r0, #0x2d
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
movs r2, #1
|
|
strb r2, [r0]
|
|
subs r0, #2
|
|
strb r1, [r0]
|
|
adds r0, #3
|
|
strb r2, [r0]
|
|
strh r1, [r4, #8]
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
movs r0, #0x23
|
|
strb r0, [r1]
|
|
movs r0, #0x20
|
|
strh r0, [r4, #0x12]
|
|
bl SpriteUtilMakeSpriteFaceSamusDirection
|
|
ldrh r2, [r4, #2]
|
|
ldr r1, lbl_08025118 @ =gSamusData
|
|
ldr r0, lbl_0802511c @ =gSamusPhysics
|
|
adds r0, #0x70
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
ldrh r1, [r1, #0x14]
|
|
adds r0, r0, r1
|
|
cmp r2, r0
|
|
ble lbl_08025124
|
|
ldrh r1, [r4]
|
|
ldr r0, lbl_08025120 @ =0x0000fbff
|
|
ands r0, r1
|
|
b lbl_0802512e
|
|
.align 2, 0
|
|
lbl_08025118: .4byte gSamusData
|
|
lbl_0802511c: .4byte gSamusPhysics
|
|
lbl_08025120: .4byte 0x0000fbff
|
|
lbl_08025124:
|
|
ldrh r0, [r4]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #3
|
|
adds r1, r2, #0
|
|
orrs r0, r1
|
|
lbl_0802512e:
|
|
strh r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start MellowMove
|
|
MellowMove: @ 0x08025138
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #8
|
|
mov ip, r0
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r5, #0x18
|
|
mov r2, ip
|
|
ldrh r1, [r2, #2]
|
|
adds r0, r1, #0
|
|
subs r0, #0x18
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
str r0, [sp, #4]
|
|
adds r1, #0x18
|
|
lsls r1, r1, #0x10
|
|
lsrs r1, r1, #0x10
|
|
mov sl, r1
|
|
ldrh r1, [r2, #4]
|
|
adds r0, r1, #0
|
|
subs r0, #0x18
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
mov r8, r0
|
|
adds r1, #0x18
|
|
lsls r1, r1, #0x10
|
|
lsrs r7, r1, #0x10
|
|
mov r0, ip
|
|
adds r0, #0x23
|
|
ldrb r0, [r0]
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
lsls r1, r0, #3
|
|
subs r1, r1, r0
|
|
lsls r1, r1, #3
|
|
ldr r0, lbl_080251dc @ =gSpriteData
|
|
adds r2, r1, r0
|
|
movs r1, #0xa8
|
|
lsls r1, r1, #3
|
|
adds r0, r0, r1
|
|
ldr r1, lbl_080251e0 @ =gSamusData
|
|
mov sb, r1
|
|
cmp r2, r0
|
|
bhs lbl_08025202
|
|
adds r3, r2, #0
|
|
adds r3, #0x25
|
|
lbl_0802519c:
|
|
ldrh r1, [r2]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_080251f8
|
|
ldrb r0, [r3]
|
|
cmp r0, #0x12
|
|
bne lbl_080251f8
|
|
ldrh r6, [r2, #2]
|
|
ldrh r4, [r2, #4]
|
|
subs r0, r6, r5
|
|
cmp sl, r0
|
|
ble lbl_080251f8
|
|
adds r0, r6, r5
|
|
ldr r1, [sp, #4]
|
|
cmp r1, r0
|
|
bge lbl_080251f8
|
|
subs r0, r4, r5
|
|
cmp r7, r0
|
|
ble lbl_080251f8
|
|
adds r0, r4, r5
|
|
cmp r8, r0
|
|
bge lbl_080251f8
|
|
ldrb r0, [r3, #0xb]
|
|
cmp r0, #0
|
|
bne lbl_08025202
|
|
mov r1, ip
|
|
ldrh r0, [r1, #2]
|
|
cmp r0, r6
|
|
bls lbl_080251e4
|
|
subs r0, r6, #4
|
|
b lbl_080251e6
|
|
.align 2, 0
|
|
lbl_080251dc: .4byte gSpriteData
|
|
lbl_080251e0: .4byte gSamusData
|
|
lbl_080251e4:
|
|
adds r0, r6, #4
|
|
lbl_080251e6:
|
|
strh r0, [r2, #2]
|
|
mov r1, ip
|
|
ldrh r0, [r1, #4]
|
|
cmp r0, r4
|
|
bhi lbl_08025240
|
|
ldrh r0, [r2, #4]
|
|
adds r0, #4
|
|
strh r0, [r2, #4]
|
|
b lbl_08025202
|
|
lbl_080251f8:
|
|
adds r3, #0x38
|
|
adds r2, #0x38
|
|
ldr r0, lbl_08025238 @ =gSpritesetSpritesID
|
|
cmp r2, r0
|
|
blo lbl_0802519c
|
|
lbl_08025202:
|
|
mov r2, ip
|
|
ldrb r0, [r2, #0x1e]
|
|
cmp r0, #0x88
|
|
bne lbl_08025298
|
|
movs r7, #0x14
|
|
ldr r1, lbl_0802523c @ =gSpriteRNG
|
|
ldrb r0, [r1]
|
|
adds r0, #0x1e
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #2
|
|
adds r1, #0xdc
|
|
mov r2, sb
|
|
ldrh r0, [r2, #0x14]
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
ldrh r4, [r2, #0x12]
|
|
mov r1, ip
|
|
ldrh r0, [r1, #8]
|
|
cmp r0, #1
|
|
beq lbl_08025248
|
|
cmp r0, #3
|
|
beq lbl_08025270
|
|
b lbl_08025304
|
|
.align 2, 0
|
|
lbl_08025238: .4byte gSpritesetSpritesID
|
|
lbl_0802523c: .4byte gSpriteRNG
|
|
lbl_08025240:
|
|
ldrh r0, [r2, #4]
|
|
subs r0, #4
|
|
strh r0, [r2, #4]
|
|
b lbl_08025202
|
|
lbl_08025248:
|
|
adds r0, r6, #0
|
|
subs r0, #0x80
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
mov r2, ip
|
|
ldrh r1, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08025266
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r4, r1
|
|
b lbl_08025300
|
|
lbl_08025266:
|
|
ldr r2, lbl_0802526c @ =0xffffff00
|
|
adds r0, r4, r2
|
|
b lbl_08025300
|
|
.align 2, 0
|
|
lbl_0802526c: .4byte 0xffffff00
|
|
lbl_08025270:
|
|
adds r0, r6, #0
|
|
adds r0, #0x20
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
mov r0, ip
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08025290
|
|
ldr r1, lbl_0802528c @ =0xffffff00
|
|
adds r0, r4, r1
|
|
b lbl_08025300
|
|
.align 2, 0
|
|
lbl_0802528c: .4byte 0xffffff00
|
|
lbl_08025290:
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
adds r0, r4, r2
|
|
b lbl_08025300
|
|
lbl_08025298:
|
|
ldr r0, lbl_080252c0 @ =gSamusPhysics
|
|
adds r0, #0x70
|
|
ldrh r0, [r0]
|
|
mov r1, sb
|
|
ldrh r1, [r1, #0x14]
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
mov r2, sb
|
|
ldrh r4, [r2, #0x12]
|
|
movs r7, #0x1e
|
|
movs r5, #0x28
|
|
mov r1, ip
|
|
ldrh r0, [r1, #8]
|
|
cmp r0, #1
|
|
beq lbl_080252c4
|
|
cmp r0, #3
|
|
beq lbl_080252e0
|
|
b lbl_08025304
|
|
.align 2, 0
|
|
lbl_080252c0: .4byte gSamusPhysics
|
|
lbl_080252c4:
|
|
adds r0, r6, #0
|
|
subs r0, #0x20
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
mov r2, ip
|
|
ldrh r1, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_080252fc
|
|
adds r0, r4, #0
|
|
subs r0, #0x30
|
|
b lbl_08025300
|
|
lbl_080252e0:
|
|
adds r0, r6, #0
|
|
adds r0, #0x20
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
mov r0, ip
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_080252fc
|
|
adds r0, r4, #0
|
|
subs r0, #0x30
|
|
b lbl_08025300
|
|
lbl_080252fc:
|
|
adds r0, r4, #0
|
|
adds r0, #0x30
|
|
lbl_08025300:
|
|
lsls r0, r0, #0x10
|
|
lsrs r4, r0, #0x10
|
|
lbl_08025304:
|
|
mov r2, ip
|
|
ldrh r1, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
ands r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r3, r0, #0x10
|
|
cmp r3, #0
|
|
beq lbl_08025354
|
|
adds r2, #0x2d
|
|
ldrb r0, [r2]
|
|
cmp r0, #0
|
|
bne lbl_0802533c
|
|
mov r0, ip
|
|
ldrh r1, [r0, #4]
|
|
subs r0, r4, #4
|
|
cmp r1, r0
|
|
bgt lbl_08025368
|
|
mov r1, ip
|
|
adds r1, #0x2e
|
|
ldrb r0, [r1]
|
|
cmp r0, r5
|
|
bhs lbl_08025336
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
lbl_08025336:
|
|
ldrb r0, [r1]
|
|
lsrs r0, r0, #2
|
|
b lbl_08025348
|
|
lbl_0802533c:
|
|
subs r1, r0, #1
|
|
strb r1, [r2]
|
|
lsls r0, r1, #0x18
|
|
cmp r0, #0
|
|
beq lbl_080253ca
|
|
lsrs r0, r0, #0x1a
|
|
lbl_08025348:
|
|
mov r1, ip
|
|
ldrh r1, [r1, #4]
|
|
adds r0, r0, r1
|
|
mov r2, ip
|
|
strh r0, [r2, #4]
|
|
b lbl_080253d4
|
|
lbl_08025354:
|
|
mov r2, ip
|
|
adds r2, #0x2d
|
|
ldrb r0, [r2]
|
|
cmp r0, #0
|
|
bne lbl_08025396
|
|
mov r0, ip
|
|
ldrh r1, [r0, #4]
|
|
adds r0, r4, #4
|
|
cmp r1, r0
|
|
bge lbl_08025372
|
|
lbl_08025368:
|
|
mov r0, ip
|
|
adds r0, #0x2e
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
b lbl_080253d4
|
|
lbl_08025372:
|
|
mov r1, ip
|
|
adds r1, #0x2e
|
|
ldrb r0, [r1]
|
|
cmp r0, r5
|
|
bhs lbl_08025380
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
lbl_08025380:
|
|
ldrb r0, [r1]
|
|
lsrs r5, r0, #2
|
|
mov r1, ip
|
|
ldrh r0, [r1, #4]
|
|
subs r1, r0, r5
|
|
movs r0, #0x80
|
|
lsls r0, r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_080253b2
|
|
b lbl_080253c4
|
|
lbl_08025396:
|
|
subs r1, r0, #1
|
|
strb r1, [r2]
|
|
lsls r0, r1, #0x18
|
|
cmp r0, #0
|
|
beq lbl_080253ca
|
|
lsrs r5, r0, #0x1a
|
|
mov r1, ip
|
|
ldrh r0, [r1, #4]
|
|
subs r1, r0, r5
|
|
movs r0, #0x80
|
|
lsls r0, r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_080253c4
|
|
lbl_080253b2:
|
|
ldr r0, [sp]
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
strb r3, [r2]
|
|
mov r2, ip
|
|
strh r3, [r2, #4]
|
|
b lbl_080253d4
|
|
lbl_080253c4:
|
|
mov r0, ip
|
|
strh r1, [r0, #4]
|
|
b lbl_080253d4
|
|
lbl_080253ca:
|
|
ldr r0, [sp]
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
lbl_080253d4:
|
|
ldr r1, [sp]
|
|
cmp r1, #0
|
|
beq lbl_08025404
|
|
mov r2, ip
|
|
ldrh r0, [r2]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #2
|
|
adds r1, r2, #0
|
|
eors r0, r1
|
|
mov r1, ip
|
|
strh r0, [r1]
|
|
adds r1, #0x2e
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
mov r2, ip
|
|
ldrh r0, [r2, #8]
|
|
adds r0, #1
|
|
strh r0, [r2, #8]
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #3
|
|
bls lbl_08025404
|
|
movs r0, #0
|
|
strh r0, [r2, #8]
|
|
lbl_08025404:
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
mov r2, ip
|
|
ldrh r1, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
ands r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r3, r0, #0x10
|
|
cmp r3, #0
|
|
beq lbl_08025462
|
|
adds r2, #0x2c
|
|
ldrb r0, [r2]
|
|
cmp r0, #0
|
|
bne lbl_0802544a
|
|
mov r0, ip
|
|
ldrh r1, [r0, #2]
|
|
subs r0, r6, #4
|
|
cmp r1, r0
|
|
ble lbl_08025436
|
|
mov r0, ip
|
|
adds r0, #0x2f
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
b lbl_080254e2
|
|
lbl_08025436:
|
|
mov r1, ip
|
|
adds r1, #0x2f
|
|
ldrb r0, [r1]
|
|
cmp r0, r7
|
|
bhs lbl_08025444
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
lbl_08025444:
|
|
ldrb r0, [r1]
|
|
lsrs r0, r0, #2
|
|
b lbl_08025456
|
|
lbl_0802544a:
|
|
subs r1, r0, #1
|
|
strb r1, [r2]
|
|
lsls r0, r1, #0x18
|
|
cmp r0, #0
|
|
beq lbl_080254e8
|
|
lsrs r0, r0, #0x1a
|
|
lbl_08025456:
|
|
mov r1, ip
|
|
ldrh r1, [r1, #2]
|
|
adds r0, r0, r1
|
|
mov r2, ip
|
|
strh r0, [r2, #2]
|
|
b lbl_080254e2
|
|
lbl_08025462:
|
|
mov r4, ip
|
|
adds r4, #0x2c
|
|
ldrb r0, [r4]
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
bne lbl_080254b0
|
|
mov r0, ip
|
|
ldrh r1, [r0, #2]
|
|
adds r0, r6, #4
|
|
cmp r1, r0
|
|
bge lbl_08025482
|
|
mov r0, ip
|
|
adds r0, #0x2f
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
b lbl_080254e2
|
|
lbl_08025482:
|
|
mov r1, ip
|
|
adds r1, #0x2f
|
|
ldrb r0, [r1]
|
|
cmp r0, r7
|
|
bhs lbl_08025490
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
lbl_08025490:
|
|
ldrb r0, [r1]
|
|
lsrs r5, r0, #2
|
|
mov r1, ip
|
|
ldrh r0, [r1, #2]
|
|
subs r1, r0, r5
|
|
movs r0, #0x80
|
|
lsls r0, r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_080254d8
|
|
movs r0, #1
|
|
str r0, [sp]
|
|
strb r2, [r4]
|
|
mov r1, ip
|
|
strh r2, [r1, #2]
|
|
b lbl_080254e2
|
|
lbl_080254b0:
|
|
subs r1, r0, #1
|
|
strb r1, [r4]
|
|
lsls r0, r1, #0x18
|
|
cmp r0, #0
|
|
beq lbl_080254de
|
|
lsrs r5, r0, #0x1a
|
|
mov r1, ip
|
|
ldrh r0, [r1, #2]
|
|
subs r1, r0, r5
|
|
movs r0, #0x80
|
|
lsls r0, r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_080254d8
|
|
movs r2, #1
|
|
str r2, [sp]
|
|
strb r3, [r4]
|
|
mov r0, ip
|
|
strh r3, [r0, #2]
|
|
b lbl_080254e2
|
|
lbl_080254d8:
|
|
mov r2, ip
|
|
strh r1, [r2, #2]
|
|
b lbl_080254e2
|
|
lbl_080254de:
|
|
movs r0, #1
|
|
str r0, [sp]
|
|
lbl_080254e2:
|
|
ldr r1, [sp]
|
|
cmp r1, #0
|
|
beq lbl_080254fe
|
|
lbl_080254e8:
|
|
mov r2, ip
|
|
ldrh r0, [r2]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #3
|
|
adds r1, r2, #0
|
|
eors r0, r1
|
|
mov r1, ip
|
|
strh r0, [r1]
|
|
adds r1, #0x2f
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
lbl_080254fe:
|
|
mov r2, ip
|
|
ldrh r0, [r2, #0x12]
|
|
subs r0, #1
|
|
strh r0, [r2, #0x12]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne lbl_08025522
|
|
movs r0, #0x20
|
|
strh r0, [r2, #0x12]
|
|
ldrh r1, [r2]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08025522
|
|
movs r0, #0xaf
|
|
lsls r0, r0, #1
|
|
bl SoundPlayNotAlreadyPlaying
|
|
lbl_08025522:
|
|
add sp, #8
|
|
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
|
|
|
|
thumb_func_start Hive
|
|
Hive: @ 0x08025534
|
|
push {r4, r5, lr}
|
|
ldr r4, lbl_0802555c @ =gCurrentSprite
|
|
adds r5, r4, #0
|
|
adds r5, #0x30
|
|
ldrb r0, [r5]
|
|
cmp r0, #0
|
|
beq lbl_08025560
|
|
bl SpriteUtilUpdateFreezeTimer
|
|
adds r0, r4, #0
|
|
adds r0, #0x23
|
|
ldrb r1, [r0]
|
|
movs r0, #0x11
|
|
bl SpriteUtilUpdateSecondarySpriteFreezeTimerOfCurrent
|
|
ldrb r1, [r5]
|
|
adds r0, r4, #0
|
|
adds r0, #0x2c
|
|
strb r1, [r0]
|
|
b lbl_080255b2
|
|
.align 2, 0
|
|
lbl_0802555c: .4byte gCurrentSprite
|
|
lbl_08025560:
|
|
bl SpriteUtilIsSpriteStunned
|
|
cmp r0, #0
|
|
bne lbl_080255b2
|
|
adds r0, r4, #0
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x25
|
|
beq lbl_080255a2
|
|
cmp r0, #0x25
|
|
bgt lbl_0802558a
|
|
cmp r0, #9
|
|
beq lbl_08025596
|
|
cmp r0, #9
|
|
bgt lbl_08025584
|
|
cmp r0, #0
|
|
beq lbl_08025590
|
|
b lbl_080255ae
|
|
lbl_08025584:
|
|
cmp r0, #0x23
|
|
beq lbl_0802559c
|
|
b lbl_080255ae
|
|
lbl_0802558a:
|
|
cmp r0, #0x67
|
|
beq lbl_080255a8
|
|
b lbl_080255ae
|
|
lbl_08025590:
|
|
bl HiveInit
|
|
b lbl_080255b2
|
|
lbl_08025596:
|
|
bl HivePhase1
|
|
b lbl_080255b2
|
|
lbl_0802559c:
|
|
bl HivePhase2
|
|
b lbl_080255b2
|
|
lbl_080255a2:
|
|
bl HivePhase3
|
|
b lbl_080255b2
|
|
lbl_080255a8:
|
|
bl HiveIgnoreSamusCollision
|
|
b lbl_080255b2
|
|
lbl_080255ae:
|
|
bl HiveDying
|
|
lbl_080255b2:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start HiveRoots
|
|
HiveRoots: @ 0x080255b8
|
|
push {r4, r5, r6, lr}
|
|
ldr r2, lbl_08025614 @ =gCurrentSprite
|
|
adds r0, r2, #0
|
|
adds r0, #0x23
|
|
ldrb r4, [r0]
|
|
adds r1, r2, #0
|
|
adds r1, #0x26
|
|
movs r5, #0
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
ldr r1, lbl_08025618 @ =gSpriteData
|
|
lsls r0, r4, #3
|
|
subs r0, r0, r4
|
|
lsls r0, r0, #3
|
|
adds r3, r0, r1
|
|
ldrb r0, [r3, #0x1d]
|
|
mov ip, r2
|
|
adds r6, r1, #0
|
|
cmp r0, #0x4b
|
|
bne lbl_08025620
|
|
adds r0, r3, #0
|
|
adds r0, #0x20
|
|
ldrb r1, [r0]
|
|
mov r0, ip
|
|
adds r0, #0x20
|
|
strb r1, [r0]
|
|
ldr r2, lbl_0802561c @ =0x082b0d68
|
|
ldrb r1, [r3, #0x1d]
|
|
lsls r0, r1, #3
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r3, #0x14]
|
|
lsrs r0, r0, #1
|
|
cmp r1, r0
|
|
bhs lbl_08025626
|
|
adds r0, r3, #0
|
|
adds r0, #0x30
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne lbl_08025626
|
|
mov r0, ip
|
|
strh r5, [r0]
|
|
b lbl_0802565c
|
|
.align 2, 0
|
|
lbl_08025614: .4byte gCurrentSprite
|
|
lbl_08025618: .4byte gSpriteData
|
|
lbl_0802561c: .4byte 0x082b0d68
|
|
lbl_08025620:
|
|
mov r1, ip
|
|
strh r5, [r1]
|
|
b lbl_0802565c
|
|
lbl_08025626:
|
|
lsls r0, r4, #3
|
|
subs r0, r0, r4
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r6
|
|
ldrh r0, [r0]
|
|
cmp r0, #0
|
|
bne lbl_0802563a
|
|
mov r1, ip
|
|
strh r0, [r1]
|
|
b lbl_0802565c
|
|
lbl_0802563a:
|
|
mov r0, ip
|
|
adds r0, #0x30
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq lbl_0802564a
|
|
bl SpriteUtilUpdateFreezeTimer
|
|
b lbl_0802565c
|
|
lbl_0802564a:
|
|
mov r0, ip
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne lbl_08025658
|
|
bl HiveRootsInit
|
|
lbl_08025658:
|
|
bl HiveRootsMove
|
|
lbl_0802565c:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start Mellow
|
|
Mellow: @ 0x08025664
|
|
push {r4, lr}
|
|
sub sp, #4
|
|
ldr r4, lbl_080256a0 @ =gCurrentSprite
|
|
adds r2, r4, #0
|
|
adds r2, #0x32
|
|
ldrb r1, [r2]
|
|
movs r3, #2
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08025690
|
|
movs r0, #0xfd
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldrh r1, [r4]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08025690
|
|
ldr r0, lbl_080256a4 @ =0x0000015f
|
|
bl SoundPlayNotAlreadyPlaying
|
|
lbl_08025690:
|
|
adds r0, r4, #0
|
|
adds r0, #0x30
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq lbl_080256a8
|
|
bl SpriteUtilUpdateFreezeTimer
|
|
b lbl_080257ae
|
|
.align 2, 0
|
|
lbl_080256a0: .4byte gCurrentSprite
|
|
lbl_080256a4: .4byte 0x0000015f
|
|
lbl_080256a8:
|
|
adds r0, r4, #0
|
|
adds r0, #0x2b
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
adds r1, r4, #0
|
|
adds r1, #0x24
|
|
cmp r0, #9
|
|
bls lbl_080256cc
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x61
|
|
bhi lbl_080256cc
|
|
ldrb r0, [r4, #0x1c]
|
|
cmp r0, #0
|
|
beq lbl_080257ae
|
|
subs r0, #1
|
|
strb r0, [r4, #0x1c]
|
|
b lbl_080257ae
|
|
lbl_080256cc:
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x25
|
|
bhi lbl_0802579e
|
|
lsls r0, r0, #2
|
|
ldr r1, lbl_080256dc @ =lbl_080256e0
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
lbl_080256dc: .4byte lbl_080256e0
|
|
lbl_080256e0: @ jump table
|
|
.4byte lbl_08025778 @ case 0
|
|
.4byte lbl_0802579e @ case 1
|
|
.4byte lbl_0802579e @ case 2
|
|
.4byte lbl_0802579e @ case 3
|
|
.4byte lbl_0802579e @ case 4
|
|
.4byte lbl_0802579e @ case 5
|
|
.4byte lbl_0802579e @ case 6
|
|
.4byte lbl_0802579e @ case 7
|
|
.4byte lbl_0802579e @ case 8
|
|
.4byte lbl_08025780 @ case 9
|
|
.4byte lbl_0802579e @ case 10
|
|
.4byte lbl_0802579e @ case 11
|
|
.4byte lbl_0802579e @ case 12
|
|
.4byte lbl_0802579e @ case 13
|
|
.4byte lbl_0802579e @ case 14
|
|
.4byte lbl_0802579e @ case 15
|
|
.4byte lbl_0802579e @ case 16
|
|
.4byte lbl_0802579e @ case 17
|
|
.4byte lbl_0802579e @ case 18
|
|
.4byte lbl_0802579e @ case 19
|
|
.4byte lbl_0802579e @ case 20
|
|
.4byte lbl_0802579e @ case 21
|
|
.4byte lbl_0802579e @ case 22
|
|
.4byte lbl_0802579e @ case 23
|
|
.4byte lbl_0802579e @ case 24
|
|
.4byte lbl_0802579e @ case 25
|
|
.4byte lbl_0802579e @ case 26
|
|
.4byte lbl_0802579e @ case 27
|
|
.4byte lbl_0802579e @ case 28
|
|
.4byte lbl_0802579e @ case 29
|
|
.4byte lbl_0802579e @ case 30
|
|
.4byte lbl_0802579e @ case 31
|
|
.4byte lbl_0802579e @ case 32
|
|
.4byte lbl_0802579e @ case 33
|
|
.4byte lbl_08025788 @ case 34
|
|
.4byte lbl_0802578e @ case 35
|
|
.4byte lbl_0802579e @ case 36
|
|
.4byte lbl_08025796 @ case 37
|
|
lbl_08025778:
|
|
adds r0, r4, #0
|
|
bl MellowInit
|
|
b lbl_080257ae
|
|
lbl_08025780:
|
|
adds r0, r4, #0
|
|
bl MellowIdle
|
|
b lbl_080257ae
|
|
lbl_08025788:
|
|
adds r0, r4, #0
|
|
bl MellowSamusDetectedInit
|
|
lbl_0802578e:
|
|
adds r0, r4, #0
|
|
bl MellowMove
|
|
b lbl_080257ae
|
|
lbl_08025796:
|
|
adds r0, r4, #0
|
|
bl MellowFleeing
|
|
b lbl_080257ae
|
|
lbl_0802579e:
|
|
ldrh r1, [r4, #2]
|
|
ldrh r2, [r4, #4]
|
|
movs r0, #0x1f
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
movs r3, #1
|
|
bl SpriteUtilSpriteDeath
|
|
lbl_080257ae:
|
|
add sp, #4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start MellowSwarm
|
|
MellowSwarm: @ 0x080257b8
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
movs r6, #0
|
|
ldr r1, lbl_080257e4 @ =gCurrentSprite
|
|
adds r0, r1, #0
|
|
adds r0, #0x26
|
|
movs r5, #1
|
|
strb r5, [r0]
|
|
adds r7, r1, #0
|
|
adds r7, #0x24
|
|
ldrb r0, [r7]
|
|
adds r4, r1, #0
|
|
cmp r0, #0
|
|
bne lbl_080258b6
|
|
movs r0, #3
|
|
movs r1, #0x2c
|
|
bl EventFunction
|
|
cmp r0, #0
|
|
beq lbl_080257e8
|
|
strh r6, [r4]
|
|
b lbl_0802598c
|
|
.align 2, 0
|
|
lbl_080257e4: .4byte gCurrentSprite
|
|
lbl_080257e8:
|
|
ldrh r1, [r4]
|
|
ldr r2, lbl_08025858 @ =0x00008004
|
|
adds r0, r2, #0
|
|
movs r2, #0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
ldr r1, lbl_0802585c @ =0x0000fffc
|
|
strh r1, [r4, #0xa]
|
|
movs r0, #4
|
|
strh r0, [r4, #0xc]
|
|
strh r1, [r4, #0xe]
|
|
strh r0, [r4, #0x10]
|
|
adds r0, r4, #0
|
|
adds r0, #0x27
|
|
strb r5, [r0]
|
|
adds r0, #1
|
|
strb r5, [r0]
|
|
adds r0, #1
|
|
strb r5, [r0]
|
|
subs r0, #4
|
|
strb r2, [r0]
|
|
ldr r0, lbl_08025860 @ =0x082da88c
|
|
str r0, [r4, #0x18]
|
|
strh r6, [r4, #0x16]
|
|
strb r2, [r4, #0x1c]
|
|
movs r3, #9
|
|
strb r3, [r7]
|
|
ldr r0, lbl_08025864 @ =gSamusData
|
|
ldrh r1, [r0, #0x12]
|
|
lsrs r1, r1, #2
|
|
ldr r0, lbl_08025868 @ =gBG1XPosition
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #2
|
|
subs r1, r1, r0
|
|
cmp r1, #0x78
|
|
ble lbl_08025838
|
|
ldrh r0, [r4]
|
|
movs r1, #0x40
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
lbl_08025838:
|
|
movs r0, #0xf0
|
|
strh r0, [r4, #6]
|
|
ldrb r0, [r4, #0x1d]
|
|
cmp r0, #0x85
|
|
bne lbl_080258ac
|
|
ldr r0, lbl_0802586c @ =gEquipment
|
|
ldrh r1, [r0, #6]
|
|
ldr r0, lbl_08025870 @ =0x0000018f
|
|
cmp r1, r0
|
|
bls lbl_08025874
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #0xf
|
|
strb r0, [r1]
|
|
b lbl_0802598c
|
|
.align 2, 0
|
|
lbl_08025858: .4byte 0x00008004
|
|
lbl_0802585c: .4byte 0x0000fffc
|
|
lbl_08025860: .4byte 0x082da88c
|
|
lbl_08025864: .4byte gSamusData
|
|
lbl_08025868: .4byte gBG1XPosition
|
|
lbl_0802586c: .4byte gEquipment
|
|
lbl_08025870: .4byte 0x0000018f
|
|
lbl_08025874:
|
|
ldr r0, lbl_08025884 @ =0x0000012b
|
|
cmp r1, r0
|
|
bls lbl_08025888
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #0xc
|
|
strb r0, [r1]
|
|
b lbl_0802598c
|
|
.align 2, 0
|
|
lbl_08025884: .4byte 0x0000012b
|
|
lbl_08025888:
|
|
cmp r1, #0xc7
|
|
bls lbl_08025894
|
|
adds r0, r4, #0
|
|
adds r0, #0x2e
|
|
strb r3, [r0]
|
|
b lbl_0802598c
|
|
lbl_08025894:
|
|
cmp r1, #0x63
|
|
bls lbl_080258a2
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
b lbl_0802598c
|
|
lbl_080258a2:
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
b lbl_0802598c
|
|
lbl_080258ac:
|
|
adds r1, r4, #0
|
|
adds r1, #0x2e
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
b lbl_0802598c
|
|
lbl_080258b6:
|
|
ldrh r1, [r4]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_080258ce
|
|
ldrh r0, [r4, #6]
|
|
cmp r0, #0
|
|
beq lbl_080258ce
|
|
subs r0, #1
|
|
strh r0, [r4, #6]
|
|
b lbl_0802598c
|
|
lbl_080258ce:
|
|
movs r7, #0x12
|
|
ldr r2, lbl_08025920 @ =gSpriteData
|
|
movs r1, #0xa8
|
|
lsls r1, r1, #3
|
|
adds r0, r2, r1
|
|
cmp r2, r0
|
|
bhs lbl_08025900
|
|
movs r5, #1
|
|
adds r3, r0, #0
|
|
lbl_080258e0:
|
|
ldrh r1, [r2]
|
|
adds r0, r5, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_080258fa
|
|
adds r0, r2, #0
|
|
adds r0, #0x25
|
|
ldrb r0, [r0]
|
|
cmp r0, r7
|
|
bne lbl_080258fa
|
|
adds r0, r6, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
lbl_080258fa:
|
|
adds r2, #0x38
|
|
cmp r2, r3
|
|
blo lbl_080258e0
|
|
lbl_08025900:
|
|
ldrh r1, [r4]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #3
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne lbl_08025924
|
|
adds r0, r4, #0
|
|
adds r0, #0x2e
|
|
ldrb r0, [r0]
|
|
cmp r6, r0
|
|
blo lbl_0802592c
|
|
adds r0, r2, #0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
b lbl_0802598c
|
|
.align 2, 0
|
|
lbl_08025920: .4byte gSpriteData
|
|
lbl_08025924:
|
|
cmp r6, #0x13
|
|
bhi lbl_0802598c
|
|
movs r0, #0xf0
|
|
strh r0, [r4, #6]
|
|
lbl_0802592c:
|
|
ldrh r1, [r4]
|
|
movs r0, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq lbl_08025950
|
|
ldr r0, lbl_08025948 @ =gSamusData
|
|
ldr r2, lbl_0802594c @ =gSpriteRNG
|
|
ldrb r1, [r2]
|
|
lsls r1, r1, #5
|
|
ldrh r0, [r0, #0x12]
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #0x10
|
|
lsrs r5, r1, #0x10
|
|
b lbl_08025960
|
|
.align 2, 0
|
|
lbl_08025948: .4byte gSamusData
|
|
lbl_0802594c: .4byte gSpriteRNG
|
|
lbl_08025950:
|
|
ldr r0, lbl_08025994 @ =gSamusData
|
|
ldr r2, lbl_08025998 @ =gSpriteRNG
|
|
ldrb r1, [r2]
|
|
lsls r1, r1, #5
|
|
ldrh r0, [r0, #0x12]
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
lbl_08025960:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #8
|
|
ands r0, r5
|
|
cmp r0, #0
|
|
beq lbl_0802596c
|
|
movs r5, #0
|
|
lbl_0802596c:
|
|
ldr r1, lbl_0802599c @ =gBG1YPosition
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, #0x10
|
|
ldrh r3, [r1]
|
|
subs r3, r3, r0
|
|
lsls r3, r3, #0x10
|
|
lsrs r3, r3, #0x10
|
|
ldrb r2, [r4, #0x1f]
|
|
str r5, [sp]
|
|
movs r0, #0
|
|
str r0, [sp, #4]
|
|
movs r0, #0x4a
|
|
movs r1, #0x88
|
|
bl SpriteSpawnPrimary
|
|
lbl_0802598c:
|
|
add sp, #8
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
lbl_08025994: .4byte gSamusData
|
|
lbl_08025998: .4byte gSpriteRNG
|
|
lbl_0802599c: .4byte gBG1YPosition
|