Add protection routine for orlegend111t. Mark it as working.

This commit is contained in:
iq_132 2014-10-10 23:00:22 +00:00
parent 5fbe6fbf4e
commit 5dd97b51bc
2 changed files with 18 additions and 4 deletions

View File

@ -147,6 +147,10 @@ static struct BurnDIPInfo orld111cDIPList[] = {
{0x2E, 0x01, 0x03, 0x02, "China" }, {0x2E, 0x01, 0x03, 0x02, "China" },
}; };
static struct BurnDIPInfo orld111tDIPList[] = {
{0x2E, 0xFF, 0xFF, 0x04, NULL },
};
static struct BurnDIPInfo orld105kDIPList[] = { static struct BurnDIPInfo orld105kDIPList[] = {
{0x2E, 0xFF, 0xFF, 0x02, NULL }, {0x2E, 0xFF, 0xFF, 0x02, NULL },
}; };
@ -339,6 +343,7 @@ static struct BurnDIPInfo svgDIPList[] = {
STDDIPINFOEXT(orlegend, pgm, orlegend ) STDDIPINFOEXT(orlegend, pgm, orlegend )
STDDIPINFOEXT(orld111c, pgm, orld111c ) STDDIPINFOEXT(orld111c, pgm, orld111c )
STDDIPINFOEXT(orld111t, pgm, orld111t )
STDDIPINFOEXT(orld105k, pgm, orld105k ) STDDIPINFOEXT(orld105k, pgm, orld105k )
STDDIPINFOEXT(kov, pgm, kov ) STDDIPINFOEXT(kov, pgm, kov )
STDDIPINFOEXT(kovshxas, pgm, kovshxas ) STDDIPINFOEXT(kovshxas, pgm, kovshxas )
@ -664,8 +669,8 @@ struct BurnDriver BurnDrvOrlegend111t = {
"orlegend111t", "orlegend", "pgm", NULL, "1997", "orlegend111t", "orlegend", "pgm", NULL, "1997",
"Oriental Legend - Xi Yo Gi Shi Re Zuang (V111, Taiwan)\0", NULL, "IGS", "PolyGameMaster", "Oriental Legend - Xi Yo Gi Shi Re Zuang (V111, Taiwan)\0", NULL, "IGS", "PolyGameMaster",
L"Oriental Legend\0\u897F\u6E38\u91CA\u5384\u4F20 (V111, Taiwan)\0", NULL, NULL, NULL, L"Oriental Legend\0\u897F\u6E38\u91CA\u5384\u4F20 (V111, Taiwan)\0", NULL, NULL, NULL,
BDF_CLONE, 4, HARDWARE_IGS_PGM, GBF_SCRFIGHT, 0, BDF_GAME_WORKING | BDF_CLONE, 4, HARDWARE_IGS_PGM, GBF_SCRFIGHT, 0,
NULL, orlegend111tRomInfo, orlegend111tRomName, NULL, NULL, pgmInputInfo, orld111cDIPInfo, NULL, orlegend111tRomInfo, orlegend111tRomName, NULL, NULL, pgmInputInfo, orld111tDIPInfo,
orlegendInit, pgmExit, pgmFrame, pgmDraw, pgmScan, &nPgmPalRecalc, 0x900, orlegendInit, pgmExit, pgmFrame, pgmDraw, pgmScan, &nPgmPalRecalc, 0x900,
448, 224, 4, 3 448, 224, 4, 3
}; };

View File

@ -669,8 +669,8 @@ static UINT32 bt(UINT32 v, INT32 bit)
static void asic3_compute_hold() static void asic3_compute_hold()
{ {
// The mode is dependant on the region // The mode is dependant on the region
static INT32 modes[4] = { 1, 1, 3, 2 }; static INT32 modes[8] = { 1, 1, 3, 2, 4, 4, 4, 4 };
INT32 mode = modes[PgmInput[7] & 3]; INT32 mode = modes[PgmInput[7] & 7];
switch(mode) { switch(mode) {
case 1: case 1:
@ -697,6 +697,15 @@ static void asic3_compute_hold()
^bt(asic3_z, asic3_y) ^bt(asic3_z, asic3_y)
^(bt(asic3_x, 0) << 4)^(bt(asic3_x, 1) << 6)^(bt(asic3_x, 2) << 10)^(bt(asic3_x, 3) << 12); ^(bt(asic3_x, 0) << 4)^(bt(asic3_x, 1) << 6)^(bt(asic3_x, 2) << 10)^(bt(asic3_x, 3) << 12);
break; break;
case 4: // orlegend111t
asic3_hold =
(asic3_hold << 1)
^0x2bad
^bt(asic3_hold, 15)^bt(asic3_hold, 7)^bt(asic3_hold, 6)^bt(asic3_hold, 5)
^bt(asic3_z, asic3_y)
^(bt(asic3_x, 0) << 3)^(bt(asic3_x, 1) << 8)^(bt(asic3_x, 2) << 10)^(bt(asic3_x, 3) << 14);
break;
} }
} }