diff --git a/src/burn/drv/neogeo/d_neogeo.cpp b/src/burn/drv/neogeo/d_neogeo.cpp index 56db96bf5..f5c1fd0b2 100644 --- a/src/burn/drv/neogeo/d_neogeo.cpp +++ b/src/burn/drv/neogeo/d_neogeo.cpp @@ -1302,16 +1302,6 @@ static struct BurnDIPInfo kof98cbDIPList[] = { {0x06, 0x01, 0x01, 0x01, "GOTVG" }, }; -static struct BurnDIPInfo kof98eckDIPList[] = { - // Fake DIPs - {0x06, 0xFF, 0xFF, 0x02, NULL }, // Extend - - {0, 0xFE, 0, 3, "Version change (Must reload)" }, - {0x06, 0x01, 0x03, 0x00, "wo1wan" }, - {0x06, 0x01, 0x03, 0x01, "GOTVG" }, - {0x06, 0x01, 0x03, 0x02, "Extend" }, -}; - static struct BurnDIPInfo kof98mixDIPList[] = { // Fake DIPs {0x06, 0xFF, 0xFF, 0x00, NULL }, // GOTVG @@ -1374,7 +1364,6 @@ STDDIPINFOEXT(kof97ae, ngdefault, kof97ae ) STDDIPINFOEXT(kof97t, ngdefault, kof97t ) STDDIPINFOEXT(kof98ae, ngdefault, kof98ae ) STDDIPINFOEXT(kof98cb, ngdefault, kof98cb ) -STDDIPINFOEXT(kof98eck, ngdefault, kof98eck ) STDDIPINFOEXT(kof98mix, ngdefault, kof98mix ) STDDIPINFOEXT(kof2kotc, aesdefault, kof2kotc ) STDDIPINFOEXT(kf2k23rd, ngdefault, kf2k23rd ) @@ -21637,6 +21626,39 @@ struct BurnDriver BurnDrvKof95sp = { }; +// The King of Fighters '95 (Optimized, Hack) +// GOTVG 20240513 + +static struct BurnRomInfo kof95tRomDesc[] = { + { "084-p1t.p1", 0x100000, 0x9b155d4c, 1 | BRF_ESS | BRF_PRG }, + { "084-p2d.sp2", 0x100000, 0x5cb1af9e, 1 | BRF_ESS | BRF_PRG }, + { "084-p3t.p3", 0x020000, 0x10e83d84, 1 | BRF_ESS | BRF_PRG }, + + KOF95_TEXT + KOF95_SPR1 + KOF95_SPR2 + KOF95_SPR3 + KOF95_SPR4 + + KOF95_Z80 + + KOF95_SND +}; + +STDROMPICKEXT(kof95t, kof95t, neogeo) +STD_ROM_FN(kof95t) + +struct BurnDriver BurnDrvkof95t = { + "kof95t", "kof95", "neogeo", NULL, "2024", + "The King of Fighters '95 (Optimized, Hack)\0", NULL, "hack", "Neo Geo MVS", + NULL, NULL, NULL, NULL, + BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_PREFIX_CARTRIDGE | HARDWARE_SNK_NEOGEO, GBF_VSFIGHT, FBF_KOF, + NULL, kof95tRomInfo, kof95tRomName, NULL, NULL, NULL, NULL, neogeoInputInfo, neogeoDIPInfo, + samsh2spInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette, + 0x1000, 304, 224, 4, 3 +}; + + // The King of Fighters '95 (Boss, Hack) // 20220629 @@ -22904,11 +22926,11 @@ struct BurnDriver BurnDrvKof97evf = { // The King of Fighters '97 (Evolution & Balance, Hack) -// GOTVG 20220903 +// GOTVG 20231217 static struct BurnRomInfo kof97ebRomDesc[] = { - { "232-p1eb.p1", 0x100000, 0x8c3bea26, 1 | BRF_ESS | BRF_PRG }, - { "232-p2eb.sp2", 0x400000, 0xa1328c9f, 1 | BRF_ESS | BRF_PRG }, + { "232-p1eb.p1", 0x100000, 0xc602e1c7, 1 | BRF_ESS | BRF_PRG }, + { "232-p2eb.sp2", 0x400000, 0x9b4f127a, 1 | BRF_ESS | BRF_PRG }, KOF97_TEXT @@ -22926,7 +22948,7 @@ STDROMPICKEXT(kof97eb, kof97eb, neogeo) STD_ROM_FN(kof97eb) struct BurnDriver BurnDrvKof97eb = { - "kof97eb", "kof97", "neogeo", NULL, "2022", + "kof97eb", "kof97", "neogeo", NULL, "2023", "The King of Fighters '97 (Evolution & Balance, Hack)\0", NULL, "hack", "Neo Geo MVS", NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_PREFIX_CARTRIDGE | HARDWARE_SNK_NEOGEO, GBF_VSFIGHT, FBF_KOF, @@ -23596,149 +23618,46 @@ struct BurnDriver BurnDrvKof98pfe = { 0x1000, 304, 224, 4, 3 }; -// The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Easy Combo King, Hack) +// The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Easy Combo Edition, Hack) // Modified by gunloc941 +// 20240517 static struct BurnRomInfo kof98eckRomDesc[] = { /* wo1wan - 20230725 */ - { "242-p1eck.p1", 0x100000, 0x40cf2ada, 1 | BRF_ESS | BRF_PRG }, // 0 68K code - { "242-p2eck.sp2", 0x400000, 0x57cc0a48, 1 | BRF_ESS | BRF_PRG }, + { "242-p1eck.p1", 0x100000, 0xeb0fd146, 1 | BRF_ESS | BRF_PRG }, // 0 68K code + { "242-p2eck.sp2", 0x400000, 0xc784d2c9, 1 | BRF_ESS | BRF_PRG }, - { "242-s1eck.s1", 0x020000, 0x5a498ed2, 2 | BRF_GRA }, // 2 Text layer tiles + { "242-s1eck.s1", 0x020000, 0xe50c8256, 2 | BRF_GRA }, // 2 Text layer tiles - { "242-c1eck.c1", 0x800000, 0x2162712c, 3 | BRF_GRA }, // 3 Sprite data - { "242-c2eck.c2", 0x800000, 0xfe7e7c39, 3 | BRF_GRA }, - { "242-c3eck.c3", 0x800000, 0x4091bca0, 3 | BRF_GRA }, - { "242-c4eck.c4", 0x800000, 0x56918bab, 3 | BRF_GRA }, + { "242-c1eck.c1", 0x800000, 0x03963c99, 3 | BRF_GRA }, // 3 Sprite data + { "242-c2eck.c2", 0x800000, 0xf2bce143, 3 | BRF_GRA }, + { "242-c3eck.c3", 0x800000, 0xfd04ebd3, 3 | BRF_GRA }, + { "242-c4eck.c4", 0x800000, 0x413f0427, 3 | BRF_GRA }, { "242-c5eck.c5", 0x800000, 0x76252bdc, 3 | BRF_GRA }, { "242-c6eck.c6", 0x800000, 0x13d5b9b7, 3 | BRF_GRA }, - { "242-c7eck.c7", 0x800000, 0xa4e1c2ee, 3 | BRF_GRA }, - { "242-c8eck.c8", 0x800000, 0x104a0d38, 3 | BRF_GRA }, + { "242-c7eck.c7", 0x800000, 0xc3dda442, 3 | BRF_GRA }, + { "242-c8eck.c8", 0x800000, 0xf8e2c321, 3 | BRF_GRA }, + { "242-c9eck.c9", 0x800000, 0x5a8f8d88, 3 | BRF_GRA }, + { "242-c10eck.c10", 0x800000, 0xdc7a6504, 3 | BRF_GRA }, - { "242-m1eck.m1", 0x040000, 0x4803f2dc, 4 | BRF_ESS | BRF_PRG }, // 11 Z80 code + { "242-m1eck.m1", 0x040000, 0xa416260e, 4 | BRF_ESS | BRF_PRG }, // 11 Z80 code - { "242-v1eck.v1", 0x400000, 0xb5650f76, 5 | BRF_SND }, // 12 Sound data - { "242-v2eck.v2", 0x400000, 0xb43b83ee, 5 | BRF_SND }, - { "242-v3eck.v3", 0x400000, 0x59c53922, 5 | BRF_SND }, - { "242-v4eck.v4", 0x400000, 0x46ca6f5e, 5 | BRF_SND }, - - /* GOTVG - 20190217 */ - { "242-p1eg.dif", 0x100000, 0x545818c9, 0 | BRF_ESS | BRF_PRG }, // 16 68K code - { "242-p2eg.dif", 0x400000, 0x1bd2a98c, 0 | BRF_ESS | BRF_PRG }, - - { "242-s1eg.dif", 0x020000, 0xddbd6acd, 0 | BRF_GRA }, // 18 Text layer tiles - - { "242-c1eg.dif", 0x800000, 0xe86a80a8, 0 | BRF_GRA }, // 19 Sprite data - { "242-c2eg.dif", 0x800000, 0x11091135, 0 | BRF_GRA }, - { "242-c3eg.dif", 0x800000, 0x5ccae554, 0 | BRF_GRA }, - { "242-c4eg.dif", 0x800000, 0x1087e1a9, 0 | BRF_GRA }, - { "242-c5eg.dif", 0x800000, 0x79c620ff, 0 | BRF_GRA }, - { "242-c6eg.dif", 0x800000, 0x0d1416f5, 0 | BRF_GRA }, - { "242-c7eg.dif", 0x800000, 0xd1b4e293, 0 | BRF_GRA }, - { "242-c8eg.dif", 0x800000, 0x835f26a2, 0 | BRF_GRA }, - - { "242-mg1.dif", 0x040000, 0xe47773e5, 0 | BRF_ESS | BRF_PRG }, // 27 Z80 code - - { "242-v1eg.dif", 0x400000, 0x96f8737f, 0 | BRF_SND }, // 28 Sound data - { "242-v2eg.dif", 0x400000, 0x81121ce9, 0 | BRF_SND }, - { "242-v3eg.dif", 0x400000, 0x78097adb, 0 | BRF_SND }, - { "242-v4eg.dif", 0x400000, 0x57aa42a5, 0 | BRF_SND }, - - /* Extend Version - 20240403 */ - { "242-p1ex.dif", 0x100000, 0x0d90487a, 0 | BRF_ESS | BRF_PRG }, // 32 68K code - { "242-p2ex.dif", 0x400000, 0x07dc1fdc, 0 | BRF_ESS | BRF_PRG }, - - { "242-s1ex.dif", 0x020000, 0xc1adc149, 0 | BRF_GRA }, // 34 Text layer tiles - - { "242-c1ex.dif", 0x800000, 0xb612232a, 0 | BRF_GRA }, // 35 Sprite data - { "242-c2ex.dif", 0x800000, 0xc444d7a0, 0 | BRF_GRA }, - { "242-c3ex.dif", 0x800000, 0xa747eb36, 0 | BRF_GRA }, - { "242-c4ex.dif", 0x800000, 0x0d7c33c9, 0 | BRF_GRA }, - { "242-c7ex.dif", 0x800000, 0x7deedae9, 0 | BRF_GRA }, - { "242-c8ex.dif", 0x800000, 0xf27a725c, 0 | BRF_GRA }, - { "242-c9ex.c9", 0x800000, 0x5a8f8d88, 0 | BRF_GRA }, - { "242-c10ex.c10", 0x800000, 0xdc7a6504, 0 | BRF_GRA }, - - { "242-m1ex.dif", 0x040000, 0x0e1b3ef0, 0 | BRF_ESS | BRF_PRG }, // 43 Z80 code - - { "242-v1ex.dif", 0x400000, 0xc0c9ff22, 0 | BRF_SND }, // 44 Sound data - { "242-v2ex.dif", 0x400000, 0xd2d03f2a, 0 | BRF_SND }, - { "242-v3ex.dif", 0x400000, 0x7b339d40, 0 | BRF_SND }, - { "242-v4ex.dif", 0x400000, 0x07450c5d, 0 | BRF_SND }, + { "242-v1eck.v1", 0x400000, 0x64ebb03e, 5 | BRF_SND }, // 12 Sound data + { "242-v2eck.v2", 0x400000, 0x77acfcae, 5 | BRF_SND }, + { "242-v3eck.v3", 0x400000, 0x33b1e408, 5 | BRF_SND }, + { "242-v4eck.v4", 0x400000, 0x50c82369, 5 | BRF_SND }, }; STDROMPICKEXT(kof98eck, kof98eck, neogeo) STD_ROM_FN(kof98eck) -static void kof98eckCallback() -{ - INT32 nIndex = (0x01 == nBurnDrvSubActive) ? 16 : 32; - - RomDiffPatch(Neo68KROMActive + 0x000000, nIndex + 0, 0x100000, 1); // 68K code - RomDiffPatch(Neo68KROMActive + 0x100000, nIndex + 1, 0x400000, 1); - RomDiffPatch(NeoTextROM[nNeoActiveSlot], nIndex + 2, 0x020000, 1); // Text layer tiles - - nIndex += 3; - - if (0x01 == nBurnDrvSubActive) { - for (INT32 nGroup = 0; nGroup < 4; nGroup++, nIndex += 2) { - RomDiffPatch(NeoSpriteROM[nNeoActiveSlot] + 0x01000000 * nGroup, nIndex, 0x01000000, 2); - } - } else { - RomDiffPatch(NeoSpriteROM[nNeoActiveSlot] + 0x00000000, nIndex + 0, 0x01000000, 2); - RomDiffPatch(NeoSpriteROM[nNeoActiveSlot] + 0x01000000, nIndex + 2, 0x01000000, 2); - RomDiffPatch(NeoSpriteROM[nNeoActiveSlot] + 0x03000000, nIndex + 4, 0x01000000, 2); - RomDiffPatch(NeoSpriteROM[nNeoActiveSlot] + 0x04000000, nIndex + 6, 0x00000000, 2); - } - - nIndex = (0x01 == nBurnDrvSubActive) ? 27 : 43; - - RomDiffPatch(NeoZ80ROMActive + 0x000000, nIndex + 0, 0x040000, 1); // Z80 code -} - -static INT32 kof98eckInit() -{ - nBurnDrvSubActive = (VerSwitcher & 0x03); - - switch (nBurnDrvSubActive) { - case 0x00: - pszCustomNameA = "The King of Fighters '98 - Easy Combo King (wo1wan, Hack)\0"; - break; - - case 0x01: - pszCustomNameA = "The King of Fighters '98 - Easy Combo King (GOTVG, Hack)\0"; - break; - - case 0x02: - pNRI->nSpriteSize = 0x1000000; - pszCustomNameA = "The King of Fighters '98 - Easy Combo King (Extend, Hack)\0"; - break; - } - - if (nBurnDrvSubActive) { - NeoCallbackActive->pInitialise = kof98eckCallback; - } - - INT32 nRet = NeoInit(); - - if ((0 == nRet) && (nBurnDrvSubActive)) { - INT32 nIndex = (0x01 == nBurnDrvSubActive) ? 28 : 44; - - for (INT32 nNum = 0; nNum < 4; nNum++, nIndex++) { - RomDiffPatch(YM2610ADPCMAROM[nNeoActiveSlot] + 0x400000 * nNum, nIndex, 0x400000, 1); - } - } - - return nRet; -} - struct BurnDriver BurnDrvKof98eckg = { - "kof98eck", "kof98", "neogeo", NULL, "2019-2024", - "The King of Fighters '98 - Easy Combo King (Hack)\0", "Other versions are selected in the dipswitch", "hack", "Neo Geo MVS", + "kof98eck", "kof98", "neogeo", NULL, "2024", + "The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Easy Combo Edition, Hack)\0", NULL, "hack", "Neo Geo MVS", NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_HACK, 2, HARDWARE_PREFIX_CARTRIDGE | HARDWARE_SNK_NEOGEO, GBF_VSFIGHT, FBF_KOF, - NULL, kof98eckRomInfo, kof98eckRomName, NULL, NULL, NULL, NULL, neoverswInputInfo, kof98eckDIPInfo, - kof98eckInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette, + NULL, kof98eckRomInfo, kof98eckRomName, NULL, NULL, NULL, NULL, neogeoInputInfo, neogeoDIPInfo, + NeoInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette, 0x1000, 304, 224, 4, 3 }; @@ -23914,13 +23833,25 @@ struct BurnDriver BurnDrvKof99t = { // The King of Fighters '99 - Millennium Battle (LC+SK, Hack) // Modified by LIY -// GOTVG 20240303 +// GOTVG 20240426 static struct BurnRomInfo kof99skRomDesc[] = { - { "152-p1sk.p1", 0x100000, 0x83839e76, 1 | BRF_ESS | BRF_PRG }, - { "152-p2sk.sp2", 0x400000, 0xc4b9aa9c, 1 | BRF_ESS | BRF_PRG }, + { "152-p1sk.p1", 0x100000, 0x83839e76, 1 | BRF_ESS | BRF_PRG }, + { "152-p2sk.sp2", 0x400000, 0xc4b9aa9c, 1 | BRF_ESS | BRF_PRG }, - KOF99_DECRYPTED_COMPONENTS + KOF99_DECRYPTED_TEXT + + { "proto_251-c1.c1", 0x800000, 0xe5d8ffa4, 3 | BRF_GRA }, + { "proto_251-c2.c2", 0x800000, 0xd822778f, 3 | BRF_GRA }, + { "proto_251-c3.c3", 0x800000, 0xf20959e8, 3 | BRF_GRA }, + { "proto_251-c4.c4", 0x800000, 0x54ffbe9f, 3 | BRF_GRA }, + { "proto_251-c5.c5", 0x800000, 0xd87a3bbc, 3 | BRF_GRA }, + { "proto_251-c6.c6", 0x800000, 0x4d40a691, 3 | BRF_GRA }, + { "proto_251-c7.c7", 0x800000, 0xa4479a58, 3 | BRF_GRA }, + { "proto_251-c8.c8", 0x800000, 0xead513ce, 3 | BRF_GRA }, + + KOF99_Z80 + KOF99_SND }; STDROMPICKEXT(kof99sk, kof99sk, neogeo) @@ -24817,11 +24748,11 @@ struct BurnDriver BurnDrvKf2k1pkz = { // The King of Fighters 2001 (Ultimate, Hack) -// GOTVG 20240411 +// GOTVG 20240611 static struct BurnRomInfo kf2k1ultRomDesc[] = { - { "262-p1ult.p1", 0x100000, 0x3ca57684, 1 | BRF_ESS | BRF_PRG }, - { "262-p2ult.sp2", 0x500000, 0xa2466d70, 1 | BRF_ESS | BRF_PRG }, + { "262-p1ult.p1", 0x100000, 0x0d9b8889, 1 | BRF_ESS | BRF_PRG }, + { "262-p2ult.sp2", 0x500000, 0x3e3047fb, 1 | BRF_ESS | BRF_PRG }, { "262-s1ult.s1", 0x020000, 0xe8cb20be, 2 | BRF_GRA }, @@ -24833,19 +24764,19 @@ static struct BurnRomInfo kf2k1ultRomDesc[] = { { "262-c6ult.c6", 0x800000, 0xac5f2083, 3 | BRF_GRA }, { "262-c7ult.c7", 0x800000, 0xcd11861e, 3 | BRF_GRA }, { "262-c8ult.c8", 0x800000, 0xc0e84cc1, 3 | BRF_GRA }, - { "262-c9ult.c9", 0x800000, 0xf031a797, 3 | BRF_GRA }, - { "262-c10ult.c10", 0x800000, 0x457c7faf, 3 | BRF_GRA }, + { "262-c9ult.c9", 0x800000, 0x694b9949, 3 | BRF_GRA }, + { "262-c10ult.c10", 0x800000, 0x9c1ee777, 3 | BRF_GRA }, { "265-c7d.c7", 0x800000, 0x8a5b561c, 3 | BRF_GRA }, { "265-c8d.c8", 0x800000, 0xbef667a3, 3 | BRF_GRA }, { "262-c13ult.c13", 0x800000, 0x0b316a58, 3 | BRF_GRA }, { "262-c14ult.c14", 0x800000, 0x648e620b, 3 | BRF_GRA }, - { "262-m1ult.m1", 0x020000, 0xe5dbafad, 4 | BRF_ESS | BRF_PRG }, + { "262-m1ult.m1", 0x020000, 0xbbe3ee15, 4 | BRF_ESS | BRF_PRG }, - { "262-v1-08-e0.v1", 0x400000, 0x83d49ecf, 5 | BRF_SND }, - { "262-v2-08-e0.v2", 0x400000, 0x003f1843, 5 | BRF_SND }, - { "262-v3-08-e0.v3", 0x400000, 0x2ae38dbe, 5 | BRF_SND }, - { "262-v4ult-08-e0.v4", 0x400000, 0x55602d94, 5 | BRF_SND }, + { "262-v1ult-08-e0.v1", 0x400000, 0xb3a37823, 5 | BRF_SND }, + { "262-v2ult-08-e0.v2", 0x400000, 0x4864d184, 5 | BRF_SND }, + { "262-v3ult-08-e0.v3", 0x400000, 0x6cecc242, 5 | BRF_SND }, + { "262-v4ult-08-e0.v4", 0x400000, 0x34faa5dd, 5 | BRF_SND }, { "262-v5ult-08-e0.v5", 0x400000, 0x42423d32, 5 | BRF_SND }, { "262-v6ult-08-e0.v6", 0x400000, 0xc9cbcb39, 5 | BRF_SND }, };