From 2852b69bc17a58a3970dfe3c2a3e80c45fce1ea4 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 15 Nov 2021 21:49:21 +0100 Subject: [PATCH] sms, set non-TMR images to region Japan core, fix libretro toolchain bug on wiiu --- pico/cd/memory.c | 2 +- pico/sms.c | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pico/cd/memory.c b/pico/cd/memory.c index c51ba1f6..2957ca7c 100644 --- a/pico/cd/memory.c +++ b/pico/cd/memory.c @@ -1182,7 +1182,7 @@ PICO_INTERNAL void PicoMemSetupCD(void) // setup FAME fetchmap { -#ifdef __clang__ +#if defined __clang__ || defined HW_WUP volatile // prevent strange relocs from clang #endif uptr ptr_ram = (uptr)PicoMem.ram; diff --git a/pico/sms.c b/pico/sms.c index b8cc36b0..2410d52e 100644 --- a/pico/sms.c +++ b/pico/sms.c @@ -509,18 +509,22 @@ void PicoResetMS(void) } if (PicoIn.mapper) Pico.ms.mapper = PicoIn.mapper; - if (PicoIn.regionOverride & 1) - Pico.m.hardware |= 0x4; + Pico.m.hardware |= 0x4; // default region Japan if no TMR header // check if the ROM header contains more system information for (tmr = 0x2000; tmr < 0xbfff && tmr <= Pico.romsize; tmr *= 2) { if (!memcmp(Pico.rom + tmr-16, "TMR SEGA", 8)) { hw = Pico.rom[tmr-1] >> 4; - if (hw >= 0x5 && hw < 0x8 && !PicoIn.hwSelect) - Pico.m.hardware |= 0x1; // GG cartridge detected - if ((hw == 0x5 || hw == 0x3) && !PicoIn.regionOverride) - Pico.m.hardware |= 0x4; // Region Japan - + if (!PicoIn.hwSelect) { + Pico.m.hardware &= ~0x1; + if (hw >= 0x5 && hw < 0x8) + Pico.m.hardware |= 0x1; // GG cartridge detected + } + if (!PicoIn.regionOverride) { + Pico.m.hardware &= ~0x4; + if (hw == 0x5 || hw == 0x3) + Pico.m.hardware |= 0x4; // region Japan + } id = CPU_LE4(*(u32 *)&Pico.rom[tmr-4]) & 0xf0f0ffff; for (i = 0; i < sizeof(region_pal)/sizeof(*region_pal); i++) if (id == region_pal[i] && !PicoIn.regionOverride) {