diff options
Diffstat (limited to 'source/memmap.c')
| -rw-r--r-- | source/memmap.c | 101 | 
1 files changed, 50 insertions, 51 deletions
diff --git a/source/memmap.c b/source/memmap.c index 75d1b9f..3e2d392 100644 --- a/source/memmap.c +++ b/source/memmap.c @@ -673,7 +673,6 @@ again:        Memory.ROM[0x107505] = 0x42; Memory.ROM[0x107506] = 0x5B;        Memory.ROM[0x107539] = 0x42; Memory.ROM[0x10753A] = 0x5B;        Memory.ROM[0x107563] = 0x42; Memory.ROM[0x107564] = 0x5B; -      Memory.ROM[0x1801D4] = 0x42; Memory.ROM[0x1801D5] = 0x10;        Memory.ROM[0x18041D] = 0x42; Memory.ROM[0x18041E] = 0x79;     }  #endif @@ -2737,7 +2736,7 @@ void ApplyROMFixes()     */     //not MAD-1 compliant -   if (strcmp(Memory.ROMName, "WANDERERS FROM YS") == 0) +   if (match_na("WANDERERS FROM YS"))     {        int32_t c;        for (c = 0; c < 0xE0; c++) @@ -2758,19 +2757,19 @@ void ApplyROMFixes()     //NMI hacks     CPU.NMITriggerPoint = 4; -   if (strcmp(Memory.ROMName, "CACOMA KNIGHT") == 0) +   if (match_na("CACOMA KNIGHT"))        CPU.NMITriggerPoint = 25;     //Disabling a speed-up     // Games which spool sound samples between the SNES and sound CPU using     // H-DMA as the sample is playing. -   if (strcmp(Memory.ROMName, "EARTHWORM JIM 2") == 0 || -         strcmp(Memory.ROMName, "PRIMAL RAGE") == 0 || -         strcmp(Memory.ROMName, "CLAY FIGHTER") == 0 || -         strcmp(Memory.ROMName, "ClayFighter 2") == 0 || +   if (match_na("EARTHWORM JIM 2") || +         match_na("PRIMAL RAGE") || +         match_na("CLAY FIGHTER") || +         match_na("ClayFighter 2") ||           strncasecmp(Memory.ROMName, "MADDEN", 6) == 0 ||           strncmp(Memory.ROMName, "NHL", 3) == 0 || -         strcmp(Memory.ROMName, "WeaponLord") == 0 || +         match_na("WeaponLord") ||           strncmp(Memory.ROMName, "WAR 2410", 8) == 0)        Settings.Shutdown = false; @@ -2778,15 +2777,15 @@ void ApplyROMFixes()  #ifndef USE_BLARGG_APU     // Stunt Racer FX -   if (strcmp(Memory.ROMId, "CQ  ") == 0 || +   if (match_id("CQ  ") ||           // Illusion of Gaia           strncmp(Memory.ROMId, "JG", 2) == 0 || -         strcmp(Memory.ROMName, "GAIA GENSOUKI 1 JPN") == 0) +         match_na("GAIA GENSOUKI 1 JPN"))        IAPU.OneCycle = 13;     else if (strcmp (Memory.ROMName, "UMIHARAKAWASE") == 0)        IAPU.OneCycle = 20;     // RENDERING RANGER R2 -   else if (strcmp(Memory.ROMId, "AVCJ") == 0 || +   else if (match_id("AVCJ") ||           //Mark Davis           strncmp(Memory.ROMName, "THE FISHING MASTER", 18) == 0 || //needs >= actual APU timing. (21 is .002 Mhz slower)           // Star Ocean @@ -2796,13 +2795,13 @@ void ApplyROMFixes()           // Act Raiser 1 & 2           strncasecmp(Memory.ROMName, "ActRaiser", 9) == 0 ||           // Soulblazer -         strcmp(Memory.ROMName, "SOULBLAZER - 1 USA") == 0 || -         strcmp(Memory.ROMName, "SOULBLADER - 1") == 0 || +         match_na("SOULBLAZER - 1 USA") || +         match_na("SOULBLADER - 1") ||           // Terranigma           strncmp(Memory.ROMId, "AQT", 3) == 0 ||           // Robotrek           strncmp(Memory.ROMId, "E9 ", 3) == 0 || -         strcmp(Memory.ROMName, "SLAP STICK 1 JPN") == 0 || +         match_na("SLAP STICK 1 JPN") ||           // ZENNIHON PURORESU2           strncmp(Memory.ROMId, "APR", 3) == 0 ||           // Bomberman 4 @@ -2813,34 +2812,34 @@ void ApplyROMFixes()           // Panic Bomber World           strncmp(Memory.ROMId, "APB", 3) == 0 ||           ((strncmp(Memory.ROMName, "Parlor", 6) == 0 || -         strcmp(Memory.ROMName, "HEIWA Parlor!Mini8") == 0 || +         match_na("HEIWA Parlor!Mini8") ||           strncmp(Memory.ROMName, "SANKYO Fever! \xCC\xA8\xB0\xCA\xDE\xB0!", 21) == 0) &&           strcmp(Memory.CompanyId, "A0") == 0) || -         strcmp(Memory.ROMName, "DARK KINGDOM") == 0 || -         strcmp(Memory.ROMName, "ZAN3 SFC") == 0 || -         strcmp(Memory.ROMName, "HIOUDEN") == 0 || -         strcmp(Memory.ROMName, "\xC3\xDD\xBC\xC9\xB3\xC0") == 0 || //Tenshi no Uta -         strcmp(Memory.ROMName, "FORTUNE QUEST") == 0 || -         strcmp(Memory.ROMName, "FISHING TO BASSING") == 0 || +         match_na("DARK KINGDOM") || +         match_na("ZAN3 SFC") || +         match_na("HIOUDEN") || +         match_na("\xC3\xDD\xBC\xC9\xB3\xC0") || //Tenshi no Uta +         match_na("FORTUNE QUEST") || +         match_na("FISHING TO BASSING") ||           strncmp(Memory.ROMName, "TokyoDome '95Battle 7", 21) == 0 || -         strcmp(Memory.ROMName, "OHMONO BLACKBASS") == 0 || +         match_na("OHMONO BLACKBASS") ||           strncmp(Memory.ROMName, "SWORD WORLD SFC", 15) == 0 || -         strcmp(Memory.ROMName, "MASTERS") == 0 || //Augusta 2 J -         strcmp(Memory.ROMName, "SFC \xB6\xD2\xDD\xD7\xB2\xC0\xDE\xB0") == 0 || //Kamen Rider +         match_na("MASTERS") || //Augusta 2 J +         match_na("SFC \xB6\xD2\xDD\xD7\xB2\xC0\xDE\xB0") || //Kamen Rider           strncmp(Memory.ROMName, "LETs PACHINKO(", 14) == 0)  //A set of BS games        IAPU.OneCycle = 15;  #endif     //Specific game fixes -   Settings.StarfoxHack = strcmp(Memory.ROMName, "STAR FOX") == 0 || -                          strcmp(Memory.ROMName, "STAR WING") == 0; -   Settings.WinterGold = strcmp(Memory.ROMName, "FX SKIING NINTENDO 96") == 0 || -                         strcmp(Memory.ROMName, "DIRT RACER") == 0 || +   Settings.StarfoxHack = match_na("STAR FOX") || +                          match_na("STAR WING"); +   Settings.WinterGold = match_na("FX SKIING NINTENDO 96") || +                         match_na("DIRT RACER") ||                           Settings.StarfoxHack; -   if((strcmp(Memory.ROMName, "LEGEND") == 0 && !Settings.PAL)|| -       strcmp(Memory.ROMName, "King Arthurs World") == 0) +   if((match_na("LEGEND") && !Settings.PAL)|| +       match_na("King Arthurs World"))        SNESGameFixes.EchoOnlyOutput = true;     Settings.HBlankStart = (256 * Settings.H_Max) / SNES_HCOUNTER_MAX; @@ -2848,26 +2847,26 @@ void ApplyROMFixes()     //OAM hacks because we don't fully understand the     //behavior of the SNES. -   if (strcmp(Memory.ROMName, "\xBD\xB0\xCA\xDF\xB0\xCC\xA7\xD0\xBD\xC0") == 0 ||   //Super Famista -       strcmp(Memory.ROMName, "\xBD\xB0\xCA\xDF\xB0\xCC\xA7\xD0\xBD\xC0 2") == 0 ||  //Super Famista 2 -       strcmp(Memory.ROMName, "ZENKI TENCHIMEIDOU") == 0 || -       strcmp(Memory.ROMName, "GANBA LEAGUE") == 0) +   if (match_na("\xBD\xB0\xCA\xDF\xB0\xCC\xA7\xD0\xBD\xC0") ||   //Super Famista +       match_na("\xBD\xB0\xCA\xDF\xB0\xCC\xA7\xD0\xBD\xC0 2") ||  //Super Famista 2 +       match_na("ZENKI TENCHIMEIDOU") || +       match_na("GANBA LEAGUE"))        SNESGameFixes.APU_OutPorts_ReturnValueFix = true; -   else if (strcmp(Memory.ROMName, "FURAI NO SIREN") == 0) +   else if (match_na("FURAI NO SIREN"))        SNESGameFixes.SoundEnvelopeHeightReading2 = true;     //CPU timing hacks     Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * Settings.CyclesPercentage) / 100;     // A Couple of HDMA related hacks - Lantus -   if ((strcmp(Memory.ROMName, "SFX SUPERBUTOUDEN2") == 0) || -         (strcmp(Memory.ROMName, "ALIEN vs. PREDATOR") == 0) || -         (strcmp(Memory.ROMName, "STONE PROTECTORS") == 0) || -         (strcmp(Memory.ROMName, "SUPER BATTLETANK 2") == 0)) +   if ((match_na("SFX SUPERBUTOUDEN2")) || +         (match_na("ALIEN vs. PREDATOR")) || +         (match_na("STONE PROTECTORS")) || +         (match_na("SUPER BATTLETANK 2")))        Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 130) / 100; -   else if (strcmp(Memory.ROMName, "HOME IMPROVEMENT") == 0) +   else if (match_na("HOME IMPROVEMENT"))        Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 200) / 100; -   else if (strcmp(Memory.ROMId, "ASRJ") == 0 && Settings.CyclesPercentage == 100) +   else if (match_id("ASRJ") && Settings.CyclesPercentage == 100)        // Street Racer        Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 95) / 100;     // Power Rangers Fight @@ -2878,13 +2877,13 @@ void ApplyROMFixes()     else if (strncmp(Memory.ROMId, "A3M", 3) == 0 && Settings.CyclesPercentage == 100)        // Mortal Kombat 3. Fixes cut off speech sample        Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 110) / 100; -   else if (strcmp(Memory.ROMName, "\x0bd\x0da\x0b2\x0d4\x0b0\x0bd\x0de") == 0 && +   else if (match_na("\x0bd\x0da\x0b2\x0d4\x0b0\x0bd\x0de") &&           Settings.CyclesPercentage == 100)        Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 101) / 100; -   else if (strcmp(Memory.ROMName, "WILD TRAX") == 0 || -         strcmp(Memory.ROMName, "STAR FOX 2") == 0 || -         strcmp(Memory.ROMName, "YOSSY'S ISLAND") == 0 || -         strcmp(Memory.ROMName, "YOSHI'S ISLAND") == 0) +   else if (match_na("WILD TRAX") || +         match_na("STAR FOX 2") || +         match_na("YOSSY'S ISLAND") || +         match_na("YOSHI'S ISLAND"))        CPU.TriedInterleavedMode2 = true;     // Start Trek: Deep Sleep 9     else if (strncmp(Memory.ROMId, "A9D", 3) == 0 && Settings.CyclesPercentage == 100) @@ -3069,7 +3068,7 @@ void ApplyROMFixes()     // Additional game fixes by sanmaiwashi ...     // Gundam Knight Story -   if (strcmp(Memory.ROMName, "SFX \xC5\xB2\xC4\xB6\xDE\xDD\xC0\xDE\xD1\xD3\xC9\xB6\xDE\xC0\xD8 1") == 0) +   if (match_na("SFX \xC5\xB2\xC4\xB6\xDE\xDD\xC0\xDE\xD1\xD3\xC9\xB6\xDE\xC0\xD8 1"))     {        bytes0x2000 [0xb18] = 0x4c;        bytes0x2000 [0xb19] = 0x4b; @@ -3078,13 +3077,13 @@ void ApplyROMFixes()     }     //sram value fixes -   if (strcmp(Memory.ROMName, "SUPER DRIFT OUT") == 0 || -         strcmp(Memory.ROMName, "SATAN IS OUR FATHER!") == 0 || -         strcmp(Memory.ROMName, "goemon 4") == 0) +   if (match_na("SUPER DRIFT OUT") || +         match_na("SATAN IS OUR FATHER!") || +         match_na("goemon 4"))        SNESGameFixes.SRAMInitialValue = 0x00;     if(Settings.BS && Memory.LoROM && -      strcmp(Memory.ROMName, "F-ZERO") == 0 && +      match_na("F-ZERO") &&        Memory.ROMChecksum == 0xb10d &&        Memory.ROMComplementChecksum == 0x4ef2)       Memory.ROM[0x7fd0] = 0xFF; // fix memory pack position bits  | 
