diff --git a/data/pokenav.s b/data/pokenav.s index 030358715..284ccee24 100644 --- a/data/pokenav.s +++ b/data/pokenav.s @@ -3,55 +3,6 @@ .section .rodata -gUnknown_0861F590:: @ 861F590 - .incbin "graphics/pokenav/icon2.gbapal" - -gUnknown_0861F5B0:: @ 861F5B0 - .incbin "graphics/pokenav/icon2.4bpp.lz" - -gUnknown_0861F994:: @ 861F994 - .incbin "graphics/pokenav/icon2_unused.4bpp.lz" - -@ struct BgTemplate gUnknown_0861FA04 { -@ .bg: 0, -@ .charBaseIndex: 0 -@ .mapBaseIndex: 5 -@ .screenSize: 2, -@ -@ } -gUnknown_0861FA04:: @ 861FA04 - .byte 0x50 - .byte 0x0 - .byte 0x0 - .byte 0x0 - -gUnknown_0861FA08:: @ 861FA08 - window_template 0, 1, 0x16, 0x10, 0x2, 0x0, 0x36 - null_window_template - -gUnknown_0861FA18:: @ 861FA18 - .4byte gUnknown_085EBED5 - .4byte gUnknown_085EBED9 - .4byte gUnknown_085EBEE9 - .4byte gUnknown_085EBEF9 - .4byte gUnknown_085EBF0E - .4byte gUnknown_085EBF22 - .4byte gUnknown_085EBF39 - .4byte gUnknown_085EBF49 - .4byte gUnknown_085EBF57 - .4byte gUnknown_085EBF60 - .4byte gUnknown_085EBF73 - .4byte gUnknown_085EBF84 - -gUnknown_0861FA48:: @ 861FA48 - .byte 0x4 - .byte 0x1 - .byte 0x2 - .byte 0x0 - -gUnknown_0861FA4C:: @ 861FA4C - obj_tiles gUnknown_0861F5B0, 0x1000, 0 - gUnknown_0861FA54:: @ 861FA54 obj_pal gUnknown_0861F590, 0 null_obj_pal diff --git a/include/strings.h b/include/strings.h index 9557dcca2..3acbc1c55 100644 --- a/include/strings.h +++ b/include/strings.h @@ -986,6 +986,19 @@ extern const u8 gText_SomeonesPC[]; extern const u8 gText_PlayersPC[]; extern const u8 gText_WhichPCShouldBeAccessed[]; +extern const u8 gText_Navgear_ClearButtonList[]; +extern const u8 gText_NavgearMap_ZoomedOutButtons[]; +extern const u8 gText_NavgearMap_ZoomedInButtons[]; +extern const u8 gText_NavgearCondition_MonListButtons[]; +extern const u8 gText_NavgearCondition_MonStatusButtons[]; +extern const u8 gText_NavgearCondition_MarkingButtons[]; +extern const u8 gText_NavgearMatchCall_TrainerListButtons[]; +extern const u8 gText_NavgearMatchCall_CallMenuButtons[]; +extern const u8 gText_NavgearMatchCall_CheckTrainerButtons[]; +extern const u8 gText_NavgearRibbons_MonListButtons[]; +extern const u8 gText_NavgearRibbons_RibbonListButtons[]; +extern const u8 gText_NavgearRibbons_RibbonCheckButtons[]; + extern const u8 gUnknown_085EAD37[]; extern const u8 gUnknown_085EAD41[]; extern const u8 gUnknown_085EAD67[]; diff --git a/src/pokenav_main.c b/src/pokenav_main.c index 0b772ffe6..2cf370630 100644 --- a/src/pokenav_main.c +++ b/src/pokenav_main.c @@ -15,6 +15,7 @@ #include "graphics.h" #include "gba/macro.h" #include "decompress.h" +#include "strings.h" #define UNKNOWN_OFFSET 100000 @@ -33,10 +34,6 @@ struct UnknownStruct_0203CF40 { void* field10[19]; }; -struct UnknownStruct_0861F3EC { - u32 (*data[7])(void); -}; - struct UnknownStruct_sub_81C7850 { // Unknown size; at least 3. void (*data[3])(u32); @@ -146,7 +143,7 @@ void sub_81C7B74(void); void sub_81C7C94(void); -static u32 (*const gUnknown_0861F3EC[15][7])(void) = +u32 (*const gUnknown_0861F3EC[15][7])(void) = { { (u32 (*)(void))sub_81C9298, @@ -285,13 +282,70 @@ static u32 (*const gUnknown_0861F3EC[15][7])(void) = }, }; -extern struct BgTemplate gUnknown_0861FA04; -extern struct WindowTemplate gUnknown_0861FA08; +const u16 gUnknown_0861F590[] = INCBIN_U16("graphics/pokenav/icon2.gbapal"); +const u32 gUnknown_0861F5B0[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz"); +const u32 gUnknown_0861F994[] = INCBIN_U32("graphics/pokenav/icon2_unused.4bpp.lz"); + +const struct BgTemplate gUnknown_0861FA04 = { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 5, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, +}; + +const struct WindowTemplate gUnknown_0861FA08[2] = { + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 0x16, + .width = 0x10, + .height = 0x2, + .paletteNum = 0, + .baseBlock = 0x36, + }, + { + .bg = 0xFF, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 0, + .height = 0, + .paletteNum = 0, + .baseBlock = 0, + }, +}; + +const u8 *const (MenuButtonReminders[12]) = { + gText_Navgear_ClearButtonList, + gText_NavgearMap_ZoomedOutButtons, + gText_NavgearMap_ZoomedInButtons, + gText_NavgearCondition_MonListButtons, + gText_NavgearCondition_MonStatusButtons, + gText_NavgearCondition_MarkingButtons, + gText_NavgearMatchCall_TrainerListButtons, + gText_NavgearMatchCall_CallMenuButtons, + gText_NavgearMatchCall_CheckTrainerButtons, + gText_NavgearRibbons_MonListButtons, + gText_NavgearRibbons_RibbonListButtons, + gText_NavgearRibbons_RibbonCheckButtons, +}; + +const u8 gMenuButtonReminderColor[4] = { + 4, 1, 2, 0 +}; + +const struct CompressedSpriteSheet gUnknown_0861FA4C[1] = { + { + .data = gUnknown_0861F5B0, + .size = 0x1000, + .tag = 0, + } +}; + extern struct UnknownStruct_0203CF40 *gUnknown_0203CF40; extern u8 gUnknown_0203CF3C; -extern u8 gUnknown_0861FA48; -//extern struct UnknownStruct_0861F3EC gUnknown_0861F3EC[7]; // Unknown size; at least 7. -extern const u8 *(gUnknown_0861FA18[]); extern const struct CompressedSpriteSheet gUnknown_0861FA4C[]; extern const struct PaletteDescriptor gUnknown_0861FA54; extern const struct SpriteTemplate gUnknown_0861FB04; @@ -735,29 +789,29 @@ u32 sub_81C7764(s32 a0) { void sub_81C7834(u32 (*a0)(void), u32(*a1)(void)) { // This is a guess. - struct UnknownStruct_0861F3EC *v1; + u32 (**v1)(void); v1 = sub_81C763C(0); - v1->data[0] = a0; - v1->data[1] = a1; - v1->data[2] = NULL; + v1[0] = a0; + v1[1] = a1; + v1[2] = NULL; } void sub_81C7850(u32 a0) { // This is a guess. - struct UnknownStruct_sub_81C7850 *v1; + void (**v1)(u32); v1 = sub_81C763C(0); - v1->data[2] = NULL; - v1->data[0](a0); + v1[2] = NULL; + v1[0](a0); } u32 sub_81C786C(void) { // This is a guess. - struct UnknownStruct_0861F3EC *v1; + u32 (**v1)(void); v1 = sub_81C763C(0); - return v1->data[1](); + return v1[1](); } void sub_81C7880(void) { @@ -1014,7 +1068,7 @@ void sub_81C7B74(void) { u32 *v1; v1 = sub_81C763C(0); - InitWindows(&gUnknown_0861FA08); + InitWindows(&gUnknown_0861FA08[0]); v1[4] = 0; sub_81C7BF8(0); PutWindowTilemap(v1[4]); @@ -1026,7 +1080,7 @@ void sub_81C7BA4(u32 a0) { v1 = sub_81C763C(0); sub_81C7BF8(v1[4]); - AddTextPrinterParameterized3(v1[4], 1, 0, 1, &gUnknown_0861FA48, 0, gUnknown_0861FA18[a0]); + AddTextPrinterParameterized3(v1[4], 1, 0, 1, gMenuButtonReminderColor, 0, MenuButtonReminders[a0]); } bool8 sub_81C7BE8(void) { diff --git a/src/strings.c b/src/strings.c index b0eb048ba..f81a19083 100644 --- a/src/strings.c +++ b/src/strings.c @@ -965,18 +965,18 @@ const u8 gUnknown_085EBE8E[] = _("Can't call opponent here."); const u8 gUnknown_085EBEA8[] = _("STRATEGY"); const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON"); const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION"); -const u8 gUnknown_085EBED5[] = _("{CLEAR 0x80}"); -const u8 gUnknown_085EBED9[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBEE9[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBEF9[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF0E[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF22[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF39[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF49[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF57[] = _("{B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF60[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF73[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL"); -const u8 gUnknown_085EBF84[] = _("{B_BUTTON}CANCEL"); +const u8 gText_Navgear_ClearButtonList[] = _("{CLEAR 0x80}"); +const u8 gText_NavgearMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL"); +const u8 gText_NavgearMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL"); +const u8 gText_NavgearCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL"); +const u8 gText_NavgearCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL"); +const u8 gText_NavgearCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL"); +const u8 gText_NavgearMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL"); +const u8 gText_NavgearMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL"); +const u8 gText_NavgearMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL"); +const u8 gText_NavgearRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL"); +const u8 gText_NavgearRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL"); +const u8 gText_NavgearRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL"); const u8 gText_NatureSlash[] = _("NATURE/"); const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!"); const u8 gText_InParty[] = _("IN PARTY");