Author Topic: Cadillacs and Dinosaurs (bootleg)  (Read 30010 times)

Offline emu

  • Newbies
  • *
  • Posts: 12
  • Karma: +0/-0
  • Junior Member
Cadillacs and Dinosaurs (bootleg)
« on: September 12, 2006, 12:43:02 AM »
MAME to FBA conversion code??

Cadillacs and Dinosaurs (bootleg)
Cadillacs and Dinosaurs (bootleg, set 1)
Cadillacs and Dinosaurs (bootleg, set 2)
Cadillacs and Dinosaurs (bootleg, set 3)

mame driver
« Last Edit: September 12, 2006, 07:00:09 AM by emu »

Online iq_132

  • Administrator
  • *****
  • Posts: 3727
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Cadillacs and Dinosaurs (bootleg)
« Reply #1 on: October 29, 2006, 04:44:35 PM »
Here's what I have for Dinoh, Dinoha, and Dinohb, I'll have to take a look at dinob later.

Code: [Select]
//==============================
//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
};


Offline tanzil73

  • New Member
  • *
  • Posts: 3
  • Karma: +0/-0
Re: Cadillacs and Dinosaurs (bootleg)
« Reply #2 on: February 16, 2024, 12:13:29 PM »
Here's what I have for Dinoh, Dinoha, and Dinohb, I'll have to take a look at dinob later.

Code: [Select]
//==============================
//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
};



Hello, @iq_132, after long years, I need your help.
I'm having a talk with FbNeo team at git here:
https://github.com/finalburnneo/FBNeo/issues/1676

For FBNeo there is no `dinohb` rom. They called it `dinotpic`.
But player change hack not works there.
Could you please share your expert opinion?