Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dinotpic ROM issue #11

Open
drtanzil opened this issue Feb 12, 2024 · 41 comments
Open

dinotpic ROM issue #11

drtanzil opened this issue Feb 12, 2024 · 41 comments

Comments

@drtanzil
Copy link

dinotpic ROM (Cadillacs and Dinosaurs Turbo (bootleg set 2) running using RetroArch_PSX_CE does not has any sound.
using FB Neo Core
Game background /Sky is black.
However RetroArch on PC does not has this issue.
PC runs on FBneo 1.0.0.3 core.

@crystalct
Copy link
Owner

Cadillacs and Dinosaurs Turbo (bootleg set 2 (with PIC16c57), 930201 etc) [Bootleg, No sound] AKA dinopic4.zip ?

@drtanzil
Copy link
Author

No, not dinopic4.zip.
For FBA NEO its- dinotpic.zip
For EKMAME its dinohb.zip

Im sharing a FBA map for dinotpic -

static struct BurnRomInfo DinotpicRomDesc[] = {
	{ "cd-d.800",			0x100000, 0x2a7b2915, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP },
	{ "cd-e.800",			0x100000, 0xe8370226, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP },

	{ "cd-a.160",			0x200000, 0x7e4f9fb3, BRF_GRA | CPS1_TILES },
	{ "cd-b.160",			0x200000, 0x89532d85, BRF_GRA | CPS1_TILES },

	{ "cd_q.5k",			0x020000, 0x605fdb0b, BRF_PRG | CPS1_Z80_PROGRAM },

	{ "cd-q1.1k",			0x080000, 0x60927775, BRF_SND | CPS1_QSOUND_SAMPLES },
	{ "cd-q2.2k",			0x080000, 0x770f4c47, BRF_SND | CPS1_QSOUND_SAMPLES },
	{ "cd-q3.3k",			0x080000, 0x2f273ffc, BRF_SND | CPS1_QSOUND_SAMPLES },
	{ "cd-q4.4k",			0x080000, 0x2c67821d, BRF_SND | CPS1_QSOUND_SAMPLES },

	A_BOARD_QSOUND_PLDS

	{ "cd63b.1a",			0x000117, 0xef72e902, BRF_OPT },	// b-board PLDs
	{ "iob1.12d",			0x000117, 0x3abc0700, BRF_OPT },
	{ "bprg1.11d",			0x000117, 0x31793da7, BRF_OPT },
	{ "ioc1.ic1",			0x000104, 0xa399772d, BRF_OPT },	// c-board PLDs
	{ "d7l1.7l",			0x000117, 0x27b7410d, BRF_OPT },	// d-board PLDs
	{ "d8l1.8l",			0x000117, 0x539fc7da, BRF_OPT },
	{ "d9k2.9k",			0x000117, 0xcd85a156, BRF_OPT },
	{ "d10f1.10f",			0x000117, 0x6619c494, BRF_OPT },
};

The rom runs 100% on EKMAME emulator with all hacks (There its called dinohb.zip)
I have a snippet of dinohb -
Got from:
https://neo-source.com/index.php?topic=564.msg4835#msg4835

for dinohb- sound = OK, Graphics = OK,
Player change using Start Button = OK.

// 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
};

P.S- This rom is widely popular on asia as Arcade machines there played this ROM.

@drtanzil
Copy link
Author

@crystalct : Is it the right place to notify this issue?

@crystalct
Copy link
Owner

crystalct commented Feb 16, 2024

Yes and no.... the sources to be modified are those on the github libretro fbneo core... once the problem has been solved (big endian issue) on the original sources I could recompile them for PS3. You should open the issue there.

@drtanzil
Copy link
Author

@crystalct : I have downloaded FBNeo from git & compiled it on my PC today. There is no audio & GFX (Black sky) issue on there for dinotpic ROM. Requesting you to compile with latest FBneo core.

@crystalct
Copy link
Owner

A PC has a little endian CPU. PS3 has a BIG endian CPU. It's a Big Endian Issue.

@drtanzil
Copy link
Author

I see. But there might be a fix.
This rom also runs on Android device which is big endian cpu (not sure) using fba4droid emulator. Sound, GFX & hack all works okay. Fba4droid is not open sourced, dont know how they solved this.

@drtanzil
Copy link
Author

Thanks @crystalct . I posted and got reply from barbudreadmon:
Big-endian (ps3) compatibility should be fixed with 728246d

@crystalct
Copy link
Owner

Android ARM is not Big Endian CPU

@drtanzil
Copy link
Author

Thanks @crystalct.
As per your advice i posted on FbNeo git
They have updated d_cps1.cpp on their git with big-endian fix.
They said-

Big-endian (ps3) compatibility should be fixed with 728246d

here is my orginal post

Now how to get it fixed on PS3 ?

Im sharing my PS3 Black Sky Issue for dinotpic
PS3

@barbudreadmon
Copy link
Contributor

@crystalct oh, i thought you weren't active anymore, we didn't get a reply the last few times we tried to ping you about big-endian issues

@drtanzil
Copy link
Author

Great to see @crystalct and @barbudreadmon together on the post!
I was relaying one's request to another, acting as a realy, ha ha!

@crystalct
Copy link
Owner

Sorry, but my free time is almost zero... :-P

@drtanzil
Copy link
Author

@crystalct @barbudreadmon Both of you have done a great work! Spending lots of time & effort to keep alive the nostalgia of Arcade era. Requesting to keep up the good work and also requesting to recompile the original core for PS3.

@crystalct
Copy link
Owner

I should have completely updated the FBneo sources, but the last time I tried to do so, the compiled core had become so large that the PS3's limited RAM became insufficient. I just added changes from 728246d, but it wasn't enough, there must be more or I have to do a complete update for the light version of the FBneo core for the PS3

@drtanzil
Copy link
Author

@crystalct : Thanks! CPS games alone can be an excellent PS3 release.
You are also the author of FBNeoRLPlus:
https://github.com/crystalct/FBNeoRLPlus

Is it possible to release by that git?

@drtanzil
Copy link
Author

@crystalct : The FbNeo team updated the git with some gameplay fix for dinotpic rom.
Please include that marvelous fix if possible.

@crystalct
Copy link
Owner

@barbudreadmon
I tried to compile LIGHT=1 but driverlist.h contains all the DRVs making it impossible to link the .a file
How do i generate driverlist.h for light compilation?

@crystalct
Copy link
Owner

opsss...
make generate-files

@crystalct
Copy link
Owner

@barbudreadmon
this:
void __fastcall DinopicLayerWrite(UINT32 a, UINT16 d)
{
if (a == 0x800222) {
((UINT16)(CpsReg + 0x06)) = d;

should be:
void __fastcall DinopicLayerWrite(UINT32 a, UINT16 d)
{
if (a == 0x800222) {
((UINT16)(CpsReg + 0x06)) = BURN_ENDIAN_SWAP_INT16(d);

@drtanzil
I tested dinotpic on my windows retroarch and there isn't sound....

@drtanzil
Copy link
Author

@crystalct :
Sound works okay on windows RetroArch. Im sharing my Windows Screen to reveal the version.

Might be a ROM file issue?
I'm also sharing dinotpic.zip ROM file from my Google Drive Link.

Sound also works okay on Android phone for this ROM. Android RetroArch APK link here

Screenshot_9

@drtanzil
Copy link
Author

@barbudreadmon and @dinkc64 made significant contributions to this ROM yesterday.
They dumped the game memory from EKMAME and traced the missing hack for Player change.
Afterward, they patched the game on FBN and completed the missing controls.
The version of dinotpic currently available on the FBNeo git repository represents the original gameplay of the 90s bootleg.

@dinkc64
Copy link

dinkc64 commented Feb 20, 2024

got that layer patch in, thanks :)

@barbudreadmon
Copy link
Contributor

I tried to compile LIGHT=1

@crystalct this is meant for nds and removes A LOT of drivers, i don't think you want to use that for ps3

@crystalct
Copy link
Owner

I tried to compile LIGHT=1

@crystalct this is meant for nds and removes A LOT of drivers, i don't think you want to use that for ps3

It's an alternative and additional core just for capcom e few others....
unfortunately recompiling Retroarch and FBNeo with the current sources became a panic.

@drtanzil
Copy link
Author

Meanwhile, I'm regularly playing the standard "Dino" ROM on my PS3, and it works flawlessly.
Playing retro games from the couch with a PS3 gamepad brings a whole new level of satisfaction and relaxation.
I'm eagerly anticipating the "Dinotpic" to start working!

11

IMG_20240220_170714

@crystalct
Copy link
Owner

Unfortunately, with the old FBneo (and retroarch) sources I was only able to get the background to work, but not the sound. Unfortunately for the sound it seems that we need to update FBneo completely to the current state, which also involves updating retroarch....

@drtanzil
Copy link
Author

That's fantastic news! It's reassuring to hear that some improvements have been made.
For RetroArch PS3, this ROM had four issues:

  1. The sky appearing black (Wonderful to hear it's been fixed!)
  2. Player change not working. This issue has been addressed by @dinkc64 in commit d4a475a.
  3. The third button (C) or square not functioning. This issue has been resolved by @barbudreadmon in commits b8cb61e and 3ce5ee4.
  4. And the sound issue.

I'm quite certain that you'll come up with fixes for all the issues.
The level of work you've done is fantastic!

@crystalct
Copy link
Owner

@barbudreadmon and @dinkc64
I recompiled sources and Dinotpic start in balck screen, but if i change Dipswitch QSound from On to OFF and restart core, Dinotpic starts, but with no sound.
Any clue?

@barbudreadmon
Copy link
Contributor

barbudreadmon commented Feb 22, 2024

You are testing with a fully updated source code, right ?

Do you have visuals if you remove the non-LSB_FIRST codepaths in DinotpicPatchCallback & Jurassic99PatchCallback ? Maybe we actually shouldn't big-endianize the rom patch ?

Having no sound when the qsound dips is off is apparently normal (@taoenwen might be able to explain a bit more about this).

@crystalct
Copy link
Owner

The weird thing is the black screen when QSound is enabled....
DinotpicPatchCallback & Jurassic99PatchCallback have LSB_FIRST....

@crystalct
Copy link
Owner

Bingo!!!!
Using the code from LSB_FIRST, there is sound

@crystalct
Copy link
Owner

Both DinotpicPatchCallback & Jurassic99PatchCallback don't need #ifdef LSB_FIRST

@taoenwen
Copy link

taoenwen might be able to explain a bit more about this.

@barbudreadmon In fact, the current dipsw has QSound enabled by default.

@barbudreadmon
Copy link
Contributor

Both DinotpicPatchCallback & Jurassic99PatchCallback don't need #ifdef LSB_FIRST

Ok, it solves both the gfx and sound issues ?

@barbudreadmon
Copy link
Contributor

@taoenwen indeed but what is the purpose of disabling qsound for that romset ? as far as i can tell, the sound just stops working if you do this

@taoenwen
Copy link

None of the audio in these sets was emulated, I just added QSound support.
At first it was set to off based on conservatism, but then I decided that since it was off I might as well not add support, so I turned on the audio.
The addition of QSound can be considered a Hack, a temporary solution until the sets are emulated.

@crystalct
Copy link
Owner

Both DinotpicPatchCallback & Jurassic99PatchCallback don't need #ifdef LSB_FIRST

Ok, it solves both the gfx and sound issues ?

Yes

@crystalct
Copy link
Owner

@drtanzil update FBNEO LIGHT core from Retroarch PSX CE menu and then you can play at Dinotpic, but only with light core version.

@drtanzil
Copy link
Author

Thank you! Thank you so much, @crystalct !
I can't express how happy I am to finally have it working on the PS3!
Thanks again!

Before reaching out here, I wasn't sure if I would even get a response or if anyone would understand what was missing. But I'm incredibly fortunate to have encountered legendary individuals like @dinkc64 , @barbudreadmon , @taoenwen , and yourself, who reconstructed the bootleg and restored the original gameplay, preventing it from disappearing forever.

You guys are truly legendary!
The depth of knowledge you possess for these retro machines is extraordinary.
I sincerely thank you all again for the incredible work!

everything works perfectly on PS3! Flawless!

55

66

@dinkc64
Copy link

dinkc64 commented Feb 23, 2024

drtanzil,
thanks, I also appreciate that you came around and gave us the idea to fix it, and that you shared your nice arcade nostalgia story :)

Keep in mind it doesn't always work out like this, sometimes we just cant fix things, but, in this case things worked out nicely

best regards,

  • dink

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants