menu dung documentation

This commit is contained in:
DizzyEggg
2025-03-04 13:38:19 +01:00
parent 34f4d6f7a7
commit 9c2e1b2aa4
21 changed files with 561 additions and 1089 deletions

View File

@@ -6,815 +6,6 @@
.text
thumb_func_start sub_8065250
sub_8065250:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC8
add r5, sp, 0x64
adds r0, r5, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r0, 0x6
str r0, [sp, 0x68]
add r0, sp, 0x6C
movs r4, 0
movs r7, 0
movs r1, 0x2
mov r9, r1
mov r1, r9
strh r1, [r0]
strh r1, [r0, 0x2]
add r0, sp, 0x70
movs r1, 0x12
mov r10, r1
mov r1, r10
strh r1, [r0]
adds r0, 0x2
movs r1, 0x10
mov r8, r1
mov r1, r8
strh r1, [r0]
add r0, sp, 0x74
strh r1, [r0]
add r6, sp, 0xC4
str r6, [sp, 0x78]
movs r1, 0x3
str r1, [sp, 0x80]
add r0, sp, 0x94
str r1, [r0, 0x4]
add r0, sp, 0xAC
str r1, [r0, 0x4]
add r0, sp, 0x4
adds r1, r5, 0
movs r2, 0x60
bl memcpy
movs r0, 0x1
strb r0, [r6]
strb r4, [r6, 0x1]
strb r4, [r6, 0x3]
ldr r4, _080653D0
ldr r0, _080653D4
ldr r0, [r0]
strh r0, [r4, 0x18]
ldr r1, _080653D8
ldr r0, [r1]
movs r1, 0xCB
lsls r1, 3
adds r0, r1
ldrb r0, [r0]
movs r5, 0x5
cmp r0, 0
beq _080652D2
movs r5, 0x6
_080652D2:
strh r5, [r4, 0x1A]
strh r5, [r4, 0x1C]
strh r7, [r4, 0x1E]
strh r7, [r4, 0x20]
strh r7, [r4, 0x4]
mov r0, r8
strh r0, [r4, 0x6]
strh r7, [r4, 0xC]
strh r7, [r4, 0xE]
strh r7, [r4, 0x14]
str r7, [r4]
adds r0, r4, 0
adds r0, 0x28
bl sub_801317C
add r0, sp, 0x4
mov r1, r10
strh r1, [r0, 0xC]
adds r0, r5, 0
movs r1, 0xC
bl sub_80095E4
add r2, sp, 0x4
adds r1, r2, 0
adds r0, 0x2
strh r0, [r1, 0x10]
strh r0, [r2, 0xE]
movs r0, 0xA
strb r0, [r6, 0x2]
adds r0, r1, 0
mov r1, r9
strh r1, [r0, 0x8]
movs r1, 0x1
bl DungeonShowWindows
adds r0, r4, 0
movs r1, 0
bl sub_80137B0
movs r0, 0
bl sub_80073B8
movs r5, 0
ldr r0, _080653DC
ldr r2, [r0]
str r5, [sp]
movs r0, 0x10
movs r1, 0
movs r3, 0
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653E0
ldr r2, [r0]
str r7, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0x1
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653E4
ldr r2, [r0]
str r7, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0x2
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653E8
ldr r2, [r0]
str r7, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
movs r5, 0x4
adds r0, r4, 0
movs r1, 0x3
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653EC
ldr r2, [r0]
str r7, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, _080653D8
ldr r0, [r1]
movs r1, 0xCB
lsls r1, 3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _0806540E
bl IsBossFight
lsls r0, 24
cmp r0, 0
bne _080653F4
movs r5, 0x5
adds r0, r4, 0
movs r1, 0x4
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _080653F0
ldr r2, [r0]
str r7, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
b _0806540E
.align 2, 0
_080653D0: .4byte gDungeonMenu
_080653D4: .4byte gUnknown_202F2E0
_080653D8: .4byte gDungeon
_080653DC: .4byte gUnknown_80FE8F8
_080653E0: .4byte gUnknown_80FE9CC
_080653E4: .4byte gUnknown_80FE9E8
_080653E8: .4byte gUnknown_80FE9F8
_080653EC: .4byte gUnknown_80FEA10
_080653F0: .4byte gUnknown_80FEA28
_080653F4:
movs r5, 0x5
adds r0, r4, 0
movs r1, 0x4
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _08065440
ldr r2, [r0]
str r7, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
_0806540E:
ldr r0, _08065444
adds r1, r5, 0
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r0, _08065448
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
movs r0, 0
bl sub_80073E0
add sp, 0xC8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08065440: .4byte gUnknown_80FEA44
_08065444: .4byte gDungeonMenu
_08065448: .4byte gUnknown_80FEA50
thumb_func_end sub_8065250
thumb_func_start sub_806544C
sub_806544C:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC8
add r0, sp, 0x64
mov r10, r0
movs r1, 0
movs r2, 0x60
bl memset
movs r0, 0x6
str r0, [sp, 0x68]
add r0, sp, 0x6C
movs r4, 0
movs r5, 0
movs r1, 0x2
mov r9, r1
mov r2, r9
strh r2, [r0]
strh r2, [r0, 0x2]
add r0, sp, 0x70
movs r7, 0x12
strh r7, [r0]
adds r0, 0x2
movs r6, 0x10
strh r6, [r0]
add r0, sp, 0x74
strh r6, [r0]
add r0, sp, 0xC4
mov r8, r0
str r0, [sp, 0x78]
movs r1, 0x3
str r1, [sp, 0x80]
add r0, sp, 0x94
str r1, [r0, 0x4]
add r0, sp, 0xAC
str r1, [r0, 0x4]
add r0, sp, 0x4
mov r1, r10
movs r2, 0x60
bl memcpy
movs r0, 0x1
mov r1, r8
strb r0, [r1]
strb r4, [r1, 0x1]
strb r4, [r1, 0x3]
ldr r4, _08065568
strh r5, [r4, 0x18]
mov r2, r9
strh r2, [r4, 0x1A]
strh r2, [r4, 0x1C]
strh r5, [r4, 0x1E]
strh r5, [r4, 0x20]
strh r5, [r4, 0x4]
strh r6, [r4, 0x6]
strh r5, [r4, 0xC]
strh r5, [r4, 0xE]
strh r5, [r4, 0x14]
str r5, [r4]
adds r0, r4, 0
adds r0, 0x28
bl sub_801317C
add r0, sp, 0x4
strh r7, [r0, 0xC]
movs r0, 0x2
movs r1, 0xC
bl sub_80095E4
add r2, sp, 0x4
adds r1, r2, 0
adds r0, 0x2
strh r0, [r1, 0x10]
strh r0, [r2, 0xE]
movs r0, 0xA
mov r1, r8
strb r0, [r1, 0x2]
adds r0, r2, 0
mov r2, r9
strh r2, [r0, 0x8]
movs r1, 0x1
bl DungeonShowWindows
adds r0, r4, 0
movs r1, 0
bl sub_80137B0
movs r0, 0
bl sub_80073B8
ldr r0, _0806556C
ldr r2, [r0]
str r5, [sp]
movs r0, 0x10
movs r1, 0
movs r3, 0
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0
bl GetMenuEntryYCoord
adds r1, r0, 0
ldr r6, _08065570
movs r2, 0xAC
lsls r2, 1
adds r0, r6, r2
ldr r2, [r0]
str r5, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
adds r0, r4, 0
movs r1, 0x1
bl GetMenuEntryYCoord
adds r1, r0, 0
movs r2, 0xB8
lsls r2, 1
adds r0, r6, r2
ldr r2, [r0]
str r5, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
movs r0, 0
bl sub_80073E0
add sp, 0xC8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08065568: .4byte gDungeonMenu
_0806556C: .4byte gUnknown_80FE8F4
_08065570: .4byte gUnknown_80F7C50
thumb_func_end sub_806544C
thumb_func_start sub_8065574
sub_8065574:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xD4
add r0, sp, 0x10
mov r10, r0
add r7, sp, 0x70
adds r0, r7, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r0, 0x6
str r0, [sp, 0x74]
add r0, sp, 0x78
movs r4, 0
movs r6, 0
movs r1, 0x2
strh r1, [r0]
strh r1, [r0, 0x2]
add r0, sp, 0x7C
movs r1, 0xC
strh r1, [r0]
adds r0, 0x2
movs r1, 0x10
mov r9, r1
mov r1, r9
strh r1, [r0]
add r0, sp, 0x80
strh r1, [r0]
add r0, sp, 0x84
add r1, sp, 0xD0
mov r8, r1
str r1, [r0]
add r0, sp, 0x88
movs r5, 0x3
str r5, [r0, 0x4]
add r0, sp, 0xA0
str r5, [r0, 0x4]
add r0, sp, 0xB8
str r5, [r0, 0x4]
mov r0, r10
adds r1, r7, 0
movs r2, 0x60
bl memcpy
movs r0, 0x1
mov r1, r8
strb r0, [r1]
strb r4, [r1, 0x1]
strb r4, [r1, 0x3]
ldr r4, _080656AC
strh r6, [r4, 0x18]
strh r5, [r4, 0x1A]
strh r5, [r4, 0x1C]
strh r6, [r4, 0x1E]
strh r6, [r4, 0x20]
strh r6, [r4, 0x4]
mov r0, r9
strh r0, [r4, 0x6]
strh r6, [r4, 0xC]
strh r6, [r4, 0xE]
strh r6, [r4, 0x14]
str r6, [r4]
adds r0, r4, 0
adds r0, 0x28
bl sub_801317C
movs r0, 0xC
mov r1, r10
strh r0, [r1, 0xC]
movs r0, 0x3
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
mov r1, r10
strh r0, [r1, 0x10]
strh r0, [r1, 0xE]
movs r0, 0xA
mov r1, r8
strb r0, [r1, 0x2]
movs r1, 0x2
mov r0, r10
strh r1, [r0, 0x8]
movs r1, 0x1
bl DungeonShowWindows
adds r0, r4, 0
movs r1, 0
bl sub_80137B0
adds r0, r4, 0
movs r1, 0
bl GetMenuEntryYCoord
str r0, [sp, 0x4]
adds r0, r4, 0
movs r1, 0x1
bl GetMenuEntryYCoord
str r0, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x2
bl GetMenuEntryYCoord
str r0, [sp, 0xC]
movs r0, 0
bl sub_80073B8
ldr r0, _080656B0
ldr r2, [r0]
str r6, [sp]
movs r0, 0x10
movs r1, 0
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0x4]
ldr r0, _080656B4
ldr r2, [r0]
str r6, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0x8]
ldr r0, _080656B8
ldr r2, [r0]
str r6, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0xC]
ldr r0, _080656BC
ldr r2, [r0]
str r6, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
movs r0, 0
bl sub_80073E0
add sp, 0xD4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080656AC: .4byte gDungeonMenu
_080656B0: .4byte gGameOptionsTextPtr
_080656B4: .4byte gOptionsDungeonTextPtr
_080656B8: .4byte gOptionsOthersTextPtr
_080656BC: .4byte gUnknown_80FE748
thumb_func_end sub_8065574
thumb_func_start sub_80656C0
sub_80656C0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xDC
add r0, sp, 0x18
mov r9, r0
add r7, sp, 0x78
adds r0, r7, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r0, 0x6
str r0, [sp, 0x7C]
add r0, sp, 0x80
movs r5, 0
movs r1, 0x2
mov r10, r1
mov r2, r10
strh r2, [r0]
strh r2, [r0, 0x2]
add r1, sp, 0x84
movs r0, 0x12
strh r0, [r1]
mov r0, sp
adds r0, 0x86
movs r3, 0x10
mov r8, r3
mov r4, r8
strh r4, [r0]
add r0, sp, 0x88
strh r4, [r0]
add r0, sp, 0x8C
add r6, sp, 0xD8
str r6, [r0]
add r0, sp, 0x90
movs r1, 0x3
str r1, [r0, 0x4]
add r0, sp, 0xA8
str r1, [r0, 0x4]
add r0, sp, 0xC0
str r1, [r0, 0x4]
mov r0, r9
adds r1, r7, 0
movs r2, 0x60
bl memcpy
adds r1, r7, 0
ldr r0, _0806583C
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
movs r0, 0x1
strb r0, [r6]
movs r0, 0
strb r0, [r6, 0x1]
strb r0, [r6, 0x3]
ldr r4, _08065840
movs r0, 0x5
strh r0, [r4, 0x1A]
strh r0, [r4, 0x1C]
strh r5, [r4, 0x1E]
strh r5, [r4, 0x20]
strh r5, [r4, 0x4]
mov r1, r8
strh r1, [r4, 0x6]
strh r5, [r4, 0xC]
strh r5, [r4, 0xE]
strh r5, [r4, 0x14]
str r5, [r4]
adds r0, r4, 0
adds r0, 0x28
bl sub_801317C
movs r0, 0x18
mov r2, r9
strh r0, [r2, 0xC]
movs r0, 0x5
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
mov r3, r9
strh r0, [r3, 0x10]
strh r0, [r3, 0xE]
movs r0, 0xA
strb r0, [r6, 0x2]
mov r0, r10
strh r0, [r3, 0x8]
mov r0, r9
movs r1, 0x1
bl DungeonShowWindows
adds r0, r4, 0
movs r1, 0
bl sub_80137B0
adds r0, r4, 0
movs r1, 0
bl GetMenuEntryYCoord
str r0, [sp, 0x4]
adds r0, r4, 0
movs r1, 0x1
bl GetMenuEntryYCoord
str r0, [sp, 0x8]
adds r0, r4, 0
movs r1, 0x2
bl GetMenuEntryYCoord
str r0, [sp, 0xC]
adds r0, r4, 0
movs r1, 0x3
bl GetMenuEntryYCoord
str r0, [sp, 0x10]
adds r0, r4, 0
movs r1, 0x4
bl GetMenuEntryYCoord
str r0, [sp, 0x14]
movs r0, 0
bl sub_80073B8
ldr r0, _08065844
ldr r2, [r0]
str r5, [sp]
movs r0, 0x10
movs r1, 0
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0x4]
ldr r0, _08065848
ldr r2, [r0]
str r5, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0x8]
ldr r0, _0806584C
ldr r2, [r0]
str r5, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0xC]
ldr r0, _08065850
ldr r2, [r0]
str r5, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0x10]
ldr r0, _08065854
ldr r2, [r0]
str r5, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r1, [sp, 0x14]
ldr r0, _08065858
ldr r2, [r0]
str r5, [sp]
movs r0, 0x8
movs r3, 0
bl PrintFormattedStringOnWindow
ldr r0, _0806585C
ldrb r0, [r0]
adds r4, r7, 0
cmp r0, 0
beq _08065860
ldr r2, [sp, 0x4]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x88
movs r3, 0x15
bl sub_80078A4
b _08065872
.align 2, 0
_0806583C: .4byte gUnknown_8106CE8
_08065840: .4byte gDungeonMenu
_08065844: .4byte gOptionsDungeonTextPtr
_08065848: .4byte gUnknown_80FE764
_0806584C: .4byte gUnknown_80FE788
_08065850: .4byte gUnknown_80FE7A8
_08065854: .4byte gUnknown_80FE7C0
_08065858: .4byte gUnknown_80FE7E4
_0806585C: .4byte gUnknown_202F2E8
_08065860:
ldr r2, [sp, 0x4]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x50
movs r3, 0x16
bl sub_80078A4
_08065872:
ldr r0, _08065890
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _08065894
ldr r2, [sp, 0x8]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x88
movs r3, 0x16
bl sub_80078A4
b _080658A6
.align 2, 0
_08065890: .4byte gUnknown_202F2E8
_08065894:
ldr r2, [sp, 0x8]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x50
movs r3, 0x12
bl sub_80078A4
_080658A6:
ldr r0, _080658C4
ldrb r0, [r0, 0x2]
cmp r0, 0
beq _080658C8
ldr r2, [sp, 0xC]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x88
movs r3, 0x10
bl sub_80078A4
b _080658DA
.align 2, 0
_080658C4: .4byte gUnknown_202F2E8
_080658C8:
ldr r2, [sp, 0xC]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x50
movs r3, 0xC
bl sub_80078A4
_080658DA:
ldr r0, _080658F8
ldrb r0, [r0, 0x3]
cmp r0, 0
beq _080658FC
ldr r2, [sp, 0x10]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x88
movs r3, 0xC
bl sub_80078A4
b _0806590E
.align 2, 0
_080658F8: .4byte gUnknown_202F2E8
_080658FC:
ldr r2, [sp, 0x10]
adds r2, 0xA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0x50
movs r3, 0x10
bl sub_80078A4
_0806590E:
ldr r0, _08065944
ldrb r1, [r0, 0x4]
lsls r0, r1, 2
adds r1, r0, r1
lsls r1, 3
adds r1, 0x50
ldr r2, [sp, 0x14]
adds r2, 0xA
adds r0, r4, r0
ldr r3, [r0]
movs r0, 0x7
str r0, [sp]
movs r0, 0
bl sub_80078A4
movs r0, 0
bl sub_80073E0
add sp, 0xDC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08065944: .4byte gUnknown_202F2E8
thumb_func_end sub_80656C0
thumb_func_start sub_8065948
sub_8065948:
push {r4-r7,lr}
@@ -947,7 +138,7 @@ _08065A0A:
movs r0, 0x7
str r0, [sp]
movs r0, 0
bl sub_80078A4
bl AddDoubleUnderScoreHighlight
movs r0, 0
bl sub_80073E0
add sp, 0xCC

View File

@@ -2,12 +2,6 @@
.align 2,0
.global gUnknown_8106CE8
gUnknown_8106CE8: @ 8106CE8
.byte 0x10, 0x00, 0x00, 0x00
.byte 0x19, 0x00, 0x00, 0x00
.byte 0x1b, 0x00, 0x00, 0x00
.global gUnknown_8106CF4
gUnknown_8106CF4: @ 8106CF4
.byte 0x13, 0x00, 0x00, 0x00

View File

@@ -4,8 +4,8 @@
// size: 0x48
typedef struct Window
{
s16 unk0;
s16 unk2;
s16 x;
s16 y;
s16 unk4;
s16 unk6;
s16 unk8;

View File

@@ -66,12 +66,12 @@ void SetCharacterMask(int a0);
void ShowWindows(const WindowTemplates *windows, bool8 a1, bool8 a2);
void RestoreUnkTextStruct_8006518(WindowTemplates *unkData);
u32 sub_8006544(u32 index);
void sub_8007334(s32 a0);
void sub_8007334(s32 windowId);
void sub_80073B8(s32 a0);
void sub_80073E0(s32 a0);
u32 xxx_call_draw_char(s32 x, s32 y, u32 a2, u32 color, u32 a4);
void sub_80078A4(u32 a0, s32 x, s32 y, s32 a3, u32 color);
void sub_800792C(u32 a0, s32 x, s32 y, s32 a3, u32 color);
void AddDoubleUnderScoreHighlight(u32 windowId, s32 x, s32 y, s32 width, u32 color);
void AddUnderScoreHighlight(u32 windowId, s32 x, s32 y, s32 width, u32 color);
void sub_8007A78(u32 a0, s32 x, s32 y, s32 a3, u32 color);
void sub_8007B7C(u32 a0, s32 x, s32 y, s32 a3, u32 color);
void sub_8007E20(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, u32 *a5, u32 a6);

View File

@@ -640,34 +640,34 @@ bool8 sub_8015748(void)
void sub_80157D8(void)
{
Window *txtPtr = &gWindows[1];
Window *window = &gWindows[1];
// Note: for cases 4 and 5, the code is identical except for different position structs.
if (gUnknown_203B1FC->unk0 == 4) {
s32 x, y;
x = gUnknown_80DAFC0[gUnknown_203B1FC->unk1C].x + (txtPtr->unk0 * 8);
x = gUnknown_80DAFC0[gUnknown_203B1FC->unk1C].x + (window->x * 8);
SpriteSetX((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, x);
y = gUnknown_80DAFC0[gUnknown_203B1FC->unk1C].y + (txtPtr->unk2 * 8) + 5;
y = gUnknown_80DAFC0[gUnknown_203B1FC->unk1C].y + (window->y * 8) + 5;
SpriteSetY((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, y);
}
else if (gUnknown_203B1FC->unk0 == 5) {
s32 x, y;
x = gUnknown_80DB098[gUnknown_203B1FC->unk1C].x + (txtPtr->unk0 * 8);
x = gUnknown_80DB098[gUnknown_203B1FC->unk1C].x + (window->x * 8);
SpriteSetX((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, x);
y = gUnknown_80DB098[gUnknown_203B1FC->unk1C].y + (txtPtr->unk2 * 8) + 5;
y = gUnknown_80DB098[gUnknown_203B1FC->unk1C].y + (window->y * 8) + 5;
SpriteSetY((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, y);
}
else {
s32 x, y;
x = gUnknown_203B1FC->unk1E[gUnknown_203B1FC->unk1C] + (gUnknown_203B1FC->unk8A[gUnknown_203B1FC->unk1C] / 2) + 30 + (txtPtr->unk0 * 8);
x = gUnknown_203B1FC->unk1E[gUnknown_203B1FC->unk1C] + (gUnknown_203B1FC->unk8A[gUnknown_203B1FC->unk1C] / 2) + 30 + (window->x * 8);
SpriteSetX((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, (u16) x);
y = (txtPtr->unk2 * 8) + 34;
y = (window->y * 8) + 34;
SpriteSetY((SpriteOAM *) &gUnknown_203B1FC->sprite1Attribs, y);
}
}
@@ -675,7 +675,7 @@ void sub_80157D8(void)
void sub_80158BC(void)
{
s32 x, y;
Window *txtPtr = &gWindows[0];
Window *window = &gWindows[0];
u32 var;
switch (sub_8012AE8()) {
@@ -702,8 +702,8 @@ void sub_80158BC(void)
gUnknown_203B1FC->unk17 = 8;
}
x = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].x + (txtPtr->unk0 * 8) - 5;
y = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].y + (txtPtr->unk2 * 8) + 1;
x = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].x + (window->x * 8) - 5;
y = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].y + (window->y * 8) + 1;
SpriteSetX((SpriteOAM *) &gUnknown_203B1FC->sprite2Attribs, x);
SpriteSetY((SpriteOAM *) &gUnknown_203B1FC->sprite2Attribs, y);
}
@@ -769,8 +769,8 @@ void sub_8015A08(u32 unused)
}
}
sub_800792C(0, 0, 0, 0xE0, 0xE);
sub_800792C(0, 0, 0x47, 0xE0, 0xE);
AddUnderScoreHighlight(0, 0, 0, 0xE0, 0xE);
AddUnderScoreHighlight(0, 0, 0x47, 0xE0, 0xE);
sub_8007A78(0, 0, 0, 0x48, 0xE);
sub_8007A78(0, 0xDF, 0, 0x48, 0xE);
sub_80073E0(0);
@@ -783,14 +783,14 @@ void sub_8015C1C(void)
CallPrepareTextbox_8008C54(1);
sub_80073B8(1);
if (gUnknown_203B1FC->unk4 != 0) {
sub_800792C(1, 0, 0, 0xE0, 0xE);
sub_800792C(1, 0, 0x37, 0xE0, 0xE);
AddUnderScoreHighlight(1, 0, 0, 0xE0, 0xE);
AddUnderScoreHighlight(1, 0, 0x37, 0xE0, 0xE);
sub_8007A78(1, 0, 0, 0x38, 0xE);
sub_8007A78(1, 0xDF, 0, 0x38, 0xE);
}
else {
sub_800792C(1, 0, 0, 0xB0, 0xE);
sub_800792C(1, 0, 0x27, 0xB0, 0xE);
AddUnderScoreHighlight(1, 0, 0, 0xB0, 0xE);
AddUnderScoreHighlight(1, 0, 0x27, 0xB0, 0xE);
sub_8007A78(1, 0, 0, 0x28, 0xE);
sub_8007A78(1, 0xAF, 0, 0x28, 0xE);
}
@@ -827,7 +827,7 @@ void sub_8015C1C(void)
case 1:
case 2:
case 3:
sub_80078A4(1, 38, 33, sub_8016028(), 4);
AddDoubleUnderScoreHighlight(1, 38, 33, sub_8016028(), 4);
if (sub_8015FEC(gUnknown_203B1FC->unkF8, gUnknown_203B1FC->unk1B) > sub_8016028()) {
sprintfStatic(text, _("{COLOR RED}%s{RESET}"), gUnknown_203B1FC->unkF8);
}
@@ -850,7 +850,7 @@ void sub_8015E10(u8 *a0, s32 a1, s32 _a2)
s32 a2 = (s16) _a2;
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80DAFC0); i++) {
sub_80078A4(a1, gUnknown_80DAFC0[i].x, gUnknown_80DAFC0[i].y + 11 + a2, 11, 5);
AddDoubleUnderScoreHighlight(a1, gUnknown_80DAFC0[i].x, gUnknown_80DAFC0[i].y + 11 + a2, 11, 5);
}
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80DAFC0) && a0[i] != 0; i++) {
@@ -876,7 +876,7 @@ void sub_8015EB4(u8 *a0, s32 a1, s32 _a2)
s32 a2 = (s16) _a2;
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80DB098); i++) {
sub_80078A4(a1, gUnknown_80DB098[i].x, gUnknown_80DB098[i].y + 11 + a2, 12, 5);
AddDoubleUnderScoreHighlight(a1, gUnknown_80DB098[i].x, gUnknown_80DB098[i].y + 11 + a2, 12, 5);
}
for (i = 0; i < ARRAY_COUNT_INT(gUnknown_80DB098) && a0[i] != 0; i++) {

View File

@@ -320,7 +320,7 @@ void sub_801F280(bool8 param_1)
linkChain = MoveFlagLinkChain(move);
x = !linkChain ? 0x8 : 0xD;
if (!linkChain && i != 0) {
sub_800792C(gUnknown_203B270->unk50,0xc,y - 2,0x78,7);
AddUnderScoreHighlight(gUnknown_203B270->unk50,0xc,y - 2,0x78,7);
}
PrintFormattedStringOnWindow(x,y,gUnknown_80DC2A0,gUnknown_203B270->unk50,0); // {ARG_MOVE_ITEM_0}
}

View File

@@ -170,7 +170,7 @@ void DrawSOSPasswordScreen(void)
rowIndex = index % 0x12;
x = rowIndex * 0xb + 6;
sub_8012C60(x,y,buffer[index],color,gUnknown_203B334->unk10); // Draw character
sub_80078A4(gUnknown_203B334->unk10,x,y + 0xA,10,COLOR_CYAN); // Draw underscore beneath character
AddDoubleUnderScoreHighlight(gUnknown_203B334->unk10,x,y + 0xA,10,COLOR_CYAN); // Draw underscore beneath character
}
sub_80073E0(gUnknown_203B334->unk10);
}

View File

@@ -39,7 +39,7 @@ void sub_8068310(s32 size, u16 **param_2)
void sub_8068344(void)
{
if ((gDungeonFramesCounter & 8) != 0) {
Window *ptr = &gWindows[0];
Window *window = &gWindows[0];
SpriteOAM sprite = {0};
SpriteSetAffine1(&sprite, 0);
@@ -53,8 +53,8 @@ void sub_8068344(void)
SpriteSetTileNum(&sprite, 0x3F0);
SpriteSetPriority(&sprite, 0);
SpriteSetPalNum(&sprite, 15);
SpriteSetY(&sprite, (ptr->unk2 * 8) + 0x8);
SpriteSetX(&sprite, (ptr->unk0 * 8) + 0x40);
SpriteSetY(&sprite, (window->y * 8) + 0x8);
SpriteSetX(&sprite, (window->x * 8) + 0x40);
AddSprite(&sprite,0x100,NULL,NULL);
}
}
@@ -63,7 +63,7 @@ void sub_8068344(void)
void sub_80684C4(void)
{
if ((gDungeonFramesCounter & 8) != 0) {
Window *ptr = &gWindows[0];
Window *window = &gWindows[0];
SpriteOAM sprite = {0};
SpriteSetAffine1(&sprite, 0);
@@ -77,8 +77,8 @@ void sub_80684C4(void)
SpriteSetTileNum(&sprite, 0x3F0);
SpriteSetPriority(&sprite, 0);
SpriteSetPalNum(&sprite, 15);
SpriteSetY(&sprite, (ptr->unk2 * 8) + 0x70);
SpriteSetX(&sprite, (ptr->unk0 * 8) + 0x40);
SpriteSetY(&sprite, (window->y * 8) + 0x70);
SpriteSetX(&sprite, (window->x * 8) + 0x40);
AddSprite(&sprite,0x100,NULL,NULL);
}
}

View File

@@ -1295,8 +1295,8 @@ void sub_806806C(PokemonStruct1 *a0)
sub_808FF20(&unkStruct, a0, gDungeon->unk644.unk16);
CreatePokemonInfoTabScreen(spF8[r7], r7, &unkStruct, &var_C8, 0);
gDungeonMenu.unkC = (gWindows[0].unk0 + 15) * 8;
gDungeonMenu.unkE = ((gWindows[0].unk2 + 1) * 8) - 2;
gDungeonMenu.unkC = (gWindows[0].x + 15) * 8;
gDungeonMenu.unkE = ((gWindows[0].y + 1) * 8) - 2;
while (1) {
s32 r5;

View File

@@ -448,8 +448,8 @@ static void PrintOnDungeonItemsMenu(s32 a0, Entity *a1, bool8 showWhichWindow, b
DungeonShowWindows(windows, 1);
txtStrPtr = &gWindows[0];
gDungeonMenu.unkC = (txtStrPtr->unk0 + 0x10) * 8;
gDungeonMenu.unkE = ((txtStrPtr->unk2 + 1) * 8) - 2;
gDungeonMenu.unkC = (txtStrPtr->x + 0x10) * 8;
gDungeonMenu.unkE = ((txtStrPtr->y + 1) * 8) - 2;
sub_80137B0(&gDungeonMenu, 0x70);
sub_80073B8(0);
x = ((a0 - r10) * 8) + 0xC;

View File

@@ -472,8 +472,8 @@ static void ShowMovesMenuWindows(Entity *entity, EntityInfo *entInfo, u8 a2, Win
windows->id[2] = windowNew;
DungeonShowWindows(windows, TRUE);
sub_80137B0(&gDungeonMenu, 0);
gDungeonMenu.unkC = (gWindows[0].unk0 + 16) * 8;
gDungeonMenu.unkE = ((gWindows[0].unk2 + 1) * 8) - 2;
gDungeonMenu.unkC = (gWindows[0].x + 16) * 8;
gDungeonMenu.unkE = ((gWindows[0].y + 1) * 8) - 2;
SetMessageArgument_2(gFormatBuffer_Monsters[0], entInfo, 0);
for (i = 0; i < MAX_MON_MOVES; i++) {
Move *move = &entInfo->moves.moves[i];
@@ -525,7 +525,7 @@ static void PrintMoveNamesOnWindow(s32 count, Entity *entity, Move *moves, s32 w
else {
x = 8;
if (i != 0) {
sub_80078A4(windowId, 12, y - 2, 120, 7);
AddDoubleUnderScoreHighlight(windowId, 12, y - 2, 120, 7);
}
}
PrintFormattedStringOnWindow(x, y, _("{MOVE_ITEM_0}"), windowId, '\0');
@@ -644,8 +644,8 @@ static void ShowMovesInfoWindow(Move *moves, s32 firstMoveId, s32 movesCount)
gDungeonMenu.unk1E = currId;
gDungeonMenu.unk20 = count;
gDungeonMenu.unkC = (gWindows[0].unk0 + 23) * 8;
gDungeonMenu.unkE = ((gWindows[0].unk2 + 1) * 8) - 2;
gDungeonMenu.unkC = (gWindows[0].x + 23) * 8;
gDungeonMenu.unkE = ((gWindows[0].y + 1) * 8) - 2;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;

View File

@@ -44,8 +44,26 @@ extern const u8 *const gUnknown_80FEBF8;
extern const u8 *const gUnknown_80FEC28;
extern const u8 *const gUnknown_80FDE6C;
extern const u8 *const gUnknown_80FDEB8;
extern const u8 *const gUnknown_80FEA44;
extern const u8 *const gUnknown_80FEA50;
extern const u8 *const gUnknown_80FEA28;
extern const u8 *const gUnknown_80FEA10;
extern const u8 *const gUnknown_80FE9F8;
extern const u8 *const gUnknown_80FE9E8;
extern const u8 *const gUnknown_80FE9CC;
extern const u8 *const gUnknown_80FE8F8;
extern const u8 *const gUnknown_80FE8F4;
extern const u8 *const gGameOptionsTextPtr;
extern const u8 *const gOptionsDungeonTextPtr;
extern const u8 *const gOptionsOthersTextPtr;
extern const u8 *const gUnknown_80FE748;
extern const u8 *const gUnknown_80FE764;
extern const u8 *const gUnknown_80FE7C0;
extern const u8 *const gUnknown_80FE788;
extern const u8 *const gUnknown_80FE7A8;
extern const u8 *const gUnknown_80FE7E4;
void sub_8065250(void);
void PrintOthersMenuOptions(void);
void ShowGameOptionsMenu(void);
void ShowQuickSaveGiveUpMenu(void);
void ShowMissionObjectivesMenu(void);
@@ -55,8 +73,8 @@ bool8 ShowDungeonOptions(void);
bool8 ShowOthersOptions(void);
void TrySetNewGameOptions(bool8 bPressed);
void AskToResetToDefault(void);
void sub_8065574(void);
void sub_80656C0(void);
void PrintGameOptions(void);
void PrintDungeonOptions(void);
void sub_8065948(void);
void sub_8065A8C(s32 optionId);
void sub_8065B3C(s32 optionId);
@@ -64,7 +82,7 @@ bool8 sub_8065BEC(void);
bool8 sub_8065BF0(void);
bool8 AskToQuickSave(void);
bool8 AskToGiveUp(void);
void sub_806544C(void);
void PrintQuickSaveMenuOptions(void);
enum {
OTHERS_GAME_OPTIONS,
@@ -73,6 +91,7 @@ enum {
OTHERS_MISSION_OBJECTIVES,
OTHERS_RECRUITMENT_SEARCH,
OTHERS_HINTS,
OTHERS_COUNT
};
void ShowDungeonOthersMenu(void)
@@ -85,7 +104,7 @@ void ShowDungeonOthersMenu(void)
while (1) {
bool8 bPress = FALSE;
sub_8065250();
PrintOthersMenuOptions();
while (1) {
AddMenuCursorSprite(&gDungeonMenu);
DungeonRunFrameActions(0x24);
@@ -162,7 +181,7 @@ void ShowGameOptionsMenu(void)
while (1) {
bool8 bPress = FALSE;
sub_8065574();
PrintGameOptions();
while (1) {
AddMenuCursorSprite(&gDungeonMenu);
DungeonRunFrameActions(0x24);
@@ -217,7 +236,7 @@ enum {
OPTION_WINDOWS,
};
#define FIRST_OTHERS_OPTION OPTION_WINDOWS
#define DUNGEON_OPTIONS_COUNT OPTION_WINDOWS
bool8 ShowDungeonOptions(void)
{
@@ -229,7 +248,7 @@ bool8 ShowDungeonOptions(void)
bPress = FALSE;
dpadMoved = FALSE;
sub_80656C0();
PrintDungeonOptions();
while (1) {
AddMenuCursorSprite(&gDungeonMenu);
DungeonRunFrameActions(0x24);
@@ -305,13 +324,13 @@ bool8 ShowOthersOptions(void)
if (gRealInputs.repeated & DPAD_LEFT) {
PlayDungeonCursorSE(FALSE);
sub_8065A8C(gDungeonMenu.menuIndex + FIRST_OTHERS_OPTION);
sub_8065A8C(gDungeonMenu.menuIndex + DUNGEON_OPTIONS_COUNT);
dpadMoved = TRUE;
break;
}
if (gRealInputs.repeated & DPAD_RIGHT) {
PlayDungeonCursorSE(FALSE);
sub_8065B3C(gDungeonMenu.menuIndex + FIRST_OTHERS_OPTION);
sub_8065B3C(gDungeonMenu.menuIndex + DUNGEON_OPTIONS_COUNT);
dpadMoved = TRUE;
break;
}
@@ -376,7 +395,7 @@ void ShowQuickSaveGiveUpMenu(void)
while (1) {
bool8 bPress = FALSE;
sub_806544C();
PrintQuickSaveMenuOptions();
while (1) {
AddMenuCursorSprite(&gDungeonMenu);
DungeonRunFrameActions(0x24);
@@ -449,4 +468,275 @@ bool8 AskToGiveUp(void)
return FALSE;
}
void PrintOthersMenuOptions(void)
{
s32 optionsCount, currOptionId;
WindowHeader header;
WindowTemplates windows = {
.id = {
[0] = {
.type = WINDOW_TYPE_WITH_HEADER,
.pos = {2, 2},
.width = 18,
.height = 16,
.unk10 = 16,
.unk12 = 0,
.header = &header,
},
[1] = WINDOW_DUMMY,
[2] = WINDOW_DUMMY,
[3] = WINDOW_DUMMY,
}
};
header.count = 1;
header.currId = 0;
header.f3 = 0;
gDungeonMenu.menuIndex = gUnknown_202F2E0;
optionsCount = (gDungeon->unk644.canRecruit) ? OTHERS_COUNT : OTHERS_COUNT - 1;
gDungeonMenu.unk1A = optionsCount;
gDungeonMenu.unk1C = optionsCount;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 18;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(optionsCount, 12) + 2;
header.width = 10;
windows.id[0].pos.x = 2;
DungeonShowWindows(&windows, TRUE);
sub_80137B0(&gDungeonMenu, 0);
sub_80073B8(0);
currOptionId = 0;
PrintFormattedStringOnWindow(16, 0, gUnknown_80FE8F8, 0, '\0');
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80FE9CC, 0, '\0');
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80FE9E8, 0, '\0');
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80FE9F8, 0, '\0');
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80FEA10, 0, '\0');
if (gDungeon->unk644.canRecruit) {
if (!IsBossFight()) {
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80FEA28, 0, '\0');
}
else {
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80FEA44, 0, '\0');
}
}
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId), gUnknown_80FEA50, 0, '\0');
sub_80073E0(0);
}
struct Struct_80F7C50
{
const u8 *str;
s32 val;
};
// TODO: Fix this table in other file
extern const struct Struct_80F7C50 gUnknown_80F7C50[];
void PrintQuickSaveMenuOptions(void)
{
s32 optionsCount, currOptionId;
WindowHeader header;
WindowTemplates windows = {
.id = {
[0] = {
.type = WINDOW_TYPE_WITH_HEADER,
.pos = {2, 2},
.width = 18,
.height = 16,
.unk10 = 16,
.unk12 = 0,
.header = &header,
},
[1] = WINDOW_DUMMY,
[2] = WINDOW_DUMMY,
[3] = WINDOW_DUMMY,
}
};
header.count = 1;
header.currId = 0;
header.f3 = 0;
gDungeonMenu.menuIndex = 0;
optionsCount = 2;
gDungeonMenu.unk1A = optionsCount;
gDungeonMenu.unk1C = optionsCount;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 18;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(optionsCount, 12) + 2;
header.width = 10;
windows.id[0].pos.x = 2;
DungeonShowWindows(&windows, TRUE);
sub_80137B0(&gDungeonMenu, 0);
sub_80073B8(0);
currOptionId = 0;
PrintFormattedStringOnWindow(16, 0, gUnknown_80FE8F4, 0, '\0');
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80F7C50[43].str, 0, '\0');
PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gDungeonMenu, currOptionId++), gUnknown_80F7C50[46].str, 0, '\0');
sub_80073E0(0);
}
void PrintGameOptions(void)
{
s32 optionsCount;
s32 y[3];
WindowHeader header;
WindowTemplates windows = {
.id = {
[0] = {
.type = WINDOW_TYPE_WITH_HEADER,
.pos = {2, 2},
.width = 12,
.height = 16,
.unk10 = 16,
.unk12 = 0,
.header = &header,
},
[1] = WINDOW_DUMMY,
[2] = WINDOW_DUMMY,
[3] = WINDOW_DUMMY,
}
};
header.count = 1;
header.currId = 0;
header.f3 = 0;
gDungeonMenu.menuIndex = 0;
optionsCount = 3;
gDungeonMenu.unk1A = optionsCount;
gDungeonMenu.unk1C = optionsCount;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 12;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(optionsCount, 12) + 2;
header.width = 10;
windows.id[0].pos.x = 2;
DungeonShowWindows(&windows, TRUE);
sub_80137B0(&gDungeonMenu, 0);
y[0] = GetMenuEntryYCoord(&gDungeonMenu, 0);
y[1] = GetMenuEntryYCoord(&gDungeonMenu, 1);
y[2] = GetMenuEntryYCoord(&gDungeonMenu, 2);
sub_80073B8(0);
PrintFormattedStringOnWindow(16, 0, gGameOptionsTextPtr, 0, '\0');
PrintFormattedStringOnWindow(8, y[0], gOptionsDungeonTextPtr, 0, '\0');
PrintFormattedStringOnWindow(8, y[1], gOptionsOthersTextPtr, 0, '\0');
PrintFormattedStringOnWindow(8, y[2], gUnknown_80FE748, 0, '\0');
sub_80073E0(0);
}
void PrintDungeonOptions(void)
{
s32 y[DUNGEON_OPTIONS_COUNT];
WindowHeader header;
WindowTemplates windows = {
.id = {
[0] = {
.type = WINDOW_TYPE_WITH_HEADER,
.pos = {2, 2},
.width = 18,
.height = 16,
.unk10 = 16,
.unk12 = 0,
.header = &header,
},
[1] = WINDOW_DUMMY,
[2] = WINDOW_DUMMY,
[3] = WINDOW_DUMMY,
}
};
s32 arr[] = {16, 25, 27};
header.count = 1;
header.currId = 0;
header.f3 = 0;
gDungeonMenu.unk1A = DUNGEON_OPTIONS_COUNT;
gDungeonMenu.unk1C = DUNGEON_OPTIONS_COUNT;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 24;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(DUNGEON_OPTIONS_COUNT, 12) + 2;
header.width = 10;
windows.id[0].pos.x = 2;
DungeonShowWindows(&windows, TRUE);
sub_80137B0(&gDungeonMenu, 0);
y[0] = GetMenuEntryYCoord(&gDungeonMenu, 0);
y[1] = GetMenuEntryYCoord(&gDungeonMenu, 1);
y[2] = GetMenuEntryYCoord(&gDungeonMenu, 2);
y[3] = GetMenuEntryYCoord(&gDungeonMenu, 3);
y[4] = GetMenuEntryYCoord(&gDungeonMenu, 4);
sub_80073B8(0);
PrintFormattedStringOnWindow(16, 0, gOptionsDungeonTextPtr, 0, '\0');
PrintFormattedStringOnWindow(8, y[0], gUnknown_80FE764, 0, '\0');
PrintFormattedStringOnWindow(8, y[1], gUnknown_80FE788, 0, '\0');
PrintFormattedStringOnWindow(8, y[2], gUnknown_80FE7A8, 0, '\0');
PrintFormattedStringOnWindow(8, y[3], gUnknown_80FE7C0, 0, '\0');
PrintFormattedStringOnWindow(8, y[4], gUnknown_80FE7E4, 0, '\0');
if (gUnknown_202F2E8.dungeonSpeed != DUNGEON_SPEED_SLOW) {
AddDoubleUnderScoreHighlight(0, 136, y[0] + 10, 21, 7);
}
else {
AddDoubleUnderScoreHighlight(0, 80, y[0] + 10, 22, 7);
}
if (gUnknown_202F2E8.FarOffPals != FAROFFPALS_SELF) {
AddDoubleUnderScoreHighlight(0, 136, y[1] + 10, 22, 7);
}
else {
AddDoubleUnderScoreHighlight(0, 80, y[1] + 10, 18, 7);
}
if (gUnknown_202F2E8.damageTurn) {
AddDoubleUnderScoreHighlight(0, 136, y[2] + 10, 16, 7);
}
else {
AddDoubleUnderScoreHighlight(0, 80, y[2] + 10, 12, 7);
}
if (gUnknown_202F2E8.gridEnable) {
AddDoubleUnderScoreHighlight(0, 136, y[3] + 10, 12, 7);
}
else {
AddDoubleUnderScoreHighlight(0, 80, y[3] + 10, 16, 7);
}
AddDoubleUnderScoreHighlight(0, 80 + (gUnknown_202F2E8.mapOption * 40), y[4] + 10, arr[gUnknown_202F2E8.mapOption], 7);
sub_80073E0(0);
}
//

View File

@@ -810,7 +810,7 @@ void ShowDungeonSummaryOrIQMenu(ActionContainer *a0, bool8 showIq)
bool8 hasIqSkills = FALSE;
bool8 hasStatusProblems = FALSE;
bool8 addCursorSprite = TRUE;
Window *unkTxtStr1Ptr = &gWindows[0];
Window *mainWindow = &gWindows[0];
sTeamWindowHeader.count = totalSubWindows;
sTeamWindowHeader.currId = currSubWindowId;
@@ -821,8 +821,8 @@ void ShowDungeonSummaryOrIQMenu(ActionContainer *a0, bool8 showIq)
CreatePokemonInfoTabScreen(subWindowIds[currSubWindowId], currSubWindowId, &unkMonStruct, &unkInfoTabStruct, 0);
gDungeonMenu.unk1E = currSubWindowId;
gDungeonMenu.unk20 = totalSubWindows;
gDungeonMenu.unkC = (unkTxtStr1Ptr->unk0 + 15) * 8;
gDungeonMenu.unkE = ((unkTxtStr1Ptr->unk2 + 1) * 8) - 2;
gDungeonMenu.unkC = (mainWindow->x + 15) * 8;
gDungeonMenu.unkE = ((mainWindow->y + 1) * 8) - 2;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
@@ -1197,7 +1197,7 @@ void ShowDungeonSummaryOrIQMenu(ActionContainer *a0, bool8 showIq)
static void ShowUpArrowSprite(void)
{
if ((gDungeonFramesCounter & 8) != 0) {
Window *txtStrPtr = &gWindows[0];
Window *window = &gWindows[0];
SpriteOAM sprite = {0};
SpriteSetAffine1(&sprite, 0);
@@ -1211,8 +1211,8 @@ static void ShowUpArrowSprite(void)
SpriteSetTileNum(&sprite, 0x3F0);
SpriteSetPriority(&sprite, 0);
SpriteSetPalNum(&sprite, 15);
SpriteSetY(&sprite, (txtStrPtr->unk2 * 8) + 0x8);
SpriteSetX(&sprite, (txtStrPtr->unk0 * 8) + 0x40);
SpriteSetY(&sprite, (window->y * 8) + 0x8);
SpriteSetX(&sprite, (window->x * 8) + 0x40);
AddSprite(&sprite, 0x100, NULL, NULL);
}
@@ -1222,7 +1222,7 @@ static void ShowUpArrowSprite(void)
static void ShowDownArrowSprite(void)
{
if ((gDungeonFramesCounter & 8) != 0) {
Window *ptr = &gWindows[0];
Window *window = &gWindows[0];
SpriteOAM sprite = {0};
SpriteSetAffine1(&sprite, 0);
@@ -1236,8 +1236,8 @@ static void ShowDownArrowSprite(void)
SpriteSetTileNum(&sprite, 0x3F0);
SpriteSetPriority(&sprite, 0);
SpriteSetPalNum(&sprite, 15);
SpriteSetY(&sprite, (ptr->unk2 * 8) + 0x70);
SpriteSetX(&sprite, (ptr->unk0 * 8) + 0x40);
SpriteSetY(&sprite, (window->y * 8) + 0x70);
SpriteSetX(&sprite, (window->x * 8) + 0x40);
AddSprite(&sprite,0x100,NULL,NULL);
}
}
@@ -1245,7 +1245,7 @@ static void ShowDownArrowSprite(void)
void ShowStatusDescriptionMenuArrow(void)
{
if ((gDungeonFramesCounter & 8) != 0) {
Window *ptr = &gWindows[0];
Window *window = &gWindows[0];
SpriteSetAffine1(&gUnknown_202F268, 0);
SpriteSetAffine2(&gUnknown_202F268, 0);
@@ -1258,7 +1258,7 @@ void ShowStatusDescriptionMenuArrow(void)
SpriteSetTileNum(&gUnknown_202F268, 0x3F0);
SpriteSetPriority(&gUnknown_202F268, 0);
SpriteSetPalNum(&gUnknown_202F268, 15);
SpriteSetY(&gUnknown_202F268, (ptr->unk2 * 8) + 0x60);
SpriteSetY(&gUnknown_202F268, (window->y * 8) + 0x60);
SpriteSetX(&gUnknown_202F268, 0x70);
AddSprite(&gUnknown_202F268,0x100,NULL,NULL);
}
@@ -1616,7 +1616,7 @@ static void PrintMoveNamesOnBottomWindow(Entity *entity)
else {
x = 8;
if (i != 0) {
sub_80078A4(2, 12, y - 2, 120, 7);
AddDoubleUnderScoreHighlight(2, 12, y - 2, 120, 7);
}
}
PrintFormattedStringOnWindow(x, y, _("{MOVE_ITEM_0}"), 2, '\0');

View File

@@ -255,7 +255,7 @@ void xxx_draw_string_80524F0(void)
sp.unk10 = 7;
sub_80073B8(0);
if (strPtr->unk1C054[id] != 0 && strPtr->unk1C066 >= 8) {
sub_80078A4(0, 0, strPtr->unk1C066 - 1, 0xE0, 7);
AddDoubleUnderScoreHighlight(0, 0, strPtr->unk1C066 - 1, 0xE0, 7);
}
while (1) {
@@ -930,7 +930,7 @@ static void PutStringsOnMessageLog(void)
if (msgLogString->unk0) {
if (msgLogString->unk1) {
sub_80078A4(0, 0, y, 0xE0, 7);
AddDoubleUnderScoreHighlight(0, 0, y, 0xE0, 7);
}
PrintStringOnWindow(8, y + 3, msgLogString->str, 0, 0xD);
y += 14;
@@ -978,7 +978,7 @@ static bool8 TryScrollLogUp(s32 a0)
if (msgLogString->unk0) {
sub_80087EC(0, 0, 0, 0xD0, 0x10);
if (msgLogString->unk1) {
sub_80078A4(0, 0, y, 0xE0, 7);
AddDoubleUnderScoreHighlight(0, 0, y, 0xE0, 7);
}
PrintStringOnWindow(8, y + 3, msgLogString->str, 0, 0xD);
}
@@ -1028,7 +1028,7 @@ static bool8 TryScrollLogDown(s32 a0)
if (msgLogString->unk0) {
sub_80087EC(0, 0, y, 0x68, 0x10);
if (msgLogString->unk1) {
sub_80078A4(0, 0, y, 0xE0, 7);
AddDoubleUnderScoreHighlight(0, 0, y, 0xE0, 7);
}
PrintStringOnWindow(8, y + 3, msgLogString->str, 0, 0xD);
}
@@ -1046,7 +1046,7 @@ static bool8 TryScrollLogDown(s32 a0)
static void CreateMessageLogArrow(bool8 upArrow, s32 y)
{
struct Window *unkStr = &gWindows[0];
struct Window *window = &gWindows[0];
if (!(gDungeonFramesCounter & 8)) {
SpriteSetAffine1(&sMessageLogArrowSpriteOAM, 0);
SpriteSetAffine2(&sMessageLogArrowSpriteOAM, 0);
@@ -1055,8 +1055,8 @@ static void CreateMessageLogArrow(bool8 upArrow, s32 y)
SpriteSetBpp(&sMessageLogArrowSpriteOAM, 0);
SpriteSetMatrixNum(&sMessageLogArrowSpriteOAM, (upArrow != FALSE) ? (16) : 0);
SpriteSetPalNum(&sMessageLogArrowSpriteOAM, 15);
SpriteSetY(&sMessageLogArrowSpriteOAM, (unkStr->unk2 * 8) + y);
SpriteSetX(&sMessageLogArrowSpriteOAM, (unkStr->unk0 * 8) + 92);
SpriteSetY(&sMessageLogArrowSpriteOAM, (window->y * 8) + y);
SpriteSetX(&sMessageLogArrowSpriteOAM, (window->x * 8) + 92);
SpriteSetShape(&sMessageLogArrowSpriteOAM, 1);
SpriteSetSize(&sMessageLogArrowSpriteOAM, 0);
SpriteSetPriority(&sMessageLogArrowSpriteOAM, 0);

View File

@@ -654,7 +654,7 @@ u32 sub_80913E0(Item* slot, u32 a2, struct subStruct_203B240 ** a3)
u32 result;
InitPokemonMove(buffer8, move);
sub_80078A4(a2, 4, 82, 200, COLOR_WHITE_2);
AddDoubleUnderScoreHighlight(a2, 4, 82, 200, COLOR_WHITE_2);
PrintFormattedStringOnWindow(4, 84, gPtrTypeText, a2, 0);
moves_data = GetMoveType(buffer8);
typestring = GetUnformattedTypeString(moves_data);

View File

@@ -700,12 +700,12 @@ void sub_8013660(MenuInputStruct *param_1)
void UpdateMenuCursorSpriteCoords(MenuInputStruct *param_1)
{
s32 index;
Window *temp;
Window *window;
index = param_1->unk0;
temp = &gWindows[index];
param_1->unk8.x = temp->unk0 * 8 + param_1->unk4;
param_1->unk8.y = temp->unk2 * 8 + GetMenuEntryYCoord(param_1, param_1->menuIndex);
window = &gWindows[index];
param_1->unk8.x = window->x * 8 + param_1->unk4;
param_1->unk8.y = window->y * 8 + GetMenuEntryYCoord(param_1, param_1->menuIndex);
}
void MoveMenuCursorDown(MenuInputStruct *param_1)
@@ -931,10 +931,10 @@ void sub_8013984(MenuInputStruct *param_1)
{
s32 iVar2;
s32 iVar4;
Window *ptr;
Window *window;
iVar4 = param_1->unk0;
ptr = &gWindows[iVar4];
window = &gWindows[iVar4];
if (param_1->unk1C == 0)
param_1->unk1C++;
@@ -957,7 +957,7 @@ void sub_8013984(MenuInputStruct *param_1)
param_1->unk4 = 0;
if (ptr->unkC == 6)
if (window->unkC == 6)
param_1->firstEntryY = 16;
else
param_1->firstEntryY = 0;
@@ -965,9 +965,9 @@ void sub_8013984(MenuInputStruct *param_1)
if (param_1->unk20 < 2)
param_1->unkC = 0;
else
param_1->unkC = (ptr->unk0 + ptr->unk4 - 2) * 8;
param_1->unkC = (window->x + window->unk4 - 2) * 8;
param_1->unkE = (ptr->unk2 + 1) * 8 - 2;
param_1->unkE = (window->y + 1) * 8 - 2;
}
void sub_8013A54(MenuInputStruct *param_1)
@@ -1078,16 +1078,16 @@ void sub_8013C68(unkStructFor8013AA0 *a0)
}
for (i = 0; i < a0->unk10; i++)
sub_800792C(a0->unk14, a0->unk1C - ((i + 1) * 12) - 1, a0->unk20 + 10, 11, 5);
AddUnderScoreHighlight(a0->unk14, a0->unk1C - ((i + 1) * 12) - 1, a0->unk20 + 10, 11, 5);
}
void sub_8013D10(unkStructFor8013AA0 *a0)
{
s32 x, y;
u8 uVar4;
Window *ptr;
Window *window;
ptr = &gWindows[a0->unk14];
window = &gWindows[a0->unk14];
uVar4 = a0->unk24;
switch (sub_8012AE8()) {
@@ -1105,10 +1105,10 @@ void sub_8013D10(unkStructFor8013AA0 *a0)
a0->unk26 = 8;
}
x = (a0->unk1C - ((a0->unk24 + 1) * 12) + (ptr->unk0 * 8)) - 3;
x = (a0->unk1C - ((a0->unk24 + 1) * 12) + (window->x * 8)) - 3;
SpriteSetX(&a0->unk28, x);
y = a0->unk20 + (ptr->unk2 * 8) - 7;
y = a0->unk20 + (window->y * 8) - 7;
SpriteSetY(&a0->unk28, y);
}
@@ -1152,7 +1152,7 @@ static bool8 sub_8013DD0(unkStructFor8013AA0 *a0)
void sub_8013E54(void)
{
Window *ptr = &gWindows[0];
Window *window = &gWindows[0];
SpriteOAM SStack_18 = {0};
SpriteSetAffine1(&SStack_18, 0);
@@ -1166,7 +1166,7 @@ void sub_8013E54(void)
SpriteSetTileNum(&SStack_18, 0x3F0);
SpriteSetPriority(&SStack_18, 0);
SpriteSetPalNum(&SStack_18, 15);
SpriteSetY(&SStack_18, (ptr->unk2 * 8) + 0x80);
SpriteSetY(&SStack_18, (window->y * 8) + 0x80);
SpriteSetX(&SStack_18, 112);
AddSprite(&SStack_18,0x100,0,0x0);
@@ -1174,7 +1174,7 @@ void sub_8013E54(void)
void sub_8013F84(void)
{
Window *ptr = &gWindows[0];
Window *window = &gWindows[0];
SpriteOAM SStack_18 = {0};
SpriteSetAffine1(&SStack_18, 0);
@@ -1188,7 +1188,7 @@ void sub_8013F84(void)
SpriteSetTileNum(&SStack_18, 0x3F0);
SpriteSetPriority(&SStack_18, 0);
SpriteSetPalNum(&SStack_18, 15);
SpriteSetY(&SStack_18, (ptr->unk2 * 8) + 0x60);
SpriteSetY(&SStack_18, (window->y * 8) + 0x60);
SpriteSetX(&SStack_18, 112);
AddSprite(&SStack_18,0x100,0,0x0);

View File

@@ -1403,7 +1403,7 @@ static void unk_MovePrintData(Move *move, s32 y)
s32 power;
const u8 *text;
sub_80078A4(y, 4, 72, 200, COLOR_WHITE_2);
AddDoubleUnderScoreHighlight(y, 4, 72, 200, COLOR_WHITE_2);
sub_8092D54(gFormatBuffer_Monsters[0], move);
PrintFormattedStringOnWindow(4, 74, gUnknown_810CF00, y, 0);
PrintFormattedStringOnWindow(4, 86, gPtrTypeText, y, 0);

View File

@@ -110,15 +110,15 @@ static void CreateOptionsMenu(void)
switch (sUnknown_203B260->optionsMenu->windowColor) {
case WINDOW_COLOR_BLUE:
length = sub_8008ED0(sBlue);
sub_80078A4(sUnknown_203B260->unk44, (sUnknown_203B260->optionsMenu->windowColor * 40) + 80, y + 10, length, COLOR_WHITE_2);
AddDoubleUnderScoreHighlight(sUnknown_203B260->unk44, (sUnknown_203B260->optionsMenu->windowColor * 40) + 80, y + 10, length, COLOR_WHITE_2);
break;
case WINDOW_COLOR_RED:
length = sub_8008ED0(sRed);
sub_80078A4(sUnknown_203B260->unk44, (sUnknown_203B260->optionsMenu->windowColor * 40) + 80, y + 10, length, COLOR_WHITE_2);
AddDoubleUnderScoreHighlight(sUnknown_203B260->unk44, (sUnknown_203B260->optionsMenu->windowColor * 40) + 80, y + 10, length, COLOR_WHITE_2);
break;
case WINDOW_COLOR_GREEN:
length = sub_8008ED0(sGreen);
sub_80078A4(sUnknown_203B260->unk44, (sUnknown_203B260->optionsMenu->windowColor * 40) + 80, y + 10, length, COLOR_WHITE_2);
AddDoubleUnderScoreHighlight(sUnknown_203B260->unk44, (sUnknown_203B260->optionsMenu->windowColor * 40) + 80, y + 10, length, COLOR_WHITE_2);
break;
}

View File

@@ -260,7 +260,7 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me
gUnknown_202E748.unk0 = 4;
gUnknown_202E748.unk2 = 4;
gUnknown_202E748.unk8 = 0x70;
gUnknown_202E748.unkA = (gWindows[0].unk2 * 8) + 34;
gUnknown_202E748.unkA = (gWindows[0].y * 8) + 34;
gUnknown_202E748.unk10 = 7;
gUnknown_202E748.unk1C = 0;
gUnknown_202E748.unk20 = 0;
@@ -541,7 +541,7 @@ void DrawDialogueBoxString(void)
}
gUnknown_202E748.unk8 = 0x70;
gUnknown_202E748.unkA = (gWindows[0].unk2 * 8) + 34;
gUnknown_202E748.unkA = (gWindows[0].y * 8) + 34;
}
keepLooping = FALSE;
}

View File

@@ -71,7 +71,7 @@ static void sub_8006C44(Window *a0, s32 a1, u16 *a2, u8 a3);
static void sub_8006E94(Window *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4);
static u32 xxx_draw_char(struct Window *a0, s32 x, s32 y, u32 a3, u32 color, u32 a5);
static void nullsub_129(u32 a0, s32 x, s32 y, s32 a3, u32 color);
static void sub_8007958(Window *a0, u32 a1, s32 x, s32 y, s32 a4, u32 color);
static void AddUnderScoreHighlightInternal(Window *windows, u32 windowId, s32 x, s32 y, s32 width, u32 color);
static void sub_8007AA4(struct Window *a0, u32 a1, s32 x, s32 y, s32 a4, u32 color);
static void sub_8007BA8(Window *a0, u32 a1, s32 x, s32 y, s32 a4, s32 color);
static void sub_8007D00(Window *a0, u32 a1, s32 x, s32 y, s32 a4, s32 color);
@@ -333,112 +333,110 @@ u32 sub_8006544(u32 index)
}
// a1 is a VRAM pointer
static void AddWindow(Window *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const WindowTemplate *winTemplate, bool8 a6, u32 a7, DungeonPos *a8, u8 a9)
static void AddWindow(Window *windows, u32 *a1, u32 *a2, u16 *a3, u32 windowId, const WindowTemplate *winTemplate, bool8 a6, u32 a7, DungeonPos *positionModifier, u8 a9)
{
Window *t1;
s32 iVar3;
s32 iVar5;
Window *newWindow;
s32 x, y;
s32 iVar6;
s32 numI;
u32 uVar1;
s32 temp;
s32 i;
s32 j;
s32 i, j;
t1 = &a0[a4];
iVar3 = winTemplate->pos.x + a8->x;
iVar5 = winTemplate->pos.y + a8->y;
t1->unk0 = iVar3;
t1->unk2 = iVar5;
t1->unk4 = winTemplate->width;
t1->unk8 = winTemplate->unk10;
t1->unk6 = winTemplate->height;
t1->unkC = winTemplate->type;
t1->unk10 = a7;
newWindow = &windows[windowId];
x = winTemplate->pos.x + positionModifier->x;
y = winTemplate->pos.y + positionModifier->y;
newWindow->x = x;
newWindow->y = y;
newWindow->unk4 = winTemplate->width;
newWindow->unk8 = winTemplate->unk10;
newWindow->unk6 = winTemplate->height;
newWindow->unkC = winTemplate->type;
newWindow->unk10 = a7;
if (t1->unkC == 6)
t1->unk14 = a7;
if (newWindow->unkC == 6)
newWindow->unk14 = a7;
else
t1->unk14 = a7 + winTemplate->unk12 * t1->unk4;
newWindow->unk14 = a7 + winTemplate->unk12 * newWindow->unk4;
t1->unk18 = &a2[t1->unk10 * 8];
t1->unk1C = &a2[t1->unk14 * 8];
t1->unk24 = winTemplate->unk12;
t1->unk28 = &a1[t1->unk14 * 8];
newWindow->unk18 = &a2[newWindow->unk10 * 8];
newWindow->unk1C = &a2[newWindow->unk14 * 8];
newWindow->unk24 = winTemplate->unk12;
newWindow->unk28 = &a1[newWindow->unk14 * 8];
if (t1->unkC == 6)
t1->unk2C = t1->unk4 * (t1->unk6 + winTemplate->unk12) * 32;
if (newWindow->unkC == 6)
newWindow->unk2C = newWindow->unk4 * (newWindow->unk6 + winTemplate->unk12) * 32;
else
t1->unk2C = t1->unk4 * t1->unk6 * 32;
newWindow->unk2C = newWindow->unk4 * newWindow->unk6 * 32;
t1->unk30 = 0;
t1->unk34 = 0;
t1->unk38 = 0;
t1->unk20 = (t1->unk4 * 8) - 8;
t1->unk45 = t1->unkC == 0;
newWindow->unk30 = 0;
newWindow->unk34 = 0;
newWindow->unk38 = 0;
newWindow->unk20 = (newWindow->unk4 * 8) - 8;
newWindow->unk45 = newWindow->unkC == 0;
if (t1->unk8 == 0)
if (newWindow->unk8 == 0)
return;
if ((winTemplate->unk0 & 0xA0) != 0x80) {
temp = iVar5 - 1;
temp = y - 1;
if (t1->unkC == 6) {
uVar1 = a6 ? t1->unk14 : 0;
if (newWindow->unkC == 6) {
uVar1 = a6 ? newWindow->unk14 : 0;
sub_8006E94(t1, temp, uVar1, winTemplate->header, a3);
sub_8006E94(newWindow, temp, uVar1, winTemplate->header, a3);
temp = iVar5 + 2;
uVar1 = a6 ? t1->unk14 + t1->unk4 * (winTemplate->unk12 + 2) : 0;
numI = t1->unk6 - 2;
temp = y + 2;
uVar1 = a6 ? newWindow->unk14 + newWindow->unk4 * (winTemplate->unk12 + 2) : 0;
numI = newWindow->unk6 - 2;
}
else {
sub_800677C(t1, temp, a3, a9);
sub_800677C(newWindow, temp, a3, a9);
temp = iVar5;
uVar1 = a6 ? t1->unk14 : 0;
numI = t1->unk6;
temp = y;
uVar1 = a6 ? newWindow->unk14 : 0;
numI = newWindow->unk6;
}
for (i = 0; i < numI; i++) {
iVar6 = iVar3 - 1;
sub_80069CC(t1, iVar6, temp, i, a3);
iVar6 = iVar3;
iVar6 = x - 1;
sub_80069CC(newWindow, iVar6, temp, i, a3);
iVar6 = x;
for (j = 0; j < t1->unk4; j++) {
sub_8006AC4(t1, iVar6, temp, uVar1, a3);
for (j = 0; j < newWindow->unk4; j++) {
sub_8006AC4(newWindow, iVar6, temp, uVar1, a3);
iVar6++;
if (a6)
uVar1++;
}
sub_8006B70(t1, iVar6, temp, i, a3);
sub_8006B70(newWindow, iVar6, temp, i, a3);
temp++;
}
sub_8006C44(t1, temp, a3, a9);
sub_8006C44(newWindow, temp, a3, a9);
}
if ((winTemplate->unk0 & 0x80) == 0)
PrepareTextbox_8008C6C(a0, a4);
PrepareTextbox_8008C6C(windows, windowId);
t1->unk46 = 0;
newWindow->unk46 = 0;
}
static void sub_800677C(Window *a0, s32 a1, u16 *a2, u8 a3)
static void sub_800677C(Window *window, s32 a1, u16 *a2, u8 a3)
{
s32 iVar5;
s32 i;
iVar5 = a0->unk0 - 1;
iVar5 = window->x - 1;
if (a1 > 28)
return;
if (a1 < 0)
return;
switch (a0->unkC) {
switch (window->unkC) {
case 0:
case 1:
case 2:
@@ -451,7 +449,7 @@ static void sub_800677C(Window *a0, s32 a1, u16 *a2, u8 a3)
else
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xF2D9;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
@@ -467,7 +465,7 @@ static void sub_800677C(Window *a0, s32 a1, u16 *a2, u8 a3)
(a2 + a1 * 0x20)[iVar5] = 0xF2E8;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xF2E9;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
@@ -479,7 +477,7 @@ static void sub_800677C(Window *a0, s32 a1, u16 *a2, u8 a3)
case 5:
(a2 + a1 * 0x20)[iVar5] = 0xF2DC;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xF2DD;
iVar5++;
}
@@ -489,7 +487,7 @@ static void sub_800677C(Window *a0, s32 a1, u16 *a2, u8 a3)
case 7:
(a2 + a1 * 0x20)[iVar5] = 0xF293;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xF297;
iVar5++;
}
@@ -499,14 +497,14 @@ static void sub_800677C(Window *a0, s32 a1, u16 *a2, u8 a3)
}
}
static void sub_80069CC(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
static void sub_80069CC(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4)
{
if (a2 > 28)
return;
if (a2 < 0)
return;
switch (a0->unkC) {
switch (window->unkC) {
case 1:
case 2:
break;
@@ -516,7 +514,7 @@ static void sub_80069CC(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
}
if (a3 == a0->unk6 - 1) {
if (a3 == window->unk6 - 1) {
(a4 + a2 * 0x20)[a1] = 0xFA97;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
@@ -540,14 +538,14 @@ static void sub_80069CC(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
}
}
static void sub_8006AC4(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
static void sub_8006AC4(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4)
{
if (a2 > 28)
return;
if (a2 < 0)
return;
switch (a0->unkC) {
switch (window->unkC) {
case 2:
(a4 + a2 * 0x20)[a1] = a3 | 0xF000;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF278;
@@ -567,14 +565,14 @@ static void sub_8006AC4(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
}
}
static void sub_8006B70(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
static void sub_8006B70(Window *window, s32 a1, s32 a2, s32 a3, u16 *a4)
{
if (a2 > 28)
return;
if (a2 < 0)
return;
switch (a0->unkC) {
switch (window->unkC) {
case 1:
case 2:
break;
@@ -584,7 +582,7 @@ static void sub_8006B70(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
}
if (a3 == a0->unk6 - 1) {
if (a3 == window->unk6 - 1) {
(a4 + a2 * 0x20)[a1] = 0xFE97;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
@@ -608,19 +606,19 @@ static void sub_8006B70(Window *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
}
}
static void sub_8006C44(Window *a0, s32 a1, u16 *a2, u8 a3)
static void sub_8006C44(Window *window, s32 a1, u16 *a2, u8 a3)
{
s32 iVar5;
s32 i;
iVar5 = a0->unk0 - 1;
iVar5 = window->x - 1;
if (a1 > 28)
return;
if (a1 < 0)
return;
switch (a0->unkC) {
switch (window->unkC) {
case 0:
case 1:
case 2:
@@ -633,7 +631,7 @@ static void sub_8006C44(Window *a0, s32 a1, u16 *a2, u8 a3)
else
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFAD9;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
@@ -649,7 +647,7 @@ static void sub_8006C44(Window *a0, s32 a1, u16 *a2, u8 a3)
(a2 + a1 * 0x20)[iVar5] = 0xFAE8;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFAE9;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
@@ -661,7 +659,7 @@ static void sub_8006C44(Window *a0, s32 a1, u16 *a2, u8 a3)
case 5:
(a2 + a1 * 0x20)[iVar5] = 0xFADC;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFADD;
iVar5++;
}
@@ -671,7 +669,7 @@ static void sub_8006C44(Window *a0, s32 a1, u16 *a2, u8 a3)
case 7:
(a2 + a1 * 0x20)[iVar5] = 0xFA93;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
for (i = 0; i < window->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFA97;
iVar5++;
}
@@ -1462,15 +1460,15 @@ static void sub_8006E94(Window *a0, s32 a1, u32 a2, const WindowHeader *a3, u16
"_08007330: .4byte 0x0000f6d8");
}
void sub_8007334(s32 a0)
void sub_8007334(s32 windowId)
{
s32 i, j;
struct Window *textStructPtr = &gWindows[a0];
s32 r5 = textStructPtr->unk14;
s32 r6 = textStructPtr->unk2;
for (i = 0; i < textStructPtr->unk6; i++) {
s32 id = textStructPtr->unk0;
for (j = 0; j < textStructPtr->unk4; j++) {
struct Window *window = &gWindows[windowId];
s32 r5 = window->unk14;
s32 r6 = window->y;
for (i = 0; i < window->unk6; i++) {
s32 id = window->x;
for (j = 0; j < window->unk4; j++) {
gUnknown_202B038[0][r6][id] &= ~0x3ff;
gUnknown_202B038[0][r6][id] |= r5;
id++;
@@ -1725,10 +1723,10 @@ static u32 xxx_draw_char(struct Window *a0, s32 x, s32 y, u32 a3, u32 color, u32
return sp0->unk6 + sCharacterSpacing;
}
void sub_80078A4(u32 a0, s32 x, s32 y, s32 a3, u32 color)
void AddDoubleUnderScoreHighlight(u32 windowId, s32 x, s32 y, s32 width, u32 color)
{
sub_800792C(a0, x, y, a3, color);
sub_800792C(a0, x, y + 1, a3, sTextShadowMask & 0xF);
AddUnderScoreHighlight(windowId, x, y, width, color);
AddUnderScoreHighlight(windowId, x, y + 1, width, sTextShadowMask & 0xF);
}
UNUSED static void sub_80078E8(u32 a0, s32 x, s32 y, s32 a3, u32 color)
@@ -1737,67 +1735,66 @@ UNUSED static void sub_80078E8(u32 a0, s32 x, s32 y, s32 a3, u32 color)
nullsub_129(a0, x, y + 1, a3, sTextShadowMask & 0xF);
}
void sub_800792C(u32 a0, s32 x, s32 y, s32 a3, u32 color)
void AddUnderScoreHighlight(u32 windowId, s32 x, s32 y, s32 width, u32 color)
{
sub_8007958(gWindows, a0, x, y, a3, color);
AddUnderScoreHighlightInternal(gWindows, windowId, x, y, width, color);
}
static void nullsub_129(u32 a0, s32 x, s32 y, s32 a3, u32 color)
static void nullsub_129(u32 windowId, s32 x, s32 y, s32 width, u32 color)
{
}
static void sub_8007958(Window *a0, u32 a1, s32 x, s32 y, s32 a4, u32 color)
static void AddUnderScoreHighlightInternal(Window *windows, u32 windowId, s32 x, s32 y, s32 width, u32 color)
{
u32 uVar4;
u32 *dest;
s32 r4;
const struct unkShiftData *shiftData;
Window *r5;
Window *window;
s32 r6;
u32 r9;
s32 lol;
r5 = &a0[a1];
window = &windows[windowId];
r9 = gUnknown_80B853C[color & 0xF];
r4 = y / 8;
dest = r5->unk18 + (((r5->unk4 * r4) + (x / 8)) * 8);
dest = window->unk18 + (((window->unk4 * r4) + (x / 8)) * 8);
dest += (r4 * -8) + y;
r6 = x / 8;
if (y / 8 >= r5->unk8) {
if (y / 8 >= window->unk8) {
return;
}
else {
const u32 unkBits[] = {0, 0xF, 0xFF, 0xFFF, 0xFFFF, 0xFFFFF, 0xFFFFFF, 0xFFFFFFF, 0xFFFFFFFF};
for (; a4 > 0; a4 -= 8) {
lol = a4;
if (lol > 7)
lol = 8;
for (; width > 0; width -= 8) {
s32 currWidth = width;
if (currWidth > 7)
currWidth = 8;
shiftData = &gCharMasksOffsets[x + (x / 8 * -8)];
uVar4 = unkBits[lol];
uVar4 = unkBits[currWidth];
uVar4 = (uVar4 & 0x11111111) + (uVar4 & r9);
if (uVar4 != 0) {
if (r6 < r5->unk4) {
if (r6 < window->unk4) {
dest[0] |= (shiftData->bytesA & uVar4) << shiftData->shift_left;
if (r5->unk3C > dest)
r5->unk3C = dest;
if (r5->unk40 < dest)
r5->unk40 = dest;
if (window->unk3C > dest)
window->unk3C = dest;
if (window->unk40 < dest)
window->unk40 = dest;
}
if (r6 < r5->unk4 - 1) {
if (r6 < window->unk4 - 1) {
dest += 8;
dest[0] |= (uVar4 & shiftData->bytesB) >> shiftData->shift_right;
if (r5->unk40 < dest)
r5->unk40 = dest;
if (window->unk40 < dest)
window->unk40 = dest;
dest -= 8;
}
}
@@ -2288,24 +2285,24 @@ UNUSED static void nullsub_160(void)
static void sub_8007E64(Window *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32 a5, s32 a6, u32 *a7, u32 a8)
{
s32 i, j;
Window *strPtr = &a0[a2];
Window *window = &a0[a2];
a3 /= 8;
a4 /= 8;
a5 /= 8;
a6 /= 8;
a8 *= 4096;
if (a4 < strPtr->unk8) {
s32 id = (strPtr->unk4 * a4) + a3;
u32 *unk18Ptr = &strPtr->unk18[id * 8];
if (a4 < window->unk8) {
s32 id = (window->unk4 * a4) + a3;
u32 *unk18Ptr = &window->unk18[id * 8];
for (i = 0; i < a6; i++) {
s32 xMaybe = a3;
u32 *loopUnk18Ptr = unk18Ptr;
for (j = 0; j < a5; j++) {
if (xMaybe < strPtr->unk4) {
if (strPtr->unk3C > loopUnk18Ptr) {
strPtr->unk3C = loopUnk18Ptr;
if (xMaybe < window->unk4) {
if (window->unk3C > loopUnk18Ptr) {
window->unk3C = loopUnk18Ptr;
}
*(loopUnk18Ptr++) = *(a7++);
*(loopUnk18Ptr++) = *(a7++);
@@ -2315,12 +2312,12 @@ static void sub_8007E64(Window *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32
*(loopUnk18Ptr++) = *(a7++);
*(loopUnk18Ptr++) = *(a7++);
*(loopUnk18Ptr++) = *a7;
if (strPtr->unk40 < loopUnk18Ptr) {
strPtr->unk40 = loopUnk18Ptr;
if (window->unk40 < loopUnk18Ptr) {
window->unk40 = loopUnk18Ptr;
}
a7++;
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] &= 0xFFF;
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] |= a8;
a1[window->y + a4][window->x + xMaybe] &= 0xFFF;
a1[window->y + a4][window->x + xMaybe] |= a8;
}
else {
loopUnk18Ptr += 8;
@@ -2329,9 +2326,9 @@ static void sub_8007E64(Window *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32
xMaybe++;
}
a4++;
unk18Ptr += strPtr->unk20;
unk18Ptr += window->unk20;
unk18Ptr += 8;
if (a4 >= strPtr->unk8)
if (a4 >= window->unk8)
break;
}
}
@@ -2366,24 +2363,24 @@ UNUSED static void nullsub_161(void)
static void sub_8008030(Window *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32 a5, s32 a6, u32 *a7, u32 a8)
{
s32 i, j;
Window *strPtr = &a0[a2];
Window *window = &a0[a2];
a3 /= 8;
a4 /= 8;
a5 /= 8;
a6 /= 8;
a8 *= 4096;
if (a4 < strPtr->unk8) {
u32 *unk18Ptr = &strPtr->unk18[((strPtr->unk4 * a4) + (a3 + a5)) * 8];
if (a4 < window->unk8) {
u32 *unk18Ptr = &window->unk18[((window->unk4 * a4) + (a3 + a5)) * 8];
for (i = 0; i < a6; i++) {
s32 xMaybe = a3 + a5;
u32 *loopUnk18Ptr = unk18Ptr;
for (j = 0; j < a5; j++) {
xMaybe--;
loopUnk18Ptr -= 8;
if (xMaybe < strPtr->unk4) {
if (strPtr->unk3C > loopUnk18Ptr) {
strPtr->unk3C = loopUnk18Ptr;
if (xMaybe < window->unk4) {
if (window->unk3C > loopUnk18Ptr) {
window->unk3C = loopUnk18Ptr;
}
loopUnk18Ptr[0] = FlipPixelsHorizontally(*(a7++));
loopUnk18Ptr[1] = FlipPixelsHorizontally(*(a7++));
@@ -2393,20 +2390,20 @@ static void sub_8008030(Window *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32
loopUnk18Ptr[5] = FlipPixelsHorizontally(*(a7++));
loopUnk18Ptr[6] = FlipPixelsHorizontally(*(a7++));
loopUnk18Ptr[7] = FlipPixelsHorizontally(*(a7++));
if (strPtr->unk40 < loopUnk18Ptr + 8) {
strPtr->unk40 = loopUnk18Ptr + 8;
if (window->unk40 < loopUnk18Ptr + 8) {
window->unk40 = loopUnk18Ptr + 8;
}
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] &= 0xFFF;
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] |= a8;
a1[window->y + a4][window->x + xMaybe] &= 0xFFF;
a1[window->y + a4][window->x + xMaybe] |= a8;
}
else {
a7 += 8;
}
}
a4++;
unk18Ptr += strPtr->unk20;
unk18Ptr += window->unk20;
unk18Ptr += 8;
if (a4 >= strPtr->unk8)
if (a4 >= window->unk8)
break;
}
}
@@ -2416,22 +2413,22 @@ static void sub_8008030(Window *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32
UNUSED static void sub_80081A4(s32 a0, s32 a3, s32 a4, s32 a7Id)
{
s32 i, j, a5, a6;
Window *strPtr = &gWindows[a0];
Window *window = &gWindows[a0];
const u32 *a7 = gUnknown_80B86B4[a7Id];
a3 /= 8;
a4 /= 8;
a5 = 2;
a6 = 2;
if (a4 < strPtr->unk8) {
s32 id = (strPtr->unk4 * a4) + a3;
u32 *unk18Ptr = &strPtr->unk28[id * 8];
if (a4 < window->unk8) {
s32 id = (window->unk4 * a4) + a3;
u32 *unk18Ptr = &window->unk28[id * 8];
for (i = 0; i < a6; i++) {
s32 xMaybe = a3;
u32 *loopUnk18Ptr = unk18Ptr;
for (j = 0; j < a5; j++) {
if (xMaybe < strPtr->unk4) {
if (xMaybe < window->unk4) {
*(loopUnk18Ptr++) = *(a7++);
*(loopUnk18Ptr++) = *(a7++);
*(loopUnk18Ptr++) = *(a7++);
@@ -2449,9 +2446,9 @@ UNUSED static void sub_80081A4(s32 a0, s32 a3, s32 a4, s32 a7Id)
xMaybe++;
}
a4++;
unk18Ptr += strPtr->unk20;
unk18Ptr += window->unk20;
unk18Ptr += 8;
if (a4 >= strPtr->unk8)
if (a4 >= window->unk8)
break;
}
}
@@ -2469,20 +2466,20 @@ UNUSED static void nullsub_162(void)
static void DisplayMonPortrait(Window *a0, u16 a1[32][32], s32 a2, const u8 *compressedData, u32 a4)
{
s32 i, j;
Window *strPtr = &a0[a2];
Window *window = &a0[a2];
a4 *= 4096;
DecompressAT((u8 *)strPtr->unk18, (strPtr->unk4 * 32) * strPtr->unk8, compressedData);
for (i = 0; i < strPtr->unk8; i++) {
for (j = 0; j < strPtr->unk4; j++) {
a1[strPtr->unk2 + i][strPtr->unk0 + j] &= 0xFFF;
a1[strPtr->unk2 + i][strPtr->unk0 + j] |= a4;
DecompressAT((u8 *)window->unk18, (window->unk4 * 32) * window->unk8, compressedData);
for (i = 0; i < window->unk8; i++) {
for (j = 0; j < window->unk4; j++) {
a1[window->y + i][window->x + j] &= 0xFFF;
a1[window->y + i][window->x + j] |= a4;
}
}
strPtr->unk30 = strPtr->unk28;
strPtr->unk34 = strPtr->unk1C;
strPtr->unk38 = strPtr->unk2C;
strPtr->unk44 = 1;
window->unk30 = window->unk28;
window->unk34 = window->unk1C;
window->unk38 = window->unk2C;
window->unk44 = 1;
}
static void sub_8008334(u32 *r7, u32 *r12)
@@ -2561,25 +2558,25 @@ UNUSED static void nullsub_164(void)
static void sub_80084A4(Window *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32 a5, s32 a6, u32 a8)
{
s32 i, j;
Window *strPtr = &a0[a2];
Window *window = &a0[a2];
a3 /= 8;
a4 /= 8;
a5 /= 8;
a6 /= 8;
a8 *= 4096;
if (a4 < strPtr->unk8) {
if (a4 < window->unk8) {
for (i = 0; i < a6; i++) {
s32 xMaybe = a3;
for (j = 0; j < a5; j++) {
if (xMaybe < strPtr->unk4) {
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] &= 0xFFF;
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] |= a8;
if (xMaybe < window->unk4) {
a1[window->y + a4][window->x + xMaybe] &= 0xFFF;
a1[window->y + a4][window->x + xMaybe] |= a8;
}
xMaybe++;
}
a4++;
if (a4 >= strPtr->unk8)
if (a4 >= window->unk8)
break;
}
}
@@ -3059,8 +3056,8 @@ static void PrepareTextbox_8008C6C(Window *strArr, u32 strId)
if (strPtr->unkC == 6) {
strPtr->unk46 = 1;
sub_8007958(strArr, strId, 0, 10, strPtr->unk4 * 8, 0xE);
sub_8007958(strArr, strId, 0, 11, strPtr->unk4 * 8, 0xD);
AddUnderScoreHighlightInternal(strArr, strId, 0, 10, strPtr->unk4 * 8, 0xE);
AddUnderScoreHighlightInternal(strArr, strId, 0, 11, strPtr->unk4 * 8, 0xD);
strPtr->unk46 = 0;
}
@@ -3300,7 +3297,7 @@ UNUSED static s32 sub_80091A8(s32 a0)
return a0 + 1;
}
static const u8 *HandleTextFormat(Window *strArr, const u8 *str, struct UnkDrawStringStruct *sp)
static const u8 *HandleTextFormat(Window *windows, const u8 *str, struct UnkDrawStringStruct *sp)
{
while (1) {
if (str[0] == '#') {
@@ -3358,7 +3355,7 @@ static const u8 *HandleTextFormat(Window *strArr, const u8 *str, struct UnkDrawS
}
else if (str[1] == '+') {
str += 2;
sp->unk0 = (strArr[0].unk4 * 8) - sub_8008ED0(str);
sp->unk0 = (windows[0].unk4 * 8) - sub_8008ED0(str);
sp->unk0 /= 2;
}
else if (str[1] == 'C') {
@@ -3392,8 +3389,8 @@ static const u8 *HandleTextFormat(Window *strArr, const u8 *str, struct UnkDrawS
}
else if (str[1] == 'W') {
str += 2;
sp->unk8 = ((strArr[0].unk0 * 8) + sp->unk0) - 2;
sp->unkA = ((strArr[0].unk2 * 8) + sp->unk2) + 3;
sp->unk8 = ((windows[0].x * 8) + sp->unk0) - 2;
sp->unkA = ((windows[0].y * 8) + sp->unk2) + 3;
sp->unk20 = 1;
break;
}
@@ -3461,16 +3458,16 @@ void sub_8009408(s32 from, s32 to)
gUnknown_20274A5 = TRUE;
}
UNUSED static void sub_8009488(s32 strArrId)
UNUSED static void sub_8009488(s32 windowId)
{
s32 i, j;
s32 id0, id1;
Window *strPtr = &gWindows[strArrId];
Window *window = &gWindows[windowId];
id0 = strPtr->unk2;
for (i = 0; i < strPtr->unk6; i++) {
id1 = strPtr->unk0;
for (j = 0; j < strPtr->unk4; j++) {
id0 = window->y;
for (i = 0; i < window->unk6; i++) {
id1 = window->x;
for (j = 0; j < window->unk4; j++) {
gUnknown_202B038[0][id0][id1] &= 0xFC00;
gUnknown_202B038[1][id0][id1] = 0xF27A;
id1++;
@@ -3483,15 +3480,15 @@ UNUSED static void nullsub_172(void)
{
}
void sub_8009524(s32 strArrId)
void sub_8009524(s32 windowId)
{
s32 i, j;
Window *strPtr = &gWindows[strArrId];
s32 id0 = strPtr->unk2 - 1;
Window *window = &gWindows[windowId];
s32 id0 = window->y - 1;
for (i = 0; i < strPtr->unk6 + 2; i++) {
s32 id1 = strPtr->unk0 - 1;
for (j = 0; j < strPtr->unk4 + 2; j++) {
for (i = 0; i < window->unk6 + 2; i++) {
s32 id1 = window->x - 1;
for (j = 0; j < window->unk4 + 2; j++) {
gUnknown_202B038[0][id0][id1] &= 0xFC00;
gUnknown_202B038[1][id0][id1] = 0xF27A;
id1++;

View File

@@ -96,14 +96,14 @@ static void PopulateWigglytuffShopFriendAreaInfoScreen(void)
else
PrintStringOnWindow(32, 60, sInhabitants, sWigglytuffShop2Work->unk74, 0);
sub_800792C(sWigglytuffShop2Work->unk74, 4, 64, 20, 4);
AddUnderScoreHighlight(sWigglytuffShop2Work->unk74, 4, 64, 20, 4);
if (sWigglytuffShop2Work->unkD != 0)
sub_800792C(sWigglytuffShop2Work->unk74, 184, 64, 20, 4);
AddUnderScoreHighlight(sWigglytuffShop2Work->unk74, 184, 64, 20, 4);
else
sub_800792C(sWigglytuffShop2Work->unk74, 94, 64, 110, 4);
AddUnderScoreHighlight(sWigglytuffShop2Work->unk74, 94, 64, 110, 4);
sub_800792C(sWigglytuffShop2Work->unk74, 4, 130, 200, 4);
AddUnderScoreHighlight(sWigglytuffShop2Work->unk74, 4, 130, 200, 4);
sub_8007A78(sWigglytuffShop2Work->unk74, 3, 64, 67, 4);
sub_8007A78(sWigglytuffShop2Work->unk74, 204, 64, 67, 4);