diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_main.c | 6 | ||||
-rw-r--r-- | src/contest_link.c | 4 | ||||
-rw-r--r-- | src/credits.c | 411 | ||||
-rw-r--r-- | src/debug/start_menu_debug.c | 2 | ||||
-rw-r--r-- | src/decoration.c | 94 | ||||
-rw-r--r-- | src/hall_of_fame.c | 2 | ||||
-rw-r--r-- | src/intro.c | 4 | ||||
-rw-r--r-- | src/intro_credits_graphics.c | 10 | ||||
-rw-r--r-- | src/pokeblock.c | 18 | ||||
-rw-r--r-- | src/pokeblock_feed.c | 52 | ||||
-rw-r--r-- | src/save.c | 16 |
11 files changed, 313 insertions, 306 deletions
diff --git a/src/battle_main.c b/src/battle_main.c index 5b259b1d1..e1ed2fbbe 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -767,7 +767,7 @@ void CB2_HandleStartMultiBattle(void) } } SetAllPlayersBerryData(); - memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3); + memcpy(eMultiBattleSetupPartySendBuffer, gPlayerParty, sizeof(struct Pokemon) * 3); taskId = CreateTask(InitLinkBattleVsScreen, 0); gTasks[taskId].data[1] = 270; gTasks[taskId].data[2] = 90; @@ -799,7 +799,7 @@ void CB2_HandleStartMultiBattle(void) case 2: if (IsLinkTaskFinished()) { - SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2); + SendBlock(bitmask_all_link_players_but_self(), eMultiBattleSetupPartySendBuffer, sizeof(struct Pokemon) * 2); gBattleCommunication[0]++; } } @@ -863,7 +863,7 @@ void CB2_HandleStartMultiBattle(void) case 4: if (IsLinkTaskFinished()) { - SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon)); + SendBlock(bitmask_all_link_players_but_self(), eMultiBattleSetupPartySendBuffer + 2, sizeof(struct Pokemon)); gBattleCommunication[0]++; } break; diff --git a/src/contest_link.c b/src/contest_link.c index 2ba7a3e39..974b9ef5d 100644 --- a/src/contest_link.c +++ b/src/contest_link.c @@ -16,8 +16,8 @@ static void de_sub_80C9294(bool32 arg0); static void SendBlockToAllOpponents(const void *data, u16 size) { - memcpy(eContestLinkSendBuffer, data, size); - SendBlock(bitmask_all_link_players_but_self(), eContestLinkSendBuffer, size); + memcpy(gDecompressionBuffer, data, size); + SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, size); } static bool8 HasPlayerReceivedBlock(u8 who) diff --git a/src/credits.c b/src/credits.c index 3f1335cd8..2d39765be 100644 --- a/src/credits.c +++ b/src/credits.c @@ -146,15 +146,16 @@ enum }; -struct Unk201C000 +struct CreditsData { - u16 unk0[POKEMON_TILE_COUNT]; - u16 unk88; - u16 unk8A; - u16 unk8C; - u16 unk8E; - u16 unk90[386]; - u16 unk394; + u16 monToShow[POKEMON_TILE_COUNT]; // List of Pokemon species ids that will show during the credits + u16 imgCounter; //how many mon images have been shown + u16 nextImgPos; //if the next image spawns left/center/right + u16 currShownMon; //index into monToShow + u16 numMonToShow; //number of pokemon to show, always NUM_MON_SLIDES after determine function + u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught pokemon + u16 numCaughtMon; //count of filled spaces in caughtMonIds + u16 unused[7]; }; struct CreditsEntry @@ -163,19 +164,16 @@ struct CreditsEntry const u8 *text; }; -extern u8 unk_201e800[0x800]; -extern u8 unk_201f000[0x800]; - extern struct SpriteTemplate gCreatingSpriteTemplate; extern u16 gUnknown_02039358; extern s16 gUnknown_0203935A; -extern s16 gUnknown_0203935C; +extern s16 gIntroCredits_MovingSceneryState; static EWRAM_DATA s16 gUnknown_02039320 = 0; -static EWRAM_DATA u16 gUnknown_02039322 = 0; // TASK A +static EWRAM_DATA u16 sSavedTaskId = 0; // TASK A EWRAM_DATA u8 gHasHallOfFameRecords = 0; -static EWRAM_DATA u8 gUnknown_02039325 = 0; +static EWRAM_DATA u8 sUsedSpeedUp = 0; extern u8 gReservedSpritePaletteCount; @@ -186,9 +184,9 @@ extern void *gUnknown_0840B5A0[]; const u16 gUnknown_0840B7BC[] = INCBIN_U16("graphics/credits/palette_1.gbapal"); const u8 gUnknown_0840B7FC[] = INCBIN_U8("graphics/credits/ampersand.4bpp"); -void spritecb_814580C(struct Sprite *sprite); +void SpriteCB_CreditsMonBg(struct Sprite *sprite); -const u8 gUnknown_0840B83C[] = +const u8 sTheEnd_LetterMap_T[] = { 0, 1, 0, 0xFF, 1, 0xFF, @@ -197,7 +195,7 @@ const u8 gUnknown_0840B83C[] = 0xFF, 1, 0xFF, }; -const u8 gUnknown_0840B84B[] = +const u8 sTheEnd_LetterMap_H[] = { 1, 0xFF, 1, 1, 0xFF, 1, @@ -206,7 +204,7 @@ const u8 gUnknown_0840B84B[] = 1, 0xFF, 1, }; -const u8 gUnknown_0840B85A[] = +const u8 sTheEnd_LetterMap_E[] = { 1, 0, 0, 1, 0xFF, 0xFF, @@ -215,7 +213,7 @@ const u8 gUnknown_0840B85A[] = 1, 0x80, 0x80, }; -const u8 gUnknown_0840B869[] = +const u8 sTheEnd_LetterMap_N[] = { 1, 3, 1, 1, 4, 1, @@ -224,26 +222,32 @@ const u8 gUnknown_0840B869[] = 1, 0xC3, 1, }; -const u8 gUnknown_0840B878[] = +const u8 sTheEnd_LetterMap_D[] = { 1, 6, 7, 1, 8, 9, 1, 0xFF, 1, 1, 0x88, 0x89, 1, 0x86, 0x87, +}; + #ifdef GERMAN +const u8 sTheEnd_LetterMap_F[] = { 1, 0, 0, 1, 0xFF, 0xFF, 1, 0x80, 0x8A, 1, 0xFF, 0xFF, 1, 0xFF, 0xFF, +}; + +const u8 sTheEnd_LetterMap_I[] = { 0, 1, 0, 0xFF, 1, 0xFF, 0xFF, 1, 0xFF, 0xFF, 1, 0xFF, 0x80, 1, 0x80, -#endif }; +#endif #ifdef GERMAN #include "data/credits_de.h" @@ -251,7 +255,7 @@ const u8 gUnknown_0840B878[] = #include "data/credits_en.h" #endif -const u8 gUnknown_0840CA00[][2] = +const u8 sMonSpritePos[][2] = { {104, 36}, {120, 36}, @@ -332,8 +336,8 @@ static const union AnimCmd *const gSpriteAnimTable_0840CA94[] = gSpriteAnim_840CA8C, }; -static const struct SpriteSheet gUnknown_0840CAA0[] = {{ewram1E000_2, 6144, 1001}, {0}}; -static const struct SpritePalette gUnknown_0840CAB0[] = {{ewram_1F800_2, 1001}, {0}}; +static const struct SpriteSheet gUnknown_0840CAA0[] = {{gDecompressionBuffer, 0x1800, 1001}, {0}}; +static const struct SpritePalette gUnknown_0840CAB0[] = {{(u16 *)(gDecompressionBuffer + 0x1800), 1001}, {0}}; static const struct OamData gOamData_840CAC0 = { @@ -385,47 +389,47 @@ static const struct SpriteTemplate gSpriteTemplate_840CAEC = .anims = gSpriteAnimTable_840CAE0, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = spritecb_814580C, + .callback = SpriteCB_CreditsMonBg, }; // graphics extern u8 gCreditsCopyrightEnd_Gfx[]; extern u16 gIntroCopyright_Pal[16]; -static void task_a_8143B38(u8 taskIdA); -static void task_a_8143B68(u8 taskIdA); -static void task_a_8143BFC(u8 taskIdA); -static void task_a_80C9BFC(u8 taskIdA); -static void task_a_8143CC0(u8 taskIdA); -static void task_a_8143D04(u8 taskIdA); -static void task_a_8143EBC(u8 taskIdA); -static void task_a_8143F04(u8 taskIdA); -static void task_a_8143F3C(u8 taskIdA); -static void task_a_8143FDC(u8 taskIdA); -static void task_a_8144024(u8 taskIdA); -static void task_a_8144080(u8 taskIdA); -static void task_a_8144114(u8 taskIdA); -static void sub_8144130(void); -static void task_b_81441B8(u8 taskIdB); -static u8 sub_8144454(u8 page, u8 taskIdA); -static void task_d_8144514(u8 taskIdD); -static bool8 sub_8144ECC(u8 data, u8 taskIdA); -static void sub_81450AC(u8 taskIdA); -static void sub_8145128(u16, u16, u16); -static void sub_81452D0(u16 arg0, u16 palette); -static void spritecb_player_8145378(struct Sprite *sprite); -static void spritecb_rival_8145420(struct Sprite *sprite); -static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position); -static void sub_81458DC(void); - -static void vblank_8143948(void) +static void Task_WaitPaletteFade(u8 taskIdA); +static void Task_CreditsMain(u8 taskIdA); +static void Task_ReadyBikeScene(u8 taskIdA); +static void Task_SetBikeScene(u8 taskIdA); +static void Task_ReadyShowMons(u8 taskIdA); +static void Task_LoadShowMons(u8 taskIdA); +static void Task_CreditsTheEnd1(u8 taskIdA); +static void Task_CreditsTheEnd2(u8 taskIdA); +static void Task_CreditsTheEnd3(u8 taskIdA); +static void Task_CreditsTheEnd4(u8 taskIdA); +static void Task_CreditsTheEnd5(u8 taskIdA); +static void Task_CreditsTheEnd6(u8 taskIdA); +static void Task_CreditsSoftReset(u8 taskIdA); +static void ResetGpuAndVram(void); +static void Task_UpdatePage(u8 taskIdB); +static u8 CheckChangeScene(u8 page, u8 taskIdA); +static void Task_ShowMons(u8 taskIdD); +static bool8 LoadBikeScene(u8 data, u8 taskIdA); +static void ResetCreditsTasks(u8 taskIdA); +static void LoadTheEndScreen(u16, u16, u16); +static void DrawTheEnd(u16 arg0, u16 palette); +static void SpriteCB_Player(struct Sprite *sprite); +static void SpriteCB_Rival(struct Sprite *sprite); +static u8 CreateCreditsMonSprite(u16 species, u16 x, u16 y, u16 position); +static void DeterminePokemonToShow(void); + +static void VBlankCB_Credits(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_814395C(void) +static void CB2_Credits(void) { RunTasks(); AnimateSprites(); @@ -434,31 +438,31 @@ static void sub_814395C(void) if ((gMain.heldKeys & B_BUTTON) && gHasHallOfFameRecords != 0 - && gTasks[gUnknown_02039322].func == task_a_8143B68) + && gTasks[sSavedTaskId].func == Task_CreditsMain) { - vblank_8143948(); + VBlankCB_Credits(); RunTasks(); AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); - gUnknown_02039325 = 1; + sUsedSpeedUp = 1; } } -void sub_81439D0(void) +void CB2_StartCreditsSequence(void) { u8 taskIdA; s16 taskIdC; u8 taskIdB; u16 savedIme; - struct Unk201C000 *c000; + struct CreditsData *pCreditsData; - sub_8144130(); + ResetGpuAndVram(); SetVBlankCallback(NULL); ResetPaletteFade(); ResetTasks(); - taskIdA = CreateTask(task_a_8143B38, 0); + taskIdA = CreateTask(Task_WaitPaletteFade, 0); gTasks[taskIdA].data[TDA_4] = 0; gTasks[taskIdA].data[TDA_7] = 0; @@ -467,7 +471,7 @@ void sub_81439D0(void) while (TRUE) { - if (sub_8144ECC(0, taskIdA)) + if (LoadBikeScene(0, taskIdA)) break; } @@ -482,7 +486,7 @@ void sub_81439D0(void) REG_BG0VOFS = 0xFFFC; - taskIdB = CreateTask(task_b_81441B8, 0); + taskIdB = CreateTask(Task_UpdatePage, 0); gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA; gTasks[taskIdA].data[TDA_TASK_B_ID] = taskIdB; @@ -496,29 +500,29 @@ void sub_81439D0(void) REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(vblank_8143948); + SetVBlankCallback(VBlankCB_Credits); m4aSongNumStart(MUS_CREDITS); - SetMainCallback2(sub_814395C); - gUnknown_02039325 = 0; + SetMainCallback2(CB2_Credits); + sUsedSpeedUp = 0; - c000 = &ewram1c000; + pCreditsData = &sCreditsData; - sub_81458DC(); + DeterminePokemonToShow(); - c000->unk88 = 0; - c000->unk8A = 0; - c000->unk8C = 0; + pCreditsData->imgCounter = 0; + pCreditsData->nextImgPos = 0; + pCreditsData->currShownMon = 0; - gUnknown_02039322 = taskIdA; + sSavedTaskId = taskIdA; } -static void task_a_8143B38(u8 taskIdA) +static void Task_WaitPaletteFade(u8 taskIdA) { if (!gPaletteFade.active) - gTasks[taskIdA].func = task_a_8143B68; + gTasks[taskIdA].func = Task_CreditsMain; } -static void task_a_8143B68(u8 taskIdA) +static void Task_CreditsMain(u8 taskIdA) { u16 data1; @@ -530,7 +534,7 @@ static void task_a_8143B68(u8 taskIdA) gTasks[taskIdC].data[TDC_0] = 30; gTasks[taskIdA].data[TDA_12] = 0x100; - gTasks[taskIdA].func = task_a_8143EBC; + gTasks[taskIdA].func = Task_CreditsTheEnd1; return; } @@ -542,34 +546,34 @@ static void task_a_8143B68(u8 taskIdA) gTasks[taskIdA].data[TDA_13] = data1; gTasks[taskIdA].data[TDA_11] = 0; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); - gTasks[taskIdA].func = task_a_8143BFC; + gTasks[taskIdA].func = Task_ReadyBikeScene; } else if (gTasks[taskIdA].data[TDA_11] == 2) { gTasks[taskIdA].data[TDA_13] = data1; gTasks[taskIdA].data[TDA_11] = 0; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); - gTasks[taskIdA].func = task_a_8143CC0; + gTasks[taskIdA].func = Task_ReadyShowMons; } } -static void task_a_8143BFC(u8 taskIdA) +static void Task_ReadyBikeScene(u8 taskIdA) { if (!gPaletteFade.active) { REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_80C9BFC; + ResetCreditsTasks(taskIdA); + gTasks[taskIdA].func = Task_SetBikeScene; } } -static void task_a_80C9BFC(u8 taskIdA) +static void Task_SetBikeScene(u8 taskIdA) { u16 backup; SetVBlankCallback(NULL); - if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) + if (LoadBikeScene(gTasks[taskIdA].data[TDA_7], taskIdA)) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); @@ -579,22 +583,22 @@ static void task_a_80C9BFC(u8 taskIdA) REG_IME = backup; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(vblank_8143948); - gTasks[taskIdA].func = task_a_8143B38; + SetVBlankCallback(VBlankCB_Credits); + gTasks[taskIdA].func = Task_WaitPaletteFade; } } -static void task_a_8143CC0(u8 taskIdA) +static void Task_ReadyShowMons(u8 taskIdA) { if (!gPaletteFade.active) { REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143D04; + ResetCreditsTasks(taskIdA); + gTasks[taskIdA].func = Task_LoadShowMons; } } -void task_a_8143D04(u8 taskIdA) +void Task_LoadShowMons(u8 taskIdA) { switch (gMain.state) { @@ -611,16 +615,16 @@ void task_a_8143D04(u8 taskIdA) LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2); for (i = 0; i < 0x800; i++) - HALL_OF_FAME_SHEET_0[i] = 0x11; + gDecompressionBuffer[i] = 0x11; for (i = 0; i < 0x800; i++) - HALL_OF_FAME_SHEET_1[i] = 0x22; + (gDecompressionBuffer + 0x800)[i] = 0x22; for (i = 0; i < 0x800; i++) - HALL_OF_FAME_SHEET_2[i] = 0x33; + (gDecompressionBuffer + 0x1000)[i] = 0x33; - EWRAM_1F800[0] = 0; - EWRAM_1F800[1] = 0x53FF; // light yellow - EWRAM_1F800[2] = 0x529F; // light red - EWRAM_1F800[3] = 0x7E94; // light blue + ((u16 *)(gDecompressionBuffer + 0x1800))[0] = RGB( 0, 0, 0); // black + ((u16 *)(gDecompressionBuffer + 0x1800))[1] = RGB(31, 31, 20); // light yellow + ((u16 *)(gDecompressionBuffer + 0x1800))[2] = RGB(31, 20, 20); // light red + ((u16 *)(gDecompressionBuffer + 0x1800))[3] = RGB(20, 20, 31); // light blue LoadSpriteSheet(gUnknown_0840CAA0); LoadSpritePalette(gUnknown_0840CAB0); @@ -629,7 +633,7 @@ void task_a_8143D04(u8 taskIdA) break; } case 1: - gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0); + gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(Task_ShowMons, 0); gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1; gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA; gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7]; @@ -641,13 +645,13 @@ void task_a_8143D04(u8 taskIdA) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; gMain.state = 0; - gUnknown_0203935C = 0; - gTasks[taskIdA].func = task_a_8143B38; + gIntroCredits_MovingSceneryState = 0; + gTasks[taskIdA].func = Task_WaitPaletteFade; break; } } -static void task_a_8143EBC(u8 taskIdA) +static void Task_CreditsTheEnd1(u8 taskIdA) { if (gTasks[taskIdA].data[TDA_12]) { @@ -656,25 +660,25 @@ static void task_a_8143EBC(u8 taskIdA) } BeginNormalPaletteFade(0xFFFFFFFF, 12, 0, 16, RGB(0, 0, 0)); - gTasks[taskIdA].func = task_a_8143F04; + gTasks[taskIdA].func = Task_CreditsTheEnd2; } -static void task_a_8143F04(u8 taskIdA) +static void Task_CreditsTheEnd2(u8 taskIdA) { if (!gPaletteFade.active) { - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143F3C; + ResetCreditsTasks(taskIdA); + gTasks[taskIdA].func = Task_CreditsTheEnd3; } } -static void task_a_8143F3C(u8 taskIdA) +static void Task_CreditsTheEnd3(u8 taskIdA) { u16 backup; - sub_8144130(); + ResetGpuAndVram(); ResetPaletteFade(); - sub_8145128(0, 0x3800, 0); + LoadTheEndScreen(0, 0x3800, 0); ResetSpriteData(); FreeAllSpritePalettes(); BeginNormalPaletteFade(0xFFFFFFFF, 8, 16, 0, RGB(0, 0, 0)); @@ -688,10 +692,10 @@ static void task_a_8143F3C(u8 taskIdA) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; gTasks[taskIdA].data[TDA_0] = 0x100; - gTasks[taskIdA].func = task_a_8143FDC; + gTasks[taskIdA].func = Task_CreditsTheEnd4; } -static void task_a_8143FDC(u8 taskIdA) +static void Task_CreditsTheEnd4(u8 taskIdA) { if (gTasks[taskIdA].data[TDA_0]) { @@ -700,22 +704,22 @@ static void task_a_8143FDC(u8 taskIdA) } BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 16, RGB(0, 0, 0)); - gTasks[taskIdA].func = task_a_8144024; + gTasks[taskIdA].func = Task_CreditsTheEnd5; } -static void task_a_8144024(u8 taskIdA) +static void Task_CreditsTheEnd5(u8 taskIdA) { if (!gPaletteFade.active) { - sub_81452D0(0x3800, 0); + DrawTheEnd(0x3800, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB(0, 0, 0)); gTasks[taskIdA].data[TDA_0] = 7200; - gTasks[taskIdA].func = task_a_8144080; + gTasks[taskIdA].func = Task_CreditsTheEnd6; } } -static void task_a_8144080(u8 taskIdA) +static void Task_CreditsTheEnd6(u8 taskIdA) { if (!gPaletteFade.active) { @@ -723,7 +727,7 @@ static void task_a_8144080(u8 taskIdA) { FadeOutBGM(4); BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, FADE_COLOR_WHITE); - gTasks[taskIdA].func = task_a_8144114; + gTasks[taskIdA].func = Task_CreditsSoftReset; return; } @@ -731,7 +735,7 @@ static void task_a_8144080(u8 taskIdA) { FadeOutBGM(4); BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, FADE_COLOR_WHITE); - gTasks[taskIdA].func = task_a_8144114; + gTasks[taskIdA].func = Task_CreditsSoftReset; return; } @@ -747,13 +751,13 @@ static void task_a_8144080(u8 taskIdA) } } -static void task_a_8144114(u8 taskIdA) +static void Task_CreditsSoftReset(u8 taskIdA) { if (!gPaletteFade.active) SoftReset(0xFF); } -static void sub_8144130(void) +static void ResetGpuAndVram(void) { REG_DISPCNT = 0; @@ -775,7 +779,7 @@ static void sub_8144130(void) DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); } -static void task_b_81441B8(u8 taskIdB) +static void Task_UpdatePage(u8 taskIdB) { u16 i; @@ -805,7 +809,7 @@ static void task_b_81441B8(u8 taskIdB) return; case 2: REG_DISPCNT &= ~DISPCNT_BG0_ON; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == task_a_8143B68) + if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == Task_CreditsMain) { if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT) { @@ -843,7 +847,7 @@ static void task_b_81441B8(u8 taskIdB) return; } - if (sub_8144454((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID])) + if (CheckChangeScene((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID])) { gTasks[taskIdB].data[TDB_0] += 1; return; @@ -869,7 +873,7 @@ static void task_b_81441B8(u8 taskIdB) } } -static u8 sub_8144454(u8 page, u8 taskIdA) +static u8 CheckChangeScene(u8 page, u8 taskIdA) { // Starts with bike + ocean + morning @@ -934,9 +938,9 @@ static u8 sub_8144454(u8 page, u8 taskIdA) return FALSE; } -static void task_d_8144514(u8 taskIdD) +static void Task_ShowMons(u8 taskIdD) { - struct Unk201C000 *r6 = &ewram1c000; + struct CreditsData *r6 = &sCreditsData; u8 r2; switch (gTasks[taskIdD].data[TDD_STATE]) @@ -944,30 +948,30 @@ static void task_d_8144514(u8 taskIdD) case 0: break; case 1: - if (r6->unk8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0) + if (r6->nextImgPos == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0) break; gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0; gTasks[taskIdD].data[TDD_STATE]++; break; case 2: - if (r6->unk88 == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) + if (r6->imgCounter == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != Task_CreditsMain) break; - r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A); - if (r6->unk8C < r6->unk8E - 1) + r2 = CreateCreditsMonSprite(r6->monToShow[r6->currShownMon], sMonSpritePos[r6->nextImgPos][0], sMonSpritePos[r6->nextImgPos][1], r6->nextImgPos); + if (r6->currShownMon < r6->numMonToShow - 1) { - r6->unk8C++; + r6->currShownMon++; gSprites[r2].data[3] = 50; } else { - r6->unk8C = 0; + r6->currShownMon = 0; gSprites[r2].data[3] = 512; } - r6->unk88++; - if (r6->unk8A == 2) - r6->unk8A = 0; + r6->imgCounter++; + if (r6->nextImgPos == 2) + r6->nextImgPos = 0; else - r6->unk8A++; + r6->nextImgPos++; gTasks[taskIdD].data[TDD_3] = 50; gTasks[taskIdD].data[TDD_STATE]++; break; @@ -980,7 +984,7 @@ static void task_d_8144514(u8 taskIdD) } } -void task_c_8144664(u8 taskIdC) +void Task_BikeScene(u8 taskIdC) { switch (gTasks[taskIdC].data[TDC_0]) { @@ -1063,7 +1067,7 @@ void task_c_8144664(u8 taskIdC) } } -void task_e_8144934(u8 taskIdE) +void Task_CycleSceneryPalette(u8 taskIdE) { s16 taskIdC; @@ -1080,10 +1084,10 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] = 0x7FFF; } } - sub_8149020(0); + CycleSceneryPalette(0); break; case 1: - sub_8149020(0); + CycleSceneryPalette(0); break; case 2: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) @@ -1097,7 +1101,7 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] = 0x7FFF; } } - sub_8149020(1); + CycleSceneryPalette(1); break; case 3: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) @@ -1113,15 +1117,15 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] += 1; } } - sub_8149020(1); + CycleSceneryPalette(1); break; case 4: - sub_8149020(2); + CycleSceneryPalette(2); break; } } -static void sub_8144A68(u8 data, u8 taskIdA) +static void SetBikeScene(u8 data, u8 taskIdA) { switch (data) { @@ -1182,12 +1186,12 @@ static void sub_8144A68(u8 data, u8 taskIdA) break; } - gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(task_e_8144934, 0); + gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(Task_CycleSceneryPalette, 0); gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data; gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0; gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA; - gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(task_c_8144664, 0); + gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(Task_BikeScene, 0); gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0; gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA; gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]; @@ -1198,7 +1202,7 @@ static void sub_8144A68(u8 data, u8 taskIdA) gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45; } -static bool8 sub_8144ECC(u8 data, u8 taskIdA) +static bool8 LoadBikeScene(u8 data, u8 taskIdA) { u8 spriteId; @@ -1235,12 +1239,12 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) spriteId = intro_create_brendan_sprite(120, 46); gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_player_8145378; + gSprites[spriteId].callback = SpriteCB_Player; gSprites[spriteId].anims = gSpriteAnimTable_0840CA54; spriteId = intro_create_may_sprite(272, 46); gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_rival_8145420; + gSprites[spriteId].callback = SpriteCB_Rival; gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; } else @@ -1252,18 +1256,18 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) spriteId = intro_create_may_sprite(120, 46); gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_player_8145378; + gSprites[spriteId].callback = SpriteCB_Player; gSprites[spriteId].anims = gSpriteAnimTable_0840CA54; spriteId = intro_create_brendan_sprite(272, 46); gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId; - gSprites[spriteId].callback = spritecb_rival_8145420; + gSprites[spriteId].callback = SpriteCB_Rival; gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; }; gMain.state += 1; break; case 3: - sub_8144A68(data, taskIdA); + SetBikeScene(data, taskIdA); sub_8148E90(data); gMain.state = 0; return TRUE; @@ -1271,7 +1275,7 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) return FALSE; } -static void sub_81450AC(u8 taskIdA) +static void ResetCreditsTasks(u8 taskIdA) { if (gTasks[taskIdA].data[TDA_0] != 0) { @@ -1297,10 +1301,10 @@ static void sub_81450AC(u8 taskIdA) gTasks[taskIdA].data[TDA_TASK_D_ID] = 0; } - gUnknown_0203935C = 1; + gIntroCredits_MovingSceneryState = 1; } -static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) +static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2) { u16 baseTile; u16 i; @@ -1326,7 +1330,7 @@ static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile; } -u16 sub_8145208(u8 arg0) +u16 GetLetterMapTile(u8 arg0) { u16 out = (arg0 & 0x3F) + 80; @@ -1341,7 +1345,7 @@ u16 sub_8145208(u8 arg0) return out; } -void sub_814524C(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) +void DrawLetterMapTiles(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) { u8 y, x; const u16 tileOffset = (palette / 16) << 12; @@ -1349,11 +1353,11 @@ void sub_814524C(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) for (y = 0; y < 5; y++) { for (x = 0; x < 3; x++) - ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]); + ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + GetLetterMapTile(arg0[y * 3 + x]); } } -static void sub_81452D0(u16 arg0, u16 palette) +static void DrawTheEnd(u16 arg0, u16 palette) { u16 pos; u16 baseTile = (palette / 16) << 12; @@ -1362,23 +1366,23 @@ static void sub_81452D0(u16 arg0, u16 palette) ((u16 *) (VRAM + arg0))[pos] = baseTile + 1; #if ENGLISH - sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette); - sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette); - sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette); - sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette); - sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette); - sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_T, 3, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_H, 7, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_E, 11, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_E, 16, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_N, 20, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_D, 24, 7, arg0, palette); #elif GERMAN - sub_814524C(gUnknown_0840B85A, 7, 7, arg0, palette); - sub_814524C(gUnknown_0840B869, 11, 7, arg0, palette); - sub_814524C(gUnknown_0840B878, 15, 7, arg0, palette); - sub_814524C(gUnknown_0840B85A, 19, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_E, 7, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_N, 11, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_D, 15, 7, arg0, palette); + DrawLetterMapTiles(sTheEnd_LetterMap_E, 19, 7, arg0, palette); #endif } -static void spritecb_player_8145378(struct Sprite *sprite) +static void SpriteCB_Player(struct Sprite *sprite) { - if (gUnknown_0203935C != 0) + if (gIntroCredits_MovingSceneryState != 0) { DestroySprite(sprite); return; @@ -1413,9 +1417,9 @@ static void spritecb_player_8145378(struct Sprite *sprite) } } -static void spritecb_rival_8145420(struct Sprite *sprite) +static void SpriteCB_Rival(struct Sprite *sprite) { - if (gUnknown_0203935C != 0) + if (gIntroCredits_MovingSceneryState != 0) { DestroySprite(sprite); return; @@ -1450,9 +1454,9 @@ static void spritecb_rival_8145420(struct Sprite *sprite) } } -void spritecb_81454E0(struct Sprite *sprite) +void SpriteCB_CreditsMon(struct Sprite *sprite) { - if (gUnknown_0203935C) + if (gIntroCredits_MovingSceneryState) { DestroySprite(sprite); return; @@ -1536,7 +1540,7 @@ void spritecb_81454E0(struct Sprite *sprite) } } -static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) +static u8 CreateCreditsMonSprite(u16 species, u16 x, u16 y, u16 position) { u32 personality; const u8 *lzPaletteData; @@ -1577,7 +1581,7 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) gSprites[spriteId].oam.priority = 1; gSprites[spriteId].data[1] = position + 1; gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].callback = spritecb_81454E0; + gSprites[spriteId].callback = SpriteCB_CreditsMon; spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1); gSprites[spriteId2].data[0] = spriteId; @@ -1587,9 +1591,10 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) return spriteId; } -void spritecb_814580C(struct Sprite *sprite) +void SpriteCB_CreditsMonBg(struct Sprite *sprite) { - if (gSprites[sprite->data[0]].data[0] == 10 || gUnknown_0203935C) + if (gSprites[sprite->data[0]].data[0] == 10 + || gIntroCredits_MovingSceneryState != 0) { DestroySprite(sprite); return; @@ -1603,9 +1608,9 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data[0]].pos1.y; } -static void sub_81458DC(void) +static void DeterminePokemonToShow(void) { - struct Unk201C000 *unk201C000 = &ewram1c000; + struct CreditsData *creditsData = &sCreditsData; u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_STARTER_MON))); u16 seenTypesCount; u16 page; @@ -1616,62 +1621,62 @@ static void sub_81458DC(void) { if (GetSetPokedexFlag(dexNum, 1)) { - unk201C000->unk90[seenTypesCount] = dexNum; + creditsData->caughtMonIds[seenTypesCount] = dexNum; seenTypesCount++; } } for (dexNum = seenTypesCount; dexNum < 386; dexNum++) - unk201C000->unk90[dexNum] = 0; + creditsData->caughtMonIds[dexNum] = 0; - unk201C000->unk394 = seenTypesCount; - if (unk201C000->unk394 < POKEMON_TILE_COUNT) - unk201C000->unk8E = seenTypesCount; + creditsData->numCaughtMon = seenTypesCount; + if (creditsData->numCaughtMon < POKEMON_TILE_COUNT) + creditsData->numMonToShow = seenTypesCount; else - unk201C000->unk8E = POKEMON_TILE_COUNT; + creditsData->numMonToShow = POKEMON_TILE_COUNT; j = 0; do { - page = Random() % unk201C000->unk394; - unk201C000->unk0[j] = unk201C000->unk90[page]; + page = Random() % creditsData->numCaughtMon; + creditsData->monToShow[j] = creditsData->caughtMonIds[page]; j++; - unk201C000->unk90[page] = 0; - unk201C000->unk394--; - if (page != unk201C000->unk394) + creditsData->caughtMonIds[page] = 0; + creditsData->numCaughtMon--; + if (page != creditsData->numCaughtMon) { - unk201C000->unk90[page] = unk201C000->unk90[unk201C000->unk394]; - unk201C000->unk90[unk201C000->unk394] = 0; + creditsData->caughtMonIds[page] = creditsData->caughtMonIds[creditsData->numCaughtMon]; + creditsData->caughtMonIds[creditsData->numCaughtMon] = 0; } } - while (unk201C000->unk394 != 0 && j < POKEMON_TILE_COUNT); + while (creditsData->numCaughtMon != 0 && j < POKEMON_TILE_COUNT); - if (unk201C000->unk8E < POKEMON_TILE_COUNT) + if (creditsData->numMonToShow < POKEMON_TILE_COUNT) { - for (j = unk201C000->unk8E, page = 0; j < POKEMON_TILE_COUNT; j++) + for (j = creditsData->numMonToShow, page = 0; j < POKEMON_TILE_COUNT; j++) { - unk201C000->unk0[j] = unk201C000->unk0[page]; + creditsData->monToShow[j] = creditsData->monToShow[page]; page++; - if (page == unk201C000->unk8E) + if (page == creditsData->numMonToShow) page = 0; } - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + creditsData->monToShow[POKEMON_TILE_COUNT - 1] = starter; } else { - for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); + for (dexNum = 0; creditsData->monToShow[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); - if (dexNum < unk201C000->unk8E - 1) + if (dexNum < creditsData->numMonToShow - 1) { - unk201C000->unk0[dexNum] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + creditsData->monToShow[dexNum] = creditsData->monToShow[POKEMON_TILE_COUNT - 1]; + creditsData->monToShow[POKEMON_TILE_COUNT - 1] = starter; } else { - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + creditsData->monToShow[POKEMON_TILE_COUNT - 1] = starter; } } - unk201C000->unk8E = POKEMON_TILE_COUNT; + creditsData->numMonToShow = POKEMON_TILE_COUNT; } diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index acb7a97b1..b1d12afe3 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -905,7 +905,7 @@ u8 DebugMenu_OpenWatanabe(void) u8 DebugMenu_EndSequenceDemo(void) { CloseMenu(); - SetMainCallback2(sub_81439D0); + SetMainCallback2(CB2_StartCreditsSequence); ScriptContext2_Enable(); return TRUE; } diff --git a/src/decoration.c b/src/decoration.c index 35b9ff47f..c2d7096b4 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1457,19 +1457,19 @@ void DecorationPC(u8 taskId) void Task_SecretBasePC_Decoration(u8 taskId) { DecorationPC(taskId); - ewram_1f000.items = gSaveBlock1.secretBases[0].decorations; - ewram_1f000.pos = gSaveBlock1.secretBases[0].decorationPos; - ewram_1f000.size = sizeof gSaveBlock1.secretBases[0].decorations; - ewram_1f000.isPlayerRoom = 0; + sDecorationContext.items = gSaveBlock1.secretBases[0].decorations; + sDecorationContext.pos = gSaveBlock1.secretBases[0].decorationPos; + sDecorationContext.size = sizeof gSaveBlock1.secretBases[0].decorations; + sDecorationContext.isPlayerRoom = 0; } void DoPlayerPCDecoration(u8 taskId) { DecorationPC(taskId); - ewram_1f000.items = gSaveBlock1.playerRoomDecor; - ewram_1f000.pos = gSaveBlock1.playerRoomDecorPos; - ewram_1f000.size = sizeof gSaveBlock1.playerRoomDecor; - ewram_1f000.isPlayerRoom = 1; + sDecorationContext.items = gSaveBlock1.playerRoomDecor; + sDecorationContext.pos = gSaveBlock1.playerRoomDecorPos; + sDecorationContext.size = sizeof gSaveBlock1.playerRoomDecor; + sDecorationContext.isPlayerRoom = 1; } void sub_80FE2B4(void) @@ -1522,7 +1522,7 @@ void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) Menu_EraseWindowRect(0, 0, 10, 9); Menu_BlankWindowRect(2, 15, 27, 18); FreeSpritePaletteByTag(6); - if (ewram_1f000.isPlayerRoom == 0) + if (sDecorationContext.isPlayerRoom == 0) { ScriptContext1_SetupScript(SecretBase_EventScript_PCCancel); DestroyTask(taskId); @@ -1572,7 +1572,7 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings Menu_DrawStdWindowFrame(0, 0, 14, 19); for (decoCat=0; decoCat<8; decoCat++) { - if (ewram_1f000.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION) + if (sDecorationContext.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION) { sub_80FE470(decoCat, 1, 2 * decoCat + 1, 13); // Selectable } else @@ -1811,7 +1811,7 @@ void sub_80FEABC(u8 taskId, u8 dummy1) } if (gUnknown_020388D0[i]) { - if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION && gTasks[taskId].data[11] == 0) + if (sDecorationContext.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION && gTasks[taskId].data[11] == 0) { StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[i]].name); sub_8072A18(gUnknown_083EC65A, 0x08, 8 * ni, 0x68, 1); @@ -2180,9 +2180,9 @@ void sub_80FF474(void) bool8 sub_80FF58C/*IsThereRoomForMoreDecorations*/(void) { u16 i; - for (i=0; i<ewram_1f000.size; i++) + for (i=0; i<sDecorationContext.size; i++) { - if (ewram_1f000.items[i] == 0) + if (sDecorationContext.items[i] == 0) { return TRUE; } @@ -2192,7 +2192,7 @@ bool8 sub_80FF58C/*IsThereRoomForMoreDecorations*/(void) void sub_80FF5BC(u8 taskId) { - if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION) + if (sDecorationContext.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION) { sub_80FEF74(); sub_80FED1C(); @@ -2208,8 +2208,8 @@ void sub_80FF5BC(u8 taskId) { sub_80FEF74(); sub_80FED1C(); - ConvertIntToDecimalStringN(gStringVar1, ewram_1f000.size, STR_CONV_MODE_RIGHT_ALIGN, 2); - if (!ewram_1f000.isPlayerRoom) + ConvertIntToDecimalStringN(gStringVar1, sDecorationContext.size, STR_CONV_MODE_RIGHT_ALIGN, 2); + if (!sDecorationContext.isPlayerRoom) { StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor); } else @@ -2573,16 +2573,16 @@ void sub_81000C4(u8 taskId) void sub_8100174(u8 taskId) { u16 i; - for (i=0; i<ewram_1f000.size; i++) + for (i=0; i<sDecorationContext.size; i++) { - if (ewram_1f000.items[i] == 0) + if (sDecorationContext.items[i] == 0) { - ewram_1f000.items[i] = gUnknown_020388D0[gUnknown_020388F5]; - ewram_1f000.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7); + sDecorationContext.items[i] = gUnknown_020388D0[gUnknown_020388F5]; + sDecorationContext.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7); break; } } - if (!ewram_1f000.isPlayerRoom) + if (!sDecorationContext.isPlayerRoom) { for (i=0; i<16; i++) { @@ -3066,8 +3066,8 @@ void sub_8100A0C(u8 taskId) void sub_8100A60(u8 a0) { - ewram_1f000.items[a0] = 0; - ewram_1f000.pos[a0] = 0; + sDecorationContext.items[a0] = 0; + sDecorationContext.pos[a0] = 0; } void sub_8100A7C(void) @@ -3078,7 +3078,7 @@ void sub_8100A7C(void) if (gSpecialVar_0x8004 == gUnknown_02039234) { gSpecialVar_Result = 1; - } else if (gDecorations[ewram_1f000.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT) + } else if (gDecorations[sDecorationContext.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT) { gSpecialVar_0x8005 = gUnknown_020391B4[gSpecialVar_0x8004].flagId; sub_8100A60(gUnknown_020391B4[gSpecialVar_0x8004].decorId); @@ -3116,12 +3116,12 @@ void sub_8100B6C(void) u8 permission; for (i=0; i<gUnknown_02039234; i++) { - permission = gDecorations[ewram_1f000.items[gUnknown_020391B4[i].decorId]].permission; - x = ewram_1f000.pos[gUnknown_020391B4[i].decorId] >> 4; - y = ewram_1f000.pos[gUnknown_020391B4[i].decorId] & 0xf; + permission = gDecorations[sDecorationContext.items[gUnknown_020391B4[i].decorId]].permission; + x = sDecorationContext.pos[gUnknown_020391B4[i].decorId] >> 4; + y = sDecorationContext.pos[gUnknown_020391B4[i].decorId] & 0xf; if (permission != DECORPERM_SOLID_MAT) { - if (ewram_1f000.items[gUnknown_020391B4[i].decorId] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(x + 7, y + 7) == 0x28c) + if (sDecorationContext.items[gUnknown_020391B4[i].decorId] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(x + 7, y + 7) == 0x28c) { gUnknown_020391B4[i].height++; } @@ -3173,9 +3173,9 @@ void sub_8100C88(u8 taskId) bool8 sub_8100D38(u8 taskId) { u16 i; - for (i=0; i<ewram_1f000.size; i++) + for (i=0; i<sDecorationContext.size; i++) { - if (ewram_1f000.items[i] != 0) + if (sDecorationContext.items[i] != 0) { gTasks[taskId].data[13] = i; return TRUE; @@ -3357,9 +3357,9 @@ bool8 sub_8101200(u8 taskId, u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B u8 yOff; x = gTasks[taskId].data[0] - 7; y = gTasks[taskId].data[1] - 7; - xOff = ewram_1f000.pos[decorIdx] >> 4; - yOff = ewram_1f000.pos[decorIdx] & 0xf; - if (ewram_1f000.items[decorIdx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28c) + xOff = sDecorationContext.pos[decorIdx] >> 4; + yOff = sDecorationContext.pos[decorIdx] & 0xf; + if (sDecorationContext.items[decorIdx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28c) { unk_020391B4->height--; } @@ -3376,8 +3376,8 @@ void sub_81012A0(void) u8 xOff; u8 yOff; u16 i; - xOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] >> 4; - yOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] & 0xf; + xOff = sDecorationContext.pos[gUnknown_020391B4[gUnknown_02039234].decorId] >> 4; + yOff = sDecorationContext.pos[gUnknown_020391B4[gUnknown_02039234].decorId] & 0xf; for (i=0; i<0x40; i++) { if (gSaveBlock1.objectEventTemplates[i].x == xOff && gSaveBlock1.objectEventTemplates[i].y == yOff && !FlagGet(gSaveBlock1.objectEventTemplates[i].flagId)) @@ -3391,13 +3391,13 @@ void sub_81012A0(void) bool8 sub_8101340(u8 taskId) { u16 i; - for (i=0; i<ewram_1f000.size; i++) + for (i=0; i<sDecorationContext.size; i++) { - if (ewram_1f000.items[i] != 0) + if (sDecorationContext.items[i] != 0) { - if (gDecorations[ewram_1f000.items[i]].permission == DECORPERM_SOLID_MAT) + if (gDecorations[sDecorationContext.items[i]].permission == DECORPERM_SOLID_MAT) { - sub_8101118(ewram_1f000.items[i], gUnknown_020391B4); + sub_8101118(sDecorationContext.items[i], gUnknown_020391B4); if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE) { gUnknown_020391B4->decorId = i; @@ -3417,11 +3417,11 @@ void sub_81013B8(u8 a0, u8 a1, u8 a2, u8 a3) u8 xOff; u8 yOff; u8 decorIdx; - for (i=0; i<ewram_1f000.size; i++) + for (i=0; i<sDecorationContext.size; i++) { - decorIdx = ewram_1f000.items[i]; - xOff = ewram_1f000.pos[i] >> 4; - yOff = ewram_1f000.pos[i] & 0xf; + decorIdx = sDecorationContext.items[i]; + xOff = sDecorationContext.pos[i] >> 4; + yOff = sDecorationContext.pos[i] & 0xf; if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && a0 <= xOff && a1 <= yOff && a2 >= xOff && a3 >= yOff) { gUnknown_020391B4[gUnknown_02039234].decorId = i; @@ -3442,9 +3442,9 @@ void sub_8101460(u8 taskId) gUnknown_02039234 = 0; if (sub_8101340(taskId) != TRUE) { - for (i = 0; i < ewram_1f000.size; i++) + for (i = 0; i < sDecorationContext.size; i++) { - var1 = ewram_1f000.items[i]; + var1 = sDecorationContext.items[i]; if (var1 != 0) { sub_8101118(var1, gUnknown_020391B4); @@ -3458,8 +3458,8 @@ void sub_8101460(u8 taskId) } if (gUnknown_02039234 != 0) { - xOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] >> 4; - yOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] & 0xf; + xOff = sDecorationContext.pos[gUnknown_020391B4[0].decorId] >> 4; + yOff = sDecorationContext.pos[gUnknown_020391B4[0].decorId] & 0xf; var1 = yOff - gUnknown_020391B4[0].height + 1; var2 = gUnknown_020391B4[0].width + xOff - 1; diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index ca0022b39..b3cc6d0ad 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -756,7 +756,7 @@ static void sub_81428A0(u8 taskID) if (!gPaletteFade.active) { DestroyTask(taskID); - SetMainCallback2(sub_81439D0); + SetMainCallback2(CB2_StartCreditsSequence); } } diff --git a/src/intro.c b/src/intro.c index 5b4dc87dd..2c8b45e18 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1153,9 +1153,9 @@ static void Task_IntroHandleBikeAndEonMovement(u8 taskId) if (gTasks[taskId].data[3] < 512) gTasks[taskId].data[3]++; #ifdef SAPPHIRE - sub_8149020(0); + CycleSceneryPalette(0); #else - sub_8149020(1); + CycleSceneryPalette(1); #endif } diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index 73210c5d9..d20049136 100644 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -303,7 +303,7 @@ const struct CompressedSpriteSheet gUnknown_08416E34[] = { EWRAM_DATA u16 gUnknown_02039358 = 0; EWRAM_DATA s16 gUnknown_0203935A = 0; -EWRAM_DATA s16 gUnknown_0203935C = 0; +EWRAM_DATA s16 gIntroCredits_MovingSceneryState = 0; extern u8 gReservedSpritePaletteCount; @@ -335,7 +335,7 @@ void load_intro_part2_graphics(u8 a) sub_8149264(); break; } - gUnknown_0203935C = 0; + gIntroCredits_MovingSceneryState = 0; gReservedSpritePaletteCount = 8; } @@ -407,7 +407,7 @@ void sub_8148CB0(u8 a) break; } gReservedSpritePaletteCount = 8; - gUnknown_0203935C = 0; + gIntroCredits_MovingSceneryState = 0; } void sub_8148E90(u8 a) @@ -480,7 +480,7 @@ void sub_8148F3C(u8 taskId) } } -void sub_8149020(u8 mode) +void CycleSceneryPalette(u8 mode) { u16 x; u16 y; @@ -527,7 +527,7 @@ void sub_8149020(u8 mode) void sub_814910C(struct Sprite *sprite) { - if (gUnknown_0203935C) + if (gIntroCredits_MovingSceneryState) { DestroySprite(sprite); } diff --git a/src/pokeblock.c b/src/pokeblock.c index 6e3f5d9e1..5a0ea0810 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -316,7 +316,7 @@ static bool8 sub_810B6C0(void) case 10: if (MultistepInitMenuWindowContinue()) { - ewram1FFFF = 0; + ePokeblockGfxState = 0; gMain.state++; } break; @@ -334,7 +334,7 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 13: - ewram1FFFE = sub_810BA50(0x38, 0x40, 0); + ePokeblockCaseSpriteId = sub_810BA50(0x38, 0x40, 0); gMain.state++; break; case 14: @@ -386,27 +386,27 @@ void sub_810B96C(void) static bool8 sub_810B998(void) { - switch (ewram1FFFF) + switch (ePokeblockGfxState) { case 0: LZDecompressVram(gMenuPokeblock_Gfx, BG_CHAR_ADDR(2)); - ewram1FFFF++; + ePokeblockGfxState++; break; case 1: LZDecompressWram(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); - ewram1FFFF++; + ePokeblockGfxState++; break; case 2: LoadCompressedPalette(gMenuPokeblock_Pal, 0, 0xc0); - ewram1FFFF++; + ePokeblockGfxState++; break; case 3: LoadCompressedObjectPic(&gUnknown_083F7F74); - ewram1FFFF++; + ePokeblockGfxState++; break; case 4: LoadCompressedObjectPalette(&gUnknown_083F7F7C); - ewram1FFFF = 0; + ePokeblockGfxState = 0; return TRUE; } return FALSE; @@ -627,7 +627,7 @@ static void sub_810BDAC(bool8 flag) static void sub_810BF38(bool8 flag) { PlaySE(SE_SELECT); - gSprites[ewram1FFFE].callback = sub_810C8D4; + gSprites[ePokeblockCaseSpriteId].callback = sub_810C8D4; sub_810BDAC(flag); } diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index b3dafef72..6a5a6eaa1 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -540,7 +540,7 @@ static bool8 TransitionToPokeblockFeedScene(void) case 6: if (MultistepInitMenuWindowContinue()) { - ewram1FFFF = 0; + ePokeblockGfxState = 0; gMain.state++; } break; @@ -551,11 +551,11 @@ static bool8 TransitionToPokeblockFeedScene(void) } break; case 8: - ewram1FFFD = sub_81480B4(); + ePokeblockFeedCaseSpriteId = sub_81480B4(); gMain.state++; break; case 9: - ewram1FFFE = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]); + ePokeblockMonSpriteId = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]); gMain.state++; break; case 10: @@ -611,13 +611,13 @@ static bool8 sub_8147B20(struct Pokemon* mon) { u16 species; u32 PiD, TiD; - switch (ewram1FFFF) + switch (ePokeblockGfxState) { case 0: species = GetMonData(mon, MON_DATA_SPECIES2); PiD = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (void *)EWRAM, gMonSpriteGfx_Sprite_ptr[1], species, PiD); - ewram1FFFF++; + ePokeblockGfxState++; break; case 1: { @@ -629,37 +629,37 @@ static bool8 sub_8147B20(struct Pokemon* mon) palette = GetMonSpritePalStructFromOtIdPersonality(species, TiD, PiD); LoadCompressedObjectPalette(palette); GetMonSpriteTemplate_803C56C(palette->tag, 1); - ewram1FFFF++; + ePokeblockGfxState++; } break; case 2: LoadCompressedObjectPic(&gUnknown_083F7F74); - ewram1FFFF++; + ePokeblockGfxState++; break; case 3: LoadCompressedObjectPalette(&gUnknown_083F7F7C); - ewram1FFFF++; + ePokeblockGfxState++; break; case 4: LoadCompressedObjectPic(&sUnknown_084121DC); - ewram1FFFF++; + ePokeblockGfxState++; break; case 5: SetPokeblockFeedSpritePal(gSpecialVar_ItemId); LoadCompressedObjectPalette(&sPokeblockFeedSpritePal); - ewram1FFFF++; + ePokeblockGfxState++; break; case 6: LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM)); - ewram1FFFF++; + ePokeblockGfxState++; break; case 7: LZDecompressVram(gUnknown_08E782FC, (void*)(VRAM + 0xE800)); - ewram1FFFF++; + ePokeblockGfxState++; break; case 8: LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); - ewram1FFFF = 0; + ePokeblockGfxState = 0; return TRUE; } return FALSE; @@ -684,13 +684,13 @@ static void sub_8147CC8(u8 taskID) sub_81481DC(); break; case 255: - sub_8148108(ewram1FFFD, gTasks[taskID].data[1]); + sub_8148108(ePokeblockFeedCaseSpriteId, gTasks[taskID].data[1]); break; case 269: - ewram1FFFC = CreatePokeblockSprite(); + ePokeblockSpriteId = CreatePokeblockSprite(); break; case 281: - sub_8148044(ewram1FFFE); + sub_8148044(ePokeblockMonSpriteId); break; case 297: gTasks[taskID].func = Task_PrintAtePokeblockText; @@ -932,8 +932,8 @@ static bool8 sub_81485CC(void) { u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4]; - gPokeblockFeedPokeSprite->pos2.x = ewram1D000_2[var]; - gPokeblockFeedPokeSprite->pos2.y = ewram1D400[var]; + gPokeblockFeedPokeSprite->pos2.x = ePokeblockFeedMonAnimX[var]; + gPokeblockFeedPokeSprite->pos2.y = ePokeblockFeedMonAnimY[var]; if (--gUnknown_03005FA0[4] == 0) return TRUE; @@ -957,18 +957,18 @@ static void sub_814862C(void) for (i = 0; i < r7 - 1; i++) { - s16* r3 = &ewram1D000_2[r8 + i]; + s16* r3 = &ePokeblockFeedMonAnimX[r8 + i]; s16 r1 = *r3 - (var3); - s16* r5 = &ewram1D400[r8 + i]; + s16* r5 = &ePokeblockFeedMonAnimY[r8 + i]; s16 r4 = *r5 - r9; *r3 -= r1 * (i + 1) / r7; *r5 -= r4 * (i + 1) / r7; } - ewram1D000_2[(r8 + r7) - 1] = var3; - ewram1D400[(r8 + r7) - 1] = r9; + ePokeblockFeedMonAnimX[(r8 + r7) - 1] = var3; + ePokeblockFeedMonAnimY[(r8 + r7) - 1] = r9; } void sub_8148710(void) @@ -996,13 +996,13 @@ void sub_8148710(void) if (!var_24) { - ewram1D000_2[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8; - ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7; + ePokeblockFeedMonAnimX[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8; + ePokeblockFeedMonAnimY[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7; } else { - ewram1D000_2[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8; - ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7; + ePokeblockFeedMonAnimX[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8; + ePokeblockFeedMonAnimY[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7; } gUnknown_03005FA0[0] += gUnknown_03005FA0[1]; diff --git a/src/save.c b/src/save.c index 3b6cabe6a..c03f3349e 100644 --- a/src/save.c +++ b/src/save.c @@ -97,11 +97,13 @@ static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced fu // Divide save blocks into individual chunks to be written to flash sectors -#define SAVEBLOCK_CHUNK(structure, chunkNum) \ -{ \ - (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \ - min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ -} \ +#define SAVEBLOCK_CHUNK_EX(structure, size, chunkNum) \ +{ \ + (u8 *)structure + chunkNum * SECTOR_DATA_SIZE, \ + min(size - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ +} \ + +#define SAVEBLOCK_CHUNK(structure, chunkNum) SAVEBLOCK_CHUNK_EX(&structure, sizeof(structure), chunkNum) static const struct SaveBlockChunk sSaveBlockChunks[] = { @@ -125,8 +127,8 @@ static const struct SaveBlockChunk sSaveBlockChunks[] = static const struct SaveBlockChunk sHallOfFameChunks[] = { - SAVEBLOCK_CHUNK(*eHallOfFame, 0), - SAVEBLOCK_CHUNK(*eHallOfFame, 1), + SAVEBLOCK_CHUNK_EX(gDecompressionBuffer, 2 * SECTOR_DATA_SIZE, 0), + SAVEBLOCK_CHUNK_EX(gDecompressionBuffer, 2 * SECTOR_DATA_SIZE, 1), }; void Save_EraseAllData(void) |