diff --git a/src/burn/drv/pgm/d_pgm.cpp b/src/burn/drv/pgm/d_pgm.cpp index a4cd68139..0d084ef84 100644 --- a/src/burn/drv/pgm/d_pgm.cpp +++ b/src/burn/drv/pgm/d_pgm.cpp @@ -228,7 +228,7 @@ static struct BurnDIPInfo martmastDIPList[] = { static struct BurnDIPInfo martmastc102DIPList[] = { {0x2E, 0xFF, 0xFF, 0x00, NULL }, - {0, 0xFE, 0, 6, "Region (Fake)" }, + {0, 0xFE, 0, 7, "Region (Fake)" }, {0x2E, 0x01, 0x07, 0x00, "China" }, {0x2E, 0x01, 0x07, 0x01, "Taiwan" }, {0x2E, 0x01, 0x07, 0x02, "Japan" }, @@ -238,6 +238,19 @@ static struct BurnDIPInfo martmastc102DIPList[] = { // {0x2E, 0x01, 0x07, 0x06, "USA" }, }; +static struct BurnDIPInfo thegladDIPList[] = { + {0x2E, 0xFF, 0xFF, 0x06, NULL }, + + {0, 0xFE, 0, 7, "Region (Fake)" }, + {0x2E, 0x01, 0x07, 0x00, "China" }, + {0x2E, 0x01, 0x07, 0x01, "Taiwan" }, + {0x2E, 0x01, 0x07, 0x02, "Japan" }, + {0x2E, 0x01, 0x07, 0x03, "Korea" }, + {0x2E, 0x01, 0x07, 0x04, "Hong Kong" }, + {0x2E, 0x01, 0x07, 0x05, "Spanish Territories" }, + {0x2E, 0x01, 0x07, 0x06, "World" }, +}; + static struct BurnDIPInfo ddp2DIPList[] = { {0x2E, 0xFF, 0xFF, 0x05, NULL }, }; @@ -291,7 +304,9 @@ STDDIPINFOEXT(ddp2k, pgm, ddp2k ) STDDIPINFOEXT(ddp2j, pgm, ddp2j ) STDDIPINFOEXT(ddp2t, pgm, ddp2t ) STDDIPINFOEXT(ddp2c, pgm, ddp2c ) +STDDIPINFOEXT(theglad, pgm, theglad ) STDDIPINFOEXT(dmnfrntpcb, jamma, kov ) +STDDIPINFOEXT(thegladpcb, jamma, theglad ) // ----------------------------------------------------------------------------- // BIOS @@ -2800,9 +2815,9 @@ struct BurnDriver BurnDrvDw2001 = { // Dragon World Pretty Chance (V101, Japan) static struct BurnRomInfo dwpcRomDesc[] = { - { "dwpc_v101jp.u22", 0x080000, 0xb93027c0, 1 | BRF_PRG | BRF_ESS }, // 0 68K Code + { "dwpc_v101jp.u22", 0x080000, 0xb93027c0, 1 | BRF_PRG | BRF_ESS }, // 0 68K Code - { "dwpc_v100jp.u11", 0x400000, 0x3aa5a787, 2 | BRF_GRA }, // 1 Tile data + { "dwpc_v100jp.u11", 0x400000, 0x3aa5a787, 2 | BRF_GRA }, // 1 Tile data { "dwpc_v100jp.u2", 0x200000, 0xe7115763, 3 | BRF_GRA }, // 2 Sprite Color Data { "dwpc_v100jp.u3", 0x200000, 0x49c184a4, 3 | BRF_GRA }, // 4 @@ -2813,7 +2828,7 @@ static struct BurnRomInfo dwpcRomDesc[] = { { "dw2001_igs027a_japan.bin", 0x004000, 0x3a79159b, 7 | BRF_PRG }, // 7 Internal ARM7 rom - { "dwpc_v100jp.u12", 0x080000, 0x0d112126, 8 | BRF_PRG | BRF_ESS }, // 8 External ARM7 rom + { "dwpc_v100jp.u12", 0x080000, 0x0d112126, 8 | BRF_PRG | BRF_ESS }, // 8 External ARM7 rom }; STDROMPICKEXT(dwpc, dwpc, pgm) @@ -2851,7 +2866,7 @@ static struct BurnRomInfo dmnfrntRomDesc[] = { #if !defined ROM_VERIFY { "v105_32m.u26", 0x400000, 0xc798c2ef, 8 | BRF_PRG | BRF_ESS }, // 9 External ARM7 Rom #else - { "chinese-v105.u62", 0x400000, 0xc798c2ef, 8 | BRF_PRG | BRF_ESS }, // 9 External ARM7 Rom + { "chinese-v105.u62", 0x400000, 0xc798c2ef, 8 | BRF_PRG | BRF_ESS }, // 9 External ARM7 Rom { "v105_32m.u26", 0x400000, 0xd200ee63, 0 | BRF_PRG | BRF_OPT }, // 9 External ARM7 Rom #endif }; @@ -2993,18 +3008,58 @@ static struct BurnRomInfo thegladRomDesc[] = { { "w04601.u1", 0x800000, 0x5f15ddb3, 5 | BRF_SND }, // 7 Samples - { "theglad_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 8 Internal ARM7 Rom + { "thegladpcb_igs027a_execute_only_area", 0x000188, 0x00000000, 0 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 8 Internal ARM7 Rom + { "thegladpcb_igs027a.bin", 0x003e78, 0xd7f06e2d, 7 | BRF_PRG | BRF_ESS }, // 9 - { "v107.u26", 0x200000, 0xf7c61357, 8 | BRF_PRG | BRF_ESS }, // 9 External ARM7 Rom + { "v107.u26", 0x200000, 0xf7c61357, 8 | BRF_PRG | BRF_ESS }, // 10 External ARM7 Rom }; STDROMPICKEXT(theglad, theglad, pgm) STD_ROM_FN(theglad) +static void thegladPatch() +{ + pgm_decrypt_theglad(); + + // Replace undumpable area of the arm7 internal rom with a custom-built + // version created by David Haywood in order to make game playable + static UINT16 thegladEOHackData[0x188/2] = { + 0x000a, 0xea00, 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, + 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xf000, 0xe59f, + 0x0010, 0x0800, 0x0010, 0x0800, 0xfffe, 0xeaff, 0xfffe, 0xeaff, + 0x00d2, 0xe3a0, 0xf000, 0xe121, 0x4001, 0xe3a0, 0x4b06, 0xe284, + 0x0cfa, 0xe3a0, 0xd804, 0xe080, 0x00d1, 0xe3a0, 0xf000, 0xe121, + 0x0cf6, 0xe3a0, 0xd804, 0xe080, 0x00d7, 0xe3a0, 0xf000, 0xe121, + 0x0cff, 0xe3a0, 0xd804, 0xe080, 0x00db, 0xe3a0, 0xf000, 0xe121, + 0x4140, 0xe1c4, 0x0cfe, 0xe3a0, 0xd804, 0xe080, 0x00d3, 0xe3a0, + 0xf000, 0xe121, 0x4a01, 0xe3a0, 0x0b01, 0xe3a0, 0xd804, 0xe080, + 0x5a0f, 0xe3a0, 0x0008, 0xe3a0, 0x8805, 0xe080, 0x0010, 0xe3a0, + 0x0000, 0xe5c8, 0x7805, 0xe1a0, 0x6a01, 0xe3a0, 0x0012, 0xe3a0, + 0x0a02, 0xe280, 0x6806, 0xe080, 0x6000, 0xe587, 0x00d3, 0xe3a0, + 0xf000, 0xe121, 0x4001, 0xe3a0, 0x4b06, 0xe284, 0x0cf2, 0xe3a0, + 0xd804, 0xe080, 0x0013, 0xe3a0, 0xf000, 0xe121, 0x0028, 0xea00, + 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xe004, 0xe52d, 0x00d3, 0xe3a0, + 0xf000, 0xe121, 0xe004, 0xe49d, 0xff1e, 0xe12f, 0xe004, 0xe52d, + 0x0013, 0xe3a0, 0xf000, 0xe121, 0xe004, 0xe49d, 0xff1e, 0xe12f, + 0x00d1, 0xe3a0, 0xf000, 0xe121, 0xd0b8, 0xe59f, 0x00d3, 0xe3a0, + 0xf000, 0xe121, 0xd0b0, 0xe59f, 0x10b8, 0xe59f, 0x0000, 0xe3a0, + 0x0000, 0xe581, 0xf302, 0xe3a0, 0xfffe, 0xeaff, 0xfffe, 0xeaff, + 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, + 0xff1e, 0xe12f, 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, + 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, + 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, 0xfffe, 0xeaff, + 0xfffe, 0xeaff, 0x105c, 0xe59f + }; + + memmove (PGMARMROM + 0x188, PGMARMROM, 0x4000-0x188); + memcpy (PGMARMROM, thegladEOHackData, 0x188); +} + static INT32 thegladInit() { - pPgmInitCallback = pgm_decrypt_theglad; -// pPgmProtCallback = install_protection_asic27a_svg; + nPgmAsicRegionHackAddress = 0x3316; + pPgmInitCallback = thegladPatch; + pPgmProtCallback = install_protection_asic27a_svg; return pgmInit(); } @@ -3013,7 +3068,7 @@ struct BurnDriverD BurnDrvTheglad = { "theglad", NULL, "pgm", NULL, "2003", "The Gladiator - Road Of The Sword / Shen Jian (V101)\0", "Incomplete Dump", "IGS", "PolyGameMaster", L"The Gladiator - Road of The Sword (V101)\0\u795E\u5251\u98CE\u4E91\0\u795E\u528D\u98A8\u96F2\0", NULL, NULL, NULL, - 0, 4, HARDWARE_IGS_PGM/* | HARDWARE_IGS_USE_ARM_CPU*/, GBF_SCRFIGHT, 0, + BDF_GAME_WORKING, 4, HARDWARE_IGS_PGM | HARDWARE_IGS_USE_ARM_CPU, GBF_SCRFIGHT, 0, NULL, thegladRomInfo, thegladRomName, NULL, NULL, pgmInputInfo, pgmDIPInfo, thegladInit, pgmExit, pgmFrame, pgmDraw, pgmScan, &nPgmPalRecalc, 0x900, 448, 224, 4, 3 @@ -3038,7 +3093,7 @@ static struct BurnRomInfo thegladaRomDesc[] = { { "theglad_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 8 Internal ARM7 Rom - { "u2.rom", 0x200000, 0xc7bcf2ae, 8 | BRF_PRG | BRF_ESS }, // 9 External ARM7 Rom + { "u2.rom", 0x200000, 0xc7bcf2ae, 8 | BRF_PRG | BRF_ESS }, // 9 External ARM7 Rom }; @@ -3050,7 +3105,7 @@ struct BurnDriverD BurnDrvtheglada = { "The Gladiator - Road Of The Sword / Shen Jian (V100, Taiwan)\0", "Incomplete Dump", "IGS", "PolyGameMaster", L"The Gladiator - Road Of The Sword (V100, Taiwan)\0\u795E\u5251\u98CE\u4E91\0\u795E\u528D\u98A8\u96F2\0", NULL, NULL, NULL, BDF_CLONE, 4, HARDWARE_IGS_PGM/* | HARDWARE_IGS_USE_ARM_CPU*/, GBF_SCRFIGHT, 0, - NULL, thegladaRomInfo, thegladaRomName, NULL, NULL, pgmInputInfo, pgmDIPInfo, + NULL, thegladaRomInfo, thegladaRomName, NULL, NULL, pgmInputInfo, thegladDIPInfo, thegladInit, pgmExit, pgmFrame, pgmDraw, pgmScan, &nPgmPalRecalc, 0x900, 448, 224, 4, 3 }; @@ -3067,11 +3122,11 @@ static struct BurnRomInfo pgm3in1RomDesc[] = { { "pgm_a1101.u5", 0x800000, 0x4e7568bc, 3 | BRF_GRA }, // 3 { "pgm_a1102.u6", 0x800000, 0x6da7c143, 3 | BRF_GRA }, // 4 { "pgm_a1103.u7", 0x800000, 0x0ebebfdc, 3 | BRF_GRA }, // 4 - { "ext_bit_cg.u20", 0x400000, 0xfe314754, 3 | BRF_GRA }, // 6 + { "ext_bit_cg.u20", 0x400000, 0xfe314754, 3 | BRF_GRA }, // 6 { "pgm_b1100.u8", 0x800000, 0xfa53d6f6, 4 | BRF_GRA }, // 7 Sprite Masks & Color Indexes { "pgm_b1101.u9", 0x800000, 0x001e4c81, 4 | BRF_GRA }, // 8 - { "ext_bit_map.u21", 0x200000, 0xfe31dca6, 4 | BRF_GRA }, // 9 + { "ext_bit_map.u21", 0x200000, 0xfe31dca6, 4 | BRF_GRA }, // 9 { "pgm_m1100.u17", 0x200000, 0xfb1515f8, 5 | BRF_SND }, // 10 Samples { "u16.u16", 0x800000, 0x714c33e5, 5 | BRF_SND }, // 11 @@ -3349,7 +3404,7 @@ static struct BurnRomInfo killbldpRomDesc[] = { // from a bootleg { "killbldp_igs027a_alt.bin", 0x004000, 0x98316b06, 7 | BRF_PRG }, // 9 Internal ARM7 Rom - { "v300x.u26", 0x200000, 0x144388c8, 8 | BRF_PRG | BRF_ESS }, // 10 External ARM7 Rom + { "v300x.u26", 0x200000, 0x144388c8, 8 | BRF_PRG | BRF_ESS }, // 10 External ARM7 Rom }; STDROMPICKEXT(killbldp, killbldp, pgm) @@ -3396,7 +3451,7 @@ static struct BurnRomInfo svgRomDesc[] = { { "w05601b064.bin", 0x800000, 0xbfe61a71, 5 | BRF_SND }, // 8 Samples { "w05602b032.bin", 0x400000, 0x0685166d, 5 | BRF_SND }, // 9 - { "svg_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 10 Internal ARM7 Rom + { "svg_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 10 Internal ARM7 Rom { "u26.bin", 0x400000, 0x46826ec8, 8 | BRF_PRG | BRF_ESS }, // 11 External ARM7 Rom { "u29.bin", 0x400000, 0xfa5f3901, 8 | BRF_PRG | BRF_ESS }, // 12 @@ -3442,9 +3497,9 @@ static struct BurnRomInfo ddp3RomDesc[] = { { "m04401b032.u17", 0x400000, 0x5a0dbd76, 5 | BRF_SND }, // 5 Samples - { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom - { "ddp3_defaults.nv", 0x020000, 0x571e96c0, 0 | BRF_OPT }, // 7 NV RAM + { "ddp3_defaults.nv", 0x020000, 0x571e96c0, 0 | BRF_OPT }, // 7 NV RAM }; STDROMPICKEXT(ddp3, ddp3, ddp3Bios) // custom bios @@ -3483,9 +3538,9 @@ static struct BurnRomInfo ddp3aRomDesc[] = { { "m04401b032.u17", 0x400000, 0x5a0dbd76, 5 | BRF_SND }, // 5 Samples - { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom - { "ddp3_defaults.nv", 0x020000, 0x571e96c0, 0 | BRF_OPT }, // 7 NV RAM + { "ddp3_defaults.nv", 0x020000, 0x571e96c0, 0 | BRF_OPT }, // 7 NV RAM }; STDROMPICKEXT(ddp3a, ddp3a, ddp3Bios) // custom bios @@ -3516,9 +3571,9 @@ static struct BurnRomInfo ddp3bRomDesc[] = { { "m04401b032.u17", 0x400000, 0x5a0dbd76, 5 | BRF_SND }, // 5 Samples - { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom - { "ddp3_defaults.nv", 0x020000, 0x571e96c0, 0 | BRF_OPT }, // 7 NV RAM + { "ddp3_defaults.nv", 0x020000, 0x571e96c0, 0 | BRF_OPT }, // 7 NV RAM }; STDROMPICKEXT(ddp3b, ddp3b, ddp3Bios) // custom bios @@ -3549,7 +3604,7 @@ static struct BurnRomInfo ddp3blkRomDesc[] = { { "m04401b032.u17", 0x400000, 0x5a0dbd76, 5 | BRF_SND }, // 5 Samples - { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom { "ddp3blk_defaults.nv", 0x020000, 0xa1651904, 0 | BRF_OPT }, // 7 NV RAM (patch below instead) }; @@ -3607,7 +3662,7 @@ static struct BurnRomInfo ddp3blkaRomDesc[] = { { "m04401b032.u17", 0x400000, 0x5a0dbd76, 5 | BRF_SND }, // 5 Samples - { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ddp3_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom { "ddp3blk_defaults.nv", 0x020000, 0xa1651904, 0 | BRF_OPT }, // 7 NV RAM (patch below instead) }; @@ -3629,9 +3684,9 @@ struct BurnDriver BurnDrvDdp3blka = { // Ketsui Kizuna Jigoku Tachi (Revision 2?, Japan) static struct BurnRomInfo ketRomDesc[] = { - { "ketsui_v100.u38", 0x200000, 0xdfe62f3b, 1 | BRF_PRG | BRF_ESS }, // 0 68K Code + { "ketsui_v100.u38", 0x200000, 0xdfe62f3b, 1 | BRF_PRG | BRF_ESS }, // 0 68K Code - { "t04701w064.u19", 0x800000, 0x2665b041, 2 | BRF_GRA }, // 1 Tile data + { "t04701w064.u19", 0x800000, 0x2665b041, 2 | BRF_GRA }, // 1 Tile data { "a04701w064.u7", 0x800000, 0x5ef1b94b, 3 | BRF_GRA }, // 2 Sprite Color Data { "a04702w064.u8", 0x800000, 0x26d6da7f, 3 | BRF_GRA }, // 3 @@ -3640,9 +3695,9 @@ static struct BurnRomInfo ketRomDesc[] = { { "m04701b032.u17", 0x400000, 0xb46e22d1, 5 | BRF_SND }, // 5 Samples - { "ket_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ket_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom - { "ket_defaults.nv", 0x020000, 0x3ca892d8, 0 | BRF_OPT }, // 7 NV RAM + { "ket_defaults.nv", 0x020000, 0x3ca892d8, 0 | BRF_OPT }, // 7 NV RAM }; STDROMPICKEXT(ket, ket, ketsuiBios) // custom bios @@ -3672,7 +3727,7 @@ struct BurnDriver BurnDrvKet = { static struct BurnRomInfo ketaRomDesc[] = { { "ketsui_prg_revised.bin", 0x200000, 0x69fcf5eb, 1 | BRF_PRG | BRF_ESS }, // 0 68K Code - { "t04701w064.u19", 0x800000, 0x2665b041, 2 | BRF_GRA }, // 1 Tile data + { "t04701w064.u19", 0x800000, 0x2665b041, 2 | BRF_GRA }, // 1 Tile data { "a04701w064.u7", 0x800000, 0x5ef1b94b, 3 | BRF_GRA }, // 2 Sprite Color Data { "a04702w064.u8", 0x800000, 0x26d6da7f, 3 | BRF_GRA }, // 3 @@ -3681,9 +3736,9 @@ static struct BurnRomInfo ketaRomDesc[] = { { "m04701b032.u17", 0x400000, 0xb46e22d1, 5 | BRF_SND }, // 5 Samples - { "ket_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ket_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom - { "ket_defaults.nv", 0x020000, 0x3ca892d8, 0 | BRF_OPT }, // 7 NV RAM + { "ket_defaults.nv", 0x020000, 0x3ca892d8, 0 | BRF_OPT }, // 7 NV RAM }; STDROMPICKEXT(keta, keta, ketsuiBios) // custom bios @@ -3705,7 +3760,7 @@ struct BurnDriver BurnDrvKeta = { static struct BurnRomInfo ketbRomDesc[] = { { "ketsui_prg_original.bin", 0x200000, 0xcca5e153, 1 | BRF_PRG | BRF_ESS }, // 0 68K Code - { "t04701w064.u19", 0x800000, 0x2665b041, 2 | BRF_GRA }, // 1 Tile data + { "t04701w064.u19", 0x800000, 0x2665b041, 2 | BRF_GRA }, // 1 Tile data { "a04701w064.u7", 0x800000, 0x5ef1b94b, 3 | BRF_GRA }, // 2 Sprite Color Data { "a04702w064.u8", 0x800000, 0x26d6da7f, 3 | BRF_GRA }, // 3 @@ -3714,9 +3769,9 @@ static struct BurnRomInfo ketbRomDesc[] = { { "m04701b032.u17", 0x400000, 0xb46e22d1, 5 | BRF_SND }, // 5 Samples - { "ket_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom + { "ket_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 6 Internal ARM7 Rom - { "ket_defaults.nv", 0x020000, 0x3ca892d8, 0 | BRF_OPT }, // 7 NV RAM + { "ket_defaults.nv", 0x020000, 0x3ca892d8, 0 | BRF_OPT }, // 7 NV RAM }; STDROMPICKEXT(ketb, ketb, ketsuiBios) // custom bios @@ -3920,9 +3975,10 @@ static struct BurnRomInfo thegladpcbRomDesc[] = { { "w04601.u1", 0x800000, 0x5f15ddb3, 5 | BRF_SND }, // 7 Samples - { "thegladpcb_igs027a.bin", 0x004000, 0x00000000, 7 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 8 Internal ARM7 Rom + { "thegladpcb_igs027a_execute_only_area", 0x000188, 0x00000000, 0 | BRF_PRG | BRF_ESS | BRF_NODUMP }, // 8 Internal ARM7 Rom + { "thegladpcb_igs027a.bin", 0x003e78, 0xd7f06e2d, 7 | BRF_PRG | BRF_ESS }, // 9 - { "igs.62", 0x200000, 0x0f3f511e, 8 | BRF_PRG | BRF_ESS }, // 9 External ARM7 Rom + { "igs.62", 0x200000, 0x0f3f511e, 8 | BRF_PRG | BRF_ESS }, // 10 External ARM7 Rom }; STDROMPICKEXT(thegladpcb, thegladpcb, thegladBIOS) // custom bios @@ -3945,8 +4001,8 @@ struct BurnDriverD BurnDrvThegladpcb = { "thegladpcb", "theglad", NULL, NULL, "2003", "The Gladiator - Road Of The Sword / Shen Jian (V100, Japan, Single PCB Version)\0", "Incomplete Dump", "IGS", "PolyGameMaster", L"The Gladiator - Road Of The Sword (V100, Japan, PCB Version)\0\u795E\u5251\u98CE\u4E91\0\u795E\u528D\u98A8\u96F2\0", NULL, NULL, NULL, - BDF_CLONE, 4, HARDWARE_IGS_PGM /* | HARDWARE_IGS_USE_ARM_CPU */, GBF_SCRFIGHT, 0, - NULL, thegladpcbRomInfo, thegladpcbRomName, NULL, NULL, pgmInputInfo, jammaDIPInfo, + BDF_GAME_WORKING | BDF_CLONE, 4, HARDWARE_IGS_PGM | HARDWARE_IGS_USE_ARM_CPU, GBF_SCRFIGHT, 0, + NULL, thegladpcbRomInfo, thegladpcbRomName, NULL, NULL, pgmInputInfo, thegladpcbDIPInfo, thegladpcbInit, pgmExit, pgmFrame, pgmDraw, pgmScan, &nPgmPalRecalc, 0x900, 448, 224, 4, 3 }; diff --git a/src/burn/drv/pgm/pgm_run.cpp b/src/burn/drv/pgm/pgm_run.cpp index e2c92326b..863970990 100644 --- a/src/burn/drv/pgm/pgm_run.cpp +++ b/src/burn/drv/pgm/pgm_run.cpp @@ -788,22 +788,15 @@ INT32 pgmFrame() { Arm7NewFrame(); - switch (nPGMArm7Type) // region hacks + // region hacks { - case 1: // kov/kovsh/kovshp/photoy2k/puzlstar/puzzli2/oldsplus/py2k2 (SharedRam offset 0008) - case 2: // martmast/kov2/dw2001/dwpc (shared ram offset 0138) ddp2 (shared ram offset 0002) + if (strncmp(BurnDrvGetTextA(DRV_NAME), "dmnfrnt", 7) == 0) { + PGMARMShareRAM[0x158] = PgmInput[7]; + } else { if (nPgmAsicRegionHackAddress) { PGMARMROM[nPgmAsicRegionHackAddress] = PgmInput[7]; } - break; - - case 3: // svg/killbldp/dmnfrnt/theglad/happy6in1 - if (strncmp(BurnDrvGetTextA(DRV_NAME), "dmnfrnt", 7) == 0) { - PGMARMShareRAM[0x158] = PgmInput[7]; - } else { - // unknown - } - break; + } } } @@ -846,12 +839,12 @@ INT32 pgmFrame() ics2115_frame(); + ics2115_update(nBurnSoundLen); + if (nEnableArm7) Arm7Close(); ZetClose(); SekClose(); - ics2115_update(nBurnSoundLen); - if (pBurnDraw) { pgmDraw(); }