diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index a9ea46998..c324afb47 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -3918,7 +3918,7 @@ void mpsetupfileLoadWad(struct savebuffer *buffer) s32 i; s32 j; - savebufferReadString_ext(buffer, g_MpSetup.name, false, MPSETUP_MAXSETUPS+1); + savebufferReadString_ext(buffer, g_MpSetup.name, false, MPSETUP_MAXNAME+1); savebufferReadBits(buffer, 4); g_MpSetup.stagenum = savebufferReadBits(buffer, 7); @@ -3973,7 +3973,7 @@ void mpsetupfileSaveWad(struct savebuffer *buffer) s32 mpbodynum; s32 i; - func0f0d55a4_ext(buffer, g_MpSetup.name, MPSETUP_MAXSETUPS+1); + func0f0d55a4_ext(buffer, g_MpSetup.name, MPSETUP_MAXNAME+1); for (i = 0; i < MAX_BOTS; i++) { if (g_MpSetup.chrslots & (1 << (i + 4))) { @@ -4033,9 +4033,9 @@ void mpsetupfileGetOverview(char *arg0, char *filename, u16 *numsims, u16 *stage { struct savebuffer buffer; - savebufferWriteData(&buffer, arg0, 15); + savebufferWriteData(&buffer, arg0, 22); - savebufferReadString(&buffer, filename, 0); + savebufferReadString_ext(&buffer, filename, 0, MPSETUP_MAXNAME+1); *numsims = savebufferReadBits(&buffer, 4); *stagenum = savebufferReadBits(&buffer, 7); diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index f7a504382..0c4df1f51 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -421,7 +421,7 @@ void scenarioReadSave(struct savebuffer *buffer) if (g_MpScenarios[g_MpSetup.scenario].readsavefunc) { g_MpScenarios[g_MpSetup.scenario].readsavefunc(buffer); } else { - savebufferReadBits(buffer, 8); + savebufferReadBits(buffer, 32); } } diff --git a/src/game/mplayer/setup.c b/src/game/mplayer/setup.c index 694b72649..02ec00730 100644 --- a/src/game/mplayer/setup.c +++ b/src/game/mplayer/setup.c @@ -2262,7 +2262,7 @@ MenuItemHandlerResult mpLoadSettingsMenuHandler(s32 operation, struct menuitem * } if (g_MpSetupFile.numsetups > 0) { struct setupblock *block = &g_MpSetupFile.setups[data->list.value - mpGetNumUnlockedPresets()]; - func0f0d564c_ext(block->bytes, g_StringPointer, false, MPSETUP_MAXSETUPS+1); + func0f0d564c_ext(block->bytes, g_StringPointer, false, MPSETUP_MAXNAME+1); return (uintptr_t)g_StringPointer; } break; @@ -2303,6 +2303,9 @@ MenuItemHandlerResult mpLoadSettingsMenuHandler(s32 operation, struct menuitem * if (data->list.value < mpGetNumUnlockedPresets()) { g_Menus[g_MpPlayerNum].mpsetup.slotindex = 0xffff; } + else { + g_Menus[g_MpPlayerNum].mpsetup.slotindex = data->list.value - mpGetNumUnlockedPresets(); + } break; } @@ -2318,14 +2321,14 @@ char *mpMenuTextMpconfigMarquee(struct menuitem *item) s32 arenanum; s32 i; - if (g_Menus[g_MpPlayerNum].mpsetup.slotindex < 0xffff && g_FileLists[1]) { + if (g_Menus[g_MpPlayerNum].mpsetup.slotindex < 0xffff && g_MpSetupFile.numsetups > 0) { #if VERSION >= VERSION_NTSC_1_0 arenanum = -1; #else arenanum = 0; #endif - mpsetupfileGetOverview(g_FileLists[1]->files[g_Menus[g_MpPlayerNum].mpsetup.slotindex].name, + mpsetupfileGetOverview(g_MpSetupFile.setups[g_Menus[g_MpPlayerNum].mpsetup.slotindex].bytes, filename, &numsims, &stagenum, &scenarionum); for (i = 0; i < ARRAYCOUNT(g_MpArenas); i++) {