diff options
Diffstat (limited to 'src/secret_base.c')
-rw-r--r-- | src/secret_base.c | 397 |
1 files changed, 105 insertions, 292 deletions
diff --git a/src/secret_base.c b/src/secret_base.c index de2b7221a..c71f7ed23 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1,17 +1,19 @@ // Includes #include "global.h" +#include "constants/bg_event_constants.h" +#include "constants/decorations.h" #include "malloc.h" +#include "main.h" #include "task.h" #include "palette.h" -#include "list_menu.h" #include "window.h" +#include "list_menu.h" #include "menu.h" #include "menu_helpers.h" -#include "new_menu_helpers.h" -#include "menu_indicators.h" -#include "map_constants.h" -#include "songs.h" +#include "constants/maps.h" +#include "constants/songs.h" +#include "constants/species.h" #include "sound.h" #include "overworld.h" #include "fieldmap.h" @@ -19,7 +21,7 @@ #include "field_player_avatar.h" #include "field_screen.h" #include "field_weather.h" -#include "field_map_obj.h" +#include "event_object_movement.h" #include "field_effect.h" #include "fldeff_80F9BCC.h" #include "metatile_behavior.h" @@ -31,11 +33,15 @@ #include "international_string_util.h" #include "event_data.h" #include "battle.h" +#include "battle_setup.h" #include "rom6.h" #include "decoration.h" #include "link.h" #include "tv.h" #include "secret_base.h" +#include "constants/map_types.h" + +extern void mapldr_default(void); // Static type declarations @@ -59,7 +65,7 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; void sub_80E9C9C(u8 taskId); void game_continue(u8 taskId); -void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu); +void sub_80E9DEC(s32 a0, bool8 flag, struct ListMenu *menu); void sub_80E9E00(u8 taskId); void sub_80E9E44(u8 taskId); void sub_80E9E90(u8 taskId); @@ -89,30 +95,30 @@ const struct { }; const u8 gUnknown_0858CFE8[] = { - MAP_ID_SECRET_BASE_RED_CAVE1, 0x00, 0x01, 0x03, - MAP_ID_SECRET_BASE_RED_CAVE2, 0x00, 0x05, 0x09, - MAP_ID_SECRET_BASE_RED_CAVE3, 0x00, 0x01, 0x03, - MAP_ID_SECRET_BASE_RED_CAVE4, 0x00, 0x07, 0x0d, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 0x00, 0x02, 0x03, - MAP_ID_SECRET_BASE_BROWN_CAVE2, 0x00, 0x09, 0x02, - MAP_ID_SECRET_BASE_BROWN_CAVE3, 0x00, 0x0d, 0x04, - MAP_ID_SECRET_BASE_BROWN_CAVE4, 0x00, 0x01, 0x02, - MAP_ID_SECRET_BASE_BLUE_CAVE1, 0x00, 0x01, 0x03, - MAP_ID_SECRET_BASE_BLUE_CAVE2, 0x00, 0x01, 0x02, - MAP_ID_SECRET_BASE_BLUE_CAVE3, 0x00, 0x03, 0x0f, - MAP_ID_SECRET_BASE_BLUE_CAVE4, 0x00, 0x03, 0x0e, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, 0x00, 0x09, 0x03, - MAP_ID_SECRET_BASE_YELLOW_CAVE2, 0x00, 0x08, 0x07, - MAP_ID_SECRET_BASE_YELLOW_CAVE3, 0x00, 0x03, 0x06, - MAP_ID_SECRET_BASE_YELLOW_CAVE4, 0x00, 0x05, 0x09, - MAP_ID_SECRET_BASE_TREE1, 0x00, 0x02, 0x03, - MAP_ID_SECRET_BASE_TREE2, 0x00, 0x05, 0x06, - MAP_ID_SECRET_BASE_TREE3, 0x00, 0x0f, 0x03, - MAP_ID_SECRET_BASE_TREE4, 0x00, 0x04, 0x0a, - MAP_ID_SECRET_BASE_SHRUB1, 0x00, 0x03, 0x03, - MAP_ID_SECRET_BASE_SHRUB2, 0x00, 0x01, 0x02, - MAP_ID_SECRET_BASE_SHRUB3, 0x00, 0x07, 0x08, - MAP_ID_SECRET_BASE_SHRUB4, 0x00, 0x09, 0x06 + MAP_NUM(SECRET_BASE_RED_CAVE1), 0x00, 0x01, 0x03, + MAP_NUM(SECRET_BASE_RED_CAVE2), 0x00, 0x05, 0x09, + MAP_NUM(SECRET_BASE_RED_CAVE3), 0x00, 0x01, 0x03, + MAP_NUM(SECRET_BASE_RED_CAVE4), 0x00, 0x07, 0x0d, + MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0x00, 0x02, 0x03, + MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0x00, 0x09, 0x02, + MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0x00, 0x0d, 0x04, + MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0x00, 0x01, 0x02, + MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0x00, 0x01, 0x03, + MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0x00, 0x01, 0x02, + MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0x00, 0x03, 0x0f, + MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0x00, 0x03, 0x0e, + MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0x00, 0x09, 0x03, + MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0x00, 0x08, 0x07, + MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0x00, 0x03, 0x06, + MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0x00, 0x05, 0x09, + MAP_NUM(SECRET_BASE_TREE1), 0x00, 0x02, 0x03, + MAP_NUM(SECRET_BASE_TREE2), 0x00, 0x05, 0x06, + MAP_NUM(SECRET_BASE_TREE3), 0x00, 0x0f, 0x03, + MAP_NUM(SECRET_BASE_TREE4), 0x00, 0x04, 0x0a, + MAP_NUM(SECRET_BASE_SHRUB1), 0x00, 0x03, 0x03, + MAP_NUM(SECRET_BASE_SHRUB2), 0x00, 0x01, 0x02, + MAP_NUM(SECRET_BASE_SHRUB3), 0x00, 0x07, 0x08, + MAP_NUM(SECRET_BASE_SHRUB4), 0x00, 0x09, 0x06 }; const struct MenuAction gUnknown_0858D048[] = { @@ -242,16 +248,16 @@ void sub_80E8C98(void) void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) { - struct MapData *mapData; + const struct MapLayout *mapLayout; s16 x; s16 y; - mapData = gMapHeader.mapData; - for (y = 0; y < mapData->height; y ++) + mapLayout = gMapHeader.mapLayout; + for (y = 0; y < mapLayout->height; y ++) { - for (x = 0; x < mapData->width; x ++) + for (x = 0; x < mapLayout->width; x ++) { - if ((mapData->map[y * mapData->width + x] & 0x3ff) == tile) + if ((mapLayout->map[y * mapLayout->width + x] & 0x3ff) == tile) { *xPtr = x; *yPtr = y; @@ -320,7 +326,7 @@ void sub_80E8E18(void) VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId); } -void sub_80E8EE0(struct MapEvents *events) +void sub_80E8EE0(struct MapEvents const *events) { u16 bgEventIndex; u16 i; @@ -331,7 +337,7 @@ void sub_80E8EE0(struct MapEvents *events) for (bgEventIndex = 0; bgEventIndex < events->bgEventCount; bgEventIndex ++) { - if (events->bgEvents[bgEventIndex].kind == 8) + if (events->bgEvents[bgEventIndex].kind == BG_EVENT_SECRET_BASE) { for (j = 0; j < 20; j ++) { @@ -360,7 +366,7 @@ void sub_80E8F9C(void) s8 idx; idx = sCurSecretBaseId / 10 * 4; - warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]); + warp1_set_2(MAP_GROUP(SECRET_BASE_RED_CAVE1), gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]); } void sub_80E8FD0(u8 taskId) @@ -384,7 +390,7 @@ void sub_80E8FD0(u8 taskId) sub_80E8F9C(); warp_in(); gFieldCallback = sub_80AF168; - SetMainCallback2(c2_load_new_map); + SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); break; } @@ -393,7 +399,7 @@ void sub_80E8FD0(u8 taskId) void sub_80E9068(void) { CreateTask(sub_80E8FD0, 0); - fade_screen(1, 0); + FadeScreen(1, 0); saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); } @@ -408,8 +414,8 @@ bool8 sub_80E909C(void) void sub_80E90C8(u8 taskId) { - FieldObjectTurn(&gMapObjects[gPlayerAvatar.mapObjectId], DIR_NORTH); - if (sub_80ABDFC() == TRUE) + EventObjectTurn(&gEventObjects[gPlayerAvatar.eventObjectId], DIR_NORTH); + if (IsWeatherNotFadingIn() == TRUE) { EnableBothScriptContexts(); DestroyTask(taskId); @@ -442,7 +448,7 @@ void sub_80E916C(u8 taskId) Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]); warp_in(); gFieldCallback = sub_80E9108; - SetMainCallback2(c2_load_new_map); + SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); } } @@ -450,12 +456,12 @@ void sub_80E916C(u8 taskId) void sub_80E91F8(void) { CreateTask(sub_80E916C, 0); - fade_screen(1, 0); + FadeScreen(1, 0); } bool8 CurrentMapIsSecretBase(void) { - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SECRET_BASE_RED_CAVE1 && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_ID_SECRET_BASE_SHRUB4) + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SECRET_BASE_RED_CAVE1) && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_NUM(SECRET_BASE_SHRUB4)) { return TRUE; } @@ -528,14 +534,14 @@ void sub_80E933C(void) category = gDecorations[roomDecor[decorIdx]].category; if (permission == DECORPERM_SOLID_MAT) { - for (objIdx = 0; objIdx < gMapHeader.events->mapObjectCount; objIdx ++) + for (objIdx = 0; objIdx < gMapHeader.events->eventObjectCount; objIdx ++) { - if (gMapHeader.events->mapObjects[objIdx].flagId == gSpecialVar_0x8004 + 0xAE) + if (gMapHeader.events->eventObjects[objIdx].flagId == gSpecialVar_0x8004 + 0xAE) { break; } } - if (objIdx == gMapHeader.events->mapObjectCount) + if (objIdx == gMapHeader.events->eventObjectCount) { continue; } @@ -544,9 +550,9 @@ void sub_80E933C(void) metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (MetatileBehavior_IsMB_B5(metatile) == TRUE || MetatileBehavior_IsMB_C3(metatile) == TRUE) { - gSpecialVar_Result = gMapHeader.events->mapObjects[objIdx].graphicsId + VAR_0x3F20; + gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + VAR_0x3F20; VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]); - gSpecialVar_Result = gMapHeader.events->mapObjects[objIdx].localId; + gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); show_sprite(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); sub_808EBA8(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); @@ -574,12 +580,12 @@ void sub_80E9578(void) u8 objectEventIdx; u16 flagId; - for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->mapObjectCount; objectEventIdx ++) + for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->eventObjectCount; objectEventIdx ++) { - flagId = gMapHeader.events->mapObjects[objectEventIdx].flagId; + flagId = gMapHeader.events->eventObjects[objectEventIdx].flagId; if (flagId >= 0xAE && flagId <= 0xBB) { - RemoveFieldObjectByLocalIdAndMap(gMapHeader.events->mapObjects[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + RemoveEventObjectByLocalIdAndMap(gMapHeader.events->eventObjects[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); FlagSet(flagId); } } @@ -587,7 +593,7 @@ void sub_80E9578(void) void sub_80E95D4(void) { - VarSet(VAR_0x401F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_0x4054))]); + VarSet(VAR_OBJ_GFX_ID_F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_0x4054))]); } void sub_80E9608(struct Coords16 *coords, struct MapEvents *events) @@ -596,7 +602,7 @@ void sub_80E9608(struct Coords16 *coords, struct MapEvents *events) for (bgEventIdx = 0; bgEventIdx < events->bgEventCount; bgEventIdx ++) { - if (events->bgEvents[bgEventIdx].kind == 8 && coords->x == events->bgEvents[bgEventIdx].x + 7 && coords->y == events->bgEvents[bgEventIdx].y + 7) + if (events->bgEvents[bgEventIdx].kind == BG_EVENT_SECRET_BASE && coords->x == events->bgEvents[bgEventIdx].x + 7 && coords->y == events->bgEvents[bgEventIdx].y + 7) { sCurSecretBaseId = events->bgEvents[bgEventIdx].bgUnion.secretBaseId; break; @@ -640,7 +646,7 @@ void sub_80E96A4(u8 taskId) copy_saved_warp2_bank_and_enter_x_to_warp1(0x7e); warp_in(); gFieldCallback = mapldr_default; - SetMainCallback2(c2_load_new_map); + SetMainCallback2(CB2_LoadMap); ScriptContext2_Disable(); DestroyTask(taskId); break; @@ -650,7 +656,7 @@ void sub_80E96A4(u8 taskId) void sub_80E9728(void) { CreateTask(sub_80E96A4, 0); - fade_screen(1, 0); + FadeScreen(1, 0); } void sub_80E9744(void) @@ -710,237 +716,45 @@ u8 sub_80E98AC(struct Pokemon *pokemon) return evTotal / 6; } -#ifdef NONMATCHING -// This function is a meme void sub_80E9914(void) { - u32 zero; - u32 *personality; u16 partyIdx; u16 moveIdx; u16 sbPartyIdx; - u16 *species; - u16 *items; - u16 *moves; - u8 *levels; - u8 *evs; + struct SecretBaseParty *party; sbPartyIdx = 0; - personality = gSaveBlock1Ptr->secretBases[0].partyPersonality; + party = &gSaveBlock1Ptr->secretBases[0].party; if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0) { - partyIdx = 0; - moves = gSaveBlock1Ptr->secretBases[0].partyMoves; - species = gSaveBlock1Ptr->secretBases[0].partySpecies; - items = gSaveBlock1Ptr->secretBases[0].partyHeldItems; - levels = gSaveBlock1Ptr->secretBases[0].partyLevels; - evs = gSaveBlock1Ptr->secretBases[0].partyEVs; - zero = 0; - for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx ++) + for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx++) { - for (moveIdx = 0; moveIdx < 4; moveIdx ++) + for (moveIdx = 0; moveIdx < 4; moveIdx++) { - moves[partyIdx * 4 + moveIdx] = zero; + party->moves[partyIdx * 4 + moveIdx] = 0; } - species[partyIdx] = zero; - items[partyIdx] = zero; - levels[partyIdx] = zero; - personality[partyIdx] = zero; - evs[partyIdx] = zero; - if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG)) + party->species[partyIdx] = 0; + party->heldItems[partyIdx] = 0; + party->levels[partyIdx] = 0; + party->personality[partyIdx] = 0; + party->EVs[partyIdx] = 0; + if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG)) { - for (moveIdx = 0; moveIdx < 4; moveIdx ++) + for (moveIdx = 0; moveIdx < 4; moveIdx++) { - moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx); + party->moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx); } - species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES); - items[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM); - levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL); - personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY); - evs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]); - sbPartyIdx ++; + party->species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES); + party->heldItems[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM); + party->levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL); + party->personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY); + party->EVs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]); + sbPartyIdx++; } } } } -#else -__attribute__((naked)) void sub_80E9914(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x24\n" - "\tmovs r0, 0\n" - "\tmov r10, r0\n" - "\tldr r0, =gSaveBlock1Ptr\n" - "\tldr r1, [r0]\n" - "\tldr r2, =0x00001ad0\n" - "\tadds r2, r1, r2\n" - "\tstr r2, [sp]\n" - "\tldr r3, =0x00001a9c\n" - "\tadds r0, r1, r3\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbne _080E993A\n" - "\tb _080E9A60\n" - "_080E993A:\n" - "\tmovs r6, 0\n" - "\tldr r7, =0x00001ae8\n" - "\tadds r7, r1, r7\n" - "\tstr r7, [sp, 0x14]\n" - "\tldr r0, =0x00001b18\n" - "\tadds r0, r1, r0\n" - "\tstr r0, [sp, 0xC]\n" - "\tldr r2, =0x00001b24\n" - "\tadds r2, r1, r2\n" - "\tstr r2, [sp, 0x10]\n" - "\tadds r3, 0x94\n" - "\tadds r3, r1, r3\n" - "\tstr r3, [sp, 0x18]\n" - "\tldr r7, =0x00001b36\n" - "\tadds r7, r1, r7\n" - "\tstr r7, [sp, 0x1C]\n" - "\tmov r9, r6\n" - "_080E995C:\n" - "\tmovs r4, 0\n" - "\tlsls r5, r6, 2\n" - "\tlsls r3, r6, 1\n" - "\tldr r0, =gPlayerParty\n" - "\tmov r8, r0\n" - "\tadds r1, r6, 0x1\n" - "\tstr r1, [sp, 0x4]\n" - "\tadds r2, r5, 0\n" - "\tldr r1, [sp, 0x14]\n" - "_080E996E:\n" - "\tadds r0, r2, r4\n" - "\tlsls r0, 1\n" - "\tadds r0, r1, r0\n" - "\tmov r7, r9\n" - "\tstrh r7, [r0]\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r4, r0, 16\n" - "\tcmp r4, 0x3\n" - "\tbls _080E996E\n" - "\tldr r1, [sp, 0xC]\n" - "\tadds r0, r1, r3\n" - "\tmov r2, r9\n" - "\tstrh r2, [r0]\n" - "\tldr r7, [sp, 0x10]\n" - "\tadds r0, r7, r3\n" - "\tstrh r2, [r0]\n" - "\tldr r1, [sp, 0x18]\n" - "\tadds r0, r1, r6\n" - "\tmov r2, r9\n" - "\tstrb r2, [r0]\n" - "\tldr r3, [sp]\n" - "\tadds r0, r3, r5\n" - "\tmov r7, r9\n" - "\tstr r7, [r0]\n" - "\tldr r1, [sp, 0x1C]\n" - "\tadds r0, r1, r6\n" - "\tstrb r7, [r0]\n" - "\tmovs r2, 0x64\n" - "\tadds r5, r6, 0\n" - "\tmuls r5, r2\n" - "\tmov r3, r8\n" - "\tadds r4, r5, r3\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0xB\n" - "\tbl GetMonData\n" - "\tcmp r0, 0\n" - "\tbeq _080E9A54\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0x2D\n" - "\tbl GetMonData\n" - "\tcmp r0, 0\n" - "\tbne _080E9A54\n" - "\tmovs r4, 0\n" - "\tmov r7, r10\n" - "\tlsls r7, 2\n" - "\tmov r8, r7\n" - "\tmov r0, r10\n" - "\tlsls r7, r0, 1\n" - "\tadds r0, 0x1\n" - "\tstr r0, [sp, 0x8]\n" - "\tldr r2, =gPlayerParty\n" - "_080E99DA:\n" - "\tadds r1, r4, 0\n" - "\tadds r1, 0xD\n" - "\tadds r0, r5, r2\n" - "\tstr r2, [sp, 0x20]\n" - "\tbl GetMonData\n" - "\tmov r3, r8\n" - "\tadds r1, r3, r4\n" - "\tlsls r1, 1\n" - "\tldr r3, [sp, 0x14]\n" - "\tadds r1, r3, r1\n" - "\tstrh r0, [r1]\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r4, r0, 16\n" - "\tldr r2, [sp, 0x20]\n" - "\tcmp r4, 0x3\n" - "\tbls _080E99DA\n" - "\tmovs r0, 0x64\n" - "\tadds r4, r6, 0\n" - "\tmuls r4, r0\n" - "\tldr r0, =gPlayerParty\n" - "\tadds r4, r0\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0xB\n" - "\tbl GetMonData\n" - "\tldr r2, [sp, 0xC]\n" - "\tadds r1, r2, r7\n" - "\tstrh r0, [r1]\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0xC\n" - "\tbl GetMonData\n" - "\tldr r3, [sp, 0x10]\n" - "\tadds r1, r3, r7\n" - "\tstrh r0, [r1]\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0x38\n" - "\tbl GetMonData\n" - "\tldr r1, [sp, 0x18]\n" - "\tadd r1, r10\n" - "\tstrb r0, [r1]\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0\n" - "\tbl GetMonData\n" - "\tldr r1, [sp]\n" - "\tadd r1, r8\n" - "\tstr r0, [r1]\n" - "\tadds r0, r4, 0\n" - "\tbl sub_80E98AC\n" - "\tldr r1, [sp, 0x1C]\n" - "\tadd r1, r10\n" - "\tstrb r0, [r1]\n" - "\tldr r7, [sp, 0x8]\n" - "\tlsls r0, r7, 16\n" - "\tlsrs r0, 16\n" - "\tmov r10, r0\n" - "_080E9A54:\n" - "\tldr r1, [sp, 0x4]\n" - "\tlsls r0, r1, 16\n" - "\tlsrs r6, r0, 16\n" - "\tcmp r6, 0x5\n" - "\tbhi _080E9A60\n" - "\tb _080E995C\n" - "_080E9A60:\n" - "\tadd sp, 0x24\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.pool"); -} -#endif void sub_80E9A90(void) { @@ -963,12 +777,12 @@ void sub_80E9AD0(void) u16 i; u16 j; s16 tile; - struct MapEvents *events; + const struct MapEvents *events; events = gMapHeader.events; for (i = 0; i < events->bgEventCount; i ++) { - if (events->bgEvents[i].kind == 8 && gSaveBlock1Ptr->secretBases[0].secretBaseId == events->bgEvents[i].bgUnion.secretBaseId) + if (events->bgEvents[i].kind == BG_EVENT_SECRET_BASE && gSaveBlock1Ptr->secretBases[0].secretBaseId == events->bgEvents[i].bgUnion.secretBaseId) { tile = MapGridGetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7); for (j = 0; j < 7; j ++) @@ -1081,13 +895,13 @@ void game_continue(u8 taskId) if (sub_80E9878(i)) { sub_80E9780(gUnknown_0203A020->names[count], i); - gUnknown_0203A020->items[count].unk_00 = gUnknown_0203A020->names[count]; - gUnknown_0203A020->items[count].unk_04 = i; + gUnknown_0203A020->items[count].name = gUnknown_0203A020->names[count]; + gUnknown_0203A020->items[count].id = i; count ++; } } - gUnknown_0203A020->items[count].unk_00 = gText_Cancel; - gUnknown_0203A020->items[count].unk_04 = -2; + gUnknown_0203A020->items[count].name = gText_Cancel; + gUnknown_0203A020->items[count].id = -2; data[0] = count + 1; if (data[0] < 8) { @@ -1097,14 +911,14 @@ void game_continue(u8 taskId) { data[3] = 8; } - gUnknown_03006310 = gUnknown_0858D07C; - gUnknown_03006310.unk_10 = data[6]; - gUnknown_03006310.totalItems = data[0]; - gUnknown_03006310.items = gUnknown_0203A020->items; - gUnknown_03006310.maxShowed = data[3]; + gMultiuseListMenuTemplate = gUnknown_0858D07C; + gMultiuseListMenuTemplate.windowId = data[6]; + gMultiuseListMenuTemplate.totalItems = data[0]; + gMultiuseListMenuTemplate.items = gUnknown_0203A020->items; + gMultiuseListMenuTemplate.maxShowed = data[3]; } -void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu) +void sub_80E9DEC(s32 a0, bool8 flag, struct ListMenu *menu) { if (flag != TRUE) { @@ -1118,7 +932,7 @@ void sub_80E9E00(u8 taskId) data = gTasks[taskId].data; SetStandardWindowBorderStyle(data[6], 0); - data[5] = ListMenuInit(&gUnknown_03006310, data[2], data[1]); + data[5] = ListMenuInit(&gMultiuseListMenuTemplate, data[2], data[1]); sub_80E9E44(taskId); schedule_bg_copy_tilemap_to_vram(0); } @@ -1128,7 +942,7 @@ void sub_80E9E44(u8 taskId) s16 *data; data = gTasks[taskId].data; - data[8] = AddScrollIndicatorArrowPairParametrized(0x02, 0xbc, 0x0c, 0x94, data[0] - data[3], 0x13f8, 0x13f8, &data[2]); + data[8] = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xbc, 0x0c, 0x94, data[0] - data[3], 0x13f8, 0x13f8, &data[2]); } void sub_80E9E90(u8 taskId) @@ -1137,15 +951,15 @@ void sub_80E9E90(u8 taskId) s32 input; data = gTasks[taskId].data; - input = ListMenuHandleInput(data[5]); - get_coro_args_x18_x1A(data[5], &data[2], &data[1]); + input = ListMenuHandleInputGetItemId(data[5]); + ListMenuGetScrollAndRow(data[5], &data[2], &data[1]); switch (input) { case -1: break; case -2: PlaySE(SE_SELECT); - sub_81AE6C8(data[5], NULL, NULL); + DestroyListMenuTask(data[5], NULL, NULL); RemoveScrollIndicatorArrowPair(data[8]); sub_819746C(data[6], 0); ClearWindowTilemap(data[6]); @@ -1227,7 +1041,7 @@ void sub_80EA08C(u8 taskId) data = gTasks[taskId].data; sub_8197434(0, 0); - sub_81AE6C8(data[5], &data[2], &data[1]); + DestroyListMenuTask(data[5], &data[2], &data[1]); gSaveBlock1Ptr->secretBases[data[4]].sbr_field_1_6 = 0; game_continue(taskId); sub_812225C(&data[2], &data[1], data[3], data[0]); @@ -1246,7 +1060,7 @@ void sub_80EA13C(u8 taskId) data = gTasks[taskId].data; sub_8197434(0, 0); - sub_81AE6C8(data[5], &data[2], &data[1]); + DestroyListMenuTask(data[5], &data[2], &data[1]); sub_80E9E00(taskId); gTasks[taskId].func = sub_80E9E90; } @@ -1282,7 +1096,7 @@ u8 sub_80EA20C(u8 secretBaseRecordId) return (gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[secretBaseRecordId].gender * 5); } -const u8 *sub_80EA250(void) +const u8 *GetSecretBaseTrainerLoseText(void) { u8 param; @@ -1356,7 +1170,6 @@ void sub_80EA354(void) gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5; } - void sub_80EA3E4(u8 taskId) { s16 x; @@ -1862,7 +1675,7 @@ void sub_80EAEF4(struct SecretBaseRecordMixer *mixers) sub_80EABA4(&mixers[2], 0); } -void sub_80EAF80(void *records, size_t recordSize, u8 linkIdx) +void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx) { struct SecretBaseRecordMixer mixers[3]; u16 i; |