diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2021-11-28 15:50:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-28 15:50:13 -0500 |
commit | 7b913802ab5745ea7529b634ebca6a147fe1c560 (patch) | |
tree | 6932ba627bf459011086528dc530ffdca1c05433 | |
parent | 6282f75cae2fb9484b9fe9a6c601c9a0c07c4250 (diff) | |
parent | 7e38583a5dc00b37a5ad7df94d4489c3150def8c (diff) |
Merge pull request #477 from GriffinRichards/sync-global
Sync global
40 files changed, 466 insertions, 532 deletions
diff --git a/include/berry.h b/include/berry.h index d1efa0abf..359849101 100644 --- a/include/berry.h +++ b/include/berry.h @@ -25,45 +25,12 @@ enum #define NUM_BERRIES 44 -extern const u8 *const gBerryTreeObjectEventGraphicsIdTablePointers[NUM_BERRIES]; -extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[NUM_BERRIES]; -extern const u8 *const gBerryTreePaletteSlotTablePointers[NUM_BERRIES]; - void ClearEnigmaBerries(void); void SetEnigmaBerry(u8 *src); -u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry); bool32 IsEnigmaBerryValid(void); const struct Berry *GetBerryInfo(u8 berry); -struct BerryTree *GetBerryTreeInfo(u8 id); -bool32 ObjectEventInteractionWaterBerryTree(void); -bool8 IsPlayerFacingPlantedBerryTree(void); -bool8 TryToWaterBerryTree(void); -void ClearBerryTrees(void); -bool32 BerryTreeGrow(struct BerryTree *tree); -void BerryTreeTimeUpdate(s32 minutes); -void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle); -void RemoveBerryTree(u8 id); -u8 GetBerryTypeByBerryTreeId(u8 id); -u8 GetStageByBerryTreeId(u8); u8 ItemIdToBerryType(u16 item); -u16 BerryTypeToItemId(u16 berry); void GetBerryNameByBerryType(u8 berry, u8 *string); -void ResetBerryTreeSparkleFlag(u8 id); -u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree); -u8 GetNumStagesWateredByBerryTreeId(u8 id); -u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water); -u8 CalcBerryYield(struct BerryTree *tree); -u8 GetBerryCountByBerryTreeId(u8 id); -u16 GetStageDurationByBerryType(u8); -void Bag_ChooseBerry(void); -void ObjectEventInteractionGetBerryTreeData(void); -void ObjectEventInteractionPlantBerryTree(void); -void ObjectEventInteractionPickBerryTree(void); -void ObjectEventInteractionRemoveBerryTree(void); -u8 PlayerHasBerries(void); -void ResetBerryTreeSparkleFlags(void); -void ClearEnigmaBerries(void); -const struct Berry * GetBerryInfo(u8 berryIdx); extern const struct Berry gBerries[]; diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h index b43e93da2..982b79d2d 100644 --- a/include/constants/easy_chat.h +++ b/include/constants/easy_chat.h @@ -1077,6 +1077,7 @@ #define EC_WORD_OLD (EC_GROUP_TRENDY_SAYING << 9) | 0x1e #define EC_WORD_YOUNG (EC_GROUP_TRENDY_SAYING << 9) | 0x1f #define EC_WORD_UGLY (EC_GROUP_TRENDY_SAYING << 9) | 0x20 +#define NUM_ADDITIONAL_PHRASES 33 #define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon) #define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon) diff --git a/include/constants/global.h b/include/constants/global.h index 689848912..caee324aa 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -1,36 +1,77 @@ #ifndef GUARD_CONSTANTS_GLOBAL_H #define GUARD_CONSTANTS_GLOBAL_H - -#define ITEM_NAME_LENGTH 14 -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 -#define MOVE_NAME_LENGTH 12 - -#define VERSION_SAPPHIRE 1 -#define VERSION_RUBY 2 -#define VERSION_EMERALD 3 -#define VERSION_FIRE_RED 4 -#define VERSION_LEAF_GREEN 5 - -#define LANGUAGE_JAPANESE 1 -#define LANGUAGE_ENGLISH 2 -#define LANGUAGE_FRENCH 3 -#define LANGUAGE_ITALIAN 4 -#define LANGUAGE_GERMAN 5 - // 6 goes unused but the theory is it was meant to be Korean -#define LANGUAGE_SPANISH 7 +// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. +// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. +// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------". +// Gen 5 and up read Diamond, Pearl, or Platinum's ID as "Sinnoh". +// In Gen 4 and up, migrated Pokemon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string. +#define VERSION_SAPPHIRE 1 +#define VERSION_RUBY 2 +#define VERSION_EMERALD 3 +#define VERSION_FIRE_RED 4 +#define VERSION_LEAF_GREEN 5 +#define VERSION_HEART_GOLD 7 +#define VERSION_SOUL_SILVER 8 +#define VERSION_DIAMOND 10 +#define VERSION_PEARL 11 +#define VERSION_PLATINUM 12 +#define VERSION_GAMECUBE 15 + +#define LANGUAGE_JAPANESE 1 +#define LANGUAGE_ENGLISH 2 +#define LANGUAGE_FRENCH 3 +#define LANGUAGE_ITALIAN 4 +#define LANGUAGE_GERMAN 5 +#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean +#define LANGUAGE_SPANISH 7 +#define NUM_LANGUAGES 7 #ifdef ENGLISH #define GAME_LANGUAGE (LANGUAGE_ENGLISH) #endif +#define DAYCARE_MON_COUNT 2 #define PC_ITEMS_COUNT 30 #define BAG_ITEMS_COUNT 42 #define BAG_KEYITEMS_COUNT 30 #define BAG_POKEBALLS_COUNT 13 #define BAG_TMHM_COUNT 58 #define BAG_BERRIES_COUNT 43 +#define OBJECT_EVENTS_COUNT 16 #define OBJECT_EVENT_TEMPLATES_COUNT 64 +#define MAIL_COUNT (PARTY_SIZE + 10) +#define PC_MAIL_NUM(i) (PARTY_SIZE + (i)) +#define DECOR_MAX_SECRET_BASE 16 +#define MAX_REMATCH_ENTRIES 100 +#define UNION_ROOM_KB_ROW_COUNT 10 +#define GIFT_RIBBONS_COUNT 11 + +#define POCKET_ITEMS 1 +#define POCKET_KEY_ITEMS 2 +#define POCKET_POKE_BALLS 3 +#define POCKET_TM_CASE 4 +#define POCKET_BERRY_POUCH 5 +#define NUM_BAG_POCKETS 5 + +// string lengths +#define ITEM_NAME_LENGTH 14 +#define POKEMON_NAME_LENGTH 10 +#define PLAYER_NAME_LENGTH 7 +#define MAIL_WORDS_COUNT 9 +#define EASY_CHAT_BATTLE_WORDS_COUNT 6 +#define MOVE_NAME_LENGTH 12 +#define NUM_QUESTIONNAIRE_WORDS 4 +#define WONDER_CARD_TEXT_LENGTH 40 +#define WONDER_NEWS_TEXT_LENGTH 40 +#define WONDER_CARD_BODY_TEXT_LINES 4 +#define WONDER_NEWS_BODY_TEXT_LINES 10 + +#define MAX_STAMP_CARD_STAMPS 7 + +#define TRAINER_ID_LENGTH 4 +#define MAX_MON_MOVES 4 +#define PARTY_SIZE 6 +#define MULTI_PARTY_SIZE (PARTY_SIZE / 2) #define QUEST_LOG_SCENE_COUNT 4 @@ -43,6 +84,8 @@ #define BARD_SONG_LENGTH 6 #define NUM_STORYTELLER_TALES 4 #define NUM_TRADER_ITEMS 4 +#define GIDDY_MAX_TALES 10 +#define GIDDY_MAX_QUESTIONS 8 #define OPTIONS_BUTTON_MODE_HELP 0 #define OPTIONS_BUTTON_MODE_LR 1 @@ -58,20 +101,6 @@ #define OPTIONS_BATTLE_STYLE_SHIFT 0 #define OPTIONS_BATTLE_STYLE_SET 1 -#define POCKET_ITEMS 1 -#define POCKET_KEY_ITEMS 2 -#define POCKET_POKE_BALLS 3 -#define POCKET_TM_CASE 4 -#define POCKET_BERRY_POUCH 5 - -#define NUM_BAG_POCKETS 5 - -#define MAX_MON_MOVES 4 - -#define TRAINER_ID_LENGTH 4 -#define PARTY_SIZE 6 -#define MULTI_PARTY_SIZE (PARTY_SIZE / 2) - #define DIR_NONE 0 #define DIR_SOUTH 1 #define DIR_NORTH 2 diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index c57146445..7ab2c12e4 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -1,8 +1,6 @@ #ifndef GUARD_GLOBAL_FIELDMAP_H #define GUARD_GLOBAL_FIELDMAP_H -#define OBJECT_EVENTS_COUNT 16 - #define METATILE_BEHAVIOR_MASK 0x00FF #define METATILE_COLLISION_MASK 0x0C00 #define METATILE_ID_MASK 0x03FF @@ -63,7 +61,7 @@ struct Tileset /*0x08*/ void *palettes; /*0x0c*/ void *metatiles; /*0x10*/ TilesetCB callback; - /*0x14*/ void *metatileAttributes; + /*0x14*/ u32 *metatileAttributes; }; struct MapLayout @@ -134,7 +132,6 @@ struct BgEvent u32 isUnderfoot:1; } hiddenItemStr; u32 hiddenItem; - u32 secretBaseId; } bgUnion; }; @@ -144,7 +141,6 @@ struct MapEvents u8 warpCount; u8 coordEventCount; u8 bgEventCount; - struct ObjectEventTemplate *objectEvents; struct WarpEvent *warps; struct CoordEvent *coordEvents; @@ -177,20 +173,15 @@ struct MapHeader /* 0x15 */ u8 cave; /* 0x16 */ u8 weather; /* 0x17 */ u8 mapType; + // fields correspond to the arguments in the map_header_flags macro /* 0x18 */ bool8 bikingAllowed; - /* 0x19 */ u8 flags; + /* 0x19 */ bool8 allowEscaping:1; // Escape Rope and Dig + bool8 allowRunning:1; + bool8 showMapName:6; // the last 5 bits are unused /* 0x1A */ s8 floorNum; /* 0x1B */ u8 battleType; }; -// Flags for gMapHeader.flags, as defined in the map_header_flags macro -#define MAP_ALLOW_ESCAPE_ROPE (1 << 0) -#define MAP_ALLOW_RUN (1 << 1) -#define MAP_SHOW_MAP_NAME (1 << 2) -#define UNUSED_MAP_FLAGS (1 << 3 | 1 << 4 | 1 << 5 | 1 << 6 | 1 << 7) - -#define SHOW_MAP_NAME_ENABLED ((gMapHeader.flags & (MAP_SHOW_MAP_NAME | UNUSED_MAP_FLAGS)) == MAP_SHOW_MAP_NAME) - struct ObjectEvent { /*0x00*/ /* 0*/ u32 active:1; @@ -319,7 +310,7 @@ enum COLLISION_STOP_SURFING, COLLISION_LEDGE_JUMP, COLLISION_PUSHED_BOULDER, - COLLISION_UNKNOWN_WARP_6C_6D_6E_6F, + COLLISION_DIRECTIONAL_STAIR_WARP, COLLISION_WHEELIE_HOP, COLLISION_ISOLATED_VERTICAL_RAIL, COLLISION_ISOLATED_HORIZONTAL_RAIL, @@ -344,7 +335,7 @@ enum T_TILE_CENTER, // player is on a frame in which they are centered on a tile during which the player either stops or keeps their momentum and keeps going, changing direction if necessary. }; -struct PlayerAvatar /* 0x202E858 */ +struct PlayerAvatar { /*0x00*/ u8 flags; /*0x01*/ u8 transitionFlags; // used to be bike, but it's not that in Emerald and probably isn't here either. maybe transition flags? diff --git a/include/global.h b/include/global.h index 597e7ce57..533b54a4d 100644 --- a/include/global.h +++ b/include/global.h @@ -8,6 +8,7 @@ #include "constants/flags.h" #include "constants/vars.h" #include "constants/species.h" +#include "constants/easy_chat.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); @@ -30,7 +31,10 @@ #define INCBIN_S32 INCBIN #endif // IDE support -#define NELEMS(array) (sizeof(array) / sizeof((array)[0])) +#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) + +// Alias of ARRAY_COUNT using GameFreak's name from AgbAssert calls. +#define NELEMS(array) ARRAY_COUNT(array) #define SWAP(a, b, temp) \ { \ @@ -80,6 +84,12 @@ #define SAFE_DIV(a, b) ((a) / (b)) #endif +// Extracts the upper 16 bits of a 32-bit number +#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) + +// Extracts the lower 16 bits of a 32-bit number +#define LOHALF(n) ((n) & 0xFFFF) + // There are many quirks in the source code which have overarching behavioral differences from // a number of other files. For example, diploma.c seems to declare rodata before each use while // other files declare out of order and must be at the beginning. There are also a number of @@ -100,23 +110,24 @@ // This macro is required to prevent the compiler from optimizing // a dpad up/down check in sub_812CAD8 (fame_checker.c). -// We suspect it was used globally. -// GameFreak never ceases to amaze. -// TODO: Propagate use of this macro #define TEST_BUTTON(field, button) ({(field) & (button);}) -#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button) -#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button) -#define JOY_REPT(button) TEST_BUTTON(gMain.newAndRepeatedKeys, button) +#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button) +#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button) +#define JOY_HELD_RAW(button) TEST_BUTTON(gMain.heldKeysRaw, button) +#define JOY_REPT(button) TEST_BUTTON(gMain.newAndRepeatedKeys, button) extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; extern u8 gStringVar4[]; -#define ROUND_BITS_TO_BYTES(numBits)(((numBits) / 8) + (((numBits) % 8) ? 1 : 0)) +#define DIV_ROUND_UP(val, roundBy)(((val) / (roundBy)) + (((val) % (roundBy)) ? 1 : 0)) -#define DEX_FLAGS_NO (ROUND_BITS_TO_BYTES(NUM_SPECIES)) -#define NUM_FLAG_BYTES (ROUND_BITS_TO_BYTES(FLAGS_COUNT)) +#define ROUND_BITS_TO_BYTES(numBits) DIV_ROUND_UP(numBits, 8) + +#define DEX_FLAGS_NO ROUND_BITS_TO_BYTES(NUM_SPECIES) +#define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT) +#define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES) struct Coords8 { @@ -175,13 +186,13 @@ struct Pokedex /*0x44*/ u8 seen[DEX_FLAGS_NO]; }; -struct PokemonJumpResults // possibly used in the game itself? +struct PokemonJumpRecords { u16 jumpsInRow; - u16 field2; + u16 unused1; // Set to 0, never read u16 excellentsInRow; - u16 field6; - u32 field8; + u16 gamesWithMaxPlayers; + u32 unused2; // Set to 0, never read u32 bestJumpScore; }; @@ -202,13 +213,11 @@ struct BerryPickingResults // possibly used in the game itself? Size may be wron struct BerryCrush { - u16 berryCrushResults[4]; + u16 pressingSpeeds[4]; // For the record with each possible group size, 2-5 players u32 berryPowderAmount; u32 unk; }; -#define PLAYER_NAME_LENGTH 7 - #define LINK_B_RECORDS_COUNT 5 struct LinkBattleRecord @@ -226,6 +235,20 @@ struct LinkBattleRecords u8 languages[LINK_B_RECORDS_COUNT]; }; +struct RecordMixingGiftData +{ + u8 unk0; + u8 quantity; + u16 itemId; + u8 filler4[8]; +}; + +struct RecordMixingGift +{ + int checksum; + struct RecordMixingGiftData data; +}; + #include "constants/game_stat.h" #include "global.fieldmap.h" #include "global.berry.h" @@ -236,9 +259,9 @@ struct BattleTowerRecord // record mixing /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100 /*0x01*/ u8 trainerClass; /*0x02*/ u16 winStreak; - /*0x04*/ u8 name[8]; - /*0x0C*/ u8 trainerId[4]; - /*0x10*/ u16 greeting[6]; + /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; + /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; + /*0x10*/ u16 greeting[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x1C*/ struct BattleTowerPokemon party[3]; /*0xA0*/ u32 checksum; }; @@ -289,7 +312,7 @@ struct SaveBlock2 /*0x000*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x008*/ u8 playerGender; // MALE, FEMALE /*0x009*/ u8 specialSaveWarpFlags; - /*0x00A*/ u8 playerTrainerId[4]; + /*0x00A*/ u8 playerTrainerId[TRAINER_ID_LENGTH]; /*0x00E*/ u16 playTimeHours; /*0x010*/ u8 playTimeMinutes; /*0x011*/ u8 playTimeSeconds; @@ -306,13 +329,13 @@ struct SaveBlock2 /*0x098*/ struct Time localTimeOffset; /*0x0A0*/ struct Time lastBerryTreeUpdate; /*0x0A8*/ u32 gcnLinkFlags; // Read by Pokemon Colosseum/XD - /*0x0AC*/ u8 field_AC; - /*0x0AD*/ u8 field_AD; + /*0x0AC*/ bool8 unkFlag1; // Set TRUE, never read + /*0x0AD*/ bool8 unkFlag2; // Set FALSE, never read /*0x0B0*/ struct BattleTowerData battleTower; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; - /*0xB00*/ struct PokemonJumpResults pokeJump; + /*0xB00*/ struct PokemonJumpRecords pokeJump; /*0xB10*/ struct BerryPickingResults berryPick; /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; @@ -323,28 +346,29 @@ extern struct SaveBlock2 *gSaveBlock2Ptr; struct SecretBaseParty { u32 personality[PARTY_SIZE]; - u16 moves[PARTY_SIZE * 4]; + u16 moves[PARTY_SIZE * MAX_MON_MOVES]; u16 species[PARTY_SIZE]; u16 heldItems[PARTY_SIZE]; u8 levels[PARTY_SIZE]; u8 EVs[PARTY_SIZE]; }; +// Leftover from R/S, still referenced in the unused function CreateSecretBaseEnemyParty struct SecretBaseRecord { /*0x1A9C*/ u8 secretBaseId; - /*0x1A9D*/ u8 sbr_field_1_0:4; + /*0x1A9D*/ u8 toRegister:4; /*0x1A9D*/ u8 gender:1; - /*0x1A9D*/ u8 sbr_field_1_5:1; - /*0x1A9D*/ u8 sbr_field_1_6:2; + /*0x1A9D*/ u8 battledOwnerToday:1; + /*0x1A9D*/ u8 registryStatus:2; /*0x1A9E*/ u8 trainerName[PLAYER_NAME_LENGTH]; - /*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class + /*0x1AA5*/ u8 trainerId[TRAINER_ID_LENGTH]; // byte 0 is used for determining trainer class /*0x1AA9*/ u8 language; - /*0x1AAA*/ u16 sbr_field_e; - /*0x1AAC*/ u8 sbr_field_10; - /*0x1AAD*/ u8 sbr_field_11; - /*0x1AAE*/ u8 decorations[16]; - /*0x1ABE*/ u8 decorationPos[16]; + /*0x1AAA*/ u16 numSecretBasesReceived; + /*0x1AAC*/ u8 numTimesEntered; + /*0x1AAD*/ u8 unused; + /*0x1AAE*/ u8 decorations[DECOR_MAX_SECRET_BASE]; + /*0x1ABE*/ u8 decorationPos[DECOR_MAX_SECRET_BASE]; /*0x1AD0*/ struct SecretBaseParty party; }; @@ -405,24 +429,16 @@ struct RamScript struct RamScriptData data; }; -struct EasyChatPair +// Leftover from R/S +struct DewfordTrend { - u16 unk0_0:7; - u16 unk0_7:7; - u16 unk1_6:1; - u16 unk2; + u16 trendiness:7; + u16 maxTrendiness:7; + u16 gainingTrendiness:1; + u16 rand; u16 words[2]; }; /*size = 0x8*/ -struct MailStruct -{ - /*0x00*/ u16 words[9]; - /*0x12*/ u8 playerName[8]; - /*0x1A*/ u8 trainerId[4]; - /*0x1E*/ u16 species; - /*0x20*/ u16 itemId; -}; - struct MauvilleManCommon { u8 id; @@ -456,8 +472,8 @@ struct MauvilleManGiddy /*0x00*/ u8 id; /*0x01*/ u8 taleCounter; /*0x02*/ u8 questionNum; - /*0x04*/ u16 randomWords[10]; - /*0x18*/ u8 questionList[8]; + /*0x04*/ u16 randomWords[GIDDY_MAX_TALES]; + /*0x18*/ u8 questionList[GIDDY_MAX_QUESTIONS]; /*0x20*/ u8 language; }; /*size = 0x2C*/ @@ -488,49 +504,19 @@ typedef union OldMan u8 filler[0x40]; } OldMan; -struct RecordMixing_UnknownStructSub -{ - u32 unk0; - u8 data[0x34]; - //u8 data[0x38]; -}; - -struct RecordMixing_UnknownStruct -{ - struct RecordMixing_UnknownStructSub data[2]; - u32 unk70; - u16 unk74[0x2]; -}; - -struct RecordMixingGiftData -{ - u8 unk0; - u8 quantity; - u16 itemId; - u8 filler4[8]; -}; - -struct RecordMixingGift -{ - int checksum; - struct RecordMixingGiftData data; -}; - -struct ContestWinner +struct Mail { - u32 personality; - u32 trainerId; - u16 species; - u8 contestCategory; - u8 monName[11]; - u8 trainerName[8]; - u8 contestRank; + /*0x00*/ u16 words[MAIL_WORDS_COUNT]; + /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1A*/ u8 trainerId[TRAINER_ID_LENGTH]; + /*0x1E*/ u16 species; + /*0x20*/ u16 itemId; }; struct DayCareMail { - struct MailStruct message; - u8 OT_name[OT_NAME_LENGTH + 1]; + struct Mail message; + u8 OT_name[PLAYER_NAME_LENGTH + 1]; u8 monName[POKEMON_NAME_LENGTH + 1]; u8 gameLanguage:4; u8 monLanguage:4; @@ -543,8 +529,6 @@ struct DaycareMon u32 steps; }; -#define DAYCARE_MON_COUNT 2 - struct DayCare { struct DaycareMon mons[DAYCARE_MON_COUNT]; @@ -552,6 +536,7 @@ struct DayCare u8 stepCounter; }; +// Leftover from R/S, referenced in unused function InitDaycareMailRecordMixing struct RecordMixingDayCareMail { struct DayCareMail mail[DAYCARE_MON_COUNT]; @@ -559,14 +544,6 @@ struct RecordMixingDayCareMail bool16 holdsItem[DAYCARE_MON_COUNT]; }; -struct MENewsJisanStruct -{ - u8 unk_0_0:2; - u8 unk_0_2:3; - u8 unk_0_5:3; - u8 berry; -}; - struct QuestLogNPCData { u32 x:8; @@ -577,10 +554,6 @@ struct QuestLogNPCData u32 movementType:8; }; -#define BERRY_TREES_COUNT 128 -#define MAIL_COUNT (PARTY_SIZE + 10) -#define PC_MAIL_NUM(i) (PARTY_SIZE + (i)) - struct QuestLogObjectEvent { /*0x00*/ u8 active:1; @@ -646,70 +619,59 @@ struct FameCheckerSaveData u16 unk_0_E:2; }; -#define NUM_EASY_CHAT_EXTRA_PHRASES 33 -#define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0)) - -struct MEWonderNewsData -{ - u16 newsId; - u8 shareState; - u8 unk_03; - u8 unk_04[40]; - u8 unk_2C[10][40]; -}; - -struct MEWonderNewsStruct +struct WonderNewsMetadata { - u32 crc; - struct MEWonderNewsData data; -}; - -struct MEWonderCardData -{ - u16 cardId; - u16 unk_02; - u32 unk_04; - u8 unk_08_0:2; - u8 unk_08_2:4; - u8 shareState:2; - u8 recvMonCapacity; - u8 unk_0A[40]; - u8 unk_32[40]; - u8 unk_5A[4][40]; - u8 unk_FA[40]; - u8 unk_122[40]; -}; - -struct MEWonderCardStruct -{ - u32 crc; - struct MEWonderCardData data; -}; - -struct MEventBuffer_3430_Sub -{ - u16 linkWins; - u16 linkLosses; - u16 linkTrades; - u16 unk_06; - u16 distributedMons[2][7]; // [0][x] = species - // [1][x] = ??? -}; - -struct MEventBuffer_3430 -{ - u32 crc; - struct MEventBuffer_3430_Sub data; + u8 unk_0_0:2; + u8 unk_0_2:3; + u8 unk_0_5:3; + u8 berry; }; -struct MEventBuffers +struct WonderNews { - /*0x000 0x3120*/ struct MEWonderNewsStruct menews; - /*0x1c0 0x32e0*/ struct MEWonderCardStruct mecard; - /*0x310 0x3430*/ struct MEventBuffer_3430 buffer_310; - /*0x338 0x3458*/ u16 ec_profile_maybe[4]; - /*0x340 0x3460*/ struct MENewsJisanStruct me_jisan; - /*0x344 0x3464*/ u32 unk_344[2][5]; + u16 newsId; + u8 sendType; // SEND_TYPE_* + u8 bgType; + u8 titleText[WONDER_NEWS_TEXT_LENGTH]; + u8 bodyText[WONDER_NEWS_BODY_TEXT_LINES][WONDER_NEWS_TEXT_LENGTH]; +}; + +struct WonderCard +{ + u16 flagId; // Event flag (sReceivedGiftFlags) + WONDER_CARD_FLAG_OFFSET + u16 iconSpecies; + u32 idNumber; + u8 type:2; // CARD_TYPE_* + u8 bgType:4; + u8 sendType:2; // SEND_TYPE_* + u8 maxStamps; + u8 titleText[WONDER_CARD_TEXT_LENGTH]; + u8 subtitleText[WONDER_CARD_TEXT_LENGTH]; + u8 bodyText[WONDER_CARD_BODY_TEXT_LINES][WONDER_CARD_TEXT_LENGTH]; + u8 footerLine1Text[WONDER_CARD_TEXT_LENGTH]; + u8 footerLine2Text[WONDER_CARD_TEXT_LENGTH]; +}; + +struct WonderCardMetadata +{ + u16 battlesWon; + u16 battlesLost; + u16 numTrades; + u16 iconSpecies; + u16 stampData[2][MAX_STAMP_CARD_STAMPS]; // First element is STAMP_SPECIES, second is STAMP_ID +}; + +struct MysteryGiftSave +{ + u32 newsCrc; + struct WonderNews news; + u32 cardCrc; + struct WonderCard card; + u32 cardMetadataCrc; + struct WonderCardMetadata cardMetadata; + u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS]; + struct WonderNewsMetadata newsMetadata; + u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades }; // 0x36C 0x348C struct TrainerTower @@ -726,12 +688,6 @@ struct TrainerTower bool8 validated:1; }; -struct TrainerRematchState -{ - u16 stepCounter; - u8 rematches[100]; -}; - struct TrainerNameRecord { u32 trainerId; @@ -784,8 +740,6 @@ struct ExternalEventFlags } __attribute__((packed));/*size = 0x15*/ -#define UNION_ROOM_KB_ROW_COUNT 10 - struct SaveBlock1 { /*0x0000*/ struct Coords16 pos; @@ -812,41 +766,41 @@ struct SaveBlock1 /*0x054c*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; /*0x05F8*/ u8 seen1[DEX_FLAGS_NO]; /*0x062C*/ u16 berryBlenderRecords[3]; // unused - /*0x0632*/ u8 field_632[6]; // unused? + /*0x0632*/ u8 unused_632[6]; /*0x0638*/ u16 trainerRematchStepCounter; - /*0x063A*/ u8 ALIGNED(2) trainerRematches[100]; + /*0x063A*/ u8 ALIGNED(2) trainerRematches[MAX_REMATCH_ENTRIES]; /*0x06A0*/ struct ObjectEvent objectEvents[OBJECT_EVENTS_COUNT]; - /*0x08E0*/ struct ObjectEventTemplate objectEventTemplates[64]; + /*0x08E0*/ struct ObjectEventTemplate objectEventTemplates[OBJECT_EVENT_TEMPLATES_COUNT]; /*0x0EE0*/ u8 flags[NUM_FLAG_BYTES]; /*0x1000*/ u16 vars[VARS_COUNT]; /*0x1200*/ u32 gameStats[NUM_GAME_STATS]; /*0x1300*/ struct QuestLog questLog[QUEST_LOG_SCENE_COUNT]; - /*0x2CA0*/ u16 easyChatProfile[6]; - /*0x2CAC*/ u16 easyChatBattleStart[6]; - /*0x2CB8*/ u16 easyChatBattleWon[6]; - /*0x2CC4*/ u16 easyChatBattleLost[6]; - /*0x2CD0*/ struct MailStruct mail[MAIL_COUNT]; - /*0x2F10*/ u8 additionalPhrases[EASY_CHAT_EXTRA_PHRASES_SIZE]; + /*0x2CA0*/ u16 easyChatProfile[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2CAC*/ u16 easyChatBattleStart[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2CB8*/ u16 easyChatBattleWon[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2CC4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2CD0*/ struct Mail mail[MAIL_COUNT]; + /*0x2F10*/ u8 additionalPhrases[NUM_ADDITIONAL_PHRASE_BYTES]; /*0x2F18*/ OldMan oldMan; // unused - /*0x2F54*/ struct EasyChatPair easyChatPairs[5]; // unused + /*0x2F54*/ struct DewfordTrend dewfordTrends[5]; // unused /*0x2F80*/ struct DayCare daycare; - /*0x309C*/ u8 giftRibbons[11]; + /*0x309C*/ u8 giftRibbons[GIFT_RIBBONS_COUNT]; /*0x30A7*/ struct ExternalEventData externalEventData; /*0x30BB*/ struct ExternalEventFlags externalEventFlags; /*0x30D0*/ struct Roamer roamer; /*0x30EC*/ struct EnigmaBerry enigmaBerry; - /*0x3120*/ struct MEventBuffers mysteryEventBuffers; - /*0x348C*/ u8 filler_348C[400]; + /*0x3120*/ struct MysteryGiftSave mysteryGift; + /*0x348C*/ u8 unused_348C[400]; /*0x361C*/ struct RamScript ramScript; - /*0x3A08*/ u8 filler3A08[16]; + /*0x3A08*/ struct RecordMixingGift recordMixingGift; // unused /*0x3A18*/ u8 seen2[DEX_FLAGS_NO]; /*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH + 1]; /*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS]; - /*0x3A94*/ u8 filler3A94[0x40]; + /*0x3A94*/ u8 unused_3A94[64]; /*0x3AD4*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21]; /*0x3BA8*/ struct TrainerNameRecord trainerNameRecords[20]; /*0x3C98*/ struct DaycareMon route5DayCareMon; - /*0x3D24*/ u8 filler3D24[0x10]; + /*0x3D24*/ u8 unused_3D24[16]; /*0x3D34*/ u32 towerChallengeId; /*0x3D38*/ struct TrainerTower trainerTower[NUM_TOWER_CHALLENGE_TYPES]; }; // size: 0x3D68 diff --git a/include/mail.h b/include/mail.h index ca2fbfcc8..e2b6be8c8 100644 --- a/include/mail.h +++ b/include/mail.h @@ -22,6 +22,6 @@ #define ITEM_TO_MAIL(itemId) (itemId - FIRST_MAIL_IDX) -void ReadMail(struct MailStruct * mail, void (*savedCallback)(void), bool8 messageExists); +void ReadMail(struct Mail * mail, void (*savedCallback)(void), bool8 messageExists); #endif // GUARD_MAIL_H diff --git a/include/mail_data.h b/include/mail_data.h index a5795ed7e..79be06c33 100644 --- a/include/mail_data.h +++ b/include/mail_data.h @@ -3,19 +3,13 @@ #include "global.h" -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - void ClearMailData(void); -void ClearMailStruct(struct MailStruct *mail); +void ClearMailStruct(struct Mail *mail); bool8 MonHasMail(struct Pokemon *mon); u8 GiveMailToMon(struct Pokemon *mon, u16 itemId); u16 SpeciesToMailSpecies(u16 species, u32 personality); u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer); -u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail); +u8 GiveMailToMon2(struct Pokemon *mon, struct Mail *mail); void TakeMailFromMon(struct Pokemon *mon); void ClearMailItemId(u8 mailId); u8 TakeMailFromMon2(struct Pokemon *mon); diff --git a/include/mevent.h b/include/mevent.h index 4f3e365f7..28920b118 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -12,7 +12,7 @@ struct MEventClientHeaderStruct u32 unk_10; u16 id; u16 unk_16[4]; - struct MEventBuffer_3430_Sub unk_20; + struct WonderCardMetadata unk_20; u8 maxDistributionMons; u8 playerName[7]; u8 playerTrainerId[4]; @@ -50,16 +50,16 @@ extern const u16 gCard3Pal[]; extern const u16 gCard4Pal[]; extern const u16 gCard5Pal[]; -struct MEWonderNewsData * GetSavedWonderNews(void); -struct MEWonderCardData * GetSavedWonderCard(void); -struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void); -struct MENewsJisanStruct * GetMENewsJisanStructPtr(void); -bool32 OverwriteSavedWonderNewsWithReceivedNews(const struct MEWonderNewsData * src); +struct WonderNews * GetSavedWonderNews(void); +struct WonderCard * GetSavedWonderCard(void); +struct WonderCardMetadata * sav1_get_mevent_buffer_2(void); +struct WonderNewsMetadata * GetMENewsJisanStructPtr(void); +bool32 OverwriteSavedWonderNewsWithReceivedNews(const struct WonderNews * src); bool32 ValidateReceivedWonderNews(void); bool32 ValidateReceivedWonderCard(void); bool32 MEvent_HaveAlreadyReceivedWonderNews(const u8 * src); -bool32 OverwriteSavedWonderCardWithReceivedCard(const struct MEWonderCardData * data); -void MEvent_WonderCardResetUnk08_6(struct MEWonderCardData * buffer); +bool32 OverwriteSavedWonderCardWithReceivedCard(const struct WonderCard * data); +void MEvent_WonderCardResetUnk08_6(struct WonderCard * buffer); bool32 MEvent_ReceiveDistributionMon(const u16 * data); void BuildMEventClientHeader(struct MEventClientHeaderStruct * data); bool32 ValidateMEventClientHeader(const struct MEventClientHeaderStruct * data); @@ -67,8 +67,8 @@ u32 sub_8144418(const u16 * a0, const struct MEventClientHeaderStruct * a1, void u32 MEvent_CanPlayerReceiveDistributionMon(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused); bool32 sub_8144474(const struct MEventClientHeaderStruct * a0, const u16 * a1); u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command); -bool32 InitWonderCardResources(struct MEWonderCardData * r5, struct MEventBuffer_3430_Sub * r6); -bool32 InitWonderNewsResources(const struct MEWonderNewsData * a0); +bool32 InitWonderCardResources(struct WonderCard * r5, struct WonderCardMetadata * r6); +bool32 InitWonderNewsResources(const struct WonderNews * a0); s32 FadeToWonderCardMenu(void); s32 FadeToWonderNewsMenu(void); void DestroyWonderCard(void); @@ -88,7 +88,7 @@ u16 MEvent_GetBattleCardCount(u32 command); void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId); u16 *GetMEventProfileECWordsMaybe(void); void ResetReceivedWonderCardFlag(void); -bool32 MEventHandleReceivedWonderCard(u16 cardId); +bool32 MEventHandleReceivedWonderCard(u16 flagId); u16 GetWonderCardFlagId(void); #endif //GUARD_MEVENT_H diff --git a/include/mevent_server.h b/include/mevent_server.h index a7c7a3f23..17ece2f26 100644 --- a/include/mevent_server.h +++ b/include/mevent_server.h @@ -100,8 +100,8 @@ struct mevent_srv_common u32 cmdidx; const struct mevent_server_cmd * cmdBuffer; void * recvBuffer; - struct MEWonderCardData * card; - struct MEWonderNewsData * news; + struct WonderCard * card; + struct WonderNews * news; struct MEventClientHeaderStruct * mevent_unk1442cc; void * sendBuffer1; u32 sendBuffer1Size; diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index 8c59136c1..562df4a7b 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -5,7 +5,6 @@ u32 RunMysteryEventScript(u8 *); void SetMysteryEventScriptStatus(u32 val); -u16 GetRecordMixingGift(void); void MEventScript_InitContext(u8 *); bool32 MEventScript_Run(u32 *); diff --git a/include/pokemon.h b/include/pokemon.h index 8348b1178..6134064d0 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -96,7 +96,7 @@ struct BoxPokemon u8 hasSpecies:1; u8 isEgg:1; u8 unused:5; - u8 otName[OT_NAME_LENGTH]; + u8 otName[PLAYER_NAME_LENGTH]; u8 markings; u16 checksum; u16 unknown; diff --git a/include/trade.h b/include/trade.h index 04ea9406b..036c470a1 100644 --- a/include/trade.h +++ b/include/trade.h @@ -5,7 +5,7 @@ #include "link_rfu.h" #include "constants/trade.h" -extern struct MailStruct gLinkPartnerMail[6]; +extern struct Mail gLinkPartnerMail[6]; extern u8 gSelectedTradeMonPositions[2]; extern const u8 gText_MaleSymbol4[]; diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index f169857cb..28ed918f2 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -33,9 +33,6 @@ #define TAG_HEALTHBOX_PALS_1 55049 #define TAG_HEALTHBOX_PALS_2 55050 -#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) -#define LOHALF(n) ((n) & 0xFFFF) - // RAM UNUSED u32 gMonShrinkDuration; UNUSED u16 gMonShrinkDelta; diff --git a/src/battle_records.c b/src/battle_records.c index 017c1078c..7653561b7 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -303,7 +303,7 @@ static s32 IndexOfOpponentLinkBattleRecord(struct LinkBattleRecords * records, c for (i = 0; i < LINK_B_RECORDS_COUNT; i++) { - if (StringCompareN(records->entries[i].name, name, OT_NAME_LENGTH) == 0 && records->entries[i].trainerId == trainerId) + if (StringCompareN(records->entries[i].name, name, PLAYER_NAME_LENGTH) == 0 && records->entries[i].trainerId == trainerId) return i; } @@ -377,7 +377,7 @@ static void UpdateLinkBattleGameStats(s32 outcome) static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, const u8 * name, u16 trainerId, s32 outcome, u32 language) { - u8 namebuf[OT_NAME_LENGTH + 1]; + u8 namebuf[PLAYER_NAME_LENGTH + 1]; s32 i; struct LinkBattleRecord * record; @@ -397,7 +397,7 @@ static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, cons i = LINK_B_RECORDS_COUNT - 1; record = &records->entries[LINK_B_RECORDS_COUNT - 1]; ClearLinkBattleRecord(record); - StringCopyN(record->name, namebuf, OT_NAME_LENGTH); + StringCopyN(record->name, namebuf, PLAYER_NAME_LENGTH); record->trainerId = trainerId; } UpdateLinkBattleRecord(&records->entries[i], outcome); @@ -515,8 +515,8 @@ static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y) if (i == 0) { x = 0; - StringFillWithTerminator(gStringVar1, OT_NAME_LENGTH + 1); - StringCopyN(gStringVar1, record->name, OT_NAME_LENGTH); + StringFillWithTerminator(gStringVar1, PLAYER_NAME_LENGTH + 1); + StringCopyN(gStringVar1, record->name, PLAYER_NAME_LENGTH); } else if (i == 1) { diff --git a/src/berry.c b/src/berry.c index 680f21e3d..a2e5900a8 100644 --- a/src/berry.c +++ b/src/berry.c @@ -921,6 +921,8 @@ const struct BerryTree gBlankBerryTree = {}; berries[ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX]; \ }) +static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *); + void InitEnigmaBerry(void) { s32 i; @@ -967,7 +969,7 @@ void SetEnigmaBerry(u8 * berry) enigmaBerry->checksum = GetEnigmaBerryChecksum(enigmaBerry); } -u32 GetEnigmaBerryChecksum(struct EnigmaBerry * enigmaBerry) +static u32 GetEnigmaBerryChecksum(struct EnigmaBerry * enigmaBerry) { const u8 * src = (const u8 *)enigmaBerry; u32 result = 0; diff --git a/src/berry_crush.c b/src/berry_crush.c index 68807101c..a52b7516c 100644 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1061,31 +1061,31 @@ static void SaveResults(void) switch (sGame->playerCount) { case 2: - if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[0]) + if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.pressingSpeeds[0]) { sGame->newRecord = TRUE; - gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = sGame->pressingSpeed; + gSaveBlock2Ptr->berryCrush.pressingSpeeds[0] = sGame->pressingSpeed; } break; case 3: - if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[1]) + if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.pressingSpeeds[1]) { sGame->newRecord = TRUE; - gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = sGame->pressingSpeed; + gSaveBlock2Ptr->berryCrush.pressingSpeeds[1] = sGame->pressingSpeed; } break; case 4: - if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[2]) + if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.pressingSpeeds[2]) { sGame->newRecord = TRUE; - gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = sGame->pressingSpeed; + gSaveBlock2Ptr->berryCrush.pressingSpeeds[2] = sGame->pressingSpeed; } break; case 5: - if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.berryCrushResults[3]) + if (sGame->pressingSpeed > gSaveBlock2Ptr->berryCrush.pressingSpeeds[3]) { sGame->newRecord = TRUE; - gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = sGame->pressingSpeed; + gSaveBlock2Ptr->berryCrush.pressingSpeeds[3] = sGame->pressingSpeed; } break; } @@ -3192,10 +3192,10 @@ void ShowBerryCrushRankings(void) ScriptContext2_Enable(); taskId = CreateTask(Task_ShowBerryCrushRankings, 0); - gTasks[taskId].tPressingSpeeds(0) = gSaveBlock2Ptr->berryCrush.berryCrushResults[0]; - gTasks[taskId].tPressingSpeeds(1) = gSaveBlock2Ptr->berryCrush.berryCrushResults[1]; - gTasks[taskId].tPressingSpeeds(2) = gSaveBlock2Ptr->berryCrush.berryCrushResults[2]; - gTasks[taskId].tPressingSpeeds(3) = gSaveBlock2Ptr->berryCrush.berryCrushResults[3]; + gTasks[taskId].tPressingSpeeds(0) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[0]; + gTasks[taskId].tPressingSpeeds(1) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[1]; + gTasks[taskId].tPressingSpeeds(2) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[2]; + gTasks[taskId].tPressingSpeeds(3) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[3]; } static void PrintTimer(struct BerryCrushGame_Gfx * gfx, u16 frames) diff --git a/src/bike.c b/src/bike.c index 3b8cb6da2..4a24fb2a3 100644 --- a/src/bike.c +++ b/src/bike.c @@ -177,7 +177,10 @@ static void BikeTransition_MoveDirection(u8 direction) { if (collision == COLLISION_LEDGE_JUMP) PlayerJumpLedge(direction); - else if (collision != COLLISION_STOP_SURFING && collision != COLLISION_LEDGE_JUMP && collision != COLLISION_PUSHED_BOULDER && collision != COLLISION_UNKNOWN_WARP_6C_6D_6E_6F) + else if (collision != COLLISION_STOP_SURFING + && collision != COLLISION_LEDGE_JUMP + && collision != COLLISION_PUSHED_BOULDER + && collision != COLLISION_DIRECTIONAL_STAIR_WARP) PlayerOnBikeCollide(direction); } else @@ -249,7 +252,7 @@ bool8 RS_IsRunningDisallowed(u8 r0) bool32 IsRunningDisallowed(u8 metatileBehavior) { - if (!(gMapHeader.flags & MAP_ALLOW_RUN)) + if (!gMapHeader.allowRunning) return TRUE; if (MetatileBehaviorForbidsBiking(metatileBehavior) != TRUE) return FALSE; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 51470e0be..16426cdc4 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -491,11 +491,14 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys) { PlayerJumpLedge(direction); } - else if (collision == COLLISION_UNKNOWN_WARP_6C_6D_6E_6F) + else if (collision == COLLISION_DIRECTIONAL_STAIR_WARP) { PlayerFaceDirection(direction); } - else if (collision != COLLISION_STOP_SURFING && collision != COLLISION_LEDGE_JUMP && collision != COLLISION_PUSHED_BOULDER && collision != COLLISION_UNKNOWN_WARP_6C_6D_6E_6F) + else if (collision != COLLISION_STOP_SURFING + && collision != COLLISION_LEDGE_JUMP + && collision != COLLISION_PUSHED_BOULDER + && collision != COLLISION_DIRECTIONAL_STAIR_WARP) { PlayerNotOnBikeCollide(direction); } @@ -556,7 +559,7 @@ static u8 CheckForPlayerAvatarCollision(u8 direction) x = playerObjEvent->currentCoords.x; y = playerObjEvent->currentCoords.y; if (IsDirectionalStairWarpMetatileBehavior(MapGridGetMetatileBehaviorAt(x, y), direction)) - return 8; + return COLLISION_DIRECTIONAL_STAIR_WARP; MoveCoords(direction, &x, &y); return CheckForObjectEventCollision(playerObjEvent, x, y, direction, MapGridGetMetatileBehaviorAt(x, y)); } diff --git a/src/item_use.c b/src/item_use.c index b801e9ee5..b3d9205b9 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -243,7 +243,7 @@ void FieldUseFunc_OrangeMail(u8 taskId) static void sub_80A1208(void) { - struct MailStruct mail; + struct Mail mail; mail.itemId = gSpecialVar_ItemId; ReadMail(&mail, CB2_BagMenuFromStartMenu, 0); @@ -613,7 +613,7 @@ static void sub_80A1B48(u8 taskId) bool8 CanUseEscapeRopeOnCurrMap(void) { - if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE) + if (gMapHeader.allowEscaping) return TRUE; else return FALSE; diff --git a/src/load_save.c b/src/load_save.c index 499c93916..09e282e2c 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -19,7 +19,7 @@ struct LoadedSaveData /*0x00F0*/ struct ItemSlot pokeBalls[BAG_POKEBALLS_COUNT]; /*0x0130*/ struct ItemSlot TMsHMs[BAG_TMHM_COUNT]; /*0x0230*/ struct ItemSlot berries[BAG_BERRIES_COUNT]; - /*0x02E8*/ struct MailStruct mail[MAIL_COUNT]; + /*0x02E8*/ struct Mail mail[MAIL_COUNT]; }; // EWRAM DATA diff --git a/src/mail.c b/src/mail.c index 7575072b6..bf4b3eba9 100644 --- a/src/mail.c +++ b/src/mail.c @@ -57,7 +57,7 @@ struct MailViewResources { u8 authorNameBuffer[12]; void (*savedCallback)(void); void (*showMailCallback)(void); - struct MailStruct * mail; + struct Mail * mail; bool8 messageExists; u8 nameX; u8 mailType; @@ -437,7 +437,7 @@ static const struct MailAttrStruct sMessageLayouts_5x2[] = { }, }; -void ReadMail(struct MailStruct * mail, void (*savedCallback)(void), bool8 messageExists) +void ReadMail(struct Mail * mail, void (*savedCallback)(void), bool8 messageExists) { u16 sp0; u16 species; diff --git a/src/mail_data.c b/src/mail_data.c index e6495dc72..3dd75f8c0 100644 --- a/src/mail_data.c +++ b/src/mail_data.c @@ -13,7 +13,7 @@ void ClearMailData(void) ClearMailStruct(&gSaveBlock1Ptr->mail[i]); } -void ClearMailStruct(struct MailStruct *mail) +void ClearMailStruct(struct Mail *mail) { s32 i; @@ -95,7 +95,7 @@ u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *unownLetter) return result; } -u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail) +u8 GiveMailToMon2(struct Pokemon *mon, struct Mail *mail) { u8 heldItem[2]; u16 itemId = mail->itemId; @@ -152,7 +152,7 @@ u8 TakeMailFromMon2(struct Pokemon *mon) { if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE) { - memcpy(&gSaveBlock1Ptr->mail[i], &gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct MailStruct)); + memcpy(&gSaveBlock1Ptr->mail[i], &gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct Mail)); gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)].itemId = ITEM_NONE; SetMonData(mon, MON_DATA_MAIL, &newMailId); SetMonData(mon, MON_DATA_HELD_ITEM, newHeldItem); diff --git a/src/main_menu.c b/src/main_menu.c index 8f6cf7b45..5adf3b6ac 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -618,11 +618,11 @@ static void PrintContinueStats(void) static void PrintPlayerName(void) { s32 i; - u8 name[OT_NAME_LENGTH + 1]; + u8 name[PLAYER_NAME_LENGTH + 1]; u8 *ptr; AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 2, 18, sTextColor2, -1, gText_Player); ptr = name; - for (i = 0; i < OT_NAME_LENGTH; i++) + for (i = 0; i < PLAYER_NAME_LENGTH; i++) *ptr++ = gSaveBlock2Ptr->playerName[i]; *ptr = EOS; AddTextPrinterParameterized3(MAIN_MENU_WINDOW_CONTINUE, 2, 62, 18, sTextColor2, -1, name); diff --git a/src/menews_jisan.c b/src/menews_jisan.c index f3b8fca78..d8d4af917 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -5,15 +5,15 @@ #include "menews_jisan.h" #include "constants/items.h" -static u32 GetMENewsJisanRewardItem(struct MENewsJisanStruct *); -static void MENewsJisanIncrementCounterUnk0_5(struct MENewsJisanStruct *); -static u32 GetMENewsJisanState(struct MENewsJisanStruct *); -static void MENewsJisanIncrementCounterUnk0_2(struct MENewsJisanStruct *); -static void MENewsJisanResetCounterUnk0_2(struct MENewsJisanStruct *); +static u32 GetMENewsJisanRewardItem(struct WonderNewsMetadata *); +static void MENewsJisanIncrementCounterUnk0_5(struct WonderNewsMetadata *); +static u32 GetMENewsJisanState(struct WonderNewsMetadata *); +static void MENewsJisanIncrementCounterUnk0_2(struct WonderNewsMetadata *); +static void MENewsJisanResetCounterUnk0_2(struct WonderNewsMetadata *); void MENewsJisan_SetRandomReward(u32 a0) { - struct MENewsJisanStruct *r5 = GetMENewsJisanStructPtr(); + struct WonderNewsMetadata *r5 = GetMENewsJisanStructPtr(); r5->unk_0_0 = a0; switch (a0) @@ -32,7 +32,7 @@ void MENewsJisan_SetRandomReward(u32 a0) void MENewsJisanReset(void) { - struct MENewsJisanStruct *r5 = GetMENewsJisanStructPtr(); + struct WonderNewsMetadata *r5 = GetMENewsJisanStructPtr(); r5->unk_0_0 = 0; r5->unk_0_2 = 0; @@ -44,8 +44,8 @@ void MENewsJisanReset(void) void MENewsJisanStepCounter(void) { u16 *r4 = GetVarPointer(VAR_MENEWS_JISAN_STEP_COUNTER); - struct MENewsJisanStruct *r2 = GetMENewsJisanStructPtr(); - struct MENewsJisanStruct r0 = *r2; + struct WonderNewsMetadata *r2 = GetMENewsJisanStructPtr(); + struct WonderNewsMetadata r0 = *r2; if ((u8)r0.unk_0_5 > 4 && ++(*r4) >= 500) { @@ -57,7 +57,7 @@ void MENewsJisanStepCounter(void) u16 GetMENewsJisanItemAndState(void) { u16 *r6 = &gSpecialVar_Result; - struct MENewsJisanStruct *r4 = GetMENewsJisanStructPtr(); + struct WonderNewsMetadata *r4 = GetMENewsJisanStructPtr(); u16 r5; if (!IsMysteryGiftEnabled() || !ValidateReceivedWonderNews()) @@ -92,7 +92,7 @@ u16 GetMENewsJisanItemAndState(void) return r5; } -static u32 GetMENewsJisanRewardItem(struct MENewsJisanStruct *a0) +static u32 GetMENewsJisanRewardItem(struct WonderNewsMetadata *a0) { u32 r4; @@ -103,28 +103,28 @@ static u32 GetMENewsJisanRewardItem(struct MENewsJisanStruct *a0) return r4; } -static void MENewsJisanResetCounterUnk0_2(struct MENewsJisanStruct *a0) +static void MENewsJisanResetCounterUnk0_2(struct WonderNewsMetadata *a0) { a0->unk_0_2 = 0; } -static void MENewsJisanIncrementCounterUnk0_2(struct MENewsJisanStruct *a0) +static void MENewsJisanIncrementCounterUnk0_2(struct WonderNewsMetadata *a0) { a0->unk_0_2++; if ((u8)a0->unk_0_2 > 4) a0->unk_0_2 = 4; } -static void MENewsJisanIncrementCounterUnk0_5(struct MENewsJisanStruct *a0) +static void MENewsJisanIncrementCounterUnk0_5(struct WonderNewsMetadata *a0) { a0->unk_0_5++; if ((u8)a0->unk_0_5 > 5) a0->unk_0_5 = 5; } -static u32 GetMENewsJisanState(struct MENewsJisanStruct *a0) +static u32 GetMENewsJisanState(struct WonderNewsMetadata *a0) { - struct MENewsJisanStruct r0; + struct WonderNewsMetadata r0; if ((u8)a0->unk_0_5 == 5) return 6; diff --git a/src/mevent.c b/src/mevent.c index 04fcb4b19..af000db5a 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -36,10 +36,10 @@ struct MEventTaskData1 }; static void Task_EReaderComm(u8 taskId); -static bool32 IsReceivedWonderNewsHeaderValid(const struct MEWonderNewsData * src); +static bool32 IsReceivedWonderNewsHeaderValid(const struct WonderNews * src); static void BlankWonderNews(void); static void BlankMENewsJisan(void); -static bool32 IsReceivedWonderCardHeaderValid(const struct MEWonderCardData * src); +static bool32 IsReceivedWonderCardHeaderValid(const struct WonderCard * src); static void BlankSavedWonderCard(void); static void BlankMEventBuffer2(void); static void RecordIdOfWonderCardSender(u32 eventId, u32 trainerId, u32 *idsList, s32 count); @@ -477,34 +477,34 @@ static void Task_EReaderComm(u8 taskId) void InitMEventData(void) { - CpuFill32(0, &gSaveBlock1Ptr->mysteryEventBuffers, sizeof(gSaveBlock1Ptr->mysteryEventBuffers)); + CpuFill32(0, &gSaveBlock1Ptr->mysteryGift, sizeof(gSaveBlock1Ptr->mysteryGift)); BlankMENewsJisan(); EC_ResetMEventProfileMaybe(); } -struct MEWonderNewsData * GetSavedWonderNews(void) +struct WonderNews * GetSavedWonderNews(void) { - return &gSaveBlock1Ptr->mysteryEventBuffers.menews.data; + return &gSaveBlock1Ptr->mysteryGift.news; } -struct MEWonderCardData * GetSavedWonderCard(void) +struct WonderCard * GetSavedWonderCard(void) { - return &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; + return &gSaveBlock1Ptr->mysteryGift.card; } -struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void) +struct WonderCardMetadata * sav1_get_mevent_buffer_2(void) { - return &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data; + return &gSaveBlock1Ptr->mysteryGift.cardMetadata; } -struct MENewsJisanStruct * GetMENewsJisanStructPtr(void) +struct WonderNewsMetadata * GetMENewsJisanStructPtr(void) { - return &gSaveBlock1Ptr->mysteryEventBuffers.me_jisan; + return &gSaveBlock1Ptr->mysteryGift.newsMetadata; } u16 * GetMEventProfileECWordsMaybe(void) { - return gSaveBlock1Ptr->mysteryEventBuffers.ec_profile_maybe; + return gSaveBlock1Ptr->mysteryGift.questionnaireWords; } void DestroyWonderNews(void) @@ -512,26 +512,26 @@ void DestroyWonderNews(void) BlankWonderNews(); } -bool32 OverwriteSavedWonderNewsWithReceivedNews(const struct MEWonderNewsData * src) +bool32 OverwriteSavedWonderNewsWithReceivedNews(const struct WonderNews * src) { if (!IsReceivedWonderNewsHeaderValid(src)) return FALSE; BlankWonderNews(); - gSaveBlock1Ptr->mysteryEventBuffers.menews.data = *src; - gSaveBlock1Ptr->mysteryEventBuffers.menews.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data, sizeof(struct MEWonderNewsData)); + gSaveBlock1Ptr->mysteryGift.news = *src; + gSaveBlock1Ptr->mysteryGift.newsCrc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryGift.news, sizeof(struct WonderNews)); return TRUE; } bool32 ValidateReceivedWonderNews(void) { - if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data, sizeof(struct MEWonderNewsData)) != gSaveBlock1Ptr->mysteryEventBuffers.menews.crc) + if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryGift.news, sizeof(struct WonderNews)) != gSaveBlock1Ptr->mysteryGift.newsCrc) return FALSE; - if (!IsReceivedWonderNewsHeaderValid(&gSaveBlock1Ptr->mysteryEventBuffers.menews.data)) + if (!IsReceivedWonderNewsHeaderValid(&gSaveBlock1Ptr->mysteryGift.news)) return FALSE; return TRUE; } -static bool32 IsReceivedWonderNewsHeaderValid(const struct MEWonderNewsData * data) +static bool32 IsReceivedWonderNewsHeaderValid(const struct WonderNews * data) { if (data->newsId == 0) return FALSE; @@ -540,31 +540,31 @@ static bool32 IsReceivedWonderNewsHeaderValid(const struct MEWonderNewsData * da bool32 WonderNews_Test_Unk_02(void) { - const struct MEWonderNewsData * data = &gSaveBlock1Ptr->mysteryEventBuffers.menews.data; - if (data->shareState == 0) + const struct WonderNews * data = &gSaveBlock1Ptr->mysteryGift.news; + if (data->sendType == 0) return FALSE; return TRUE; } static void BlankWonderNews(void) { - CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->mysteryEventBuffers.menews.data)); - gSaveBlock1Ptr->mysteryEventBuffers.menews.crc = 0; + CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->mysteryGift.news)); + gSaveBlock1Ptr->mysteryGift.newsCrc = 0; } static void BlankMENewsJisan(void) { - CpuFill32(0, GetMENewsJisanStructPtr(), sizeof(struct MENewsJisanStruct)); + CpuFill32(0, GetMENewsJisanStructPtr(), sizeof(struct WonderNewsMetadata)); MENewsJisanReset(); } bool32 MEvent_HaveAlreadyReceivedWonderNews(const u8 * src) { - const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data; + const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->mysteryGift.news; u32 i; if (!ValidateReceivedWonderNews()) return FALSE; - for (i = 0; i < sizeof(struct MEWonderNewsData); i++) + for (i = 0; i < sizeof(struct WonderNews); i++) { if (r5[i] != src[i]) return FALSE; @@ -583,79 +583,79 @@ void DestroyWonderCard(void) ClearEReaderTrainer(&gSaveBlock2Ptr->battleTower.ereaderTrainer); } -bool32 OverwriteSavedWonderCardWithReceivedCard(const struct MEWonderCardData * data) +bool32 OverwriteSavedWonderCardWithReceivedCard(const struct WonderCard * data) { - struct MEventBuffer_3430_Sub * r2; - struct MEWonderCardData * r1; + struct WonderCardMetadata * r2; + struct WonderCard * r1; if (!IsReceivedWonderCardHeaderValid(data)) return FALSE; DestroyWonderCard(); - memcpy(&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, data, sizeof(struct MEWonderCardData)); - gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData)); + memcpy(&gSaveBlock1Ptr->mysteryGift.card, data, sizeof(struct WonderCard)); + gSaveBlock1Ptr->mysteryGift.cardCrc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryGift.card, sizeof(struct WonderCard)); // Annoying hack to match - r2 = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data; - r1 = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - r2->unk_06 = r1->unk_02; + r2 = &gSaveBlock1Ptr->mysteryGift.cardMetadata; + r1 = &gSaveBlock1Ptr->mysteryGift.card; + r2->iconSpecies = r1->iconSpecies; return TRUE; } bool32 ValidateReceivedWonderCard(void) { - if (gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData))) + if (gSaveBlock1Ptr->mysteryGift.cardCrc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryGift.card, sizeof(struct WonderCard))) return FALSE; - if (!IsReceivedWonderCardHeaderValid(&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data)) + if (!IsReceivedWonderCardHeaderValid(&gSaveBlock1Ptr->mysteryGift.card)) return FALSE; if (!ValidateRamScript()) return FALSE; return TRUE; } -static bool32 IsReceivedWonderCardHeaderValid(const struct MEWonderCardData * data) +static bool32 IsReceivedWonderCardHeaderValid(const struct WonderCard * data) { - if (data->cardId == 0) + if (data->flagId == 0) return FALSE; - if (data->unk_08_0 > 2) + if (data->type > 2) return FALSE; - if (!(data->shareState == 0 || data->shareState == 1 || data->shareState == 2)) + if (!(data->sendType == 0 || data->sendType == 1 || data->sendType == 2)) return FALSE; - if (data->unk_08_2 > 7) + if (data->bgType > 7) return FALSE; - if (data->recvMonCapacity > 7) + if (data->maxStamps > 7) return FALSE; return TRUE; } bool32 WonderCard_Test_Unk_08_6(void) { - const struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->shareState == 0) + const struct WonderCard * data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->sendType == 0) return FALSE; return TRUE; } static void BlankSavedWonderCard(void) { - CpuFill32(0, &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData)); - gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc = 0; + CpuFill32(0, &gSaveBlock1Ptr->mysteryGift.card, sizeof(struct WonderCard)); + gSaveBlock1Ptr->mysteryGift.cardCrc = 0; } static void BlankMEventBuffer2(void) { CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16)); - gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.crc = 0; + gSaveBlock1Ptr->mysteryGift.cardMetadataCrc = 0; } u16 GetWonderCardFlagId(void) { if (ValidateReceivedWonderCard()) - return gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.cardId; + return gSaveBlock1Ptr->mysteryGift.card.flagId; return 0; } -void MEvent_WonderCardResetUnk08_6(struct MEWonderCardData * buffer) +void MEvent_WonderCardResetUnk08_6(struct WonderCard * buffer) { - if (buffer->shareState == 1) - buffer->shareState = 0; + if (buffer->sendType == 1) + buffer->sendType = 0; } static bool32 IsCardIdInValidRange(u16 a0) @@ -675,26 +675,26 @@ bool32 CheckReceivedGiftFromWonderCard(void) return TRUE; } -static s32 CountReceivedDistributionMons(const struct MEventBuffer_3430_Sub * data, s32 size) +static s32 CountReceivedDistributionMons(const struct WonderCardMetadata * data, s32 size) { s32 r3 = 0; s32 i; for (i = 0; i < size; i++) { - if (data->distributedMons[1][i] && data->distributedMons[0][i]) + if (data->stampData[1][i] && data->stampData[0][i]) r3++; } return r3; } -static bool32 HasPlayerAlreadyReceivedDistributedMon(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size) +static bool32 HasPlayerAlreadyReceivedDistributedMon(const struct WonderCardMetadata * data1, const u16 * data2, s32 size) { s32 i; for (i = 0; i < size; i++) { - if (data1->distributedMons[1][i] == data2[1]) + if (data1->stampData[1][i] == data2[1]) return TRUE; - if (data1->distributedMons[0][i] == data2[0]) + if (data1->stampData[0][i] == data2[0]) return TRUE; } return FALSE; @@ -713,30 +713,30 @@ static bool32 IsWonderCardSpeciesValid(const u16 * data) static s32 ValidateCardAndCountMonsReceived(void) { - struct MEWonderCardData * data; + struct WonderCard * data; if (!ValidateReceivedWonderCard()) return 0; - data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->unk_08_0 != 1) + data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->type != 1) return 0; - return CountReceivedDistributionMons(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data->recvMonCapacity); + return CountReceivedDistributionMons(&gSaveBlock1Ptr->mysteryGift.cardMetadata, data->maxStamps); } bool32 MEvent_ReceiveDistributionMon(const u16 * data) { - struct MEWonderCardData * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - s32 capacity = buffer->recvMonCapacity; + struct WonderCard * buffer = &gSaveBlock1Ptr->mysteryGift.card; + s32 capacity = buffer->maxStamps; s32 i; if (!IsWonderCardSpeciesValid(data)) return FALSE; - if (HasPlayerAlreadyReceivedDistributedMon(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data, capacity)) + if (HasPlayerAlreadyReceivedDistributedMon(&gSaveBlock1Ptr->mysteryGift.cardMetadata, data, capacity)) return FALSE; for (i = 0; i < capacity; i++) { - if (gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[1][i] == 0 && gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[0][i] == 0) + if (gSaveBlock1Ptr->mysteryGift.cardMetadata.stampData[1][i] == 0 && gSaveBlock1Ptr->mysteryGift.cardMetadata.stampData[0][i] == 0) { - gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[1][i] = data[1]; - gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.distributedMons[0][i] = data[0]; + gSaveBlock1Ptr->mysteryGift.cardMetadata.stampData[1][i] = data[1]; + gSaveBlock1Ptr->mysteryGift.cardMetadata.stampData[0][i] = data[0]; return TRUE; } } @@ -764,16 +764,16 @@ void BuildMEventClientHeader(struct MEventClientHeaderStruct * data) if (ValidateReceivedWonderCard()) { // Populate fields - data->id = GetSavedWonderCard()->cardId; + data->id = GetSavedWonderCard()->flagId; data->unk_20 = *sav1_get_mevent_buffer_2(); - data->maxDistributionMons = GetSavedWonderCard()->recvMonCapacity; + data->maxDistributionMons = GetSavedWonderCard()->maxStamps; } else data->id = 0; // Get something for (i = 0; i < 4; i++) - data->unk_16[i] = gSaveBlock1Ptr->mysteryEventBuffers.ec_profile_maybe[i]; + data->unk_16[i] = gSaveBlock1Ptr->mysteryGift.questionnaireWords[i]; // Get player ID CopyTrainerId(data->playerTrainerId, gSaveBlock2Ptr->playerTrainerId); @@ -841,11 +841,11 @@ u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command) switch (command) { case 0: - return a0->unk_20.linkWins; + return a0->unk_20.battlesWon; case 1: - return a0->unk_20.linkLosses; + return a0->unk_20.battlesLost; case 2: - return a0->unk_20.linkTrades; + return a0->unk_20.numTrades; case 3: return GetNumReceivedDistributionMons(a0); case 4: @@ -859,20 +859,20 @@ u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command) // Increments an interaction count in the save block static void IncrementBattleCardCount(u32 command) { - struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->unk_08_0 == 2) + struct WonderCard * data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->type == 2) { u16 * dest = NULL; switch (command) { case 0: - dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.linkWins; + dest = &gSaveBlock1Ptr->mysteryGift.cardMetadata.battlesWon; break; case 1: - dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.linkLosses; + dest = &gSaveBlock1Ptr->mysteryGift.cardMetadata.battlesLost; break; case 2: - dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.linkTrades; + dest = &gSaveBlock1Ptr->mysteryGift.cardMetadata.numTrades; break; case 3: break; @@ -896,46 +896,46 @@ u16 MEvent_GetBattleCardCount(u32 command) { case 0: { - struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->unk_08_0 == 2) + struct WonderCard * data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->type == 2) { - struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data; - return buffer->linkWins; + struct WonderCardMetadata * buffer = &gSaveBlock1Ptr->mysteryGift.cardMetadata; + return buffer->battlesWon; } break; } case 1: { - struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->unk_08_0 == 2) + struct WonderCard * data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->type == 2) { - struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data; - return buffer->linkLosses; + struct WonderCardMetadata * buffer = &gSaveBlock1Ptr->mysteryGift.cardMetadata; + return buffer->battlesLost; } break; } case 2: { - struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->unk_08_0 == 2) + struct WonderCard * data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->type == 2) { - struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data; - return buffer->linkTrades; + struct WonderCardMetadata * buffer = &gSaveBlock1Ptr->mysteryGift.cardMetadata; + return buffer->numTrades; } break; } case 3: { - struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->unk_08_0 == 1) + struct WonderCard * data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->type == 1) return ValidateCardAndCountMonsReceived(); break; } case 4: { - struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data; - if (data->unk_08_0 == 1) - return data->recvMonCapacity; + struct WonderCard * data = &gSaveBlock1Ptr->mysteryGift.card; + if (data->type == 1) + return data->maxStamps; break; } } @@ -948,14 +948,14 @@ void ResetReceivedWonderCardFlag(void) sReceivedWonderCardIsValid = FALSE; } -bool32 MEventHandleReceivedWonderCard(u16 cardId) +bool32 MEventHandleReceivedWonderCard(u16 flagId) { sReceivedWonderCardIsValid = FALSE; - if (cardId == 0) + if (flagId == 0) return FALSE; if (!ValidateReceivedWonderCard()) return FALSE; - if (gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.cardId != cardId) + if (gSaveBlock1Ptr->mysteryGift.card.flagId != flagId) return FALSE; sReceivedWonderCardIsValid = TRUE; return TRUE; @@ -968,13 +968,13 @@ void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId) switch (eventId) { case 2: // trade - RecordIdOfWonderCardSender(2, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[1], 5); + RecordIdOfWonderCardSender(2, trainerId, gSaveBlock1Ptr->mysteryGift.trainerIds[1], 5); break; case 0: // link win - RecordIdOfWonderCardSender(0, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5); + RecordIdOfWonderCardSender(0, trainerId, gSaveBlock1Ptr->mysteryGift.trainerIds[0], 5); break; case 1: // link loss - RecordIdOfWonderCardSender(1, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5); + RecordIdOfWonderCardSender(1, trainerId, gSaveBlock1Ptr->mysteryGift.trainerIds[0], 5); break; default: AGB_ASSERT_EX(0, ABSPATH("mevent.c"), 988); @@ -984,7 +984,7 @@ void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId) static void BlankBuffer344(void) { - CpuFill32(0, gSaveBlock1Ptr->mysteryEventBuffers.unk_344, sizeof(gSaveBlock1Ptr->mysteryEventBuffers.unk_344)); + CpuFill32(0, gSaveBlock1Ptr->mysteryGift.trainerIds, sizeof(gSaveBlock1Ptr->mysteryGift.trainerIds)); } // Looks up trainerId in an array idsList with count elements. diff --git a/src/mevent_server.c b/src/mevent_server.c index 4a6e6a19c..ea639314c 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -45,8 +45,8 @@ static void mevent_srv_init_common(struct mevent_srv_common * svr, const void * { svr->unk_00 = 0; svr->mainseqno = 0; - svr->card = AllocZeroed(sizeof(struct MEWonderCardData)); - svr->news = AllocZeroed(sizeof(struct MEWonderNewsData)); + svr->card = AllocZeroed(sizeof(struct WonderCard)); + svr->news = AllocZeroed(sizeof(struct WonderNews)); svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE); svr->mevent_unk1442cc = AllocZeroed(sizeof(struct MEventClientHeaderStruct)); svr->cmdBuffer = cmdBuffer; @@ -188,11 +188,11 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr) break; case 14: AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 432); - mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->news), sizeof(struct MEWonderNewsData)); + mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->news), sizeof(struct WonderNews)); break; case 13: AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 438); - mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->card), sizeof(struct MEWonderCardData)); + mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->card), sizeof(struct WonderCard)); break; case 16: AGB_ASSERT_EX(cmd->flag == FALSE, ABSPATH("mevent_server.c"), 444); diff --git a/src/mevent_show_card.c b/src/mevent_show_card.c index 86864dc4a..404aba87d 100644 --- a/src/mevent_show_card.c +++ b/src/mevent_show_card.c @@ -17,8 +17,8 @@ struct MEventScreenMgr_02DC struct MEventScreenMgr { - /*0000*/ struct MEWonderCardData wonderCard; - /*014c*/ struct MEventBuffer_3430_Sub buff3430Sub; + /*0000*/ struct WonderCard wonderCard; + /*014c*/ struct WonderCardMetadata buff3430Sub; /*0170*/ const struct UnkStruct_8467FB8 * bgSpec; /*0174*/ u8 state; /*0175*/ u8 recordIdx; @@ -134,7 +134,7 @@ static const struct UnkStruct_8467FB8 sCardGfxPtrs[8] = { {1, 0, 0, 7, sCard7Gfx, sCard7Map, sCard7Pal} }; -bool32 InitWonderCardResources(struct MEWonderCardData * card, struct MEventBuffer_3430_Sub * b3430sub) +bool32 InitWonderCardResources(struct WonderCard * card, struct WonderCardMetadata * b3430sub) { if (card == NULL || b3430sub == NULL) return FALSE; @@ -143,13 +143,13 @@ bool32 InitWonderCardResources(struct MEWonderCardData * card, struct MEventBuff return FALSE; sMEventScreenData->wonderCard = *card; sMEventScreenData->buff3430Sub = *b3430sub; - if (sMEventScreenData->wonderCard.unk_08_2 >= NELEMS(sCardGfxPtrs)) - sMEventScreenData->wonderCard.unk_08_2 = 0; - if (sMEventScreenData->wonderCard.unk_08_0 >= NELEMS(sTextYCoords)) - sMEventScreenData->wonderCard.unk_08_0 = 0; - if (sMEventScreenData->wonderCard.recvMonCapacity > NELEMS(sMEventScreenData->cardIconAndShadowSprites)) - sMEventScreenData->wonderCard.recvMonCapacity = 0; - sMEventScreenData->bgSpec = &sCardGfxPtrs[sMEventScreenData->wonderCard.unk_08_2]; + if (sMEventScreenData->wonderCard.bgType >= NELEMS(sCardGfxPtrs)) + sMEventScreenData->wonderCard.bgType = 0; + if (sMEventScreenData->wonderCard.type >= NELEMS(sTextYCoords)) + sMEventScreenData->wonderCard.type = 0; + if (sMEventScreenData->wonderCard.maxStamps > NELEMS(sMEventScreenData->cardIconAndShadowSprites)) + sMEventScreenData->wonderCard.maxStamps = 0; + sMEventScreenData->bgSpec = &sCardGfxPtrs[sMEventScreenData->wonderCard.bgType]; return TRUE; } @@ -282,24 +282,24 @@ static void sub_8145A98(void) u16 r6; u16 sp0[3] = {0, 0, 0}; - memcpy(sMEventScreenData->title, sMEventScreenData->wonderCard.unk_0A, 40); + memcpy(sMEventScreenData->title, sMEventScreenData->wonderCard.titleText, 40); sMEventScreenData->title[40] = EOS; - memcpy(sMEventScreenData->subtitle, sMEventScreenData->wonderCard.unk_32, 40); + memcpy(sMEventScreenData->subtitle, sMEventScreenData->wonderCard.subtitleText, 40); sMEventScreenData->subtitle[40] = EOS; - if (sMEventScreenData->wonderCard.unk_04 > 999999) - sMEventScreenData->wonderCard.unk_04 = 999999; - ConvertIntToDecimalStringN(sMEventScreenData->unk_01DD, sMEventScreenData->wonderCard.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6); + if (sMEventScreenData->wonderCard.idNumber > 999999) + sMEventScreenData->wonderCard.idNumber = 999999; + ConvertIntToDecimalStringN(sMEventScreenData->unk_01DD, sMEventScreenData->wonderCard.idNumber, STR_CONV_MODE_LEFT_ALIGN, 6); for (i = 0; i < 4; i++) { - memcpy(sMEventScreenData->mainMessageLines[i], sMEventScreenData->wonderCard.unk_5A[i], 40); + memcpy(sMEventScreenData->mainMessageLines[i], sMEventScreenData->wonderCard.bodyText[i], 40); sMEventScreenData->mainMessageLines[i][40] = EOS; } - memcpy(sMEventScreenData->instructionsLine1, sMEventScreenData->wonderCard.unk_FA, 40); + memcpy(sMEventScreenData->instructionsLine1, sMEventScreenData->wonderCard.footerLine1Text, 40); sMEventScreenData->instructionsLine1[40] = EOS; - switch (sMEventScreenData->wonderCard.unk_08_0) + switch (sMEventScreenData->wonderCard.type) { case 0: - memcpy(sMEventScreenData->instructionsLine2, sMEventScreenData->wonderCard.unk_122, 40); + memcpy(sMEventScreenData->instructionsLine2, sMEventScreenData->wonderCard.footerLine2Text, 40); sMEventScreenData->instructionsLine2[40] = EOS; break; case 1: @@ -307,9 +307,9 @@ static void sub_8145A98(void) break; case 2: sMEventScreenData->instructionsLine2[00] = EOS; - sp0[0] = sMEventScreenData->buff3430Sub.linkWins < 999 ? sMEventScreenData->buff3430Sub.linkWins : 999; - sp0[1] = sMEventScreenData->buff3430Sub.linkLosses < 999 ? sMEventScreenData->buff3430Sub.linkLosses : 999; - sp0[2] = sMEventScreenData->buff3430Sub.linkTrades < 999 ? sMEventScreenData->buff3430Sub.linkTrades : 999; + sp0[0] = sMEventScreenData->buff3430Sub.battlesWon < 999 ? sMEventScreenData->buff3430Sub.battlesWon : 999; + sp0[1] = sMEventScreenData->buff3430Sub.battlesLost < 999 ? sMEventScreenData->buff3430Sub.battlesLost : 999; + sp0[2] = sMEventScreenData->buff3430Sub.numTrades < 999 ? sMEventScreenData->buff3430Sub.numTrades : 999; for (i = 0; i < 8; i++) { memset(sMEventScreenData->recordStrings[i].numberTxt, EOS, 4); @@ -317,14 +317,14 @@ static void sub_8145A98(void) } for (i = 0, r6 = 0; i < 40; i++) { - if (sMEventScreenData->wonderCard.unk_122[i] != CHAR_DYNAMIC_PLACEHOLDER) + if (sMEventScreenData->wonderCard.footerLine2Text[i] != CHAR_DYNAMIC_PLACEHOLDER) { - sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nameTxt[r6] = sMEventScreenData->wonderCard.unk_122[i]; + sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nameTxt[r6] = sMEventScreenData->wonderCard.footerLine2Text[i]; r6++; } else { - u8 r3 = sMEventScreenData->wonderCard.unk_122[i + 1]; + u8 r3 = sMEventScreenData->wonderCard.footerLine2Text[i + 1]; if (r3 > 2) { i += 2; @@ -332,7 +332,7 @@ static void sub_8145A98(void) else { ConvertIntToDecimalStringN(sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].numberTxt, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3); - sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nDigits = sMEventScreenData->wonderCard.unk_122[i + 2]; + sMEventScreenData->recordStrings[sMEventScreenData->recordIdx].nDigits = sMEventScreenData->wonderCard.footerLine2Text[i + 2]; sMEventScreenData->recordIdx++; if (sMEventScreenData->recordIdx > 7) break; @@ -360,7 +360,7 @@ static void sub_8145D18(u8 whichWindow) if (x < 0) x = 0; AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_8467068[sMEventScreenData->bgSpec->textPal1], 0, sMEventScreenData->subtitle); - if (sMEventScreenData->wonderCard.unk_04 != 0) + if (sMEventScreenData->wonderCard.idNumber != 0) { AddTextPrinterParameterized3(windowId, 2, 166, 17, gUnknown_8467068[sMEventScreenData->bgSpec->textPal1], 0, sMEventScreenData->unk_01DD); } @@ -373,15 +373,15 @@ static void sub_8145D18(u8 whichWindow) } break; case 2: - AddTextPrinterParameterized3(windowId, 3, 0, sTextYCoords[sMEventScreenData->wonderCard.unk_08_0], gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->instructionsLine1); - if (sMEventScreenData->wonderCard.unk_08_0 != 2) + AddTextPrinterParameterized3(windowId, 3, 0, sTextYCoords[sMEventScreenData->wonderCard.type], gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->instructionsLine1); + if (sMEventScreenData->wonderCard.type != 2) { - AddTextPrinterParameterized3(windowId, 3, 0, 16 + sTextYCoords[sMEventScreenData->wonderCard.unk_08_0], gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->instructionsLine2); + AddTextPrinterParameterized3(windowId, 3, 0, 16 + sTextYCoords[sMEventScreenData->wonderCard.type], gUnknown_8467068[sMEventScreenData->bgSpec->textPal3], 0, sMEventScreenData->instructionsLine2); } else { s32 x = 0; - s32 y = sTextYCoords[sMEventScreenData->wonderCard.unk_08_0] + 16; + s32 y = sTextYCoords[sMEventScreenData->wonderCard.type] + 16; s32 spacing = GetFontAttribute(3, 2); for (; sp0C < sMEventScreenData->recordIdx; sp0C++) { @@ -403,23 +403,23 @@ static void sub_8146060(void) { u8 r7 = 0; sMEventScreenData->monIconId = 0xFF; - if (sMEventScreenData->buff3430Sub.unk_06 != SPECIES_NONE) + if (sMEventScreenData->buff3430Sub.iconSpecies != SPECIES_NONE) { - sMEventScreenData->monIconId = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(sMEventScreenData->buff3430Sub.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE); + sMEventScreenData->monIconId = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(sMEventScreenData->buff3430Sub.iconSpecies), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE); gSprites[sMEventScreenData->monIconId].oam.priority = 2; } - if (sMEventScreenData->wonderCard.recvMonCapacity != 0 && sMEventScreenData->wonderCard.unk_08_0 == 1) + if (sMEventScreenData->wonderCard.maxStamps != 0 && sMEventScreenData->wonderCard.type == 1) { LoadCompressedSpriteSheetUsingHeap(&sShadowSpriteSheet); LoadSpritePalette(&sShadowSpritePalettes[sMEventScreenData->bgSpec->index]); - for (; r7 < sMEventScreenData->wonderCard.recvMonCapacity; r7++) + for (; r7 < sMEventScreenData->wonderCard.maxStamps; r7++) { sMEventScreenData->cardIconAndShadowSprites[r7][0] = 0xFF; sMEventScreenData->cardIconAndShadowSprites[r7][1] = 0xFF; sMEventScreenData->cardIconAndShadowSprites[r7][0] = CreateSprite(&sShadowSpriteTemplate, 0xd8 - 32 * r7, 0x90, 8); - if (sMEventScreenData->buff3430Sub.distributedMons[0][r7] != 0) + if (sMEventScreenData->buff3430Sub.stampData[0][r7] != 0) { - sMEventScreenData->cardIconAndShadowSprites[r7][1] = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(sMEventScreenData->buff3430Sub.distributedMons[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0); + sMEventScreenData->cardIconAndShadowSprites[r7][1] = CreateMonIcon_HandleDeoxys(MailSpeciesToIconSpecies(sMEventScreenData->buff3430Sub.stampData[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0); gSprites[sMEventScreenData->cardIconAndShadowSprites[r7][1]].oam.priority = 2; } } @@ -431,9 +431,9 @@ static void sub_81461D8(void) u8 r6 = 0; if (sMEventScreenData->monIconId != 0xFF) DestroyMonIcon(&gSprites[sMEventScreenData->monIconId]); - if (sMEventScreenData->wonderCard.recvMonCapacity != 0 && sMEventScreenData->wonderCard.unk_08_0 == 1) + if (sMEventScreenData->wonderCard.maxStamps != 0 && sMEventScreenData->wonderCard.type == 1) { - for (; r6 < sMEventScreenData->wonderCard.recvMonCapacity; r6++) + for (; r6 < sMEventScreenData->wonderCard.maxStamps; r6++) { if (sMEventScreenData->cardIconAndShadowSprites[r6][0] != 0xFF) { diff --git a/src/mevent_show_news.c b/src/mevent_show_news.c index df03e8aa2..cb7ff9dbd 100644 --- a/src/mevent_show_news.c +++ b/src/mevent_show_news.c @@ -9,7 +9,7 @@ struct UnkStruct_203F3CC { - /*0000*/ struct MEWonderNewsData wonderNews; + /*0000*/ struct WonderNews wonderNews; /*01bc*/ const struct UnkStruct_8467FB8 * bgSpec; /*01c0*/ u8 verticalScrollDisabled:1; u8 state:7; @@ -72,7 +72,7 @@ static const struct UnkStruct_8467FB8 sBgSpecs[] = { {1, 0, 0, 0, sNews7Gfx, sNews7Map, sNews7Pal} }; -bool32 InitWonderNewsResources(const struct MEWonderNewsData * news) +bool32 InitWonderNewsResources(const struct WonderNews * news) { if (news == NULL) return FALSE; @@ -80,9 +80,9 @@ bool32 InitWonderNewsResources(const struct MEWonderNewsData * news) if (sWork == NULL) return FALSE; sWork->wonderNews = *news; - if (sWork->wonderNews.unk_03 >= NELEMS(sBgSpecs)) - sWork->wonderNews.unk_03 = 0; - sWork->bgSpec = &sBgSpecs[sWork->wonderNews.unk_03]; + if (sWork->wonderNews.bgType >= NELEMS(sBgSpecs)) + sWork->wonderNews.bgType = 0; + sWork->bgSpec = &sBgSpecs[sWork->wonderNews.bgType]; sWork->menuIndicatorsId = 0xFF; return TRUE; } @@ -297,11 +297,11 @@ u32 MENews_GetInput(u16 input) static void sub_8146980(void) { u8 i = 0; - memcpy(sWork->title, sWork->wonderNews.unk_04, 40); + memcpy(sWork->title, sWork->wonderNews.titleText, 40); sWork->title[40] = EOS; for (; i < 10; ++i) { - memcpy(sWork->messages[i], sWork->wonderNews.unk_2C[i], 40); + memcpy(sWork->messages[i], sWork->wonderNews.bodyText[i], 40); sWork->messages[i][40] = EOS; if (i > 7 && sWork->messages[i][0] != EOS) ++sWork->numMails; diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index b959821d7..06c1c9bbf 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -233,7 +233,7 @@ bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx) bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) { - struct MailStruct mail; + struct Mail mail; struct Pokemon pokemon; u16 species; u16 heldItem; @@ -257,7 +257,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) else { memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon)); - memcpy(&mail, mailPtr, sizeof(struct MailStruct)); + memcpy(&mail, mailPtr, sizeof(struct Mail)); if (species != SPECIES_EGG) { diff --git a/src/naming_screen.c b/src/naming_screen.c index b6ee8a88a..b0f267c8c 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -2003,7 +2003,7 @@ static const struct NamingScreenTemplate sMonNamingScreenTemplate = { static const struct NamingScreenTemplate sRivalNamingScreenTemplate = { .copyExistingString = FALSE, - .maxChars = OT_NAME_LENGTH, + .maxChars = PLAYER_NAME_LENGTH, .iconFunction = 4, .addGenderIcon = 0, .initialPage = KBPAGE_LETTERS_UPPER, diff --git a/src/new_game.c b/src/new_game.c index 2797b81c2..d570e3886 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -118,8 +118,8 @@ void NewGameInitData(void) ClearMailData(); gSaveBlock2Ptr->specialSaveWarpFlags = 0; gSaveBlock2Ptr->gcnLinkFlags = 0; - gSaveBlock2Ptr->field_AC = 1; - gSaveBlock2Ptr->field_AD = 0; + gSaveBlock2Ptr->unkFlag1 = TRUE; + gSaveBlock2Ptr->unkFlag2 = FALSE; InitPlayerTrainerId(); PlayTimeCounter_Reset(); ClearPokedexFlags(); diff --git a/src/overworld.c b/src/overworld.c index 6311bc5d3..cb5507b4c 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1675,7 +1675,7 @@ void CB2_ReturnToFieldFromDiploma(void) static void FieldCB_ShowMapNameOnContinue(void) { - if (SHOW_MAP_NAME_ENABLED) + if (gMapHeader.showMapName == TRUE) ShowMapNamePopup(FALSE); FieldCB_WarpExitFadeFromBlack(); } @@ -1909,7 +1909,7 @@ static bool32 load_map_stuff(u8 *state, bool32 a1) MapPreview_LoadGfx(gMapHeader.regionMapSectionId); MapPreview_StartForestTransition(gMapHeader.regionMapSectionId); } - else if (SHOW_MAP_NAME_ENABLED) + else if (gMapHeader.showMapName == TRUE) { ShowMapNamePopup(FALSE); } diff --git a/src/party_menu.c b/src/party_menu.c index 5ff990d07..56ea1fa34 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5662,7 +5662,7 @@ void ChooseMonToGiveMailFromMailbox(void) static void TryGiveMailToSelectedMon(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; - struct MailStruct *mail; + struct Mail *mail; gPartyMenuUseExitCallback = FALSE; mail = &gSaveBlock1Ptr->mail[gPlayerPcMenuManager.cursorPos + 6 + gPlayerPcMenuManager.itemsAbove]; diff --git a/src/player_pc.c b/src/player_pc.c index 7df276e92..3f5b4dbe6 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -442,7 +442,7 @@ static void PCMailCompaction(void) { if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE) { - struct MailStruct mail = gSaveBlock1Ptr->mail[i]; + struct Mail mail = gSaveBlock1Ptr->mail[i]; gSaveBlock1Ptr->mail[i] = gSaveBlock1Ptr->mail[j]; gSaveBlock1Ptr->mail[j] = mail; } @@ -629,7 +629,7 @@ static void Task_MoveToBagYesNoMenuHandleInput(u8 taskId) static void Task_TryPutMailInBag_DestroyMsgIfSuccessful(u8 taskId) { - struct MailStruct * mail = &SELECTED_MAIL; + struct Mail * mail = &SELECTED_MAIL; if (!AddBagItem(mail->itemId, 1)) { DisplayItemMessageOnField(taskId, 2, gText_BagIsFull, Task_PlayerPcExitMailSubmenu); diff --git a/src/pokemon.c b/src/pokemon.c index 6e43aff85..0bbb9f81e 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -36,12 +36,6 @@ #include "constants/hold_effects.h" #include "constants/battle_move_effects.h" -// Extracts the upper 16 bits of a 32-bit number -#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) - -// Extracts the lower 16 bits of a 32-bit number -#define LOHALF(n) ((n) & 0xFFFF) - #define SPECIES_TO_HOENN(name) [SPECIES_##name - 1] = HOENN_DEX_##name #define SPECIES_TO_NATIONAL(name) [SPECIES_##name - 1] = NATIONAL_DEX_##name #define HOENN_TO_NATIONAL(name) [HOENN_DEX_##name - 1] = NATIONAL_DEX_##name diff --git a/src/pokemon_jump_6.c b/src/pokemon_jump_6.c index 575c5c8a1..1266a0f75 100644 --- a/src/pokemon_jump_6.c +++ b/src/pokemon_jump_6.c @@ -10,25 +10,25 @@ static void Task_ShowPokemonJumpRecords(u8 taskId); static void TruncateToFirstWordOnly(u8 *str); static void sub_814B5C4(u16 windowId); -static struct PokemonJumpResults *sub_814B46C(void) +static struct PokemonJumpRecords *sub_814B46C(void) { return &gSaveBlock2Ptr->pokeJump; } void ResetPokeJumpResults(void) { - struct PokemonJumpResults *pokeJump = sub_814B46C(); + struct PokemonJumpRecords *pokeJump = sub_814B46C(); pokeJump->jumpsInRow = 0; pokeJump->bestJumpScore = 0; pokeJump->excellentsInRow = 0; - pokeJump->field6 = 0; - pokeJump->field8 = 0; - pokeJump->field2 = 0; + pokeJump->gamesWithMaxPlayers = 0; + pokeJump->unused2 = 0; + pokeJump->unused1 = 0; } bool32 sub_814B494(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow) { - struct PokemonJumpResults *pokeJump = sub_814B46C(); + struct PokemonJumpRecords *pokeJump = sub_814B46C(); bool32 ret = FALSE; if (pokeJump->bestJumpScore < jumpScore && jumpScore <= 99990) @@ -43,9 +43,9 @@ bool32 sub_814B494(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow) void sub_814B4E8(void) { - struct PokemonJumpResults *pokeJump = sub_814B46C(); - if (pokeJump->field6 < 9999) - pokeJump->field6++; + struct PokemonJumpRecords *pokeJump = sub_814B46C(); + if (pokeJump->gamesWithMaxPlayers < 9999) + pokeJump->gamesWithMaxPlayers++; } void ShowPokemonJumpRecords(void) @@ -106,7 +106,7 @@ static void sub_814B5C4(u16 windowId) { int i, x; int results[3]; - struct PokemonJumpResults *pokeJump = sub_814B46C(); + struct PokemonJumpRecords *pokeJump = sub_814B46C(); u8 strbuf[8]; results[0] = pokeJump->jumpsInRow; results[1] = pokeJump->bestJumpScore; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 720366cfc..0635d984d 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2126,7 +2126,7 @@ static void BufferMonInfo(void) StringCopy(sMonSummaryScreen->summary.genderSymbolStrBuf, gString_Dummy); GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_OT_NAME, tempStr); - StringCopyN_Multibyte(sMonSummaryScreen->summary.otNameStrBuf, tempStr, OT_NAME_LENGTH); + StringCopyN_Multibyte(sMonSummaryScreen->summary.otNameStrBuf, tempStr, PLAYER_NAME_LENGTH); ConvertInternationalString(sMonSummaryScreen->summary.otNameStrBuf, GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_LANGUAGE)); diff --git a/src/trade.c b/src/trade.c index d3a395f05..a406d87d9 100644 --- a/src/trade.c +++ b/src/trade.c @@ -79,7 +79,7 @@ enum TradeStatusMsg static EWRAM_DATA u8 *sSpriteTextTileBuffer = NULL; static EWRAM_DATA u8 *sSpriteTextTilePtrs[14] = {}; -EWRAM_DATA struct MailStruct gLinkPartnerMail[6] = {}; +EWRAM_DATA struct Mail gLinkPartnerMail[6] = {}; EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0}; static EWRAM_DATA struct TradeMenuResources * sTradeMenuResourcesPtr = NULL; @@ -119,7 +119,7 @@ static const size_t sSizesAndOffsets[] = { sizeof(struct MapLayout), 0x530, // unk 0x34, // unk - sizeof(struct MailStruct), + sizeof(struct Mail), sizeof(struct Pokemon), 0x528 // unk }; @@ -1398,7 +1398,7 @@ static bool8 shedinja_maker_maybe(void) } break; case 13: - Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, PARTY_SIZE * sizeof(struct MailStruct) + 4); // why the extra 4 bytes? + Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, PARTY_SIZE * sizeof(struct Mail) + 4); // why the extra 4 bytes? sTradeMenuResourcesPtr->state++; break; case 15: @@ -1411,7 +1411,7 @@ static bool8 shedinja_maker_maybe(void) case 16: if (GetBlockReceivedStatus() == 3) { - Trade_Memcpy(gLinkPartnerMail, gBlockRecvBuffer[id ^ 1], PARTY_SIZE * sizeof(struct MailStruct)); + Trade_Memcpy(gLinkPartnerMail, gBlockRecvBuffer[id ^ 1], PARTY_SIZE * sizeof(struct Mail)); ResetBlockReceivedFlags(); sTradeMenuResourcesPtr->state++; } diff --git a/src/trade_scene.c b/src/trade_scene.c index 9c644dc8c..73ebf54c3 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -131,7 +131,7 @@ static void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite); static void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite); static void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite); static void BufferInGameTradeMonName(void); -static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade); +static void GetInGameTradeMail(struct Mail * mail, const struct InGameTrade * inGameTrade); static void CB2_RunTradeAnim_LinkTrade(void); static void CB2_WaitAndAckTradeComplete(void); static void CB2_HandleTradeEnded(void); @@ -2432,7 +2432,7 @@ static void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx) { const struct InGameTrade * inGameTrade = &sInGameTrades[inGameTradeIdx]; u8 level = GetMonData(&gPlayerParty[playerSlot], MON_DATA_LEVEL); - struct MailStruct mail; + struct Mail mail; u8 metLocation = METLOC_IN_GAME_TRADE; struct Pokemon * tradeMon = &gEnemyParty[0]; u8 mailNum; @@ -2472,7 +2472,7 @@ static void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx) CalculateMonStats(&gEnemyParty[0]); } -static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade) +static void GetInGameTradeMail(struct Mail * mail, const struct InGameTrade * inGameTrade) { int i; for (i = 0; i < MAIL_WORDS_COUNT; i++) diff --git a/src/union_room.c b/src/union_room.c index 1c23f924d..74e540bf2 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -1768,14 +1768,14 @@ static void Task_StartUnionRoomTrade(u8 taskId) } break; case 2: - memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, sizeof(struct MailStruct) * PARTY_SIZE + 4); - if (SendBlock(0, gBlockSendBuffer, sizeof(struct MailStruct) * PARTY_SIZE + 4)) + memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, sizeof(struct Mail) * PARTY_SIZE + 4); + if (SendBlock(0, gBlockSendBuffer, sizeof(struct Mail) * PARTY_SIZE + 4)) gTasks[taskId].data[0]++; break; case 3: if (GetBlockReceivedStatus() == 3) { - memcpy(gLinkPartnerMail, gBlockRecvBuffer[GetMultiplayerId() ^ 1], sizeof(struct MailStruct) * PARTY_SIZE); + memcpy(gLinkPartnerMail, gBlockRecvBuffer[GetMultiplayerId() ^ 1], sizeof(struct Mail) * PARTY_SIZE); ResetBlockReceivedFlags(); gSelectedTradeMonPositions[TRADE_PLAYER] = monId; gSelectedTradeMonPositions[TRADE_PARTNER] = PARTY_SIZE; |