mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
* sprite.h: Background.unk14/.unk16 -> .xTiles/.yTiles * Background.unk2A -> .paletteOffset * Background.unk26/.unk28 ->targetTilesX/Y * Remove seemingly unused Background.unk2D * Background.unk10 -> .layout * Background.tilesVram -> .layoutVram * Some value documentation in camera.c * gUnknown_080D5864 -> gStageCameraBgTemplates * Various variable and function names * Various var and func renames * Document stage goal bonus points vars and a proc * Match sub_80213C0 and sub_8021490 * Document a few game_6 procedures and vars * (Basically) match InitializePlayer * Progress on sub_802195C. Remove 'move' var in sub_80213C0 * Match sub_802195C using sub_8029BB8 as base * Match sub_8021A34 and sub_8021B08 * Match sub_8021BE0 * Progress on sub_8021C4C * Match sub_8021C4C * Some cleanup * Match sub_8021DB8 * Match sub_8021EE4 and sub_802203C * Match sub_8022190 * Match sub_8022218, sub_8022284 and sub_8022318 * Match sub_80223BC, sub_80224DC, sub_80225E8, sub_8022710, sub_8022838 * Rename game_6_2 -> game_6_3 * Split game_6.s * Start sub_80228C0 * Progress on sub_80228C0 * Match sub_80228C0, sub_80229EC, sub_8022B18 and sub_8022C44 * Almost match sub_8022D6C * Add player_unknown_0.h * More progress on sub_8022D6C * Progress on sub_8022D6C * Move sub_8022D6C into non-matching * Cleanup by Ollie Co-authored-by: Oliver Bell <freshollie@gmail.com> * Document some gWater names * Make ifs more readable --------- Co-authored-by: Oliver Bell <freshollie@gmail.com>
4886 lines
84 KiB
ArmAsm
4886 lines
84 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.section .rodata
|
|
|
|
.global gUnknown_080D8888
|
|
gUnknown_080D8888:
|
|
.incbin "baserom.gba", 0x000D8888, 0x2
|
|
|
|
.global gUnknown_080D888A
|
|
gUnknown_080D888A:
|
|
.incbin "baserom.gba", 0x000D888A, 0x6
|
|
|
|
.global gUnknown_080D8890
|
|
gUnknown_080D8890:
|
|
.incbin "baserom.gba", 0x000D8890, 0x20
|
|
|
|
.global gUnknown_080D88B0
|
|
gUnknown_080D88B0:
|
|
.incbin "baserom.gba", 0x000D88B0, 0x40
|
|
|
|
.text
|
|
.syntax unified
|
|
.arm
|
|
|
|
thumb_func_start CreateSuperEggRoboZ
|
|
CreateSuperEggRoboZ: @ 0x0804A6C8
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x50
|
|
ldr r1, _0804A764 @ =gBgCntRegs
|
|
movs r2, #0
|
|
movs r3, #0
|
|
ldr r0, _0804A768 @ =0x0000D40E
|
|
strh r0, [r1]
|
|
ldr r0, _0804A76C @ =0x00001F01
|
|
strh r0, [r1, #4]
|
|
ldr r0, _0804A770 @ =gBgScrollRegs
|
|
strh r3, [r0]
|
|
strh r3, [r0, #2]
|
|
ldr r0, _0804A774 @ =gUnknown_03004D80
|
|
strb r2, [r0]
|
|
ldr r1, _0804A778 @ =gUnknown_03002280
|
|
strb r2, [r1]
|
|
strb r2, [r1, #1]
|
|
movs r0, #0xff
|
|
strb r0, [r1, #2]
|
|
movs r0, #0x40
|
|
strb r0, [r1, #3]
|
|
ldr r2, _0804A77C @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xe
|
|
orrs r0, r1
|
|
str r0, [r2, #0x20]
|
|
bl sub_8039ED4
|
|
ldr r1, _0804A780 @ =gPseudoRandom
|
|
ldr r0, _0804A784 @ =gStageTime
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r1, _0804A788 @ =gUnknown_03005AF0
|
|
ldr r0, [r1, #0x1c]
|
|
ldr r3, _0804A78C @ =0xFFFFCFFF
|
|
ands r0, r3
|
|
movs r2, #0x80
|
|
lsls r2, r2, #5
|
|
orrs r0, r2
|
|
str r0, [r1, #0x1c]
|
|
ldr r1, _0804A790 @ =gUnknown_03005AA0
|
|
ldr r0, [r1, #0x1c]
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
str r0, [r1, #0x1c]
|
|
ldr r0, _0804A794 @ =Task_SuperEggRoboZMain
|
|
movs r1, #0xa4
|
|
lsls r1, r1, #1
|
|
movs r2, #0x80
|
|
lsls r2, r2, #7
|
|
ldr r3, _0804A798 @ =TaskDestructor_SuperEggRoboZMain
|
|
str r3, [sp]
|
|
movs r3, #0
|
|
bl TaskCreate
|
|
ldr r1, _0804A79C @ =gActiveBossTask
|
|
str r0, [r1]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r7, r1, r0
|
|
adds r0, #0x48
|
|
adds r0, r0, r1
|
|
mov sb, r0
|
|
ldr r0, _0804A7A0 @ =gDifficultyLevel
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0804A7A4
|
|
movs r0, #6
|
|
strb r0, [r7, #8]
|
|
movs r0, #4
|
|
b _0804A7AA
|
|
.align 2, 0
|
|
_0804A764: .4byte gBgCntRegs
|
|
_0804A768: .4byte 0x0000D40E
|
|
_0804A76C: .4byte 0x00001F01
|
|
_0804A770: .4byte gBgScrollRegs
|
|
_0804A774: .4byte gUnknown_03004D80
|
|
_0804A778: .4byte gUnknown_03002280
|
|
_0804A77C: .4byte gPlayer
|
|
_0804A780: .4byte gPseudoRandom
|
|
_0804A784: .4byte gStageTime
|
|
_0804A788: .4byte gUnknown_03005AF0
|
|
_0804A78C: .4byte 0xFFFFCFFF
|
|
_0804A790: .4byte gUnknown_03005AA0
|
|
_0804A794: .4byte Task_SuperEggRoboZMain
|
|
_0804A798: .4byte TaskDestructor_SuperEggRoboZMain
|
|
_0804A79C: .4byte gActiveBossTask
|
|
_0804A7A0: .4byte gDifficultyLevel
|
|
_0804A7A4:
|
|
movs r0, #8
|
|
strb r0, [r7, #8]
|
|
movs r0, #6
|
|
_0804A7AA:
|
|
strb r0, [r7, #9]
|
|
strb r0, [r7, #0xa]
|
|
ldr r0, _0804A8B0 @ =0x00A77C00
|
|
str r0, [r7]
|
|
movs r0, #0xb9
|
|
lsls r0, r0, #9
|
|
str r0, [r7, #4]
|
|
movs r1, #0
|
|
movs r0, #0xb4
|
|
lsls r0, r0, #1
|
|
strh r0, [r7, #0xe]
|
|
adds r0, #0x98
|
|
strh r0, [r7, #0x10]
|
|
strb r1, [r7, #0xb]
|
|
strb r1, [r7, #0xc]
|
|
movs r0, #0x1e
|
|
str r0, [r7, #0x14]
|
|
movs r0, #0x20
|
|
bl VramMalloc
|
|
str r0, [r7, #0x44]
|
|
adds r1, r7, #0
|
|
bl sub_8049D20
|
|
movs r4, #0
|
|
adds r1, r7, #0
|
|
adds r1, #0x28
|
|
str r1, [sp, #0x24]
|
|
adds r2, r7, #0
|
|
adds r2, #0x2c
|
|
str r2, [sp, #0x28]
|
|
adds r6, r7, #0
|
|
adds r6, #0x18
|
|
str r6, [sp, #0x18]
|
|
adds r0, r7, #0
|
|
adds r0, #0x1c
|
|
str r0, [sp, #0x1c]
|
|
adds r1, #0x14
|
|
str r1, [sp, #0x38]
|
|
adds r2, #4
|
|
str r2, [sp, #0x2c]
|
|
adds r6, #0x26
|
|
str r6, [sp, #0x3c]
|
|
adds r0, #0x24
|
|
str r0, [sp, #0x40]
|
|
adds r1, #6
|
|
str r1, [sp, #0x44]
|
|
adds r2, #4
|
|
str r2, [sp, #0x30]
|
|
subs r6, #8
|
|
str r6, [sp, #0x34]
|
|
movs r0, #0x99
|
|
lsls r0, r0, #1
|
|
adds r0, r7, r0
|
|
str r0, [sp, #0x20]
|
|
adds r1, #0x12
|
|
str r1, [sp, #0x48]
|
|
adds r2, #0x40
|
|
str r2, [sp, #8]
|
|
adds r6, #0x3f
|
|
str r6, [sp, #0xc]
|
|
adds r0, r7, #0
|
|
adds r0, #0x76
|
|
str r0, [sp, #0x10]
|
|
adds r1, #0x25
|
|
str r1, [sp, #0x14]
|
|
movs r3, #0
|
|
movs r5, #0
|
|
_0804A832:
|
|
lsls r2, r4, #1
|
|
ldr r6, [sp, #0x24]
|
|
adds r0, r6, r2
|
|
movs r1, #0x80
|
|
lsls r1, r1, #2
|
|
strh r1, [r0]
|
|
ldr r6, [sp, #0x28]
|
|
adds r0, r6, r2
|
|
strh r1, [r0]
|
|
lsls r1, r4, #3
|
|
ldr r6, [sp, #0x18]
|
|
adds r0, r6, r1
|
|
str r5, [r0]
|
|
ldr r0, [sp, #0x1c]
|
|
adds r1, r0, r1
|
|
str r5, [r1]
|
|
ldr r1, [sp, #0x38]
|
|
adds r0, r1, r4
|
|
strb r3, [r0]
|
|
ldr r6, [sp, #0x2c]
|
|
adds r1, r6, r2
|
|
adds r2, r2, r4
|
|
lsls r0, r2, #4
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #3
|
|
movs r2, #0xb4
|
|
lsls r2, r2, #1
|
|
adds r0, r0, r2
|
|
strh r0, [r1]
|
|
ldr r6, [sp, #0x3c]
|
|
adds r0, r6, r4
|
|
strb r3, [r0]
|
|
ldr r1, [sp, #0x40]
|
|
adds r0, r1, r4
|
|
strb r3, [r0]
|
|
ldr r2, [sp, #0x44]
|
|
adds r0, r2, r4
|
|
strb r3, [r0]
|
|
lsls r1, r4, #2
|
|
ldr r6, [sp, #0x30]
|
|
adds r0, r6, r1
|
|
strh r5, [r0]
|
|
ldr r2, [sp, #0x34]
|
|
adds r0, r2, r1
|
|
strh r5, [r0]
|
|
lsls r0, r4, #4
|
|
subs r0, r0, r4
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r6, r7, r0
|
|
strh r5, [r6, #0x16]
|
|
strh r5, [r6, #0x18]
|
|
mov r8, r1
|
|
cmp r4, #0
|
|
beq _0804A8B4
|
|
movs r0, #0x40
|
|
str r3, [sp, #0x4c]
|
|
bl VramMalloc
|
|
str r0, [r6, #4]
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804A8C0
|
|
.align 2, 0
|
|
_0804A8B0: .4byte 0x00A77C00
|
|
_0804A8B4:
|
|
movs r0, #0x40
|
|
str r3, [sp, #0x4c]
|
|
bl VramMalloc
|
|
str r0, [r6, #4]
|
|
ldr r0, _0804A9BC @ =0x000002BF
|
|
_0804A8C0:
|
|
strh r0, [r6, #0xa]
|
|
adds r0, r6, #0
|
|
adds r0, #0x20
|
|
ldr r3, [sp, #0x4c]
|
|
strb r3, [r0]
|
|
mov r0, r8
|
|
adds r0, #0x1b
|
|
lsls r0, r0, #6
|
|
strh r0, [r6, #0x1a]
|
|
strh r5, [r6, #8]
|
|
strh r5, [r6, #0x14]
|
|
strh r5, [r6, #0x1c]
|
|
adds r1, r6, #0
|
|
adds r1, #0x21
|
|
movs r2, #1
|
|
rsbs r2, r2, #0
|
|
mov r0, sp
|
|
strb r2, [r0, #4]
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r6, #0
|
|
adds r0, #0x22
|
|
movs r1, #0x10
|
|
mov sl, r1
|
|
mov r2, sl
|
|
strb r2, [r0]
|
|
adds r0, #3
|
|
strb r3, [r0]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
mov r8, r0
|
|
str r0, [r6, #0x28]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #5
|
|
str r0, [r6, #0x10]
|
|
adds r0, r4, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #1
|
|
bls _0804A832
|
|
movs r5, #0
|
|
movs r4, #0
|
|
mov r1, sb
|
|
strh r4, [r1]
|
|
strh r4, [r1, #4]
|
|
movs r0, #2
|
|
strh r0, [r1, #2]
|
|
strh r4, [r1, #6]
|
|
ldr r0, _0804A9C0 @ =0x000037BF
|
|
strh r0, [r1, #8]
|
|
strh r4, [r1, #0xa]
|
|
movs r2, #0x84
|
|
lsls r2, r2, #1
|
|
adds r0, r7, r2
|
|
ldr r1, _0804A9C4 @ =0x0600C000
|
|
str r1, [r0, #4]
|
|
strh r4, [r0, #0xa]
|
|
ldr r1, _0804A9C8 @ =0x0600A000
|
|
str r1, [r0, #0xc]
|
|
strh r4, [r0, #0x18]
|
|
strh r4, [r0, #0x1a]
|
|
movs r1, #0xb8
|
|
lsls r1, r1, #1
|
|
strh r1, [r0, #0x1c]
|
|
strh r4, [r0, #0x1e]
|
|
strh r4, [r0, #0x20]
|
|
strh r4, [r0, #0x22]
|
|
strh r4, [r0, #0x24]
|
|
movs r1, #0x1e
|
|
strh r1, [r0, #0x26]
|
|
movs r1, #0x14
|
|
strh r1, [r0, #0x28]
|
|
ldr r6, [sp, #0x20]
|
|
strb r5, [r6]
|
|
strh r4, [r0, #0x2e]
|
|
bl InitBackground
|
|
ldr r6, [sp, #0x48]
|
|
strh r4, [r6, #0x16]
|
|
strh r4, [r6, #0x18]
|
|
movs r0, #0x40
|
|
bl VramMalloc
|
|
str r0, [r6, #4]
|
|
ldr r0, _0804A9CC @ =0x000002C1
|
|
strh r0, [r6, #0xa]
|
|
ldr r0, [sp, #8]
|
|
strb r5, [r0]
|
|
movs r0, #0xf8
|
|
lsls r0, r0, #3
|
|
strh r0, [r6, #0x1a]
|
|
strh r4, [r6, #8]
|
|
strh r4, [r6, #0x14]
|
|
strh r4, [r6, #0x1c]
|
|
ldr r1, [sp, #0xc]
|
|
ldrb r0, [r1]
|
|
mov r2, sp
|
|
ldrb r2, [r2, #4]
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
mov r1, sl
|
|
ldr r0, [sp, #0x10]
|
|
strb r1, [r0]
|
|
ldr r2, [sp, #0x14]
|
|
strb r5, [r2]
|
|
mov r0, r8
|
|
str r0, [r6, #0x28]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #6
|
|
str r0, [r6, #0x10]
|
|
ldr r1, _0804A9D0 @ =gUnknown_030054A8
|
|
movs r0, #0xc8
|
|
strh r0, [r1, #6]
|
|
ldr r2, _0804A9D4 @ =gUnknown_03005424
|
|
ldrh r0, [r2]
|
|
movs r1, #0x20
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
add sp, #0x50
|
|
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
|
|
_0804A9BC: .4byte 0x000002BF
|
|
_0804A9C0: .4byte 0x000037BF
|
|
_0804A9C4: .4byte 0x0600C000
|
|
_0804A9C8: .4byte 0x0600A000
|
|
_0804A9CC: .4byte 0x000002C1
|
|
_0804A9D0: .4byte gUnknown_030054A8
|
|
_0804A9D4: .4byte gUnknown_03005424
|
|
|
|
thumb_func_start sub_804A9D8
|
|
sub_804A9D8: @ 0x0804A9D8
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #4
|
|
ldr r0, _0804AAE4 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r5, r1, r0
|
|
ldr r0, [r5, #0x14]
|
|
cmp r0, #0x3c
|
|
bls _0804AA68
|
|
ldr r0, [r5, #4]
|
|
ldr r1, _0804AAE8 @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
str r0, [r5, #4]
|
|
ldr r4, _0804AAEC @ =gStageTime
|
|
ldr r0, [r4]
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0804AA0A
|
|
movs r0, #0x82
|
|
lsls r0, r0, #1
|
|
bl m4aSongNumStart
|
|
_0804AA0A:
|
|
ldr r0, [r4]
|
|
movs r1, #7
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0804AA26
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
movs r1, #0x83
|
|
str r1, [sp]
|
|
movs r1, #0x10
|
|
movs r2, #0x80
|
|
movs r3, #0x14
|
|
bl CreateScreenShake
|
|
_0804AA26:
|
|
ldr r0, [r5, #0x14]
|
|
movs r1, #0x1e
|
|
bl Mod
|
|
cmp r0, #0
|
|
bne _0804AA68
|
|
ldr r4, _0804AAF0 @ =gPlayer
|
|
str r0, [r4, #0x20]
|
|
ldr r0, [r5, #0x14]
|
|
subs r0, #0x3c
|
|
movs r1, #0x1e
|
|
bl __udivsi3
|
|
subs r0, #2
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
ble _0804AA4E
|
|
movs r1, #3
|
|
_0804AA4E:
|
|
lsls r1, r1, #0x18
|
|
lsrs r0, r1, #0x18
|
|
cmp r0, #3
|
|
bhi _0804AA68
|
|
asrs r1, r1, #0x18
|
|
movs r0, #0x46
|
|
subs r0, r0, r1
|
|
adds r1, r4, #0
|
|
adds r1, #0x64
|
|
strh r0, [r1]
|
|
adds r1, #2
|
|
ldr r0, _0804AAF4 @ =0x0000FFFF
|
|
strh r0, [r1]
|
|
_0804AA68:
|
|
movs r0, #1
|
|
strb r0, [r5, #0xb]
|
|
adds r0, r5, #0
|
|
bl sub_804C3AC
|
|
ldr r6, _0804AAF0 @ =gPlayer
|
|
ldr r0, [r6, #0x20]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0xf
|
|
orrs r0, r1
|
|
str r0, [r6, #0x20]
|
|
ldr r0, [r5, #0x14]
|
|
subs r4, r0, #1
|
|
str r4, [r5, #0x14]
|
|
cmp r4, #0
|
|
bne _0804AADC
|
|
ldr r2, _0804AAF8 @ =gUnknown_03005424
|
|
ldrh r1, [r2]
|
|
ldr r0, _0804AAFC @ =0x0000FFDF
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
ldr r0, [r6, #0x20]
|
|
ldr r1, _0804AB00 @ =0xFF9FFFFF
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
movs r0, #0x82
|
|
lsls r0, r0, #1
|
|
bl m4aSongNumStart
|
|
ldr r1, _0804AB04 @ =gUnknown_030054A8
|
|
strb r4, [r1]
|
|
movs r0, #0x12
|
|
strb r0, [r1, #1]
|
|
ldr r1, _0804AB08 @ =gCamera
|
|
ldr r0, _0804AB0C @ =0x0000A744
|
|
str r0, [r1, #0x30]
|
|
strb r4, [r5, #0xb]
|
|
ldr r0, [r6, #0x20]
|
|
ldr r1, _0804AB10 @ =0xFFDFFFFF
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
ldr r1, _0804AB14 @ =gUnknown_03005AF0
|
|
ldr r0, [r1, #0x1c]
|
|
ldr r3, _0804AB18 @ =0xFFFFCFFF
|
|
ands r0, r3
|
|
movs r2, #0x80
|
|
lsls r2, r2, #5
|
|
orrs r0, r2
|
|
str r0, [r1, #0x1c]
|
|
ldr r1, _0804AB1C @ =gUnknown_03005AA0
|
|
ldr r0, [r1, #0x1c]
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
str r0, [r1, #0x1c]
|
|
ldr r0, _0804AAE4 @ =gCurTask
|
|
ldr r1, [r0]
|
|
ldr r0, _0804AB20 @ =sub_804AB24
|
|
str r0, [r1, #8]
|
|
_0804AADC:
|
|
add sp, #4
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804AAE4: .4byte gCurTask
|
|
_0804AAE8: .4byte 0xFFFFFF00
|
|
_0804AAEC: .4byte gStageTime
|
|
_0804AAF0: .4byte gPlayer
|
|
_0804AAF4: .4byte 0x0000FFFF
|
|
_0804AAF8: .4byte gUnknown_03005424
|
|
_0804AAFC: .4byte 0x0000FFDF
|
|
_0804AB00: .4byte 0xFF9FFFFF
|
|
_0804AB04: .4byte gUnknown_030054A8
|
|
_0804AB08: .4byte gCamera
|
|
_0804AB0C: .4byte 0x0000A744
|
|
_0804AB10: .4byte 0xFFDFFFFF
|
|
_0804AB14: .4byte gUnknown_03005AF0
|
|
_0804AB18: .4byte 0xFFFFCFFF
|
|
_0804AB1C: .4byte gUnknown_03005AA0
|
|
_0804AB20: .4byte sub_804AB24
|
|
|
|
thumb_func_start sub_804AB24
|
|
sub_804AB24: @ 0x0804AB24
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x14
|
|
ldr r0, _0804AC44 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r4, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r7, r4, r0
|
|
adds r0, #0x48
|
|
adds r6, r4, r0
|
|
adds r0, r7, #0
|
|
bl sub_804CC98
|
|
adds r0, r7, #0
|
|
bl sub_804CA08
|
|
adds r0, r7, #0
|
|
bl sub_804AE40
|
|
ldr r5, _0804AC48 @ =gUnknown_080D8890
|
|
ldr r1, _0804AC4C @ =IWRAM_START + 0x3C
|
|
adds r0, r4, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r5
|
|
ldr r2, [r0]
|
|
adds r0, r7, #0
|
|
movs r1, #0
|
|
bl _call_via_r2
|
|
ldr r2, _0804AC50 @ =IWRAM_START + 0x3D
|
|
adds r4, r4, r2
|
|
ldrb r0, [r4]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r5
|
|
ldr r2, [r0]
|
|
adds r0, r7, #0
|
|
movs r1, #1
|
|
bl _call_via_r2
|
|
adds r0, r7, #0
|
|
bl sub_804C5B8
|
|
adds r0, r7, #0
|
|
bl sub_804C830
|
|
adds r0, r7, #0
|
|
bl sub_804CA70
|
|
ldr r4, _0804AC54 @ =gPlayer
|
|
ldr r0, [r4, #0xc]
|
|
asrs r0, r0, #8
|
|
cmp r0, #0xb8
|
|
ble _0804ABC0
|
|
ldr r0, [r4, #8]
|
|
asrs r0, r0, #8
|
|
ldr r1, _0804AC58 @ =0x0000A819
|
|
cmp r0, r1
|
|
ble _0804ABC0
|
|
adds r0, r4, #0
|
|
bl sub_800CBA4
|
|
movs r1, #0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, #0
|
|
ble _0804ABB4
|
|
rsbs r0, r0, #0
|
|
strh r0, [r4, #0x10]
|
|
_0804ABB4:
|
|
movs r1, #0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, #0
|
|
ble _0804ABC0
|
|
rsbs r0, r0, #0
|
|
strh r0, [r4, #0x14]
|
|
_0804ABC0:
|
|
ldr r4, _0804AC54 @ =gPlayer
|
|
ldr r0, [r4, #8]
|
|
asrs r0, r0, #8
|
|
ldr r1, _0804AC5C @ =0x0000A84F
|
|
cmp r0, r1
|
|
ble _0804ABEA
|
|
adds r0, r4, #0
|
|
bl sub_800CBA4
|
|
movs r1, #0x10
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, #0
|
|
ble _0804ABDE
|
|
rsbs r0, r0, #0
|
|
strh r0, [r4, #0x10]
|
|
_0804ABDE:
|
|
movs r1, #0x14
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, #0
|
|
ble _0804ABEA
|
|
rsbs r0, r0, #0
|
|
strh r0, [r4, #0x14]
|
|
_0804ABEA:
|
|
ldrb r4, [r7, #8]
|
|
cmp r4, #0
|
|
beq _0804ABF2
|
|
b _0804AD54
|
|
_0804ABF2:
|
|
ldr r2, _0804AC60 @ =gFlags
|
|
ldr r0, [r2]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0804AC44 @ =gCurTask
|
|
ldr r1, [r0]
|
|
ldr r0, _0804AC64 @ =sub_804AD68
|
|
str r0, [r1, #8]
|
|
movs r0, #0xff
|
|
str r0, [r7, #0x14]
|
|
bl sub_802A050
|
|
ldr r2, _0804AC54 @ =gPlayer
|
|
ldr r1, [r2, #0x20]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xe
|
|
orrs r1, r0
|
|
str r1, [r2, #0x20]
|
|
adds r0, r2, #0
|
|
adds r0, #0x5c
|
|
strh r4, [r0]
|
|
adds r0, #2
|
|
strh r4, [r0]
|
|
movs r0, #0xa
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0804AC68
|
|
adds r1, r2, #0
|
|
adds r1, #0x64
|
|
movs r0, #0x32
|
|
strh r0, [r1]
|
|
movs r0, #0xfe
|
|
lsls r0, r0, #8
|
|
strh r0, [r2, #0x10]
|
|
strh r4, [r2, #0x12]
|
|
adds r1, #9
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
b _0804AC6E
|
|
.align 2, 0
|
|
_0804AC44: .4byte gCurTask
|
|
_0804AC48: .4byte gUnknown_080D8890
|
|
_0804AC4C: .4byte IWRAM_START + 0x3C
|
|
_0804AC50: .4byte IWRAM_START + 0x3D
|
|
_0804AC54: .4byte gPlayer
|
|
_0804AC58: .4byte 0x0000A819
|
|
_0804AC5C: .4byte 0x0000A84F
|
|
_0804AC60: .4byte gFlags
|
|
_0804AC64: .4byte sub_804AD68
|
|
_0804AC68:
|
|
strh r0, [r2, #0x14]
|
|
strh r0, [r2, #0x10]
|
|
strh r0, [r2, #0x12]
|
|
_0804AC6E:
|
|
movs r1, #0
|
|
strh r1, [r6]
|
|
strh r1, [r6, #4]
|
|
movs r0, #1
|
|
strh r0, [r6, #2]
|
|
movs r0, #0x10
|
|
strh r0, [r6, #6]
|
|
ldr r0, _0804AD2C @ =0x00003FBF
|
|
strh r0, [r6, #8]
|
|
strh r1, [r6, #0xa]
|
|
movs r6, #0
|
|
adds r0, r7, #0
|
|
adds r0, #0x18
|
|
str r0, [sp]
|
|
adds r1, r7, #0
|
|
adds r1, #0x28
|
|
str r1, [sp, #8]
|
|
adds r2, r7, #0
|
|
adds r2, #0x1c
|
|
str r2, [sp, #4]
|
|
adds r0, #0x1c
|
|
str r0, [sp, #0xc]
|
|
adds r1, #0xe
|
|
str r1, [sp, #0x10]
|
|
movs r2, #0x3c
|
|
adds r2, r2, r7
|
|
mov sl, r2
|
|
movs r0, #0x30
|
|
adds r0, r0, r7
|
|
mov sb, r0
|
|
ldr r1, _0804AD30 @ =gSineTable
|
|
mov r8, r1
|
|
movs r2, #2
|
|
mov ip, r2
|
|
_0804ACB2:
|
|
lsls r2, r6, #3
|
|
ldr r0, [sp]
|
|
adds r3, r0, r2
|
|
lsls r5, r6, #1
|
|
ldr r1, [sp, #8]
|
|
adds r4, r1, r5
|
|
ldrh r0, [r4]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r3]
|
|
adds r0, r0, r1
|
|
str r0, [r3]
|
|
ldr r0, [sp, #4]
|
|
adds r2, r0, r2
|
|
ldrh r0, [r4]
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
lsls r1, r6, #2
|
|
ldr r2, [sp, #0xc]
|
|
adds r0, r2, r1
|
|
ldr r2, _0804AD34 @ =0xFFFFFE80
|
|
strh r2, [r0]
|
|
ldr r0, [sp, #0x10]
|
|
adds r1, r0, r1
|
|
movs r0, #0xfd
|
|
lsls r0, r0, #8
|
|
strh r0, [r1]
|
|
mov r2, sl
|
|
adds r1, r2, r6
|
|
movs r0, #7
|
|
strb r0, [r1]
|
|
add r5, sb
|
|
movs r0, #0x3c
|
|
strh r0, [r5]
|
|
lsls r0, r6, #4
|
|
subs r0, r0, r6
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r1, r7, r0
|
|
cmp r6, #0
|
|
beq _0804AD38
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804AD3A
|
|
.align 2, 0
|
|
_0804AD2C: .4byte 0x00003FBF
|
|
_0804AD30: .4byte gSineTable
|
|
_0804AD34: .4byte 0xFFFFFE80
|
|
_0804AD38:
|
|
ldr r0, _0804AD64 @ =0x000002BF
|
|
_0804AD3A:
|
|
strh r0, [r1, #0xa]
|
|
adds r0, r1, #0
|
|
adds r0, #0x20
|
|
mov r2, ip
|
|
strb r2, [r0]
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r6, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
cmp r6, #1
|
|
bls _0804ACB2
|
|
_0804AD54:
|
|
add sp, #0x14
|
|
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
|
|
_0804AD64: .4byte 0x000002BF
|
|
|
|
thumb_func_start sub_804AD68
|
|
sub_804AD68: @ 0x0804AD68
|
|
push {r4, r5, r6, lr}
|
|
ldr r4, _0804ADC0 @ =gCurTask
|
|
ldr r0, [r4]
|
|
ldrh r6, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r5, r6, r0
|
|
ldr r1, _0804ADC4 @ =IWRAM_START + 0x48
|
|
adds r0, r6, r1
|
|
bl NextTransitionFrame
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _0804ADE4
|
|
ldr r0, _0804ADC8 @ =0x00005010
|
|
ldr r1, _0804ADCC @ =0x00005011
|
|
bl TasksDestroyInPriorityRange
|
|
ldr r0, _0804ADD0 @ =0x00005431
|
|
ldr r1, _0804ADD4 @ =0x00005434
|
|
bl TasksDestroyInPriorityRange
|
|
ldr r2, _0804ADD8 @ =gUnknown_03005424
|
|
ldrh r0, [r2]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #3
|
|
adds r1, r3, #0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
ldr r2, _0804ADDC @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xd
|
|
orrs r0, r1
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xf
|
|
orrs r0, r1
|
|
str r0, [r2, #0x20]
|
|
ldr r1, [r4]
|
|
ldr r0, _0804ADE0 @ =sub_804CC30
|
|
str r0, [r1, #8]
|
|
b _0804AE2C
|
|
.align 2, 0
|
|
_0804ADC0: .4byte gCurTask
|
|
_0804ADC4: .4byte IWRAM_START + 0x48
|
|
_0804ADC8: .4byte 0x00005010
|
|
_0804ADCC: .4byte 0x00005011
|
|
_0804ADD0: .4byte 0x00005431
|
|
_0804ADD4: .4byte 0x00005434
|
|
_0804ADD8: .4byte gUnknown_03005424
|
|
_0804ADDC: .4byte gPlayer
|
|
_0804ADE0: .4byte sub_804CC30
|
|
_0804ADE4:
|
|
adds r0, r5, #0
|
|
bl sub_804CC98
|
|
adds r0, r5, #0
|
|
bl sub_804CA08
|
|
ldr r4, _0804AE34 @ =gUnknown_080D8890
|
|
ldr r1, _0804AE38 @ =IWRAM_START + 0x3C
|
|
adds r0, r6, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r4
|
|
ldr r2, [r0]
|
|
adds r0, r5, #0
|
|
movs r1, #0
|
|
bl _call_via_r2
|
|
ldr r3, _0804AE3C @ =IWRAM_START + 0x3D
|
|
adds r0, r6, r3
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r4
|
|
ldr r2, [r0]
|
|
adds r0, r5, #0
|
|
movs r1, #1
|
|
bl _call_via_r2
|
|
adds r0, r5, #0
|
|
bl sub_804C5B8
|
|
adds r0, r5, #0
|
|
bl sub_804CA70
|
|
adds r0, r5, #0
|
|
bl sub_804C080
|
|
_0804AE2C:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804AE34: .4byte gUnknown_080D8890
|
|
_0804AE38: .4byte IWRAM_START + 0x3C
|
|
_0804AE3C: .4byte IWRAM_START + 0x3D
|
|
|
|
thumb_func_start sub_804AE40
|
|
sub_804AE40: @ 0x0804AE40
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #8
|
|
adds r5, r0, #0
|
|
ldr r0, _0804AE94 @ =gPlayer
|
|
ldr r0, [r0, #0x20]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0804AE7A
|
|
ldrh r1, [r5, #0xe]
|
|
cmp r1, #0
|
|
bne _0804AE76
|
|
ldr r0, _0804AE98 @ =gBldRegs
|
|
strh r1, [r0, #4]
|
|
adds r0, r5, #0
|
|
adds r0, #0x4c
|
|
strh r1, [r0]
|
|
ldr r2, _0804AE9C @ =gFlags
|
|
ldr r0, [r2]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_0804AE76:
|
|
movs r0, #2
|
|
strh r0, [r5, #0xe]
|
|
_0804AE7A:
|
|
ldrh r0, [r5, #0xe]
|
|
cmp r0, #0
|
|
beq _0804AEA0
|
|
subs r0, #1
|
|
strh r0, [r5, #0xe]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
beq _0804AE8C
|
|
b _0804B0CE
|
|
_0804AE8C:
|
|
movs r0, #0x78
|
|
strb r0, [r5, #0x12]
|
|
b _0804B0CE
|
|
.align 2, 0
|
|
_0804AE94: .4byte gPlayer
|
|
_0804AE98: .4byte gBldRegs
|
|
_0804AE9C: .4byte gFlags
|
|
_0804AEA0:
|
|
ldrb r0, [r5, #0xb]
|
|
cmp r0, #0
|
|
beq _0804AED4
|
|
ldrb r0, [r5, #0x12]
|
|
cmp r0, #0
|
|
beq _0804AEC2
|
|
movs r0, #0x78
|
|
strb r0, [r5, #0x12]
|
|
adds r1, r5, #0
|
|
adds r1, #0x4c
|
|
movs r0, #0x80
|
|
lsls r0, r0, #6
|
|
strh r0, [r1]
|
|
adds r0, r5, #0
|
|
adds r0, #0x48
|
|
bl NextTransitionFrame
|
|
_0804AEC2:
|
|
ldr r0, _0804AED0 @ =gFlags
|
|
ldr r1, [r0]
|
|
movs r2, #5
|
|
rsbs r2, r2, #0
|
|
ands r1, r2
|
|
str r1, [r0]
|
|
b _0804B0CE
|
|
.align 2, 0
|
|
_0804AED0: .4byte gFlags
|
|
_0804AED4:
|
|
ldrb r0, [r5, #0x12]
|
|
subs r4, r0, #1
|
|
strb r4, [r5, #0x12]
|
|
movs r0, #0xff
|
|
mov sb, r0
|
|
lsls r0, r4, #0x18
|
|
cmp r0, #0
|
|
bne _0804AF34
|
|
ldr r2, _0804AF2C @ =gFlags
|
|
ldr r0, [r2]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
adds r1, r5, #0
|
|
adds r1, #0x4c
|
|
movs r0, #0x80
|
|
lsls r0, r0, #6
|
|
strh r0, [r1]
|
|
adds r0, r5, #0
|
|
adds r0, #0x48
|
|
bl NextTransitionFrame
|
|
ldrb r0, [r5, #8]
|
|
movs r2, #0xb4
|
|
lsls r2, r2, #1
|
|
adds r1, r2, #0
|
|
cmp r0, #4
|
|
bhi _0804AF10
|
|
movs r1, #0x8c
|
|
_0804AF10:
|
|
strh r1, [r5, #0xe]
|
|
adds r1, r5, #0
|
|
adds r1, #0x54
|
|
ldr r0, _0804AF30 @ =0x000002C1
|
|
strh r0, [r1, #0xa]
|
|
adds r1, #0x20
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
adds r1, #1
|
|
ldrb r0, [r1]
|
|
mov r6, sb
|
|
orrs r0, r6
|
|
strb r0, [r1]
|
|
b _0804B0CE
|
|
.align 2, 0
|
|
_0804AF2C: .4byte gFlags
|
|
_0804AF30: .4byte 0x000002C1
|
|
_0804AF34:
|
|
ldr r0, [r5]
|
|
movs r7, #0xbe
|
|
lsls r7, r7, #8
|
|
adds r0, r0, r7
|
|
asrs r0, r0, #8
|
|
mov r8, r0
|
|
ldr r0, _0804AFF4 @ =gSineTable
|
|
mov sl, r0
|
|
ldrh r1, [r5, #0x10]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
adds r0, r1, r2
|
|
lsls r0, r0, #1
|
|
add r0, sl
|
|
movs r6, #0
|
|
ldrsh r0, [r0, r6]
|
|
movs r3, #0xb
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xe
|
|
add r8, r0
|
|
ldr r2, _0804AFF8 @ =gCamera
|
|
ldr r0, [r2]
|
|
mov r7, r8
|
|
subs r7, r7, r0
|
|
mov r8, r7
|
|
ldr r0, [r5, #4]
|
|
movs r6, #0xa0
|
|
lsls r6, r6, #6
|
|
adds r0, r0, r6
|
|
asrs r6, r0, #8
|
|
lsls r1, r1, #1
|
|
add r1, sl
|
|
movs r7, #0
|
|
ldrsh r0, [r1, r7]
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xe
|
|
adds r6, r6, r0
|
|
ldr r0, [r2, #4]
|
|
subs r6, r6, r0
|
|
lsls r0, r4, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0x5a
|
|
bls _0804B008
|
|
movs r0, #0
|
|
bl sub_802EFDC
|
|
mov r0, r8
|
|
lsls r3, r0, #0x10
|
|
asrs r3, r3, #0x10
|
|
lsls r0, r6, #0x10
|
|
asrs r0, r0, #0x10
|
|
str r0, [sp]
|
|
ldr r4, _0804AFFC @ =gPseudoRandom
|
|
ldr r1, [r4]
|
|
ldr r0, _0804B000 @ =0x00196225
|
|
adds r2, r1, #0
|
|
muls r2, r0, r2
|
|
ldr r1, _0804B004 @ =0x3C6EF35F
|
|
adds r2, r2, r1
|
|
str r2, [r4]
|
|
ldrb r0, [r5, #0x12]
|
|
subs r0, #0x5a
|
|
lsls r0, r0, #3
|
|
movs r1, #0xff
|
|
ands r0, r1
|
|
lsls r0, r0, #1
|
|
add r0, sl
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x18
|
|
movs r1, #7
|
|
ands r2, r1
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
str r0, [sp, #4]
|
|
movs r0, #0
|
|
movs r1, #0
|
|
movs r2, #0xa0
|
|
bl sub_80075D0
|
|
ldrb r1, [r5, #0x12]
|
|
subs r1, #0x5a
|
|
lsls r0, r1, #4
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r1
|
|
adds r1, r5, #0
|
|
adds r1, #0x4c
|
|
strh r0, [r1]
|
|
adds r0, r5, #0
|
|
adds r0, #0x48
|
|
bl NextTransitionFrame
|
|
b _0804B0CE
|
|
.align 2, 0
|
|
_0804AFF4: .4byte gSineTable
|
|
_0804AFF8: .4byte gCamera
|
|
_0804AFFC: .4byte gPseudoRandom
|
|
_0804B000: .4byte 0x00196225
|
|
_0804B004: .4byte 0x3C6EF35F
|
|
_0804B008:
|
|
cmp r0, #0x5a
|
|
bne _0804B02A
|
|
adds r1, r5, #0
|
|
adds r1, #0x54
|
|
ldr r0, _0804B060 @ =0x000002C1
|
|
strh r0, [r1, #0xa]
|
|
adds r1, #0x20
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
adds r1, #1
|
|
ldrb r0, [r1]
|
|
mov r2, sb
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, _0804B064 @ =0x00000105
|
|
bl m4aSongNumStart
|
|
_0804B02A:
|
|
ldrb r0, [r5, #0x12]
|
|
lsls r3, r0, #0x18
|
|
lsrs r7, r3, #0x18
|
|
cmp r7, #0x45
|
|
bhi _0804B074
|
|
ldr r2, _0804B068 @ =gPseudoRandom
|
|
ldr r1, [r2]
|
|
ldr r0, _0804B06C @ =0x00196225
|
|
muls r0, r1, r0
|
|
ldr r1, _0804B070 @ =0x3C6EF35F
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
lsrs r2, r3, #0x19
|
|
movs r1, #7
|
|
ands r0, r1
|
|
adds r0, #8
|
|
adds r4, r2, r0
|
|
cmp r7, #0x3c
|
|
bls _0804B096
|
|
adds r1, r4, #0
|
|
subs r1, #0xa
|
|
lsls r1, r1, #8
|
|
adds r0, r5, #0
|
|
bl sub_804CCD0
|
|
b _0804B096
|
|
.align 2, 0
|
|
_0804B060: .4byte 0x000002C1
|
|
_0804B064: .4byte 0x00000105
|
|
_0804B068: .4byte gPseudoRandom
|
|
_0804B06C: .4byte 0x00196225
|
|
_0804B070: .4byte 0x3C6EF35F
|
|
_0804B074:
|
|
ldr r2, _0804B0E0 @ =gPseudoRandom
|
|
ldr r1, [r2]
|
|
ldr r0, _0804B0E4 @ =0x00196225
|
|
muls r1, r0, r1
|
|
ldr r7, _0804B0E8 @ =0x3C6EF35F
|
|
adds r1, r1, r7
|
|
str r1, [r2]
|
|
ldrb r2, [r5, #0x12]
|
|
movs r0, #0x74
|
|
subs r0, r0, r2
|
|
asrs r0, r0, #2
|
|
movs r2, #7
|
|
ands r1, r2
|
|
adds r1, #0x1e
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r4, r0, #0x10
|
|
_0804B096:
|
|
ldrh r0, [r5, #0x10]
|
|
mov r1, r8
|
|
lsls r3, r1, #0x10
|
|
asrs r3, r3, #0x10
|
|
adds r1, r6, #1
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
str r1, [sp]
|
|
movs r1, #0x20
|
|
str r1, [sp, #4]
|
|
adds r1, r4, #0
|
|
movs r2, #6
|
|
bl sub_802E784
|
|
ldrb r1, [r5, #0x12]
|
|
movs r0, #0x5b
|
|
muls r1, r0, r1
|
|
movs r2, #0x80
|
|
lsls r2, r2, #6
|
|
adds r0, r2, #0
|
|
subs r0, r0, r1
|
|
adds r1, r5, #0
|
|
adds r1, #0x4c
|
|
strh r0, [r1]
|
|
adds r0, r5, #0
|
|
adds r0, #0x48
|
|
bl NextTransitionFrame
|
|
_0804B0CE:
|
|
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
|
|
_0804B0E0: .4byte gPseudoRandom
|
|
_0804B0E4: .4byte 0x00196225
|
|
_0804B0E8: .4byte 0x3C6EF35F
|
|
|
|
thumb_func_start sub_804B0EC
|
|
sub_804B0EC: @ 0x0804B0EC
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x10
|
|
mov r8, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
mov sb, r1
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
adds r0, #0x3e
|
|
add r0, sb
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0804B114
|
|
_0804B110:
|
|
movs r0, #0
|
|
b _0804B2CE
|
|
_0804B114:
|
|
mov r1, sb
|
|
lsls r4, r1, #3
|
|
mov r0, r8
|
|
adds r0, #0x18
|
|
adds r0, r0, r4
|
|
mov r2, r8
|
|
ldr r1, [r2]
|
|
ldr r0, [r0]
|
|
adds r1, r1, r0
|
|
str r1, [sp, #4]
|
|
ldr r2, _0804B1CC @ =gUnknown_080D8888
|
|
mov r0, sb
|
|
lsls r3, r0, #2
|
|
adds r0, r3, r2
|
|
ldrh r0, [r0]
|
|
mov sl, r0
|
|
adds r5, r1, #0
|
|
add r5, sl
|
|
mov r0, r8
|
|
adds r0, #0x1c
|
|
adds r0, r0, r4
|
|
mov r4, r8
|
|
ldr r1, [r4, #4]
|
|
ldr r0, [r0]
|
|
adds r1, r1, r0
|
|
mov ip, r1
|
|
adds r2, #2
|
|
adds r3, r3, r2
|
|
ldrh r7, [r3]
|
|
adds r4, r1, r7
|
|
ldr r3, _0804B1D0 @ =gSineTable
|
|
mov r0, sb
|
|
lsls r1, r0, #1
|
|
mov r0, r8
|
|
adds r0, #0x28
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
adds r0, r1, r2
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r2, #0
|
|
ldrsh r6, [r0, r2]
|
|
movs r2, #0xbe
|
|
adds r0, r6, #0
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #9
|
|
adds r5, r5, r0
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r3
|
|
movs r0, #0
|
|
ldrsh r3, [r1, r0]
|
|
adds r0, r3, #0
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #9
|
|
adds r4, r4, r0
|
|
ldr r2, _0804B1D4 @ =gPlayer
|
|
ldr r0, [r2, #8]
|
|
subs r0, r0, r5
|
|
asrs r5, r0, #8
|
|
ldr r0, [r2, #0xc]
|
|
subs r0, r0, r4
|
|
asrs r4, r0, #8
|
|
adds r1, r5, #0
|
|
muls r1, r5, r1
|
|
adds r5, r1, #0
|
|
adds r0, r4, #0
|
|
muls r0, r4, r0
|
|
adds r4, r0, #0
|
|
adds r0, r5, r4
|
|
cmp r0, #0xc7
|
|
bgt _0804B1DC
|
|
adds r0, r2, #0
|
|
bl sub_800CBA4
|
|
mov r0, r8
|
|
adds r0, #0x40
|
|
add r0, sb
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
mov r0, r8
|
|
adds r0, #0x3c
|
|
add r0, sb
|
|
ldrb r0, [r0]
|
|
cmp r0, #3
|
|
bne _0804B110
|
|
ldr r0, _0804B1D8 @ =0x00000107
|
|
bl m4aSongNumStart
|
|
b _0804B110
|
|
.align 2, 0
|
|
_0804B1CC: .4byte gUnknown_080D8888
|
|
_0804B1D0: .4byte gSineTable
|
|
_0804B1D4: .4byte gPlayer
|
|
_0804B1D8: .4byte 0x00000107
|
|
_0804B1DC:
|
|
adds r0, r2, #0
|
|
adds r0, #0x90
|
|
ldr r0, [r0]
|
|
adds r0, #0xc
|
|
str r0, [sp, #8]
|
|
ldr r5, [sp, #4]
|
|
add r5, sl
|
|
mov r1, ip
|
|
adds r4, r1, r7
|
|
lsls r1, r6, #1
|
|
adds r1, r1, r6
|
|
lsls r1, r1, #5
|
|
subs r1, r1, r6
|
|
asrs r1, r1, #9
|
|
lsls r0, r3, #1
|
|
adds r0, r0, r3
|
|
lsls r0, r0, #5
|
|
subs r0, r0, r3
|
|
asrs r0, r0, #9
|
|
adds r6, r5, r1
|
|
adds r7, r4, r0
|
|
ldr r0, _0804B280 @ =gSelectedCharacter
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804B21E
|
|
adds r0, r6, #0
|
|
adds r1, r7, #0
|
|
str r2, [sp, #0xc]
|
|
bl sub_80122DC
|
|
ldr r2, [sp, #0xc]
|
|
_0804B21E:
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0804B288
|
|
ldr r4, [sp, #8]
|
|
ldr r1, [r4, #0x30]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _0804B288
|
|
ldr r0, [r2, #8]
|
|
subs r0, r0, r6
|
|
asrs r5, r0, #8
|
|
ldr r0, [r2, #0xc]
|
|
subs r0, r0, r7
|
|
asrs r4, r0, #8
|
|
adds r0, r5, #0
|
|
muls r0, r5, r0
|
|
adds r5, r0, #0
|
|
adds r1, r4, #0
|
|
muls r1, r4, r1
|
|
adds r4, r1, #0
|
|
adds r1, r5, r4
|
|
ldr r0, _0804B284 @ =0x00000177
|
|
cmp r1, r0
|
|
bgt _0804B288
|
|
mov r0, r8
|
|
mov r1, sb
|
|
str r2, [sp, #0xc]
|
|
bl sub_804C9B4
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
ldr r2, [sp, #0xc]
|
|
movs r4, #0x10
|
|
ldrsh r0, [r2, r4]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r2, #0x10]
|
|
movs r1, #0x12
|
|
ldrsh r0, [r2, r1]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r2, #0x12]
|
|
movs r4, #0x14
|
|
ldrsh r0, [r2, r4]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r2, #0x14]
|
|
b _0804B2CC
|
|
.align 2, 0
|
|
_0804B280: .4byte gSelectedCharacter
|
|
_0804B284: .4byte 0x00000177
|
|
_0804B288:
|
|
ldr r0, _0804B2E0 @ =gUnknown_030056A4
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
beq _0804B2CC
|
|
ldr r1, [r2, #0x4c]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _0804B2CC
|
|
ldr r0, [r2]
|
|
subs r6, r6, r0
|
|
asrs r6, r6, #8
|
|
ldr r0, [r2, #4]
|
|
subs r7, r7, r0
|
|
asrs r7, r7, #8
|
|
adds r0, r6, #0
|
|
muls r0, r6, r0
|
|
adds r1, r7, #0
|
|
muls r1, r7, r1
|
|
adds r0, r0, r1
|
|
ldr r1, _0804B2E4 @ =0x00000177
|
|
cmp r0, r1
|
|
bgt _0804B2CC
|
|
mov r0, r8
|
|
mov r1, sb
|
|
bl sub_804C9B4
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
ldr r0, _0804B2E8 @ =gUnknown_03005498
|
|
ldr r1, [r0, #4]
|
|
movs r0, #0
|
|
strb r0, [r1, #0x15]
|
|
_0804B2CC:
|
|
ldr r0, [sp]
|
|
_0804B2CE:
|
|
add sp, #0x10
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0804B2E0: .4byte gUnknown_030056A4
|
|
_0804B2E4: .4byte 0x00000177
|
|
_0804B2E8: .4byte gUnknown_03005498
|
|
|
|
thumb_func_start sub_804B2EC
|
|
sub_804B2EC: @ 0x0804B2EC
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #4
|
|
adds r7, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
mov sb, r1
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
adds r0, #0x3e
|
|
add r0, sb
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0804B314
|
|
movs r0, #0
|
|
b _0804B41E
|
|
_0804B314:
|
|
ldr r1, _0804B3C8 @ =gPlayer
|
|
mov r8, r1
|
|
mov r0, r8
|
|
adds r0, #0x90
|
|
ldr r0, [r0]
|
|
adds r0, #0xc
|
|
mov sl, r0
|
|
mov r2, sb
|
|
lsls r4, r2, #3
|
|
adds r0, r7, #0
|
|
adds r0, #0x18
|
|
adds r0, r0, r4
|
|
ldr r3, [r7]
|
|
ldr r0, [r0]
|
|
ldr r1, _0804B3CC @ =gUnknown_080D8888
|
|
lsls r2, r2, #2
|
|
adds r5, r2, r1
|
|
adds r6, r3, r0
|
|
adds r0, r7, #0
|
|
adds r0, #0x1c
|
|
adds r0, r0, r4
|
|
ldr r3, [r7, #4]
|
|
ldr r0, [r0]
|
|
adds r1, #2
|
|
adds r2, r2, r1
|
|
adds r0, r3, r0
|
|
ldrh r5, [r5]
|
|
adds r4, r6, r5
|
|
ldrh r2, [r2]
|
|
adds r5, r0, r2
|
|
ldr r0, _0804B3D0 @ =gSelectedCharacter
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804B364
|
|
adds r0, r4, #0
|
|
adds r1, r5, #0
|
|
bl sub_80122DC
|
|
_0804B364:
|
|
mov r1, r8
|
|
ldr r0, [r1, #0x20]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0804B3D8
|
|
mov r2, sl
|
|
ldr r1, [r2, #0x30]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _0804B3D8
|
|
mov r1, r8
|
|
ldr r0, [r1, #8]
|
|
subs r0, r0, r4
|
|
asrs r6, r0, #8
|
|
ldr r0, [r1, #0xc]
|
|
subs r0, r0, r5
|
|
asrs r0, r0, #8
|
|
adds r2, r6, #0
|
|
muls r2, r6, r2
|
|
adds r6, r2, #0
|
|
adds r1, r0, #0
|
|
muls r1, r0, r1
|
|
adds r0, r1, #0
|
|
adds r1, r6, r0
|
|
ldr r0, _0804B3D4 @ =0x00000177
|
|
cmp r1, r0
|
|
bgt _0804B3D8
|
|
adds r0, r7, #0
|
|
mov r1, sb
|
|
bl sub_804C9B4
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
mov r2, r8
|
|
movs r5, #0x10
|
|
ldrsh r0, [r2, r5]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r2, #0x10]
|
|
movs r1, #0x12
|
|
ldrsh r0, [r2, r1]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r2, #0x12]
|
|
movs r5, #0x14
|
|
ldrsh r0, [r2, r5]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r2, #0x14]
|
|
b _0804B41C
|
|
.align 2, 0
|
|
_0804B3C8: .4byte gPlayer
|
|
_0804B3CC: .4byte gUnknown_080D8888
|
|
_0804B3D0: .4byte gSelectedCharacter
|
|
_0804B3D4: .4byte 0x00000177
|
|
_0804B3D8:
|
|
ldr r0, _0804B430 @ =gUnknown_030056A4
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
beq _0804B41C
|
|
ldr r1, [r2, #0x4c]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _0804B41C
|
|
ldr r0, [r2]
|
|
subs r4, r4, r0
|
|
asrs r4, r4, #8
|
|
ldr r0, [r2, #4]
|
|
subs r5, r5, r0
|
|
asrs r5, r5, #8
|
|
adds r0, r4, #0
|
|
muls r0, r4, r0
|
|
adds r1, r5, #0
|
|
muls r1, r5, r1
|
|
adds r0, r0, r1
|
|
ldr r1, _0804B434 @ =0x00000177
|
|
cmp r0, r1
|
|
bgt _0804B41C
|
|
adds r0, r7, #0
|
|
mov r1, sb
|
|
bl sub_804C9B4
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
ldr r0, _0804B438 @ =gUnknown_03005498
|
|
ldr r1, [r0, #4]
|
|
movs r0, #0
|
|
strb r0, [r1, #0x15]
|
|
_0804B41C:
|
|
ldr r0, [sp]
|
|
_0804B41E:
|
|
add sp, #4
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0804B430: .4byte gUnknown_030056A4
|
|
_0804B434: .4byte 0x00000177
|
|
_0804B438: .4byte gUnknown_03005498
|
|
|
|
thumb_func_start sub_804B43C
|
|
sub_804B43C: @ 0x0804B43C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
adds r7, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r6, r1, #0x18
|
|
lsls r2, r6, #3
|
|
adds r0, #0x18
|
|
adds r0, r0, r2
|
|
movs r1, #0
|
|
str r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x1c
|
|
adds r0, r0, r2
|
|
str r1, [r0]
|
|
lsls r1, r6, #1
|
|
adds r0, r7, #0
|
|
adds r0, #0x30
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
cmp r1, r0
|
|
bne _0804B498
|
|
lsls r0, r6, #4
|
|
subs r0, r0, r6
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r7, r0
|
|
cmp r6, #0
|
|
beq _0804B484
|
|
movs r0, #0
|
|
movs r1, #0xb0
|
|
lsls r1, r1, #2
|
|
b _0804B488
|
|
_0804B484:
|
|
movs r0, #0
|
|
ldr r1, _0804B564 @ =0x000002BF
|
|
_0804B488:
|
|
strh r1, [r2, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x20
|
|
strb r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
_0804B498:
|
|
lsls r5, r6, #1
|
|
adds r0, r7, #0
|
|
adds r0, #0x30
|
|
adds r0, r0, r5
|
|
mov r8, r0
|
|
ldrh r0, [r0]
|
|
subs r0, #1
|
|
movs r1, #0
|
|
mov sb, r1
|
|
mov r1, r8
|
|
strh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _0804B4CE
|
|
adds r0, r7, #0
|
|
adds r0, #0x3c
|
|
adds r0, r0, r6
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
movs r0, #0xb4
|
|
mov r1, r8
|
|
strh r0, [r1]
|
|
adds r0, r7, #0
|
|
adds r0, #0x40
|
|
adds r0, r0, r6
|
|
mov r1, sb
|
|
strb r1, [r0]
|
|
_0804B4CE:
|
|
adds r0, r7, #0
|
|
adds r1, r6, #0
|
|
bl sub_804B0EC
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804B584
|
|
lsls r4, r6, #3
|
|
adds r2, r7, #0
|
|
adds r2, #0x18
|
|
adds r2, r2, r4
|
|
ldr r0, _0804B568 @ =gSineTable
|
|
mov ip, r0
|
|
adds r3, r7, #0
|
|
adds r3, #0x28
|
|
adds r3, r3, r5
|
|
ldrh r0, [r3]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
add r0, ip
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
adds r2, r7, #0
|
|
adds r2, #0x1c
|
|
adds r2, r2, r4
|
|
ldrh r0, [r3]
|
|
lsls r0, r0, #1
|
|
add r0, ip
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
lsls r2, r6, #2
|
|
adds r0, r7, #0
|
|
adds r0, #0x34
|
|
adds r0, r0, r2
|
|
ldr r1, _0804B56C @ =0x0000FE80
|
|
strh r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x36
|
|
adds r0, r0, r2
|
|
movs r1, #0xfd
|
|
lsls r1, r1, #8
|
|
strh r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x3c
|
|
adds r0, r0, r6
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
movs r0, #0x3c
|
|
mov r1, r8
|
|
strh r0, [r1]
|
|
lsls r0, r6, #4
|
|
subs r0, r0, r6
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r7, r0
|
|
cmp r6, #0
|
|
beq _0804B570
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804B572
|
|
.align 2, 0
|
|
_0804B564: .4byte 0x000002BF
|
|
_0804B568: .4byte gSineTable
|
|
_0804B56C: .4byte 0x0000FE80
|
|
_0804B570:
|
|
ldr r0, _0804B590 @ =0x000002BF
|
|
_0804B572:
|
|
strh r0, [r2, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x20
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
_0804B584:
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804B590: .4byte 0x000002BF
|
|
|
|
thumb_func_start sub_804B594
|
|
sub_804B594: @ 0x0804B594
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
adds r7, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
mov r8, r1
|
|
lsls r3, r1, #3
|
|
adds r1, r7, #0
|
|
adds r1, #0x18
|
|
adds r1, r1, r3
|
|
movs r2, #0
|
|
str r2, [r1]
|
|
adds r0, #0x1c
|
|
adds r0, r0, r3
|
|
str r2, [r0]
|
|
ldr r2, [r7]
|
|
ldr r4, [r1]
|
|
ldr r0, _0804B608 @ =gUnknown_080D8888
|
|
mov r3, r8
|
|
lsls r1, r3, #2
|
|
adds r3, r1, r0
|
|
adds r2, r2, r4
|
|
ldrh r3, [r3]
|
|
adds r5, r2, r3
|
|
ldr r2, [r7, #4]
|
|
adds r0, #2
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1]
|
|
adds r6, r2, r0
|
|
ldr r1, _0804B60C @ =gPlayer
|
|
ldr r0, [r1, #0xc]
|
|
subs r0, r0, r6
|
|
lsls r0, r0, #8
|
|
asrs r0, r0, #0x10
|
|
ldr r1, [r1, #8]
|
|
subs r1, r1, r5
|
|
lsls r1, r1, #8
|
|
asrs r1, r1, #0x10
|
|
bl sub_8004418
|
|
lsls r0, r0, #0x10
|
|
lsrs r3, r0, #0x10
|
|
mov r0, r8
|
|
lsls r1, r0, #1
|
|
adds r0, r7, #0
|
|
adds r0, #0x28
|
|
adds r2, r0, r1
|
|
ldrh r0, [r2]
|
|
adds r1, r0, #0
|
|
cmp r3, r1
|
|
beq _0804B614
|
|
cmp r3, r1
|
|
bhs _0804B610
|
|
subs r0, #1
|
|
b _0804B612
|
|
.align 2, 0
|
|
_0804B608: .4byte gUnknown_080D8888
|
|
_0804B60C: .4byte gPlayer
|
|
_0804B610:
|
|
adds r0, #1
|
|
_0804B612:
|
|
strh r0, [r2]
|
|
_0804B614:
|
|
mov r1, r8
|
|
lsls r2, r1, #1
|
|
adds r3, r7, #0
|
|
adds r3, #0x30
|
|
adds r1, r3, r2
|
|
ldrh r0, [r1]
|
|
subs r0, #1
|
|
strh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
adds r6, r2, #0
|
|
mov sb, r3
|
|
cmp r0, #0
|
|
bne _0804B66A
|
|
mov r3, r8
|
|
lsls r0, r3, #4
|
|
subs r0, r0, r3
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r7, r0
|
|
cmp r3, #0
|
|
beq _0804B644
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804B646
|
|
_0804B644:
|
|
ldr r0, _0804B704 @ =0x000002BF
|
|
_0804B646:
|
|
strh r0, [r2, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x20
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r7, #0
|
|
adds r0, #0x3c
|
|
add r0, r8
|
|
movs r1, #2
|
|
strb r1, [r0]
|
|
mov r0, sb
|
|
adds r1, r0, r6
|
|
movs r0, #0x1e
|
|
strh r0, [r1]
|
|
_0804B66A:
|
|
adds r0, r7, #0
|
|
mov r1, r8
|
|
bl sub_804B0EC
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804B724
|
|
mov r1, r8
|
|
lsls r4, r1, #3
|
|
adds r2, r7, #0
|
|
adds r2, #0x18
|
|
adds r2, r2, r4
|
|
ldr r5, _0804B708 @ =gSineTable
|
|
adds r3, r7, #0
|
|
adds r3, #0x28
|
|
adds r3, r3, r6
|
|
ldrh r0, [r3]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
adds r2, r7, #0
|
|
adds r2, #0x1c
|
|
adds r2, r2, r4
|
|
ldrh r0, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
mov r0, r8
|
|
lsls r2, r0, #2
|
|
adds r0, r7, #0
|
|
adds r0, #0x34
|
|
adds r0, r0, r2
|
|
ldr r1, _0804B70C @ =0x0000FE80
|
|
strh r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x36
|
|
adds r0, r0, r2
|
|
movs r1, #0xfd
|
|
lsls r1, r1, #8
|
|
strh r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x3c
|
|
add r0, r8
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
mov r3, sb
|
|
adds r1, r3, r6
|
|
movs r0, #0x3c
|
|
strh r0, [r1]
|
|
mov r1, r8
|
|
lsls r0, r1, #4
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r7, r0
|
|
cmp r1, #0
|
|
beq _0804B710
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804B712
|
|
.align 2, 0
|
|
_0804B704: .4byte 0x000002BF
|
|
_0804B708: .4byte gSineTable
|
|
_0804B70C: .4byte 0x0000FE80
|
|
_0804B710:
|
|
ldr r0, _0804B730 @ =0x000002BF
|
|
_0804B712:
|
|
strh r0, [r2, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x20
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
_0804B724:
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804B730: .4byte 0x000002BF
|
|
|
|
thumb_func_start sub_804B734
|
|
sub_804B734: @ 0x0804B734
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x4c
|
|
adds r7, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
str r1, [sp, #0x20]
|
|
lsls r2, r1, #3
|
|
adds r0, #0x18
|
|
adds r3, r0, r2
|
|
movs r1, #0
|
|
str r1, [r3]
|
|
adds r0, #4
|
|
adds r5, r0, r2
|
|
str r1, [r5]
|
|
ldr r0, [sp, #0x20]
|
|
lsls r6, r0, #1
|
|
movs r1, #0x30
|
|
adds r1, r1, r7
|
|
mov r8, r1
|
|
adds r1, r1, r6
|
|
ldrh r0, [r1]
|
|
subs r0, #1
|
|
strh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
beq _0804B772
|
|
b _0804B8AC
|
|
_0804B772:
|
|
ldr r4, [r7]
|
|
ldr r3, [r3]
|
|
ldr r0, _0804B840 @ =gUnknown_080D8888
|
|
ldr r2, [sp, #0x20]
|
|
lsls r1, r2, #2
|
|
adds r2, r1, r0
|
|
adds r4, r4, r3
|
|
ldrh r2, [r2]
|
|
adds r4, r4, r2
|
|
ldr r2, [r7, #4]
|
|
ldr r3, [r5]
|
|
adds r0, #2
|
|
adds r1, r1, r0
|
|
adds r2, r2, r3
|
|
ldrh r1, [r1]
|
|
adds r2, r2, r1
|
|
movs r1, #0
|
|
str r6, [sp, #0x2c]
|
|
mov r3, r8
|
|
str r3, [sp, #0x38]
|
|
adds r0, r7, #0
|
|
adds r0, #0x28
|
|
adds r6, r7, #0
|
|
adds r6, #0xc
|
|
str r6, [sp, #0x28]
|
|
adds r3, r7, #0
|
|
adds r3, #0x3c
|
|
str r3, [sp, #0x3c]
|
|
asrs r4, r4, #8
|
|
str r4, [sp, #0x30]
|
|
asrs r2, r2, #8
|
|
str r2, [sp, #0x34]
|
|
ldr r6, [sp, #0x2c]
|
|
adds r2, r0, r6
|
|
ldr r0, _0804B844 @ =0x000003FF
|
|
mov sl, r0
|
|
mov r5, sp
|
|
mov sb, r1
|
|
_0804B7BE:
|
|
movs r3, #0
|
|
mov r8, r3
|
|
subs r4, r1, #1
|
|
adds r6, r1, #1
|
|
str r6, [sp, #0x24]
|
|
adds r3, r4, #0
|
|
movs r0, #1
|
|
subs r1, r0, r1
|
|
str r1, [sp, #0x48]
|
|
_0804B7D0:
|
|
ldrh r0, [r2]
|
|
ldr r1, _0804B848 @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
mov r6, sl
|
|
ands r0, r6
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r6, _0804B84C @ =gSineTable
|
|
adds r0, r0, r6
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xb
|
|
ldr r6, [sp, #0x30]
|
|
subs r0, r6, r0
|
|
str r0, [sp, #0x14]
|
|
ldrh r0, [r2]
|
|
ldr r1, _0804B848 @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
mov r6, sl
|
|
ands r0, r6
|
|
lsls r0, r0, #1
|
|
ldr r1, _0804B84C @ =gSineTable
|
|
adds r0, r0, r1
|
|
movs r6, #0
|
|
ldrsh r0, [r0, r6]
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xb
|
|
ldr r1, [sp, #0x34]
|
|
subs r0, r1, r0
|
|
str r0, [sp, #0x18]
|
|
mov r6, sb
|
|
strh r6, [r5, #0x1c]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #2
|
|
adds r0, r1, #0
|
|
ldrh r6, [r2]
|
|
adds r0, r0, r6
|
|
mov r1, sl
|
|
ands r0, r1
|
|
strh r0, [r5, #0xc]
|
|
mov r6, r8
|
|
lsls r0, r6, #7
|
|
movs r6, #0x80
|
|
lsls r6, r6, #2
|
|
adds r1, r0, r6
|
|
ldr r0, [sp, #0x48]
|
|
cmp r0, #0
|
|
blt _0804B850
|
|
lsls r0, r0, #1
|
|
ldr r6, [sp, #0x48]
|
|
adds r0, r0, r6
|
|
b _0804B854
|
|
.align 2, 0
|
|
_0804B840: .4byte gUnknown_080D8888
|
|
_0804B844: .4byte 0x000003FF
|
|
_0804B848: .4byte 0xFFFFFF00
|
|
_0804B84C: .4byte gSineTable
|
|
_0804B850:
|
|
lsls r0, r4, #1
|
|
adds r0, r0, r4
|
|
_0804B854:
|
|
lsls r0, r0, #5
|
|
subs r0, r1, r0
|
|
strh r0, [r5, #0xe]
|
|
ldr r0, [r7, #0x44]
|
|
str r0, [sp]
|
|
ldr r0, _0804B950 @ =0x000002C3
|
|
strh r0, [r5, #8]
|
|
mov r0, sb
|
|
strh r0, [r5, #0xa]
|
|
mov r1, sb
|
|
str r1, [sp, #4]
|
|
mov r0, sp
|
|
ldr r1, [sp, #0x28]
|
|
str r2, [sp, #0x40]
|
|
str r3, [sp, #0x44]
|
|
bl CreateBossParticleStatic
|
|
mov r0, r8
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov r8, r0
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
cmp r0, #2
|
|
bls _0804B7D0
|
|
ldr r3, [sp, #0x24]
|
|
lsls r0, r3, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #2
|
|
bls _0804B7BE
|
|
ldr r6, [sp, #0x3c]
|
|
ldr r0, [sp, #0x20]
|
|
adds r1, r6, r0
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
ldr r2, [sp, #0x38]
|
|
ldr r3, [sp, #0x2c]
|
|
adds r1, r2, r3
|
|
movs r0, #0xa
|
|
strh r0, [r1]
|
|
adds r0, #0xfc
|
|
bl m4aSongNumStart
|
|
_0804B8AC:
|
|
adds r0, r7, #0
|
|
ldr r1, [sp, #0x20]
|
|
bl sub_804B0EC
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804B970
|
|
ldr r6, [sp, #0x20]
|
|
lsls r4, r6, #3
|
|
adds r2, r7, #0
|
|
adds r2, #0x18
|
|
adds r2, r2, r4
|
|
ldr r5, _0804B954 @ =gSineTable
|
|
lsls r6, r6, #1
|
|
adds r3, r7, #0
|
|
adds r3, #0x28
|
|
adds r3, r3, r6
|
|
ldrh r0, [r3]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
adds r2, r7, #0
|
|
adds r2, #0x1c
|
|
adds r2, r2, r4
|
|
ldrh r0, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
ldr r0, [sp, #0x20]
|
|
lsls r2, r0, #2
|
|
adds r0, r7, #0
|
|
adds r0, #0x34
|
|
adds r0, r0, r2
|
|
ldr r1, _0804B958 @ =0x0000FE80
|
|
strh r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x36
|
|
adds r0, r0, r2
|
|
movs r1, #0xfd
|
|
lsls r1, r1, #8
|
|
strh r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x3c
|
|
ldr r1, [sp, #0x20]
|
|
adds r0, r0, r1
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x30
|
|
adds r0, r0, r6
|
|
movs r1, #0x3c
|
|
strh r1, [r0]
|
|
ldr r2, [sp, #0x20]
|
|
lsls r0, r2, #4
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r7, r0
|
|
ldr r3, [sp, #0x20]
|
|
cmp r3, #0
|
|
beq _0804B95C
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804B95E
|
|
.align 2, 0
|
|
_0804B950: .4byte 0x000002C3
|
|
_0804B954: .4byte gSineTable
|
|
_0804B958: .4byte 0x0000FE80
|
|
_0804B95C:
|
|
ldr r0, _0804B980 @ =0x000002BF
|
|
_0804B95E:
|
|
strh r0, [r2, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x20
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
_0804B970:
|
|
add sp, #0x4c
|
|
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
|
|
_0804B980: .4byte 0x000002BF
|
|
|
|
thumb_func_start sub_804B984
|
|
sub_804B984: @ 0x0804B984
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
adds r4, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r5, r1, #0x18
|
|
mov sl, r5
|
|
lsls r2, r5, #3
|
|
adds r0, #0x18
|
|
adds r0, r0, r2
|
|
mov sb, r0
|
|
lsls r3, r5, #1
|
|
adds r0, r4, #0
|
|
adds r0, #0x28
|
|
adds r0, r0, r3
|
|
mov r8, r0
|
|
ldrh r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r6, _0804BA90 @ =gSineTable
|
|
adds r0, r0, r6
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
asrs r1, r1, #5
|
|
mov r6, sb
|
|
ldr r0, [r6]
|
|
adds r0, r0, r1
|
|
str r0, [r6]
|
|
adds r0, r4, #0
|
|
adds r0, #0x1c
|
|
adds r6, r0, r2
|
|
mov r1, r8
|
|
ldrh r0, [r1]
|
|
lsls r0, r0, #1
|
|
ldr r2, _0804BA90 @ =gSineTable
|
|
adds r0, r0, r2
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
asrs r1, r1, #5
|
|
ldr r0, [r6]
|
|
adds r0, r0, r1
|
|
str r0, [r6]
|
|
adds r0, r4, #0
|
|
adds r0, #0x30
|
|
adds r7, r0, r3
|
|
ldrh r0, [r7]
|
|
subs r0, #1
|
|
strh r0, [r7]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _0804BA08
|
|
adds r0, r4, #0
|
|
adds r0, #0x3c
|
|
adds r0, r0, r5
|
|
movs r1, #6
|
|
strb r1, [r0]
|
|
movs r0, #0x1e
|
|
strh r0, [r7]
|
|
_0804BA08:
|
|
adds r0, r4, #0
|
|
mov r1, sl
|
|
bl sub_804B0EC
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804BAAC
|
|
mov r2, r8
|
|
ldrh r0, [r2]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r2, _0804BA90 @ =gSineTable
|
|
adds r0, r0, r2
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
mov r2, sb
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
mov r1, r8
|
|
ldrh r0, [r1]
|
|
lsls r0, r0, #1
|
|
ldr r2, _0804BA90 @ =gSineTable
|
|
adds r0, r0, r2
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r6]
|
|
adds r0, r0, r1
|
|
str r0, [r6]
|
|
mov r6, sl
|
|
lsls r2, r6, #2
|
|
adds r0, r4, #0
|
|
adds r0, #0x34
|
|
adds r0, r0, r2
|
|
ldr r1, _0804BA94 @ =0x0000FE80
|
|
strh r1, [r0]
|
|
adds r0, r4, #0
|
|
adds r0, #0x36
|
|
adds r0, r0, r2
|
|
movs r1, #0xfd
|
|
lsls r1, r1, #8
|
|
strh r1, [r0]
|
|
adds r0, r4, #0
|
|
adds r0, #0x3c
|
|
add r0, sl
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
movs r0, #0x3c
|
|
strh r0, [r7]
|
|
lsls r0, r6, #4
|
|
subs r0, r0, r6
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r4, r0
|
|
cmp r6, #0
|
|
beq _0804BA98
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804BA9A
|
|
.align 2, 0
|
|
_0804BA90: .4byte gSineTable
|
|
_0804BA94: .4byte 0x0000FE80
|
|
_0804BA98:
|
|
ldr r0, _0804BABC @ =0x000002BF
|
|
_0804BA9A:
|
|
strh r0, [r2, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x20
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
_0804BAAC:
|
|
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
|
|
_0804BABC: .4byte 0x000002BF
|
|
|
|
thumb_func_start sub_804BAC0
|
|
sub_804BAC0: @ 0x0804BAC0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
adds r6, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r5, r1, #0x18
|
|
adds r7, r5, #0
|
|
lsls r0, r5, #1
|
|
mov r8, r0
|
|
adds r0, r6, #0
|
|
adds r0, #0x30
|
|
add r0, r8
|
|
mov sb, r0
|
|
ldrh r0, [r0]
|
|
subs r0, #1
|
|
mov r1, sb
|
|
strh r0, [r1]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _0804BB84
|
|
lsls r3, r5, #3
|
|
adds r2, r6, #0
|
|
adds r2, #0x18
|
|
adds r2, r2, r3
|
|
ldr r0, _0804BB5C @ =gSineTable
|
|
mov ip, r0
|
|
adds r0, r6, #0
|
|
adds r0, #0x28
|
|
mov r1, r8
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
add r0, ip
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
adds r2, r6, #0
|
|
adds r2, #0x1c
|
|
adds r2, r2, r3
|
|
ldrh r0, [r4]
|
|
lsls r0, r0, #1
|
|
add r0, ip
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
adds r0, r6, #0
|
|
adds r0, #0x40
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0804BB60
|
|
adds r0, r6, #0
|
|
adds r0, #0x2c
|
|
add r0, r8
|
|
ldrh r1, [r4]
|
|
strh r1, [r0]
|
|
adds r0, r6, #0
|
|
adds r0, #0x3c
|
|
adds r0, r0, r5
|
|
movs r1, #4
|
|
strb r1, [r0]
|
|
movs r0, #0x32
|
|
b _0804BB6C
|
|
.align 2, 0
|
|
_0804BB5C: .4byte gSineTable
|
|
_0804BB60:
|
|
adds r0, r6, #0
|
|
adds r0, #0x3c
|
|
adds r0, r0, r5
|
|
movs r1, #5
|
|
strb r1, [r0]
|
|
movs r0, #0xa0
|
|
_0804BB6C:
|
|
mov r1, sb
|
|
strh r0, [r1]
|
|
lsls r0, r7, #4
|
|
subs r0, r0, r7
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r6, r0
|
|
cmp r7, #0
|
|
beq _0804BC20
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804BC22
|
|
_0804BB84:
|
|
adds r0, r6, #0
|
|
adds r1, r7, #0
|
|
bl sub_804B0EC
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804BC34
|
|
lsls r0, r7, #3
|
|
mov ip, r0
|
|
adds r2, r6, #0
|
|
adds r2, #0x18
|
|
add r2, ip
|
|
ldr r5, _0804BC18 @ =gSineTable
|
|
adds r3, r6, #0
|
|
adds r3, #0x28
|
|
add r3, r8
|
|
ldrh r0, [r3]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
adds r2, r6, #0
|
|
adds r2, #0x1c
|
|
add r2, ip
|
|
ldrh r0, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #4
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #6
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
lsls r2, r7, #2
|
|
adds r0, r6, #0
|
|
adds r0, #0x34
|
|
adds r0, r0, r2
|
|
ldr r1, _0804BC1C @ =0x0000FE80
|
|
strh r1, [r0]
|
|
adds r0, r6, #0
|
|
adds r0, #0x36
|
|
adds r0, r0, r2
|
|
movs r1, #0xfd
|
|
lsls r1, r1, #8
|
|
strh r1, [r0]
|
|
adds r0, r6, #0
|
|
adds r0, #0x3c
|
|
adds r0, r0, r7
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
movs r0, #0x3c
|
|
mov r1, sb
|
|
strh r0, [r1]
|
|
lsls r0, r7, #4
|
|
subs r0, r0, r7
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
adds r2, r6, r0
|
|
cmp r7, #0
|
|
beq _0804BC20
|
|
movs r0, #0xb0
|
|
lsls r0, r0, #2
|
|
b _0804BC22
|
|
.align 2, 0
|
|
_0804BC18: .4byte gSineTable
|
|
_0804BC1C: .4byte 0x0000FE80
|
|
_0804BC20:
|
|
ldr r0, _0804BC40 @ =0x000002BF
|
|
_0804BC22:
|
|
strh r0, [r2, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x20
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
_0804BC34:
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804BC40: .4byte 0x000002BF
|
|
|
|
thumb_func_start sub_804BC44
|
|
sub_804BC44: @ 0x0804BC44
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x64
|
|
mov sb, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
str r1, [sp, #0x20]
|
|
lsls r2, r1, #3
|
|
adds r0, #0x18
|
|
adds r6, r0, r2
|
|
ldr r0, _0804BDE0 @ =gSineTable
|
|
mov ip, r0
|
|
lsls r7, r1, #1
|
|
mov r1, sb
|
|
adds r1, #0x2c
|
|
str r1, [sp, #0x24]
|
|
adds r1, r1, r7
|
|
mov sl, r1
|
|
ldrh r0, [r1]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #1
|
|
adds r0, r0, r3
|
|
lsls r0, r0, #1
|
|
add r0, ip
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
lsls r1, r0, #5
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #0xa
|
|
ldr r0, [r6]
|
|
subs r0, r0, r1
|
|
str r0, [r6]
|
|
mov r0, sb
|
|
adds r0, #0x1c
|
|
adds r5, r0, r2
|
|
mov r1, sl
|
|
ldrh r0, [r1]
|
|
lsls r0, r0, #1
|
|
add r0, ip
|
|
movs r2, #0
|
|
ldrsh r0, [r0, r2]
|
|
lsls r1, r0, #5
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #0xa
|
|
ldr r0, [r5]
|
|
subs r0, r0, r1
|
|
str r0, [r5]
|
|
mov r3, sb
|
|
adds r3, #0x28
|
|
str r3, [sp, #0x28]
|
|
adds r3, r3, r7
|
|
mov r4, sb
|
|
adds r4, #0x30
|
|
str r4, [sp, #0x2c]
|
|
adds r2, r4, r7
|
|
ldrh r0, [r2]
|
|
lsls r0, r0, #2
|
|
ldrh r1, [r3]
|
|
adds r0, r0, r1
|
|
ldr r4, _0804BDE4 @ =0x000003FF
|
|
adds r1, r4, #0
|
|
ands r0, r1
|
|
strh r0, [r3]
|
|
ldrh r0, [r2]
|
|
subs r0, #1
|
|
strh r0, [r2]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
beq _0804BCD6
|
|
b _0804BE56
|
|
_0804BCD6:
|
|
mov r0, sb
|
|
ldr r4, [r0]
|
|
ldr r3, [r6]
|
|
ldr r0, _0804BDE8 @ =gUnknown_080D8888
|
|
ldr r2, [sp, #0x20]
|
|
lsls r1, r2, #2
|
|
adds r2, r1, r0
|
|
adds r4, r4, r3
|
|
ldrh r2, [r2]
|
|
adds r4, r4, r2
|
|
mov r2, sb
|
|
ldr r3, [r2, #4]
|
|
ldr r2, [r5]
|
|
adds r0, #2
|
|
adds r1, r1, r0
|
|
adds r3, r3, r2
|
|
ldrh r1, [r1]
|
|
adds r3, r3, r1
|
|
mov r5, sl
|
|
ldrh r2, [r5]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r2, r1
|
|
lsls r0, r0, #1
|
|
add r0, ip
|
|
movs r5, #0
|
|
ldrsh r1, [r0, r5]
|
|
lsls r0, r1, #4
|
|
subs r0, r0, r1
|
|
asrs r0, r0, #6
|
|
subs r4, r4, r0
|
|
lsls r2, r2, #1
|
|
add r2, ip
|
|
movs r0, #0
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, #4
|
|
subs r0, r0, r1
|
|
asrs r0, r0, #6
|
|
subs r3, r3, r0
|
|
movs r1, #0
|
|
mov r8, r1
|
|
str r7, [sp, #0x38]
|
|
ldr r2, [sp, #0x24]
|
|
str r2, [sp, #0x4c]
|
|
ldr r5, [sp, #0x28]
|
|
str r5, [sp, #0x48]
|
|
ldr r7, [sp, #0x2c]
|
|
str r7, [sp, #0x50]
|
|
mov r0, sb
|
|
adds r0, #0xc
|
|
str r0, [sp, #0x34]
|
|
mov r1, sb
|
|
adds r1, #0x3c
|
|
str r1, [sp, #0x54]
|
|
asrs r4, r4, #8
|
|
str r4, [sp, #0x40]
|
|
asrs r3, r3, #8
|
|
str r3, [sp, #0x44]
|
|
mov r2, sl
|
|
mov r4, sp
|
|
movs r3, #0
|
|
mov sl, r3
|
|
_0804BD52:
|
|
movs r6, #0
|
|
mov r5, r8
|
|
subs r5, #1
|
|
str r5, [sp, #0x60]
|
|
mov r7, r8
|
|
lsls r7, r7, #1
|
|
str r7, [sp, #0x3c]
|
|
mov r0, r8
|
|
adds r0, #1
|
|
str r0, [sp, #0x30]
|
|
adds r3, r5, #0
|
|
movs r1, #1
|
|
mov r7, r8
|
|
subs r5, r1, r7
|
|
_0804BD6E:
|
|
ldrh r0, [r2]
|
|
ldr r1, _0804BDEC @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
ldr r7, _0804BDE4 @ =0x000003FF
|
|
ands r0, r7
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r7, _0804BDE0 @ =gSineTable
|
|
adds r0, r0, r7
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xb
|
|
ldr r7, [sp, #0x40]
|
|
subs r0, r7, r0
|
|
str r0, [sp, #0x14]
|
|
ldrh r0, [r2]
|
|
ldr r1, _0804BDEC @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
ldr r7, _0804BDE4 @ =0x000003FF
|
|
ands r0, r7
|
|
lsls r0, r0, #1
|
|
ldr r1, _0804BDE0 @ =gSineTable
|
|
adds r0, r0, r1
|
|
movs r7, #0
|
|
ldrsh r0, [r0, r7]
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0xb
|
|
ldr r1, [sp, #0x44]
|
|
subs r0, r1, r0
|
|
str r0, [sp, #0x18]
|
|
mov r7, sl
|
|
strh r7, [r4, #0x1c]
|
|
movs r0, #0x90
|
|
lsls r0, r0, #2
|
|
adds r1, r0, #0
|
|
ldrh r7, [r2]
|
|
adds r1, r1, r7
|
|
ldr r0, [sp, #0x3c]
|
|
add r0, r8
|
|
adds r0, r0, r6
|
|
lsls r0, r0, #5
|
|
subs r1, r1, r0
|
|
ldr r0, _0804BDE4 @ =0x000003FF
|
|
ands r1, r0
|
|
strh r1, [r4, #0xc]
|
|
lsls r0, r6, #7
|
|
movs r7, #0x80
|
|
lsls r7, r7, #2
|
|
adds r1, r0, r7
|
|
cmp r5, #0
|
|
blt _0804BDF0
|
|
lsls r0, r5, #1
|
|
adds r0, r0, r5
|
|
b _0804BDF6
|
|
.align 2, 0
|
|
_0804BDE0: .4byte gSineTable
|
|
_0804BDE4: .4byte 0x000003FF
|
|
_0804BDE8: .4byte gUnknown_080D8888
|
|
_0804BDEC: .4byte 0xFFFFFF00
|
|
_0804BDF0:
|
|
ldr r7, [sp, #0x60]
|
|
lsls r0, r7, #1
|
|
adds r0, r0, r7
|
|
_0804BDF6:
|
|
lsls r0, r0, #5
|
|
subs r0, r1, r0
|
|
strh r0, [r4, #0xe]
|
|
mov r1, sb
|
|
ldr r0, [r1, #0x44]
|
|
str r0, [sp]
|
|
ldr r0, _0804BE68 @ =0x000002C3
|
|
strh r0, [r4, #8]
|
|
mov r7, sl
|
|
strh r7, [r4, #0xa]
|
|
mov r0, sl
|
|
str r0, [sp, #4]
|
|
mov r0, sp
|
|
ldr r1, [sp, #0x34]
|
|
str r2, [sp, #0x58]
|
|
str r3, [sp, #0x5c]
|
|
bl CreateBossParticleStatic
|
|
adds r0, r6, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r2, [sp, #0x58]
|
|
ldr r3, [sp, #0x5c]
|
|
cmp r6, #2
|
|
bls _0804BD6E
|
|
ldr r1, [sp, #0x30]
|
|
lsls r0, r1, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov r8, r0
|
|
cmp r0, #2
|
|
bls _0804BD52
|
|
ldr r3, [sp, #0x48]
|
|
ldr r4, [sp, #0x38]
|
|
adds r2, r3, r4
|
|
ldr r5, [sp, #0x4c]
|
|
adds r0, r5, r4
|
|
ldrh r0, [r0]
|
|
movs r1, #0
|
|
strh r0, [r2]
|
|
ldr r7, [sp, #0x54]
|
|
ldr r2, [sp, #0x20]
|
|
adds r0, r7, r2
|
|
strb r1, [r0]
|
|
ldr r3, [sp, #0x50]
|
|
adds r1, r3, r4
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
strh r0, [r1]
|
|
_0804BE56:
|
|
add sp, #0x64
|
|
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
|
|
_0804BE68: .4byte 0x000002C3
|
|
|
|
thumb_func_start sub_804BE6C
|
|
sub_804BE6C: @ 0x0804BE6C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x4c
|
|
mov r8, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
str r1, [sp, #0x20]
|
|
lsls r2, r1, #3
|
|
adds r0, #0x18
|
|
adds r3, r0, r2
|
|
ldr r0, _0804BFCC @ =gSineTable
|
|
mov sb, r0
|
|
lsls r7, r1, #1
|
|
mov r0, r8
|
|
adds r0, #0x28
|
|
adds r6, r0, r7
|
|
ldrh r0, [r6]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
add r0, sb
|
|
movs r5, #0
|
|
ldrsh r0, [r0, r5]
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
asrs r1, r1, #9
|
|
ldr r0, [r3]
|
|
subs r0, r0, r1
|
|
str r0, [r3]
|
|
mov r0, r8
|
|
adds r0, #0x1c
|
|
adds r5, r0, r2
|
|
ldrh r0, [r6]
|
|
lsls r0, r0, #1
|
|
add r0, sb
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
asrs r1, r1, #9
|
|
ldr r0, [r5]
|
|
subs r0, r0, r1
|
|
str r0, [r5]
|
|
movs r2, #0x30
|
|
add r2, r8
|
|
mov sl, r2
|
|
adds r4, r2, r7
|
|
ldrh r0, [r4]
|
|
subs r0, #1
|
|
strh r0, [r4]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
beq _0804BEE0
|
|
b _0804C034
|
|
_0804BEE0:
|
|
mov r0, r8
|
|
ldr r4, [r0]
|
|
ldr r3, [r3]
|
|
ldr r0, _0804BFD0 @ =gUnknown_080D8888
|
|
ldr r2, [sp, #0x20]
|
|
lsls r1, r2, #2
|
|
adds r2, r1, r0
|
|
adds r4, r4, r3
|
|
ldrh r2, [r2]
|
|
adds r4, r4, r2
|
|
mov r2, r8
|
|
ldr r3, [r2, #4]
|
|
ldr r2, [r5]
|
|
adds r0, #2
|
|
adds r1, r1, r0
|
|
adds r3, r3, r2
|
|
ldrh r1, [r1]
|
|
adds r3, r3, r1
|
|
ldrh r2, [r6]
|
|
movs r5, #0x80
|
|
lsls r5, r5, #1
|
|
adds r0, r2, r5
|
|
lsls r0, r0, #1
|
|
add r0, sb
|
|
movs r5, #0
|
|
ldrsh r1, [r0, r5]
|
|
lsls r0, r1, #4
|
|
subs r0, r0, r1
|
|
asrs r0, r0, #6
|
|
subs r4, r4, r0
|
|
lsls r2, r2, #1
|
|
add r2, sb
|
|
movs r0, #0
|
|
ldrsh r1, [r2, r0]
|
|
lsls r0, r1, #4
|
|
subs r0, r0, r1
|
|
asrs r0, r0, #6
|
|
subs r3, r3, r0
|
|
movs r0, #0
|
|
str r7, [sp, #0x30]
|
|
mov r1, sl
|
|
str r1, [sp, #0x3c]
|
|
mov r2, r8
|
|
adds r2, #0xc
|
|
str r2, [sp, #0x2c]
|
|
mov r5, r8
|
|
adds r5, #0x3c
|
|
str r5, [sp, #0x40]
|
|
asrs r4, r4, #8
|
|
str r4, [sp, #0x34]
|
|
asrs r3, r3, #8
|
|
str r3, [sp, #0x38]
|
|
adds r7, r6, #0
|
|
ldr r1, _0804BFD4 @ =0x000003FF
|
|
mov sl, r1
|
|
mov r4, sp
|
|
_0804BF50:
|
|
movs r6, #0
|
|
subs r2, r0, #1
|
|
mov sb, r2
|
|
adds r5, r0, #1
|
|
str r5, [sp, #0x28]
|
|
movs r1, #1
|
|
subs r3, r1, r0
|
|
lsls r5, r3, #5
|
|
str r5, [sp, #0x24]
|
|
_0804BF62:
|
|
ldrh r0, [r7]
|
|
ldr r1, _0804BFD8 @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
mov r5, sl
|
|
ands r0, r5
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r5, _0804BFCC @ =gSineTable
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #0xb
|
|
ldr r5, [sp, #0x34]
|
|
subs r0, r5, r0
|
|
str r0, [sp, #0x14]
|
|
ldrh r0, [r7]
|
|
ldr r1, _0804BFD8 @ =0xFFFFFF00
|
|
adds r0, r0, r1
|
|
mov r5, sl
|
|
ands r0, r5
|
|
lsls r0, r0, #1
|
|
ldr r1, _0804BFCC @ =gSineTable
|
|
adds r0, r0, r1
|
|
movs r5, #0
|
|
ldrsh r0, [r0, r5]
|
|
muls r0, r2, r0
|
|
asrs r0, r0, #0xb
|
|
ldr r1, [sp, #0x38]
|
|
subs r0, r1, r0
|
|
str r0, [sp, #0x18]
|
|
movs r0, #0x12
|
|
strh r0, [r4, #0x1c]
|
|
movs r5, #0x80
|
|
lsls r5, r5, #2
|
|
adds r0, r5, #0
|
|
ldrh r1, [r7]
|
|
adds r0, r0, r1
|
|
mov r5, sl
|
|
ands r0, r5
|
|
strh r0, [r4, #0xc]
|
|
lsls r0, r6, #1
|
|
adds r0, r0, r6
|
|
lsls r0, r0, #5
|
|
adds r1, r0, #0
|
|
adds r1, #0x80
|
|
cmp r3, #0
|
|
blt _0804BFDC
|
|
ldr r5, [sp, #0x24]
|
|
subs r0, r1, r5
|
|
b _0804BFE2
|
|
.align 2, 0
|
|
_0804BFCC: .4byte gSineTable
|
|
_0804BFD0: .4byte gUnknown_080D8888
|
|
_0804BFD4: .4byte 0x000003FF
|
|
_0804BFD8: .4byte 0xFFFFFF00
|
|
_0804BFDC:
|
|
mov r5, sb
|
|
lsls r0, r5, #5
|
|
subs r0, r1, r0
|
|
_0804BFE2:
|
|
movs r5, #0
|
|
strh r0, [r4, #0xe]
|
|
mov r1, r8
|
|
ldr r0, [r1, #0x44]
|
|
str r0, [sp]
|
|
ldr r0, _0804C030 @ =0x000002C3
|
|
strh r0, [r4, #8]
|
|
strh r5, [r4, #0xa]
|
|
str r5, [sp, #4]
|
|
mov r0, sp
|
|
ldr r1, [sp, #0x2c]
|
|
str r2, [sp, #0x44]
|
|
str r3, [sp, #0x48]
|
|
bl CreateBossParticleStatic
|
|
adds r0, r6, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r2, [sp, #0x44]
|
|
ldr r3, [sp, #0x48]
|
|
cmp r6, #2
|
|
bls _0804BF62
|
|
ldr r2, [sp, #0x28]
|
|
lsls r0, r2, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #2
|
|
bls _0804BF50
|
|
ldr r1, [sp, #0x40]
|
|
ldr r2, [sp, #0x20]
|
|
adds r0, r1, r2
|
|
strb r5, [r0]
|
|
ldr r5, [sp, #0x3c]
|
|
ldr r0, [sp, #0x30]
|
|
adds r1, r5, r0
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
strh r0, [r1]
|
|
b _0804C06C
|
|
.align 2, 0
|
|
_0804C030: .4byte 0x000002C3
|
|
_0804C034:
|
|
mov r0, r8
|
|
ldr r1, [sp, #0x20]
|
|
bl sub_804B2EC
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804C06C
|
|
ldr r1, [sp, #0x20]
|
|
lsls r2, r1, #2
|
|
mov r0, r8
|
|
adds r0, #0x34
|
|
adds r0, r0, r2
|
|
ldr r1, _0804C07C @ =0x0000FE80
|
|
strh r1, [r0]
|
|
mov r0, r8
|
|
adds r0, #0x36
|
|
adds r0, r0, r2
|
|
movs r1, #0xfd
|
|
lsls r1, r1, #8
|
|
strh r1, [r0]
|
|
mov r0, r8
|
|
adds r0, #0x3c
|
|
ldr r2, [sp, #0x20]
|
|
adds r0, r0, r2
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
movs r0, #0x3c
|
|
strh r0, [r4]
|
|
_0804C06C:
|
|
add sp, #0x4c
|
|
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
|
|
_0804C07C: .4byte 0x0000FE80
|
|
|
|
thumb_func_start sub_804C080
|
|
sub_804C080: @ 0x0804C080
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x20
|
|
mov sl, r0
|
|
ldr r0, _0804C20C @ =gStageTime
|
|
mov sb, r0
|
|
ldr r7, [r0]
|
|
movs r0, #7
|
|
ands r7, r0
|
|
cmp r7, #0
|
|
bne _0804C116
|
|
ldr r1, _0804C210 @ =gPseudoRandom
|
|
mov r8, r1
|
|
ldr r0, [r1]
|
|
ldr r5, _0804C214 @ =0x00196225
|
|
adds r2, r0, #0
|
|
muls r2, r5, r2
|
|
ldr r4, _0804C218 @ =0x3C6EF35F
|
|
adds r2, r2, r4
|
|
ldr r6, _0804C21C @ =gCamera
|
|
movs r3, #0xff
|
|
adds r1, r2, #0
|
|
ands r1, r3
|
|
ldr r0, [r6]
|
|
adds r0, r0, r1
|
|
str r0, [sp, #0x14]
|
|
muls r2, r5, r2
|
|
adds r2, r2, r4
|
|
adds r1, r2, #0
|
|
ands r1, r3
|
|
ldr r0, [r6, #4]
|
|
adds r0, r0, r1
|
|
str r0, [sp, #0x18]
|
|
mov r1, sp
|
|
movs r0, #0x12
|
|
strh r0, [r1, #0x1c]
|
|
mov r3, sp
|
|
adds r1, r2, #0
|
|
muls r1, r5, r1
|
|
adds r1, r1, r4
|
|
ldr r0, _0804C220 @ =0x000003FF
|
|
ands r0, r1
|
|
strh r0, [r3, #0xc]
|
|
mov r2, sp
|
|
adds r0, r1, #0
|
|
muls r0, r5, r0
|
|
adds r0, r0, r4
|
|
mov r3, r8
|
|
str r0, [r3]
|
|
ldr r1, _0804C224 @ =0x000001FF
|
|
ands r0, r1
|
|
adds r1, #1
|
|
adds r0, r0, r1
|
|
strh r0, [r2, #0xe]
|
|
ldr r0, _0804C228 @ =0x06012980
|
|
str r0, [sp]
|
|
mov r1, sp
|
|
ldr r0, _0804C22C @ =0x0000026B
|
|
strh r0, [r1, #8]
|
|
mov r0, sp
|
|
strh r7, [r0, #0xa]
|
|
str r7, [sp, #4]
|
|
mov r1, sl
|
|
adds r1, #0xc
|
|
bl CreateBossParticleStatic
|
|
movs r0, #0x90
|
|
bl m4aSongNumStart
|
|
ldr r0, _0804C230 @ =gMPlayInfo_SE3
|
|
bl m4aMPlayImmInit
|
|
_0804C116:
|
|
ldr r0, _0804C230 @ =gMPlayInfo_SE3
|
|
ldr r1, _0804C234 @ =0x0000FFFF
|
|
mov r3, sl
|
|
ldrh r2, [r3, #0x14]
|
|
bl m4aMPlayVolumeControl
|
|
mov r0, sl
|
|
ldr r2, [r0, #0x14]
|
|
cmp r2, #0
|
|
beq _0804C13C
|
|
mov r1, sb
|
|
ldr r0, [r1]
|
|
movs r1, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0804C13C
|
|
subs r0, r2, #1
|
|
mov r3, sl
|
|
str r0, [r3, #0x14]
|
|
_0804C13C:
|
|
ldr r0, _0804C20C @ =gStageTime
|
|
ldr r0, [r0]
|
|
adds r7, r0, #3
|
|
movs r0, #7
|
|
ands r7, r0
|
|
cmp r7, #0
|
|
bne _0804C1FC
|
|
ldr r0, _0804C210 @ =gPseudoRandom
|
|
mov sb, r0
|
|
ldr r0, [r0]
|
|
ldr r1, _0804C214 @ =0x00196225
|
|
mov r8, r1
|
|
mov r3, r8
|
|
muls r3, r0, r3
|
|
adds r0, r3, #0
|
|
ldr r6, _0804C218 @ =0x3C6EF35F
|
|
adds r0, r0, r6
|
|
mov r1, sb
|
|
str r0, [r1]
|
|
lsls r0, r0, #0x18
|
|
movs r4, #0xf0
|
|
lsls r4, r4, #0x14
|
|
ands r4, r0
|
|
lsrs r4, r4, #0x18
|
|
adds r0, r4, #0
|
|
movs r1, #6
|
|
bl Div
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #1
|
|
subs r4, r4, r1
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
mov r3, sb
|
|
ldr r0, [r3]
|
|
mov r2, r8
|
|
muls r2, r0, r2
|
|
adds r2, r2, r6
|
|
ldr r5, _0804C21C @ =gCamera
|
|
movs r3, #0xff
|
|
adds r1, r2, #0
|
|
ands r1, r3
|
|
ldr r0, [r5]
|
|
adds r0, r0, r1
|
|
str r0, [sp, #0x14]
|
|
mov r0, r8
|
|
muls r0, r2, r0
|
|
adds r2, r0, #0
|
|
adds r2, r2, r6
|
|
adds r1, r2, #0
|
|
ands r1, r3
|
|
ldr r0, [r5, #4]
|
|
adds r0, r0, r1
|
|
str r0, [sp, #0x18]
|
|
mov r1, sp
|
|
movs r0, #0x20
|
|
strh r0, [r1, #0x1c]
|
|
mov r3, sp
|
|
mov r0, r8
|
|
muls r0, r2, r0
|
|
adds r0, r0, r6
|
|
mov r1, sb
|
|
str r0, [r1]
|
|
ldr r1, _0804C220 @ =0x000003FF
|
|
ands r0, r1
|
|
strh r0, [r3, #0xc]
|
|
mov r1, sp
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
strh r0, [r1, #0xe]
|
|
ldr r2, _0804C238 @ =gUnknown_080D79D0
|
|
lsls r1, r4, #1
|
|
adds r1, r1, r4
|
|
lsls r1, r1, #2
|
|
adds r0, r1, r2
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #5
|
|
ldr r3, _0804C23C @ =0x06010000
|
|
adds r0, r0, r3
|
|
str r0, [sp]
|
|
mov r3, sp
|
|
adds r0, r2, #4
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
strh r0, [r3, #8]
|
|
adds r2, #8
|
|
adds r1, r1, r2
|
|
ldr r0, [r1]
|
|
strh r0, [r3, #0xa]
|
|
str r7, [sp, #4]
|
|
mov r1, sl
|
|
adds r1, #0xc
|
|
mov r0, sp
|
|
bl CreateBossParticleStatic
|
|
_0804C1FC:
|
|
add sp, #0x20
|
|
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
|
|
_0804C20C: .4byte gStageTime
|
|
_0804C210: .4byte gPseudoRandom
|
|
_0804C214: .4byte 0x00196225
|
|
_0804C218: .4byte 0x3C6EF35F
|
|
_0804C21C: .4byte gCamera
|
|
_0804C220: .4byte 0x000003FF
|
|
_0804C224: .4byte 0x000001FF
|
|
_0804C228: .4byte 0x06012980
|
|
_0804C22C: .4byte 0x0000026B
|
|
_0804C230: .4byte gMPlayInfo_SE3
|
|
_0804C234: .4byte 0x0000FFFF
|
|
_0804C238: .4byte gUnknown_080D79D0
|
|
_0804C23C: .4byte 0x06010000
|
|
|
|
thumb_func_start sub_804C240
|
|
sub_804C240: @ 0x0804C240
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x24
|
|
adds r4, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r2, r1, #0x18
|
|
mov ip, r2
|
|
adds r0, #0x42
|
|
adds r3, r0, r2
|
|
ldrb r0, [r3]
|
|
cmp r0, #0
|
|
beq _0804C260
|
|
b _0804C37C
|
|
_0804C260:
|
|
lsls r7, r2, #3
|
|
adds r0, r4, #0
|
|
adds r0, #0x1c
|
|
adds r6, r0, r7
|
|
ldr r1, [r4, #4]
|
|
ldr r0, [r6]
|
|
adds r1, r1, r0
|
|
ldr r0, _0804C290 @ =gUnknown_080D8888
|
|
mov sb, r0
|
|
lsls r5, r2, #2
|
|
adds r0, #2
|
|
adds r0, r5, r0
|
|
ldrh r0, [r0]
|
|
mov r8, r0
|
|
add r1, r8
|
|
asrs r1, r1, #8
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
cmp r1, r0
|
|
ble _0804C294
|
|
movs r0, #1
|
|
strb r0, [r3]
|
|
b _0804C37C
|
|
.align 2, 0
|
|
_0804C290: .4byte gUnknown_080D8888
|
|
_0804C294:
|
|
mov r1, ip
|
|
lsls r0, r1, #1
|
|
adds r2, r4, #0
|
|
adds r2, #0x28
|
|
adds r2, r2, r0
|
|
movs r3, #0xc8
|
|
lsls r3, r3, #2
|
|
adds r0, r3, #0
|
|
ldrh r1, [r2]
|
|
adds r0, r0, r1
|
|
adds r3, #0xdf
|
|
adds r1, r3, #0
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
adds r0, r4, #0
|
|
adds r0, #0x36
|
|
adds r3, r0, r5
|
|
ldrh r0, [r3]
|
|
adds r0, #0x20
|
|
strh r0, [r3]
|
|
adds r0, r4, #0
|
|
adds r0, #0x18
|
|
adds r2, r0, r7
|
|
adds r0, #0x1c
|
|
adds r0, r0, r5
|
|
mov ip, r0
|
|
movs r7, #0
|
|
ldrsh r1, [r0, r7]
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
movs r0, #0
|
|
ldrsh r1, [r3, r0]
|
|
ldr r0, [r6]
|
|
adds r0, r0, r1
|
|
str r0, [sp, #0x20]
|
|
str r0, [r6]
|
|
ldr r1, _0804C38C @ =gStageTime
|
|
mov sl, r1
|
|
ldr r6, [r1]
|
|
movs r0, #3
|
|
ands r6, r0
|
|
cmp r6, #0
|
|
bne _0804C37C
|
|
ldr r1, [r4]
|
|
ldr r0, [r2]
|
|
mov r7, sb
|
|
adds r2, r5, r7
|
|
adds r1, r1, r0
|
|
ldrh r2, [r2]
|
|
adds r1, r1, r2
|
|
ldr r0, [r4, #4]
|
|
ldr r2, [sp, #0x20]
|
|
adds r0, r0, r2
|
|
add r0, r8
|
|
asrs r1, r1, #8
|
|
str r1, [sp, #0x14]
|
|
asrs r0, r0, #8
|
|
str r0, [sp, #0x18]
|
|
mov r0, sp
|
|
strh r6, [r0, #0x1c]
|
|
ldrh r0, [r3]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x13
|
|
rsbs r0, r0, #0
|
|
mov r3, ip
|
|
ldrh r1, [r3]
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x13
|
|
rsbs r1, r1, #0
|
|
bl sub_8004418
|
|
mov r1, sp
|
|
strh r0, [r1, #0xc]
|
|
mov r3, sp
|
|
ldr r2, _0804C390 @ =gPseudoRandom
|
|
ldr r1, [r2]
|
|
ldr r0, _0804C394 @ =0x00196225
|
|
muls r0, r1, r0
|
|
ldr r5, _0804C398 @ =0x3C6EF35F
|
|
adds r0, r0, r5
|
|
str r0, [r2]
|
|
mov r2, sp
|
|
movs r1, #0x1f
|
|
ands r0, r1
|
|
ldrh r2, [r2, #0xc]
|
|
adds r0, r0, r2
|
|
subs r0, #0x10
|
|
ldr r1, _0804C39C @ =0x000003FF
|
|
ands r0, r1
|
|
strh r0, [r3, #0xc]
|
|
ldr r2, _0804C3A0 @ =gSineTable
|
|
mov r7, sl
|
|
ldr r0, [r7]
|
|
lsls r0, r0, #4
|
|
ands r0, r1
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x16
|
|
subs r1, #0xff
|
|
adds r0, r0, r1
|
|
strh r0, [r3, #0xe]
|
|
ldr r0, _0804C3A4 @ =0x06012980
|
|
str r0, [sp]
|
|
mov r1, sp
|
|
ldr r0, _0804C3A8 @ =0x0000026B
|
|
strh r0, [r1, #8]
|
|
mov r0, sp
|
|
strh r6, [r0, #0xa]
|
|
str r6, [sp, #4]
|
|
adds r1, r4, #0
|
|
adds r1, #0xc
|
|
bl CreateBossParticleStatic
|
|
_0804C37C:
|
|
add sp, #0x24
|
|
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
|
|
_0804C38C: .4byte gStageTime
|
|
_0804C390: .4byte gPseudoRandom
|
|
_0804C394: .4byte 0x00196225
|
|
_0804C398: .4byte 0x3C6EF35F
|
|
_0804C39C: .4byte 0x000003FF
|
|
_0804C3A0: .4byte gSineTable
|
|
_0804C3A4: .4byte 0x06012980
|
|
_0804C3A8: .4byte 0x0000026B
|
|
|
|
thumb_func_start sub_804C3AC
|
|
sub_804C3AC: @ 0x0804C3AC
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x14
|
|
mov sl, r0
|
|
ldr r5, _0804C42C @ =gPseudoRandom
|
|
ldr r0, [r5]
|
|
ldr r4, _0804C430 @ =0x00196225
|
|
adds r1, r0, #0
|
|
muls r1, r4, r1
|
|
ldr r2, _0804C434 @ =0x3C6EF35F
|
|
adds r1, r1, r2
|
|
movs r3, #7
|
|
adds r0, r1, #0
|
|
ands r0, r3
|
|
subs r0, #3
|
|
lsls r0, r0, #8
|
|
str r0, [sp]
|
|
adds r0, r1, #0
|
|
muls r0, r4, r0
|
|
adds r0, r0, r2
|
|
str r0, [r5]
|
|
ands r0, r3
|
|
subs r0, #3
|
|
lsls r0, r0, #8
|
|
str r0, [sp, #4]
|
|
ldr r3, _0804C438 @ =gBgScrollRegs
|
|
ldr r1, _0804C43C @ =gCamera
|
|
ldr r4, [r1]
|
|
mov r0, sl
|
|
ldr r2, [r0]
|
|
ldr r5, [sp]
|
|
adds r0, r2, r5
|
|
asrs r0, r0, #8
|
|
subs r0, r4, r0
|
|
strh r0, [r3]
|
|
ldr r1, [r1, #4]
|
|
mov r5, sl
|
|
ldr r0, [r5, #4]
|
|
ldr r5, [sp, #4]
|
|
adds r0, r0, r5
|
|
asrs r0, r0, #8
|
|
subs r1, r1, r0
|
|
strh r1, [r3, #2]
|
|
movs r0, #0xbe
|
|
lsls r0, r0, #8
|
|
adds r2, r2, r0
|
|
asrs r2, r2, #8
|
|
subs r6, r2, r4
|
|
adds r1, r6, #0
|
|
adds r1, #0x32
|
|
movs r0, #0xa5
|
|
lsls r0, r0, #1
|
|
cmp r1, r0
|
|
bls _0804C448
|
|
ldr r2, _0804C440 @ =gDispCnt
|
|
ldrh r1, [r2]
|
|
ldr r0, _0804C444 @ =0x0000FEFF
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _0804C456
|
|
.align 2, 0
|
|
_0804C42C: .4byte gPseudoRandom
|
|
_0804C430: .4byte 0x00196225
|
|
_0804C434: .4byte 0x3C6EF35F
|
|
_0804C438: .4byte gBgScrollRegs
|
|
_0804C43C: .4byte gCamera
|
|
_0804C440: .4byte gDispCnt
|
|
_0804C444: .4byte 0x0000FEFF
|
|
_0804C448:
|
|
ldr r0, _0804C5A0 @ =gDispCnt
|
|
ldrh r1, [r0]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #1
|
|
adds r2, r3, #0
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
_0804C456:
|
|
mov r5, sl
|
|
adds r5, #0x54
|
|
movs r4, #0x84
|
|
add r4, sl
|
|
mov r8, r4
|
|
mov r1, sl
|
|
ldr r0, [r1]
|
|
ldr r2, [sp]
|
|
adds r0, r0, r2
|
|
movs r3, #0xbe
|
|
lsls r3, r3, #8
|
|
adds r6, r0, r3
|
|
ldr r0, [r1, #4]
|
|
ldr r4, [sp, #4]
|
|
adds r0, r0, r4
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #6
|
|
adds r7, r0, r1
|
|
asrs r0, r6, #8
|
|
ldr r2, _0804C5A4 @ =gCamera
|
|
ldr r1, [r2]
|
|
subs r0, r0, r1
|
|
strh r0, [r5, #0x16]
|
|
asrs r0, r7, #8
|
|
ldr r1, [r2, #4]
|
|
subs r0, r0, r1
|
|
strh r0, [r5, #0x18]
|
|
ldr r2, _0804C5A8 @ =gUnknown_030054B8
|
|
ldrb r0, [r2]
|
|
adds r1, r0, #1
|
|
strb r1, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0804C5AC @ =0x00003060
|
|
orrs r0, r1
|
|
str r0, [r5, #0x10]
|
|
mov r2, sl
|
|
ldrh r0, [r2, #0x10]
|
|
mov r3, r8
|
|
strh r0, [r3]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
strh r0, [r3, #2]
|
|
strh r0, [r3, #4]
|
|
ldrh r0, [r5, #0x16]
|
|
strh r0, [r3, #6]
|
|
ldrh r0, [r5, #0x18]
|
|
strh r0, [r3, #8]
|
|
adds r0, r5, #0
|
|
bl UpdateSpriteAnimation
|
|
adds r0, r5, #0
|
|
mov r1, r8
|
|
bl sub_8004860
|
|
adds r0, r5, #0
|
|
bl DisplaySprite
|
|
movs r4, #0
|
|
mov sb, r4
|
|
subs r5, #0x3c
|
|
str r5, [sp, #0xc]
|
|
mov r0, sl
|
|
adds r0, #0x1c
|
|
str r0, [sp, #0x10]
|
|
mov r1, sl
|
|
adds r1, #0x28
|
|
str r1, [sp, #8]
|
|
_0804C4DE:
|
|
mov r2, sb
|
|
lsls r0, r2, #4
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
mov r3, sl
|
|
adds r5, r3, r0
|
|
movs r4, #0x30
|
|
adds r4, r4, r5
|
|
mov r8, r4
|
|
ldr r1, [r3]
|
|
ldr r0, [sp]
|
|
adds r1, r1, r0
|
|
lsls r2, r2, #3
|
|
ldr r3, [sp, #0xc]
|
|
adds r0, r3, r2
|
|
ldr r0, [r0]
|
|
mov ip, r0
|
|
mov r4, sb
|
|
lsls r3, r4, #2
|
|
ldr r4, _0804C5B0 @ =gUnknown_080D8888
|
|
adds r0, r3, r4
|
|
add r1, ip
|
|
ldrh r0, [r0]
|
|
adds r6, r1, r0
|
|
mov r1, sl
|
|
ldr r0, [r1, #4]
|
|
ldr r4, [sp, #4]
|
|
adds r0, r0, r4
|
|
ldr r1, [sp, #0x10]
|
|
adds r2, r1, r2
|
|
ldr r1, [r2]
|
|
ldr r2, _0804C5B4 @ =gUnknown_080D888A
|
|
adds r3, r3, r2
|
|
adds r0, r0, r1
|
|
ldrh r3, [r3]
|
|
adds r7, r0, r3
|
|
asrs r1, r6, #8
|
|
ldr r2, _0804C5A4 @ =gCamera
|
|
ldr r0, [r2]
|
|
subs r1, r1, r0
|
|
strh r1, [r5, #0x16]
|
|
asrs r0, r7, #8
|
|
ldr r1, [r2, #4]
|
|
subs r0, r0, r1
|
|
strh r0, [r5, #0x18]
|
|
ldr r2, _0804C5A8 @ =gUnknown_030054B8
|
|
ldrb r0, [r2]
|
|
adds r1, r0, #1
|
|
strb r1, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r1, #0x83
|
|
lsls r1, r1, #5
|
|
orrs r0, r1
|
|
str r0, [r5, #0x10]
|
|
mov r3, sb
|
|
lsls r0, r3, #1
|
|
ldr r4, [sp, #8]
|
|
adds r0, r4, r0
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, #0x30]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
mov r1, r8
|
|
strh r0, [r1, #2]
|
|
strh r0, [r1, #4]
|
|
ldrh r0, [r5, #0x16]
|
|
strh r0, [r1, #6]
|
|
ldrh r0, [r5, #0x18]
|
|
strh r0, [r1, #8]
|
|
adds r0, r5, #0
|
|
bl UpdateSpriteAnimation
|
|
adds r0, r5, #0
|
|
mov r1, r8
|
|
bl sub_8004860
|
|
adds r0, r5, #0
|
|
bl DisplaySprite
|
|
mov r0, sb
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov sb, r0
|
|
cmp r0, #1
|
|
bls _0804C4DE
|
|
add sp, #0x14
|
|
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
|
|
_0804C5A0: .4byte gDispCnt
|
|
_0804C5A4: .4byte gCamera
|
|
_0804C5A8: .4byte gUnknown_030054B8
|
|
_0804C5AC: .4byte 0x00003060
|
|
_0804C5B0: .4byte gUnknown_080D8888
|
|
_0804C5B4: .4byte gUnknown_080D888A
|
|
|
|
thumb_func_start sub_804C5B8
|
|
sub_804C5B8: @ 0x0804C5B8
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x10
|
|
mov r8, r0
|
|
ldrb r0, [r0, #0xb]
|
|
cmp r0, #0
|
|
beq _0804C640
|
|
cmp r0, #0x1f
|
|
bhi _0804C608
|
|
ldr r5, _0804C5FC @ =gPseudoRandom
|
|
ldr r0, [r5]
|
|
ldr r4, _0804C600 @ =0x00196225
|
|
adds r1, r0, #0
|
|
muls r1, r4, r1
|
|
ldr r2, _0804C604 @ =0x3C6EF35F
|
|
adds r1, r1, r2
|
|
movs r3, #7
|
|
adds r0, r1, #0
|
|
ands r0, r3
|
|
subs r0, #3
|
|
lsls r0, r0, #8
|
|
str r0, [sp, #8]
|
|
adds r0, r1, #0
|
|
muls r0, r4, r0
|
|
adds r0, r0, r2
|
|
str r0, [r5]
|
|
ands r0, r3
|
|
subs r0, #3
|
|
lsls r0, r0, #8
|
|
b _0804C644
|
|
.align 2, 0
|
|
_0804C5FC: .4byte gPseudoRandom
|
|
_0804C600: .4byte 0x00196225
|
|
_0804C604: .4byte 0x3C6EF35F
|
|
_0804C608:
|
|
ldr r5, _0804C634 @ =gPseudoRandom
|
|
ldr r0, [r5]
|
|
ldr r4, _0804C638 @ =0x00196225
|
|
adds r1, r0, #0
|
|
muls r1, r4, r1
|
|
ldr r2, _0804C63C @ =0x3C6EF35F
|
|
adds r1, r1, r2
|
|
movs r3, #0xf
|
|
adds r0, r1, #0
|
|
ands r0, r3
|
|
subs r0, #7
|
|
lsls r0, r0, #8
|
|
str r0, [sp, #8]
|
|
adds r0, r1, #0
|
|
muls r0, r4, r0
|
|
adds r0, r0, r2
|
|
str r0, [r5]
|
|
ands r0, r3
|
|
subs r0, #7
|
|
lsls r0, r0, #8
|
|
b _0804C644
|
|
.align 2, 0
|
|
_0804C634: .4byte gPseudoRandom
|
|
_0804C638: .4byte 0x00196225
|
|
_0804C63C: .4byte 0x3C6EF35F
|
|
_0804C640:
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
_0804C644:
|
|
str r0, [sp, #0xc]
|
|
ldr r5, _0804C694 @ =gBgScrollRegs
|
|
ldr r3, _0804C698 @ =gCamera
|
|
ldr r6, [r3]
|
|
mov r1, r8
|
|
ldr r2, [r1]
|
|
ldr r7, [sp, #8]
|
|
adds r0, r2, r7
|
|
asrs r0, r0, #8
|
|
subs r0, r6, r0
|
|
strh r0, [r5]
|
|
ldr r1, [r3, #4]
|
|
mov r0, r8
|
|
ldr r4, [r0, #4]
|
|
ldr r7, [sp, #0xc]
|
|
adds r0, r4, r7
|
|
asrs r0, r0, #8
|
|
subs r1, r1, r0
|
|
strh r1, [r5, #2]
|
|
movs r1, #0xbe
|
|
lsls r1, r1, #8
|
|
adds r0, r2, r1
|
|
asrs r0, r0, #8
|
|
subs r6, r0, r6
|
|
str r6, [sp]
|
|
adds r1, r6, #0
|
|
adds r1, #0x32
|
|
movs r0, #0xa5
|
|
lsls r0, r0, #1
|
|
mov sb, r3
|
|
adds r7, r2, #0
|
|
cmp r1, r0
|
|
bls _0804C6A4
|
|
ldr r2, _0804C69C @ =gDispCnt
|
|
ldrh r1, [r2]
|
|
ldr r0, _0804C6A0 @ =0x0000FEFF
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _0804C6B2
|
|
.align 2, 0
|
|
_0804C694: .4byte gBgScrollRegs
|
|
_0804C698: .4byte gCamera
|
|
_0804C69C: .4byte gDispCnt
|
|
_0804C6A0: .4byte 0x0000FEFF
|
|
_0804C6A4:
|
|
ldr r0, _0804C6CC @ =gDispCnt
|
|
ldrh r1, [r0]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #1
|
|
adds r2, r3, #0
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
_0804C6B2:
|
|
mov r5, r8
|
|
adds r5, #0x54
|
|
mov r6, r8
|
|
adds r6, #0x84
|
|
mov r1, r8
|
|
ldrb r0, [r1, #0xb]
|
|
lsls r1, r0, #0x18
|
|
lsrs r0, r1, #0x18
|
|
cmp r0, #0x1f
|
|
bhi _0804C6D0
|
|
lsrs r3, r1, #0x1b
|
|
b _0804C6DE
|
|
.align 2, 0
|
|
_0804C6CC: .4byte gDispCnt
|
|
_0804C6D0:
|
|
mov r2, r8
|
|
ldrb r1, [r2, #0xb]
|
|
movs r0, #0x40
|
|
subs r0, r0, r1
|
|
asrs r0, r0, #3
|
|
lsls r0, r0, #0x18
|
|
lsrs r3, r0, #0x18
|
|
_0804C6DE:
|
|
ldr r1, [sp, #8]
|
|
adds r0, r7, r1
|
|
movs r2, #0xbe
|
|
lsls r2, r2, #8
|
|
adds r2, r0, r2
|
|
str r2, [sp]
|
|
ldr r7, [sp, #0xc]
|
|
adds r0, r4, r7
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #6
|
|
adds r1, r0, r1
|
|
str r1, [sp, #4]
|
|
asrs r0, r2, #8
|
|
mov r7, sb
|
|
ldr r1, [r7]
|
|
subs r0, r0, r1
|
|
strh r0, [r5, #0x16]
|
|
ldr r1, [sp, #4]
|
|
asrs r0, r1, #8
|
|
ldr r1, [r7, #4]
|
|
subs r0, r0, r1
|
|
adds r0, r0, r3
|
|
strh r0, [r5, #0x18]
|
|
ldr r2, _0804C81C @ =gUnknown_030054B8
|
|
ldrb r0, [r2]
|
|
adds r1, r0, #1
|
|
strb r1, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0804C820 @ =0x00003060
|
|
orrs r0, r1
|
|
str r0, [r5, #0x10]
|
|
mov r2, r8
|
|
ldrh r0, [r2, #0x10]
|
|
strh r0, [r6]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
strh r0, [r6, #2]
|
|
strh r0, [r6, #4]
|
|
ldrh r0, [r5, #0x16]
|
|
strh r0, [r6, #6]
|
|
ldrh r0, [r5, #0x18]
|
|
strh r0, [r6, #8]
|
|
adds r0, r5, #0
|
|
bl UpdateSpriteAnimation
|
|
adds r0, r5, #0
|
|
adds r1, r6, #0
|
|
bl sub_8004860
|
|
adds r0, r5, #0
|
|
bl DisplaySprite
|
|
movs r7, #0
|
|
movs r3, #0x42
|
|
add r3, r8
|
|
mov sl, r3
|
|
ldr r0, _0804C824 @ =gUnknown_080D8888
|
|
mov sb, r0
|
|
_0804C754:
|
|
mov r1, sl
|
|
adds r0, r1, r7
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0804C802
|
|
lsls r0, r7, #4
|
|
subs r0, r0, r7
|
|
lsls r0, r0, #2
|
|
adds r0, #0x90
|
|
mov r2, r8
|
|
adds r5, r2, r0
|
|
adds r6, r5, #0
|
|
adds r6, #0x30
|
|
ldr r1, [r2]
|
|
ldr r3, [sp, #8]
|
|
adds r1, r1, r3
|
|
lsls r4, r7, #3
|
|
mov r0, r8
|
|
adds r0, #0x18
|
|
adds r0, r0, r4
|
|
ldr r0, [r0]
|
|
mov ip, r0
|
|
lsls r2, r7, #2
|
|
mov r3, sb
|
|
adds r0, r2, r3
|
|
add r1, ip
|
|
ldrh r0, [r0]
|
|
adds r0, r1, r0
|
|
str r0, [sp]
|
|
mov r0, r8
|
|
ldr r1, [r0, #4]
|
|
ldr r3, [sp, #0xc]
|
|
adds r1, r1, r3
|
|
adds r0, #0x1c
|
|
adds r0, r0, r4
|
|
ldr r0, [r0]
|
|
ldr r3, _0804C828 @ =gUnknown_080D888A
|
|
adds r2, r2, r3
|
|
adds r1, r1, r0
|
|
ldrh r2, [r2]
|
|
adds r2, r1, r2
|
|
str r2, [sp, #4]
|
|
ldr r0, [sp]
|
|
asrs r1, r0, #8
|
|
ldr r2, _0804C82C @ =gCamera
|
|
ldr r0, [r2]
|
|
subs r1, r1, r0
|
|
strh r1, [r5, #0x16]
|
|
ldr r1, [sp, #4]
|
|
asrs r0, r1, #8
|
|
ldr r1, [r2, #4]
|
|
subs r0, r0, r1
|
|
strh r0, [r5, #0x18]
|
|
ldr r2, _0804C81C @ =gUnknown_030054B8
|
|
ldrb r0, [r2]
|
|
adds r1, r0, #1
|
|
strb r1, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r1, #0x83
|
|
lsls r1, r1, #5
|
|
orrs r0, r1
|
|
str r0, [r5, #0x10]
|
|
lsls r1, r7, #1
|
|
mov r0, r8
|
|
adds r0, #0x28
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, #0x30]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
strh r0, [r6, #2]
|
|
strh r0, [r6, #4]
|
|
ldrh r0, [r5, #0x16]
|
|
strh r0, [r6, #6]
|
|
ldrh r0, [r5, #0x18]
|
|
strh r0, [r6, #8]
|
|
adds r0, r5, #0
|
|
bl UpdateSpriteAnimation
|
|
adds r0, r5, #0
|
|
adds r1, r6, #0
|
|
bl sub_8004860
|
|
adds r0, r5, #0
|
|
bl DisplaySprite
|
|
_0804C802:
|
|
adds r0, r7, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
cmp r7, #1
|
|
bls _0804C754
|
|
add sp, #0x10
|
|
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
|
|
_0804C81C: .4byte gUnknown_030054B8
|
|
_0804C820: .4byte 0x00003060
|
|
_0804C824: .4byte gUnknown_080D8888
|
|
_0804C828: .4byte gUnknown_080D888A
|
|
_0804C82C: .4byte gCamera
|
|
|
|
thumb_func_start sub_804C830
|
|
sub_804C830: @ 0x0804C830
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #0xc
|
|
adds r5, r0, #0
|
|
ldrb r0, [r5, #0xb]
|
|
cmp r0, #0
|
|
bne _0804C8CC
|
|
ldr r0, [r5]
|
|
movs r1, #0xbe
|
|
lsls r1, r1, #8
|
|
adds r0, r0, r1
|
|
asrs r7, r0, #8
|
|
str r7, [sp, #4]
|
|
ldr r0, [r5, #4]
|
|
movs r2, #0xa0
|
|
lsls r2, r2, #6
|
|
adds r0, r0, r2
|
|
asrs r4, r0, #8
|
|
str r4, [sp, #8]
|
|
adds r6, r5, #0
|
|
adds r6, #0x54
|
|
ldr r0, _0804C87C @ =gPlayer
|
|
mov r8, r0
|
|
str r0, [sp]
|
|
adds r0, r6, #0
|
|
adds r1, r7, #0
|
|
adds r2, r4, #0
|
|
movs r3, #0
|
|
bl sub_800C418
|
|
cmp r0, #1
|
|
bne _0804C880
|
|
adds r0, r5, #0
|
|
bl sub_804C8F4
|
|
b _0804C8E4
|
|
.align 2, 0
|
|
_0804C87C: .4byte gPlayer
|
|
_0804C880:
|
|
mov r1, r8
|
|
str r1, [sp]
|
|
adds r0, r6, #0
|
|
adds r1, r7, #0
|
|
adds r2, r4, #0
|
|
movs r3, #0
|
|
bl sub_800C320
|
|
cmp r0, #1
|
|
bne _0804C8AA
|
|
adds r0, r5, #0
|
|
bl sub_804C8F4
|
|
mov r2, r8
|
|
movs r1, #0x10
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, #0
|
|
ble _0804C8CC
|
|
rsbs r0, r0, #0
|
|
strh r0, [r2, #0x10]
|
|
b _0804C8CC
|
|
_0804C8AA:
|
|
mov r2, r8
|
|
str r2, [sp]
|
|
adds r0, r6, #0
|
|
adds r1, r7, #0
|
|
adds r2, r4, #0
|
|
movs r3, #0
|
|
bl sub_800CA20
|
|
cmp r0, #1
|
|
bne _0804C8CC
|
|
mov r1, r8
|
|
movs r2, #0x10
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, #0
|
|
ble _0804C8CC
|
|
rsbs r0, r0, #0
|
|
strh r0, [r1, #0x10]
|
|
_0804C8CC:
|
|
ldr r0, _0804C8F0 @ =gSelectedCharacter
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0804C8E4
|
|
ldr r1, [sp, #4]
|
|
lsls r0, r1, #8
|
|
ldr r2, [sp, #8]
|
|
lsls r1, r2, #8
|
|
bl sub_80122DC
|
|
_0804C8E4:
|
|
add sp, #0xc
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C8F0: .4byte gSelectedCharacter
|
|
|
|
thumb_func_start sub_804C8F4
|
|
sub_804C8F4: @ 0x0804C8F4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r7, r0, #0
|
|
movs r0, #0x54
|
|
adds r0, r0, r7
|
|
mov r8, r0
|
|
ldrb r0, [r7, #8]
|
|
subs r0, #1
|
|
strb r0, [r7, #8]
|
|
movs r1, #0xff
|
|
ands r0, r1
|
|
movs r1, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0804C91C
|
|
movs r0, #0x8f
|
|
bl m4aSongNumStart
|
|
b _0804C922
|
|
_0804C91C:
|
|
movs r0, #0xeb
|
|
bl m4aSongNumStart
|
|
_0804C922:
|
|
ldrb r2, [r7, #8]
|
|
cmp r2, #3
|
|
bne _0804C92E
|
|
ldr r1, _0804C99C @ =gUnknown_030054A8
|
|
movs r0, #0x13
|
|
strb r0, [r1, #1]
|
|
_0804C92E:
|
|
cmp r2, #0
|
|
bne _0804C97C
|
|
ldr r1, _0804C9A0 @ =gLevelScore
|
|
ldr r5, [r1]
|
|
movs r2, #0xfa
|
|
lsls r2, r2, #2
|
|
adds r0, r5, r2
|
|
str r0, [r1]
|
|
ldr r4, _0804C9A4 @ =0x0000C350
|
|
adds r1, r4, #0
|
|
bl Div
|
|
adds r6, r0, #0
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl Div
|
|
adds r1, r0, #0
|
|
cmp r6, r1
|
|
beq _0804C976
|
|
ldr r0, _0804C9A8 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0804C976
|
|
subs r0, r6, r1
|
|
lsls r0, r0, #0x10
|
|
ldr r1, _0804C9AC @ =gNumLives
|
|
lsrs r0, r0, #0x10
|
|
ldrb r2, [r1]
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #0xff
|
|
bls _0804C974
|
|
movs r0, #0xff
|
|
_0804C974:
|
|
strb r0, [r1]
|
|
_0804C976:
|
|
ldr r1, _0804C99C @ =gUnknown_030054A8
|
|
movs r0, #0x30
|
|
strb r0, [r1, #1]
|
|
_0804C97C:
|
|
movs r0, #0x40
|
|
strb r0, [r7, #0xb]
|
|
ldr r0, _0804C9B0 @ =0x000002C1
|
|
mov r1, r8
|
|
strh r0, [r1, #0xa]
|
|
adds r1, #0x20
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r1, #1
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C99C: .4byte gUnknown_030054A8
|
|
_0804C9A0: .4byte gLevelScore
|
|
_0804C9A4: .4byte 0x0000C350
|
|
_0804C9A8: .4byte gGameMode
|
|
_0804C9AC: .4byte gNumLives
|
|
_0804C9B0: .4byte 0x000002C1
|
|
|
|
thumb_func_start sub_804C9B4
|
|
sub_804C9B4: @ 0x0804C9B4
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r4, r1, #0x18
|
|
adds r0, #9
|
|
adds r1, r0, r4
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _0804C9EE
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
movs r1, #0xff
|
|
ands r0, r1
|
|
movs r1, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0804C9DE
|
|
movs r0, #0x8f
|
|
bl m4aSongNumStart
|
|
b _0804C9E4
|
|
_0804C9DE:
|
|
movs r0, #0xeb
|
|
bl m4aSongNumStart
|
|
_0804C9E4:
|
|
adds r0, r5, #0
|
|
adds r0, #0x3e
|
|
adds r0, r0, r4
|
|
movs r1, #0x40
|
|
strb r1, [r0]
|
|
_0804C9EE:
|
|
movs r1, #0
|
|
adds r0, r5, #0
|
|
adds r0, #9
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0804C9FE
|
|
movs r1, #1
|
|
_0804C9FE:
|
|
adds r0, r1, #0
|
|
pop {r4, r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_804CA08
|
|
sub_804CA08: @ 0x0804CA08
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldrb r0, [r2, #0xb]
|
|
cmp r0, #0
|
|
beq _0804CA4C
|
|
subs r0, #1
|
|
strb r0, [r2, #0xb]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0804CA4C
|
|
adds r3, r2, #0
|
|
adds r3, #0x54
|
|
ldrb r0, [r2, #8]
|
|
cmp r0, #0
|
|
beq _0804CA38
|
|
movs r0, #0
|
|
ldr r1, _0804CA34 @ =0x000002C1
|
|
strh r1, [r3, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x74
|
|
b _0804CA42
|
|
.align 2, 0
|
|
_0804CA34: .4byte 0x000002C1
|
|
_0804CA38:
|
|
ldr r0, _0804CA6C @ =0x000002C1
|
|
strh r0, [r3, #0xa]
|
|
adds r1, r2, #0
|
|
adds r1, #0x74
|
|
movs r0, #3
|
|
_0804CA42:
|
|
strb r0, [r1]
|
|
adds r1, r3, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
_0804CA4C:
|
|
adds r1, r2, #0
|
|
adds r1, #0x3e
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _0804CA5A
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
_0804CA5A:
|
|
adds r1, r2, #0
|
|
adds r1, #0x3f
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _0804CA68
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
_0804CA68:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804CA6C: .4byte 0x000002C1
|
|
|
|
thumb_func_start sub_804CA70
|
|
sub_804CA70: @ 0x0804CA70
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r3, r0, #0
|
|
ldr r0, _0804CABC @ =gStageTime
|
|
ldr r0, [r0]
|
|
movs r1, #2
|
|
ands r0, r1
|
|
lsrs r6, r0, #1
|
|
ldrb r0, [r3, #0xb]
|
|
cmp r0, #0
|
|
beq _0804CACC
|
|
movs r2, #0
|
|
movs r0, #0x3e
|
|
adds r0, r0, r3
|
|
mov ip, r0
|
|
adds r7, r3, #0
|
|
adds r7, #0x3f
|
|
ldr r1, _0804CAC0 @ =gFlags
|
|
mov r8, r1
|
|
ldr r5, _0804CAC4 @ =gObjPalette
|
|
ldr r4, _0804CAC8 @ =gUnknown_080D88B0
|
|
lsls r3, r6, #5
|
|
_0804CA9E:
|
|
adds r1, r2, #0
|
|
adds r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r5
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r3
|
|
adds r0, r0, r4
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #0xf
|
|
bls _0804CA9E
|
|
b _0804CAFA
|
|
.align 2, 0
|
|
_0804CABC: .4byte gStageTime
|
|
_0804CAC0: .4byte gFlags
|
|
_0804CAC4: .4byte gObjPalette
|
|
_0804CAC8: .4byte gUnknown_080D88B0
|
|
_0804CACC:
|
|
movs r2, #0
|
|
movs r0, #0x3e
|
|
adds r0, r0, r3
|
|
mov ip, r0
|
|
adds r7, r3, #0
|
|
adds r7, #0x3f
|
|
ldr r1, _0804CB28 @ =gFlags
|
|
mov r8, r1
|
|
ldr r4, _0804CB2C @ =gObjPalette
|
|
ldr r3, _0804CB30 @ =gUnknown_080D88B0
|
|
_0804CAE0:
|
|
adds r1, r2, #0
|
|
adds r1, #0x80
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r4
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #0xf
|
|
bls _0804CAE0
|
|
_0804CAFA:
|
|
mov r1, ip
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _0804CB34
|
|
movs r2, #0
|
|
ldr r5, _0804CB2C @ =gObjPalette
|
|
ldr r4, _0804CB30 @ =gUnknown_080D88B0
|
|
lsls r3, r6, #5
|
|
_0804CB0A:
|
|
adds r1, r2, #0
|
|
adds r1, #0x90
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r5
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r3
|
|
adds r0, r0, r4
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #0xf
|
|
bls _0804CB0A
|
|
b _0804CB54
|
|
.align 2, 0
|
|
_0804CB28: .4byte gFlags
|
|
_0804CB2C: .4byte gObjPalette
|
|
_0804CB30: .4byte gUnknown_080D88B0
|
|
_0804CB34:
|
|
movs r2, #0
|
|
ldr r4, _0804CB80 @ =gObjPalette
|
|
ldr r3, _0804CB84 @ =gUnknown_080D88B0
|
|
_0804CB3A:
|
|
adds r1, r2, #0
|
|
adds r1, #0x90
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r4
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #0xf
|
|
bls _0804CB3A
|
|
_0804CB54:
|
|
ldrb r0, [r7]
|
|
cmp r0, #0
|
|
beq _0804CB88
|
|
movs r2, #0
|
|
ldr r5, _0804CB80 @ =gObjPalette
|
|
ldr r4, _0804CB84 @ =gUnknown_080D88B0
|
|
lsls r3, r6, #5
|
|
_0804CB62:
|
|
adds r1, r2, #0
|
|
adds r1, #0xc0
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r5
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r3
|
|
adds r0, r0, r4
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #0xf
|
|
bls _0804CB62
|
|
b _0804CBA8
|
|
.align 2, 0
|
|
_0804CB80: .4byte gObjPalette
|
|
_0804CB84: .4byte gUnknown_080D88B0
|
|
_0804CB88:
|
|
movs r2, #0
|
|
ldr r4, _0804CBC0 @ =gObjPalette
|
|
ldr r3, _0804CBC4 @ =gUnknown_080D88B0
|
|
_0804CB8E:
|
|
adds r1, r2, #0
|
|
adds r1, #0xc0
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r4
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
cmp r2, #0xf
|
|
bls _0804CB8E
|
|
_0804CBA8:
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
mov r1, r8
|
|
str r0, [r1]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804CBC0: .4byte gObjPalette
|
|
_0804CBC4: .4byte gUnknown_080D88B0
|
|
|
|
thumb_func_start Task_SuperEggRoboZMain
|
|
Task_SuperEggRoboZMain: @ 0x0804CBC8
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r7, _0804CC24 @ =gCurTask
|
|
ldr r0, [r7]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r5, r1, r0
|
|
adds r0, r5, #0
|
|
bl sub_804C5B8
|
|
ldr r6, _0804CC28 @ =gPlayer
|
|
ldr r0, [r6, #0x20]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xe
|
|
orrs r0, r1
|
|
str r0, [r6, #0x20]
|
|
movs r1, #0x14
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, #0
|
|
bne _0804CC1C
|
|
ldr r0, [r5, #0x14]
|
|
subs r4, r0, #1
|
|
str r4, [r5, #0x14]
|
|
cmp r4, #0
|
|
bne _0804CC1C
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
str r0, [r5, #0x14]
|
|
ldr r1, [r7]
|
|
ldr r0, _0804CC2C @ =sub_804A9D8
|
|
str r0, [r1, #8]
|
|
movs r0, #0x82
|
|
lsls r0, r0, #1
|
|
bl m4aSongNumStart
|
|
adds r0, r6, #0
|
|
adds r0, #0x64
|
|
strh r4, [r0]
|
|
adds r1, r6, #0
|
|
adds r1, #0x6d
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
_0804CC1C:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804CC24: .4byte gCurTask
|
|
_0804CC28: .4byte gPlayer
|
|
_0804CC2C: .4byte sub_804A9D8
|
|
|
|
thumb_func_start sub_804CC30
|
|
sub_804CC30: @ 0x0804CC30
|
|
push {r4, lr}
|
|
ldr r4, _0804CC78 @ =gCurTask
|
|
ldr r0, [r4]
|
|
ldrh r0, [r0, #6]
|
|
ldr r1, _0804CC7C @ =IWRAM_START + 0x4C
|
|
adds r2, r0, r1
|
|
movs r1, #0x80
|
|
lsls r1, r1, #6
|
|
strh r1, [r2]
|
|
ldr r1, _0804CC80 @ =IWRAM_START + 0x48
|
|
adds r0, r0, r1
|
|
bl NextTransitionFrame
|
|
ldr r0, _0804CC84 @ =gCourseTime
|
|
ldr r0, [r0]
|
|
ldr r1, _0804CC88 @ =gRingCount
|
|
ldrh r1, [r1]
|
|
ldr r2, _0804CC8C @ =gUnknown_030054F4
|
|
ldrb r2, [r2]
|
|
bl sub_80304DC
|
|
movs r0, #0x90
|
|
bl m4aSongNumStop
|
|
ldr r0, _0804CC90 @ =gMPlayInfo_SE3
|
|
ldr r1, _0804CC94 @ =0x0000FFFF
|
|
movs r2, #0xff
|
|
bl m4aMPlayVolumeControl
|
|
ldr r0, [r4]
|
|
bl TaskDestroy
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804CC78: .4byte gCurTask
|
|
_0804CC7C: .4byte IWRAM_START + 0x4C
|
|
_0804CC80: .4byte IWRAM_START + 0x48
|
|
_0804CC84: .4byte gCourseTime
|
|
_0804CC88: .4byte gRingCount
|
|
_0804CC8C: .4byte gUnknown_030054F4
|
|
_0804CC90: .4byte gMPlayInfo_SE3
|
|
_0804CC94: .4byte 0x0000FFFF
|
|
|
|
thumb_func_start sub_804CC98
|
|
sub_804CC98: @ 0x0804CC98
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldrb r0, [r2, #0xb]
|
|
cmp r0, #0
|
|
beq _0804CCC4
|
|
ldr r1, _0804CCBC @ =gSineTable
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r1
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
asrs r0, r0, #7
|
|
movs r3, #0x80
|
|
lsls r3, r3, #2
|
|
adds r0, r0, r3
|
|
ldr r3, _0804CCC0 @ =0x000003FF
|
|
adds r1, r3, #0
|
|
ands r0, r1
|
|
b _0804CCC8
|
|
.align 2, 0
|
|
_0804CCBC: .4byte gSineTable
|
|
_0804CCC0: .4byte 0x000003FF
|
|
_0804CCC4:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #2
|
|
_0804CCC8:
|
|
strh r0, [r2, #0x10]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_804CCD0
|
|
sub_804CCD0: @ 0x0804CCD0
|
|
push {r4, r5, lr}
|
|
adds r4, r1, #0
|
|
ldr r1, [r0]
|
|
movs r5, #0xbe
|
|
lsls r5, r5, #8
|
|
adds r2, r1, r5
|
|
ldr r0, [r0, #4]
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #6
|
|
adds r3, r0, r1
|
|
ldr r5, _0804CD08 @ =gPlayer
|
|
ldr r1, [r5, #0xc]
|
|
asrs r0, r1, #8
|
|
cmp r0, r2
|
|
bge _0804CD00
|
|
subs r0, r3, r4
|
|
cmp r1, r0
|
|
blt _0804CD00
|
|
adds r0, r4, r3
|
|
cmp r1, r0
|
|
bgt _0804CD00
|
|
adds r0, r5, #0
|
|
bl sub_800CBA4
|
|
_0804CD00:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804CD08: .4byte gPlayer
|
|
|
|
thumb_func_start TaskDestructor_SuperEggRoboZMain
|
|
TaskDestructor_SuperEggRoboZMain: @ 0x0804CD0C
|
|
push {r4, r5, lr}
|
|
ldrh r4, [r0, #6]
|
|
movs r5, #0xc0
|
|
lsls r5, r5, #0x12
|
|
adds r5, r4, r5
|
|
ldr r0, [r5, #0x44]
|
|
bl VramFree
|
|
ldr r1, _0804CD44 @ =IWRAM_START + 0x94
|
|
adds r0, r4, r1
|
|
ldr r0, [r0]
|
|
bl VramFree
|
|
ldr r0, _0804CD48 @ =IWRAM_START + 0xD0
|
|
adds r4, r4, r0
|
|
ldr r0, [r4]
|
|
bl VramFree
|
|
ldr r0, [r5, #0x58]
|
|
bl VramFree
|
|
ldr r1, _0804CD4C @ =gActiveBossTask
|
|
movs r0, #0
|
|
str r0, [r1]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804CD44: .4byte IWRAM_START + 0x94
|
|
_0804CD48: .4byte IWRAM_START + 0xD0
|
|
_0804CD4C: .4byte gActiveBossTask
|