Neo Geo: safety checks

This commit is contained in:
tildearrow 2022-02-24 16:53:38 -05:00
parent e4ad569f8d
commit 82c8b97d9c
2 changed files with 13 additions and 1 deletions

View File

@ -627,6 +627,10 @@ class DivEngine {
size_t adpcmBMemLen; size_t adpcmBMemLen;
unsigned char* qsoundMem; unsigned char* qsoundMem;
size_t qsoundMemLen; size_t qsoundMemLen;
unsigned char* qsoundAMem;
size_t qsoundAMemLen;
unsigned char* dpcmMem;
size_t dpcmMemLen;
DivEngine(): DivEngine():
output(NULL), output(NULL),
@ -685,6 +689,10 @@ class DivEngine {
adpcmBMem(NULL), adpcmBMem(NULL),
adpcmBMemLen(0), adpcmBMemLen(0),
qsoundMem(NULL), qsoundMem(NULL),
qsoundMemLen(0) {} qsoundMemLen(0),
qsoundAMem(NULL),
qsoundAMemLen(0),
dpcmMem(NULL),
dpcmMemLen(0) {}
}; };
#endif #endif

View File

@ -24,8 +24,12 @@
uint8_t DivYM2610Interface::ymfm_external_read(ymfm::access_class type, uint32_t address) { uint8_t DivYM2610Interface::ymfm_external_read(ymfm::access_class type, uint32_t address) {
switch (type) { switch (type) {
case ymfm::ACCESS_ADPCM_A: case ymfm::ACCESS_ADPCM_A:
if (parent->adpcmAMem==NULL) return 0;
if ((address&0xffffff)>=parent->adpcmAMemLen) return 0;
return parent->adpcmAMem[address&0xffffff]; return parent->adpcmAMem[address&0xffffff];
case ymfm::ACCESS_ADPCM_B: case ymfm::ACCESS_ADPCM_B:
if (parent->adpcmBMem==NULL) return 0;
if ((address&0xffffff)>=parent->adpcmBMemLen) return 0;
return parent->adpcmBMem[address&0xffffff]; return parent->adpcmBMem[address&0xffffff];
default: default:
return 0; return 0;