Add working clone of bagman (Barry, Robbert, Misfitmame)
This commit is contained in:
parent
eb7244376f
commit
45d1c941da
|
@ -45,7 +45,7 @@ static struct BurnRomInfo BagmanRomDesc[] = {
|
||||||
STD_ROM_PICK(Bagman)
|
STD_ROM_PICK(Bagman)
|
||||||
STD_ROM_FN(Bagman)
|
STD_ROM_FN(Bagman)
|
||||||
|
|
||||||
struct BurnDriverD BurnDrvBagman = {
|
struct BurnDriver BurnDrvBagman = {
|
||||||
"bagman", NULL, NULL, NULL, "1982",
|
"bagman", NULL, NULL, NULL, "1982",
|
||||||
"Bagman\0", "Parent set for working drivers", "Valadon Automation", "Miscellaneous",
|
"Bagman\0", "Parent set for working drivers", "Valadon Automation", "Miscellaneous",
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
|
|
|
@ -10222,17 +10222,31 @@ static struct BurnRomInfo BagmanmcRomDesc[] = {
|
||||||
{ "b5.bin", 0x01000, 0x0fe24b8c, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
{ "b5.bin", 0x01000, 0x0fe24b8c, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
||||||
{ "b6.bin", 0x01000, 0xf50390e7, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
{ "b6.bin", 0x01000, 0xf50390e7, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
||||||
|
|
||||||
{ "g1-u.bin", 0x01000, 0xb63cfae4, BRF_GRA | GAL_ROM_TILES_SHARED },
|
|
||||||
{ "g2-u.bin", 0x01000, 0xa2790089, BRF_GRA | GAL_ROM_TILES_SHARED },
|
|
||||||
{ "g1-l.bin", 0x00800, 0x2ae6b5ab, BRF_GRA | GAL_ROM_TILES_SHARED },
|
{ "g1-l.bin", 0x00800, 0x2ae6b5ab, BRF_GRA | GAL_ROM_TILES_SHARED },
|
||||||
|
{ "g2-u.bin", 0x01000, 0xa2790089, BRF_GRA | GAL_ROM_TILES_SHARED },
|
||||||
{ "g2-l.bin", 0x00800, 0x98b37397, BRF_GRA | GAL_ROM_TILES_SHARED },
|
{ "g2-l.bin", 0x00800, 0x98b37397, BRF_GRA | GAL_ROM_TILES_SHARED },
|
||||||
|
{ "g1-u.bin", 0x01000, 0xb63cfae4, BRF_GRA | GAL_ROM_TILES_SHARED },
|
||||||
|
|
||||||
{ "bagmanmc.clr", 0x00020, 0x00000000, BRF_OPT | BRF_NODUMP },
|
{ "bagmanmc.clr", 0x00020, 0x6a0c7d87, BRF_GRA | GAL_ROM_PROM },
|
||||||
};
|
};
|
||||||
|
|
||||||
STD_ROM_PICK(Bagmanmc)
|
STD_ROM_PICK(Bagmanmc)
|
||||||
STD_ROM_FN(Bagmanmc)
|
STD_ROM_FN(Bagmanmc)
|
||||||
|
|
||||||
|
static struct BurnRomInfo Bagmanm2RomDesc[] = {
|
||||||
|
{ "bagmanm2.1", 0x02000, 0x53769ebe, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
||||||
|
{ "bagmanm2.2", 0x02000, 0x9435bb87, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
||||||
|
{ "bagmanm2.3", 0x02000, 0xf37ba7f6, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
||||||
|
|
||||||
|
{ "bagmanm2.9", 0x02000, 0xf1e70d9e, BRF_GRA | GAL_ROM_TILES_SHARED },
|
||||||
|
{ "bagmanm2.7", 0x02000, 0x777e48c4, BRF_GRA | GAL_ROM_TILES_SHARED },
|
||||||
|
|
||||||
|
{ "bagmanmc.clr", 0x00020, 0x6a0c7d87, BRF_GRA | GAL_ROM_PROM },
|
||||||
|
};
|
||||||
|
|
||||||
|
STD_ROM_PICK(Bagmanm2)
|
||||||
|
STD_ROM_FN(Bagmanm2)
|
||||||
|
|
||||||
static struct BurnRomInfo DkongjrmRomDesc[] = {
|
static struct BurnRomInfo DkongjrmRomDesc[] = {
|
||||||
{ "a1", 0x01000, 0x299486e9, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
{ "a1", 0x01000, 0x299486e9, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
||||||
{ "a2", 0x01000, 0xa74a193b, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
{ "a2", 0x01000, 0xa74a193b, BRF_ESS | BRF_PRG | GAL_ROM_Z80_PROG1 },
|
||||||
|
@ -10410,7 +10424,7 @@ void __fastcall BagmanmcZ80Write(UINT16 a, UINT8 d)
|
||||||
case 0xa000:
|
case 0xa000:
|
||||||
case 0xa001:
|
case 0xa001:
|
||||||
case 0xa002: {
|
case 0xa002: {
|
||||||
GalGfxBank[a - 0xa000] = d;
|
// ???
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10444,6 +10458,11 @@ void __fastcall BagmanmcZ80Write(UINT16 a, UINT8 d)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 0xb002: {
|
||||||
|
GalGfxBank[0] = d;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
case 0xb006: {
|
case 0xb006: {
|
||||||
GalFlipScreenX = d & 1;
|
GalFlipScreenX = d & 1;
|
||||||
return;
|
return;
|
||||||
|
@ -10848,34 +10867,13 @@ static INT32 BagmanmcInit()
|
||||||
INT32 nRet;
|
INT32 nRet;
|
||||||
|
|
||||||
GalPostLoadCallbackFunction = BagmanmcPostLoad;
|
GalPostLoadCallbackFunction = BagmanmcPostLoad;
|
||||||
GalPromRomSize = 0x20;
|
GameIsBagmanmc = 1;
|
||||||
|
|
||||||
nRet = GalInit();
|
nRet = GalInit();
|
||||||
|
|
||||||
GalNumChars = 512;
|
|
||||||
GalNumSprites = 64;
|
|
||||||
CharPlaneOffsets[1] = GalNumChars * 8 * 8;
|
|
||||||
SpritePlaneOffsets[1] = GalNumSprites * 16 * 16;
|
|
||||||
|
|
||||||
UINT8 *TempRom = (UINT8*)BurnMalloc(0x1000);
|
|
||||||
GalTempRom = (UINT8*)BurnMalloc(GalTilesSharedRomSize);
|
|
||||||
nRet = BurnLoadRom(TempRom + 0x0000, GAL_ROM_OFFSET_TILES_SHARED + 0, 1); if (nRet) return 1;
|
|
||||||
memcpy(GalTempRom + 0x0000, TempRom + 0x0000, 0x800);
|
|
||||||
memcpy(GalTempRom + 0x2000, TempRom + 0x0800, 0x800);
|
|
||||||
nRet = BurnLoadRom(TempRom + 0x0000, GAL_ROM_OFFSET_TILES_SHARED + 1, 1); if (nRet) return 1;
|
|
||||||
memcpy(GalTempRom + 0x1000, TempRom + 0x0000, 0x800);
|
|
||||||
memcpy(GalTempRom + 0x2800, TempRom + 0x0800, 0x800);
|
|
||||||
nRet = BurnLoadRom(GalTempRom + 0x0800, GAL_ROM_OFFSET_TILES_SHARED + 2, 1); if (nRet) return 1;
|
|
||||||
nRet = BurnLoadRom(GalTempRom + 0x1800, GAL_ROM_OFFSET_TILES_SHARED + 3, 1); if (nRet) return 1;
|
|
||||||
GfxDecode(GalNumChars, 2, 8, 8, CharPlaneOffsets, CharXOffsets, CharYOffsets, 0x40, GalTempRom, GalChars);
|
|
||||||
GfxDecode(GalNumSprites, 2, 16, 16, SpritePlaneOffsets, SpriteXOffsets, SpriteYOffsets, 0x100, GalTempRom + 0x2000, GalSprites);
|
|
||||||
BurnFree(GalTempRom);
|
|
||||||
BurnFree(TempRom);
|
|
||||||
|
|
||||||
HardCodeMooncrstPROM();
|
|
||||||
|
|
||||||
GalIrqType = GAL_IRQ_TYPE_IRQ0;
|
GalIrqType = GAL_IRQ_TYPE_IRQ0;
|
||||||
GalExtendTileInfoFunction = PiscesExtendTileInfo;
|
GalExtendTileInfoFunction = BagmanmcExtendTileInfo;
|
||||||
|
GalExtendSpriteInfoFunction = BagmanmcExtendSpriteInfo;
|
||||||
|
|
||||||
return nRet;
|
return nRet;
|
||||||
}
|
}
|
||||||
|
@ -11197,7 +11195,7 @@ struct BurnDriver BurnDrvSkybase = {
|
||||||
|
|
||||||
struct BurnDriverD BurnDrvBagmanmc = {
|
struct BurnDriverD BurnDrvBagmanmc = {
|
||||||
"bagmanmc", "bagman", NULL, NULL, "1982",
|
"bagmanmc", "bagman", NULL, NULL, "1982",
|
||||||
"Bagman (Moon Cresta hardware)\0", "Bad Colours", "bootleg", "Galaxian",
|
"Bagman (bootleg on Moon Cresta hardware)\0", "Bad Colours", "bootleg", "Galaxian",
|
||||||
NULL, NULL, NULL, NULL,
|
NULL, NULL, NULL, NULL,
|
||||||
BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED | BDF_BOOTLEG, 2, HARDWARE_GALAXIAN, GBF_MAZE, 0,
|
BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED | BDF_BOOTLEG, 2, HARDWARE_GALAXIAN, GBF_MAZE, 0,
|
||||||
NULL, BagmanmcRomInfo, BagmanmcRomName, NULL, NULL, BagmanmcInputInfo, BagmanmcDIPInfo,
|
NULL, BagmanmcRomInfo, BagmanmcRomName, NULL, NULL, BagmanmcInputInfo, BagmanmcDIPInfo,
|
||||||
|
@ -11205,6 +11203,16 @@ struct BurnDriverD BurnDrvBagmanmc = {
|
||||||
NULL, 392, 224, 256, 3, 4
|
NULL, 392, 224, 256, 3, 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct BurnDriver BurnDrvBagmanm2 = {
|
||||||
|
"bagmanm2", "bagman", NULL, NULL, "1982",
|
||||||
|
"Bagman (Moon Cresta hardware)\0", "Bad Colours", "Valadon Automation", "Galaxian",
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED | BDF_BOOTLEG, 2, HARDWARE_GALAXIAN, GBF_MAZE, 0,
|
||||||
|
NULL, Bagmanm2RomInfo, Bagmanm2RomName, NULL, NULL, BagmanmcInputInfo, BagmanmcDIPInfo,
|
||||||
|
BagmanmcInit, GalExit, GalFrame, NULL, GalScan,
|
||||||
|
NULL, 392, 224, 256, 3, 4
|
||||||
|
};
|
||||||
|
|
||||||
struct BurnDriver BurnDrvDkongjrm = {
|
struct BurnDriver BurnDrvDkongjrm = {
|
||||||
"dkongjrm", "dkongjr", NULL, NULL, "1982",
|
"dkongjrm", "dkongjr", NULL, NULL, "1982",
|
||||||
"Donkey Kong Jr. (Moon Cresta hardware)\0", "Bad Colours", "bootleg", "Galaxian",
|
"Donkey Kong Jr. (Moon Cresta hardware)\0", "Bad Colours", "bootleg", "Galaxian",
|
||||||
|
|
|
@ -137,6 +137,8 @@ void DambustrExtendTileInfo(UINT16 *Code, INT32*, INT32, INT32 x);
|
||||||
void Ad2083ExtendTileInfo(UINT16 *Code, INT32 *Colour, INT32 Attr, INT32);
|
void Ad2083ExtendTileInfo(UINT16 *Code, INT32 *Colour, INT32 Attr, INT32);
|
||||||
void Ad2083ExtendSpriteInfo(const UINT8 *Base, INT32*, INT32*, UINT8 *xFlip, UINT8*, UINT16 *Code, UINT8*);
|
void Ad2083ExtendSpriteInfo(const UINT8 *Base, INT32*, INT32*, UINT8 *xFlip, UINT8*, UINT16 *Code, UINT8*);
|
||||||
void RacknrolExtendTileInfo(UINT16 *Code, INT32*, INT32, INT32 x);
|
void RacknrolExtendTileInfo(UINT16 *Code, INT32*, INT32, INT32 x);
|
||||||
|
void BagmanmcExtendTileInfo(UINT16 *Code, INT32*, INT32, INT32);
|
||||||
|
void BagmanmcExtendSpriteInfo(const UINT8*, INT32*, INT32*, UINT8*, UINT8*, UINT16 *Code, UINT8*);
|
||||||
void HardCodeGalaxianPROM();
|
void HardCodeGalaxianPROM();
|
||||||
void HardCodeMooncrstPROM();
|
void HardCodeMooncrstPROM();
|
||||||
void GalaxianCalcPalette();
|
void GalaxianCalcPalette();
|
||||||
|
@ -244,6 +246,7 @@ extern UINT8 MshuttleAY8910CS;
|
||||||
extern UINT8 GmgalaxSelectedGame;
|
extern UINT8 GmgalaxSelectedGame;
|
||||||
extern UINT8 Fourin1Bank;
|
extern UINT8 Fourin1Bank;
|
||||||
extern UINT8 GameIsGmgalax;
|
extern UINT8 GameIsGmgalax;
|
||||||
|
extern UINT8 GameIsBagmanmc;
|
||||||
extern UINT8 CavelonBankSwitch;
|
extern UINT8 CavelonBankSwitch;
|
||||||
extern UINT8 GalVBlank;
|
extern UINT8 GalVBlank;
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,11 @@ void RacknrolExtendTileInfo(UINT16 *Code, INT32*, INT32, INT32 x)
|
||||||
*Code |= Bank << 8;
|
*Code |= Bank << 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BagmanmcExtendTileInfo(UINT16 *Code, INT32*, INT32, INT32)
|
||||||
|
{
|
||||||
|
*Code |= GalGfxBank[0] << 9;
|
||||||
|
}
|
||||||
|
|
||||||
// Sprite extend helpers
|
// Sprite extend helpers
|
||||||
void UpperExtendSpriteInfo(const UINT8*, INT32*, INT32*, UINT8*, UINT8*, UINT16 *Code, UINT8*)
|
void UpperExtendSpriteInfo(const UINT8*, INT32*, INT32*, UINT8*, UINT8*, UINT16 *Code, UINT8*)
|
||||||
{
|
{
|
||||||
|
@ -212,6 +217,11 @@ void Ad2083ExtendSpriteInfo(const UINT8 *Base, INT32*, INT32*, UINT8 *xFlip, UIN
|
||||||
*xFlip = 0;
|
*xFlip = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BagmanmcExtendSpriteInfo(const UINT8*, INT32*, INT32*, UINT8*, UINT8*, UINT16 *Code, UINT8*)
|
||||||
|
{
|
||||||
|
*Code |= (GalGfxBank[0] << 7) | 0x40;
|
||||||
|
}
|
||||||
|
|
||||||
// Hardcode a Galaxian PROM for any games that are missing a PROM dump
|
// Hardcode a Galaxian PROM for any games that are missing a PROM dump
|
||||||
void HardCodeGalaxianPROM()
|
void HardCodeGalaxianPROM()
|
||||||
{
|
{
|
||||||
|
|
|
@ -75,6 +75,7 @@ UINT8 MshuttleAY8910CS;
|
||||||
UINT8 GmgalaxSelectedGame;
|
UINT8 GmgalaxSelectedGame;
|
||||||
UINT8 Fourin1Bank;
|
UINT8 Fourin1Bank;
|
||||||
UINT8 GameIsGmgalax;
|
UINT8 GameIsGmgalax;
|
||||||
|
UINT8 GameIsBagmanmc;
|
||||||
UINT8 CavelonBankSwitch;
|
UINT8 CavelonBankSwitch;
|
||||||
UINT8 GalVBlank;
|
UINT8 GalVBlank;
|
||||||
|
|
||||||
|
@ -1570,6 +1571,7 @@ INT32 GalExit()
|
||||||
MshuttleAY8910CS = 0;
|
MshuttleAY8910CS = 0;
|
||||||
Fourin1Bank = 0;
|
Fourin1Bank = 0;
|
||||||
GameIsGmgalax = 0;
|
GameIsGmgalax = 0;
|
||||||
|
GameIsBagmanmc = 0;
|
||||||
CavelonBankSwitch = 0;
|
CavelonBankSwitch = 0;
|
||||||
DarkplntBulletColour = 0;
|
DarkplntBulletColour = 0;
|
||||||
DambustrBgColour1 = 0;
|
DambustrBgColour1 = 0;
|
||||||
|
@ -1608,6 +1610,8 @@ INT32 GalFrame()
|
||||||
|
|
||||||
INT32 nIrqInterleaveFire = nInterleave / 4;
|
INT32 nIrqInterleaveFire = nInterleave / 4;
|
||||||
|
|
||||||
|
if (GameIsBagmanmc) nIrqInterleaveFire = 0;
|
||||||
|
|
||||||
if (GalReset) GalDoReset();
|
if (GalReset) GalDoReset();
|
||||||
|
|
||||||
if (GameIsGmgalax && (GmgalaxSelectedGame != GalFakeDip)) {
|
if (GameIsGmgalax && (GmgalaxSelectedGame != GalFakeDip)) {
|
||||||
|
|
Loading…
Reference in New Issue