From ac4ca95a7bcf05482add953aafa081df824fc954 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 5 May 2017 00:43:55 -0400 Subject: use macros and defines for save.c making it easier to add new sections --- src/save.c | 191 +++++++++++++++++++++++++++++++------------------------------ 1 file changed, 97 insertions(+), 94 deletions(-) (limited to 'src') diff --git a/src/save.c b/src/save.c index 72ec3b251..ce1ee3089 100644 --- a/src/save.c +++ b/src/save.c @@ -7,6 +7,11 @@ #include "rom4.h" #include "save_failed_screen.h" +#define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1) +#define GETCHUNKSIZE(chunk, n) ((sizeof(chunk) - (0xF80 * (n - 1))) >= 0xF80 ? 0xF80 : (sizeof(chunk) - (0xF80 * (n - 1)))) +#define GETBLOCKOFFSET(n) (0xF80 * (n - 1)) +#define TOTALNUMSECTORS ((ARRAY_COUNT(gSaveSectionLocations) * 2) + (ARRAY_COUNT(gHallOfFameSaveSectionLocations) * 2)) // there are 2 slots, so double each array count and get the sum. + extern u32 gLastSaveSectorStatus; // used but in an unferenced function, so unused extern u16 gLastWrittenSector; extern u32 gLastSaveCounter; @@ -24,26 +29,26 @@ extern struct HallOfFame gHallOfFame; const struct SaveSectionLocation gSaveSectionLocations[] = { - {((u8 *) &gSaveBlock2), 0x890}, - {((u8 *) &gSaveBlock1) + 0xF80 * 0, 0xF80}, - {((u8 *) &gSaveBlock1) + 0xF80 * 1, 0xF80}, - {((u8 *) &gSaveBlock1) + 0xF80 * 2, 0xF80}, - {((u8 *) &gSaveBlock1) + 0xF80 * 3, 0xC40}, - {((u8 *) &gPokemonStorage) + 0xF80 * 0, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 1, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 2, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 3, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 4, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 5, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 6, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 7, 0xF80}, - {((u8 *) &gPokemonStorage) + 0xF80 * 8, 0x7D0} + {((u8 *) &gSaveBlock2) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock2, 1)}, + {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock1, 1)}, + {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gSaveBlock1, 2)}, + {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gSaveBlock1, 3)}, + {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gSaveBlock1, 4)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gPokemonStorage, 1)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gPokemonStorage, 2)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gPokemonStorage, 3)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gPokemonStorage, 4)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(5), GETCHUNKSIZE(gPokemonStorage, 5)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(6), GETCHUNKSIZE(gPokemonStorage, 6)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(7), GETCHUNKSIZE(gPokemonStorage, 7)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(8), GETCHUNKSIZE(gPokemonStorage, 8)}, + {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(9), GETCHUNKSIZE(gPokemonStorage, 9)} }; const struct SaveSectionLocation gHallOfFameSaveSectionLocations[] = { - {((u8 *) &gHallOfFame) + 0xF80 * 0, 0xF80}, - {((u8 *) &gHallOfFame) + 0xF80 * 1, 0xF80} + {((u8 *) &gHallOfFame) + GETBLOCKOFFSET(1), GETCHUNKSIZE(struct HallOfFame, 1)}, // gHallOfFame is not a proper sym, so the struct must be used. + {((u8 *) &gHallOfFame) + GETBLOCKOFFSET(2), GETCHUNKSIZE(struct HallOfFame, 2)} }; const u8 gFlashSectors[] = { 0x1E, 0x1F }; @@ -56,7 +61,6 @@ void ClearSaveData(void) EraseFlashSector(i); } -// ResetSaveCounters void ResetSaveCounters(void) { gSaveCounter = 0; @@ -101,11 +105,11 @@ u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location) gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write. gLastSaveCounter = gSaveCounter; gLastWrittenSector++; - gLastWrittenSector = gLastWrittenSector % 14; + gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations); gSaveCounter++; retVal = 1; - for (i = 0; i < 14; i++) + for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) HandleWriteSector(i, location); if (gDamagedSaveSectors != 0) // skip the damaged sector. @@ -127,8 +131,8 @@ u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location) u16 size; sector = a1 + gLastWrittenSector; - sector %= 14; - sector += 14 * (gSaveCounter % 2); + sector %= ARRAY_COUNT(gSaveSectionLocations); + sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); data = location[a1].data; size = location[a1].size; @@ -185,7 +189,7 @@ u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location gLastKnownGoodSector = gLastWrittenSector; gLastSaveCounter = gSaveCounter; gLastWrittenSector++; - gLastWrittenSector = gLastWrittenSector % 14; + gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations); gSaveCounter++; gUnknown_03005EB4 = 0; gDamagedSaveSectors = 0; @@ -250,8 +254,8 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location) u8 status; sector = a1 + gLastWrittenSector; - sector %= 14; - sector += 14 * (gSaveCounter % 2); + sector %= ARRAY_COUNT(gSaveSectionLocations); + sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); data = location[a1].data; size = location[a1].size; @@ -320,8 +324,8 @@ u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location) u16 sector; sector = a1 + gLastWrittenSector - 1; - sector %= 14; - sector += 14 * (gSaveCounter % 2); + sector %= ARRAY_COUNT(gSaveSectionLocations); + sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)])) { @@ -343,8 +347,8 @@ u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location) u16 sector; sector = a1 + gLastWrittenSector - 1; - sector %= 14; - sector += 14 * (gSaveCounter % 2); + sector %= ARRAY_COUNT(gSaveSectionLocations); + sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25)) { @@ -371,7 +375,7 @@ u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location) } else { - retVal = sub_8125974(location); + retVal = GetSaveValidStatus(location); sub_81258BC(0xFFFF, location); } @@ -382,12 +386,12 @@ u8 sub_81258BC(u16 a1, const struct SaveSectionLocation *location) { u16 i; u16 checksum; - u16 v3 = 14 * (gSaveCounter % 2); + u16 v3 = ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); u16 id; - for (i = 0; i < 14; i++) + for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) { - sub_8125BF8(i + v3, gFastSaveSection); + DoReadFlashWholeSection(i + v3, gFastSaveSection); id = gFastSaveSection->id; if (id == 0) gLastWrittenSector = i; @@ -404,121 +408,120 @@ u8 sub_81258BC(u16 a1, const struct SaveSectionLocation *location) return 1; } -u8 sub_8125974(const struct SaveSectionLocation *location) +u8 GetSaveValidStatus(const struct SaveSectionLocation *location) { u16 i; u16 checksum; - u32 v2 = 0; - u32 v3 = 0; - u32 v4; - bool8 v5; - u8 v14; - u8 v10; - - v4 = 0; - v5 = FALSE; + u32 saveSlot1Counter = 0; + u32 saveSlot2Counter = 0; + u32 slotCheckField = 0; + bool8 securityPassed = FALSE; + u8 saveSlot1Status; + u8 saveSlot2Status; - for (i = 0; i < 14; i++) + // check save slot 1. + for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) { - sub_8125BF8(i, gFastSaveSection); + DoReadFlashWholeSection(i, gFastSaveSection); if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE) { - v5 = TRUE; + securityPassed = TRUE; checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size); if (gFastSaveSection->checksum == checksum) { - v2 = gFastSaveSection->counter; - v4 |= 1 << gFastSaveSection->id; + saveSlot1Counter = gFastSaveSection->counter; + slotCheckField |= 1 << gFastSaveSection->id; } } } - if (v5) + if (securityPassed) { - if (v4 == 0x3FFF) - v14 = 1; + if (slotCheckField == GETVALIDSTATUSBITFIELD) + saveSlot1Status = 1; else - v14 = 255; + saveSlot1Status = 255; } else { - v14 = 0; + saveSlot1Status = 0; } - v4 = 0; - v5 = FALSE; + slotCheckField = 0; + securityPassed = FALSE; - for (i = 0; i < 14; i++) + // check save slot 2. + for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) { - sub_8125BF8(i + 14, gFastSaveSection); + DoReadFlashWholeSection(i + ARRAY_COUNT(gSaveSectionLocations), gFastSaveSection); if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE) { - v5 = TRUE; + securityPassed = TRUE; checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size); if (gFastSaveSection->checksum == checksum) { - v3 = gFastSaveSection->counter; - v4 |= 1 << gFastSaveSection->id; + saveSlot2Counter = gFastSaveSection->counter; + slotCheckField |= 1 << gFastSaveSection->id; } } } - if (v5) + if (securityPassed) { - if (v4 == 0x3FFF) - v10 = 1; + if (slotCheckField == GETVALIDSTATUSBITFIELD) + saveSlot2Status = 1; else - v10 = 255; + saveSlot2Status = 255; } else { - v10 = 0; + saveSlot2Status = 0; } - if (v14 == 1 && v10 == 1) + if (saveSlot1Status == 1 && saveSlot2Status == 1) { - if ((v2 == -1 && v3 == 0) || (v2 == 0 && v3 == -1)) + if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1)) { - if ((unsigned)(v2 + 1) < (unsigned)(v3 + 1)) + if ((unsigned)(saveSlot1Counter + 1) < (unsigned)(saveSlot2Counter + 1)) { - gSaveCounter = v3; + gSaveCounter = saveSlot2Counter; } else { - gSaveCounter = v2; + gSaveCounter = saveSlot1Counter; } } else { - if (v2 < v3) + if (saveSlot1Counter < saveSlot2Counter) { - gSaveCounter = v3; + gSaveCounter = saveSlot2Counter; } else { - gSaveCounter = v2; + gSaveCounter = saveSlot1Counter; } } return 1; } - if (v14 == 1) + if (saveSlot1Status == 1) { - gSaveCounter = v2; - if (v10 == 255) + gSaveCounter = saveSlot1Counter; + if (saveSlot2Status == 255) return 255; return 1; } - if (v10 == 1) + if (saveSlot2Status == 1) { - gSaveCounter = v3; - if (v14 == 255) + gSaveCounter = saveSlot2Counter; + if (saveSlot1Status == 255) return 255; return 1; } - if (v14 == 0 && v10 == 0) + if (saveSlot1Status == 0 && saveSlot2Status == 0) { gSaveCounter = 0; gLastWrittenSector = 0; @@ -534,7 +537,7 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size) { u16 i; struct SaveSection *section = &unk_2000000; - sub_8125BF8(a1, section); + DoReadFlashWholeSection(a1, section); if (section->security == UNKNOWN_CHECK_VALUE) { u16 checksum = CalculateChecksum(section->data, size); @@ -555,7 +558,7 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size) } } -u8 sub_8125BF8(u8 sector, struct SaveSection *section) +u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) { ReadFlash(sector, 0, section->data, sizeof(struct SaveSection)); return 1; @@ -577,23 +580,23 @@ u8 HandleSavingData(u8 saveType) u8 i; switch (saveType) { - case HOF_DELETE_SAVE: // deletes save before HOF case. unused - for (i = 28; i < 32; i++) + case HOF_DELETE_SAVE: // deletes HOF before overwriting HOF completely. unused + for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++) EraseFlashSector(i); case HOF_SAVE: // hall of fame. if (GetGameStat(10) < 999) IncrementGameStat(10); - for (i = 0; i < 2; i++) - HandleWriteSectorNBytes(28 + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size); + for (i = 0; i < ARRAY_COUNT(gHallOfFameSaveSectionLocations); i++) + HandleWriteSectorNBytes((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0) + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size); SaveSerializedGame(); save_write_to_flash(0xFFFF, gSaveSectionLocations); break; - case NORMAL_SAVE: // normal save. + case NORMAL_SAVE: // normal save. also called by overwriting your own save. default: SaveSerializedGame(); save_write_to_flash(0xFFFF, gSaveSectionLocations); break; - case LINK_SAVE: // link save. update only the pokemon, i think. + case LINK_SAVE: // link save. updates only gSaveBlock1 and gSaveBlock2. SaveSerializedGame(); for (i = 0; i < 5; i++) save_write_to_flash(i, gSaveSectionLocations); @@ -603,8 +606,8 @@ u8 HandleSavingData(u8 saveType) save_write_to_flash(0, gSaveSectionLocations); break; case DIFFERENT_FILE_SAVE: // there is a different file, so erase the file and overwrite it completely. - for (i = 28; i < 32; i++) - EraseFlashSector(i); + for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++) + EraseFlashSector(i); // erase HOF. SaveSerializedGame(); save_write_to_flash(0xFFFF, gSaveSectionLocations); break; @@ -634,7 +637,7 @@ u8 sub_8125D80(void) // trade.s save bool8 sub_8125DA8(void) // trade.s save { - u8 retVal = sub_812550C(14, gSaveSectionLocations); + u8 retVal = sub_812550C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations); if (gDamagedSaveSectors) DoSaveFailedScreen(0); if (retVal == 0xFF) @@ -645,7 +648,7 @@ bool8 sub_8125DA8(void) // trade.s save u8 sub_8125DDC(void) // trade.s save { - sub_812556C(14, gSaveSectionLocations); + sub_812556C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations); if (gDamagedSaveSectors) DoSaveFailedScreen(0); return 0; @@ -653,7 +656,7 @@ u8 sub_8125DDC(void) // trade.s save u8 sub_8125E04(void) // trade.s save { - sub_8125758(14, gSaveSectionLocations); + sub_8125758(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations); if (gDamagedSaveSectors) DoSaveFailedScreen(0); return 0; @@ -709,9 +712,9 @@ u8 sub_8125EC8(u8 a1) gGameContinueCallback = 0; break; case 3: - result = sub_8125B88(28, gHallOfFameSaveSectionLocations[0].data, gHallOfFameSaveSectionLocations[0].size); + result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0), gHallOfFameSaveSectionLocations[0].data, gHallOfFameSaveSectionLocations[0].size); if (result == 1) - result = sub_8125B88(29, gHallOfFameSaveSectionLocations[1].data, gHallOfFameSaveSectionLocations[1].size); + result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 1), gHallOfFameSaveSectionLocations[1].data, gHallOfFameSaveSectionLocations[1].size); break; } -- cgit v1.2.3 From 0354f2cc5ae9771d745e6ffadd4715bdc8ff5221 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 12 May 2017 01:57:43 -0400 Subject: remove unknowns from birch_pc.c --- src/battle_interface.c | 4 +- src/birch_pc.c | 105 +++++++++++++++++++------------------- src/credits.c | 2 +- src/easy_chat.c | 2 +- src/pokedex.c | 22 ++++---- src/script_pokemon_util_80C4BF0.c | 4 +- 6 files changed, 70 insertions(+), 69 deletions(-) (limited to 'src') diff --git a/src/battle_interface.c b/src/battle_interface.c index d097598b5..d4a9f9cce 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -8,6 +8,7 @@ #include "songs.h" #include "battle.h" #include "palette.h" +#include "pokedex.h" struct UnknownStruct5 { @@ -104,7 +105,6 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[]; #define MACRO1(n) ((n) - (n) / 8 * 8) + 64 * ((n) / 8) extern int sub_8040D3C(); -extern u8 sub_8090D90(); extern void load_gfxc_health_bar(); static void sub_8043D5C(struct Sprite *); @@ -2534,7 +2534,7 @@ static void sub_8045458(u8 a, u8 b) if (battle_side_get_owner(r4) != 0) { u16 species = GetMonData(&gEnemyParty[gUnknown_02024A6A[r4]], MON_DATA_SPECIES); - if (sub_8090D90(SpeciesToNationalPokedexNum(species), 1) != 0) + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) { r4 = gSprites[a].data5; if (b != 0) diff --git a/src/birch_pc.c b/src/birch_pc.c index 89eafc0ce..79070b5a8 100644 --- a/src/birch_pc.c +++ b/src/birch_pc.c @@ -9,31 +9,31 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; -extern const u8 gUnknown_081C4520[]; -extern const u8 gUnknown_081C456A[]; -extern const u8 gUnknown_081C45B0[]; -extern const u8 gUnknown_081C45F9[]; -extern const u8 gUnknown_081C4648[]; -extern const u8 gUnknown_081C467E[]; -extern const u8 gUnknown_081C46B9[]; -extern const u8 gUnknown_081C46FE[]; -extern const u8 gUnknown_081C4747[]; -extern const u8 gUnknown_081C4780[]; -extern const u8 gUnknown_081C47DF[]; -extern const u8 gUnknown_081C4828[]; -extern const u8 gUnknown_081C4863[]; -extern const u8 gUnknown_081C489C[]; -extern const u8 gUnknown_081C48EB[]; -extern const u8 gUnknown_081C4936[]; -extern const u8 gUnknown_081C49A2[]; -extern const u8 gUnknown_081C4A06[]; -extern const u8 gUnknown_081C4A4F[]; -extern const u8 gUnknown_081C4A91[]; -extern const u8 gUnknown_081C4ADA[]; +extern const u8 gBirchDexRatingText_LessThan10[]; +extern const u8 gBirchDexRatingText_LessThan20[]; +extern const u8 gBirchDexRatingText_LessThan30[]; +extern const u8 gBirchDexRatingText_LessThan40[]; +extern const u8 gBirchDexRatingText_LessThan50[]; +extern const u8 gBirchDexRatingText_LessThan60[]; +extern const u8 gBirchDexRatingText_LessThan70[]; +extern const u8 gBirchDexRatingText_LessThan80[]; +extern const u8 gBirchDexRatingText_LessThan90[]; +extern const u8 gBirchDexRatingText_LessThan100[]; +extern const u8 gBirchDexRatingText_LessThan110[]; +extern const u8 gBirchDexRatingText_LessThan120[]; +extern const u8 gBirchDexRatingText_LessThan130[]; +extern const u8 gBirchDexRatingText_LessThan140[]; +extern const u8 gBirchDexRatingText_LessThan150[]; +extern const u8 gBirchDexRatingText_LessThan160[]; +extern const u8 gBirchDexRatingText_LessThan170[]; +extern const u8 gBirchDexRatingText_LessThan180[]; +extern const u8 gBirchDexRatingText_LessThan190[]; +extern const u8 gBirchDexRatingText_LessThan200[]; +extern const u8 gBirchDexRatingText_DexCompleted[]; bool16 ScriptGetPokedexInfo(void) { - if (!gSpecialVar_0x8004) + if (gSpecialVar_0x8004 == 0) // is national dex not present? { gSpecialVar_0x8005 = GetHoennPokedexCount(0); gSpecialVar_0x8006 = GetHoennPokedexCount(1); @@ -47,65 +47,66 @@ bool16 ScriptGetPokedexInfo(void) return IsNationalPokedexEnabled(); } +// This shows your Hoenn Pokedex rating and NOT your National Dex. const u8 *GetPokedexRatingText(u16 count) { if (count < 10) - return gUnknown_081C4520; + return gBirchDexRatingText_LessThan10; if (count < 20) - return gUnknown_081C456A; + return gBirchDexRatingText_LessThan20; if (count < 30) - return gUnknown_081C45B0; + return gBirchDexRatingText_LessThan30; if (count < 40) - return gUnknown_081C45F9; + return gBirchDexRatingText_LessThan40; if (count < 50) - return gUnknown_081C4648; + return gBirchDexRatingText_LessThan50; if (count < 60) - return gUnknown_081C467E; + return gBirchDexRatingText_LessThan60; if (count < 70) - return gUnknown_081C46B9; + return gBirchDexRatingText_LessThan70; if (count < 80) - return gUnknown_081C46FE; + return gBirchDexRatingText_LessThan80; if (count < 90) - return gUnknown_081C4747; + return gBirchDexRatingText_LessThan90; if (count < 100) - return gUnknown_081C4780; + return gBirchDexRatingText_LessThan100; if (count < 110) - return gUnknown_081C47DF; + return gBirchDexRatingText_LessThan110; if (count < 120) - return gUnknown_081C4828; + return gBirchDexRatingText_LessThan120; if (count < 130) - return gUnknown_081C4863; + return gBirchDexRatingText_LessThan130; if (count < 140) - return gUnknown_081C489C; + return gBirchDexRatingText_LessThan140; if (count < 150) - return gUnknown_081C48EB; + return gBirchDexRatingText_LessThan150; if (count < 160) - return gUnknown_081C4936; + return gBirchDexRatingText_LessThan160; if (count < 170) - return gUnknown_081C49A2; + return gBirchDexRatingText_LessThan170; if (count < 180) - return gUnknown_081C4A06; + return gBirchDexRatingText_LessThan180; if (count < 190) - return gUnknown_081C4A4F; + return gBirchDexRatingText_LessThan190; if (count < 200) - return gUnknown_081C4A91; + return gBirchDexRatingText_LessThan200; if (count == 200) { - if (sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - || sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) - return gUnknown_081C4A91; - return gUnknown_081C4ADA; + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + || GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. + return gBirchDexRatingText_LessThan200; + return gBirchDexRatingText_DexCompleted; } if (count == 201) { - if (sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - && sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) - return gUnknown_081C4A91; - return gUnknown_081C4ADA; + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + && GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) + return gBirchDexRatingText_LessThan200; + return gBirchDexRatingText_DexCompleted; } if (count == 202) - return gUnknown_081C4ADA; - return gUnknown_081C4520; + return gBirchDexRatingText_DexCompleted; + return gBirchDexRatingText_LessThan10; } void ShowPokedexRatingMessage(void) diff --git a/src/credits.c b/src/credits.c index 01af78bce..ffb7554ba 100644 --- a/src/credits.c +++ b/src/credits.c @@ -2044,7 +2044,7 @@ void sub_81458DC(void) _0814590E:\n\ adds r0, r4, 0\n\ movs r1, 0x1\n\ - bl sub_8090D90\n\ + bl GetNationalPokedexFlag\n\ lsls r0, 24\n\ adds r6, r7, 0\n\ adds r6, 0x90\n\ diff --git a/src/easy_chat.c b/src/easy_chat.c index 380fe6e4d..33d7678bb 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -243,7 +243,7 @@ static u16 sub_80EB9D8(void) { { const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - const u8 local2 = sub_8090D90(dexNum, 0); + const u8 local2 = GetNationalPokedexFlag(dexNum, 0); if (local2) { diff --git a/src/pokedex.c b/src/pokedex.c index 5ea1f9938..83b87906d 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -855,8 +855,8 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = HoennToNationalOrder(i + 1); gPokedexView->unk0[i].dexNum = vars[2]; - gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk0[i].seen = GetNationalPokedexFlag(vars[2], 0); + gPokedexView->unk0[i].owned = GetNationalPokedexFlag(vars[2], 1); if (gPokedexView->unk0[i].seen) gPokedexView->unk60C = i + 1; } @@ -870,14 +870,14 @@ void SortPokedex(u8 dexMode, u8 sortMode) for (i = 0; i < vars[0]; i++) { vars[2] = i + 1; - if (sub_8090D90(vars[2], 0)) + if (GetNationalPokedexFlag(vars[2], 0)) r10 = 1; if (r10) { asm(""); //Needed to match for some reason gPokedexView->unk0[r5].dexNum = vars[2]; - gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk0[r5].seen = GetNationalPokedexFlag(vars[2], 0); + gPokedexView->unk0[r5].owned = GetNationalPokedexFlag(vars[2], 1); if (gPokedexView->unk0[r5].seen) gPokedexView->unk60C = r5 + 1; r5++; @@ -891,11 +891,11 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 0)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk0[gPokedexView->unk60C].owned = GetNationalPokedexFlag(vars[2], 1); gPokedexView->unk60C++; } } @@ -905,7 +905,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; @@ -919,7 +919,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; @@ -933,7 +933,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; @@ -947,7 +947,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 912458655..d1e401e18 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -568,8 +568,8 @@ u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5) if(sentToPc >= 0) { // set both the seen and caught flags - sub_8090D90(nationalSpecies, 2); - sub_8090D90(nationalSpecies, 3); + GetNationalPokedexFlag(nationalSpecies, 2); + GetNationalPokedexFlag(nationalSpecies, 3); } } return sentToPc; -- cgit v1.2.3 From ac021a863dfc9672933d6f4ac2a8978a8dd457c0 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 12 May 2017 02:15:34 -0400 Subject: more comments on birch_pc.c --- src/birch_pc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/birch_pc.c b/src/birch_pc.c index 79070b5a8..df6ebc6ea 100644 --- a/src/birch_pc.c +++ b/src/birch_pc.c @@ -93,19 +93,19 @@ const u8 *GetPokedexRatingText(u16 count) if (count == 200) { if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - || GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. + || GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } if (count == 201) { if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - && GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) + && GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } if (count == 202) - return gBirchDexRatingText_DexCompleted; + return gBirchDexRatingText_DexCompleted; // Hoenn dex is considered complete, even though the hoenn dex count is 210. return gBirchDexRatingText_LessThan10; } -- cgit v1.2.3 From f999ebede0e0012cc68be71841edd3910168c105 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 12 May 2017 02:15:51 -0400 Subject: actually update the file --- src/birch_pc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/birch_pc.c b/src/birch_pc.c index df6ebc6ea..f01107b3d 100644 --- a/src/birch_pc.c +++ b/src/birch_pc.c @@ -47,7 +47,7 @@ bool16 ScriptGetPokedexInfo(void) return IsNationalPokedexEnabled(); } -// This shows your Hoenn Pokedex rating and NOT your National Dex. +// This shows your Hoenn Pokedex rating and not your National Dex. const u8 *GetPokedexRatingText(u16 count) { if (count < 10) -- cgit v1.2.3 From d8ce874f29cb6d21f3348f62ebe05ce004ac3c38 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 May 2017 19:34:04 -0400 Subject: decompile up to sub_813AF3C --- src/player_pc.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 125 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/player_pc.c b/src/player_pc.c index f0f0709b1..d24dbecb7 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -21,28 +21,41 @@ enum QUANTITY, }; +// special item description handlers +enum +{ + ITEMPC_SWITCH_WHICH_ITEM = 0xFFF7, + ITEMPC_OKAY_TO_THROW_AWAY, + ITEMPC_TOO_IMPORTANT, + ITEMPC_NO_MORE_ROOM, + ITEMPC_THREW_AWAY_ITEM, + ITEMPC_HOW_MANY_TO_TOSS, + ITEMPC_WITHDREW_THING, + ITEMPC_HOW_MANY_TO_WITHDRAW, + ITEMPC_GO_BACK_TO_PREV +}; + extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); extern void DoPlayerPCDecoration(u8); extern void BuyMenuFreeMemory(void); extern void DestroyVerticalScrollIndicator(u8); -extern u8 sub_813AF3C(void); extern void sub_813AF78(void); extern void sub_813B108(u8); extern void sub_813B174(u8); extern void sub_80A6A30(void); extern u8 sub_807D770(void); -extern void sub_813AE6C(u8, u8); -extern void sub_813AD58(u16); -extern void sub_813AE0C(u8); extern void sub_80F996C(u8); extern void sub_80A418C(u16, enum StringConvertMode, int, int, int); extern void sub_80F98DC(int); extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args +extern void sub_80F944C(void); +extern void LoadScrollIndicatorPalette(void); extern u8 gOtherText_NoItems[]; extern u16 gNewGamePCItems[]; +extern u16 gUnknown_08406334[3]; extern u8 gOtherText_WhatWillYouDo[]; extern u8 gOtherText_NoMailHere[]; @@ -57,7 +70,16 @@ extern u8 gUnknown_08406327[]; extern u8 gUnknown_08406330[]; extern u8 gUnknown_0840631E[]; extern u8 gUnknown_08406318[]; +extern u8 gMenuText_GoBackToPrev[]; extern u8 gOtherText_CancelNoTerminator[]; +extern u8 gOtherText_HowManyToWithdraw[]; +extern u8 gOtherText_WithdrewThing[]; +extern u8 gOtherText_HowManyToToss[]; +extern u8 gOtherText_ThrewAwayItem[]; +extern u8 gOtherText_NoMoreRoom[]; +extern u8 gOtherText_TooImportant[]; +extern u8 gOtherText_OkayToThrowAwayPrompt[]; +extern u8 gOtherText_SwitchWhichItem[]; extern u8 gUnknown_030007B4; extern u8 unk_201FE00[]; @@ -86,6 +108,11 @@ void sub_813A984(u8); void sub_813A9EC(u8); void sub_813AA30(u8, u8); void sub_813ABE8(u8); +void sub_813AD58(u16); +void sub_813AE0C(u8); +void sub_813AE6C(u8, u8); +void sub_813AF04(void); +u8 sub_813AF3C(void); void NewGameInitPCItems(void) { @@ -825,3 +852,97 @@ weirdCase: else DestroyVerticalScrollIndicator(1); } + +void sub_813AD58(u16 itemId) +{ + u8 *string; + + switch(itemId) + { + case ITEMPC_GO_BACK_TO_PREV: + string = gMenuText_GoBackToPrev; + break; + case ITEMPC_HOW_MANY_TO_WITHDRAW: + string = gOtherText_HowManyToWithdraw; + break; + case ITEMPC_WITHDREW_THING: + string = gOtherText_WithdrewThing; + break; + case ITEMPC_HOW_MANY_TO_TOSS: + string = gOtherText_HowManyToToss; + break; + case ITEMPC_THREW_AWAY_ITEM: + string = gOtherText_ThrewAwayItem; + break; + case ITEMPC_NO_MORE_ROOM: + string = gOtherText_NoMoreRoom; + break; + case ITEMPC_TOO_IMPORTANT: + string = gOtherText_TooImportant; + break; + case ITEMPC_OKAY_TO_THROW_AWAY: + string = gOtherText_OkayToThrowAwayPrompt; + break; + case ITEMPC_SWITCH_WHICH_ITEM: + string = gOtherText_SwitchWhichItem; + break; + default: + string = ItemId_GetDescription(itemId); + break; + } + + sub_8072AB0(string, 8, 0x68, 0x68, 0x30, 1); +} + +void sub_813AE0C(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 var = data[1] + data[0]; + + sub_813ABE8(taskId); + + if(data[9] == 0) + { + if(var == data[2]) + sub_813AD58(0xFFFF); + else + sub_813AD58(gSaveBlock1.pcItems[var].itemId); + } +} + +void sub_813AE6C(u8 taskId, u8 var) +{ + s16 *data = gTasks[taskId].data; + + sub_80F944C(); + LoadScrollIndicatorPalette(); + sub_813AF04(); + MenuDrawTextWindow(0xF, 0, 0x1D, 0x13); + MenuDrawTextWindow(0, 0xC, 0xE, 0x13); + MenuDrawTextWindow(0, 0, 0xB, 3); + sub_813AD58(gSaveBlock1.pcItems[0].itemId); + MenuPrint(gUnknown_084062C0[var].text, 1, 1); + sub_813ABE8(taskId); + InitMenu(0, 0x10, 2, data[4], data[0], 0xD); +} + +void sub_813AF04(void) +{ + u16 arr[3]; + + memcpy(arr, gUnknown_08406334, sizeof(arr)); + LoadPalette(&arr[2], 0xDF, 2); + LoadPalette(&arr[1], 0xD1, 2); + LoadPalette(&arr[0], 0xD8, 2); +} + +u8 sub_813AF3C(void) +{ + u8 i, j; + + for(i = 0, j = 6; j < 16; j++) + if(gSaveBlock1.mail[j].itemId != 0) + i++; + + return i; +} -- cgit v1.2.3 From f5b7921fa3b4356c2d79a117858fc543fd2cf15f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 9 Jun 2017 02:43:39 -0400 Subject: cleanup player_pc.c --- src/battle_party_menu.c | 2 +- src/decoration.c | 2 +- src/main_menu.c | 8 +- src/menu.c | 18 +- src/menu_cursor.c | 4 +- src/player_pc.c | 523 ++++++++++++++++++++------------------ src/script_menu.c | 4 +- src/script_pokemon_util_80C4BF0.c | 12 +- src/shop.c | 2 +- src/start_menu.c | 2 +- src/strings.c | 2 +- src/wallclock.c | 2 +- 12 files changed, 308 insertions(+), 273 deletions(-) (limited to 'src') diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 820d16465..e5f78b6c4 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -477,7 +477,7 @@ static void Task_BattlePartyMenuShift(u8 taskId) static void Task_BattlePartyMenuCancel(u8 taskId) { - sub_8072DEC(); + HandleDestroyMenuCursors(); sub_806E7D0(gTasks[taskId].data[4], sBattlePartyPopupMenus); gTasks[taskId].data[4] = gTasks[taskId].data[5]; sub_806D538(0, 0); diff --git a/src/decoration.c b/src/decoration.c index 279a7568b..efe86f144 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -14,7 +14,7 @@ void sub_80FECE0(u8 arg0); void sub_80FE7EC(u8 arg0) { - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 29, 19); sub_80FEC94(arg0); diff --git a/src/main_menu.c b/src/main_menu.c index 50fefc471..e825ae70e 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -965,14 +965,14 @@ static void Task_NewGameSpeech16(u8 taskId) switch (GenderMenuProcessInput()) { case MALE: - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = MALE; MenuZeroFillWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = FEMALE; MenuZeroFillWindowRect(2, 4, 8, 9); @@ -1068,7 +1068,7 @@ static void Task_NewGameSpeech21(u8 taskId) case 2: case 3: case 4: - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); @@ -1080,7 +1080,7 @@ static void Task_NewGameSpeech21(u8 taskId) gTasks[taskId].func = Task_NewGameSpeech22; break; case -1: //B button - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu diff --git a/src/menu.c b/src/menu.c index ba98ff057..d11c45c6f 100644 --- a/src/menu.c +++ b/src/menu.c @@ -56,7 +56,7 @@ void CloseMenu(void) MenuZeroFillScreen(); sub_8064E2C(); ScriptContext2_Disable(); - sub_8072DEC(); + HandleDestroyMenuCursors(); } void AppendToList(u8 *list, u8 *pindex, u32 value) @@ -272,14 +272,14 @@ s8 ProcessMenuInput(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return -1; } @@ -307,14 +307,14 @@ s8 ProcessMenuInputNoWrap(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return -1; } @@ -519,7 +519,7 @@ s8 sub_80727CC(void) if (gMain.newKeys & A_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); return GetMenuCursorPos(); } @@ -527,7 +527,7 @@ s8 sub_80727CC(void) if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return -1; } @@ -733,7 +733,7 @@ void sub_8072DDC(u8 a1) sub_8072DCC(8 * a1); } -void sub_8072DEC(void) +void HandleDestroyMenuCursors(void) { - sub_814A7FC(); + DestroyMenuCursor(); } diff --git a/src/menu_cursor.c b/src/menu_cursor.c index fa28332df..cfb38ca47 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -45,7 +45,7 @@ u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) struct Sprite *v10; if (gUnknown_0203A3D0 != 0x40 || gUnknown_0203A3D1 != 0x40) - sub_814A7FC(); + DestroyMenuCursor(); v9 = 1; if (a2 == 0xFFFF) @@ -120,7 +120,7 @@ u8 unref_sub_814A7AC(u8 a1, u16 a2, u8 a3) return sub_814A758(a1, val1, val2, a3); } -void sub_814A7FC(void) +void DestroyMenuCursor(void) { if (gUnknown_0203A3D0 != 0x40) { diff --git a/src/player_pc.c b/src/player_pc.c index d24dbecb7..f539a5bb5 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -11,14 +11,45 @@ #include "sound.h" #include "string_util.h" #include "task.h" +#include "songs.h" + +// task defines +#define PAGE_INDEX data[0] +#define ITEMS_ABOVE_TOP data[1] +#define NUM_ITEMS data[2] +#define NUM_QUANTITY_ROLLER data[3] +#define NUM_PAGE_ITEMS data[4] +// not used +#define CURRENT_ITEM_STORAGE_MENU data[6] +// not used +#define SWAP_ITEM_INDEX data[8] +#define SWITCH_MODE_ACTIVE data[9] #define NEW_GAME_PC_ITEMS(i, type) ((u16)(gNewGamePCItems + type)[i * 2]) -// type as in define above +// defined and used in the above macro enum { ITEM_ID, - QUANTITY, + QUANTITY +}; + +// player PC menu options +enum +{ + PLAYERPC_MENU_ITEMSTORAGE, + PLAYERPC_MENU_MAILBOX, + PLAYERPC_MENU_DECORATION, + PLAYERPC_MENU_TURNOFF +}; + +// item storage menus +enum +{ + ITEMPC_MENU_WITHDRAW, + ITEMPC_MENU_DEPOSIT, + ITEMPC_MENU_TOSS, + ITEMPC_MENU_EXIT }; // special item description handlers @@ -35,6 +66,16 @@ enum ITEMPC_GO_BACK_TO_PREV }; +struct MailboxStruct +{ + u8 unk0; + u8 pageItems; + u8 unk2; + u8 count; +}; + +extern struct MailboxStruct gMailboxInfo; + extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); extern void DoPlayerPCDecoration(u8); extern void BuyMenuFreeMemory(void); @@ -60,11 +101,11 @@ extern u16 gUnknown_08406334[3]; extern u8 gOtherText_WhatWillYouDo[]; extern u8 gOtherText_NoMailHere[]; -extern u8 *gUnknown_02039314; -extern struct MenuAction gUnknown_08406298[]; +extern u8 *gPcItemMenuOptionOrder; +extern struct MenuAction gPCText_PlayerPCOptionsText[]; -extern u8 gUnknown_084062B8[]; -extern u8 gUnknown_084062BC[]; +extern u8 gBedroomPC_OptionOrder[]; +extern u8 gPlayerPC_OptionOrder[]; extern u8 gUnknown_0840632A[]; extern u8 gUnknown_08406327[]; extern u8 gUnknown_08406330[]; @@ -81,14 +122,13 @@ extern u8 gOtherText_TooImportant[]; extern u8 gOtherText_OkayToThrowAwayPrompt[]; extern u8 gOtherText_SwitchWhichItem[]; -extern u8 gUnknown_030007B4; -extern u8 unk_201FE00[]; +extern u8 gPcItemMenuOptionsNum; extern u8 gUnknown_08152850; extern u8 gUnknown_08152C75; -extern u32 gUnknown_08406288[]; -extern const struct MenuAction gUnknown_084062C0[]; +extern u32 gPCText_OptionDescList[]; +extern const struct MenuAction gPCText_ItemPCOptionsText[]; extern const struct YesNoFuncTable gUnknown_084062E0; void InitPlayerPCMenu(u8 taskId); @@ -96,23 +136,23 @@ void PlayerPCProcessMenuInput(u8 taskId); void InitItemStorageMenu(u8); void ItemStorageMenuPrint(u8 *); void ItemStorageMenuProcessInput(u8); -void sub_813A280(u8); +void ItemStorage_ProcessInput(u8); void sub_813A240(u8); void sub_813A4B4(u8); void sub_813A468(u8); void HandleQuantityRolling(u8); -void sub_813A6FC(u8); +void ItemStorage_DoItemWithdraw(u8); void sub_813A794(u8); void sub_813A8F0(u8); void sub_813A984(u8); void sub_813A9EC(u8); -void sub_813AA30(u8, u8); -void sub_813ABE8(u8); -void sub_813AD58(u16); -void sub_813AE0C(u8); +void ItemStorage_DoItemSwap(u8, bool8); +void ItemStorage_DrawItemList(u8); +void GetPlayerPcResponseString(u16); +void ItemStorage_DrawBothListAndDescription(u8); void sub_813AE6C(u8, u8); void sub_813AF04(void); -u8 sub_813AF3C(void); +u8 GetMailboxMailCount(void); void NewGameInitPCItems(void) { @@ -126,55 +166,49 @@ void NewGameInitPCItems(void) void BedroomPC(void) { - u8 taskId; - - gUnknown_02039314 = gUnknown_084062B8; - gUnknown_030007B4 = 4; - taskId = CreateTask(TaskDummy, 0); - DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); + gPcItemMenuOptionOrder = gBedroomPC_OptionOrder; + gPcItemMenuOptionsNum = 4; + DisplayItemMessageOnField(CreateTask(TaskDummy, 0), gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); } void PlayerPC(void) { - u8 taskId; - - gUnknown_02039314 = gUnknown_084062BC; - gUnknown_030007B4 = 3; - taskId = CreateTask(TaskDummy, 0); - DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); + gPcItemMenuOptionOrder = gPlayerPC_OptionOrder; + gPcItemMenuOptionsNum = 3; + DisplayItemMessageOnField(CreateTask(TaskDummy, 0), gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); } void InitPlayerPCMenu(u8 taskId) { - MenuDrawTextWindow(0, 0, 10, gUnknown_030007B4 * 2 + 1); - PrintMenuItemsReordered(1, 1, gUnknown_030007B4, gUnknown_08406298, gUnknown_02039314); - InitMenu(0, 1, 1, gUnknown_030007B4, 0, 9); + MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); + PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, gPCText_PlayerPCOptionsText, gPcItemMenuOptionOrder); + InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); gTasks[taskId].func = PlayerPCProcessMenuInput; } void PlayerPCProcessMenuInput(u8 taskId) { - if (gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(-1); } - else if (gMain.newAndRepeatedKeys & 0x80) + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(1); } - else if (gMain.newKeys & 0x1) + else if (gMain.newKeys & A_BUTTON) { - sub_8072DEC(); - PlaySE(5); - gUnknown_08406298[gUnknown_02039314[GetMenuCursorPos()]].func(taskId); + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gPCText_PlayerPCOptionsText[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); } - else if (gMain.newKeys & 0x2) + else if (gMain.newKeys & B_BUTTON) { - sub_8072DEC(); - PlaySE(5); - gUnknown_08406298[gUnknown_030007B4[gUnknown_02039314 - 1]].func(taskId); + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gPCText_PlayerPCOptionsText[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. } } @@ -192,13 +226,14 @@ void PlayerPC_ItemStorage(u8 taskId) void PlayerPC_Mailbox(u8 taskId) { MenuZeroFillWindowRect(0, 0, 10, 9); - unk_201FE00[3] = sub_813AF3C(); - if (!unk_201FE00[3]) + gMailboxInfo.count = GetMailboxMailCount(); + + if (gMailboxInfo.count == 0) DisplayItemMessageOnField(taskId, gOtherText_NoMailHere, ReshowPlayerPC, 0); else { - unk_201FE00[0] = 0; - unk_201FE00[2] = 0; + gMailboxInfo.unk0 = 0; + gMailboxInfo.unk2 = 0; sub_813AF78(); sub_813A240(taskId); sub_813B108(taskId); @@ -214,13 +249,14 @@ void PlayerPC_Decoration(u8 var) void PlayerPC_TurnOff(u8 taskId) { - if (gUnknown_030007B4 == 4) + if (gPcItemMenuOptionsNum == 4) // if the option count is 4, we are at the bedroom PC and not player PC, so do gender specific handling. { MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - if (!gSaveBlock2.playerGender) - ScriptContext1_SetupScript(&gUnknown_08152850); // male + + if (gSaveBlock2.playerGender == MALE) + ScriptContext1_SetupScript(&gUnknown_08152850); else - ScriptContext1_SetupScript(&gUnknown_08152C75); // female + ScriptContext1_SetupScript(&gUnknown_08152C75); } else { @@ -234,9 +270,9 @@ void InitItemStorageMenu(u8 var) { MenuZeroFillWindowRect(0, 0, 10, 9); MenuDrawTextWindow(0, 0, 11, 9); - PrintMenuItems(1, 1, 4, gUnknown_084062C0); + PrintMenuItems(1, 1, 4, gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); - ItemStorageMenuPrint((u8 *)gUnknown_08406288[var]); + ItemStorageMenuPrint((u8 *)gPCText_OptionDescList[var]); } void ItemStorageMenuPrint(u8 *textPtr) @@ -247,28 +283,28 @@ void ItemStorageMenuPrint(u8 *textPtr) void ItemStorageMenuProcessInput(u8 var) { - if (gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(-1); - ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); + ItemStorageMenuPrint((u8 *)gPCText_OptionDescList[GetMenuCursorPos()]); } - else if (gMain.newAndRepeatedKeys & 0x80) + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(1); - ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); + ItemStorageMenuPrint((u8 *)gPCText_OptionDescList[GetMenuCursorPos()]); } - else if (gMain.newKeys & 0x1) + else if (gMain.newKeys & A_BUTTON) { - PlaySE(5); - gUnknown_084062C0[GetMenuCursorPos()].func(var); + PlaySE(SE_SELECT); + gPCText_ItemPCOptionsText[GetMenuCursorPos()].func(var); } - else if (gMain.newKeys & 0x2) + else if (gMain.newKeys & B_BUTTON) { - sub_8072DEC(); - PlaySE(5); - gUnknown_084062C0[3].func(var); + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gPCText_ItemPCOptionsText[ITEMPC_MENU_EXIT].func(var); } } @@ -303,23 +339,21 @@ void sub_813A0F8(void) void ItemStorage_Withdraw(u8 taskId) { - u8 var; - u16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 9); - var = CountUsedPCItemSlots(); - data[2] = var; + NUM_ITEMS = CountUsedPCItemSlots(); - if (var) + if (NUM_ITEMS != 0) { MenuZeroFillWindowRect(0, 14, 29, 19); - data[6] = 0; - data[0] = 0; - data[1] = 0; + CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_WITHDRAW; + PAGE_INDEX = 0; + ITEMS_ABOVE_TOP = 0; sub_813A240(taskId); sub_813AE6C(taskId, 0); - gTasks[taskId].func = sub_813A280; + gTasks[taskId].func = ItemStorage_ProcessInput; } else DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0); @@ -327,23 +361,21 @@ void ItemStorage_Withdraw(u8 taskId) void ItemStorage_Toss(u8 taskId) { - u8 var; - u16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 9); - var = CountUsedPCItemSlots(); - data[2] = var; + NUM_ITEMS = CountUsedPCItemSlots(); - if (var) + if (NUM_ITEMS) { MenuZeroFillWindowRect(0, 14, 29, 19); - data[6] = 2; - data[0] = 0; - data[1] = 0; + CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_TOSS; + PAGE_INDEX = 0; + ITEMS_ABOVE_TOP = 0; sub_813A240(taskId); sub_813AE6C(taskId, 2); - gTasks[taskId].func = sub_813A280; + gTasks[taskId].func = ItemStorage_ProcessInput; } else DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0); @@ -351,7 +383,7 @@ void ItemStorage_Toss(u8 taskId) void ItemStorage_Exit(u8 var) { - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 9); ReshowPlayerPC(var); } @@ -360,106 +392,107 @@ void sub_813A240(u8 taskId) { s16 *data = gTasks[taskId].data; - if (data[2] > 7) - data[4] = 8; + if (NUM_ITEMS > 7) // we have a full page, so set the num of page items appropriately. + NUM_PAGE_ITEMS = 8; else - data[4] = data[2] + 1; + NUM_PAGE_ITEMS = NUM_ITEMS + 1; // there are not enough items to fill a full page; take the # of items and add 1 for the cancel button. - if (unk_201FE00[3] > 7) - unk_201FE00[1] = 8; + if (gMailboxInfo.count > 7) + gMailboxInfo.pageItems = 8; else - unk_201FE00[1] = unk_201FE00[3] + 1; + gMailboxInfo.pageItems = gMailboxInfo.count + 1; } -void sub_813A280(u8 taskId) +void ItemStorage_ProcessInput(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 var; + s16 trueIndex; if (gMain.newAndRepeatedKeys & DPAD_UP) { - if(data[0]) + if(PAGE_INDEX != 0) // did the cursor move physically upwards? { - PlaySE(5); - data[0] = MoveMenuCursor(-1); - var = data[1] + data[0]; - if (!data[9]) + PlaySE(SE_SELECT); + PAGE_INDEX = MoveMenuCursor(-1); + trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; + if (SWITCH_MODE_ACTIVE == FALSE) // are we not currently switching items? { - if (var == data[2]) + if (trueIndex == NUM_ITEMS) // if the cursor is on top of cancel, print the go back to prev description. { - sub_813AD58(0xFFFF); + GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); } else { - sub_813AD58(gSaveBlock1.pcItems[var].itemId); + GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); } } } - else // _0813A2E4 + else // the page cursor is at the top. but we may not be at the top of the true index list, so do another check. { - if (!data[1]) + if (ITEMS_ABOVE_TOP == 0) // did the cursor not move due to being at the top of the list? return; - PlaySE(5); - data[1]--; - sub_813AE0C(taskId); - // probably further down - if (data[9]) - MoveMenuCursor(0); + + PlaySE(SE_SELECT); + ITEMS_ABOVE_TOP--; + ItemStorage_DrawBothListAndDescription(taskId); + + if (SWITCH_MODE_ACTIVE != FALSE) + MoveMenuCursor(0); // don't move the cursor. it's at the top of the page index, but not the true index. } } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _0813A306 { - if(data[0] != data[4] - 1) + if(PAGE_INDEX != NUM_PAGE_ITEMS - 1) { - PlaySE(5); - data[0] = MoveMenuCursor(1); - var = data[1] + data[0]; + PlaySE(SE_SELECT); + PAGE_INDEX = MoveMenuCursor(1); + trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; - if(data[9]) + if(SWITCH_MODE_ACTIVE != FALSE) return; - if (var == data[2]) - sub_813AD58(0xFFFF); // probably further down + if (trueIndex == NUM_ITEMS) + GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); // probably further down else - sub_813AD58(gSaveBlock1.pcItems[var].itemId); + GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); } - else if(data[1] + data[0] != data[2]) + else if(ITEMS_ABOVE_TOP + PAGE_INDEX != NUM_ITEMS) { - PlaySE(5); - data[1]++; - sub_813AE0C(taskId); + PlaySE(SE_SELECT); + ITEMS_ABOVE_TOP++; + ItemStorage_DrawBothListAndDescription(taskId); - if (data[9]) + if (SWITCH_MODE_ACTIVE != FALSE) MoveMenuCursor(0); } } else if(gMain.newKeys & SELECT_BUTTON) // _0813A3A0 { - if (!data[9]) + if (SWITCH_MODE_ACTIVE == FALSE) { - if (data[0] + data[1] != data[2]) + if (PAGE_INDEX + ITEMS_ABOVE_TOP != NUM_ITEMS) { - PlaySE(5); - data[9] = 1; - data[8] = data[1] + data[0]; - sub_813AD58(0xFFF7); + PlaySE(SE_SELECT); + SWITCH_MODE_ACTIVE = TRUE; + SWAP_ITEM_INDEX = ITEMS_ABOVE_TOP + PAGE_INDEX; + GetPlayerPcResponseString(ITEMPC_SWITCH_WHICH_ITEM); } // _0813A3DC - sub_813ABE8(taskId); + ItemStorage_DrawItemList(taskId); } else // _0813A3E8 { - PlaySE(5); // merging? - sub_813AA30(taskId, 0); - sub_813AE0C(taskId); + PlaySE(SE_SELECT); + ItemStorage_DoItemSwap(taskId, FALSE); + ItemStorage_DrawBothListAndDescription(taskId); } } else if(gMain.newKeys & A_BUTTON) { - PlaySE(5); - if(!data[9]) + PlaySE(SE_SELECT); + if(SWITCH_MODE_ACTIVE == FALSE) { - if(data[1] + data[0] != data[2]) + if(ITEMS_ABOVE_TOP + PAGE_INDEX != NUM_ITEMS) { sub_813A4B4(taskId); } @@ -470,22 +503,22 @@ void sub_813A280(u8 taskId) } else { - sub_813AA30(taskId, 0); - sub_813AE0C(taskId); + ItemStorage_DoItemSwap(taskId, FALSE); + ItemStorage_DrawBothListAndDescription(taskId); } } else if(gMain.newKeys & B_BUTTON) { - PlaySE(5); - if(!data[9]) + PlaySE(SE_SELECT); + if(SWITCH_MODE_ACTIVE == FALSE) { - sub_8072DEC(); + HandleDestroyMenuCursors(); sub_813A468(taskId); } else { - sub_813AA30(taskId, 1); - sub_813AE0C(taskId); + ItemStorage_DoItemSwap(taskId, TRUE); + ItemStorage_DrawBothListAndDescription(taskId); } } } @@ -497,125 +530,125 @@ void sub_813A468(u8 taskId) DestroyVerticalScrollIndicator(1); MenuZeroFillWindowRect(0, 0, 29, 19); MenuDisplayMessageBox(); - InitItemStorageMenu(gTasks[taskId].data[6]); + InitItemStorageMenu(gTasks[taskId].CURRENT_ITEM_STORAGE_MENU); gTasks[taskId].func = ItemStorageMenuProcessInput; } void sub_813A4B4(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; sub_80F996C(0); sub_80F996C(1); - if(!data[6]) + if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) { - if(gSaveBlock1.pcItems[var].quantity == 1) + if(gSaveBlock1.pcItems[trueIndex].quantity == 1) { - data[3] = 1; - sub_813A6FC(taskId); + NUM_QUANTITY_ROLLER = 1; + ItemStorage_DoItemWithdraw(taskId); return; } else // _0813A50C { - sub_813AD58(0xFFFE); + GetPlayerPcResponseString(ITEMPC_HOW_MANY_TO_WITHDRAW); } } - else if(gSaveBlock1.pcItems[var].quantity == 1) // _0813A518 + else if(gSaveBlock1.pcItems[trueIndex].quantity == 1) // _0813A518 { - data[3] = 1; + NUM_QUANTITY_ROLLER = 1; sub_813A794(taskId); return; } else { - sub_813AD58(0xFFFC); + GetPlayerPcResponseString(ITEMPC_HOW_MANY_TO_TOSS); } - data[3] = 1; + NUM_QUANTITY_ROLLER = 1; MenuDrawTextWindow(6, 8, 13, 11); - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); gTasks[taskId].func = HandleQuantityRolling; } void HandleQuantityRolling(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; if(gMain.newAndRepeatedKeys & DPAD_UP) { - if(data[3] != gSaveBlock1.pcItems[var].quantity) - data[3]++; + if(NUM_QUANTITY_ROLLER != gSaveBlock1.pcItems[trueIndex].quantity) + NUM_QUANTITY_ROLLER++; else - data[3] = 1; // you are at the max amount of items you have when you press Up, set your quantity back to 1. + NUM_QUANTITY_ROLLER = 1; // you are at the max amount of items you have when you press Up, set your quantity back to 1. - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) { - if(data[3] != 1) - data[3]--; + if(NUM_QUANTITY_ROLLER != 1) + NUM_QUANTITY_ROLLER--; else - data[3] = gSaveBlock1.pcItems[var].quantity; // you are at 0 when you press down, set your quantity to the amount you have. + NUM_QUANTITY_ROLLER = gSaveBlock1.pcItems[trueIndex].quantity; // you are at 0 when you press down, set your quantity to the amount you have. - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // reduce by 10. { - data[3] -= 10; + NUM_QUANTITY_ROLLER -= 10; - if(data[3] <= 0) - data[3] = 1; // dont underflow or allow 0! + if(NUM_QUANTITY_ROLLER <= 0) + NUM_QUANTITY_ROLLER = 1; // dont underflow or allow 0! - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // add 10. { - data[3] += 10; + NUM_QUANTITY_ROLLER += 10; - if(data[3] > gSaveBlock1.pcItems[var].quantity) - data[3] = gSaveBlock1.pcItems[var].quantity; // dont overflow! + if(NUM_QUANTITY_ROLLER > gSaveBlock1.pcItems[trueIndex].quantity) + NUM_QUANTITY_ROLLER = gSaveBlock1.pcItems[trueIndex].quantity; // dont overflow! - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newKeys & A_BUTTON) // confirm quantity. { - PlaySE(5); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); - if(!data[6]) - sub_813A6FC(taskId); + if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) + ItemStorage_DoItemWithdraw(taskId); else sub_813A794(taskId); } else if(gMain.newKeys & B_BUTTON) // cancel quantity. { - PlaySE(5); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); sub_80F98DC(0); sub_80F98DC(1); - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); // why not use var? - gTasks[taskId].func = sub_813A280; + GetPlayerPcResponseString(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? + gTasks[taskId].func = ItemStorage_ProcessInput; } } -void sub_813A6FC(u8 taskId) +void ItemStorage_DoItemWithdraw(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; - if(AddBagItem(gSaveBlock1.pcItems[var].itemId, data[3]) == TRUE) // add item works. + if(AddBagItem(gSaveBlock1.pcItems[trueIndex].itemId, NUM_QUANTITY_ROLLER) == TRUE) // add item works. { - CopyItemName(gSaveBlock1.pcItems[var].itemId, gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, data[3], 0, 3); - sub_813AD58(0xFFFD); + CopyItemName(gSaveBlock1.pcItems[trueIndex].itemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, NUM_QUANTITY_ROLLER, 0, 3); + GetPlayerPcResponseString(ITEMPC_WITHDREW_THING); gTasks[taskId].func = sub_813A8F0; } - else // cannot add item. inventory full? + else { - data[3] = 0; - sub_813AD58(0xFFFA); + NUM_QUANTITY_ROLLER = 0; + GetPlayerPcResponseString(ITEMPC_NO_MORE_ROOM); gTasks[taskId].func = sub_813A984; } } @@ -623,20 +656,20 @@ void sub_813A6FC(u8 taskId) void sub_813A794(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 var = PAGE_INDEX + ITEMS_ABOVE_TOP; if(ItemId_GetImportance(gSaveBlock1.pcItems[var].itemId) == FALSE) { CopyItemName(gSaveBlock1.pcItems[var].itemId, gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, data[3], 0, 3); - sub_813AD58(65528); + ConvertIntToDecimalStringN(gStringVar2, NUM_QUANTITY_ROLLER, 0, 3); + GetPlayerPcResponseString(ITEMPC_OKAY_TO_THROW_AWAY); DisplayYesNoMenu(7, 6, 1); sub_80F914C(taskId, &gUnknown_084062E0); } else { - data[3] = 0; - sub_813AD58(65529); + NUM_QUANTITY_ROLLER = 0; + GetPlayerPcResponseString(ITEMPC_TOO_IMPORTANT); gTasks[taskId].func = sub_813A8F0; } } @@ -644,7 +677,7 @@ void sub_813A794(u8 taskId) void sub_813A83C(u8 taskId) { MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); - sub_813AD58(0xFFFB); + GetPlayerPcResponseString(ITEMPC_THREW_AWAY_ITEM); gTasks[taskId].func = sub_813A8F0; } @@ -653,11 +686,11 @@ void sub_813A878(u8 taskId) s16 *data = gTasks[taskId].data; MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); - InitMenu(0, 16, 2, data[4], data[0], 0xD); + InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); sub_80F98DC(0); sub_80F98DC(1); - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); - gTasks[taskId].func = sub_813A280; + GetPlayerPcResponseString(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); + gTasks[taskId].func = ItemStorage_ProcessInput; } void sub_813A8F0(u8 taskId) @@ -666,19 +699,19 @@ void sub_813A8F0(u8 taskId) u16 var; u8 usedItemSlots; - if(gMain.newKeys & 0x1 || gMain.newKeys == 0x2) + if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { - RemovePCItem(data[0] + data[1], data[3]); - var = data[2]; + RemovePCItem(PAGE_INDEX + ITEMS_ABOVE_TOP, NUM_QUANTITY_ROLLER); + var = NUM_ITEMS; usedItemSlots = CountUsedPCItemSlots(); - data[2] = usedItemSlots; + NUM_ITEMS = usedItemSlots; - if((s16)var != usedItemSlots && (s16)var < data[4] + data[1] && data[1] != 0) - data[1]--; + if((s16)var != usedItemSlots && (s16)var < NUM_PAGE_ITEMS + ITEMS_ABOVE_TOP && ITEMS_ABOVE_TOP != 0) + ITEMS_ABOVE_TOP--; sub_813A240(taskId); sub_813A9EC(taskId); - InitMenu(0, 16, 2, data[4], data[0], 0xD); + InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); } } @@ -686,12 +719,12 @@ void sub_813A984(u8 taskId) { s16 *data = gTasks[taskId].data; - if(gMain.newKeys & 0x1 || gMain.newKeys == 2) + if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); + GetPlayerPcResponseString(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); sub_80F98DC(0); sub_80F98DC(1); - gTasks[taskId].func = sub_813A280; + gTasks[taskId].func = ItemStorage_ProcessInput; } } @@ -700,45 +733,47 @@ void sub_813A9EC(u8 taskId) MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); sub_80F98DC(0); sub_80F98DC(1); - sub_813AE0C(taskId); - gTasks[taskId].func = sub_813A280; + ItemStorage_DrawBothListAndDescription(taskId); + gTasks[taskId].func = ItemStorage_ProcessInput; } -void sub_813AA30(u8 taskId, u8 arg) +void ItemStorage_DoItemSwap(u8 taskId, bool8 switchModeDisabled) { s16 *data = gTasks[taskId].data; - u8 var = data[1] + data[0]; + u8 trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; - data[9] = 0; + SWITCH_MODE_ACTIVE = FALSE; - if((u8)data[2] > var && (u8)data[8] != var && arg == 0) + if((u8)NUM_ITEMS > trueIndex && (u8)SWAP_ITEM_INDEX != trueIndex && switchModeDisabled == FALSE) { - struct ItemSlot itemSlot = gSaveBlock1.pcItems[data[8]]; // backup the itemSlot before swapping the two. + struct ItemSlot itemSlot = gSaveBlock1.pcItems[SWAP_ITEM_INDEX]; // backup the itemSlot before swapping the two. - gSaveBlock1.pcItems[data[8]] = gSaveBlock1.pcItems[var]; - gSaveBlock1.pcItems[var] = itemSlot; + gSaveBlock1.pcItems[SWAP_ITEM_INDEX] = gSaveBlock1.pcItems[trueIndex]; + gSaveBlock1.pcItems[trueIndex] = itemSlot; return; } - else if(var == data[2]) + else if(trueIndex == NUM_ITEMS) { - sub_813AD58(0xFFFF); + GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); } else { - sub_813AD58(gSaveBlock1.pcItems[var].itemId); + GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); } /* THEORY: This check produces essentially dead code, but it might have been working in an earlier build in which case it allows a programmer to easily duplicate items without the use of a debug menu. + This gets the page index of the swap index for some reason. It is currently unknown what it would have been used + for, but perhaps it was used to increase the quantity of the item without a debug menu. With the removal of a lot of the debug menus close to release, a programmer may have added this to help test things with a low key (such as planting a lot of duplicated berries, which requires this lazy "cheat") without bringing the relevent debug menus back. The commented out line is intentionally left in below to show what it may have looked like. */ - if(data[8] - data[1] > 0) { // this check is arbitrary and used to generate the correct assembly using the subtraction, which is what matters. the 0 check doesn't. - //gSaveBlock1.pcItems[data[8]].quantity += 100; - gSaveBlock1.pcItems[data[8]].quantity += 0; // do not enforce item cap. + if(SWAP_ITEM_INDEX - ITEMS_ABOVE_TOP > 0) { // this check is arbitrary and used to generate the correct assembly using the subtraction, which is what matters. the 0 check doesn't. + //gSaveBlock1.pcItems[SWAP_ITEM_INDEX].quantity += 100; + gSaveBlock1.pcItems[SWAP_ITEM_INDEX].quantity += 0; // do not enforce item cap. } } @@ -789,7 +824,7 @@ void sub_813ABAC(struct ItemSlot *itemSlot, u8 var, int var2) sub_813AB10(var); // key items do not have a quantity. } -void sub_813ABE8(u8 taskId) +void ItemStorage_DrawItemList(u8 taskId) { s16 *data = gTasks[taskId].data; u16 i; @@ -798,15 +833,15 @@ void sub_813ABE8(u8 taskId) // r5 is i and is unsigned 16-bit. - for(i = data[1]; i < data[1] + data[4]; i++) + for(i = ITEMS_ABOVE_TOP; i < ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS; i++) { - j = (i - data[1]) * 2; + j = (i - ITEMS_ABOVE_TOP) * 2; - if(i != data[2]) + if(i != NUM_ITEMS) { tempArg = 0; - if(data[9] != 0 && i == data[8]) + if(SWITCH_MODE_ACTIVE != FALSE && i == SWAP_ITEM_INDEX) tempArg = 1; switch(GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1) @@ -831,10 +866,10 @@ void sub_813ABE8(u8 taskId) } beforeLabel: - if(i - data[1] < 8) + if(i - ITEMS_ABOVE_TOP < 8) MenuFillWindowRectWithBlankTile(16, j + 4, 0x1C, 0x12); - switch(data[1]) + switch(ITEMS_ABOVE_TOP) { default: CreateVerticalScrollIndicators(0, 0xB8, 8); @@ -847,13 +882,13 @@ weirdCase: break; } - if(data[1] + data[4] <= data[2]) + if(ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS <= NUM_ITEMS) CreateVerticalScrollIndicators(1, 0xB8, 0x98); else DestroyVerticalScrollIndicator(1); } -void sub_813AD58(u16 itemId) +void GetPlayerPcResponseString(u16 itemId) { u8 *string; @@ -894,19 +929,19 @@ void sub_813AD58(u16 itemId) sub_8072AB0(string, 8, 0x68, 0x68, 0x30, 1); } -void sub_813AE0C(u8 taskId) +void ItemStorage_DrawBothListAndDescription(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 var = data[1] + data[0]; + s16 trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; - sub_813ABE8(taskId); + ItemStorage_DrawItemList(taskId); - if(data[9] == 0) + if(SWITCH_MODE_ACTIVE == FALSE) { - if(var == data[2]) - sub_813AD58(0xFFFF); + if(trueIndex == NUM_ITEMS) + GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); else - sub_813AD58(gSaveBlock1.pcItems[var].itemId); + GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); } } @@ -920,10 +955,10 @@ void sub_813AE6C(u8 taskId, u8 var) MenuDrawTextWindow(0xF, 0, 0x1D, 0x13); MenuDrawTextWindow(0, 0xC, 0xE, 0x13); MenuDrawTextWindow(0, 0, 0xB, 3); - sub_813AD58(gSaveBlock1.pcItems[0].itemId); - MenuPrint(gUnknown_084062C0[var].text, 1, 1); - sub_813ABE8(taskId); - InitMenu(0, 0x10, 2, data[4], data[0], 0xD); + GetPlayerPcResponseString(gSaveBlock1.pcItems[0].itemId); + MenuPrint(gPCText_ItemPCOptionsText[var].text, 1, 1); + ItemStorage_DrawItemList(taskId); + InitMenu(0, 0x10, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); } void sub_813AF04(void) @@ -936,7 +971,7 @@ void sub_813AF04(void) LoadPalette(&arr[0], 0xD8, 2); } -u8 sub_813AF3C(void) +u8 GetMailboxMailCount(void) { u8 i, j; diff --git a/src/script_menu.c b/src/script_menu.c index eba438397..f62b62ac7 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -684,7 +684,7 @@ void sub_80B52B4(u8 taskId) { gScriptResult = var; } - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); DestroyTask(taskId); EnableBothScriptContexts(); @@ -847,7 +847,7 @@ void sub_80B5684(u8 taskId) { gScriptResult = var; } - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index d1e401e18..e53eb30cb 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -563,16 +563,16 @@ u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5) nationalSpecies = SpeciesToNationalPokedexNum(species); // nested if check to fool compiler - if(sentToPc < 2) + switch(sentToPc) { - if(sentToPc >= 0) - { - // set both the seen and caught flags + case 0: + case 1: GetNationalPokedexFlag(nationalSpecies, 2); GetNationalPokedexFlag(nationalSpecies, 3); - } + return sentToPc; + default: + return sentToPc; } - return sentToPc; } u8 ScriptGiveEgg(u16 value) diff --git a/src/shop.c b/src/shop.c index 780dff02a..cca920df5 100644 --- a/src/shop.c +++ b/src/shop.c @@ -155,7 +155,7 @@ void sub_80B2F30(u8 taskId) void HandleShopMenuQuit(u8 taskId) { - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 8); sub_80BE3BC(); // in tv.s? ScriptContext2_Disable(); diff --git a/src/start_menu.c b/src/start_menu.c index 37d361c0b..be489bd1f 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -410,7 +410,7 @@ static u8 StartMenu_PlayerCallback(void) //When player selects SAVE static u8 StartMenu_SaveCallback(void) { - sub_8072DEC(); + HandleDestroyMenuCursors(); gCallback_03004AE8 = SaveCallback1; return 0; } diff --git a/src/strings.c b/src/strings.c index f41af082c..fa083f00d 100644 --- a/src/strings.c +++ b/src/strings.c @@ -1149,7 +1149,7 @@ const u8 gOtherText_OkayToThrowAwayPrompt[] = _("Willst du wirklich\n{STR_VAR_2} const u8 gOtherText_DadsAdvice[] = _("VATI sagt immer...\n{PLAYER}, dies ist weder der rechte\lOrt noch der rechte Zeitpunkt dafür!{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_CantGetOffBike[] = _("Du kannst hier nicht vom RAD steigen.{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_ItemfinderResponding[] = _("Oh!\nDas Gerät zeigt etwas an!\pHier muss ein Item vergraben sein!{PAUSE_UNTIL_PRESS}"); -const u8 gOtherText_ItemfinderItemUnderfoot[] = _("Das Gerät macht direkt unter\ndeinen Füßen etwas aus!{PAUSE_UNTIL_PRESS}"); +const u8 gOtherText_ItemfinderItemUnderfoot[] = _("Das Gerät macht direkt unter\ndeinen Füßen etwas aus!{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_NoResponse[] = _("... ... ... ... Nichts!\nKeine Anzeige.{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_Coins3[] = _("Deine MÜNZEN:\n{STR_VAR_1}{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_BootedTM[] = _("Eine TM wurde aktiviert."); diff --git a/src/wallclock.c b/src/wallclock.c index 0f3665c65..dafb37442 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -434,7 +434,7 @@ static void Task_SetClock4(u8 taskId) return; case -1: //B button case 1: //NO - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); MenuZeroFillWindowRect(23, 8, 29, 13); MenuZeroFillWindowRect(2, 16, 27, 19); -- cgit v1.2.3 From 16fd2ca3856668cd4e7cb5e94d3022ac5edce8a3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 9 Jun 2017 04:24:54 -0400 Subject: more player_pc.c labeling --- src/player_pc.c | 184 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 91 insertions(+), 93 deletions(-) (limited to 'src') diff --git a/src/player_pc.c b/src/player_pc.c index f539a5bb5..db23bb803 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -137,21 +137,21 @@ void InitItemStorageMenu(u8); void ItemStorageMenuPrint(u8 *); void ItemStorageMenuProcessInput(u8); void ItemStorage_ProcessInput(u8); -void sub_813A240(u8); -void sub_813A4B4(u8); -void sub_813A468(u8); -void HandleQuantityRolling(u8); +void ItemStorage_SetItemAndMailCount(u8); +void ItemStorage_DoItemAction(u8); +void ItemStorage_GoBackToPlayerPCMenu(u8); +void ItemStorage_HandleQuantityRolling(u8); void ItemStorage_DoItemWithdraw(u8); -void sub_813A794(u8); -void sub_813A8F0(u8); -void sub_813A984(u8); -void sub_813A9EC(u8); +void ItemStorage_DoItemToss(u8); +void ItemStorage_HandleRemoveItem(u8); +void ItemStorage_WaitPressHandleResumeProcessInput(u8); +void ItemStorage_HandleResumeProcessInput(u8); void ItemStorage_DoItemSwap(u8, bool8); void ItemStorage_DrawItemList(u8); -void GetPlayerPcResponseString(u16); +void ItemStorage_PrintItemPcResponse(u16); void ItemStorage_DrawBothListAndDescription(u8); -void sub_813AE6C(u8, u8); -void sub_813AF04(void); +void ItemStorage_GoBackToItemPCMenu(u8, u8); +void ItemStorage_LoadPalette(void); u8 GetMailboxMailCount(void); void NewGameInitPCItems(void) @@ -235,7 +235,7 @@ void PlayerPC_Mailbox(u8 taskId) gMailboxInfo.unk0 = 0; gMailboxInfo.unk2 = 0; sub_813AF78(); - sub_813A240(taskId); + ItemStorage_SetItemAndMailCount(taskId); sub_813B108(taskId); gTasks[taskId].func = sub_813B174; } @@ -351,8 +351,8 @@ void ItemStorage_Withdraw(u8 taskId) CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_WITHDRAW; PAGE_INDEX = 0; ITEMS_ABOVE_TOP = 0; - sub_813A240(taskId); - sub_813AE6C(taskId, 0); + ItemStorage_SetItemAndMailCount(taskId); + ItemStorage_GoBackToItemPCMenu(taskId, 0); gTasks[taskId].func = ItemStorage_ProcessInput; } else @@ -373,8 +373,8 @@ void ItemStorage_Toss(u8 taskId) CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_TOSS; PAGE_INDEX = 0; ITEMS_ABOVE_TOP = 0; - sub_813A240(taskId); - sub_813AE6C(taskId, 2); + ItemStorage_SetItemAndMailCount(taskId); + ItemStorage_GoBackToItemPCMenu(taskId, 2); gTasks[taskId].func = ItemStorage_ProcessInput; } else @@ -388,7 +388,7 @@ void ItemStorage_Exit(u8 var) ReshowPlayerPC(var); } -void sub_813A240(u8 taskId) +void ItemStorage_SetItemAndMailCount(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -419,11 +419,11 @@ void ItemStorage_ProcessInput(u8 taskId) { if (trueIndex == NUM_ITEMS) // if the cursor is on top of cancel, print the go back to prev description. { - GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); } else { - GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); } } } @@ -452,9 +452,9 @@ void ItemStorage_ProcessInput(u8 taskId) return; if (trueIndex == NUM_ITEMS) - GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); // probably further down + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); // probably further down else - GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); } else if(ITEMS_ABOVE_TOP + PAGE_INDEX != NUM_ITEMS) { @@ -470,12 +470,12 @@ void ItemStorage_ProcessInput(u8 taskId) { if (SWITCH_MODE_ACTIVE == FALSE) { - if (PAGE_INDEX + ITEMS_ABOVE_TOP != NUM_ITEMS) + if (PAGE_INDEX + ITEMS_ABOVE_TOP != NUM_ITEMS) // you cannot swap the Cancel button. { PlaySE(SE_SELECT); SWITCH_MODE_ACTIVE = TRUE; SWAP_ITEM_INDEX = ITEMS_ABOVE_TOP + PAGE_INDEX; - GetPlayerPcResponseString(ITEMPC_SWITCH_WHICH_ITEM); + ItemStorage_PrintItemPcResponse(ITEMPC_SWITCH_WHICH_ITEM); } // _0813A3DC ItemStorage_DrawItemList(taskId); @@ -494,11 +494,11 @@ void ItemStorage_ProcessInput(u8 taskId) { if(ITEMS_ABOVE_TOP + PAGE_INDEX != NUM_ITEMS) { - sub_813A4B4(taskId); + ItemStorage_DoItemAction(taskId); } else { - sub_813A468(taskId); + ItemStorage_GoBackToPlayerPCMenu(taskId); } } else @@ -513,7 +513,7 @@ void ItemStorage_ProcessInput(u8 taskId) if(SWITCH_MODE_ACTIVE == FALSE) { HandleDestroyMenuCursors(); - sub_813A468(taskId); + ItemStorage_GoBackToPlayerPCMenu(taskId); } else { @@ -523,7 +523,7 @@ void ItemStorage_ProcessInput(u8 taskId) } } -void sub_813A468(u8 taskId) +void ItemStorage_GoBackToPlayerPCMenu(u8 taskId) { BuyMenuFreeMemory(); DestroyVerticalScrollIndicator(0); @@ -534,7 +534,7 @@ void sub_813A468(u8 taskId) gTasks[taskId].func = ItemStorageMenuProcessInput; } -void sub_813A4B4(u8 taskId) +void ItemStorage_DoItemAction(u8 taskId) { s16 *data = gTasks[taskId].data; u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; @@ -552,26 +552,26 @@ void sub_813A4B4(u8 taskId) } else // _0813A50C { - GetPlayerPcResponseString(ITEMPC_HOW_MANY_TO_WITHDRAW); + ItemStorage_PrintItemPcResponse(ITEMPC_HOW_MANY_TO_WITHDRAW); } } else if(gSaveBlock1.pcItems[trueIndex].quantity == 1) // _0813A518 { NUM_QUANTITY_ROLLER = 1; - sub_813A794(taskId); + ItemStorage_DoItemToss(taskId); return; } else { - GetPlayerPcResponseString(ITEMPC_HOW_MANY_TO_TOSS); + ItemStorage_PrintItemPcResponse(ITEMPC_HOW_MANY_TO_TOSS); } NUM_QUANTITY_ROLLER = 1; MenuDrawTextWindow(6, 8, 13, 11); sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); - gTasks[taskId].func = HandleQuantityRolling; + gTasks[taskId].func = ItemStorage_HandleQuantityRolling; } -void HandleQuantityRolling(u8 taskId) +void ItemStorage_HandleQuantityRolling(u8 taskId) { s16 *data = gTasks[taskId].data; u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; @@ -620,7 +620,7 @@ void HandleQuantityRolling(u8 taskId) if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) ItemStorage_DoItemWithdraw(taskId); else - sub_813A794(taskId); + ItemStorage_DoItemToss(taskId); } else if(gMain.newKeys & B_BUTTON) // cancel quantity. { @@ -628,7 +628,7 @@ void HandleQuantityRolling(u8 taskId) MenuZeroFillWindowRect(6, 6, 0xD, 0xB); sub_80F98DC(0); sub_80F98DC(1); - GetPlayerPcResponseString(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? gTasks[taskId].func = ItemStorage_ProcessInput; } } @@ -642,18 +642,18 @@ void ItemStorage_DoItemWithdraw(u8 taskId) { CopyItemName(gSaveBlock1.pcItems[trueIndex].itemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, NUM_QUANTITY_ROLLER, 0, 3); - GetPlayerPcResponseString(ITEMPC_WITHDREW_THING); - gTasks[taskId].func = sub_813A8F0; + ItemStorage_PrintItemPcResponse(ITEMPC_WITHDREW_THING); + gTasks[taskId].func = ItemStorage_HandleRemoveItem; } else { NUM_QUANTITY_ROLLER = 0; - GetPlayerPcResponseString(ITEMPC_NO_MORE_ROOM); - gTasks[taskId].func = sub_813A984; + ItemStorage_PrintItemPcResponse(ITEMPC_NO_MORE_ROOM); + gTasks[taskId].func = ItemStorage_WaitPressHandleResumeProcessInput; } } -void sub_813A794(u8 taskId) +void ItemStorage_DoItemToss(u8 taskId) { s16 *data = gTasks[taskId].data; u8 var = PAGE_INDEX + ITEMS_ABOVE_TOP; @@ -662,26 +662,26 @@ void sub_813A794(u8 taskId) { CopyItemName(gSaveBlock1.pcItems[var].itemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, NUM_QUANTITY_ROLLER, 0, 3); - GetPlayerPcResponseString(ITEMPC_OKAY_TO_THROW_AWAY); + ItemStorage_PrintItemPcResponse(ITEMPC_OKAY_TO_THROW_AWAY); DisplayYesNoMenu(7, 6, 1); sub_80F914C(taskId, &gUnknown_084062E0); } else { NUM_QUANTITY_ROLLER = 0; - GetPlayerPcResponseString(ITEMPC_TOO_IMPORTANT); - gTasks[taskId].func = sub_813A8F0; + ItemStorage_PrintItemPcResponse(ITEMPC_TOO_IMPORTANT); + gTasks[taskId].func = ItemStorage_HandleRemoveItem; } } -void sub_813A83C(u8 taskId) +void ItemStorage_ResumeInputFromYesToss(u8 taskId) { MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); - GetPlayerPcResponseString(ITEMPC_THREW_AWAY_ITEM); - gTasks[taskId].func = sub_813A8F0; + ItemStorage_PrintItemPcResponse(ITEMPC_THREW_AWAY_ITEM); + gTasks[taskId].func = ItemStorage_HandleRemoveItem; } -void sub_813A878(u8 taskId) +void ItemStorage_ResumeInputFromNoToss(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -689,46 +689,44 @@ void sub_813A878(u8 taskId) InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); sub_80F98DC(0); sub_80F98DC(1); - GetPlayerPcResponseString(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); gTasks[taskId].func = ItemStorage_ProcessInput; } -void sub_813A8F0(u8 taskId) +void ItemStorage_HandleRemoveItem(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 var; - u8 usedItemSlots; + s16 oldNumItems; if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { RemovePCItem(PAGE_INDEX + ITEMS_ABOVE_TOP, NUM_QUANTITY_ROLLER); - var = NUM_ITEMS; - usedItemSlots = CountUsedPCItemSlots(); - NUM_ITEMS = usedItemSlots; + oldNumItems = NUM_ITEMS; + NUM_ITEMS = CountUsedPCItemSlots(); - if((s16)var != usedItemSlots && (s16)var < NUM_PAGE_ITEMS + ITEMS_ABOVE_TOP && ITEMS_ABOVE_TOP != 0) + if(oldNumItems != NUM_ITEMS && oldNumItems < NUM_PAGE_ITEMS + ITEMS_ABOVE_TOP && ITEMS_ABOVE_TOP != 0) ITEMS_ABOVE_TOP--; - sub_813A240(taskId); - sub_813A9EC(taskId); + ItemStorage_SetItemAndMailCount(taskId); + ItemStorage_HandleResumeProcessInput(taskId); InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); } } -void sub_813A984(u8 taskId) +void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) { s16 *data = gTasks[taskId].data; if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { - GetPlayerPcResponseString(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); sub_80F98DC(0); sub_80F98DC(1); gTasks[taskId].func = ItemStorage_ProcessInput; } } -void sub_813A9EC(u8 taskId) +void ItemStorage_HandleResumeProcessInput(u8 taskId) { MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); sub_80F98DC(0); @@ -754,11 +752,11 @@ void ItemStorage_DoItemSwap(u8 taskId, bool8 switchModeDisabled) } else if(trueIndex == NUM_ITEMS) { - GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); } else { - GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); } /* @@ -771,71 +769,71 @@ void ItemStorage_DoItemSwap(u8 taskId, bool8 switchModeDisabled) without bringing the relevent debug menus back. The commented out line is intentionally left in below to show what it may have looked like. */ - if(SWAP_ITEM_INDEX - ITEMS_ABOVE_TOP > 0) { // this check is arbitrary and used to generate the correct assembly using the subtraction, which is what matters. the 0 check doesn't. + if(SWAP_ITEM_INDEX - ITEMS_ABOVE_TOP <= 0) { // this check is arbitrary and used to generate the correct assembly using the subtraction, which is what matters. the 0 check doesn't. //gSaveBlock1.pcItems[SWAP_ITEM_INDEX].quantity += 100; gSaveBlock1.pcItems[SWAP_ITEM_INDEX].quantity += 0; // do not enforce item cap. } } -void sub_813AAC4(u16 arg1, enum StringConvertMode arg2, u8 arg3, u8 arg4, int arg5) +void ItemStorage_DrawItemQuantity(u16 arg1, enum StringConvertMode arg2, u8 arg3, u8 arg4, int isSwapSelected) { sub_80A4164(gStringVar1, arg1, arg2, arg4); - if(arg5) + if(isSwapSelected != FALSE) MenuPrint(gUnknown_0840632A, 0x1A, arg3); else MenuPrint(gUnknown_08406327, 0x1A, arg3); } -void sub_813AB10(u8 var) +void ItemStorage_DrawItemVoidQuantity(u8 var) { MenuPrint(gUnknown_08406330, 0x19, var); } -void sub_813AB28(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawItemName(struct ItemSlot *itemSlot, u8 var, int isSwapSelected) { CopyItemName(itemSlot->itemId, gStringVar1); - if(var2) + if(isSwapSelected != FALSE) MenuPrint(gUnknown_0840631E, 16, var); else MenuPrint(gUnknown_08406318, 16, var); } -void sub_813AB64(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawNormalItemEntry(struct ItemSlot *itemSlot, u8 var, int var2) { - sub_813AB28(itemSlot, var, var2); - sub_813AAC4(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); + ItemStorage_DrawItemName(itemSlot, var, var2); + ItemStorage_DrawItemQuantity(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); } -void sub_813AB90(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawKeyItemEntry(struct ItemSlot *itemSlot, u8 var, int var2) { - sub_813AB28(itemSlot, var, var2); - sub_813AB10(var); + ItemStorage_DrawItemName(itemSlot, var, var2); + ItemStorage_DrawItemVoidQuantity(var); } -void sub_813ABAC(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawTMHMEntry(struct ItemSlot *itemSlot, u8 var, int var2) { - sub_813AB28(itemSlot, var, var2); + ItemStorage_DrawItemName(itemSlot, var, var2); if(itemSlot->itemId < ITEM_HM01) - sub_813AAC4(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); + ItemStorage_DrawItemQuantity(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); else - sub_813AB10(var); // key items do not have a quantity. + ItemStorage_DrawItemVoidQuantity(var); // HMs do not have a quantity. } void ItemStorage_DrawItemList(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 i; int tempArg; - u16 j = 0; + u16 i; + u16 yCoord = 0; // r5 is i and is unsigned 16-bit. for(i = ITEMS_ABOVE_TOP; i < ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS; i++) { - j = (i - ITEMS_ABOVE_TOP) * 2; + yCoord = (i - ITEMS_ABOVE_TOP) * 2; if(i != NUM_ITEMS) { @@ -849,13 +847,13 @@ void ItemStorage_DrawItemList(u8 taskId) case 0: case 1: case 3: - sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + ItemStorage_DrawNormalItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); break; case 4: - sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + ItemStorage_DrawKeyItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); break; case 2: - sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + ItemStorage_DrawTMHMEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); break; } } @@ -867,7 +865,7 @@ void ItemStorage_DrawItemList(u8 taskId) beforeLabel: if(i - ITEMS_ABOVE_TOP < 8) - MenuFillWindowRectWithBlankTile(16, j + 4, 0x1C, 0x12); + MenuFillWindowRectWithBlankTile(16, yCoord + 4, 0x1C, 0x12); switch(ITEMS_ABOVE_TOP) { @@ -875,7 +873,7 @@ beforeLabel: CreateVerticalScrollIndicators(0, 0xB8, 8); break; weirdCase: - sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1); + sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (yCoord + 2) * 8, 0x68, 1); goto beforeLabel; case 0: DestroyVerticalScrollIndicator(0); @@ -888,7 +886,7 @@ weirdCase: DestroyVerticalScrollIndicator(1); } -void GetPlayerPcResponseString(u16 itemId) +void ItemStorage_PrintItemPcResponse(u16 itemId) { u8 *string; @@ -939,29 +937,29 @@ void ItemStorage_DrawBothListAndDescription(u8 taskId) if(SWITCH_MODE_ACTIVE == FALSE) { if(trueIndex == NUM_ITEMS) - GetPlayerPcResponseString(ITEMPC_GO_BACK_TO_PREV); + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); else - GetPlayerPcResponseString(gSaveBlock1.pcItems[trueIndex].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); } } -void sub_813AE6C(u8 taskId, u8 var) +void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var) { s16 *data = gTasks[taskId].data; sub_80F944C(); LoadScrollIndicatorPalette(); - sub_813AF04(); + ItemStorage_LoadPalette(); MenuDrawTextWindow(0xF, 0, 0x1D, 0x13); MenuDrawTextWindow(0, 0xC, 0xE, 0x13); MenuDrawTextWindow(0, 0, 0xB, 3); - GetPlayerPcResponseString(gSaveBlock1.pcItems[0].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[0].itemId); MenuPrint(gPCText_ItemPCOptionsText[var].text, 1, 1); ItemStorage_DrawItemList(taskId); InitMenu(0, 0x10, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); } -void sub_813AF04(void) +void ItemStorage_LoadPalette(void) { u16 arr[3]; -- cgit v1.2.3 From 6f843698941b8b21b372a5fe9cda6c286fd68ee3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 10 Jun 2017 12:45:31 -0400 Subject: whitespace --- src/player_pc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/player_pc.c b/src/player_pc.c index 4c321ba46..7a2377bbb 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -1015,7 +1015,7 @@ void Mailbox_DrawMailList(u8 taskId) // taskId is unused u16 i = gMailboxInfo.itemsAbove; register struct MailboxStruct *tempMailbox asm("r1") = &gMailboxInfo; register struct MailboxStruct *mailbox asm("r6"); - + if(i < i + tempMailbox->pageItems) { mailbox = tempMailbox; @@ -1038,11 +1038,11 @@ void Mailbox_DrawMailList(u8 taskId) // taskId is unused } } } - + beforeLabel: if(i - gMailboxInfo.itemsAbove != 8) MenuFillWindowRectWithBlankTile(0x15, yCoord + 4, 0x1C, 0x12); - + switch(gMailboxInfo.itemsAbove) { default: @@ -1055,7 +1055,7 @@ weirdCase: DestroyVerticalScrollIndicator(0); break; } - + if(gMailboxInfo.itemsAbove + gMailboxInfo.pageItems <= gMailboxInfo.count) CreateVerticalScrollIndicators(1, 0xC8, 0x98); else @@ -1243,7 +1243,7 @@ void sub_813B578(u8 taskId) struct MailStruct *mail = &gSaveBlock1.mail[gMailboxInfo.itemsAbove + 6 + gMailboxInfo.cursorPos]; MenuZeroFillWindowRect(0x14, 8, 0x1A, 0xD); - + if(AddBagItem(mail->itemId, 1) == FALSE) { DisplayItemMessageOnField(taskId, gOtherText_BagIsFull, sub_813B758, 0); @@ -1297,7 +1297,7 @@ void sub_813B6A4(void) gMailboxInfo.count = GetMailboxMailCount(); Mailbox_UpdateMailList(); - + if(oldCount != gMailboxInfo.count && gMailboxInfo.count < gMailboxInfo.pageItems + gMailboxInfo.itemsAbove && gMailboxInfo.itemsAbove != 0) // did the count update? gMailboxInfo.itemsAbove--; -- cgit v1.2.3 From a7419893b5dd5ce659133ab4655d8b32c923a782 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 10 Jun 2017 13:04:09 -0400 Subject: whitespace 2 electric boogaloo --- src/player_pc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/player_pc.c b/src/player_pc.c index 7a2377bbb..f39d812b6 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -771,7 +771,7 @@ void ItemStorage_DoItemSwap(u8 taskId, bool8 switchModeDisabled) /* THEORY: This check produces essentially dead code, but it might have been working in an earlier build in which case it allows a programmer to easily duplicate items without the use of a debug menu. - This gets the page index of the swap index for some reason. It is currently unknown what it would have been used + This gets the page index of the swap index for some reason. It is currently unknown what it would have been used for, but perhaps it was used to increase the quantity of the item without a debug menu. With the removal of a lot of the debug menus close to release, a programmer may have added this to help test things with a low key (such as planting a lot of duplicated berries, which requires this lazy "cheat") @@ -942,7 +942,7 @@ void ItemStorage_DrawBothListAndDescription(u8 taskId) s16 trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; ItemStorage_DrawItemList(taskId); - + if(SWITCH_MODE_ACTIVE == FALSE) { if(trueIndex == NUM_ITEMS) @@ -1025,7 +1025,7 @@ void Mailbox_DrawMailList(u8 taskId) // taskId is unused forJump: yCoord = (i - mailbox->itemsAbove) * 2; MenuFillWindowRectWithBlankTile(0x15, yCoord + 2, 0x1C, yCoord + 3); - + if(i != mailbox->count) { StringCopy(gStringVar1, (u8 *)gSaveBlock1.mail[i + 6].playerName); @@ -1053,13 +1053,13 @@ weirdCase: goto beforeLabel; case 0: DestroyVerticalScrollIndicator(0); - break; + break; } if(gMailboxInfo.itemsAbove + gMailboxInfo.pageItems <= gMailboxInfo.count) CreateVerticalScrollIndicators(1, 0xC8, 0x98); else - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(1); } void Mailbox_DrawMailboxMenu(u8 taskId) -- cgit v1.2.3