Merge branch 'finalburnneo-master'

This commit is contained in:
barbudreadmon 2024-08-11 19:39:54 +02:00
commit 05ad47b4e0
3 changed files with 173 additions and 71 deletions

View File

@ -334,8 +334,11 @@ static UINT8 controller_read(INT32 port)
static void __fastcall coleco_write_port(UINT16 port, UINT8 data)
{
// if ((port&0xff) != 0xbe && (port&0xff) != 0xbf) bprintf(0, _T("wp %x %x\n"), port, data);
#if 0
// debug: ignore video/joy/ay8910 writes
if ((port&0xfe) != 0xbe && (port&0xfe) != 0x80 &&
(port&0xfe) != 0x50 && (port&0xfe) != 0xc0) bprintf(0, _T("wp %x %x\n"), port, data);
#endif
if (use_SGM) {
switch (port & 0xff) // SGM
{
@ -493,11 +496,12 @@ static INT32 DrvDoReset()
if (use_OCM) {
// Penguin Adventure expects this to be mapped-in by default
SGM_map_24k = 1;
ZetOpen(0);
update_map();
ZetClose();
}
ZetOpen(0);
update_map();
ZetClose();
return 0;
}
@ -7233,6 +7237,25 @@ struct BurnDriver BurnDrvcv_gauntlet = {
272, 228, 4, 3
};
// Ghost (SGM) (HB)
static struct BurnRomInfo cv_ghostRomDesc[] = {
{ "Ghost SGM (2019)(Unepic Fran).rom", 131072, 0xd55bbb66, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(cv_ghost, cv_ghost, cv_coleco)
STD_ROM_FN(cv_ghost)
struct BurnDriver BurnDrvcv_ghost= {
"cv_ghost", NULL, "cv_coleco", NULL, "2019",
"Ghost (SGM) (HB)\0", "SGM - Super Game Module", "Unepic Fran", "ColecoVision",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_COLECO, GBF_PLATFORM, 0,
CVGetZipName, cv_ghostRomInfo, cv_ghostRomName, NULL, NULL, NULL, NULL, ColecoInputInfo, ColecoDIPInfo,
DrvInitSGM, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, TMS9928A_PALETTE_SIZE,
272, 228, 4, 3
};
// Ghost Blaster (HB)
static struct BurnRomInfo cv_gblasterRomDesc[] = {
@ -8221,6 +8244,25 @@ struct BurnDriver BurnDrvcv_loderunner = {
272, 228, 4, 3
};
// Lode Runner 2013 (HB)
static struct BurnRomInfo cv_loder2013RomDesc[] = {
{ "Lode Runner (2013)(Collectorvision).rom", 32438, 0xd679ac52, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(cv_loder2013, cv_loder2013, cv_coleco)
STD_ROM_FN(cv_loder2013)
struct BurnDriver BurnDrvcv_loder2013 = {
"cv_loder2013", NULL, "cv_coleco", NULL, "2012-13",
"Lode Runner 2013 (HB)\0", NULL, "Collectorvision", "ColecoVision",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_COLECO, GBF_PLATFORM, 0,
CVGetZipName, cv_loder2013RomInfo, cv_loder2013RomName, NULL, NULL, NULL, NULL, ColecoInputInfo, ColecoDIPInfo,
DrvInit, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, TMS9928A_PALETTE_SIZE,
272, 228, 4, 3
};
// Magical Tree (HB)
static struct BurnRomInfo cv_magtreeRomDesc[] = {
@ -8642,15 +8684,15 @@ struct BurnDriver BurnDrvcv_mopirang = {
// Mr. Chin (HB)
static struct BurnRomInfo cv_mrchinRomDesc[] = {
{ "Mr. Chin (2008) (Collectorvision Games).col", 32768, 0x9ab11795, BRF_PRG | BRF_ESS },
{ "Mr. Chin (2008)(Collectorvision Games).col", 32768, 0x9ab11795, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(cv_mrchin, cv_mrchin, cv_coleco)
STD_ROM_FN(cv_mrchin)
struct BurnDriver BurnDrvcv_mrchin = {
"cv_mrchin", NULL, "cv_coleco", NULL, "2008",
"Mr. Chin (HB)\0", NULL, "CollectorVision Games", "ColecoVision",
"cv_mrchin", NULL, "cv_coleco", NULL, "1984-2008",
"Mr. Chin (HB)\0", "Published by CollectorVision Games", "HAL Laboratory", "ColecoVision",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 2, HARDWARE_COLECO, GBF_ACTION, 0,
CVGetZipName, cv_mrchinRomInfo, cv_mrchinRomName, NULL, NULL, NULL, NULL, ColecoInputInfo, ColecoDIPInfo,
@ -8677,6 +8719,25 @@ struct BurnDriver BurnDrvcv_mrdorunrun = {
272, 228, 4, 3
};
// Mr. Do's Wild Ride (HB)
static struct BurnRomInfo cv_mrdowrRomDesc[] = {
{ "Mr. Do's Wild Ride (2021)(CollectorVision).rom", 131072, 0xd3ea5876, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(cv_mrdowr, cv_mrdowr, cv_coleco)
STD_ROM_FN(cv_mrdowr)
struct BurnDriver BurnDrvcv_mrdowr = {
"cv_mrdowr", NULL, "cv_coleco", NULL, "1984-2021",
"Mr. Do's Wild Ride (HB)\0", "Published by CollectorVision Games", "Universal", "ColecoVision",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 2, HARDWARE_COLECO, GBF_ACTION, 0,
CVGetZipName, cv_mrdowrRomInfo, cv_mrdowrRomName, NULL, NULL, NULL, NULL, ColecoInputInfo, ColecoDIPInfo,
DrvInit, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, TMS9928A_PALETTE_SIZE,
272, 228, 4, 3
};
// Ms. Space Fury (HB)
static struct BurnRomInfo cv_msspacefuryRomDesc[] = {
@ -11158,48 +11219,11 @@ STD_ROM_FN(cv_yiearii)
struct BurnDriver BurnDrvcv_yiearii = {
"cv_yiearii", NULL, "cv_coleco", NULL, "1985-2018",
"Yie Ar Kung Fu II (SGM)(HB)\0", "SGM - Super Game Module", "Opcode Games - Konami", "ColecoVision",
"Yie Ar Kung Fu II (SGM) (HB)\0", "Resets randomly, SGM - Super Game Module", "Opcode Games - Konami", "ColecoVision",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 2, HARDWARE_COLECO, GBF_SCRFIGHT | GBF_VSFIGHT, 0,
BDF_GAME_NOT_WORKING | BDF_HOMEBREW, 2, HARDWARE_COLECO, GBF_SCRFIGHT | GBF_VSFIGHT, 0,
CVGetZipName, cv_yieariiRomInfo, cv_yieariiRomName, NULL, NULL, NULL, NULL, ColecoInputInfo, ColecoDIPInfo,
DrvInitSGM, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, TMS9928A_PALETTE_SIZE,
272, 228, 4, 3
};
// Ghost (SGM) (HB)
static struct BurnRomInfo cv_ghostRomDesc[] = {
{ "Ghost SGM (2019)(Unepic Fran).rom", 131072, 0xd55bbb66, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(cv_ghost, cv_ghost, cv_coleco)
STD_ROM_FN(cv_ghost)
struct BurnDriver BurnDrvcv_ghost= {
"cv_ghost", NULL, "cv_coleco", NULL, "2019",
"Ghost (SGM)(HB)\0", "SGM - Super Game Module", "Unepic Fran", "ColecoVision",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_COLECO, GBF_PLATFORM, 0,
CVGetZipName, cv_ghostRomInfo, cv_ghostRomName, NULL, NULL, NULL, NULL, ColecoInputInfo, ColecoDIPInfo,
DrvInitSGM, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, TMS9928A_PALETTE_SIZE,
272, 228, 4, 3
};
// Lode Runner 2013 (HB)
static struct BurnRomInfo cv_loder2013RomDesc[] = {
{ "Lode Runner (2013)(Collectorvision).rom", 32438, 0xd679ac52, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(cv_loder2013, cv_loder2013, cv_coleco)
STD_ROM_FN(cv_loder2013)
struct BurnDriver BurnDrvcv_loder2013 = {
"cv_loder2013", NULL, "cv_coleco", NULL, "2013",
"Lode Runner 2013 (HB)\0", NULL, "Collectorvision", "ColecoVision",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_COLECO, GBF_PLATFORM, 0,
CVGetZipName, cv_loder2013RomInfo, cv_loder2013RomName, NULL, NULL, NULL, NULL, ColecoInputInfo, ColecoDIPInfo,
DrvInit, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, TMS9928A_PALETTE_SIZE,
272, 228, 4, 3
};

View File

@ -30144,6 +30144,25 @@ struct BurnDriver BurnDrvMSX_gravitica = {
272, 228, 4, 3
};
// Grazers (HB, v1.2)
static struct BurnRomInfo MSX_grazersRomDesc[] = {
{ "Grazers v1.2 (2024)(Arturs Grebstelis).rom", 32768, 0x5670651f, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(MSX_grazers, MSX_grazers, msx_msx)
STD_ROM_FN(MSX_grazers)
struct BurnDriver BurnDrvMSX_grazers = {
"msx_grazers", NULL, "msx_msx", NULL, "2024",
"Grazers (HB, v1.2)\0", NULL, "Arturs Grebstelis", "MSX",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_MSX, GBF_ACTION, 0,
MSXGetZipName, MSX_grazersRomInfo, MSX_grazersRomName, NULL, NULL, NULL, NULL, MSXInputInfo, MSXDIPInfo,
DrvInit, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, 0x10,
272, 228, 4, 3
};
// Grid Wars (HB)
static struct BurnRomInfo MSX_gridwarsRomDesc[] = {
@ -32880,6 +32899,25 @@ struct BurnDriver BurnDrvMSX_smzoom = {
272, 228, 4, 3
};
// Sam.Pr (HB, v1.1)
static struct BurnRomInfo MSX_samprRomDesc[] = {
{ "Sam.Pr v1.1 (2024)(Fausto Pracek).rom", 32768, 0x2b06bad8, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(MSX_sampr, MSX_sampr, msx_msx)
STD_ROM_FN(MSX_sampr)
struct BurnDriver BurnDrvMSX_sampr = {
"msx_sampr", NULL, "msx_msx", NULL, "2024",
"Sam.Pr (HB, v1.1)\0", NULL, "Fausto Pracek", "MSX",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_MSX, GBF_MAZE, 0,
MSXGetZipName, MSX_samprRomInfo, MSX_samprRomName, NULL, NULL, NULL, NULL, MSXInputInfo, MSXDIPInfo,
DrvInit, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, 0x10,
272, 228, 4, 3
};
// SDSniper (HB)
static struct BurnRomInfo MSX_sdsniperRomDesc[] = {
@ -33868,6 +33906,25 @@ struct BurnDriver BurnDrvMSX_trucho = {
272, 228, 4, 3
};
// TRUN (HB)
static struct BurnRomInfo MSX_trunRomDesc[] = {
{ "TRUN (2016)(The Pets Mode).rom", 49152, 0x7c48ae05, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(MSX_trun, MSX_trun, msx_msx)
STD_ROM_FN(MSX_trun)
struct BurnDriver BurnDrvMSX_trun = {
"msx_trun", NULL, "msx_msx", NULL, "2016",
"TRUN (HB)\0", NULL, "The Pets Mode", "MSX",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 4, HARDWARE_MSX, GBF_ACTION, 0,
MSXGetZipName, MSX_trunRomInfo, MSX_trunRomName, NULL, NULL, NULL, NULL, MSXInputInfo, MSXDIPInfo,
DrvInit, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, 0x10,
272, 228, 4, 3
};
// Tut Tut (HB)
static struct BurnRomInfo MSX_tuttutRomDesc[] = {
@ -34191,6 +34248,25 @@ struct BurnDriver BurnDrvMSX_viruslqp = {
272, 228, 4, 3
};
// Whack 'Em Smack 'Em Byrons (HB)
static struct BurnRomInfo MSX_wsbyronsRomDesc[] = {
{ "Whack 'Em Smack 'Em Byrons (2024)(Jess Creations).rom", 32768, 0xcd5534d3, BRF_PRG | BRF_ESS },
};
STDROMPICKEXT(MSX_wsbyrons, MSX_wsbyrons, msx_msx)
STD_ROM_FN(MSX_wsbyrons)
struct BurnDriver BurnDrvMSX_wsbyrons = {
"msx_wsbyrons", NULL, "msx_msx", NULL, "2024",
"Whack 'Em Smack 'Em Byrons (HB)\0", NULL, "Jess Creations", "MSX",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_HOMEBREW, 1, HARDWARE_MSX, GBF_ACTION, 0,
MSXGetZipName, MSX_wsbyronsRomInfo, MSX_wsbyronsRomName, NULL, NULL, NULL, NULL, MSXInputInfo, MSXDIPInfo,
DrvInit, DrvExit, DrvFrame, TMS9928ADraw, DrvScan, NULL, 0x10,
272, 228, 4, 3
};
// War From Beyond (HB)
static struct BurnRomInfo MSX_warbeyondRomDesc[] = {

View File

@ -22,35 +22,40 @@ static UINT8 bankdata;
static INT32 vblank;
static UINT8 DrvJoy1[8];
static UINT8 DrvInputs[1];
static UINT8 DrvJoy2[8];
static UINT8 DrvInputs[2];
static UINT8 DrvDips[1];
static UINT8 DrvReset;
static struct BurnInputInfo DrvInputList[] = {
{"P1 Coin", BIT_DIGITAL, DrvJoy1 + 6, "p1 coin" },
{"P1 Coin", BIT_DIGITAL, DrvJoy1 + 6, "p1 coin" },
{"P1 Button 1", BIT_DIGITAL, DrvJoy1 + 0, "p1 fire 1" },
{"P1 Button 2", BIT_DIGITAL, DrvJoy1 + 1, "p1 fire 2" },
{"P1 Button 3", BIT_DIGITAL, DrvJoy1 + 2, "p1 fire 3" },
{"P1 Button 4", BIT_DIGITAL, DrvJoy1 + 3, "p1 fire 4" },
{"P1 Button 5", BIT_DIGITAL, DrvJoy1 + 4, "p1 fire 5" },
{"Reset", BIT_DIGITAL, &DrvReset, "reset" },
{"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip" },
{"P1 Play", BIT_DIGITAL, DrvJoy2 + 3, "p1 fire 6" },
{"P1 Cancel", BIT_DIGITAL, DrvJoy2 + 4, "p1 fire 7" },
{"Reset", BIT_DIGITAL, &DrvReset, "reset" },
{"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip" },
};
STDINPUTINFO(Drv)
static struct BurnDIPInfo DrvDIPList[]=
{
{0x07, 0xff, 0xff, 0xfd, NULL },
DIP_OFFSET(0x09)
{0x00, 0xff, 0xff, 0xfd, NULL },
{0 , 0xfe, 0 , 2, "Service Keyboard Attached?" },
{0x07, 0x01, 0x01, 0x01, "No" },
{0x07, 0x01, 0x01, 0x00, "Yes" },
{0x00, 0x01, 0x01, 0x01, "No" },
{0x00, 0x01, 0x01, 0x00, "Yes" },
{0 , 0xfe, 0 , 2, "Service Mode" },
{0x07, 0x01, 0x02, 0x00, "Off" },
{0x07, 0x01, 0x02, 0x02, "On" },
{0x00, 0x01, 0x02, 0x00, "Off" },
{0x00, 0x01, 0x02, 0x02, "On" },
};
STDDIPINFO(Drv)
@ -107,7 +112,7 @@ static UINT8 usgames_read(UINT16 address)
switch (address & ~0x0400)
{
case 0x2000:
return (DrvDips[0] & 0x7f) | (vblank ? 0x80 : 0);
return (DrvDips[0] & ~0x98) | (DrvInputs[1] & 0x18) | (vblank ? 0x80 : 0);
case 0x2010:
return DrvInputs[0];
@ -166,12 +171,7 @@ static INT32 MemIndex()
static INT32 DrvInit(INT32 game_select)
{
AllMem = NULL;
MemIndex();
INT32 nLen = MemEnd - (UINT8 *)0;
if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1;
memset(AllMem, 0, nLen);
MemIndex();
BurnAllocMemIndex();
if (BurnLoadRom(DrvM6809ROM + 0x00000, 0, 1)) return 1;
@ -264,7 +264,7 @@ static INT32 DrvExit()
AY8910Exit(0);
BurnFree(AllMem);
BurnFreeMemIndex();
return 0;
}
@ -310,15 +310,17 @@ static INT32 DrvFrame()
{
DrvInputs[0] = 0xff;
DrvInputs[1] = 0xff;
for (INT32 i = 0; i < 8; i++) {
DrvInputs[0] ^= (DrvJoy1[i] & 1) << i;
DrvInputs[1] ^= (DrvJoy2[i] & 1) << i;
}
}
INT32 nInterleave = 10;
INT32 nCyclesTotal = 2000000 / 60;
INT32 nCyclesDone = 0;
INT32 nCyclesTotal[1] = { 2000000 / 60 };
INT32 nCyclesDone[1] = { 0 };
M6809Open(0);
@ -326,11 +328,11 @@ static INT32 DrvFrame()
for (INT32 i = 0; i < nInterleave; i++)
{
nCyclesDone += M6809Run(nCyclesTotal / nInterleave);
CPU_RUN(0, M6809);
if (i & 1) M6809SetIRQLine(0, CPU_IRQSTATUS_AUTO);
if (i & 1) M6809SetIRQLine(0, CPU_IRQSTATUS_HOLD);
if (i == 8) vblank = 1;
if (i == 7) vblank = 1;
}
M6809Close();
@ -346,7 +348,7 @@ static INT32 DrvFrame()
return 0;
}
static INT32 DrvScan(INT32 nAction,INT32 *pnMin)
static INT32 DrvScan(INT32 nAction, INT32 *pnMin)
{
struct BurnArea ba;
@ -354,7 +356,7 @@ static INT32 DrvScan(INT32 nAction,INT32 *pnMin)
*pnMin = 0x029702;
}
if (nAction & ACB_VOLATILE) {
if (nAction & ACB_VOLATILE) {
memset(&ba, 0, sizeof(ba));
ba.Data = AllRam;