pgm: ddpdoj* run at 59.17hz

This commit is contained in:
dinkc64 2019-07-13 23:47:28 -04:00
parent f6b79582ac
commit d1c671c9a6
3 changed files with 13 additions and 9 deletions

View File

@ -4301,6 +4301,7 @@ static INT32 ddp3Init()
{
pPgmInitCallback = pgm_decrypt_py2k2;
pPgmProtCallback = install_protection_asic27a_ddp3; // simulation
pgm_cave_refresh = 1;
return pgmInit();
}
@ -4452,6 +4453,7 @@ static INT32 ddp3blkInit()
{
pPgmInitCallback = pgm_decrypt_py2k2;
pPgmProtCallback = install_protection_asic27a_ddp3; // simulation
pgm_cave_refresh = 1;
INT32 nRet = pgmInit();

View File

@ -54,6 +54,7 @@ extern void (*pPgmProtCallback)();
extern INT32 nPGMDisableIRQ4;
extern INT32 nPGMArm7Type;
extern UINT32 nPgmAsicRegionHackAddress;
extern INT32 pgm_cave_refresh;
INT32 pgmInit();
INT32 pgmExit();

View File

@ -59,6 +59,8 @@ INT32 nPGMDisableIRQ4 = 0;
INT32 nPGMArm7Type = 0;
UINT32 nPgmAsicRegionHackAddress = 0;
INT32 pgm_cave_refresh = 0;
#define Z80_FREQ 8468000
#define M68K_CYCS_PER_FRAME ((20000000 * 100) / nBurnFPS)
#define ARM7_CYCS_PER_FRAME ((20000000 * 100) / nBurnFPS)
@ -519,7 +521,6 @@ INT32 PgmDoReset()
SekOpen(0);
SekReset();
SekClose();
nExtraCycles = 0;
if (nEnableArm7) {
Arm7Open(0);
@ -542,6 +543,7 @@ INT32 PgmDoReset()
memset (hold_coin, 0, sizeof(hold_coin));
nCyclesDone[0] = nCyclesDone[1] = nCyclesDone[2] = 0;
nExtraCycles = 0;
return 0;
}
@ -671,7 +673,7 @@ static void ics2115_sound_irq(INT32 nState)
INT32 pgmInit()
{
BurnSetRefreshRate((BurnDrvGetHardwareCode() & HARDWARE_IGS_JAMMAPCB) ? 59.17 : 60.00); // different?
BurnSetRefreshRate(((BurnDrvGetHardwareCode() & HARDWARE_IGS_JAMMAPCB) || pgm_cave_refresh) ? 59.17 : 60.00);
Mem = NULL;
@ -830,6 +832,8 @@ INT32 pgmExit()
nPgmCurrentBios = -1;
pgm_cave_refresh = 0;
return 0;
}
@ -881,7 +885,6 @@ INT32 pgmFrame()
PgmInput[4] |= PgmCoins & ~0xf; // add non-coin buttons
}
INT32 nCyclesNext[3] = {0, 0, 0};
nCyclesDone[0] = 0;
nCyclesDone[1] = 0;
nCyclesDone[2] = 0;
@ -908,18 +911,14 @@ INT32 pgmFrame()
SekOpen(0);
ZetOpen(0);
if (nEnableArm7) Arm7Open(0);
nCyclesDone[0] += SekIdle(nExtraCycles);
for (INT32 i = 0; i < PGM_INTER_LEAVE; i++)
{
nCyclesNext[0] += M68K_CYCS_PER_INTER;
nCyclesNext[1] += Z80_CYCS_PER_INTER;
nCyclesNext[2] += ARM7_CYCS_PER_INTER;
INT32 cycles = M68K_CYCS_PER_INTER;
INT32 nSegmentS = (M68K_CYCS_PER_FRAME - nCyclesDone[0]) / (PGM_INTER_LEAVE - i);
nCyclesDone[0] += SekRun(nSegmentS + nExtraCycles);
nExtraCycles = 0;
nCyclesDone[0] += SekRun(nSegmentS);
if (nEnableArm7) {
cycles = SekTotalCycles() - Arm7TotalCycles();
@ -1045,6 +1044,8 @@ INT32 pgmScan(INT32 nAction,INT32 *pnMin)
v3021Scan();
SCAN_VAR(nExtraCycles);
SCAN_VAR(PgmInput);
SCAN_VAR(nPgmZ80Work);