Files
sa2/asm/boss_9.s
T
JaceCearandOliver Bell f62f1941bc Various var- and procedure names, plus some game_6 procs. (#112)
* 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>
2023-09-23 16:29:41 +02:00

8226 lines
146 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.global gUnknown_080D88F0
gUnknown_080D88F0:
.incbin "baserom.gba", 0x000D88F0, 0x28
.global gUnknown_080D8918
gUnknown_080D8918:
.incbin "baserom.gba", 0x000D8918, 0x8D
.global gUnknown_080D89A5
gUnknown_080D89A5:
.incbin "baserom.gba", 0x000D89A5, 0x7
.global gUnknown_080D89AC
gUnknown_080D89AC:
.incbin "baserom.gba", 0x000D89AC, 0x1C
.global gUnknown_080D89C8
gUnknown_080D89C8:
.incbin "baserom.gba", 0x000D89C8, 0x54
.global gUnknown_080D8A1C
gUnknown_080D8A1C:
.incbin "baserom.gba", 0x000D8A1C, 0x18
.global gUnknown_080D8A34
gUnknown_080D8A34:
.incbin "baserom.gba", 0x000D8A34, 0x18
.global gUnknown_080D8A4C
gUnknown_080D8A4C:
.incbin "baserom.gba", 0x000D8A4C, 0x18
.global gUnknown_080D8A64
gUnknown_080D8A64:
.incbin "baserom.gba", 0x000D8A64, 0x18
.global gUnknown_080D8A7C
gUnknown_080D8A7C:
.incbin "baserom.gba", 0x000D8A7C, 0x18
.global gUnknown_080D8A94
gUnknown_080D8A94:
.incbin "baserom.gba", 0x000D8A94, 0x18
.global gUnknown_080D8AAC
gUnknown_080D8AAC:
.incbin "baserom.gba", 0x000D8AAC, 0x18
.global gUnknown_080D8AC4
gUnknown_080D8AC4:
.incbin "baserom.gba", 0x000D8AC4, 0x18
.global gUnknown_080D8ADC
gUnknown_080D8ADC:
.incbin "baserom.gba", 0x000D8ADC, 0x18
.global gUnknown_080D8AF4
gUnknown_080D8AF4:
.incbin "baserom.gba", 0x000D8AF4, 0x158
.global gUnknown_080D8C4C
gUnknown_080D8C4C:
.incbin "baserom.gba", 0x000D8C4C, 0x18
.global gUnknown_080D8C64
gUnknown_080D8C64:
.incbin "baserom.gba", 0x000D8C64, 0x18
.global gUnknown_080D8C7C
gUnknown_080D8C7C:
.incbin "baserom.gba", 0x000D8C7C, 0x18
.global gUnknown_080D8C94
gUnknown_080D8C94:
.incbin "baserom.gba", 0x000D8C94, 0xD8
.global gUnknown_080D8D6C
gUnknown_080D8D6C:
.incbin "baserom.gba", 0x000D8D6C, 0x60
.global gUnknown_080D8DCC
gUnknown_080D8DCC:
.incbin "baserom.gba", 0x000D8DCC, 0x48
.global gUnknown_080D8E14
gUnknown_080D8E14:
.incbin "baserom.gba", 0x000D8E14, 0xC
.global gUnknown_080D8E20
gUnknown_080D8E20:
.incbin "baserom.gba", 0x000D8E20, 0x2
.global gUnknown_080D8E22
gUnknown_080D8E22:
.incbin "baserom.gba", 0x000D8E22, 0xBE
.global gUnknown_080D8EE0
gUnknown_080D8EE0:
.incbin "baserom.gba", 0x000D8EE0, 0x10
.global gUnknown_080D8EF0
gUnknown_080D8EF0:
.incbin "baserom.gba", 0x000D8EF0, 0x20
.global gUnknown_080D8F10
gUnknown_080D8F10:
.incbin "baserom.gba", 0x000D8F10, 0x20
.text
.syntax unified
.arm
@; CreateTrueArea53IntroBoss - Used when Vanilla gets captured
thumb_func_start SetupEggmanKidnapsVanillaTask
SetupEggmanKidnapsVanillaTask: @ 0x0804CD50
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
ldr r0, _0804CE7C @ =Task_EggmanKidnapsVanilla
movs r1, #0x94
lsls r1, r1, #4
movs r2, #0x80
lsls r2, r2, #7
ldr r3, _0804CE80 @ =TaskDestructor_TrueArea53BossGfx
str r3, [sp]
movs r3, #0
bl TaskCreate
ldr r4, _0804CE84 @ =gActiveBossTask
str r0, [r4]
bl CreateTrueArea53Boss
ldr r0, [r4]
ldrh r2, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r1, r2, r1
ldr r0, _0804CE88 @ =IWRAM_START + 0x1C
adds r3, r2, r0
ldr r7, _0804CE8C @ =IWRAM_START + 0x48
adds r4, r2, r7
movs r0, #0x8c
lsls r0, r0, #2
strh r0, [r1, #0x12]
ldr r0, [r4, #0x30]
ldr r1, _0804CE90 @ =0x00000FFF
ands r0, r1
str r0, [r4, #0x30]
ldr r1, _0804CE94 @ =gUnknown_080D8D6C
ldr r0, [r1, #0x30]
str r0, [r4]
ldr r0, [r1, #0x34]
str r0, [r4, #0x34]
ldrh r0, [r1, #0x38]
strh r0, [r4, #0x2e]
movs r0, #0xa5
lsls r0, r0, #9
str r0, [r3, #0x24]
movs r0, #0xb4
lsls r0, r0, #7
str r0, [r3, #0x28]
ldr r0, _0804CE98 @ =gUnknown_080D8DCC
ldrh r0, [r0, #0x38]
strh r0, [r3, #0x14]
movs r3, #0
ldr r0, _0804CE9C @ =IWRAM_START + 0x20
adds r6, r2, r0
ldr r1, _0804CEA0 @ =gUnknown_080D8C7C
mov ip, r1
subs r7, #0x20
adds r5, r2, r7
ldr r0, _0804CEA4 @ =gUnknown_080D8C94
mov r8, r0
_0804CDCA:
lsls r1, r3, #1
adds r2, r6, r1
mov r7, ip
adds r0, r1, r7
ldrh r0, [r0]
strh r0, [r2]
adds r2, r5, r1
add r1, r8
ldrh r0, [r1]
strh r0, [r2]
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #3
bls _0804CDCA
ldr r0, [r4, #0x30]
ldr r1, _0804CE90 @ =0x00000FFF
ands r0, r1
str r0, [r4, #0x30]
ldr r0, _0804CE94 @ =gUnknown_080D8D6C
ldr r1, [r0, #0x3c]
str r1, [r4]
ldr r1, [r0, #0x40]
str r1, [r4, #0x34]
adds r0, #0x44
ldrh r0, [r0]
strh r0, [r4, #0x2e]
strh r0, [r4, #0x2c]
movs r3, #0
adds r0, r4, #4
mov ip, r0
adds r1, r4, #0
adds r1, #0xc
str r1, [sp, #4]
adds r6, r4, #0
adds r6, #0x14
ldr r7, _0804CEA8 @ =gUnknown_080D8AC4
mov sl, r7
adds r5, r4, #0
adds r5, #0x1c
ldr r0, _0804CEAC @ =gUnknown_080D8ADC
mov sb, r0
adds r4, #0x24
ldr r1, _0804CEB0 @ =gUnknown_080D8AF4
mov r8, r1
_0804CE24:
lsls r1, r3, #1
mov r7, ip
adds r2, r7, r1
ldr r7, _0804CEB4 @ =gUnknown_080D8A94
adds r0, r1, r7
ldrh r0, [r0]
strh r0, [r2]
ldr r0, [sp, #4]
adds r2, r0, r1
ldr r7, _0804CEB8 @ =gUnknown_080D8AAC
adds r0, r1, r7
ldrh r0, [r0]
strh r0, [r2]
adds r2, r6, r1
mov r7, sl
adds r0, r1, r7
ldrh r0, [r0]
strh r0, [r2]
adds r2, r5, r1
mov r7, sb
adds r0, r1, r7
ldrh r0, [r0]
strh r0, [r2]
adds r2, r4, r1
add r1, r8
ldrh r0, [r1]
strh r0, [r2]
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #3
bls _0804CE24
ldr r1, _0804CEBC @ =0x00001341
adds r0, r1, #0
ldr r7, _0804CEC0 @ =gDispCnt
strh r0, [r7]
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
_0804CE7C: .4byte Task_EggmanKidnapsVanilla
_0804CE80: .4byte TaskDestructor_TrueArea53BossGfx
_0804CE84: .4byte gActiveBossTask
_0804CE88: .4byte IWRAM_START + 0x1C
_0804CE8C: .4byte IWRAM_START + 0x48
_0804CE90: .4byte 0x00000FFF
_0804CE94: .4byte gUnknown_080D8D6C
_0804CE98: .4byte gUnknown_080D8DCC
_0804CE9C: .4byte IWRAM_START + 0x20
_0804CEA0: .4byte gUnknown_080D8C7C
_0804CEA4: .4byte gUnknown_080D8C94
_0804CEA8: .4byte gUnknown_080D8AC4
_0804CEAC: .4byte gUnknown_080D8ADC
_0804CEB0: .4byte gUnknown_080D8AF4
_0804CEB4: .4byte gUnknown_080D8A94
_0804CEB8: .4byte gUnknown_080D8AAC
_0804CEBC: .4byte 0x00001341
_0804CEC0: .4byte gDispCnt
thumb_func_start CreateTrueArea53Boss
CreateTrueArea53Boss: @ 0x0804CEC4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc8
ldr r2, _0804D2A8 @ =gUnknown_03005424
ldrh r0, [r2]
movs r1, #0x20
orrs r0, r1
strh r0, [r2]
ldr r4, _0804D2AC @ =gActiveBossTask
ldr r0, [r4]
cmp r0, #0
bne _0804CEF8
ldr r0, _0804D2B0 @ =sub_804D7A0
movs r1, #0x94
lsls r1, r1, #4
movs r2, #0x80
lsls r2, r2, #7
ldr r3, _0804D2B4 @ =TaskDestructor_TrueArea53BossGfx
str r3, [sp]
movs r3, #0
bl TaskCreate
str r0, [r4]
_0804CEF8:
ldr r0, [r4]
ldrh r4, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r0, r4, r0
str r0, [sp, #4]
ldr r0, _0804D2B8 @ =IWRAM_START + 0x1C
adds r2, r4, r0
ldr r1, _0804D2BC @ =IWRAM_START + 0x48
adds r6, r4, r1
ldr r5, _0804D2C0 @ =IWRAM_START + 0x98
adds r5, r4, r5
str r5, [sp, #8]
ldr r7, _0804D2C4 @ =IWRAM_START + 0x558
adds r7, r7, r4
mov r8, r7
ldr r0, _0804D2C8 @ =IWRAM_START + 0x594
adds r7, r4, r0
ldr r1, _0804D2CC @ =IWRAM_START + 0x654
adds r1, r4, r1
str r1, [sp, #0xc]
movs r3, #0
movs r0, #0xc
ldr r5, [sp, #4]
strb r0, [r5, #0xc]
strb r3, [r5, #0xd]
movs r1, #0
movs r0, #1
mov sb, r0
mov r0, sb
strh r0, [r5, #0x10]
movs r0, #0x50
strh r0, [r5, #0x12]
strb r1, [r5, #0xe]
strb r1, [r5, #0xf]
str r3, [r5, #0x14]
str r3, [r5, #0x18]
strh r3, [r5]
strh r3, [r5, #4]
mov r0, sb
strh r0, [r5, #2]
movs r0, #0x14
strh r0, [r5, #6]
movs r0, #0xbf
strh r0, [r5, #8]
strh r3, [r5, #0xa]
ldr r0, _0804D2D0 @ =sub_8050DC8
mov r5, r8
str r0, [r5]
movs r0, #0xc8
strh r0, [r5, #6]
strb r1, [r5, #4]
ldr r0, [r2, #0x18]
ldr r1, _0804D2D4 @ =0x00000FFF
ands r0, r1
str r0, [r2, #0x18]
ldr r1, _0804D2D8 @ =gUnknown_080D8DCC
ldr r0, [r1]
str r0, [r2]
ldr r0, [r1, #4]
str r0, [r2, #0x1c]
ldrh r1, [r1, #8]
strh r1, [r2, #0x16]
ldr r0, _0804D2DC @ =0x0004F300
str r0, [r2, #0x24]
movs r0, #0xe0
lsls r0, r0, #7
str r0, [r2, #0x28]
strh r3, [r2, #0x20]
strh r3, [r2, #0x22]
strh r1, [r2, #0x14]
str r3, [r2, #0x18]
movs r0, #0
mov ip, r0
ldr r3, _0804D2E0 @ =gUnknown_080D8D6C
ldr r2, _0804D2E4 @ =gUnknown_080D8C64
ldr r1, _0804D2E8 @ =gUnknown_080D8C4C
ldr r5, _0804D2EC @ =IWRAM_START + 0x20
adds r4, r4, r5
_0804CF96:
ldrh r0, [r1]
strh r0, [r4]
ldrh r0, [r2]
strh r0, [r4, #8]
adds r2, #2
adds r1, #2
adds r4, #2
movs r0, #1
add ip, r0
mov r5, ip
cmp r5, #3
bls _0804CF96
ldr r0, [r6, #0x30]
ldr r1, _0804D2D4 @ =0x00000FFF
ands r0, r1
str r0, [r6, #0x30]
ldr r0, [r3, #0xc]
str r0, [r6]
ldr r0, [r3, #0x10]
str r0, [r6, #0x34]
ldrh r0, [r3, #0x14]
movs r1, #0
strh r0, [r6, #0x2e]
adds r2, r6, #0
adds r2, #0x4c
movs r0, #1
strb r0, [r2]
strh r1, [r6, #0x38]
str r1, [r6, #0x44]
str r1, [r6, #0x48]
ldrh r0, [r3, #8]
strh r0, [r6, #0x2c]
str r1, [r6, #0x30]
mov ip, r1
adds r0, r6, #4
mov sl, r0
movs r1, #0xc
adds r1, r1, r6
mov sb, r1
adds r5, r6, #0
adds r5, #0x14
adds r3, r6, #0
adds r3, #0x1c
adds r4, r6, #0
adds r4, #0x24
adds r2, r7, #4
str r2, [sp, #0x1c]
adds r6, r7, #0
adds r6, #0xe
str r6, [sp, #0x34]
adds r0, r7, #0
adds r0, #0x18
str r0, [sp, #0x3c]
adds r1, r7, #0
adds r1, #0x1a
str r1, [sp, #0x40]
adds r2, #0x3c
str r2, [sp, #0x60]
adds r6, #0x36
str r6, [sp, #0xc0]
ldr r0, [sp, #0xc]
adds r0, #0xe
str r0, [sp, #0x38]
ldr r1, [sp, #0xc]
adds r1, #0x1e
str r1, [sp, #0x44]
ldr r2, [sp, #0xc]
adds r2, #0x2e
str r2, [sp, #0x54]
ldr r6, [sp, #0xc]
adds r6, #0x30
str r6, [sp, #0x5c]
ldr r0, [sp, #0xc]
adds r0, #0x70
str r0, [sp, #0x74]
ldr r1, [sp, #0xc]
adds r1, #0x74
str r1, [sp, #0x78]
ldr r6, _0804D2F0 @ =0x000007D4
ldr r2, [sp, #4]
adds r6, r2, r6
str r6, [sp, #0x7c]
ldr r0, _0804D2F4 @ =0x000007D5
adds r0, r2, r0
str r0, [sp, #0x80]
ldr r1, _0804D2F8 @ =0x000007D6
adds r1, r2, r1
str r1, [sp, #0x88]
ldr r6, _0804D2FC @ =0x000007D9
adds r6, r2, r6
str r6, [sp, #0x8c]
mov r0, r8
adds r0, #0xc
str r0, [sp, #0x2c]
mov r1, r8
adds r1, #0x2c
str r1, [sp, #0x48]
mov r2, r8
adds r2, #0x2d
str r2, [sp, #0x4c]
mov r6, r8
adds r6, #0x2e
str r6, [sp, #0x50]
adds r0, #0x25
str r0, [sp, #0x58]
adds r1, r7, #0
adds r1, #0x90
str r1, [sp, #0x84]
adds r2, r7, #0
adds r2, #0xb0
str r2, [sp, #0x90]
adds r6, r7, #0
adds r6, #0xb1
str r6, [sp, #0x94]
adds r0, r7, #0
adds r0, #0xb2
str r0, [sp, #0x98]
adds r1, #0x25
str r1, [sp, #0x9c]
ldr r2, [sp, #0xc]
adds r2, #0xf0
str r2, [sp, #0xa0]
movs r0, #0x88
lsls r0, r0, #1
ldr r6, [sp, #0xc]
adds r0, r6, r0
str r0, [sp, #0x20]
ldr r1, _0804D300 @ =0x00000111
adds r1, r6, r1
str r1, [sp, #0x24]
movs r2, #0x89
lsls r2, r2, #1
adds r2, r6, r2
str r2, [sp, #0x28]
ldr r0, _0804D304 @ =0x00000115
adds r0, r6, r0
str r0, [sp, #0x30]
movs r1, #0xa4
lsls r1, r1, #1
adds r1, r6, r1
str r1, [sp, #0x64]
ldr r2, _0804D308 @ =0x00000149
adds r2, r6, r2
str r2, [sp, #0x68]
movs r0, #0xa5
lsls r0, r0, #1
adds r0, r6, r0
str r0, [sp, #0x6c]
ldr r1, _0804D30C @ =0x0000014D
adds r1, r6, r1
str r1, [sp, #0x70]
_0804D0C4:
mov r2, ip
lsls r1, r2, #1
mov r6, sl
adds r2, r6, r1
ldr r6, _0804D310 @ =gUnknown_080D8A1C
adds r0, r1, r6
ldrh r0, [r0]
strh r0, [r2]
mov r0, sb
adds r2, r0, r1
ldr r6, _0804D314 @ =gUnknown_080D8A34
adds r0, r1, r6
ldrh r0, [r0]
strh r0, [r2]
adds r2, r5, r1
ldr r6, _0804D318 @ =gUnknown_080D8A4C
adds r0, r1, r6
ldrh r0, [r0]
strh r0, [r2]
adds r2, r3, r1
ldr r6, _0804D31C @ =gUnknown_080D8A64
adds r0, r1, r6
ldrh r0, [r0]
strh r0, [r2]
adds r2, r4, r1
ldr r0, _0804D320 @ =gUnknown_080D8A7C
adds r1, r1, r0
ldrh r0, [r1]
strh r0, [r2]
movs r1, #1
add ip, r1
mov r2, ip
cmp r2, #3
bls _0804D0C4
ldr r5, _0804D324 @ =sub_804DFB0
str r5, [r7]
movs r6, #0
mov sb, r6
ldr r5, [sp, #0x1c]
movs r2, #0
ldr r4, [sp, #0x34]
ldr r3, [sp, #0x3c]
_0804D118:
mov r7, sb
adds r0, r5, r7
strb r2, [r0]
adds r0, r4, r7
strb r2, [r0]
lsls r0, r7, #2
strh r2, [r3]
ldr r1, [sp, #0x40]
adds r0, r1, r0
strh r2, [r0]
lsls r1, r7, #3
ldr r6, [sp, #0x60]
adds r0, r6, r1
str r2, [r0]
ldr r7, [sp, #0xc0]
adds r1, r7, r1
str r2, [r1]
adds r3, #4
movs r0, #1
add sb, r0
mov r1, sb
cmp r1, #9
bls _0804D118
ldr r2, _0804D328 @ =sub_804FF9C
ldr r5, [sp, #0xc]
str r2, [r5]
ldr r6, _0804D32C @ =sub_804F768
str r6, [r5, #4]
movs r0, #0x96
lsls r0, r0, #1
strh r0, [r5, #8]
adds r0, #0xd4
strh r0, [r5, #0xa]
movs r7, #0
mov sb, r7
ldr r5, [sp, #0x38]
movs r2, #0
ldr r4, [sp, #0x44]
ldr r3, [sp, #0x54]
_0804D166:
mov r1, sb
adds r0, r5, r1
strb r2, [r0]
adds r0, r4, r1
strb r2, [r0]
lsls r0, r1, #2
strh r2, [r3]
ldr r6, [sp, #0x5c]
adds r0, r6, r0
strh r2, [r0]
lsls r1, r1, #3
ldr r7, [sp, #0x74]
adds r0, r7, r1
str r2, [r0]
ldr r0, [sp, #0x78]
adds r1, r0, r1
str r2, [r1]
adds r3, #4
movs r1, #1
add sb, r1
mov r6, sb
cmp r6, #0xf
bls _0804D166
ldr r7, _0804D330 @ =sub_804E66C
ldr r0, [sp, #8]
str r7, [r0]
movs r0, #0
movs r1, #0x96
lsls r1, r1, #1
ldr r2, [sp, #8]
strh r1, [r2, #4]
adds r1, #0xd4
strh r1, [r2, #6]
str r0, [r2, #8]
str r0, [r2, #0xc]
movs r0, #0x20
bl VramMalloc
str r0, [sp, #0x10]
movs r5, #0
mov sb, r5
movs r4, #0
ldr r6, [sp, #8]
adds r6, #0x8c
str r6, [sp, #0xa4]
ldr r7, [sp, #8]
adds r7, #0x88
str r7, [sp, #0xa8]
ldr r0, [sp, #8]
adds r0, #0x74
str r0, [sp, #0xac]
ldr r1, [sp, #8]
adds r1, #0x72
str r1, [sp, #0xb0]
ldr r2, [sp, #8]
adds r2, #0x6c
str r2, [sp, #0xb4]
ldr r5, [sp, #8]
adds r5, #0x68
str r5, [sp, #0xb8]
ldr r6, [sp, #8]
adds r6, #0x51
mov sl, r6
ldr r7, [sp, #8]
adds r7, #0x14
mov r8, r7
ldr r0, [sp, #8]
adds r0, #0x10
str r0, [sp, #0xbc]
_0804D1F0:
ldr r7, [sp, #0xbc]
adds r7, #0x20
mov r1, r8
strb r4, [r1]
strh r4, [r1, #6]
strh r4, [r1, #0xa]
strh r4, [r1, #0xc]
str r4, [r1, #0x10]
str r4, [r1, #0x14]
strh r4, [r7, #0x16]
strh r4, [r7, #0x18]
movs r0, #0x10
bl VramMalloc
str r0, [r7, #4]
ldr r1, _0804D334 @ =gUnknown_080D8918
ldrh r0, [r1, #4]
strh r0, [r7, #0xa]
ldrb r1, [r1, #6]
adds r0, r7, #0
adds r0, #0x20
strb r1, [r0]
movs r0, #0xff
mov r2, sl
strb r0, [r2]
movs r0, #0x88
lsls r0, r0, #3
strh r0, [r7, #0x1a]
strh r4, [r7, #8]
strh r4, [r7, #0x14]
strh r4, [r7, #0x1c]
movs r0, #0x10
strb r0, [r2, #1]
movs r0, #6
strb r0, [r2, #4]
subs r0, #7
str r0, [r7, #0x28]
movs r0, #0x80
lsls r0, r0, #6
str r0, [r7, #0x10]
ldr r0, _0804D338 @ =sub_804DD9C
mov r5, r8
str r0, [r5, #0x54]
movs r6, #0
mov ip, r6
ldr r1, [sp, #0xb8]
adds r1, #0x50
ldr r7, [sp, #0xb8]
adds r7, #0x48
str r7, [sp, #0xc4]
ldr r6, [sp, #0xa4]
ldr r5, [sp, #0xa8]
ldr r3, [sp, #0xac]
ldr r2, [sp, #0xb0]
_0804D25C:
ldr r0, [sp, #0xb4]
add r0, ip
strb r4, [r0]
strh r4, [r2]
strh r4, [r3]
str r4, [r5]
str r4, [r6]
strh r4, [r1, #0xe]
strh r4, [r1, #0x10]
ldr r0, [sp, #0x10]
ldr r7, [sp, #0xc4]
str r0, [r7, #4]
ldr r0, _0804D33C @ =0x000002CA
strh r0, [r1, #2]
strb r4, [r1, #0x18]
movs r0, #1
rsbs r0, r0, #0
mov r7, sp
strb r0, [r7, #0x14]
movs r0, #0xff
strb r0, [r1, #0x19]
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r1, #0x12]
strh r4, [r1]
strh r4, [r1, #0xc]
strh r4, [r1, #0x14]
movs r7, #0x10
strb r7, [r1, #0x1a]
movs r0, #6
strb r0, [r1, #0x1d]
subs r0, #7
str r0, [r1, #0x20]
movs r7, #0x80
lsls r7, r7, #6
str r7, [r1, #8]
b _0804D340
.align 2, 0
_0804D2A8: .4byte gUnknown_03005424
_0804D2AC: .4byte gActiveBossTask
_0804D2B0: .4byte sub_804D7A0
_0804D2B4: .4byte TaskDestructor_TrueArea53BossGfx
_0804D2B8: .4byte IWRAM_START + 0x1C
_0804D2BC: .4byte IWRAM_START + 0x48
_0804D2C0: .4byte IWRAM_START + 0x98
_0804D2C4: .4byte IWRAM_START + 0x558
_0804D2C8: .4byte IWRAM_START + 0x594
_0804D2CC: .4byte IWRAM_START + 0x654
_0804D2D0: .4byte sub_8050DC8
_0804D2D4: .4byte 0x00000FFF
_0804D2D8: .4byte gUnknown_080D8DCC
_0804D2DC: .4byte 0x0004F300
_0804D2E0: .4byte gUnknown_080D8D6C
_0804D2E4: .4byte gUnknown_080D8C64
_0804D2E8: .4byte gUnknown_080D8C4C
_0804D2EC: .4byte IWRAM_START + 0x20
_0804D2F0: .4byte 0x000007D4
_0804D2F4: .4byte 0x000007D5
_0804D2F8: .4byte 0x000007D6
_0804D2FC: .4byte 0x000007D9
_0804D300: .4byte 0x00000111
_0804D304: .4byte 0x00000115
_0804D308: .4byte 0x00000149
_0804D30C: .4byte 0x0000014D
_0804D310: .4byte gUnknown_080D8A1C
_0804D314: .4byte gUnknown_080D8A34
_0804D318: .4byte gUnknown_080D8A4C
_0804D31C: .4byte gUnknown_080D8A64
_0804D320: .4byte gUnknown_080D8A7C
_0804D324: .4byte sub_804DFB0
_0804D328: .4byte sub_804FF9C
_0804D32C: .4byte sub_804F768
_0804D330: .4byte sub_804E66C
_0804D334: .4byte gUnknown_080D8918
_0804D338: .4byte sub_804DD9C
_0804D33C: .4byte 0x000002CA
_0804D340:
adds r1, #0x30
ldr r0, [sp, #0xc4]
adds r0, #0x30
str r0, [sp, #0xc4]
adds r6, #8
adds r5, #8
adds r3, #4
adds r2, #4
movs r7, #1
add ip, r7
mov r0, ip
cmp r0, #4
bhi _0804D35C
b _0804D25C
_0804D35C:
ldr r1, [sp, #0xa4]
movs r2, #0xc8
lsls r2, r2, #1
adds r1, r1, r2
str r1, [sp, #0xa4]
ldr r5, [sp, #0xa8]
adds r5, r5, r2
str r5, [sp, #0xa8]
ldr r6, [sp, #0xac]
adds r6, r6, r2
str r6, [sp, #0xac]
ldr r7, [sp, #0xb0]
adds r7, r7, r2
str r7, [sp, #0xb0]
ldr r0, [sp, #0xb4]
adds r0, r0, r2
str r0, [sp, #0xb4]
ldr r1, [sp, #0xb8]
adds r1, r1, r2
str r1, [sp, #0xb8]
add sl, r2
add r8, r2
ldr r5, [sp, #0xbc]
adds r5, r5, r2
str r5, [sp, #0xbc]
movs r6, #1
add sb, r6
mov r7, sb
cmp r7, #2
bhi _0804D39A
b _0804D1F0
_0804D39A:
ldr r0, [sp, #4]
ldr r1, _0804D57C @ =0x000007B4
adds r7, r0, r1
movs r6, #0
movs r5, #0
strh r5, [r7, #0x16]
strh r5, [r7, #0x18]
ldr r4, _0804D580 @ =gUnknown_080D88F0
ldr r0, [r4, #0x20]
bl VramMalloc
str r0, [r7, #4]
ldrh r0, [r4, #0x24]
strh r0, [r7, #0xa]
adds r4, #0x26
ldrb r0, [r4]
ldr r2, [sp, #0x7c]
strb r0, [r2]
ldr r1, [sp, #0x80]
ldrb r0, [r1]
mov r2, sp
ldrb r2, [r2, #0x14]
orrs r0, r2
strb r0, [r1]
movs r0, #0x98
lsls r0, r0, #3
strh r0, [r7, #0x1a]
strh r5, [r7, #8]
strh r5, [r7, #0x14]
strh r5, [r7, #0x1c]
movs r0, #0x10
ldr r5, [sp, #0x88]
strb r0, [r5]
ldr r1, [sp, #0x8c]
strb r6, [r1]
movs r2, #1
rsbs r2, r2, #0
str r2, [r7, #0x28]
movs r5, #0x80
lsls r5, r5, #6
str r5, [r7, #0x10]
movs r6, #0
mov sb, r6
movs r7, #0
mov r8, r7
ldr r0, [sp, #4]
movs r1, #0xff
lsls r1, r1, #3
adds r5, r0, r1
movs r2, #0xfe
lsls r2, r2, #3
adds r7, r0, r2
_0804D402:
strh r6, [r5, #0xe]
strh r6, [r5, #0x10]
ldr r0, _0804D580 @ =gUnknown_080D88F0
mov r1, sb
lsls r4, r1, #3
adds r4, r4, r0
ldr r0, [r4]
bl VramMalloc
str r0, [r7, #4]
ldrh r0, [r4, #4]
strh r0, [r5, #2]
ldrb r0, [r4, #6]
strb r0, [r5, #0x18]
movs r0, #1
rsbs r0, r0, #0
mov r2, sp
strb r0, [r2, #0x18]
movs r0, #0xff
strb r0, [r5, #0x19]
mov r0, sb
adds r0, #0x14
lsls r0, r0, #6
strh r0, [r5, #0x12]
strh r6, [r5]
strh r6, [r5, #0xc]
strh r6, [r5, #0x14]
movs r1, #0x10
strb r1, [r5, #0x1a]
mov r2, r8
strb r2, [r5, #0x1d]
movs r0, #1
rsbs r0, r0, #0
mov sl, r0
str r0, [r5, #0x20]
movs r0, #0x84
lsls r0, r0, #6
str r0, [r5, #8]
adds r5, #0x44
adds r7, #0x44
movs r1, #1
add sb, r1
mov r2, sb
cmp r2, #3
bls _0804D402
movs r4, #0
ldr r7, [sp, #0x2c]
movs r5, #0
strh r4, [r7, #0x16]
strh r4, [r7, #0x18]
movs r0, #0x10
bl VramMalloc
str r0, [r7, #4]
ldr r0, _0804D584 @ =0x000002CE
strh r0, [r7, #0xa]
ldr r6, [sp, #0x48]
strb r5, [r6]
ldr r1, [sp, #0x4c]
ldrb r0, [r1]
mov r2, sp
ldrb r2, [r2, #0x18]
orrs r0, r2
strb r0, [r1]
movs r0, #0xa8
lsls r0, r0, #3
strh r0, [r7, #0x1a]
strh r4, [r7, #8]
strh r4, [r7, #0x14]
strh r4, [r7, #0x1c]
movs r0, #0x10
ldr r6, [sp, #0x50]
strb r0, [r6]
ldr r1, [sp, #0x58]
strb r5, [r1]
mov r2, sl
str r2, [r7, #0x28]
movs r0, #0x80
lsls r0, r0, #6
str r0, [r7, #0x10]
ldr r7, [sp, #0x84]
strh r4, [r7, #0x16]
strh r4, [r7, #0x18]
movs r0, #4
bl VramMalloc
str r0, [r7, #4]
ldr r0, _0804D588 @ =0x00000467
strh r0, [r7, #0xa]
movs r0, #8
ldr r6, [sp, #0x90]
strb r0, [r6]
ldr r1, [sp, #0x94]
ldrb r0, [r1]
mov r2, sp
ldrb r2, [r2, #0x18]
orrs r0, r2
strb r0, [r1]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r7, #0x1a]
strh r4, [r7, #8]
strh r4, [r7, #0x14]
strh r4, [r7, #0x1c]
movs r0, #0x10
ldr r6, [sp, #0x98]
strb r0, [r6]
ldr r1, [sp, #0x9c]
strb r5, [r1]
mov r2, sl
str r2, [r7, #0x28]
movs r6, #0x80
lsls r6, r6, #5
str r6, [r7, #0x10]
ldr r7, [sp, #0xa0]
strh r4, [r7, #0x16]
strh r4, [r7, #0x18]
movs r0, #9
bl VramMalloc
str r0, [r7, #4]
ldr r0, _0804D58C @ =0x000002CD
strh r0, [r7, #0xa]
ldr r0, [sp, #0x20]
strb r5, [r0]
ldr r1, [sp, #0x24]
ldrb r0, [r1]
mov r2, sp
ldrb r2, [r2, #0x18]
orrs r0, r2
strb r0, [r1]
movs r0, #0xe0
lsls r0, r0, #1
mov r8, r0
mov r1, r8
strh r1, [r7, #0x1a]
strh r4, [r7, #8]
strh r4, [r7, #0x14]
strh r4, [r7, #0x1c]
movs r0, #0x10
ldr r2, [sp, #0x28]
strb r0, [r2]
ldr r1, [sp, #0x30]
strb r5, [r1]
mov r2, sl
str r2, [r7, #0x28]
str r6, [r7, #0x10]
ldr r0, [sp, #0xc]
movs r1, #0x94
lsls r1, r1, #1
adds r7, r0, r1
strh r4, [r7, #0x16]
strh r4, [r7, #0x18]
movs r0, #4
bl VramMalloc
str r0, [r7, #4]
ldr r0, _0804D590 @ =0x000002CF
strh r0, [r7, #0xa]
ldr r2, [sp, #0x64]
strb r5, [r2]
ldr r1, [sp, #0x68]
ldrb r0, [r1]
mov r2, sp
ldrb r2, [r2, #0x18]
orrs r0, r2
strb r0, [r1]
mov r0, r8
strh r0, [r7, #0x1a]
strh r4, [r7, #8]
strh r4, [r7, #0x14]
strh r4, [r7, #0x1c]
movs r2, #0x10
ldr r1, [sp, #0x6c]
strb r2, [r1]
ldr r0, [sp, #0x70]
strb r5, [r0]
mov r1, sl
str r1, [r7, #0x28]
str r6, [r7, #0x10]
add sp, #0xc8
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
_0804D57C: .4byte 0x000007B4
_0804D580: .4byte gUnknown_080D88F0
_0804D584: .4byte 0x000002CE
_0804D588: .4byte 0x00000467
_0804D58C: .4byte 0x000002CD
_0804D590: .4byte 0x000002CF
thumb_func_start sub_804D594
sub_804D594: @ 0x0804D594
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
adds r7, r0, #0
adds r6, r1, #0
ldr r0, _0804D694 @ =gActiveBossTask
ldr r0, [r0]
cmp r0, #0
beq _0804D684
ldrh r2, [r0, #6]
movs r3, #0xc0
lsls r3, r3, #0x12
adds r3, r2, r3
ldr r0, _0804D698 @ =IWRAM_START + 0x1C
adds r1, r2, r0
adds r0, #0x7c
adds r0, r0, r2
mov sb, r0
ldr r0, [r1, #0x24]
adds r0, r0, r7
str r0, [r1, #0x24]
ldr r0, [r1, #0x28]
adds r0, r0, r6
str r0, [r1, #0x28]
ldr r0, [r3, #0x14]
adds r0, r0, r7
str r0, [r3, #0x14]
ldr r0, [r3, #0x18]
adds r0, r0, r6
str r0, [r3, #0x18]
movs r4, #0
ldr r0, _0804D69C @ =IWRAM_START + 0x5D4
adds r0, r2, r0
str r0, [sp, #4]
ldr r0, _0804D6A0 @ =IWRAM_START + 0x5D8
adds r0, r0, r2
mov sl, r0
ldr r0, _0804D6A4 @ =IWRAM_START + 0x6C4
adds r0, r2, r0
str r0, [sp, #8]
ldr r0, _0804D6A8 @ =IWRAM_START + 0x6C8
adds r0, r2, r0
str r0, [sp]
asrs r0, r7, #8
mov r8, r0
asrs r0, r6, #8
mov ip, r0
_0804D5F8:
lsls r1, r4, #1
adds r1, r1, r4
lsls r1, r1, #3
adds r1, r1, r4
lsls r1, r1, #4
adds r1, #0x10
add r1, sb
ldr r0, [r1, #0x14]
adds r0, r0, r7
str r0, [r1, #0x14]
ldr r0, [r1, #0x18]
adds r0, r0, r6
str r0, [r1, #0x18]
movs r5, #0
lsls r2, r4, #3
adds r0, r1, #0
adds r0, #0x78
adds r3, r0, r2
adds r1, #0x7c
adds r1, r1, r2
_0804D620:
ldr r0, [r3]
add r0, r8
str r0, [r3]
ldr r0, [r1]
add r0, ip
str r0, [r1]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #4
bls _0804D620
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _0804D5F8
movs r4, #0
ldr r5, [sp, #4]
mov r3, sl
_0804D646:
lsls r1, r4, #3
adds r2, r5, r1
ldr r0, [r2]
adds r0, r0, r7
str r0, [r2]
adds r1, r3, r1
ldr r0, [r1]
adds r0, r0, r6
str r0, [r1]
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #9
bls _0804D646
movs r4, #0
ldr r5, [sp, #8]
ldr r3, [sp]
_0804D668:
lsls r1, r4, #3
adds r2, r5, r1
ldr r0, [r2]
adds r0, r0, r7
str r0, [r2]
adds r1, r3, r1
ldr r0, [r1]
adds r0, r0, r6
str r0, [r1]
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0xf
bls _0804D668
_0804D684:
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804D694: .4byte gActiveBossTask
_0804D698: .4byte IWRAM_START + 0x1C
_0804D69C: .4byte IWRAM_START + 0x5D4
_0804D6A0: .4byte IWRAM_START + 0x5D8
_0804D6A4: .4byte IWRAM_START + 0x6C4
_0804D6A8: .4byte IWRAM_START + 0x6C8
thumb_func_start Task_EggmanKidnapsVanilla
Task_EggmanKidnapsVanilla: @ 0x0804D6AC
push {r4, r5, r6, r7, lr}
ldr r0, _0804D6F0 @ =gCurTask
ldr r7, [r0]
ldrh r0, [r7, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r4, r0, r1
adds r1, #0x1c
adds r5, r0, r1
adds r1, #0x2c
adds r6, r0, r1
ldr r1, _0804D6F4 @ =IWRAM_START + 0x558
adds r3, r0, r1
ldr r2, _0804D6F8 @ =gDispCnt
ldrh r1, [r2]
ldr r0, _0804D6FC @ =0x00009FFF
ands r0, r1
strh r0, [r2]
ldrh r0, [r4, #0x12]
subs r0, #1
strh r0, [r4, #0x12]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804D704
ldr r0, _0804D700 @ =gFlags
ldr r1, [r0]
movs r2, #5
rsbs r2, r2, #0
ands r1, r2
str r1, [r0]
adds r0, r7, #0
bl TaskDestroy
b _0804D770
.align 2, 0
_0804D6F0: .4byte gCurTask
_0804D6F4: .4byte IWRAM_START + 0x558
_0804D6F8: .4byte gDispCnt
_0804D6FC: .4byte 0x00009FFF
_0804D700: .4byte gFlags
_0804D704:
ldr r1, [r3]
adds r0, r3, #0
bl _call_via_r1
ldr r1, [r5]
adds r0, r5, #0
bl _call_via_r1
ldr r1, [r6]
adds r0, r6, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_80505B8
ldr r1, _0804D778 @ =gWinRegs
ldr r0, _0804D77C @ =0x00002735
strh r0, [r1, #0xa]
ldr r2, _0804D780 @ =gFlags
ldr r0, [r2]
movs r1, #4
orrs r0, r1
str r0, [r2]
ldr r1, _0804D784 @ =gUnknown_03002878
ldr r0, _0804D788 @ =0x04000016
str r0, [r1]
ldr r1, _0804D78C @ =gUnknown_03002A80
movs r0, #2
strb r0, [r1]
ldr r0, _0804D790 @ =gBgOffsetsHBlank
ldr r3, [r0]
movs r2, #0
ldr r6, _0804D794 @ =gSineTable
ldr r5, _0804D798 @ =gStageTime
ldr r4, _0804D79C @ =0x000003FF
_0804D74A:
ldr r1, [r5]
adds r1, r2, r1
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #3
ands r0, r4
lsls r0, r0, #1
adds r0, r0, r6
ldrh r0, [r0]
lsls r0, r0, #0x10
asrs r0, r0, #0x1c
adds r0, #0x2c
strh r0, [r3]
adds r3, #2
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0x9e
bls _0804D74A
_0804D770:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804D778: .4byte gWinRegs
_0804D77C: .4byte 0x00002735
_0804D780: .4byte gFlags
_0804D784: .4byte gUnknown_03002878
_0804D788: .4byte 0x04000016
_0804D78C: .4byte gUnknown_03002A80
_0804D790: .4byte gBgOffsetsHBlank
_0804D794: .4byte gSineTable
_0804D798: .4byte gStageTime
_0804D79C: .4byte 0x000003FF
thumb_func_start sub_804D7A0
sub_804D7A0: @ 0x0804D7A0
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
ldr r0, _0804D858 @ =gCurTask
mov sb, r0
ldr r0, [r0]
ldrh r0, [r0, #6]
mov r8, r0
movs r5, #0xc0
lsls r5, r5, #0x12
add r5, r8
ldr r4, _0804D85C @ =IWRAM_START + 0x1C
add r4, r8
ldr r6, _0804D860 @ =IWRAM_START + 0x48
add r6, r8
ldr r0, _0804D864 @ =IWRAM_START + 0x98
add r0, r8
ldr r3, _0804D868 @ =gUnknown_03005424
ldrh r1, [r3]
movs r2, #0x20
orrs r1, r2
strh r1, [r3]
ldr r3, _0804D86C @ =gDispCnt
ldrh r2, [r3]
ldr r1, _0804D870 @ =0x00009FFF
ands r1, r2
strh r1, [r3]
ldr r1, [r4, #0x24]
movs r2, #0xa0
lsls r2, r2, #3
adds r1, r1, r2
str r1, [r4, #0x24]
ldrh r2, [r6, #0x3a]
movs r7, #0
strh r2, [r0, #6]
ldr r1, [r6, #0x44]
asrs r1, r1, #8
adds r2, r2, r1
movs r3, #0xd7
lsls r3, r3, #2
adds r2, r2, r3
adds r3, #0xa3
adds r1, r3, #0
ands r2, r1
strh r2, [r0, #6]
movs r1, #0x20
ldrsh r2, [r4, r1]
lsls r2, r2, #8
ldr r1, [r4, #0x24]
adds r1, r1, r2
str r1, [r0, #8]
movs r3, #0x22
ldrsh r2, [r4, r3]
lsls r2, r2, #8
ldr r1, [r4, #0x28]
adds r1, r1, r2
str r1, [r0, #0xc]
ldr r1, [r0]
bl _call_via_r1
ldr r1, [r4]
adds r0, r4, #0
bl _call_via_r1
ldr r1, [r6]
adds r0, r6, #0
bl _call_via_r1
adds r0, r5, #0
bl sub_80501D4
adds r0, r5, #0
bl sub_8050958
ldr r0, [r4, #0x24]
movs r1, #0x80
lsls r1, r1, #1
adds r0, r0, r1
str r0, [r4, #0x24]
ldrh r0, [r5, #0x12]
subs r1, r0, #1
strh r1, [r5, #0x12]
lsls r0, r1, #0x10
cmp r0, #0
bne _0804D878
mov r2, sb
ldr r1, [r2]
ldr r0, _0804D874 @ =sub_804D9DC
str r0, [r1, #8]
b _0804D8C0
.align 2, 0
_0804D858: .4byte gCurTask
_0804D85C: .4byte IWRAM_START + 0x1C
_0804D860: .4byte IWRAM_START + 0x48
_0804D864: .4byte IWRAM_START + 0x98
_0804D868: .4byte gUnknown_03005424
_0804D86C: .4byte gDispCnt
_0804D870: .4byte 0x00009FFF
_0804D874: .4byte sub_804D9DC
_0804D878:
lsls r0, r1, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x4f
bne _0804D8C0
ldr r0, _0804D8CC @ =IWRAM_START + 0x900
add r0, r8
movs r1, #0xc0
lsls r1, r1, #0x13
str r1, [r0, #4]
strh r7, [r0, #0xa]
ldr r1, _0804D8D0 @ =0x0600E000
str r1, [r0, #0xc]
strh r7, [r0, #0x18]
strh r7, [r0, #0x1a]
movs r1, #0xbc
lsls r1, r1, #1
strh r1, [r0, #0x1c]
strh r7, [r0, #0x1e]
strh r7, [r0, #0x20]
strh r7, [r0, #0x22]
strh r7, [r0, #0x24]
movs r1, #0x20
strh r1, [r0, #0x26]
movs r1, #0x14
strh r1, [r0, #0x28]
ldr r2, _0804D8D4 @ =IWRAM_START + 0x92A
add r2, r8
movs r1, #0
strb r1, [r2]
movs r1, #1
strh r1, [r0, #0x2e]
bl InitBackground
ldr r1, _0804D8D8 @ =gBgCntRegs
ldr r0, _0804D8DC @ =0x00001C02
strh r0, [r1, #2]
_0804D8C0:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804D8CC: .4byte IWRAM_START + 0x900
_0804D8D0: .4byte 0x0600E000
_0804D8D4: .4byte IWRAM_START + 0x92A
_0804D8D8: .4byte gBgCntRegs
_0804D8DC: .4byte 0x00001C02
thumb_func_start sub_804D8E0
sub_804D8E0: @ 0x0804D8E0
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
adds r6, r5, #0
adds r6, #0x1c
adds r0, #0x48
str r0, [sp]
adds r7, r5, #0
adds r7, #0x98
movs r1, #0xab
lsls r1, r1, #3
adds r1, r5, r1
str r1, [sp, #4]
ldr r2, _0804D9C4 @ =0x00000654
adds r2, r2, r5
mov sb, r2
bl sub_802C6E4
movs r1, #0x80
lsls r1, r1, #2
ands r1, r0
cmp r1, #0
beq _0804D91A
bl sub_802BA8C
_0804D91A:
movs r4, #0
ldr r0, _0804D9C8 @ =gUnknown_080D8E14
ldr r0, [r0, #8]
mov r8, r0
ldr r0, _0804D9CC @ =gUnknown_080D8918
mov ip, r0
movs r1, #0x86
add r1, ip
mov sl, r1
_0804D92C:
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r4
lsls r0, r0, #4
adds r0, #0x10
adds r2, r7, r0
adds r3, r2, #0
adds r3, #0x20
ldrb r1, [r2, #4]
movs r0, #4
orrs r0, r1
strb r0, [r2, #4]
ldr r0, [r2]
cmp r0, r8
beq _0804D970
mov r0, ip
adds r0, #0x84
ldrh r0, [r0]
strh r0, [r3, #0xa]
mov r0, sl
ldrb r1, [r0]
adds r0, r3, #0
adds r0, #0x20
strb r1, [r0]
adds r1, r2, #0
adds r1, #0x41
movs r0, #0xff
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #5
str r0, [r3, #0x10]
movs r0, #0x10
strh r0, [r2, #8]
_0804D970:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _0804D92C
ldr r1, _0804D9D0 @ =sub_804E66C
str r1, [r7]
ldr r2, _0804D9D4 @ =sub_804FF9C
mov r0, sb
str r2, [r0]
movs r1, #0
movs r0, #0x96
lsls r0, r0, #1
mov r2, sb
strh r0, [r2, #8]
ldr r0, _0804D9D8 @ =sub_8050DC8
ldr r2, [sp, #4]
str r0, [r2]
ldr r0, [sp]
strh r1, [r0, #0x2c]
strh r1, [r6, #0x14]
movs r2, #0x20
ldrsh r1, [r6, r2]
lsls r1, r1, #8
ldr r0, [r6, #0x24]
adds r0, r0, r1
str r0, [r5, #0x14]
movs r0, #0x22
ldrsh r1, [r6, r0]
lsls r1, r1, #8
ldr r0, [r6, #0x28]
adds r0, r0, r1
str r0, [r5, #0x18]
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
_0804D9C4: .4byte 0x00000654
_0804D9C8: .4byte gUnknown_080D8E14
_0804D9CC: .4byte gUnknown_080D8918
_0804D9D0: .4byte sub_804E66C
_0804D9D4: .4byte sub_804FF9C
_0804D9D8: .4byte sub_8050DC8
thumb_func_start sub_804D9DC
sub_804D9DC: @ 0x0804D9DC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r1, _0804DAA4 @ =gCurTask
ldr r0, [r1]
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r6, r0, r1
ldr r2, _0804DAA8 @ =IWRAM_START + 0x1C
adds r4, r0, r2
adds r1, #0x48
adds r7, r0, r1
adds r2, #0x7c
adds r5, r0, r2
ldr r1, _0804DAAC @ =IWRAM_START + 0x558
adds r1, r1, r0
mov sb, r1
ldr r2, _0804DAB0 @ =IWRAM_START + 0x594
adds r2, r2, r0
mov sl, r2
ldr r1, _0804DAB4 @ =IWRAM_START + 0x654
adds r1, r1, r0
mov r8, r1
ldr r2, _0804DAB8 @ =gDispCnt
ldrh r1, [r2]
ldr r0, _0804DABC @ =0x00009FFF
ands r0, r1
strh r0, [r2]
ldr r0, [r4, #0x24]
movs r2, #0xa0
lsls r2, r2, #3
adds r0, r0, r2
str r0, [r4, #0x24]
ldrh r1, [r7, #0x3a]
strh r1, [r5, #6]
ldr r0, [r7, #0x44]
asrs r0, r0, #8
adds r1, r1, r0
movs r0, #0xd7
lsls r0, r0, #2
adds r1, r1, r0
ldr r2, _0804DAC0 @ =0x000003FF
adds r0, r2, #0
ands r1, r0
strh r1, [r5, #6]
movs r0, #0x20
ldrsh r1, [r4, r0]
lsls r1, r1, #8
ldr r0, [r4, #0x24]
adds r0, r0, r1
str r0, [r5, #8]
movs r2, #0x22
ldrsh r1, [r4, r2]
lsls r1, r1, #8
ldr r0, [r4, #0x28]
adds r0, r0, r1
str r0, [r5, #0xc]
ldrb r0, [r6, #0xc]
cmp r0, #0
bne _0804DAE0
ldr r0, _0804DAC4 @ =gMPlayInfo_SE1
bl MPlayStop
ldr r0, _0804DAC8 @ =gMPlayInfo_SE2
bl MPlayStop
ldr r0, _0804DACC @ =gMPlayInfo_SE3
bl MPlayStop
ldr r2, _0804DAD0 @ =gUnknown_03005424
ldrh r0, [r2]
movs r1, #0x23
orrs r0, r1
strh r0, [r2]
bl sub_802B81C
adds r0, r6, #0
bl sub_804D8E0
adds r0, r6, #0
bl sub_80501D4
adds r0, r6, #0
bl sub_8050958
ldr r0, _0804DAD4 @ =sub_8050DC4
str r0, [r5]
ldr r0, _0804DAD8 @ =sub_8050DF8
mov r1, r8
str r0, [r1]
movs r0, #0x78
strh r0, [r6, #0x12]
ldr r2, _0804DAA4 @ =gCurTask
ldr r1, [r2]
ldr r0, _0804DADC @ =sub_804DB34
str r0, [r1, #8]
b _0804DB24
.align 2, 0
_0804DAA4: .4byte gCurTask
_0804DAA8: .4byte IWRAM_START + 0x1C
_0804DAAC: .4byte IWRAM_START + 0x558
_0804DAB0: .4byte IWRAM_START + 0x594
_0804DAB4: .4byte IWRAM_START + 0x654
_0804DAB8: .4byte gDispCnt
_0804DABC: .4byte 0x00009FFF
_0804DAC0: .4byte 0x000003FF
_0804DAC4: .4byte gMPlayInfo_SE1
_0804DAC8: .4byte gMPlayInfo_SE2
_0804DACC: .4byte gMPlayInfo_SE3
_0804DAD0: .4byte gUnknown_03005424
_0804DAD4: .4byte sub_8050DC4
_0804DAD8: .4byte sub_8050DF8
_0804DADC: .4byte sub_804DB34
_0804DAE0:
ldr r1, [r5]
adds r0, r5, #0
bl _call_via_r1
mov r0, sb
ldr r1, [r0]
bl _call_via_r1
mov r2, sl
ldr r1, [r2]
mov r0, sl
bl _call_via_r1
mov r0, r8
ldr r1, [r0]
bl _call_via_r1
ldr r1, [r4]
adds r0, r4, #0
bl _call_via_r1
ldr r1, [r7]
adds r0, r7, #0
bl _call_via_r1
adds r0, r6, #0
bl sub_804ECC4
adds r0, r6, #0
bl sub_80501D4
adds r0, r6, #0
bl sub_8050958
_0804DB24:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_804DB34
sub_804DB34: @ 0x0804DB34
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
ldr r0, _0804DC08 @ =gCurTask
mov sb, r0
ldr r0, [r0]
ldrh r5, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r7, r5, r0
ldr r1, _0804DC0C @ =IWRAM_START + 0x1C
adds r4, r5, r1
ldr r2, _0804DC10 @ =IWRAM_START + 0x98
adds r0, r5, r2
ldr r1, _0804DC14 @ =IWRAM_START + 0x594
adds r6, r5, r1
ldr r2, _0804DC18 @ =IWRAM_START + 0x654
adds r2, r2, r5
mov r8, r2
ldr r3, _0804DC1C @ =gDispCnt
ldrh r2, [r3]
ldr r1, _0804DC20 @ =0x00009FFF
ands r1, r2
strh r1, [r3]
ldr r1, [r4, #0x24]
movs r2, #0x98
lsls r2, r2, #3
adds r1, r1, r2
str r1, [r4, #0x24]
ldr r1, [r4, #0x28]
adds r1, #0x40
str r1, [r4, #0x28]
ldr r1, [r0]
bl _call_via_r1
ldr r1, [r6]
adds r0, r6, #0
bl _call_via_r1
mov r0, r8
ldr r1, [r0]
bl _call_via_r1
adds r0, r7, #0
bl sub_80501D4
adds r0, r7, #0
bl sub_8050958
adds r0, r7, #0
bl sub_804DCF8
ldr r1, _0804DC24 @ =gIntrTable + 4
adds r5, r5, r1
ldr r6, _0804DC28 @ =gCamera
ldr r0, [r6]
movs r2, #0x86
lsls r2, r2, #2
adds r0, r0, r2
lsls r0, r0, #8
ldr r4, [r6, #4]
adds r4, #0x3c
lsls r4, r4, #8
ldr r1, [r7, #0x14]
subs r0, r0, r1
lsls r0, r0, #1
movs r1, #0x64
bl Div
ldr r1, [r7, #0x14]
adds r1, r1, r0
str r1, [r7, #0x14]
ldr r0, [r7, #0x18]
subs r4, r4, r0
lsls r4, r4, #1
adds r0, r4, #0
movs r1, #0x64
bl Div
ldr r1, [r7, #0x18]
adds r1, r1, r0
str r1, [r7, #0x18]
ldr r0, [r7, #0x14]
asrs r0, r0, #8
ldr r1, [r6]
subs r0, r0, r1
strh r0, [r5, #0x16]
ldr r0, [r7, #0x18]
asrs r0, r0, #8
ldr r1, [r6, #4]
subs r0, r0, r1
strh r0, [r5, #0x18]
adds r0, r5, #0
bl UpdateSpriteAnimation
adds r0, r5, #0
bl DisplaySprite
ldrh r0, [r7, #0x12]
cmp r0, #0
beq _0804DC2C
subs r0, #1
strh r0, [r7, #0x12]
b _0804DC4C
.align 2, 0
_0804DC08: .4byte gCurTask
_0804DC0C: .4byte IWRAM_START + 0x1C
_0804DC10: .4byte IWRAM_START + 0x98
_0804DC14: .4byte IWRAM_START + 0x594
_0804DC18: .4byte IWRAM_START + 0x654
_0804DC1C: .4byte gDispCnt
_0804DC20: .4byte 0x00009FFF
_0804DC24: .4byte gIntrTable + 4
_0804DC28: .4byte gCamera
_0804DC2C:
adds r0, r7, #0
bl NextTransitionFrame
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _0804DC4C
movs r0, #2
strh r0, [r7, #0x12]
ldr r1, _0804DC58 @ =gBldRegs
movs r0, #0x10
strh r0, [r1, #4]
mov r0, sb
ldr r1, [r0]
ldr r0, _0804DC5C @ =Task_804DC60
str r0, [r1, #8]
_0804DC4C:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804DC58: .4byte gBldRegs
_0804DC5C: .4byte Task_804DC60
thumb_func_start Task_804DC60
Task_804DC60: @ 0x0804DC60
push {lr}
ldr r0, _0804DCC4 @ =gCurTask
ldr r0, [r0]
ldrh r1, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r1, r1, r0
ldrh r0, [r1, #0x12]
subs r0, #1
strh r0, [r1, #0x12]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804DCC0
ldr r1, _0804DCC8 @ =0x0000FFFF
movs r0, #0
bl TasksDestroyInPriorityRange
ldr r1, _0804DCCC @ =gUnknown_03002AE4
ldr r0, _0804DCD0 @ =gUnknown_0300287C
ldrb r0, [r0]
strb r0, [r1]
ldr r1, _0804DCD4 @ =gUnknown_03005390
movs r0, #0
strb r0, [r1]
ldr r1, _0804DCD8 @ =gVramGraphicsCopyCursor
ldr r0, _0804DCDC @ =gVramGraphicsCopyQueueIndex
ldrb r0, [r0]
strb r0, [r1]
ldr r2, _0804DCE0 @ =gUnknown_03005424
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #3
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
bl CreateStageUI
ldr r0, _0804DCE4 @ =gCourseTime
ldr r0, [r0]
ldr r1, _0804DCE8 @ =gRingCount
ldrh r1, [r1]
ldr r2, _0804DCEC @ =gUnknown_030054F4
ldrb r2, [r2]
bl sub_80304DC
ldr r1, _0804DCF0 @ =gBldRegs
ldr r0, _0804DCF4 @ =0x00003FBF
strh r0, [r1]
_0804DCC0:
pop {r0}
bx r0
.align 2, 0
_0804DCC4: .4byte gCurTask
_0804DCC8: .4byte 0x0000FFFF
_0804DCCC: .4byte gUnknown_03002AE4
_0804DCD0: .4byte gUnknown_0300287C
_0804DCD4: .4byte gUnknown_03005390
_0804DCD8: .4byte gVramGraphicsCopyCursor
_0804DCDC: .4byte gVramGraphicsCopyQueueIndex
_0804DCE0: .4byte gUnknown_03005424
_0804DCE4: .4byte gCourseTime
_0804DCE8: .4byte gRingCount
_0804DCEC: .4byte gUnknown_030054F4
_0804DCF0: .4byte gBldRegs
_0804DCF4: .4byte 0x00003FBF
thumb_func_start sub_804DCF8
sub_804DCF8: @ 0x0804DCF8
push {r4, r5, r6, r7, lr}
sub sp, #0x20
adds r7, r0, #0
ldr r4, _0804DD80 @ =gStageTime
ldr r0, [r4]
movs r1, #0xd
bl Mod
cmp r0, #0
bne _0804DD12
movs r0, #0x90
bl m4aSongNumStart
_0804DD12:
ldr r6, [r4]
movs r0, #3
ands r6, r0
cmp r6, #0
bne _0804DD76
ldr r5, _0804DD84 @ =gPseudoRandom
ldr r0, [r5]
ldr r3, _0804DD88 @ =0x00196225
adds r1, r0, #0
muls r1, r3, r1
ldr r2, _0804DD8C @ =0x3C6EF35F
adds r1, r1, r2
movs r4, #0x7f
adds r0, r1, #0
ands r0, r4
adds r0, #0x40
str r0, [sp, #0x14]
muls r1, r3, r1
adds r1, r1, r2
adds r0, r1, #0
ands r0, r4
adds r0, #0x10
str r0, [sp, #0x18]
mov r0, sp
strh r6, [r0, #0x1c]
mov r4, sp
adds r0, r1, #0
muls r0, r3, r0
adds r0, r0, r2
str r0, [r5]
ldr r1, _0804DD90 @ =0x000003FF
ands r0, r1
strh r0, [r4, #0xc]
mov r1, sp
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r1, #0xe]
ldr r0, _0804DD94 @ =0x06012980
str r0, [sp]
ldr r0, _0804DD98 @ =0x0000026B
strh r0, [r1, #8]
mov r0, sp
strh r6, [r0, #0xa]
movs r0, #1
str r0, [sp, #4]
adds r1, r7, #0
adds r1, #0xe
mov r0, sp
bl CreateBossParticleWithExplosionUpdate
_0804DD76:
add sp, #0x20
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804DD80: .4byte gStageTime
_0804DD84: .4byte gPseudoRandom
_0804DD88: .4byte 0x00196225
_0804DD8C: .4byte 0x3C6EF35F
_0804DD90: .4byte 0x000003FF
_0804DD94: .4byte 0x06012980
_0804DD98: .4byte 0x0000026B
thumb_func_start sub_804DD9C
sub_804DD9C: @ 0x0804DD9C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r7, r0, #0
movs r0, #0
mov sb, r0
ldr r2, _0804DE58 @ =gCamera
mov sl, r2
_0804DDB0:
adds r0, r7, #4
mov r5, sb
adds r1, r0, r5
ldrb r0, [r1]
cmp r0, #0
beq _0804DE3A
lsls r4, r5, #1
add r4, sb
lsls r4, r4, #4
adds r4, #0x48
adds r4, r7, r4
subs r0, #1
strb r0, [r1]
lsls r2, r5, #3
adds r6, r7, #0
adds r6, #0x20
adds r6, r6, r2
ldr r1, [r6]
movs r0, #0xa0
lsls r0, r0, #3
adds r1, r1, r0
str r1, [r6]
lsls r5, r5, #2
mov r8, r5
adds r3, r7, #0
adds r3, #0xa
add r3, r8
movs r5, #0
ldrsh r0, [r3, r5]
adds r1, r1, r0
str r1, [r6]
adds r5, r7, #0
adds r5, #0x24
adds r5, r5, r2
adds r2, r7, #0
adds r2, #0xc
add r2, r8
movs r0, #0
ldrsh r1, [r2, r0]
ldr r0, [r5]
adds r0, r0, r1
str r0, [r5]
ldrh r1, [r3]
lsls r0, r1, #0x10
asrs r0, r0, #0x14
subs r1, r1, r0
strh r1, [r3]
ldrh r1, [r2]
lsls r0, r1, #0x10
asrs r0, r0, #0x14
subs r1, r1, r0
strh r1, [r2]
ldr r0, [r6]
asrs r0, r0, #8
mov r2, sl
ldr r1, [r2]
subs r0, r0, r1
strh r0, [r4, #0x16]
ldr r0, [r5]
asrs r0, r0, #8
ldr r1, [r2, #4]
subs r0, r0, r1
strh r0, [r4, #0x18]
adds r0, r4, #0
bl UpdateSpriteAnimation
adds r0, r4, #0
bl DisplaySprite
_0804DE3A:
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
cmp r0, #4
bls _0804DDB0
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
_0804DE58: .4byte gCamera
thumb_func_start sub_804DE5C
sub_804DE5C: @ 0x0804DE5C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
mov r8, r1
mov ip, r2
lsls r3, r3, #0x10
lsrs r3, r3, #0x10
movs r4, #0
ldr r1, _0804DED4 @ =gSineTable
movs r2, #0x80
lsls r2, r2, #1
adds r0, r3, r2
lsls r0, r0, #1
adds r5, r0, r1
lsls r3, r3, #1
adds r6, r3, r1
_0804DE7E:
mov r0, ip
adds r0, #4
adds r3, r0, r4
ldrb r0, [r3]
cmp r0, #0
bne _0804DED8
lsls r2, r4, #2
mov r1, ip
adds r1, #0xa
adds r1, r1, r2
ldrh r0, [r5]
lsls r0, r0, #0x10
asrs r0, r0, #0x15
rsbs r0, r0, #0
strh r0, [r1]
mov r1, ip
adds r1, #0xc
adds r1, r1, r2
ldrh r0, [r6]
lsls r0, r0, #0x10
asrs r0, r0, #0x15
rsbs r0, r0, #0
strh r0, [r1]
lsls r1, r4, #3
mov r0, ip
adds r0, #0x20
adds r0, r0, r1
str r7, [r0]
mov r0, ip
adds r0, #0x24
adds r0, r0, r1
mov r1, r8
str r1, [r0]
movs r0, #0x10
strb r0, [r3]
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #4
add r0, ip
adds r0, #0x69
movs r1, #0xff
strb r1, [r0]
b _0804DEE2
.align 2, 0
_0804DED4: .4byte gSineTable
_0804DED8:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #4
bls _0804DE7E
_0804DEE2:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_start sub_804DEEC
sub_804DEEC: @ 0x0804DEEC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
mov sl, r0
str r1, [sp]
ldr r0, _0804DF7C @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804DF80 @ =IWRAM_START + 0x594
adds r1, r1, r0
mov ip, r1
movs r4, #0
ldr r5, _0804DF84 @ =gPseudoRandom
ldr r6, _0804DF88 @ =0x00196225
movs r2, #0xff
mov r8, r2
ldr r7, _0804DF8C @ =0xFFFFFE00
mov sb, r7
_0804DF16:
mov r0, ip
adds r0, #4
adds r1, r0, r4
ldrb r0, [r1]
cmp r0, #0
bne _0804DF94
movs r0, #1
strb r0, [r1]
mov r0, ip
adds r0, #0xe
adds r0, r0, r4
movs r1, #0x3c
strb r1, [r0]
lsls r3, r4, #2
mov r2, ip
adds r2, #0x18
adds r2, r2, r3
ldr r0, [r5]
adds r1, r0, #0
muls r1, r6, r1
ldr r0, _0804DF90 @ =0x3C6EF35F
adds r1, r1, r0
str r1, [r5]
adds r0, r1, #0
mov r7, r8
ands r0, r7
add r0, sb
strh r0, [r2]
mov r2, ip
adds r2, #0x1a
adds r2, r2, r3
adds r0, r1, #0
muls r0, r6, r0
ldr r1, _0804DF90 @ =0x3C6EF35F
adds r0, r0, r1
str r0, [r5]
ands r0, r7
add r0, sb
strh r0, [r2]
lsls r1, r4, #3
mov r0, ip
adds r0, #0x40
adds r0, r0, r1
mov r2, sl
str r2, [r0]
mov r0, ip
adds r0, #0x44
adds r0, r0, r1
ldr r7, [sp]
str r7, [r0]
b _0804DF9E
.align 2, 0
_0804DF7C: .4byte gCurTask
_0804DF80: .4byte IWRAM_START + 0x594
_0804DF84: .4byte gPseudoRandom
_0804DF88: .4byte 0x00196225
_0804DF8C: .4byte 0xFFFFFE00
_0804DF90: .4byte 0x3C6EF35F
_0804DF94:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #9
bls _0804DF16
_0804DF9E:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_804DFB0
sub_804DFB0: @ 0x0804DFB0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r6, r0, #0
adds r7, r6, #0
adds r7, #0x90
movs r0, #0
mov r8, r0
mov sb, r0
ldr r1, _0804E074 @ =gCamera
mov sl, r1
_0804DFCA:
adds r0, r6, #4
mov r3, r8
adds r2, r0, r3
ldrb r0, [r2]
cmp r0, #0
beq _0804E058
adds r1, r6, #0
adds r1, #0xe
add r1, r8
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _0804DFEC
strb r0, [r2]
_0804DFEC:
mov r0, r8
lsls r2, r0, #2
adds r4, r6, #0
adds r4, #0x1a
adds r4, r4, r2
ldrh r0, [r4]
adds r0, #0x20
strh r0, [r4]
mov r1, r8
lsls r5, r1, #3
adds r3, r6, #0
adds r3, #0x40
adds r3, r3, r5
ldr r1, [r3]
movs r0, #0xa0
lsls r0, r0, #3
adds r1, r1, r0
adds r0, r6, #0
adds r0, #0x18
adds r0, r0, r2
movs r2, #0
ldrsh r0, [r0, r2]
adds r1, r1, r0
str r1, [r3]
adds r2, r6, #0
adds r2, #0x44
adds r2, r2, r5
movs r0, #0
ldrsh r1, [r4, r0]
ldr r0, [r2]
adds r0, r0, r1
str r0, [r2]
ldr r0, [r3]
asrs r0, r0, #8
mov r3, sl
ldr r1, [r3]
subs r0, r0, r1
strh r0, [r7, #0x16]
ldr r0, [r2]
asrs r0, r0, #8
ldr r1, [r3, #4]
subs r0, r0, r1
strh r0, [r7, #0x18]
mov r0, sb
cmp r0, #0
bne _0804E052
adds r0, r7, #0
bl UpdateSpriteAnimation
movs r1, #1
mov sb, r1
_0804E052:
adds r0, r7, #0
bl DisplaySprite
_0804E058:
mov r0, r8
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r8, r0
cmp r0, #9
bls _0804DFCA
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
_0804E074: .4byte gCamera
thumb_func_start sub_804E078
sub_804E078: @ 0x0804E078
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _0804E0B8 @ =gCurTask
ldr r0, [r0]
ldrh r1, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r4, r1, r0
adds r0, #0x1c
adds r6, r1, r0
adds r0, r5, #0
bl sub_8050030
lsls r0, r0, #0x18
cmp r0, #0
beq _0804E112
ldrb r0, [r4, #0xc]
cmp r0, #4
bls _0804E0C4
ldr r0, [r5, #0x30]
ldr r1, _0804E0BC @ =0x00000FFF
ands r0, r1
str r0, [r5, #0x30]
ldr r1, _0804E0C0 @ =gUnknown_080D8D6C
ldr r0, [r1, #0x30]
str r0, [r5]
ldr r0, [r1, #0x34]
str r0, [r5, #0x34]
ldrh r0, [r1, #0x38]
strh r0, [r5, #0x2e]
b _0804E112
.align 2, 0
_0804E0B8: .4byte gCurTask
_0804E0BC: .4byte 0x00000FFF
_0804E0C0: .4byte gUnknown_080D8D6C
_0804E0C4:
ldr r0, _0804E134 @ =gStageTime
ldr r0, [r0]
movs r1, #3
bl Mod
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, [r5, #0x30]
ldr r2, _0804E138 @ =0x00000FFF
ands r1, r2
str r1, [r5, #0x30]
ldr r3, _0804E13C @ =gUnknown_080D8D6C
ldr r1, [r3, #0x18]
str r1, [r5]
ldr r1, [r3, #0x1c]
str r1, [r5, #0x34]
ldrh r1, [r3, #0x20]
strh r1, [r5, #0x2e]
ldr r1, [r6, #0x18]
ands r1, r2
str r1, [r6, #0x18]
ldr r2, _0804E140 @ =gUnknown_080D8DCC
lsls r1, r0, #1
adds r1, r1, r0
lsls r1, r1, #2
adds r4, r1, r2
ldr r0, [r4]
str r0, [r6]
adds r0, r2, #4
adds r1, r1, r0
ldr r0, [r1]
str r0, [r6, #0x1c]
ldrh r0, [r4, #8]
strh r0, [r6, #0x16]
ldrh r0, [r3, #8]
strh r0, [r5, #0x2c]
ldrh r0, [r2, #8]
strh r0, [r6, #0x14]
_0804E112:
movs r0, #0
str r0, [r5, #0x44]
str r0, [r5, #0x48]
ldrh r0, [r5, #0x38]
cmp r0, #0
beq _0804E14A
movs r1, #0
movs r2, #0xa
bl sub_808558C
lsls r0, r0, #0x10
cmp r0, #0
bge _0804E144
ldrh r0, [r5, #0x38]
subs r0, #1
b _0804E148
.align 2, 0
_0804E134: .4byte gStageTime
_0804E138: .4byte 0x00000FFF
_0804E13C: .4byte gUnknown_080D8D6C
_0804E140: .4byte gUnknown_080D8DCC
_0804E144:
ldrh r0, [r5, #0x38]
adds r0, #1
_0804E148:
strh r0, [r5, #0x38]
_0804E14A:
ldrh r1, [r5, #0x38]
ldr r0, _0804E158 @ =0x000003FF
ands r0, r1
strh r0, [r5, #0x38]
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0804E158: .4byte 0x000003FF
thumb_func_start sub_804E15C
sub_804E15C: @ 0x0804E15C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x24
adds r7, r0, #0
ldr r0, _0804E1B8 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804E1BC @ =IWRAM_START + 0x558
adds r1, r0, r1
str r1, [sp, #0x10]
ldr r2, _0804E1C0 @ =IWRAM_START + 0x1C
adds r4, r0, r2
adds r0, r7, #0
bl sub_8050030
lsls r0, r0, #0x18
cmp r0, #0
beq _0804E1DC
ldr r0, [r7, #0x30]
ldr r1, _0804E1C4 @ =0x00000FFF
ands r0, r1
str r0, [r7, #0x30]
ldr r1, _0804E1C8 @ =gUnknown_080D8D6C
ldr r0, [r1]
str r0, [r7]
ldr r0, [r1, #4]
str r0, [r7, #0x34]
ldrh r0, [r1, #8]
movs r2, #0
strh r0, [r7, #0x2e]
ldr r3, _0804E1CC @ =gDispCnt
ldrh r1, [r3]
ldr r0, _0804E1D0 @ =0x0000DFFF
ands r0, r1
strh r0, [r3]
ldr r0, _0804E1D4 @ =gWinRegs
strh r2, [r0, #8]
strh r2, [r0, #0xa]
ldr r0, _0804E1D8 @ =gBldRegs
strh r2, [r0]
strh r2, [r0, #2]
strh r2, [r0, #4]
b _0804E4B2
.align 2, 0
_0804E1B8: .4byte gCurTask
_0804E1BC: .4byte IWRAM_START + 0x558
_0804E1C0: .4byte IWRAM_START + 0x1C
_0804E1C4: .4byte 0x00000FFF
_0804E1C8: .4byte gUnknown_080D8D6C
_0804E1CC: .4byte gDispCnt
_0804E1D0: .4byte 0x0000DFFF
_0804E1D4: .4byte gWinRegs
_0804E1D8: .4byte gBldRegs
_0804E1DC:
ldr r0, [r7, #0x30]
lsrs r0, r0, #0xc
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #0x14]
cmp r0, #2
bhi _0804E1EC
b _0804E4B2
_0804E1EC:
movs r3, #0x20
ldrsh r0, [r4, r3]
lsls r0, r0, #8
ldr r1, [r4, #0x24]
adds r1, r1, r0
mov sb, r1
movs r6, #0x22
ldrsh r0, [r4, r6]
lsls r0, r0, #8
ldr r1, [r4, #0x28]
adds r1, r1, r0
mov r8, r1
ldr r0, [r7, #0x44]
asrs r0, r0, #8
ldrh r1, [r7, #0x3a]
adds r5, r0, r1
ldr r2, _0804E3F8 @ =0x000003FF
adds r0, r2, #0
ands r5, r0
ldr r3, _0804E3FC @ =gSineTable
movs r2, #0x80
lsls r2, r2, #1
adds r0, r5, r2
lsls r0, r0, #1
adds r0, r0, r3
movs r4, #0
ldrsh r0, [r0, r4]
ldr r4, _0804E400 @ =gUnknown_080D89A5
ldrb r1, [r4]
muls r0, r1, r0
asrs r0, r0, #6
add sb, r0
lsls r0, r5, #1
adds r0, r0, r3
movs r6, #0
ldrsh r0, [r0, r6]
muls r0, r1, r0
asrs r0, r0, #6
add r8, r0
adds r5, #0x8c
ldr r0, _0804E404 @ =0xFFFFFF00
adds r1, r5, r0
ldr r0, _0804E3F8 @ =0x000003FF
ands r1, r0
adds r2, r1, r2
lsls r2, r2, #1
adds r2, r2, r3
movs r6, #0
ldrsh r0, [r2, r6]
asrs r0, r0, #2
add sb, r0
lsls r1, r1, #1
adds r1, r1, r3
movs r2, #0
ldrsh r0, [r1, r2]
asrs r0, r0, #2
add r8, r0
movs r0, #0
mov sl, r4
adds r3, r7, #0
adds r3, #0x3a
str r3, [sp, #0x1c]
adds r4, r7, #0
adds r4, #0x42
str r4, [sp, #0x20]
mov r6, sp
adds r6, #0xc
str r6, [sp, #0x18]
ldr r1, _0804E3FC @ =gSineTable
mov ip, r1
_0804E278:
adds r3, r0, #1
lsls r0, r3, #1
ldr r2, [sp, #0x1c]
adds r0, r2, r0
ldrh r0, [r0]
adds r5, r5, r0
ldr r4, _0804E3F8 @ =0x000003FF
ands r5, r4
movs r6, #0x80
lsls r6, r6, #1
adds r0, r5, r6
lsls r6, r0, #1
mov r1, ip
adds r0, r6, r1
movs r2, #0
ldrsh r1, [r0, r2]
mov r4, sl
adds r0, r3, r4
ldrb r2, [r0]
adds r0, r1, #0
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
lsls r4, r5, #1
mov r1, ip
adds r0, r4, r1
movs r1, #0
ldrsh r0, [r0, r1]
muls r0, r2, r0
asrs r0, r0, #6
add r8, r0
lsls r3, r3, #0x18
lsrs r0, r3, #0x18
cmp r0, #2
bls _0804E278
ldr r2, _0804E3FC @ =gSineTable
adds r0, r6, r2
movs r3, #0
ldrsh r0, [r0, r3]
mov r6, sl
ldrb r1, [r6, #4]
muls r0, r1, r0
asrs r0, r0, #6
add sb, r0
adds r0, r4, r2
movs r2, #0
ldrsh r0, [r0, r2]
muls r0, r1, r0
asrs r0, r0, #6
add r8, r0
ldr r3, [sp, #0x20]
ldrh r0, [r3]
adds r5, r5, r0
ldr r4, _0804E3F8 @ =0x000003FF
ands r5, r4
ldr r6, [sp, #0x14]
cmp r6, #5
bhi _0804E2EE
b _0804E43C
_0804E2EE:
ldr r0, _0804E408 @ =gMPlayTable
ldr r1, [r0, #0x18]
ldr r0, _0804E40C @ =gSongTable
ldr r2, _0804E410 @ =0x00000868
adds r0, r0, r2
ldr r1, [r1]
ldr r0, [r0]
cmp r1, r0
beq _0804E30A
cmp r6, #6
bne _0804E30A
ldr r0, _0804E414 @ =0x0000010D
bl m4aSongNumStart
_0804E30A:
add r0, sp, #8
ldr r1, [sp, #0x18]
bl sub_802C668
ldrh r0, [r7, #0x38]
adds r6, r5, r0
ldr r3, _0804E3F8 @ =0x000003FF
adds r0, r3, #0
ands r6, r0
ldr r0, [sp, #0xc]
mov r4, r8
subs r0, r0, r4
lsls r0, r0, #8
asrs r0, r0, #0x10
ldr r1, [sp, #8]
mov r2, sb
subs r1, r1, r2
lsls r1, r1, #8
asrs r1, r1, #0x10
bl sub_8004418
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
adds r0, r5, #0
adds r0, #0x10
cmp r6, r0
bge _0804E350
subs r0, #0x20
cmp r6, r0
ble _0804E350
bl sub_802BB54
ldr r0, _0804E418 @ =sub_804F1EC
ldr r3, [sp, #0x10]
str r0, [r3]
_0804E350:
ldr r2, _0804E41C @ =gDispCnt
ldrh r0, [r2]
movs r4, #0x80
lsls r4, r4, #6
adds r1, r4, #0
orrs r0, r1
strh r0, [r2]
ldr r1, _0804E420 @ =gWinRegs
movs r0, #0xa0
strh r0, [r1]
movs r0, #0xf0
strh r0, [r1, #4]
movs r0, #0x3f
strh r0, [r1, #8]
movs r0, #0x15
strh r0, [r1, #0xa]
ldr r1, _0804E424 @ =gBldRegs
ldr r0, _0804E428 @ =0x00003FBF
strh r0, [r1]
movs r5, #8
strh r5, [r1, #2]
strh r5, [r1, #4]
ldr r2, _0804E42C @ =gPseudoRandom
ldr r1, [r2]
ldr r0, _0804E430 @ =0x00196225
muls r0, r1, r0
ldr r1, _0804E434 @ =0x3C6EF35F
adds r0, r0, r1
str r0, [r2]
movs r1, #8
bl Mod
lsls r0, r0, #0x18
asrs r4, r0, #0x18
cmp r4, #0
bge _0804E39A
rsbs r4, r4, #0
_0804E39A:
ldr r3, _0804E3FC @ =gSineTable
movs r2, #0x80
lsls r2, r2, #1
adds r0, r6, r2
lsls r0, r0, #1
adds r0, r0, r3
movs r2, #0
ldrsh r1, [r0, r2]
ldr r0, _0804E400 @ =gUnknown_080D89A5
ldrb r2, [r0, #5]
adds r0, r1, #0
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
lsls r0, r6, #1
adds r0, r0, r3
movs r3, #0
ldrsh r0, [r0, r3]
muls r0, r2, r0
asrs r0, r0, #6
add r8, r0
lsls r0, r4, #0x18
asrs r0, r0, #0x18
movs r1, #0x1a
subs r1, r1, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
mov r4, sb
asrs r3, r4, #8
ldr r2, _0804E438 @ =gCamera
ldr r0, [r2]
subs r3, r3, r0
lsls r3, r3, #0x10
asrs r3, r3, #0x10
mov r4, r8
asrs r0, r4, #8
ldr r2, [r2, #4]
subs r0, r0, r2
lsls r0, r0, #0x10
asrs r0, r0, #0x10
str r0, [sp]
str r5, [sp, #4]
adds r0, r6, #0
movs r2, #0x10
bl sub_802E784
b _0804E4B2
.align 2, 0
_0804E3F8: .4byte 0x000003FF
_0804E3FC: .4byte gSineTable
_0804E400: .4byte gUnknown_080D89A5
_0804E404: .4byte 0xFFFFFF00
_0804E408: .4byte gMPlayTable
_0804E40C: .4byte gSongTable
_0804E410: .4byte 0x00000868
_0804E414: .4byte 0x0000010D
_0804E418: .4byte sub_804F1EC
_0804E41C: .4byte gDispCnt
_0804E420: .4byte gWinRegs
_0804E424: .4byte gBldRegs
_0804E428: .4byte 0x00003FBF
_0804E42C: .4byte gPseudoRandom
_0804E430: .4byte 0x00196225
_0804E434: .4byte 0x3C6EF35F
_0804E438: .4byte gCamera
_0804E43C:
movs r0, #8
add r1, sp, #8
ldr r2, [sp, #0x18]
bl sub_802C704
ldr r0, [sp, #0xc]
mov r6, r8
subs r0, r0, r6
lsls r0, r0, #8
asrs r0, r0, #0x10
ldr r1, [sp, #8]
mov r2, sb
subs r1, r1, r2
lsls r1, r1, #8
asrs r1, r1, #0x10
bl sub_8004418
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
ldrh r0, [r7, #0x38]
adds r0, r5, r0
ldr r3, _0804E490 @ =0x000003FF
ands r0, r3
adds r1, r6, #0
movs r2, #0xa
bl sub_808558C
lsls r0, r0, #0x10
cmp r0, #0
bge _0804E498
ldrh r1, [r7, #0x38]
adds r2, r1, #0
movs r0, #0x80
lsls r0, r0, #2
cmp r2, r0
bls _0804E494
movs r0, #0xe0
lsls r0, r0, #2
cmp r2, r0
bls _0804E4AA
subs r0, r1, #4
b _0804E4A8
.align 2, 0
_0804E490: .4byte 0x000003FF
_0804E494:
subs r0, r1, #4
b _0804E4A8
_0804E498:
ldrh r1, [r7, #0x38]
adds r2, r1, #0
ldr r0, _0804E4C4 @ =0x000001FF
cmp r2, r0
bhi _0804E4A6
cmp r2, #0x7f
bhi _0804E4AA
_0804E4A6:
adds r0, r1, #4
_0804E4A8:
strh r0, [r7, #0x38]
_0804E4AA:
ldrh r1, [r7, #0x38]
ldr r0, _0804E4C8 @ =0x000003FF
ands r0, r1
strh r0, [r7, #0x38]
_0804E4B2:
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
_0804E4C4: .4byte 0x000001FF
_0804E4C8: .4byte 0x000003FF
thumb_func_start sub_804E4CC
sub_804E4CC: @ 0x0804E4CC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r4, r0, #0
bl sub_8050030
ldr r0, [r4, #0x30]
ldr r6, _0804E504 @ =0x00000FFF
adds r1, r0, #0
ands r1, r6
adds r3, r1, #0
adds r5, r3, #0
lsls r0, r0, #4
lsrs r0, r0, #0x10
adds r2, r0, #0
cmp r0, #4
bne _0804E50C
str r1, [r4, #0x30]
ldr r1, _0804E508 @ =gUnknown_080D8D6C
ldr r0, [r1]
str r0, [r4]
ldr r0, [r1, #4]
str r0, [r4, #0x34]
ldrh r0, [r1, #8]
strh r0, [r4, #0x2e]
b _0804E64A
.align 2, 0
_0804E504: .4byte 0x00000FFF
_0804E508: .4byte gUnknown_080D8D6C
_0804E50C:
cmp r0, #3
bne _0804E5B0
ldr r2, _0804E598 @ =gDispCnt
ldrh r1, [r2]
ldr r0, _0804E59C @ =0x0000FDFF
ands r0, r1
strh r0, [r2]
adds r6, r3, #0
movs r5, #0
adds r4, #0x4c
mov r8, r4
ldr r0, _0804E5A0 @ =gUnknown_080D8E20
mov ip, r0
movs r7, #0x1f
movs r1, #0x92
add r1, ip
mov sl, r1
ldr r2, _0804E5A4 @ =gObjPalette
mov sb, r2
_0804E532:
lsls r4, r5, #1
adds r1, r4, r5
mov r0, ip
adds r0, #0x90
adds r0, r1, r0
ldrb r3, [r0]
muls r3, r6, r3
asrs r3, r3, #0xc
ands r3, r7
mov r0, ip
adds r0, #0x91
adds r0, r1, r0
ldrb r2, [r0]
muls r2, r6, r2
asrs r2, r2, #0xc
ands r2, r7
add r1, sl
ldrb r0, [r1]
muls r0, r6, r0
asrs r0, r0, #0xc
ands r0, r7
adds r1, r5, #0
adds r1, #0x80
lsls r1, r1, #1
add r1, sb
lsls r0, r0, #0xa
lsls r2, r2, #5
orrs r0, r2
orrs r0, r3
strh r0, [r1]
ldr r3, _0804E5A8 @ =gBgPalette
adds r4, r4, r3
strh r0, [r4]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xf
bls _0804E532
ldr r1, _0804E5AC @ =gFlags
ldr r0, [r1]
movs r1, #2
orrs r0, r1
movs r1, #1
orrs r0, r1
ldr r2, _0804E5AC @ =gFlags
str r0, [r2]
movs r0, #0
mov r3, r8
strb r0, [r3]
b _0804E64A
.align 2, 0
_0804E598: .4byte gDispCnt
_0804E59C: .4byte 0x0000FDFF
_0804E5A0: .4byte gUnknown_080D8E20
_0804E5A4: .4byte gObjPalette
_0804E5A8: .4byte gBgPalette
_0804E5AC: .4byte gFlags
_0804E5B0:
cmp r2, #2
bne _0804E64A
movs r0, #0xe0
lsls r0, r0, #4
cmp r5, r0
bls _0804E64A
ldr r2, _0804E658 @ =gDispCnt
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #2
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
subs r0, r6, r5
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
movs r2, #0
ldr r0, _0804E65C @ =gUnknown_080D8E20
mov r8, r0
movs r4, #0x1f
ldr r1, _0804E660 @ =gBgPalette
mov sl, r1
_0804E5DC:
movs r5, #0
lsls r0, r2, #1
lsls r1, r2, #4
adds r3, r2, #1
mov sb, r3
adds r0, r0, r2
lsls r0, r0, #4
mov ip, r0
adds r7, r1, #0
adds r7, #0x70
_0804E5F0:
lsls r1, r5, #1
adds r1, r1, r5
add r1, ip
mov r2, r8
adds r0, r1, r2
ldrb r3, [r0]
muls r3, r6, r3
asrs r3, r3, #9
ands r3, r4
mov r0, r8
adds r0, #1
adds r0, r1, r0
ldrb r2, [r0]
muls r2, r6, r2
asrs r2, r2, #9
ands r2, r4
ldr r0, _0804E664 @ =gUnknown_080D8E22
adds r1, r1, r0
ldrb r0, [r1]
muls r0, r6, r0
asrs r0, r0, #9
ands r0, r4
adds r1, r5, r7
lsls r1, r1, #1
add r1, sl
lsls r0, r0, #0xa
lsls r2, r2, #5
orrs r0, r2
orrs r0, r3
strh r0, [r1]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xf
bls _0804E5F0
mov r1, sb
lsls r0, r1, #0x18
lsrs r2, r0, #0x18
cmp r2, #2
bls _0804E5DC
ldr r2, _0804E668 @ =gFlags
ldr r0, [r2]
movs r1, #1
orrs r0, r1
str r0, [r2]
_0804E64A:
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
_0804E658: .4byte gDispCnt
_0804E65C: .4byte gUnknown_080D8E20
_0804E660: .4byte gBgPalette
_0804E664: .4byte gUnknown_080D8E22
_0804E668: .4byte gFlags
thumb_func_start sub_804E66C
sub_804E66C: @ 0x0804E66C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
ldrh r0, [r7, #4]
subs r0, #1
strh r0, [r7, #4]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804E68C
ldr r0, _0804E738 @ =sub_804E74C
str r0, [r7]
movs r0, #0x96
lsls r0, r0, #1
strh r0, [r7, #4]
_0804E68C:
ldr r0, _0804E73C @ =gStageTime
ldr r0, [r0]
movs r1, #4
bl Mod
movs r1, #0
mov sb, r1
cmp r0, #0
bne _0804E6A2
movs r2, #1
mov sb, r2
_0804E6A2:
movs r5, #0
ldr r0, _0804E740 @ =gSineTable
mov r8, r0
_0804E6A8:
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #3
adds r0, r0, r5
lsls r0, r0, #4
adds r0, #0x10
adds r4, r7, r0
adds r6, r4, #0
adds r6, #0x58
ldr r1, [r4, #0x58]
adds r0, r6, #0
bl _call_via_r1
ldrb r1, [r4, #4]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0804E71C
mov r1, sb
cmp r1, #0
beq _0804E714
ldr r1, [r4]
ldr r0, _0804E744 @ =sub_804EC6C
cmp r1, r0
beq _0804E714
ldrh r3, [r4, #0xc]
adds r3, #0x20
ldr r2, _0804E748 @ =0x000003FF
adds r0, r2, #0
ands r3, r0
movs r1, #0x80
lsls r1, r1, #1
adds r0, r3, r1
lsls r0, r0, #1
add r0, r8
movs r2, #0
ldrsh r0, [r0, r2]
lsls r1, r0, #2
adds r1, r1, r0
asrs r1, r1, #5
ldr r0, [r4, #0x14]
subs r0, r0, r1
lsls r1, r3, #1
add r1, r8
movs r2, #0
ldrsh r1, [r1, r2]
lsls r2, r1, #2
adds r2, r2, r1
asrs r2, r2, #5
ldr r1, [r4, #0x18]
subs r1, r1, r2
adds r2, r6, #0
bl sub_804DE5C
_0804E714:
ldr r1, [r4]
adds r0, r4, #0
bl _call_via_r1
_0804E71C:
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #2
bls _0804E6A8
adds r0, r7, #0
bl sub_804E8E8
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804E738: .4byte sub_804E74C
_0804E73C: .4byte gStageTime
_0804E740: .4byte gSineTable
_0804E744: .4byte sub_804EC6C
_0804E748: .4byte 0x000003FF
thumb_func_start sub_804E74C
sub_804E74C: @ 0x0804E74C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
ldrh r0, [r7, #4]
subs r0, #1
strh r0, [r7, #4]
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
adds r2, r1, #0
movs r4, #3
cmp r1, #0
bne _0804E778
ldr r0, _0804E774 @ =sub_804E66C
str r0, [r7]
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r7, #4]
b _0804E792
.align 2, 0
_0804E774: .4byte sub_804E66C
_0804E778:
movs r0, #0x87
lsls r0, r0, #1
cmp r1, r0
bne _0804E784
movs r4, #0
b _0804E792
_0804E784:
cmp r1, #0xd2
bne _0804E78C
movs r4, #1
b _0804E792
_0804E78C:
cmp r2, #0x96
bne _0804E792
movs r4, #2
_0804E792:
cmp r4, #2
bhi _0804E836
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r4
lsls r0, r0, #4
adds r0, #0x10
adds r5, r7, r0
ldr r0, _0804E8D4 @ =gUnknown_080D8E14
ldr r0, [r0]
str r0, [r5]
movs r0, #3
strb r0, [r5, #4]
movs r4, #0
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r5, #8]
ldrh r1, [r7, #6]
ldr r0, _0804E8D8 @ =0x000003FF
ands r0, r1
strh r0, [r5, #0xa]
ldr r1, _0804E8DC @ =gSineTable
ldrh r0, [r7, #6]
movs r2, #0x80
lsls r2, r2, #1
adds r0, r0, r2
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
lsls r0, r0, #0x10
asrs r0, r0, #0x15
strh r0, [r5, #0xe]
ldrh r0, [r7, #6]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
lsls r0, r0, #0x10
asrs r0, r0, #0x15
strh r0, [r5, #0x10]
ldr r1, [r7, #8]
str r1, [r5, #0x14]
ldr r2, [r7, #0xc]
movs r3, #0xe
ldrsh r0, [r5, r3]
movs r3, #0xd
muls r0, r3, r0
adds r1, r1, r0
str r1, [r5, #0x14]
movs r1, #0x10
ldrsh r0, [r5, r1]
muls r0, r3, r0
adds r2, r2, r0
str r2, [r5, #0x18]
movs r0, #0x80
str r0, [r5, #0x1c]
strb r4, [r5, #6]
movs r0, #5
strb r0, [r5, #5]
adds r2, r5, #0
adds r2, #0x20
ldr r1, _0804E8E0 @ =gUnknown_080D8918
ldrh r0, [r1, #4]
strh r0, [r2, #0xa]
ldrb r1, [r1, #6]
adds r0, r2, #0
adds r0, #0x20
strb r1, [r0]
adds r1, r5, #0
adds r1, #0x41
movs r0, #0xff
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #6
str r0, [r2, #0x10]
adds r1, #4
movs r0, #6
strb r0, [r1]
movs r0, #0x85
lsls r0, r0, #1
bl m4aSongNumStart
_0804E836:
ldr r0, _0804E8E4 @ =gStageTime
ldr r0, [r0]
movs r1, #4
bl Mod
movs r2, #0
mov sb, r2
cmp r0, #0
bne _0804E84C
movs r3, #1
mov sb, r3
_0804E84C:
movs r4, #0
ldr r0, _0804E8DC @ =gSineTable
mov r8, r0
_0804E852:
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r4
lsls r0, r0, #4
adds r0, #0x10
adds r5, r7, r0
adds r6, r5, #0
adds r6, #0x58
ldr r1, [r5, #0x58]
adds r0, r6, #0
bl _call_via_r1
ldrb r1, [r5, #4]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0804E8B6
mov r1, sb
cmp r1, #0
beq _0804E8AE
ldrh r3, [r5, #0xa]
movs r2, #0x80
lsls r2, r2, #1
adds r0, r3, r2
lsls r0, r0, #1
add r0, r8
movs r1, #0
ldrsh r0, [r0, r1]
lsls r1, r0, #2
adds r1, r1, r0
asrs r1, r1, #5
ldr r0, [r5, #0x14]
subs r0, r0, r1
lsls r1, r3, #1
add r1, r8
movs r2, #0
ldrsh r1, [r1, r2]
lsls r2, r1, #2
adds r2, r2, r1
asrs r2, r2, #5
ldr r1, [r5, #0x18]
subs r1, r1, r2
adds r2, r6, #0
bl sub_804DE5C
_0804E8AE:
ldr r1, [r5]
adds r0, r5, #0
bl _call_via_r1
_0804E8B6:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _0804E852
adds r0, r7, #0
bl sub_804E8E8
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804E8D4: .4byte gUnknown_080D8E14
_0804E8D8: .4byte 0x000003FF
_0804E8DC: .4byte gSineTable
_0804E8E0: .4byte gUnknown_080D8918
_0804E8E4: .4byte gStageTime
thumb_func_start sub_804E8E8
sub_804E8E8: @ 0x0804E8E8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
mov r8, r0
movs r5, #0
ldr r6, _0804E968 @ =gCamera
_0804E8F4:
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #3
adds r0, r0, r5
lsls r0, r0, #4
adds r0, #0x10
mov r1, r8
adds r2, r1, r0
ldrb r1, [r2, #4]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0804E952
adds r4, r2, #0
adds r4, #0x20
ldrh r0, [r2, #0xc]
adds r0, #0x20
ldr r1, _0804E96C @ =0x000003FF
ands r0, r1
lsrs r1, r0, #6
ldr r3, _0804E970 @ =gUnknown_080D8918
ldrh r0, [r4, #0xa]
ldrh r7, [r3, #4]
cmp r0, r7
bne _0804E932
lsls r0, r1, #3
adds r0, r0, r3
ldrb r1, [r0, #6]
adds r0, r4, #0
adds r0, #0x20
strb r1, [r0]
_0804E932:
ldr r0, [r2, #0x14]
asrs r0, r0, #8
ldr r1, [r6]
subs r0, r0, r1
strh r0, [r4, #0x16]
ldr r0, [r2, #0x18]
asrs r0, r0, #8
ldr r1, [r6, #4]
subs r0, r0, r1
strh r0, [r4, #0x18]
adds r0, r4, #0
bl UpdateSpriteAnimation
adds r0, r4, #0
bl DisplaySprite
_0804E952:
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #2
bls _0804E8F4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804E968: .4byte gCamera
_0804E96C: .4byte 0x000003FF
_0804E970: .4byte gUnknown_080D8918
thumb_func_start sub_804E974
sub_804E974: @ 0x0804E974
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #8
adds r5, r0, #0
adds r6, r5, #0
adds r6, #0x20
movs r0, #0
mov r8, r0
add r1, sp, #4
mov r0, sp
bl sub_802C668
ldr r0, [sp]
movs r1, #0x80
lsls r1, r1, #5
adds r0, r0, r1
str r0, [sp]
ldrh r0, [r5, #8]
subs r1, r0, #1
strh r1, [r5, #8]
lsls r0, r1, #0x10
cmp r0, #0
bne _0804E9AC
movs r2, #1
mov r8, r2
b _0804E9BC
_0804E9AC:
lsls r0, r1, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xa9
bhi _0804E9BC
ldrb r1, [r5, #4]
movs r0, #0xfd
ands r0, r1
strb r0, [r5, #4]
_0804E9BC:
ldr r0, [sp, #4]
ldr r1, [r5, #0x18]
subs r0, r0, r1
lsls r0, r0, #8
asrs r0, r0, #0x10
ldr r1, [sp]
ldr r2, [r5, #0x14]
subs r1, r1, r2
lsls r1, r1, #8
asrs r1, r1, #0x10
bl sub_8004418
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
strh r1, [r5, #0xc]
ldrb r0, [r5, #5]
cmp r0, #0
beq _0804E9E6
subs r0, #1
strb r0, [r5, #5]
b _0804EA00
_0804E9E6:
ldrh r0, [r5, #0xa]
movs r2, #0xa
bl sub_808558C
lsls r0, r0, #0x10
cmp r0, #0
bge _0804E9FA
ldrh r0, [r5, #0xa]
subs r0, #5
b _0804E9FE
_0804E9FA:
ldrh r0, [r5, #0xa]
adds r0, #5
_0804E9FE:
strh r0, [r5, #0xa]
_0804EA00:
ldrh r1, [r5, #0xa]
ldr r0, _0804EAD8 @ =0x000003FF
ands r0, r1
strh r0, [r5, #0xa]
movs r1, #0xe
ldrsh r0, [r5, r1]
movs r1, #0x28
bl Div
ldrh r1, [r5, #0xe]
subs r1, r1, r0
strh r1, [r5, #0xe]
movs r2, #0x10
ldrsh r0, [r5, r2]
movs r1, #0x28
bl Div
ldrh r1, [r5, #0x10]
subs r1, r1, r0
strh r1, [r5, #0x10]
ldr r7, _0804EADC @ =gSineTable
ldrh r0, [r5, #0xa]
movs r1, #0x80
lsls r1, r1, #1
mov sb, r1
add r0, sb
lsls r0, r0, #1
adds r0, r0, r7
movs r2, #0
ldrsh r0, [r0, r2]
ldr r4, _0804EAE0 @ =0x00000352
adds r1, r4, #0
bl Div
ldrh r1, [r5, #0xe]
adds r1, r1, r0
strh r1, [r5, #0xe]
ldrh r0, [r5, #0xa]
lsls r0, r0, #1
adds r0, r0, r7
movs r1, #0
ldrsh r0, [r0, r1]
adds r1, r4, #0
bl Div
ldrh r1, [r5, #0x10]
adds r1, r1, r0
strh r1, [r5, #0x10]
ldr r0, [r5, #0x14]
movs r2, #0xa0
lsls r2, r2, #3
adds r0, r0, r2
movs r2, #0xe
ldrsh r1, [r5, r2]
adds r0, r0, r1
str r0, [r5, #0x14]
movs r0, #0x10
ldrsh r1, [r5, r0]
ldr r0, [r5, #0x18]
adds r0, r0, r1
str r0, [r5, #0x18]
bl sub_802C6E4
movs r1, #0x82
lsls r1, r1, #2
ands r1, r0
cmp r1, #0
bne _0804EB50
ldr r1, [r5, #0x14]
asrs r1, r1, #8
ldr r2, [r5, #0x18]
asrs r2, r2, #8
adds r0, r6, #0
bl sub_804EE84
cmp r0, #1
bne _0804EAE8
ldr r0, _0804EAE4 @ =gUnknown_080D8E14
ldr r0, [r0, #4]
str r0, [r5]
bl sub_802C770
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r2, sb
adds r1, r0, r2
lsls r1, r1, #1
adds r1, r1, r7
ldrh r1, [r1]
lsls r1, r1, #0x10
asrs r1, r1, #0x14
strh r1, [r5, #0xe]
lsls r0, r0, #1
adds r0, r0, r7
ldrh r0, [r0]
lsls r0, r0, #0x10
asrs r0, r0, #0x14
strh r0, [r5, #0x10]
movs r0, #0x80
lsls r0, r0, #5
str r0, [r6, #0x10]
movs r0, #0
mov r8, r0
movs r0, #0x86
lsls r0, r0, #1
bl m4aSongNumStart
b _0804EB08
.align 2, 0
_0804EAD8: .4byte 0x000003FF
_0804EADC: .4byte gSineTable
_0804EAE0: .4byte 0x00000352
_0804EAE4: .4byte gUnknown_080D8E14
_0804EAE8:
ldr r1, [r5, #0x14]
asrs r1, r1, #8
ldr r2, [r5, #0x18]
asrs r2, r2, #8
adds r0, r6, #0
movs r3, #1
bl sub_804F010
cmp r0, #1
bne _0804EB08
bl sub_802BA8C
cmp r0, #1
bne _0804EB08
movs r1, #1
mov r8, r1
_0804EB08:
mov r2, r8
cmp r2, #0
beq _0804EB50
ldrb r1, [r5, #4]
movs r0, #4
orrs r0, r1
strb r0, [r5, #4]
ldr r0, _0804EB60 @ =gUnknown_080D8E14
ldr r0, [r0, #8]
str r0, [r5]
movs r2, #0
movs r0, #0x10
strh r0, [r5, #8]
ldr r0, _0804EB64 @ =gUnknown_080D8918
adds r1, r0, #0
adds r1, #0x84
ldrh r1, [r1]
strh r1, [r6, #0xa]
adds r0, #0x86
ldrb r1, [r0]
adds r0, r6, #0
adds r0, #0x20
strb r1, [r0]
adds r1, r6, #0
adds r1, #0x21
movs r0, #0xff
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #5
str r0, [r6, #0x10]
adds r0, r6, #0
adds r0, #0x25
strb r2, [r0]
ldr r0, _0804EB68 @ =0x0000010B
bl m4aSongNumStart
_0804EB50:
add sp, #8
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804EB60: .4byte gUnknown_080D8E14
_0804EB64: .4byte gUnknown_080D8918
_0804EB68: .4byte 0x0000010B
thumb_func_start sub_804EB6C
sub_804EB6C: @ 0x0804EB6C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x20
ldr r0, _0804EBBC @ =gCurTask
ldr r0, [r0]
ldrh r1, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r6, r1, r0
ldrh r0, [r4, #8]
subs r0, #1
strh r0, [r4, #8]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804EBC8
ldr r0, _0804EBC0 @ =gUnknown_080D8918
adds r1, r0, #0
adds r1, #0x84
ldrh r1, [r1]
strh r1, [r5, #0xa]
adds r0, #0x86
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x20
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x41
movs r0, #0xff
strb r0, [r1]
adds r1, #4
movs r0, #0
strb r0, [r1]
ldr r0, _0804EBC4 @ =gUnknown_080D8E14
ldr r0, [r0, #8]
str r0, [r4]
movs r0, #0x10
strh r0, [r4, #8]
b _0804EC5E
.align 2, 0
_0804EBBC: .4byte gCurTask
_0804EBC0: .4byte gUnknown_080D8918
_0804EBC4: .4byte gUnknown_080D8E14
_0804EBC8:
ldrh r0, [r4, #0xa]
adds r0, #0x8c
ldr r1, _0804EC18 @ =0x000003FF
ands r0, r1
strh r0, [r4, #0xa]
strh r0, [r4, #0xc]
ldr r0, [r4, #0x14]
movs r1, #0xa0
lsls r1, r1, #3
adds r0, r0, r1
movs r2, #0xe
ldrsh r1, [r4, r2]
adds r2, r0, r1
str r2, [r4, #0x14]
movs r0, #0x10
ldrsh r1, [r4, r0]
ldr r0, [r4, #0x18]
adds r1, r0, r1
str r1, [r4, #0x18]
ldrb r0, [r6, #0xd]
cmp r0, #0
bne _0804EC5E
ldrb r0, [r4, #6]
cmp r0, #0
bne _0804EC5E
asrs r0, r2, #8
asrs r1, r1, #8
bl sub_804ED98
cmp r0, #0
beq _0804EC5E
ldrb r1, [r6, #0xc]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0804EC1C
movs r0, #0x8f
bl m4aSongNumStart
b _0804EC22
.align 2, 0
_0804EC18: .4byte 0x000003FF
_0804EC1C:
movs r0, #0xeb
bl m4aSongNumStart
_0804EC22:
ldr r1, _0804EC64 @ =gUnknown_080D8918
adds r0, r1, #0
adds r0, #0x84
ldrh r0, [r0]
movs r2, #0
strh r0, [r5, #0xa]
adds r1, #0x86
ldrb r1, [r1]
adds r0, r5, #0
adds r0, #0x20
strb r1, [r0]
adds r1, r5, #0
adds r1, #0x21
movs r0, #0xff
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x25
strb r2, [r0]
ldr r0, _0804EC68 @ =gUnknown_080D8E14
ldr r0, [r0, #8]
str r0, [r4]
movs r0, #0x10
strh r0, [r4, #8]
movs r0, #0x30
strb r0, [r6, #0xd]
ldrb r0, [r6, #0xc]
cmp r0, #0
beq _0804EC5E
subs r0, #1
strb r0, [r6, #0xc]
_0804EC5E:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0804EC64: .4byte gUnknown_080D8918
_0804EC68: .4byte gUnknown_080D8E14
thumb_func_start sub_804EC6C
sub_804EC6C: @ 0x0804EC6C
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #8]
subs r0, #1
strh r0, [r4, #8]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804EC82
movs r0, #0
strb r0, [r4, #4]
b _0804ECBC
_0804EC82:
movs r1, #0xe
ldrsh r0, [r4, r1]
movs r1, #0x28
bl Div
ldrh r1, [r4, #0xe]
subs r1, r1, r0
strh r1, [r4, #0xe]
movs r1, #0x10
ldrsh r0, [r4, r1]
movs r1, #0x28
bl Div
ldrh r1, [r4, #0x10]
subs r1, r1, r0
strh r1, [r4, #0x10]
movs r1, #0xe
ldrsh r0, [r4, r1]
ldr r1, [r4, #0x14]
adds r1, r1, r0
movs r0, #0x10
ldrsh r2, [r4, r0]
ldr r0, [r4, #0x18]
adds r0, r0, r2
str r0, [r4, #0x18]
movs r0, #0xa0
lsls r0, r0, #3
adds r1, r1, r0
str r1, [r4, #0x14]
_0804ECBC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_804ECC4
sub_804ECC4: @ 0x0804ECC4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #8
adds r6, r0, #0
add r1, sp, #4
mov r0, sp
bl sub_802C668
adds r1, r6, #0
adds r1, #0x1c
adds r6, #0x48
movs r2, #0x20
ldrsh r0, [r1, r2]
lsls r0, r0, #8
ldr r4, [r1, #0x24]
adds r4, r4, r0
movs r7, #0x22
ldrsh r0, [r1, r7]
lsls r0, r0, #8
ldr r5, [r1, #0x28]
adds r5, r5, r0
ldr r1, [r6, #0x44]
asrs r1, r1, #8
ldrh r6, [r6, #0x3a]
adds r1, r1, r6
movs r0, #0xc0
lsls r0, r0, #2
mov sb, r0
add r1, sb
ldr r2, _0804ED8C @ =0x000003FF
mov r8, r2
mov r7, r8
ands r1, r7
ldr r6, _0804ED90 @ =gSineTable
movs r3, #0x80
lsls r3, r3, #1
adds r0, r1, r3
lsls r0, r0, #1
adds r0, r0, r6
movs r7, #0
ldrsh r2, [r0, r7]
lsls r0, r2, #2
adds r0, r0, r2
asrs r0, r0, #4
adds r4, r4, r0
lsls r0, r1, #1
adds r0, r0, r6
movs r7, #0
ldrsh r2, [r0, r7]
lsls r0, r2, #2
adds r0, r0, r2
asrs r0, r0, #4
adds r5, r5, r0
add r1, sb
mov r0, r8
ands r1, r0
adds r3, r1, r3
lsls r3, r3, #1
adds r3, r3, r6
movs r7, #0
ldrsh r2, [r3, r7]
lsls r0, r2, #2
adds r0, r0, r2
asrs r0, r0, #5
adds r4, r4, r0
lsls r1, r1, #1
adds r1, r1, r6
movs r0, #0
ldrsh r1, [r1, r0]
lsls r0, r1, #2
adds r0, r0, r1
asrs r0, r0, #5
adds r5, r5, r0
ldr r0, [sp]
subs r4, r4, r0
ldr r0, [sp, #4]
subs r5, r5, r0
asrs r4, r4, #8
asrs r5, r5, #8
adds r2, r4, #0
muls r2, r4, r2
adds r4, r2, #0
adds r7, r5, #0
muls r7, r5, r7
adds r5, r7, #0
adds r4, r4, r5
ldr r0, _0804ED94 @ =0x0000063F
cmp r4, r0
bgt _0804ED7E
bl sub_802BA8C
_0804ED7E:
add sp, #8
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804ED8C: .4byte 0x000003FF
_0804ED90: .4byte gSineTable
_0804ED94: .4byte 0x0000063F
thumb_func_start sub_804ED98
sub_804ED98: @ 0x0804ED98
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
movs r2, #0
str r2, [sp]
ldr r2, _0804EE6C @ =gCurTask
ldr r2, [r2]
ldrh r4, [r2, #6]
ldr r5, _0804EE70 @ =IWRAM_START + 0x1C
adds r3, r4, r5
ldr r7, _0804EE74 @ =IWRAM_START + 0x48
adds r4, r4, r7
movs r5, #0x20
ldrsh r2, [r3, r5]
lsls r2, r2, #8
ldr r6, [r3, #0x24]
adds r6, r6, r2
movs r7, #0x22
ldrsh r2, [r3, r7]
lsls r2, r2, #8
ldr r3, [r3, #0x28]
mov r8, r3
add r8, r2
ldr r3, [r4, #0x44]
asrs r3, r3, #8
ldrh r4, [r4, #0x3a]
adds r3, r3, r4
movs r2, #0xc0
lsls r2, r2, #2
mov ip, r2
add r3, ip
ldr r5, _0804EE78 @ =0x000003FF
mov sl, r5
mov r7, sl
ands r3, r7
ldr r2, _0804EE7C @ =gSineTable
mov sb, r2
movs r5, #0x80
lsls r5, r5, #1
adds r2, r3, r5
lsls r2, r2, #1
add r2, sb
movs r7, #0
ldrsh r4, [r2, r7]
lsls r2, r4, #2
adds r2, r2, r4
asrs r2, r2, #4
adds r6, r6, r2
lsls r2, r3, #1
add r2, sb
movs r7, #0
ldrsh r4, [r2, r7]
lsls r2, r4, #2
adds r2, r2, r4
asrs r2, r2, #4
add r8, r2
add r3, ip
mov r2, sl
ands r3, r2
adds r5, r3, r5
lsls r5, r5, #1
add r5, sb
movs r7, #0
ldrsh r4, [r5, r7]
lsls r2, r4, #2
adds r2, r2, r4
asrs r2, r2, #5
adds r6, r6, r2
lsls r3, r3, #1
add r3, sb
movs r2, #0
ldrsh r3, [r3, r2]
lsls r2, r3, #2
adds r2, r2, r3
asrs r2, r2, #5
add r8, r2
asrs r6, r6, #8
mov r5, r8
asrs r5, r5, #8
subs r6, r6, r0
subs r5, r5, r1
mov r8, r5
adds r7, r6, #0
muls r7, r6, r7
adds r6, r7, #0
mov r0, r8
muls r0, r5, r0
mov r8, r0
add r6, r8
ldr r0, _0804EE80 @ =0x0000063F
cmp r6, r0
bgt _0804EE5A
movs r1, #1
str r1, [sp]
_0804EE5A:
ldr r0, [sp]
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
_0804EE6C: .4byte gCurTask
_0804EE70: .4byte IWRAM_START + 0x1C
_0804EE74: .4byte IWRAM_START + 0x48
_0804EE78: .4byte 0x000003FF
_0804EE7C: .4byte gSineTable
_0804EE80: .4byte 0x0000063F
thumb_func_start sub_804EE84
sub_804EE84: @ 0x0804EE84
push {r4, r5, r6, r7, lr}
sub sp, #8
adds r5, r0, #0
adds r4, r1, #0
adds r7, r2, #0
movs r0, #0
str r0, [sp]
str r0, [sp, #4]
bl sub_802C750
adds r6, r0, #0
add r1, sp, #4
mov r0, sp
bl sub_802C668
bl sub_802C6E4
movs r1, #0x82
lsls r1, r1, #2
ands r1, r0
cmp r1, #0
bne _0804EF5C
ldr r0, _0804EF58 @ =gPlayer
ldr r0, [r0, #0x20]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _0804EF5C
ldr r0, [r5, #0x30]
subs r1, #0x81
cmp r0, r1
beq _0804EF5C
ldr r0, [r6, #0x30]
cmp r0, r1
beq _0804EF5C
adds r0, r5, #0
adds r0, #0x34
movs r3, #0
ldrsb r3, [r0, r3]
adds r2, r4, r3
ldr r0, [sp]
asrs r0, r0, #8
adds r1, r6, #0
adds r1, #0x34
movs r4, #0
ldrsb r4, [r1, r4]
adds r1, r0, r4
cmp r2, r1
bgt _0804EEFC
adds r0, r5, #0
adds r0, #0x36
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r3
adds r0, r2, r0
cmp r0, r1
bge _0804EF0E
cmp r2, r1
blt _0804EF5C
_0804EEFC:
adds r0, r6, #0
adds r0, #0x36
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r4
adds r0, r1, r0
cmp r0, r2
blt _0804EF5C
_0804EF0E:
adds r0, r5, #0
adds r0, #0x35
movs r4, #0
ldrsb r4, [r0, r4]
adds r2, r7, r4
ldr r0, [sp, #4]
asrs r0, r0, #8
adds r1, r6, #0
adds r1, #0x35
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r3, r0, r1
cmp r2, r3
bgt _0804EF42
adds r0, r5, #0
adds r0, #0x37
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r4
adds r0, r2, r0
cmp r0, r3
bge _0804EF54
cmp r2, r3
blt _0804EF5C
_0804EF42:
adds r0, r6, #0
adds r0, #0x37
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r1
adds r0, r3, r0
cmp r0, r2
blt _0804EF5C
_0804EF54:
movs r0, #1
b _0804EF5E
.align 2, 0
_0804EF58: .4byte gPlayer
_0804EF5C:
movs r0, #0
_0804EF5E:
add sp, #8
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_start sub_804EF68
sub_804EF68: @ 0x0804EF68
push {r4, r5, r6, lr}
mov ip, r0
adds r6, r2, #0
adds r4, r3, #0
ldr r0, [r0, #0x30]
movs r3, #1
rsbs r3, r3, #0
cmp r0, r3
beq _0804F008
ldr r0, [r4, #0x28]
cmp r0, r3
beq _0804F008
mov r0, ip
adds r0, #0x34
movs r2, #0
ldrsb r2, [r0, r2]
adds r1, r1, r2
adds r0, r4, #0
adds r0, #0x2c
movs r5, #0
ldrsb r5, [r0, r5]
ldr r0, [sp, #0x10]
adds r3, r0, r5
cmp r1, r3
bgt _0804EFB0
mov r0, ip
adds r0, #0x36
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r2
adds r0, r1, r0
cmp r0, r3
bge _0804EFC2
cmp r1, r3
blt _0804F008
_0804EFB0:
adds r0, r4, #0
adds r0, #0x2e
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r5
adds r0, r3, r0
cmp r0, r1
blt _0804F008
_0804EFC2:
mov r0, ip
adds r0, #0x35
movs r3, #0
ldrsb r3, [r0, r3]
adds r2, r6, r3
adds r0, r4, #0
adds r0, #0x2d
movs r5, #0
ldrsb r5, [r0, r5]
ldr r0, [sp, #0x14]
adds r1, r0, r5
cmp r2, r1
bgt _0804EFF2
mov r0, ip
adds r0, #0x37
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r3
adds r0, r2, r0
cmp r0, r1
bge _0804F004
cmp r2, r1
blt _0804F008
_0804EFF2:
adds r0, r4, #0
adds r0, #0x2f
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r5
adds r0, r1, r0
cmp r0, r2
blt _0804F008
_0804F004:
movs r0, #1
b _0804F00A
_0804F008:
movs r0, #0
_0804F00A:
pop {r4, r5, r6}
pop {r1}
bx r1
thumb_func_start sub_804F010
sub_804F010: @ 0x0804F010
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #8
adds r7, r0, #0
adds r5, r1, #0
mov r8, r2
lsls r3, r3, #0x18
lsrs r4, r3, #0x18
movs r0, #0
str r0, [sp]
str r0, [sp, #4]
bl sub_802C750
adds r6, r0, #0
add r1, sp, #4
mov r0, sp
bl sub_802C668
bl sub_802C6E4
ldr r0, _0804F0F4 @ =gPlayer
ldr r0, [r0, #0x20]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _0804F0F8
lsls r0, r4, #3
adds r1, r7, #0
adds r1, #0x28
adds r1, r1, r0
ldr r1, [r1]
movs r2, #1
rsbs r2, r2, #0
mov ip, r0
cmp r1, r2
beq _0804F0F8
ldr r0, [r6, #0x28]
cmp r0, r2
beq _0804F0F8
mov r0, ip
adds r3, r7, r0
adds r0, r3, #0
adds r0, #0x2c
movs r4, #0
ldrsb r4, [r0, r4]
adds r2, r5, r4
ldr r0, [sp]
asrs r0, r0, #8
adds r1, r6, #0
adds r1, #0x2c
movs r5, #0
ldrsb r5, [r1, r5]
adds r1, r0, r5
cmp r2, r1
bgt _0804F096
adds r0, r3, #0
adds r0, #0x2e
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r4
adds r0, r2, r0
cmp r0, r1
bge _0804F0A8
cmp r2, r1
blt _0804F0F8
_0804F096:
adds r0, r6, #0
adds r0, #0x2e
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r5
adds r0, r1, r0
cmp r0, r2
blt _0804F0F8
_0804F0A8:
mov r1, ip
adds r3, r7, r1
adds r0, r3, #0
adds r0, #0x2d
movs r4, #0
ldrsb r4, [r0, r4]
mov r0, r8
adds r2, r0, r4
ldr r0, [sp, #4]
asrs r0, r0, #8
movs r1, #0x2d
ldrsb r5, [r1, r6]
adds r1, r0, r5
cmp r2, r1
bgt _0804F0DC
adds r0, r3, #0
adds r0, #0x2f
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r4
adds r0, r2, r0
cmp r0, r1
bge _0804F0EE
cmp r2, r1
blt _0804F0F8
_0804F0DC:
adds r0, r6, #0
adds r0, #0x2f
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
subs r0, r0, r5
adds r0, r1, r0
cmp r0, r2
blt _0804F0F8
_0804F0EE:
movs r0, #1
b _0804F0FA
.align 2, 0
_0804F0F4: .4byte gPlayer
_0804F0F8:
movs r0, #0
_0804F0FA:
add sp, #8
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_start sub_804F108
sub_804F108: @ 0x0804F108
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
ldr r1, _0804F1D8 @ =gCurTask
ldr r1, [r1]
ldrh r1, [r1, #6]
movs r2, #0xc0
lsls r2, r2, #0x12
adds r2, r1, r2
ldr r4, _0804F1DC @ =IWRAM_START + 0x1C
adds r3, r1, r4
adds r4, #0x2c
adds r6, r1, r4
adds r7, r0, #0
adds r7, #0xc
ldrb r0, [r2, #0xc]
cmp r0, #0
beq _0804F1CA
movs r1, #0x20
ldrsh r0, [r3, r1]
lsls r0, r0, #8
ldr r4, [r3, #0x24]
adds r4, r4, r0
movs r2, #0x22
ldrsh r0, [r3, r2]
lsls r0, r0, #8
ldr r5, [r3, #0x28]
adds r5, r5, r0
ldr r1, [r6, #0x44]
asrs r1, r1, #8
ldrh r6, [r6, #0x3a]
adds r1, r1, r6
movs r3, #0xc0
lsls r3, r3, #2
mov sb, r3
add r1, sb
ldr r0, _0804F1E0 @ =0x000003FF
mov r8, r0
mov r2, r8
ands r1, r2
ldr r6, _0804F1E4 @ =gSineTable
movs r3, #0x80
lsls r3, r3, #1
adds r0, r1, r3
lsls r0, r0, #1
adds r2, r0, r6
movs r0, #0
ldrsh r2, [r2, r0]
lsls r0, r2, #3
adds r0, r0, r2
asrs r0, r0, #6
adds r4, r4, r0
lsls r0, r1, #1
adds r2, r0, r6
movs r0, #0
ldrsh r2, [r2, r0]
lsls r0, r2, #3
adds r0, r0, r2
asrs r0, r0, #6
adds r5, r5, r0
add r1, sb
mov r2, r8
ands r1, r2
adds r3, r1, r3
lsls r3, r3, #1
adds r3, r3, r6
movs r2, #0
ldrsh r0, [r3, r2]
movs r2, #0x26
muls r0, r2, r0
asrs r0, r0, #6
adds r4, r4, r0
lsls r1, r1, #1
adds r1, r1, r6
movs r3, #0
ldrsh r0, [r1, r3]
muls r0, r2, r0
asrs r0, r0, #6
adds r5, r5, r0
asrs r4, r4, #8
ldr r1, _0804F1E8 @ =gCamera
ldr r0, [r1]
subs r4, r4, r0
subs r4, #6
strh r4, [r7, #0x16]
asrs r5, r5, #8
ldr r0, [r1, #4]
subs r5, r5, r0
adds r5, #5
strh r5, [r7, #0x18]
adds r0, r7, #0
bl UpdateSpriteAnimation
adds r0, r7, #0
bl DisplaySprite
_0804F1CA:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804F1D8: .4byte gCurTask
_0804F1DC: .4byte IWRAM_START + 0x1C
_0804F1E0: .4byte 0x000003FF
_0804F1E4: .4byte gSineTable
_0804F1E8: .4byte gCamera
thumb_func_start sub_804F1EC
sub_804F1EC: @ 0x0804F1EC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x18
mov r8, r0
ldr r0, _0804F348 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r1, r0, r1
ldr r2, _0804F34C @ =IWRAM_START + 0x1C
adds r4, r0, r2
ldr r3, _0804F350 @ =IWRAM_START + 0x48
adds r5, r0, r3
ldr r6, _0804F354 @ =IWRAM_START + 0x98
adds r6, r0, r6
str r6, [sp, #0x10]
mov r0, r8
adds r0, #0xc
str r0, [sp, #0x14]
ldrb r0, [r1, #0xc]
cmp r0, #0
bne _0804F222
b _0804F462
_0804F222:
mov r1, r8
ldrh r0, [r1, #6]
subs r0, #1
strh r0, [r1, #6]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804F23C
ldr r0, _0804F358 @ =sub_8050DC8
str r0, [r1]
movs r0, #0x87
lsls r0, r0, #1
bl m4aSongNumStop
_0804F23C:
mov r2, r8
ldr r0, [r2, #8]
adds r7, r0, #2
movs r0, #0xe8
lsls r0, r0, #1
cmp r7, r0
ble _0804F24C
adds r7, r0, #0
_0804F24C:
mov r3, r8
str r7, [r3, #8]
movs r6, #0x20
ldrsh r0, [r4, r6]
lsls r0, r0, #8
ldr r1, [r4, #0x24]
adds r1, r1, r0
mov sl, r1
movs r1, #0x22
ldrsh r0, [r4, r1]
lsls r0, r0, #8
ldr r1, [r4, #0x28]
adds r1, r1, r0
mov sb, r1
ldr r1, [r5, #0x44]
asrs r1, r1, #8
ldrh r5, [r5, #0x3a]
adds r1, r1, r5
movs r2, #0xc0
lsls r2, r2, #2
mov ip, r2
add r1, ip
ldr r3, _0804F35C @ =0x000003FF
adds r4, r3, #0
ands r1, r4
ldr r3, _0804F360 @ =gSineTable
movs r5, #0x80
lsls r5, r5, #1
adds r0, r1, r5
lsls r0, r0, #1
adds r0, r0, r3
movs r6, #0
ldrsh r2, [r0, r6]
lsls r0, r2, #3
adds r0, r0, r2
asrs r0, r0, #6
add sl, r0
lsls r0, r1, #1
adds r0, r0, r3
movs r6, #0
ldrsh r2, [r0, r6]
lsls r0, r2, #3
adds r0, r0, r2
asrs r0, r0, #6
add sb, r0
add r1, ip
ands r1, r4
adds r0, r1, r5
lsls r0, r0, #1
adds r0, r0, r3
movs r2, #0
ldrsh r0, [r0, r2]
movs r2, #0x26
muls r0, r2, r0
asrs r0, r0, #6
add sl, r0
lsls r1, r1, #1
adds r1, r1, r3
movs r3, #0
ldrsh r0, [r1, r3]
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
add r1, sp, #0xc
add r0, sp, #8
bl sub_802C668
ldr r0, [sp, #8]
movs r1, #0xa0
lsls r1, r1, #4
add r1, sl
movs r4, #2
str r4, [sp]
adds r2, r7, #0
movs r3, #0xa
bl sub_8085698
str r0, [sp, #8]
ldr r0, [sp, #0xc]
adds r5, r7, r5
str r4, [sp]
mov r1, sb
adds r2, r5, #0
movs r3, #0xa
bl sub_8085698
adds r1, r0, #0
str r1, [sp, #0xc]
ldr r0, [sp, #8]
bl sub_802C6B4
mov r6, sl
asrs r4, r6, #8
mov r0, sb
asrs r5, r0, #8
ldr r0, [sp, #0x14]
adds r1, r4, #0
adds r2, r5, #0
movs r3, #0
bl sub_804F010
cmp r0, #1
bne _0804F36C
bl sub_802C798
ldr r0, _0804F364 @ =sub_804F47C
mov r1, r8
str r0, [r1]
movs r0, #0x78
strh r0, [r1, #6]
movs r0, #0xa
strb r0, [r1, #4]
ldr r0, _0804F368 @ =0x000002CB
ldr r2, [sp, #0x14]
strh r0, [r2, #0xa]
adds r1, #0x2c
movs r0, #0
strb r0, [r1]
adds r1, #1
movs r0, #0xff
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #6
str r0, [r2, #0x10]
b _0804F462
.align 2, 0
_0804F348: .4byte gCurTask
_0804F34C: .4byte IWRAM_START + 0x1C
_0804F350: .4byte IWRAM_START + 0x48
_0804F354: .4byte IWRAM_START + 0x98
_0804F358: .4byte sub_8050DC8
_0804F35C: .4byte 0x000003FF
_0804F360: .4byte gSineTable
_0804F364: .4byte sub_804F47C
_0804F368: .4byte 0x000002CB
_0804F36C:
movs r0, #0x87
lsls r0, r0, #1
bl m4aSongNumStartOrContinue
ldr r1, _0804F474 @ =gCamera
ldr r0, [r1]
subs r0, r4, r0
ldr r3, [sp, #0x14]
strh r0, [r3, #0x16]
ldr r0, [r1, #4]
subs r0, r5, r0
strh r0, [r3, #0x18]
ldr r0, [sp, #0x14]
bl UpdateSpriteAnimation
ldr r0, [sp, #0x14]
bl DisplaySprite
movs r6, #0
movs r4, #2
mov r8, r4
_0804F396:
lsls r0, r6, #1
adds r0, r0, r6
lsls r0, r0, #3
adds r0, r0, r6
lsls r0, r0, #4
adds r0, #0x10
ldr r1, [sp, #0x10]
adds r5, r1, r0
ldrb r1, [r5, #4]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0804F458
ldr r0, [r5, #0x18]
mov r2, sb
subs r0, r0, r2
lsls r0, r0, #8
asrs r0, r0, #0x10
ldr r1, [r5, #0x14]
mov r3, sl
subs r1, r1, r3
lsls r1, r1, #8
asrs r1, r1, #0x10
bl sub_8004418
lsls r0, r0, #0x10
ldr r4, _0804F478 @ =0xFED30000
adds r0, r0, r4
movs r1, #0xd3
lsls r1, r1, #0x11
cmp r0, r1
bls _0804F3DC
ldrb r0, [r5, #6]
cmp r0, #0
beq _0804F430
_0804F3DC:
ldr r4, [r5, #0x1c]
adds r7, r4, #0
adds r7, #0xa
movs r0, #1
strb r0, [r5, #6]
str r7, [r5, #0x1c]
ldr r0, [r5, #0x14]
mov r1, r8
str r1, [sp]
movs r1, #0xb0
lsls r1, r1, #5
add r1, sl
adds r2, r7, #0
movs r3, #0xa
bl sub_8085698
str r0, [r5, #0x14]
ldr r0, [r5, #0x18]
adds r4, #0xaa
mov r2, r8
str r2, [sp]
mov r1, sb
adds r2, r4, #0
movs r3, #0xa
bl sub_8085698
str r0, [r5, #0x18]
movs r3, #0xe
ldrsh r0, [r5, r3]
movs r4, #0x5a
muls r0, r4, r0
movs r1, #0x64
bl Div
strh r0, [r5, #0xe]
movs r1, #0x10
ldrsh r0, [r5, r1]
muls r0, r4, r0
movs r1, #0x64
bl Div
strh r0, [r5, #0x10]
_0804F430:
adds r0, r5, #0
adds r0, #0x20
ldr r1, [r5, #0x14]
asrs r1, r1, #8
ldr r2, [r5, #0x18]
asrs r2, r2, #8
mov r4, sl
asrs r3, r4, #8
adds r3, #0x10
str r3, [sp]
mov r4, sb
asrs r3, r4, #8
str r3, [sp, #4]
ldr r3, [sp, #0x14]
bl sub_804EF68
cmp r0, #1
bne _0804F458
movs r0, #0
strb r0, [r5, #4]
_0804F458:
adds r0, r6, #1
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
cmp r6, #2
bls _0804F396
_0804F462:
add sp, #0x18
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
_0804F474: .4byte gCamera
_0804F478: .4byte 0xFED30000
thumb_func_start sub_804F47C
sub_804F47C: @ 0x0804F47C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
ldrh r0, [r7, #6]
subs r0, #1
strh r0, [r7, #6]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804F496
ldr r0, _0804F594 @ =sub_8050DC8
str r0, [r7]
_0804F496:
ldr r0, _0804F598 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r1, r0, r1
ldr r3, _0804F59C @ =IWRAM_START + 0x1C
adds r2, r0, r3
ldr r4, _0804F5A0 @ =IWRAM_START + 0x48
adds r3, r0, r4
movs r0, #0xc
adds r0, r0, r7
mov r8, r0
ldrb r0, [r1, #0xc]
cmp r0, #0
beq _0804F588
movs r1, #0x20
ldrsh r0, [r2, r1]
lsls r0, r0, #8
ldr r1, [r2, #0x24]
adds r5, r1, r0
movs r4, #0x22
ldrsh r0, [r2, r4]
lsls r0, r0, #8
ldr r1, [r2, #0x28]
adds r6, r1, r0
ldr r1, [r3, #0x44]
asrs r1, r1, #8
ldrh r3, [r3, #0x3a]
adds r1, r1, r3
movs r0, #0xc0
lsls r0, r0, #2
mov sb, r0
add r1, sb
ldr r2, _0804F5A4 @ =0x000003FF
mov ip, r2
mov r3, ip
ands r1, r3
ldr r4, _0804F5A8 @ =gSineTable
movs r3, #0x80
lsls r3, r3, #1
adds r0, r1, r3
lsls r0, r0, #1
adds r2, r0, r4
movs r0, #0
ldrsh r2, [r2, r0]
lsls r0, r2, #3
adds r0, r0, r2
asrs r0, r0, #6
adds r5, r5, r0
lsls r0, r1, #1
adds r2, r0, r4
movs r0, #0
ldrsh r2, [r2, r0]
lsls r0, r2, #3
adds r0, r0, r2
asrs r0, r0, #6
adds r6, r6, r0
add r1, sb
mov r2, ip
ands r1, r2
adds r3, r1, r3
lsls r3, r3, #1
adds r3, r3, r4
movs r2, #0
ldrsh r0, [r3, r2]
movs r2, #0x26
muls r0, r2, r0
asrs r0, r0, #6
adds r5, r5, r0
lsls r1, r1, #1
adds r1, r1, r4
movs r3, #0
ldrsh r0, [r1, r3]
muls r0, r2, r0
asrs r0, r0, #6
adds r6, r6, r0
asrs r0, r5, #8
ldr r2, _0804F5AC @ =gCamera
ldr r1, [r2]
subs r0, r0, r1
mov r4, r8
strh r0, [r4, #0x16]
asrs r0, r6, #8
ldr r1, [r2, #4]
subs r0, r0, r1
strh r0, [r4, #0x18]
mov r0, r8
bl UpdateSpriteAnimation
mov r0, r8
bl DisplaySprite
ldrh r0, [r7, #6]
movs r1, #0xa
bl Mod
cmp r0, #0
bne _0804F588
ldrh r0, [r7, #6]
cmp r0, #0x64
bhi _0804F588
ldrb r0, [r7, #4]
cmp r0, #0
beq _0804F588
subs r0, #1
strb r0, [r7, #4]
ldr r0, _0804F5B0 @ =0x0000010F
bl m4aSongNumStart
ldr r1, _0804F5B4 @ =gRingCount
ldrh r0, [r1]
cmp r0, #0
beq _0804F588
subs r0, #1
strh r0, [r1]
ldr r1, _0804F5B8 @ =0xFFFFF800
adds r0, r5, r1
adds r1, r6, #0
bl sub_804DEEC
_0804F588:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804F594: .4byte sub_8050DC8
_0804F598: .4byte gCurTask
_0804F59C: .4byte IWRAM_START + 0x1C
_0804F5A0: .4byte IWRAM_START + 0x48
_0804F5A4: .4byte 0x000003FF
_0804F5A8: .4byte gSineTable
_0804F5AC: .4byte gCamera
_0804F5B0: .4byte 0x0000010F
_0804F5B4: .4byte gRingCount
_0804F5B8: .4byte 0xFFFFF800
thumb_func_start sub_804F5BC
sub_804F5BC: @ 0x0804F5BC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r6, r0, #0
movs r0, #0x94
lsls r0, r0, #1
adds r7, r6, r0
movs r1, #0
mov r8, r1
mov sl, r1
ldr r2, _0804F6A8 @ =gCamera
mov sb, r2
_0804F5D8:
adds r0, r6, #0
adds r0, #0xe
mov r3, r8
adds r2, r0, r3
ldrb r0, [r2]
cmp r0, #0
beq _0804F68A
adds r1, r6, #0
adds r1, #0x1e
add r1, r8
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _0804F5FC
strb r0, [r2]
_0804F5FC:
mov r0, r8
lsls r2, r0, #3
adds r0, r6, #0
adds r0, #0x70
adds r4, r0, r2
ldr r0, [r4]
asrs r0, r0, #8
mov r3, sb
ldr r1, [r3]
subs r0, r0, r1
strh r0, [r7, #0x16]
adds r0, r6, #0
adds r0, #0x74
adds r5, r0, r2
ldr r0, [r5]
asrs r0, r0, #8
ldr r1, [r3, #4]
subs r0, r0, r1
strh r0, [r7, #0x18]
mov r0, sl
cmp r0, #0
bne _0804F632
movs r1, #1
mov sl, r1
adds r0, r7, #0
bl UpdateSpriteAnimation
_0804F632:
adds r0, r7, #0
bl DisplaySprite
ldr r1, [r4]
movs r2, #0xa0
lsls r2, r2, #3
adds r1, r1, r2
str r1, [r4]
mov r3, r8
lsls r2, r3, #2
adds r0, r6, #0
adds r0, #0x2e
adds r0, r0, r2
movs r3, #0
ldrsh r0, [r0, r3]
adds r1, r1, r0
str r1, [r4]
adds r0, r6, #0
adds r0, #0x30
adds r0, r0, r2
movs r2, #0
ldrsh r1, [r0, r2]
ldr r0, [r5]
adds r0, r0, r1
str r0, [r5]
bl sub_802C6E4
movs r1, #0x82
lsls r1, r1, #2
ands r1, r0
cmp r1, #0
bne _0804F68A
ldr r1, [r4]
asrs r1, r1, #8
ldr r2, [r5]
asrs r2, r2, #8
adds r0, r7, #0
movs r3, #0
bl sub_804F010
cmp r0, #1
bne _0804F68A
bl sub_802BA8C
_0804F68A:
mov r0, r8
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r8, r0
cmp r0, #0xf
bls _0804F5D8
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
_0804F6A8: .4byte gCamera
thumb_func_start sub_804F6AC
sub_804F6AC: @ 0x0804F6AC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov r8, r0
mov sb, r1
ldr r0, _0804F740 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804F744 @ =IWRAM_START + 0x654
adds r1, r1, r0
mov ip, r1
lsls r3, r3, #0x16
lsrs r5, r3, #0x16
movs r3, #0
lsls r2, r2, #0x10
asrs r4, r2, #0x10
movs r2, #0x80
lsls r2, r2, #1
adds r0, r5, r2
lsls r0, r0, #1
ldr r6, _0804F748 @ =gSineTable
adds r0, r0, r6
mov sl, r0
_0804F6DE:
mov r0, ip
adds r0, #0xe
adds r1, r0, r3
ldrb r0, [r1]
cmp r0, #0
bne _0804F750
movs r0, #1
strb r0, [r1]
mov r0, ip
adds r0, #0x1e
adds r0, r0, r3
movs r1, #0xff
strb r1, [r0]
lsls r2, r3, #2
mov r1, ip
adds r1, #0x2e
adds r1, r1, r2
mov r7, sl
movs r6, #0
ldrsh r0, [r7, r6]
muls r0, r4, r0
asrs r0, r0, #0xe
strh r0, [r1]
mov r1, ip
adds r1, #0x30
adds r1, r1, r2
lsls r0, r5, #1
ldr r7, _0804F748 @ =gSineTable
adds r0, r0, r7
movs r2, #0
ldrsh r0, [r0, r2]
muls r0, r4, r0
asrs r0, r0, #0xe
strh r0, [r1]
lsls r1, r3, #3
mov r0, ip
adds r0, #0x70
adds r0, r0, r1
mov r6, r8
str r6, [r0]
mov r0, ip
adds r0, #0x74
adds r0, r0, r1
mov r7, sb
str r7, [r0]
ldr r0, _0804F74C @ =0x00000129
bl m4aSongNumStart
b _0804F75A
.align 2, 0
_0804F740: .4byte gCurTask
_0804F744: .4byte IWRAM_START + 0x654
_0804F748: .4byte gSineTable
_0804F74C: .4byte 0x00000129
_0804F750:
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #0xf
bls _0804F6DE
_0804F75A:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_start sub_804F768
sub_804F768: @ 0x0804F768
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov r8, r0
mov sb, r1
ldr r0, _0804F7B0 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804F7B4 @ =IWRAM_START + 0x654
adds r1, r1, r0
mov ip, r1
movs r4, #0
ldr r3, _0804F7B8 @ =IWRAM_START + 0x662
adds r5, r0, r3
ldr r7, _0804F7BC @ =gSineTable
lsls r2, r2, #0x10
asrs r6, r2, #0x10
_0804F78C:
adds r0, r5, r4
ldrb r0, [r0]
cmp r0, #0
bne _0804F838
movs r0, #1
ands r0, r4
cmp r0, #0
beq _0804F7C0
lsls r1, r4, #2
adds r0, r1, r4
lsls r0, r0, #1
mov r2, ip
ldrh r2, [r2, #0xc]
adds r0, r0, r2
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
adds r2, r1, #0
b _0804F7D0
.align 2, 0
_0804F7B0: .4byte gCurTask
_0804F7B4: .4byte IWRAM_START + 0x654
_0804F7B8: .4byte IWRAM_START + 0x662
_0804F7BC: .4byte gSineTable
_0804F7C0:
lsls r2, r4, #2
adds r1, r2, r4
lsls r1, r1, #1
mov r3, ip
ldrh r0, [r3, #0xc]
subs r0, r0, r1
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
_0804F7D0:
ldr r1, _0804F834 @ =0x000003FF
adds r0, r1, #0
ands r3, r0
adds r1, r5, r4
movs r0, #1
strb r0, [r1]
mov r0, ip
adds r0, #0x1e
adds r0, r0, r4
movs r1, #0xff
strb r1, [r0]
mov r1, ip
adds r1, #0x2e
adds r1, r1, r2
movs r5, #0x80
lsls r5, r5, #1
adds r0, r3, r5
lsls r0, r0, #1
adds r0, r0, r7
movs r5, #0
ldrsh r0, [r0, r5]
muls r0, r6, r0
asrs r0, r0, #0xe
strh r0, [r1]
mov r1, ip
adds r1, #0x30
adds r1, r1, r2
lsls r0, r3, #1
adds r0, r0, r7
movs r2, #0
ldrsh r0, [r0, r2]
muls r0, r6, r0
asrs r0, r0, #0xe
strh r0, [r1]
lsls r1, r4, #3
mov r0, ip
adds r0, #0x70
adds r0, r0, r1
mov r3, r8
str r3, [r0]
mov r0, ip
adds r0, #0x74
adds r0, r0, r1
mov r5, sb
str r5, [r0]
movs r0, #0xf3
bl m4aSongNumStart
b _0804F842
.align 2, 0
_0804F834: .4byte 0x000003FF
_0804F838:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0xf
bls _0804F78C
_0804F842:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_804F850
sub_804F850: @ 0x0804F850
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x20
str r0, [sp, #8]
str r1, [sp, #0xc]
lsls r3, r3, #0x10
lsrs r6, r3, #0x10
ldr r0, _0804F8C4 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804F8C8 @ =IWRAM_START + 0x654
adds r4, r0, r1
mov r1, sp
movs r5, #0
movs r3, #0
movs r2, #0
ldr r7, _0804F8CC @ =IWRAM_START + 0x662
adds r0, r0, r7
ldrb r0, [r0]
cmp r0, #0
bne _0804F886
strb r5, [r1]
adds r1, #1
movs r3, #1
_0804F886:
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0xf
bhi _0804F8AA
adds r0, r4, #0
adds r0, #0xe
adds r0, r0, r2
ldrb r0, [r0]
cmp r0, #0
bne _0804F886
strb r2, [r1]
adds r1, #1
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #8
bne _0804F886
_0804F8AA:
cmp r3, #8
bne _0804F8B0
movs r5, #1
_0804F8B0:
cmp r5, #0
beq _0804F9A2
mov r0, sp
ldrb r0, [r0, #7]
cmp r0, #7
bhi _0804F8D0
adds r0, r6, #0
adds r0, #0x3c
b _0804F8D4
.align 2, 0
_0804F8C4: .4byte gCurTask
_0804F8C8: .4byte IWRAM_START + 0x654
_0804F8CC: .4byte IWRAM_START + 0x662
_0804F8D0:
adds r0, r6, #0
subs r0, #0x3c
_0804F8D4:
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
ldr r0, _0804F9B4 @ =0x000003FF
ands r6, r0
movs r5, #0
adds r0, r4, #0
adds r0, #0xe
str r0, [sp, #0x10]
adds r1, r4, #0
adds r1, #0x1e
str r1, [sp, #0x14]
adds r2, r4, #0
adds r2, #0x2e
str r2, [sp, #0x18]
adds r7, r4, #0
adds r7, #0x30
str r7, [sp, #0x1c]
movs r0, #0x70
adds r0, r0, r4
mov sl, r0
adds r4, #0x74
mov sb, r4
movs r1, #0x80
lsls r1, r1, #1
mov ip, r1
adds r0, r6, r1
lsls r0, r0, #1
ldr r2, _0804F9B8 @ =gSineTable
adds r0, r0, r2
movs r4, #0
ldrsh r1, [r0, r4]
lsls r0, r1, #1
adds r0, r0, r1
asrs r0, r0, #6
mov r8, r0
_0804F91A:
mov r7, sp
adds r0, r7, r5
ldrb r2, [r0]
ldr r0, [sp, #0x10]
adds r1, r0, r2
movs r0, #1
strb r0, [r1]
ldr r4, [sp, #0x14]
adds r1, r4, r2
movs r0, #0xff
strb r0, [r1]
lsls r3, r2, #2
ldr r7, [sp, #0x18]
adds r4, r7, r3
mov r0, r8
strh r0, [r4]
ldr r1, [sp, #0x1c]
adds r3, r1, r3
lsls r0, r6, #1
ldr r7, _0804F9B8 @ =gSineTable
adds r0, r0, r7
movs r7, #0
ldrsh r1, [r0, r7]
lsls r0, r1, #1
adds r0, r0, r1
asrs r0, r0, #6
strh r0, [r3]
lsls r0, r5, #7
add r0, ip
lsls r0, r0, #1
ldr r1, _0804F9B8 @ =gSineTable
adds r0, r0, r1
movs r7, #0
ldrsh r1, [r0, r7]
lsls r0, r1, #1
adds r0, r0, r1
asrs r0, r0, #8
ldrh r1, [r4]
adds r0, r0, r1
strh r0, [r4]
lsls r0, r5, #8
ldr r4, _0804F9B8 @ =gSineTable
adds r0, r0, r4
movs r7, #0
ldrsh r1, [r0, r7]
lsls r0, r1, #1
adds r0, r0, r1
asrs r0, r0, #8
ldrh r1, [r3]
adds r0, r0, r1
strh r0, [r3]
lsls r2, r2, #3
mov r4, sl
adds r0, r4, r2
ldr r7, [sp, #8]
str r7, [r0]
add r2, sb
ldr r0, [sp, #0xc]
str r0, [r2]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #7
bls _0804F91A
movs r0, #0x81
lsls r0, r0, #1
bl m4aSongNumStart
_0804F9A2:
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
_0804F9B4: .4byte 0x000003FF
_0804F9B8: .4byte gSineTable
thumb_func_start sub_804F9BC
sub_804F9BC: @ 0x0804F9BC
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
mov r8, r1
ldr r0, _0804F9FC @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804FA00 @ =IWRAM_START + 0x654
adds r1, r1, r0
mov ip, r1
movs r5, #0
ldr r3, _0804FA04 @ =IWRAM_START + 0x662
adds r2, r0, r3
ldr r6, _0804FA08 @ =gSineTable
_0804F9DC:
adds r0, r2, r5
ldrb r0, [r0]
cmp r0, #0
bne _0804FA8C
movs r0, #1
ands r0, r5
cmp r0, #0
beq _0804FA0C
lsls r0, r5, #1
adds r0, r0, r5
lsls r0, r0, #1
mov r7, ip
ldrh r7, [r7, #0xc]
adds r0, r0, r7
b _0804FA18
.align 2, 0
_0804F9FC: .4byte gCurTask
_0804FA00: .4byte IWRAM_START + 0x654
_0804FA04: .4byte IWRAM_START + 0x662
_0804FA08: .4byte gSineTable
_0804FA0C:
lsls r1, r5, #1
adds r1, r1, r5
lsls r1, r1, #1
mov r3, ip
ldrh r0, [r3, #0xc]
subs r0, r0, r1
_0804FA18:
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldr r7, _0804FA84 @ =0x000003FF
adds r0, r7, #0
ands r4, r0
adds r1, r2, r5
movs r0, #1
strb r0, [r1]
mov r0, ip
adds r0, #0x1e
adds r0, r0, r5
movs r1, #0xff
strb r1, [r0]
lsls r3, r5, #2
mov r2, ip
adds r2, #0x2e
adds r2, r2, r3
adds r1, #1
adds r0, r4, r1
lsls r0, r0, #1
adds r0, r0, r6
movs r7, #0
ldrsh r1, [r0, r7]
lsls r0, r1, #3
adds r0, r0, r1
asrs r0, r0, #7
strh r0, [r2]
mov r2, ip
adds r2, #0x30
adds r2, r2, r3
lsls r0, r4, #1
adds r0, r0, r6
movs r3, #0
ldrsh r1, [r0, r3]
lsls r0, r1, #3
adds r0, r0, r1
asrs r0, r0, #7
strh r0, [r2]
lsls r1, r5, #3
mov r0, ip
adds r0, #0x70
adds r0, r0, r1
mov r7, sb
str r7, [r0]
mov r0, ip
adds r0, #0x74
adds r0, r0, r1
mov r1, r8
str r1, [r0]
ldr r0, _0804FA88 @ =0x00000115
bl m4aSongNumStart
b _0804FA96
.align 2, 0
_0804FA84: .4byte 0x000003FF
_0804FA88: .4byte 0x00000115
_0804FA8C:
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xf
bls _0804F9DC
_0804FA96:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_804FAA4
sub_804FAA4: @ 0x0804FAA4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x20
str r0, [sp, #8]
str r1, [sp, #0xc]
ldr r0, _0804FB18 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804FB1C @ =IWRAM_START + 0x654
adds r4, r0, r1
lsls r3, r3, #0x16
lsrs r3, r3, #0x16
mov ip, r3
mov r1, sp
movs r5, #0
movs r3, #0
movs r2, #0
ldr r6, _0804FB20 @ =IWRAM_START + 0x662
adds r0, r0, r6
ldrb r0, [r0]
cmp r0, #0
bne _0804FADC
strb r5, [r1]
adds r1, #1
movs r3, #1
_0804FADC:
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0xf
bhi _0804FB00
adds r0, r4, #0
adds r0, #0xe
adds r0, r0, r2
ldrb r0, [r0]
cmp r0, #0
bne _0804FADC
strb r2, [r1]
adds r1, #1
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #8
bne _0804FADC
_0804FB00:
cmp r3, #8
bne _0804FB06
movs r5, #1
_0804FB06:
cmp r5, #0
beq _0804FBFC
mov r0, sp
ldrb r0, [r0, #7]
cmp r0, #7
bhi _0804FB24
mov r0, ip
adds r0, #0x46
b _0804FB28
.align 2, 0
_0804FB18: .4byte gCurTask
_0804FB1C: .4byte IWRAM_START + 0x654
_0804FB20: .4byte IWRAM_START + 0x662
_0804FB24:
mov r0, ip
subs r0, #0x46
_0804FB28:
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov ip, r0
ldr r0, _0804FB88 @ =0x000003FF
mov r1, ip
ands r1, r0
mov ip, r1
movs r7, #0
adds r2, r4, #0
adds r2, #0xe
str r2, [sp, #0x10]
adds r3, r4, #0
adds r3, #0x1e
str r3, [sp, #0x14]
adds r6, r4, #0
adds r6, #0x2e
str r6, [sp, #0x18]
adds r1, r4, #0
adds r1, #0x30
str r1, [sp, #0x1c]
movs r2, #0x70
adds r2, r2, r4
mov sl, r2
adds r4, #0x74
mov sb, r4
ldr r3, _0804FB8C @ =gSineTable
mov r8, r3
_0804FB5E:
mov r6, sp
adds r0, r6, r7
ldrb r6, [r0]
ldr r0, [sp, #0x10]
adds r1, r0, r6
movs r0, #1
strb r0, [r1]
ldr r2, [sp, #0x14]
adds r1, r2, r6
movs r0, #0xff
strb r0, [r1]
cmp r7, #3
bhi _0804FB90
lsls r0, r7, #4
add r0, ip
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
lsls r0, r7, #1
adds r0, r0, r7
lsls r5, r0, #4
b _0804FBA4
.align 2, 0
_0804FB88: .4byte 0x000003FF
_0804FB8C: .4byte gSineTable
_0804FB90:
subs r0, r7, #4
lsls r1, r0, #4
mov r3, ip
subs r1, r3, r1
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
lsls r1, r0, #1
adds r1, r1, r0
lsls r1, r1, #0x14
lsrs r5, r1, #0x10
_0804FBA4:
ldr r0, _0804FC0C @ =0x000003FF
ands r4, r0
lsls r2, r6, #2
ldr r1, [sp, #0x18]
adds r3, r1, r2
movs r1, #0x80
lsls r1, r1, #1
adds r0, r4, r1
lsls r0, r0, #1
add r0, r8
movs r1, #0
ldrsh r0, [r0, r1]
movs r1, #0xa0
lsls r1, r1, #2
subs r1, r1, r5
muls r0, r1, r0
asrs r0, r0, #0xe
strh r0, [r3]
ldr r3, [sp, #0x1c]
adds r2, r3, r2
lsls r0, r4, #1
add r0, r8
movs r3, #0
ldrsh r0, [r0, r3]
muls r0, r1, r0
asrs r0, r0, #0xe
strh r0, [r2]
lsls r1, r6, #3
mov r6, sl
adds r0, r6, r1
ldr r2, [sp, #8]
str r2, [r0]
add r1, sb
ldr r3, [sp, #0xc]
str r3, [r1]
adds r0, r7, #1
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
cmp r7, #7
bls _0804FB5E
movs r0, #0x81
lsls r0, r0, #1
bl m4aSongNumStart
_0804FBFC:
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
_0804FC0C: .4byte 0x000003FF
thumb_func_start sub_804FC10
sub_804FC10: @ 0x0804FC10
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x24
str r0, [sp, #8]
str r1, [sp, #0xc]
lsls r3, r3, #0x10
lsrs r3, r3, #0x10
str r3, [sp, #0x10]
ldr r0, _0804FC88 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804FC8C @ =IWRAM_START + 0x654
adds r1, r1, r0
mov ip, r1
movs r6, #0
_0804FC34:
mov r1, sp
movs r4, #0
movs r3, #0
movs r2, #0
mov r5, ip
ldrb r0, [r5, #0xe]
cmp r0, #0
bne _0804FC4A
strb r4, [r1]
adds r1, #1
movs r3, #1
_0804FC4A:
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0xf
bhi _0804FC6E
mov r0, ip
adds r0, #0xe
adds r0, r0, r2
ldrb r0, [r0]
cmp r0, #0
bne _0804FC4A
strb r2, [r1]
adds r1, #1
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #8
bne _0804FC4A
_0804FC6E:
cmp r3, #8
bne _0804FC74
movs r4, #1
_0804FC74:
cmp r4, #0
beq _0804FD40
mov r0, sp
ldrb r0, [r0, #7]
cmp r0, #7
bhi _0804FC90
ldr r0, [sp, #0x10]
adds r0, #0x28
b _0804FC94
.align 2, 0
_0804FC88: .4byte gCurTask
_0804FC8C: .4byte IWRAM_START + 0x654
_0804FC90:
ldr r0, [sp, #0x10]
subs r0, #0x28
_0804FC94:
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
ldr r0, _0804FD50 @ =0x000003FF
ands r2, r0
movs r5, #0
mov r0, ip
adds r0, #0xe
str r0, [sp, #0x1c]
mov r1, ip
adds r1, #0x1e
str r1, [sp, #0x20]
mov r3, ip
adds r3, #0x2e
str r3, [sp, #0x14]
movs r0, #0x30
add r0, ip
mov sl, r0
movs r1, #0x70
add r1, ip
mov sb, r1
movs r3, #0x74
add r3, ip
mov r8, r3
adds r6, #1
str r6, [sp, #0x18]
ldr r1, _0804FD54 @ =gSineTable
movs r3, #0x80
lsls r3, r3, #1
adds r0, r2, r3
lsls r0, r0, #1
adds r0, r0, r1
movs r3, #0
ldrsh r7, [r0, r3]
lsls r0, r2, #1
adds r0, r0, r1
movs r1, #0
ldrsh r6, [r0, r1]
_0804FCDE:
mov r3, sp
adds r0, r3, r5
ldrb r2, [r0]
ldr r0, [sp, #0x1c]
adds r1, r0, r2
movs r0, #1
strb r0, [r1]
ldr r3, [sp, #0x20]
adds r1, r3, r2
movs r0, #0xff
strb r0, [r1]
lsls r0, r5, #6
lsls r3, r2, #2
ldr r1, [sp, #0x14]
adds r4, r1, r3
movs r1, #0x80
lsls r1, r1, #3
subs r1, r1, r0
adds r0, r7, #0
muls r0, r1, r0
asrs r0, r0, #0xe
strh r0, [r4]
add r3, sl
adds r0, r6, #0
muls r0, r1, r0
asrs r0, r0, #0xe
strh r0, [r3]
lsls r2, r2, #3
mov r3, sb
adds r0, r3, r2
ldr r1, [sp, #8]
str r1, [r0]
add r2, r8
ldr r3, [sp, #0xc]
str r3, [r2]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #7
bls _0804FCDE
ldr r5, [sp, #0x18]
lsls r0, r5, #0x18
lsrs r6, r0, #0x18
cmp r6, #1
bhi _0804FD3A
b _0804FC34
_0804FD3A:
movs r0, #0x9c
bl m4aSongNumStart
_0804FD40:
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
_0804FD50: .4byte 0x000003FF
_0804FD54: .4byte gSineTable
thumb_func_start sub_804FD58
sub_804FD58: @ 0x0804FD58
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
mov r8, r1
ldr r0, _0804FDF4 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804FDF8 @ =IWRAM_START + 0x654
adds r1, r1, r0
mov ip, r1
movs r5, #0
ldr r6, _0804FDFC @ =gSineTable
_0804FD74:
mov r0, ip
adds r0, #0xe
adds r1, r0, r5
ldrb r0, [r1]
cmp r0, #0
bne _0804FE0C
ldr r0, _0804FE00 @ =gUnknown_080D8EE0
adds r0, r5, r0
ldrb r2, [r0]
lsls r2, r2, #5
ldr r3, _0804FE04 @ =0x0000FFC0
adds r2, r2, r3
mov r7, ip
ldrh r7, [r7, #0xc]
adds r2, r2, r7
lsls r2, r2, #0x16
lsrs r2, r2, #0x16
movs r0, #1
strb r0, [r1]
mov r0, ip
adds r0, #0x1e
adds r0, r0, r5
movs r1, #0xff
strb r1, [r0]
lsls r4, r5, #2
mov r3, ip
adds r3, #0x2e
adds r3, r3, r4
adds r1, #1
adds r0, r2, r1
lsls r0, r0, #1
adds r0, r0, r6
movs r7, #0
ldrsh r1, [r0, r7]
lsls r0, r1, #1
adds r0, r0, r1
asrs r0, r0, #6
strh r0, [r3]
mov r3, ip
adds r3, #0x30
adds r3, r3, r4
lsls r2, r2, #1
adds r2, r2, r6
movs r0, #0
ldrsh r1, [r2, r0]
lsls r0, r1, #1
adds r0, r0, r1
asrs r0, r0, #6
strh r0, [r3]
lsls r1, r5, #3
mov r0, ip
adds r0, #0x70
adds r0, r0, r1
mov r2, sb
str r2, [r0]
mov r0, ip
adds r0, #0x74
adds r0, r0, r1
mov r3, r8
str r3, [r0]
ldr r0, _0804FE08 @ =0x0000011F
bl m4aSongNumStart
b _0804FE16
.align 2, 0
_0804FDF4: .4byte gCurTask
_0804FDF8: .4byte IWRAM_START + 0x654
_0804FDFC: .4byte gSineTable
_0804FE00: .4byte gUnknown_080D8EE0
_0804FE04: .4byte 0x0000FFC0
_0804FE08: .4byte 0x0000011F
_0804FE0C:
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xf
bls _0804FD74
_0804FE16:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_804FE24
sub_804FE24: @ 0x0804FE24
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _0804FED4 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804FED8 @ =IWRAM_START + 0x1C
adds r6, r0, r1
ldrh r0, [r5, #8]
subs r0, #1
strh r0, [r5, #8]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804FE9A
ldr r0, _0804FEDC @ =sub_804FEFC
str r0, [r5]
movs r0, #0x65
strh r0, [r5, #8]
ldr r2, _0804FEE0 @ =gPseudoRandom
ldr r1, [r2]
ldr r0, _0804FEE4 @ =0x00196225
muls r0, r1, r0
ldr r3, _0804FEE8 @ =0x3C6EF35F
adds r0, r0, r3
str r0, [r2]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #7
bl Mod
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r2, _0804FEEC @ =gUnknown_080D89AC
lsls r1, r0, #2
adds r1, r1, r2
ldr r1, [r1]
str r1, [r5, #4]
movs r1, #0x94
lsls r1, r1, #1
adds r4, r5, r1
ldr r2, _0804FEF0 @ =gUnknown_080D89C8
lsls r1, r0, #1
adds r1, r1, r0
lsls r1, r1, #2
adds r1, r1, r2
ldrh r0, [r1, #4]
strh r0, [r4, #0xa]
ldrb r2, [r1, #6]
movs r3, #0xa4
lsls r3, r3, #1
adds r0, r5, r3
strb r2, [r0]
ldrb r0, [r1, #8]
ldr r2, _0804FEF4 @ =0x0000014D
adds r1, r5, r2
strb r0, [r1]
adds r3, #1
adds r1, r5, r3
movs r0, #0xff
strb r0, [r1]
_0804FE9A:
adds r4, r5, #0
adds r4, #0xf0
ldr r0, [r6, #0x24]
asrs r0, r0, #8
ldrh r1, [r6, #0x20]
adds r0, r0, r1
ldr r2, _0804FEF8 @ =gCamera
ldr r1, [r2]
subs r0, r0, r1
strh r0, [r4, #0x16]
ldr r0, [r6, #0x28]
asrs r0, r0, #8
ldrh r6, [r6, #0x22]
adds r0, r0, r6
ldr r1, [r2, #4]
subs r0, r0, r1
strh r0, [r4, #0x18]
adds r0, r4, #0
bl UpdateSpriteAnimation
adds r0, r4, #0
bl DisplaySprite
adds r0, r5, #0
bl sub_804F5BC
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0804FED4: .4byte gCurTask
_0804FED8: .4byte IWRAM_START + 0x1C
_0804FEDC: .4byte sub_804FEFC
_0804FEE0: .4byte gPseudoRandom
_0804FEE4: .4byte 0x00196225
_0804FEE8: .4byte 0x3C6EF35F
_0804FEEC: .4byte gUnknown_080D89AC
_0804FEF0: .4byte gUnknown_080D89C8
_0804FEF4: .4byte 0x0000014D
_0804FEF8: .4byte gCamera
thumb_func_start sub_804FEFC
sub_804FEFC: @ 0x0804FEFC
push {r4, r5, r6, r7, lr}
sub sp, #8
adds r7, r0, #0
ldr r0, _0804FF90 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _0804FF94 @ =IWRAM_START + 0x1C
adds r4, r0, r1
ldrh r0, [r7, #8]
subs r0, #1
strh r0, [r7, #8]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804FF22
ldr r0, _0804FF98 @ =sub_804FF9C
str r0, [r7]
movs r0, #0x8c
lsls r0, r0, #1
strh r0, [r7, #8]
_0804FF22:
ldrh r0, [r7, #8]
movs r1, #6
bl Mod
cmp r0, #0
bne _0804FF80
add r1, sp, #4
mov r0, sp
bl sub_802C668
movs r1, #0x20
ldrsh r0, [r4, r1]
lsls r0, r0, #8
ldr r6, [r4, #0x24]
adds r6, r6, r0
movs r1, #0x22
ldrsh r0, [r4, r1]
lsls r0, r0, #8
ldr r5, [r4, #0x28]
adds r5, r5, r0
ldr r0, [sp, #4]
subs r0, r0, r5
lsls r0, r0, #8
asrs r0, r0, #0x10
ldr r1, [sp]
subs r1, r1, r6
lsls r1, r1, #8
asrs r1, r1, #0x10
bl sub_8004418
strh r0, [r7, #0xa]
ldrh r1, [r7, #8]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
movs r1, #0xa0
lsls r1, r1, #3
adds r2, r1, #0
subs r2, r2, r0
lsls r2, r2, #0x10
asrs r2, r2, #0x10
ldrh r3, [r7, #0xa]
ldr r4, [r7, #4]
adds r0, r6, #0
adds r1, r5, #0
bl _call_via_r4
_0804FF80:
adds r0, r7, #0
bl sub_804F5BC
add sp, #8
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804FF90: .4byte gCurTask
_0804FF94: .4byte IWRAM_START + 0x1C
_0804FF98: .4byte sub_804FF9C
thumb_func_start sub_804FF9C
sub_804FF9C: @ 0x0804FF9C
push {r4, r5, lr}
sub sp, #8
adds r4, r0, #0
ldr r0, _0805001C @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _08050020 @ =IWRAM_START + 0x1C
adds r5, r0, r1
ldrh r0, [r4, #8]
subs r0, #1
strh r0, [r4, #8]
lsls r0, r0, #0x10
cmp r0, #0
bne _0805000C
adds r1, r4, #0
adds r1, #0xf0
ldr r0, _08050024 @ =0x000002CD
strh r0, [r1, #0xa]
movs r0, #0x88
lsls r0, r0, #1
adds r1, r4, r0
movs r0, #0
strb r0, [r1]
ldr r0, _08050028 @ =0x00000111
adds r1, r4, r0
movs r0, #0xff
strb r0, [r1]
add r1, sp, #4
mov r0, sp
bl sub_802C668
movs r1, #0x20
ldrsh r0, [r5, r1]
lsls r0, r0, #8
ldr r2, [r5, #0x24]
adds r2, r2, r0
movs r1, #0x22
ldrsh r0, [r5, r1]
lsls r0, r0, #8
ldr r1, [r5, #0x28]
adds r1, r1, r0
ldr r0, [sp, #4]
subs r0, r0, r1
lsls r0, r0, #8
asrs r0, r0, #0x10
ldr r1, [sp]
subs r1, r1, r2
lsls r1, r1, #8
asrs r1, r1, #0x10
bl sub_8004418
strh r0, [r4, #0xc]
ldr r0, _0805002C @ =sub_804FE24
str r0, [r4]
movs r0, #0x10
strh r0, [r4, #8]
_0805000C:
adds r0, r4, #0
bl sub_804F5BC
add sp, #8
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0805001C: .4byte gCurTask
_08050020: .4byte IWRAM_START + 0x1C
_08050024: .4byte 0x000002CD
_08050028: .4byte 0x00000111
_0805002C: .4byte sub_804FE24
thumb_func_start sub_8050030
sub_8050030: @ 0x08050030
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r6, r0, #0
ldr r0, [r6, #0x34]
mov ip, r0
adds r4, r6, #4
movs r1, #0x3a
adds r1, r1, r6
mov r8, r1
ldrh r3, [r6, #0x2e]
mov sb, r3
movs r0, #0
mov sl, r0
ldr r5, [r6, #0x30]
lsrs r2, r5, #0xc
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #7
bls _08050062
movs r1, #1
mov sl, r1
_08050062:
movs r1, #7
movs r0, #7
ands r3, r0
ldr r7, _080500FC @ =0x00000FFF
ands r7, r5
ands r2, r1
ldrh r0, [r6, #0x2c]
subs r0, r5, r0
lsrs r0, r0, #0xc
ands r0, r1
cmp r2, r0
beq _080500B0
movs r5, #0
adds r2, r4, #0
lsls r1, r3, #1
_08050080:
ldrh r0, [r4, #2]
strh r0, [r4]
adds r4, #2
ldrh r0, [r4, #2]
strh r0, [r4]
adds r4, #2
ldrh r0, [r4, #2]
strh r0, [r4]
adds r4, #2
mov r3, ip
adds r3, #4
mov ip, r3
subs r3, #4
ldm r3!, {r0}
adds r0, r1, r0
ldrh r0, [r0]
strh r0, [r4]
adds r4, #2
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #4
bls _08050080
adds r4, r2, #0
_080500B0:
movs r5, #0
lsls r7, r7, #0x10
_080500B4:
lsls r0, r5, #3
adds r0, r4, r0
lsrs r1, r7, #0x10
bl sub_80859F4
mov r1, r8
strh r0, [r1]
movs r3, #2
add r8, r3
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #4
bls _080500B4
ldrh r0, [r6, #0x2c]
mov r1, sb
subs r0, r0, r1
movs r1, #0xfa
muls r0, r1, r0
asrs r0, r0, #8
add r0, sb
strh r0, [r6, #0x2c]
ldrh r1, [r6, #0x2c]
ldr r0, [r6, #0x30]
adds r0, r0, r1
ldr r1, _08050100 @ =0x00007FFF
ands r0, r1
str r0, [r6, #0x30]
mov r0, sl
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
_080500FC: .4byte 0x00000FFF
_08050100: .4byte 0x00007FFF
thumb_func_start sub_8050104
sub_8050104: @ 0x08050104
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r6, r0, #0
ldr r0, [r6, #0x1c]
mov ip, r0
adds r4, r6, #4
adds r7, r6, #0
adds r7, #0x20
ldrh r1, [r6, #0x16]
mov sb, r1
movs r3, #0
mov sl, r3
ldr r5, [r6, #0x18]
lsrs r2, r5, #0xc
adds r0, r2, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #7
bls _08050134
movs r0, #1
mov sl, r0
_08050134:
movs r1, #7
movs r0, #7
ands r3, r0
ldr r0, _080501CC @ =0x00000FFF
mov r8, r0
ands r0, r5
mov r8, r0
ands r2, r1
ldrh r0, [r6, #0x14]
subs r0, r5, r0
lsrs r0, r0, #0xc
ands r0, r1
cmp r2, r0
beq _08050186
movs r5, #0
adds r2, r4, #0
lsls r1, r3, #1
_08050156:
ldrh r0, [r4, #2]
strh r0, [r4]
adds r4, #2
ldrh r0, [r4, #2]
strh r0, [r4]
adds r4, #2
ldrh r0, [r4, #2]
strh r0, [r4]
adds r4, #2
mov r3, ip
adds r3, #4
mov ip, r3
subs r3, #4
ldm r3!, {r0}
adds r0, r1, r0
ldrh r0, [r0]
strh r0, [r4]
adds r4, #2
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #1
bls _08050156
adds r4, r2, #0
_08050186:
movs r5, #0
_08050188:
lsls r0, r5, #3
adds r0, r4, r0
mov r1, r8
bl sub_8085968
strh r0, [r7]
adds r7, #2
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #1
bls _08050188
ldrh r0, [r6, #0x14]
mov r1, sb
subs r0, r0, r1
movs r1, #0xfa
muls r0, r1, r0
asrs r0, r0, #8
add r0, sb
strh r0, [r6, #0x14]
ldrh r1, [r6, #0x14]
ldr r0, [r6, #0x18]
adds r0, r0, r1
ldr r1, _080501D0 @ =0x00007FFF
ands r0, r1
str r0, [r6, #0x18]
mov r0, sl
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
_080501CC: .4byte 0x00000FFF
_080501D0: .4byte 0x00007FFF
thumb_func_start sub_80501D4
sub_80501D4: @ 0x080501D4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x28
mov r8, r0
mov r6, r8
adds r6, #0x1c
adds r0, #0x48
str r0, [sp, #0x10]
adds r0, #0x4c
ldrb r0, [r0]
cmp r0, #0
bne _08050298
ldr r2, _08050248 @ =gUnknown_03005424
ldrh r1, [r2]
movs r0, #0x20
orrs r1, r0
strh r1, [r2]
mov r3, r8
ldrb r4, [r3, #0xf]
cmp r4, #0
bne _0805026C
ldr r5, _0805024C @ =0x000007B4
add r5, r8
ldr r0, [r5, #4]
bl VramFree
movs r0, #0x2a
bl VramMalloc
str r0, [r5, #4]
movs r1, #0
ldr r0, _08050250 @ =0x00000317
strh r0, [r5, #0xa]
ldr r0, _08050254 @ =0x000007D4
add r0, r8
strb r1, [r0]
ldr r1, _08050258 @ =0x000007D5
add r1, r8
movs r0, #0xff
strb r0, [r1]
ldr r2, _0805025C @ =gDispCnt
ldrh r1, [r2]
ldr r0, _08050260 @ =0x00007FFF
ands r0, r1
strh r0, [r2]
ldr r0, _08050264 @ =gWinRegs
strh r4, [r0, #0xa]
ldr r0, _08050268 @ =gBldRegs
strh r4, [r0]
strh r4, [r0, #2]
movs r0, #1
mov r4, r8
strb r0, [r4, #0xf]
b _0805027A
.align 2, 0
_08050248: .4byte gUnknown_03005424
_0805024C: .4byte 0x000007B4
_08050250: .4byte 0x00000317
_08050254: .4byte 0x000007D4
_08050258: .4byte 0x000007D5
_0805025C: .4byte gDispCnt
_08050260: .4byte 0x00007FFF
_08050264: .4byte gWinRegs
_08050268: .4byte gBldRegs
_0805026C:
mov r7, r8
ldrb r0, [r7, #0xc]
cmp r0, #0
beq _0805027A
ldr r0, _0805028C @ =0x0000FFDF
ands r1, r0
strh r1, [r2]
_0805027A:
mov r0, r8
ldrh r1, [r0, #0x10]
ldr r0, _08050290 @ =0x0000FFFE
ands r0, r1
mov r1, r8
strh r0, [r1, #0x10]
ldr r3, _08050294 @ =gUnknown_03005424
b _080502A4
.align 2, 0
_0805028C: .4byte 0x0000FFDF
_08050290: .4byte 0x0000FFFE
_08050294: .4byte gUnknown_03005424
_08050298:
ldr r0, _080502BC @ =gUnknown_03005424
ldrh r1, [r0]
movs r2, #0x20
orrs r1, r2
strh r1, [r0]
adds r3, r0, #0
_080502A4:
mov r2, r8
ldrh r1, [r2, #0x10]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080502C8
ldr r2, _080502C0 @ =gDispCnt
ldrh r1, [r2]
ldr r0, _080502C4 @ =0x0000FBFF
ands r0, r1
strh r0, [r2]
b _080502D6
.align 2, 0
_080502BC: .4byte gUnknown_03005424
_080502C0: .4byte gDispCnt
_080502C4: .4byte 0x0000FBFF
_080502C8:
ldr r0, _0805057C @ =gDispCnt
ldrh r1, [r0]
movs r4, #0x80
lsls r4, r4, #3
adds r2, r4, #0
orrs r1, r2
strh r1, [r0]
_080502D6:
ldrh r1, [r3]
movs r4, #0x80
lsls r4, r4, #1
adds r0, r4, #0
ands r0, r1
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
cmp r5, #0
beq _080502EA
b _0805056C
_080502EA:
movs r7, #0x20
ldrsh r0, [r6, r7]
lsls r0, r0, #8
ldr r1, [r6, #0x24]
adds r1, r1, r0
mov sb, r1
movs r1, #0x22
ldrsh r0, [r6, r1]
lsls r0, r0, #8
ldr r1, [r6, #0x28]
adds r1, r1, r0
mov sl, r1
ldr r2, [sp, #0x10]
ldr r0, [r2, #0x44]
asrs r0, r0, #8
ldrh r3, [r2, #0x3a]
adds r7, r0, r3
ldr r1, _08050580 @ =0x000003FF
adds r0, r1, #0
ands r7, r0
ldr r3, _08050584 @ =gSineTable
adds r0, r7, r4
lsls r0, r0, #1
adds r0, r0, r3
movs r2, #0
ldrsh r1, [r0, r2]
ldr r0, _08050588 @ =gUnknown_080D89A5
ldrb r2, [r0]
adds r0, r1, #0
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
lsls r0, r7, #1
adds r0, r0, r3
movs r3, #0
ldrsh r0, [r0, r3]
muls r0, r2, r0
asrs r0, r0, #6
add sl, r0
mov r0, sb
asrs r1, r0, #8
ldr r2, _0805058C @ =gCamera
ldr r0, [r2]
subs r1, r1, r0
str r1, [sp, #0x14]
mov r3, sl
asrs r1, r3, #8
ldr r0, [r2, #4]
subs r1, r1, r0
str r1, [sp, #0x18]
movs r0, #0x33
str r0, [sp]
ldr r1, [sp, #0x14]
lsls r0, r1, #0x10
asrs r0, r0, #0x10
str r0, [sp, #4]
ldr r2, [sp, #0x18]
lsls r0, r2, #0x10
asrs r0, r0, #0x10
str r0, [sp, #8]
ldr r0, _08050590 @ =gBgAffineRegs
str r0, [sp, #0xc]
adds r0, r7, #0
adds r1, r4, #0
adds r2, r4, #0
movs r3, #0x30
bl sub_8003EE4
ldr r0, _08050594 @ =0x000007C4
add r0, r8
str r5, [r0]
movs r4, #0
ldr r3, [sp, #0x10]
adds r3, #0x4c
ldr r0, [sp, #0x10]
adds r0, #0x3a
str r0, [sp, #0x20]
ldr r1, [sp, #0x10]
adds r1, #0x42
str r1, [sp, #0x24]
movs r1, #0x80
lsls r1, r1, #4
add r1, r8
movs r2, #0
_08050392:
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r1, r0
str r2, [r0]
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #3
bls _08050392
ldr r6, _08050584 @ =gSineTable
ldr r0, _08050598 @ =gStageTime
ldr r0, [r0]
lsls r0, r0, #1
ldr r1, _0805059C @ =0x000001FF
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r6
ldrh r1, [r0]
lsls r1, r1, #0x10
asrs r1, r1, #0x16
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldrb r2, [r3]
mov r0, r8
bl sub_80508C4
mov r2, r8
ldrh r1, [r2, #0x10]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080503FA
ldr r5, _080505A0 @ =0x000007B4
add r5, r8
mov r3, sp
ldrh r3, [r3, #0x14]
strh r3, [r5, #0x16]
mov r4, sp
ldrh r4, [r4, #0x18]
strh r4, [r5, #0x18]
ldr r0, [r5, #0x10]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r5, #0x10]
adds r0, r5, #0
bl UpdateSpriteAnimation
adds r0, r5, #0
bl DisplaySprite
_080503FA:
adds r0, r7, #0
adds r0, #0x8c
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
ldr r0, _080505A4 @ =0xFFFFFF00
adds r1, r7, r0
ldr r0, _08050580 @ =0x000003FF
ands r1, r0
movs r2, #0x80
lsls r2, r2, #1
adds r0, r1, r2
lsls r0, r0, #1
adds r0, r0, r6
movs r3, #0
ldrsh r0, [r0, r3]
asrs r0, r0, #2
add sb, r0
lsls r1, r1, #1
adds r1, r1, r6
movs r4, #0
ldrsh r0, [r1, r4]
asrs r0, r0, #2
add sl, r0
movs r4, #0
_0805042A:
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
movs r1, #0xfe
lsls r1, r1, #3
adds r0, r0, r1
mov r2, r8
adds r5, r2, r0
adds r6, r5, #0
adds r6, #0x38
adds r4, #1
lsls r0, r4, #1
ldr r3, [sp, #0x20]
adds r0, r3, r0
ldrh r0, [r0]
adds r7, r7, r0
ldr r0, _08050580 @ =0x000003FF
ands r7, r0
movs r1, #0x80
lsls r1, r1, #1
adds r0, r7, r1
lsls r0, r0, #1
ldr r2, _08050584 @ =gSineTable
adds r0, r0, r2
movs r3, #0
ldrsh r1, [r0, r3]
ldr r2, _08050588 @ =gUnknown_080D89A5
adds r0, r4, r2
ldrb r2, [r0]
adds r0, r1, #0
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
lsls r3, r7, #1
str r3, [sp, #0x1c]
ldr r1, _08050584 @ =gSineTable
adds r0, r3, r1
movs r3, #0
ldrsh r0, [r0, r3]
muls r0, r2, r0
asrs r0, r0, #6
add sl, r0
mov r0, sb
asrs r1, r0, #8
ldr r2, _0805058C @ =gCamera
ldr r0, [r2]
subs r1, r1, r0
strh r1, [r5, #0x16]
mov r3, sl
asrs r0, r3, #8
ldr r1, [r2, #4]
subs r0, r0, r1
strh r0, [r5, #0x18]
ldr r2, [r5, #0x10]
ldr r0, _080505A8 @ =0x00002060
orrs r2, r0
ldr r1, _080505AC @ =gUnknown_030054B8
ldrb r0, [r1]
adds r1, r0, #1
ldr r3, _080505AC @ =gUnknown_030054B8
strb r1, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
orrs r2, r0
str r2, [r5, #0x10]
strh r7, [r5, #0x38]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r6, #2]
adds r1, r0, #0
strh r1, [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
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
cmp r4, #2
bls _0805042A
ldr r1, _08050584 @ =gSineTable
movs r4, #0x80
lsls r4, r4, #1
adds r0, r7, r4
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
ldr r3, _08050588 @ =gUnknown_080D89A5
ldrb r2, [r3, #4]
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
ldr r0, [sp, #0x1c]
adds r1, r0, r1
movs r3, #0
ldrsh r0, [r1, r3]
muls r0, r2, r0
asrs r0, r0, #6
add sl, r0
ldr r5, _080505B0 @ =0x000008BC
add r5, r8
ldr r6, _080505B4 @ =0x000008F4
add r6, r8
ldr r0, [sp, #0x24]
ldrh r3, [r0]
adds r3, r3, r7
ldr r1, [sp, #0x10]
ldrh r1, [r1, #0x38]
adds r3, r3, r1
ldr r2, _08050580 @ =0x000003FF
ands r3, r2
mov r7, sb
asrs r0, r7, #8
ldr r2, _0805058C @ =gCamera
ldr r1, [r2]
subs r0, r0, r1
strh r0, [r5, #0x16]
mov r7, sl
asrs r0, r7, #8
ldr r1, [r2, #4]
subs r0, r0, r1
strh r0, [r5, #0x18]
ldr r2, [r5, #0x10]
ldr r0, _080505A8 @ =0x00002060
orrs r2, r0
ldr r1, _080505AC @ =gUnknown_030054B8
ldrb r0, [r1]
adds r1, r0, #1
ldr r7, _080505AC @ =gUnknown_030054B8
strb r1, [r7]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
orrs r2, r0
str r2, [r5, #0x10]
strh r3, [r6]
strh r4, [r6, #2]
strh r4, [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
_0805056C:
add sp, #0x28
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
_0805057C: .4byte gDispCnt
_08050580: .4byte 0x000003FF
_08050584: .4byte gSineTable
_08050588: .4byte gUnknown_080D89A5
_0805058C: .4byte gCamera
_08050590: .4byte gBgAffineRegs
_08050594: .4byte 0x000007C4
_08050598: .4byte gStageTime
_0805059C: .4byte 0x000001FF
_080505A0: .4byte 0x000007B4
_080505A4: .4byte 0xFFFFFF00
_080505A8: .4byte 0x00002060
_080505AC: .4byte gUnknown_030054B8
_080505B0: .4byte 0x000008BC
_080505B4: .4byte 0x000008F4
thumb_func_start sub_80505B8
sub_80505B8: @ 0x080505B8
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x24
mov r8, r0
mov r6, r8
adds r6, #0x1c
adds r0, #0x48
str r0, [sp, #0x10]
adds r0, #0x4c
ldrb r4, [r0]
cmp r4, #0
bne _08050606
movs r5, #0xf7
lsls r5, r5, #3
add r5, r8
ldr r0, [r5]
cmp r0, #0
beq _080505FC
bl VramFree
str r4, [r5]
ldr r2, _08050884 @ =gDispCnt
ldrh r1, [r2]
ldr r0, _08050888 @ =0x00007FFF
ands r0, r1
strh r0, [r2]
ldr r0, _0805088C @ =gWinRegs
strh r4, [r0, #0xa]
ldr r0, _08050890 @ =gBldRegs
strh r4, [r0]
strh r4, [r0, #2]
_080505FC:
mov r2, r8
ldrh r1, [r2, #0x10]
ldr r0, _08050894 @ =0x0000FFFE
ands r0, r1
strh r0, [r2, #0x10]
_08050606:
movs r3, #0x20
ldrsh r0, [r6, r3]
lsls r0, r0, #8
ldr r1, [r6, #0x24]
adds r1, r1, r0
mov sb, r1
movs r4, #0x22
ldrsh r0, [r6, r4]
lsls r0, r0, #8
ldr r1, [r6, #0x28]
adds r1, r1, r0
mov sl, r1
ldr r7, [sp, #0x10]
ldr r0, [r7, #0x44]
asrs r0, r0, #8
ldrh r1, [r7, #0x3a]
adds r7, r0, r1
ldr r2, _08050898 @ =0x000003FF
adds r0, r2, #0
ands r7, r0
ldr r4, _0805089C @ =gSineTable
movs r2, #0x80
lsls r2, r2, #1
adds r0, r7, r2
lsls r0, r0, #1
adds r0, r0, r4
movs r3, #0
ldrsh r1, [r0, r3]
ldr r0, _080508A0 @ =gUnknown_080D89A5
ldrb r3, [r0]
adds r0, r1, #0
muls r0, r3, r0
asrs r0, r0, #6
add sb, r0
lsls r0, r7, #1
adds r0, r0, r4
movs r4, #0
ldrsh r0, [r0, r4]
muls r0, r3, r0
asrs r0, r0, #6
add sl, r0
mov r0, sb
asrs r1, r0, #8
ldr r3, _080508A4 @ =gCamera
ldr r0, [r3]
subs r1, r1, r0
str r1, [sp, #0x14]
mov r4, sl
asrs r1, r4, #8
ldr r0, [r3, #4]
subs r6, r1, r0
movs r0, #0x33
str r0, [sp]
ldr r1, [sp, #0x14]
lsls r0, r1, #0x10
asrs r0, r0, #0x10
str r0, [sp, #4]
lsls r0, r6, #0x10
asrs r0, r0, #0x10
str r0, [sp, #8]
ldr r0, _080508A8 @ =gBgAffineRegs
str r0, [sp, #0xc]
adds r0, r7, #0
adds r1, r2, #0
movs r3, #0x30
bl sub_8003EE4
ldr r1, _080508AC @ =0x000007C4
add r1, r8
movs r0, #0
str r0, [r1]
movs r4, #0
ldr r3, [sp, #0x10]
adds r3, #0x4c
ldr r2, [sp, #0x10]
adds r2, #0x3a
str r2, [sp, #0x1c]
ldr r0, [sp, #0x10]
adds r0, #0x42
str r0, [sp, #0x20]
movs r1, #0x80
lsls r1, r1, #4
add r1, r8
movs r2, #0
_080506AE:
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r1, r0
str r2, [r0]
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #3
bls _080506AE
ldrb r2, [r3]
mov r0, r8
movs r1, #0xff
bl sub_80508C4
mov r2, r8
ldrh r1, [r2, #0x10]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080506FA
ldr r5, _080508B0 @ =0x000007B4
add r5, r8
mov r3, sp
ldrh r3, [r3, #0x14]
strh r3, [r5, #0x16]
strh r6, [r5, #0x18]
ldr r0, [r5, #0x10]
movs r1, #0x80
lsls r1, r1, #6
orrs r0, r1
str r0, [r5, #0x10]
adds r0, r5, #0
bl UpdateSpriteAnimation
adds r0, r5, #0
bl DisplaySprite
_080506FA:
adds r0, r7, #0
adds r0, #0x8c
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
ldr r2, _0805089C @ =gSineTable
ldr r4, _080508B4 @ =0xFFFFFF00
adds r1, r7, r4
ldr r0, _08050898 @ =0x000003FF
ands r1, r0
movs r3, #0x80
lsls r3, r3, #1
adds r0, r1, r3
lsls r0, r0, #1
adds r0, r0, r2
movs r4, #0
ldrsh r0, [r0, r4]
asrs r0, r0, #2
add sb, r0
lsls r1, r1, #1
adds r1, r1, r2
movs r4, #0
ldrsh r0, [r1, r4]
asrs r0, r0, #2
add sl, r0
movs r4, #0
_0805072C:
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
movs r1, #0xfe
lsls r1, r1, #3
adds r0, r0, r1
mov r2, r8
adds r5, r2, r0
adds r6, r5, #0
adds r6, #0x38
adds r4, #1
lsls r0, r4, #1
ldr r3, [sp, #0x1c]
adds r0, r3, r0
ldrh r0, [r0]
adds r7, r7, r0
ldr r0, _08050898 @ =0x000003FF
ands r7, r0
movs r1, #0x80
lsls r1, r1, #1
adds r0, r7, r1
lsls r0, r0, #1
ldr r2, _0805089C @ =gSineTable
adds r0, r0, r2
movs r3, #0
ldrsh r1, [r0, r3]
ldr r2, _080508A0 @ =gUnknown_080D89A5
adds r0, r4, r2
ldrb r2, [r0]
adds r0, r1, #0
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
lsls r3, r7, #1
str r3, [sp, #0x18]
ldr r1, _0805089C @ =gSineTable
adds r0, r3, r1
movs r3, #0
ldrsh r0, [r0, r3]
muls r0, r2, r0
asrs r0, r0, #6
add sl, r0
mov r0, sb
asrs r1, r0, #8
ldr r2, _080508A4 @ =gCamera
ldr r0, [r2]
subs r1, r1, r0
strh r1, [r5, #0x16]
mov r3, sl
asrs r0, r3, #8
ldr r1, [r2, #4]
subs r0, r0, r1
strh r0, [r5, #0x18]
ldr r2, [r5, #0x10]
movs r0, #0x83
lsls r0, r0, #5
orrs r2, r0
ldr r1, _080508B8 @ =gUnknown_030054B8
ldrb r0, [r1]
adds r1, r0, #1
ldr r3, _080508B8 @ =gUnknown_030054B8
strb r1, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
orrs r2, r0
str r2, [r5, #0x10]
strh r7, [r5, #0x38]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r6, #2]
adds r1, r0, #0
strh r1, [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
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
cmp r4, #2
bls _0805072C
ldr r1, _0805089C @ =gSineTable
movs r4, #0x80
lsls r4, r4, #1
adds r0, r7, r4
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
ldr r3, _080508A0 @ =gUnknown_080D89A5
ldrb r2, [r3, #4]
muls r0, r2, r0
asrs r0, r0, #6
add sb, r0
ldr r0, [sp, #0x18]
adds r1, r0, r1
movs r3, #0
ldrsh r0, [r1, r3]
muls r0, r2, r0
asrs r0, r0, #6
add sl, r0
ldr r5, _080508BC @ =0x000008BC
add r5, r8
ldr r6, _080508C0 @ =0x000008F4
add r6, r8
ldr r0, [sp, #0x20]
ldrh r3, [r0]
adds r3, r3, r7
ldr r1, [sp, #0x10]
ldrh r1, [r1, #0x38]
adds r3, r3, r1
ldr r2, _08050898 @ =0x000003FF
ands r3, r2
mov r7, sb
asrs r0, r7, #8
ldr r2, _080508A4 @ =gCamera
ldr r1, [r2]
subs r0, r0, r1
strh r0, [r5, #0x16]
mov r7, sl
asrs r0, r7, #8
ldr r1, [r2, #4]
subs r0, r0, r1
strh r0, [r5, #0x18]
ldr r2, [r5, #0x10]
movs r0, #0x83
lsls r0, r0, #5
orrs r2, r0
ldr r1, _080508B8 @ =gUnknown_030054B8
ldrb r0, [r1]
adds r1, r0, #1
ldr r7, _080508B8 @ =gUnknown_030054B8
strb r1, [r7]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
orrs r2, r0
str r2, [r5, #0x10]
strh r3, [r6]
strh r4, [r6, #2]
strh r4, [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
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
_08050884: .4byte gDispCnt
_08050888: .4byte 0x00007FFF
_0805088C: .4byte gWinRegs
_08050890: .4byte gBldRegs
_08050894: .4byte 0x0000FFFE
_08050898: .4byte 0x000003FF
_0805089C: .4byte gSineTable
_080508A0: .4byte gUnknown_080D89A5
_080508A4: .4byte gCamera
_080508A8: .4byte gBgAffineRegs
_080508AC: .4byte 0x000007C4
_080508B0: .4byte 0x000007B4
_080508B4: .4byte 0xFFFFFF00
_080508B8: .4byte gUnknown_030054B8
_080508BC: .4byte 0x000008BC
_080508C0: .4byte 0x000008F4
thumb_func_start sub_80508C4
sub_80508C4: @ 0x080508C4
push {r4, r5, lr}
adds r5, r0, #0
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
lsls r2, r2, #0x18
cmp r2, #0
beq _08050938
ldr r2, _08050940 @ =gDispCnt
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #8
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
ldr r1, _08050944 @ =gWinRegs
ldr r0, _08050948 @ =0x00003735
strh r0, [r1, #0xa]
ldr r3, _0805094C @ =gBldRegs
ldr r0, _08050950 @ =0x00001346
strh r0, [r3]
lsls r1, r4, #1
adds r1, r1, r4
asrs r1, r1, #8
adds r1, #0xa
movs r2, #0xf
ands r1, r2
lsls r0, r4, #2
adds r0, r0, r4
asrs r0, r0, #8
adds r0, #8
ands r0, r2
lsls r1, r1, #8
orrs r1, r0
strh r1, [r3, #2]
strh r1, [r3, #4]
ldr r0, _08050954 @ =0x000007B4
adds r2, r5, r0
ldr r0, [r2, #0x10]
movs r1, #0x80
lsls r1, r1, #1
orrs r0, r1
str r0, [r2, #0x10]
movs r3, #0
movs r4, #0xfe
lsls r4, r4, #3
_0805091E:
lsls r0, r3, #4
adds r0, r0, r3
lsls r0, r0, #2
adds r0, r0, r4
adds r2, r5, r0
ldr r0, [r2, #0x10]
orrs r0, r1
str r0, [r2, #0x10]
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #3
bls _0805091E
_08050938:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08050940: .4byte gDispCnt
_08050944: .4byte gWinRegs
_08050948: .4byte 0x00003735
_0805094C: .4byte gBldRegs
_08050950: .4byte 0x00001346
_08050954: .4byte 0x000007B4
thumb_func_start sub_8050958
sub_8050958: @ 0x08050958
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r1, r0, #0
ldrb r0, [r1, #0xd]
cmp r0, #0
beq _08050A5C
subs r0, #1
strb r0, [r1, #0xd]
lsls r0, r0, #0x18
cmp r0, #0
bne _080509B0
movs r5, #0
ldr r0, _080509A0 @ =gFlags
mov sl, r0
ldr r6, _080509A4 @ =gObjPalette
ldr r4, _080509A8 @ =gUnknown_080D8F10
ldr r3, _080509AC @ =gBgPalette
_08050980:
adds r1, r5, #0
adds r1, #0x80
lsls r1, r1, #1
adds r1, r1, r6
lsls r2, r5, #1
adds r0, r2, r4
ldrh r0, [r0]
strh r0, [r1]
adds r2, r2, r3
strh r0, [r2]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xf
bls _08050980
b _08050A4C
.align 2, 0
_080509A0: .4byte gFlags
_080509A4: .4byte gObjPalette
_080509A8: .4byte gUnknown_080D8F10
_080509AC: .4byte gBgPalette
_080509B0:
ldr r0, _080509F8 @ =gStageTime
ldr r0, [r0]
lsrs r6, r0, #1
movs r0, #0xf
ands r6, r0
ldrb r0, [r1, #0xc]
cmp r0, #3
bhi _08050A0C
movs r5, #0
ldr r1, _080509FC @ =gFlags
mov sl, r1
ldr r0, _08050A00 @ =gObjPalette
mov ip, r0
movs r7, #0xf
ldr r4, _08050A04 @ =gUnknown_080D8EF0
ldr r3, _08050A08 @ =gBgPalette
_080509D0:
adds r1, r5, r6
ands r1, r7
adds r2, r1, #0
adds r2, #0x80
lsls r2, r2, #1
add r2, ip
lsls r0, r5, #1
adds r0, r0, r4
ldrh r0, [r0]
lsrs r0, r0, #5
strh r0, [r2]
lsls r1, r1, #1
adds r1, r1, r3
strh r0, [r1]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xf
bls _080509D0
b _08050A4C
.align 2, 0
_080509F8: .4byte gStageTime
_080509FC: .4byte gFlags
_08050A00: .4byte gObjPalette
_08050A04: .4byte gUnknown_080D8EF0
_08050A08: .4byte gBgPalette
_08050A0C:
movs r5, #0
ldr r1, _08050A6C @ =gFlags
mov sl, r1
ldr r0, _08050A70 @ =gObjPalette
mov sb, r0
ldr r1, _08050A74 @ =gUnknown_080D8EF0
mov r8, r1
ldr r0, _08050A78 @ =gBgPalette
mov ip, r0
movs r7, #0xf
_08050A20:
adds r3, r5, r6
ands r3, r7
adds r4, r3, #0
adds r4, #0x80
lsls r4, r4, #1
add r4, sb
lsls r0, r5, #1
add r0, r8
ldrh r1, [r0]
lsls r2, r1, #5
lsrs r0, r1, #5
orrs r2, r0
orrs r2, r1
strh r2, [r4]
lsls r3, r3, #1
add r3, ip
strh r2, [r3]
adds r0, r5, #1
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xf
bls _08050A20
_08050A4C:
mov r1, sl
ldr r0, [r1]
movs r1, #2
orrs r0, r1
movs r1, #1
orrs r0, r1
mov r1, sl
str r0, [r1]
_08050A5C:
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
_08050A6C: .4byte gFlags
_08050A70: .4byte gObjPalette
_08050A74: .4byte gUnknown_080D8EF0
_08050A78: .4byte gBgPalette
thumb_func_start TaskDestructor_TrueArea53BossGfx
TaskDestructor_TrueArea53BossGfx: @ 0x08050A7C
push {r4, r5, r6, r7, lr}
ldrh r5, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r6, r5, r0
ldr r1, _08050B1C @ =gIntrTable+8
adds r0, r5, r1
ldr r0, [r0]
cmp r0, #0
beq _08050A94
bl VramFree
_08050A94:
movs r4, #0
ldr r0, _08050B20 @ =IWRAM_START + 0xCC
adds r7, r5, r0
ldr r1, _08050B24 @ =gIntrMainBuf + 4
adds r5, r5, r1
_08050A9E:
lsls r0, r4, #4
adds r0, r0, r4
lsls r0, r0, #2
adds r0, r5, r0
ldr r0, [r0]
bl VramFree
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #3
bls _08050A9E
movs r4, #0
_08050AB8:
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #3
adds r0, r0, r4
lsls r0, r0, #4
adds r0, r7, r0
ldr r0, [r0]
bl VramFree
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _08050AB8
movs r1, #0xa6
lsls r1, r1, #1
adds r0, r6, r1
ldr r0, [r0]
bl VramFree
movs r1, #0xad
lsls r1, r1, #3
adds r0, r6, r1
ldr r0, [r0]
bl VramFree
movs r1, #0xc5
lsls r1, r1, #3
adds r0, r6, r1
ldr r0, [r0]
bl VramFree
movs r1, #0xf0
lsls r1, r1, #3
adds r0, r6, r1
ldr r0, [r0]
bl VramFree
movs r1, #0xe9
lsls r1, r1, #3
adds r0, r6, r1
ldr r0, [r0]
bl VramFree
ldr r1, _08050B28 @ =gActiveBossTask
movs r0, #0
str r0, [r1]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08050B1C: .4byte gIntrTable + 8
_08050B20: .4byte IWRAM_START + 0xCC
_08050B24: .4byte gIntrMainBuf + 4
_08050B28: .4byte gActiveBossTask
thumb_func_start sub_8050B2C
sub_8050B2C: @ 0x08050B2C
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r7, r1, #0
ldr r0, _08050B40 @ =gActiveBossTask
ldr r0, [r0]
cmp r0, #0
bne _08050B44
str r0, [r6]
str r0, [r7]
b _08050BA2
.align 2, 0
_08050B40: .4byte gActiveBossTask
_08050B44:
ldrh r1, [r0, #6]
ldr r0, _08050BA8 @ =IWRAM_START + 0x1C
adds r1, r1, r0
movs r2, #0x20
ldrsh r0, [r1, r2]
lsls r0, r0, #8
ldr r3, [r1, #0x24]
adds r3, r3, r0
movs r5, #0x22
ldrsh r0, [r1, r5]
lsls r0, r0, #8
ldr r2, [r1, #0x28]
adds r2, r2, r0
ldr r4, _08050BAC @ =gSineTable
movs r1, #0x80
lsls r1, r1, #4
adds r0, r4, r1
movs r5, #0
ldrsh r1, [r0, r5]
lsls r0, r1, #3
adds r0, r0, r1
asrs r0, r0, #6
adds r3, r3, r0
movs r1, #0xc0
lsls r1, r1, #3
adds r0, r4, r1
movs r5, #0
ldrsh r1, [r0, r5]
lsls r0, r1, #3
adds r0, r0, r1
asrs r0, r0, #6
adds r2, r2, r0
movs r5, #0x26
adds r0, r1, #0
muls r0, r5, r0
asrs r0, r0, #6
adds r3, r3, r0
movs r0, #0x80
lsls r0, r0, #3
adds r4, r4, r0
movs r1, #0
ldrsh r0, [r4, r1]
muls r0, r5, r0
asrs r0, r0, #6
adds r2, r2, r0
str r3, [r6]
str r2, [r7]
_08050BA2:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08050BA8: .4byte IWRAM_START + 0x1C
_08050BAC: .4byte gSineTable
thumb_func_start sub_8050BB0
sub_8050BB0: @ 0x08050BB0
push {lr}
movs r2, #0
ldr r0, _08050BD4 @ =gActiveBossTask
ldr r0, [r0]
cmp r0, #0
beq _08050BCC
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #0x12
adds r0, r0, r1
ldrb r0, [r0, #0xc]
cmp r0, #0
bne _08050BCC
movs r2, #1
_08050BCC:
adds r0, r2, #0
pop {r1}
bx r1
.align 2, 0
_08050BD4: .4byte gActiveBossTask
thumb_func_start sub_8050BD8
sub_8050BD8: @ 0x08050BD8
push {lr}
bl sub_8050104
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_8050BE4
sub_8050BE4: @ 0x08050BE4
push {lr}
bl sub_8050104
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_8050BF0
sub_8050BF0: @ 0x08050BF0
push {lr}
bl sub_8050104
pop {r0}
bx r0
.align 2, 0
thumb_func_start sub_8050BFC
sub_8050BFC: @ 0x08050BFC
push {r4, lr}
adds r4, r0, #0
bl sub_8050030
lsls r0, r0, #0x18
cmp r0, #0
beq _08050C20
ldr r0, [r4, #0x30]
ldr r1, _08050C44 @ =0x00000FFF
ands r0, r1
str r0, [r4, #0x30]
ldr r1, _08050C48 @ =gUnknown_080D8D6C
ldr r0, [r1, #0x24]
str r0, [r4]
ldr r0, [r1, #0x28]
str r0, [r4, #0x34]
ldrh r0, [r1, #0x2c]
strh r0, [r4, #0x2e]
_08050C20:
ldr r1, [r4, #0x30]
ldr r0, _08050C4C @ =0x00001FFF
cmp r1, r0
bls _08050C3C
movs r0, #0x88
lsls r0, r0, #1
bl m4aSongNumStartOrContinue
ldr r1, [r4, #0x48]
subs r1, #0x57
str r1, [r4, #0x48]
ldr r0, [r4, #0x44]
adds r0, r0, r1
str r0, [r4, #0x44]
_08050C3C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08050C44: .4byte 0x00000FFF
_08050C48: .4byte gUnknown_080D8D6C
_08050C4C: .4byte 0x00001FFF
thumb_func_start sub_8050C50
sub_8050C50: @ 0x08050C50
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _08050CA8 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _08050CAC @ =IWRAM_START + 0x1C
adds r5, r0, r1
adds r0, r4, #0
bl sub_8050030
ldr r0, [r4, #0x44]
ldr r1, [r4, #0x48]
adds r0, r0, r1
str r0, [r4, #0x44]
adds r1, #0x57
str r1, [r4, #0x48]
cmp r1, #0
bne _08050CA2
ldr r2, _08050CB0 @ =0x00000FFF
str r1, [r4, #0x30]
ldr r1, _08050CB4 @ =gUnknown_080D8D6C
ldr r0, [r1]
str r0, [r4]
ldr r0, [r1, #4]
str r0, [r4, #0x34]
ldrh r0, [r1, #8]
strh r0, [r4, #0x2e]
ldr r0, [r5, #0x18]
ands r0, r2
str r0, [r5, #0x18]
ldr r1, _08050CB8 @ =gUnknown_080D8DCC
ldr r0, [r1]
str r0, [r5]
ldr r0, [r1, #4]
str r0, [r5, #0x1c]
ldrh r0, [r1, #8]
strh r0, [r5, #0x16]
movs r0, #0x88
lsls r0, r0, #1
bl m4aSongNumStop
_08050CA2:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08050CA8: .4byte gCurTask
_08050CAC: .4byte IWRAM_START + 0x1C
_08050CB0: .4byte 0x00000FFF
_08050CB4: .4byte gUnknown_080D8D6C
_08050CB8: .4byte gUnknown_080D8DCC
thumb_func_start sub_8050CBC
sub_8050CBC: @ 0x08050CBC
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, _08050CE8 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _08050CEC @ =IWRAM_START + 0x1C
adds r5, r0, r1
ldr r1, _08050CF0 @ =IWRAM_START + 0x558
adds r6, r0, r1
adds r0, r4, #0
bl sub_8050030
ldr r1, [r4, #0x30]
lsrs r0, r1, #0xc
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #2
bhi _08050CF4
ldr r0, [r5, #0x24]
subs r0, #0xc0
str r0, [r5, #0x24]
b _08050D12
.align 2, 0
_08050CE8: .4byte gCurTask
_08050CEC: .4byte IWRAM_START + 0x1C
_08050CF0: .4byte IWRAM_START + 0x558
_08050CF4:
cmp r0, #3
bne _08050D12
ldr r0, _08050D18 @ =0x00000FFF
ands r1, r0
str r1, [r4, #0x30]
ldr r0, _08050D1C @ =gUnknown_080D8D6C
ldr r1, [r0, #0x48]
str r1, [r4]
ldr r1, [r0, #0x4c]
str r1, [r4, #0x34]
adds r0, #0x50
ldrh r0, [r0]
strh r0, [r4, #0x2e]
ldr r0, _08050D20 @ =sub_804F108
str r0, [r6]
_08050D12:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08050D18: .4byte 0x00000FFF
_08050D1C: .4byte gUnknown_080D8D6C
_08050D20: .4byte sub_804F108
thumb_func_start sub_8050D24
sub_8050D24: @ 0x08050D24
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, _08050D80 @ =gCurTask
ldr r0, [r0]
ldrh r0, [r0, #6]
ldr r1, _08050D84 @ =IWRAM_START + 0x1C
adds r5, r0, r1
ldr r1, _08050D88 @ =IWRAM_START + 0x558
adds r6, r0, r1
adds r0, r4, #0
bl sub_8050030
ldr r1, [r4, #0x30]
lsrs r0, r1, #0xc
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _08050D78
ldr r2, _08050D8C @ =0x00000FFF
ands r1, r2
str r1, [r4, #0x30]
ldr r0, _08050D90 @ =gUnknown_080D8D6C
ldr r1, [r0, #0x54]
str r1, [r4]
ldr r1, [r0, #0x58]
str r1, [r4, #0x34]
adds r0, #0x5c
ldrh r0, [r0]
strh r0, [r4, #0x2e]
ldr r0, [r5, #0x18]
ands r0, r2
str r0, [r5, #0x18]
ldr r0, _08050D94 @ =gUnknown_080D8DCC
ldr r1, [r0, #0x3c]
str r1, [r5]
ldr r1, [r0, #0x40]
str r1, [r5, #0x1c]
adds r0, #0x44
ldrh r0, [r0]
strh r0, [r5, #0x16]
ldr r0, _08050D98 @ =sub_8050DC8
str r0, [r6]
_08050D78:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08050D80: .4byte gCurTask
_08050D84: .4byte IWRAM_START + 0x1C
_08050D88: .4byte IWRAM_START + 0x558
_08050D8C: .4byte 0x00000FFF
_08050D90: .4byte gUnknown_080D8D6C
_08050D94: .4byte gUnknown_080D8DCC
_08050D98: .4byte sub_8050DC8
thumb_func_start sub_8050D9C
sub_8050D9C: @ 0x08050D9C
push {lr}
ldr r1, _08050DBC @ =gCurTask
ldr r1, [r1]
ldrh r2, [r1, #6]
ldr r1, _08050DC0 @ =IWRAM_START + 0x1C
adds r2, r2, r1
ldr r1, [r2, #0x24]
movs r3, #0x80
lsls r3, r3, #1
adds r1, r1, r3
str r1, [r2, #0x24]
bl sub_8050030
pop {r0}
bx r0
.align 2, 0
_08050DBC: .4byte gCurTask
_08050DC0: .4byte IWRAM_START + 0x1C
thumb_func_start sub_8050DC4
sub_8050DC4: @ 0x08050DC4
bx lr
.align 2, 0
thumb_func_start sub_8050DC8
sub_8050DC8: @ 0x08050DC8
adds r3, r0, #0
movs r0, #0x3c
str r0, [r3, #8]
movs r1, #0
movs r0, #0xb4
strh r0, [r3, #6]
adds r2, r3, #0
adds r2, #0xc
ldr r0, _08050DF4 @ =0x000002CE
strh r0, [r2, #0xa]
adds r0, r3, #0
adds r0, #0x2c
strb r1, [r0]
adds r1, r3, #0
adds r1, #0x2d
movs r0, #0xff
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #5
str r0, [r2, #0x10]
bx lr
.align 2, 0
_08050DF4: .4byte 0x000002CE
thumb_func_start sub_8050DF8
sub_8050DF8: @ 0x08050DF8
push {lr}
bl sub_804F5BC
pop {r0}
bx r0
.align 2, 0