diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h index 14b6594b2..64a860284 100644 --- a/include/gba/multiboot.h +++ b/include/gba/multiboot.h @@ -10,7 +10,7 @@ struct MultiBootParam { u32 system_work[5]; // 00 u8 handshake_data; // 14 - u8 padding; // 15 + //u8 padding; // 15 u16 handshake_timeout; // 16 u8 probe_count; // 18 u8 client_data[MULTIBOOT_NCHILD]; // 19 diff --git a/include/global.berry.h b/include/global.berry.h index 8d1aa369d..29f1cfe14 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -40,6 +40,7 @@ struct Berry2 u8 bitter; u8 sour; u8 smoothness; + //u8 padding; }; struct EnigmaBerry diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 4da3154e2..26e5c44bf 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -41,7 +41,7 @@ struct Tileset /*0x01*/ bool8 isSecondary; /*0x04*/ const u32 *tiles; /*0x08*/ const u16 (*palettes)[16]; - /*0x0c*/ const u16 *metatiles; + /*0x0C*/ const u16 *metatiles; /*0x10*/ const u16 *metatileAttributes; /*0x14*/ TilesetCB callback; }; @@ -51,7 +51,7 @@ struct MapLayout /*0x00*/ s32 width; /*0x04*/ s32 height; /*0x08*/ u16 *border; - /*0x0c*/ u16 *map; + /*0x0C*/ u16 *map; /*0x10*/ struct Tileset *primaryTileset; /*0x14*/ struct Tileset *secondaryTileset; }; @@ -68,16 +68,19 @@ struct ObjectEventTemplate /*0x00*/ u8 localId; /*0x01*/ u8 graphicsId; /*0x02*/ u8 inConnection; // Leftover from FRLG + /*0x03*/ //u8 padding1; /*0x04*/ s16 x; /*0x06*/ s16 y; /*0x08*/ u8 elevation; /*0x09*/ u8 movementType; /*0x0A*/ u16 movementRangeX:4; u16 movementRangeY:4; + //u16 padding2:8; /*0x0C*/ u16 trainerType; /*0x0E*/ u16 trainerRange_berryTreeId; /*0x10*/ const u8 *script; /*0x14*/ u16 flagId; + /*0x16*/ //u8 padding3[2]; }; struct WarpEvent @@ -192,6 +195,7 @@ struct ObjectEvent u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; u32 hideReflection:1; + //u32 padding:4; /*0x04*/ u8 spriteId; /*0x05*/ u8 graphicsId; /*0x06*/ u8 movementType; @@ -217,6 +221,7 @@ struct ObjectEvent /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; /*0x22*/ u8 playerCopyableMovement; // COPY_MOVE_* + /*0x23*/ //u8 padding2; /*size = 0x24*/ }; diff --git a/include/global.h b/include/global.h index 6e2cfa9b8..2e1ab223a 100644 --- a/include/global.h +++ b/include/global.h @@ -246,9 +246,11 @@ struct ApprenticeMon struct Apprentice { u8 id:5; - u8 lvlMode:2; // + 1 + u8 lvlMode:2; + //u8 padding1:1; u8 numQuestions; u8 number; + //u8 padding2; struct ApprenticeMon party[MULTI_PARTY_SIZE]; u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; u8 playerId[TRAINER_ID_LENGTH]; @@ -296,6 +298,7 @@ struct EmeraldBattleTowerRecord /*0x28*/ u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x34*/ struct BattleTowerPokemon party[MAX_FRONTIER_PARTY_SIZE]; /*0xE4*/ u8 language; + /*0xE7*/ //u8 padding[3]; /*0xE8*/ u32 checksum; }; @@ -328,14 +331,17 @@ struct DomeMonData u16 moves[MAX_MON_MOVES]; u8 evs[NUM_STATS]; u8 nature; + //u8 padding; }; struct RentalMon { u16 monId; + //u8 padding1[2]; u32 personality; u8 ivs; u8 abilityNum; + //u8 padding2[2]; }; struct BattleDomeTrainer @@ -357,8 +363,9 @@ struct BattleFrontier /*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer; /*0xCA8*/ u8 challengeStatus; /*0xCA9*/ u8 lvlMode:2; - /*0xCA9*/ u8 challengePaused:1; - /*0xCA9*/ u8 disableRecordBattle:1; + u8 challengePaused:1; + u8 disableRecordBattle:1; + //u8 padding1:4; /*0xCAA*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE]; /*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid) /*0xCB4*/ u16 trainerIds[20]; @@ -402,16 +409,19 @@ struct BattleFrontier /*0xE08*/ u16 pikeRecordStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE0C*/ u16 pikeTotalStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE10*/ u8 pikeHintedRoomIndex:3; - /*0xE10*/ u8 pikeHintedRoomType:4; - /*0xE10*/ u8 pikeHealingRoomsDisabled:1; + u8 pikeHintedRoomType:4; + u8 pikeHealingRoomsDisabled:1; + /*0xE11*/ //u8 padding2; /*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE]; /*0xE18*/ u16 pyramidPrize; /*0xE1A*/ u16 pyramidWinStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE1E*/ u16 pyramidRecordStreaks[FRONTIER_LVL_MODE_COUNT]; /*0xE22*/ u16 pyramidRandoms[4]; /*0xE2A*/ u8 pyramidTrainerFlags; // 1 bit for each trainer (MAX_PYRAMID_TRAINERS) + /*0xE2B*/ //u8 padding3; /*0xE2C*/ struct PyramidBag pyramidBag; /*0xE68*/ u8 pyramidLightRadius; + /*0xE69*/ //u8 padding4; /*0xE6A*/ u16 verdanturfTentPrize; /*0xE6C*/ u16 fallarborTentPrize; /*0xE6E*/ u16 slateportTentPrize; @@ -436,6 +446,7 @@ struct ApprenticeQuestion u8 monId:2; u8 moveSlot:2; u8 suggestedChange:2; // TRUE if told to use held item or second move, FALSE if told to use no item or first move + //u8 padding; u16 data; // used both as an itemId and a moveId }; @@ -446,9 +457,11 @@ struct PlayersApprentice /*0xB1*/ u8 questionsAnswered:4; /*0xB1*/ u8 leadMonId:2; /*0xB2*/ u8 party:3; - /*0xB2*/ u8 saveId:2; + u8 saveId:2; + //u8 padding1:3; /*0xB3*/ u8 unused; /*0xB4*/ u8 speciesIds[MULTI_PARTY_SIZE]; + /*0xB7*/ //u8 padding2; /*0xB8*/ struct ApprenticeQuestion questions[APPRENTICE_MAX_QUESTIONS]; }; @@ -458,6 +471,7 @@ struct RankingHall1P u16 winStreak; u8 name[PLAYER_NAME_LENGTH + 1]; u8 language; + //u8 padding; }; struct RankingHall2P @@ -468,6 +482,7 @@ struct RankingHall2P u8 name1[PLAYER_NAME_LENGTH + 1]; u8 name2[PLAYER_NAME_LENGTH + 1]; u8 language; + //u8 padding; }; struct SaveBlock2 @@ -487,6 +502,8 @@ struct SaveBlock2 u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] u16 optionsBattleSceneOff:1; // whether battle animations are disabled u16 regionMapZoom:1; // whether the map is zoomed in + //u16 padding1:4; + //u16 padding2; /*0x18*/ struct Pokedex pokedex; /*0x90*/ u8 filler_90[0x8]; /*0x98*/ struct Time localTimeOffset; @@ -531,6 +548,7 @@ struct SecretBase /*0x1AAD*/ u8 unused; /*0x1AAE*/ u8 decorations[DECOR_MAX_SECRET_BASE]; /*0x1ABE*/ u8 decorationPositions[DECOR_MAX_SECRET_BASE]; + /*0x1ACE*/ //u8 padding[2]; /*0x1AD0*/ struct SecretBaseParty party; }; @@ -545,6 +563,7 @@ struct WarpData s8 mapGroup; s8 mapNum; s8 warpId; + //u8 padding; s16 x, y; }; @@ -589,6 +608,7 @@ struct RamScriptData u8 mapNum; u8 objectId; u8 script[995]; + //u8 padding; }; struct RamScript @@ -603,6 +623,7 @@ struct DewfordTrend u16 trendiness:7; u16 maxTrendiness:7; u16 gainingTrendiness:1; + //u16 padding:1; u16 rand; u16 words[2]; }; /*size = 0x8*/ @@ -615,6 +636,7 @@ struct MauvilleManCommon struct MauvilleManBard { /*0x00*/ u8 id; + /*0x01*/ //u8 padding1; /*0x02*/ u16 songLyrics[BARD_SONG_LENGTH]; /*0x0E*/ u16 temporaryLyrics[BARD_SONG_LENGTH]; /*0x1A*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; @@ -622,6 +644,7 @@ struct MauvilleManBard /*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH]; /*0x29*/ bool8 hasChangedSong; /*0x2A*/ u8 language; + /*0x2B*/ //u8 padding2; }; /*size = 0x2C*/ struct MauvilleManStoryteller @@ -640,9 +663,11 @@ struct MauvilleManGiddy /*0x00*/ u8 id; /*0x01*/ u8 taleCounter; /*0x02*/ u8 questionNum; + /*0x03*/ //u8 padding1; /*0x04*/ u16 randomWords[GIDDY_MAX_TALES]; /*0x18*/ u8 questionList[GIDDY_MAX_QUESTIONS]; /*0x20*/ u8 language; + /*0x21*/ //u8 padding2; }; /*size = 0x2C*/ struct MauvilleManHipster @@ -687,6 +712,7 @@ struct LinkBattleRecords { struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT]; u8 languages[LINK_B_RECORDS_COUNT]; + //u8 padding; }; struct RecordMixingGiftData @@ -712,6 +738,7 @@ struct ContestWinner u8 monName[POKEMON_NAME_LENGTH + 1]; u8 trainerName[PLAYER_NAME_LENGTH + 1]; u8 contestRank; + //u8 padding; }; struct Mail @@ -744,6 +771,7 @@ struct DayCare struct DaycareMon mons[DAYCARE_MON_COUNT]; u32 offspringPersonality; u8 stepCounter; + //u8 padding[3]; }; struct LilycoveLadyQuiz @@ -756,10 +784,10 @@ struct LilycoveLadyQuiz /*0x018*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x020*/ u16 playerTrainerId[TRAINER_ID_LENGTH]; /*0x028*/ u16 prize; - /*0x02a*/ bool8 waitingForChallenger; - /*0x02b*/ u8 questionId; - /*0x02c*/ u8 prevQuestionId; - /*0x02d*/ u8 language; + /*0x02A*/ bool8 waitingForChallenger; + /*0x02B*/ u8 questionId; + /*0x02C*/ u8 prevQuestionId; + /*0x02D*/ u8 language; }; struct LilycoveLadyFavor @@ -769,10 +797,12 @@ struct LilycoveLadyFavor /*0x002*/ bool8 likedItem; /*0x003*/ u8 numItemsGiven; /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x00c*/ u8 favorId; - /*0x00e*/ u16 itemId; + /*0x00C*/ u8 favorId; + /*0x00D*/ //u8 padding1; + /*0x00E*/ u16 itemId; /*0x010*/ u16 bestItem; /*0x012*/ u8 language; + /*0x013*/ //u8 padding2; }; struct LilycoveLadyContest @@ -782,9 +812,9 @@ struct LilycoveLadyContest /*0x002*/ u8 numGoodPokeblocksGiven; /*0x003*/ u8 numOtherPokeblocksGiven; /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x00c*/ u8 maxSheen; - /*0x00d*/ u8 category; - /*0x00e*/ u8 language; + /*0x00C*/ u8 maxSheen; + /*0x00D*/ u8 category; + /*0x00E*/ u8 language; }; typedef union // 3b58 @@ -793,7 +823,7 @@ typedef union // 3b58 struct LilycoveLadyFavor favor; struct LilycoveLadyContest contest; u8 id; - u8 pad[0x40]; + u8 filler[0x40]; } LilycoveLady; struct WaldaPhrase @@ -803,6 +833,7 @@ struct WaldaPhrase u8 iconId; u8 patternId; bool8 patternUnlocked; + //u8 padding; }; struct TrainerNameRecord @@ -818,12 +849,13 @@ struct TrainerHillSave /*0x3D6C*/ u8 unk_3D6C; /*0x3D6D*/ u8 unused; /*0x3D6E*/ u16 receivedPrize:1; - /*0x3D6E*/ u16 checkedFinalTime:1; - /*0x3D6E*/ u16 spokeToOwner:1; - /*0x3D6E*/ u16 hasLost:1; - /*0x3D6E*/ u16 maybeECardScanDuringChallenge:1; - /*0x3D6E*/ u16 field_3D6E_0f:1; - /*0x3D6E*/ u16 mode:2; // HILL_MODE_* + u16 checkedFinalTime:1; + u16 spokeToOwner:1; + u16 hasLost:1; + u16 maybeECardScanDuringChallenge:1; + u16 field_3D6E_0f:1; + u16 mode:2; // HILL_MODE_* + //u16 padding:8; }; struct WonderNewsMetadata @@ -832,6 +864,7 @@ struct WonderNewsMetadata u8 sentCounter:3; u8 getCounter:3; u8 rand; + //u8 padding[2]; }; struct WonderNews @@ -857,6 +890,7 @@ struct WonderCard u8 bodyText[WONDER_CARD_BODY_TEXT_LINES][WONDER_CARD_TEXT_LENGTH]; u8 footerLine1Text[WONDER_CARD_TEXT_LENGTH]; u8 footerLine2Text[WONDER_CARD_TEXT_LENGTH]; + //u8 padding[2]; }; struct WonderCardMetadata @@ -903,7 +937,7 @@ struct ExternalEventFlags { u8 usedBoxRS:1; // Set by Pokémon Box: Ruby & Sapphire; denotes whether this save has connected to it and triggered the free False Swipe Swablu Egg giveaway. u8 boxRSEggsUnlocked:2; // Set by Pokémon Box: Ruby & Sapphire; denotes the number of Eggs unlocked from deposits; 1 for ExtremeSpeed Zigzagoon (at 100 deposited), 2 for Pay Day Skitty (at 500 deposited), 3 for Surf Pichu (at 1499 deposited) - u8 padding:5; + //u8 padding:5; u8 unknownFlag1; u8 receivedGCNJirachi; // Both the US Colosseum Bonus Disc and PAL/AUS Pokémon Channel use this field. One cannot receive a WISHMKR Jirachi and CHANNEL Jirachi with the same savefile. u8 unknownFlag3; @@ -939,9 +973,11 @@ struct SaveBlock1 /*0x2E*/ u8 weather; /*0x2F*/ u8 weatherCycleStage; /*0x30*/ u8 flashLevel; + /*0x31*/ //u8 padding1; /*0x32*/ u16 mapLayoutId; /*0x34*/ u16 mapView[0x100]; /*0x234*/ u8 playerPartyCount; + /*0x235*/ //u8 padding2[3]; /*0x238*/ struct Pokemon playerParty[PARTY_SIZE]; /*0x490*/ u32 money; /*0x494*/ u16 coins; @@ -958,6 +994,7 @@ struct SaveBlock1 /*0x9C2*/ u8 unused_9C2[6]; /*0x9C8*/ u16 trainerRematchStepCounter; /*0x9CA*/ u8 trainerRematches[MAX_REMATCH_ENTRIES]; + /*0xA2E*/ //u8 padding3[2]; /*0xA30*/ struct ObjectEvent objectEvents[OBJECT_EVENTS_COUNT]; /*0xC70*/ struct ObjectEventTemplate objectEventTemplates[OBJECT_EVENT_TEMPLATES_COUNT]; /*0x1270*/ u8 flags[NUM_FLAG_BYTES]; @@ -975,6 +1012,7 @@ struct SaveBlock1 /*0x278E*/ u8 decorationPosters[10]; /*0x2798*/ u8 decorationDolls[40]; /*0x27C0*/ u8 decorationCushions[10]; + /*0x27CA*/ //u8 padding4[2]; /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT]; /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT]; /*0x2B90*/ u16 outbreakPokemonSpecies; @@ -994,6 +1032,7 @@ struct SaveBlock1 /*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BE0*/ struct Mail mail[MAIL_COUNT]; /*0x2E20*/ u8 additionalPhrases[NUM_ADDITIONAL_PHRASE_BYTES]; // bitfield for 33 additional phrases in easy chat system + /*0x2E25*/ //u8 padding5[3]; /*0x2E28*/ OldMan oldMan; /*0x2e64*/ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT]; /*0x2e90*/ struct ContestWinner contestWinners[NUM_CONTEST_WINNERS]; // see CONTEST_WINNER_* diff --git a/include/global.tv.h b/include/global.tv.h index 1fb1b8a33..3729562cd 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -36,6 +36,7 @@ typedef union // size = 0x24 /*0x04*/ u16 words[6]; /*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x18*/ u8 language; + /*0x19*/ //u8 padding; } fanclubLetter; // TVSHOW_RECENT_HAPPENINGS @@ -46,6 +47,7 @@ typedef union // size = 0x24 /*0x04*/ u16 words[6]; /*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x18*/ u8 language; + /*0x19*/ //u8 padding; } recentHappenings; // TVSHOW_PKMN_FAN_CLUB_OPINIONS @@ -54,7 +56,7 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u16 species; /*0x04*/ u8 friendshipHighNybble:4; - /*0x04*/ u8 questionAsked:4; + u8 questionAsked:4; /*0x05*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x0D*/ u8 language; /*0x0E*/ u8 pokemonNameLanguage; @@ -70,8 +72,8 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u16 words[2]; /*0x06*/ u16 species; - /*0x08*/ u8 pad_08[3]; - /*0x0b*/ u8 name[12]; + /*0x08*/ u8 filler_08[3]; + /*0x0B*/ u8 name[12]; /*0x17*/ u8 language; } dummy; @@ -98,8 +100,9 @@ typedef union // size = 0x24 /*0x04*/ u16 words[2]; /*0x08*/ u8 pokemonNickname[POKEMON_NAME_LENGTH + 1]; /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 contestRank:2; - /*0x13*/ u8 contestResult:2; + u8 contestRank:2; + u8 contestResult:2; + //u8 padding:1; /*0x14*/ u16 move; /*0x16*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x1E*/ u8 language; @@ -121,6 +124,7 @@ typedef union // size = 0x24 /*0x1C*/ bool8 wonTheChallenge; /*0x1D*/ u8 language; /*0x1E*/ u8 pokemonNameLanguage; + /*0x1F*/ //u8 padding; } bravoTrainerTower; // TVSHOW_CONTEST_LIVE_UPDATES @@ -131,14 +135,15 @@ typedef union // size = 0x24 /*0x04*/ u8 losingTrainerName[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 loserAppealFlag; /*0x0D*/ u8 round1Placing; - /*0x0e*/ u8 round2Placing; - /*0x0f*/ u8 winnerAppealFlag; + /*0x0E*/ u8 round2Placing; + /*0x0F*/ u8 winnerAppealFlag; /*0x10*/ u16 move; /*0x12*/ u16 winningSpecies; /*0x14*/ u8 winningTrainerName[PLAYER_NAME_LENGTH + 1]; /*0x1C*/ u8 category; /*0x1D*/ u8 winningTrainerLanguage; /*0x1E*/ u8 losingTrainerLanguage; + /*0x1F*/ //u8 padding; } contestLiveUpdates; // TVSHOW_3_CHEERS_FOR_POKEBLOCKS @@ -147,7 +152,8 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 sheen; /*0x03*/ u8 flavor:3; - /*0x03*/ u8 color:2; + u8 color:2; + //u8 padding:3; /*0x04*/ u8 worstBlenderName[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x14*/ u8 language; @@ -166,6 +172,7 @@ typedef union // size = 0x24 /*0x18*/ u8 battleType; /*0x19*/ u8 language; /*0x1A*/ u8 linkOpponentLanguage; + /*0x1B*/ //u8 padding; } battleUpdate; // TVSHOW_FAN_CLUB_SPECIAL @@ -173,13 +180,14 @@ typedef union // size = 0x24 /*0x00*/ u8 kind; /*0x01*/ bool8 active; /*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x0a*/ u8 idLo; - /*0x0b*/ u8 idHi; - /*0x0c*/ u8 idolName[PLAYER_NAME_LENGTH + 1]; + /*0x0A*/ u8 idLo; + /*0x0B*/ u8 idHi; + /*0x0C*/ u8 idolName[PLAYER_NAME_LENGTH + 1]; /*0x14*/ u16 words[1]; /*0x16*/ u8 score; /*0x17*/ u8 language; /*0x18*/ u8 idolNameLanguage; + /*0x19*/ //u8 padding; } fanClubSpecial; // TVSHOW_LILYCOVE_CONTEST_LADY @@ -187,8 +195,8 @@ typedef union // size = 0x24 /*0x00*/ u8 kind; /*0x01*/ bool8 active; /*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x0a*/ u8 contestCategory; - /*0x0b*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0A*/ u8 contestCategory; + /*0x0B*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; /*0x16*/ u8 pokeblockState; /*0x17*/ u8 language; /*0x18*/ u8 pokemonNameLanguage; @@ -206,6 +214,7 @@ typedef union // size = 0x24 /*0x10*/ u16 species; /*0x12*/ u8 nBallsUsed; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } pokemonToday; // TVSHOW_SMART_SHOPPER @@ -214,11 +223,12 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 priceReduced; /*0x03*/ u8 language; - /*0x04*/ u8 pad04[2]; + /*0x04*/ u8 filler_04[2]; /*0x06*/ u16 itemIds[SMARTSHOPPER_NUM_ITEMS]; /*0x0C*/ u16 itemAmounts[SMARTSHOPPER_NUM_ITEMS]; /*0x12*/ u8 shopLocation; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } smartshopperShow; // TVSHOW_POKEMON_TODAY_FAILED @@ -226,13 +236,14 @@ typedef union // size = 0x24 /*0x00*/ u8 kind; /*0x01*/ bool8 active; /*0x02*/ u8 language; - /*0x03*/ u8 pad03[9]; - /*0x0c*/ u16 species; - /*0x0e*/ u16 species2; + /*0x03*/ u8 filler_03[9]; + /*0x0C*/ u16 species; + /*0x0E*/ u16 species2; /*0x10*/ u8 nBallsUsed; /*0x11*/ u8 outcome; /*0x12*/ u8 location; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } pokemonTodayFailed; // TVSHOW_FISHING_ADVICE @@ -243,8 +254,9 @@ typedef union // size = 0x24 /*0x03*/ u8 nFails; /*0x04*/ u16 species; /*0x06*/ u8 language; - /*0x07*/ u8 pad07[12]; + /*0x07*/ u8 filler_07[12]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } pokemonAngler; // TVSHOW_WORLD_OF_MASTERS @@ -255,10 +267,11 @@ typedef union // size = 0x24 /*0x04*/ u16 caughtPoke; /*0x06*/ u16 steps; /*0x08*/ u16 species; - /*0x0a*/ u8 location; - /*0x0b*/ u8 language; - /*0x0c*/ u8 pad0c[7]; + /*0x0A*/ u8 location; + /*0x0B*/ u8 language; + /*0x0C*/ u8 filler_0C[7]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding2; } worldOfMasters; // TVSHOW_TODAYS_RIVAL_TRAINER @@ -271,10 +284,11 @@ typedef union // size = 0x24 /*0x06*/ u8 nGoldSymbols; /*0x07*/ u8 location; /*0x08*/ u16 battlePoints; - /*0x0a*/ u16 mapLayoutId; - /*0x0c*/ u8 language; - /*0x0d*/ u8 filler_0d[6]; + /*0x0A*/ u16 mapLayoutId; + /*0x0C*/ u8 language; + /*0x0D*/ u8 filler_0D[6]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding2; } rivalTrainer; // TVSHOW_TREND_WATCHER @@ -285,8 +299,9 @@ typedef union // size = 0x24 /*0x04*/ u16 words[2]; /*0x08*/ u8 gender; /*0x09*/ u8 language; - /*0x0a*/ u8 filler_0a[9]; + /*0x0A*/ u8 filler_0a[9]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } trendWatcher; // TVSHOW_TREASURE_INVESTIGATORS @@ -299,6 +314,7 @@ typedef union // size = 0x24 /*0x06*/ u16 mapLayoutId; /*0x08*/ u8 filler_08[11]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } treasureInvestigators; // TVSHOW_FIND_THAT_GAMER @@ -312,6 +328,7 @@ typedef union // size = 0x24 /*0x08*/ u8 language; /*0x09*/ u8 filler_09[10]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } findThatGamer; // TVSHOW_BREAKING_NEWS @@ -323,11 +340,12 @@ typedef union // size = 0x24 /*0x05*/ u8 outcome; /*0x06*/ u16 caughtMonBall; /*0x08*/ u16 balls; - /*0x0a*/ u16 poke1Species; - /*0x0c*/ u16 lastUsedMove; - /*0x0e*/ u8 language; - /*0x0f*/ u8 filler_0f[4]; + /*0x0A*/ u16 poke1Species; + /*0x0C*/ u16 lastUsedMove; + /*0x0E*/ u8 language; + /*0x0F*/ u8 filler_0f[4]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } breakingNews; // TVSHOW_SECRET_BASE_VISIT @@ -338,10 +356,11 @@ typedef union // size = 0x24 /*0x03*/ u8 numDecorations; /*0x04*/ u8 decorations[4]; /*0x08*/ u16 species; - /*0x0a*/ u16 move; - /*0x0c*/ u8 language; - /*0x0d*/ u8 filler_0d[6]; + /*0x0A*/ u16 move; + /*0x0C*/ u8 language; + /*0x0D*/ u8 filler_0d[6]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } secretBaseVisit; // TVSHOW_LOTTO_WINNER @@ -353,6 +372,7 @@ typedef union // size = 0x24 /*0x05*/ u8 language; /*0x06*/ u8 filler_06[13]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } lottoWinner; // TVSHOW_BATTLE_SEMINAR @@ -363,11 +383,12 @@ typedef union // size = 0x24 /*0x04*/ u16 foeSpecies; /*0x06*/ u16 species; /*0x08*/ u16 otherMoves[3]; - /*0x0e*/ u16 betterMove; + /*0x0E*/ u16 betterMove; /*0x10*/ u8 nOtherMoves; /*0x11*/ u8 language; /*0x12*/ u8 filler_12[1]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } battleSeminar; // TVSHOW_TRAINER_FAN_CLUB @@ -379,6 +400,7 @@ typedef union // size = 0x24 /*0x08*/ u8 language; /*0x09*/ u8 filler_09[10]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } trainerFanClub; // TVSHOW_CUTIES @@ -388,7 +410,7 @@ typedef union // size = 0x24 /*0x02*/ u8 nRibbons; /*0x03*/ u8 selectedRibbon; /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; - /*0x0f*/ u8 language; + /*0x0F*/ u8 language; /*0x10*/ u8 pokemonNameLanguage; /*0x11*/ u8 filler_12[2]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; @@ -402,11 +424,12 @@ typedef union // size = 0x24 /*0x04*/ u16 species1; /*0x06*/ u16 species2; /*0x08*/ u16 species3; - /*0x0a*/ u16 species4; - /*0x0c*/ u8 language; - /*0x0d*/ u8 facilityAndMode; - /*0x0e*/ u8 filler_0e[5]; + /*0x0A*/ u16 species4; + /*0x0C*/ u8 language; + /*0x0D*/ u8 facilityAndMode; + /*0x0E*/ u8 filler_0e[5]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } frontier; // TVSHOW_NUMBER_ONE @@ -418,6 +441,7 @@ typedef union // size = 0x24 /*0x05*/ u8 language; /*0x06*/ u8 filler_06[13]; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x1B*/ //u8 padding; } numberOne; // TVSHOW_SECRET_BASE_SECRETS @@ -426,12 +450,13 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u16 stepsInBase; /*0x04*/ u8 baseOwnersName[PLAYER_NAME_LENGTH + 1]; - /*0x0c*/ u32 flags; + /*0x0C*/ u32 flags; /*0x10*/ u16 item; /*0x12*/ u8 savedState; /*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x1b*/ u8 language; - /*0x1c*/ u8 baseOwnersNameLanguage; + /*0x1B*/ u8 language; + /*0x1C*/ u8 baseOwnersNameLanguage; + /*0x1D*/ //u8 padding[3]; } secretBaseSecrets; // TVSHOW_SAFARI_FAN_CLUB @@ -463,6 +488,7 @@ typedef union // size = 0x24 /*0x15*/ u8 unused5; /*0x16*/ u16 daysLeft; /*0x18*/ u8 language; + /*0x19*/ //u8 padding; } massOutbreak; } TVShow; @@ -475,23 +501,23 @@ typedef struct struct GabbyAndTyData { - /*2ba4*/ u16 mon1; - /*2ba6*/ u16 mon2; - /*2ba8*/ u16 lastMove; - /*2baa*/ u16 quote[1]; - /*2bac*/ u8 mapnum; - /*2bad*/ u8 battleNum; - /*2bae*/ u8 battleTookMoreThanOneTurn:1; - /*2bae*/ u8 playerLostAMon:1; - /*2bae*/ u8 playerUsedHealingItem:1; - /*2bae*/ u8 playerThrewABall:1; - /*2bae*/ u8 onAir:1; - /*2bae*/ u8 valA_5:3; - /*2baf*/ u8 battleTookMoreThanOneTurn2:1; - /*2baf*/ u8 playerLostAMon2:1; - /*2baf*/ u8 playerUsedHealingItem2:1; - /*2baf*/ u8 playerThrewABall2:1; - /*2baf*/ u8 valB_4:4; + /*2BA4*/ u16 mon1; + /*2BA6*/ u16 mon2; + /*2BA8*/ u16 lastMove; + /*2BAA*/ u16 quote[1]; + /*2BAC*/ u8 mapnum; + /*2BAD*/ u8 battleNum; + /*2BAE*/ u8 battleTookMoreThanOneTurn:1; + u8 playerLostAMon:1; + u8 playerUsedHealingItem:1; + u8 playerThrewABall:1; + u8 onAir:1; + u8 valA_5:3; + /*2BAF*/ u8 battleTookMoreThanOneTurn2:1; + u8 playerLostAMon2:1; + u8 playerUsedHealingItem2:1; + u8 playerThrewABall2:1; + u8 valB_4:4; }; #endif //GUARD_GLOBAL_TV_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 1e434e830..88f95b170 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -109,7 +109,7 @@ struct __attribute__((packed, aligned(2))) RfuGameData u8 startedActivity:1; u8 playerGender:1; u8 tradeLevel:7; - u8 padding; + u8 filler; }; // Constants for getting/setting information in 'partnerInfo' of RfuGameData. diff --git a/src/record_mixing.c b/src/record_mixing.c index 5d75f3fc8..d6edd078b 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -59,23 +59,23 @@ struct PlayerRecordRS struct RecordMixingDaycareMail daycareMail; struct RSBattleTowerRecord battleTowerRecord; u16 giftItem; - u16 padding[50]; + u16 filler[50]; }; struct PlayerRecordEmerald { /* 0x0000 */ struct SecretBase secretBases[SECRET_BASES_COUNT]; - /* 0x0c80 */ TVShow tvShows[TV_SHOWS_COUNT]; + /* 0x0C80 */ TVShow tvShows[TV_SHOWS_COUNT]; /* 0x1004 */ PokeNews pokeNews[POKE_NEWS_COUNT]; /* 0x1044 */ OldMan oldMan; /* 0x1084 */ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT]; - /* 0x10ac */ struct RecordMixingDaycareMail daycareMail; + /* 0x10AC */ struct RecordMixingDaycareMail daycareMail; /* 0x1124 */ struct EmeraldBattleTowerRecord battleTowerRecord; /* 0x1210 */ u16 giftItem; /* 0x1214 */ LilycoveLady lilycoveLady; /* 0x1254 */ struct Apprentice apprentices[2]; - /* 0x12dc */ struct PlayerHallRecords hallRecords; - /* 0x1434 */ u8 padding[16]; + /* 0x12DC */ struct PlayerHallRecords hallRecords; + /* 0x1434 */ u8 filler_1434[16]; }; // 0x1444 union PlayerRecord