From 64492ea5c96dd8e1f34df85c661576af4f9a03eb Mon Sep 17 00:00:00 2001 From: Alexey 'Cluster' Avdyukhin Date: Mon, 7 Nov 2022 22:27:20 +0400 Subject: All fixes moved to json config --- tools_sources/CoolgirlCombiner.sln | 6 + tools_sources/CoolgirlCombiner/Game.cs | 29 +- tools_sources/CoolgirlCombiner/GameFix.cs | 9 + tools_sources/CoolgirlCombiner/NesHeaderFixer.cs | 438 ------- tools_sources/CoolgirlCombiner/coolgirl-fixes.json | 1239 ++++++++++++++++++++ 5 files changed, 1272 insertions(+), 449 deletions(-) delete mode 100644 tools_sources/CoolgirlCombiner/NesHeaderFixer.cs diff --git a/tools_sources/CoolgirlCombiner.sln b/tools_sources/CoolgirlCombiner.sln index 89fbf54..152dab1 100644 --- a/tools_sources/CoolgirlCombiner.sln +++ b/tools_sources/CoolgirlCombiner.sln @@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CoolgirlCombiner", "Coolgir EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NesTiler", "..\..\..\C#\NesTiler\NesTiler\NesTiler.csproj", "{BA88B483-D314-4D20-9787-DE0666EED7AD}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fceuxfix", "fceuxfix\fceuxfix.csproj", "{91CC7C0D-5643-4100-A298-5E12F496C7EC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -21,6 +23,10 @@ Global {BA88B483-D314-4D20-9787-DE0666EED7AD}.Debug|Any CPU.Build.0 = Debug|Any CPU {BA88B483-D314-4D20-9787-DE0666EED7AD}.Release|Any CPU.ActiveCfg = Release|Any CPU {BA88B483-D314-4D20-9787-DE0666EED7AD}.Release|Any CPU.Build.0 = Release|Any CPU + {91CC7C0D-5643-4100-A298-5E12F496C7EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91CC7C0D-5643-4100-A298-5E12F496C7EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91CC7C0D-5643-4100-A298-5E12F496C7EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91CC7C0D-5643-4100-A298-5E12F496C7EC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/tools_sources/CoolgirlCombiner/Game.cs b/tools_sources/CoolgirlCombiner/Game.cs index 85e57cd..ef87094 100644 --- a/tools_sources/CoolgirlCombiner/Game.cs +++ b/tools_sources/CoolgirlCombiner/Game.cs @@ -107,9 +107,6 @@ namespace com.clusterrr.Famicom.CoolGirl try { var nesFile = new NesFile(fileName); - var fixResult = NesHeaderFixer.CorrectRom(nesFile); - if (fixResult != 0) - Console.WriteLine(" Invalid header. Fix: " + fixResult); PRG = nesFile.PRG; PrgSize = (uint)nesFile.PRG.Length; CHR = nesFile.CHR; @@ -126,7 +123,7 @@ namespace com.clusterrr.Famicom.CoolGirl } crc32 = $"{nesFile.CalculateCRC32():x08}"; var md5full = nesFile.CalculateMD5(); - md5 = $"{md5full[0]:x02}{md5full[1]:x02}{md5full[2]:x02}{md5full[3]:x02}"; + md5 = $"{md5full[8]:x02}{md5full[9]:x02}{md5full[10]:x02}{md5full[11]:x02}{md5full[12]:x02}{md5full[13]:x02}{md5full[14]:x02}{md5full[15]:x02}"; // lower 8 bytes of MD5 } catch (InvalidDataException) { @@ -144,7 +141,7 @@ namespace com.clusterrr.Famicom.CoolGirl ContainerType = NesContainerType.UNIF; crc32 = $"{unifFile.CalculateCRC32():x08}"; var md5full = unifFile.CalculateMD5(); - md5 = $"{md5full[0]:x02}{md5full[1]:x02}{md5full[2]:x02}{md5full[3]:x02}"; + md5 = $"{md5full[8]:x02}{md5full[9]:x02}{md5full[10]:x02}{md5full[11]:x02}{md5full[12]:x02}{md5full[13]:x02}{md5full[14]:x02}{md5full[15]:x02}"; // lower 8 bytes of MD5 } // Check for fixes database if (fixes != null) @@ -152,20 +149,30 @@ namespace com.clusterrr.Famicom.CoolGirl GameFix fix = null; if (fixes.TryGetValue(crc32, out fix) || fixes.TryGetValue(md5, out fix)) { - if (fix.PrgRamSize.HasValue) + if (!string.IsNullOrEmpty(fix.Mapper) && Mapper != fix.Mapper) + { + Mapper = fix.Mapper; + Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} has {fix.Mapper} mapper"); + } + if (!string.IsNullOrEmpty(fix.Mirroring) && (Mapper.ToString() != fix.Mirroring)) + { + Mirroring = Enum.Parse(fix.Mirroring); + Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} has {fix.Mirroring} mirroring type"); + } + if (fix.PrgRamSize.HasValue && (PrgRamSize != fix.PrgRamSize * 1024)) { PrgRamSize = fix.PrgRamSize * 1024; - Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} has {PrgRamSize}KB PRG RAM"); + Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} has {fix.PrgRamSize}KB PRG RAM"); } - if (fix.ChrRamSize.HasValue) + if (fix.ChrRamSize.HasValue && (ChrRamSize != fix.ChrRamSize * 1024)) { ChrRamSize = fix.ChrRamSize * 1024; - Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} has {ChrRamSize}KB CHR RAM"); + Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} has {fix.ChrRamSize}KB CHR RAM"); } - if (fix.Battery.HasValue) + if (fix.Battery.HasValue && (Battery != fix.Battery.Value)) { Battery = fix.Battery.Value; - Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} battery saves = {Battery}"); + Console.WriteLine($"Fix based on checksum: {Path.GetFileName(fileName)} battery saves = {fix.Battery}"); } if (fix.WillNotWorkOnPal) { diff --git a/tools_sources/CoolgirlCombiner/GameFix.cs b/tools_sources/CoolgirlCombiner/GameFix.cs index cb90797..762f87f 100644 --- a/tools_sources/CoolgirlCombiner/GameFix.cs +++ b/tools_sources/CoolgirlCombiner/GameFix.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.Json.Serialization; +using com.clusterrr.Famicom.Containers; namespace com.clusterrr.Famicom.CoolGirl { @@ -13,6 +14,14 @@ namespace com.clusterrr.Famicom.CoolGirl [JsonPropertyName("description")] public string Description { get; set; } + [JsonPropertyName("mapper")] + [DefaultValue(null)] + public string Mapper { get; set; } + + [JsonPropertyName("mirroring")] + [DefaultValue(null)] + public string Mirroring { get; set; } + [JsonPropertyName("battery")] [DefaultValue(null)] public bool? Battery { get; set; } diff --git a/tools_sources/CoolgirlCombiner/NesHeaderFixer.cs b/tools_sources/CoolgirlCombiner/NesHeaderFixer.cs deleted file mode 100644 index c65fbca..0000000 --- a/tools_sources/CoolgirlCombiner/NesHeaderFixer.cs +++ /dev/null @@ -1,438 +0,0 @@ -using com.clusterrr.Famicom.Containers; -using System; -using System.Linq; - -namespace com.clusterrr.Famicom.HeaderFixer -{ - /// - /// Static class that allows to fix known ROMs with bad header - /// - public static class NesHeaderFixer - { - /// - /// What was fixed in the ROM header - /// - [Flags] - public enum NesFixType - { - /// - /// Nothing - /// - NoFix = 0, - /// - /// Mapper - /// - Mapper = 1, - /// - /// Mirroring - /// - Mirroring = 2, - /// - /// Battery flag - /// - Battery = 4, - /// - /// No CHR - /// - NoChr = 8 - }; - - /// - /// Fix ROM header using database of popular incorrect ROMs - /// - /// Flags showing what has been changed - public static NesFixType CorrectRom(this NesFile nes) - { - NesFixType fixType = NesFixType.NoFix; - var crc32 = nes.CalculateCRC32(); - for (int i = 0; i < correct.GetLength(0); i++) - { - if (crc32 == correct[i, 0]) - { - var mapper = correct[i, 1] & 0x3FF; - var mask = ((correct[i, 1] & 0x1000) != 0) ? 0xFFF : 0xFF; - var mirroring = correct[i, 2]; - if ((correct[i, 1] >= 0) && (mapper >= 0) && (nes.Mapper != (mapper & mask))) - { - // invalid mapper - nes.Mapper = (ushort)(mapper & mask); - fixType |= NesFixType.Mapper; - } - if (mirroring >= 0) - { - if (mirroring == 8 && nes.Mirroring == MirroringType.FourScreenVram) - { - // no four-screen - nes.Mirroring = MirroringType.Horizontal; - fixType |= NesFixType.Mirroring; - } - MirroringType needMirroring = MirroringType.Unknown; - switch (mirroring) - { - case 0: - needMirroring = MirroringType.Horizontal; - break; - case 1: - needMirroring = MirroringType.Vertical; - break; - case 2: - needMirroring = MirroringType.FourScreenVram; - break; - } - if (needMirroring != MirroringType.Unknown && needMirroring != nes.Mirroring) - { - nes.Mirroring = needMirroring; - fixType |= NesFixType.Mirroring; - } - } - if ((correct[i, 1] >= 0) && ((correct[i, 1] & 0x800) != 0) && (nes.CHR.Count() > 0)) - { - // no CHR - nes.CHR = Array.Empty(); - fixType |= NesFixType.NoChr; - } - } - } - - var md5 = nes.CalculateMD5(); - ulong partialmd5 = 0; - for (int x = 0; x < 8; x++) - partialmd5 |= (ulong)md5[15 - x] << (x * 8); - // maybe this game uses battery saves? - foreach (var sav in savie) - { - if (!nes.Battery && sav == partialmd5) - { - nes.Battery = true; - fixType |= NesFixType.Battery; - } - } - - return fixType; - } - - static long[,] correct = new long[,] - { - {0xaf5d7aa2, -1, 0}, /* Clu Clu Land */ - {0xcfb224e6, -1, 1}, /* Dragon Ninja (J) [p1][!].nes */ - {0x4f2f1846, -1, 1}, /* Famista '89 - Kaimaku Han!! (J) */ - {0x82f204ae, -1, 1}, /* Liang Shan Ying Xiong (NJ023) (Ch) [!] */ - {0x684afccd, -1, 1}, /* Space Hunter (J) */ - {0xad9c63e2, -1, 1}, /* Space Shadow (J) */ - {0xe1526228, -1, 1}, /* Quest of Ki */ - {0xaf5d7aa2, -1, 0}, /* Clu Clu Land */ - {0xcfb224e6, -1, 1}, /* Dragon Ninja (J) [p1][!].nes */ - {0x4f2f1846, -1, 1}, /* Famista '89 - Kaimaku Han!! (J) */ - {0xfcdaca80, 0, 0}, /* Elevator Action */ - {0xc05a365b, 0, 0}, /* Exed Exes (J) */ - {0x32fa246f, 0, 0}, /* Tag Team Pro Wrestling */ - {0xb3c30bea, 0, 0}, /* Xevious (J) */ - {0xe492d45a, 0, 0}, /* Zippy Race */ - {0xe28f2596, 0, 1}, /* Pac Land (J) */ - {0xd8ee7669, 1, 8}, /* Adventures of Rad Gravity */ - {0x5b837e8d, 1, 8}, /* Alien Syndrome */ - {0x37ba3261, 1, 8}, /* Back to the Future 2 and 3 */ - {0x5b6ca654, 1, 8}, /* Barbie rev X*/ - {0x61a852ea, 1, 8}, /* Battle Stadium - Senbatsu Pro Yakyuu */ - {0xf6fa4453, 1, 8}, /* Bigfoot */ - {0x391aa1b8, 1, 8}, /* Bloody Warriors (J) */ - {0xa5e8d2cd, 1, 8}, /* Breakthru */ - {0x3f56a392, 1, 8}, /* Captain Ed (J) */ - {0x078ced30, 1, 8}, /* Choujin - Ultra Baseball */ - {0xfe364be5, 1, 8}, /* Deep Dungeon 4 */ - {0x57c12280, 1, 8}, /* Demon Sword */ - {0xd09b74dc, 1, 8}, /* Great Tank (J) */ - {0xe8baa782, 1, 8}, /* Gun Hed (J) */ - {0x970bd9c2, 1, 8}, /* Hanjuku Hero */ - {0xcd7a2fd7, 1, 8}, /* Hanjuku Hero */ - {0x63469396, 1, 8}, /* Hokuto no Ken 4 */ - {0xe94d5181, 1, 8}, /* Mirai Senshi - Lios */ - {0x7156cb4d, 1, 8}, /* Muppet Adventure Carnival thingy */ - {0x70f67ab7, 1, 8}, /* Musashi no Bouken */ - {0x291bcd7d, 1, 8}, /* Pachio Kun 2 */ - {0xa9a4ea4c, 1, 8}, /* Satomi Hakkenden */ - {0xcc3544b0, 1, 8}, /* Triathron */ - {0x934db14a, 1, -1}, /* All-Pro Basketball */ - {0xf74dfc91, 1, -1}, /* Win, Lose, or Draw */ - {0x9ea1dc76, 2, 0}, /* Rainbow Islands */ - {0x6d65cac6, 2, 0}, /* Terra Cresta */ - {0xe1b260da, 2, 1}, /* Argos no Senshi */ - {0x1d0f4d6b, 2, 1}, /* Black Bass thinging */ - {0x266ce198, 2, 1}, /* City Adventure Touch */ - {0x804f898a, 2, 1}, /* Dragon Unit */ - {0x55773880, 2, 1}, /* Gilligan's Island */ - {0x6e0eb43e, 2, 1}, /* Puss n Boots */ - {0x2bb6a0f8, 2, 1}, /* Sherlock Holmes */ - {0x28c11d24, 2, 1}, /* Sukeban Deka */ - {0x02863604, 2, 1}, /* Sukeban Deka */ - {0x419461d0, 2, 1}, /* Super Cars */ - {0xdbf90772, 3, 0}, /* Alpha Mission */ - {0xd858033d, 3, 0}, /* Armored Scrum Object */ - {0x9bde3267, 3, 1}, /* Adventures of Dino Riki */ - {0xd8eff0df, 3, 1}, /* Gradius (J) */ - {0x1d41cc8c, 3, 1}, /* Gyruss */ - {0xcf322bb3, 3, 1}, /* John Elway's Quarterback */ - {0xb5d28ea2, 3, 1}, /* Mystery Quest - mapper 3?*/ - {0x02cc3973, 3, 1}, /* Ninja Kid */ - {0xbc065fc3, 3, 1}, /* Pipe Dream */ - {0xc9ee15a7, 3, -1}, /* 3 is probably best. 41 WILL NOT WORK. */ - {0x13e09d7a, 4, 0}, /*Dragon Wars (U) (proto) - comes with erroneous 4-screen mirroring set*/ - {0x22d6d5bd, 4, 1}, - {0xd97c31b0, 4, 1}, //Rasaaru Ishii no Childs Quest (J) - {0x404b2e8b, 4, 2}, /* Rad Racer 2 */ - {0x15141401, 4, 8}, /* Asmik Kun Land */ - {0x4cccd878, 4, 8}, /* Cat Ninden Teyandee */ - {0x59280bec, 4, 8}, /* Jackie Chan */ - {0x7474ac92, 4, 8}, /* Kabuki: Quantum Fighter */ - {0x5337f73c, 4, 8}, /* Niji no Silk Road */ - {0x9eefb4b4, 4, 8}, /* Pachi Slot Adventure 2 */ - {0x21a653c7, 4, -1}, /* Super Sky Kid */ - {0x9cbadc25, 5, 8}, /* JustBreed */ - {0xf518dd58, 7, 8}, /* Captain Skyhawk */ - {0x84382231, 9, 0}, /* Punch Out (J) */ - {0xbe939fce, 9, 1}, /* Punchout*/ - {0x345d3a1a, 11, 1}, /* Castle of Deceit */ - {0x5e66eaea, 13, 1}, /* Videomation */ - {0xcd373baa, 14, -1}, /* Samurai Spirits (Rex Soft) */ - {0xbfc7a2e9, 16, 8}, - {0x6e68e31a, 16, 8}, /* Dragon Ball 3*/ - {0x33b899c9, 16, -1}, /* Dragon Ball - Dai Maou Fukkatsu (J) [!] */ - {0xa262a81f, 16, -1}, /* Rokudenashi Blues (J) */ - {0xe4a291ce, 23, -1}, /* World Hero (Unl) [!] */ - {0x51e9cd33, 23, -1}, /* World Hero (Unl) [b1] */ - {0x105dd586, 27, -1}, /* Mi Hun Che variations... */ - {0xbc9bb6c1, 27, -1}, /* -- */ - {0x43753886, 27, -1}, /* -- */ - {0x5b3de3d1, 27, -1}, /* -- */ - {0x511e73f8, 27, -1}, /* -- */ - {0x5555fca3, 32, 8}, - {0x283ad224, 32, 8}, /* Ai Sensei no Oshiete */ - {0x243a8735, 32, 0x10|4}, /* Major League */ - {0xbc7b1d0f, 33, -1}, /* Bakushou!! Jinsei Gekijou 2 (J) [!] */ - {0xc2730c30, 34, 0}, /* Deadly Towers */ - {0x4c7c1af3, 34, 1}, /* Caesar's Palace */ - {0x932ff06e, 34, 1}, /* Classic Concentration */ - {0xf46ef39a, 37, -1}, /* Super Mario Bros. + Tetris + Nintendo World Cup (E) [!] */ - {0x7ccb12a3, 43, -1}, /* SMB2j */ - {0x6c71feae, 45, -1}, /* Kunio 8-in-1 */ - {0xe2c94bc2, 48, -1}, /* Super Bros 8 (Unl) [!] */ - {0xaebd6549, 48, 8}, /* Bakushou!! Jinsei Gekijou 3 */ - {0x6cdc0cd9, 48, 8}, /* Bubble Bobble 2 */ - {0x99c395f9, 48, 8}, /* Captain Saver */ - {0xa7b0536c, 48, 8}, /* Don Doko Don 2 */ - {0x40c0ad47, 48, 8}, /* Flintstones 2 */ - {0x1500e835, 48, 8}, /* Jetsons (J) */ - {0xa912b064, 51|0x800, 8}, /* 11-in-1 Ball Games (has CHR ROM when it shouldn't) */ - {0xb19a55dd, 64, 8}, /* Road Runner */ - {0xf92be3ec, 64, -1}, /* Rolling Thunder */ - {0xe84274c5, 66, 1}, - {0xbde3ae9b, 66, 1}, /* Doraemon */ - {0x9552e8df, 66, 1}, /* Dragon Ball */ - {0x811f06d9, 66, 1}, /* Dragon Power */ - {0xd26efd78, 66, 1}, /* SMB Duck Hunt */ - {0xdd8ed0f7, 70, 1}, /* Kamen Rider Club */ - {0xbba58be5, 70, -1}, /* Family Trainer - Manhattan Police */ - {0x370ceb65, 70, -1}, /* Family Trainer - Meiro Dai Sakusen */ - {0xe62e3382, 71, -1}, /* Mig-29 Soviet Fighter */ - {0xac7b0742, 71, -1}, /* Golden KTV (Ch) [!], not actually 71, but UNROM without BUS conflict */ - {0x054bd3e9, 74, -1}, /* Di 4 Ci - Ji Qi Ren Dai Zhan (As) */ - {0x496ac8f7, 74, -1}, /* Ji Jia Zhan Shi (As) */ - {0xae854cef, 74, -1}, /* Jia A Fung Yun (Chinese) */ - {0x3d1c3137, 78, 8}, /* Uchuusen - Cosmo Carrier */ - {0xa4fbb438, 79, 0}, - {0xd4a76b07, 79, 0}, /* F-15 City Wars*/ - {0x1eb4a920, 79, 1}, /* Double Strike */ - {0x3e1271d5, 79, 1}, /* Tiles of Fate */ - {0xd2699893, 88, 0}, /* Dragon Spirit */ - {0xbb7c5f7a, 89, 8}, /* Mito Koumon or something similar */ - {0x0da5e32e, 101, -1}, /* new Uruusey Yatsura */ - {0x8eab381c, 113, 1}, /* Death Bots */ - {0x6a03d3f3, 114, -1}, - {0x0d98db53, 114, -1}, /* Pocahontas */ - {0x4e7729ff, 114, -1}, /* Super Donkey Kong */ - {0xc5e5c5b2, 115, -1}, /* Bao Qing Tian (As).nes */ - {0xa1dc16c0, 116, -1}, - {0xe40dfb7e, 116, -1}, /* Somari (P conf.) */ - {0xc9371ebb, 116, -1}, /* Somari (W conf.) */ - {0xcbf4366f, 118, 8}, /* Alien Syndrome (U.S. unlicensed) */ - {0x78b657ac, 118, -1}, /* Armadillo */ - {0x90c773c1, 118, -1}, /* Goal! 2 */ - {0xb9b4d9e0, 118, -1}, /* NES Play Action Football */ - {0x07d92c31, 118, -1}, /* RPG Jinsei Game */ - {0x37b62d04, 118, -1}, /* Ys 3 */ - {0x318e5502, 121, -1}, /* Sonic 3D Blast 6 (Unl) */ - {0xddcfb058, 121, -1}, /* Street Fighter Zero 2 '97 (Unl) [!] */ - {0x5aefbc94, 133, -1}, /* Jovial Race (Sachen) [a1][!] */ - {0xc2df0a00, 140, 1}, /* Bio Senshi Dan(hacked) */ - {0xe46b1c5d, 140, 1}, /* Mississippi Satsujin Jiken */ - {0x3293afea, 140, 1}, /* Mississippi Satsujin Jiken */ - {0x6bc65d7e, 140, 1}, /* Youkai Club*/ - {0x5caa3e61, 144, 1}, /* Death Race */ - {0x48239b42, 146, -1}, /* Mahjong Companion (Sachen) [!] */ - {0xb6a727fa, 146, -1}, /* Papillion (As) [!] */ - {0xa62b79e1, 146, -1}, /* Side Winder (HES) [!] */ - {0xcc868d4e, 149, -1}, /* 16 Mahjong [p1][!] */ - {0x29582ca1, 150, -1}, - {0x40dbf7a2, 150, -1}, - {0x73fb55ac, 150, -1}, /* 2-in-1 Cosmo Cop + Cyber Monster (Sachen) [!] */ - {0xddcbda16, 150, -1}, /* 2-in-1 Tough Cop + Super Tough Cop (Sachen) [!] */ - {0x47918d84, 150, -1}, /* auto-upturn */ - {0x0f141525, 152, 8}, /* Arkanoid 2 (Japanese) */ - {0xbda8f8e4, 152, 8}, /* Gegege no Kitarou 2 */ - {0xb1a94b82, 152, 8}, /* Pocket Zaurus */ - {0x026c5fca, 152, 8}, /* Saint Seiya Ougon Densetsu */ - {0x3f15d20d, 153, 8}, /* Famicom Jump 2 */ - {0xd1691028, 154, 8}, /* Devil Man */ - {0xcfd4a281, 155, 8}, /* Money Game. Yay for money! */ - {0x2f27cdef, 155, 8}, /* Tatakae!! Rahmen Man */ - {0xccc03440, 156, -1}, - {0x983d8175, 157, 8}, /* Datach Battle Rush */ - {0x894efdbc, 157, 8}, /* Datach Crayon Shin Chan */ - {0x19e81461, 157, 8}, /* Datach DBZ */ - {0xbe06853f, 157, 8}, /* Datach J-League */ - {0x0be0a328, 157, 8}, /* Datach SD Gundam Wars */ - {0x5b457641, 157, 8}, /* Datach Ultraman Club */ - {0xf51a7f46, 157, 8}, /* Datach Yuu Yuu Hakusho */ - {0xe170404c, 159, -1}, /* SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.0) [!] */ - {0x276ac722, 159, -1}, /* SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.1) [!] */ - {0x0cf42e69, 159, -1}, /* Magical Taruruuto-kun - Fantastic World!! (J) (V1.0) [!] */ - {0xdcb972ce, 159, -1}, /* Magical Taruruuto-kun - Fantastic World!! (J) (V1.1) [!] */ - {0xb7f28915, 159, -1}, /* Magical Taruruuto-kun 2 - Mahou Daibouken (J) */ - {0x183859d2, 159, -1}, /* Dragon Ball Z - Kyoushuu! Saiya Jin (J) [!] */ - {0x58152b42, 160, 1}, /* Pipe 5 (Sachen) */ - {0x1c098942, 162, -1}, /* Xi You Ji Hou Zhuan (Ch) */ - {0x081caaff, 163, -1}, /* Commandos (Ch) */ - {0x02c41438, 176, -1}, /* Xing He Zhan Shi (C) */ - {0x558c0dc3, 178, -1}, /* Super 2in1 (unl)[!] {mapper unsupported} */ - {0xc68363f6, 180, 0}, /* Crazy Climber */ - {0x0f05ff0a, 181, -1}, /* Seicross (redump) */ - {0x96ce586e, 189, 8}, /* Street Fighter 2 YOKO */ - {0x555a555e, 191, -1}, - {0x2cc381f6, 191, -1}, /* Sugoro Quest - Dice no Senshitachi (As) */ - {0xa145fae6, 192, -1}, - {0xa9115bc1, 192, -1}, - {0x4c7bbb0e, 192, -1}, - {0x98c1cd4b, 192, -1}, /* Ying Lie Qun Xia Zhuan (Chinese) */ - {0xee810d55, 192, -1}, /* You Ling Xing Dong (Ch) */ - {0x442f1a29, 192, -1}, /* Young chivalry */ - {0x637134e8, 193, 1}, /* Fighting Hero */ - {0xa925226c, 194, -1}, /* Dai-2-Ji - Super Robot Taisen (As) */ - {0x7f3dbf1b, 195, 0}, - {0xb616885c, 195, 0}, /* CHaos WOrld (Ch)*/ - {0x33c5df92, 195, -1}, - {0x1bc0be6c, 195, -1}, /* Captain Tsubasa Vol 2 - Super Striker (C) */ - {0xd5224fde, 195, -1}, /* Crystalis (c) */ - {0xfdec419f, 196, -1}, /* Street Fighter VI 16 Peoples (Unl) [!] */ - {0x700705f4, 198, -1}, - {0x9a2cf02c, 198, -1}, - {0xd8b401a7, 198, -1}, - {0x28192599, 198, -1}, - {0x19b9e732, 198, -1}, - {0xdd431ba7, 198, -1}, /* Tenchi wo kurau 2 (c) */ - {0xd871d3e6, 199, -1}, /* Dragon Ball Z 2 - Gekishin Freeza! (C) */ - {0xed481b7c, 199, -1}, /* Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (C) */ - {0x44c20420, 199, -1}, /* San Guo Zhi 2 (C) */ - {0x4e1c1e3c, 206, 0}, /* Karnov */ - {0x276237b3, 206, 0}, /* Karnov */ - {0x7678f1d5, 207, 8}, /* Fudou Myouou Den */ - {0x07eb2c12, 208, -1}, /* Street Fighter IV */ - {0xdd8ced31, 209, -1}, /* Power Rangers 3 */ - {0x063b1151, 209, -1}, /* Power Rangers 4 */ - {0xdd4d9a62, 209, -1}, /* Shin Samurai Spirits 2 */ - {0x0c47946d, 210, 1}, /* Chibi Maruko Chan */ - {0xc247cc80, 210, 1}, /* Family Circuit '91 */ - {0x6ec51de5, 210, 1}, /* Famista '92 */ - {0xadffd64f, 210, 1}, /* Famista '93 */ - {0x429103c9, 210, 1}, /* Famista '94 */ - {0x81b7f1a8, 210, 1}, /* Heisei Tensai Bakabon */ - {0x2447e03b, 210, 1}, /* Top Striker */ - {0x1dc0f740, 210, 1}, /* Wagyan Land 2 */ - {0xd323b806, 210, 1}, /* Wagyan Land 3 */ - {0xbd523011, 210, 0}, /* Dream Master */ - {0x5daae69a, 211, -1}, /* Aladdin - Return of Jaffar, The (Unl) [!] */ - {0x1ec1dfeb, 217, -1}, /* 255-in-1 (Cut version) [p1] */ - {0x046d70cc, 217, -1}, /* 500-in-1 (Anim Splash, Alt Mapper)[p1][!] */ - {0x12f86a4d, 217, -1}, /* 500-in-1 (Static Splash, Alt Mapper)[p1][!] */ - {0xd09f778d, 217, -1}, /* 9999999-in-1 (Static Splash, Alt Mapper)[p1][!] */ - {0x62ef6c79, 232, 8}, /* Quattro Sports -Aladdin */ - {0x2705eaeb, 234, -1}, /* Maxi 15 */ - {0x6f12afc5, 235, -1}, /* Golden Game 150-in-1 */ - {0xfb2b6b10, 241, -1}, /* Fan Kong Jing Ying (Ch) */ - {0xb5e83c9a, 241, -1}, /* Xing Ji Zheng Ba (Ch) */ - {0x2537b3e6, 241, -1}, /* Dance Xtreme - Prima (Unl) */ - {0x11611e89, 241, -1}, /* Darkseed (Unl) [p1] */ - {0x81a37827, 241, -1}, /* Darkseed (Unl) [p1][b1] */ - {0xc2730c30, 241, -1}, /* Deadly Towers (U) [!] */ - {0x368c19a8, 241, -1}, /* LIKO Study Cartridge 3-in-1 (Unl) [!] */ - {0xa21e675c, 241, -1}, /* Mashou (J) [!] */ - {0x54d98b79, 241, -1}, /* Titanic 1912 (Unl) */ - {0x6bea1235, 245, -1}, /* MMC3 cart, but with nobanking applied to CHR-RAM, so let it be there */ - {0x345ee51a, 245, -1}, /* DQ4c */ - {0x57514c6c, 245, -1}, /* Yong Zhe Dou E Long - Dragon Quest VI (Ch) */ - - // added a new mask bit to define these mappers as a dupes of the UNIF format boards - - {0x1d75fd35, 256|0x1000,-1}, /* 2-in-1 - Street Dance + Hit Mouse (Unl) [!] */ - {0x6eef8bb7, 257|0x1000,-1}, /* PEC-586 Chinese */ - {0xac7e98fb, 257|0x1000,-1}, /* PEC-586 Chinese No Tape Out */ - {0x8d51a23b, 257|0x1000,-1}, /* [KeWang] Chao Ji Wu Bi Han Ka (C) V1 */ - {0x25c76773, 257|0x1000,-1}, /* [KeWang] Chao Ji Wu Bi Han Ka (C) V2 */ - {0x1ca9c322, 258|0x1000,-1}, /* Blood Of Jurassic (GD-98)(Unl) */ - {0x2469c1ae, 259|0x1000,-1}, /* 150-in-1 Unchained FIGHT version */ - - {0x99d4464f, 260|0x1000,-1}, /* HP10xx/HP20xx board dumps */ - {0xb72b2cf4, 260|0x1000,-1}, - {0x4dc6107d, 260|0x1000,-1}, - {0x0073dbd8, 260|0x1000,-1}, - {0x3b098344, 260|0x1000,-1}, - {0x1fc640c0, 260|0x1000,-1}, - {0x2f1ad1fc, 260|0x1000,-1}, - {0xa22214bb, 260|0x1000,-1}, - {0x5dd9073b, 260|0x1000,-1}, - {0x26a36cc2, 260|0x1000,-1}, - {0xd1e52b37, 260|0x1000,-1}, - {0x4d4a0e1b, 260|0x1000,-1}, - {0xb6dd2c9d, 260|0x1000,-1}, - - {0xb02fcb57, 406|0x1000,-1} /* Haradius Zero ver 1.2a 2019 */ - }; - - - static ulong[] savie = new ulong[] - { - 0xc04361e499748382, /* AD&D Heroes of the Lance */ - 0xb72ee2337ced5792, /* AD&D Hillsfar */ - 0x2b7103b7a27bd72f, /* AD&D Pool of Radiance */ - 0x498c10dc463cfe95, /* Battle Fleet */ - 0x854d7947a3177f57, /* Crystalis */ - 0xfad22d265cd70820, /* Downtown Special: Kunio-kun no Jidaigeki Dayo Zenin Shuugou! */ - 0x4a1f5336b86851b6, /* DW */ - 0xb0bcc02c843c1b79, /* DW */ - 0x2dcf3a98c7937c22, /* DW 2 */ - 0x98e55e09dfcc7533, /* DW 4*/ - 0x733026b6b72f2470, /* Dw 3 */ - 0x6917ffcaca2d8466, /* Famista '90 */ - 0x8da46db592a1fcf4, /* Faria */ - 0xedba17a2c4608d20, /* Final Fantasy */ - 0x91a6846d3202e3d6, /* Final Fantasy */ - 0x012df596e2b31174, /* Final Fantasy 1+2 */ - 0xf6b359a720549ecd, /* Final Fantasy 2 */ - 0x5a30da1d9b4af35d, /* Final Fantasy 3 */ - 0xd63dcc68c2b20adc, /* Final Fantasy J */ - 0x2ee3417ba8b69706, /* Hydlide 3*/ - 0xebbce5a54cf3ecc0, /* Justbreed */ - 0x6a858da551ba239e, /* Kaijuu Monogatari */ - 0x2db8f5d16c10b925, /* Kyonshiizu 2 */ - 0x04a31647de80fdab, /* Legend of Zelda */ - 0x94b9484862a26cba, /* Legend of Zelda */ - 0xa40666740b7d22fe, /* Mindseeker */ - 0x82000965f04a71bb, /* Mirai Shinwa Jarvas */ - 0x77b811b2760104b9, /* Mouryou Senki Madara */ - 0x11b69122efe86e8c, /* RPG Jinsei Game */ - 0x9aa1dc16c05e7de5, /* Startropics */ - 0x1b084107d0878bd0, /* Startropics 2*/ - 0xa70b495314f4d075, /* Ys 3 */ - 0x836c0ff4f3e06e45, /* Zelda 2 */ - }; - } -} diff --git a/tools_sources/CoolgirlCombiner/coolgirl-fixes.json b/tools_sources/CoolgirlCombiner/coolgirl-fixes.json index b0bd1a2..ad81c9d 100644 --- a/tools_sources/CoolgirlCombiner/coolgirl-fixes.json +++ b/tools_sources/CoolgirlCombiner/coolgirl-fixes.json @@ -53,6 +53,7 @@ }, "78b657ac": { "description": "Armadillo (J) [!]", + "mapper": "118", "will_not_work_on_dendy": true }, "b3d92e78": { @@ -65,10 +66,1248 @@ }, "e62e3382": { "description": "MiG 29 - Soviet Fighter (Camerica) [!]", + "mapper": "071", "will_not_work_on_dendy": true }, "1bc686a8": { "description": "Fire Hawk (Camerica) [!]", "will_not_work_on_dendy": true + }, + "af5d7aa2": { + "description": "Clu Clu Land", + "mirroring": "Horizontal" + }, + "cfb224e6": { + "description": "Dragon Ninja (J) [p1][!].nes", + "mirroring": "Vertical" + }, + "4f2f1846": { + "description": "Famista '89 - Kaimaku Han!! (J)", + "mirroring": "Vertical" + }, + "82f204ae": { + "description": "Liang Shan Ying Xiong (NJ023) (Ch) [!]", + "mirroring": "Vertical" + }, + "684afccd": { + "description": "Space Hunter (J)", + "mirroring": "Vertical" + }, + "ad9c63e2": { + "description": "Space Shadow (J)", + "mirroring": "Vertical" + }, + "e1526228": { + "description": "Quest of Ki", + "mirroring": "Vertical" + }, + "fcdaca80": { + "description": "Elevator Action", + "mapper": "000", + "mirroring": "Horizontal" + }, + "c05a365b": { + "description": "Exed Exes (J)", + "mapper": "000", + "mirroring": "Horizontal" + }, + "32fa246f": { + "description": "Tag Team Pro Wrestling", + "mapper": "000", + "mirroring": "Horizontal" + }, + "b3c30bea": { + "description": "Xevious (J)", + "mapper": "000", + "mirroring": "Horizontal" + }, + "e492d45a": { + "description": "Zippy Race", + "mapper": "000", + "mirroring": "Horizontal" + }, + "e28f2596": { + "description": "Pac Land (J)", + "mapper": "000", + "mirroring": "Vertical" + }, + "d8ee7669": { + "description": "Adventures of Rad Gravity", + "mapper": "001", + "mirroring": "Horizontal" + }, + "5b837e8d": { + "description": "Alien Syndrome", + "mapper": "001", + "mirroring": "Horizontal" + }, + "37ba3261": { + "description": "Back to the Future 2 and 3", + "mapper": "001", + "mirroring": "Horizontal" + }, + "5b6ca654": { + "description": "Barbie rev X", + "mapper": "001", + "mirroring": "Horizontal" + }, + "61a852ea": { + "description": "Battle Stadium - Senbatsu Pro Yakyuu", + "mapper": "001", + "mirroring": "Horizontal" + }, + "f6fa4453": { + "description": "Bigfoot", + "mapper": "001", + "mirroring": "Horizontal" + }, + "391aa1b8": { + "description": "Bloody Warriors (J)", + "mapper": "001", + "mirroring": "Horizontal" + }, + "a5e8d2cd": { + "description": "Breakthru", + "mapper": "001", + "mirroring": "Horizontal" + }, + "3f56a392": { + "description": "Captain Ed (J)", + "mapper": "001", + "mirroring": "Horizontal" + }, + "078ced30": { + "description": "Choujin - Ultra Baseball", + "mapper": "001", + "mirroring": "Horizontal" + }, + "fe364be5": { + "description": "Deep Dungeon 4", + "mapper": "001", + "mirroring": "Horizontal" + }, + "57c12280": { + "description": "Demon Sword", + "mapper": "001", + "mirroring": "Horizontal" + }, + "d09b74dc": { + "description": "Great Tank (J)", + "mapper": "001", + "mirroring": "Horizontal" + }, + "e8baa782": { + "description": "Gun Hed (J)", + "mapper": "001", + "mirroring": "Horizontal" + }, + "970bd9c2": { + "description": "Hanjuku Hero", + "mapper": "001", + "mirroring": "Horizontal" + }, + "cd7a2fd7": { + "description": "Hanjuku Hero", + "mapper": "001", + "mirroring": "Horizontal" + }, + "63469396": { + "description": "Hokuto no Ken 4", + "mapper": "001", + "mirroring": "Horizontal" + }, + "e94d5181": { + "description": "Mirai Senshi - Lios", + "mapper": "001", + "mirroring": "Horizontal" + }, + "7156cb4d": { + "description": "Muppet Adventure Carnival thingy", + "mapper": "001", + "mirroring": "Horizontal" + }, + "70f67ab7": { + "description": "Musashi no Bouken", + "mapper": "001", + "mirroring": "Horizontal" + }, + "291bcd7d": { + "description": "Pachio Kun 2", + "mapper": "001", + "mirroring": "Horizontal" + }, + "a9a4ea4c": { + "description": "Satomi Hakkenden", + "mapper": "001", + "mirroring": "Horizontal" + }, + "cc3544b0": { + "description": "Triathron", + "mapper": "001", + "mirroring": "Horizontal" + }, + "934db14a": { + "description": "All-Pro Basketball", + "mapper": "001" + }, + "f74dfc91": { + "description": "Win,\tLose,\tor Draw", + "mapper": "001" + }, + "9ea1dc76": { + "description": "Rainbow Islands", + "mapper": "002", + "mirroring": "Horizontal" + }, + "6d65cac6": { + "description": "Terra Cresta", + "mapper": "002", + "mirroring": "Horizontal" + }, + "e1b260da": { + "description": "Argos no Senshi", + "mapper": "002", + "mirroring": "Vertical" + }, + "1d0f4d6b": { + "description": "Black Bass thinging", + "mapper": "002", + "mirroring": "Vertical" + }, + "266ce198": { + "description": "City Adventure Touch", + "mapper": "002", + "mirroring": "Vertical" + }, + "804f898a": { + "description": "Dragon Unit", + "mapper": "002", + "mirroring": "Vertical" + }, + "55773880": { + "description": "Gilligan's Island", + "mapper": "002", + "mirroring": "Vertical" + }, + "6e0eb43e": { + "description": "Puss n Boots", + "mapper": "002", + "mirroring": "Vertical" + }, + "2bb6a0f8": { + "description": "Sherlock Holmes", + "mapper": "002", + "mirroring": "Vertical" + }, + "28c11d24": { + "description": "Sukeban Deka", + "mapper": "002", + "mirroring": "Vertical" + }, + "02863604": { + "description": "Sukeban Deka", + "mapper": "002", + "mirroring": "Vertical" + }, + "419461d0": { + "description": "Super Cars", + "mapper": "002", + "mirroring": "Vertical" + }, + "dbf90772": { + "description": "Alpha Mission", + "mapper": "003", + "mirroring": "Horizontal" + }, + "d858033d": { + "description": "Armored Scrum Object", + "mapper": "003", + "mirroring": "Horizontal" + }, + "9bde3267": { + "description": "Adventures of Dino Riki", + "mapper": "003", + "mirroring": "Vertical" + }, + "d8eff0df": { + "description": "Gradius (J)", + "mapper": "003", + "mirroring": "Vertical" + }, + "1d41cc8c": { + "description": "Gyruss", + "mapper": "003", + "mirroring": "Vertical" + }, + "cf322bb3": { + "description": "John Elway's Quarterback", + "mapper": "003", + "mirroring": "Vertical" + }, + "b5d28ea2": { + "description": "Mystery Quest - mapper 3?", + "mapper": "003", + "mirroring": "Vertical" + }, + "02cc3973": { + "description": "Ninja Kid", + "mapper": "003", + "mirroring": "Vertical" + }, + "bc065fc3": { + "description": "Pipe Dream", + "mapper": "003", + "mirroring": "Vertical" + }, + "c9ee15a7": { + "description": "3 is probably best. 41 WILL NOT WORK.", + "mapper": "003" + }, + "13e09d7a": { + "description": "Dragon Wars (U) (proto) - comes with erroneous 4-screen mirroring set", + "mapper": "004", + "mirroring": "Horizontal" + }, + "22d6d5bd": { + "mapper": "004", + "mirroring": "Vertical" + }, + "d97c31b0": { + "mapper": "004", + "mirroring": "Vertical" + }, + "404b2e8b": { + "description": "Rad Racer 2", + "mapper": "004", + "mirroring": "FourScreenVram" + }, + "15141401": { + "description": "Asmik Kun Land", + "mapper": "004", + "mirroring": "Horizontal" + }, + "4cccd878": { + "description": "Cat Ninden Teyandee", + "mapper": "004", + "mirroring": "Horizontal" + }, + "59280bec": { + "description": "Jackie Chan", + "mapper": "004", + "mirroring": "Horizontal" + }, + "7474ac92": { + "description": "Kabuki: Quantum Fighter", + "mapper": "004", + "mirroring": "Horizontal" + }, + "5337f73c": { + "description": "Niji no Silk Road", + "mapper": "004", + "mirroring": "Horizontal" + }, + "9eefb4b4": { + "description": "Pachi Slot Adventure 2", + "mapper": "004", + "mirroring": "Horizontal" + }, + "21a653c7": { + "description": "Super Sky Kid", + "mapper": "004" + }, + "9cbadc25": { + "description": "JustBreed", + "mapper": "005", + "mirroring": "Horizontal" + }, + "f518dd58": { + "description": "Captain Skyhawk", + "mapper": "007", + "mirroring": "Horizontal" + }, + "84382231": { + "description": "Punch Out (J)", + "mapper": "009", + "mirroring": "Horizontal" + }, + "be939fce": { + "description": "Punchout", + "mapper": "009", + "mirroring": "Vertical" + }, + "345d3a1a": { + "description": "Castle of Deceit", + "mapper": "011", + "mirroring": "Vertical" + }, + "5e66eaea": { + "description": "Videomation", + "mapper": "013", + "mirroring": "Vertical" + }, + "cd373baa": { + "description": "Samurai Spirits (Rex Soft)", + "mapper": "014" + }, + "bfc7a2e9": { + "mapper": "016", + "mirroring": "Horizontal" + }, + "6e68e31a": { + "description": "Dragon Ball 3", + "mapper": "016", + "mirroring": "Horizontal" + }, + "33b899c9": { + "description": "Dragon Ball - Dai Maou Fukkatsu (J) [!]", + "mapper": "016" + }, + "a262a81f": { + "description": "Rokudenashi Blues (J)", + "mapper": "016" + }, + "e4a291ce": { + "description": "World Hero (Unl) [!]", + "mapper": "023" + }, + "51e9cd33": { + "description": "World Hero (Unl) [b1]", + "mapper": "023" + }, + "105dd586": { + "description": "Mi Hun Che variations...", + "mapper": "027" + }, + "bc9bb6c1": { + "description": "--", + "mapper": "027" + }, + "43753886": { + "description": "--", + "mapper": "027" + }, + "5b3de3d1": { + "description": "--", + "mapper": "027" + }, + "511e73f8": { + "description": "--", + "mapper": "027" + }, + "5555fca3": { + "mapper": "032", + "mirroring": "Horizontal" + }, + "283ad224": { + "description": "Ai Sensei no Oshiete", + "mapper": "032", + "mirroring": "Horizontal" + }, + "bc7b1d0f": { + "description": "Bakushou!! Jinsei Gekijou 2 (J) [!]", + "mapper": "033" + }, + "c2730c30": { + "description": "Deadly Towers", + "mapper": "034", + "mirroring": "Horizontal" + }, + "4c7c1af3": { + "description": "Caesar's Palace", + "mapper": "034", + "mirroring": "Vertical" + }, + "932ff06e": { + "description": "Classic Concentration", + "mapper": "034", + "mirroring": "Vertical" + }, + "f46ef39a": { + "description": "Super Mario Bros. + Tetris + Nintendo World Cup (E) [!]", + "mapper": "037" + }, + "7ccb12a3": { + "description": "SMB2j", + "mapper": "043" + }, + "6c71feae": { + "description": "Kunio 8-in-1", + "mapper": "045" + }, + "e2c94bc2": { + "description": "Super Bros 8 (Unl) [!]", + "mapper": "048" + }, + "aebd6549": { + "description": "Bakushou!! Jinsei Gekijou 3", + "mapper": "048", + "mirroring": "Horizontal" + }, + "6cdc0cd9": { + "description": "Bubble Bobble 2", + "mapper": "048", + "mirroring": "Horizontal" + }, + "99c395f9": { + "description": "Captain Saver", + "mapper": "048", + "mirroring": "Horizontal" + }, + "a7b0536c": { + "description": "Don Doko Don 2", + "mapper": "048", + "mirroring": "Horizontal" + }, + "40c0ad47": { + "description": "Flintstones 2", + "mapper": "048", + "mirroring": "Horizontal" + }, + "1500e835": { + "description": "Jetsons (J)", + "mapper": "048", + "mirroring": "Horizontal" + }, + "b19a55dd": { + "description": "Road Runner", + "mapper": "064", + "mirroring": "Horizontal" + }, + "f92be3ec": { + "description": "Rolling Thunder", + "mapper": "064" + }, + "e84274c5": { + "mapper": "066", + "mirroring": "Vertical" + }, + "bde3ae9b": { + "description": "Doraemon", + "mapper": "066", + "mirroring": "Vertical" + }, + "9552e8df": { + "description": "Dragon Ball", + "mapper": "066", + "mirroring": "Vertical" + }, + "811f06d9": { + "description": "Dragon Power", + "mapper": "066", + "mirroring": "Vertical" + }, + "d26efd78": { + "description": "SMB Duck Hunt", + "mapper": "066", + "mirroring": "Vertical" + }, + "dd8ed0f7": { + "description": "Kamen Rider Club", + "mapper": "070", + "mirroring": "Vertical" + }, + "bba58be5": { + "description": "Family Trainer - Manhattan Police", + "mapper": "070" + }, + "370ceb65": { + "description": "Family Trainer - Meiro Dai Sakusen", + "mapper": "070" + }, + "ac7b0742": { + "description": "Golden KTV (Ch) [!], not actually 71, but UNROM without BUS conflict", + "mapper": "071" + }, + "054bd3e9": { + "description": "Di 4 Ci - Ji Qi Ren Dai Zhan (As)", + "mapper": "074" + }, + "496ac8f7": { + "description": "Ji Jia Zhan Shi (As)", + "mapper": "074" + }, + "ae854cef": { + "description": "Jia A Fung Yun (Chinese)", + "mapper": "074" + }, + "3d1c3137": { + "description": "Uchuusen - Cosmo Carrier", + "mapper": "078", + "mirroring": "Horizontal" + }, + "a4fbb438": { + "mapper": "079", + "mirroring": "Horizontal" + }, + "d4a76b07": { + "description": "F-15 City Wars", + "mapper": "079", + "mirroring": "Horizontal" + }, + "1eb4a920": { + "description": "Double Strike", + "mapper": "079", + "mirroring": "Vertical" + }, + "3e1271d5": { + "description": "Tiles of Fate", + "mapper": "079", + "mirroring": "Vertical" + }, + "d2699893": { + "description": "Dragon Spirit", + "mapper": "088", + "mirroring": "Horizontal" + }, + "bb7c5f7a": { + "description": "Mito Koumon or something similar", + "mapper": "089", + "mirroring": "Horizontal" + }, + "0da5e32e": { + "description": "new Uruusey Yatsura", + "mapper": "101" + }, + "8eab381c": { + "description": "Death Bots", + "mapper": "113", + "mirroring": "Vertical" + }, + "6a03d3f3": { + "mapper": "114" + }, + "0d98db53": { + "description": "Pocahontas", + "mapper": "114" + }, + "4e7729ff": { + "description": "Super Donkey Kong", + "mapper": "114" + }, + "c5e5c5b2": { + "description": "Bao Qing Tian (As).nes", + "mapper": "115" + }, + "a1dc16c0": { + "mapper": "116" + }, + "e40dfb7e": { + "description": "Somari (P conf.)", + "mapper": "116" + }, + "c9371ebb": { + "description": "Somari (W conf.)", + "mapper": "116" + }, + "cbf4366f": { + "description": "Alien Syndrome (U.S. unlicensed)", + "mapper": "118", + "mirroring": "Horizontal" + }, + "90c773c1": { + "description": "Goal! 2", + "mapper": "118" + }, + "b9b4d9e0": { + "description": "NES Play Action Football", + "mapper": "118" + }, + "07d92c31": { + "description": "RPG Jinsei Game", + "mapper": "118" + }, + "37b62d04": { + "description": "Ys 3", + "mapper": "118" + }, + "318e5502": { + "description": "Sonic 3D Blast 6 (Unl)", + "mapper": "121" + }, + "ddcfb058": { + "description": "Street Fighter Zero 2 '97 (Unl) [!]", + "mapper": "121" + }, + "5aefbc94": { + "description": "Jovial Race (Sachen) [a1][!]", + "mapper": "133" + }, + "c2df0a00": { + "description": "Bio Senshi Dan(hacked)", + "mapper": "140", + "mirroring": "Vertical" + }, + "e46b1c5d": { + "description": "Mississippi Satsujin Jiken", + "mapper": "140", + "mirroring": "Vertical" + }, + "3293afea": { + "description": "Mississippi Satsujin Jiken", + "mapper": "140", + "mirroring": "Vertical" + }, + "6bc65d7e": { + "description": "Youkai Club", + "mapper": "140", + "mirroring": "Vertical" + }, + "5caa3e61": { + "description": "Death Race", + "mapper": "144", + "mirroring": "Vertical" + }, + "48239b42": { + "description": "Mahjong Companion (Sachen) [!]", + "mapper": "146" + }, + "b6a727fa": { + "description": "Papillion (As) [!]", + "mapper": "146" + }, + "a62b79e1": { + "description": "Side Winder (HES) [!]", + "mapper": "146" + }, + "cc868d4e": { + "description": "16 Mahjong [p1][!]", + "mapper": "149" + }, + "29582ca1": { + "mapper": "150" + }, + "40dbf7a2": { + "mapper": "150" + }, + "73fb55ac": { + "description": "2-in-1 Cosmo Cop + Cyber Monster (Sachen) [!]", + "mapper": "150" + }, + "ddcbda16": { + "description": "2-in-1 Tough Cop + Super Tough Cop (Sachen) [!]", + "mapper": "150" + }, + "47918d84": { + "description": "auto-upturn", + "mapper": "150" + }, + "0f141525": { + "description": "Arkanoid 2 (Japanese)", + "mapper": "152", + "mirroring": "Horizontal" + }, + "bda8f8e4": { + "description": "Gegege no Kitarou 2", + "mapper": "152", + "mirroring": "Horizontal" + }, + "b1a94b82": { + "description": "Pocket Zaurus", + "mapper": "152", + "mirroring": "Horizontal" + }, + "026c5fca": { + "description": "Saint Seiya Ougon Densetsu", + "mapper": "152", + "mirroring": "Horizontal" + }, + "3f15d20d": { + "description": "Famicom Jump 2", + "mapper": "153", + "mirroring": "Horizontal" + }, + "d1691028": { + "description": "Devil Man", + "mapper": "154", + "mirroring": "Horizontal" + }, + "cfd4a281": { + "description": "Money Game. Yay for money!", + "mapper": "155", + "mirroring": "Horizontal" + }, + "2f27cdef": { + "description": "Tatakae!! Rahmen Man", + "mapper": "155", + "mirroring": "Horizontal" + }, + "ccc03440": { + "mapper": "156" + }, + "983d8175": { + "description": "Datach Battle Rush", + "mapper": "157", + "mirroring": "Horizontal" + }, + "894efdbc": { + "description": "Datach Crayon Shin Chan", + "mapper": "157", + "mirroring": "Horizontal" + }, + "19e81461": { + "description": "Datach DBZ", + "mapper": "157", + "mirroring": "Horizontal" + }, + "be06853f": { + "description": "Datach J-League", + "mapper": "157", + "mirroring": "Horizontal" + }, + "0be0a328": { + "description": "Datach SD Gundam Wars", + "mapper": "157", + "mirroring": "Horizontal" + }, + "5b457641": { + "description": "Datach Ultraman Club", + "mapper": "157", + "mirroring": "Horizontal" + }, + "f51a7f46": { + "description": "Datach Yuu Yuu Hakusho", + "mapper": "157", + "mirroring": "Horizontal" + }, + "e170404c": { + "description": "SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.0) [!]", + "mapper": "159" + }, + "276ac722": { + "description": "SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.1) [!]", + "mapper": "159" + }, + "0cf42e69": { + "description": "Magical Taruruuto-kun - Fantastic World!! (J) (V1.0) [!]", + "mapper": "159" + }, + "dcb972ce": { + "description": "Magical Taruruuto-kun - Fantastic World!! (J) (V1.1) [!]", + "mapper": "159" + }, + "b7f28915": { + "description": "Magical Taruruuto-kun 2 - Mahou Daibouken (J)", + "mapper": "159" + }, + "183859d2": { + "description": "Dragon Ball Z - Kyoushuu! Saiya Jin (J) [!]", + "mapper": "159" + }, + "58152b42": { + "description": "Pipe 5 (Sachen)", + "mapper": "160", + "mirroring": "Vertical" + }, + "1c098942": { + "description": "Xi You Ji Hou Zhuan (Ch)", + "mapper": "162" + }, + "081caaff": { + "description": "Commandos (Ch)", + "mapper": "163" + }, + "02c41438": { + "description": "Xing He Zhan Shi (C)", + "mapper": "176" + }, + "558c0dc3": { + "description": "Super 2in1 (unl)[!] {mapper unsupported}", + "mapper": "178" + }, + "c68363f6": { + "description": "Crazy Climber", + "mapper": "180", + "mirroring": "Horizontal" + }, + "0f05ff0a": { + "description": "Seicross (redump)", + "mapper": "181" + }, + "96ce586e": { + "description": "Street Fighter 2 YOKO", + "mapper": "189", + "mirroring": "Horizontal" + }, + "555a555e": { + "mapper": "191" + }, + "2cc381f6": { + "description": "Sugoro Quest - Dice no Senshitachi (As)", + "mapper": "191" + }, + "a145fae6": { + "mapper": "192" + }, + "a9115bc1": { + "mapper": "192" + }, + "4c7bbb0e": { + "mapper": "192" + }, + "98c1cd4b": { + "description": "Ying Lie Qun Xia Zhuan (Chinese)", + "mapper": "192" + }, + "ee810d55": { + "description": "You Ling Xing Dong (Ch)", + "mapper": "192" + }, + "442f1a29": { + "description": "Young chivalry", + "mapper": "192" + }, + "637134e8": { + "description": "Fighting Hero", + "mapper": "193", + "mirroring": "Vertical" + }, + "a925226c": { + "description": "Dai-2-Ji - Super Robot Taisen (As)", + "mapper": "194" + }, + "7f3dbf1b": { + "mapper": "195", + "mirroring": "Horizontal" + }, + "b616885c": { + "description": "CHaos WOrld (Ch)", + "mapper": "195", + "mirroring": "Horizontal" + }, + "33c5df92": { + "mapper": "195" + }, + "1bc0be6c": { + "description": "Captain Tsubasa Vol 2 - Super Striker (C)", + "mapper": "195" + }, + "d5224fde": { + "description": "Crystalis (c)", + "mapper": "195" + }, + "fdec419f": { + "description": "Street Fighter VI 16 Peoples (Unl) [!]", + "mapper": "196" + }, + "700705f4": { + "mapper": "198" + }, + "9a2cf02c": { + "mapper": "198" + }, + "d8b401a7": { + "mapper": "198" + }, + "28192599": { + "mapper": "198" + }, + "19b9e732": { + "mapper": "198" + }, + "dd431ba7": { + "description": "Tenchi wo kurau 2 (c)", + "mapper": "198" + }, + "d871d3e6": { + "description": "Dragon Ball Z 2 - Gekishin Freeza! (C)", + "mapper": "199" + }, + "ed481b7c": { + "description": "Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (C)", + "mapper": "199" + }, + "44c20420": { + "description": "San Guo Zhi 2 (C)", + "mapper": "199" + }, + "4e1c1e3c": { + "description": "Karnov", + "mapper": "206", + "mirroring": "Horizontal" + }, + "276237b3": { + "description": "Karnov", + "mapper": "206", + "mirroring": "Horizontal" + }, + "7678f1d5": { + "description": "Fudou Myouou Den", + "mapper": "207", + "mirroring": "Horizontal" + }, + "07eb2c12": { + "description": "Street Fighter IV", + "mapper": "208" + }, + "dd8ced31": { + "description": "Power Rangers 3", + "mapper": "209" + }, + "063b1151": { + "description": "Power Rangers 4", + "mapper": "209" + }, + "dd4d9a62": { + "description": "Shin Samurai Spirits 2", + "mapper": "209" + }, + "0c47946d": { + "description": "Chibi Maruko Chan", + "mapper": "210", + "mirroring": "Vertical" + }, + "c247cc80": { + "description": "Family Circuit '91", + "mapper": "210", + "mirroring": "Vertical" + }, + "6ec51de5": { + "description": "Famista '92", + "mapper": "210", + "mirroring": "Vertical" + }, + "adffd64f": { + "description": "Famista '93", + "mapper": "210", + "mirroring": "Vertical" + }, + "429103c9": { + "description": "Famista '94", + "mapper": "210", + "mirroring": "Vertical" + }, + "81b7f1a8": { + "description": "Heisei Tensai Bakabon", + "mapper": "210", + "mirroring": "Vertical" + }, + "2447e03b": { + "description": "Top Striker", + "mapper": "210", + "mirroring": "Vertical" + }, + "1dc0f740": { + "description": "Wagyan Land 2", + "mapper": "210", + "mirroring": "Vertical" + }, + "d323b806": { + "description": "Wagyan Land 3", + "mapper": "210", + "mirroring": "Vertical" + }, + "bd523011": { + "description": "Dream Master", + "mapper": "210", + "mirroring": "Horizontal" + }, + "5daae69a": { + "description": "Aladdin - Return of Jaffar, The (Unl) [!]", + "mapper": "211" + }, + "1ec1dfeb": { + "description": "255-in-1 (Cut version) [p1]", + "mapper": "217" + }, + "046d70cc": { + "description": "500-in-1 (Anim Splash, Alt Mapper)[p1][!]", + "mapper": "217" + }, + "12f86a4d": { + "description": "500-in-1 (Static Splash, Alt Mapper)[p1][!]", + "mapper": "217" + }, + "d09f778d": { + "description": "9999999-in-1 (Static Splash, Alt Mapper)[p1][!]", + "mapper": "217" + }, + "62ef6c79": { + "description": "Quattro Sports -Aladdin", + "mapper": "232", + "mirroring": "Horizontal" + }, + "2705eaeb": { + "description": "Maxi 15", + "mapper": "234" + }, + "6f12afc5": { + "description": "Golden Game 150-in-1", + "mapper": "235" + }, + "fb2b6b10": { + "description": "Fan Kong Jing Ying (Ch)", + "mapper": "241" + }, + "b5e83c9a": { + "description": "Xing Ji Zheng Ba (Ch)", + "mapper": "241" + }, + "2537b3e6": { + "description": "Dance Xtreme - Prima (Unl)", + "mapper": "241" + }, + "11611e89": { + "description": "Darkseed (Unl) [p1]", + "mapper": "241" + }, + "81a37827": { + "description": "Darkseed (Unl) [p1][b1]", + "mapper": "241" + }, + "368c19a8": { + "description": "LIKO Study Cartridge 3-in-1 (Unl) [!]", + "mapper": "241" + }, + "a21e675c": { + "description": "Mashou (J) [!]", + "mapper": "241" + }, + "54d98b79": { + "description": "Titanic 1912 (Unl)", + "mapper": "241" + }, + "6bea1235": { + "description": "MMC3 cart, but with nobanking applied to CHR-RAM, so let it be there", + "mapper": "245" + }, + "345ee51a": { + "description": "DQ4c", + "mapper": "245" + }, + "57514c6c": { + "description": "Yong Zhe Dou E Long - Dragon Quest VI (Ch)", + "mapper": "245" + }, + "c04361e499748382": { + "description": "AD&D Heroes of the Lance", + "battery": true + }, + "b72ee2337ced5792": { + "description": "AD&D Hillsfar", + "battery": true + }, + "2b7103b7a27bd72f": { + "description": "AD&D Pool of Radiance", + "battery": true + }, + "498c10dc463cfe95": { + "description": "Battle Fleet", + "battery": true + }, + "854d7947a3177f57": { + "description": "Crystalis", + "battery": true + }, + "fad22d265cd70820": { + "description": "Downtown Special: Kunio-kun no Jidaigeki Dayo Zenin Shuugou!", + "battery": true + }, + "4a1f5336b86851b6": { + "description": "DW", + "battery": true + }, + "b0bcc02c843c1b79": { + "description": "DW", + "battery": true + }, + "2dcf3a98c7937c22": { + "description": "DW 2", + "battery": true + }, + "98e55e09dfcc7533": { + "description": "DW 4", + "battery": true + }, + "733026b6b72f2470": { + "description": "Dw 3", + "battery": true + }, + "6917ffcaca2d8466": { + "description": "Famista '90", + "battery": true + }, + "8da46db592a1fcf4": { + "description": "Faria", + "battery": true + }, + "edba17a2c4608d20": { + "description": "Final Fantasy", + "battery": true + }, + "91a6846d3202e3d6": { + "description": "Final Fantasy", + "battery": true + }, + "012df596e2b31174": { + "description": "Final Fantasy 1+2", + "battery": true + }, + "f6b359a720549ecd": { + "description": "Final Fantasy 2", + "battery": true + }, + "5a30da1d9b4af35d": { + "description": "Final Fantasy 3", + "battery": true + }, + "d63dcc68c2b20adc": { + "description": "Final Fantasy J", + "battery": true + }, + "2ee3417ba8b69706": { + "description": "Hydlide 3", + "battery": true + }, + "ebbce5a54cf3ecc0": { + "description": "Justbreed", + "battery": true + }, + "6a858da551ba239e": { + "description": "Kaijuu Monogatari", + "battery": true + }, + "2db8f5d16c10b925": { + "description": "Kyonshiizu 2", + "battery": true + }, + "04a31647de80fdab": { + "description": "Legend of Zelda", + "battery": true + }, + "94b9484862a26cba": { + "description": "Legend of Zelda", + "battery": true + }, + "a40666740b7d22fe": { + "description": "Mindseeker", + "battery": true + }, + "82000965f04a71bb": { + "description": "Mirai Shinwa Jarvas", + "battery": true + }, + "77b811b2760104b9": { + "description": "Mouryou Senki Madara", + "battery": true + }, + "11b69122efe86e8c": { + "description": "RPG Jinsei Game", + "battery": true + }, + "9aa1dc16c05e7de5": { + "description": "Startropics", + "battery": true + }, + "1b084107d0878bd0": { + "description": "Startropics 2", + "battery": true + }, + "a70b495314f4d075": { + "description": "Ys 3", + "battery": true + }, + "836c0ff4f3e06e45": { + "description": "Zelda 2", + "battery": true } } \ No newline at end of file -- cgit v1.2.3