diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-06-28 09:35:24 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-06-28 09:35:24 -0400 |
commit | 921a99ec5bc3a310d896a6a148294c04612ed354 (patch) | |
tree | 4d4407de4a9d44c6f3204023ae3d208886c5c8d9 /src | |
parent | f90a42fa5248c61fef9bf1c485f479314da176cd (diff) |
Merge region map state structs
Diffstat (limited to 'src')
-rw-r--r-- | src/field_region_map.c | 39 | ||||
-rw-r--r-- | src/region_map.c | 90 |
2 files changed, 52 insertions, 77 deletions
diff --git a/src/field_region_map.c b/src/field_region_map.c index 10d5a4a5e..319235754 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -9,27 +9,11 @@ #include "text.h" #include "ewram.h" -struct RegionMapStruct -{ - u8 str[0x16]; - u8 unk16; - u8 filler[0x869]; -}; - -struct UnkStruct -{ - MainCallback callback; - u8 filler[4]; - // This should be RegionMap, but I can't do that because it overlaps unk888. - struct RegionMapStruct unk8; - u16 unk888; -}; - void FieldInitRegionMap(MainCallback callback) { SetVBlankCallback(NULL); - ewram0_5.unk888 = 0; - ewram0_5.callback = callback; + eRegionMapState.unk_888[0] = 0; + eRegionMapState.callback = callback; SetMainCallback2(CB2_FieldInitRegionMap); } @@ -46,8 +30,7 @@ void CB2_FieldInitRegionMap(void) REG_BG3VOFS = 0; ResetSpriteData(); FreeAllSpritePalettes(); - // TODO: remove this cast - InitRegionMap((void *)&ewram0_5.unk8, 0); + InitRegionMap(&eRegionMapState.regionMap, 0); CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); Text_LoadWindowTemplate(&gWindowTemplate_81E709C); @@ -80,15 +63,15 @@ void CB2_FieldRegionMap(void) void sub_813EFDC(void) { - switch (ewram0_5.unk888) + switch (eRegionMapState.unk_888[0]) { case 0: REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; - ewram0_5.unk888++; + eRegionMapState.unk_888[0]++; break; case 1: if (!gPaletteFade.active) - ewram0_5.unk888++; + eRegionMapState.unk_888[0]++; break; case 2: switch (sub_80FAB60()) @@ -98,18 +81,18 @@ void sub_813EFDC(void) break; case 4: case 5: - ewram0_5.unk888++; + eRegionMapState.unk_888[0]++; } break; case 3: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); - ewram0_5.unk888++; + eRegionMapState.unk_888[0]++; break; case 4: if (!gPaletteFade.active) { FreeRegionMapIconResources(); - SetMainCallback2(ewram0_5.callback); + SetMainCallback2(eRegionMapState.callback); } break; } @@ -118,6 +101,6 @@ void sub_813EFDC(void) void sub_813F0C8(void) { Menu_BlankWindowRect(17, 17, 28, 18); - if (ewram0_5.unk8.unk16) - Menu_PrintText(ewram0_5.unk8.str, 17, 17); + if (eRegionMapState.regionMap.unk16) + Menu_PrintText(eRegionMapState.regionMap.mapSectionName, 17, 17); } diff --git a/src/region_map.c b/src/region_map.c index 8c4e694bc..0362fe0b4 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1156,14 +1156,6 @@ static void GetRegionMapLocationPosition(u16 mapSectionId, u16 *x, u16 *y, u16 * *height = gRegionMapEntries[mapSectionId].height; } -struct UnknownStruct3 -{ - void (*unk0)(void); - u16 unk4; - u16 unk6; - struct RegionMap regionMap; -}; - static const u16 sFlyRegionMapFrame_Pal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal"); static const u8 sFlyRegionMapFrame_ImageLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz"); static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz"); @@ -1243,7 +1235,7 @@ static const struct MultiPartMapSection sMultiPartMapSections[1] = {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY}, }; -static struct UnknownStruct3 *const sFlyDataPtr = (struct UnknownStruct3 *)gSharedMem; +struct RegionMapState *const gRegionMapState = &eRegionMapState; static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2}; @@ -1364,11 +1356,11 @@ void CB2_InitFlyRegionMap(void) Menu_EraseScreen(); break; case 3: - InitRegionMap(&sFlyDataPtr->regionMap, 0); + InitRegionMap(&gRegionMapState->regionMap, 0); CreateRegionMapCursor(0, 0); CreateRegionMapPlayerIcon(1, 1); - sFlyDataPtr->unk6 = sFlyDataPtr->regionMap.mapSectionId; - StringFill(ewramBlankMapName, CHAR_SPACE, 12); + gRegionMapState->mapSectionId = gRegionMapState->regionMap.mapSectionId; + StringFill(gRegionMapState->blankMapName, CHAR_SPACE, 12); PrintFlyTargetName(); break; case 4: @@ -1410,33 +1402,33 @@ static void VBlankCB_FlyRegionMap(void) void CB2_FlyRegionMap(void) { - sFlyDataPtr->unk0(); + gRegionMapState->callback(); AnimateSprites(); BuildOamBuffer(); } void sub_80FC244(void (*func)(void)) { - sFlyDataPtr->unk0 = func; - sFlyDataPtr->unk4 = 0; + gRegionMapState->callback = func; + gRegionMapState->state = 0; } static void PrintFlyTargetName(void) { - if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4) + if (gRegionMapState->regionMap.unk16 == 2 || gRegionMapState->regionMap.unk16 == 4) { bool8 drawFrameDisabled = FALSE; u16 i; for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++) { - if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) + if (gRegionMapState->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) { if (FlagGet(sMultiPartMapSections[i].requiredFlag)) { Menu_DrawStdWindowFrame(16, 14, 29, 19); - Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15); - MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 29, 17); + Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 15); + MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[gRegionMapState->regionMap.everGrandeCityArea], 29, 17); drawFrameDisabled = TRUE; } break; @@ -1446,14 +1438,14 @@ static void PrintFlyTargetName(void) if (!drawFrameDisabled) { Menu_DrawStdWindowFrame(16, 16, 29, 19); - Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17); + Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 17); Menu_EraseWindowRect(16, 14, 29, 15); } } else { Menu_DrawStdWindowFrame(16, 16, 29, 19); - Menu_PrintText(ewramBlankMapName, 17, 17); + Menu_PrintText(gRegionMapState->blankMapName, 17, 17); Menu_EraseWindowRect(16, 14, 29, 15); } } @@ -1462,8 +1454,8 @@ static void CreateFlyTargetGraphics(void) { struct SpriteSheet spriteSheet; - LZ77UnCompWram(sFlyTargetIcons_ImageLZ, ewram888); - spriteSheet.data = ewram888; + LZ77UnCompWram(sFlyTargetIcons_ImageLZ, gRegionMapState->unk_888); + spriteSheet.data = (u8 *)gRegionMapState->unk_888; spriteSheet.size = 0x1C0; spriteSheet.tag = 2; LoadSpriteSheet(&spriteSheet); @@ -1547,7 +1539,7 @@ static void CreateSpecialAreaFlyTargetIcons(void) static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) { // Blink if our mapSectionId is the one selected on the map - if (sFlyDataPtr->regionMap.mapSectionId == sprite->data[0]) + if (gRegionMapState->regionMap.mapSectionId == sprite->data[0]) { // Toggle visibility every 16 frames sprite->data[1]++; @@ -1566,11 +1558,11 @@ static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) static void sub_80FC5B4(void) { - switch (sFlyDataPtr->unk4) + switch (gRegionMapState->state) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); - sFlyDataPtr->unk4++; + gRegionMapState->state++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1582,7 +1574,7 @@ static void sub_80FC5B4(void) static void sub_80FC600(void) { - if (sFlyDataPtr->unk4 == 0) + if (gRegionMapState->state == 0) { switch (sub_80FAB60()) { @@ -1594,7 +1586,7 @@ static void sub_80FC600(void) PrintFlyTargetName(); break; case INPUT_EVENT_A_BUTTON: - if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4) + if (gRegionMapState->regionMap.unk16 == 2 || gRegionMapState->regionMap.unk16 == 4) { m4aSongNumStart(SE_SELECT); ewramA6E = 1; @@ -1612,11 +1604,11 @@ static void sub_80FC600(void) void sub_80FC69C(void) { - switch (sFlyDataPtr->unk4) + switch (gRegionMapState->state) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); - sFlyDataPtr->unk4++; + gRegionMapState->state++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1624,7 +1616,7 @@ void sub_80FC69C(void) FreeRegionMapIconResources(); if (ewramA6E != 0) { - switch (sFlyDataPtr->regionMap.mapSectionId) + switch (gRegionMapState->regionMap.mapSectionId) { case MAPSEC_SOUTHERN_ISLAND: sub_8053538(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR); @@ -1636,13 +1628,13 @@ void sub_80FC69C(void) sub_8053538((gSaveBlock2.playerGender == MALE) ? HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE : HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE : HEAL_LOCATION_EVER_GRANDE_CITY); + sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && gRegionMapState->regionMap.everGrandeCityArea == 0) ? HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE : HEAL_LOCATION_EVER_GRANDE_CITY); break; default: - if (sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2] != 0) - sub_8053538(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2]); + if (sMapHealLocations[gRegionMapState->regionMap.mapSectionId][2] != 0) + sub_8053538(sMapHealLocations[gRegionMapState->regionMap.mapSectionId][2]); else - warp1_set_2(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][0], sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][1], -1); + warp1_set_2(sMapHealLocations[gRegionMapState->regionMap.mapSectionId][0], sMapHealLocations[gRegionMapState->regionMap.mapSectionId][1], -1); break; } sub_80865BC(); @@ -1665,17 +1657,17 @@ void debug_sub_8110CCC(void) for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++) { - if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) + if (gRegionMapState->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId) { if (FlagGet(sMultiPartMapSections[i].requiredFlag)) { - indent = 12 - StringLength(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea]); + indent = 12 - StringLength(sMultiPartMapSections[i].partNames[gRegionMapState->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); + Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 15); + Menu_PrintText(sMultiPartMapSections[i].partNames[gRegionMapState->regionMap.everGrandeCityArea], 17 + indent, 17); } break; } @@ -1683,22 +1675,22 @@ void debug_sub_8110CCC(void) if (!r7) { Menu_DrawStdWindowFrame(16, 16, 29, 19); - Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17); + Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 17); Menu_EraseWindowRect(16, 14, 29, 15); } } void debug_sub_8110D84(void) { - switch (sFlyDataPtr->unk4) + switch (gRegionMapState->state) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); - sFlyDataPtr->unk4++; + gRegionMapState->state++; break; case 1: if (!UpdatePaletteFade()) - sFlyDataPtr->unk4++; + gRegionMapState->state++; break; case 2: switch (sub_80FAB60()) @@ -1709,7 +1701,7 @@ void debug_sub_8110D84(void) debug_sub_8110CCC(); break; case 4: - if (sFlyDataPtr->regionMap.unk16 != 0) + if (gRegionMapState->regionMap.unk16 != 0) { m4aSongNumStart(SE_SELECT); gSharedMem[0xA6E] = 1; // TODO: what is this? @@ -1719,7 +1711,7 @@ void debug_sub_8110D84(void) case 5: m4aSongNumStart(SE_SELECT); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); - sFlyDataPtr->unk4++; + gRegionMapState->state++; break; } break; @@ -1736,14 +1728,14 @@ void debug_sub_8110D84(void) { sub_80FBCA0(); sub_80FAEC4(); - sFlyDataPtr->unk4++; + gRegionMapState->state++; } break; case 5: if (sub_80FAFC0() == 0) { CreateRegionMapCursor(0, 0); - sFlyDataPtr->unk4++; + gRegionMapState->state++; } break; case 6: @@ -1755,14 +1747,14 @@ void debug_sub_8110D84(void) { sub_80FBCA0(); sub_80FAEC4(); - sFlyDataPtr->unk4++; + gRegionMapState->state++; } break; case 7: if (sub_80FAFC0() == 0) { CreateRegionMapCursor(0, 0); - sFlyDataPtr->unk4 = 3; + gRegionMapState->state = 3; } break; } |