Here's what I have for Dinoh, Dinoha, and Dinohb, I'll have to take a look at dinob later.
//==============================
//Cadillacs and Dinosaurs (Hack)
//==============================
// Rom information
static struct BurnRomInfo DinohRomDesc[] = {
{ "cda_23h.rom", 0x80000, 0x8e2a9cf0, BRF_ESS | BRF_PRG }, // 0
{ "cda_22h.rom", 0x80000, 0xf72cd219, BRF_ESS | BRF_PRG }, // 1
{ "cda_21h.rom", 0x80000, 0xbc275b76, BRF_ESS | BRF_PRG }, // 2
{ "cda_20h.rom", 0x80000, 0x8987c975, BRF_ESS | BRF_PRG }, // 3
{ "cd_gfx01.rom", 0x80000, 0x8da4f917, BRF_GRA }, // 4
{ "cd_gfx03.rom", 0x80000, 0x6c40f603, BRF_GRA },
{ "cd_gfx02.rom", 0x80000, 0x09c8fc2d, BRF_GRA },
{ "cd_gfx04.rom", 0x80000, 0x637ff38f, BRF_GRA },
{ "cd_gfx05.rom", 0x80000, 0x470befee, BRF_GRA }, // 8
{ "cd_gfx07.rom", 0x80000, 0x22bfb7a3, BRF_GRA },
{ "cd_gfx06.rom", 0x80000, 0xe7599ac4, BRF_GRA },
{ "cd_gfx08.rom", 0x80000, 0x211b4b15, BRF_GRA },
{ "cd_q.rom", 0x20000, 0x605fdb0b, BRF_SND }, // 12
{ "cd_q1.rom", 0x80000, 0x60927775, BRF_SND }, // 13
{ "cd_q2.rom", 0x80000, 0x770f4c47, BRF_SND }, // 14
{ "cd_q3.rom", 0x80000, 0x2f273ffc, BRF_SND }, // 15
{ "cd_q4.rom", 0x80000, 0x2c67821d, BRF_SND }, // 16
};
// Make The RomInfo/Name functions for the game
STD_ROM_PICK(Dinoh) STD_ROM_FN(Dinoh)
static int DinohInit()
{
int nRet=0; unsigned char *pqs=NULL;
Cps=1; Cps1Qs=1; Cps1QsHack=1;
nCpsRomLen= 4*0x080000;
nCpsCodeLen=0; // not encrypted
nCpsGfxLen= 8*0x080000;
nCpsZRomLen= 2*0x020000;
nCpsQSamLen= 4*0x080000;
nRet=CpsInit(); if (nRet!=0) return 1;
// Load program roms
nRet=BurnLoadRom(CpsRom+0x000000,0,1); if (nRet!=0) return 1;
nRet=BurnLoadRom(CpsRom+0x080000,1,1); if (nRet!=0) return 1;
nRet=BurnLoadRom(CpsRom+0x100000,2,1); if (nRet!=0) return 1;
nRet=BurnLoadRom(CpsRom+0x180000,3,1); if (nRet!=0) return 1;
// Patch Q-Sound Test
CpsRom[0xaacf5]=0x4e;
CpsRom[0xaacf4]=0x71;
// Load graphics roms
CpsLoadTiles(CpsGfx , 4);
CpsLoadTiles(CpsGfx+0x200000, 8);
nCpsLcReg=0x66;
CpsLayEn[1]=0x02;
CpsLayEn[2]=0x04;
CpsLayEn[3]=0x08;
// Protection enable code by KEV
CpsMProt[0]=0x00;
CpsMProt[1]=0x00;
CpsMProt[2]=0x00;
CpsMProt[3]=0x00;
// Board ID improvments by KEV. 0x00,0x0000
CpsBID[0]=0x00;
CpsBID[1]=0x00;
CpsBID[2]=0x00;
MaskAddr[0]=0x68;
MaskAddr[1]=0x6a;
MaskAddr[2]=0x6c;
MaskAddr[3]=0x6e;
nRet=BurnLoadRom(CpsZRom,12,1);
dino_decode();
pqs=(unsigned char *)CpsQSam;
nRet=BurnLoadRom(pqs ,13,1);
nRet=BurnLoadRom(pqs+0x080000,14,1);
nRet=BurnLoadRom(pqs+0x100000,15,1);
nRet=BurnLoadRom(pqs+0x180000,16,1);
nRet=CpsRunInit(); if (nRet!=0) return 1;
// Ready to go
return 0;
}
struct BurnDriver BurnDrvCpsDinoh = {
"dinoh", "dino", NULL, "1993",
"Cadillacs and Dinosaurs (Hack set 1)\0", NULL, "Capcom", "CPS1 / QSound",
NULL, NULL, NULL, NULL,
BDF_CLONE | BDF_BOOTLEG,3,HARDWARE_CAPCOM_CPS1_QSOUND,
NULL,DinohRomInfo,DinohRomName,DinohInputInfo, dinoDIPInfo,
DinohInit,DrvExit,Cps1Frame,CpsRedraw,CpsAreaScan,
&CpsRecalcPal,384,224,4,3
};
//==============================
//Cadillacs and Dinosaurs (Hack II)
//==============================
// Rom information
static struct BurnRomInfo DinohaRomDesc[] = {
{ "kl2-l2.800", 0x100000, 0xC6AE7338, BRF_ESS | BRF_PRG }, // 0
{ "kl2-r1.800", 0x100000, 0x4C70DCA7, BRF_ESS | BRF_PRG }, // 1
{ "cd-a.160", 0x200000, 0x7e4F9FB3, BRF_GRA }, // 2
{ "cd-b.160", 0x200000, 0x89532d85, BRF_GRA }, // 3
{ "cd_q.rom", 0x020000, 0x605fdb0b, BRF_SND }, // 4
{ "cd_q1.rom", 0x080000, 0x60927775, BRF_SND }, // 5
{ "cd_q2.rom", 0x080000, 0x770f4c47, BRF_SND }, // 6
{ "cd_q3.rom", 0x080000, 0x2f273ffc, BRF_SND }, // 7
{ "cd_q4.rom", 0x080000, 0x2c67821d, BRF_SND }, // 8
};
// Make The RomInfo/Name functions for the game
STD_ROM_PICK(Dinoha);
STD_ROM_FN(Dinoha);
static int DinohaInit()
{
int nRet=0; unsigned char *pqs=NULL;
Cps=1; Cps1Qs=1;
nCpsRomLen= 4*0x080000;
nCpsCodeLen=0; // not encrypted
nCpsGfxLen= 8*0x080000;
nCpsZRomLen= 2*0x020000;
nCpsQSamLen= 4*0x080000;
nRet=CpsInit(); if (nRet!=0) return 1;
// Load program roms
nRet=BurnLoadRom(CpsRom+0x000000,0,1); if (nRet!=0) return 1;
nRet=BurnLoadRom(CpsRom+0x100000,1,1); if (nRet!=0) return 1;
// Load graphics roms
CpsLoadTilesHack160(CpsGfx, 2);
nCpsLcReg=0x4a; // Layer control register is at 0x4a
CpsLayEn[1]=0x16;
CpsLayEn[2]=0x16;
CpsLayEn[3]=0x16;
CpsMProt[0]=0x00;
CpsMProt[1]=0x00;
CpsMProt[2]=0x00;
CpsMProt[3]=0x00;
CpsBID[0]=0x00;
CpsBID[1]=0x00;
CpsBID[2]=0x00;
MaskAddr[0]=0x4c;
MaskAddr[1]=0x4e;
MaskAddr[2]=0x40;
MaskAddr[3]=0x42;
nRet=BurnLoadRom(CpsZRom,4,1);
dino_decode();
pqs=(unsigned char *)CpsQSam;
nRet=BurnLoadRom(pqs ,5,1);
nRet=BurnLoadRom(pqs+0x080000,6,1);
nRet=BurnLoadRom(pqs+0x100000,7,1);
nRet=BurnLoadRom(pqs+0x180000,8,1);
nRet=CpsRunInit(); if (nRet!=0) return 1;
// Ready to go
return 0;
}
struct BurnDriver BurnDrvCpsDinoha = {
"dinoha", "dino", NULL, "1993",
"Cadillacs and Dinosaurs (Hack set 2)\0", "Missing GFX, No Sound", "Capcom", "CPS1",
NULL, NULL, NULL, NULL,
BDF_CLONE | BDF_BOOTLEG,3,HARDWARE_CAPCOM_CPS1_QSOUND,
NULL,DinohaRomInfo,DinohaRomName,DrvInputInfo, dinoDIPInfo,
DinohaInit,DrvExit,Cps1Frame,CpsRedraw,CpsAreaScan,
&CpsRecalcPal,384,224,4,3
};
// Turbo (Bootleg + Hack) World
static struct BurnRomInfo dinohbRomDesc[] = {
{ "cd-d.800", 0x100000, 0x2A7B2915, BRF_ESS | BRF_PRG }, // 0
{ "cd-e.800", 0x100000, 0xE8370226, BRF_ESS | BRF_PRG }, // 1
{ "cd-a.160", 0x200000, 0x7e4F9FB3, BRF_GRA }, // 2
{ "cd-b.160", 0x200000, 0x89532d85, BRF_GRA }, // 3
{ "cd_q.rom", 0x020000, 0x605fdb0b, BRF_SND }, // 4
{ "cd_q1.rom", 0x080000, 0x60927775, BRF_SND }, // 5
{ "cd_q2.rom", 0x080000, 0x770f4c47, BRF_SND }, // 6
{ "cd_q3.rom", 0x080000, 0x2f273ffc, BRF_SND }, // 7
{ "cd_q4.rom", 0x080000, 0x2c67821d, BRF_SND }, // 8
};
STD_ROM_PICK(dinohb); STD_ROM_FN(dinohb);
static int dinohbInit()
{
int nRet=0; unsigned char *pqs=NULL;
Cps=1; Cps1Qs=1;
nCpsRomLen= 4*0x080000;
nCpsCodeLen=0; // not encrypted
nCpsGfxLen= 8*0x080000;
nCpsZRomLen= 2*0x020000;
nCpsQSamLen= 4*0x080000;
nRet=CpsInit(); if (nRet!=0) return 1;
// Load program roms
nRet=BurnLoadRom(CpsRom+0x000000,0,1); if (nRet!=0) return 1;
nRet=BurnLoadRom(CpsRom+0x100000,1,1); if (nRet!=0) return 1;
// Hack Fixes
// Fix draw scroll
*((unsigned short*)(CpsRom + 0x006C2)) = 0xFFC0;
// Fix gfx
*((unsigned short*)(CpsRom + 0x006CC)) = 0x0080;
*((unsigned short*)(CpsRom + 0x006CE)) = 0x010C;
*((unsigned short*)(CpsRom + 0x006DE)) = 0x0080;
*((unsigned short*)(CpsRom + 0x006E0)) = 0x0110;
*((unsigned short*)(CpsRom + 0x006F0)) = 0x0080;
*((unsigned short*)(CpsRom + 0x006F2)) = 0x0114;
*((unsigned short*)(CpsRom + 0x00704)) = 0x0080;
*((unsigned short*)(CpsRom + 0x00706)) = 0x010E;
*((unsigned short*)(CpsRom + 0x00718)) = 0x0080;
*((unsigned short*)(CpsRom + 0x0071A)) = 0x0112;
*((unsigned short*)(CpsRom + 0x0072C)) = 0x0080;
*((unsigned short*)(CpsRom + 0x0072E)) = 0x0116;
// Fix screen transitions
*((unsigned short*)(CpsRom + 0x00B28)) = 0x7000;
*((unsigned short*)(CpsRom + 0x00B2A)) = 0x7200;
*((unsigned short*)(CpsRom + 0x00B2C)) = 0x343C;
*((unsigned short*)(CpsRom + 0x00B32)) = 0x20C1;
// Fix sound
*((unsigned short*)(CpsRom + 0x00666)) = 0x00F1;
*((unsigned short*)(CpsRom + 0x00668)) = 0x8002;
*((unsigned short*)(CpsRom + 0xAAA6C)) = 0x00D8;
//
// Load graphics roms
CpsLoadTilesHack160(CpsGfx, 2);
nCpsLcReg=0x4a; // Layer control register is at 0x4a
CpsLayEn[1]=0x16;
CpsLayEn[2]=0x16;
CpsLayEn[3]=0x16;
// Protection enable code by KEV
CpsMProt[0]=0x00;
CpsMProt[1]=0x00;
CpsMProt[2]=0x00;
CpsMProt[3]=0x00;
// Board ID improvments by KEV. 0x00,0x0000
CpsBID[0]=0x00;
CpsBID[1]=0x00;
CpsBID[2]=0x00;
MaskAddr[0]=0x4c;
MaskAddr[1]=0x4e;
MaskAddr[2]=0x40;
MaskAddr[3]=0x42;
nRet=BurnLoadRom(CpsZRom,4,1);
dino_decode();
pqs=(unsigned char *)CpsQSam;
nRet=BurnLoadRom(pqs ,5,1);
nRet=BurnLoadRom(pqs+0x080000,6,1);
nRet=BurnLoadRom(pqs+0x100000,7,1);
nRet=BurnLoadRom(pqs+0x180000,8,1);
nRet=CpsRunInit(); if (nRet!=0) return 1;
// Ready to go
return 0;
}
struct BurnDriver BurnDrvCpsdinohb = {
"dinohb", "dino", NULL, "1993",
"Cadillacs and Dinosaurs - Turbo - 97 the second generation of dino\0", "", "Capcom", "CPS1",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG,3,HARDWARE_CAPCOM_CPS1_QSOUND,
NULL,dinohbRomInfo,dinohbRomName,DrvInputInfo, dinoDIPInfo,
dinohbInit,DrvExit,Cps1Frame,CpsRedraw,CpsAreaScan,
&CpsRecalcPal,384,224,4,3
};