Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
This commit is contained in:
commit
c995a52835
|
@ -11,7 +11,7 @@ defaults:
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
env:
|
env:
|
||||||
BUILD_TYPE: Release
|
BUILD_TYPE: Debug
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -297,7 +297,7 @@ void DivPlatformAY8930::tick(bool sysTick) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (chan[i].std.ex1.had) { // duty
|
if (chan[i].std.ex1.had) { // duty
|
||||||
rWrite(0x16+i,chan[i].std.ex1.val);
|
immWrite(0x16+i,chan[i].std.ex1.val);
|
||||||
}
|
}
|
||||||
if (chan[i].std.ex2.had) {
|
if (chan[i].std.ex2.had) {
|
||||||
chan[i].envelope.mode=chan[i].std.ex2.val;
|
chan[i].envelope.mode=chan[i].std.ex2.val;
|
||||||
|
|
|
@ -148,7 +148,7 @@ void DivPlatformC64::tick(bool sysTick) {
|
||||||
if (chan[i].std.pitch.had) {
|
if (chan[i].std.pitch.had) {
|
||||||
if (chan[i].std.pitch.mode) {
|
if (chan[i].std.pitch.mode) {
|
||||||
chan[i].pitch2+=chan[i].std.pitch.val;
|
chan[i].pitch2+=chan[i].std.pitch.val;
|
||||||
CLAMP_VAR(chan[i].pitch2,-32768,32767);
|
CLAMP_VAR(chan[i].pitch2,-65535,65535);
|
||||||
} else {
|
} else {
|
||||||
chan[i].pitch2=chan[i].std.pitch.val;
|
chan[i].pitch2=chan[i].std.pitch.val;
|
||||||
}
|
}
|
||||||
|
@ -188,6 +188,7 @@ void DivPlatformC64::tick(bool sysTick) {
|
||||||
|
|
||||||
if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) {
|
if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) {
|
||||||
chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,8,chan[i].pitch2,chipClock,CHIP_FREQBASE);
|
chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,8,chan[i].pitch2,chipClock,CHIP_FREQBASE);
|
||||||
|
if (chan[i].freq<0) chan[i].freq=0;
|
||||||
if (chan[i].freq>0xffff) chan[i].freq=0xffff;
|
if (chan[i].freq>0xffff) chan[i].freq=0xffff;
|
||||||
if (chan[i].keyOn) {
|
if (chan[i].keyOn) {
|
||||||
rWrite(i*7+5,(chan[i].attack<<4)|(chan[i].decay));
|
rWrite(i*7+5,(chan[i].attack<<4)|(chan[i].decay));
|
||||||
|
|
|
@ -509,12 +509,12 @@ DivPlatformLynx::MikeyFreqDiv::MikeyFreqDiv(int frequency) {
|
||||||
if (top>7)
|
if (top>7)
|
||||||
{
|
{
|
||||||
clockDivider=top-7;
|
clockDivider=top-7;
|
||||||
backup=frequency>>(top-7);
|
backup=clamped>>(top-7);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
clockDivider=0;
|
clockDivider=0;
|
||||||
backup=frequency;
|
backup=clamped;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -707,11 +707,11 @@ const void* DivPlatformQSound::getSampleMem(int index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t DivPlatformQSound::getSampleMemCapacity(int index) {
|
size_t DivPlatformQSound::getSampleMemCapacity(int index) {
|
||||||
return (index == 0 || index == 1) ? 16777216 : 0;
|
return index == 0 ? 16777216 : index == 1 ? MAX(0,16777216 - sampleMemUsage) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t DivPlatformQSound::getSampleMemUsage(int index) {
|
size_t DivPlatformQSound::getSampleMemUsage(int index) {
|
||||||
return index == 0 ? sampleMemLen : index == 1 ? sampleMemLenBS : 0;
|
return index == 0 ? sampleMemLen : index == 1 ? MAX(0,sampleMemLenBS - sampleMemUsage) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DivPlatformQSound::isSampleLoaded(int index, int sample) {
|
bool DivPlatformQSound::isSampleLoaded(int index, int sample) {
|
||||||
|
@ -766,6 +766,7 @@ void DivPlatformQSound::renderSamples(int sysID) {
|
||||||
sampleMemLen=memPos+256;
|
sampleMemLen=memPos+256;
|
||||||
|
|
||||||
memPos=(memPos+0xffff)&0xff0000;
|
memPos=(memPos+0xffff)&0xff0000;
|
||||||
|
sampleMemUsage=memPos;
|
||||||
|
|
||||||
for (int i=0; i<parent->song.sampleLen; i++) {
|
for (int i=0; i<parent->song.sampleLen; i++) {
|
||||||
DivSample* s=parent->song.sample[i];
|
DivSample* s=parent->song.sample[i];
|
||||||
|
@ -818,6 +819,7 @@ int DivPlatformQSound::init(DivEngine* p, int channels, int sugRate, const DivCo
|
||||||
sampleMem=new unsigned char[getSampleMemCapacity()];
|
sampleMem=new unsigned char[getSampleMemCapacity()];
|
||||||
sampleMemLen=0;
|
sampleMemLen=0;
|
||||||
sampleMemLenBS=0;
|
sampleMemLenBS=0;
|
||||||
|
sampleMemUsage=0;
|
||||||
chip.rom_data=sampleMem;
|
chip.rom_data=sampleMem;
|
||||||
chip.rom_mask=0xffffff;
|
chip.rom_mask=0xffffff;
|
||||||
reset();
|
reset();
|
||||||
|
|
|
@ -50,6 +50,7 @@ class DivPlatformQSound: public DivDispatch {
|
||||||
unsigned char* sampleMem;
|
unsigned char* sampleMem;
|
||||||
size_t sampleMemLen;
|
size_t sampleMemLen;
|
||||||
size_t sampleMemLenBS;
|
size_t sampleMemLenBS;
|
||||||
|
size_t sampleMemUsage;
|
||||||
bool sampleLoaded[256];
|
bool sampleLoaded[256];
|
||||||
bool sampleLoadedBS[256];
|
bool sampleLoadedBS[256];
|
||||||
struct qsound_chip chip;
|
struct qsound_chip chip;
|
||||||
|
|
|
@ -362,7 +362,7 @@ void DivPlatformX1_010::tick(bool sysTick) {
|
||||||
if (chan[i].std.pitch.had) {
|
if (chan[i].std.pitch.had) {
|
||||||
if (chan[i].std.pitch.mode) {
|
if (chan[i].std.pitch.mode) {
|
||||||
chan[i].pitch2+=chan[i].std.pitch.val;
|
chan[i].pitch2+=chan[i].std.pitch.val;
|
||||||
CLAMP_VAR(chan[i].pitch2,-32768,32767);
|
CLAMP_VAR(chan[i].pitch2,-65535,65535);
|
||||||
} else {
|
} else {
|
||||||
chan[i].pitch2=chan[i].std.pitch.val;
|
chan[i].pitch2=chan[i].std.pitch.val;
|
||||||
}
|
}
|
||||||
|
@ -484,6 +484,7 @@ void DivPlatformX1_010::tick(bool sysTick) {
|
||||||
if (chan[i].freq>255) chan[i].freq=255;
|
if (chan[i].freq>255) chan[i].freq=255;
|
||||||
chWrite(i,2,chan[i].freq&0xff);
|
chWrite(i,2,chan[i].freq&0xff);
|
||||||
} else {
|
} else {
|
||||||
|
if (chan[i].freq<0) chan[i].freq=0;
|
||||||
if (chan[i].freq>65535) chan[i].freq=65535;
|
if (chan[i].freq>65535) chan[i].freq=65535;
|
||||||
chWrite(i,2,chan[i].freq&0xff);
|
chWrite(i,2,chan[i].freq&0xff);
|
||||||
chWrite(i,3,(chan[i].freq>>8)&0xff);
|
chWrite(i,3,(chan[i].freq>>8)&0xff);
|
||||||
|
|
|
@ -90,7 +90,7 @@ void DivPlatformZXBeeper::tick(bool sysTick) {
|
||||||
if (chan[i].std.pitch.had) {
|
if (chan[i].std.pitch.had) {
|
||||||
if (chan[i].std.pitch.mode) {
|
if (chan[i].std.pitch.mode) {
|
||||||
chan[i].pitch2+=chan[i].std.pitch.val;
|
chan[i].pitch2+=chan[i].std.pitch.val;
|
||||||
CLAMP_VAR(chan[i].pitch2,-32768,32767);
|
CLAMP_VAR(chan[i].pitch2,-65535,65535);
|
||||||
} else {
|
} else {
|
||||||
chan[i].pitch2=chan[i].std.pitch.val;
|
chan[i].pitch2=chan[i].std.pitch.val;
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,7 @@ void DivPlatformZXBeeper::tick(bool sysTick) {
|
||||||
if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) {
|
if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) {
|
||||||
if (chan[i].active) {
|
if (chan[i].active) {
|
||||||
chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,2,chan[i].pitch2,chipClock,CHIP_FREQBASE);
|
chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,2,chan[i].pitch2,chipClock,CHIP_FREQBASE);
|
||||||
|
if (chan[i].freq<0) chan[i].freq=0;
|
||||||
if (chan[i].freq>65535) chan[i].freq=65535;
|
if (chan[i].freq>65535) chan[i].freq=65535;
|
||||||
}
|
}
|
||||||
if (chan[i].keyOn) {
|
if (chan[i].keyOn) {
|
||||||
|
|
|
@ -63,6 +63,7 @@ const char* aboutLine[]={
|
||||||
"akumanatt",
|
"akumanatt",
|
||||||
"AmigaX",
|
"AmigaX",
|
||||||
"AURORA*FIELDS",
|
"AURORA*FIELDS",
|
||||||
|
"battybeats",
|
||||||
"BlueElectric05",
|
"BlueElectric05",
|
||||||
"breakthetargets",
|
"breakthetargets",
|
||||||
"brickblock369",
|
"brickblock369",
|
||||||
|
|
Loading…
Reference in New Issue