YM2608-LLE, part 16
works special thanks to nukeykt
This commit is contained in:
parent
22f612b32a
commit
aa95c28d75
|
@ -551,20 +551,33 @@ void DivPlatformYM2610::acquire_lle(short** buf, size_t len) {
|
||||||
|
|
||||||
lastS=fm_lle.o_s;
|
lastS=fm_lle.o_s;
|
||||||
|
|
||||||
// ADPCM data bus
|
// ADPCM-A data bus
|
||||||
|
if (fm_lle.o_rmpx && !rmpx) {
|
||||||
|
adMemAddrA&=~0x3ff;
|
||||||
|
adMemAddrA|=(fm_lle.o_rad&0xff)|((fm_lle.o_ra8&3)<<8);
|
||||||
|
}
|
||||||
|
if (!fm_lle.o_rmpx && rmpx) {
|
||||||
|
adMemAddrA&=0x3ff;
|
||||||
|
adMemAddrA|=((fm_lle.o_rad&0xff)|(fm_lle.o_ra8<<8)|(fm_lle.o_ra20<<10))<<10;
|
||||||
|
}
|
||||||
if (!fm_lle.o_roe) {
|
if (!fm_lle.o_roe) {
|
||||||
fm_lle.input.rad=adpcmAMem[adMemAddrA&0xffffff];
|
fm_lle.input.rad=adpcmAMem[adMemAddrA&0xffffff];
|
||||||
} else {
|
|
||||||
if (!fm_lle.o_rmpx && rmpx) {
|
|
||||||
adMemAddrA&=~0x3ff;
|
|
||||||
adMemAddrA=(fm_lle.o_rad&0xff)|(fm_lle.o_ra8<<8);
|
|
||||||
}
|
|
||||||
if (fm_lle.o_rmpx && !rmpx) {
|
|
||||||
adMemAddrA&=0x3ff;
|
|
||||||
adMemAddrA=((fm_lle.o_rad&0xff)|(fm_lle.o_ra8<<8)|(fm_lle.o_ra20<<10))<<10;
|
|
||||||
}
|
|
||||||
rmpx=fm_lle.o_rmpx;
|
|
||||||
}
|
}
|
||||||
|
rmpx=fm_lle.o_rmpx;
|
||||||
|
|
||||||
|
// ADPCM-B data bus
|
||||||
|
if (fm_lle.o_pmpx && !pmpx) {
|
||||||
|
adMemAddrB&=~0xfff;
|
||||||
|
adMemAddrB|=(fm_lle.o_pad&0xff)|((fm_lle.o_pa8&15)<<8);
|
||||||
|
}
|
||||||
|
if (!fm_lle.o_pmpx && pmpx) {
|
||||||
|
adMemAddrB&=0xfff;
|
||||||
|
adMemAddrB|=((fm_lle.o_pad&0xff)|((fm_lle.o_pa8&15)<<8))<<12;
|
||||||
|
}
|
||||||
|
if (!fm_lle.o_poe) {
|
||||||
|
fm_lle.input.pad=adpcmBMem[adMemAddrB&0xffffff];
|
||||||
|
}
|
||||||
|
pmpx=fm_lle.o_pmpx;
|
||||||
|
|
||||||
if (have0 && have1) break;
|
if (have0 && have1) break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ class DivPlatformYM2610Base: public DivPlatformOPN {
|
||||||
bool lastSH;
|
bool lastSH;
|
||||||
bool lastSH2;
|
bool lastSH2;
|
||||||
bool lastS;
|
bool lastS;
|
||||||
unsigned char rmpx, pmpx, rssCycle, rssSubCycle;
|
unsigned char rmpx, pmpx, roe, poe, rssCycle, rssSubCycle;
|
||||||
unsigned int adMemAddrA;
|
unsigned int adMemAddrA;
|
||||||
unsigned int adMemAddrB;
|
unsigned int adMemAddrB;
|
||||||
|
|
||||||
|
@ -158,6 +158,8 @@ class DivPlatformYM2610Base: public DivPlatformOPN {
|
||||||
lastS=0;
|
lastS=0;
|
||||||
rmpx=0;
|
rmpx=0;
|
||||||
pmpx=0;
|
pmpx=0;
|
||||||
|
roe=0;
|
||||||
|
poe=0;
|
||||||
rssCycle=0;
|
rssCycle=0;
|
||||||
rssSubCycle=0;
|
rssSubCycle=0;
|
||||||
adMemAddrA=0;
|
adMemAddrA=0;
|
||||||
|
|
Loading…
Reference in a new issue