diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2018-02-18 19:20:50 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-18 19:20:50 -0600 |
commit | 2e21a867487e2187a954a351f775bd3f3a9535b1 (patch) | |
tree | e57f9f6851404a7591cffa7bb7842d2fc6b2d8da /src/field/region_map.c | |
parent | adac76c8370b86176a52d8ecb2e349e2be13f8ba (diff) | |
parent | b47dffc5df147adcd241df4bf11fa161d84af4f4 (diff) |
Merge pull request #564 from camthesaxman/decompile_debug
decompile debug code
Diffstat (limited to 'src/field/region_map.c')
-rw-r--r-- | src/field/region_map.c | 202 |
1 files changed, 166 insertions, 36 deletions
diff --git a/src/field/region_map.c b/src/field/region_map.c index 7bfda1a81..6d50701d6 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1411,22 +1411,26 @@ static const u8 sUnknown_083E7920[][3] = {0, 49, 0}, }; -struct UnknownStruct4 +static const u8 *const sEverGrandeCityAreaNames[] = { - const u8 *const *unk0; - u16 mapSectionId; - u16 flag; + OtherText_PokeLeague, + OtherText_PokeCenter, }; -static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter}; +struct MultiPartMapSection +{ + const u8 *const *partNames; + u16 mapSectionId; + u16 requiredFlag; +}; -const struct UnknownStruct4 gUnknown_083E79C0[1] = +// Map sections that are divided into multiple parts. Ever Grande City is the only one. +static const struct MultiPartMapSection sMultiPartMapSections[1] = { {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY}, }; -// XXX: what is this? -static u8 *const ewram_ = gSharedMem; +static struct UnknownStruct3 *const sFlyDataPtr = (struct UnknownStruct3 *)gSharedMem; static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2}; @@ -1547,10 +1551,10 @@ void CB2_InitFlyRegionMap(void) Menu_EraseScreen(); break; case 3: - InitRegionMap(&ewram0_3.regionMap, 0); + InitRegionMap(&sFlyDataPtr->regionMap, 0); CreateRegionMapCursor(0, 0); CreateRegionMapPlayerIcon(1, 1); - ewram0_3.unk6 = ewram0_3.regionMap.mapSectionId; + sFlyDataPtr->unk6 = sFlyDataPtr->regionMap.mapSectionId; StringFill(ewramBlankMapName, CHAR_SPACE, 12); PrintFlyTargetName(); break; @@ -1593,36 +1597,34 @@ static void VBlankCB_FlyRegionMap(void) void CB2_FlyRegionMap(void) { - ewram0_3.unk0(); + sFlyDataPtr->unk0(); AnimateSprites(); BuildOamBuffer(); } void sub_80FC244(void (*func)(void)) { - ewram0_3.unk0 = func; - ewram0_3.unk4 = 0; + sFlyDataPtr->unk0 = func; + sFlyDataPtr->unk4 = 0; } static void PrintFlyTargetName(void) { - if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) + if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4) { + bool8 drawFrameDisabled = FALSE; u16 i; - bool32 drawFrameDisabled = FALSE; - for (i = 0; i < ARRAY_COUNT(gUnknown_083E79C0); i++) + for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++) { - const struct UnknownStruct4 *r4 = &gUnknown_083E79C0[i]; - - if (ewram0_3.regionMap.mapSectionId == r4->mapSectionId) + if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) { - if (FlagGet(r4->flag)) + if (FlagGet(sMultiPartMapSections[i].requiredFlag)) { Menu_DrawStdWindowFrame(16, 14, 29, 19); - Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 15); - MenuPrint_RightAligned(r4->unk0[ewram0_3.regionMap.everGrandeCityArea], 29, 17); - return; + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15); + MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 29, 17); + drawFrameDisabled = TRUE; } break; } @@ -1631,7 +1633,7 @@ static void PrintFlyTargetName(void) if (!drawFrameDisabled) { Menu_DrawStdWindowFrame(16, 16, 29, 19); - Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17); + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17); Menu_EraseWindowRect(16, 14, 29, 15); } } @@ -1732,7 +1734,7 @@ static void CreateSpecialAreaFlyTargetIcons(void) static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) { // Blink if our mapSectionId is the one selected on the map - if (ewram0_3.regionMap.mapSectionId == sprite->data[0]) + if (sFlyDataPtr->regionMap.mapSectionId == sprite->data[0]) { // Toggle visibility every 16 frames sprite->data[1]++; @@ -1751,11 +1753,11 @@ static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) static void sub_80FC5B4(void) { - switch (ewram0_3.unk4) + switch (sFlyDataPtr->unk4) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ewram0_3.unk4++; + sFlyDataPtr->unk4++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1767,7 +1769,7 @@ static void sub_80FC5B4(void) static void sub_80FC600(void) { - if (ewram0_3.unk4 == 0) + if (sFlyDataPtr->unk4 == 0) { switch (sub_80FAB60()) { @@ -1779,7 +1781,7 @@ static void sub_80FC600(void) PrintFlyTargetName(); break; case INPUT_EVENT_A_BUTTON: - if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) + if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4) { m4aSongNumStart(SE_SELECT); ewramA6E = 1; @@ -1797,11 +1799,11 @@ static void sub_80FC600(void) void sub_80FC69C(void) { - switch (ewram0_3.unk4) + switch (sFlyDataPtr->unk4) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - ewram0_3.unk4++; + sFlyDataPtr->unk4++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1809,7 +1811,7 @@ void sub_80FC69C(void) FreeRegionMapIconResources(); if (ewramA6E != 0) { - switch (ewram0_3.regionMap.mapSectionId) + switch (sFlyDataPtr->regionMap.mapSectionId) { case MAPSEC_SOUTHERN_ISLAND: sub_8053538(22); @@ -1821,13 +1823,13 @@ void sub_80FC69C(void) sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11); + sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? 20 : 11); break; default: - if (sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2] != 0) - sub_8053538(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2]); + if (sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2] != 0) + sub_8053538(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2]); else - warp1_set_2(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][0], sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][1], -1); + warp1_set_2(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][0], sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][1], -1); break; } sub_80865BC(); @@ -1839,3 +1841,131 @@ void sub_80FC69C(void) break; } } + +#if DEBUG + +void debug_sub_8110CCC(void) +{ + bool8 r7 = FALSE; + u16 i; + s16 indent; + + for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++) + { + if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) + { + if (FlagGet(sMultiPartMapSections[i].requiredFlag)) + { + indent = 12 - StringLength(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea]); + if (indent < 0) + indent = 0; + r7 = TRUE; + Menu_DrawStdWindowFrame(16, 14, 29, 19); + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15); + Menu_PrintText(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 17 + indent, 17); + } + break; + } + } + if (!r7) + { + Menu_DrawStdWindowFrame(16, 16, 29, 19); + Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17); + Menu_EraseWindowRect(16, 14, 29, 15); + } +} + +void debug_sub_8110D84(void) +{ + switch (sFlyDataPtr->unk4) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + sFlyDataPtr->unk4++; + break; + case 1: + if (!UpdatePaletteFade()) + sFlyDataPtr->unk4++; + break; + case 2: + switch (sub_80FAB60()) + { + case 0: + break; + case 3: + debug_sub_8110CCC(); + break; + case 4: + if (sFlyDataPtr->regionMap.unk16 != 0) + { + m4aSongNumStart(SE_SELECT); + gSharedMem[0xA6E] = 1; // TODO: what is this? + sub_80FC244(sub_80FC69C); + } + break; + case 5: + m4aSongNumStart(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sFlyDataPtr->unk4++; + break; + } + break; + case 3: + if (!UpdatePaletteFade()) + SetMainCallback2(sub_805469C); + break; + case 4: + if (sub_80FAB60() != 0) + { + debug_sub_8110CCC(); + } + else if (gMain.newKeys & A_BUTTON) + { + sub_80FBCA0(); + sub_80FAEC4(); + sFlyDataPtr->unk4++; + } + break; + case 5: + if (sub_80FAFC0() == 0) + { + CreateRegionMapCursor(0, 0); + sFlyDataPtr->unk4++; + } + break; + case 6: + if (sub_80FAB60() != 0) + { + debug_sub_8110CCC(); + } + if (gMain.newKeys & A_BUTTON) // no "else if" like above? + { + sub_80FBCA0(); + sub_80FAEC4(); + sFlyDataPtr->unk4++; + } + break; + case 7: + if (sub_80FAFC0() == 0) + { + CreateRegionMapCursor(0, 0); + sFlyDataPtr->unk4 = 3; + } + break; + } +} + +void debug_sub_8110F28(void) +{ + CB2_InitFlyRegionMap(); + + if (gMain.callback2 == CB2_FlyRegionMap) + { + sub_80FBF94(); + sub_80FC244(debug_sub_8110D84); + debug_sub_8110CCC(); + } +} + +#endif + |