pokeemerald/asm/map_name_popup.s
2018-01-20 17:26:30 -05:00

571 lines
9.0 KiB
ArmAsm
Executable File

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80D47D4
sub_80D47D4: @ 80D47D4
push {lr}
bl sub_80A0934
bl AddMapNamePopUpWindowTask
movs r0, 0x1
pop {r1}
bx r1
thumb_func_end sub_80D47D4
thumb_func_start AddMapNamePopUpWindowTask
AddMapNamePopUpWindowTask: @ 80D47E4
push {r4,lr}
movs r0, 0x80
lsls r0, 7
bl FlagGet
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080D486C
ldr r4, =Task_MapNamePopUpWindow
adds r0, r4, 0
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
bne _080D4844
adds r0, r4, 0
movs r1, 0x5A
bl CreateTask
ldr r4, =gUnknown_02039DD4
strb r0, [r4]
movs r0, 0x12
movs r1, 0x28
bl SetGpuReg
ldr r2, =gTasks
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r1, 0x6
strh r1, [r0, 0x8]
ldrb r1, [r4]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
movs r1, 0x28
strh r1, [r0, 0xC]
b _080D486C
.pool
_080D4844:
ldr r3, =gTasks
ldr r2, =gUnknown_02039DD4
ldrb r0, [r2]
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r3
movs r4, 0x8
ldrsh r0, [r1, r4]
cmp r0, 0x2
beq _080D485E
movs r0, 0x2
strh r0, [r1, 0x8]
_080D485E:
ldrb r0, [r2]
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r3
movs r0, 0x1
strh r0, [r1, 0xE]
_080D486C:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end AddMapNamePopUpWindowTask
thumb_func_start Task_MapNamePopUpWindow
Task_MapNamePopUpWindow: @ 80D487C
push {r4,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
movs r2, 0x8
ldrsh r1, [r4, r2]
adds r3, r0, 0
cmp r1, 0x6
bhi _080D4966
lsls r0, r1, 2
ldr r1, =_080D48A8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_080D48A8:
.4byte _080D48DE
.4byte _080D4908
.4byte _080D4920
.4byte _080D4966
.4byte _080D494C
.4byte _080D4960
.4byte _080D48C4
_080D48C4:
ldrh r0, [r4, 0x10]
adds r0, 0x1
movs r1, 0
strh r0, [r4, 0x10]
lsls r0, 16
asrs r0, 16
cmp r0, 0x1E
ble _080D4966
strh r1, [r4, 0x8]
strh r1, [r4, 0x10]
bl ShowMapNamePopUpWindow
b _080D4966
_080D48DE:
ldrh r0, [r4, 0xC]
subs r0, 0x2
movs r2, 0
strh r0, [r4, 0xC]
lsls r0, 16
cmp r0, 0
bgt _080D4966
strh r2, [r4, 0xC]
movs r0, 0x1
strh r0, [r4, 0x8]
ldr r0, =gUnknown_02039DD4
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r3
strh r2, [r0, 0xA]
b _080D4966
.pool
_080D4908:
ldrh r0, [r4, 0xA]
adds r0, 0x1
strh r0, [r4, 0xA]
lsls r0, 16
asrs r0, 16
cmp r0, 0x78
ble _080D4966
movs r0, 0
strh r0, [r4, 0xA]
movs r0, 0x2
strh r0, [r4, 0x8]
b _080D4966
_080D4920:
ldrh r0, [r4, 0xC]
adds r0, 0x2
movs r1, 0
strh r0, [r4, 0xC]
lsls r0, 16
asrs r0, 16
cmp r0, 0x27
ble _080D4966
movs r0, 0x28
strh r0, [r4, 0xC]
movs r2, 0xE
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080D4946
movs r0, 0x6
strh r0, [r4, 0x8]
strh r1, [r4, 0x10]
strh r1, [r4, 0xE]
b _080D4966
_080D4946:
movs r0, 0x4
strh r0, [r4, 0x8]
b _080D496E
_080D494C:
bl GetMapNamePopUpWindowId
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
bl sub_819746C
movs r0, 0x5
strh r0, [r4, 0x8]
b _080D4966
_080D4960:
bl HideMapNamePopUpWindow
b _080D496E
_080D4966:
ldrh r1, [r4, 0xC]
movs r0, 0x12
bl SetGpuReg
_080D496E:
pop {r4}
pop {r0}
bx r0
thumb_func_end Task_MapNamePopUpWindow
thumb_func_start HideMapNamePopUpWindow
HideMapNamePopUpWindow: @ 80D4974
push {lr}
ldr r0, =Task_MapNamePopUpWindow
bl FuncIsActiveTask
lsls r0, 24
cmp r0, 0
beq _080D49A4
bl GetMapNamePopUpWindowId
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
bl sub_819746C
bl RemoveMapNamePopUpWindow
movs r0, 0x12
movs r1, 0
bl SetGpuReg_ForcedBlank
ldr r0, =gUnknown_02039DD4
ldrb r0, [r0]
bl DestroyTask
_080D49A4:
pop {r0}
bx r0
.pool
thumb_func_end HideMapNamePopUpWindow
thumb_func_start ShowMapNamePopUpWindow
ShowMapNamePopUpWindow: @ 80D49B0
push {r4,r5,lr}
sub sp, 0x24
bl InBattlePyramid
lsls r0, 24
cmp r0, 0
beq _080D4A08
ldr r0, =gMapHeader
ldrh r1, [r0, 0x12]
movs r0, 0xBD
lsls r0, 1
cmp r1, r0
bne _080D49DC
mov r4, sp
adds r4, 0xF
ldr r0, =gUnknown_0857F544
ldr r1, [r0, 0x1C]
b _080D49F2
.pool
_080D49DC:
mov r4, sp
adds r4, 0xF
ldr r1, =gUnknown_0857F544
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldr r2, =0x00000cb2
adds r0, r2
ldrh r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
_080D49F2:
adds r0, r4, 0
bl StringCopy
b _080D4A18
.pool
_080D4A08:
mov r4, sp
adds r4, 0xF
ldr r0, =gMapHeader
ldrb r1, [r0, 0x14]
adds r0, r4, 0
movs r2, 0
bl GetMapName
_080D4A18:
bl AddMapNamePopUpWindow
bl LoadMapNamePopUpWindowBg
movs r0, 0x7
adds r1, r4, 0
movs r2, 0x50
bl GetStringCenterAlignXOffset
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
add r1, sp, 0xC
movs r5, 0
movs r0, 0xFC
strb r0, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
adds r0, r1, 0
strb r5, [r0, 0x2]
bl GetMapNamePopUpWindowId
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
str r1, [sp]
movs r1, 0xFF
str r1, [sp, 0x4]
str r5, [sp, 0x8]
movs r1, 0x7
add r2, sp, 0xC
adds r3, r4, 0
bl PrintTextOnWindow
bl GetMapNamePopUpWindowId
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
bl CopyWindowToVram
add sp, 0x24
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end ShowMapNamePopUpWindow
thumb_func_start sub_80D4A78
sub_80D4A78: @ 80D4A78
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
ldr r4, [sp, 0x3C]
lsls r0, 24
lsrs r7, r0, 24
lsls r1, 24
lsrs r1, 24
mov r10, r1
lsls r2, 24
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x10]
lsls r4, 24
lsrs r4, 24
str r4, [sp, 0x14]
movs r5, 0
lsls r0, r1, 24
asrs r1, r0, 24
lsrs r3, r2, 24
str r3, [sp, 0xC]
movs r6, 0xFF
lsls r6, 24
adds r6, r2
mov r8, r6
str r0, [sp, 0x18]
subs r4, r1, 0x1
_080D4AB4:
ldr r0, =0x0000021d
adds r1, r5, r0
lsls r1, 16
lsrs r1, 16
lsls r2, r4, 24
lsrs r2, 24
movs r3, 0x1
str r3, [sp]
str r3, [sp, 0x4]
movs r6, 0xE
mov r9, r6
str r6, [sp, 0x8]
adds r0, r7, 0
mov r6, r8
lsrs r3, r6, 24
bl FillBgTilemapBufferRect
adds r4, 0x1
adds r5, 0x1
cmp r5, 0xB
ble _080D4AB4
ldr r1, =0x00000229
movs r0, 0x1
negs r0, r0
add r0, r10
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r5, 0x1
str r5, [sp]
str r5, [sp, 0x4]
mov r2, r9
str r2, [sp, 0x8]
adds r0, r7, 0
mov r2, r8
ldr r3, [sp, 0xC]
bl FillBgTilemapBufferRect
ldr r1, =0x0000022a
ldr r6, [sp, 0x10]
add r6, r10
lsls r6, 24
lsrs r6, 24
str r5, [sp]
str r5, [sp, 0x4]
mov r3, r9
str r3, [sp, 0x8]
adds r0, r7, 0
adds r2, r6, 0
ldr r3, [sp, 0xC]
bl FillBgTilemapBufferRect
ldr r1, =0x0000022b
ldr r4, [sp, 0xC]
adds r4, 0x1
lsls r4, 24
lsrs r4, 24
str r5, [sp]
str r5, [sp, 0x4]
mov r0, r9
str r0, [sp, 0x8]
adds r0, r7, 0
mov r2, r8
adds r3, r4, 0
bl FillBgTilemapBufferRect
movs r1, 0x8B
lsls r1, 2
str r5, [sp]
str r5, [sp, 0x4]
mov r2, r9
str r2, [sp, 0x8]
adds r0, r7, 0
adds r2, r6, 0
adds r3, r4, 0
bl FillBgTilemapBufferRect
ldr r1, =0x0000022d
ldr r4, [sp, 0xC]
adds r4, 0x2
lsls r4, 24
lsrs r4, 24
str r5, [sp]
str r5, [sp, 0x4]
mov r3, r9
str r3, [sp, 0x8]
adds r0, r7, 0
mov r2, r8
adds r3, r4, 0
bl FillBgTilemapBufferRect
ldr r1, =0x0000022e
str r5, [sp]
str r5, [sp, 0x4]
mov r0, r9
str r0, [sp, 0x8]
adds r0, r7, 0
adds r2, r6, 0
adds r3, r4, 0
bl FillBgTilemapBufferRect
movs r5, 0
ldr r1, [sp, 0xC]
ldr r2, [sp, 0x14]
adds r0, r1, r2
lsls r4, r0, 24
movs r6, 0x1
_080D4B8A:
ldr r3, =0x0000022f
adds r1, r5, r3
lsls r1, 16
lsrs r1, 16
subs r0, r5, 0x1
ldr r3, [sp, 0x18]
asrs r2, r3, 24
adds r2, r0
lsls r2, 24
lsrs r2, 24
str r6, [sp]
str r6, [sp, 0x4]
movs r0, 0xE
str r0, [sp, 0x8]
adds r0, r7, 0
lsrs r3, r4, 24
bl FillBgTilemapBufferRect
adds r5, 0x1
cmp r5, 0xB
ble _080D4B8A
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80D4A78
thumb_func_start LoadMapNamePopUpWindowBg
LoadMapNamePopUpWindowBg: @ 80D4BE0
push {r4,r5,lr}
sub sp, 0x8
bl GetMapNamePopUpWindowId
lsls r0, 24
lsrs r5, r0, 24
ldr r0, =gMapHeader
ldrb r1, [r0, 0x14]
cmp r1, 0x57
bls _080D4C0A
cmp r1, 0xC4
bls _080D4C08
adds r0, r1, 0
subs r0, 0x6D
lsls r0, 16
lsrs r1, r0, 16
b _080D4C0A
.pool
_080D4C08:
movs r1, 0
_080D4C0A:
ldr r0, =gUnknown_0857F464
adds r0, r1, r0
ldrb r4, [r0]
adds r0, r5, 0
movs r1, 0
bl GetWindowAttribute
lsls r0, 24
lsrs r0, 24
lsls r1, r4, 4
subs r1, r4
lsls r1, 6
ldr r2, =gMapPopUp_Outline_Table
adds r1, r2
movs r2, 0x80
lsls r2, 3
ldr r3, =0x0000021d
bl LoadBgTiles
ldr r1, =sub_80D4A78
adds r0, r5, 0
bl CallWindowFunction
adds r0, r5, 0
bl PutWindowTilemap
ldr r0, =gMapHeader
ldrb r0, [r0, 0x16]
cmp r0, 0xE
bne _080D4C6C
ldr r0, =gUnknown_0857F444
movs r1, 0xE0
movs r2, 0x20
bl LoadPalette
b _080D4C7A
.pool
_080D4C6C:
lsls r0, r4, 5
ldr r1, =gMapPopUp_Palette_Table
adds r0, r1
movs r1, 0xE0
movs r2, 0x20
bl LoadPalette
_080D4C7A:
lsls r1, r4, 4
subs r1, r4
lsls r1, 6
ldr r0, =gMapPopUp_Table
adds r1, r0
movs r0, 0x50
str r0, [sp]
movs r0, 0x18
str r0, [sp, 0x4]
adds r0, r5, 0
movs r2, 0
movs r3, 0
bl BlitBitmapToWindow
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end LoadMapNamePopUpWindowBg
.align 2, 0 @ Don't pad with nop.