diff --git a/source/settings/SettingsEnums.h b/source/settings/SettingsEnums.h index 9f0c945b..b60143a9 100644 --- a/source/settings/SettingsEnums.h +++ b/source/settings/SettingsEnums.h @@ -337,6 +337,7 @@ enum DEVO_MC_OFF, DEVO_MC_ON, DEVO_MC_INDIVIDUAL, + DEVO_MC_REGIONAL, // DEVO_MC_NAND, DEVO_MC_MAX_CHOICE diff --git a/source/settings/menus/GCGameLoadSM.cpp b/source/settings/menus/GCGameLoadSM.cpp index e1df1ab8..d2219398 100644 --- a/source/settings/menus/GCGameLoadSM.cpp +++ b/source/settings/menus/GCGameLoadSM.cpp @@ -97,6 +97,7 @@ static const char * DEVOMCText[] = trNOOP( "OFF" ), trNOOP( "ON" ), trNOOP( "Individual" ), + trNOOP( "Regional" ), }; static const char * NINMCText[] = diff --git a/source/settings/menus/LoaderSettings.cpp b/source/settings/menus/LoaderSettings.cpp index a8efc998..c00631c5 100644 --- a/source/settings/menus/LoaderSettings.cpp +++ b/source/settings/menus/LoaderSettings.cpp @@ -172,6 +172,7 @@ static const char * DEVOMCText[] = trNOOP( "OFF" ), trNOOP( "ON" ), trNOOP( "Individual" ), + trNOOP( "Regional" ), }; static const char * NINMCText[] = diff --git a/source/usbloader/GameBooter.cpp b/source/usbloader/GameBooter.cpp index 2de1c79a..c5009a46 100644 --- a/source/usbloader/GameBooter.cpp +++ b/source/usbloader/GameBooter.cpp @@ -957,6 +957,10 @@ int GameBooter::BootDevolution(struct discHdr *gameHdr) { snprintf(DEVO_memCard + strlen(DEVO_memCard), sizeof(DEVO_memCard) - strlen(DEVO_memCard), "/memcard_%.6s.bin", (const char *) gameHdr->id); } + else if (devoMCEmulation == DEVO_MC_REGIONAL) + { + snprintf(DEVO_memCard, sizeof(DEVO_memCard), "%s:/apps/gc_devo/memcard_%c.bin", DeviceHandler::GetDevicePrefix(RealPath), gameHdr->id[3]); + } else // same for all games { snprintf(DEVO_memCard, sizeof(DEVO_memCard), "%s:/apps/gc_devo/memcard.bin", DeviceHandler::GetDevicePrefix(RealPath));