mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-15 17:25:06 +00:00
MSVC
This commit is contained in:
parent
3cddca857d
commit
32d8eec522
2 changed files with 25 additions and 10 deletions
|
@ -93,10 +93,6 @@ void DivPlatformSNES::tick(bool sysTick) {
|
|||
// so they have to be accumulated
|
||||
unsigned char kon=0;
|
||||
unsigned char koff=0;
|
||||
bool writeControl=false;
|
||||
bool writeNoise=false;
|
||||
bool writePitchMod=false;
|
||||
bool writeEcho=false;
|
||||
for (int i=0; i<8; i++) {
|
||||
chan[i].std.next();
|
||||
if (chan[i].std.vol.had) {
|
||||
|
@ -146,23 +142,23 @@ void DivPlatformSNES::tick(bool sysTick) {
|
|||
}
|
||||
bool hasInverted=false;
|
||||
if (chan[i].std.ex1.had) {
|
||||
if (chan[i].invertL!=(chan[i].std.ex1.val&16)) {
|
||||
if (chan[i].invertL!=(bool)(chan[i].std.ex1.val&16)) {
|
||||
chan[i].invertL=chan[i].std.ex1.val&16;
|
||||
hasInverted=true;
|
||||
}
|
||||
if (chan[i].invertR!=(chan[i].std.ex1.val&8)) {
|
||||
if (chan[i].invertR!=(bool)(chan[i].std.ex1.val&8)) {
|
||||
chan[i].invertR=chan[i].std.ex1.val&8;
|
||||
hasInverted=true;
|
||||
}
|
||||
if (chan[i].pitchMod!=(chan[i].std.ex1.val&4)) {
|
||||
if (chan[i].pitchMod!=(bool)(chan[i].std.ex1.val&4)) {
|
||||
chan[i].pitchMod=chan[i].std.ex1.val&4;
|
||||
writePitchMod=true;
|
||||
}
|
||||
if (chan[i].echo!=(chan[i].std.ex1.val&2)) {
|
||||
if (chan[i].echo!=(bool)(chan[i].std.ex1.val&2)) {
|
||||
chan[i].echo=chan[i].std.ex1.val&2;
|
||||
writeEcho=true;
|
||||
}
|
||||
if (chan[i].noise!=(chan[i].std.ex1.val&1)) {
|
||||
if (chan[i].noise!=(bool)(chan[i].std.ex1.val&1)) {
|
||||
chan[i].noise=chan[i].std.ex1.val&1;
|
||||
writeNoise=true;
|
||||
}
|
||||
|
@ -226,6 +222,7 @@ void DivPlatformSNES::tick(bool sysTick) {
|
|||
if (writeControl) {
|
||||
unsigned char control=noiseFreq&0x1f;
|
||||
rWrite(0x6c,control);
|
||||
writeControl=false;
|
||||
}
|
||||
if (writeNoise) {
|
||||
unsigned char noiseBits=(
|
||||
|
@ -239,6 +236,7 @@ void DivPlatformSNES::tick(bool sysTick) {
|
|||
(chan[7].noise?0x80:0)
|
||||
);
|
||||
rWrite(0x3d,noiseBits);
|
||||
writeNoise=false;
|
||||
}
|
||||
if (writePitchMod) {
|
||||
unsigned char pitchModBits=(
|
||||
|
@ -252,6 +250,7 @@ void DivPlatformSNES::tick(bool sysTick) {
|
|||
(chan[7].pitchMod?0x80:0)
|
||||
);
|
||||
rWrite(0x2d,pitchModBits);
|
||||
writePitchMod=false;
|
||||
}
|
||||
if (writeEcho) {
|
||||
unsigned char echoBits=(
|
||||
|
@ -265,6 +264,7 @@ void DivPlatformSNES::tick(bool sysTick) {
|
|||
(chan[7].echo?0x80:0)
|
||||
);
|
||||
rWrite(0x4d,echoBits);
|
||||
writeEcho=false;
|
||||
}
|
||||
if (kon!=0) {
|
||||
rWrite(0x4c,kon);
|
||||
|
@ -457,6 +457,10 @@ void DivPlatformSNES::forceIns() {
|
|||
}
|
||||
writeOutVol(i);
|
||||
}
|
||||
writeControl=true;
|
||||
writeNoise=true;
|
||||
writePitchMod=true;
|
||||
writeEcho=true;
|
||||
}
|
||||
|
||||
void* DivPlatformSNES::getChanState(int ch) {
|
||||
|
@ -489,7 +493,6 @@ void DivPlatformSNES::reset() {
|
|||
dsp.init(sampleMem);
|
||||
dsp.set_output(NULL,0);
|
||||
memset(regPool,0,128);
|
||||
// TODO more initial values
|
||||
// this can't be 0 or channel 1 won't play
|
||||
// this can't be 0x100 either as that's used by SPC700 page 1 and the stack
|
||||
// this may not even be 0x200 as some space will be taken by the playback routine and variables
|
||||
|
@ -506,6 +509,10 @@ void DivPlatformSNES::reset() {
|
|||
writeOutVol(i);
|
||||
chWrite(i,4,i); // source number
|
||||
}
|
||||
writeControl=false;
|
||||
writeNoise=false;
|
||||
writePitchMod=false;
|
||||
writeEcho=false;
|
||||
}
|
||||
|
||||
bool DivPlatformSNES::isStereo() {
|
||||
|
|
|
@ -64,6 +64,10 @@ class DivPlatformSNES: public DivDispatch {
|
|||
useWave(false),
|
||||
setPos(false),
|
||||
noise(false),
|
||||
echo(false),
|
||||
pitchMod(false),
|
||||
invertL(false),
|
||||
invertR(false),
|
||||
vol(127),
|
||||
outVol(127),
|
||||
wtLen(16) {}
|
||||
|
@ -74,6 +78,10 @@ class DivPlatformSNES: public DivDispatch {
|
|||
signed char globalVolL, globalVolR;
|
||||
unsigned char noiseFreq;
|
||||
size_t sampleTableBase;
|
||||
bool writeControl;
|
||||
bool writeNoise;
|
||||
bool writePitchMod;
|
||||
bool writeEcho;
|
||||
|
||||
struct QueuedWrite {
|
||||
unsigned char addr;
|
||||
|
|
Loading…
Reference in a new issue