mirror of https://github.com/zeldaret/tmc.git
894 lines
17 KiB
ArmAsm
Executable File
894 lines
17 KiB
ArmAsm
Executable File
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
.ifdef DEMO
|
|
thumb_func_start HandleGameplayScreen
|
|
HandleGameplayScreen: @ 08051A28
|
|
push {r4, lr}
|
|
ldr r1, _08051A68 @ =0x030010A0
|
|
ldr r0, [r1, #0x00]
|
|
adds r0, #0x01
|
|
str r0, [r1, #0x00]
|
|
ldr r1, _08051A6C @ =0x080FC55C
|
|
ldr r4, _08051A70x @ =0x03001000
|
|
ldrb r0, [r4, #0x03]
|
|
lsls r0, r0, #0x02
|
|
adds r0, r0, r1
|
|
ldr r0, [r0, #0x00]
|
|
bl _call_via_r0
|
|
ldr r0, _08051A74x @ =0x02002A40
|
|
movs r2, #0x95
|
|
lsls r2, r2, #0x03
|
|
adds r1, r0, r2
|
|
ldr r0, [r1, #0x00]
|
|
cmp r0, #0x00
|
|
beq _08051A64
|
|
subs r0, #0x01
|
|
str r0, [r1, #0x00]
|
|
cmp r0, #0x00
|
|
bne _08051A64
|
|
movs r0, #0x07
|
|
movs r1, #0x02
|
|
bl DoFade
|
|
movs r0, #0x03
|
|
strb r0, [r4, #0x03]
|
|
_08051A64:
|
|
pop {r4, pc}
|
|
.byte 0x00, 0x00
|
|
_08051A68: .4byte 0x030010A0 @TODO ptr
|
|
_08051A6C: .4byte 0x080FC55C @TODO ptr
|
|
_08051A70x: .4byte 0x03001000 @TODO ptr
|
|
_08051A74x: .4byte 0x02002A40 @TODO ptr
|
|
.else
|
|
thumb_func_start HandleGameplayScreen
|
|
HandleGameplayScreen: @ 0x08051988
|
|
push {lr}
|
|
ldr r1, _080519A4 @ =gScreenTransition
|
|
ldr r0, [r1]
|
|
adds r0, #1
|
|
str r0, [r1]
|
|
ldr r1, _080519A8 @ =gUnk_080FC9D8
|
|
ldr r0, _080519AC @ =gMain
|
|
ldrb r0, [r0, #3]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
pop {pc}
|
|
.align 2, 0
|
|
_080519A4: .4byte gScreenTransition
|
|
_080519A8: .4byte gUnk_080FC9D8
|
|
_080519AC: .4byte gMain
|
|
.endif
|
|
|
|
|
|
thumb_func_start sub_080519B0
|
|
sub_080519B0: @ 0x080519B0
|
|
push {r4, r5, lr}
|
|
ldr r0, _08051A04 @ =gFadeControl
|
|
ldrb r5, [r0]
|
|
cmp r5, #0
|
|
bne _08051A02
|
|
movs r0, #1
|
|
bl DispReset
|
|
bl InitSoundPlayingInfo
|
|
bl zMallocInit
|
|
bl sub_080A7124
|
|
bl sub_0807059C
|
|
ldr r4, _08051A08 @ =gScreenTransition
|
|
adds r0, r4, #0
|
|
movs r1, #0xb0
|
|
bl MemClear
|
|
bl sub_08049CD4
|
|
bl sub_080300AC
|
|
bl sub_0807CA18
|
|
ldr r0, _08051A0C @ =gUnk_02002AC8
|
|
adds r1, r4, #0
|
|
adds r1, #0xc
|
|
movs r2, #0x20
|
|
bl MemCopy
|
|
movs r0, #4
|
|
strb r0, [r4, #9]
|
|
bl sub_08053518
|
|
ldr r1, _08051A10 @ =gMain
|
|
movs r0, #1
|
|
strb r0, [r1, #3]
|
|
strb r5, [r1, #4]
|
|
_08051A02:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08051A04: .4byte gFadeControl
|
|
_08051A08: .4byte gScreenTransition
|
|
_08051A0C: .4byte gUnk_02002AC8
|
|
_08051A10: .4byte gMain
|
|
|
|
thumb_func_start sub_08051A14
|
|
sub_08051A14: @ 0x08051A14
|
|
push {lr}
|
|
movs r0, #1
|
|
bl DispReset
|
|
ldr r1, _08051A70 @ =gFadeControl
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r0, [r1, #4]
|
|
ldr r0, _08051A74 @ =gUnk_03000000
|
|
ldr r1, _08051A78 @ =0x00000B74
|
|
bl MemClear
|
|
ldr r0, _08051A7C @ =gUnk_02032EC0
|
|
movs r1, #0xed
|
|
lsls r1, r1, #2
|
|
bl MemClear
|
|
bl EraseAllEntities
|
|
bl sub_080197AC
|
|
bl sub_08080668
|
|
bl sub_080ADD30
|
|
movs r0, #1
|
|
bl sub_0801CFA8
|
|
bl sub_0806FD8C
|
|
ldr r2, _08051A80 @ =gRoomControls
|
|
ldr r1, _08051A84 @ =gScreenTransition
|
|
ldrb r0, [r1, #0xc]
|
|
strb r0, [r2, #4]
|
|
ldrb r0, [r1, #0xd]
|
|
strb r0, [r2, #5]
|
|
bl sub_08053320
|
|
ldr r1, _08051A88 @ =gUnk_02024490
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
ldr r1, _08051A8C @ =gMain
|
|
movs r0, #2
|
|
strb r0, [r1, #3]
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051A70: .4byte gFadeControl
|
|
_08051A74: .4byte gUnk_03000000
|
|
_08051A78: .4byte 0x00000B74
|
|
_08051A7C: .4byte gUnk_02032EC0
|
|
_08051A80: .4byte gRoomControls
|
|
_08051A84: .4byte gScreenTransition
|
|
_08051A88: .4byte gUnk_02024490
|
|
_08051A8C: .4byte gMain
|
|
|
|
thumb_func_start sub_08051A90
|
|
sub_08051A90: @ 0x08051A90
|
|
push {lr}
|
|
ldr r1, _08051AA4 @ =gUnk_080FC9E8
|
|
ldr r0, _08051AA8 @ =gMain
|
|
ldrb r0, [r0, #4]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051AA4: .4byte gUnk_080FC9E8
|
|
_08051AA8: .4byte gMain
|
|
|
|
thumb_func_start InitializeNewRoom
|
|
InitializeNewRoom: @ 0x08051AAC
|
|
push {lr}
|
|
bl sub_0805E5A8
|
|
ldr r1, _08051AE4 @ =gScreen
|
|
movs r2, #0
|
|
movs r0, #0xba
|
|
lsls r0, r0, #5
|
|
strh r0, [r1]
|
|
ldr r1, _08051AE8 @ =gMain
|
|
movs r0, #1
|
|
strb r0, [r1, #4]
|
|
ldr r0, _08051AEC @ =gScreenTransition
|
|
strb r2, [r0, #8]
|
|
strb r2, [r0, #4]
|
|
strb r2, [r0, #5]
|
|
bl MessageInitialize
|
|
bl sub_08052CFC
|
|
movs r0, #0
|
|
bl sub_0801C370
|
|
bl InitializeEntities
|
|
bl sub_0801855C
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051AE4: .4byte gScreen
|
|
_08051AE8: .4byte gMain
|
|
_08051AEC: .4byte gScreenTransition
|
|
|
|
thumb_func_start sub_08051AF0
|
|
sub_08051AF0: @ 0x08051AF0
|
|
push {r4, r5, lr}
|
|
bl sub_0805E5C0
|
|
bl sub_0805BBBC
|
|
cmp r0, #0
|
|
bne _08051B02
|
|
bl UpdateScroll
|
|
_08051B02:
|
|
bl UpdateBgAnim
|
|
bl sub_08000108
|
|
bl sub_0801C344
|
|
bl sub_0805E5F8
|
|
bl FlushSprites
|
|
bl sub_0801C208
|
|
bl sub_08078CB4
|
|
bl sub_080AD9B0
|
|
bl sub_080AD918
|
|
ldr r0, _08051BB0 @ =gFadeControl
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08051BAE
|
|
ldr r0, _08051BB4 @ =gRoomControls
|
|
ldrh r0, [r0]
|
|
cmp r0, #0
|
|
bne _08051BAE
|
|
bl sub_08052F1C
|
|
ldr r5, _08051BB8 @ =gArea
|
|
movs r0, #0x86
|
|
lsls r0, r0, #4
|
|
adds r3, r5, r0
|
|
ldr r1, _08051BBC @ =0x00000864
|
|
adds r0, r5, r1
|
|
ldr r1, [r3]
|
|
ldr r2, [r0]
|
|
cmp r1, r2
|
|
beq _08051B5A
|
|
str r2, [r3]
|
|
ldr r0, _08051BC0 @ =0x800B0000
|
|
orrs r2, r0
|
|
adds r0, r2, #0
|
|
bl SoundReq
|
|
_08051B5A:
|
|
bl sub_0805E9F4
|
|
bl sub_0805BC04
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
bne _08051BAE
|
|
bl sub_08052C5C
|
|
bl sub_0805E5B4
|
|
bl sub_08051E04
|
|
bl sub_080300C4
|
|
ldr r1, _08051BC4 @ =gMain
|
|
movs r0, #2
|
|
strb r0, [r1, #4]
|
|
movs r0, #0
|
|
bl sub_08078A90
|
|
ldr r0, _08051BC8 @ =gUnk_02034490
|
|
strb r4, [r0]
|
|
adds r0, r5, #0
|
|
adds r0, #0x28
|
|
ldrb r0, [r0]
|
|
cmp r0, #0xff
|
|
beq _08051B96
|
|
bl sub_0801855C
|
|
_08051B96:
|
|
bl sub_08052BF8
|
|
bl sub_08053178
|
|
ldr r0, _08051BCC @ =gRoomVars
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08051BAE
|
|
movs r0, #0
|
|
movs r1, #1
|
|
bl sub_0805E4E0
|
|
_08051BAE:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08051BB0: .4byte gFadeControl
|
|
_08051BB4: .4byte gRoomControls
|
|
_08051BB8: .4byte gArea
|
|
_08051BBC: .4byte 0x00000864
|
|
_08051BC0: .4byte 0x800B0000
|
|
_08051BC4: .4byte gMain
|
|
_08051BC8: .4byte gUnk_02034490
|
|
_08051BCC: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_08051BD0
|
|
sub_08051BD0: @ 0x08051BD0
|
|
push {lr}
|
|
bl sub_080705AC
|
|
cmp r0, #0
|
|
bne _08051C9C
|
|
bl sub_0804AA84
|
|
cmp r0, #0
|
|
bne _08051C9C
|
|
bl sub_0805340C
|
|
ldr r0, _08051C5C @ =gMain
|
|
ldrb r0, [r0, #4]
|
|
cmp r0, #2
|
|
bne _08051C9C
|
|
ldr r0, _08051C60 @ =gTextBox
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08051C02
|
|
ldr r0, _08051C64 @ =gUnk_03003DC0
|
|
ldrh r0, [r0, #8]
|
|
cmp r0, #0
|
|
beq _08051C06
|
|
_08051C02:
|
|
bl sub_08078B48
|
|
_08051C06:
|
|
bl FlushSprites
|
|
bl sub_0805E5C0
|
|
bl sub_08080A40
|
|
bl CollisionMain
|
|
bl UpdateScroll
|
|
bl UpdateBgAnim
|
|
bl sub_08000108
|
|
bl sub_08052C3C
|
|
bl sub_0801C344
|
|
bl sub_0805E5F8
|
|
bl sub_0801C208
|
|
bl sub_08078CB4
|
|
bl sub_080AD9B0
|
|
bl sub_0805291C
|
|
bl sub_08052C5C
|
|
bl sub_080528B4
|
|
bl sub_080185F8
|
|
bl sub_080AD918
|
|
ldr r0, _08051C68 @ =gRoomControls
|
|
ldrh r2, [r0]
|
|
cmp r2, #1
|
|
beq _08051C6C
|
|
cmp r2, #2
|
|
beq _08051C88
|
|
b _08051C9C
|
|
.align 2, 0
|
|
_08051C5C: .4byte gMain
|
|
_08051C60: .4byte gTextBox
|
|
_08051C64: .4byte gUnk_03003DC0
|
|
_08051C68: .4byte gRoomControls
|
|
_08051C6C:
|
|
ldr r0, _08051C80 @ =gPlayerState
|
|
movs r1, #0x17
|
|
strb r1, [r0, #0xc]
|
|
ldr r0, _08051C84 @ =gMain
|
|
strb r2, [r0, #4]
|
|
bl sub_0805E59C
|
|
bl sub_08051D98
|
|
b _08051C9C
|
|
.align 2, 0
|
|
_08051C80: .4byte gPlayerState
|
|
_08051C84: .4byte gMain
|
|
_08051C88:
|
|
ldr r1, _08051CA0 @ =gPlayerState
|
|
movs r0, #0x17
|
|
strb r0, [r1, #0xc]
|
|
ldr r1, _08051CA4 @ =gMain
|
|
movs r0, #1
|
|
strb r0, [r1, #4]
|
|
bl sub_0805E59C
|
|
bl sub_08051DCC
|
|
_08051C9C:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051CA0: .4byte gPlayerState
|
|
_08051CA4: .4byte gMain
|
|
|
|
thumb_func_start sub_08051CA8
|
|
sub_08051CA8: @ 0x08051CA8
|
|
push {lr}
|
|
bl sub_080705AC
|
|
cmp r0, #0
|
|
bne _08051CEA
|
|
bl sub_0805E5C0
|
|
bl CollisionMain
|
|
bl sub_0801C344
|
|
bl sub_0805E5F8
|
|
bl FlushSprites
|
|
bl sub_0801C208
|
|
bl sub_08078CB4
|
|
bl sub_080AD9B0
|
|
bl sub_0805291C
|
|
bl sub_080528B4
|
|
bl sub_080AD918
|
|
ldr r0, _08051CEC @ =gFadeControl
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08051CEA
|
|
bl sub_0805E5B4
|
|
_08051CEA:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051CEC: .4byte gFadeControl
|
|
|
|
thumb_func_start sub_08051CF0
|
|
sub_08051CF0: @ 0x08051CF0
|
|
push {r4, r5, r6, lr}
|
|
bl FlushSprites
|
|
bl sub_0801C208
|
|
bl sub_080AD9B0
|
|
ldr r5, _08051D20 @ =gMain
|
|
movs r6, #1
|
|
strb r6, [r5, #0xb]
|
|
bl sub_080AD918
|
|
ldr r0, _08051D24 @ =gFadeControl
|
|
ldrb r4, [r0]
|
|
cmp r4, #0
|
|
bne _08051D1E
|
|
movs r0, #1
|
|
bl DispReset
|
|
strb r6, [r5, #3]
|
|
strb r4, [r5, #4]
|
|
ldr r0, _08051D28 @ =gScreenTransition
|
|
strb r6, [r0, #8]
|
|
_08051D1E:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08051D20: .4byte gMain
|
|
_08051D24: .4byte gFadeControl
|
|
_08051D28: .4byte gScreenTransition
|
|
|
|
thumb_func_start sub_08051D2C
|
|
sub_08051D2C: @ 0x08051D2C
|
|
.ifdef DEMO
|
|
.incbin "baserom_demo.gba", 0x051df4, 0x14 @nocheckin
|
|
.else
|
|
push {lr}
|
|
movs r0, #7
|
|
movs r1, #8
|
|
bl DoFade
|
|
movs r0, #3
|
|
bl InitScreen
|
|
pop {pc}
|
|
.align 2, 0
|
|
.endif
|
|
|
|
thumb_func_start InitializeEntities
|
|
InitializeEntities: @ 0x08051D40
|
|
push {lr}
|
|
bl sub_08052EA0
|
|
bl sub_0804AF90
|
|
bl sub_0804AFDC
|
|
bl InitializePlayer
|
|
ldr r1, _08051D90 @ =gUnk_03004030
|
|
movs r0, #0
|
|
str r0, [r1]
|
|
bl sub_0807C740
|
|
ldr r1, _08051D94 @ =gUnk_02000070
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
bl sub_0805283C
|
|
movs r0, #0
|
|
movs r1, #0
|
|
bl sub_0801D79C
|
|
bl LoadRoom
|
|
bl CreateZeldaFollower
|
|
bl sub_0804AFF4
|
|
bl sub_0805329C
|
|
bl sub_08000108
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
bl sub_0805BB74
|
|
bl sub_080531F8
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051D90: .4byte gUnk_03004030
|
|
_08051D94: .4byte gUnk_02000070
|
|
|
|
thumb_func_start sub_08051D98
|
|
sub_08051D98: @ 0x08051D98
|
|
push {lr}
|
|
bl sub_08052EA0
|
|
ldr r1, _08051DC8 @ =gRoomVars
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
bl sub_0805E9A8
|
|
bl sub_0804AF90
|
|
bl sub_0804AFDC
|
|
bl sub_0807C0DC
|
|
bl sub_0805283C
|
|
bl LoadRoom
|
|
bl sub_0804AFF4
|
|
movs r0, #1
|
|
bl sub_08078A90
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051DC8: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_08051DCC
|
|
sub_08051DCC: @ 0x08051DCC
|
|
push {r4, lr}
|
|
ldr r1, _08051DFC @ =gRoomControls
|
|
ldr r4, _08051E00 @ =gScreenTransition
|
|
ldrb r0, [r4, #0xc]
|
|
strb r0, [r1, #4]
|
|
ldrb r0, [r4, #0xd]
|
|
strb r0, [r1, #5]
|
|
bl sub_080528F0
|
|
movs r0, #3
|
|
strb r0, [r4, #9]
|
|
bl sub_08052CFC
|
|
bl sub_08052EA0
|
|
bl sub_0805E9A8
|
|
bl sub_0804AF90
|
|
bl sub_0804AFDC
|
|
bl sub_0805283C
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08051DFC: .4byte gRoomControls
|
|
_08051E00: .4byte gScreenTransition
|
|
|
|
thumb_func_start sub_08051E04
|
|
sub_08051E04: @ 0x08051E04
|
|
push {lr}
|
|
bl sub_08052620
|
|
cmp r0, #0
|
|
beq _08051E60
|
|
ldr r1, _08051E2C @ =gPlayerEntity
|
|
movs r2, #0x2e
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, #0
|
|
bge _08051E1A
|
|
adds r0, #0xf
|
|
_08051E1A:
|
|
asrs r2, r0, #4
|
|
movs r3, #0x32
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, #0
|
|
bge _08051E26
|
|
adds r0, #0xf
|
|
_08051E26:
|
|
asrs r1, r0, #4
|
|
ldr r3, _08051E30 @ =gUnk_08127F94
|
|
b _08051E36
|
|
.align 2, 0
|
|
_08051E2C: .4byte gPlayerEntity
|
|
_08051E30: .4byte gUnk_08127F94
|
|
_08051E34:
|
|
adds r3, #8
|
|
_08051E36:
|
|
ldrb r0, [r3]
|
|
cmp r0, #0xff
|
|
beq _08051E60
|
|
cmp r0, r2
|
|
bhi _08051E34
|
|
ldrb r0, [r3, #2]
|
|
cmp r0, r2
|
|
blo _08051E34
|
|
ldrb r0, [r3, #1]
|
|
cmp r0, r1
|
|
bhi _08051E34
|
|
ldrb r0, [r3, #3]
|
|
cmp r0, r1
|
|
blo _08051E34
|
|
ldr r2, _08051E64 @ =gSave
|
|
movs r1, #1
|
|
ldrb r3, [r3, #4]
|
|
lsls r1, r3
|
|
ldr r0, [r2, #0x40]
|
|
orrs r0, r1
|
|
str r0, [r2, #0x40]
|
|
_08051E60:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051E64: .4byte gSave
|
|
|
|
thumb_func_start sub_08051E68
|
|
sub_08051E68: @ 0x08051E68
|
|
push {lr}
|
|
ldr r1, _08051E7C @ =gUnk_080FCA08
|
|
ldr r0, _08051E80 @ =gMenu
|
|
ldrb r0, [r0, #5]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051E7C: .4byte gUnk_080FCA08
|
|
_08051E80: .4byte gMenu
|
|
|
|
thumb_func_start sub_08051E84
|
|
sub_08051E84: @ 0x08051E84
|
|
push {r4, r5, r6, lr}
|
|
ldr r0, _08051EF0 @ =gUnk_02032EC0
|
|
ldrb r4, [r0, #3]
|
|
lsls r4, r4, #3
|
|
ldr r0, _08051EF4 @ =gUnk_080FCA20
|
|
adds r4, r4, r0
|
|
ldr r5, _08051EF8 @ =gRoomControls
|
|
ldrb r0, [r4]
|
|
strb r0, [r5, #4]
|
|
ldrb r0, [r4, #1]
|
|
strb r0, [r5, #5]
|
|
bl sub_08053320
|
|
ldrb r0, [r5, #4]
|
|
bl sub_08052D58
|
|
ldr r1, _08051EFC @ =gArea
|
|
movs r6, #0
|
|
strh r0, [r1, #4]
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, #1]
|
|
bl SetCurrentRoomPropertyList
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, #1]
|
|
bl sub_08052FD8
|
|
ldrh r0, [r4, #4]
|
|
ldrh r1, [r5, #6]
|
|
adds r0, r0, r1
|
|
strh r0, [r5, #0xa]
|
|
ldrh r0, [r4, #6]
|
|
ldrh r1, [r5, #8]
|
|
adds r0, r0, r1
|
|
strh r0, [r5, #0xc]
|
|
ldr r1, _08051F00 @ =gMenu
|
|
ldrb r0, [r4, #2]
|
|
strb r0, [r1]
|
|
ldrb r2, [r4, #3]
|
|
movs r0, #0xf
|
|
ands r0, r2
|
|
strb r0, [r1, #3]
|
|
str r4, [r1, #0xc]
|
|
ldrb r0, [r1, #5]
|
|
adds r0, #1
|
|
strb r0, [r1, #5]
|
|
strb r6, [r1, #6]
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
strh r0, [r1, #8]
|
|
bl sub_08051F04
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08051EF0: .4byte gUnk_02032EC0
|
|
_08051EF4: .4byte gUnk_080FCA20
|
|
_08051EF8: .4byte gRoomControls
|
|
_08051EFC: .4byte gArea
|
|
_08051F00: .4byte gMenu
|
|
|
|
thumb_func_start sub_08051F04
|
|
sub_08051F04: @ 0x08051F04
|
|
push {lr}
|
|
ldr r1, _08051F38 @ =gUnk_080FCA14
|
|
ldr r0, _08051F3C @ =gMenu
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
bl FlushSprites
|
|
bl sub_0805E5C0
|
|
bl sub_080AD9B0
|
|
bl sub_080AD918
|
|
bl UpdateScroll
|
|
bl UpdateBgAnim
|
|
bl sub_0805E5F8
|
|
bl sub_08000108
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051F38: .4byte gUnk_080FCA14
|
|
_08051F3C: .4byte gMenu
|
|
|
|
thumb_func_start sub_08051F40
|
|
sub_08051F40: @ 0x08051F40
|
|
push {lr}
|
|
ldr r0, _08051F60 @ =gUnk_080FCA20
|
|
ldr r2, _08051F64 @ =gUnk_02032EC0
|
|
ldrb r1, [r2, #3]
|
|
lsls r1, r1, #3
|
|
adds r1, r1, r0
|
|
ldrb r1, [r1, #3]
|
|
movs r0, #0xf0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08051F68
|
|
lsrs r1, r1, #4
|
|
movs r0, #2
|
|
bl MenuFadeIn
|
|
b _08051F76
|
|
.align 2, 0
|
|
_08051F60: .4byte gUnk_080FCA20
|
|
_08051F64: .4byte gUnk_02032EC0
|
|
_08051F68:
|
|
movs r0, #3
|
|
strb r0, [r2]
|
|
movs r0, #0x10
|
|
bl sub_080500F4
|
|
bl MessageInitialize
|
|
_08051F76:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_08051F78
|
|
sub_08051F78: @ 0x08051F78
|
|
push {lr}
|
|
ldr r0, _08051F94 @ =gUnk_02032EC0
|
|
ldrb r3, [r0, #3]
|
|
lsls r3, r3, #3
|
|
ldr r0, _08051F98 @ =gUnk_080FCA20
|
|
adds r3, r3, r0
|
|
ldrb r0, [r3]
|
|
ldrb r1, [r3, #1]
|
|
ldrh r2, [r3, #4]
|
|
ldrh r3, [r3, #6]
|
|
bl sub_08051F9C
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08051F94: .4byte gUnk_02032EC0
|
|
_08051F98: .4byte gUnk_080FCA20
|
|
|
|
thumb_func_start sub_08051F9C
|
|
sub_08051F9C: @ 0x08051F9C
|
|
push {r4, r5, r6, lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
adds r6, r2, #0
|
|
mov r8, r3
|
|
ldr r5, _08051FE0 @ =gScreen
|
|
ldrh r2, [r5]
|
|
movs r4, #0xc0
|
|
lsls r4, r4, #7
|
|
ands r4, r2
|
|
bl sub_08052FF4
|
|
ldr r1, _08051FE4 @ =gRoomControls
|
|
ldrh r0, [r1, #6]
|
|
adds r0, r0, r6
|
|
movs r6, #0
|
|
strh r0, [r1, #0xa]
|
|
ldrh r0, [r1, #8]
|
|
add r0, r8
|
|
strh r0, [r1, #0xc]
|
|
bl sub_0807C740
|
|
ldr r1, _08051FE8 @ =gUnk_02000070
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, _08051FEC @ =gUsedPalettes
|
|
str r6, [r0]
|
|
ldrh r0, [r5]
|
|
orrs r4, r0
|
|
strh r4, [r5]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08051FE0: .4byte gScreen
|
|
_08051FE4: .4byte gRoomControls
|
|
_08051FE8: .4byte gUnk_02000070
|
|
_08051FEC: .4byte gUsedPalettes
|
|
|
|
thumb_func_start sub_08051FF0
|
|
sub_08051FF0: @ 0x08051FF0
|
|
push {lr}
|
|
ldr r0, _08052000 @ =gMenu
|
|
ldr r1, [r0, #0xc]
|
|
ldrb r0, [r1]
|
|
ldrb r1, [r1, #1]
|
|
bl sub_0804B0B0
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08052000: .4byte gMenu
|
|
|
|
thumb_func_start sub_08052004
|
|
sub_08052004: @ 0x08052004
|
|
ldr r1, _0805200C @ =gMenu
|
|
movs r0, #2
|
|
strb r0, [r1, #5]
|
|
bx lr
|
|
.align 2, 0
|
|
_0805200C: .4byte gMenu
|
|
|
|
thumb_func_start sub_08052010
|
|
sub_08052010: @ 0x08052010
|
|
push {r4, lr}
|
|
bl InitSoundPlayingInfo
|
|
bl MessageInitialize
|
|
movs r0, #1
|
|
bl DispReset
|
|
ldr r0, _0805207C @ =gBG1Buffer
|
|
movs r4, #0x80
|
|
lsls r4, r4, #4
|
|
adds r1, r4, #0
|
|
bl MemClear
|
|
ldr r0, _08052080 @ =gBG2Buffer
|
|
adds r1, r4, #0
|
|
bl MemClear
|
|
bl sub_080A4D34
|
|
movs r0, #0xa
|
|
bl LoadPaletteGroup
|
|
movs r0, #0
|
|
movs r1, #0
|
|
bl sub_0801D79C
|
|
movs r0, #4
|
|
bl LoadGfxGroup
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x13
|
|
movs r1, #0x20
|
|
bl MemClear
|
|
ldr r0, _08052084 @ =gMenu
|
|
movs r1, #0x30
|
|
bl MemClear
|
|
ldr r1, _08052088 @ =gScreen
|
|
ldrh r2, [r1]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #5
|
|
adds r0, r3, #0
|
|
orrs r0, r2
|
|
strh r0, [r1]
|
|
ldr r0, _0805208C @ =0x00001C01
|
|
strh r0, [r1, #0x14]
|
|
ldr r0, _08052090 @ =0x00001D05
|
|
strh r0, [r1, #0x20]
|
|
movs r0, #1
|
|
strh r0, [r1, #0x1a]
|
|
strh r0, [r1, #0x26]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0805207C: .4byte gBG1Buffer
|
|
_08052080: .4byte gBG2Buffer
|
|
_08052084: .4byte gMenu
|
|
_08052088: .4byte gScreen
|
|
_0805208C: .4byte 0x00001C01
|
|
_08052090: .4byte 0x00001D05
|
|
|
|
thumb_func_start HandleGameOverScreen
|
|
HandleGameOverScreen: @ 0x08052094
|
|
push {r4, lr}
|
|
ldr r1, _080520BC @ =gUnk_080FCA70
|
|
ldr r4, _080520C0 @ =gMain
|
|
ldrb r0, [r4, #3]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldrb r0, [r4, #3]
|
|
cmp r0, #0
|
|
beq _080520B8
|
|
bl FlushSprites
|
|
bl sub_080523D4
|
|
bl sub_080AD918
|
|
_080520B8:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_080520BC: .4byte gUnk_080FCA70
|
|
_080520C0: .4byte gMain
|
|
|
|
thumb_func_start sub_080520C4
|
|
sub_080520C4: @ 0x080520C4
|
|
push {lr}
|
|
ldr r1, _080520D4 @ =gMain
|
|
strb r0, [r1, #3]
|
|
movs r0, #0
|
|
bl sub_080A7114
|
|
pop {pc}
|
|
.align 2, 0
|
|
_080520D4: .4byte gMain
|
|
|
|
thumb_func_start sub_080520D8
|
|
sub_080520D8: @ 0x080520D8
|
|
push {r4, lr}
|
|
ldr r4, _08052118 @ =gFadeControl
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
bne _08052114
|
|
bl sub_08052010
|
|
ldr r1, _0805211C @ =gMenu
|
|
movs r0, #0x50
|
|
strb r0, [r1, #0x10]
|
|
movs r2, #0x3c
|
|
movs r0, #0x3c
|
|
strh r0, [r1, #8]
|
|
ldr r0, _08052120 @ =gSave
|
|
adds r0, #0xaa
|
|
movs r1, #0x18
|
|
strb r1, [r0]
|
|
ldr r0, _08052124 @ =gMain
|
|
strb r2, [r0, #5]
|
|
movs r0, #0xa
|
|
bl SoundReq
|
|
movs r0, #4
|
|
bl sub_080500F4
|
|
ldr r0, _08052128 @ =0xFFFF0001
|
|
str r0, [r4, #4]
|
|
movs r0, #1
|
|
bl sub_080520C4
|
|
_08052114:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08052118: .4byte gFadeControl
|
|
_0805211C: .4byte gMenu
|
|
_08052120: .4byte gSave
|
|
_08052124: .4byte gMain
|
|
_08052128: .4byte 0xFFFF0001
|
|
|