NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
d_mj2d_data.hpp
1#pragma once
2#include <types.h>
6class dSaveMng_c;
7
8/// @brief Represents the header of the game's save file.
9/// @ingroup bases
11public:
12 dMj2dHeader_c(); ///< Constructs the holder.
13
14 void initialize(); ///< Initializes the header data.
15
16 /// @brief Gets the Free Mode play count for the given world/level. See ::mPlayCountFreeMode.
17 u16 getPlayCountFreeMode(int world, int level) const;
18
19 /// @brief Sets the Free Mode play count for the given world/level. See ::mPlayCountFreeMode.
20 void setPlayCountFreeMode(int world, int level, int count);
21
22 /// @brief Gets the Coin Battle play count for the given world/level. See ::mPlayCountCoinBattle.
23 u16 getPlayCountCoinBattle(int world, int level) const;
24
25 /// @brief Sets the Coin Battle play count for the given world/level. See ::mPlayCountCoinBattle.
26 void setPlayCountCoinBattle(int world, int level, int count);
27
28 void onMultiWorldOpenFlag(int world); ///< Unlocks the given world in extra modes.
29 bool isMultiWorldOpenFlag(int world); ///< Checks if the given world is unlocked in extra modes.
30
31private:
32 /// @brief Ensures that the save's major revision number matches the current one.
33 /// @details If the revision number does not match, the header data is reset.
34 void versionUpdate();
35 void setSelectFileNo(s8 file); ///< Sets the last used save data slot.
36
37 char mMagic[4]; ///< The savegame magic. See ::SAVE_MAGIC.
38 u8 mRevision[2]; ///< The save revision numbers. See ::SAVE_REVISION_MAJOR and ::SAVE_REVISION_MINOR.
39
40 u8 mLastSelectedFile; ///< The last selected save data slot.
41 u8 mUnknown7; ///< @brief Padding. @unused
42 u16 mPlayCountFreeMode[WORLD_COUNT][STAGE_COUNT]; ///< The play count of each level in Free Mode.
43 u16 mPlayCountCoinBattle[WORLD_COUNT][STAGE_COUNT]; ///< The play count of each level in Coin Battle.
44 u16 mMultiWorldOpenFlag; ///< The worlds unlocked in Extra Modes.
45 u16 mUnknown69A; ///< @brief Padding. @unused
46
47 u32 mChecksum; ///< The CRC32 checksum of the above data (excluding ::mMagic).
48
49 friend class dSaveMng_c;
50};
51
52/// @brief Represents the slot-specific save data for the game.
53/// @ingroup bases
55public:
56
57 /// @brief The completion status of each level.
59 COIN1_COLLECTED = BIT_FLAG(0), ///< The first Star Coin was obtained.
60 COIN2_COLLECTED = BIT_FLAG(1), ///< The second Star Coin was obtained.
61 COIN3_COLLECTED = BIT_FLAG(2), ///< The third Star Coin was obtained.
63 GOAL_NORMAL = BIT_FLAG(4), ///< The regular exit was cleared.
64 GOAL_SECRET = BIT_FLAG(5), ///< The secret exit was cleared.
65 GOAL_MASK = GOAL_NORMAL | GOAL_SECRET,
66 SUPER_GUIDE_GOAL_NORMAL = BIT_FLAG(7), ///< The regular exit was cleared with the Super Guide.
67 SUPER_GUIDE_GOAL_SECRET = BIT_FLAG(8), ///< The secret exit was cleared with the Super Guide.
68 SUPER_GUIDE_GOAL_MASK = SUPER_GUIDE_GOAL_NORMAL | SUPER_GUIDE_GOAL_SECRET
69 };
70
71 /// @brief The completion status of each world.
73 WORLD_UNLOCKED = BIT_FLAG(0)
74 };
75
76 /// @brief The overall completion status of the save slot.
78 SAVE_EMPTY = BIT_FLAG(0), ///< The slot is empty.
79 FINAL_BOSS_BEATEN = BIT_FLAG(1), ///< The final boss was beaten.
80 GOAL_ALL = BIT_FLAG(2), ///< All levels were completed.
81 COIN_ALL = BIT_FLAG(3), ///< All the Star Coins in the regular worlds were obtained.
82 COIN_ALL_SPECIAL = BIT_FLAG(4), ///< All the Star Coins in the special worlds were obtained.
83 GAME_COMPLETED = BIT_FLAG(5), ///< All the above objectives were completed.
84 SUPER_GUIDE_TRIGGERED = BIT_FLAG(6) ///< The player died at least ::SUPER_GUIDE_DEATH_COUNT times in a single stage.
85 };
86
87 /// @brief The Toad House types at the start node of each world.
88 /// @details Values marked with R are used for houses that spawn after a successful Toad Rescue mission.
90 TOAD_HOUSE_NONE,
91 TOAD_HOUSE_YELLOW,
92 TOAD_HOUSE_RED,
93 TOAD_HOUSE_GREEN,
94 TOAD_HOUSE_YELLOW_R,
95 TOAD_HOUSE_RED_R,
96 TOAD_HOUSE_GREEN_R
97 };
98
99 /// @brief Constructs the holder.
100 dMj2dGame_c();
101
102 /// @brief Deletes the holder.
104
105 void initialize(); ///< Initializes the slot data.
106
107 void setPlrID(int player, int character); ///< Sets @p player 's character. See ::PLAYER_CHARACTER_e.
108 int getPlrID(int player) const; ///< Gets @p player 's character. See ::PLAYER_CHARACTER_e.
109
110 void setPlrMode(int player, u8 powerup); ///< Sets @p player 's powerup. See ::PLAYER_POWERUP_e.
111 int getPlrMode(int player) const; ///< Gets @p player 's powerup. See ::PLAYER_POWERUP_e.
112
113 void setRest(int player, u8 lives); ///< Sets @p player 's life count.
114 int getRest(int player) const; ///< Gets @p player 's life count.
115
116 /// @brief Sets @p player 's createItem flag. See ::PLAYER_CREATE_ITEM_e.
117 /// @details Flags other than ::CREATE_ITEM_STAR_POWER are ignored.
118 void setCreateItem(int player, u8 flag);
119
120 /// @brief Gets @p player 's createItem flag. See ::PLAYER_CREATE_ITEM_e.
121 /// @details Flags other than ::CREATE_ITEM_STAR_POWER are ignored.
122 int getCreateItem(int player) const;
123
124 void setCoin(int player, s8 coins); ///< Sets @p player 's coin count.
125 s8 getCoin(int player) const; ///< Gets @p player 's coin count.
126
127 void setScore(ulong score); ///< Sets the score.
128 int getScore() const; ///< Gets the score.
129
130 void setStaffCreditHighScore(u16 score); ///< Sets the staff credit high score.
131 int getStaffCreditHighScore(); ///< Gets the staff credit high score.
132
133 /// @brief Sets the given hint movie as bought.
134 void onOtehonMenuOpenFlag(int movie);
135
136 /// @brief Checks if the given hint movie was bought.
137 bool isOtehonMenuOpenFlag(int movie) const;
138
139 /// @brief Sets the obtained Star Coin(s) for the given world/level. See ::COURSE_COMPLETION_e.
140 /// @details Other flags are discarded.
141 void setCollectCoin(int world, int level, u8 coins);
142
143 /// @brief Gets the obtainable Star Coin count for the given world.
144 int getTotalWorldCollectCoin(int world);
145
146 /// @brief Checks if the given Star Coin has been obtained in the given world/level.
147 u8 isCollectCoin(int world, int level, int coin) const;
148
149 /// @brief Sets the starting Toad House type in the given world. See ::START_KINOKO_KIND_e.
150 void setStartKinokoKind(int world, u8 type);
151
152 /// @brief Gets the starting Toad House type in the given world. See ::START_KINOKO_KIND_e.
153 int getStartKinokoKind(int world) const;
154
155 /**
156 * @brief Sets the death count in a specific stage.
157 * @param world The world.
158 * @param level The level.
159 * @param isSwitchPressed If the worldmap switch was activated [only used for level 3-4].
160 * @param count The death count.
161 */
162 void setDeathCount(int world, int level, bool isSwitchPressed, u8 count);
163
164 /**
165 * @brief Gets the death count in a specific stage.
166 * @param world The world.
167 * @param level The level.
168 * @param isSwitchPressed If the worldmap switch was activated [only used for level 3-4].
169 * @return The death count.
170 */
171 int getDeathCount(int world, int level, bool isSwitchPressed) const;
172
173 void setContinue(int player, s8 continues); ///< Sets @p player 's continue count.
174 s8 getContinue(int player) const; ///< Gets @p player 's continue count.
175
176 void setStockItem(int item, s8 count); ///< Sets the inventory amount for the given item.
177 inline s8 getStockItem(int item) { return mStockItemCount[item]; } // [why was this inlined?]
178
179 /// @brief Checks if the completion flag(s) for the given world is set. See ::WORLD_COMPLETION_e.
180 u8 isWorldDataFlag(int world, u8 flag) const;
181
182 /// @brief Sets the specified flag(s) for the given world. See ::WORLD_COMPLETION_e.
183 void onWorldDataFlag(int world, u8 flag);
184
185 /// @brief Unsets the specified flag(s) for the given world. See ::WORLD_COMPLETION_e.
186 void offWorldDataFlag(int world, u8 flag);
187
188 /// @brief Checks if the completion flag for the given world/level is set. See ::COURSE_COMPLETION_e.
189 bool isCourseDataFlag(int world, int level, ulong flag) const;
190
191 /// @brief Sets the completion flag(s) for the given world/level. See ::COURSE_COMPLETION_e.
192 void onCourseDataFlag(int world, int level, ulong flag);
193
194 /// @brief Unsets the completion flag(s) for the given world/level. See ::COURSE_COMPLETION_e.
195 void offCourseDataFlag(int world, int level, ulong flag);
196
197 /// @brief Gets all the completion flags for the given world/level. See ::COURSE_COMPLETION_e.
198 int getCourseDataFlag(int world, int level) const;
199
200 /// @brief Sets the revival counter for the given map enemy.
201 void setCSEnemyRevivalCnt(int world, int enemy, int count);
202
203 /// @brief Gets the revival counter for the given map enemy.
204 u8 getCSEnemyRevivalCnt(int world, int enemy) const;
205
206 /// @brief Sets the subworld number for the given map enemy.
207 void setCSEnemySceneNo(int world, int enemy, u8 subworld);
208
209 /// @brief Gets the subworld number for the given map enemy.
210 u8 getCSEnemySceneNo(int world, int enemy) const;
211
212 /// @brief Sets the path node for the given map enemy.
213 void setCSEnemyPosIndex(int world, int enemy, u8 node);
214
215 /// @brief Gets the path node for the given map enemy.
216 u8 getCSEnemyPosIndex(int world, int enemy) const;
217
218 /// @brief Sets the path direction for the given map enemy.
219 /// @details Values are: 0 (forwards), 1 (backwards) and 2 (initial value).
220 /// @todo Turn the value list into an enum and move it to the appropriate section once decompiled.
221 void setCSEnemyWalkDir(int world, int enemy, u8 direction);
222
223 /// @brief Gets the path direction for the given map enemy.
224 u8 getCSEnemyWalkDir(int world, int enemy) const;
225
226 /// @brief Sets the Toad rescue level for the given world.
227 void setKinopioCourseNo(int world, int level);
228 u8 getKinopioCourseNo(int world) const; ///< Gets the Toad rescue level for the given world.
229
230 void setIbaraNow(int ibaraNow); ///< Sets the worldmap vine reshuffle counter.
231 u8 getIbaraNow() const; ///< Gets the worldmap vine reshuffle counter.
232
233private:
234 /// @brief Checks that the save data version matches the current one and clears the slot if not.
235 void versionUpdate();
236
237 /// @brief Sets the death count for World 3-4 for the worldmap switch-enabled variant.
238 /// @unofficial
239 void setSwitchDeathCount(u8 count);
240
241 /// @brief Gets the death count for World 3-4 for the worldmap switch-enabled variant.
242 /// @unofficial
243 int getSwitchDeathCount() const;
244
245 u8 mRevision[2]; ///< The save data version and subversion. See ::SAVE_REVISION_MAJOR and ::SAVE_REVISION_MINOR.
246
247 u8 mGameCompletion; ///< The overall completion of the save slot. See ::GAME_COMPLETION_e.
248
249 u8 mCurrentWorld; ///< The world the player is currently in.
250 u8 mCurrentSubWorld; ///< The subworld the player is currently in.
251 u8 mCurrentPathNode; ///< The path node the player is currently on.
252
253 /// @brief The worldmap vine reshuffle counter.
254 /// @details [Value decreases every time a level is played. If it reaches zero, the vines are moved].
256
257 u8 mSwitchOn; ///< The status of the worldmap switch.
258 u8 mUnknown8; ///< @unused
259
260 u8 mStockItemCount[POWERUP_COUNT]; ///< The inventory amount for each item.
261
262 /// @brief The starting Toad House type for each world. See ::START_KINOKO_KIND_e.
263 u8 mStartKinokoType[WORLD_COUNT];
264
265 u8 mPlayerContinue[PLAYER_COUNT]; ///< The continue count for each player.
266 s8 mPlayerCoin[PLAYER_COUNT]; ///< The coin count for each player.
267 u8 mPlayerLife[PLAYER_COUNT]; ///< The life count for each player.
268 u8 mPlayerCreateItem[PLAYER_COUNT]; ///< The Star Power flag for each player. See ::PLAYER_CREATE_ITEM_e.
269 u8 mPlayerCharacter[PLAYER_COUNT]; ///< The character for each player. See ::PLAYER_CHARACTER_e.
270 u8 mPlayerPowerup[PLAYER_COUNT]; ///< The powerup for each player. See ::PLAYER_POWERUP_e.
271
272 u8 mWorldCompletion[WORLD_COUNT]; ///< The completion flags for each world. See ::WORLD_COMPLETION_e.
273 u8 mEnemyRevivalCount[WORLD_COUNT][AMBUSH_ENEMY_COUNT]; ///< The revival counter for each map enemy.
274
275 u16 mUnknown64; ///< @unused
276 u16 mStaffRollHighScore; ///< The staff credits high score.
277 u32 mScore; ///< The regular score.
278
279 /// @brief The completion flags for each level. See ::COURSE_COMPLETION_e.
280 u32 mStageCompletion[WORLD_COUNT][STAGE_COUNT];
281 bool mOtehonMenuOpen[HINT_MOVIE_COUNT]; ///< The hint movie bought status for each movie.
282 u8 mKinopioCourseNo[WORLD_COUNT]; ///< The Toad Rescue level for each world.
283
284 u8 mEnemySceneNo[WORLD_COUNT][AMBUSH_ENEMY_COUNT]; ///< The subworld number for each map enemy.
285 u8 mEnemyPosIndex[WORLD_COUNT][AMBUSH_ENEMY_COUNT]; ///< The path node for each map enemy.
286 u8 mEnemyWalkDir[WORLD_COUNT][AMBUSH_ENEMY_COUNT]; ///< The movement direction for each map enemy.
287
288 /// @brief The death count for each level.
289 /// @details The value is cumulative, and not reset after clearing the level.
290 u8 mDeathCount[WORLD_COUNT][STAGE_COUNT];
291 u8 mDeathCountSwitch; ///< The death count for the worldmap switch variant of World 3-4. See ::mDeathCount.
292
293 u8 pad[0x13]; // [Aligns the data to 32]
294 u32 mChecksum; ///< The CRC32 checksum of the above data.
295
296 /// @brief The default character for each player.
297 /// @unofficial
298 static const u32 sDefaultCharacters[4];
299
300 friend class dSaveMng_c;
301};
u8 getCSEnemyPosIndex(int world, int enemy) const
Gets the path node for the given map enemy.
GAME_COMPLETION_e
The overall completion status of the save slot.
@ FINAL_BOSS_BEATEN
The final boss was beaten.
@ COIN_ALL
All the Star Coins in the regular worlds were obtained.
@ GAME_COMPLETED
All the above objectives were completed.
@ SUPER_GUIDE_TRIGGERED
The player died at least SUPER_GUIDE_DEATH_COUNT times in a single stage.
@ GOAL_ALL
All levels were completed.
@ COIN_ALL_SPECIAL
All the Star Coins in the special worlds were obtained.
@ SAVE_EMPTY
The slot is empty.
int getSwitchDeathCount() const
Gets the death count for World 3-4 for the worldmap switch-enabled variant.
s8 getContinue(int player) const
Gets player 's continue count.
u8 mIbaraNow
The worldmap vine reshuffle counter.
u32 mStageCompletion[WORLD_COUNT][STAGE_COUNT]
The completion flags for each level. See COURSE_COMPLETION_e.
WORLD_COMPLETION_e
The completion status of each world.
int getStartKinokoKind(int world) const
Gets the starting Toad House type in the given world. See START_KINOKO_KIND_e.
void offCourseDataFlag(int world, int level, ulong flag)
Unsets the completion flag(s) for the given world/level. See COURSE_COMPLETION_e.
u8 mSwitchOn
The status of the worldmap switch.
void setScore(ulong score)
Sets the score.
u8 mEnemySceneNo[WORLD_COUNT][AMBUSH_ENEMY_COUNT]
The subworld number for each map enemy.
void setSwitchDeathCount(u8 count)
Sets the death count for World 3-4 for the worldmap switch-enabled variant.
void setStockItem(int item, s8 count)
Sets the inventory amount for the given item.
u8 mPlayerContinue[PLAYER_COUNT]
The continue count for each player.
void setCSEnemySceneNo(int world, int enemy, u8 subworld)
Sets the subworld number for the given map enemy.
bool mOtehonMenuOpen[HINT_MOVIE_COUNT]
The hint movie bought status for each movie.
u8 getCSEnemySceneNo(int world, int enemy) const
Gets the subworld number for the given map enemy.
u16 mStaffRollHighScore
The staff credits high score.
u8 mPlayerCreateItem[PLAYER_COUNT]
The Star Power flag for each player. See PLAYER_CREATE_ITEM_e.
u8 getCSEnemyWalkDir(int world, int enemy) const
Gets the path direction for the given map enemy.
void setContinue(int player, s8 continues)
Sets player 's continue count.
void setPlrID(int player, int character)
Sets player 's character. See PLAYER_CHARACTER_e.
u8 mEnemyRevivalCount[WORLD_COUNT][AMBUSH_ENEMY_COUNT]
The revival counter for each map enemy.
void initialize()
Initializes the slot data.
u8 mPlayerPowerup[PLAYER_COUNT]
The powerup for each player. See PLAYER_POWERUP_e.
void onCourseDataFlag(int world, int level, ulong flag)
Sets the completion flag(s) for the given world/level. See COURSE_COMPLETION_e.
START_KINOKO_KIND_e
The Toad House types at the start node of each world.
u8 getCSEnemyRevivalCnt(int world, int enemy) const
Gets the revival counter for the given map enemy.
void setRest(int player, u8 lives)
Sets player 's life count.
int getRest(int player) const
Gets player 's life count.
void setStaffCreditHighScore(u16 score)
Sets the staff credit high score.
u32 mScore
The regular score.
u8 isWorldDataFlag(int world, u8 flag) const
Checks if the completion flag(s) for the given world is set. See WORLD_COMPLETION_e.
void setDeathCount(int world, int level, bool isSwitchPressed, u8 count)
Sets the death count in a specific stage.
u8 mStockItemCount[POWERUP_COUNT]
The inventory amount for each item.
u8 mDeathCount[WORLD_COUNT][STAGE_COUNT]
The death count for each level.
void setIbaraNow(int ibaraNow)
Sets the worldmap vine reshuffle counter.
void setCSEnemyPosIndex(int world, int enemy, u8 node)
Sets the path node for the given map enemy.
void setStartKinokoKind(int world, u8 type)
Sets the starting Toad House type in the given world. See START_KINOKO_KIND_e.
u8 mCurrentPathNode
The path node the player is currently on.
u8 mGameCompletion
The overall completion of the save slot. See GAME_COMPLETION_e.
int getStaffCreditHighScore()
Gets the staff credit high score.
u8 mEnemyWalkDir[WORLD_COUNT][AMBUSH_ENEMY_COUNT]
The movement direction for each map enemy.
int getCourseDataFlag(int world, int level) const
Gets all the completion flags for the given world/level. See COURSE_COMPLETION_e.
COURSE_COMPLETION_e
The completion status of each level.
@ SUPER_GUIDE_GOAL_NORMAL
The regular exit was cleared with the Super Guide.
@ GOAL_NORMAL
The regular exit was cleared.
@ GOAL_SECRET
The secret exit was cleared.
@ COIN1_COLLECTED
The first Star Coin was obtained.
@ COIN3_COLLECTED
The third Star Coin was obtained.
@ SUPER_GUIDE_GOAL_SECRET
The secret exit was cleared with the Super Guide.
@ COIN2_COLLECTED
The second Star Coin was obtained.
int getDeathCount(int world, int level, bool isSwitchPressed) const
Gets the death count in a specific stage.
void setPlrMode(int player, u8 powerup)
Sets player 's powerup. See PLAYER_POWERUP_e.
void setCSEnemyRevivalCnt(int world, int enemy, int count)
Sets the revival counter for the given map enemy.
int getScore() const
Gets the score.
u8 isCollectCoin(int world, int level, int coin) const
Checks if the given Star Coin has been obtained in the given world/level.
u32 mChecksum
The CRC32 checksum of the above data.
int getPlrID(int player) const
Gets player 's character. See PLAYER_CHARACTER_e.
void setCreateItem(int player, u8 flag)
Sets player 's createItem flag. See PLAYER_CREATE_ITEM_e.
u8 mPlayerCharacter[PLAYER_COUNT]
The character for each player. See PLAYER_CHARACTER_e.
void setCollectCoin(int world, int level, u8 coins)
Sets the obtained Star Coin(s) for the given world/level. See COURSE_COMPLETION_e.
u8 mPlayerLife[PLAYER_COUNT]
The life count for each player.
void versionUpdate()
Checks that the save data version matches the current one and clears the slot if not.
bool isCourseDataFlag(int world, int level, ulong flag) const
Checks if the completion flag for the given world/level is set. See COURSE_COMPLETION_e.
void offWorldDataFlag(int world, u8 flag)
Unsets the specified flag(s) for the given world. See WORLD_COMPLETION_e.
int getPlrMode(int player) const
Gets player 's powerup. See PLAYER_POWERUP_e.
u8 mDeathCountSwitch
The death count for the worldmap switch variant of World 3-4. See mDeathCount.
u8 mCurrentSubWorld
The subworld the player is currently in.
void onOtehonMenuOpenFlag(int movie)
Sets the given hint movie as bought.
u8 mRevision[2]
The save data version and subversion. See SAVE_REVISION_MAJOR and SAVE_REVISION_MINOR.
bool isOtehonMenuOpenFlag(int movie) const
Checks if the given hint movie was bought.
~dMj2dGame_c()
Deletes the holder.
void onWorldDataFlag(int world, u8 flag)
Sets the specified flag(s) for the given world. See WORLD_COMPLETION_e.
void setKinopioCourseNo(int world, int level)
Sets the Toad rescue level for the given world.
u8 mCurrentWorld
The world the player is currently in.
u8 mEnemyPosIndex[WORLD_COUNT][AMBUSH_ENEMY_COUNT]
The path node for each map enemy.
u8 mKinopioCourseNo[WORLD_COUNT]
The Toad Rescue level for each world.
u8 mWorldCompletion[WORLD_COUNT]
The completion flags for each world. See WORLD_COMPLETION_e.
s8 mPlayerCoin[PLAYER_COUNT]
The coin count for each player.
void setCoin(int player, s8 coins)
Sets player 's coin count.
dMj2dGame_c()
Constructs the holder.
u8 mStartKinokoType[WORLD_COUNT]
The starting Toad House type for each world. See START_KINOKO_KIND_e.
int getTotalWorldCollectCoin(int world)
Gets the obtainable Star Coin count for the given world.
int getCreateItem(int player) const
Gets player 's createItem flag. See PLAYER_CREATE_ITEM_e.
u8 getKinopioCourseNo(int world) const
Gets the Toad rescue level for the given world.
static const u32 sDefaultCharacters[4]
The default character for each player.
s8 getCoin(int player) const
Gets player 's coin count.
void setCSEnemyWalkDir(int world, int enemy, u8 direction)
Sets the path direction for the given map enemy.
u8 getIbaraNow() const
Gets the worldmap vine reshuffle counter.
void setPlayCountFreeMode(int world, int level, int count)
Sets the Free Mode play count for the given world/level. See mPlayCountFreeMode.
u16 mPlayCountFreeMode[WORLD_COUNT][STAGE_COUNT]
The play count of each level in Free Mode.
u8 mUnknown7
Padding.
bool isMultiWorldOpenFlag(int world)
Checks if the given world is unlocked in extra modes.
char mMagic[4]
The savegame magic. See SAVE_MAGIC.
u16 mPlayCountCoinBattle[WORLD_COUNT][STAGE_COUNT]
The play count of each level in Coin Battle.
void initialize()
Initializes the header data.
dMj2dHeader_c()
Constructs the holder.
void versionUpdate()
Ensures that the save's major revision number matches the current one.
void setPlayCountCoinBattle(int world, int level, int count)
Sets the Coin Battle play count for the given world/level. See mPlayCountCoinBattle.
u16 getPlayCountFreeMode(int world, int level) const
Gets the Free Mode play count for the given world/level. See mPlayCountFreeMode.
void setSelectFileNo(s8 file)
Sets the last used save data slot.
u8 mRevision[2]
The save revision numbers. See SAVE_REVISION_MAJOR and SAVE_REVISION_MINOR.
u16 mMultiWorldOpenFlag
The worlds unlocked in Extra Modes.
u32 mChecksum
The CRC32 checksum of the above data (excluding mMagic).
void onMultiWorldOpenFlag(int world)
Unlocks the given world in extra modes.
u8 mLastSelectedFile
The last selected save data slot.
u16 mUnknown69A
Padding.
u16 getPlayCountCoinBattle(int world, int level) const
Gets the Coin Battle play count for the given world/level. See mPlayCountCoinBattle.
#define HINT_MOVIE_COUNT
The total hint movie count.
#define AMBUSH_ENEMY_COUNT
The maximum amount of ambush enemies per world map.