Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
versioning.c File Reference

Go to the source code of this file.

Macros

#define COPY_S8_ARRAY(new, old)   ver_copy_s8_array(new, old, ARRAY_COUNT(old), ARRAY_COUNT(new));
 
#define COPY_S16_ARRAY(new, old)   ver_copy_s16_array(new, old, ARRAY_COUNT(old), ARRAY_COUNT(new));
 
#define COPY_S32_ARRAY(new, old)   ver_copy_s32_array(new, old, ARRAY_COUNT(old), ARRAY_COUNT(new));
 
#define PORT_ITEM_IDS(array, map)   ver_copy_s16_array(array, map, ARRAY_COUNT(array), ARRAY_COUNT(map));
 

Functions

void ver_deserialize_standard (SaveData *save)
 Load save file data from a supported save version Assumes no changes in the SaveData, PlayerData, or PartnerData structs and no remapped item IDs.
 
void ver_deserialize_vanilla_save (SaveData *save)
 
void fio_serialize_state ()
 Store current game data to gCurrentSaveFile.
 
void fio_deserialize_state ()
 Load game data from gCurrentSaveFile Performs version checking and supports potential migration between versions.
 
void ver_copy_s8_array (s8 *dest, s8 *src, s32 srcMax, s32 destMax)
 
void ver_copy_s16_array (s16 *dest, s16 *src, s32 srcMax, s32 destMax)
 
void ver_copy_s32_array (s32 *dest, s32 *src, s32 srcMax, s32 destMax)
 
void ver_port_item_ids (s16 *array, s16 *mapping, s32 size, s32 mapMax)
 

Variables

s16 VanillaItemIDs []
 

Macro Definition Documentation

◆ COPY_S8_ARRAY

#define COPY_S8_ARRAY ( new,
old )   ver_copy_s8_array(new, old, ARRAY_COUNT(old), ARRAY_COUNT(new));

Definition at line 126 of file versioning.c.

Referenced by ver_deserialize_vanilla_save().

◆ COPY_S16_ARRAY

#define COPY_S16_ARRAY ( new,
old )   ver_copy_s16_array(new, old, ARRAY_COUNT(old), ARRAY_COUNT(new));

Definition at line 127 of file versioning.c.

Referenced by ver_deserialize_vanilla_save().

◆ COPY_S32_ARRAY

#define COPY_S32_ARRAY ( new,
old )   ver_copy_s32_array(new, old, ARRAY_COUNT(old), ARRAY_COUNT(new));

Definition at line 128 of file versioning.c.

Referenced by ver_deserialize_vanilla_save().

◆ PORT_ITEM_IDS

#define PORT_ITEM_IDS ( array,
map )   ver_copy_s16_array(array, map, ARRAY_COUNT(array), ARRAY_COUNT(map));

Definition at line 130 of file versioning.c.

Referenced by ver_deserialize_vanilla_save().

Function Documentation

◆ ver_deserialize_standard()

void ver_deserialize_standard ( SaveData * save)

Load save file data from a supported save version Assumes no changes in the SaveData, PlayerData, or PartnerData structs and no remapped item IDs.

Definition at line 61 of file versioning.c.

61 {
62 s32 i, j;
63
64 // simply copy the saved player data
65 gPlayerData = save->player;
66
67 // copy saved game status fields to GameStatus
68 gGameStatus.areaID = save->areaID;
69 gGameStatus.mapID = save->mapID;
70 gGameStatus.entryID = save->entryID;
71 gGameStatus.savedPos.x = save->savePos.x;
72 gGameStatus.savedPos.y = save->savePos.y;
73 gGameStatus.savedPos.z = save->savePos.z;
74
75 // copy saved enemy defeat flags
76 for (i = 0; i < ARRAY_COUNT(gCurrentEncounter.defeatFlags[0]); i++) {
77 for (j = 0; j < ARRAY_COUNT(gCurrentEncounter.defeatFlags); j++) {
78 gCurrentEncounter.defeatFlags[j][i] = save->enemyDefeatFlags[j][i];
79 }
80 }
81}
BSS s32 PopupMenu_SelectedIndex
EncounterStatus gCurrentEncounter
Definition encounter.c:175
s32 defeatFlags[60][12]
Definition npc.h:403
#define ARRAY_COUNT(arr)
Definition macros.h:40
GameStatus gGameStatus
Definition main_loop.c:20
PlayerData gPlayerData
Definition 77480.c:39

Referenced by fio_deserialize_state().

◆ ver_deserialize_vanilla_save()

void ver_deserialize_vanilla_save ( SaveData * save)

Definition at line 502 of file versioning.c.

502 {
504 s32 i, j;
505
507 memset(newSave, 0, sizeof(SaveData));
508
509 strcpy(newSave->magicString, oldSave.magicString);
510 memcpy(newSave->modName, oldSave.version, ARRAY_COUNT(oldSave.version));
511
512 // copy metadata
513 newSave->saveSlot = oldSave.saveSlot;
514 newSave->saveCount = oldSave.saveCount;
515 memcpy(newSave->summary.filename, oldSave.summary.filename, ARRAY_COUNT(newSave->summary.filename));
516 newSave->summary.level = oldSave.summary.level;
517 newSave->summary.timePlayed = oldSave.summary.timePlayed;
518 newSave->summary.spiritsRescued = oldSave.summary.spiritsRescued;
519
520 // copy world location
521 newSave->areaID = oldSave.areaID;
522 newSave->mapID = oldSave.mapID;
523 newSave->entryID = oldSave.entryID;
524 newSave->savePos = oldSave.savePos;
525
526 // defeat flags are unchanged
527 for (i = 0; i < ARRAY_COUNT(gCurrentEncounter.defeatFlags[0]); i++) {
528 for (j = 0; j < ARRAY_COUNT(gCurrentEncounter.defeatFlags); j++) {
529 gCurrentEncounter.defeatFlags[j][i] = newSave->enemyDefeatFlags[j][i];
530 }
531 }
532
533 // saved variable arrays may have been expanded
534 COPY_S32_ARRAY(newSave->globalFlags, oldSave.globalFlags);
535 COPY_S32_ARRAY(newSave->areaFlags, oldSave.areaFlags);
536 COPY_S8_ARRAY(newSave->globalBytes, oldSave.globalBytes);
537 COPY_S8_ARRAY(newSave->areaBytes, oldSave.areaBytes);
538
539 PlayerData* newPlayer = &newSave->player;
541
542 newPlayer->curHP = oldPlayer->curHP;
543 newPlayer->curMaxHP = oldPlayer->curMaxHP;
544 newPlayer->hardMaxHP = oldPlayer->hardMaxHP;
545 newPlayer->curFP = oldPlayer->curFP;
546 newPlayer->curMaxFP = oldPlayer->curMaxFP;
547 newPlayer->hardMaxFP = oldPlayer->hardMaxFP;
548 newPlayer->maxBP = oldPlayer->maxBP;
549
550 newPlayer->level = oldPlayer->level;
551 newPlayer->starPoints = oldPlayer->starPoints;
552
553 newPlayer->bootsLevel = oldPlayer->bootsLevel;
554 newPlayer->hammerLevel = oldPlayer->hammerLevel;
555 newPlayer->hasActionCommands = oldPlayer->hasActionCommands;
556
557 newPlayer->coins = oldPlayer->coins;
558 newPlayer->starPieces = oldPlayer->starPieces;
559
560 newPlayer->curPartner = oldPlayer->curPartner;
561 for (i = 0; i < ARRAY_COUNT(oldPlayer->partners); i++) {
562 newPlayer->partners[i].enabled = oldPlayer->partners[i].enabled;
563 newPlayer->partners[i].level = oldPlayer->partners[i].level;
564 }
565
566 COPY_S16_ARRAY(newPlayer->keyItems, oldPlayer->keyItems);
567 COPY_S16_ARRAY(newPlayer->badges, oldPlayer->badges);
568 COPY_S16_ARRAY(newPlayer->invItems, oldPlayer->invItems);
569 COPY_S16_ARRAY(newPlayer->storedItems, oldPlayer->storedItems);
570 COPY_S16_ARRAY(newPlayer->equippedBadges, oldPlayer->equippedBadges);
571
576 PORT_ITEM_IDS(newPlayer->equippedBadges, VanillaItemIDs);
577
578 newPlayer->merleeSpellType = oldPlayer->merleeSpellType;
579 newPlayer->merleeCastsLeft = oldPlayer->merleeCastsLeft;
580 newPlayer->merleeTurnCount = oldPlayer->merleeTurnCount;
581
582 newPlayer->starPower = oldPlayer->starPower;
583 newPlayer->maxStarPower = oldPlayer->maxStarPower;
584 newPlayer->starBeamLevel = oldPlayer->starBeamLevel;
585
586 newPlayer->actionCommandAttempts = oldPlayer->actionCommandAttempts;
587 newPlayer->actionCommandSuccesses = oldPlayer->actionCommandSuccesses;
588 newPlayer->hitsTaken = oldPlayer->hitsTaken;
589 newPlayer->hitsBlocked = oldPlayer->hitsBlocked;
590 newPlayer->playerFirstStrikes = oldPlayer->playerFirstStrikes;
591 newPlayer->enemyFirstStrikes = oldPlayer->enemyFirstStrikes;
592 newPlayer->powerBounces = oldPlayer->powerBounces;
593 newPlayer->battlesCount = oldPlayer->battlesCount;
594 newPlayer->battlesWon = oldPlayer->battlesWon;
595 newPlayer->fleeAttempts = oldPlayer->fleeAttempts;
596 newPlayer->battlesFled = oldPlayer->battlesFled;
597 newPlayer->trainingsDone = oldPlayer->trainingsDone;
598 newPlayer->walkingStepsTaken = oldPlayer->walkingStepsTaken;
599 newPlayer->runningStepsTaken = oldPlayer->runningStepsTaken;
600 newPlayer->totalCoinsEarned = oldPlayer->totalCoinsEarned;
601 newPlayer->idleFrameCounter = oldPlayer->idleFrameCounter;
602 newPlayer->frameCounter = oldPlayer->frameCounter;
603 newPlayer->quizzesAnswered = oldPlayer->quizzesAnswered;
604 newPlayer->quizzesCorrect = oldPlayer->quizzesCorrect;
605
606 COPY_S32_ARRAY(newPlayer->partnerUnlockedTime, oldPlayer->partnerUnlockedTime);
607 COPY_S32_ARRAY(newPlayer->partnerUsedTime, oldPlayer->partnerUsedTime);
608
609 newPlayer->tradeEventStartTime = oldPlayer->tradeEventStartTime;
610 newPlayer->droTreeHintTime = oldPlayer->droTreeHintTime;
611 newPlayer->starPiecesCollected = oldPlayer->starPiecesCollected;
612 newPlayer->jumpGamePlays = oldPlayer->jumpGamePlays;
613 newPlayer->jumpGameTotal = oldPlayer->jumpGameTotal;
614 newPlayer->jumpGameRecord = oldPlayer->jumpGameRecord;
615 newPlayer->smashGamePlays = oldPlayer->smashGamePlays;
616 newPlayer->smashGameTotal = oldPlayer->smashGameTotal;
617 newPlayer->smashGameRecord = oldPlayer->smashGameRecord;
618}
#define COPY_S16_ARRAY(new, old)
Definition versioning.c:127
#define PORT_ITEM_IDS(array, map)
Definition versioning.c:130
#define COPY_S8_ARRAY(new, old)
Definition versioning.c:126
s16 VanillaItemIDs[]
Definition versioning.c:134
#define COPY_S32_ARRAY(new, old)
Definition versioning.c:128
PlayerData struct from unmodified Paper Mario.
Definition versioning.h:36
SaveData struct from unmodified Paper Mario.
Definition versioning.h:107

Referenced by fio_deserialize_state().

◆ fio_serialize_state()

void fio_serialize_state ( )

Store current game data to gCurrentSaveFile.

Definition at line 9 of file versioning.c.

9 {
11 s32 i, j;
12
14
15 saveData->areaID = gGameStatus.areaID;
16 saveData->mapID = gGameStatus.mapID;
17 saveData->entryID = gGameStatus.entryID;
18 saveData->savePos.x = gGameStatus.savedPos.x;
19 saveData->savePos.y = gGameStatus.savedPos.y;
20 saveData->savePos.z = gGameStatus.savedPos.z;
21
22 for (i = 0; i < ARRAY_COUNT(gCurrentEncounter.defeatFlags[0]); i++) {
23 for (j = 0; j < ARRAY_COUNT(gCurrentEncounter.defeatFlags); j++) {
24 saveData->enemyDefeatFlags[j][i] = gCurrentEncounter.defeatFlags[j][i];
25 }
26 }
27
28 saveData->debugEnemyContact = gGameStatus.debugEnemyContact;
29 saveData->debugUnused1 = gGameStatus.debugUnused1;
30 saveData->debugUnused2 = gGameStatus.debugUnused2;
31 saveData->musicEnabled = gGameStatus.musicEnabled;
32}
PlayerData player
Definition versioning.h:154
SaveData gCurrentSaveFile
Definition fio.c:21

Referenced by fio_save_game().

◆ fio_deserialize_state()

void fio_deserialize_state ( void )

Load game data from gCurrentSaveFile Performs version checking and supports potential migration between versions.

Definition at line 36 of file versioning.c.

36 {
38
39 if (saveData->modName[0] == '\0') {
40 // handle loading vanilla saves here
42 } else if (strcmp(saveData->modName, DX_MOD_NAME) != 0) {
43 // handle loading saves from other mods here
44 // by default, dx assumes other mod save data format is vanilla
46 } else if (saveData->majorVersion != DX_MOD_VER_MAJOR) {
47 // handle breaking changes between major versions here
49 } else {
51 }
52
57}
#define DX_MOD_VER_MAJOR
Definition config.h:8
#define DX_MOD_NAME
Creates the version string that appears on the file select menu.
Definition config.h:7
@ DEBUG_CONTACT_NONE
Definition enums.h:3866
void ver_deserialize_vanilla_save(SaveData *save)
Definition versioning.c:502
void ver_deserialize_standard(SaveData *save)
Load save file data from a supported save version Assumes no changes in the SaveData,...
Definition versioning.c:61

Referenced by fio_load_game(), and load_map_by_IDs().

◆ ver_copy_s8_array()

void ver_copy_s8_array ( s8 * dest,
s8 * src,
s32 srcMax,
s32 destMax )

Definition at line 83 of file versioning.c.

83 {
84 s32 i;
85 for (i = 0; i < srcMax; i++) {
86 dest[i] = src[i];
87 }
88 for (; i < destMax; i++) {
89 dest[i] = 0;
90 }
91}

◆ ver_copy_s16_array()

void ver_copy_s16_array ( s16 * dest,
s16 * src,
s32 srcMax,
s32 destMax )

Definition at line 93 of file versioning.c.

93 {
94 s32 i;
95 for (i = 0; i < srcMax; i++) {
96 dest[i] = src[i];
97 }
98 for (; i < destMax; i++) {
99 dest[i] = 0;
100 }
101}

◆ ver_copy_s32_array()

void ver_copy_s32_array ( s32 * dest,
s32 * src,
s32 srcMax,
s32 destMax )

Definition at line 103 of file versioning.c.

103 {
104 s32 i;
105 for (i = 0; i < srcMax; i++) {
106 dest[i] = src[i];
107 }
108 for (; i < destMax; i++) {
109 dest[i] = 0;
110 }
111}

◆ ver_port_item_ids()

void ver_port_item_ids ( s16 * array,
s16 * mapping,
s32 size,
s32 mapMax )

Definition at line 113 of file versioning.c.

113 {
114 s32 i;
115
116 for (i = 0; i < size; i++) {
117 s16 old = array[i];
118 if (old < mapMax) {
119 array[i] = mapping[old];
120 } else {
121 array[i] = ITEM_NONE;
122 }
123 }
124}

Variable Documentation

◆ VanillaItemIDs

s16 VanillaItemIDs[]

Definition at line 134 of file versioning.c.

134 {
135 [0x000] ITEM_NONE,
136 [0x001] ITEM_BOOTS,
137 [0x002] ITEM_SUPER_BOOTS,
138 [0x003] ITEM_ULTRA_BOOTS,
139 [0x004] ITEM_HAMMER,
140 [0x005] ITEM_SUPER_HAMMER,
141 [0x006] ITEM_ULTRA_HAMMER,
142 [0x007] ITEM_LUCKY_STAR,
143 [0x008] ITEM_MAP,
144 [0x009] ITEM_BIG_MAP,
149 [0x00E] ITEM_DIPLOMA,
150 [0x00F] ITEM_ULTRA_STONE,
152 [0x011] ITEM_RUINS_KEY,
153 [0x012] ITEM_PULSE_STONE,
154 [0x013] ITEM_TUBBA_CASTLE_KEY,
156 [0x015] ITEM_LUNAR_STONE,
157 [0x016] ITEM_PYRAMID_STONE,
158 [0x017] ITEM_DIAMOND_STONE,
159 [0x018] ITEM_GOLDEN_JAR,
160 [0x019] ITEM_KOOPER_SHELL,
162 [0x01B] ITEM_FOREST_PASS,
163 [0x01C] ITEM_BOO_WEIGHT,
164 [0x01D] ITEM_BOO_PORTRAIT,
165 [0x01E] ITEM_CRYSTAL_BERRY,
166 [0x01F] ITEM_MYSTICAL_KEY,
167 [0x020] ITEM_STOREROOM_KEY,
168 [0x021] ITEM_TOY_TRAIN,
169 [0x022] ITEM_BOO_RECORD,
170 [0x023] ITEM_FRYING_PAN,
171 [0x024] ITEM_DICTIONARY,
172 [0x025] ITEM_MYSTERY_NOTE,
173 [0x026] ITEM_SUSPICIOUS_NOTE,
174 [0x027] ITEM_CRYSTAL_BALL,
175 [0x028] ITEM_SCREWDRIVER,
176 [0x029] ITEM_COOKBOOK,
177 [0x02A] ITEM_JADE_RAVEN,
178 [0x02B] ITEM_MAGICAL_SEED1,
179 [0x02C] ITEM_MAGICAL_SEED2,
180 [0x02D] ITEM_MAGICAL_SEED3,
181 [0x02E] ITEM_MAGICAL_SEED4,
182 [0x02F] ITEM_TOAD_DOLL,
183 [0x030] ITEM_CALCULATOR,
184 [0x031] ITEM_SNOWMAN_BUCKET,
185 [0x032] ITEM_SNOWMAN_SCARF,
186 [0x033] ITEM_RED_KEY,
187 [0x034] ITEM_BLUE_KEY,
188 [0x035] ITEM_UNUSED_LETTER_1,
189 [0x036] ITEM_LETTER_TO_MERLON,
190 [0x037] ITEM_LETTER_TO_GOOMPA,
191 [0x038] ITEM_LETTER_TO_MORT_T,
192 [0x039] ITEM_LETTER_TO_RUSS_T,
194 [0x03B] ITEM_LETTER_TO_MERLOW,
195 [0x03C] ITEM_LETTER_TO_FICE_T,
197 [0x03E] ITEM_LETTER_TO_MINH_T,
198 [0x03F] ITEM_UNUSED_LETTER_2,
200 [0x041] ITEM_LETTER_TO_IGOR,
201 [0x042] ITEM_UNUSED_LETTER_3,
202 [0x043] ITEM_UNUSED_LETTER_4,
203 [0x044] ITEM_UNUSED_LETTER_5,
212 [0x04D] ITEM_UNUSED_LETTER_6,
218 [0x053] ITEM_ARTIFACT,
220 [0x055] ITEM_UNUSED_LETTER_7,
221 [0x056] ITEM_DOLLY,
222 [0x057] ITEM_WATER_STONE,
223 [0x058] ITEM_MAGICAL_BEAN,
224 [0x059] ITEM_FERTILE_SOIL,
225 [0x05A] ITEM_MIRACLE_WATER,
226 [0x05B] ITEM_VOLCANO_VASE,
227 [0x05C] ITEM_KOOT_THE_TAPE,
228 [0x05D] ITEM_BAKING_SUGAR,
229 [0x05E] ITEM_BAKING_SALT,
230 [0x05F] ITEM_BAKING_EGG,
231 [0x060] ITEM_BAKING_CREAM,
233 [0x062] ITEM_BAKING_BUTTER,
234 [0x063] ITEM_BAKING_CLEANSER,
235 [0x064] ITEM_BAKING_WATER,
236 [0x065] ITEM_BAKING_FLOUR,
237 [0x066] ITEM_BAKING_MILK,
238 [0x067] ITEM_LYRICS,
239 [0x068] ITEM_MELODY,
240 [0x069] ITEM_MAILBAG,
241 [0x06A] ITEM_PEACH_KEY,
242 [0x06B] ITEM_ODD_KEY,
243 [0x06C] ITEM_STAR_STONE,
244 [0x06D] ITEM_SNEAKY_PARASOL,
249 [0x072] ITEM_KOOT_SHELL,
250 [0x073] ITEM_KOOT_OLD_PHOTO,
251 [0x074] ITEM_KOOT_GLASSES,
252 [0x075] ITEM_KOOT_ALT_PHOTO,
253 [0x076] ITEM_KOOT_PACKAGE,
254 [0x077] ITEM_KOOT_RED_JAR,
255 [0x078] ITEM_UNUSED_PEACH_KEY,
256 [0x079] ITEM_WAREHOUSE_KEY,
257 [0x07A] ITEM_PRISON_KEY,
258 [0x07B] ITEM_SILVER_CREDIT,
259 [0x07C] ITEM_GOLD_CREDIT,
263 [0x080] ITEM_FIRE_FLOWER,
264 [0x081] ITEM_SNOWMAN_DOLL,
265 [0x082] ITEM_THUNDER_RAGE,
266 [0x083] ITEM_SHOOTING_STAR,
267 [0x084] ITEM_THUNDER_BOLT,
268 [0x085] ITEM_PEBBLE,
269 [0x086] ITEM_DUSTY_HAMMER,
270 [0x087] ITEM_INSECTICIDE_HERB,
271 [0x088] ITEM_STONE_CAP,
272 [0x089] ITEM_TASTY_TONIC,
273 [0x08A] ITEM_MUSHROOM,
274 [0x08B] ITEM_VOLT_SHROOM,
275 [0x08C] ITEM_SUPER_SHROOM,
276 [0x08D] ITEM_DRIED_SHROOM,
277 [0x08E] ITEM_ULTRA_SHROOM,
278 [0x08F] ITEM_SLEEPY_SHEEP,
279 [0x090] ITEM_POW_BLOCK,
280 [0x091] ITEM_HUSTLE_DRINK,
281 [0x092] ITEM_STOP_WATCH,
282 [0x093] ITEM_WHACKAS_BUMP,
283 [0x094] ITEM_APPLE,
284 [0x095] ITEM_LIFE_SHROOM,
285 [0x096] ITEM_MYSTERY,
286 [0x097] ITEM_REPEL_GEL,
287 [0x098] ITEM_FRIGHT_JAR,
288 [0x099] ITEM_PLEASE_COME_BACK,
289 [0x09A] ITEM_DIZZY_DIAL,
290 [0x09B] ITEM_SUPER_SODA,
291 [0x09C] ITEM_LEMON,
292 [0x09D] ITEM_LIME,
293 [0x09E] ITEM_BLUE_BERRY,
294 [0x09F] ITEM_RED_BERRY,
295 [0x0A0] ITEM_YELLOW_BERRY,
296 [0x0A1] ITEM_BUBBLE_BERRY,
297 [0x0A2] ITEM_JAMMIN_JELLY,
298 [0x0A3] ITEM_MAPLE_SYRUP,
299 [0x0A4] ITEM_HONEY_SYRUP,
300 [0x0A5] ITEM_GOOMNUT,
301 [0x0A6] ITEM_KOOPA_LEAF,
302 [0x0A7] ITEM_DRIED_PASTA,
303 [0x0A8] ITEM_DRIED_FRUIT,
304 [0x0A9] ITEM_STRANGE_LEAF,
305 [0x0AA] ITEM_CAKE_MIX,
306 [0x0AB] ITEM_EGG,
307 [0x0AC] ITEM_COCONUT,
308 [0x0AD] ITEM_MELON,
309 [0x0AE] ITEM_STINKY_HERB,
310 [0x0AF] ITEM_ICED_POTATO,
311 [0x0B0] ITEM_SPICY_SOUP,
312 [0x0B1] ITEM_APPLE_PIE,
313 [0x0B2] ITEM_HONEY_ULTRA,
314 [0x0B3] ITEM_MAPLE_ULTRA,
315 [0x0B4] ITEM_JELLY_ULTRA,
316 [0x0B5] ITEM_KOOPASTA,
317 [0x0B6] ITEM_FRIED_SHROOM,
318 [0x0B7] ITEM_SHROOM_CAKE,
319 [0x0B8] ITEM_SHROOM_STEAK,
320 [0x0B9] ITEM_HOT_SHROOM,
321 [0x0BA] ITEM_SWEET_SHROOM,
322 [0x0BB] ITEM_YUMMY_MEAL,
323 [0x0BC] ITEM_HEALTHY_JUICE,
324 [0x0BD] ITEM_BLAND_MEAL,
325 [0x0BE] ITEM_DELUXE_FEAST,
326 [0x0BF] ITEM_SPECIAL_SHAKE,
327 [0x0C0] ITEM_BIG_COOKIE,
328 [0x0C1] ITEM_CAKE,
329 [0x0C2] ITEM_MISTAKE,
330 [0x0C3] ITEM_KOOPA_TEA,
331 [0x0C4] ITEM_HONEY_SUPER,
332 [0x0C5] ITEM_MAPLE_SUPER,
333 [0x0C6] ITEM_JELLY_SUPER,
334 [0x0C7] ITEM_SPAGHETTI,
335 [0x0C8] ITEM_EGG_MISSILE,
336 [0x0C9] ITEM_FRIED_EGG,
337 [0x0CA] ITEM_HONEY_SHROOM,
338 [0x0CB] ITEM_HONEY_CANDY,
339 [0x0CC] ITEM_ELECTRO_POP,
340 [0x0CD] ITEM_FIRE_POP,
341 [0x0CE] ITEM_LIME_CANDY,
342 [0x0CF] ITEM_COCO_POP,
343 [0x0D0] ITEM_LEMON_CANDY,
344 [0x0D1] ITEM_JELLY_POP,
345 [0x0D2] ITEM_STRANGE_CAKE,
346 [0x0D3] ITEM_KOOKY_COOKIE,
347 [0x0D4] ITEM_FROZEN_FRIES,
348 [0x0D5] ITEM_POTATO_SALAD,
349 [0x0D6] ITEM_NUTTY_CAKE,
350 [0x0D7] ITEM_MAPLE_SHROOM,
351 [0x0D8] ITEM_BOILED_EGG,
352 [0x0D9] ITEM_YOSHI_COOKIE,
353 [0x0DA] ITEM_JELLY_SHROOM,
359 [0x0E0] ITEM_SPIN_SMASH,
360 [0x0E1] ITEM_MULTIBOUNCE,
361 [0x0E2] ITEM_POWER_PLUS_A,
362 [0x0E3] ITEM_DODGE_MASTER,
363 [0x0E4] ITEM_POWER_BOUNCE,
364 [0x0E5] ITEM_SPIKE_SHIELD,
365 [0x0E6] ITEM_FIRST_ATTACK,
366 [0x0E7] ITEM_HP_PLUS_A,
367 [0x0E8] ITEM_QUAKE_HAMMER,
368 [0x0E9] ITEM_DOUBLE_DIP,
369 [0x0EA] ITEM_MYSTERY_SCROLL,
370 [0x0EB] ITEM_SLEEP_STOMP,
371 [0x0EC] ITEM_FIRE_SHIELD,
372 [0x0ED] ITEM_QUICK_CHANGE,
373 [0x0EE] ITEM_D_DOWN_POUND,
374 [0x0EF] ITEM_DIZZY_STOMP,
375 [0x0F0] ITEM_SMASH_CHARGE0,
376 [0x0F1] ITEM_PRETTY_LUCKY,
377 [0x0F2] ITEM_FEELING_FINE,
378 [0x0F3] ITEM_ATTACK_FX_A,
379 [0x0F4] ITEM_ALLOR_NOTHING,
380 [0x0F5] ITEM_HP_DRAIN,
381 [0x0F6] ITEM_JUMP_CHARGE0,
382 [0x0F7] ITEM_SLOW_GO,
383 [0x0F8] ITEM_FP_PLUS_A,
384 [0x0F9] ITEM_MEGA_RUSH,
385 [0x0FA] ITEM_ICE_POWER,
386 [0x0FB] ITEM_DEFEND_PLUS_A,
387 [0x0FC] ITEM_PAY_OFF,
388 [0x0FD] ITEM_MONEY_MONEY,
389 [0x0FE] ITEM_CHILL_OUT,
390 [0x0FF] ITEM_HAPPY_HEART_A,
391 [0x100] ITEM_ZAP_TAP,
392 [0x101] ITEM_BERSERKER,
393 [0x102] ITEM_RIGHT_ON,
394 [0x103] ITEM_RUNAWAY_PAY,
395 [0x104] ITEM_REFUND,
396 [0x105] ITEM_FLOWER_SAVER_A,
397 [0x106] ITEM_TRIPLE_DIP,
398 [0x107] ITEM_HAMMER_THROW,
399 [0x108] ITEM_MEGA_QUAKE,
400 [0x109] ITEM_SMASH_CHARGE,
401 [0x10A] ITEM_JUMP_CHARGE,
402 [0x10B] ITEM_S_SMASH_CHG,
403 [0x10C] ITEM_S_JUMP_CHG,
404 [0x10D] ITEM_POWER_RUSH,
405 [0x10E] ITEM_AUTO_JUMP,
406 [0x10F] ITEM_AUTO_SMASH,
407 [0x110] ITEM_CRAZY_HEART,
408 [0x111] ITEM_LAST_STAND,
409 [0x112] ITEM_CLOSE_CALL,
410 [0x113] ITEM_P_UP_D_DOWN,
411 [0x114] ITEM_LUCKY_DAY,
412 [0x115] ITEM_MEGA_HP_DRAIN,
413 [0x116] ITEM_P_DOWN_D_UP,
414 [0x117] ITEM_POWER_QUAKE,
415 [0x118] ITEM_AUTO_MULTIBOUNCE,
416 [0x119] ITEM_FLOWER_FANATIC,
417 [0x11A] ITEM_HEART_FINDER,
418 [0x11B] ITEM_FLOWER_FINDER,
419 [0x11C] ITEM_SPIN_ATTACK,
420 [0x11D] ITEM_DIZZY_ATTACK,
421 [0x11E] ITEM_I_SPY,
422 [0x11F] ITEM_SPEEDY_SPIN,
423 [0x120] ITEM_BUMP_ATTACK,
424 [0x121] ITEM_POWER_JUMP,
425 [0x122] ITEM_SUPER_JUMP,
426 [0x123] ITEM_MEGA_JUMP,
427 [0x124] ITEM_POWER_SMASH,
428 [0x125] ITEM_SUPER_SMASH,
429 [0x126] ITEM_MEGA_SMASH,
432 [0x129] ITEM_DEEP_FOCUS_A,
433 [0x12A] ITEM_SUPER_FOCUS,
434 [0x12B] ITEM_SHRINK_SMASH,
435 [0x12C] ITEM_SHELL_CRACK,
436 [0x12D] ITEM_KAIDEN,
437 [0x12E] ITEM_D_DOWN_JUMP,
438 [0x12F] ITEM_SHRINK_STOMP,
439 [0x130] ITEM_DAMAGE_DODGE_A,
440 [0x131] ITEM_EARTHQUAKE_JUMP,
441 [0x132] ITEM_DEEP_FOCUS_B,
442 [0x133] ITEM_DEEP_FOCUS_C,
443 [0x134] ITEM_HP_PLUS_B,
444 [0x135] ITEM_FP_PLUS_B,
445 [0x136] ITEM_HAPPY_HEART_B,
446 [0x137] ITEM_HAPPY_HEART_X,
447 [0x138] ITEM_FLOWER_SAVER_B,
448 [0x139] ITEM_FLOWER_SAVER_X,
449 [0x13A] ITEM_DAMAGE_DODGE_B,
450 [0x13B] ITEM_DAMAGE_DODGE_X,
451 [0x13C] ITEM_POWER_PLUS_B,
452 [0x13D] ITEM_POWER_PLUS_X,
453 [0x13E] ITEM_DEFEND_PLUS_X,
454 [0x13F] ITEM_DEFEND_PLUS_Y,
455 [0x140] ITEM_HAPPY_FLOWER_A,
456 [0x141] ITEM_HAPPY_FLOWER_B,
457 [0x142] ITEM_HAPPY_FLOWER_X,
458 [0x143] ITEM_GROUP_FOCUS,
459 [0x144] ITEM_PEEKABOO,
460 [0x145] ITEM_ATTACK_FX_D,
461 [0x146] ITEM_ATTACK_FX_B,
462 [0x147] ITEM_ATTACK_FX_E,
463 [0x148] ITEM_ATTACK_FX_C,
464 [0x149] ITEM_ATTACK_FX_F,
465 [0x14A] ITEM_HP_PLUS_C,
466 [0x14B] ITEM_HP_PLUS_X,
467 [0x14C] ITEM_HP_PLUS_Y,
468 [0x14D] ITEM_FP_PLUS_C,
469 [0x14E] ITEM_FP_PLUS_X,
470 [0x14F] ITEM_FP_PLUS_Y,
471 [0x150] ITEM_HEALTHY_HEALTHY,
476 [0x155] ITEM_PARTNER_ATTACK,
477 [0x156] ITEM_HEART,
478 [0x157] ITEM_COIN,
479 [0x158] ITEM_HEART_PIECE,
480 [0x159] ITEM_STAR_POINT,
481 [0x15A] ITEM_HEART_POINT,
482 [0x15B] ITEM_FLOWER_POINT,
483 [0x15C] ITEM_STAR_PIECE,
484 [0x15D] ITEM_PRESENT,
485 [0x15E] ITEM_CAKE_DONE,
486 [0x15F] ITEM_CAKE_BARE,
487 [0x160] ITEM_CAKE_PAN,
488 [0x161] ITEM_CAKE_BATTER,
489 [0x162] ITEM_CAKE_BOWL,
490 [0x163] ITEM_CAKE_MIXED,
491 [0x164] ITEM_CAKE_WITH_ICING,
493 [0x166] ITEM_MENU_HAMMER1,
494 [0x167] ITEM_MENU_HAMMER2,
495 [0x168] ITEM_MENU_HAMMER3,
496 [0x169] ITEM_MENU_BOOTS1,
497 [0x16A] ITEM_MENU_BOOTS2,
498 [0x16B] ITEM_MENU_BOOTS3,
499 [0x16C] ITEM_MENU_ITEMS,
500};

Referenced by ver_deserialize_vanilla_save().