RetroArch_PSX_CE
RetroArch_PSX_CE copied to clipboard
dinotpic ROM issue
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.
Cadillacs and Dinosaurs Turbo (bootleg set 2 (with PIC16c57), 930201 etc) [Bootleg, No sound] AKA dinopic4.zip ?
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.
@crystalct : Is it the right place to notify this issue?
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.
@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.
A PC has a little endian CPU. PS3 has a BIG endian CPU. It's a Big Endian Issue.
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.
Thanks @crystalct . I posted and got reply from barbudreadmon: Big-endian (ps3) compatibility should be fixed with 728246d
Android ARM is not Big Endian CPU
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
@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
Great to see @crystalct and @barbudreadmon together on the post! I was relaying one's request to another, acting as a realy, ha ha!
Sorry, but my free time is almost zero... :-P
@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.
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
@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?
@crystalct : The FbNeo team updated the git with some gameplay fix for dinotpic
rom.
Please include that marvelous fix if possible.
@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?
opsss... make generate-files
@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....
@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
@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.
got that layer patch in, thanks :)
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
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.
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!
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....
That's fantastic news! It's reassuring to hear that some improvements have been made. For RetroArch PS3, this ROM had four issues:
- The sky appearing black (Wonderful to hear it's been fixed!)
- Player change not working. This issue has been addressed by @dinkc64 in commit d4a475a.
- The third button (C) or square not functioning. This issue has been resolved by @barbudreadmon in commits b8cb61e and 3ce5ee4.
- 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!
@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?
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).