sanity checking for YMZ280BROM[SIZE]

This commit is contained in:
dinkc64 2015-01-02 06:19:59 +00:00
parent 2b07ca39a4
commit 97bf951b0f
10 changed files with 33 additions and 12 deletions

View File

@ -460,7 +460,8 @@ static INT32 LoadRoms()
// Load YMZ280B data
BurnLoadRom(YMZ280BROM + 0x000000, 9, 1);
BurnLoadRom(YMZ280BROM + 0x200000, 10, 1);
YMZ280BROMSIZE = 0x400000;
BurnLoadRom(DefaultEEPROM, 11, 1);
return 0;

View File

@ -492,7 +492,8 @@ static INT32 LoadRoms()
// Load YMZ280B data
BurnLoadRom(YMZ280BROM, 11, 1);
YMZ280BROMSIZE = 0x400000;
BurnLoadRom(DefaultEEPROM, 12, 1);
return 0;

View File

@ -446,7 +446,8 @@ static INT32 LoadRoms()
NibbleSwap2(CaveTileROM[1], 0x200000);
BurnLoadRom(YMZ280BROM, 6, 1);
YMZ280BROMSIZE = 0x400000;
BurnLoadRom(DefaultEEPROM, 7, 1);
return 0;

View File

@ -674,7 +674,7 @@ static INT32 LoadRoms()
BurnLoadRom(YMZ280BROM + 0x000000, 7, 1);
BurnLoadRom(YMZ280BROM + 0x400000, 8, 1);
BurnLoadRom(YMZ280BROM + 0x800000, 9, 1);
YMZ280BROMSIZE = 0xc00000;
return 0;
}

View File

@ -504,7 +504,8 @@ static INT32 LoadRoms()
// Load YMZ280B data
BurnLoadRom(YMZ280BROM, 9, 1);
YMZ280BROMSIZE = 0x400000;
BurnLoadRom(DefaultEEPROM, 14, 1);
return 0;

View File

@ -533,6 +533,7 @@ static INT32 LoadRoms()
// Load YMZ280B data
BurnLoadRom(YMZ280BROM, 4, 1);
YMZ280BROMSIZE = 0x100000;
return 0;
}
@ -613,6 +614,7 @@ static INT32 crushermLoadRoms()
// Load YMZ280B data
BurnLoadRom(YMZ280BROM + 0x000000, 4, 1);
BurnLoadRom(YMZ280BROM + 0x100000, 5, 1);
YMZ280BROMSIZE = 0x200000;
return 0;
}

View File

@ -441,7 +441,8 @@ static INT32 LoadRoms()
// Load YMZ280B data
BurnLoadRom(YMZ280BROM, 4, 1);
YMZ280BROMSIZE = 0x200000;
BurnLoadRom(DefaultEEPROM, 5, 1);
return 0;

View File

@ -431,7 +431,8 @@ static INT32 LoadRoms()
BurnLoadRom(YMZ280BROM + 0x000000, 9, 1);
BurnLoadRom(YMZ280BROM + 0x400000, 10, 1);
BurnLoadRom(YMZ280BROM + 0x800000, 11, 1);
YMZ280BROMSIZE = 0xc00000;
BurnLoadRom(DefaultEEPROM, 12, 1);
return 0;

View File

@ -8,6 +8,7 @@ static INT32 nYMZ280BSampleRate;
bool bESPRaDeMixerKludge = false;
UINT8* YMZ280BROM;
UINT32 YMZ280BROMSIZE = 0xffffff; // 16meg max addressable rom size
void (*pYMZ280BRAMWrite)(INT32 offset, INT32 nValue) = NULL;
INT32 (*pYMZ280BRAMRead)(INT32 offset) = NULL;
@ -192,6 +193,7 @@ void YMZ280BExit()
pYMZ280BRAMWrite = NULL;
pYMZ280BRAMRead = NULL;
bESPRaDeMixerKludge = false;
YMZ280BROMSIZE = 0xffffff;
DebugSnd_YMZ280BInitted = 0;
}
@ -253,10 +255,20 @@ inline static void RampChannel()
#endif
}
UINT8 ymz280b_read_memory(UINT32 offset)
{
if (offset < YMZ280BROMSIZE) {
return YMZ280BROM[offset];
} else {
bprintf(0, _T("ymz280b bad offset: %d!! (max. size: %d)\n"), offset, YMZ280BROMSIZE);
return 0;
}
}
inline static void decode_adpcm()
{
// Get next value & compute delta
nDelta = YMZ280BROM[channelInfo->nPosition >> 1];
nDelta = ymz280b_read_memory(channelInfo->nPosition >> 1);
if (channelInfo->nPosition & 1) {
nDelta &= 0x0F;
} else {
@ -287,7 +299,7 @@ inline static void decode_adpcm()
inline static void decode_pcm8()
{
nDelta = YMZ280BROM[channelInfo->nPosition >> 1];
nDelta = ymz280b_read_memory(channelInfo->nPosition >> 1);
channelInfo->nSample = (INT8)nDelta * 256;
channelInfo->nPosition+=2;
@ -295,7 +307,7 @@ inline static void decode_pcm8()
inline static void decode_pcm16()
{
nDelta = (INT16)((YMZ280BROM[channelInfo->nPosition / 2 + 1] << 8) + YMZ280BROM[channelInfo->nPosition / 2]);
nDelta = (INT16)((ymz280b_read_memory(channelInfo->nPosition / 2 + 1) << 8) + ymz280b_read_memory(channelInfo->nPosition / 2));
channelInfo->nSample = nDelta;
channelInfo->nPosition+=4;
@ -382,7 +394,7 @@ inline static void RenderADPCMLoop_Linear()
do {
// Check for end of sample
if (channelInfo->nPosition == channelInfo->nLoopStop) {
if (channelInfo->nPosition >= channelInfo->nLoopStop) {
channelInfo->nStep = channelInfo->nLoopStep;
channelInfo->nSample = channelInfo->nLoopSample;
channelInfo->nPosition = channelInfo->nLoopStart;
@ -569,7 +581,7 @@ void YMZ280BWriteRegister(UINT8 nValue)
if (YMZ280BChannelInfo[nWriteChannel].nMode > 1) {
#ifdef DEBUG
// bprintf(0,_T("Sample Start: %08X - Stop: %08X.\n"),YMZ280BChannelInfo[nWriteChannel].nSampleStart, YMZ280BChannelInfo[nWriteChannel].nSampleStop);
//bprintf(0,_T("Sample Start: %08X - Stop: %08X.\n"),YMZ280BChannelInfo[nWriteChannel].nSampleStart, YMZ280BChannelInfo[nWriteChannel].nSampleStop);
#endif
}

View File

@ -11,6 +11,7 @@ UINT32 YMZ280BReadStatus();
UINT32 YMZ280BReadRAM();
extern UINT8* YMZ280BROM;
extern UINT32 YMZ280BROMSIZE;
extern bool bESPRaDeMixerKludge;
// external memory handlers