start documenting menu input struct

This commit is contained in:
DizzyEggg
2025-06-12 21:26:45 +02:00
parent 4056dcfe4a
commit af7ec27dd1
49 changed files with 589 additions and 599 deletions

View File

@@ -77,7 +77,7 @@ _0803B0C8:
ldr r3, [r0, 0x34]
adds r1, r2, 0
movs r2, 0xA
bl sub_8013818
bl CreateMenuOnWindow
bl sub_803B204
bl sub_803B284
movs r0, 0x1

View File

@@ -1,24 +0,0 @@
#ifndef GUARD_CODE_801D9E4_H
#define GUARD_CODE_801D9E4_H
#include "structs/menu.h"
#include "structs/str_text.h"
// size: 0x1C
struct unkStruct_81188F0
{
/* 0x0 */ u8 *text1;
/* 0x4 */ u8 *text2;
/* 0x8 */ u8 *text3;
/* 0xC */ u8 *text4[2];
/* 0x14 */ u32 unk2;
/* 0x18 */ u32 unk3;
};
bool8 sub_801D9E4(void);
void sub_801DA58(s16);
u32 sub_801DA78(void);
s16 sub_801DAC0(void);
void sub_801DB0C(void);
#endif // GUARD_CODE_801D9E4_H

View File

@@ -0,0 +1,13 @@
#ifndef GUARD_DEBUG_FIELD_MAP_WINDOW_H
#define GUARD_DEBUG_FIELD_MAP_WINDOW_H
#define DEBUG_INPUT_B_PRESS 2
#define DEBUG_INPUT_A_PRESS 3
bool8 DebugFieldMapWindow_Init(void);
void sub_801DA58(s16);
u32 DebugFieldMapWindow_GetInput(void);
s16 DebugFieldMapWindow_GetCurrentIndex(void);
void DebugFieldMapWindow_Free(void);
#endif // GUARD_DEBUG_FIELD_MAP_WINDOW_H

View File

@@ -32,8 +32,8 @@ s32 sub_80137A8(MenuInputStruct *param_1);
void sub_80137B0(MenuInputStruct *param_1, s32 param_2);
void sub_80137F8(MenuInputStruct *param_1, u32 param_2);
s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId);
void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4);
void sub_8013848(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4);
void CreateMenuOnWindow(MenuInputStruct *menuInput, s32 totalCount, u32 perPageCount, s32 windowId);
void sub_8013848(MenuInputStruct *menuInput, s32 totalCount, u32 perPageCount, s32 windowId);
void sub_8013878(MenuInputStruct *param_1, s32 param_2);
bool8 sub_80138B8(MenuInputStruct *param_1, bool8 param_2);
bool8 sub_8013938(MenuInputStruct *param_1);

View File

@@ -20,7 +20,7 @@ typedef struct MenuInputStructSub
// size: R=0x34 | NDS=0x32?
typedef struct MenuInputStruct
{
/* 0x0 */ s32 unk0;
/* 0x0 */ s32 windowId;
/* 0x4 */ u16 unk4;
/* 0x6 */ s16 firstEntryY;
/* 0x8 */ DungeonPos unk8;
@@ -30,10 +30,10 @@ typedef struct MenuInputStruct
/* 0x14 */ DungeonPos unk14;
/* 0x18 */ s16 menuIndex;
/* 0x1A */ s16 unk1A;
/* 0x1C */ s16 unk1C;
/* 0x1C */ s16 entriesPerPage;
/* 0x1E */ s16 unk1E;
/* 0x20 */ s16 unk20;
/* 0x22 */ s16 unk22;
/* 0x22 */ s16 totalEntriesCount;
/* 0x24 */ u16 unk24;
/* 0x26 */ u16 unk26;
/* 0x28 */ MenuInputStructSub unk28;

View File

@@ -0,0 +1,17 @@
#ifndef GUARD_STR_81188F0_H
#define GUARD_STR_81188F0_H
// size: 0x1C
struct unkStruct_81188F0
{
/* 0x0 */ const u8 *text1;
/* 0x4 */ const u8 *text2;
/* 0x8 */ const u8 *text3;
/* 0xC */ const u8 *text4[2];
/* 0x14 */ u32 unk2;
/* 0x18 */ u32 unk3;
};
extern const struct unkStruct_81188F0 gUnknown_81188F0[];
#endif // GUARD_STR_81188F0_H

View File

@@ -120,7 +120,7 @@ SECTIONS {
src/iq_skill_info_menu.o(.text);
src/code_801C8C4.o(.text);
src/code_801D014.o(.text);
src/code_801D9E4.o(.text);
src/debug_field_map_window.o(.text);
src/options_menu1.o(.text);
src/options_menu2.o(.text);
src/hints_menu1.o(.text);
@@ -479,7 +479,7 @@ SECTIONS {
src/iq_skill_info_menu.o(.rodata);
src/code_801C8C4.o(.rodata);
src/code_801D014.o(.rodata);
src/code_801D9E4.o(.rodata);
src/debug_field_map_window.o(.rodata);
src/options_menu1.o(.rodata);
src/options_menu2.o(.rodata);
src/hints_menu1.o(.rodata);

View File

@@ -30,7 +30,7 @@ bool8 CreateAdventureLogScreen(u32 kind)
ResetUnusedInputStruct();
ShowWindows(&sAdventureLog->s0.windows, TRUE, TRUE);
sub_8013818(&sAdventureLog->s0.input, 0x20, 8, kind);
CreateMenuOnWindow(&sAdventureLog->s0.input, 0x20, 8, kind);
sub_8032084();
DisplayAdventureLog();
return TRUE;
@@ -100,7 +100,7 @@ static void DisplayAdventureLog(void)
sub_8012BC4(r6, 0, sAdventureLog->s0.input.unk1E + 1, 1, 7, sAdventureLog->s0.winId);
for (i = 0; i < sAdventureLog->s0.input.unk1A; i++) {
aa = (sAdventureLog->s0.input.unk1E * sAdventureLog->s0.input.unk1C) + i;
aa = (sAdventureLog->s0.input.unk1E * sAdventureLog->s0.input.entriesPerPage) + i;
if (GetAdventureAchievement(aa)) {
switch (aa) {

View File

@@ -41,7 +41,7 @@ bool8 sub_801C8C4(s32 a0, s32 a1, DungeonPos *a2, u32 a3)
sub_8012D08(sUnknown_203B244->unk4B4.s0.unk38, a3);
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, TRUE, TRUE);
sub_8013818(&sUnknown_203B244->unk4B4.s0.input, sub_801CE58(), a3, a1);
CreateMenuOnWindow(&sUnknown_203B244->unk4B4.s0.input, sub_801CE58(), a3, a1);
if (sUnknown_203B248 == sUnknown_203B244->unk0) {
sUnknown_203B244->unk4B4.s0.input.menuIndex = sUnknown_203B24C;
@@ -106,14 +106,14 @@ u32 sub_801CA08(bool8 a0)
u8 sub_801CB24(void)
{
return sUnknown_203B244->itemIDs[(sUnknown_203B244->unk4B4.s0.input.unk1E * sUnknown_203B244->unk4B4.s0.input.unk1C) + sUnknown_203B244->unk4B4.s0.input.menuIndex];
return sUnknown_203B244->itemIDs[(sUnknown_203B244->unk4B4.s0.input.unk1E * sUnknown_203B244->unk4B4.s0.input.entriesPerPage) + sUnknown_203B244->unk4B4.s0.input.menuIndex];
}
void sub_801CB5C(bool8 a0)
{
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, FALSE, FALSE);
sUnknown_203B244->unk4B4.s0.input.unk22 = sub_801CE58();
sUnknown_203B244->unk4B4.s0.input.totalEntriesCount = sub_801CE58();
sub_8013984(&sUnknown_203B244->unk4B4.s0.input);
sub_801CC38();
sub_801CCD8();
@@ -160,7 +160,7 @@ void sub_801CCD8(void)
sub_8012BC4(sUnknown_203B244->unk4B4.header.width * 8 + 4, 0, sUnknown_203B244->unk4B4.s0.input.unk1E + 1, 2, 7, sUnknown_203B244->unk4B4.s0.winId);
for(index = 0; index < sUnknown_203B244->unk4B4.s0.input.unk1A; index++) {
itemID = sUnknown_203B244->itemIDs[(sUnknown_203B244->unk4B4.s0.input.unk1E * sUnknown_203B244->unk4B4.s0.input.unk1C) + index];
itemID = sUnknown_203B244->itemIDs[(sUnknown_203B244->unk4B4.s0.input.unk1E * sUnknown_203B244->unk4B4.s0.input.entriesPerPage) + index];
BufferItemName(buffer, itemID, NULL);
y = GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index);
PrintStringOnWindow(8, y, buffer, sUnknown_203B244->unk4B4.s0.winId, 0);

View File

@@ -1,137 +0,0 @@
#include "global.h"
#include "globaldata.h"
#include "constants/input.h"
#include "structs/struct_sub80095e4.h"
#include "music_util.h"
#include "code_801D9E4.h"
#include "ground_main.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
#include "text_1.h"
#include "text_2.h"
EWRAM_INIT static struct struct_Sub80095E4_2 *sUnknown_203B258 = {NULL};
extern const struct unkStruct_81188F0 gUnknown_81188F0[10];
#include "data/code_801D9E4.h"
static void sub_801DB54(void);
static void sub_801DBD4(void);
bool8 sub_801D9E4(void)
{
sUnknown_203B258 = MemoryAlloc(sizeof(*sUnknown_203B258), 8);
sUnknown_203B258->s0.winId = 3;
sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.windows.id[3];
RestoreSavedWindows(&sUnknown_203B258->s0.windows);
sUnknown_203B258->s0.windows.id[sUnknown_203B258->s0.winId] = sUnknown_80DBF88;
sUnknown_203B258->s0.unk38->header = &sUnknown_203B258->header;
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE);
sub_8013818(&sUnknown_203B258->s0.input, 229, 10, sUnknown_203B258->s0.winId);
sub_801DB54();
sub_801DBD4();
return TRUE;
}
void sub_801DA58(s16 a0)
{
s32 cast;
cast = a0;
sub_8013878(&sUnknown_203B258->s0.input, cast);
sub_801DB54();
sub_801DBD4();
}
u32 sub_801DA78(void)
{
switch (GetKeyPress(&sUnknown_203B258->s0.input)) {
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case INPUT_A_BUTTON:
return 3;
default:
if (sub_80138B8(&sUnknown_203B258->s0.input, 1)) {
sub_801DB54();
sub_801DBD4();
return 1;
}
return 0;
}
}
s16 sub_801DAC0(void)
{
return (sUnknown_203B258->s0.input.unk1E * sUnknown_203B258->s0.input.unk1C) + sUnknown_203B258->s0.input.menuIndex;
}
UNUSED static void sub_801DADC(bool8 a0)
{
sUnknown_203B258->s0.input.unk22 = 229;
sub_8013984(&sUnknown_203B258->s0.input);
sub_801DB54();
sub_801DBD4();
if (a0)
AddMenuCursorSprite(&sUnknown_203B258->s0.input);
}
void sub_801DB0C(void)
{
if (sUnknown_203B258 != NULL) {
sUnknown_203B258->s0.windows.id[sUnknown_203B258->s0.winId] = sUnknown_80DBF70;
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE);
MemoryFree(sUnknown_203B258);
sUnknown_203B258 = NULL;
}
}
static void sub_801DB54(void)
{
sUnknown_203B258->header.count = 1;
sUnknown_203B258->header.currId = 0;
sUnknown_203B258->header.width = 8;
sUnknown_203B258->header.f3 = 0;
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE);
SUB_80095E4_CALL(sUnknown_203B258->s0);
}
static void sub_801DBD4(void)
{
GroundConversionStruct *temp;
const struct unkStruct_81188F0 *temp2;
s32 x, y, n;
s16 index;
int counter;
CallPrepareTextbox_8008C54(sUnknown_203B258->s0.winId);
sub_80073B8(sUnknown_203B258->s0.winId);
PrintStringOnWindow(10, 0, sField, sUnknown_203B258->s0.winId, 0); // Field
x = (sUnknown_203B258->header.width * 8) - 2;
n = sUnknown_203B258->s0.input.unk1E + 1;
sub_8012BC4(x, 0, n, 2, 7, sUnknown_203B258->s0.winId);
// This line has no real effect. It's a magic 'fakematch' to fool agb into generating the same asm. It can be removed if you don't care about matching.
if (x) { counter = 0; }
for (counter = 0; counter < sUnknown_203B258->s0.input.unk1A; counter++) {
index = (sUnknown_203B258->s0.input.unk1E * sUnknown_203B258->s0.input.unk1C) + counter;
temp = &gGroundConversion_811BAF4[index];
temp2 = &gUnknown_81188F0[temp->unk4];
y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter);
PrintStringOnWindow(8, y, temp2->text1, sUnknown_203B258->s0.winId, 0);
y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter);
PrintStringOnWindow(62, y, temp->text, sUnknown_203B258->s0.winId, 0);
}
sub_80073E0(sUnknown_203B258->s0.winId);
}

View File

@@ -95,7 +95,7 @@ u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *tex
sub_8012D08(&gUnknown_203B270->windows.id[gUnknown_203B270->unk50],iVar8);
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6);
CreateMenuOnWindow(&gUnknown_203B270->input,iVar5,iVar5,param_6);
sub_8013780(&gUnknown_203B270->input,0);
sub_801F280(TRUE);
return 1;
@@ -252,7 +252,7 @@ void sub_801F1B0(bool8 param_1, bool8 param_2)
gUnknown_203B270->unk4 = param_2;
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE);
gUnknown_203B270->input.unk22 = sub_801F3F8();
gUnknown_203B270->input.totalEntriesCount = sub_801F3F8();
sub_8013984(&gUnknown_203B270->input);
gUnknown_203B270->input.menuIndex = sub_8092F4C(gUnknown_203B270->moves, gUnknown_203B270->input.menuIndex);
sub_801F280(TRUE);

View File

@@ -64,7 +64,7 @@ bool8 sub_801F428(s16 index, s32 param_2)
gUnknown_203B274->s348.header.f3 = 0;
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B274->s348.s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B274->s348.s0.input, sub_801F7E4(), 4, param_2);
CreateMenuOnWindow(&gUnknown_203B274->s348.s0.input, sub_801F7E4(), 4, param_2);
sub_801F690();
sub_801F700();
return TRUE;
@@ -104,7 +104,7 @@ u32 sub_801F520(u8 param_1)
u16 sub_801F5B4(void)
{
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.unk1C + gUnknown_203B274->s348.s0.input.menuIndex];
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.entriesPerPage + gUnknown_203B274->s348.s0.input.menuIndex];
}
void sub_801F5F0(bool8 r0)
@@ -148,7 +148,7 @@ void sub_801F700(void)
PrintStringOnWindow(0x10,0,buffer1,gUnknown_203B274->s348.s0.winId,0);
for(index = 0; index < gUnknown_203B274->s348.s0.input.unk1A; index++)
{
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.unk1C + index]);
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.entriesPerPage + index]);
y = GetMenuEntryYCoord(&gUnknown_203B274->s348.s0.input, index);
PrintStringOnWindow(8,y,buffer2,gUnknown_203B274->s348.s0.winId,0);
}

View File

@@ -66,7 +66,7 @@ bool8 sub_801F808(u16 *moveIDs)
{
if(gUnknown_203B278->moveIDs[index - 1] != 0) break;
}
sub_8013818(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C);
CreateMenuOnWindow(&gUnknown_203B278->unk28,index,1,gUnknown_203B278->unk5C);
sub_801317C(&gUnknown_203B278->unkC8);
sub_801F918(0);
return 1;

View File

@@ -60,7 +60,7 @@ bool8 sub_8023144(s32 a0, s32 index, DungeonPos *sub, u32 a3)
sub_8012D08(gUnknown_3001B5C->s35C.s0.unk38, a3);
ResetUnusedInputStruct();
ShowWindows(&gUnknown_3001B5C->s35C.s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_3001B5C->s35C.s0.input, sub_80236A4(), a3, index);
CreateMenuOnWindow(&gUnknown_3001B5C->s35C.s0.input, sub_80236A4(), a3, index);
gUnknown_3001B5C->s35C.s0.input.menuIndex = gUnknown_203B29C;
gUnknown_3001B5C->s35C.s0.input.unk1E = gUnknown_203B29E;
sub_8013984(&gUnknown_3001B5C->s35C.s0.input);
@@ -107,7 +107,7 @@ u32 sub_8023278(bool8 a0)
s16 sub_802331C(void)
{
return gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.unk1C) + gUnknown_3001B5C->s35C.s0.input.menuIndex];
return gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.entriesPerPage) + gUnknown_3001B5C->s35C.s0.input.menuIndex];
}
void sub_8023354(bool8 cursorSprite)
@@ -167,7 +167,7 @@ static void sub_80234BC(void)
for (i = 0; i < gUnknown_3001B5C->s35C.s0.input.unk1A; i++) {
y = GetMenuEntryYCoord(&gUnknown_3001B5C->s35C.s0.input, i);
species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.unk1C) + i];
species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.entriesPerPage) + i];
GetFriendAreaCapacity2(GetFriendArea(species), &auStack_2c, FALSE, FALSE);
color = COLOR_WHITE_2;
if (auStack_2c.hasFriendArea)

View File

@@ -95,7 +95,7 @@ static void sub_8024604(void)
sUnknown_203B2AC->unk34[1] = 3;
sUnknown_203B2AC->unk34[2] = 5;
sub_8013818(&sUnknown_203B2AC->input, 3, 1, sUnknown_203B2AC->unkE0);
CreateMenuOnWindow(&sUnknown_203B2AC->input, 3, 1, sUnknown_203B2AC->unkE0);
iVar3 = &sUnknown_203B2AC->unk4C;
pokeStruct = &gRecruitedPokemonRef->pokemon[sUnknown_203B2AC->speciesNum];
SetMonSummaryInfo(iVar3, pokeStruct, sub_80023E4(7));

View File

@@ -92,7 +92,7 @@ u32 sub_802F73C(u32 r0, DungeonPos *r1, u32 r2, u8 r3)
sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2);
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B314->sBC.s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B314->sBC.s0.input, sub_802FBF4(), r2, r0);
CreateMenuOnWindow(&gUnknown_203B314->sBC.s0.input, sub_802FBF4(), r2, r0);
sub_802F9C0();
sub_802FA50();
return 1;
@@ -105,7 +105,7 @@ u32 sub_802F848(s16 param_1)
param_1_32 = param_1; // cast needed
for( index = 0; index < gUnknown_203B314->sBC.s0.input.unk22; index++ ) {
for( index = 0; index < gUnknown_203B314->sBC.s0.input.totalEntriesCount; index++ ) {
if (gUnknown_203B314->unk0[index] == param_1_32) {
sub_8013878(&gUnknown_203B314->sBC.s0.input,index);
sub_802F9C0();
@@ -151,12 +151,12 @@ u32 sub_802F8A0(u8 r0)
s16 sub_802F90C(void)
{
return gUnknown_203B314->unk0[(gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C) + gUnknown_203B314->sBC.s0.input.menuIndex];
return gUnknown_203B314->unk0[(gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.entriesPerPage) + gUnknown_203B314->sBC.s0.input.menuIndex];
}
void sub_802F938(u8 r0)
{
gUnknown_203B314->sBC.s0.input.unk22 = sub_802FBF4();
gUnknown_203B314->sBC.s0.input.totalEntriesCount = sub_802FBF4();
sub_8013984(&gUnknown_203B314->sBC.s0.input);
sub_802F9C0();
sub_802FA50();
@@ -204,7 +204,7 @@ void sub_802FA50(void)
for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++)
{
y = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter);
index = gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter;
index = gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.entriesPerPage + counter;
sVar1 = gUnknown_203B314->unk0[index];
if (gUnknown_203B314->unk5C[index] != 0) {
PrintStringOnWindow(10,y,gUnknown_80E0750,gUnknown_203B314->sBC.s0.winId,0);
@@ -219,7 +219,7 @@ void sub_802FA50(void)
for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++)
{
y2 = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter);
text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter]);
text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.entriesPerPage + counter]);
PrintStringOnWindow(8,y2,text,gUnknown_203B314->sBC.s0.winId,0);
}
}

View File

@@ -1,19 +0,0 @@
static const WindowTemplate sUnknown_80DBF70 = {
0,
3,
0, 0,
0, 0,
0, 0,
NULL
};
static const WindowTemplate sUnknown_80DBF88 = {
0,
6,
2, 2,
24, 17,
17, 0,
NULL
};
ALIGNED(4) static const u8 sField[] = _("Field");

View File

@@ -1,8 +1,8 @@
#include "global.h"
#include "globaldata.h"
#include "debug_field_map_window.h"
#include "music_util.h"
#include "code_800558C.h"
#include "code_801D9E4.h"
#include "code_8099360.h"
#include "code_800C9CC.h"
#include "graphics_memory.h"
@@ -31,17 +31,17 @@ extern s32 sub_809CFE8(u16 param_1);
extern PixelPos SetVecFromDirectionSpeed(s8 r1, u32 r2);
extern void sub_809D158(s32, PixelPos*);
UNUSED static void sub_80993F0(void)
UNUSED static void DebugMapViewer(void)
{
PixelPos currPos;
s32 r10 = 0;
s32 mapId = 0;
ResetSoundEffectCounters();
FadeOutAllMusic(16);
gUnknown_2026E4E = 0x808;
UpdateFadeInTile(0);
sub_80095CC(0, 0x14);
ShowWindows(NULL, TRUE, TRUE); // TODO: Create a Hide/Reset Windows macro/static inline
ShowWindows(NULL, TRUE, TRUE);
sub_8009408(0, 20);
sub_8099648();
sub_809975C();
@@ -52,38 +52,39 @@ UNUSED static void sub_80993F0(void)
while (1) {
bool8 quitMapView;
PixelPos pixPos1, pixPos2;
PixelPos pixPos3;
PixelPos boundary;
if (sub_801D9E4()) {
sub_801DA58(r10);
if (DebugFieldMapWindow_Init()) {
sub_801DA58(mapId);
while (1) {
sub_8005838(NULL, 0);
sub_8012A18(0);
switch (sub_801DA78()) {
case 3:
r10 = sub_801DAC0();
switch (DebugFieldMapWindow_GetInput()) {
case DEBUG_INPUT_A_PRESS:
mapId = DebugFieldMapWindow_GetCurrentIndex();
break;
case 2:
r10 = -1;
case DEBUG_INPUT_B_PRESS:
mapId = -1;
break;
default:
continue;
}
break;
}
}
else {
r10 = -1;
mapId = -1;
}
sub_801DB0C();
if (r10 == -1)
DebugFieldMapWindow_Free();
if (mapId == -1)
break;
ShowWindows(NULL, TRUE, TRUE);
GroundMap_Reset();
sub_809D0BC();
GroundMap_Select(r10);
GroundMap_Select(mapId);
sub_80A579C(&pixPos1, &pixPos2);
pixPos1.y += 0xC00;
pixPos2.y += 0xC00;
@@ -91,8 +92,8 @@ UNUSED static void sub_80993F0(void)
pixPos1.y -= 0x400;
pixPos2.x += 0x400;
pixPos2.y += 0x400;
pixPos3.x = pixPos2.x - pixPos1.x;
pixPos3.y = pixPos2.y - pixPos1.y;
boundary.x = pixPos2.x - pixPos1.x;
boundary.y = pixPos2.y - pixPos1.y;
currPos.x = 0;
currPos.y = 0;
sub_80999E8(4);
@@ -121,15 +122,15 @@ UNUSED static void sub_80993F0(void)
if (currPos.x < 0) {
currPos.x = 0;
}
else if (currPos.x >= pixPos3.x) {
currPos.x = pixPos3.x - 1;
else if (currPos.x >= boundary.x) {
currPos.x = boundary.x - 1;
}
if (currPos.y < 0) {
currPos.y = 0;
}
else if (currPos.y >= pixPos3.y) {
currPos.y = pixPos3.y - 1;
else if (currPos.y >= boundary.y) {
currPos.y = boundary.y - 1;
}
}
pixPos4.x = pixPos1.x + currPos.x;

View File

@@ -0,0 +1,146 @@
#include "global.h"
#include "globaldata.h"
#include "debug_field_map_window.h"
#include "constants/input.h"
#include "structs/struct_sub80095e4.h"
#include "music_util.h"
#include "ground_main.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
#include "text_1.h"
#include "text_2.h"
#include "structs/str_81188F0.h"
EWRAM_INIT static struct struct_Sub80095E4_2 *sDebugWindow = {NULL};
static const WindowTemplate sDummyWinTemplate = WIN_TEMPLATE_DUMMY;
static const WindowTemplate sUnknown_80DBF88 = {
0,
6,
2, 2,
24, 17,
17, 0,
NULL
};
static void sub_801DB54(void);
static void sub_801DBD4(void);
#define WINDOW_ID_DEBUG 3
bool8 DebugFieldMapWindow_Init(void)
{
sDebugWindow = MemoryAlloc(sizeof(*sDebugWindow), 8);
sDebugWindow->s0.winId = WINDOW_ID_DEBUG;
sDebugWindow->s0.unk38 = &sDebugWindow->s0.windows.id[WINDOW_ID_DEBUG];
RestoreSavedWindows(&sDebugWindow->s0.windows);
sDebugWindow->s0.windows.id[sDebugWindow->s0.winId] = sUnknown_80DBF88;
sDebugWindow->s0.unk38->header = &sDebugWindow->header;
ResetUnusedInputStruct();
ShowWindows(&sDebugWindow->s0.windows, TRUE, TRUE);
CreateMenuOnWindow(&sDebugWindow->s0.input, 229, 10, sDebugWindow->s0.winId);
sub_801DB54();
sub_801DBD4();
return TRUE;
}
void sub_801DA58(s16 a0)
{
s32 cast;
cast = a0;
sub_8013878(&sDebugWindow->s0.input, cast);
sub_801DB54();
sub_801DBD4();
}
u32 DebugFieldMapWindow_GetInput(void)
{
switch (GetKeyPress(&sDebugWindow->s0.input)) {
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return DEBUG_INPUT_B_PRESS;
case INPUT_A_BUTTON:
return DEBUG_INPUT_A_PRESS;
default:
if (sub_80138B8(&sDebugWindow->s0.input, 1)) {
sub_801DB54();
sub_801DBD4();
return 1;
}
return 0;
}
}
s16 DebugFieldMapWindow_GetCurrentIndex(void)
{
return (sDebugWindow->s0.input.unk1E * sDebugWindow->s0.input.entriesPerPage) + sDebugWindow->s0.input.menuIndex;
}
UNUSED static void sub_801DADC(bool8 a0)
{
sDebugWindow->s0.input.totalEntriesCount = 229;
sub_8013984(&sDebugWindow->s0.input);
sub_801DB54();
sub_801DBD4();
if (a0)
AddMenuCursorSprite(&sDebugWindow->s0.input);
}
void DebugFieldMapWindow_Free(void)
{
if (sDebugWindow != NULL) {
sDebugWindow->s0.windows.id[sDebugWindow->s0.winId] = sDummyWinTemplate;
ResetUnusedInputStruct();
ShowWindows(&sDebugWindow->s0.windows, TRUE, TRUE);
FREE_AND_SET_NULL(sDebugWindow);
}
}
static void sub_801DB54(void)
{
sDebugWindow->header.count = 1;
sDebugWindow->header.currId = 0;
sDebugWindow->header.width = 8;
sDebugWindow->header.f3 = 0;
ResetUnusedInputStruct();
ShowWindows(&sDebugWindow->s0.windows, TRUE, TRUE);
SUB_80095E4_CALL(sDebugWindow->s0);
}
static void sub_801DBD4(void)
{
GroundConversionStruct *temp;
const struct unkStruct_81188F0 *temp2;
s32 x, y, n;
s16 index;
int counter;
CallPrepareTextbox_8008C54(sDebugWindow->s0.winId);
sub_80073B8(sDebugWindow->s0.winId);
PrintStringOnWindow(10, 0, _("Field"), sDebugWindow->s0.winId, 0);
x = (sDebugWindow->header.width * 8) - 2;
n = sDebugWindow->s0.input.unk1E + 1;
sub_8012BC4(x, 0, n, 2, 7, sDebugWindow->s0.winId);
// This line has no real effect. It's a magic 'fakematch' to fool agb into generating the same asm. It can be removed if you don't care about matching.
if (x) { counter = 0; }
for (counter = 0; counter < sDebugWindow->s0.input.unk1A; counter++) {
index = (sDebugWindow->s0.input.unk1E * sDebugWindow->s0.input.entriesPerPage) + counter;
temp = &gGroundConversion_811BAF4[index];
temp2 = &gUnknown_81188F0[temp->unk4];
y = GetMenuEntryYCoord(&sDebugWindow->s0.input, counter);
PrintStringOnWindow(8, y, temp2->text1, sDebugWindow->s0.winId, 0);
y = GetMenuEntryYCoord(&sDebugWindow->s0.input, counter);
PrintStringOnWindow(62, y, temp->text, sDebugWindow->s0.winId, 0);
}
sub_80073E0(sDebugWindow->s0.winId);
}

View File

@@ -123,7 +123,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3)
sub_8067F00(a0, a3, gUnknown_202F30C, a2, a1);
gDungeonMenu.unk1A = min(a2, 8);
gDungeonMenu.menuIndex = r10;
gDungeonMenu.unk1C = 8;
gDungeonMenu.entriesPerPage = 8;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -131,7 +131,7 @@ void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
sub_80137B0(&gDungeonMenu, 0);
while (1) {
@@ -423,11 +423,11 @@ void sub_806806C(PokemonStruct1 *a0)
gDungeonMenu.unk20 = 4;
gDungeonMenu.unk1A = 0;
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1C = 0;
gDungeonMenu.entriesPerPage = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
DungeonShowWindows(&spTxtStruct, 1);

View File

@@ -1534,13 +1534,13 @@ static void PrintOnMainMenu(bool8 printAll)
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1A = 5;
gDungeonMenu.unk1C = 5;
gDungeonMenu.entriesPerPage = 5;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 2;
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
gDungeonMenu.unk14.x = 0;
sub_801317C(&gDungeonMenu.unk28);
sub_80137B0(&gDungeonMenu, 0x38);

View File

@@ -395,7 +395,7 @@ static void PrintOnDungeonItemsMenu(s32 a0, Entity *a1, bool8 showWhichWindow, b
gDungeonMenu.unk1E = a0;
gDungeonMenu.unk20 = sUnknown_202F258;
gDungeonMenu.unk4 = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
gDungeonMenu.unk14.x = 0;
sub_801317C(&gDungeonMenu.unk28);
gDungeon->unk181e8.unk18212 = 0;
@@ -406,7 +406,7 @@ static void PrintOnDungeonItemsMenu(s32 a0, Entity *a1, bool8 showWhichWindow, b
windows->id[0].height = 0x10;
header->width = 0xC;
gDungeonMenu.firstEntryY = 0x10;
gDungeonMenu.unk1C = 0xA;
gDungeonMenu.entriesPerPage = 0xA;
gDungeon->unk181e8.unk18212 = 1;
break;
case 2:
@@ -414,7 +414,7 @@ static void PrintOnDungeonItemsMenu(s32 a0, Entity *a1, bool8 showWhichWindow, b
windows->id[0].height = 4;
header->width = 6;
gDungeonMenu.firstEntryY = 0x12;
gDungeonMenu.unk1C = 1;
gDungeonMenu.entriesPerPage = 1;
break;
case 3:
default:
@@ -422,7 +422,7 @@ static void PrintOnDungeonItemsMenu(s32 a0, Entity *a1, bool8 showWhichWindow, b
windows->id[0].height = 4;
header->width = 0xC;
gDungeonMenu.firstEntryY = 0x12;
gDungeonMenu.unk1C = 1;
gDungeonMenu.entriesPerPage = 1;
break;
}

View File

@@ -440,13 +440,13 @@ static void ShowMovesMenuWindows(Entity *entity, EntityInfo *entInfo, bool8 redC
gDungeonMenu.menuIndex = sChosenMoveSlotId;
gDungeonMenu.unk1A = movesCount;
gDungeonMenu.unk1C = 4;
gDungeonMenu.entriesPerPage = 4;
gDungeonMenu.unk1E = arg6;
gDungeonMenu.unk20 = arg7;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows->id[0].height = windows->id[0].unk10 = sub_80095E4(4, 0xC) + 2;
@@ -633,11 +633,11 @@ static void ShowMovesInfoWindow(Move *moves, s32 firstMoveId, s32 movesCount)
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1A = 0;
gDungeonMenu.unk1C = 0;
gDungeonMenu.entriesPerPage = 0;
DungeonShowWindows(&windows, TRUE);
statusesCount = unk_PrintMoveDescription(currId, &moves[firstMoveId + currId], 0, statuses);
while (1) {
@@ -722,10 +722,10 @@ void ShowStatusDescriptionMenu(const StatusText *status, MenuInputStructSub *men
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1A = 0;
gDungeonMenu.unk1C = 0;
gDungeonMenu.entriesPerPage = 0;
sub_801317C(menuSub);
}
@@ -1115,7 +1115,7 @@ static void sub_8064228(Entity *entity, Move *moves, WindowTemplates *windows, W
gDungeonMenu.menuIndex = sChosenMoveSlotId;
gDungeonMenu.unk1A = count;
gDungeonMenu.unk1C = count;
gDungeonMenu.entriesPerPage = count;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -1123,7 +1123,7 @@ static void sub_8064228(Entity *entity, Move *moves, WindowTemplates *windows, W
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows->id[0].height = windows->id[0].unk10 = sub_80095E4(count, 12) + 2;
header->width = 14;

View File

@@ -477,7 +477,7 @@ static void PrintOthersMenuOptions(void)
gDungeonMenu.menuIndex = sOthersCursorId;
optionsCount = (gDungeon->unk644.canRecruit) ? OTHERS_COUNT : OTHERS_COUNT - 1;
gDungeonMenu.unk1A = optionsCount;
gDungeonMenu.unk1C = optionsCount;
gDungeonMenu.entriesPerPage = optionsCount;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -485,7 +485,7 @@ static void PrintOthersMenuOptions(void)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 18;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(optionsCount, 12) + 2;
@@ -540,7 +540,7 @@ static void PrintQuickSaveMenuOptions(void)
gDungeonMenu.menuIndex = 0;
optionsCount = 2;
gDungeonMenu.unk1A = optionsCount;
gDungeonMenu.unk1C = optionsCount;
gDungeonMenu.entriesPerPage = optionsCount;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -548,7 +548,7 @@ static void PrintQuickSaveMenuOptions(void)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 18;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(optionsCount, 12) + 2;
@@ -593,7 +593,7 @@ static void PrintGameOptions(void)
gDungeonMenu.menuIndex = 0;
optionsCount = 3;
gDungeonMenu.unk1A = optionsCount;
gDungeonMenu.unk1C = optionsCount;
gDungeonMenu.entriesPerPage = optionsCount;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -601,7 +601,7 @@ static void PrintGameOptions(void)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 12;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(optionsCount, 12) + 2;
@@ -648,7 +648,7 @@ static void PrintDungeonOptions(void)
header.f3 = 0;
gDungeonMenu.unk1A = DUNGEON_OPTIONS_COUNT;
gDungeonMenu.unk1C = DUNGEON_OPTIONS_COUNT;
gDungeonMenu.entriesPerPage = DUNGEON_OPTIONS_COUNT;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -656,7 +656,7 @@ static void PrintDungeonOptions(void)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 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;
@@ -739,7 +739,7 @@ static void PrintOthersOptions(void)
header.f3 = 0;
gDungeonMenu.unk1A = OTHERS_OPTIONS_COUNT;
gDungeonMenu.unk1C = OTHERS_OPTIONS_COUNT;
gDungeonMenu.entriesPerPage = OTHERS_OPTIONS_COUNT;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -747,7 +747,7 @@ static void PrintOthersOptions(void)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 24;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(OTHERS_OPTIONS_COUNT, 12) + 2;
@@ -911,7 +911,7 @@ static void PrintHintsMenu(void)
header.f3 = 0;
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1A = HINTS_COUNT_RED_VERSION;
gDungeonMenu.unk1C = HINTS_COUNT_RED_VERSION;
gDungeonMenu.entriesPerPage = HINTS_COUNT_RED_VERSION;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -919,7 +919,7 @@ static void PrintHintsMenu(void)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 12;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(HINTS_COUNT_RED_VERSION, 12) + 2;
@@ -966,11 +966,11 @@ static void ShowChosenHintWindow(s32 hintId)
gDungeonMenu.unk20 = HINTS_COUNT_RED_VERSION;
gDungeonMenu.unk1A = 0;
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1C = 0;
gDungeonMenu.entriesPerPage = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
windows.id[0].width = 24;
windows.id[0].height = windows.id[0].unk10 = sub_80095E4(HINTS_COUNT, 12) + 2;

View File

@@ -102,13 +102,13 @@ void ShowRecruitmentSearchMenu(void)
DungeonShowWindows(&sRecruitmentSearchWindows, TRUE);
gDungeonMenu.unk1A = 0;
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1C = 0;
gDungeonMenu.entriesPerPage = 0;
gDungeonMenu.unk1E = currTabId;
gDungeonMenu.unk20 = 2;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
sScrollId = 0;
sScrollFlags = 0;

View File

@@ -345,7 +345,7 @@ static void PrintOnDungeonTeamMenu(struct UnkFieldTeamMenuStruct *a0, WindowTemp
sTeamWindowHeader.f3 = 0;
gDungeonMenu.menuIndex = gTeamMenuChosenId;
gDungeonMenu.unk1A = count;
gDungeonMenu.unk1C = count;
gDungeonMenu.entriesPerPage = count;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -353,7 +353,7 @@ static void PrintOnDungeonTeamMenu(struct UnkFieldTeamMenuStruct *a0, WindowTemp
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
r0 = sub_80095E4(count, 0);
if (r10) {
@@ -534,7 +534,7 @@ void ShowDungeonTacticsMenu(ActionContainer *a0)
break;
}
gDungeonMenu.unk1A = i;
gDungeonMenu.unk1C = 8;
gDungeonMenu.entriesPerPage = 8;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
@@ -542,7 +542,7 @@ void ShowDungeonTacticsMenu(ActionContainer *a0)
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
sub_80137B0(&gDungeonMenu, 0);
gDungeonMenu.menuIndex = menuIndex;
@@ -797,11 +797,11 @@ void ShowDungeonSummaryOrIQMenu(ActionContainer *a0, bool8 showIq)
gDungeonMenu.unk14.x = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 16;
gDungeonMenu.unk0 = 0;
gDungeonMenu.windowId = 0;
sub_801317C(&gDungeonMenu.unk28);
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1A = 0;
gDungeonMenu.unk1C = 0;
gDungeonMenu.entriesPerPage = 0;
if (subWindowIds[currSubWindowId] == SUB_WINDOW_STATUS) {
s32 i;
@@ -815,7 +815,7 @@ void ShowDungeonSummaryOrIQMenu(ActionContainer *a0, bool8 showIq)
if (i != 0) {
hasStatusProblems = TRUE;
gDungeonMenu.unk1A = i;
gDungeonMenu.unk1C = 8;
gDungeonMenu.entriesPerPage = 8;
sub_80137B0(&gDungeonMenu, 0);
}
gDungeonMenu.menuIndex = r8;
@@ -832,7 +832,7 @@ void ShowDungeonSummaryOrIQMenu(ActionContainer *a0, bool8 showIq)
if (i != 0) {
hasIqSkills = TRUE;
gDungeonMenu.unk1A = i;
gDungeonMenu.unk1C = 8;
gDungeonMenu.entriesPerPage = 8;
sub_80137B0(&gDungeonMenu, 0);
}
gDungeonMenu.menuIndex = r8;

View File

@@ -37,13 +37,13 @@ void CreateDungeonMenuSubWindow(WindowTemplate *mainWindow, s32 subWindowX)
windows.id[0].unk0 = 0x80;
gDungeonMenu.menuIndex = 0;
gDungeonMenu.unk1C = gDungeonSubMenuItemsCount;
gDungeonMenu.entriesPerPage = gDungeonSubMenuItemsCount;
gDungeonMenu.unk1A = gDungeonSubMenuItemsCount;
gDungeonMenu.unk1E = 0;
gDungeonMenu.unk20 = 0;
gDungeonMenu.unk4 = 0;
gDungeonMenu.firstEntryY = 0;
gDungeonMenu.unk0 = 1;
gDungeonMenu.windowId = 1;
gDungeonMenu.unkC = 0;
gDungeonMenu.unkE = 0;
gDungeonMenu.unk14 = gDungeonMenu.unk8;
@@ -52,7 +52,7 @@ void CreateDungeonMenuSubWindow(WindowTemplate *mainWindow, s32 subWindowX)
windows.id[1].pos.x = subWindowX;
windows.id[1].width = 28 - subWindowX;
windows.id[1].height = windows.id[1].unk10 = sub_80095E4(gDungeonMenu.unk1C, 0);
windows.id[1].height = windows.id[1].unk10 = sub_80095E4(gDungeonMenu.entriesPerPage, 0);
DungeonShowWindows(&windows, FALSE);
sub_80137B0(&gDungeonMenu, windows.id[1].height * 8);
sub_80073B8(1);

View File

@@ -325,12 +325,12 @@ void FriendAreasMap_PrintAvailableSubAreas(void)
header.f3 = 0;
menuInput->menuIndex = 0;
menuInput->unk1A = count;
menuInput->unk1C = count;
menuInput->entriesPerPage = count;
menuInput->unk1E = 0;
menuInput->unk20 = 0;
menuInput->unk4 = 0;
menuInput->firstEntryY = 16;
menuInput->unk0 = 0;
menuInput->windowId = 0;
menuInput->unkC = 0;
menuInput->unkE = 0;
menuInput->unk14.x = 0;
@@ -338,7 +338,7 @@ void FriendAreasMap_PrintAvailableSubAreas(void)
menuInput->unk8.x = 8;
menuInput->unk8.y = 8;
sub_801317C(&menuInput->unk28);
var = sub_80095E4(menuInput->unk1C, 0);
var = sub_80095E4(menuInput->entriesPerPage, 0);
windows.id[0].unk10 = windows.id[0].height = var + 2;
sub_80137B0(menuInput, var * 8);

View File

@@ -112,7 +112,7 @@ bool8 FriendList_Init(u32 r5, u32 windowId, DungeonPos *pos, u32 r10)
sub_8012D08(sFriendList->unk358.s0.unk38, r10);
ResetUnusedInputStruct();
ShowWindows(&sFriendList->unk358.s0.windows, TRUE, TRUE);
sub_8013818(&sFriendList->unk358.s0.input, sub_8023F8C(), r10, windowId);
CreateMenuOnWindow(&sFriendList->unk358.s0.input, sub_8023F8C(), r10, windowId);
if (gUnknown_203B2A0 == sFriendList->unk0) {
sFriendList->unk358.s0.input.menuIndex = gUnknown_203B2A8;
sFriendList->unk358.s0.input.unk1E = gUnknown_203B2AA;
@@ -159,14 +159,14 @@ u32 FriendList_HandleInput(bool8 a0)
s32 FriendList_GetCurrId(void)
{
return sFriendList->unk1A[(sFriendList->unk358.s0.input.unk1E * sFriendList->unk358.s0.input.unk1C) + sFriendList->unk358.s0.input.menuIndex];
return sFriendList->unk1A[(sFriendList->unk358.s0.input.unk1E * sFriendList->unk358.s0.input.entriesPerPage) + sFriendList->unk358.s0.input.menuIndex];
}
void sub_8023B7C(bool8 addCursor)
{
ResetUnusedInputStruct();
ShowWindows(&sFriendList->unk358.s0.windows, FALSE, FALSE);
sFriendList->unk358.s0.input.unk22 = sub_8023BD8();
sFriendList->unk358.s0.input.totalEntriesCount = sub_8023BD8();
sub_8013984(&sFriendList->unk358.s0.input);
SetUpWindowHeader();
FriendList_ShowWindow();
@@ -259,7 +259,7 @@ void FriendList_ShowWindow(void)
}
for (i = 0; i < sFriendList->unk358.s0.input.unk1A; i++) {
s32 id = sFriendList->unk1A[(sFriendList->unk358.s0.input.unk1E * sFriendList->unk358.s0.input.unk1C) + i];
s32 id = sFriendList->unk1A[(sFriendList->unk358.s0.input.unk1E * sFriendList->unk358.s0.input.entriesPerPage) + i];
PokemonStruct1 *pokePtr = &gRecruitedPokemonRef->pokemon[id];
u8 color = 7;
@@ -468,7 +468,7 @@ UNUSED static PokemonStruct1 *sub_80243E8(void)
{
u8 buffer[40];
u8 nameBuffer[20];
PokemonStruct1 *pokeStruct = &gRecruitedPokemonRef->pokemon[sFriendList->unk1A[(sFriendList->unk358.s0.input.unk1E * sFriendList->unk358.s0.input.unk1C) + sFriendList->unk358.s0.input.menuIndex]];
PokemonStruct1 *pokeStruct = &gRecruitedPokemonRef->pokemon[sFriendList->unk1A[(sFriendList->unk358.s0.input.unk1E * sFriendList->unk358.s0.input.entriesPerPage) + sFriendList->unk358.s0.input.menuIndex]];
StrncpyCustom(nameBuffer, pokeStruct->name, POKEMON_NAME_LENGTH);
sprintfStatic(buffer, "%s", nameBuffer);

View File

@@ -6,7 +6,7 @@
#include "memory.h"
#include "file_system.h"
#include "code_8002774.h"
#include "code_801D9E4.h"
#include "structs/str_81188F0.h"
#include "code_8004AA0.h"
#include "graphics_memory.h"
#include "debug.h"
@@ -16,7 +16,6 @@
// This file most likely deals with map loading and writing to VRAM. It even has a custom decompression function.
extern const struct unkStruct_81188F0 gUnknown_81188F0[10];
extern const FileArchive gGroundFileArchive;
void sub_80A456C(GroundBg *groundBg, s32 id, const PixelPos *srcPos);

View File

@@ -30,7 +30,7 @@ bool8 sub_801E3F0(u32 a0)
sub_8012D08(sUnknown_203B264->unk38, 10);
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B264->windows, TRUE, TRUE);
sub_8013818(&sUnknown_203B264->input, 5, 10, a0);
CreateMenuOnWindow(&sUnknown_203B264->input, 5, 10, a0);
sub_801E594();
DrawHintSelectionMenu();
return TRUE;
@@ -68,7 +68,7 @@ u32 sub_801E474(bool8 a0)
s32 GetChosenHintIndex(void)
{
return (sUnknown_203B264->input.unk1E * sUnknown_203B264->input.unk1C) + sUnknown_203B264->input.menuIndex;
return (sUnknown_203B264->input.unk1E * sUnknown_203B264->input.entriesPerPage) + sUnknown_203B264->input.menuIndex;
}
void CreateHintSelectionScreen(bool8 cursorSprite)

View File

@@ -28,7 +28,7 @@ bool8 CreateHintDisplayScreen(u32 index)
sUnknown_203B268->s0.unk38->header = &sUnknown_203B268->header;
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B268->s0.windows, TRUE, TRUE);
sub_8013818(&sUnknown_203B268->s0.input, 5, 1, sUnknown_203B268->s0.winId);
CreateMenuOnWindow(&sUnknown_203B268->s0.input, 5, 1, sUnknown_203B268->s0.winId);
sUnknown_203B268->s0.input.unk1E = index;
sub_801E714();

View File

@@ -38,7 +38,7 @@ bool8 CreateIQSkillListMenu(s16 species, u32 index, u32 a2)
sub_8012D08(sIQSkillListMenu->s24.s0.unk38, a2);
ResetUnusedInputStruct();
ShowWindows(&sIQSkillListMenu->s24.s0.windows, TRUE, TRUE);
sub_8013818(&sIQSkillListMenu->s24.s0.input, sIQSkillListMenu->numIQSkills, a2, index);
CreateMenuOnWindow(&sIQSkillListMenu->s24.s0.input, sIQSkillListMenu->numIQSkills, a2, index);
sub_801C440();
BuildIQSkillList();
return TRUE;
@@ -73,14 +73,14 @@ u32 HandleIQSkillListMenuInput(bool8 a0)
s32 GetIQSkillSelection(void)
{
return (sIQSkillListMenu->s24.s0.input.unk1E * sIQSkillListMenu->s24.s0.input.unk1C) + sIQSkillListMenu->s24.s0.input.menuIndex;
return (sIQSkillListMenu->s24.s0.input.unk1E * sIQSkillListMenu->s24.s0.input.entriesPerPage) + sIQSkillListMenu->s24.s0.input.menuIndex;
}
void RedrawIQSkillListMenu(bool8 addCursor)
{
ResetUnusedInputStruct();
ShowWindows(&sIQSkillListMenu->s24.s0.windows, FALSE, FALSE);
sIQSkillListMenu->s24.s0.input.unk22 = sIQSkillListMenu->numIQSkills;
sIQSkillListMenu->s24.s0.input.totalEntriesCount = sIQSkillListMenu->numIQSkills;
sub_8013984(&sIQSkillListMenu->s24.s0.input);
sub_801C440();
BuildIQSkillList();
@@ -131,7 +131,7 @@ void BuildIQSkillList(void)
sub_8012BC4(x2, 0, sIQSkillListMenu->s24.s0.input.unk1E + 1, 1, 7, sIQSkillListMenu->s24.s0.winId);
for (counter = 0; counter < sIQSkillListMenu->s24.s0.input.unk1A; counter++) {
skillIndex = sIQSkillListMenu->iqSkills[(sIQSkillListMenu->s24.s0.input.unk1E * sIQSkillListMenu->s24.s0.input.unk1C) + counter];
skillIndex = sIQSkillListMenu->iqSkills[(sIQSkillListMenu->s24.s0.input.unk1E * sIQSkillListMenu->s24.s0.input.entriesPerPage) + counter];
y = GetMenuEntryYCoord(&sIQSkillListMenu->s24.s0.input, counter);
strncpy(gFormatBuffer_Items[1], GetIQSkillName(skillIndex), 80);

View File

@@ -33,7 +33,7 @@ bool8 sub_8019E40(u32 r0)
gUnknown_203B214->s0.unk38->header = &gUnknown_203B214->header;
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B214->s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B214->s0.input, CountKecleonShopItems(), 10, r0);
CreateMenuOnWindow(&gUnknown_203B214->s0.input, CountKecleonShopItems(), 10, r0);
gUnknown_203B214->s0.input.menuIndex = gUnknown_203B218;
sub_8013984(&gUnknown_203B214->s0.input);
sub_801A064();
@@ -82,7 +82,7 @@ u32 sub_8019EDC(bool8 r0)
// arm9.bin::02025798
u8 sub_8019FB0(void)
{
return (gUnknown_203B214->s0.input.unk1E * gUnknown_203B214->s0.input.unk1C) + (u8)gUnknown_203B214->s0.input.menuIndex;
return (gUnknown_203B214->s0.input.unk1E * gUnknown_203B214->s0.input.entriesPerPage) + (u8)gUnknown_203B214->s0.input.menuIndex;
}
// arm9.bin::02025738
@@ -90,7 +90,7 @@ void sub_8019FCC(bool8 r0)
{
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B214->s0.windows, FALSE, FALSE);
gUnknown_203B214->s0.input.unk22 = CountKecleonShopItems();
gUnknown_203B214->s0.input.totalEntriesCount = CountKecleonShopItems();
sub_8013984(&gUnknown_203B214->s0.input);
sub_801A064();
sub_801A0D8();
@@ -139,7 +139,7 @@ void sub_801A0D8(void)
PrintStringOnWindow((gUnknown_203B214->s0.input.unk1E * 8) + 10, 0, sGoods, gUnknown_203B214->s0.winId, 0);
for (index = 0; index < gUnknown_203B214->s0.input.unk1A; index++) {
temp_calc = (gUnknown_203B214->s0.input.unk1E * gUnknown_203B214->s0.input.unk1C) + index;
temp_calc = (gUnknown_203B214->s0.input.unk1E * gUnknown_203B214->s0.input.entriesPerPage) + index;
heldItem = GetKecleonShopItem(temp_calc);
item.id = heldItem->id;
item.quantity = heldItem->quantity;

View File

@@ -33,7 +33,7 @@ bool8 sub_801A20C(u32 r0)
gUnknown_203B21C->s0.unk38->header = &gUnknown_203B21C->header;
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B21C->s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B21C->s0.input, CountKecleonWareItems(), 10, r0);
CreateMenuOnWindow(&gUnknown_203B21C->s0.input, CountKecleonWareItems(), 10, r0);
gUnknown_203B21C->s0.input.menuIndex = gUnknown_203B220;
sub_8013984(&gUnknown_203B21C->s0.input);
sub_801A430();
@@ -82,7 +82,7 @@ u32 sub_801A2A8(bool8 r0)
// arm9.bin::02025CC4
u8 sub_801A37C(void)
{
return (gUnknown_203B21C->s0.input.unk1E * gUnknown_203B21C->s0.input.unk1C) + gUnknown_203B21C->s0.input.menuIndex;
return (gUnknown_203B21C->s0.input.unk1E * gUnknown_203B21C->s0.input.entriesPerPage) + gUnknown_203B21C->s0.input.menuIndex;
}
// arm9.bin::02025C64
@@ -90,7 +90,7 @@ void sub_801A398(bool8 r0)
{
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B21C->s0.windows, FALSE, FALSE);
gUnknown_203B21C->s0.input.unk22 = CountKecleonWareItems();
gUnknown_203B21C->s0.input.totalEntriesCount = CountKecleonWareItems();
sub_8013984(&gUnknown_203B21C->s0.input);
sub_801A430();
sub_801A4A4();
@@ -139,7 +139,7 @@ void sub_801A4A4(void)
PrintStringOnWindow(gUnknown_203B21C->s0.input.unk1E * 8 + 10, 0, sGoods, gUnknown_203B21C->s0.winId, 0);
for (index = 0; index < gUnknown_203B21C->s0.input.unk1A; index++) {
temp_calc = (gUnknown_203B21C->s0.input.unk1E * gUnknown_203B21C->s0.input.unk1C) + index;
temp_calc = (gUnknown_203B21C->s0.input.unk1E * gUnknown_203B21C->s0.input.entriesPerPage) + index;
heldItem = GetKecleonWareItem(temp_calc);
item.id = heldItem->id;
item.quantity = heldItem->quantity;

View File

@@ -60,7 +60,7 @@ bool8 sub_801A5D8(u32 param_1, s32 param_2, DungeonPos *param_3, u32 param_4)
sub_8099690(1);
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B224->unk54.s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B224->unk54.s0.input, GetNumberOfFilledInventorySlots(), param_4, param_2);
CreateMenuOnWindow(&gUnknown_203B224->unk54.s0.input, GetNumberOfFilledInventorySlots(), param_4, param_2);
gUnknown_203B224->unk54.s0.input.menuIndex = gUnknown_203B228;
gUnknown_203B224->unk54.s0.input.unk1E = gUnknown_203B22A;
sub_8013984(&gUnknown_203B224->unk54.s0.input);
@@ -155,7 +155,7 @@ u32 sub_801A6E8(bool8 param_1)
// arm9.bin::02026934
s32 sub_801A8AC(void)
{
return (gUnknown_203B224->unk54.s0.input.unk1E * gUnknown_203B224->unk54.s0.input.unk1C) + gUnknown_203B224->unk54.s0.input.menuIndex;
return (gUnknown_203B224->unk54.s0.input.unk1E * gUnknown_203B224->unk54.s0.input.entriesPerPage) + gUnknown_203B224->unk54.s0.input.menuIndex;
}
// arm9.bin::020268C0
@@ -165,7 +165,7 @@ void sub_801A8D0(bool8 r0)
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B224->unk54.s0.windows, FALSE, FALSE);
FillInventoryGaps();
gUnknown_203B224->unk54.s0.input.unk22 = GetNumberOfFilledInventorySlots();
gUnknown_203B224->unk54.s0.input.totalEntriesCount = GetNumberOfFilledInventorySlots();
sub_8013984(&gUnknown_203B224->unk54.s0.input);
sub_801A998();
sub_801A9E0();
@@ -217,7 +217,7 @@ void sub_801A9E0(void)
PrintStringOnWindow(x, 0, sTeamToolboxB, gUnknown_203B224->unk54.s0.winId, 0);
for (r7 = 0; r7 < gUnknown_203B224->unk54.s0.input.unk1A; r7++) {
teamItemIndex = (gUnknown_203B224->unk54.s0.input.unk1E * gUnknown_203B224->unk54.s0.input.unk1C) + r7;
teamItemIndex = (gUnknown_203B224->unk54.s0.input.unk1E * gUnknown_203B224->unk54.s0.input.entriesPerPage) + r7;
item = gTeamInventoryRef->teamItems[teamItemIndex];
switch (gUnknown_203B224->unk0) {

View File

@@ -43,7 +43,7 @@ bool8 sub_80302E8(s32 param_1, DungeonPos *param_2, u32 param_3)
sub_8012D08(sMakuhitaDojoWork2->s30.s0.unk38, param_3);
ResetUnusedInputStruct();
ShowWindows(&sMakuhitaDojoWork2->s30.s0.windows, TRUE, TRUE);
sub_8013818(&sMakuhitaDojoWork2->s30.s0.input, sub_8030668(), param_3, param_1);
CreateMenuOnWindow(&sMakuhitaDojoWork2->s30.s0.input, sub_8030668(), param_3, param_1);
sub_80304C8();
MakuhitaDojo_DrawCourseList();
return TRUE;
@@ -76,12 +76,12 @@ u32 sub_80303AC(bool8 param_1)
s16 sub_8030418(void)
{
return sMakuhitaDojoWork2->unk0[(sMakuhitaDojoWork2->s30.s0.input.unk1E * sMakuhitaDojoWork2->s30.s0.input.unk1C) + sMakuhitaDojoWork2->s30.s0.input.menuIndex];
return sMakuhitaDojoWork2->unk0[(sMakuhitaDojoWork2->s30.s0.input.unk1E * sMakuhitaDojoWork2->s30.s0.input.entriesPerPage) + sMakuhitaDojoWork2->s30.s0.input.menuIndex];
}
UNUSED static void sub_8030444(bool8 a0)
{
sMakuhitaDojoWork2->s30.s0.input.unk22 = sub_8030668();
sMakuhitaDojoWork2->s30.s0.input.totalEntriesCount = sub_8030668();
sub_8013984(&sMakuhitaDojoWork2->s30.s0.input);
sub_80304C8();
MakuhitaDojo_DrawCourseList();
@@ -126,7 +126,7 @@ static void MakuhitaDojo_DrawCourseList(void)
sub_8012BC4((sMakuhitaDojoWork2->s30.header.width * 8) + 4, 0, sMakuhitaDojoWork2->s30.s0.input.unk1E + 1, 2, 7, sMakuhitaDojoWork2->s30.s0.winId);
for (i = 0; i < sMakuhitaDojoWork2->s30.s0.input.unk1A; i++) {
iVar6 = sMakuhitaDojoWork2->unk0[sMakuhitaDojoWork2->s30.s0.input.unk1E * sMakuhitaDojoWork2->s30.s0.input.unk1C + i];
iVar6 = sMakuhitaDojoWork2->unk0[sMakuhitaDojoWork2->s30.s0.input.unk1E * sMakuhitaDojoWork2->s30.s0.input.entriesPerPage + i];
dungeonIndex = sub_80A2740(iVar6);
mazeIndex = sub_80A2668(iVar6);

View File

@@ -242,37 +242,37 @@ void sub_8012CAC(WindowTemplate *a0, const MenuItem *a1)
sub_8012D08(a0, count);
}
void sub_8012D08(WindowTemplate *param_1, s32 param_2)
void sub_8012D08(WindowTemplate *winTemplate, s32 param_2)
{
s32 sVar2;
s16 sVar3;
sVar2 = (s16) sub_80095E4(param_2, 12);
if (param_1->type == WINDOW_TYPE_WITH_HEADER)
if (winTemplate->type == WINDOW_TYPE_WITH_HEADER)
sVar2 = (s16)(sVar2 + 2);
sVar3 = sVar2;
param_1->height = sVar3;
param_1->unk10 = sVar3;
winTemplate->height = sVar3;
winTemplate->unk10 = sVar3;
}
void sub_8012D34(WindowTemplate *param_1, s32 param_2)
void sub_8012D34(WindowTemplate *winTemplate, s32 param_2)
{
s32 sVar2;
s16 sVar3;
sVar2 = (s16) sub_8009614(param_2, 24);
if (param_1->type == WINDOW_TYPE_WITH_HEADER)
if (winTemplate->type == WINDOW_TYPE_WITH_HEADER)
sVar2 = (s16)(sVar2 + 2);
sVar3 = sVar2;
param_1->height = sVar3;
param_1->unk10 = sVar3;
winTemplate->height = sVar3;
winTemplate->unk10 = sVar3;
}
// arm9.bin::0201C26C
void sub_8012D60(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index)
void sub_8012D60(MenuStruct *menu, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index)
{
const u8 *textPtr;
s32 counter;
@@ -282,14 +282,14 @@ void sub_8012D60(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colo
counter = 0;
menuIndex = -1;
iVar1 = 0;
param_1->index = index;
param_1->menuItems = menuItems;
param_1->menuTextColorArray = colorArray;
menu->index = index;
menu->menuItems = menuItems;
menu->menuTextColorArray = colorArray;
if (colorArray == NULL)
param_1->menuTextColorArray = gDefaultMenuTextColors;
menu->menuTextColorArray = gDefaultMenuTextColors;
param_1->unkC = param_4;
menu->unkC = param_4;
textPtr = menuItems->text;
if (textPtr) {
@@ -309,17 +309,17 @@ void sub_8012D60(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colo
if (menuIndex < 0)
menuIndex = iVar1;
sub_8013134(&param_1->input, counter, index);
param_1->input.menuIndex = menuIndex;
sub_80137B0(&param_1->input, 0);
sub_8013134(&menu->input, counter, index);
menu->input.menuIndex = menuIndex;
sub_80137B0(&menu->input, 0);
param_1->unk4C = TRUE;
param_1->unk4D = TRUE;
param_1->unk4E = TRUE;
param_1->menuAction = -1;
menu->unk4C = TRUE;
menu->unk4D = TRUE;
menu->unk4E = TRUE;
menu->menuAction = -1;
}
void sub_8012E04(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index)
void sub_8012E04(MenuStruct *menu, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index)
{
const u8 *textPtr;
s32 counter;
@@ -350,31 +350,31 @@ void sub_8012E04(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colo
if (menuIndex < 0)
menuIndex = iVar1;
sub_8013134(&param_1->input, counter, index);
param_1->input.menuIndex = menuIndex;
sub_80137B0(&param_1->input, 0);
sub_8013134(&menu->input, counter, index);
menu->input.menuIndex = menuIndex;
sub_80137B0(&menu->input, 0);
param_1->index = index;
param_1->menuTextColorArray = colorArray;
menu->index = index;
menu->menuTextColorArray = colorArray;
if (colorArray == NULL)
param_1->menuTextColorArray = gDefaultMenuTextColors;
menu->menuTextColorArray = gDefaultMenuTextColors;
param_1->unkC = param_4;
param_1->menuItems = menuItems;
param_1->unk4E = FALSE;
param_1->unk4C = TRUE;
param_1->unk4D = TRUE;
param_1->menuAction = -1;
menu->unkC = param_4;
menu->menuItems = menuItems;
menu->unk4E = FALSE;
menu->unk4C = TRUE;
menu->unk4D = TRUE;
menu->menuAction = -1;
}
void sub_8012EA4(MenuStruct *param_1, bool8 r1)
void sub_8012EA4(MenuStruct *menu, bool8 r1)
{
param_1->unk4C = r1;
param_1->unk4D = TRUE;
sub_8012EBC(param_1);
menu->unk4C = r1;
menu->unk4D = TRUE;
sub_8012EBC(menu);
}
void sub_8012EBC(MenuStruct *param_1)
void sub_8012EBC(MenuStruct *menu)
{
s32 x;
s32 y;
@@ -389,21 +389,21 @@ void sub_8012EBC(MenuStruct *param_1)
u8 buffer[256];
Window *window;
if (param_1->unk4D) {
sub_80073B8(param_1->index);
index = param_1->index;
if (menu->unk4D) {
sub_80073B8(menu->index);
index = menu->index;
window = &gWindows[index];
if (window->type == WINDOW_TYPE_WITH_HEADER) {
WindowTemplate *windowTemplate = &winTemplates.id[index];
RestoreSavedWindows(&winTemplates);
x = GetStringLineWidth(param_1->unk0);
PrintFormattedStringOnWindow(((windowTemplate->header->width * 8 - x) / 2) + 8, 0, param_1->unk0, param_1->index, 0);
x = GetStringLineWidth(menu->unk0);
PrintFormattedStringOnWindow(((windowTemplate->header->width * 8 - x) / 2) + 8, 0, menu->unk0, menu->index, 0);
}
colorArray = param_1->menuTextColorArray;
menuItemsPtr = param_1->menuItems;
_puVar2 = param_1->unkC;
colorArray = menu->menuTextColorArray;
menuItemsPtr = menu->menuItems;
_puVar2 = menu->unkC;
counter = 0;
if (menuItemsPtr->text != NULL) {
@@ -422,141 +422,141 @@ void sub_8012EBC(MenuStruct *param_1)
color = colorArray[0]; // Use the default white
sprintfStatic(buffer,gUnknown_80D4828, color, textPtr);
y = GetMenuEntryYCoord(&param_1->input, counter);
PrintFormattedStringOnWindow(8, y, buffer, param_1->index, 0);
y = GetMenuEntryYCoord(&menu->input, counter);
PrintFormattedStringOnWindow(8, y, buffer, menu->index, 0);
menuItemsPtr++;
counter++;
} while (menuItemsPtr->text != NULL);
}
sub_80073E0(param_1->index);
param_1->unk4D = FALSE;
sub_80073E0(menu->index);
menu->unk4D = FALSE;
}
if (param_1->unk4E) {
if (param_1->unk4C)
AddMenuCursorSprite(&param_1->input);
if (menu->unk4E) {
if (menu->unk4C)
AddMenuCursorSprite(&menu->input);
else
sub_8013660(&param_1->input);
sub_8013660(&menu->input);
}
}
bool8 sub_8012FD8(MenuStruct *param_1)
bool8 sub_8012FD8(MenuStruct *menu)
{
u32 prevMenuIndex;
s32 index;
const MenuItem *item;
prevMenuIndex = param_1->input.menuIndex;
prevMenuIndex = menu->input.menuIndex;
if (param_1->unk4C) {
switch (GetKeyPress(&param_1->input)) {
if (menu->unk4C) {
switch (GetKeyPress(&menu->input)) {
case INPUT_DPAD_DOWN:
MoveMenuCursorDown(&param_1->input);
if (prevMenuIndex != param_1->input.menuIndex)
MoveMenuCursorDown(&menu->input);
if (prevMenuIndex != menu->input.menuIndex)
PlayMenuSoundEffect(3);
break;
case INPUT_DPAD_UP:
MoveMenuCursorUp(&param_1->input);
if (prevMenuIndex != param_1->input.menuIndex)
MoveMenuCursorUp(&menu->input);
if (prevMenuIndex != menu->input.menuIndex)
PlayMenuSoundEffect(3);
break;
case INPUT_A_BUTTON:
index = sub_80137A8(&param_1->input);
item = &param_1->menuItems[index];
index = sub_80137A8(&menu->input);
item = &menu->menuItems[index];
if (item->menuAction > -1 && (param_1->unkC == NULL || param_1->unkC[index] != 1)) {
param_1->menuAction = item->menuAction;
++param_1; --param_1;
param_1->unk4C = FALSE;
param_1->input.unk24 = 0;
if (item->menuAction > -1 && (menu->unkC == NULL || menu->unkC[index] != 1)) {
menu->menuAction = item->menuAction;
++menu; --menu;
menu->unk4C = FALSE;
menu->input.unk24 = 0;
}
else {
PlayMenuSoundEffect(2);
break;
}
if (param_1->unkC != NULL && param_1->unkC[index] == 2)
if (menu->unkC != NULL && menu->unkC[index] == 2)
PlayMenuSoundEffect(2);
else
PlayMenuSoundEffect(0);
break;
case INPUT_B_BUTTON:
if (param_1->menuItems[param_1->input.unk1A].menuAction > -1) {
param_1->menuAction = param_1->menuItems[param_1->input.unk1A].menuAction;
param_1->unk4C = FALSE;
if (menu->menuItems[menu->input.unk1A].menuAction > -1) {
menu->menuAction = menu->menuItems[menu->input.unk1A].menuAction;
menu->unk4C = FALSE;
PlayMenuSoundEffect(1);
}
break;
}
}
sub_8012EBC(param_1);
return param_1->unk4C;
sub_8012EBC(menu);
return menu->unk4C;
}
bool8 sub_80130A8(MenuStruct *param_1)
bool8 sub_80130A8(MenuStruct *menu)
{
s32 index;
const MenuItem *menuItem;
if (param_1->unk4C) {
switch (GetKeyPress(&param_1->input))
if (menu->unk4C) {
switch (GetKeyPress(&menu->input))
{
case INPUT_A_BUTTON:
index = sub_80137A8(&param_1->input);
menuItem = &param_1->menuItems[index];
param_1->menuAction = menuItem->menuAction;
param_1->unk4C = FALSE;
param_1->input.unk24 = 0;
index = sub_80137A8(&menu->input);
menuItem = &menu->menuItems[index];
menu->menuAction = menuItem->menuAction;
menu->unk4C = FALSE;
menu->input.unk24 = 0;
PlayMenuSoundEffect(0);
break;
case INPUT_B_BUTTON:
if (param_1->menuItems[param_1->input.unk1A].menuAction > -1) {
param_1->menuAction = param_1->menuItems[param_1->input.unk1A].menuAction;
param_1->unk4C = FALSE;
if (menu->menuItems[menu->input.unk1A].menuAction > -1) {
menu->menuAction = menu->menuItems[menu->input.unk1A].menuAction;
menu->unk4C = FALSE;
PlayMenuSoundEffect(0);
}
break;
}
}
sub_8012EBC(param_1);
return param_1->unk4C;
sub_8012EBC(menu);
return menu->unk4C;
}
bool8 sub_8013114(MenuStruct *param_1, s32 *menuAction)
bool8 sub_8013114(MenuStruct *menu, s32 *menuAction)
{
if (param_1->unk4C)
if (menu->unk4C)
return TRUE;
if (menuAction != NULL)
*menuAction = param_1->menuAction;
*menuAction = menu->menuAction;
return FALSE;
}
static void sub_8013134(MenuInputStruct *param_1, u32 menuItemCounter, u32 windowId)
static void sub_8013134(MenuInputStruct *menuInput, u32 menuItemCounter, u32 windowId)
{
Window *window = &gWindows[windowId];
param_1->unk0 = windowId;
param_1->menuIndex = 0;
param_1->unk1A = menuItemCounter;
param_1->unk1C = menuItemCounter;
param_1->unk1E = 0;
param_1->unk4 = 0;
menuInput->windowId = windowId;
menuInput->menuIndex = 0;
menuInput->unk1A = menuItemCounter;
menuInput->entriesPerPage = menuItemCounter;
menuInput->unk1E = 0;
menuInput->unk4 = 0;
if (window->type == WINDOW_TYPE_WITH_HEADER)
param_1->firstEntryY = 16;
menuInput->firstEntryY = 16;
else
param_1->firstEntryY = 2;
menuInput->firstEntryY = 2;
param_1->unkC = 0;
param_1->unkE = 0;
param_1->unk14.x = 0;
param_1->unk24 = 0;
sub_801317C(&param_1->unk28);
menuInput->unkC = 0;
menuInput->unkE = 0;
menuInput->unk14.x = 0;
menuInput->unk24 = 0;
sub_801317C(&menuInput->unk28);
}
// arm9.bin::0201BD28
@@ -574,20 +574,20 @@ void sub_801317C(MenuInputStructSub *param_1)
}
// arm9.bin::0201BD18
void AddMenuCursorSprite(MenuInputStruct *param_1)
void AddMenuCursorSprite(MenuInputStruct *menuInput)
{
AddMenuCursorSprite_(param_1, 0);
AddMenuCursorSprite_(menuInput, 0);
}
// arm9.bin::0201B978
void AddMenuCursorSprite_(MenuInputStruct *a0, u8 *a1)
void AddMenuCursorSprite_(MenuInputStruct *menuInput, u8 *a1)
{
struct SpriteOAM sp = {0};
if (a0->unk1A > 0) {
UpdateMenuCursorSpriteCoords(a0);
if (menuInput->unk1A > 0) {
UpdateMenuCursorSpriteCoords(menuInput);
if (!(a0->unk24 & 8)) {
if (!(menuInput->unk24 & 8)) {
SpriteSetAffine1(&sp, 0);
SpriteSetAffine2(&sp, 0);
SpriteSetObjMode(&sp, 0);
@@ -601,18 +601,18 @@ void AddMenuCursorSprite_(MenuInputStruct *a0, u8 *a1)
SpriteSetPalNum(&sp, 15);
SpriteSetUnk6_0(&sp, 0);
SpriteSetUnk6_1(&sp, 0);
SpriteSetX(&sp, a0->unk8.x);
SpriteSetY(&sp, a0->unk8.y + 1);
SpriteSetX(&sp, menuInput->unk8.x);
SpriteSetY(&sp, menuInput->unk8.y + 1);
AddSprite(&sp, 0xFF, 0, 0);
}
}
sub_8013470(a0);
if (a0->unk14.x != 0)
sub_801332C(&a0->unk14);
sub_8013470(menuInput);
if (menuInput->unk14.x != 0)
sub_801332C(&menuInput->unk14);
a0->unk24++;
menuInput->unk24++;
// More here in NDS
}
@@ -692,108 +692,104 @@ static void sub_8013470(MenuInputStruct *a0)
}
}
void sub_8013660(MenuInputStruct *param_1)
void sub_8013660(MenuInputStruct *menuInput)
{
if (0 < param_1->unk1A) {
UpdateMenuCursorSpriteCoords(param_1);
sub_801332C(&param_1->unk8);
if (0 < menuInput->unk1A) {
UpdateMenuCursorSpriteCoords(menuInput);
sub_801332C(&menuInput->unk8);
}
}
// arm9.bin::0201B14C
void UpdateMenuCursorSpriteCoords(MenuInputStruct *param_1)
void UpdateMenuCursorSpriteCoords(MenuInputStruct *menuInput)
{
s32 index;
Window *window;
index = param_1->unk0;
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);
Window *window = &gWindows[menuInput->windowId];
menuInput->unk8.x = window->x * 8 + menuInput->unk4;
menuInput->unk8.y = window->y * 8 + GetMenuEntryYCoord(menuInput, menuInput->menuIndex);
}
void MoveMenuCursorDown(MenuInputStruct *param_1)
void MoveMenuCursorDown(MenuInputStruct *menuInput)
{
param_1->unk24 = 0;
menuInput->unk24 = 0;
if (param_1->unk1A < 1)
param_1->menuIndex = 0;
if (menuInput->unk1A < 1)
menuInput->menuIndex = 0;
else {
param_1->menuIndex++;
menuInput->menuIndex++;
if (param_1->menuIndex >= param_1->unk1A)
param_1->menuIndex = 0;
if (menuInput->menuIndex >= menuInput->unk1A)
menuInput->menuIndex = 0;
}
}
void MoveMenuCursorDownWrapAround(MenuInputStruct *param_1, u8 param_2)
void MoveMenuCursorDownWrapAround(MenuInputStruct *menuInput, u8 param_2)
{
param_1->unk24 = 0;
menuInput->unk24 = 0;
if (param_1->unk1A < 1)
param_1->menuIndex = 0;
if (menuInput->unk1A < 1)
menuInput->menuIndex = 0;
else {
param_1->menuIndex++;
menuInput->menuIndex++;
if (param_1->menuIndex >= param_1->unk1A) {
if (menuInput->menuIndex >= menuInput->unk1A) {
if (param_2 != 0)
param_1->menuIndex = 0;
menuInput->menuIndex = 0;
else
param_1->menuIndex = param_1->unk1A - 1;
menuInput->menuIndex = menuInput->unk1A - 1;
}
}
}
void MoveMenuCursorUp(MenuInputStruct *param_1)
void MoveMenuCursorUp(MenuInputStruct *menuInput)
{
param_1->unk24 = 0;
menuInput->unk24 = 0;
if (param_1->unk1A < 1)
param_1->menuIndex = 0;
if (menuInput->unk1A < 1)
menuInput->menuIndex = 0;
else {
param_1->menuIndex--;
menuInput->menuIndex--;
if (param_1->menuIndex < 0)
param_1->menuIndex = param_1->unk1A - 1;
if (menuInput->menuIndex < 0)
menuInput->menuIndex = menuInput->unk1A - 1;
}
}
void MoveMenuCursorUpWrapAround(MenuInputStruct *param_1, u8 param_2)
void MoveMenuCursorUpWrapAround(MenuInputStruct *menuInput, u8 param_2)
{
param_1->unk24 = 0;
menuInput->unk24 = 0;
if (param_1->unk1A < 1)
param_1->menuIndex = 0;
if (menuInput->unk1A < 1)
menuInput->menuIndex = 0;
else {
param_1->menuIndex--;
menuInput->menuIndex--;
if (param_1->menuIndex < 0) {
if (menuInput->menuIndex < 0) {
if (param_2 != 0)
param_1->menuIndex = param_1->unk1A - 1;
menuInput->menuIndex = menuInput->unk1A - 1;
else
param_1->menuIndex = 0;
menuInput->menuIndex = 0;
}
}
}
void sub_8013780(MenuInputStruct *param_1, s32 param_2)
void sub_8013780(MenuInputStruct *menuInput, s32 param_2)
{
if (param_2 < 0)
param_1->menuIndex = 0;
else if (param_2 >= param_1->unk1A)
param_1->menuIndex = param_1->unk1A - 1;
menuInput->menuIndex = 0;
else if (param_2 >= menuInput->unk1A)
menuInput->menuIndex = menuInput->unk1A - 1;
else
param_1->menuIndex = param_2;
menuInput->menuIndex = param_2;
param_1->unk24 = 0;
menuInput->unk24 = 0;
}
s32 sub_80137A8(MenuInputStruct *param_1)
s32 sub_80137A8(MenuInputStruct *menuInput)
{
return param_1->menuIndex;
return menuInput->menuIndex;
}
void sub_80137B0(MenuInputStruct *param_1, s32 param_2)
void sub_80137B0(MenuInputStruct *menuInput, s32 param_2)
{
s32 iVar1;
s32 iVar2;
@@ -802,197 +798,195 @@ void sub_80137B0(MenuInputStruct *param_1, s32 param_2)
iVar2 = param_2 << 8;
}
else {
if (gWindows[param_1->unk0].type == WINDOW_TYPE_WITH_HEADER)
if (gWindows[menuInput->windowId].type == WINDOW_TYPE_WITH_HEADER)
iVar1 = 16;
else
iVar1 = 0;
iVar2 = (gWindows[param_1->unk0].height * 8 - iVar1) << 8;
iVar2 = (gWindows[menuInput->windowId].height * 8 - iVar1) << 8;
}
param_1->unk10 = iVar2 / param_1->unk1C;
menuInput->unk10 = iVar2 / menuInput->entriesPerPage;
}
void sub_80137F8(MenuInputStruct *param_1, u32 param_2)
void sub_80137F8(MenuInputStruct *menuInput, u32 param_2)
{
param_1->unk10 = param_2 << 8;
menuInput->unk10 = param_2 << 8;
}
// arm9.bin::0201AF70
s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId)
s32 GetMenuEntryYCoord(MenuInputStruct *menuInput, s32 entryId)
{
s32 firstY = menu->firstEntryY;
s32 iVar1 = entryId * menu->unk10;
s32 firstY = menuInput->firstEntryY;
s32 iVar1 = entryId * menuInput->unk10;
return firstY + (iVar1 / 256);
}
void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4)
void CreateMenuOnWindow(MenuInputStruct *menuInput, s32 totalCount, u32 perPageCount, s32 windowId)
{
param_1->unk0 = param_4;
param_1->unk22 = param_2;
param_1->unk1C = param_3;
param_1->unk14.x = 0;
param_1->unk24 = 0;
param_1->menuIndex = 0;
param_1->unk1E = 0;
menuInput->windowId = windowId;
menuInput->totalEntriesCount = totalCount;
menuInput->entriesPerPage = perPageCount;
menuInput->unk14.x = 0;
menuInput->unk24 = 0;
menuInput->menuIndex = 0;
menuInput->unk1E = 0;
sub_801317C(&param_1->unk28);
sub_8013984(param_1);
sub_80137F8(param_1, 12);
sub_801317C(&menuInput->unk28);
sub_8013984(menuInput);
sub_80137F8(menuInput, 12);
}
void sub_8013848(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4)
void sub_8013848(MenuInputStruct *menuInput, s32 totalCount, u32 perPageCount, s32 windowId)
{
param_1->unk0 = param_4;
param_1->unk22 = param_2;
param_1->unk1C = param_3;
param_1->unk14.x = 0;
param_1->unk24 = 0;
param_1->menuIndex = 0;
param_1->unk1E = 0;
menuInput->windowId = windowId;
menuInput->totalEntriesCount = totalCount;
menuInput->entriesPerPage = perPageCount;
menuInput->unk14.x = 0;
menuInput->unk24 = 0;
menuInput->menuIndex = 0;
menuInput->unk1E = 0;
sub_801317C(&param_1->unk28);
sub_8013984(param_1);
sub_80137F8(param_1, 24);
sub_801317C(&menuInput->unk28);
sub_8013984(menuInput);
sub_80137F8(menuInput, 24);
}
void sub_8013878(MenuInputStruct *param_1, s32 param_2)
void sub_8013878(MenuInputStruct *menuInput, s32 param_2)
{
if (param_2 < 0)
param_2 = 0;
else if (param_2 >= param_1->unk22)
param_2 = param_1->unk22 - 1;
else if (param_2 >= menuInput->totalEntriesCount)
param_2 = menuInput->totalEntriesCount - 1;
param_1->unk1E = param_2 / param_1->unk1C;
param_1->menuIndex = param_2 % param_1->unk1C;
param_1->unk24 = 0;
sub_8013984(param_1);
menuInput->unk1E = param_2 / menuInput->entriesPerPage;
menuInput->menuIndex = param_2 % menuInput->entriesPerPage;
menuInput->unk24 = 0;
sub_8013984(menuInput);
}
bool8 sub_80138B8(MenuInputStruct *param_1, bool8 param_2)
bool8 sub_80138B8(MenuInputStruct *menuInput, bool8 param_2)
{
s32 sVar1;
s32 oldIndex;
sVar1 = param_1->unk1E;
oldIndex = param_1->menuIndex;
AddMenuCursorSprite(param_1);
sVar1 = menuInput->unk1E;
oldIndex = menuInput->menuIndex;
AddMenuCursorSprite(menuInput);
if (param_2) {
switch (GetKeyPress(param_1)) {
switch (GetKeyPress(menuInput)) {
case INPUT_DPAD_UP:
MoveMenuCursorUp(param_1);
if (oldIndex != param_1->menuIndex)
MoveMenuCursorUp(menuInput);
if (oldIndex != menuInput->menuIndex)
PlayMenuSoundEffect(3);
break;
case INPUT_DPAD_DOWN:
MoveMenuCursorDown(param_1);
if (oldIndex != param_1->menuIndex)
MoveMenuCursorDown(menuInput);
if (oldIndex != menuInput->menuIndex)
PlayMenuSoundEffect(3);
break;
case INPUT_DPAD_LEFT:
sub_8013A7C(param_1);
sub_8013A7C(menuInput);
break;
case INPUT_DPAD_RIGHT:
sub_8013A54(param_1);
sub_8013A54(menuInput);
break;
}
}
if (sVar1 != param_1->unk1E) {
if (sVar1 != menuInput->unk1E) {
PlayMenuSoundEffect(4);
return TRUE;
}
return FALSE;
}
bool8 sub_8013938(MenuInputStruct *param_1)
bool8 sub_8013938(MenuInputStruct *menuInput)
{
s32 sVar1;
sVar1 = param_1->unk1E;
param_1->unk1A = 0;
param_1->unk14.x = 0;
AddMenuCursorSprite(param_1);
sVar1 = menuInput->unk1E;
menuInput->unk1A = 0;
menuInput->unk14.x = 0;
AddMenuCursorSprite(menuInput);
switch (GetKeyPress(param_1)) {
switch (GetKeyPress(menuInput)) {
case INPUT_DPAD_LEFT:
sub_8013A7C(param_1);
sub_8013A7C(menuInput);
break;
case INPUT_DPAD_RIGHT:
sub_8013A54(param_1);
sub_8013A54(menuInput);
break;
}
if (sVar1 != param_1->unk1E) {
if (sVar1 != menuInput->unk1E) {
PlayMenuSoundEffect(4);
return TRUE;
}
return FALSE;
}
void sub_8013984(MenuInputStruct *param_1)
void sub_8013984(MenuInputStruct *menuInput)
{
s32 iVar2;
s32 iVar4;
Window *window;
iVar4 = param_1->unk0;
window = &gWindows[iVar4];
window = &gWindows[menuInput->windowId];
if (param_1->unk1C == 0)
param_1->unk1C++;
if (menuInput->entriesPerPage == 0)
menuInput->entriesPerPage++;
param_1->unk20 = param_1->unk22 / param_1->unk1C;
iVar2 = param_1->unk22 % param_1->unk1C;
menuInput->unk20 = menuInput->totalEntriesCount / menuInput->entriesPerPage;
iVar2 = menuInput->totalEntriesCount % menuInput->entriesPerPage;
if (iVar2 != 0)
param_1->unk20++;
menuInput->unk20++;
if (param_1->unk1E > param_1->unk20 - 1)
param_1->unk1E = param_1->unk20 - 1;
if (menuInput->unk1E > menuInput->unk20 - 1)
menuInput->unk1E = menuInput->unk20 - 1;
if (param_1->unk1E != param_1->unk20 - 1 || param_1->unk22 % param_1->unk1C == 0)
param_1->unk1A = param_1->unk1C;
if (menuInput->unk1E != menuInput->unk20 - 1 || menuInput->totalEntriesCount % menuInput->entriesPerPage == 0)
menuInput->unk1A = menuInput->entriesPerPage;
else
param_1->unk1A = param_1->unk22 % param_1->unk1C;
menuInput->unk1A = menuInput->totalEntriesCount % menuInput->entriesPerPage;
if (param_1->menuIndex > param_1->unk1A - 1)
param_1->menuIndex = param_1->unk1A - 1;
if (menuInput->menuIndex > menuInput->unk1A - 1)
menuInput->menuIndex = menuInput->unk1A - 1;
param_1->unk4 = 0;
menuInput->unk4 = 0;
if (window->type== WINDOW_TYPE_WITH_HEADER)
param_1->firstEntryY = 16;
menuInput->firstEntryY = 16;
else
param_1->firstEntryY = 0;
menuInput->firstEntryY = 0;
if (param_1->unk20 < 2)
param_1->unkC = 0;
if (menuInput->unk20 < 2)
menuInput->unkC = 0;
else
param_1->unkC = (window->x + window->width - 2) * 8;
menuInput->unkC = (window->x + window->width - 2) * 8;
param_1->unkE = (window->y + 1) * 8 - 2;
menuInput->unkE = (window->y + 1) * 8 - 2;
}
void sub_8013A54(MenuInputStruct *param_1)
void sub_8013A54(MenuInputStruct *menuInput)
{
if (param_1->unk1E < param_1->unk20 - 1)
param_1->unk1E++;
if (menuInput->unk1E < menuInput->unk20 - 1)
menuInput->unk1E++;
else
param_1->unk1E = 0;
menuInput->unk1E = 0;
sub_8013984(param_1);
sub_8013984(menuInput);
}
void sub_8013A7C(MenuInputStruct *param_1)
void sub_8013A7C(MenuInputStruct *menuInput)
{
if (param_1->unk1E < 1)
param_1->unk1E = param_1->unk20 - 1;
if (menuInput->unk1E < 1)
menuInput->unk1E = menuInput->unk20 - 1;
else
param_1->unk1E--;
menuInput->unk1E--;
sub_8013984(param_1);
sub_8013984(menuInput);
}
void sub_8013AA0(unkStructFor8013AA0 *a0)

View File

@@ -30,7 +30,7 @@ bool8 sub_801E198(GameOptions *optionsMenu)
sub_8012D08(sUnknown_203B260->unk48, 1);
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B260->unk4C, TRUE, TRUE);
sub_8013818(&sUnknown_203B260->input, 1, 1, sUnknown_203B260->unk44);
CreateMenuOnWindow(&sUnknown_203B260->input, 1, 1, sUnknown_203B260->unk44);
nullsub_38();
CreateOptionsMenu();
return TRUE;

View File

@@ -49,7 +49,7 @@ void CreatePartnerSelectionMenu(s16 starterID)
gUnknown_203B404->s18.header.f3 = 0;
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B404->s18.s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B404->s18.s0.input, GetValidPartners(), 10, gUnknown_203B404->s18.s0.winId);
CreateMenuOnWindow(&gUnknown_203B404->s18.s0.input, GetValidPartners(), 10, gUnknown_203B404->s18.s0.winId);
RedrawPartnerSelectionMenu();
PersonalityTest_DisplayPartnerSprite();
}
@@ -80,7 +80,7 @@ u16 HandlePartnerSelectionInput(void)
UNUSED static void sub_803CE34(bool8 cursorSprite)
{
gUnknown_203B404->s18.s0.input.unk22 = GetValidPartners();
gUnknown_203B404->s18.s0.input.totalEntriesCount = GetValidPartners();
sub_8013984(&gUnknown_203B404->s18.s0.input);
RedrawPartnerSelectionMenu();
PersonalityTest_DisplayPartnerSprite();

View File

@@ -46,7 +46,7 @@ bool8 sub_802B640(u32 a0, DungeonPos *a1, u32 a2)
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B2CC->s38.windows, TRUE, TRUE);
sub_8013818(&sUnknown_203B2CC->s38.input, GetNumPKMNNews(), a2, a0);
CreateMenuOnWindow(&sUnknown_203B2CC->s38.input, GetNumPKMNNews(), a2, a0);
sUnknown_203B2CC->s38.input.menuIndex = sUnknown_203B2D0;
sUnknown_203B2CC->s38.input.unk1E = sUnknown_203B2D2;
@@ -87,7 +87,7 @@ u32 sub_802B720(bool8 a0)
u8 GetPokemonNewsIndex(void)
{
return sUnknown_203B2CC->receivedNewsletters[(sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.unk1C) + sUnknown_203B2CC->s38.input.menuIndex];
return sUnknown_203B2CC->receivedNewsletters[(sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.entriesPerPage) + sUnknown_203B2CC->s38.input.menuIndex];
}
void sub_802B7D0(bool8 cursorSprite)
@@ -95,7 +95,7 @@ void sub_802B7D0(bool8 cursorSprite)
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B2CC->s38.windows, FALSE, FALSE);
sUnknown_203B2CC->s38.input.unk22 = GetNumPKMNNews();
sUnknown_203B2CC->s38.input.totalEntriesCount = GetNumPKMNNews();
sub_8013984(&sUnknown_203B2CC->s38.input);
sub_802B880();
CreatePKMNNewsMenu();
@@ -141,7 +141,7 @@ static void CreatePKMNNewsMenu(void)
for (index = 0; index < sUnknown_203B2CC->s38.input.unk1A; index++) {
y = GetMenuEntryYCoord(&sUnknown_203B2CC->s38.input, index);
new_index = (sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.unk1C) + index;
new_index = (sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.entriesPerPage) + index;
mailIndex = sUnknown_203B2CC->receivedNewsletters[new_index];
sub_803B6B0(10, y, 6, sUnknown_203B2CC->s38.winId);
sub_802BC7C();

View File

@@ -83,7 +83,7 @@ u32 sub_802BDEC(bool8 a0)
u8 sub_802BE74(void)
{
return sUnknown_203B2D8->unk0[(sUnknown_203B2D8->unk4.s0.input.unk1E * sUnknown_203B2D8->unk4.s0.input.unk1C) + sUnknown_203B2D8->unk4.s0.input.menuIndex];
return sUnknown_203B2D8->unk0[(sUnknown_203B2D8->unk4.s0.input.unk1E * sUnknown_203B2D8->unk4.s0.input.entriesPerPage) + sUnknown_203B2D8->unk4.s0.input.menuIndex];
}
void sub_802BE94(bool8 cursorSprite)
@@ -91,7 +91,7 @@ void sub_802BE94(bool8 cursorSprite)
ResetUnusedInputStruct();
ShowWindows(&sUnknown_203B2D8->unk4.s0.windows, FALSE, FALSE);
sUnknown_203B2D8->unk4.s0.input.unk22 = CountEmptyMailSlots();
sUnknown_203B2D8->unk4.s0.input.totalEntriesCount = CountEmptyMailSlots();
sub_8013984(&sUnknown_203B2D8->unk4.s0.input);
sub_802BF30();
CreateMailMenu();
@@ -134,7 +134,7 @@ void CreateMailMenu(void)
PrintStringOnWindow((sUnknown_203B2D8->unk4.s0.input.unk1E * 8) + 10, 0, sMailbox, sUnknown_203B2D8->unk4.s0.winId, 0);
for (i = 0; i < sUnknown_203B2D8->unk4.s0.input.unk1A; i++) {
mail = GetMailboxSlotInfo(sUnknown_203B2D8->unk0[(sUnknown_203B2D8->unk4.s0.input.unk1E * sUnknown_203B2D8->unk4.s0.input.unk1C) + i]);
mail = GetMailboxSlotInfo(sUnknown_203B2D8->unk0[(sUnknown_203B2D8->unk4.s0.input.unk1E * sUnknown_203B2D8->unk4.s0.input.entriesPerPage) + i]);
local.unk0[0] = sUnknown_203B2D8->unk4.s0.winId;
local.y = GetMenuEntryYCoord(&sUnknown_203B2D8->unk4.s0.input, i);

View File

@@ -37,7 +37,7 @@ bool8 sub_80211AC(u32 mode, u32 a1)
sWigglytuffShop1Work->s40.s0.unk38->header = &sWigglytuffShop1Work->s40.header;
ResetUnusedInputStruct();
ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, TRUE, TRUE);
sub_8013818(&sWigglytuffShop1Work->s40.s0.input, sub_8021664(), 10, a1);
CreateMenuOnWindow(&sWigglytuffShop1Work->s40.s0.input, sub_8021664(), 10, a1);
if (sUnknown_203B284 == sWigglytuffShop1Work->mode) {
sWigglytuffShop1Work->s40.s0.input.menuIndex = sUnknown_203B288;
@@ -82,14 +82,14 @@ u32 sub_8021274(bool8 a0)
u8 sub_802132C(void)
{
return sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->s40.s0.input.unk1E * sWigglytuffShop1Work->s40.s0.input.unk1C) + sWigglytuffShop1Work->s40.s0.input.menuIndex];
return sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->s40.s0.input.unk1E * sWigglytuffShop1Work->s40.s0.input.entriesPerPage) + sWigglytuffShop1Work->s40.s0.input.menuIndex];
}
void sub_8021354(bool8 cursorSprite)
{
ResetUnusedInputStruct();
ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, FALSE, FALSE);
sWigglytuffShop1Work->s40.s0.input.unk22 = sub_8021664();
sWigglytuffShop1Work->s40.s0.input.totalEntriesCount = sub_8021664();
sub_8013984(&sWigglytuffShop1Work->s40.s0.input);
sub_8021410();
sub_8021494();
@@ -138,7 +138,7 @@ void sub_8021494(void)
sub_8012BC4((sWigglytuffShop1Work->s40.header.width * 8) + 4, 0, sWigglytuffShop1Work->s40.s0.input.unk1E + 1, 1, 7, sWigglytuffShop1Work->s40.s0.winId);
for (i = 0; i < sWigglytuffShop1Work->s40.s0.input.unk1A; i++) {
friendAreaIndex = sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->s40.s0.input.unk1E * sWigglytuffShop1Work->s40.s0.input.unk1C) + i];
friendAreaIndex = sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->s40.s0.input.unk1E * sWigglytuffShop1Work->s40.s0.input.entriesPerPage) + i];
if (sWigglytuffShop1Work->mode == 2) {
WriteFriendAreaName(buffer1, friendAreaIndex, TRUE);

View File

@@ -99,7 +99,7 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3)
sub_8012D08(gUnknown_203B320->s28.s0.unk38, r3);
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B320->s28.s0.windows, TRUE, TRUE);
sub_8013818(&gUnknown_203B320->s28.s0.input, sub_8030A74(), r3, r1);
CreateMenuOnWindow(&gUnknown_203B320->s28.s0.input, sub_8030A74(), r3, r1);
sub_80308A0();
sub_803092C();
return 1;
@@ -137,12 +137,12 @@ u32 sub_8030768(u8 r0)
u8 sub_80307EC(void)
{
return gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.unk1C) + gUnknown_203B320->s28.s0.input.menuIndex];
return gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.entriesPerPage) + gUnknown_203B320->s28.s0.input.menuIndex];
}
void sub_8030810(u8 r0)
{
gUnknown_203B320->s28.s0.input.unk22 = sub_8030A74();
gUnknown_203B320->s28.s0.input.totalEntriesCount = sub_8030A74();
sub_8013984(&gUnknown_203B320->s28.s0.input);
sub_80308A0();
@@ -199,7 +199,7 @@ void sub_803092C(void)
sub_8012BC4(r5,0,gUnknown_203B320->s28.s0.input.unk1E + 1,1,7,gUnknown_203B320->s28.s0.winId);
for (index = 0; index < gUnknown_203B320->s28.s0.input.unk1A; index++) {
mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.unk1C) + index]);
mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.entriesPerPage) + index]);
local.unk0[0] = gUnknown_203B320->s28.s0.winId;
local.y = GetMenuEntryYCoord(&gUnknown_203B320->s28.s0.input,index);
local.mailTitleType = 7;

View File

@@ -78,14 +78,14 @@ u32 sub_802C1E4(bool8 a0)
u8 sub_802C26C(void)
{
return gUnknown_203B2E0->pelipperBoardSlots[(gUnknown_203B2E0->unk8.s0.input.unk1E * gUnknown_203B2E0->unk8.s0.input.unk1C) + gUnknown_203B2E0->unk8.s0.input.menuIndex];
return gUnknown_203B2E0->pelipperBoardSlots[(gUnknown_203B2E0->unk8.s0.input.unk1E * gUnknown_203B2E0->unk8.s0.input.entriesPerPage) + gUnknown_203B2E0->unk8.s0.input.menuIndex];
}
void sub_802C28C(bool8 cursorSprite)
{
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B2E0->unk8.s0.windows, FALSE, FALSE);
gUnknown_203B2E0->unk8.s0.input.unk22 = CountPelipperBoardSlots();
gUnknown_203B2E0->unk8.s0.input.totalEntriesCount = CountPelipperBoardSlots();
sub_8013984(&gUnknown_203B2E0->unk8.s0.input);
sub_802C328();
DrawPelipperBoardJobMenu();
@@ -137,7 +137,7 @@ void DrawPelipperBoardJobMenu(void)
sub_8012BC4(x, 0, gUnknown_203B2E0->unk8.s0.input.unk1E + 1, 2, 7, gUnknown_203B2E0->unk8.s0.winId);
for (i = 0; i < gUnknown_203B2E0->unk8.s0.input.unk1A; i++) {
slotIndex = (gUnknown_203B2E0->pelipperBoardSlots[(gUnknown_203B2E0->unk8.s0.input.unk1E * gUnknown_203B2E0->unk8.s0.input.unk1C) + i]);
slotIndex = (gUnknown_203B2E0->pelipperBoardSlots[(gUnknown_203B2E0->unk8.s0.input.unk1E * gUnknown_203B2E0->unk8.s0.input.entriesPerPage) + i]);
mail = GetPelipperBoardSlotInfo(slotIndex);
local.unk0[0] = gUnknown_203B2E0->unk8.s0.winId;
local.y = GetMenuEntryYCoord(&gUnknown_203B2E0->unk8.s0.input, i);

View File

@@ -80,14 +80,14 @@ u32 sub_802C598(bool8 a0)
u8 GetPelipperBoardSlotIndex(void)
{
return gUnknown_203B2E8->pelipperBoardSlots[(gUnknown_203B2E8->unk8.s0.input.unk1E * gUnknown_203B2E8->unk8.s0.input.unk1C) + gUnknown_203B2E8->unk8.s0.input.menuIndex];
return gUnknown_203B2E8->pelipperBoardSlots[(gUnknown_203B2E8->unk8.s0.input.unk1E * gUnknown_203B2E8->unk8.s0.input.entriesPerPage) + gUnknown_203B2E8->unk8.s0.input.menuIndex];
}
void sub_802C640(bool8 cursorSprite)
{
ResetUnusedInputStruct();
ShowWindows(&gUnknown_203B2E8->unk8.s0.windows, FALSE, FALSE);
gUnknown_203B2E8->unk8.s0.input.unk22 = CountAcceptedJobs();
gUnknown_203B2E8->unk8.s0.input.totalEntriesCount = CountAcceptedJobs();
sub_8013984(&gUnknown_203B2E8->unk8.s0.input);
sub_802C6DC();
DrawJobListMenu();
@@ -138,7 +138,7 @@ void DrawJobListMenu(void)
sub_8012BC4(x, 0, gUnknown_203B2E8->unk8.s0.input.unk1E + 1, 2, 7, gUnknown_203B2E8->unk8.s0.winId);
for (i = 0; i < gUnknown_203B2E8->unk8.s0.input.unk1A; i++) {
mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[(gUnknown_203B2E8->unk8.s0.input.unk1E * gUnknown_203B2E8->unk8.s0.input.unk1C) + i]);
mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[(gUnknown_203B2E8->unk8.s0.input.unk1E * gUnknown_203B2E8->unk8.s0.input.entriesPerPage) + i]);
local.unk0[0] = gUnknown_203B2E8->unk8.s0.winId;
local.y = GetMenuEntryYCoord(&gUnknown_203B2E8->unk8.s0.input, i);
sub_803B35C(mail, &local);

View File

@@ -64,7 +64,7 @@ u32 sub_802CE5C(bool8 a0)
u8 sub_802CEBC(void)
{
return (sUnknown_203B2F4->s0.input.unk1E * sUnknown_203B2F4->s0.input.unk1C) + sUnknown_203B2F4->s0.input.menuIndex;
return (sUnknown_203B2F4->s0.input.unk1E * sUnknown_203B2F4->s0.input.entriesPerPage) + sUnknown_203B2F4->s0.input.menuIndex;
}
void sub_802CED8(bool8 cursorSprite)
@@ -118,7 +118,7 @@ void sub_802CFD0(void)
sub_8012BC4(r5, 0, sUnknown_203B2F4->s0.input.unk1E + 1, 2, 7, sUnknown_203B2F4->s0.winId);
for (r5 = 0; r5 < sUnknown_203B2F4->s0.input.unk1A; r5++) {
iVar1 = sub_803B344((sUnknown_203B2F4->s0.input.unk1E * sUnknown_203B2F4->s0.input.unk1C) + r5);
iVar1 = sub_803B344((sUnknown_203B2F4->s0.input.unk1E * sUnknown_203B2F4->s0.input.entriesPerPage) + r5);
local.unk0[0] = sUnknown_203B2F4->s0.winId;
local.y = GetMenuEntryYCoord(&sUnknown_203B2F4->s0.input, r5);

View File

@@ -552,12 +552,12 @@ static bool8 PlayerEnterDungeonPrompt_Async(u8 *str)
menuInput.menuIndex = 1;
menuInput.unk1A = 2;
menuInput.unk1C = 2;
menuInput.entriesPerPage = 2;
menuInput.unk1E = 0;
menuInput.unk20 = 0;
menuInput.unk4 = 0;
menuInput.firstEntryY = 0;
menuInput.unk0 = 1;
menuInput.windowId = 1;
menuInput.unkC = 0;
menuInput.unkE = 0;
menuInput.unk14.x = 0;

View File

@@ -42,7 +42,7 @@
.include "src/iq_skill_info_menu.o"
.include "src/code_801C8C4.o"
.include "src/code_801D014.o"
.include "src/code_801D9E4.o"
.include "src/debug_field_map_window.o"
.include "src/options_menu1.o"
.include "src/options_menu2.o"
.include "src/hints_menu1.o"