From 5378974b9603802a987ca0b3561ec2e7b5e6ffee Mon Sep 17 00:00:00 2001 From: Ian Karlsson Date: Fri, 27 May 2022 21:40:26 +0200 Subject: [PATCH 001/580] Save the size of each block in a Furnace module --- papers/format.md | 12 ++++++------ src/engine/fileOps.cpp | 26 +++++++++++++++++++++++++- src/engine/instrument.cpp | 8 ++++++++ src/engine/wavetable.cpp | 8 ++++++++ 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/papers/format.md b/papers/format.md index 013f2c5d..c06b99b9 100644 --- a/papers/format.md +++ b/papers/format.md @@ -130,7 +130,7 @@ size | description size | description -----|------------------------------------ 4 | "INFO" block ID - 4 | reserved + 4 | size of the block excluding the ID and this field 1 | time base (of first song) 1 | speed 1 (of first song) 1 | speed 2 (of first song) @@ -332,7 +332,7 @@ the way it's currently done is really weird, but it provides for some backwards size | description -----|------------------------------------ 4 | "SONG" block ID - 4 | reserved + 4 | size of the block excluding the ID and this field 1 | time base 1 | speed 1 1 | speed 2 @@ -386,7 +386,7 @@ notes: size | description -----|------------------------------------ 4 | "INST" block ID - 4 | reserved + 4 | size of the block excluding the ID and this field 2 | format version (see header) 1 | instrument type | - 0: standard @@ -795,7 +795,7 @@ size | description size | description -----|------------------------------------ 4 | "WAVE" block ID - 4 | reserved + 4 | size of the block excluding the ID and this field STR | wavetable name 4 | wavetable size 4 | wavetable min @@ -809,7 +809,7 @@ size | description size | description -----|------------------------------------ 4 | "SMPL" block ID - 4 | reserved + 4 | size of the block excluding the ID and this field STR | sample name 4 | length 4 | rate @@ -841,7 +841,7 @@ size | description size | description -----|------------------------------------ 4 | "PATR" block ID - 4 | reserved + 4 | size of the block excluding the ID and this field 2 | channel 2 | pattern index 2 | subsong (>=95) or reserved diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 637f7b24..7a4fb8f1 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2696,7 +2696,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { std::vector wavePtr; std::vector samplePtr; std::vector patPtr; - size_t ptrSeek, subSongPtrSeek; + size_t ptrSeek, subSongPtrSeek, blockStartSeek, blockEndSeek; size_t subSongIndex=0; DivSubSong* subSong=song.subsong[subSongIndex]; warnings=""; @@ -2775,6 +2775,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { /// SONG INFO w->write("INFO",4); + blockStartSeek=w->tell(); w->writeI(0); w->writeC(subSong->timeBase); @@ -2932,11 +2933,17 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeI(0); } + blockEndSeek=w->tell(); + w->seek(blockStartSeek,SEEK_SET); + w->writeI(blockEndSeek-blockStartSeek-4); + w->seek(0,SEEK_END); + /// SUBSONGS for (subSongIndex=1; subSongIndextell()); w->write("SONG",4); + blockStartSeek=w->tell(); w->writeI(0); w->writeC(subSong->timeBase); @@ -2979,6 +2986,11 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { for (int i=0; iwriteString(subSong->chanShortName[i],false); } + + blockEndSeek=w->tell(); + w->seek(blockStartSeek,SEEK_SET); + w->writeI(blockEndSeek-blockStartSeek-4); + w->seek(0,SEEK_END); } /// INSTRUMENT @@ -3000,6 +3012,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { DivSample* sample=song.sample[i]; samplePtr.push_back(w->tell()); w->write("SMPL",4); + blockStartSeek=w->tell(); w->writeI(0); w->writeString(sample->name,false); @@ -3012,6 +3025,11 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeI(sample->loopStart); w->write(sample->getCurBuf(),sample->getCurBufLen()); + + blockEndSeek=w->tell(); + w->seek(blockStartSeek,SEEK_SET); + w->writeI(blockEndSeek-blockStartSeek-4); + w->seek(0,SEEK_END); } /// PATTERN @@ -3019,6 +3037,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { DivPattern* pat=song.subsong[i.subsong]->pat[i.chan].getPattern(i.pat,false); patPtr.push_back(w->tell()); w->write("PATR",4); + blockStartSeek=w->tell(); w->writeI(0); w->writeS(i.chan); @@ -3036,6 +3055,11 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { } w->writeString(pat->name,false); + + blockEndSeek=w->tell(); + w->seek(blockStartSeek,SEEK_SET); + w->writeI(blockEndSeek-blockStartSeek-4); + w->seek(0,SEEK_END); } /// POINTERS diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 8b8a1fb0..8e32e1e8 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -24,7 +24,10 @@ #include "../fileutils.h" void DivInstrument::putInsData(SafeWriter* w) { + size_t blockStartSeek, blockEndSeek; + w->write("INST",4); + blockStartSeek=w->tell(); w->writeI(0); w->writeS(DIV_ENGINE_VERSION); @@ -520,6 +523,11 @@ void DivInstrument::putInsData(SafeWriter* w) { for (int j=0; j<23; j++) { // reserved w->writeC(0); } + + blockEndSeek=w->tell(); + w->seek(blockStartSeek,SEEK_SET); + w->writeI(blockEndSeek-blockStartSeek-4); + w->seek(0,SEEK_END); } DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { diff --git a/src/engine/wavetable.cpp b/src/engine/wavetable.cpp index db6c33b2..953400ee 100644 --- a/src/engine/wavetable.cpp +++ b/src/engine/wavetable.cpp @@ -24,7 +24,10 @@ #include "../fileutils.h" void DivWavetable::putWaveData(SafeWriter* w) { + size_t blockStartSeek, blockEndSeek; + w->write("WAVE",4); + blockStartSeek=w->tell(); w->writeI(0); w->writeC(0); // name @@ -34,6 +37,11 @@ void DivWavetable::putWaveData(SafeWriter* w) { for (int j=0; jwriteI(data[j]); } + + blockEndSeek=w->tell(); + w->seek(blockStartSeek,SEEK_SET); + w->writeI(blockEndSeek-blockStartSeek-4); + w->seek(0,SEEK_END); } DivDataErrors DivWavetable::readWaveData(SafeReader& reader, short version) { From e0e6a45000baa89f7bbe08a2d03883a29bc7c0cf Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 Jun 2022 19:04:52 +0900 Subject: [PATCH 002/580] Prepare for reducing duplicates for 4op FM related codes, Add and correct bunch of presets, Add various clock, type options for chips Prepare for reducing duplicates for 4op FM related codes Add and correct bunch of presets - mostly based on MAME source. - Neo Geo AES uses slightly difference clock for NTSC, PAL colorbust frequency. - Turbosound FM + SAA: Some Turbosound FM has additional SAA1099, for additional sound channel and Plays SAM coupe tune? - PC-98: - Sound Orchestra: OPN with hardpanned stereo, some model has with OPL family FM addons. V variation has Y8950 and supports ADPCM. - Sound Blaster 16 for PC-9800: This famous PC sound card is also exists for PC-98, with optional OPN PC-9801-26(K) compatibility on some models. - IBM PCjr: PC with SN PSG sound, but less popular than previous models, and compatible Tandy 1000. - Tandy 1000: PCjr and previous IBM PC compatible, also has SN PSG (later embedded in their ASIC, like Sega). - Hexion: One of konami's budget arcade hardware with SCC + MSM6295 sound system, like their amusement hardware in this era. - DJ Boy, Atari JSA IIIs, Skimaxx: How to panning sound or plays stereo sound on MSM6295 - just use MSM6295s per each output! - Air Buster: One of arcade hardware with OPN + MSM6295 sound system, Used this configuration is also some hardwares. - Tecmo system: One of arcade hardware with pretty unique sound system: OPL3, YMZ280B, MSM6295; first 2 entry is mostly used in music, last entry is mostly used in sound effect. - Sunsoft Shanghai 3: Predecessor of Sunsoft Arcade is using YM2149 rather than FM, MSM6295 is still there. - Atari Klax: example of arcade hardware sound system with single MSM6295 only. - Ikari warriors: This early SNK Triple-Z80 hardware uses 2 OPL1s and no ADPCM supports. - Coreland Cyber Tank: This rare arcade machine's stereo sound is like SB Pro, but it's actually produced in 2 Y8950s. - Data East MLC: Latest arcade hardware from Data East, with single YMZ280B for sound. - Kaneko Jackie Chan: Predecessor of Super Kaneko Nova System hardware, also with YMZ280B. - Super Kaneko Nova System: Latest arcade hardware from Kaneko, with single YMZ280B for sound. this announced 3D acceleration addon, but finally cancelled. - Toaplan 1: Home of Late 80-Early 90s Good ol' stuffs, Example of arcade sound system with single OPL2 - Namco Pac-Land: and this era, Namco start to change Custom 15 WSG to their Custom 30 WSG with featured RAM based waveform, and mailbox feature. - Namco System 1: One of latest usage of Custom 30 WSG, with OPM FM hardware and 8 bit DAC and Stereo output. Add various clock, type options for chips - SN7: Prepare to add 17 bit noise variation, Game gear stereo extentsion, NCR PSG variation (MAME core only for now) - OPN, OPNA: Add placeholder for prescaler option - OPL: Prepare for OPL3L, OPL4 downscaled output rate option --- extern/Nuked-PSG/ympsg.c | 9 +- extern/Nuked-PSG/ympsg.h | 5 +- src/engine/platform/arcade.cpp | 61 +- src/engine/platform/arcade.h | 19 +- src/engine/platform/ay.cpp | 100 +- src/engine/platform/ay.h | 8 + src/engine/platform/fmshared_OPM.h | 21 +- src/engine/platform/fmshared_OPN.h | 25 +- .../{genesisshared.h => fmsharedbase.h} | 65 +- src/engine/platform/genesis.cpp | 8 +- src/engine/platform/genesis.h | 15 +- src/engine/platform/genesisext.cpp | 4 - src/engine/platform/msm6258.h | 13 +- src/engine/platform/msm6295.cpp | 57 +- src/engine/platform/msm6295.h | 109 +-- src/engine/platform/opl.cpp | 102 +- src/engine/platform/opl.h | 6 +- src/engine/platform/scc.cpp | 27 +- src/engine/platform/scc.h | 1 + src/engine/platform/sms.cpp | 211 +++-- src/engine/platform/sms.h | 15 +- src/engine/platform/sound/sn76496.cpp | 83 +- src/engine/platform/sound/sn76496.h | 113 ++- src/engine/platform/tx81z.cpp | 36 +- src/engine/platform/tx81z.h | 19 +- src/engine/platform/ym2203.cpp | 57 +- src/engine/platform/ym2203.h | 23 +- src/engine/platform/ym2203ext.cpp | 5 +- src/engine/platform/ym2203shared.h | 45 - src/engine/platform/ym2608.cpp | 40 +- src/engine/platform/ym2608.h | 24 +- src/engine/platform/ym2608ext.cpp | 3 - src/engine/platform/ym2610.cpp | 43 +- src/engine/platform/ym2610.h | 26 +- src/engine/platform/ym2610b.cpp | 40 +- src/engine/platform/ym2610b.h | 17 +- src/engine/platform/ym2610bext.cpp | 3 - src/engine/platform/ym2610ext.cpp | 3 - src/engine/platform/ym2610shared.h | 45 - src/engine/platform/ymz280b.cpp | 44 +- src/engine/platform/ymz280b.h | 1 + src/engine/song.h | 124 ++- src/gui/insEdit.cpp | 7 +- src/gui/presets.cpp | 893 +++++++++++++++--- src/gui/sysConf.cpp | 352 ++++--- src/main.cpp | 1 + 46 files changed, 2027 insertions(+), 901 deletions(-) rename src/engine/platform/{genesisshared.h => fmsharedbase.h} (60%) delete mode 100644 src/engine/platform/ym2203shared.h delete mode 100644 src/engine/platform/ym2610shared.h diff --git a/extern/Nuked-PSG/ympsg.c b/extern/Nuked-PSG/ympsg.c index 3df4f8e3..935b43ea 100644 --- a/extern/Nuked-PSG/ympsg.c +++ b/extern/Nuked-PSG/ympsg.c @@ -130,7 +130,7 @@ static void YMPSG_ClockInternal1(ympsg_t *chip) else if (noise_of && !chip->noise_of) { noise_bit1 = (chip->noise >> chip->noise_tap2) & 1; - noise_bit2 = (chip->noise >> 12) & 1; + noise_bit2 = (chip->noise >> chip->noise_tap1) & 1; noise_bit1 ^= noise_bit2; noise_next = ((noise_bit1 && ((chip->noise_data >> 2) & 1)) || ((chip->noise & chip->noise_size) == 0)); chip->noise <<= 1; @@ -257,13 +257,14 @@ uint16_t YMPSG_Read(ympsg_t *chip) return data; } -void YMPSG_Init(ympsg_t *chip, uint8_t real_sn) +void YMPSG_Init(ympsg_t *chip, uint8_t real_sn, uint8_t noise_tap1, uint8_t noise_tap2, uint32_t noise_size) { uint32_t i; memset(chip, 0, sizeof(ympsg_t)); YMPSG_SetIC(chip, 1); - chip->noise_tap2 = real_sn ? 13 : 15; - chip->noise_size = real_sn ? 16383 : 32767; + chip->noise_tap1 = noise_tap1; + chip->noise_tap2 = noise_tap2; + chip->noise_size = noise_size; for (i = 0; i < 17; i++) { chip->vol_table[i]=(real_sn?tipsg_vol[i]:ympsg_vol[i]) * 8192.0f; diff --git a/extern/Nuked-PSG/ympsg.h b/extern/Nuked-PSG/ympsg.h index c00b3d72..97e039e3 100644 --- a/extern/Nuked-PSG/ympsg.h +++ b/extern/Nuked-PSG/ympsg.h @@ -46,8 +46,9 @@ typedef struct { uint8_t sign_l; uint8_t noise_sign_l; uint16_t noise; + uint8_t noise_tap1; uint8_t noise_tap2; - uint16_t noise_size; + uint32_t noise_size; uint8_t test; uint8_t volume_out[4]; @@ -68,7 +69,7 @@ typedef struct { void YMPSG_Write(ympsg_t *chip, uint8_t data); uint16_t YMPSG_Read(ympsg_t *chip); -void YMPSG_Init(ympsg_t *chip, uint8_t real_sn); +void YMPSG_Init(ympsg_t *chip, uint8_t real_sn, uint8_t noise_tap1, uint8_t noise_tap2, uint32_t noise_size); void YMPSG_SetIC(ympsg_t *chip, uint32_t ic); void YMPSG_Clock(ympsg_t *chip); int YMPSG_GetOutput(ympsg_t *chip); diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 56446725..f6fa7d70 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -22,38 +22,6 @@ #include #include -#include "fmshared_OPM.h" - -static unsigned short chanOffs[8]={ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 -}; -static unsigned short opOffs[4]={ - 0x00, 0x08, 0x10, 0x18 -}; -static bool isOutput[8][4]={ - // 1 3 2 4 - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,true ,true}, - {false,true ,true ,true}, - {false,true ,true ,true}, - {true ,true ,true ,true}, -}; -static unsigned char dtTable[8]={ - 7,6,5,0,1,2,3,4 -}; - -static int orderedOps[4]={ - 0,2,1,3 -}; - -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } - -#define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0) - const char* regCheatSheetOPM[]={ "Test", "00", "NoteCtl", "08", @@ -198,7 +166,7 @@ void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, si OPM_Write(&fm,1,w.val); regPool[w.addr&0xff]=w.val; //printf("write: %x = %.2x\n",w.addr,w.val); - writes.pop(); + writes.pop_front(); } else { OPM_Write(&fm,0,w.addr); w.addrOrVal=true; @@ -239,7 +207,7 @@ void DivPlatformArcade::acquire_ymfm(short* bufL, short* bufR, size_t start, siz fm_ymfm->write(0x0+((w.addr>>8)<<1),w.addr); fm_ymfm->write(0x1+((w.addr>>8)<<1),w.val); regPool[w.addr&0xff]=w.val; - writes.pop(); + writes.pop_front(); delay=1; } } @@ -934,7 +902,7 @@ void DivPlatformArcade::poke(std::vector& wlist) { } void DivPlatformArcade::reset() { - while (!writes.empty()) writes.pop(); + while (!writes.empty()) writes.pop_front(); memset(regPool,0,256); if (useYMFM) { fm_ymfm->reset(); @@ -974,15 +942,20 @@ void DivPlatformArcade::reset() { } void DivPlatformArcade::setFlags(unsigned int flags) { - if (flags==2) { - chipClock=4000000.0; - baseFreqOff=-122; - } else if (flags==1) { - chipClock=COLOR_PAL*4.0/5.0; - baseFreqOff=12; - } else { - chipClock=COLOR_NTSC; - baseFreqOff=0; + switch (flags&0xff) { + default: + case 0: + chipClock=COLOR_NTSC; + baseFreqOff=0; + break; + case 1: + chipClock=COLOR_PAL*4.0/5.0; + baseFreqOff=12; + break; + case 2: + chipClock=4000000.0; + baseFreqOff=-122; + break; } rate=chipClock/64; for (int i=0; i<8; i++) { diff --git a/src/engine/platform/arcade.h b/src/engine/platform/arcade.h index 6f68eeda..9d0e3968 100644 --- a/src/engine/platform/arcade.h +++ b/src/engine/platform/arcade.h @@ -20,18 +20,23 @@ #ifndef _ARCADE_H #define _ARCADE_H #include "../dispatch.h" +#include "../macroInt.h" #include "../instrument.h" #include #include "../../../extern/opm/opm.h" #include "sound/ymfm/ymfm_opm.h" -#include "../macroInt.h" +#include "fmshared_OPM.h" class DivArcadeInterface: public ymfm::ymfm_interface { }; -class DivPlatformArcade: public DivDispatch { +class DivPlatformArcade: public DivDispatch, public DivPlatformOPMBase { protected: + const unsigned short chanOffs[8]={ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 + }; + struct Channel { DivInstrumentFM state; DivMacroInt std; @@ -71,17 +76,9 @@ class DivPlatformArcade: public DivDispatch { }; Channel chan[8]; DivDispatchOscBuffer* oscBuf[8]; - struct QueuedWrite { - unsigned short addr; - unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} - }; - std::queue writes; opm_t fm; - int delay, baseFreqOff; + int baseFreqOff; int pcmL, pcmR, pcmCycles; - unsigned char lastBusy; unsigned char amDepth, pmDepth; ymfm::ym2151* fm_ymfm; diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index a3d325ad..2f2b20c5 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -27,7 +27,7 @@ #define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} #define immWrite(a,v) if (!skipRegisterWrites) {writes.emplace(regRemap(a),v); if (dumpWrites) {addWrite(regRemap(a),v);} } -#define CHIP_DIVIDER ((sunsoft||clockSel)?16:8) +#define CHIP_DIVIDER (extMode?extDiv:((sunsoft||clockSel)?16:8)) const char* regCheatSheetAY[]={ "FreqL_A", "0", @@ -561,8 +561,6 @@ void DivPlatformAY8910::reset() { delay=0; - extMode=false; - ioPortA=false; ioPortB=false; portAVal=0; @@ -592,49 +590,61 @@ void DivPlatformAY8910::poke(std::vector& wlist) { } void DivPlatformAY8910::setFlags(unsigned int flags) { - clockSel=(flags>>7)&1; - switch (flags&15) { - case 1: - chipClock=COLOR_PAL*2.0/5.0; - break; - case 2: - chipClock=1750000; - break; - case 3: - chipClock=2000000; - break; - case 4: - chipClock=1500000; - break; - case 5: - chipClock=1000000; - break; - case 6: - chipClock=COLOR_NTSC/4.0; - break; - case 7: - chipClock=COLOR_PAL*3.0/8.0; - break; - case 8: - chipClock=COLOR_PAL*3.0/16.0; - break; - case 9: - chipClock=COLOR_PAL/4.0; - break; - case 10: - chipClock=2097152; - break; - case 11: - chipClock=COLOR_NTSC; - break; - case 12: - chipClock=3600000; - break; - default: - chipClock=COLOR_NTSC/2.0; - break; + if (extMode) { + chipClock=extClock; + rate=chipClock/extDiv; + } else { + clockSel=(flags>>7)&1; + switch (flags&15) { + default: + case 0: + chipClock=COLOR_NTSC/2.0; + break; + case 1: + chipClock=COLOR_PAL*2.0/5.0; + break; + case 2: + chipClock=1750000; + break; + case 3: + chipClock=2000000; + break; + case 4: + chipClock=1500000; + break; + case 5: + chipClock=1000000; + break; + case 6: + chipClock=COLOR_NTSC/4.0; + break; + case 7: + chipClock=COLOR_PAL*3.0/8.0; + break; + case 8: + chipClock=COLOR_PAL*3.0/16.0; + break; + case 9: + chipClock=COLOR_PAL/4.0; + break; + case 10: + chipClock=2097152; + break; + case 11: + chipClock=COLOR_NTSC; + break; + case 12: + chipClock=3600000; + break; + case 13: + chipClock=20000000/16; + break; + case 14: + chipClock=1536000; + break; + } + rate=chipClock/8; } - rate=chipClock/8; for (int i=0; i<3; i++) { oscBuf[i]->rate=rate; } diff --git a/src/engine/platform/ay.h b/src/engine/platform/ay.h index f93d34bd..8ff5f39c 100644 --- a/src/engine/platform/ay.h +++ b/src/engine/platform/ay.h @@ -70,6 +70,9 @@ class DivPlatformAY8910: public DivDispatch { int delay; bool extMode; + unsigned int extClock; + unsigned char extDiv; + bool stereo, sunsoft, intellivision, clockSel; bool ioPortA, ioPortB; unsigned char portAVal, portBVal; @@ -110,5 +113,10 @@ class DivPlatformAY8910: public DivDispatch { const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); + DivPlatformAY8910(bool useExtMode=false, unsigned int eclk=COLOR_NTSC, unsigned char ediv=8): + DivDispatch(), + extMode(useExtMode), + extClock(eclk), + extDiv(ediv) {} }; #endif diff --git a/src/engine/platform/fmshared_OPM.h b/src/engine/platform/fmshared_OPM.h index 0ab05344..ed5f63dd 100644 --- a/src/engine/platform/fmshared_OPM.h +++ b/src/engine/platform/fmshared_OPM.h @@ -17,6 +17,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#ifndef _FMSHARED_OPM_H +#define _FMSHARED_OPM_H + +#include "fmsharedbase.h" + #define ADDR_MULT_DT 0x40 #define ADDR_TL 0x60 #define ADDR_RS_AR 0x80 @@ -26,4 +31,18 @@ #define ADDR_NOTE 0x28 #define ADDR_KF 0x30 #define ADDR_FMS_AMS 0x38 -#define ADDR_LR_FB_ALG 0x20 \ No newline at end of file +#define ADDR_LR_FB_ALG 0x20 + +#define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0) + +class DivPlatformOPMBase: public DivPlatformFMBase { + protected: + const unsigned short opOffs[4]={ + 0x00, 0x08, 0x10, 0x18 + }; + + DivPlatformOPMBase(): + DivPlatformFMBase() {} +}; + +#endif diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index a709aa1a..6e5426b5 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -20,6 +20,8 @@ #ifndef _FMSHARED_OPN_H #define _FMSHARED_OPN_H +#include "fmsharedbase.h" + #define ADDR_MULT_DT 0x30 #define ADDR_TL 0x40 #define ADDR_RS_AR 0x50 @@ -32,6 +34,9 @@ #define ADDR_FB_ALG 0xb0 #define ADDR_LRAF 0xb4 +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + #define PLEASE_HELP_ME(_targetChan) \ int boundaryBottom=parent->calcBaseFreq(chipClock,CHIP_FREQBASE,0,false); \ int boundaryTop=parent->calcBaseFreq(chipClock,CHIP_FREQBASE,12,false); \ @@ -93,4 +98,22 @@ return 2; \ } -#endif \ No newline at end of file +class DivPlatformOPNBase: public DivPlatformFMBase { + protected: + const unsigned short opOffs[4]={ + 0x00, 0x04, 0x08, 0x0c + }; + + const double fmFreqBase; + const double fmDivBase; + const unsigned char ayDiv; + + DivPlatformOPNBase(double f=9440540.0, double d=72, unsigned char a=32): + DivPlatformFMBase(), + fmFreqBase(f), + fmDivBase(d), + ayDiv(a) {} + +}; + +#endif diff --git a/src/engine/platform/genesisshared.h b/src/engine/platform/fmsharedbase.h similarity index 60% rename from src/engine/platform/genesisshared.h rename to src/engine/platform/fmsharedbase.h index d58d339e..a3b0e634 100644 --- a/src/engine/platform/genesisshared.h +++ b/src/engine/platform/fmsharedbase.h @@ -17,30 +17,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -static unsigned short chanOffs[6]={ - 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 -}; -static unsigned short opOffs[4]={ - 0x00, 0x04, 0x08, 0x0c -}; -static bool isOutput[8][4]={ - // 1 3 2 4 - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,true ,true}, - {false,true ,true ,true}, - {false,true ,true ,true}, - {true ,true ,true ,true}, -}; -static unsigned char dtTable[8]={ - 7,6,5,0,1,2,3,4 -}; +#ifndef _FMSHARED_BASE_H +#define _FMSHARED_BASE_H -static int orderedOps[4]={ - 0,2,1,3 -}; +#include #define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} #define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } @@ -57,4 +37,41 @@ static int orderedOps[4]={ } \ } -#include "fmshared_OPN.h" +class DivPlatformFMBase { + protected: + const bool isOutput[8][4]={ + // 1 3 2 4 + {false,false,false,true}, + {false,false,false,true}, + {false,false,false,true}, + {false,false,false,true}, + {false,false,true ,true}, + {false,true ,true ,true}, + {false,true ,true ,true}, + {true ,true ,true ,true}, + }; + const unsigned char dtTable[8]={ + 7,6,5,0,1,2,3,4 + }; + + const int orderedOps[4]={ + 0,2,1,3 + }; + + struct QueuedWrite { + unsigned short addr; + unsigned char val; + bool addrOrVal; + QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} + }; + std::deque writes; + + unsigned char lastBusy; + int delay; + + DivPlatformFMBase(): + lastBusy(0), + delay(0) {} +}; + +#endif diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 6cba30dd..a832bab4 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -22,13 +22,10 @@ #include #include -#include "genesisshared.h" - static unsigned char konOffs[6]={ 0, 1, 2, 4, 5, 6 }; -#define CHIP_FREQBASE 9440540 const char* DivPlatformGenesis::getEffectName(unsigned char effect) { switch (effect) { @@ -1169,12 +1166,13 @@ void DivPlatformGenesis::setSoftPCM(bool value) { } void DivPlatformGenesis::setFlags(unsigned int flags) { - switch (flags) { + switch (flags&(~0x80000000)) { + default: + case 0: chipClock=COLOR_NTSC*15.0/7.0; break; case 1: chipClock=COLOR_PAL*12.0/7.0; break; case 2: chipClock=8000000.0; break; case 3: chipClock=COLOR_NTSC*12.0/7.0; break; case 4: chipClock=COLOR_NTSC*9.0/4.0; break; - default: chipClock=COLOR_NTSC*15.0/7.0; break; } ladder=flags&0x80000000; OPN2_SetChipType(ladder?ym3438_mode_ym2612:0); diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index b4862427..71493fa5 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -20,18 +20,22 @@ #ifndef _GENESIS_H #define _GENESIS_H #include "../dispatch.h" -#include +#include "../macroInt.h" #include "../../../extern/Nuked-OPN2/ym3438.h" #include "sound/ymfm/ymfm_opn.h" -#include "sms.h" +#include "fmshared_OPN.h" class DivYM2612Interface: public ymfm::ymfm_interface { }; -class DivPlatformGenesis: public DivDispatch { +class DivPlatformGenesis: public DivDispatch, public DivPlatformOPNBase { protected: + const unsigned short chanOffs[6]={ + 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 + }; + struct Channel { DivInstrumentFM state; DivMacroInt std; @@ -98,8 +102,6 @@ class DivPlatformGenesis: public DivDispatch { }; std::deque writes; ym3438_t fm; - int delay; - unsigned char lastBusy; ymfm::ym2612* fm_ymfm; ymfm::ym2612::output_data out_ymfm; @@ -150,6 +152,9 @@ class DivPlatformGenesis: public DivDispatch { const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); + DivPlatformGenesis(): + DivDispatch(), + DivPlatformOPNBase(9440540.0, 72, 32) {} ~DivPlatformGenesis(); }; #endif diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index cc4abc88..76837f64 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -21,10 +21,6 @@ #include "../engine.h" #include -#include "genesisshared.h" - -#define CHIP_FREQBASE 9440540 - int DivPlatformGenesisExt::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformGenesis::dispatch(c); diff --git a/src/engine/platform/msm6258.h b/src/engine/platform/msm6258.h index ea0482f3..3a05bcf8 100644 --- a/src/engine/platform/msm6258.h +++ b/src/engine/platform/msm6258.h @@ -26,10 +26,6 @@ class DivPlatformMSM6258: public DivDispatch { protected: - const unsigned short chanOffs[6]={ - 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 - }; - struct Channel { unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; @@ -77,12 +73,10 @@ class DivPlatformMSM6258: public DivDispatch { struct QueuedWrite { unsigned short addr; unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} + QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v) {} }; std::queue writes; okim6258_device* msm; - unsigned char regPool[512]; unsigned char lastBusy; unsigned char* adpcmMem; @@ -91,11 +85,6 @@ class DivPlatformMSM6258: public DivDispatch { int delay, updateOsc, sample, samplePos; - bool extMode; - - short oldWrites[512]; - short pendingWrites[512]; - friend void putDispatchChan(void*,int,int); public: diff --git a/src/engine/platform/msm6295.cpp b/src/engine/platform/msm6295.cpp index 541dded6..0d88d35d 100644 --- a/src/engine/platform/msm6295.cpp +++ b/src/engine/platform/msm6295.cpp @@ -24,6 +24,7 @@ #include #define rWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } +#define rWriteDelay(a,v,d) if (!skipRegisterWrites) {writes.emplace(a,v,d); if (dumpWrites) {addWrite(a,v);} } const char** DivPlatformMSM6295::getRegisterSheet() { return NULL; @@ -38,8 +39,11 @@ const char* DivPlatformMSM6295::getEffectName(unsigned char effect) { return NULL; } -u8 DivMSM6295Interface::read_byte(u32 address) { - return adpcmMem[address&0xffff]; +u8 DivPlatformMSM6295::read_byte(u32 address) { + if (adpcmMem==NULL || address>=getSampleMemCapacity(0)) { + return 0; + } + return adpcmMem[address&0x3ffff]; } void DivPlatformMSM6295::acquire(short* bufL, short* bufR, size_t start, size_t len) { @@ -49,7 +53,7 @@ void DivPlatformMSM6295::acquire(short* bufL, short* bufR, size_t start, size_t QueuedWrite& w=writes.front(); switch (w.addr) { case 0: // command - msm->command_w(w.val); + msm.command_w(w.val); break; case 8: // chip clock select (VGM) case 9: @@ -57,7 +61,7 @@ void DivPlatformMSM6295::acquire(short* bufL, short* bufR, size_t start, size_t case 11: break; case 12: // rate select - msm->ss_w(!w.val); + msm.ss_w(!w.val); break; case 14: // enable bankswitch break; @@ -70,21 +74,21 @@ void DivPlatformMSM6295::acquire(short* bufL, short* bufR, size_t start, size_t break; } writes.pop(); - delay=32; + delay=w.delay; } } else { delay--; } - msm->tick(); + msm.tick(); - bufL[h]=msm->out()<<4; + bufL[h]=msm.out()<<4; if (++updateOsc>=22) { updateOsc=0; // TODO: per-channel osc for (int i=0; i<4; i++) { - oscBuf[i]->data[oscBuf[i]->needle++]=msm->m_voice[i].m_muted?0:(msm->m_voice[i].m_out<<6); + oscBuf[i]->data[oscBuf[i]->needle++]=msm.m_voice[i].m_muted?0:(msm.m_voice[i].m_out<<6); } } } @@ -118,7 +122,7 @@ int DivPlatformMSM6295::dispatch(DivCommand c) { } chan[c.chan].active=true; chan[c.chan].keyOn=true; - rWrite(0,(8<getSample(12*sampleBank+c.value%12); chan[c.chan].sample=12*sampleBank+c.value%12; - rWrite(0,(8<(parent->song.sample.size()/12)) { sampleBank=parent->song.sample.size()/12; } - iface.sampleBank=sampleBank; break; case DIV_CMD_LEGATO: { break; @@ -212,7 +215,7 @@ int DivPlatformMSM6295::dispatch(DivCommand c) { void DivPlatformMSM6295::muteChannel(int ch, bool mute) { isMuted[ch]=mute; - msm->m_voice[ch].m_muted=mute; + msm.m_voice[ch].m_muted=mute; } void DivPlatformMSM6295::forceIns() { @@ -249,8 +252,8 @@ void DivPlatformMSM6295::poke(std::vector& wlist) { void DivPlatformMSM6295::reset() { while (!writes.empty()) writes.pop(); - msm->reset(); - msm->ss_w(false); + msm.reset(); + msm.ss_w(rateSelInit); if (dumpWrites) { addWrite(0xffffffff,0); } @@ -264,7 +267,8 @@ void DivPlatformMSM6295::reset() { } sampleBank=0; - rateSel=false; + rateSel=rateSelInit; + rWrite(12,!rateSelInit); delay=0; } @@ -339,7 +343,9 @@ void DivPlatformMSM6295::renderSamples() { } void DivPlatformMSM6295::setFlags(unsigned int flags) { - switch (flags) { + rateSelInit=(flags>>7)&1; + switch (flags&0x7f) { + default: case 0: chipClock=4000000/4; break; @@ -379,8 +385,11 @@ void DivPlatformMSM6295::setFlags(unsigned int flags) { case 12: chipClock=1500000; break; - default: - chipClock=4000000/4; + case 13: + chipClock=3000000; + break; + case 14: + chipClock=COLOR_NTSC/3.0; break; } rate=chipClock/3; @@ -388,14 +397,16 @@ void DivPlatformMSM6295::setFlags(unsigned int flags) { isMuted[i]=false; oscBuf[i]->rate=rate/22; } + if (rateSel!=rateSelInit) { + rWrite(12,!rateSelInit); + rateSel=rateSelInit; + } } int DivPlatformMSM6295::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { parent=p; adpcmMem=new unsigned char[getSampleMemCapacity(0)]; adpcmMemLen=0; - iface.adpcmMem=adpcmMem; - iface.sampleBank=0; dumpWrites=false; skipRegisterWrites=false; updateOsc=0; @@ -403,7 +414,6 @@ int DivPlatformMSM6295::init(DivEngine* p, int channels, int sugRate, unsigned i isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - msm=new msm6295_core(iface); setFlags(flags); reset(); return 4; @@ -413,7 +423,6 @@ void DivPlatformMSM6295::quit() { for (int i=0; i<4; i++) { delete oscBuf[i]; } - delete msm; delete[] adpcmMem; } diff --git a/src/engine/platform/msm6295.h b/src/engine/platform/msm6295.h index 2930a169..463384f1 100644 --- a/src/engine/platform/msm6295.h +++ b/src/engine/platform/msm6295.h @@ -24,60 +24,31 @@ #include #include "sound/oki/msm6295.hpp" -class DivMSM6295Interface: public vgsound_emu_mem_intf { - public: - unsigned char* adpcmMem; - int sampleBank; - u8 read_byte(u32 address); - DivMSM6295Interface(): adpcmMem(NULL), sampleBank(0) {} -}; - -class DivPlatformMSM6295: public DivDispatch { +class DivPlatformMSM6295: public DivDispatch, public vgsound_emu_mem_intf { protected: - const unsigned short chanOffs[6]={ - 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 - }; - struct Channel { - unsigned char freqH, freqL; - int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; - unsigned char psgMode, autoEnvNum, autoEnvDen; + int note, ins; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; + bool active, insChanged, freqChanged, keyOn, keyOff, furnacePCM, hardReset; int vol, outVol; int sample; - unsigned char pan; DivMacroInt std; void macroInit(DivInstrument* which) { std.init(which); - pitch2=0; } Channel(): - freqH(0), - freqL(0), - freq(0), - baseFreq(0), - pitch(0), - pitch2(0), - portaPauseFreq(0), note(0), ins(-1), - psgMode(1), - autoEnvNum(0), - autoEnvDen(0), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), - portaPause(false), - inPorta(false), furnacePCM(false), hardReset(false), vol(0), outVol(15), - sample(-1), - pan(3) {} + sample(-1) {} }; Channel chan[4]; DivDispatchOscBuffer* oscBuf[4]; @@ -85,56 +56,58 @@ class DivPlatformMSM6295: public DivDispatch { struct QueuedWrite { unsigned short addr; unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} + unsigned short delay; + QueuedWrite(unsigned short a, unsigned char v, unsigned short d=32): + addr(a), + val(v), + delay(d) {} }; std::queue writes; - msm6295_core* msm; - unsigned char regPool[512]; + msm6295_core msm; unsigned char lastBusy; unsigned char* adpcmMem; size_t adpcmMemLen; - DivMSM6295Interface iface; unsigned char sampleBank; int delay, updateOsc; - bool extMode; - bool rateSel; + bool rateSel=false, rateSelInit=false; - short oldWrites[512]; - short pendingWrites[512]; - friend void putDispatchChan(void*,int,int); public: - void acquire(short* bufL, short* bufR, size_t start, size_t len); - int dispatch(DivCommand c); - void* getChanState(int chan); - DivDispatchOscBuffer* getOscBuffer(int chan); - unsigned char* getRegisterPool(); - int getRegisterPoolSize(); - void reset(); - void forceIns(); - void tick(bool sysTick=true); - void muteChannel(int ch, bool mute); - bool keyOffAffectsArp(int ch); - float getPostAmp(); - void notifyInsChange(int ins); - void notifyInsDeletion(void* ins); - void poke(unsigned int addr, unsigned short val); - void poke(std::vector& wlist); - void setFlags(unsigned int flags); - const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); - const void* getSampleMem(int index); - size_t getSampleMemCapacity(int index); - size_t getSampleMemUsage(int index); - void renderSamples(); + virtual u8 read_byte(u32 address) override; + virtual void acquire(short* bufL, short* bufR, size_t start, size_t len) override; + virtual int dispatch(DivCommand c) override; + virtual void* getChanState(int chan) override; + virtual DivDispatchOscBuffer* getOscBuffer(int chan) override; + virtual unsigned char* getRegisterPool() override; + virtual int getRegisterPoolSize() override; + virtual void reset() override; + virtual void forceIns() override; + virtual void tick(bool sysTick=true) override; + virtual void muteChannel(int ch, bool mute) override; + virtual bool keyOffAffectsArp(int ch) override; + virtual float getPostAmp() override; + virtual void notifyInsChange(int ins) override; + virtual void notifyInsDeletion(void* ins) override; + virtual void poke(unsigned int addr, unsigned short val) override; + virtual void poke(std::vector& wlist) override; + virtual void setFlags(unsigned int flags) override; + virtual const char** getRegisterSheet() override; + virtual const char* getEffectName(unsigned char effect) override; + virtual const void* getSampleMem(int index) override; + virtual size_t getSampleMemCapacity(int index) override; + virtual size_t getSampleMemUsage(int index) override; + virtual void renderSamples() override; - int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); - void quit(); + virtual int init(DivEngine* parent, int channels, int sugRate, unsigned int flags) override; + virtual void quit() override; + DivPlatformMSM6295(): + DivDispatch(), + vgsound_emu_mem_intf(), + msm(*this) {} ~DivPlatformMSM6295(); }; #endif diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index c8d72829..a40f4114 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -277,8 +277,13 @@ void DivPlatformOPL::acquire_nuked(short* bufL, short* bufR, size_t start, size_ regPool[w.addr&511]=w.val; writes.pop(); } - - OPL3_Generate(&fm,o); os[0]+=o[0]; os[1]+=o[1]; + + if (downsample) { + OPL3_GenerateResampled(&fm,o); + } else { + OPL3_Generate(&fm,o); + } + os[0]+=o[0]; os[1]+=o[1]; if (adpcmChan>=0) { adpcmB->clock(); @@ -778,7 +783,7 @@ int DivPlatformOPL::dispatch(DivCommand c) { immWrite(11,(end>>2)&0xff); immWrite(12,(end>>10)&0xff); immWrite(7,(s->loopStart>=0)?0xb0:0xa0); // start/repeat - int freq=(65536.0*(double)s->rate)/(double)rate; + int freq=(65536.0*(double)s->rate)/(double)chipRateBase; immWrite(16,freq&0xff); immWrite(17,(freq>>8)&0xff); } @@ -1504,7 +1509,12 @@ void DivPlatformOPL::reset() { fm_ymfm->reset(); } */ - OPL3_Reset(&fm,rate); + if (downsample) { + const unsigned int downsampledRate=(unsigned int)(49716.0*(double(rate)/chipRateBase)); + OPL3_Reset(&fm,downsampledRate); + } else { + OPL3_Reset(&fm,rate); + } if (dumpWrites) { addWrite(0xffffffff,0); } @@ -1621,6 +1631,7 @@ void DivPlatformOPL::setYMFM(bool use) { void DivPlatformOPL::setOPLType(int type, bool drums) { pretendYMU=false; + downsample=false; adpcmChan=-1; switch (type) { case 1: case 2: case 8950: @@ -1650,10 +1661,13 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { if (type==759) { pretendYMU=true; adpcmChan=16; + } else if (type==4) { + downsample=true; } break; } - if (type==759) { + chipType=type; + if (type==759 || type==4) { oplType=3; } else if (type==8950) { oplType=1; @@ -1688,17 +1702,73 @@ void DivPlatformOPL::setFlags(unsigned int flags) { rate=chipClock/36; }*/ - if (oplType==3) { - chipClock=COLOR_NTSC*4.0; - rate=chipClock/288; - } else { - chipClock=COLOR_NTSC; - rate=chipClock/72; - } - - if (pretendYMU) { - rate=48000; - chipClock=rate*288; + switch (chipType) { + default: + case 1: case 2: case 8950: + switch (flags&0xff) { + case 0x00: + chipClock=COLOR_NTSC; + break; + case 0x01: + chipClock=COLOR_PAL*4.0/5.0; + break; + case 0x02: + chipClock=4000000.0; + break; + case 0x03: + chipClock=3000000.0; + break; + case 0x04: + chipClock=31948800/8; + break; + case 0x05: + chipClock=3500000.0; + break; + } + rate=chipClock/72; + chipRateBase=double(rate); + break; + case 3: + switch (flags&0xff) { + case 0x00: + chipClock=COLOR_NTSC*4.0; + break; + case 0x01: + chipClock=COLOR_PAL*16.0/5.0; + break; + case 0x02: + chipClock=14000000.0; + break; + case 0x03: + chipClock=16000000.0; + break; + case 0x04: + chipClock=15000000.0; + break; + } + rate=chipClock/288; + chipRateBase=double(rate); + break; + case 4: + switch (flags&0xff) { + case 0x02: + chipClock=33868800.0; + break; + case 0x00: + chipClock=COLOR_NTSC*8.0; + break; + case 0x01: + chipClock=COLOR_PAL*32.0/5.0; + break; + } + chipRateBase=double(chipClock)/684.0; + rate=chipClock/768; + break; + case 759: + rate=48000; + chipRateBase=double(rate); + chipClock=rate*288; + break; } for (int i=0; i<18; i++) { diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index 61ea4648..9d2d1774 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -95,8 +95,8 @@ class DivPlatformOPL: public DivDispatch { const unsigned char** slots; const unsigned short* chanMap; const unsigned char* outChanMap; - double chipFreqBase; - int delay, oplType, chans, melodicChans, totalChans, adpcmChan, sampleBank; + double chipFreqBase, chipRateBase; + int delay, chipType, oplType, chans, melodicChans, totalChans, adpcmChan, sampleBank; unsigned char lastBusy; unsigned char drumState; unsigned char drumVol[5]; @@ -107,7 +107,7 @@ class DivPlatformOPL: public DivDispatch { unsigned char lfoValue; - bool useYMFM, update4OpMask, pretendYMU; + bool useYMFM, update4OpMask, pretendYMU, downsample; short oldWrites[512]; short pendingWrites[512]; diff --git a/src/engine/platform/scc.cpp b/src/engine/platform/scc.cpp index 2ab6f1aa..1b70d956 100644 --- a/src/engine/platform/scc.cpp +++ b/src/engine/platform/scc.cpp @@ -373,6 +373,27 @@ void DivPlatformSCC::setChipModel(bool isplus) { isPlus=isplus; } +void DivPlatformSCC::setFlags(unsigned int flags) { + switch (flags&0x7f) { + case 0x00: + chipClock=COLOR_NTSC/2.0; + break; + case 0x01: + chipClock=COLOR_PAL*2.0/5.0; + break; + case 0x02: + chipClock=3000000.0/2.0; + break; + case 0x03: + chipClock=4000000.0/2.0; + break; + } + rate=chipClock/8; + for (int i=0; i<5; i++) { + oscBuf[i]->rate=rate; + } +} + int DivPlatformSCC::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { parent=p; dumpWrites=false; @@ -382,11 +403,7 @@ int DivPlatformSCC::init(DivEngine* p, int channels, int sugRate, unsigned int f isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - chipClock=COLOR_NTSC/2.0; - rate=chipClock/8; - for (int i=0; i<5; i++) { - oscBuf[i]->rate=rate; - } + setFlags(flags); if (isPlus) { scc=new k052539_scc_core; regBase=0xa0; diff --git a/src/engine/platform/scc.h b/src/engine/platform/scc.h index df6ef84e..d83e0293 100644 --- a/src/engine/platform/scc.h +++ b/src/engine/platform/scc.h @@ -84,6 +84,7 @@ class DivPlatformSCC: public DivDispatch { void poke(std::vector& wlist); const char** getRegisterSheet(); const char* getEffectName(unsigned char effect); + void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void setChipModel(bool isPlus); void quit(); diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index c5cf1091..c83108a6 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -21,15 +21,21 @@ #include "../engine.h" #include -#define rWrite(v) {if (!skipRegisterWrites) {writes.push(v); if (dumpWrites) {addWrite(0x200,v);}}} +#define rWrite(a,v) {if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(0x200+a,v);}}} const char* regCheatSheetSN[]={ "DATA", "0", NULL }; +const char* regCheatSheetGG[]={ + "DATA", "0", + "Stereo", "1", + NULL +}; + const char** DivPlatformSMS::getRegisterSheet() { - return regCheatSheetSN; + return isStereo()?regCheatSheetGG:regCheatSheetSN; } const char* DivPlatformSMS::getEffectName(unsigned char effect) { @@ -45,8 +51,8 @@ void DivPlatformSMS::acquire_nuked(short* bufL, short* bufR, size_t start, size_ int o=0; for (size_t h=start; hwrite(w); + QueuedWrite w=writes.front(); + if (stereo && (w.addr&1)) + sn->stereo_w(w.val); + else + sn->write(w.val); writes.pop(); } + sn->sound_stream_update(snBuf,len); + if (stereo) { + for (size_t i=0; isound_stream_update(bufL+h,1); for (int i=0; i<4; i++) { if (isMuted[i]) { oscBuf[i]->data[oscBuf[i]->needle++]=0; @@ -106,23 +133,17 @@ void DivPlatformSMS::acquire(short* bufL, short* bufR, size_t start, size_t len) } } -int DivPlatformSMS::acquireOne() { - short v; - sn->sound_stream_update(&v,1); - return v; -} - void DivPlatformSMS::tick(bool sysTick) { for (int i=0; i<4; i++) { int CHIP_DIVIDER=64; - if (i==3 && isRealSN) CHIP_DIVIDER=60; + if (i==3) CHIP_DIVIDER=noiseDivider; chan[i].std.next(); if (chan[i].std.vol.had) { chan[i].outVol=MIN(15,chan[i].std.vol.val)-(15-(chan[i].vol&15)); if (chan[i].outVol<0) chan[i].outVol=0; // old formula // ((chan[i].vol&15)*MIN(15,chan[i].std.vol.val))>>4; - rWrite(0x90|(i<<5)|(isMuted[i]?15:(15-(chan[i].outVol&15)))); + rWrite(0,0x90|(i<<5)|(isMuted[i]?15:(15-(chan[i].outVol&15)))); } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { @@ -161,6 +182,13 @@ void DivPlatformSMS::tick(bool sysTick) { } } } + if (isStereo()) { + if (chan[i].std.panL.had) { + lastPan&=~(0x11<>1)&1)<1023) chan[i].freq=1023; if (chan[i].freq<8) chan[i].freq=1; //if (chan[i].actualNote>0x5d) chan[i].freq=0x01; - rWrite(0x80|i<<5|(chan[i].freq&15)); - rWrite(chan[i].freq>>4); + rWrite(0,0x80|i<<5|(chan[i].freq&15)); + rWrite(0,chan[i].freq>>4); // what? /*if (i==2 && snNoiseMode&2) { chan[3].baseFreq=chan[2].baseFreq; @@ -188,24 +216,24 @@ void DivPlatformSMS::tick(bool sysTick) { } } if (chan[3].freqChanged || updateSNMode) { - chan[3].freq=parent->calcFreq(chan[3].baseFreq,chan[3].pitch,true,0,chan[3].pitch2,chipClock,isRealSN?60:64); + chan[3].freq=parent->calcFreq(chan[3].baseFreq,chan[3].pitch,true,0,chan[3].pitch2,chipClock,noiseDivider); if (chan[3].freq>1023) chan[3].freq=1023; if (chan[3].actualNote>0x5d) chan[3].freq=0x01; if (snNoiseMode&2) { // take period from channel 3 if (updateSNMode || resetPhase) { if (snNoiseMode&1) { - rWrite(0xe7); + rWrite(0,0xe7); } else { - rWrite(0xe3); + rWrite(0,0xe3); } if (updateSNMode) { - rWrite(0xdf); + rWrite(0,0xdf); } } if (chan[3].freqChanged) { - rWrite(0xc0|(chan[3].freq&15)); - rWrite(chan[3].freq>>4); + rWrite(0,0xc0|(chan[3].freq&15)); + rWrite(0,chan[3].freq>>4); } } else { // 3 fixed values unsigned char value; @@ -222,7 +250,7 @@ void DivPlatformSMS::tick(bool sysTick) { value=2-value; if (value!=oldValue || updateSNMode || resetPhase) { oldValue=value; - rWrite(0xe0|value|((snNoiseMode&1)<<2)); + rWrite(0,0xe0|value|((snNoiseMode&1)<<2)); } } } @@ -233,7 +261,7 @@ void DivPlatformSMS::tick(bool sysTick) { int DivPlatformSMS::dispatch(DivCommand c) { int CHIP_DIVIDER=64; - if (c.chan==3 && isRealSN) CHIP_DIVIDER=60; + if (c.chan==3) CHIP_DIVIDER=noiseDivider; switch (c.cmd) { case DIV_CMD_NOTE_ON: if (c.value!=DIV_NOTE_NULL) { @@ -243,7 +271,7 @@ int DivPlatformSMS::dispatch(DivCommand c) { chan[c.chan].actualNote=c.value; } chan[c.chan].active=true; - rWrite(0x90|c.chan<<5|(isMuted[c.chan]?15:(15-(chan[c.chan].vol&15)))); + rWrite(0,0x90|c.chan<<5|(isMuted[c.chan]?15:(15-(chan[c.chan].vol&15)))); chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_STD)); if (!parent->song.brokenOutVol && !chan[c.chan].std.vol.will) { chan[c.chan].outVol=chan[c.chan].vol; @@ -251,7 +279,7 @@ int DivPlatformSMS::dispatch(DivCommand c) { break; case DIV_CMD_NOTE_OFF: chan[c.chan].active=false; - rWrite(0x9f|c.chan<<5); + rWrite(0,0x9f|c.chan<<5); chan[c.chan].macroInit(NULL); break; case DIV_CMD_NOTE_OFF_ENV: @@ -268,7 +296,7 @@ int DivPlatformSMS::dispatch(DivCommand c) { if (!chan[c.chan].std.vol.has) { chan[c.chan].outVol=c.value; } - if (chan[c.chan].active) rWrite(0x90|c.chan<<5|(isMuted[c.chan]?15:(15-(chan[c.chan].vol&15)))); + if (chan[c.chan].active) rWrite(0,0x90|c.chan<<5|(isMuted[c.chan]?15:(15-(chan[c.chan].vol&15)))); } break; case DIV_CMD_GET_VOLUME: @@ -308,6 +336,18 @@ int DivPlatformSMS::dispatch(DivCommand c) { snNoiseMode=(c.value&1)|((c.value&16)>>3); updateSNMode=true; break; + case DIV_CMD_PANNING: { + if (isStereo()) { + lastPan&=~(0x11<0) pan|=0x01; + if (c.value2>0) pan|=0x10; + if (pan==0) pan=0x11; + lastPan|=pan<device_start(); - YMPSG_Init(&sn_nuked,isRealSN); + YMPSG_Init(&sn_nuked,isRealSN,12,isRealSN?13:15,isRealSN?16383:32767); snNoiseMode=3; - rWrite(0xe7); + rWrite(0,0xe7); updateSNMode=false; oldValue=0xff; + lastPan=0xff; + if (isStereo()) { + rWrite(1,0xff); + } +} + +bool DivPlatformSMS::isStereo() { + return (!nuked) && stereo; } bool DivPlatformSMS::keyOffAffectsArp(int ch) { @@ -391,45 +439,88 @@ void DivPlatformSMS::notifyInsDeletion(void* ins) { } void DivPlatformSMS::poke(unsigned int addr, unsigned short val) { - rWrite(val); + rWrite(addr,val); } void DivPlatformSMS::poke(std::vector& wlist) { - for (DivRegWrite& i: wlist) rWrite(i.val); + for (DivRegWrite& i: wlist) rWrite(i.addr,i.val); } void DivPlatformSMS::setFlags(unsigned int flags) { - if ((flags&3)==3) { - chipClock=COLOR_NTSC/2.0; - } else if ((flags&3)==2) { - chipClock=4000000; - } else if ((flags&3)==1) { - chipClock=COLOR_PAL*4.0/5.0; - } else { - chipClock=COLOR_NTSC; + switch (flags&0xff03) { + default: + case 0x0000: + chipClock=COLOR_NTSC; + break; + case 0x0001: + chipClock=COLOR_PAL*4.0/5.0; + break; + case 0x0002: + chipClock=4000000; + break; + case 0x0003: + chipClock=COLOR_NTSC/2.0; + break; + case 0x0100: + chipClock=3000000; + break; + case 0x0101: + chipClock=2000000; + break; } resetPhase=!(flags&16); - + noiseDivider=64; if (sn!=NULL) delete sn; - switch ((flags>>2)&3) { - case 1: // TI - sn=new sn76496_base_device(0x4000, 0x4000, 0x01, 0x02, true, 1, false, true); - isRealSN=true; - break; - case 2: // TI+Atari - sn=new sn76496_base_device(0x4000, 0x0f35, 0x01, 0x02, true, 1, false, true); - isRealSN=true; - break; - case 3: // Game Gear (not fully emulated yet!) - sn=new sn76496_base_device(0x8000, 0x8000, 0x01, 0x08, false, 1, false, false); - isRealSN=false; - break; + switch (flags&0xcc) { default: // Sega - sn=new sn76496_base_device(0x8000, 0x8000, 0x01, 0x08, false, 1, false, false); + case 0x00: + sn=new segapsg_device(); isRealSN=false; + stereo=false; + break; + case 0x04: // TI SN76489 + sn=new sn76489_device(); + isRealSN=true; + noiseDivider=60; + stereo=false; + break; + case 0x08: // TI+Atari + sn=new sn76496_base_device(0x4000, 0x0f35, 0x01, 0x02, true, false, 8, false, true); + isRealSN=true; + noiseDivider=60; + stereo=false; + break; + case 0x0c: // Game Gear (not fully emulated yet!) + sn=new gamegear_device(); + isRealSN=false; + stereo=true; + break; + case 0x40: // TI SN76489A + sn=new sn76489a_device(); + isRealSN=false; // TODO + noiseDivider=68; + stereo=false; + break; + case 0x44: // TI SN76496 + sn=new sn76496_device(); + isRealSN=false; // TODO + noiseDivider=68; + stereo=false; + break; + case 0x48: // NCR 8496 + sn=new ncr8496_device(); + isRealSN=false; + noiseDivider=64; + stereo=false; + break; + case 0x4c: // Tandy PSSJ 3-voice sound + sn=new pssj3_device(); + isRealSN=false; + noiseDivider=64; + stereo=false; break; } - rate=chipClock/16; + rate=nuked?chipClock/16:chipClock/2; for (int i=0; i<4; i++) { oscBuf[i]->rate=rate; } @@ -445,12 +536,15 @@ int DivPlatformSMS::init(DivEngine* p, int channels, int sugRate, unsigned int f skipRegisterWrites=false; resetPhase=false; oldValue=0xff; + lastPan=0xff; for (int i=0; i<4; i++) { isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } sn=NULL; setFlags(flags); + snBufLen=65536; + for (int i=0; i<2; i++) snBuf[i]=new short[snBufLen]; reset(); return 4; } @@ -459,6 +553,9 @@ void DivPlatformSMS::quit() { for (int i=0; i<4; i++) { delete oscBuf[i]; } + for (int i=0; i<2; i++) { + delete[] snBuf[i]; + } if (sn!=NULL) delete sn; } diff --git a/src/engine/platform/sms.h b/src/engine/platform/sms.h index 3c97a9a5..56f6beda 100644 --- a/src/engine/platform/sms.h +++ b/src/engine/platform/sms.h @@ -58,21 +58,31 @@ class DivPlatformSMS: public DivDispatch { Channel chan[4]; DivDispatchOscBuffer* oscBuf[4]; bool isMuted[4]; + unsigned char lastPan; + short* snBuf[2]; + size_t snBufLen; unsigned char oldValue; unsigned char snNoiseMode; + int noiseDivider=64; bool updateSNMode; bool resetPhase; bool isRealSN; + bool stereo; bool nuked; sn76496_base_device* sn; ympsg_t sn_nuked; - std::queue writes; + struct QueuedWrite { + unsigned short addr; + unsigned char val; + bool addrOrVal; + QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} + }; + std::queue writes; friend void putDispatchChan(void*,int,int); void acquire_nuked(short* bufL, short* bufR, size_t start, size_t len); void acquire_mame(short* bufL, short* bufR, size_t start, size_t len); public: - int acquireOne(); void acquire(short* bufL, short* bufR, size_t start, size_t len); int dispatch(DivCommand c); void* getChanState(int chan); @@ -81,6 +91,7 @@ class DivPlatformSMS: public DivDispatch { void forceIns(); void tick(bool sysTick=true); void muteChannel(int ch, bool mute); + bool isStereo(); bool keyOffAffectsArp(int ch); bool keyOffAffectsPorta(int ch); int getPortaFloor(int ch); diff --git a/src/engine/platform/sound/sn76496.cpp b/src/engine/platform/sound/sn76496.cpp index 351c94d8..5062ea7a 100644 --- a/src/engine/platform/sound/sn76496.cpp +++ b/src/engine/platform/sound/sn76496.cpp @@ -128,7 +128,7 @@ 10/12/2019: Michael Zapf * READY line handling by own emu_timer, not depending on sound_stream_update - additional modifications by tildearrow for furnace + additional modifications by tildearrow, cam900 for furnace TODO: * Implement the TMS9919 - any difference to sn94624? * Implement the T6W28; has registers in a weird order, needs writes @@ -150,18 +150,20 @@ sn76496_base_device::sn76496_base_device( int feedbackmask, - int noise_start, + int noise_start, int noisetap1, int noisetap2, bool negate, + bool stereo, int clockdivider, bool ncr, bool sega) : m_feedback_mask(feedbackmask) - , m_noise_start(noise_start) + , m_noise_start(noise_start) , m_whitenoise_tap1(noisetap1) , m_whitenoise_tap2(noisetap2) - , m_negate(negate) + , m_negate(negate) + , m_stereo(stereo) , m_clock_divider(clockdivider) , m_ncr_style_psg(ncr) , m_sega_style_psg(sega) @@ -169,10 +171,54 @@ sn76496_base_device::sn76496_base_device( } sn76496_device::sn76496_device() - : sn76496_base_device(0x8000, 0x8000, 0x01, 0x08, false, 1, false, false) + : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 8, false, true) { } +y2404_device::y2404_device() + : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 8, false, true) +{ +} + +sn76489_device::sn76489_device() + : sn76496_base_device(0x4000, 0x01, 0x02, true, false, 8, false, true) +{ +} + +sn76489a_device::sn76489a_device() + : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 8, false, true) +{ +} + +sn76494_device::sn76494_device() + : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 1, false, true) +{ +} + +sn94624_device::sn94624_device() + : sn76496_base_device(0x4000, 0x01, 0x02, true, false, 1, false, true) +{ +} + +ncr8496_device::ncr8496_device() + : sn76496_base_device(0x8000, 0x02, 0x20, true, false, 8, true, true) +{ +} + +pssj3_device::pssj3_device() + : sn76496_base_device(0x8000, 0x02, 0x20, false, false, 8, true, true) +{ +} + +gamegear_device::gamegear_device() + : sn76496_base_device(0x8000, 0x01, 0x08, true, true, 8, false, false) +{ +} + +segapsg_device::segapsg_device() + : sn76496_base_device(0x8000, 0x01, 0x08, true, false, 8, false, false) +{ +} void sn76496_base_device::device_start() { @@ -199,6 +245,7 @@ void sn76496_base_device::device_start() m_RNG = m_feedback_mask; m_output[3] = m_RNG & 1; + m_stereo_mask = 0xFF; // all channels enabled m_current_clock = m_clock_divider-1; // set gain @@ -225,6 +272,11 @@ void sn76496_base_device::device_start() m_ready_state = true; } +void sn76496_base_device::stereo_w(u8 data) +{ + if (m_stereo) m_stereo_mask = data; +} + void sn76496_base_device::write(u8 data) { int n, r, c; @@ -285,7 +337,7 @@ inline bool sn76496_base_device::in_noise_mode() return ((m_register[6] & 4)!=0); } -void sn76496_base_device::sound_stream_update(short* outputs, int outLen) +void sn76496_base_device::sound_stream_update(short** outputs, int outLen) { int i; @@ -336,13 +388,30 @@ void sn76496_base_device::sound_stream_update(short* outputs, int outLen) } } + if (m_stereo) + { + out = ((((m_stereo_mask & 0x10)!=0) && (m_output[0]!=0))? m_volume[0] : 0) + + ((((m_stereo_mask & 0x20)!=0) && (m_output[1]!=0))? m_volume[1] : 0) + + ((((m_stereo_mask & 0x40)!=0) && (m_output[2]!=0))? m_volume[2] : 0) + + ((((m_stereo_mask & 0x80)!=0) && (m_output[3]!=0))? m_volume[3] : 0); + + out2= ((((m_stereo_mask & 0x1)!=0) && (m_output[0]!=0))? m_volume[0] : 0) + + ((((m_stereo_mask & 0x2)!=0) && (m_output[1]!=0))? m_volume[1] : 0) + + ((((m_stereo_mask & 0x4)!=0) && (m_output[2]!=0))? m_volume[2] : 0) + + ((((m_stereo_mask & 0x8)!=0) && (m_output[3]!=0))? m_volume[3] : 0); + } + else + { out= ((m_output[0]!=0)? m_volume[0]:0) +((m_output[1]!=0)? m_volume[1]:0) +((m_output[2]!=0)? m_volume[2]:0) +((m_output[3]!=0)? m_volume[3]:0); + } if (m_negate) { out = -out; out2 = -out2; } - outputs[sampindex]=out; + outputs[0][sampindex]=out; + if (m_stereo) + outputs[1][sampindex]=out; } } diff --git a/src/engine/platform/sound/sn76496.h b/src/engine/platform/sound/sn76496.h index 4c24e938..7a8a5c62 100644 --- a/src/engine/platform/sound/sn76496.h +++ b/src/engine/platform/sound/sn76496.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria -// additional modifications by tildearrow for furnace +// additional modifications by tildearrow, cam900 for furnace #ifndef MAME_SOUND_SN76496_H #define MAME_SOUND_SN76496_H @@ -14,34 +14,57 @@ class sn76496_base_device { public: void stereo_w(u8 data); void write(u8 data); - void device_start(); - void sound_stream_update(short* outputs, int outLen); - inline int32_t get_channel_output(int ch) { - return ((m_output[ch]!=0)?m_volume[ch]:0); - } + void device_start(); + void sound_stream_update(short** outputs, int outLen); + inline int32_t get_channel_output(int ch) { + return ((m_output[ch]!=0)?m_volume[ch]:0); + } //DECLARE_READ_LINE_MEMBER( ready_r ) { return m_ready_state ? 1 : 0; } sn76496_base_device( int feedbackmask, - int noise_start, + int noise_start, int noisetap1, int noisetap2, bool negate, + bool stereo, int clockdivider, bool ncr, bool sega); + sn76496_base_device( + int feedbackmask, + int noisetap1, + int noisetap2, + bool negate, + bool stereo, + int clockdivider, + bool ncr, + bool sega) + : sn76496_base_device( + feedbackmask, + feedbackmask, + noisetap1, + noisetap2, + negate, + stereo, + clockdivider, + ncr, + sega) + {} + private: inline bool in_noise_mode(); bool m_ready_state; - const int32_t m_feedback_mask; // mask for feedback - const int32_t m_noise_start; // noise start value - const int32_t m_whitenoise_tap1; // mask for white noise tap 1 (higher one, usually bit 14) - const int32_t m_whitenoise_tap2; // mask for white noise tap 2 (lower one, usually bit 13) - bool m_negate; // output negate flag - const int32_t m_clock_divider; // clock divider + const int32_t m_feedback_mask; // mask for feedback + const int32_t m_noise_start; // noise start value + const int32_t m_whitenoise_tap1; // mask for white noise tap 1 (higher one, usually bit 14) + const int32_t m_whitenoise_tap2; // mask for white noise tap 2 (lower one, usually bit 13) + bool m_negate; // output negate flag + const bool m_stereo; // whether we're dealing with stereo or not + const int32_t m_clock_divider; // clock divider const bool m_ncr_style_psg; // flag to ignore writes to regs 1,3,5,6,7 with bit 7 low const bool m_sega_style_psg; // flag to make frequency zero acts as if it is one more than max (0x3ff+1) or if it acts like 0; the initial register is pointing to 0x3 instead of 0x0; the volume reg is preloaded with 0xF instead of 0x0 @@ -51,6 +74,7 @@ private: int32_t m_volume[4]; // db volume of voice 0-2 and noise uint32_t m_RNG; // noise generator LFSR int32_t m_current_clock; + int32_t m_stereo_mask; // the stereo output mask int32_t m_period[4]; // Length of 1/2 of waveform int32_t m_count[4]; // Position within the waveform int32_t m_output[4]; // 1-bit output of each channel, pre-volume @@ -63,4 +87,67 @@ public: sn76496_device(); }; +// Y2404 not verified yet. todo: verify; (don't be fooled by the Y, it's a TI chip, not Yamaha) +class y2404_device : public sn76496_base_device +{ +public: + y2404_device(); +}; + +// SN76489 not verified yet. todo: verify; +class sn76489_device : public sn76496_base_device +{ +public: + sn76489_device(); +}; + +// SN76489A: whitenoise verified, phase verified, periodic verified (by plgdavid) +class sn76489a_device : public sn76496_base_device +{ +public: + sn76489a_device(); +}; + +// SN76494 not verified, (according to datasheet: same as sn76489a but without the /8 divider) +class sn76494_device : public sn76496_base_device +{ +public: + sn76494_device(); +}; + +// SN94624 whitenoise verified, phase verified, period verified; verified by PlgDavid +class sn94624_device : public sn76496_base_device +{ +public: + sn94624_device(); +}; + +// NCR8496 whitenoise verified, phase verified; verified by ValleyBell & NewRisingSun +class ncr8496_device : public sn76496_base_device +{ +public: + ncr8496_device(); +}; + +// PSSJ-3 whitenoise verified, phase verified; verified by ValleyBell & NewRisingSun +class pssj3_device : public sn76496_base_device +{ +public: + pssj3_device(); +}; + +// Verified by Justin Kerk +class gamegear_device : public sn76496_base_device +{ +public: + gamegear_device(); +}; + +// todo: verify; from smspower wiki, assumed to have same invert as gamegear +class segapsg_device : public sn76496_base_device +{ +public: + segapsg_device(); +}; + #endif // MAME_SOUND_SN76496_H diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index 569f722b..d530d9ee 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -22,43 +22,11 @@ #include #include -#include "fmshared_OPM.h" - // actually 0x40 but the upper bit of data selects address #define ADDR_WS_FINE 0x100 // actually 0xc0 but bit 5 of data selects address #define ADDR_EGS_REV 0x120 -static unsigned short chanOffs[8]={ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 -}; -static unsigned short opOffs[4]={ - 0x00, 0x08, 0x10, 0x18 -}; -static bool isOutput[8][4]={ - // 1 3 2 4 - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,true ,true}, - {false,true ,true ,true}, - {false,true ,true ,true}, - {true ,true ,true ,true}, -}; -static unsigned char dtTable[8]={ - 7,6,5,0,1,2,3,4 -}; - -static int orderedOps[4]={ - 0,2,1,3 -}; - -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } - -#define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0) - const char* regCheatSheetOPZ[]={ "Test", "00", "NoteCtl", "08", @@ -233,7 +201,7 @@ void DivPlatformTX81Z::acquire(short* bufL, short* bufR, size_t start, size_t le fm_ymfm->write(0x0+((w.addr>>8)<<1),w.addr); fm_ymfm->write(0x1+((w.addr>>8)<<1),w.val); regPool[w.addr&0xff]=w.val; - writes.pop(); + writes.pop_front(); delay=1; } } @@ -1048,7 +1016,7 @@ void DivPlatformTX81Z::poke(std::vector& wlist) { } void DivPlatformTX81Z::reset() { - while (!writes.empty()) writes.pop(); + while (!writes.empty()) writes.pop_front(); memset(regPool,0,330); fm_ymfm->reset(); if (dumpWrites) { diff --git a/src/engine/platform/tx81z.h b/src/engine/platform/tx81z.h index 60ea66ae..93f220f1 100644 --- a/src/engine/platform/tx81z.h +++ b/src/engine/platform/tx81z.h @@ -20,17 +20,22 @@ #ifndef _TX81Z_H #define _TX81Z_H #include "../dispatch.h" +#include "../macroInt.h" #include "../instrument.h" #include #include "sound/ymfm/ymfm_opz.h" -#include "../macroInt.h" +#include "fmshared_OPM.h" class DivTXInterface: public ymfm::ymfm_interface { }; -class DivPlatformTX81Z: public DivDispatch { +class DivPlatformTX81Z: public DivDispatch, public DivPlatformOPMBase { protected: + const unsigned short chanOffs[8]={ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 + }; + struct Channel { DivInstrumentFM state; DivMacroInt std; @@ -69,16 +74,8 @@ class DivPlatformTX81Z: public DivDispatch { }; Channel chan[8]; DivDispatchOscBuffer* oscBuf[8]; - struct QueuedWrite { - unsigned short addr; - unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} - }; - std::queue writes; - int delay, baseFreqOff; + int baseFreqOff; int pcmL, pcmR, pcmCycles; - unsigned char lastBusy; unsigned char amDepth, pmDepth; ymfm::ym2414* fm_ymfm; diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index 3303fbf8..de54d8a6 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -23,16 +23,7 @@ #include #include -#include "sound/ymfm/ymfm_opn.h" -#include "ym2203shared.h" -#include "fmshared_OPN.h" - -static unsigned char konOffs[3]={ - 0, 1, 2 -}; - -#define CHIP_DIVIDER 32 const char* regCheatSheetYM2203[]={ // SSG @@ -299,7 +290,7 @@ void DivPlatformYM2203::acquire(short* bufL, short* bufR, size_t start, size_t l fm->write(0x0,w.addr); fm->write(0x1,w.val); regPool[w.addr&0xff]=w.val; - writes.pop(); + writes.pop_front(); delay=6; } } @@ -954,7 +945,7 @@ void DivPlatformYM2203::poke(std::vector& wlist) { } void DivPlatformYM2203::reset() { - while (!writes.empty()) writes.pop(); + while (!writes.empty()) writes.pop_front(); memset(regPool,0,256); if (dumpWrites) { addWrite(0xffffffff,0); @@ -1016,21 +1007,27 @@ void DivPlatformYM2203::setSkipRegisterWrites(bool value) { } void DivPlatformYM2203::setFlags(unsigned int flags) { - unsigned char ayFlags=16; - if (flags==3) { - chipClock=3000000.0; - ayFlags=20; - } else if (flags==2) { - chipClock=4000000.0; - ayFlags=19; - } else if (flags==1) { - chipClock=COLOR_PAL*4.0/5.0; - ayFlags=17; - } else { - chipClock=COLOR_NTSC; - ayFlags=16; + switch (flags&0x3f) { + default: + case 0x00: + chipClock=COLOR_NTSC; + break; + case 0x01: + chipClock=COLOR_PAL*4.0/5.0; + break; + case 0x02: + chipClock=4000000.0; + break; + case 0x03: + chipClock=3000000.0; + break; + case 0x04: + chipClock=31948800/8; + break; + case 0x05: + chipClock=3000000.0/2.0; + break; } - ay->setFlags(ayFlags); rate=fm->sample_rate(chipClock); for (int i=0; i<6; i++) { oscBuf[i]->rate=rate; @@ -1047,14 +1044,14 @@ int DivPlatformYM2203::init(DivEngine* p, int channels, int sugRate, unsigned in } fm=new ymfm::ym2203(iface); fm->set_fidelity(ymfm::OPN_FIDELITY_MIN); - // YM2149, 2MHz - ay=new DivPlatformAY8910; - ay->init(p,3,sugRate,19); - ay->toggleRegisterDump(true); setFlags(flags); + // YM2149, 2MHz + ay=new DivPlatformAY8910(true,chipClock,ayDiv); + ay->init(p,3,sugRate,16); + ay->toggleRegisterDump(true); reset(); - return 16; + return 6; } void DivPlatformYM2203::quit() { diff --git a/src/engine/platform/ym2203.h b/src/engine/platform/ym2203.h index ab527eea..c072647c 100644 --- a/src/engine/platform/ym2203.h +++ b/src/engine/platform/ym2203.h @@ -21,21 +21,25 @@ #define _YM2203_H #include "../dispatch.h" #include "../macroInt.h" -#include #include "sound/ymfm/ymfm_opn.h" #include "ay.h" +#include "fmshared_OPN.h" class DivYM2203Interface: public ymfm::ymfm_interface { }; -class DivPlatformYM2203: public DivDispatch { +class DivPlatformYM2203: public DivDispatch, public DivPlatformOPNBase { protected: const unsigned short chanOffs[3]={ 0x00, 0x01, 0x02 }; + const unsigned char konOffs[3]={ + 0, 1, 2 + }; + struct Channel { DivInstrumentFM state; unsigned char freqH, freqL; @@ -79,24 +83,14 @@ class DivPlatformYM2203: public DivDispatch { Channel chan[6]; DivDispatchOscBuffer* oscBuf[6]; bool isMuted[6]; - struct QueuedWrite { - unsigned short addr; - unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} - }; - std::queue writes; ymfm::ym2203* fm; ymfm::ym2203::output_data fmout; DivYM2203Interface iface; - unsigned char regPool[512]; - unsigned char lastBusy; + unsigned char regPool[256]; DivPlatformAY8910* ay; unsigned char sampleBank; - int delay; - bool extMode; short oldWrites[256]; @@ -127,6 +121,9 @@ class DivPlatformYM2203: public DivDispatch { void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); + DivPlatformYM2203(): + DivDispatch(), + DivPlatformOPNBase(4720270.0, 36, 16) {} ~DivPlatformYM2203(); }; #endif diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index 95937207..350a5870 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -21,9 +21,6 @@ #include "../engine.h" #include -#include "ym2203shared.h" -#include "fmshared_OPN.h" - int DivPlatformYM2203Ext::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformYM2203::dispatch(c); @@ -510,7 +507,7 @@ int DivPlatformYM2203Ext::init(DivEngine* parent, int channels, int sugRate, uns } reset(); - return 19; + return 9; } void DivPlatformYM2203Ext::quit() { diff --git a/src/engine/platform/ym2203shared.h b/src/engine/platform/ym2203shared.h deleted file mode 100644 index 5aec7916..00000000 --- a/src/engine/platform/ym2203shared.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Furnace Tracker - multi-system chiptune tracker - * Copyright (C) 2021-2022 tildearrow and contributors - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -static unsigned short opOffs[4]={ - 0x00, 0x04, 0x08, 0x0c -}; -static bool isOutput[8][4]={ - // 1 3 2 4 - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,true ,true}, - {false,true ,true ,true}, - {false,true ,true ,true}, - {true ,true ,true ,true}, -}; -static unsigned char dtTable[8]={ - 7,6,5,0,1,2,3,4 -}; - -static int orderedOps[4]={ - 0,2,1,3 -}; - -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } - -#define CHIP_FREQBASE 4720270 diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index b6f1e16f..9756a44a 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -24,16 +24,7 @@ #include #include -#include "sound/ymfm/ymfm_opn.h" -#include "ym2610shared.h" -#include "fmshared_OPN.h" - -static unsigned char konOffs[6]={ - 0, 1, 2, 4, 5, 6 -}; - -#define CHIP_DIVIDER 32 const char* regCheatSheetYM2608[]={ // SSG @@ -450,7 +441,7 @@ void DivPlatformYM2608::acquire(short* bufL, short* bufR, size_t start, size_t l fm->write(0x0+((w.addr>>8)<<1),w.addr); fm->write(0x1+((w.addr>>8)<<1),w.val); regPool[w.addr&0x1ff]=w.val; - writes.pop(); + writes.pop_front(); delay=4; } } @@ -1278,7 +1269,7 @@ void DivPlatformYM2608::poke(std::vector& wlist) { } void DivPlatformYM2608::reset() { - while (!writes.empty()) writes.pop(); + while (!writes.empty()) writes.pop_front(); memset(regPool,0,512); if (dumpWrites) { addWrite(0xffffffff,0); @@ -1397,6 +1388,22 @@ void DivPlatformYM2608::renderSamples() { adpcmBMemLen=memPos+256; } +void DivPlatformYM2608::setFlags(unsigned int flags) { + switch (flags&0x3f) { + default: + case 0x00: + chipClock=8000000.0; + break; + case 0x01: + chipClock=31948800/4; + break; + } + rate=fm->sample_rate(chipClock); + for (int i=0; i<16; i++) { + oscBuf[i]->rate=rate; + } +} + int DivPlatformYM2608::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { parent=p; adpcmBMem=new unsigned char[getSampleMemCapacity(0)]; @@ -1409,16 +1416,11 @@ int DivPlatformYM2608::init(DivEngine* p, int channels, int sugRate, unsigned in isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - chipClock=8000000; fm=new ymfm::ym2608(iface); - fm->set_fidelity(ymfm::OPN_FIDELITY_MIN); - rate=fm->sample_rate(chipClock); - for (int i=0; i<16; i++) { - oscBuf[i]->rate=rate; - } + setFlags(flags); // YM2149, 2MHz - ay=new DivPlatformAY8910; - ay->init(p,3,sugRate,19); + ay=new DivPlatformAY8910(true,chipClock,32); + ay->init(p,3,sugRate,16); ay->toggleRegisterDump(true); reset(); return 16; diff --git a/src/engine/platform/ym2608.h b/src/engine/platform/ym2608.h index 5c673629..ffa7a160 100644 --- a/src/engine/platform/ym2608.h +++ b/src/engine/platform/ym2608.h @@ -21,10 +21,10 @@ #define _YM2608_H #include "../dispatch.h" #include "../macroInt.h" -#include #include "sound/ymfm/ymfm_opn.h" #include "ay.h" +#include "fmshared_OPN.h" class DivYM2608Interface: public ymfm::ymfm_interface { public: @@ -35,12 +35,16 @@ class DivYM2608Interface: public ymfm::ymfm_interface { DivYM2608Interface(): adpcmBMem(NULL), sampleBank(0) {} }; -class DivPlatformYM2608: public DivDispatch { +class DivPlatformYM2608: public DivDispatch, public DivPlatformOPNBase { protected: const unsigned short chanOffs[6]={ 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 }; + const unsigned char konOffs[6]={ + 0, 1, 2, 4, 5, 6 + }; + struct Channel { DivInstrumentFM state; unsigned char freqH, freqL; @@ -86,17 +90,9 @@ class DivPlatformYM2608: public DivDispatch { Channel chan[16]; DivDispatchOscBuffer* oscBuf[16]; bool isMuted[16]; - struct QueuedWrite { - unsigned short addr; - unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} - }; - std::queue writes; ymfm::ym2608* fm; ymfm::ym2608::output_data fmout; unsigned char regPool[512]; - unsigned char lastBusy; unsigned char* adpcmBMem; size_t adpcmBMemLen; @@ -106,9 +102,9 @@ class DivPlatformYM2608: public DivDispatch { unsigned char sampleBank; unsigned char writeRSSOff, writeRSSOn; - int delay; - bool extMode; + double fmFreqBase; + unsigned char ayDiv; short oldWrites[512]; short pendingWrites[512]; @@ -141,8 +137,12 @@ class DivPlatformYM2608: public DivDispatch { size_t getSampleMemCapacity(int index); size_t getSampleMemUsage(int index); void renderSamples(); + void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); + DivPlatformYM2608(): + DivDispatch(), + DivPlatformOPNBase(9440540.0, 72, 32) {} ~DivPlatformYM2608(); }; #endif diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index 441640b4..38d2b4b2 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -21,9 +21,6 @@ #include "../engine.h" #include -#include "ym2610shared.h" -#include "fmshared_OPN.h" - int DivPlatformYM2608Ext::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformYM2608::dispatch(c); diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 89ccc6c0..d8d8e857 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -24,19 +24,6 @@ #include #include -#include "ym2610shared.h" - -#include "fmshared_OPN.h" - -static unsigned char konOffs[4]={ - 1, 2, 5, 6 -}; - -static unsigned char bchOffs[4]={ - 1, 2, 4, 5 -}; - -#define CHIP_DIVIDER 32 const char* regCheatSheetYM2610[]={ // SSG @@ -494,7 +481,7 @@ void DivPlatformYM2610::acquire(short* bufL, short* bufR, size_t start, size_t l fm->write(0x0+((w.addr>>8)<<1),w.addr); fm->write(0x1+((w.addr>>8)<<1),w.val); regPool[w.addr&0x1ff]=w.val; - writes.pop(); + writes.pop_front(); delay=4; } } @@ -1325,7 +1312,7 @@ void DivPlatformYM2610::poke(std::vector& wlist) { } void DivPlatformYM2610::reset() { - while (!writes.empty()) writes.pop(); + while (!writes.empty()) writes.pop_front(); memset(regPool,0,512); if (dumpWrites) { addWrite(0xffffffff,0); @@ -1397,6 +1384,22 @@ void DivPlatformYM2610::setSkipRegisterWrites(bool value) { ay->setSkipRegisterWrites(value); } +void DivPlatformYM2610::setFlags(unsigned int flags) { + switch (flags&0xff) { + default: + case 0x00: + chipClock=8000000.0; + break; + case 0x01: + chipClock=24167829/3; + break; + } + rate=chipClock/16; + for (int i=0; i<14; i++) { + oscBuf[i]->rate=rate; + } +} + int DivPlatformYM2610::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { DivPlatformYM2610Base::init(p, channels, sugRate, flags); dumpWrites=false; @@ -1405,15 +1408,11 @@ int DivPlatformYM2610::init(DivEngine* p, int channels, int sugRate, unsigned in isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - chipClock=8000000; - rate=chipClock/16; - for (int i=0; i<14; i++) { - oscBuf[i]->rate=rate; - } fm=new ymfm::ym2610(iface); + setFlags(flags); // YM2149, 2MHz - ay=new DivPlatformAY8910; - ay->init(p,3,sugRate,19); + ay=new DivPlatformAY8910(true,chipClock,32); + ay->init(p,3,sugRate,16); ay->toggleRegisterDump(true); reset(); return 14; diff --git a/src/engine/platform/ym2610.h b/src/engine/platform/ym2610.h index 92f4ca07..37c0fa83 100644 --- a/src/engine/platform/ym2610.h +++ b/src/engine/platform/ym2610.h @@ -21,8 +21,8 @@ #define _YM2610_H #include "../dispatch.h" #include "../macroInt.h" -#include #include "ay.h" +#include "fmshared_OPN.h" #include "sound/ymfm/ymfm_opn.h" class DivYM2610Interface: public ymfm::ymfm_interface { @@ -35,7 +35,7 @@ class DivYM2610Interface: public ymfm::ymfm_interface { DivYM2610Interface(): adpcmAMem(NULL), adpcmBMem(NULL), sampleBank(0) {} }; -class DivPlatformYM2610Base: public DivDispatch { +class DivPlatformYM2610Base: public DivDispatch, public DivPlatformOPNBase { protected: unsigned char* adpcmAMem; size_t adpcmAMemLen; @@ -50,6 +50,9 @@ class DivPlatformYM2610Base: public DivDispatch { void renderSamples(); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); + DivPlatformYM2610Base(): + DivDispatch(), + DivPlatformOPNBase(9440540.0, 72, 32) {} }; class DivPlatformYM2610: public DivPlatformYM2610Base { @@ -58,6 +61,14 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { 0x01, 0x02, 0x101, 0x102 }; + const unsigned char konOffs[4]={ + 1, 2, 5, 6 + }; + + const unsigned char bchOffs[4]={ + 1, 2, 4, 5 + }; + struct Channel { DivInstrumentFM state; unsigned char freqH, freqL; @@ -103,24 +114,14 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { Channel chan[14]; DivDispatchOscBuffer* oscBuf[14]; bool isMuted[14]; - struct QueuedWrite { - unsigned short addr; - unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} - }; - std::queue writes; ymfm::ym2610* fm; ymfm::ym2610::output_data fmout; DivPlatformAY8910* ay; unsigned char regPool[512]; - unsigned char lastBusy; unsigned char sampleBank; - int delay; - bool extMode; short oldWrites[512]; @@ -150,6 +151,7 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { void poke(std::vector& wlist); const char** getRegisterSheet(); const char* getEffectName(unsigned char effect); + void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformYM2610(); diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 0e466f6f..90ddeb40 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -23,16 +23,6 @@ #include #include -#include "ym2610shared.h" - -#include "fmshared_OPN.h" - -static unsigned char konOffs[6]={ - 0, 1, 2, 4, 5, 6 -}; - -#define CHIP_DIVIDER 32 - const char* regCheatSheetYM2610B[]={ // SSG "SSG_FreqL_A", "000", @@ -472,7 +462,7 @@ void DivPlatformYM2610B::acquire(short* bufL, short* bufR, size_t start, size_t fm->write(0x0+((w.addr>>8)<<1),w.addr); fm->write(0x1+((w.addr>>8)<<1),w.val); regPool[w.addr&0x1ff]=w.val; - writes.pop(); + writes.pop_front(); delay=4; } } @@ -1303,7 +1293,7 @@ void DivPlatformYM2610B::poke(std::vector& wlist) { } void DivPlatformYM2610B::reset() { - while (!writes.empty()) writes.pop(); + while (!writes.empty()) writes.pop_front(); memset(regPool,0,512); if (dumpWrites) { addWrite(0xffffffff,0); @@ -1375,6 +1365,22 @@ void DivPlatformYM2610B::setSkipRegisterWrites(bool value) { ay->setSkipRegisterWrites(value); } +void DivPlatformYM2610B::setFlags(unsigned int flags) { + switch (flags&0xff) { + default: + case 0x00: + chipClock=8000000.0; + break; + case 0x01: + chipClock=24167829/3; + break; + } + rate=chipClock/16; + for (int i=0; i<16; i++) { + oscBuf[i]->rate=rate; + } +} + int DivPlatformYM2610B::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { DivPlatformYM2610Base::init(p, channels, sugRate, flags); dumpWrites=false; @@ -1383,15 +1389,11 @@ int DivPlatformYM2610B::init(DivEngine* p, int channels, int sugRate, unsigned i isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - chipClock=8000000; - rate=chipClock/16; - for (int i=0; i<16; i++) { - oscBuf[i]->rate=rate; - } fm=new ymfm::ym2610b(iface); + setFlags(flags); // YM2149, 2MHz - ay=new DivPlatformAY8910; - ay->init(p,3,sugRate,19); + ay=new DivPlatformAY8910(true,chipClock,32); + ay->init(p,3,sugRate,16); ay->toggleRegisterDump(true); reset(); return 16; diff --git a/src/engine/platform/ym2610b.h b/src/engine/platform/ym2610b.h index 3a034028..1262ba02 100644 --- a/src/engine/platform/ym2610b.h +++ b/src/engine/platform/ym2610b.h @@ -32,6 +32,10 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 }; + const unsigned char konOffs[6]={ + 0, 1, 2, 4, 5, 6 + }; + struct Channel { DivInstrumentFM state; unsigned char freqH, freqL; @@ -77,24 +81,16 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { Channel chan[16]; DivDispatchOscBuffer* oscBuf[16]; bool isMuted[16]; - struct QueuedWrite { - unsigned short addr; - unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} - }; - std::queue writes; ymfm::ym2610b* fm; ymfm::ym2610b::output_data fmout; unsigned char regPool[512]; - unsigned char lastBusy; DivPlatformAY8910* ay; unsigned char sampleBank; - int delay; - bool extMode; + double fmFreqBase=9440540; + unsigned char ayDiv=32; short oldWrites[512]; short pendingWrites[512]; @@ -123,6 +119,7 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { void poke(std::vector& wlist); const char** getRegisterSheet(); const char* getEffectName(unsigned char effect); + void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformYM2610B(); diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index cd7e494b..b4c154fa 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -21,9 +21,6 @@ #include "../engine.h" #include -#include "ym2610shared.h" -#include "fmshared_OPN.h" - int DivPlatformYM2610BExt::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformYM2610B::dispatch(c); diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index bf6df44e..0ac118a1 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -21,9 +21,6 @@ #include "../engine.h" #include -#include "ym2610shared.h" -#include "fmshared_OPN.h" - int DivPlatformYM2610Ext::dispatch(DivCommand c) { if (c.chan<1) { return DivPlatformYM2610::dispatch(c); diff --git a/src/engine/platform/ym2610shared.h b/src/engine/platform/ym2610shared.h deleted file mode 100644 index 8d8847c2..00000000 --- a/src/engine/platform/ym2610shared.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Furnace Tracker - multi-system chiptune tracker - * Copyright (C) 2021-2022 tildearrow and contributors - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -static unsigned short opOffs[4]={ - 0x00, 0x04, 0x08, 0x0c -}; -static bool isOutput[8][4]={ - // 1 3 2 4 - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,false,true}, - {false,false,true ,true}, - {false,true ,true ,true}, - {false,true ,true ,true}, - {true ,true ,true ,true}, -}; -static unsigned char dtTable[8]={ - 7,6,5,0,1,2,3,4 -}; - -static int orderedOps[4]={ - 0,2,1,3 -}; - -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } - -#define CHIP_FREQBASE 9440540 diff --git a/src/engine/platform/ymz280b.cpp b/src/engine/platform/ymz280b.cpp index 1c4997c2..87497238 100644 --- a/src/engine/platform/ymz280b.cpp +++ b/src/engine/platform/ymz280b.cpp @@ -431,6 +431,42 @@ void DivPlatformYMZ280B::setChipModel(int type) { chipType=type; } +void DivPlatformYMZ280B::setFlags(unsigned int flags) { + switch (chipType) { + default: + case 280: + switch (flags&0xff) { + case 0x00: + chipClock=16934400; + break; + case 0x01: + chipClock=COLOR_NTSC*4.0; + break; + case 0x02: + chipClock=COLOR_PAL*16.0/5.0; + break; + case 0x03: + chipClock=16000000; + break; + case 0x04: + chipClock=50000000.0/3.0; + break; + case 0x05: + chipClock=14000000; + break; + } + rate=chipClock/384; + break; + case 759: + rate=32000; + chipClock=rate*384; + break; + } + for (int i=0; i<8; i++) { + oscBuf[i]->rate=rate; + } +} + int DivPlatformYMZ280B::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { parent=p; dumpWrites=false; @@ -440,18 +476,12 @@ int DivPlatformYMZ280B::init(DivEngine* p, int channels, int sugRate, unsigned i isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - setFlags(flags); - - rate=(chipType==759)?32000:44100; - chipClock=rate*384; sampleMem=new unsigned char[getSampleMemCapacity()]; sampleMemLen=0; ymz280b.device_start(sampleMem); + setFlags(flags); reset(); - for (int i=0; i<8; i++) { - oscBuf[i]->rate=rate; - } return 8; } diff --git a/src/engine/platform/ymz280b.h b/src/engine/platform/ymz280b.h index 4957d899..97c64d21 100644 --- a/src/engine/platform/ymz280b.h +++ b/src/engine/platform/ymz280b.h @@ -95,6 +95,7 @@ class DivPlatformYMZ280B: public DivDispatch { size_t getSampleMemCapacity(int index = 0); size_t getSampleMemUsage(int index = 0); void renderSamples(); + void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); private: diff --git a/src/engine/song.h b/src/engine/song.h index 10c00d27..a5b68c26 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -237,28 +237,42 @@ struct DivSong { // - 1: PAL // - 2: Dendy // - SMS/SN76489: - // - bit 0-1: clock rate - // - 0: NTSC (3.58MHz) - // - 1: PAL (3.55MHz) - // - 2: Other (4MHz) - // - 3: half NTSC (1.79MHz) - // - bit 2-3: noise type - // - 0: Sega VDP (16-bit noise) - // - 1: real SN76489 (15-bit noise) - // - 2: real SN76489 with Atari-like short noise buzz (15-bit noise) - // - 3: Game Gear (16-bit noise, stereo) + // - bit 0-1, 8-15: clock rate + // - 0000: 3.58MHz (NTSC) + // - 0001: 3.55MHz (PAL) + // - 0002: 4MHz (Other) + // - 0003: 1.79MHz (half NTSC) + // - 0100: 3MHz + // - 0101: 2MHz + // - bit 2-3, 6-7: chip type + // - 00: Sega VDP (16-bit noise) + // - 04: real SN76489 (15-bit noise) + // - 08: real SN76489 with Atari-like short noise buzz (15-bit noise) + // - 0c: Game Gear (16-bit noise, stereo) + // - 40: real SN76489A (17-bit noise) + // - 44: real SN76496 (17-bit noise) + // - 48: NCR 8496 (16-bit noise) + // - 4c: Tandy PSSJ-3 (16-bit noise) // - bit 4: disable noise phase reset - // - YM2612: - // - bit 0-1: clock rate + // - YM2612/YM3438: + // - bit 0-30: clock rate // - 0: Genesis NTSC (7.67MHz) // - 1: Genesis PAL (7.61MHz) - // - 2: 8MHz + // - 2: FM Towns (8MHz) // - 3: AtGames Genesis (6.13MHz) + // - 4: Sega System 32 (8.06MHz) + // - bit 31: DAC distortion + // - 0: disable + // - 1: enable // - YM2151: - // - bit 0-1: clock rate + // - bit 0-7: clock rate // - 0: 3.58MHz (NTSC) // - 1: 3.55MHz (PAL) // - 2: 4MHz + // - YM2610(B): + // - bit 0-7: clock rate + // - 0: 8MHz (Neo Geo MVS) + // - 1: 8.06MHz (Neo Geo AES) // - AY-3-8910/AY8930: // - bit 0-3: clock rate // - 0: 1.79MHz (MSX NTSC) @@ -274,6 +288,8 @@ struct DivSong { // - 10: 2.097152MHz (Game Boy) // - 11: 3.58MHz (Darky) // - 12: 3.6MHz (Darky) + // - 13: 1.25MHz + // - 14: 1.536MHz // - bit 4-5: chip type (ignored on AY8930) // - 0: AY-3-8910 or similar // - 1: YM2149 @@ -287,9 +303,9 @@ struct DivSong { // - 1: low (internally divided to half) // - SAA1099: // - bit 0-1: clock rate - // - 0: 8MHz (SAM CoupĆ©, Game Blaster) - // - 1: 7.15MHz - // - 2: 7.09MHz + // - 0: 8MHz (SAM CoupĆ©) + // - 1: 7.15MHz (Game Blaster, NTSC) + // - 2: 7.09MHz (PAL) // - Amiga: // - bit 0: clock rate // - 0: 7.15MHz (NTSC) @@ -330,6 +346,80 @@ struct DivSong { // - bit 4: stereo // - 0: mono // - 1: stereo + // - YM2203: + // - bit 0-4: clock rate + // - 0: 3.58MHz (MTSC) + // - 1: 3.55MHz (PAL) + // - 2: 4MHz + // - 3: 3MHz + // - 4: 3.9936MHz (PC-88, PC-98) + // - 5: 1.5MHz + // - bit 5-6: output rate (TODO) + // - 0: FM: clock / 72, SSG: clock / 16 + // - 1: FM: clock / 36, SSG: clock / 8 + // - 2: FM: clock / 24, SSG: clock / 4 + // - YM2608: + // - bit 0-4: clock rate + // - 0: 8MHz + // - 1: 7.987MHz (PC-88, PC-98) + // - bit 5-6: output rate (TODO) + // - 0: FM: clock / 144, SSG: clock / 32 + // - 1: FM: clock / 72, SSG: clock / 16 + // - 2: FM: clock / 48, SSG: clock / 8 + // - YM3526, YM3812, Y8950: + // - bit 0-7: clock rate + // - 0: 3.58MHz (MTSC) + // - 1: 3.55MHz (PAL) + // - 2: 4MHz + // - 3: 3MHz + // - 4: 3.9936MHz (PC-88, PC-98) + // - 5: 3.5MHz + // - YMF262: + // - bit 0-7: clock rate + // - 0: 14.32MHz (MTSC) + // - 1: 14.19MHz (PAL) + // - 2: 14MHz + // - 3: 16MHz + // - 4: 15MHz + // - YMF289B: (TODO) + // - bit 0-7: clock rate + // - 0: 33.8688MHz + // - 1: 28.64MHz (MTSC) + // - 2: 28.38MHz (PAL) + // - MSM6295: + // - bit 0-6: clock rate + // - 0: 1MHz + // - 1: 1.056MHz + // - 2: 4MHz + // - 3: 4.224MHz + // - 4: 3.58MHz (NTSC) + // - 5: 1.79MHz (Half NTSC) + // - 6: 1.023MHz + // - 7: 0.895MHz (Quarter NTSC) + // - 8: 2MHz + // - 9: 2.112MHz + // - 10: 0.875MHz + // - 11: 0.9375MHz + // - 12: 1.5MHz + // - 13: 3MHz + // - 14: 1.193MHz + // - bit 7: Output rate + // - 0: clock / 132 + // - 1: clock / 165 + // - SCC/+: + // - bit 0-6: clock rate + // - 0: 1.79MHz (MSX NTSC) + // - 1: 1.77MHz (PAL) + // - 2: 1.5MHz + // - 3: 2MHz + // - YMZ280B: + // - bit 0-7: clock rate + // - 0: 16.9344MHz + // - 1: 14.32MHz (MTSC) + // - 2: 14.19MHz (PAL) + // - 3: 16MHz + // - 4: 16.67MHz + // - 5: 14MHz unsigned int systemFlags[32]; // song information diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 7d7fa050..94dbd5b4 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3092,7 +3092,12 @@ void FurnaceGUI::drawInsEdit() { int panMax=0; bool panSingle=false; bool panSingleNoBit=false; - if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPL || ins->type==DIV_INS_GB || ins->type==DIV_INS_OPZ || ins->type==DIV_INS_VERA) { + if (ins->type==DIV_INS_STD ||//Game Gear + ins->type==DIV_INS_FM || + ins->type==DIV_INS_OPL || + ins->type==DIV_INS_GB || + ins->type==DIV_INS_OPZ || + ins->type==DIV_INS_VERA) { panMax=1; panSingle=true; } diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 994902e8..a841f15b 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -221,18 +221,55 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "TI SN76489A", { + DIV_SYSTEM_SMS, 64, 0, 0x40, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "TI SN76496", { + DIV_SYSTEM_SMS, 64, 0, 0x44, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NCR 8496", { + DIV_SYSTEM_SMS, 64, 0, 0x48, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Tandy PSSJ 3-voice sound", { + DIV_SYSTEM_SMS, 64, 0, 0x4c, + // 8 bit DAC + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Sega PSG (SN76489-like)", { DIV_SYSTEM_SMS, 64, 0, 0, 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega PSG (SN76489-like, Stereo)", { + DIV_SYSTEM_SMS, 64, 0, 0xc, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "AY-3-8910", { DIV_SYSTEM_AY8910, 64, 0, 0, 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "AY-3-8914", { + DIV_SYSTEM_AY8910, 64, 0, 48, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Yamaha YM2149(F)", { DIV_SYSTEM_AY8910, 64, 0, 16, @@ -515,6 +552,12 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega Game Gear", { + DIV_SYSTEM_SMS, 64, 0, 0xc, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Game Boy", { DIV_SYSTEM_GB, 64, 0, 0, @@ -603,13 +646,13 @@ void FurnaceGUI::initSystemPresets() { )); cat.systems.push_back(FurnaceGUISysDef( "Neo Geo AES", { - DIV_SYSTEM_YM2610_FULL, 64, 0, 0, + DIV_SYSTEM_YM2610_FULL, 64, 0, 1, 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Neo Geo AES (extended channel 2)", { - DIV_SYSTEM_YM2610_FULL_EXT, 64, 0, 0, + DIV_SYSTEM_YM2610_FULL_EXT, 64, 0, 1, 0 } )); @@ -779,7 +822,7 @@ void FurnaceGUI::initSystemPresets() { cat.systems.push_back(FurnaceGUISysDef( "MSX + Playsoniq", { DIV_SYSTEM_AY8910, 64, 0, 16, - DIV_SYSTEM_SMS, 64, 0, 0, + DIV_SYSTEM_SMS, 64, 0, 0, // Sega VDP DIV_SYSTEM_C64_8580, 64, 0, 0, DIV_SYSTEM_SCC_PLUS, 64, 0, 0, 0 @@ -800,26 +843,110 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "NEC PC-98 (with PC-9801-26K)", { - DIV_SYSTEM_OPN, 64, 0, 3, + "NEC PC-98 (with PC-9801-26/K)", { + DIV_SYSTEM_OPN, 64, 0, 4, // 3.9936MHz but some compatible card has 4MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NEC PC-98 (with PC-9801-26K; extended channel 3)", { - DIV_SYSTEM_OPN_EXT, 64, 0, 3, + "NEC PC-98 (with PC-9801-26/K; extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 4, // 3.9936MHz but some compatible card has 4MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NEC PC-98 (with PC-9801-86)", { - DIV_SYSTEM_PC98, 64, 0, 3, + "NEC PC-98 (with Sound Orchestra)", { + DIV_SYSTEM_OPN, 64, 0, 4, + DIV_SYSTEM_OPL2, 64, 0, 4, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NEC PC-98 (with PC-9801-86; extended channel 3)", { - DIV_SYSTEM_PC98_EXT, 64, 0, 3, + "NEC PC-98 (with Sound Orchestra; extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 4, + DIV_SYSTEM_OPL2, 64, 0, 4, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Orchestra in drums mode)", { + DIV_SYSTEM_OPN, 64, 0, 4, + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 4, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Orchestra in drums mode; extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 4, + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 4, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Orchestra V)", { + DIV_SYSTEM_OPN, 64, 0, 4, + DIV_SYSTEM_Y8950, 64, 0, 4, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Orchestra V; extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 4, + DIV_SYSTEM_Y8950, 64, 0, 4, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Orchestra V in drums mode)", { + DIV_SYSTEM_OPN, 64, 0, 4, + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 4, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Orchestra V in drums mode; extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 4, + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 4, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with PC-9801-86)", { // -73 also has OPNA + DIV_SYSTEM_PC98, 64, 0, 1, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with PC-9801-86; extended channel 3)", { // -73 also has OPNA + DIV_SYSTEM_PC98_EXT, 64, 0, 1, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Blaster 16 for PC-9800 w/PC-9801-26/K compatible)", { + DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPL3, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Blaster 16 for PC-9800 w/PC-9801-26/K compatible; extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPL3, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Blaster 16 for PC-9800 w/PC-9801-26/K compatible in drums mode)", { + DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPL3_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "NEC PC-98 (with Sound Blaster 16 for PC-9800 w/PC-9801-26/K compatible in drums mode; extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPL3_DRUMS, 64, 0, 2, 0 } )); @@ -839,8 +966,76 @@ void FurnaceGUI::initSystemPresets() { cat.systems.push_back(FurnaceGUISysDef( "ZX Spectrum (128K) with TurboSound FM", { DIV_SYSTEM_AY8910, 64, 0, 1, - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_OPN, 64, 0, 0, + DIV_SYSTEM_OPN, 64, 0, 1, + DIV_SYSTEM_OPN, 64, 0, 1, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound FM (extended channel 3 on first OPN)", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + DIV_SYSTEM_OPN, 64, 0, 1, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound FM (extended channel 3 on second OPN)", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_OPN, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound FM (extended channel 3 on both OPNs)", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound FM + SAA", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_OPN, 64, 0, 1, + DIV_SYSTEM_OPN, 64, 0, 1, + DIV_SYSTEM_SAA1099, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound FM + SAA (extended channel 3 on first OPN)", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + DIV_SYSTEM_OPN, 64, 0, 1, + DIV_SYSTEM_SAA1099, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound FM + SAA (extended channel 3 on second OPN)", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_OPN, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + DIV_SYSTEM_SAA1099, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound FM + SAA (extended channel 3 on both OPNs)", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + DIV_SYSTEM_OPN_EXT, 64, 0, 1, + DIV_SYSTEM_SAA1099, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ZX Spectrum (128K) with TurboSound", { + DIV_SYSTEM_AY8910, 64, 0, 1, + DIV_SYSTEM_AY8910, 64, 0, 1, // or YM2149 + DIV_SYSTEM_AY8910, 64, 0, 1, // or YM2149 0 } )); @@ -858,7 +1053,7 @@ void FurnaceGUI::initSystemPresets() { )); cat.systems.push_back(FurnaceGUISysDef( "BBC Micro", { - DIV_SYSTEM_SMS, 64, 0, 6, + DIV_SYSTEM_SMS, 64, 0, 0x42, // SN76489A 4MHz 0 } )); @@ -868,6 +1063,20 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "IBM PCjr", { + // it can be enable sound output at once + DIV_SYSTEM_SMS, 64, 0, 0x44, // SN76496 + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Tandy 1000", { + DIV_SYSTEM_SMS, 64, 0, 0x44, // NCR 8496 or SN76496 or Tandy PSSJ(with 8 bit DAC) + DIV_SYSTEM_PCSPKR, 64, 0, 0, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "PC + Covox Sound Master", { DIV_SYSTEM_AY8930, 64, 0, 3, @@ -990,7 +1199,7 @@ void FurnaceGUI::initSystemPresets() { )); cat.systems.push_back(FurnaceGUISysDef( "FM Towns", { - DIV_SYSTEM_YM2612, 64, 0, 2, + DIV_SYSTEM_YM2612, 64, 0, 2, // YM3438 DIV_SYSTEM_RF5C68, 64, 0, 0, 0 } @@ -1007,32 +1216,172 @@ void FurnaceGUI::initSystemPresets() { cat=FurnaceGUISysCategory("Arcade systems","INSERT COIN"); cat.systems.push_back(FurnaceGUISysDef( "Bally Midway MCR", { - DIV_SYSTEM_AY8910, 64, 0, 0, - DIV_SYSTEM_AY8910, 64, 0, 0, + // SSIO sound board + DIV_SYSTEM_AY8910, 64, 0, 3, // 2MHz + DIV_SYSTEM_AY8910, 64, 0, 3, // 2MHz + // additional sound boards, mostly software controlled DAC 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Gyruss", { + "Konami Gyruss", { DIV_SYSTEM_AY8910, 64, 0, 0, DIV_SYSTEM_AY8910, 64, 0, 0, DIV_SYSTEM_AY8910, 64, 0, 0, DIV_SYSTEM_AY8910, 64, 0, 0, DIV_SYSTEM_AY8910, 64, 0, 0, + // additional discrete sound logics + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Konami Bubble System", { + DIV_SYSTEM_AY8910, 64, 0, 0, + DIV_SYSTEM_AY8910, 64, 0, 0, + DIV_SYSTEM_BUBSYS_WSG, 64, 0, 0, + // VLM5030 exists but not used for music at all + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Konami Hexion", { + DIV_SYSTEM_SCC, 64, 0, 2, // 1.5MHz (3MHz input) + DIV_SYSTEM_MSM6295, 64, 0, 1, 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Sega Kyugo", { - DIV_SYSTEM_AY8910, 64, 0, 4, - DIV_SYSTEM_AY8910, 64, 0, 4, + DIV_SYSTEM_AY8910, 64, 0, 14, + DIV_SYSTEM_AY8910, 64, 0, 14, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 1", { + DIV_SYSTEM_SMS, 64, 0, 0x42, // SN76489A 4MHz + DIV_SYSTEM_SMS, 64, 0, 0x0141, // SN76489A 2MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega Hang-On", { + DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz + DIV_SYSTEM_SEGAPCM, 64, 0, 0, // discrete logics, 62.5KHz output rate + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega Hang-On (extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4MHz + DIV_SYSTEM_SEGAPCM, 64, 0, 0, // discrete logics, 62.5KHz output rate 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Sega OutRun/X Board", { - DIV_SYSTEM_YM2151, 64, 0, 2, - DIV_SYSTEM_SEGAPCM, 64, 0, 0, + DIV_SYSTEM_YM2151, 64, 0, 2, // 4MHz + DIV_SYSTEM_SEGAPCM, 64, 0, 0, // ASIC, 31.25KHz output rate + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 18", { + DIV_SYSTEM_YM2612, 64, 0, 2, // discrete 8MHz YM3438 + DIV_SYSTEM_YM2612, 64, 0, 2, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 1, // 10MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 18 (extended channel 3 on first OPN2C)", { + DIV_SYSTEM_YM2612_EXT, 64, 0, 2, // discrete 8MHz YM3438 + DIV_SYSTEM_YM2612, 64, 0, 2, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 1, // 10MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 18 (extended channel 3 on second OPN2C)", { + DIV_SYSTEM_YM2612, 64, 0, 2, // discrete 8MHz YM3438 + DIV_SYSTEM_YM2612_EXT, 64, 0, 2, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 1, // 10MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 18 (extended channel 3 on both OPN2Cs)", { + DIV_SYSTEM_YM2612_EXT, 64, 0, 2, // discrete 8MHz YM3438 + DIV_SYSTEM_YM2612_EXT, 64, 0, 2, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 1, // 10MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 32", { + DIV_SYSTEM_YM2612, 64, 0, 4, // discrete 8.05MHz YM3438 + DIV_SYSTEM_YM2612, 64, 0, 4, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 2, // 12.5MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 32 (extended channel 3 on first OPN2C)", { + DIV_SYSTEM_YM2612_EXT, 64, 0, 4, // discrete 8.05MHz YM3438 + DIV_SYSTEM_YM2612, 64, 0, 4, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 2, // 12.5MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 32 (extended channel 3 on second OPN2C)", { + DIV_SYSTEM_YM2612, 64, 0, 4, // discrete 8.05MHz YM3438 + DIV_SYSTEM_YM2612_EXT, 64, 0, 4, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 2, // 12.5MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 32 (extended channel 3 on both OPN2Cs)", { + DIV_SYSTEM_YM2612_EXT, 64, 0, 4, // discrete 8.05MHz YM3438 + DIV_SYSTEM_YM2612_EXT, 64, 0, 4, // ^^ + DIV_SYSTEM_RF5C68, 64, 0, 2, // 12.5MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Capcom Exed Eyes", { + DIV_SYSTEM_AY8910, 64, 0, 4, // 1.5MHz + DIV_SYSTEM_SMS, 64, 0, 0x0104, // SN76489 3MHz + DIV_SYSTEM_SMS, 64, 0, 0x0104, // SN76489 3MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Capcom Arcade", { // 1943, Side arms, etc + DIV_SYSTEM_OPN, 64, 0, 5, // 4 or 1.5MHz; various per games + DIV_SYSTEM_OPN, 64, 0, 5, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Capcom Arcade (extended channel 3 on first OPN)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 5, + DIV_SYSTEM_OPN, 64, 0, 5, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Capcom Arcade (extended channel 3 on second OPN)", { + DIV_SYSTEM_OPN, 64, 0, 5, + DIV_SYSTEM_OPN_EXT, 64, 0, 5, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Capcom Arcade (extended channel 3 on both OPNs)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 5, + DIV_SYSTEM_OPN_EXT, 64, 0, 5, 0 } )); @@ -1043,145 +1392,433 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Capcom CPS-2 (QSound)", { + DIV_SYSTEM_QSOUND, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Jaleco Ginga NinkyouDen", { + DIV_SYSTEM_AY8910, 64, 0, 16, // 1.79MHz + DIV_SYSTEM_Y8950, 64, 0, 0, // 3.58MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Jaleco Ginga NinkyouDen (drums mode)", { + DIV_SYSTEM_AY8910, 64, 0, 16, // 1.79MHz + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 0, // 3.58MHz + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Jaleco Mega System 1", { - DIV_SYSTEM_YM2151, 64, 0, 2, - DIV_SYSTEM_MSM6295, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 0, + DIV_SYSTEM_YM2151, 64, 0, 1, // 3.5MHz (7MHz / 2) + DIV_SYSTEM_MSM6295, 64, 0, 2, // 4MHz + DIV_SYSTEM_MSM6295, 64, 0, 2, // 4MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( "NMK 16-bit Arcade", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 2, - DIV_SYSTEM_MSM6295, 64, 0, 2, + DIV_SYSTEM_OPN, 64, 0, 5, // 1.5MHz; optional + DIV_SYSTEM_MSM6295, 64, 0, 130, // 4MHz + DIV_SYSTEM_MSM6295, 64, 0, 130, // ^^ 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Data East Arcade", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_OPL2, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 0, + "NMK 16-bit Arcade (extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 5, // 1.5MHz; optional + DIV_SYSTEM_MSM6295, 64, 0, 130, // 4MHz + DIV_SYSTEM_MSM6295, 64, 0, 130, // ^^ + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Kaneko DJ Boy", { + DIV_SYSTEM_OPN, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, -127, 12, // 1.5MHz, Left output + DIV_SYSTEM_MSM6295, 64, 127, 12, // 1.5MHz, Right output + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Kaneko DJ Boy (extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, -127, 12, // 1.5MHz, Left output + DIV_SYSTEM_MSM6295, 64, 127, 12, // 1.5MHz, Right output + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Kaneko Air Buster", { + DIV_SYSTEM_OPN, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, 0, 141, // 3MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Kaneko Air Buster (extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, 0, 141, // 3MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Kaneko Toybox System", { - DIV_SYSTEM_AY8910, 64, 0, 1, - DIV_SYSTEM_AY8910, 64, 0, 1, - DIV_SYSTEM_MSM6295, 64, 0, 0, + DIV_SYSTEM_AY8910, 64, 0, 19, // YM2149 2MHz + DIV_SYSTEM_AY8910, 64, 0, 19, // ^^ + DIV_SYSTEM_MSM6295, 64, 0, 8, // 2MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Tecmo Arcade", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 0, + "Kaneko Jackie Chan", { + DIV_SYSTEM_YMZ280B, 64, 0, 3, // 16MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Seibu Kaihatsu Arcade", { - DIV_SYSTEM_OPL2, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 0, + "Super Kaneko Nova System", { + DIV_SYSTEM_YMZ280B, 64, 0, 4, // 16.67MHz (33.33MHz / 2) 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Data East Arcade (Dark Seal)", { - DIV_SYSTEM_YM2151, 64, 0, 2, - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 8, + "Tecmo Ninja Gaiden", { // Ninja Gaiden, Raiga, etc + DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Tecmo Ninja Gaiden (extended channel 3 on first OPN)", { // Ninja Gaiden, Raiga, etc + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Tecmo Ninja Gaiden (extended channel 3 on second OPN)", { // Ninja Gaiden, Raiga, etc + DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Tecmo Ninja Gaiden (extended channel 3 on both OPNs)", { // Ninja Gaiden, Raiga, etc + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4MHz + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Tecmo System", { + DIV_SYSTEM_OPL3, 64, 0, 0, + DIV_SYSTEM_YMZ280B, 64, 0, 0, + DIV_SYSTEM_MSM6295, 64, 0, 8, // 2MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Tecmo System (drums mode)", { + DIV_SYSTEM_OPL3_DRUMS, 64, 0, 0, + DIV_SYSTEM_YMZ280B, 64, 0, 0, + DIV_SYSTEM_MSM6295, 64, 0, 8, // 2MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Seibu Kaihatsu Raiden", { // Raiden, Seibu cup soccer, Zero team, etc + DIV_SYSTEM_OPL2, 64, 0, 0, // YM3812 3.58MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1 or 1.023MHz (28.636363MHz / 28); various per games + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Seibu Kaihatsu Raiden (drums mode)", { // Raiden, Seibu cup soccer, Zero team, etc + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 0, // YM3812 3.58MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1 or 1.023MHz (28.636363MHz / 28); various per games + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sunsoft Shanghai 3", { + DIV_SYSTEM_AY8910, 64, 0, 20, // YM2149 1.5MHz + DIV_SYSTEM_MSM6295, 64, 0, 1, // 1.056MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Sunsoft Arcade", { - DIV_SYSTEM_YM2612, 64, 0, 4, - DIV_SYSTEM_MSM6295, 64, 0, 0, + DIV_SYSTEM_YM2612, 64, 0, 2, // discrete YM3438 8MHz + DIV_SYSTEM_MSM6295, 64, 0, 1, // 1.056MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Atari Arcade (Rampart)", { - DIV_SYSTEM_OPLL, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 0, + "Sunsoft Arcade (extended channel 3)", { + DIV_SYSTEM_YM2612_EXT, 64, 0, 2, // discrete YM3438 8MHz + DIV_SYSTEM_MSM6295, 64, 0, 1, // 1.056MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Data East Deco 156", { - DIV_SYSTEM_MSM6295, 64, 0, 0, - DIV_SYSTEM_MSM6295, 64, 0, 8, + "Atari Klax", { + DIV_SYSTEM_MSM6295, 64, 0, 7, // 0.895MHz (3.579545MHz / 4) 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "SNK Triple Z80 (Chopper)", { //or Namco? - DIV_SYSTEM_Y8950, 64, 0, 0, - DIV_SYSTEM_OPL2, 64, 0, 0, + "Atari Rampart", { + DIV_SYSTEM_OPLL, 64, 0, 0, // 3.579545MHz + DIV_SYSTEM_MSM6295, 64, 0, 14, // 1.193MHz (3.579545MHz / 3) 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Sega System 18", { - DIV_SYSTEM_YM2612, 64, 0, 2, - DIV_SYSTEM_YM2612, 64, 0, 2, - DIV_SYSTEM_RF5C68, 64, 0, 1, + "Atari Rampart (drums mode)", { + DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, // 3.579545MHz + DIV_SYSTEM_MSM6295, 64, 0, 14, // 1.193MHz (3.579545MHz / 3) 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Sega System 1", { - DIV_SYSTEM_SMS, 64, 0, 2, - DIV_SYSTEM_SMS, 64, 0, 3, - 0 - } - )); - cat.systems.push_back(FurnaceGUISysDef( - "Sega System 32", { - DIV_SYSTEM_YM2612, 64, 0, 4, - DIV_SYSTEM_YM2612, 64, 0, 4, - DIV_SYSTEM_RF5C68, 64, 0, 2, - 0 - } - )); - cat.systems.push_back(FurnaceGUISysDef( - "Sega Hang-On", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_SEGAPCM, 64, 0, 0, - 0 - } - )); - cat.systems.push_back(FurnaceGUISysDef( - "SNK Alpha-68K", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_OPLL, 64, 0, 0, + "Atari JSA IIIs", { + DIV_SYSTEM_YM2151, 64, 0, 0, // 3.579545MHz + DIV_SYSTEM_MSM6295, 64, -127, 14, // 1.193MHz (3.579545MHz / 3), Left output + DIV_SYSTEM_MSM6295, 64, 127, 14, // 1.193MHz (3.579545MHz / 3), Right output 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Data East Karnov", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_OPL, 64, 0, 0, + DIV_SYSTEM_OPN, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL, 64, 0, 3, // 3MHz 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Capcom Arcade", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_OPN, 64, 0, 0, + "Data East Karnov (extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL, 64, 0, 3, // 3MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Karnov (drums mode)", { + DIV_SYSTEM_OPN, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL_DRUMS, 64, 0, 3, // 3MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Karnov (extended channel 3; drums mode)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL_DRUMS, 64, 0, 3, // 3MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Arcade", { // Bad dudes, Robocop, etc + DIV_SYSTEM_OPN, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL2, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1 to 1.056MHz; various per games or optional + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Arcade (extended channel 3)", { // Bad dudes, Robocop, etc + DIV_SYSTEM_OPN_EXT, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL2, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1 to 1.056MHz; various per games or optional + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Arcade (drums mode)", { // Bad dudes, Robocop, etc + DIV_SYSTEM_OPN, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1 to 1.056MHz; various per games or optional + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Arcade (extended channel 3; drums mode)", { // Bad dudes, Robocop, etc + DIV_SYSTEM_OPN_EXT, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 3, // 3MHz + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1 to 1.056MHz; various per games or optional 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Data East PCX", { - DIV_SYSTEM_OPN, 64, 0, 0, - DIV_SYSTEM_PCE, 64, 0, 2, + DIV_SYSTEM_OPN, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_PCE, 64, 0, 0, + // software controlled MSM5205 + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East PCX (extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 5, // 1.5MHz + DIV_SYSTEM_PCE, 64, 0, 0, + // software controlled MSM5205 + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Dark Seal", { // Dark Seal, Crude Buster, Vapor Trail, etc + DIV_SYSTEM_YM2151, 64, 0, 0, // 3.580MHz (32.22MHz / 9) + DIV_SYSTEM_OPN, 64, 0, 2, // 4.0275MHz (32.22MHz / 8); optional + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1.007MHz (32.22MHz / 32) + DIV_SYSTEM_MSM6295, 64, 0, 8, // 2.014MHz (32.22MHz / 16); optional + // HuC6280 is for control them, internal sound isn't used + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Dark Seal (extended channel 3)", { // Dark Seal, Crude Buster, Vapor Trail, etc + DIV_SYSTEM_YM2151, 64, 0, 0, // 3.580MHz (32.22MHz / 9) + DIV_SYSTEM_OPN_EXT, 64, 0, 2, // 4.0275MHz (32.22MHz / 8); optional + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1.007MHz (32.22MHz / 32) + DIV_SYSTEM_MSM6295, 64, 0, 8, // 2.014MHz (32.22MHz / 16); optional + // HuC6280 is for control them, internal sound isn't used + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East Deco 156", { + DIV_SYSTEM_MSM6295, 64, 0, 0, // 1 or 1.007MHz (32.22MHz / 32); various per games + DIV_SYSTEM_MSM6295, 64, 0, 8, // 1 or 2 or 2.014MHz (32.22MHz / 16); various per games + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Data East MLC", { + DIV_SYSTEM_YMZ280B, 64, 0, 5, // 14MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Ikari Warriors", { + DIV_SYSTEM_OPL, 64, 0, 2, + DIV_SYSTEM_OPL, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Ikari Warriors (drums mode on first OPL)", { + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + DIV_SYSTEM_OPL, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Ikari Warriors (drums mode on second OPL)", { + DIV_SYSTEM_OPL, 64, 0, 2, + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Ikari Warriors (drums mode on both OPLs)", { + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Triple Z80", { + DIV_SYSTEM_Y8950, 64, 0, 2, + DIV_SYSTEM_OPL, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Triple Z80 (drums mode on Y8950)", { + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 2, + DIV_SYSTEM_OPL, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Triple Z80 (drums mode on OPL)", { + DIV_SYSTEM_Y8950, 64, 0, 2, + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Triple Z80 (drums mode on Y8950 and OPL)", { + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 2, + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Chopper I", { + DIV_SYSTEM_Y8950, 64, 0, 2, + DIV_SYSTEM_OPL2, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Chopper I (drums mode on Y8950)", { + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 2, + DIV_SYSTEM_OPL2, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Chopper I (drums mode on OPL2)", { + DIV_SYSTEM_Y8950, 64, 0, 2, + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Chopper I (drums mode on Y8950 and OPL2)", { + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 2, + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Alpha denshi Alpha-68K", { + DIV_SYSTEM_OPN, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPLL, 64, 0, 0, // 3.58MHz + // software controlled 8 bit DAC + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Alpha denshi Alpha-68K (extended channel 3)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPLL, 64, 0, 0, // 3.58MHz + // software controlled 8 bit DAC + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Alpha denshi Alpha-68K (drums mode)", { + DIV_SYSTEM_OPN, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, // 3.58MHz + // software controlled 8 bit DAC + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Alpha denshi Alpha-68K (extended channel 3; drums mode)", { + DIV_SYSTEM_OPN_EXT, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, // 3.58MHz + // software controlled 8 bit DAC 0 } )); @@ -1198,35 +1835,34 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "Capcom Exed Eyes", { - DIV_SYSTEM_AY8910, 64, 0, 0, - DIV_SYSTEM_SMS, 64, 0, 0, - DIV_SYSTEM_SMS, 64, 0, 0, + "Nichibutsu Mag Max", { + DIV_SYSTEM_AY8910, 64, 0, 13, + DIV_SYSTEM_AY8910, 64, 0, 13, + DIV_SYSTEM_AY8910, 64, 0, 13, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Nichibutsu Arcade", { - DIV_SYSTEM_AY8910, 64, 0, 0, - DIV_SYSTEM_AY8910, 64, 0, 0, - DIV_SYSTEM_AY8910, 64, 0, 0, - 0 - } - )); - cat.systems.push_back(FurnaceGUISysDef( - "Namco (3-channel WSG)", { + "Namco (3-channel WSG)", { // Pac-Man, Galaga, Xevious, etc DIV_SYSTEM_NAMCO, 64, 0, 0, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Namco (8-channel WSG)", { + "Namco Mappy", { // Mappy, Super Pac-Man, Libble Rabble, etc DIV_SYSTEM_NAMCO_15XX, 64, 0, 0, 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Namco Pac-Land", { // Pac-Land, Baraduke, Sky kid, etc + DIV_SYSTEM_NAMCO_CUS30, 64, 0, 0, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Namco System 1", { + DIV_SYSTEM_YM2151, 64, 0, 0, DIV_SYSTEM_NAMCO_CUS30, 64, 0, 0, 0 } @@ -1243,12 +1879,6 @@ void FurnaceGUI::initSystemPresets() { 0 } )); - cat.systems.push_back(FurnaceGUISysDef( - "Capcom CPS-2 (QSound)", { - DIV_SYSTEM_QSOUND, 64, 0, 0, - 0 - } - )); cat.systems.push_back(FurnaceGUISysDef( "Seta 1", { DIV_SYSTEM_X1_010, 64, 0, 0, @@ -1275,18 +1905,37 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "SNK Triple Z80", { - DIV_SYSTEM_Y8950, 64, 0, 0, - DIV_SYSTEM_OPL, 64, 0, 0, + "Coreland Cyber Tank", { + DIV_SYSTEM_Y8950, 64, -127, 0, // 3.58MHz, Left output + DIV_SYSTEM_Y8950, 64, 127, 0, // 3.58MHz, Right output 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "Konami Bubble System", { - DIV_SYSTEM_AY8910, 64, 0, 0, - DIV_SYSTEM_AY8910, 64, 0, 0, - DIV_SYSTEM_BUBSYS_WSG, 64, 0, 0, - // VLM5030 exists but not used for music at all + "Coreland Cyber Tank (drums mode)", { + DIV_SYSTEM_Y8950, 64, -127, 0, // 3.58MHz, Left output + DIV_SYSTEM_Y8950, 64, 127, 0, // 3.58MHz, Right output + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "ICE Skimaxx", { + DIV_SYSTEM_MSM6295, 64, -127, 130, // 4MHz, Left output + DIV_SYSTEM_MSM6295, 64, 127, 130, // 4MHz, Right output + DIV_SYSTEM_MSM6295, 64, -127, 8, // 2MHz, Left output + DIV_SYSTEM_MSM6295, 64, 127, 8, // 2MHz, Right output + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Toaplan 1", { + DIV_SYSTEM_OPL2, 64, 0, 5, // 3.5MHz + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Toaplan 1 (drums mode)", { + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 5, // 3.5MHz 0 } )); diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 91d542bd..8878ca8f 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -28,19 +28,19 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool case DIV_SYSTEM_YM2612_EXT: case DIV_SYSTEM_YM2612_FRAC: case DIV_SYSTEM_YM2612_FRAC_EXT: { - if (ImGui::RadioButton("NTSC (7.67MHz)",(flags&7)==0)) { + if (ImGui::RadioButton("NTSC (7.67MHz)",(flags&(~0x80000000))==0)) { copyOfFlags=(flags&0x80000000)|0; } - if (ImGui::RadioButton("PAL (7.61MHz)",(flags&7)==1)) { + if (ImGui::RadioButton("PAL (7.61MHz)",(flags&(~0x80000000))==1)) { copyOfFlags=(flags&0x80000000)|1; } - if (ImGui::RadioButton("FM Towns (8MHz)",(flags&7)==2)) { + if (ImGui::RadioButton("FM Towns (8MHz)",(flags&(~0x80000000))==2)) { copyOfFlags=(flags&0x80000000)|2; } - if (ImGui::RadioButton("AtGames Genesis (6.13MHz)",(flags&7)==3)) { + if (ImGui::RadioButton("AtGames Genesis (6.13MHz)",(flags&(~0x80000000))==3)) { copyOfFlags=(flags&0x80000000)|3; } - if (ImGui::RadioButton("Sega System 32 (8.05MHz)",(flags&7)==4)) { + if (ImGui::RadioButton("Sega System 32 (8.05MHz)",(flags&(~0x80000000))==4)) { copyOfFlags=(flags&0x80000000)|4; } bool ladder=flags&0x80000000; @@ -51,43 +51,52 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } case DIV_SYSTEM_SMS: { ImGui::Text("Clock rate:"); - if (ImGui::RadioButton("NTSC (3.58MHz)",(flags&3)==0)) { - copyOfFlags=(flags&(~3))|0; - + if (ImGui::RadioButton("3.58MHz (NTSC)",(flags&0xff03)==0x0000)) { + copyOfFlags=(flags&(~0xff03))|0x0000; } - if (ImGui::RadioButton("PAL (3.55MHz)",(flags&3)==1)) { - copyOfFlags=(flags&(~3))|1; - + if (ImGui::RadioButton("3.55MHz (PAL)",(flags&0xff03)==0x0001)) { + copyOfFlags=(flags&(~0xff03))|0x0001; } - if (ImGui::RadioButton("BBC Micro (4MHz)",(flags&3)==2)) { - copyOfFlags=(flags&(~3))|2; - + if (ImGui::RadioButton("4MHz (BBC Micro)",(flags&0xff03)==0x0002)) { + copyOfFlags=(flags&(~0xff03))|0x0002; } - if (ImGui::RadioButton("Half NTSC (1.79MHz)",(flags&3)==3)) { - copyOfFlags=(flags&(~3))|3; - + if (ImGui::RadioButton("1.79MHz (Half NTSC)",(flags&0xff03)==0x0003)) { + copyOfFlags=(flags&(~0xff03))|0x0003; + } + if (ImGui::RadioButton("3MHz (Exed Exes)",(flags&0xff03)==0x0100)) { + copyOfFlags=(flags&(~0xff03))|0x0100; + } + if (ImGui::RadioButton("2MHz (Sega System 1)",(flags&0xff03)==0x0101)) { + copyOfFlags=(flags&(~0xff03))|0x0101; } ImGui::Text("Chip type:"); - if (ImGui::RadioButton("Sega VDP/Master System",((flags>>2)&3)==0)) { - copyOfFlags=(flags&(~12))|0; - + if (ImGui::RadioButton("Sega VDP/Master System",(flags&0xcc)==0x00)) { + copyOfFlags=(flags&(~0xcc))|0x00; } - if (ImGui::RadioButton("TI SN76489",((flags>>2)&3)==1)) { - copyOfFlags=(flags&(~12))|4; - + if (ImGui::RadioButton("TI SN76489",(flags&0xcc)==0x04)) { + copyOfFlags=(flags&(~0xcc))|0x04; } - if (ImGui::RadioButton("TI SN76489 with Atari-like short noise",((flags>>2)&3)==2)) { - copyOfFlags=(flags&(~12))|8; - + if (ImGui::RadioButton("TI SN76489 with Atari-like short noise",(flags&0xcc)==0x08)) { + copyOfFlags=(flags&(~0xcc))|0x08; + } + if (ImGui::RadioButton("Game Gear",(flags&0xcc)==0x0c)) { + copyOfFlags=(flags&(~0xcc))|0x0c; + } + if (ImGui::RadioButton("TI SN76489A",(flags&0xcc)==0x40)) { + copyOfFlags=(flags&(~0xcc))|0x40; + } + if (ImGui::RadioButton("TI SN76496",(flags&0xcc)==0x44)) { + copyOfFlags=(flags&(~0xcc))|0x44; + } + if (ImGui::RadioButton("NCR 8496",(flags&0xcc)==0x48)) { + copyOfFlags=(flags&(~0xcc))|0x48; + } + if (ImGui::RadioButton("Tandy PSSJ 3-voice sound",(flags&0xcc)==0x4c)) { + copyOfFlags=(flags&(~0xcc))|0x4c; } - /*if (ImGui::RadioButton("Game Gear",(flags>>2)==3)) { - copyOfFlags=(flags&3)|12); - }*/ - bool noPhaseReset=flags&16; if (ImGui::Checkbox("Disable noise period change phase reset",&noPhaseReset)) { copyOfFlags=(flags&(~16))|(noPhaseReset<<4); - } break; } @@ -97,37 +106,29 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool ImGui::Text("Clock rate:"); if (ImGui::RadioButton("NTSC (3.58MHz)",(flags&15)==0)) { copyOfFlags=(flags&(~15))|0; - } if (ImGui::RadioButton("PAL (3.55MHz)",(flags&15)==1)) { copyOfFlags=(flags&(~15))|1; - } if (ImGui::RadioButton("BBC Micro (4MHz)",(flags&15)==2)) { copyOfFlags=(flags&(~15))|2; - } if (ImGui::RadioButton("Half NTSC (1.79MHz)",(flags&15)==3)) { copyOfFlags=(flags&(~15))|3; - } if (type!=DIV_SYSTEM_VRC7) { ImGui::Text("Patch set:"); if (ImGui::RadioButton("Yamaha YM2413",((flags>>4)&15)==0)) { copyOfFlags=(flags&(~0xf0))|0; - } if (ImGui::RadioButton("Yamaha YMF281",((flags>>4)&15)==1)) { copyOfFlags=(flags&(~0xf0))|0x10; - } if (ImGui::RadioButton("Yamaha YM2423",((flags>>4)&15)==2)) { copyOfFlags=(flags&(~0xf0))|0x20; - } if (ImGui::RadioButton("Konami VRC7",((flags>>4)&15)==3)) { copyOfFlags=(flags&(~0xf0))|0x30; - } } break; @@ -135,15 +136,12 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool case DIV_SYSTEM_YM2151: if (ImGui::RadioButton("NTSC/X16 (3.58MHz)",flags==0)) { copyOfFlags=0; - } if (ImGui::RadioButton("PAL (3.55MHz)",flags==1)) { copyOfFlags=1; - } if (ImGui::RadioButton("X1/X68000 (4MHz)",flags==2)) { copyOfFlags=2; - } break; case DIV_SYSTEM_NES: @@ -152,30 +150,37 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool case DIV_SYSTEM_MMC5: if (ImGui::RadioButton("NTSC (1.79MHz)",flags==0)) { copyOfFlags=0; - } if (ImGui::RadioButton("PAL (1.67MHz)",flags==1)) { copyOfFlags=1; - } if (ImGui::RadioButton("Dendy (1.77MHz)",flags==2)) { copyOfFlags=2; - } break; case DIV_SYSTEM_C64_8580: case DIV_SYSTEM_C64_6581: if (ImGui::RadioButton("NTSC (1.02MHz)",flags==0)) { copyOfFlags=0; - } if (ImGui::RadioButton("PAL (0.99MHz)",flags==1)) { copyOfFlags=1; - } if (ImGui::RadioButton("SSI 2001 (0.89MHz)",flags==2)) { copyOfFlags=2; - + } + break; + case DIV_SYSTEM_YM2610: + case DIV_SYSTEM_YM2610_EXT: + case DIV_SYSTEM_YM2610_FULL: + case DIV_SYSTEM_YM2610_FULL_EXT: + case DIV_SYSTEM_YM2610B: + case DIV_SYSTEM_YM2610B_EXT: + if (ImGui::RadioButton("8MHz (Neo Geo MVS)",(flags&0xff)==0)) { + copyOfFlags=(flags&(~0xff))|0; + } + if (ImGui::RadioButton("8.06MHz (Neo Geo AES)",(flags&0xff)==1)) { + copyOfFlags=(flags&(~0xff))|1; } break; case DIV_SYSTEM_AY8910: @@ -183,87 +188,74 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool ImGui::Text("Clock rate:"); if (ImGui::RadioButton("1.79MHz (ZX Spectrum NTSC/MSX)",(flags&15)==0)) { copyOfFlags=(flags&(~15))|0; - } if (ImGui::RadioButton("1.77MHz (ZX Spectrum)",(flags&15)==1)) { copyOfFlags=(flags&(~15))|1; - } if (ImGui::RadioButton("1.75MHz (ZX Spectrum)",(flags&15)==2)) { copyOfFlags=(flags&(~15))|2; - } if (ImGui::RadioButton("2MHz (Atari ST/Sharp X1)",(flags&15)==3)) { copyOfFlags=(flags&(~15))|3; - } if (ImGui::RadioButton("1.5MHz (Vectrex)",(flags&15)==4)) { copyOfFlags=(flags&(~15))|4; - } if (ImGui::RadioButton("1MHz (Amstrad CPC)",(flags&15)==5)) { copyOfFlags=(flags&(~15))|5; - } if (ImGui::RadioButton("0.89MHz (Pre-divided Sunsoft 5B)",(flags&15)==6)) { copyOfFlags=(flags&(~15))|6; - } if (ImGui::RadioButton("1.67MHz (?)",(flags&15)==7)) { copyOfFlags=(flags&(~15))|7; - } if (ImGui::RadioButton("0.83MHz (Pre-divided Sunsoft 5B on PAL)",(flags&15)==8)) { copyOfFlags=(flags&(~15))|8; - } if (ImGui::RadioButton("1.10MHz (Gamate/VIC-20 PAL)",(flags&15)==9)) { copyOfFlags=(flags&(~15))|9; - } if (ImGui::RadioButton("2^21Hz (Game Boy)",(flags&15)==10)) { copyOfFlags=(flags&(~15))|10; - } if (ImGui::RadioButton("3.58MHz (Darky)",(flags&15)==11)) { copyOfFlags=(flags&(~15))|11; - } if (ImGui::RadioButton("3.6MHz (Darky)",(flags&15)==12)) { copyOfFlags=(flags&(~15))|12; - + } + if (ImGui::RadioButton("1.25MHz (Mag Max)",(flags&15)==13)) { + copyOfFlags=(flags&(~15))|13; + } + if (ImGui::RadioButton("1.536MHz (Kyugo)",(flags&15)==14)) { + copyOfFlags=(flags&(~15))|14; } if (type==DIV_SYSTEM_AY8910) { ImGui::Text("Chip type:"); if (ImGui::RadioButton("AY-3-8910",(flags&0x30)==0)) { copyOfFlags=(flags&(~0x30))|0; - } if (ImGui::RadioButton("YM2149(F)",(flags&0x30)==16)) { copyOfFlags=(flags&(~0x30))|16; - } if (ImGui::RadioButton("Sunsoft 5B",(flags&0x30)==32)) { copyOfFlags=(flags&(~0x30))|32; - } if (ImGui::RadioButton("AY-3-8914",(flags&0x30)==48)) { copyOfFlags=(flags&(~0x30))|48; - } } bool stereo=flags&0x40; ImGui::BeginDisabled((type==DIV_SYSTEM_AY8910) && ((flags&0x30)==32)); if (ImGui::Checkbox("Stereo##_AY_STEREO",&stereo)) { copyOfFlags=(flags&(~0x40))|(stereo?0x40:0); - } ImGui::EndDisabled(); bool clockSel=flags&0x80; ImGui::BeginDisabled((type==DIV_SYSTEM_AY8910) && ((flags&0x30)!=16)); if (ImGui::Checkbox("Half Clock divider##_AY_CLKSEL",&clockSel)) { copyOfFlags=(flags&(~0x80))|(clockSel?0x80:0); - } ImGui::EndDisabled(); break; @@ -375,86 +367,223 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } break; } - case DIV_SYSTEM_OPN: { - if (ImGui::RadioButton("NTSC (3.58MHz)",(flags&3)==0)) { - copyOfFlags=(flags&0x80000000)|0; + case DIV_SYSTEM_OPN: + case DIV_SYSTEM_OPN_EXT: { + ImGui::Text("Clock rate:"); + if (ImGui::RadioButton("3.58MHz (NTSC)",(flags&31)==0)) { + copyOfFlags=(flags&(~31))|0; } - if (ImGui::RadioButton("PAL (3.54MHz)",(flags&3)==1)) { - copyOfFlags=(flags&0x80000000)|1; + if (ImGui::RadioButton("3.54MHz (PAL)",(flags&31)==1)) { + copyOfFlags=(flags&(~31))|1; } - if (ImGui::RadioButton("Arcade (4MHz)",(flags&3)==2)) { - copyOfFlags=(flags&0x80000000)|2; + if (ImGui::RadioButton("4MHz",(flags&31)==2)) { + copyOfFlags=(flags&(~31))|2; } - if (ImGui::RadioButton("PC-9801-26K? TODO: CONFIRM (3MHz)",(flags&3)==3)) { - copyOfFlags=(flags&0x80000000)|3; + if (ImGui::RadioButton("3MHz",(flags&31)==3)) { + copyOfFlags=(flags&(~31))|3; } + if (ImGui::RadioButton("3.9936MHz (PC-88/PC-98)",(flags&31)==4)) { + copyOfFlags=(flags&(~31))|4; + } + if (ImGui::RadioButton("1.5MHz",(flags&31)==5)) { + copyOfFlags=(flags&(~31))|5; + } + /* + ImGui::Text("Output rate: (DOES NOT WORK YET!)"); + if (ImGui::RadioButton("FM: clock / 72, SSG: clock / 16",(flags&96)==0)) { + copyOfFlags=(flags&(~96))|0; + } + if (ImGui::RadioButton("FM: clock / 36, SSG: clock / 8",(flags&96)==32)) { + copyOfFlags=(flags&(~96))|32; + } + if (ImGui::RadioButton("FM: clock / 24, SSG: clock / 4",(flags&96)==64)) { + copyOfFlags=(flags&(~96))|64; + } + */ + break; + } + case DIV_SYSTEM_PC98: + case DIV_SYSTEM_PC98_EXT: { + ImGui::Text("Clock rate:"); + if (ImGui::RadioButton("8MHz (Arcade)",(flags&31)==0)) { + copyOfFlags=(flags&(~31))|0; + } + if (ImGui::RadioButton("7.987MHz (PC-88/PC-98)",(flags&31)==1)) { + copyOfFlags=(flags&(~31))|1; + } + /* + ImGui::Text("Output rate: (DOES NOT WORK YET!)"); + if (ImGui::RadioButton("FM: clock / 144, SSG: clock / 32",(flags&96)==0)) { + copyOfFlags=(flags&(~96))|0; + } + if (ImGui::RadioButton("FM: clock / 72, SSG: clock / 16",(flags&96)==32)) { + copyOfFlags=(flags&(~96))|32; + } + if (ImGui::RadioButton("FM: clock / 48, SSG: clock / 8",(flags&96)==64)) { + copyOfFlags=(flags&(~96))|64; + } + */ break; } case DIV_SYSTEM_RF5C68: { ImGui::Text("Clock rate:"); if (ImGui::RadioButton("8MHz (FM Towns)",(flags&15)==0)) { copyOfFlags=(flags&(~15))|0; - } if (ImGui::RadioButton("10MHz (Sega System 18)",(flags&15)==1)) { copyOfFlags=(flags&(~15))|1; - } if (ImGui::RadioButton("12.5MHz (Sega CD/System 32)",(flags&15)==2)) { copyOfFlags=(flags&(~15))|2; - } ImGui::Text("Chip type:"); if (ImGui::RadioButton("RF5C68 (10-bit output)",((flags>>4)&15)==0)) { copyOfFlags=(flags&(~240))|0; - } if (ImGui::RadioButton("RF5C164 (16-bit output)",((flags>>4)&15)==1)) { copyOfFlags=(flags&(~240))|16; - } break; } case DIV_SYSTEM_MSM6295: { ImGui::Text("Clock rate:"); - if (ImGui::RadioButton("1MHz",flags==0)) { - copyOfFlags=0; + if (ImGui::RadioButton("1MHz",(flags&127)==0)) { + copyOfFlags=(flags&(~127))|0; } - if (ImGui::RadioButton("1.056MHz",flags==1)) { - copyOfFlags=1; + if (ImGui::RadioButton("1.056MHz",(flags&127)==1)) { + copyOfFlags=(flags&(~127))|1; } - if (ImGui::RadioButton("4MHz",flags==2)) { - copyOfFlags=2; + if (ImGui::RadioButton("4MHz",(flags&127)==2)) { + copyOfFlags=(flags&(~127))|2; } - if (ImGui::RadioButton("4.224MHz",flags==3)) { - copyOfFlags=3; + if (ImGui::RadioButton("4.224MHz",(flags&127)==3)) { + copyOfFlags=(flags&(~127))|3; } - if (ImGui::RadioButton("3.58MHz",flags==4)) { - copyOfFlags=4; + if (ImGui::RadioButton("3.58MHz",(flags&127)==4)) { + copyOfFlags=(flags&(~127))|4; } - if (ImGui::RadioButton("1.79MHz",flags==5)) { - copyOfFlags=5; + if (ImGui::RadioButton("1.79MHz",(flags&127)==5)) { + copyOfFlags=(flags&(~127))|5; } - if (ImGui::RadioButton("1.02MHz",flags==6)) { - copyOfFlags=6; + if (ImGui::RadioButton("1.02MHz",(flags&127)==6)) { + copyOfFlags=(flags&(~127))|6; } - if (ImGui::RadioButton("0.89MHz",flags==7)) { - copyOfFlags=7; + if (ImGui::RadioButton("0.89MHz",(flags&127)==7)) { + copyOfFlags=(flags&(~127))|7; } - if (ImGui::RadioButton("2MHz",flags==8)) { - copyOfFlags=8; + if (ImGui::RadioButton("2MHz",(flags&127)==8)) { + copyOfFlags=(flags&(~127))|8; } - if (ImGui::RadioButton("2.112MHz",flags==9)) { - copyOfFlags=9; + if (ImGui::RadioButton("2.112MHz",(flags&127)==9)) { + copyOfFlags=(flags&(~127))|9; } - if (ImGui::RadioButton("0.875MHz",flags==10)) { - copyOfFlags=10; + if (ImGui::RadioButton("0.875MHz",(flags&127)==10)) { + copyOfFlags=(flags&(~127))|10; } - if (ImGui::RadioButton("0.9375MHz",flags==11)) { - copyOfFlags=11; + if (ImGui::RadioButton("0.9375MHz",(flags&127)==11)) { + copyOfFlags=(flags&(~127))|11; } - if (ImGui::RadioButton("1.5MHz",flags==12)) { - copyOfFlags=12; + if (ImGui::RadioButton("1.5MHz",(flags&127)==12)) { + copyOfFlags=(flags&(~127))|12; + } + if (ImGui::RadioButton("3MHz",(flags&127)==13)) { + copyOfFlags=(flags&(~127))|13; + } + if (ImGui::RadioButton("1.193MHz (Atari)",(flags&127)==14)) { + copyOfFlags=(flags&(~127))|14; + } + ImGui::Text("Output rate:"); + if (ImGui::RadioButton("clock / 132",(flags&128)==0)) { + copyOfFlags=(flags&(~128))|0; + } + if (ImGui::RadioButton("clock / 165",(flags&128)==128)) { + copyOfFlags=(flags&(~128))|128; + } + break; + } + case DIV_SYSTEM_SCC: + case DIV_SYSTEM_SCC_PLUS: { + ImGui::Text("Clock rate:"); + if (ImGui::RadioButton("1.79MHz (NTSC/MSX)",(flags&127)==0)) { + copyOfFlags=(flags&(~127))|0; + } + if (ImGui::RadioButton("1.77MHz (PAL)",(flags&127)==1)) { + copyOfFlags=(flags&(~127))|1; + } + if (ImGui::RadioButton("1.5MHz (Arcade)",(flags&127)==2)) { + copyOfFlags=(flags&(~127))|2; + } + if (ImGui::RadioButton("2MHz",(flags&127)==3)) { + copyOfFlags=(flags&(~127))|3; + } + break; + } + case DIV_SYSTEM_OPL: + case DIV_SYSTEM_OPL_DRUMS: + case DIV_SYSTEM_OPL2: + case DIV_SYSTEM_OPL2_DRUMS: + case DIV_SYSTEM_Y8950: + case DIV_SYSTEM_Y8950_DRUMS: { + ImGui::Text("Clock rate:"); + if (ImGui::RadioButton("3.58MHz (NTSC)",(flags&255)==0)) { + copyOfFlags=(flags&(~255))|0; + } + if (ImGui::RadioButton("3.54MHz (PAL)",(flags&255)==1)) { + copyOfFlags=(flags&(~255))|1; + } + if (ImGui::RadioButton("4MHz",(flags&255)==2)) { + copyOfFlags=(flags&(~255))|2; + } + if (ImGui::RadioButton("3MHz",(flags&255)==3)) { + copyOfFlags=(flags&(~255))|3; + } + if (ImGui::RadioButton("3.9936MHz (PC-88/PC-98)",(flags&255)==4)) { + copyOfFlags=(flags&(~255))|4; + } + if (ImGui::RadioButton("3.5MHz",(flags&255)==5)) { + copyOfFlags=(flags&(~255))|5; + } + break; + } + case DIV_SYSTEM_OPL3: + case DIV_SYSTEM_OPL3_DRUMS: { + ImGui::Text("Clock rate:"); + if (ImGui::RadioButton("14.32MHz (MTSC)",(flags&255)==0)) { + copyOfFlags=(flags&(~255))|0; + } + if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==1)) { + copyOfFlags=(flags&(~255))|1; + } + if (ImGui::RadioButton("14MHz",(flags&255)==2)) { + copyOfFlags=(flags&(~255))|2; + } + if (ImGui::RadioButton("16MHz",(flags&255)==3)) { + copyOfFlags=(flags&(~255))|3; + } + if (ImGui::RadioButton("15MHz",(flags&255)==4)) { + copyOfFlags=(flags&(~255))|4; + } + break; + } + case DIV_SYSTEM_YMZ280B: { + ImGui::Text("Clock rate:"); + if (ImGui::RadioButton("16.9344MHz",(flags&255)==0)) { + copyOfFlags=(flags&(~255))|0; + } + if (ImGui::RadioButton("14.32MHz (MTSC)",(flags&255)==1)) { + copyOfFlags=(flags&(~255))|1; + } + if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==3)) { + copyOfFlags=(flags&(~255))|2; + } + if (ImGui::RadioButton("16MHz",(flags&255)==3)) { + copyOfFlags=(flags&(~255))|3; + } + if (ImGui::RadioButton("16.67MHz",(flags&255)==4)) { + copyOfFlags=(flags&(~255))|4; + } + if (ImGui::RadioButton("14MHz",(flags&255)==5)) { + copyOfFlags=(flags&(~255))|5; } break; } @@ -462,17 +591,8 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool case DIV_SYSTEM_SWAN: case DIV_SYSTEM_VERA: case DIV_SYSTEM_BUBSYS_WSG: - case DIV_SYSTEM_YM2610: - case DIV_SYSTEM_YM2610_EXT: - case DIV_SYSTEM_YM2610_FULL: - case DIV_SYSTEM_YM2610_FULL_EXT: - case DIV_SYSTEM_YM2610B: - case DIV_SYSTEM_YM2610B_EXT: case DIV_SYSTEM_YMU759: case DIV_SYSTEM_PET: - case DIV_SYSTEM_SCC: - case DIV_SYSTEM_SCC_PLUS: - case DIV_SYSTEM_YMZ280B: ImGui::Text("nothing to configure"); break; default: diff --git a/src/main.cpp b/src/main.cpp index 07905852..63cc5efb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -152,6 +152,7 @@ TAParamResult pVersion(String) { printf("- puNES by FHorse (GPLv2)\n"); printf("- reSID by Dag Lem (GPLv2)\n"); printf("- Stella by Stella Team (GPLv2)\n"); + printf("- vgsound_emu by cam900 (BSD 3-clause)\n"); return TA_PARAM_QUIT; } From d1aeabe464daacc1cc55bc473659be18b1cd072a Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 Jun 2022 19:26:34 +0900 Subject: [PATCH 003/580] Fix compile --- src/engine/platform/fmshared_OPM.h | 22 +++++++++++----------- src/engine/platform/fmshared_OPN.h | 24 ++++++++++++------------ src/engine/platform/genesis.cpp | 4 ---- src/engine/platform/genesis.h | 4 ++++ 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/engine/platform/fmshared_OPM.h b/src/engine/platform/fmshared_OPM.h index ed5f63dd..c21d1c18 100644 --- a/src/engine/platform/fmshared_OPM.h +++ b/src/engine/platform/fmshared_OPM.h @@ -22,21 +22,21 @@ #include "fmsharedbase.h" -#define ADDR_MULT_DT 0x40 -#define ADDR_TL 0x60 -#define ADDR_RS_AR 0x80 -#define ADDR_AM_DR 0xa0 -#define ADDR_DT2_D2R 0xc0 -#define ADDR_SL_RR 0xe0 -#define ADDR_NOTE 0x28 -#define ADDR_KF 0x30 -#define ADDR_FMS_AMS 0x38 -#define ADDR_LR_FB_ALG 0x20 - #define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0) class DivPlatformOPMBase: public DivPlatformFMBase { protected: + const unsigned char ADDR_MULT_DT=0x40; + const unsigned char ADDR_TL=0x60; + const unsigned char ADDR_RS_AR=0x80; + const unsigned char ADDR_AM_DR=0xa0; + const unsigned char ADDR_DT2_D2R=0xc0; + const unsigned char ADDR_SL_RR=0xe0; + const unsigned char ADDR_NOTE=0x28; + const unsigned char ADDR_KF=0x30; + const unsigned char ADDR_FMS_AMS=0x38; + const unsigned char ADDR_LR_FB_ALG=0x20; + const unsigned short opOffs[4]={ 0x00, 0x08, 0x10, 0x18 }; diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index 6e5426b5..ae40748b 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -22,18 +22,6 @@ #include "fmsharedbase.h" -#define ADDR_MULT_DT 0x30 -#define ADDR_TL 0x40 -#define ADDR_RS_AR 0x50 -#define ADDR_AM_DR 0x60 -#define ADDR_DT2_D2R 0x70 -#define ADDR_SL_RR 0x80 -#define ADDR_SSG 0x90 -#define ADDR_FREQ 0xa0 -#define ADDR_FREQH 0xa4 -#define ADDR_FB_ALG 0xb0 -#define ADDR_LRAF 0xb4 - #define CHIP_FREQBASE fmFreqBase #define CHIP_DIVIDER fmDivBase @@ -100,6 +88,18 @@ class DivPlatformOPNBase: public DivPlatformFMBase { protected: + const unsigned char ADDR_MULT_DT=0x30; + const unsigned char ADDR_TL=0x40; + const unsigned char ADDR_RS_AR=0x50; + const unsigned char ADDR_AM_DR=0x60; + const unsigned char ADDR_DT2_D2R=0x70; + const unsigned char ADDR_SL_RR=0x80; + const unsigned char ADDR_SSG=0x90; + const unsigned char ADDR_FREQ=0xa0; + const unsigned char ADDR_FREQH=0xa4; + const unsigned char ADDR_FB_ALG=0xb0; + const unsigned char ADDR_LRAF=0xb4; + const unsigned short opOffs[4]={ 0x00, 0x04, 0x08, 0x0c }; diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 512f55f8..b9a5c686 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -22,10 +22,6 @@ #include #include -static unsigned char konOffs[6]={ - 0, 1, 2, 4, 5, 6 -}; - #define IS_REALLY_MUTED(x) (isMuted[x] && (x<5 || !softPCM || (isMuted[5] && isMuted[6]))) const char* DivPlatformGenesis::getEffectName(unsigned char effect) { diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index 70b3dc8a..e4bdfffa 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -36,6 +36,10 @@ class DivPlatformGenesis: public DivDispatch, public DivPlatformOPNBase { 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 }; + const unsigned char konOffs[6]={ + 0, 1, 2, 4, 5, 6 + }; + struct Channel { DivInstrumentFM state; DivMacroInt std; From ebbd9784e689af27feea032ef1ca55d1f5c105a4 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 Jun 2022 19:40:37 +0900 Subject: [PATCH 004/580] Reduce more FM codes --- src/engine/platform/arcade.h | 10 ++-------- src/engine/platform/fmsharedbase.h | 7 ++++++- src/engine/platform/genesis.h | 10 ++-------- src/engine/platform/tx81z.h | 10 ++-------- src/engine/platform/ym2203.h | 10 ++-------- src/engine/platform/ym2608.h | 10 ++-------- src/engine/platform/ym2610.h | 10 ++-------- src/engine/platform/ym2610b.h | 7 +------ 8 files changed, 19 insertions(+), 55 deletions(-) diff --git a/src/engine/platform/arcade.h b/src/engine/platform/arcade.h index 189ce1e9..00af8f25 100644 --- a/src/engine/platform/arcade.h +++ b/src/engine/platform/arcade.h @@ -19,19 +19,18 @@ #ifndef _ARCADE_H #define _ARCADE_H -#include "../dispatch.h" +#include "fmshared_OPM.h" #include "../macroInt.h" #include "../instrument.h" #include #include "../../../extern/opm/opm.h" #include "sound/ymfm/ymfm_opm.h" -#include "fmshared_OPM.h" class DivArcadeInterface: public ymfm::ymfm_interface { }; -class DivPlatformArcade: public DivDispatch, public DivPlatformOPMBase { +class DivPlatformArcade: public DivPlatformOPMBase { protected: const unsigned short chanOffs[8]={ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 @@ -85,14 +84,9 @@ class DivPlatformArcade: public DivDispatch, public DivPlatformOPMBase { ymfm::ym2151::output_data out_ymfm; DivArcadeInterface iface; - unsigned char regPool[256]; - bool extMode, useYMFM; bool isMuted[8]; - - short oldWrites[256]; - short pendingWrites[256]; int octave(int freq); int toFreq(int freq); diff --git a/src/engine/platform/fmsharedbase.h b/src/engine/platform/fmsharedbase.h index a3b0e634..355b05c2 100644 --- a/src/engine/platform/fmsharedbase.h +++ b/src/engine/platform/fmsharedbase.h @@ -20,6 +20,7 @@ #ifndef _FMSHARED_BASE_H #define _FMSHARED_BASE_H +#include "../dispatch.h" #include #define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} @@ -37,7 +38,7 @@ } \ } -class DivPlatformFMBase { +class DivPlatformFMBase: public DivDispatch { protected: const bool isOutput[8][4]={ // 1 3 2 4 @@ -69,6 +70,10 @@ class DivPlatformFMBase { unsigned char lastBusy; int delay; + unsigned char regPool[512]; + short oldWrites[512]; + short pendingWrites[512]; + DivPlatformFMBase(): lastBusy(0), delay(0) {} diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index e4bdfffa..ace427f6 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -19,18 +19,17 @@ #ifndef _GENESIS_H #define _GENESIS_H -#include "../dispatch.h" +#include "fmshared_OPN.h" #include "../macroInt.h" #include "../../../extern/Nuked-OPN2/ym3438.h" #include "sound/ymfm/ymfm_opn.h" -#include "fmshared_OPN.h" class DivYM2612Interface: public ymfm::ymfm_interface { }; -class DivPlatformGenesis: public DivDispatch, public DivPlatformOPNBase { +class DivPlatformGenesis: public DivPlatformOPNBase { protected: const unsigned short chanOffs[6]={ 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 @@ -112,7 +111,6 @@ class DivPlatformGenesis: public DivDispatch, public DivPlatformOPNBase { ymfm::ym2612* fm_ymfm; ymfm::ym2612::output_data out_ymfm; DivYM2612Interface iface; - unsigned char regPool[512]; unsigned char lfoValue; @@ -121,9 +119,6 @@ class DivPlatformGenesis: public DivDispatch, public DivPlatformOPNBase { bool extMode, softPCM, useYMFM; bool ladder; - short oldWrites[512]; - short pendingWrites[512]; - unsigned char dacVolTable[128]; friend void putDispatchChan(void*,int,int); @@ -160,7 +155,6 @@ class DivPlatformGenesis: public DivDispatch, public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformGenesis(): - DivDispatch(), DivPlatformOPNBase(9440540.0, 72, 32) {} ~DivPlatformGenesis(); }; diff --git a/src/engine/platform/tx81z.h b/src/engine/platform/tx81z.h index b185de5f..16167ede 100644 --- a/src/engine/platform/tx81z.h +++ b/src/engine/platform/tx81z.h @@ -19,18 +19,17 @@ #ifndef _TX81Z_H #define _TX81Z_H -#include "../dispatch.h" +#include "fmshared_OPM.h" #include "../macroInt.h" #include "../instrument.h" #include #include "sound/ymfm/ymfm_opz.h" -#include "fmshared_OPM.h" class DivTXInterface: public ymfm::ymfm_interface { }; -class DivPlatformTX81Z: public DivDispatch, public DivPlatformOPMBase { +class DivPlatformTX81Z: public DivPlatformOPMBase { protected: const unsigned short chanOffs[8]={ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 @@ -82,15 +81,10 @@ class DivPlatformTX81Z: public DivDispatch, public DivPlatformOPMBase { ymfm::ym2414::output_data out_ymfm; DivTXInterface iface; - unsigned char regPool[330]; - bool extMode; bool isMuted[8]; - short oldWrites[330]; - short pendingWrites[330]; - int octave(int freq); int toFreq(int freq); diff --git a/src/engine/platform/ym2203.h b/src/engine/platform/ym2203.h index 70be354d..c650583d 100644 --- a/src/engine/platform/ym2203.h +++ b/src/engine/platform/ym2203.h @@ -19,18 +19,17 @@ #ifndef _YM2203_H #define _YM2203_H -#include "../dispatch.h" +#include "fmshared_OPN.h" #include "../macroInt.h" #include "sound/ymfm/ymfm_opn.h" #include "ay.h" -#include "fmshared_OPN.h" class DivYM2203Interface: public ymfm::ymfm_interface { }; -class DivPlatformYM2203: public DivDispatch, public DivPlatformOPNBase { +class DivPlatformYM2203: public DivPlatformOPNBase { protected: const unsigned short chanOffs[3]={ 0x00, 0x01, 0x02 @@ -86,16 +85,12 @@ class DivPlatformYM2203: public DivDispatch, public DivPlatformOPNBase { ymfm::ym2203* fm; ymfm::ym2203::output_data fmout; DivYM2203Interface iface; - unsigned char regPool[256]; DivPlatformAY8910* ay; unsigned char sampleBank; bool extMode; - short oldWrites[256]; - short pendingWrites[256]; - friend void putDispatchChan(void*,int,int); public: @@ -123,7 +118,6 @@ class DivPlatformYM2203: public DivDispatch, public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2203(): - DivDispatch(), DivPlatformOPNBase(4720270.0, 36, 16) {} ~DivPlatformYM2203(); }; diff --git a/src/engine/platform/ym2608.h b/src/engine/platform/ym2608.h index a6d4399a..21eb487f 100644 --- a/src/engine/platform/ym2608.h +++ b/src/engine/platform/ym2608.h @@ -19,12 +19,11 @@ #ifndef _YM2608_H #define _YM2608_H -#include "../dispatch.h" +#include "fmshared_OPN.h" #include "../macroInt.h" #include "sound/ymfm/ymfm_opn.h" #include "ay.h" -#include "fmshared_OPN.h" class DivYM2608Interface: public ymfm::ymfm_interface { public: @@ -35,7 +34,7 @@ class DivYM2608Interface: public ymfm::ymfm_interface { DivYM2608Interface(): adpcmBMem(NULL), sampleBank(0) {} }; -class DivPlatformYM2608: public DivDispatch, public DivPlatformOPNBase { +class DivPlatformYM2608: public DivPlatformOPNBase { protected: const unsigned short chanOffs[6]={ 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 @@ -92,7 +91,6 @@ class DivPlatformYM2608: public DivDispatch, public DivPlatformOPNBase { bool isMuted[16]; ymfm::ym2608* fm; ymfm::ym2608::output_data fmout; - unsigned char regPool[512]; unsigned char* adpcmBMem; size_t adpcmBMemLen; @@ -106,9 +104,6 @@ class DivPlatformYM2608: public DivDispatch, public DivPlatformOPNBase { double fmFreqBase; unsigned char ayDiv; - short oldWrites[512]; - short pendingWrites[512]; - double NOTE_OPNB(int ch, int note); double NOTE_ADPCMB(int note); friend void putDispatchChan(void*,int,int); @@ -142,7 +137,6 @@ class DivPlatformYM2608: public DivDispatch, public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2608(): - DivDispatch(), DivPlatformOPNBase(9440540.0, 72, 32) {} ~DivPlatformYM2608(); }; diff --git a/src/engine/platform/ym2610.h b/src/engine/platform/ym2610.h index 39bc82f3..069707dd 100644 --- a/src/engine/platform/ym2610.h +++ b/src/engine/platform/ym2610.h @@ -19,10 +19,9 @@ #ifndef _YM2610_H #define _YM2610_H -#include "../dispatch.h" +#include "fmshared_OPN.h" #include "../macroInt.h" #include "ay.h" -#include "fmshared_OPN.h" #include "sound/ymfm/ymfm_opn.h" class DivYM2610Interface: public ymfm::ymfm_interface { @@ -35,7 +34,7 @@ class DivYM2610Interface: public ymfm::ymfm_interface { DivYM2610Interface(): adpcmAMem(NULL), adpcmBMem(NULL), sampleBank(0) {} }; -class DivPlatformYM2610Base: public DivDispatch, public DivPlatformOPNBase { +class DivPlatformYM2610Base: public DivPlatformOPNBase { protected: unsigned char* adpcmAMem; size_t adpcmAMemLen; @@ -51,7 +50,6 @@ class DivPlatformYM2610Base: public DivDispatch, public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2610Base(): - DivDispatch(), DivPlatformOPNBase(9440540.0, 72, 32) {} }; @@ -118,15 +116,11 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { ymfm::ym2610::output_data fmout; DivPlatformAY8910* ay; - unsigned char regPool[512]; unsigned char sampleBank; bool extMode; - short oldWrites[512]; - short pendingWrites[512]; - double NOTE_OPNB(int ch, int note); double NOTE_ADPCMB(int note); friend void putDispatchChan(void*,int,int); diff --git a/src/engine/platform/ym2610b.h b/src/engine/platform/ym2610b.h index 737251e4..0d1dca2b 100644 --- a/src/engine/platform/ym2610b.h +++ b/src/engine/platform/ym2610b.h @@ -19,12 +19,11 @@ #ifndef _YM2610B_H #define _YM2610B_H -#include "../dispatch.h" +#include "ym2610.h" #include "../macroInt.h" #include #include "sound/ymfm/ymfm_opn.h" -#include "ym2610.h" class DivPlatformYM2610B: public DivPlatformYM2610Base { protected: @@ -83,7 +82,6 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { bool isMuted[16]; ymfm::ym2610b* fm; ymfm::ym2610b::output_data fmout; - unsigned char regPool[512]; DivPlatformAY8910* ay; unsigned char sampleBank; @@ -91,9 +89,6 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { bool extMode; double fmFreqBase=9440540; unsigned char ayDiv=32; - - short oldWrites[512]; - short pendingWrites[512]; double NOTE_OPNB(int ch, int note); double NOTE_ADPCMB(int note); From 5473b8722dca28cc3e9a65cf4b6fa3cca7e61ab9 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 Jun 2022 19:52:13 +0900 Subject: [PATCH 005/580] Fix compile, Remove unused include --- src/engine/platform/fmsharedbase.h | 31 +++++++++++++++--------------- src/engine/platform/ym2610b.h | 1 - 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/engine/platform/fmsharedbase.h b/src/engine/platform/fmsharedbase.h index 355b05c2..2555d267 100644 --- a/src/engine/platform/fmsharedbase.h +++ b/src/engine/platform/fmsharedbase.h @@ -23,21 +23,6 @@ #include "../dispatch.h" #include -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } -#define urgentWrite(a,v) if (!skipRegisterWrites) { \ - if (writes.empty()) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else if (writes.size()>16 || writes.front().addrOrVal) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else { \ - writes.push_front(QueuedWrite(a,v)); \ - } \ - if (dumpWrites) { \ - addWrite(a,v); \ - } \ -} - class DivPlatformFMBase: public DivDispatch { protected: const bool isOutput[8][4]={ @@ -75,8 +60,24 @@ class DivPlatformFMBase: public DivDispatch { short pendingWrites[512]; DivPlatformFMBase(): + DivDispatch(), lastBusy(0), delay(0) {} }; +#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} +#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } +#define urgentWrite(a,v) if (!skipRegisterWrites) { \ + if (writes.empty()) { \ + writes.push_back(QueuedWrite(a,v)); \ + } else if (writes.size()>16 || writes.front().addrOrVal) { \ + writes.push_back(QueuedWrite(a,v)); \ + } else { \ + writes.push_front(QueuedWrite(a,v)); \ + } \ + if (dumpWrites) { \ + addWrite(a,v); \ + } \ +} + #endif diff --git a/src/engine/platform/ym2610b.h b/src/engine/platform/ym2610b.h index 0d1dca2b..fefb0692 100644 --- a/src/engine/platform/ym2610b.h +++ b/src/engine/platform/ym2610b.h @@ -21,7 +21,6 @@ #define _YM2610B_H #include "ym2610.h" #include "../macroInt.h" -#include #include "sound/ymfm/ymfm_opn.h" From 8bc545c8abc46e4061e2db47cc8de367dec3e93c Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 Jun 2022 22:45:16 +0900 Subject: [PATCH 006/580] Fix compile (again) --- src/engine/platform/fmshared_OPM.h | 15 +++++++++++++++ src/engine/platform/fmshared_OPN.h | 15 +++++++++++++++ src/engine/platform/fmsharedbase.h | 15 --------------- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/engine/platform/fmshared_OPM.h b/src/engine/platform/fmshared_OPM.h index c21d1c18..585a42d9 100644 --- a/src/engine/platform/fmshared_OPM.h +++ b/src/engine/platform/fmshared_OPM.h @@ -22,6 +22,21 @@ #include "fmsharedbase.h" +#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} +#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } +#define urgentWrite(a,v) if (!skipRegisterWrites) { \ + if (writes.empty()) { \ + writes.push_back(QueuedWrite(a,v)); \ + } else if (writes.size()>16 || writes.front().addrOrVal) { \ + writes.push_back(QueuedWrite(a,v)); \ + } else { \ + writes.push_front(QueuedWrite(a,v)); \ + } \ + if (dumpWrites) { \ + addWrite(a,v); \ + } \ +} + #define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0) class DivPlatformOPMBase: public DivPlatformFMBase { diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index ae40748b..b3cd7c3a 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -22,6 +22,21 @@ #include "fmsharedbase.h" +#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} +#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } +#define urgentWrite(a,v) if (!skipRegisterWrites) { \ + if (writes.empty()) { \ + writes.push_back(QueuedWrite(a,v)); \ + } else if (writes.size()>16 || writes.front().addrOrVal) { \ + writes.push_back(QueuedWrite(a,v)); \ + } else { \ + writes.push_front(QueuedWrite(a,v)); \ + } \ + if (dumpWrites) { \ + addWrite(a,v); \ + } \ +} + #define CHIP_FREQBASE fmFreqBase #define CHIP_DIVIDER fmDivBase diff --git a/src/engine/platform/fmsharedbase.h b/src/engine/platform/fmsharedbase.h index 2555d267..f1312614 100644 --- a/src/engine/platform/fmsharedbase.h +++ b/src/engine/platform/fmsharedbase.h @@ -65,19 +65,4 @@ class DivPlatformFMBase: public DivDispatch { delay(0) {} }; -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } -#define urgentWrite(a,v) if (!skipRegisterWrites) { \ - if (writes.empty()) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else if (writes.size()>16 || writes.front().addrOrVal) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else { \ - writes.push_front(QueuedWrite(a,v)); \ - } \ - if (dumpWrites) { \ - addWrite(a,v); \ - } \ -} - #endif From 74e3892fd997e40148c64ce2e81c5a3f3ba9feb1 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 Jun 2022 23:26:22 +0900 Subject: [PATCH 007/580] Finally fixed --- src/engine/platform/fmshared_OPM.h | 15 --------------- src/engine/platform/fmshared_OPN.h | 15 --------------- src/engine/platform/fmsharedbase.h | 28 ++++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/src/engine/platform/fmshared_OPM.h b/src/engine/platform/fmshared_OPM.h index 585a42d9..c21d1c18 100644 --- a/src/engine/platform/fmshared_OPM.h +++ b/src/engine/platform/fmshared_OPM.h @@ -22,21 +22,6 @@ #include "fmsharedbase.h" -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } -#define urgentWrite(a,v) if (!skipRegisterWrites) { \ - if (writes.empty()) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else if (writes.size()>16 || writes.front().addrOrVal) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else { \ - writes.push_front(QueuedWrite(a,v)); \ - } \ - if (dumpWrites) { \ - addWrite(a,v); \ - } \ -} - #define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0) class DivPlatformOPMBase: public DivPlatformFMBase { diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index b3cd7c3a..ae40748b 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -22,21 +22,6 @@ #include "fmsharedbase.h" -#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} -#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } -#define urgentWrite(a,v) if (!skipRegisterWrites) { \ - if (writes.empty()) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else if (writes.size()>16 || writes.front().addrOrVal) { \ - writes.push_back(QueuedWrite(a,v)); \ - } else { \ - writes.push_front(QueuedWrite(a,v)); \ - } \ - if (dumpWrites) { \ - addWrite(a,v); \ - } \ -} - #define CHIP_FREQBASE fmFreqBase #define CHIP_DIVIDER fmDivBase diff --git a/src/engine/platform/fmsharedbase.h b/src/engine/platform/fmsharedbase.h index f1312614..64099739 100644 --- a/src/engine/platform/fmsharedbase.h +++ b/src/engine/platform/fmsharedbase.h @@ -59,6 +59,34 @@ class DivPlatformFMBase: public DivDispatch { short oldWrites[512]; short pendingWrites[512]; + inline void rWrite(unsigned short a, short v) { + if (!skipRegisterWrites) { + pendingWrites[a]=v; + } + } + inline void immWrite(unsigned short a, unsigned char v) { + if (!skipRegisterWrites) { + writes.push_back(QueuedWrite(a,v)); + if (dumpWrites) { + addWrite(a,v); + } + } + } + inline void urgentWrite(unsigned short a, unsigned char v) { + if (!skipRegisterWrites) { + if (writes.empty()) { + writes.push_back(QueuedWrite(a,v)); + } else if (writes.size()>16 || writes.front().addrOrVal) { + writes.push_back(QueuedWrite(a,v)); + } else { + writes.push_front(QueuedWrite(a,v)); + } + if (dumpWrites) { + addWrite(a,v); + } + } + } + DivPlatformFMBase(): DivDispatch(), lastBusy(0), From 44cee98868c46bdeba73e4288f800ba8920964a2 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 Jun 2022 23:46:33 +0900 Subject: [PATCH 008/580] Oops --- src/gui/sysConf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index fcd01e0d..e758b179 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -123,7 +123,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } if (ImGui::RadioButton("Yamaha YMF281",((flags>>4)&15)==1)) { copyOfFlags=(flags&(~0xf0))|0x10; - + } if (ImGui::RadioButton("Yamaha YM2423",((flags>>4)&15)==2)) { copyOfFlags=(flags&(~0xf0))|0x20; } From d3a3473f19877f3c305c4c69adab6234dfd5dd4a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 6 Jun 2022 13:32:57 -0500 Subject: [PATCH 009/580] commit requested changes --- src/engine/platform/fmshared_OPN.h | 4 ++-- src/engine/platform/genesis.h | 4 ++-- src/engine/platform/ym2203.h | 4 ++-- src/engine/platform/ym2608.h | 4 ++-- src/engine/platform/ym2610.h | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index ae40748b..7632e78f 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -86,7 +86,7 @@ return 2; \ } -class DivPlatformOPNBase: public DivPlatformFMBase { +class DivPlatformOPN: public DivPlatformFMBase { protected: const unsigned char ADDR_MULT_DT=0x30; const unsigned char ADDR_TL=0x40; @@ -108,7 +108,7 @@ class DivPlatformOPNBase: public DivPlatformFMBase { const double fmDivBase; const unsigned char ayDiv; - DivPlatformOPNBase(double f=9440540.0, double d=72, unsigned char a=32): + DivPlatformOPN(double f=9440540.0, double d=72, unsigned char a=32): DivPlatformFMBase(), fmFreqBase(f), fmDivBase(d), diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index ace427f6..7d2004f3 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -29,7 +29,7 @@ class DivYM2612Interface: public ymfm::ymfm_interface { }; -class DivPlatformGenesis: public DivPlatformOPNBase { +class DivPlatformGenesis: public DivPlatformOPN { protected: const unsigned short chanOffs[6]={ 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 @@ -155,7 +155,7 @@ class DivPlatformGenesis: public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformGenesis(): - DivPlatformOPNBase(9440540.0, 72, 32) {} + DivPlatformOPN(9440540.0, 72, 32) {} ~DivPlatformGenesis(); }; #endif diff --git a/src/engine/platform/ym2203.h b/src/engine/platform/ym2203.h index c650583d..6d7bc420 100644 --- a/src/engine/platform/ym2203.h +++ b/src/engine/platform/ym2203.h @@ -29,7 +29,7 @@ class DivYM2203Interface: public ymfm::ymfm_interface { }; -class DivPlatformYM2203: public DivPlatformOPNBase { +class DivPlatformYM2203: public DivPlatformOPN { protected: const unsigned short chanOffs[3]={ 0x00, 0x01, 0x02 @@ -118,7 +118,7 @@ class DivPlatformYM2203: public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2203(): - DivPlatformOPNBase(4720270.0, 36, 16) {} + DivPlatformOPN(4720270.0, 36, 16) {} ~DivPlatformYM2203(); }; #endif diff --git a/src/engine/platform/ym2608.h b/src/engine/platform/ym2608.h index 21eb487f..c1f43f4d 100644 --- a/src/engine/platform/ym2608.h +++ b/src/engine/platform/ym2608.h @@ -34,7 +34,7 @@ class DivYM2608Interface: public ymfm::ymfm_interface { DivYM2608Interface(): adpcmBMem(NULL), sampleBank(0) {} }; -class DivPlatformYM2608: public DivPlatformOPNBase { +class DivPlatformYM2608: public DivPlatformOPN { protected: const unsigned short chanOffs[6]={ 0x00, 0x01, 0x02, 0x100, 0x101, 0x102 @@ -137,7 +137,7 @@ class DivPlatformYM2608: public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2608(): - DivPlatformOPNBase(9440540.0, 72, 32) {} + DivPlatformOPN(9440540.0, 72, 32) {} ~DivPlatformYM2608(); }; #endif diff --git a/src/engine/platform/ym2610.h b/src/engine/platform/ym2610.h index 069707dd..dde7ed10 100644 --- a/src/engine/platform/ym2610.h +++ b/src/engine/platform/ym2610.h @@ -34,7 +34,7 @@ class DivYM2610Interface: public ymfm::ymfm_interface { DivYM2610Interface(): adpcmAMem(NULL), adpcmBMem(NULL), sampleBank(0) {} }; -class DivPlatformYM2610Base: public DivPlatformOPNBase { +class DivPlatformYM2610Base: public DivPlatformOPN { protected: unsigned char* adpcmAMem; size_t adpcmAMemLen; @@ -50,7 +50,7 @@ class DivPlatformYM2610Base: public DivPlatformOPNBase { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2610Base(): - DivPlatformOPNBase(9440540.0, 72, 32) {} + DivPlatformOPN(9440540.0, 72, 32) {} }; class DivPlatformYM2610: public DivPlatformYM2610Base { From 3e953f57b368f679c570ed1f95b9054c2dc97517 Mon Sep 17 00:00:00 2001 From: cam900 Date: Tue, 7 Jun 2022 12:57:09 +0900 Subject: [PATCH 010/580] Prepare for TI-99/4A support only works on MAME core only for now. --- src/engine/platform/arcade.h | 2 +- src/engine/platform/fmshared_OPM.h | 4 ++-- src/engine/platform/opl.cpp | 2 +- src/engine/platform/sms.cpp | 20 +++++++++++++++++++- src/engine/platform/sms.h | 1 + src/engine/platform/sound/sn76496.cpp | 16 ++++++++-------- src/engine/platform/tx81z.h | 2 +- src/engine/platform/ym2203.cpp | 2 +- src/engine/platform/ym2608.cpp | 2 +- src/engine/song.h | 3 +++ src/gui/presets.cpp | 6 ++++++ src/gui/sysConf.cpp | 9 +++++++++ 12 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/engine/platform/arcade.h b/src/engine/platform/arcade.h index 00af8f25..daa88362 100644 --- a/src/engine/platform/arcade.h +++ b/src/engine/platform/arcade.h @@ -30,7 +30,7 @@ class DivArcadeInterface: public ymfm::ymfm_interface { }; -class DivPlatformArcade: public DivPlatformOPMBase { +class DivPlatformArcade: public DivPlatformOPM { protected: const unsigned short chanOffs[8]={ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 diff --git a/src/engine/platform/fmshared_OPM.h b/src/engine/platform/fmshared_OPM.h index c21d1c18..97844656 100644 --- a/src/engine/platform/fmshared_OPM.h +++ b/src/engine/platform/fmshared_OPM.h @@ -24,7 +24,7 @@ #define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0) -class DivPlatformOPMBase: public DivPlatformFMBase { +class DivPlatformOPM: public DivPlatformFMBase { protected: const unsigned char ADDR_MULT_DT=0x40; const unsigned char ADDR_TL=0x60; @@ -41,7 +41,7 @@ class DivPlatformOPMBase: public DivPlatformFMBase { 0x00, 0x08, 0x10, 0x18 }; - DivPlatformOPMBase(): + DivPlatformOPM(): DivPlatformFMBase() {} }; diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 43ce2f5f..45cbd619 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1723,7 +1723,7 @@ void DivPlatformOPL::setFlags(unsigned int flags) { chipClock=3000000.0; break; case 0x04: - chipClock=31948800/8; + chipClock=38400*13*8; // 31948800/8 break; case 0x05: chipClock=3500000.0; diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index f6624b97..e5be2304 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -472,8 +472,12 @@ void DivPlatformSMS::setFlags(unsigned int flags) { case 0x0101: chipClock=2000000; break; + case 0x0102: + chipClock=COLOR_NTSC/8.0; + break; } resetPhase=!(flags&16); + divider=16; noiseDivider=64; if (sn!=NULL) delete sn; switch (flags&0xcc) { @@ -524,8 +528,22 @@ void DivPlatformSMS::setFlags(unsigned int flags) { noiseDivider=64; stereo=false; break; + case 0x80: // TI SN94624 + sn=new sn94624_device(); + isRealSN=true; + noiseDivider=60; + stereo=false; + divider=2; + break; + case 0x84: // TI SN76494 + sn=new sn76494_device(); + isRealSN=false; // TODO + noiseDivider=68; + stereo=false; + divider=2; + break; } - rate=nuked?chipClock/16:chipClock/2; + rate=chipClock/divider; for (int i=0; i<4; i++) { oscBuf[i]->rate=rate; } diff --git a/src/engine/platform/sms.h b/src/engine/platform/sms.h index c4e4179f..42399577 100644 --- a/src/engine/platform/sms.h +++ b/src/engine/platform/sms.h @@ -63,6 +63,7 @@ class DivPlatformSMS: public DivDispatch { size_t snBufLen; unsigned char oldValue; unsigned char snNoiseMode; + int divider=16; int noiseDivider=64; bool updateSNMode; bool resetPhase; diff --git a/src/engine/platform/sound/sn76496.cpp b/src/engine/platform/sound/sn76496.cpp index 5062ea7a..afb82ad3 100644 --- a/src/engine/platform/sound/sn76496.cpp +++ b/src/engine/platform/sound/sn76496.cpp @@ -171,22 +171,22 @@ sn76496_base_device::sn76496_base_device( } sn76496_device::sn76496_device() - : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 8, false, true) + : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 1/*8*/, false, true) { } y2404_device::y2404_device() - : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 8, false, true) + : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 1/*8*/, false, true) { } sn76489_device::sn76489_device() - : sn76496_base_device(0x4000, 0x01, 0x02, true, false, 8, false, true) + : sn76496_base_device(0x4000, 0x01, 0x02, true, false, 1/*8*/, false, true) { } sn76489a_device::sn76489a_device() - : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 8, false, true) + : sn76496_base_device(0x10000, 0x04, 0x08, false, false, 1/*8*/, false, true) { } @@ -201,22 +201,22 @@ sn94624_device::sn94624_device() } ncr8496_device::ncr8496_device() - : sn76496_base_device(0x8000, 0x02, 0x20, true, false, 8, true, true) + : sn76496_base_device(0x8000, 0x02, 0x20, true, false, 1/*8*/, true, true) { } pssj3_device::pssj3_device() - : sn76496_base_device(0x8000, 0x02, 0x20, false, false, 8, true, true) + : sn76496_base_device(0x8000, 0x02, 0x20, false, false, 1/*8*/, true, true) { } gamegear_device::gamegear_device() - : sn76496_base_device(0x8000, 0x01, 0x08, true, true, 8, false, false) + : sn76496_base_device(0x8000, 0x01, 0x08, true, true, 1/*8*/, false, false) { } segapsg_device::segapsg_device() - : sn76496_base_device(0x8000, 0x01, 0x08, true, false, 8, false, false) + : sn76496_base_device(0x8000, 0x01, 0x08, true, false, 1/*8*/, false, false) { } diff --git a/src/engine/platform/tx81z.h b/src/engine/platform/tx81z.h index 16167ede..e867416c 100644 --- a/src/engine/platform/tx81z.h +++ b/src/engine/platform/tx81z.h @@ -29,7 +29,7 @@ class DivTXInterface: public ymfm::ymfm_interface { }; -class DivPlatformTX81Z: public DivPlatformOPMBase { +class DivPlatformTX81Z: public DivPlatformOPM { protected: const unsigned short chanOffs[8]={ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index 3176a1a4..42314615 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -1027,7 +1027,7 @@ void DivPlatformYM2203::setFlags(unsigned int flags) { chipClock=3000000.0; break; case 0x04: - chipClock=31948800/8; + chipClock=38400*13*8; // 31948800/8 break; case 0x05: chipClock=3000000.0/2.0; diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index d4871486..875f4148 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -1400,7 +1400,7 @@ void DivPlatformYM2608::setFlags(unsigned int flags) { chipClock=8000000.0; break; case 0x01: - chipClock=31948800/4; + chipClock=38400*13*16; // 31948800/4 break; } rate=fm->sample_rate(chipClock); diff --git a/src/engine/song.h b/src/engine/song.h index a5b68c26..6bbb00cf 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -244,6 +244,7 @@ struct DivSong { // - 0003: 1.79MHz (half NTSC) // - 0100: 3MHz // - 0101: 2MHz + // - 0102: 447KHz (NTSC / 8) // - bit 2-3, 6-7: chip type // - 00: Sega VDP (16-bit noise) // - 04: real SN76489 (15-bit noise) @@ -253,6 +254,8 @@ struct DivSong { // - 44: real SN76496 (17-bit noise) // - 48: NCR 8496 (16-bit noise) // - 4c: Tandy PSSJ-3 (16-bit noise) + // - 80: real SN94624 (15-bit noise) + // - 84: real SN76494 (17-bit noise) // - bit 4: disable noise phase reset // - YM2612/YM3438: // - bit 0-30: clock rate diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index a841f15b..d0e63c11 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1211,6 +1211,12 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "TI-99/4A", { + DIV_SYSTEM_SMS, 64, 0, 0x182, // SN94624 447KHz + 0 + } + )); sysCategories.push_back(cat); cat=FurnaceGUISysCategory("Arcade systems","INSERT COIN"); diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index e758b179..02d06db3 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -69,6 +69,9 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("2MHz (Sega System 1)",(flags&0xff03)==0x0101)) { copyOfFlags=(flags&(~0xff03))|0x0101; } + if (ImGui::RadioButton("447KHz (TI-99/4A)",(flags&0xff03)==0x0102)) { + copyOfFlags=(flags&(~0xff03))|0x0102; + } ImGui::Text("Chip type:"); if (ImGui::RadioButton("Sega VDP/Master System",(flags&0xcc)==0x00)) { copyOfFlags=(flags&(~0xcc))|0x00; @@ -94,6 +97,12 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("Tandy PSSJ 3-voice sound",(flags&0xcc)==0x4c)) { copyOfFlags=(flags&(~0xcc))|0x4c; } + if (ImGui::RadioButton("TI SN94624",(flags&0xcc)==0x80)) { + copyOfFlags=(flags&(~0xcc))|0x80; + } + if (ImGui::RadioButton("TI SN76494",(flags&0xcc)==0x84)) { + copyOfFlags=(flags&(~0xcc))|0x84; + } bool noPhaseReset=flags&16; if (ImGui::Checkbox("Disable noise period change phase reset",&noPhaseReset)) { copyOfFlags=(flags&(~16))|(noPhaseReset<<4); From 7bbfe3af7c8cab34ca65d9416e5dd0cedebc7d1e Mon Sep 17 00:00:00 2001 From: cam900 Date: Tue, 7 Jun 2022 23:59:50 +0900 Subject: [PATCH 011/580] Fix per-channel osc --- src/engine/platform/sms.cpp | 24 ++++++++++++++---------- src/engine/platform/sound/sn76496.cpp | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index e5be2304..35bb9c40 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -101,7 +101,20 @@ void DivPlatformSMS::acquire_mame(short* bufL, short* bufR, size_t start, size_t sn->write(w.val); writes.pop(); } - sn->sound_stream_update(snBuf,len); + for (size_t h=0; hsound_stream_update(outs,1); + for (int i=0; i<4; i++) { + if (isMuted[i]) { + oscBuf[i]->data[oscBuf[i]->needle++]=0; + } else { + oscBuf[i]->data[oscBuf[i]->needle++]=sn->get_channel_output(i); + } + } + } if (stereo) { for (size_t i=0; idata[oscBuf[i]->needle++]=0; - } else { - oscBuf[i]->data[oscBuf[i]->needle++]=sn->get_channel_output(i); - } - } - } } void DivPlatformSMS::acquire(short* bufL, short* bufR, size_t start, size_t len) { diff --git a/src/engine/platform/sound/sn76496.cpp b/src/engine/platform/sound/sn76496.cpp index afb82ad3..4bbb5848 100644 --- a/src/engine/platform/sound/sn76496.cpp +++ b/src/engine/platform/sound/sn76496.cpp @@ -411,7 +411,7 @@ void sn76496_base_device::sound_stream_update(short** outputs, int outLen) if (m_negate) { out = -out; out2 = -out2; } outputs[0][sampindex]=out; - if (m_stereo) + if (m_stereo && (outputs[1] != nullptr)) outputs[1][sampindex]=out; } } From 6aa88b07705e2b618b58045e7478e116d041329e Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 8 Jun 2022 10:10:55 +0900 Subject: [PATCH 012/580] Move on .cpp, prepare for variable rate support --- src/engine/platform/fmshared_OPN.h | 9 +++------ src/engine/platform/genesis.cpp | 3 +++ src/engine/platform/genesisext.cpp | 3 +++ src/engine/platform/ym2203.cpp | 3 ++- src/engine/platform/ym2203ext.cpp | 3 +++ src/engine/platform/ym2608.cpp | 3 ++- src/engine/platform/ym2608ext.cpp | 3 +++ src/engine/platform/ym2610.cpp | 2 ++ src/engine/platform/ym2610b.cpp | 3 +++ src/engine/platform/ym2610bext.cpp | 3 +++ src/engine/platform/ym2610ext.cpp | 3 +++ 11 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index 7632e78f..74e13219 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -22,9 +22,6 @@ #include "fmsharedbase.h" -#define CHIP_FREQBASE fmFreqBase -#define CHIP_DIVIDER fmDivBase - #define PLEASE_HELP_ME(_targetChan) \ int boundaryBottom=parent->calcBaseFreq(chipClock,CHIP_FREQBASE,0,false); \ int boundaryTop=parent->calcBaseFreq(chipClock,CHIP_FREQBASE,12,false); \ @@ -104,9 +101,9 @@ class DivPlatformOPN: public DivPlatformFMBase { 0x00, 0x04, 0x08, 0x0c }; - const double fmFreqBase; - const double fmDivBase; - const unsigned char ayDiv; + double fmFreqBase; + double fmDivBase; + unsigned char ayDiv; DivPlatformOPN(double f=9440540.0, double d=72, unsigned char a=32): DivPlatformFMBase(), diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index b9a5c686..b3afdd2a 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -22,6 +22,9 @@ #include #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + #define IS_REALLY_MUTED(x) (isMuted[x] && (x<5 || !softPCM || (isMuted[5] && isMuted[6]))) const char* DivPlatformGenesis::getEffectName(unsigned char effect) { diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 057049ea..cd4d603c 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -21,6 +21,9 @@ #include "../engine.h" #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + int DivPlatformGenesisExt::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformGenesis::dispatch(c); diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index 42314615..a25c0e96 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -23,7 +23,8 @@ #include #include - +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase const char* regCheatSheetYM2203[]={ // SSG diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index fbef7b04..d3fd3487 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -21,6 +21,9 @@ #include "../engine.h" #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + int DivPlatformYM2203Ext::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformYM2203::dispatch(c); diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 875f4148..46b8b0ad 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -24,7 +24,8 @@ #include #include - +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase const char* regCheatSheetYM2608[]={ // SSG diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index d33bf9ed..91c3a897 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -21,6 +21,9 @@ #include "../engine.h" #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + int DivPlatformYM2608Ext::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformYM2608::dispatch(c); diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index df340804..bed59c20 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -24,6 +24,8 @@ #include #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase const char* regCheatSheetYM2610[]={ // SSG diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 16f198f7..a2291c3f 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -23,6 +23,9 @@ #include #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + const char* regCheatSheetYM2610B[]={ // SSG "SSG_FreqL_A", "000", diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index 61a99789..b5e1ac9f 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -21,6 +21,9 @@ #include "../engine.h" #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + int DivPlatformYM2610BExt::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformYM2610B::dispatch(c); diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index f2006c1c..6f9c8700 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -21,6 +21,9 @@ #include "../engine.h" #include +#define CHIP_FREQBASE fmFreqBase +#define CHIP_DIVIDER fmDivBase + int DivPlatformYM2610Ext::dispatch(DivCommand c) { if (c.chan<1) { return DivPlatformYM2610::dispatch(c); From 0e05f3b67bc6895bdca0d69b463256a1e350827b Mon Sep 17 00:00:00 2001 From: LoKiToon <98922449+LoKiToon@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:41:01 +0300 Subject: [PATCH 013/580] Add files via upload --- demos/E1M4OPL2.fur | Bin 0 -> 4122 bytes demos/FDS TEST.fur | Bin 0 -> 1574 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/E1M4OPL2.fur create mode 100644 demos/FDS TEST.fur diff --git a/demos/E1M4OPL2.fur b/demos/E1M4OPL2.fur new file mode 100644 index 0000000000000000000000000000000000000000..19f8ce54f34c5214eac28024ce513c961d392c01 GIT binary patch literal 4122 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 AZvX%Q literal 0 HcmV?d00001 diff --git a/demos/FDS TEST.fur b/demos/FDS TEST.fur new file mode 100644 index 0000000000000000000000000000000000000000..54b6d3b40607fd0367a5de8f511989df758bb900 GIT binary patch literal 1574 zcmV+>2HE*|ob6mqOdCfOezVwsf!07t)Ssl;P>>QNDoC5EQq=}1(Aa7ye+J1G2TFYa zvJeGGRYhqz^pHlX)LOLXRDud@nM9QgQjtQAJ@!JXV5R9fRYOnhp&{;!ch}y+j+Zgp zWCzbPPky|adEc8i^Y-m}42_*L7bk{C!m={?(aia9;|KuAkR@MN=Lcz_xEKLkXlsEo za8;H70tviCeGPI_iv{H#{q(7GSQ#CeROI&2sd2gQld0*jBKL=*A#V-{Ux)ISjCP1mNvg@b4!9yiEYtF@M<%@Zl+dsnYA)N-br*RX0Nj)) zA9Ep8-jt)g47t43^i?|MK_0I}ZT5oHl8#HM#ydvS4ezFu1?^>wdARMtH}@w$M1i#% zi*+pTWOpoC?F$?$9NFFNzKzlbK`wI41kDLuMQ{_%nm2mAD$^)iXuw!#nz<}A_>Lg$ za|Oi~iM87xo2`Ra<7YK~M&k;N%QY_3*rT!TUWvxV8oM>teL@;b8tcCUrQK`}Mxxzm z?1l2%rw6+jJxMIqvAmPrv1GL`aIA3nDtx&b^DKO)xGa3Mf~V77)cPv@$3mhw)f-g+3aaowGD4%uM*+&!_ez91`@=kWglGVPz zvBD|%Li0M8g@!z(&@HL!gn+(Yqz{7sejK+`CY0-=MI-IwQ#o!f-Uk(nbu8~>cPv@$ z3mhw)LM%!yV^KQIWl^%CeAZ!SAMy0VFBa=q-pTG*vf39oRyYM;Xx`wW(4ePKXjt%A z@y)Rg_Qn56VzG|po$QV!t9^lEg;O|%X0UajBQ5AxZ1P@-`8iO(vGxMymoOjI+Kl`% z<|CM2#QZ$wLzqcPAqVy3fS%L^awty@;`aoa- zgUiQj+G^V>tG+%PnTtjT5_j&5jmKh&GCmYie!rYrTT5P2Ldngs_)0LbF%VJ`SX|y5 zOAII*!SO`Y-{bFzL?ZJiI($8m`MTq%rL^@cxwa}&*WT6}si|LzVrmEkHpXI!jg7<~ zTlbU8Yb(Lf>MuX8#S<7K9*-|C2b4hlwMbp0uI7uYXRA&Gc1*SzX5G6d`?w@k^e29j zdX)0Q&xaQYP*j51^v)rXgLN$6P(DtjpSNz~H}XCH-&8HYb<%NAmVs>4&$j-)v`W_V zQR-nZ7OlnuQujYyZK!Sq>95p!((kLO>ZtYAZQolNN{%UwRo}Ioymdo~1!8_*m9O{V z%H}|PVXn7f!N2r_qQrws{sn)aArMMLqkbIh1?*dQYk#kCixuN_Mv&d<#$9hFyYPNt z>5mxuv--ok|B}P}XZ447{~?ZQ6IUksfzAy$8Q_a8ZIL$Uh9yZ@PlFy6V?;RySc z{r?V3VfoK`WfcBvayB8dDPhNiSg(vuTM*v;XT35C|20`p2;&EkR>p)Z98j7ILA<*@RGUnaG!;$^Wq0uVI>< zGC(=>9*Vw%qId7ov-(f#ZHPDrXZytq?Ap^={a| zVVa!^Aa`&3*R$fX_P5J_yZjOH&(BZhcxDqq5((je1rhPL*MAm&$k|gSA&lRmwwi>H zg?wP;Y(nVg5ZPv9N2lp&vWL>&X?mJ0QTjVgPm`UtPgwVlAtCg02y+8Y)6+K;GVSj) YJxxZG{!Y`=WEZ8s)AUsNUy`BxAD+J{f&c&j literal 0 HcmV?d00001 From fa9fb6f8f5e79488f4739b3497b6b74d10df4237 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 10 Jun 2022 18:27:47 -0500 Subject: [PATCH 014/580] GUI: find and replace, part 8 --- src/gui/findReplace.cpp | 127 ++++++++++++++++++++++++++++++++++++++++ src/gui/gui.h | 16 +++++ 2 files changed, 143 insertions(+) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 36048737..a7dad8e8 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -22,6 +22,133 @@ const char* queryReplaceModes[GUI_QUERY_REPLACE_MAX]={ "clear" }; +int queryNote(int note, int octave) { + if (note==100) { + return 128; + } else if (note==101) { // note off and envelope release + return 129; + } else if (note==102) { // envelope release only + return 130; + } else if (octave==0 && note==0) { + return -1; + } else if (note==0 && octave!=0) { + return -1; // bug note? + } + int seek=(note+(signed char)octave*12); + if (seek<-60 || seek>=120) { + return -1; // out of range note + } + return seek; +} + +bool checkCondition(int mode, int arg, int argMax, int val, bool noteMode=false) { + switch (mode) { + case GUI_QUERY_IGNORE: + return true; + break; + case GUI_QUERY_MATCH: + return (val==arg); + break; + case GUI_QUERY_MATCH_NOT: + return (val!=-1 && val!=arg); + break; + case GUI_QUERY_RANGE: + return (val>=arg && val<=argMax); + break; + case GUI_QUERY_RANGE_NOT: + return (val!=-1 && (valargMax) && (!noteMode || val<120)); + break; + case GUI_QUERY_ANY: + return (val!=-1); + break; + case GUI_QUERY_NONE: + return (val==-1); + break; + } + return false; +} + +void FurnaceGUI::doFind() { + int firstOrder=0; + int lastOrder=e->curSubSong->ordersLen-1; + + if (curQueryRangeY==1 || curQueryRangeY==2) { + firstOrder=curOrder; + lastOrder=curOrder; + } + + int firstRow=0; + int lastRow=e->curSubSong->patLen-1; + + if (curQueryRangeY==1) { + firstRow=selStart.y; + lastRow=selEnd.y; + } + + int firstChan=0; + int lastChan=e->getTotalChannelCount()-1; + + if (curQueryRangeX) { + firstChan=curQueryRangeXMin; + lastChan=curQueryRangeXMax; + } + + curQueryResults.clear(); + + for (int i=firstOrder; i<=lastOrder; i++) { + for (int j=firstRow; j<=lastRow; j++) { + for (int k=firstChan; k<=lastChan; k++) { + DivPattern* p=e->curPat[k].getPattern(e->curOrders->ord[k][i],false); + bool matched=false; + for (FurnaceGUIFindQuery& l: curQuery) { + if (matched) break; + + if (!checkCondition(l.noteMode,l.note,l.noteMax,queryNote(p->data[j][0],p->data[j][1]),true)) continue; + if (!checkCondition(l.insMode,l.ins,l.insMax,p->data[j][2])) continue; + if (!checkCondition(l.volMode,l.vol,l.volMax,p->data[j][3])) continue; + + if (l.effectCount>0) { + bool notMatched=false; + switch (curQueryEffectPos) { + case 0: // no + // TODO + for (int m=0; mcurPat[k].effectCols; n++) { + if (!checkCondition(l.effectMode[m],l.effect[m],l.effectMax[m],p->data[j][4+m*2])) continue; + if (!checkCondition(l.effectValMode[m],l.effectVal[m],l.effectValMax[m],p->data[j][5+m*2])) continue; + } + } + break; + case 1: // lax + break; + case 2: // strict + for (int m=0; mdata[j][4+m*2])) { + notMatched=true; + break; + } + if (!checkCondition(l.effectValMode[m],l.effectVal[m],l.effectValMax[m],p->data[j][5+m*2])) { + notMatched=true; + break; + } + } + break; + } + if (notMatched) continue; + } + + matched=true; + } + if (matched) { + curQueryResults.push_back(FurnaceGUIQueryResult(e->getCurrentSubSong(),i,j,k)); + } + } + } + } + + printf("%d %d %d %d\n",firstOrder,lastOrder,firstRow,lastRow); +} + #define FIRST_VISIBLE(x) (x==GUI_QUERY_MATCH || x==GUI_QUERY_MATCH_NOT || x==GUI_QUERY_RANGE || x==GUI_QUERY_RANGE_NOT) #define SECOND_VISIBLE(x) (x==GUI_QUERY_RANGE || x==GUI_QUERY_RANGE_NOT) diff --git a/src/gui/gui.h b/src/gui/gui.h index 8d565da2..260a7341 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -856,6 +856,20 @@ struct FurnaceGUIFindQuery { } }; +struct FurnaceGUIQueryResult { + int subsong, order, x, y; + FurnaceGUIQueryResult(): + subsong(0), + order(0), + x(0), + y(0) {} + FurnaceGUIQueryResult(int ss, int o, int xPos, int yPos): + subsong(ss), + order(o), + x(xPos), + y(yPos) {} +}; + class FurnaceGUI { DivEngine* e; @@ -1171,6 +1185,7 @@ class FurnaceGUI { int pgSys, pgAddr, pgVal; std::vector curQuery; + std::vector curQueryResults; bool curQueryRangeX, curQueryBackwards; int curQueryRangeXMin, curQueryRangeXMax; int curQueryRangeY; @@ -1475,6 +1490,7 @@ class FurnaceGUI { void doExpand(int multiplier); void doUndo(); void doRedo(); + void doFind(); void editOptions(bool topMenu); void noteInput(int num, int key, int vol=-1); void valueInput(int num, bool direct=false, int target=-1); From 7354b1221ce7b9f554fabc78076ae7870e42b2c9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 11 Jun 2022 02:14:30 -0500 Subject: [PATCH 015/580] GUI: find and replace, part 9 --- src/gui/findReplace.cpp | 1022 +++++++++++++++++++++------------------ src/gui/gui.cpp | 1 + src/gui/gui.h | 1 + 3 files changed, 549 insertions(+), 475 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index a7dad8e8..700078bb 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -4,6 +4,7 @@ #include "misc/cpp/imgui_stdlib.h" #include "guiConst.h" #include "intConst.h" +#include "../ta-log.h" const char* queryModes[GUI_QUERY_MAX]={ "ignore", @@ -140,13 +141,12 @@ void FurnaceGUI::doFind() { matched=true; } if (matched) { - curQueryResults.push_back(FurnaceGUIQueryResult(e->getCurrentSubSong(),i,j,k)); + curQueryResults.push_back(FurnaceGUIQueryResult(e->getCurrentSubSong(),i,k,j)); } } } } - - printf("%d %d %d %d\n",firstOrder,lastOrder,firstRow,lastRow); + queryViewingResults=true; } #define FIRST_VISIBLE(x) (x==GUI_QUERY_MATCH || x==GUI_QUERY_MATCH_NOT || x==GUI_QUERY_RANGE || x==GUI_QUERY_RANGE_NOT) @@ -167,515 +167,587 @@ void FurnaceGUI::drawFindReplace() { int index=0; int eraseIndex=-1; char tempID[1024]; - for (FurnaceGUIFindQuery& i: curQuery) { - if (ImGui::BeginTable("FindRep",4,ImGuiTableFlags_BordersOuter)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.5); - ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.25); - ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthStretch,0.25); - ImGui::PushID(index); - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Note"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##NCondition",&i.noteMode,queryModes,GUI_QUERY_MAX); - ImGui::TableNextColumn(); - if (FIRST_VISIBLE(i.noteMode)) { - if ((i.noteMode==GUI_QUERY_RANGE || i.noteMode==GUI_QUERY_RANGE_NOT) && i.note>=120) { - i.note=0; - } - if (i.note==130) { - snprintf(tempID,1024,"REL"); - } else if (i.note==129) { - snprintf(tempID,1024,"==="); - } else if (i.note==128) { - snprintf(tempID,1024,"OFF"); - } else if (i.note>=-60 && i.note<120) { - snprintf(tempID,1024,"%s",noteNames[i.note+60]); + if (ImGui::BeginTabBar("FindOrReplace")) { + if (ImGui::BeginTabItem("Find")) { + if (queryViewingResults) { + if (!curQueryResults.empty()) { + ImVec2 avail=ImGui::GetContentRegionAvail(); + avail.y-=ImGui::GetFrameHeightWithSpacing(); + if (ImGui::BeginTable("FindResults",4,ImGuiTableFlags_Borders|ImGuiTableFlags_ScrollY,avail)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,ImGui::CalcTextSize("order").x); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,ImGui::CalcTextSize("row").x); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed); + + ImGui::TableSetupScrollFreeze(0,1); + + ImGui::TableNextRow(ImGuiTableRowFlags_Headers); + ImGui::TableNextColumn(); + ImGui::Text("order"); + ImGui::TableNextColumn(); + ImGui::Text("row"); + ImGui::TableNextColumn(); + ImGui::Text("channel"); + ImGui::TableNextColumn(); + ImGui::Text("go"); + + int index=0; + for (FurnaceGUIQueryResult& i: curQueryResults) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (settings.orderRowsBase==1) { + ImGui::Text("%.2X",i.order); + } else { + ImGui::Text("%d",i.order); + } + ImGui::TableNextColumn(); + if (settings.patRowsBase==1) { + ImGui::Text("%.2X",i.y); + } else { + ImGui::Text("%d",i.y); + } + ImGui::TableNextColumn(); + ImGui::Text("%d (%s)",i.x+1,e->getChannelName(i.x)); + if (ImGui::TableNextColumn()) { + snprintf(tempID,1024,ICON_FA_CHEVRON_RIGHT "##_FR%d",index); + if (ImGui::Selectable(tempID)) { + e->changeSongP(i.subsong); + if (e->isPlaying()) { + followPattern=false; + } else { + e->setOrder(i.order); + } + curOrder=i.order; + cursor.xCoarse=i.x; + cursor.xFine=0; + cursor.y=i.y; + selStart=cursor; + selEnd=cursor; + demandScrollX=true; + updateScroll(cursor.y); + nextWindow=GUI_WINDOW_PATTERN; + } + } + index++; + } + ImGui::EndTable(); + } } else { - snprintf(tempID,1024,"???"); - i.note=0; + ImGui::Text("no matches found!"); } - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("##NN1",tempID)) { - for (int j=0; j<180; j++) { - snprintf(tempID,1024,"%s",noteNames[j]); - if (ImGui::Selectable(tempID,i.note==(j-60))) { - i.note=j-60; - } - } - if (i.noteMode!=GUI_QUERY_RANGE && i.noteMode!=GUI_QUERY_RANGE_NOT) { - if (ImGui::Selectable("OFF",i.note==128)) { - i.note=128; - } - if (ImGui::Selectable("===",i.note==129)) { - i.note=129; - } - if (ImGui::Selectable("REL",i.note==130)) { - i.note=130; - } - } - ImGui::EndCombo(); + if (ImGui::Button("Back")) { + queryViewingResults=false; } - } - ImGui::TableNextColumn(); - if (SECOND_VISIBLE(i.noteMode)) { - if (i.noteMax<-60 || i.noteMax>=120) { - i.noteMax=0; - } - if (i.noteMax>=-60 && i.noteMax<120) { - snprintf(tempID,1024,"%s",noteNames[i.noteMax+60]); - } else { - snprintf(tempID,1024,"???"); - } - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("##NN2",tempID)) { - for (int j=0; j<180; j++) { - snprintf(tempID,1024,"%s",noteNames[j]); - if (ImGui::Selectable(tempID,i.noteMax==(j-60))) { - i.noteMax=j-60; + } else { + for (FurnaceGUIFindQuery& i: curQuery) { + ImGui::PushID(index+0x100); + if (ImGui::BeginTable("FindRep",4,ImGuiTableFlags_BordersOuter)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.5); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.25); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthStretch,0.25); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Note"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::Combo("##NCondition",&i.noteMode,queryModes,GUI_QUERY_MAX); + ImGui::TableNextColumn(); + if (FIRST_VISIBLE(i.noteMode)) { + if ((i.noteMode==GUI_QUERY_RANGE || i.noteMode==GUI_QUERY_RANGE_NOT) && i.note>=120) { + i.note=0; + } + if (i.note==130) { + snprintf(tempID,1024,"REL"); + } else if (i.note==129) { + snprintf(tempID,1024,"==="); + } else if (i.note==128) { + snprintf(tempID,1024,"OFF"); + } else if (i.note>=-60 && i.note<120) { + snprintf(tempID,1024,"%s",noteNames[i.note+60]); + } else { + snprintf(tempID,1024,"???"); + i.note=0; + } + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::BeginCombo("##NN1",tempID)) { + for (int j=0; j<180; j++) { + snprintf(tempID,1024,"%s",noteNames[j]); + if (ImGui::Selectable(tempID,i.note==(j-60))) { + i.note=j-60; + } + } + if (i.noteMode!=GUI_QUERY_RANGE && i.noteMode!=GUI_QUERY_RANGE_NOT) { + if (ImGui::Selectable("OFF",i.note==128)) { + i.note=128; + } + if (ImGui::Selectable("===",i.note==129)) { + i.note=129; + } + if (ImGui::Selectable("REL",i.note==130)) { + i.note=130; + } + } + ImGui::EndCombo(); + } + } + ImGui::TableNextColumn(); + if (SECOND_VISIBLE(i.noteMode)) { + if (i.noteMax<-60 || i.noteMax>=120) { + i.noteMax=0; + } + if (i.noteMax>=-60 && i.noteMax<120) { + snprintf(tempID,1024,"%s",noteNames[i.noteMax+60]); + } else { + snprintf(tempID,1024,"???"); + } + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::BeginCombo("##NN2",tempID)) { + for (int j=0; j<180; j++) { + snprintf(tempID,1024,"%s",noteNames[j]); + if (ImGui::Selectable(tempID,i.noteMax==(j-60))) { + i.noteMax=j-60; + } + } + ImGui::EndCombo(); + } } - } - ImGui::EndCombo(); - } - } - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Ins"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##ICondition",&i.insMode,queryModes,GUI_QUERY_MAX); - ImGui::TableNextColumn(); - if (FIRST_VISIBLE(i.insMode)) { - snprintf(tempID,1024,"%.2X",i.ins); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("II1",tempID)) { - for (int j=0; j<256; j++) { - snprintf(tempID,1024,"%.2X",j); - if (ImGui::Selectable(tempID,i.ins==j)) { - i.ins=j; + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Ins"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::Combo("##ICondition",&i.insMode,queryModes,GUI_QUERY_MAX); + ImGui::TableNextColumn(); + if (FIRST_VISIBLE(i.insMode)) { + snprintf(tempID,1024,"%.2X",i.ins); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::BeginCombo("II1",tempID)) { + for (int j=0; j<256; j++) { + snprintf(tempID,1024,"%.2X",j); + if (ImGui::Selectable(tempID,i.ins==j)) { + i.ins=j; + } + } + ImGui::EndCombo(); + } } - } - ImGui::EndCombo(); - } - } - ImGui::TableNextColumn(); - if (SECOND_VISIBLE(i.insMode)) { - snprintf(tempID,1024,"%.2X",i.insMax); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("II2",tempID)) { - for (int j=0; j<256; j++) { - snprintf(tempID,1024,"%.2X",j); - if (ImGui::Selectable(tempID,i.insMax==j)) { - i.insMax=j; + ImGui::TableNextColumn(); + if (SECOND_VISIBLE(i.insMode)) { + snprintf(tempID,1024,"%.2X",i.insMax); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::BeginCombo("II2",tempID)) { + for (int j=0; j<256; j++) { + snprintf(tempID,1024,"%.2X",j); + if (ImGui::Selectable(tempID,i.insMax==j)) { + i.insMax=j; + } + } + ImGui::EndCombo(); + } } - } - ImGui::EndCombo(); - } - } - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Volume"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##VCondition",&i.volMode,queryModes,GUI_QUERY_MAX); - ImGui::TableNextColumn(); - if (FIRST_VISIBLE(i.volMode)) { - snprintf(tempID,1024,"%.2X",i.vol); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("VV1",tempID)) { - for (int j=0; j<256; j++) { - snprintf(tempID,1024,"%.2X",j); - if (ImGui::Selectable(tempID,i.vol==j)) { - i.vol=j; + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Volume"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::Combo("##VCondition",&i.volMode,queryModes,GUI_QUERY_MAX); + ImGui::TableNextColumn(); + if (FIRST_VISIBLE(i.volMode)) { + snprintf(tempID,1024,"%.2X",i.vol); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::BeginCombo("VV1",tempID)) { + for (int j=0; j<256; j++) { + snprintf(tempID,1024,"%.2X",j); + if (ImGui::Selectable(tempID,i.vol==j)) { + i.vol=j; + } + } + ImGui::EndCombo(); + } } - } - ImGui::EndCombo(); - } - } - ImGui::TableNextColumn(); - if (SECOND_VISIBLE(i.volMode)) { - snprintf(tempID,1024,"%.2X",i.volMax); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("VV2",tempID)) { - for (int j=0; j<256; j++) { - snprintf(tempID,1024,"%.2X",j); - if (ImGui::Selectable(tempID,i.volMax==j)) { - i.volMax=j; + ImGui::TableNextColumn(); + if (SECOND_VISIBLE(i.volMode)) { + snprintf(tempID,1024,"%.2X",i.volMax); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::BeginCombo("VV2",tempID)) { + for (int j=0; j<256; j++) { + snprintf(tempID,1024,"%.2X",j); + if (ImGui::Selectable(tempID,i.volMax==j)) { + i.volMax=j; + } + } + ImGui::EndCombo(); + } } - } - ImGui::EndCombo(); - } - } - for (int j=0; j0) { + if (ImGui::Button("Remove effect")) { + i.effectCount--; + } + } + ImGui::EndTable(); + } + ImGui::PopID(); + index++; + } + if (eraseIndex>=0) { + curQuery.erase(curQuery.begin()+eraseIndex); + } + if (ImGui::Button(ICON_FA_PLUS "##AddQuery")) { + curQuery.push_back(FurnaceGUIFindQuery()); + } + + if (ImGui::BeginTable("QueryLimits",3)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.5f); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.5f); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + + ImGui::Text("Search range:"); + + if (ImGui::RadioButton("Song",curQueryRangeY==0)) { + curQueryRangeY=0; + } + if (ImGui::RadioButton("Selection",curQueryRangeY==1)) { + curQueryRangeY=1; + } + if (ImGui::RadioButton("Pattern",curQueryRangeY==2)) { + curQueryRangeY=2; + } + + ImGui::TableNextColumn(); + ImGui::Checkbox("Confine to channels",&curQueryRangeX); + + ImGui::BeginDisabled(!curQueryRangeX); + snprintf(tempID,1024,"%d: %s",curQueryRangeXMin+1,e->getChannelName(curQueryRangeXMin)); + if (ImGui::BeginCombo("From",tempID)) { + for (int i=0; igetTotalChannelCount(); i++) { + snprintf(tempID,1024,"%d: %s",i+1,e->getChannelName(i)); + if (ImGui::Selectable(tempID,curQueryRangeXMin==i)) { + curQueryRangeXMin=i; + } + } + ImGui::EndCombo(); + } + + snprintf(tempID,1024,"%d: %s",curQueryRangeXMax+1,e->getChannelName(curQueryRangeXMax)); + if (ImGui::BeginCombo("To",tempID)) { + for (int i=0; igetTotalChannelCount(); i++) { + snprintf(tempID,1024,"%d: %s",i+1,e->getChannelName(i)); + if (ImGui::Selectable(tempID,curQueryRangeXMax==i)) { + curQueryRangeXMax=i; + } + } + ImGui::EndCombo(); + } + ImGui::EndDisabled(); + + ImGui::TableNextColumn(); + ImGui::Text("Match effect position:"); + + if (ImGui::RadioButton("No",curQueryEffectPos==0)) { + curQueryEffectPos=0; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("match effects regardless of position."); + } + if (ImGui::RadioButton("Lax",curQueryEffectPos==1)) { + curQueryEffectPos=1; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("match effects only if they appear in-order."); + } + if (ImGui::RadioButton("Strict",curQueryEffectPos==2)) { + curQueryEffectPos=2; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("match effects only if they appear exactly as specified."); + } + + ImGui::EndTable(); + } + + if (ImGui::Button("Find")) { + doFind(); + } + } + ImGui::EndTabItem(); + } + if (ImGui::BeginTabItem("Replace")) { + if (ImGui::BeginTable("QueryReplace",3,ImGuiTableFlags_BordersOuter)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.5); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.5); + ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::Text("Effect"); + ImGui::Checkbox("Note",&queryReplaceNoteDo); + ImGui::TableNextColumn(); + ImGui::BeginDisabled(!queryReplaceNoteDo); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::Combo("##NRMode",&queryReplaceNoteMode,queryReplaceModes,GUI_QUERY_REPLACE_MAX); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##ECondition",&i.effectMode[j],queryModes,GUI_QUERY_MAX); - ImGui::TableNextColumn(); - if (FIRST_VISIBLE(i.effectMode[j])) { - snprintf(tempID,1024,"%.2X",i.effect[j]); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("EE1",tempID)) { - for (int k=0; k<256; k++) { - snprintf(tempID,1024,"%.2X",k); - if (ImGui::Selectable(tempID,i.effect[j]==k)) { - i.effect[j]=k; + if (queryReplaceNoteMode==GUI_QUERY_REPLACE_SET) { + if (queryReplaceNote==130) { + snprintf(tempID,1024,"REL"); + } else if (queryReplaceNote==129) { + snprintf(tempID,1024,"==="); + } else if (queryReplaceNote==128) { + snprintf(tempID,1024,"OFF"); + } else if (queryReplaceNote>=-60 && queryReplaceNote<120) { + snprintf(tempID,1024,"%s",noteNames[queryReplaceNote+60]); + } else { + snprintf(tempID,1024,"???"); + queryReplaceNote=0; + } + if (ImGui::BeginCombo("##NRValueC",tempID)) { + for (int j=0; j<180; j++) { + snprintf(tempID,1024,"%s",noteNames[j]); + if (ImGui::Selectable(tempID,queryReplaceNote==(j-60))) { + queryReplaceNote=j-60; } } + if (ImGui::Selectable("OFF",queryReplaceNote==128)) { + queryReplaceNote=128; + } + if (ImGui::Selectable("===",queryReplaceNote==129)) { + queryReplaceNote=129; + } + if (ImGui::Selectable("REL",queryReplaceNote==130)) { + queryReplaceNote=130; + } ImGui::EndCombo(); } - } - ImGui::TableNextColumn(); - if (SECOND_VISIBLE(i.effectMode[j])) { - snprintf(tempID,1024,"%.2X",i.effectMax[j]); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("EE2",tempID)) { - for (int k=0; k<256; k++) { - snprintf(tempID,1024,"%.2X",k); - if (ImGui::Selectable(tempID,i.effectMax[j]==k)) { - i.effectMax[j]=k; - } - } - ImGui::EndCombo(); - } - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Value"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##EVCondition",&i.effectValMode[j],queryModes,GUI_QUERY_MAX); - ImGui::TableNextColumn(); - if (FIRST_VISIBLE(i.effectValMode[j])) { - snprintf(tempID,1024,"%.2X",i.effectVal[j]); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("EV1",tempID)) { - for (int k=0; k<256; k++) { - snprintf(tempID,1024,"%.2X",k); - if (ImGui::Selectable(tempID,i.effectVal[j]==k)) { - i.effectVal[j]=k; - } - } - ImGui::EndCombo(); - } - } - ImGui::TableNextColumn(); - if (SECOND_VISIBLE(i.effectValMode[j])) { - snprintf(tempID,1024,"%.2X",i.effectValMax[j]); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("EV2",tempID)) { - for (int k=0; k<256; k++) { - snprintf(tempID,1024,"%.2X",k); - if (ImGui::Selectable(tempID,i.effectValMax[j]==k)) { - i.effectValMax[j]=k; - } - } - ImGui::EndCombo(); - } - } - - ImGui::PopID(); - } - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (ImGui::Button(ICON_FA_MINUS "##DelQuery")) { - eraseIndex=index; - } - ImGui::TableNextColumn(); - if (i.effectCount<8) { - if (ImGui::Button("Add effect")) { - i.effectCount++; - } - } - ImGui::TableNextColumn(); - if (i.effectCount>0) { - if (ImGui::Button("Remove effect")) { - i.effectCount--; - } - } - ImGui::PopID(); - ImGui::EndTable(); - } - index++; - } - if (ImGui::Button("Find")) { - - } - ImGui::SameLine(); - if (eraseIndex>=0) { - curQuery.erase(curQuery.begin()+eraseIndex); - } - if (ImGui::Button(ICON_FA_PLUS "##AddQuery")) { - curQuery.push_back(FurnaceGUIFindQuery()); - } - - if (ImGui::BeginTable("QueryLimits",3)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.5f); - ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.5f); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - - ImGui::Text("Search range:"); - - if (ImGui::RadioButton("Song",curQueryRangeY==0)) { - curQueryRangeY=0; - } - if (ImGui::RadioButton("Selection",curQueryRangeY==1)) { - curQueryRangeY=1; - } - if (ImGui::RadioButton("Pattern",curQueryRangeY==2)) { - curQueryRangeY=2; - } - - ImGui::TableNextColumn(); - ImGui::Checkbox("Confine to channels",&curQueryRangeX); - - ImGui::BeginDisabled(!curQueryRangeX); - snprintf(tempID,1024,"%d: %s",curQueryRangeXMin+1,e->getChannelName(curQueryRangeXMin)); - if (ImGui::BeginCombo("From",tempID)) { - for (int i=0; igetTotalChannelCount(); i++) { - snprintf(tempID,1024,"%d: %s",i+1,e->getChannelName(i)); - if (ImGui::Selectable(tempID,curQueryRangeXMin==i)) { - curQueryRangeXMin=i; - } - } - ImGui::EndCombo(); - } - - snprintf(tempID,1024,"%d: %s",curQueryRangeXMax+1,e->getChannelName(curQueryRangeXMax)); - if (ImGui::BeginCombo("To",tempID)) { - for (int i=0; igetTotalChannelCount(); i++) { - snprintf(tempID,1024,"%d: %s",i+1,e->getChannelName(i)); - if (ImGui::Selectable(tempID,curQueryRangeXMax==i)) { - curQueryRangeXMax=i; - } - } - ImGui::EndCombo(); - } - ImGui::EndDisabled(); - - ImGui::TableNextColumn(); - ImGui::Text("Match effect position:"); - - if (ImGui::RadioButton("No",curQueryEffectPos==0)) { - curQueryEffectPos=0; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("match effects regardless of position."); - } - if (ImGui::RadioButton("Lax",curQueryEffectPos==1)) { - curQueryEffectPos=1; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("match effects only if they appear in-order."); - } - if (ImGui::RadioButton("Strict",curQueryEffectPos==2)) { - curQueryEffectPos=2; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("match effects only if they appear exactly as specified."); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Checkbox("Backwards",&curQueryBackwards); - - ImGui::EndTable(); - } - - if (ImGui::TreeNode("Replace")) { - if (ImGui::BeginTable("QueryReplace",3,ImGuiTableFlags_BordersOuter)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.5); - ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.5); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Checkbox("Note",&queryReplaceNoteDo); - ImGui::TableNextColumn(); - ImGui::BeginDisabled(!queryReplaceNoteDo); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##NRMode",&queryReplaceNoteMode,queryReplaceModes,GUI_QUERY_REPLACE_MAX); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (queryReplaceNoteMode==GUI_QUERY_REPLACE_SET) { - if (queryReplaceNote==130) { - snprintf(tempID,1024,"REL"); - } else if (queryReplaceNote==129) { - snprintf(tempID,1024,"==="); - } else if (queryReplaceNote==128) { - snprintf(tempID,1024,"OFF"); - } else if (queryReplaceNote>=-60 && queryReplaceNote<120) { - snprintf(tempID,1024,"%s",noteNames[queryReplaceNote+60]); - } else { - snprintf(tempID,1024,"???"); - queryReplaceNote=0; - } - if (ImGui::BeginCombo("##NRValueC",tempID)) { - for (int j=0; j<180; j++) { - snprintf(tempID,1024,"%s",noteNames[j]); - if (ImGui::Selectable(tempID,queryReplaceNote==(j-60))) { - queryReplaceNote=j-60; - } - } - if (ImGui::Selectable("OFF",queryReplaceNote==128)) { - queryReplaceNote=128; - } - if (ImGui::Selectable("===",queryReplaceNote==129)) { - queryReplaceNote=129; - } - if (ImGui::Selectable("REL",queryReplaceNote==130)) { - queryReplaceNote=130; - } - ImGui::EndCombo(); - } - } else if (queryReplaceNoteMode==GUI_QUERY_REPLACE_ADD || queryReplaceNoteMode==GUI_QUERY_REPLACE_ADD_OVERFLOW) { - if (ImGui::InputInt("##NRValue",&queryReplaceNote,1,12)) { - if (queryReplaceNote<-180) queryReplaceNote=-180; - if (queryReplaceNote>180) queryReplaceNote=180; - } - } - ImGui::EndDisabled(); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Checkbox("Ins",&queryReplaceInsDo); - ImGui::TableNextColumn(); - ImGui::BeginDisabled(!queryReplaceInsDo); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##IRMode",&queryReplaceInsMode,queryReplaceModes,GUI_QUERY_REPLACE_MAX); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (queryReplaceInsMode==GUI_QUERY_REPLACE_SET) { - if (ImGui::InputScalar("##IRValueH",ImGuiDataType_S32,&queryReplaceIns,&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { - if (queryReplaceIns<0) queryReplaceIns=0; - if (queryReplaceIns>255) queryReplaceIns=255; - } - } else if (queryReplaceInsMode==GUI_QUERY_REPLACE_ADD || queryReplaceInsMode==GUI_QUERY_REPLACE_ADD_OVERFLOW) { - if (ImGui::InputInt("##IRValue",&queryReplaceIns,1,12)) { - if (queryReplaceIns<-255) queryReplaceIns=-255; - if (queryReplaceIns>255) queryReplaceIns=255; - } - } - ImGui::EndDisabled(); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Checkbox("Volume",&queryReplaceVolDo); - ImGui::TableNextColumn(); - ImGui::BeginDisabled(!queryReplaceVolDo); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##VRMode",&queryReplaceVolMode,queryReplaceModes,GUI_QUERY_REPLACE_MAX); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (queryReplaceVolMode==GUI_QUERY_REPLACE_SET) { - if (ImGui::InputScalar("##VRValueH",ImGuiDataType_S32,&queryReplaceVol,&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { - if (queryReplaceVol<0) queryReplaceVol=0; - if (queryReplaceVol>255) queryReplaceVol=255; - } - } else if (queryReplaceVolMode==GUI_QUERY_REPLACE_ADD || queryReplaceVolMode==GUI_QUERY_REPLACE_ADD_OVERFLOW) { - if (ImGui::InputInt("##VRValue",&queryReplaceVol,1,12)) { - if (queryReplaceVol<-255) queryReplaceVol=-255; - if (queryReplaceVol>255) queryReplaceVol=255; - } - } - ImGui::EndDisabled(); - - for (int i=0; i255) queryReplaceEffect[i]=255; - } - } else if (queryReplaceEffectMode[i]==GUI_QUERY_REPLACE_ADD || queryReplaceEffectMode[i]==GUI_QUERY_REPLACE_ADD_OVERFLOW) { - if (ImGui::InputInt("##ERValue",&queryReplaceEffect[i],1,12)) { - if (queryReplaceEffect[i]<-255) queryReplaceEffect[i]=-255; - if (queryReplaceEffect[i]>255) queryReplaceEffect[i]=255; + } else if (queryReplaceNoteMode==GUI_QUERY_REPLACE_ADD || queryReplaceNoteMode==GUI_QUERY_REPLACE_ADD_OVERFLOW) { + if (ImGui::InputInt("##NRValue",&queryReplaceNote,1,12)) { + if (queryReplaceNote<-180) queryReplaceNote=-180; + if (queryReplaceNote>180) queryReplaceNote=180; } } ImGui::EndDisabled(); ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::Checkbox("Value",&queryReplaceEffectValDo[i]); + ImGui::Checkbox("Ins",&queryReplaceInsDo); ImGui::TableNextColumn(); - ImGui::BeginDisabled(!queryReplaceEffectValDo[i]); + ImGui::BeginDisabled(!queryReplaceInsDo); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##ERMode",&queryReplaceEffectValMode[i],queryReplaceModes,GUI_QUERY_REPLACE_MAX); + ImGui::Combo("##IRMode",&queryReplaceInsMode,queryReplaceModes,GUI_QUERY_REPLACE_MAX); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_SET) { - if (ImGui::InputScalar("##ERValueH",ImGuiDataType_S32,&queryReplaceEffectVal[i],&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { - if (queryReplaceEffectVal[i]<0) queryReplaceEffectVal[i]=0; - if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255; + if (queryReplaceInsMode==GUI_QUERY_REPLACE_SET) { + if (ImGui::InputScalar("##IRValueH",ImGuiDataType_S32,&queryReplaceIns,&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { + if (queryReplaceIns<0) queryReplaceIns=0; + if (queryReplaceIns>255) queryReplaceIns=255; } - } else if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_ADD || queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_ADD_OVERFLOW) { - if (ImGui::InputInt("##ERValue",&queryReplaceEffectVal[i],1,12)) { - if (queryReplaceEffectVal[i]<-255) queryReplaceEffectVal[i]=-255; - if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255; + } else if (queryReplaceInsMode==GUI_QUERY_REPLACE_ADD || queryReplaceInsMode==GUI_QUERY_REPLACE_ADD_OVERFLOW) { + if (ImGui::InputInt("##IRValue",&queryReplaceIns,1,12)) { + if (queryReplaceIns<-255) queryReplaceIns=-255; + if (queryReplaceIns>255) queryReplaceIns=255; } } ImGui::EndDisabled(); - - ImGui::PopID(); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::TableNextColumn(); - if (queryReplaceEffectCount<8) { - if (ImGui::Button("Add effect")) { - queryReplaceEffectCount++; + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Checkbox("Volume",&queryReplaceVolDo); + ImGui::TableNextColumn(); + ImGui::BeginDisabled(!queryReplaceVolDo); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::Combo("##VRMode",&queryReplaceVolMode,queryReplaceModes,GUI_QUERY_REPLACE_MAX); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (queryReplaceVolMode==GUI_QUERY_REPLACE_SET) { + if (ImGui::InputScalar("##VRValueH",ImGuiDataType_S32,&queryReplaceVol,&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { + if (queryReplaceVol<0) queryReplaceVol=0; + if (queryReplaceVol>255) queryReplaceVol=255; + } + } else if (queryReplaceVolMode==GUI_QUERY_REPLACE_ADD || queryReplaceVolMode==GUI_QUERY_REPLACE_ADD_OVERFLOW) { + if (ImGui::InputInt("##VRValue",&queryReplaceVol,1,12)) { + if (queryReplaceVol<-255) queryReplaceVol=-255; + if (queryReplaceVol>255) queryReplaceVol=255; + } } - } - ImGui::TableNextColumn(); - if (queryReplaceEffectCount>0) { - if (ImGui::Button("Remove effect")) { - queryReplaceEffectCount--; - } - } + ImGui::EndDisabled(); - ImGui::EndTable(); + for (int i=0; i255) queryReplaceEffect[i]=255; + } + } else if (queryReplaceEffectMode[i]==GUI_QUERY_REPLACE_ADD || queryReplaceEffectMode[i]==GUI_QUERY_REPLACE_ADD_OVERFLOW) { + if (ImGui::InputInt("##ERValue",&queryReplaceEffect[i],1,12)) { + if (queryReplaceEffect[i]<-255) queryReplaceEffect[i]=-255; + if (queryReplaceEffect[i]>255) queryReplaceEffect[i]=255; + } + } + ImGui::EndDisabled(); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Checkbox("Value",&queryReplaceEffectValDo[i]); + ImGui::TableNextColumn(); + ImGui::BeginDisabled(!queryReplaceEffectValDo[i]); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::Combo("##ERMode",&queryReplaceEffectValMode[i],queryReplaceModes,GUI_QUERY_REPLACE_MAX); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_SET) { + if (ImGui::InputScalar("##ERValueH",ImGuiDataType_S32,&queryReplaceEffectVal[i],&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { + if (queryReplaceEffectVal[i]<0) queryReplaceEffectVal[i]=0; + if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255; + } + } else if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_ADD || queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_ADD_OVERFLOW) { + if (ImGui::InputInt("##ERValue",&queryReplaceEffectVal[i],1,12)) { + if (queryReplaceEffectVal[i]<-255) queryReplaceEffectVal[i]=-255; + if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255; + } + } + ImGui::EndDisabled(); + + + ImGui::PopID(); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::TableNextColumn(); + if (queryReplaceEffectCount<8) { + if (ImGui::Button("Add effect")) { + queryReplaceEffectCount++; + } + } + ImGui::TableNextColumn(); + if (queryReplaceEffectCount>0) { + if (ImGui::Button("Remove effect")) { + queryReplaceEffectCount--; + } + } + + ImGui::EndTable(); + } + ImGui::Text("Effect replace mode:"); + if (ImGui::RadioButton("Clear effects",queryReplaceEffectPos==0)) { + queryReplaceEffectPos=0; + } + if (ImGui::RadioButton("Replace matches only",queryReplaceEffectPos==1)) { + queryReplaceEffectPos=1; + } + if (ImGui::RadioButton("Replace matches, then free spaces",queryReplaceEffectPos==2)) { + queryReplaceEffectPos=2; + } + if (ImGui::RadioButton("Insert in free spaces",queryReplaceEffectPos==3)) { + queryReplaceEffectPos=3; + } + if (ImGui::Button("Replace##QueryReplace")) { + // TODO + } + ImGui::EndTabItem(); } - ImGui::Text("Effect replace mode:"); - if (ImGui::RadioButton("Clear effects",queryReplaceEffectPos==0)) { - queryReplaceEffectPos=0; - } - if (ImGui::RadioButton("Replace matches only",queryReplaceEffectPos==1)) { - queryReplaceEffectPos=1; - } - if (ImGui::RadioButton("Replace matches, then free spaces",queryReplaceEffectPos==2)) { - queryReplaceEffectPos=2; - } - if (ImGui::RadioButton("Insert in free spaces",queryReplaceEffectPos==3)) { - queryReplaceEffectPos=3; - } - if (ImGui::Button("Replace##QueryReplace")) { - // TODO - } - ImGui::TreePop(); + ImGui::EndTabBar(); } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_FIND; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index c1107d2e..b982987c 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4450,6 +4450,7 @@ FurnaceGUI::FurnaceGUI(): queryReplaceNoteDo(false), queryReplaceInsDo(false), queryReplaceVolDo(false), + queryViewingResults(false), wavePreviewOn(false), wavePreviewKey((SDL_Scancode)0), wavePreviewNote(0), diff --git a/src/gui/gui.h b/src/gui/gui.h index 260a7341..300fa8fc 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1208,6 +1208,7 @@ class FurnaceGUI { bool queryReplaceVolDo; bool queryReplaceEffectDo[8]; bool queryReplaceEffectValDo[8]; + bool queryViewingResults; struct ActiveNote { int chan; From 44341d8ccd6134b44a44f28fd7e4b177eaa65c37 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 11 Jun 2022 03:53:34 -0500 Subject: [PATCH 016/580] GUI: find and replace, part 10 find kind of works (only lax mode left to do) then i'll do replace --- src/gui/findReplace.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 700078bb..77c1a7e3 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -112,25 +112,36 @@ void FurnaceGUI::doFind() { bool notMatched=false; switch (curQueryEffectPos) { case 0: // no - // TODO for (int m=0; mcurPat[k].effectCols; n++) { - if (!checkCondition(l.effectMode[m],l.effect[m],l.effectMax[m],p->data[j][4+m*2])) continue; - if (!checkCondition(l.effectValMode[m],l.effectVal[m],l.effectValMax[m],p->data[j][5+m*2])) continue; + if (!checkCondition(l.effectMode[m],l.effect[m],l.effectMax[m],p->data[j][4+n*2])) continue; + if (!checkCondition(l.effectValMode[m],l.effectVal[m],l.effectValMax[m],p->data[j][5+n*2])) continue; + allGood=true; + break; + } + if (!allGood) { + notMatched=true; + break; } } break; case 1: // lax break; case 2: // strict - for (int m=0; mdata[j][4+m*2])) { - notMatched=true; - break; - } - if (!checkCondition(l.effectValMode[m],l.effectVal[m],l.effectValMax[m],p->data[j][5+m*2])) { - notMatched=true; - break; + int effectMax=l.effectCount; + if (effectMax>e->curPat[k].effectCols) { + notMatched=true; + } else { + for (int m=0; mdata[j][4+m*2])) { + notMatched=true; + break; + } + if (!checkCondition(l.effectValMode[m],l.effectVal[m],l.effectValMax[m],p->data[j][5+m*2])) { + notMatched=true; + break; + } } } break; From 3ebbb85f4c265c9106a8612761484fe619259fb2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 11 Jun 2022 22:36:49 -0500 Subject: [PATCH 017/580] add another demo song MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit requested by AURORAāœ­FIELDS --- demos/Funky_Bubbles_OPL3.fur | Bin 0 -> 6660 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Funky_Bubbles_OPL3.fur diff --git a/demos/Funky_Bubbles_OPL3.fur b/demos/Funky_Bubbles_OPL3.fur new file mode 100644 index 0000000000000000000000000000000000000000..5f2ffd24433d6661622af33ad8ab6daad526d037 GIT binary patch literal 6660 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 XSj>`qvZn83JNwIIoSw#wI{5z=(2Gnk literal 0 HcmV?d00001 From 19251e84f6033e859a3a514e4674510e8cd193e4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 11 Jun 2022 22:37:06 -0500 Subject: [PATCH 018/580] add yet another demo song by Laagy --- demos/going_up_a_step_at_time.fur | Bin 0 -> 7710 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/going_up_a_step_at_time.fur diff --git a/demos/going_up_a_step_at_time.fur b/demos/going_up_a_step_at_time.fur new file mode 100644 index 0000000000000000000000000000000000000000..7d52d155aa1735f1343056be174d1d9044509d30 GIT binary patch literal 7710 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 Date: Sat, 11 Jun 2022 22:42:30 -0500 Subject: [PATCH 019/580] GUI: find and replace, part 11 lax mode done now replace time... --- src/gui/findReplace.cpp | 36 ++++++++++++++++++++++++++++++++++-- src/gui/gui.h | 1 + 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 77c1a7e3..3f877242 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -126,8 +126,37 @@ void FurnaceGUI::doFind() { } } break; - case 1: // lax + case 1: { // lax + // locate first effect + int posOfFirst=-1; + for (int m=0; mcurPat[k].effectCols; m++) { + if (!checkCondition(l.effectMode[0],l.effect[0],l.effectMax[0],p->data[j][4+m*2])) continue; + if (!checkCondition(l.effectValMode[0],l.effectVal[0],l.effectValMax[0],p->data[j][5+m*2])) continue; + posOfFirst=m; + break; + } + if (posOfFirst<0) { + notMatched=true; + break; + } + // make sure we aren't too far to the right + if ((posOfFirst+l.effectCount)>e->curPat[k].effectCols) { + notMatched=true; + break; + } + // search from first effect location + for (int m=0; mdata[j][4+(m+posOfFirst)*2])) { + notMatched=true; + break; + } + if (!checkCondition(l.effectValMode[m],l.effectVal[m],l.effectValMax[m],p->data[j][5+(m+posOfFirst)*2])) { + notMatched=true; + break; + } + } break; + } case 2: // strict int effectMax=l.effectCount; if (effectMax>e->curPat[k].effectCols) { @@ -160,6 +189,9 @@ void FurnaceGUI::doFind() { queryViewingResults=true; } +void FurnaceGUI::doReplace() { +} + #define FIRST_VISIBLE(x) (x==GUI_QUERY_MATCH || x==GUI_QUERY_MATCH_NOT || x==GUI_QUERY_RANGE || x==GUI_QUERY_RANGE_NOT) #define SECOND_VISIBLE(x) (x==GUI_QUERY_RANGE || x==GUI_QUERY_RANGE_NOT) @@ -754,7 +786,7 @@ void FurnaceGUI::drawFindReplace() { queryReplaceEffectPos=3; } if (ImGui::Button("Replace##QueryReplace")) { - // TODO + doReplace(); } ImGui::EndTabItem(); } diff --git a/src/gui/gui.h b/src/gui/gui.h index 300fa8fc..55ea989c 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1492,6 +1492,7 @@ class FurnaceGUI { void doUndo(); void doRedo(); void doFind(); + void doReplace(); void editOptions(bool topMenu); void noteInput(int num, int key, int vol=-1); void valueInput(int num, bool direct=false, int target=-1); From 74b524a912387a83cd985350c97163f2cae93146 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 12 Jun 2022 03:50:05 -0500 Subject: [PATCH 020/580] GUI: find and replace, part 12 replace is almost complete - some refinements left to do though --- TODO.md | 1 - src/gui/findReplace.cpp | 201 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 198 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index 5bd4e892..12a7e47e 100644 --- a/TODO.md +++ b/TODO.md @@ -3,7 +3,6 @@ - rewrite the system name detection function anyway - add another FM editor layout - add ability to move selection by dragging -- find and replace - implement Defle slide bug when using E1xy/E2xy and repeating origin note (requires format change) # to-do for 0.6pre2 (as this requires new data structures) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 3f877242..9ab75f6f 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -31,13 +31,13 @@ int queryNote(int note, int octave) { } else if (note==102) { // envelope release only return 130; } else if (octave==0 && note==0) { - return -1; + return -61; } else if (note==0 && octave!=0) { - return -1; // bug note? + return -61; // bug note? } int seek=(note+(signed char)octave*12); if (seek<-60 || seek>=120) { - return -1; // out of range note + return -61; // out of range note } return seek; } @@ -190,6 +190,201 @@ void FurnaceGUI::doFind() { } void FurnaceGUI::doReplace() { + doFind(); + queryViewingResults=false; + + for (FurnaceGUIQueryResult& i: curQueryResults) { + DivPattern* p=e->song.subsong[i.subsong]->pat[i.x].getPattern(e->song.subsong[i.subsong]->orders.ord[i.x][i.order],true); + if (queryReplaceNoteDo) { + switch (queryReplaceNoteMode) { + case GUI_QUERY_REPLACE_SET: + if (queryReplaceNote==130) { // macro release + p->data[i.y][0]=102; + p->data[i.y][1]=0; + } else if (queryReplaceNote==129) { // note release + p->data[i.y][0]=101; + p->data[i.y][1]=0; + } else if (queryReplaceNote==128) { // note off + p->data[i.y][0]=100; + p->data[i.y][1]=0; + } else if (queryReplaceNote>=-60 && queryReplaceNote<120) { // note + p->data[i.y][0]=(queryReplaceNote+60)%12; + if (p->data[i.y][0]==0) p->data[i.y][0]=12; + p->data[i.y][1]=(unsigned char)((queryReplaceNote-1)/12); + } else { // invalid + p->data[i.y][0]=0; + p->data[i.y][1]=0; + } + break; + case GUI_QUERY_REPLACE_ADD: + if (p->data[i.y][0]<100) { + int note=queryNote(p->data[i.y][0],p->data[i.y][1]); + if (note>=-60 && note<120) { + note+=queryReplaceNote; + if (note<-60) note=-60; + if (note>119) note=119; + + p->data[i.y][0]=(note+60)%12; + if (p->data[i.y][0]==0) p->data[i.y][0]=12; + p->data[i.y][1]=(unsigned char)((note-1)/12); + } + } + break; + case GUI_QUERY_REPLACE_ADD_OVERFLOW: + if (p->data[i.y][0]<100) { + int note=queryNote(p->data[i.y][0],p->data[i.y][1]); + if (note>=-60 && note<120) { + note+=queryReplaceNote; + if (note<-60) { + while (note<-60) note+=180; + } else if (note>119) { + while (note>119) note-=180; + } + + p->data[i.y][0]=(note+60)%12; + if (p->data[i.y][0]==0) p->data[i.y][0]=12; + p->data[i.y][1]=(unsigned char)((note-1)/12); + } + } + break; + case GUI_QUERY_REPLACE_CLEAR: + p->data[i.y][0]=0; + p->data[i.y][1]=0; + break; + } + } + + if (queryReplaceInsDo) { + switch (queryReplaceInsMode) { + case GUI_QUERY_REPLACE_SET: + p->data[i.y][2]=queryReplaceIns; + break; + case GUI_QUERY_REPLACE_ADD: + if (p->data[i.y][2]>=0) { + p->data[i.y][2]+=queryReplaceIns; + if (p->data[i.y][2]<0) p->data[i.y][2]=0; + if (p->data[i.y][2]>255) p->data[i.y][2]=255; + } + break; + case GUI_QUERY_REPLACE_ADD_OVERFLOW: + if (p->data[i.y][2]>=0) p->data[i.y][2]=(p->data[i.y][2]+queryReplaceIns)&0xff; + break; + case GUI_QUERY_REPLACE_CLEAR: + p->data[i.y][2]=-1; + break; + } + } + + if (queryReplaceVolDo) { + switch (queryReplaceVolMode) { + case GUI_QUERY_REPLACE_SET: + p->data[i.y][3]=queryReplaceVol; + break; + case GUI_QUERY_REPLACE_ADD: + if (p->data[i.y][3]>=0) { + p->data[i.y][3]+=queryReplaceVol; + if (p->data[i.y][3]<0) p->data[i.y][3]=0; + if (p->data[i.y][3]>255) p->data[i.y][3]=255; + } + break; + case GUI_QUERY_REPLACE_ADD_OVERFLOW: + if (p->data[i.y][3]>=0) p->data[i.y][3]=(p->data[i.y][3]+queryReplaceVol)&0xff; + break; + case GUI_QUERY_REPLACE_CLEAR: + p->data[i.y][3]=-1; + break; + } + } + + signed char effectOrder[8]; + memset(effectOrder,-1,8); + + switch (queryReplaceEffectPos) { + case 0: // clear + for (int j=0; jsong.subsong[i.subsong]->pat[i.x].effectCols; j++) { + effectOrder[j]=j; + } + break; + case 1: { // replace matches + int placementIndex=0; + for (int j=0; jsong.subsong[i.subsong]->pat[i.x].effectCols; j++) { + if (p->data[i.y][4+j*2]!=-1 || p->data[i.y][5+j*2]!=-1) { + effectOrder[placementIndex++]=j; + } + } + break; + } + case 2: { // replace matches then free spaces + int placementIndex=0; + for (int j=0; jsong.subsong[i.subsong]->pat[i.x].effectCols; j++) { + if (p->data[i.y][4+j*2]!=-1 || p->data[i.y][5+j*2]!=-1) { + effectOrder[placementIndex++]=j; + } + } + for (int j=0; jsong.subsong[i.subsong]->pat[i.x].effectCols; j++) { + if (p->data[i.y][4+j*2]==-1 && p->data[i.y][5+j*2]==-1) { + effectOrder[placementIndex++]=j; + } + } + break; + } + case 3: { // insert in free spaces + int placementIndex=0; + for (int j=0; jsong.subsong[i.subsong]->pat[i.x].effectCols; j++) { + if (p->data[i.y][4+j*2]==-1 && p->data[i.y][5+j*2]==-1) { + effectOrder[placementIndex++]=j; + } + } + break; + } + } + + for (int j=0; jdata[i.y][4+pos*2]=queryReplaceEffect[j]; + break; + case GUI_QUERY_REPLACE_ADD: + if (p->data[i.y][4+pos*2]>=0) { + p->data[i.y][4+pos*2]+=queryReplaceEffect[j]; + if (p->data[i.y][4+pos*2]<0) p->data[i.y][4+pos*2]=0; + if (p->data[i.y][4+pos*2]>255) p->data[i.y][4+pos*2]=255; + } + break; + case GUI_QUERY_REPLACE_ADD_OVERFLOW: + if (p->data[i.y][4+pos*2]>=0) p->data[i.y][4+pos*2]=(p->data[i.y][4+pos*2]+queryReplaceEffect[j])&0xff; + break; + case GUI_QUERY_REPLACE_CLEAR: + p->data[i.y][4+pos*2]=-1; + break; + } + } + + if (queryReplaceEffectValDo[j]) { + switch (queryReplaceEffectValMode[j]) { + case GUI_QUERY_REPLACE_SET: + p->data[i.y][5+pos*2]=queryReplaceEffectVal[j]; + break; + case GUI_QUERY_REPLACE_ADD: + if (p->data[i.y][5+pos*2]>=0) { + p->data[i.y][5+pos*2]+=queryReplaceEffectVal[j]; + if (p->data[i.y][5+pos*2]<0) p->data[i.y][5+pos*2]=0; + if (p->data[i.y][5+pos*2]>255) p->data[i.y][5+pos*2]=255; + } + break; + case GUI_QUERY_REPLACE_ADD_OVERFLOW: + if (p->data[i.y][5+pos*2]>=0) p->data[i.y][5+pos*2]=(p->data[i.y][5+pos*2]+queryReplaceEffectVal[j])&0xff; + break; + case GUI_QUERY_REPLACE_CLEAR: + p->data[i.y][5+pos*2]=-1; + break; + } + } + } + } } #define FIRST_VISIBLE(x) (x==GUI_QUERY_MATCH || x==GUI_QUERY_MATCH_NOT || x==GUI_QUERY_RANGE || x==GUI_QUERY_RANGE_NOT) From f3f8804f47995956f8a1f69c869bece471032e69 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 12 Jun 2022 14:39:08 -0500 Subject: [PATCH 021/580] GUI: find and replace, part 13 one more part coming or maybe not --- src/gui/findReplace.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 9ab75f6f..d5548c0f 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -193,8 +193,18 @@ void FurnaceGUI::doReplace() { doFind(); queryViewingResults=false; + bool* touched[DIV_MAX_CHANS]; + memset(touched,0,DIV_MAX_CHANS*sizeof(bool*)); + for (FurnaceGUIQueryResult& i: curQueryResults) { - DivPattern* p=e->song.subsong[i.subsong]->pat[i.x].getPattern(e->song.subsong[i.subsong]->orders.ord[i.x][i.order],true); + int patIndex=e->song.subsong[i.subsong]->orders.ord[i.x][i.order]; + DivPattern* p=e->song.subsong[i.subsong]->pat[i.x].getPattern(patIndex,true); + if (touched[i.x]==NULL) { + touched[i.x]=new bool[256*256]; + memset(touched[i.x],0,256*256*sizeof(bool)); + } + if (touched[i.x][(patIndex<<8)|i.y]) continue; + touched[i.x][(patIndex<<8)|i.y]=true; if (queryReplaceNoteDo) { switch (queryReplaceNoteMode) { case GUI_QUERY_REPLACE_SET: @@ -385,6 +395,10 @@ void FurnaceGUI::doReplace() { } } } + + for (int i=0; i Date: Sun, 12 Jun 2022 23:22:45 -0500 Subject: [PATCH 022/580] OPL: fix 4-op channel muting --- src/engine/platform/opl.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index fbf91448..e6f730c2 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -677,6 +677,9 @@ void DivPlatformOPL::muteChannel(int ch, bool mute) { fm.channel[outChanMap[ch]].muted=mute; } int ops=(slots[3][ch]!=255 && chan[ch].state.ops==4 && oplType==3)?4:2; + if (ch&1 && ch<12) { + if (chan[ch-1].fourOp) return; + } chan[ch].fourOp=(ops==4); update4OpMask=true; for (int i=0; i Date: Mon, 13 Jun 2022 03:54:42 -0500 Subject: [PATCH 023/580] GUI: work on alternate FM layout --- TODO.md | 4 +- src/gui/insEdit.cpp | 555 ++++++++++++++++++++++++++++++++++++++++++- src/gui/settings.cpp | 11 +- 3 files changed, 567 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index 12a7e47e..d667201e 100644 --- a/TODO.md +++ b/TODO.md @@ -1,11 +1,13 @@ # to-do for 0.6pre1 -- rewrite the system name detection function anyway - add another FM editor layout - add ability to move selection by dragging - implement Defle slide bug when using E1xy/E2xy and repeating origin note (requires format change) # to-do for 0.6pre2 (as this requires new data structures) +- rewrite the system name detection function anyway + - this involves the addition of a new "system" field in the song (which solves the problem) + - songs made in older versions will go through old system name detection for compatibility - Game Boy envelope macro/sequence - volume commands should work on Game Boy diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 7d7fa050..81edbfe1 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1345,6 +1345,9 @@ void FurnaceGUI::drawMacros(std::vector& macros) { #define CENTER_VSLIDER \ ImGui::SetCursorPosX(ImGui::GetCursorPosX()+0.5f*ImGui::GetContentRegionAvail().x-10.0f*dpiScale); +#define CENTER_TEXT_20(text) \ + ImGui::SetCursorPosX(ImGui::GetCursorPosX()+0.5*(20.0f*dpiScale-ImGui::CalcTextSize(text).x)); + void FurnaceGUI::drawInsEdit() { if (nextWindow==GUI_WINDOW_INS_EDIT) { insEditOpen=true; @@ -2016,7 +2019,557 @@ void FurnaceGUI::drawInsEdit() { ImGui::EndTable(); } - } else { + } else if (settings.fmLayout>=4 && settings.fmLayout<=6) { // alternate + int columns=2; + switch (settings.fmLayout) { + case 4: // 2x2 + columns=2; + break; + case 5: // 1x4 + columns=1; + break; + case 6: // 4x1 + columns=opCount; + break; + } + char tempID[1024]; + if (ImGui::BeginTable("KGE93BSIEO3NOWBDJZBA",columns,ImGuiTableFlags_SizingStretchSame)) { + for (int i=0; ifm.op[(opCount==4 && ins->type!=DIV_INS_OPL_DRUMS)?opOrder[i]:i]; + if ((settings.fmLayout!=3 && ((i+1)&1)) || i==0 || settings.fmLayout==2) ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Separator(); + ImGui::PushID(fmt::sprintf("op%d",i).c_str()); + + // push colors + if (settings.separateFMColors) { + bool mod=true; + if (ins->type==DIV_INS_OPL_DRUMS) { + mod=false; + } else if (opCount==4) { + if (ins->type==DIV_INS_OPL) { + if (opIsOutputOPL[ins->fm.alg&3][i]) mod=false; + } else { + if (opIsOutput[ins->fm.alg&7][i]) mod=false; + } + } else { + if (i==1 || (ins->type==DIV_INS_OPL && (ins->fm.alg&1))) mod=false; + } + if (mod) { + pushAccentColors( + uiColors[GUI_COLOR_FM_PRIMARY_MOD], + uiColors[GUI_COLOR_FM_SECONDARY_MOD], + uiColors[GUI_COLOR_FM_BORDER_MOD], + uiColors[GUI_COLOR_FM_BORDER_SHADOW_MOD] + ); + } else { + pushAccentColors( + uiColors[GUI_COLOR_FM_PRIMARY_CAR], + uiColors[GUI_COLOR_FM_SECONDARY_CAR], + uiColors[GUI_COLOR_FM_BORDER_CAR], + uiColors[GUI_COLOR_FM_BORDER_SHADOW_CAR] + ); + } + } + + ImGui::Dummy(ImVec2(dpiScale,dpiScale)); + if (ins->type==DIV_INS_OPL_DRUMS) { + ImGui::Text("%s",oplDrumNames[i]); + } else if (ins->type==DIV_INS_OPL && ins->fm.opllPreset==16) { + if (i==1) { + ImGui::Text("Envelope 2 (kick only)"); + } else { + ImGui::Text("Envelope"); + } + } else { + ImGui::Text("OP%d",i+1); + } + + float sliderHeight=200.0f*dpiScale; + float waveWidth=140.0*dpiScale; + float waveHeight=sliderHeight-ImGui::GetFrameHeightWithSpacing()*5.5f; + + int maxTl=127; + if (ins->type==DIV_INS_OPLL) { + if (i==1) { + maxTl=15; + } else { + maxTl=63; + } + } + if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) { + maxTl=63; + } + int maxArDr=(ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ)?31:15; + + bool ssgOn=op.ssgEnv&8; + bool ksrOn=op.ksr; + bool vibOn=op.vib; + bool egtOn=op.egt; + bool susOn=op.sus; // don't you make fun of this one + unsigned char ssgEnv=op.ssgEnv&7; + + if (ImGui::BeginTable("opParams",ins->type==DIV_INS_OPLL?3:4,ImGuiTableFlags_BordersInnerV)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + if (ins->type!=DIV_INS_OPLL) { + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed); + } + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + float textY=ImGui::GetCursorPosY(); + CENTER_TEXT_20(FM_SHORT_NAME(FM_AR)); + ImGui::TextUnformatted(FM_SHORT_NAME(FM_AR)); + if (ins->type!=DIV_INS_OPLL) { + ImGui::TableNextColumn(); + if (ins->type==DIV_INS_FM) { + ImGui::Text("SSG-EG"); + } else { + ImGui::Text("Waveform"); + } + } + ImGui::TableNextColumn(); + ImGui::Text("Envelope"); + ImGui::TableNextColumn(); + CENTER_TEXT(FM_SHORT_NAME(FM_TL)); + ImGui::Text("TL"); + + // A/D/S/R + ImGui::TableNextColumn(); + + op.ar&=maxArDr; + P(CWVSliderScalar("##AR",ImVec2(20.0f*dpiScale,sliderHeight),ImGuiDataType_U8,&op.ar,&maxArDr,&_ZERO)); + + ImGui::SameLine(); + op.dr&=maxArDr; + float textX_DR=ImGui::GetCursorPosX(); + P(CWVSliderScalar("##DR",ImVec2(20.0f*dpiScale,sliderHeight),ImGuiDataType_U8,&op.dr,&maxArDr,&_ZERO)); + + float textX_SL=0.0f; + if (settings.susPosition==0) { + ImGui::SameLine(); + op.sl&=15; + textX_SL=ImGui::GetCursorPosX(); + P(CWVSliderScalar("##SL",ImVec2(20.0f*dpiScale,sliderHeight),ImGuiDataType_U8,&op.sl,&_FIFTEEN,&_ZERO)); + } + + float textX_D2R=0.0f; + if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { + ImGui::SameLine(); + op.d2r&=31; + textX_D2R=ImGui::GetCursorPosX(); + P(CWVSliderScalar("##D2R",ImVec2(20.0f*dpiScale,sliderHeight),ImGuiDataType_U8,&op.d2r,&_THIRTY_ONE,&_ZERO)); + } + + ImGui::SameLine(); + op.rr&=15; + float textX_RR=ImGui::GetCursorPosX(); + P(CWVSliderScalar("##RR",ImVec2(20.0f*dpiScale,sliderHeight),ImGuiDataType_U8,&op.rr,&_FIFTEEN,&_ZERO)); + + if (settings.susPosition==1) { + ImGui::SameLine(); + op.sl&=15; + textX_SL=ImGui::GetCursorPosX(); + P(CWVSliderScalar("##SL",ImVec2(20.0f*dpiScale,sliderHeight),ImGuiDataType_U8,&op.sl,&_FIFTEEN,&_ZERO)); + } + + ImVec2 prevCurPos=ImGui::GetCursorPos(); + + // labels + ImGui::SetCursorPos(ImVec2(textX_DR,textY)); + CENTER_TEXT_20(FM_SHORT_NAME(FM_DR)); + ImGui::TextUnformatted(FM_SHORT_NAME(FM_DR)); + + ImGui::SetCursorPos(ImVec2(textX_SL,textY)); + CENTER_TEXT_20(FM_SHORT_NAME(FM_SL)); + ImGui::TextUnformatted(FM_SHORT_NAME(FM_SL)); + + ImGui::SetCursorPos(ImVec2(textX_RR,textY)); + CENTER_TEXT_20(FM_SHORT_NAME(FM_RR)); + ImGui::TextUnformatted(FM_SHORT_NAME(FM_RR)); + + if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { + ImGui::SetCursorPos(ImVec2(textX_D2R,textY)); + CENTER_TEXT_20(FM_SHORT_NAME(FM_D2R)); + ImGui::TextUnformatted(FM_SHORT_NAME(FM_D2R)); + } + + ImGui::SetCursorPos(prevCurPos); + + if (ins->type!=DIV_INS_OPLL) { + ImGui::TableNextColumn(); + switch (ins->type) { + case DIV_INS_FM: { + // SSG + ImGui::BeginDisabled(!ssgOn); + drawSSGEnv(op.ssgEnv&7,ImVec2(waveWidth,waveHeight)); + ImGui::EndDisabled(); + if (ImGui::Checkbox("##SSGOn",&ssgOn)) { PARAMETER + op.ssgEnv=(op.ssgEnv&7)|(ssgOn<<3); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Only for OPN family chips"); + } + + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderScalar("##SSG",ImGuiDataType_U8,&ssgEnv,&_ZERO,&_SEVEN,ssgEnvTypes[ssgEnv])) { PARAMETER + op.ssgEnv=(op.ssgEnv&8)|(ssgEnv&7); + } + + // params + ImGui::Separator(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); + P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable + + int detune=(op.dt&7)-3; + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT)); + if (CWSliderInt("##DT",&detune,-3,4,tempID)) { PARAMETER + op.dt=detune+3; + } rightClickable + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT2)); + P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE,tempID)); rightClickable + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Only on YM2151 (OPM)"); + } + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_RS)); + P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE,tempID)); rightClickable + + break; + } + case DIV_INS_OPL: + // waveform + drawWaveform(op.ws&7,ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##WS",ImGuiDataType_U8,&op.ws,&_ZERO,&_SEVEN,(ins->type==DIV_INS_OPZ)?opzWaveforms[op.ws&7]:(settings.oplStandardWaveNames?oplWaveformsStandard[op.ws&7]:oplWaveforms[op.ws&7]))); rightClickable + if ((ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) && ImGui::IsItemHovered()) { + ImGui::SetTooltip("OPL2/3 only (last 4 waveforms are OPL3 only)"); + } + + // params + ImGui::Separator(); + if (ImGui::BeginTable("FMParamsInner",2)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + bool amOn=op.am; + if (ImGui::Checkbox(FM_NAME(FM_AM),&amOn)) { PARAMETER + op.am=amOn; + } + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_KSR),&ksrOn)) { PARAMETER + op.ksr=ksrOn; + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_VIB),&vibOn)) { PARAMETER + op.vib=vibOn; + } + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_SUS),&susOn)) { PARAMETER + op.sus=susOn; + } + + ImGui::EndTable(); + } + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); + P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_KSL)); + P(CWSliderScalar("##KSL",ImGuiDataType_U8,&op.ksl,&_ZERO,&_THREE,tempID)); rightClickable + + break; + case DIV_INS_OPZ: { + // waveform + drawWaveform(op.ws&7,ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##WS",ImGuiDataType_U8,&op.ws,&_ZERO,&_SEVEN,(ins->type==DIV_INS_OPZ)?opzWaveforms[op.ws&7]:(settings.oplStandardWaveNames?oplWaveformsStandard[op.ws&7]:oplWaveforms[op.ws&7]))); rightClickable + if ((ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) && ImGui::IsItemHovered()) { + ImGui::SetTooltip("OPL2/3 only (last 4 waveforms are OPL3 only)"); + } + + // params + ImGui::Separator(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); + P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable + + int detune=(op.dt&7)-3; + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT)); + if (CWSliderInt("##DT",&detune,-3,4,tempID)) { PARAMETER + op.dt=detune+3; + } rightClickable + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT2)); + P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE,tempID)); rightClickable + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Only on YM2151 (OPM)"); + } + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_RS)); + P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE,tempID)); rightClickable + break; + } + default: + break; + } + } + + ImGui::TableNextColumn(); + float envHeight=sliderHeight-ImGui::GetStyle().ItemSpacing.y*2.0f; + if (ins->type==DIV_INS_OPZ) { + envHeight-=ImGui::GetFrameHeightWithSpacing()*2.0f; + } + drawFMEnv(op.tl&maxTl,op.ar&maxArDr,op.dr&maxArDr,(ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPLL)?((op.rr&15)*2):op.d2r&31,op.rr&15,op.sl&15,op.sus,op.ssgEnv&8,ins->fm.alg,maxTl,maxArDr,ImVec2(ImGui::GetContentRegionAvail().x,envHeight),ins->type); + + if (ins->type==DIV_INS_OPZ) { + ImGui::Separator(); + if (ImGui::BeginTable("FMParamsInnerOPZ",2)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_FINE)); + P(CWSliderScalar("##FINE",ImGuiDataType_U8,&op.dvb,&_ZERO,&_FIFTEEN,tempID)); rightClickable + + ImGui::TableNextColumn(); + bool amOn=op.am; + if (ImGui::Checkbox(FM_NAME(FM_AM),&amOn)) { PARAMETER + op.am=amOn; + } + ImGui::SameLine(); + if (ImGui::Checkbox("Fixed",&egtOn)) { PARAMETER + op.egt=egtOn; + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_EGSHIFT)); + P(CWSliderScalar("##EGShift",ImGuiDataType_U8,&op.ksl,&_ZERO,&_THREE,tempID)); rightClickable + + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_REV)); + P(CWSliderScalar("##REV",ImGuiDataType_U8,&op.dam,&_ZERO,&_SEVEN,tempID)); rightClickable + + ImGui::TableNextColumn(); + + + ImGui::EndTable(); + } + } + + ImGui::TableNextColumn(); + op.tl&=maxTl; + P(CWVSliderScalar("##TL",ImVec2(20.0f*dpiScale,sliderHeight-(ins->type==DIV_INS_FM?(ImGui::GetFrameHeightWithSpacing()+ImGui::CalcTextSize(FM_SHORT_NAME(FM_AM)).y+ImGui::GetStyle().ItemSpacing.y):0.0f)),ImGuiDataType_U8,&op.tl,&maxTl,&_ZERO)); + + if (ins->type==DIV_INS_FM) { + CENTER_TEXT(FM_SHORT_NAME(FM_AM)); + ImGui::TextUnformatted(FM_SHORT_NAME(FM_AM)); + bool amOn=op.am; + if (ImGui::Checkbox("##AM",&amOn)) { PARAMETER + op.am=amOn; + } + } + + ImGui::EndTable(); + } + + /* + ImGui::SameLine(); + + bool amOn=op.am; + if (ImGui::Checkbox(FM_NAME(FM_AM),&amOn)) { PARAMETER + op.am=amOn; + } + + if (ins->type!=DIV_INS_OPL && ins->type!=DIV_INS_OPL_DRUMS && ins->type!=DIV_INS_OPZ) { + ImGui::SameLine(); + if (ImGui::Checkbox((ins->type==DIV_INS_OPLL)?FM_NAME(FM_EGS):"SSG On",&ssgOn)) { PARAMETER + op.ssgEnv=(op.ssgEnv&7)|(ssgOn<<3); + } + if (ins->type==DIV_INS_FM) { + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Only for OPN family chips"); + } + } + } + + if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) { + ImGui::SameLine(); + if (ImGui::Checkbox(FM_NAME(FM_SUS),&susOn)) { PARAMETER + op.sus=susOn; + } + } + + //52.0 controls vert scaling; default 96 + drawFMEnv(op.tl&maxTl,op.ar&maxArDr,op.dr&maxArDr,(ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPLL)?((op.rr&15)*2):op.d2r&31,op.rr&15,op.sl&15,op.sus,op.ssgEnv&8,ins->fm.alg,maxTl,maxArDr,ImVec2(ImGui::GetContentRegionAvail().x,52.0*dpiScale),ins->type); + //P(CWSliderScalar(FM_NAME(FM_AR),ImGuiDataType_U8,&op.ar,&_ZERO,&_THIRTY_ONE)); rightClickable + if (ImGui::BeginTable("opParams",2,ImGuiTableFlags_SizingStretchProp)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch,0.0); \ + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,0.0); \ + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + op.ar&=maxArDr; + P(CWSliderScalar("##AR",ImGuiDataType_U8,&op.ar,&maxArDr,&_ZERO)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_AR)); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + op.dr&=maxArDr; + P(CWSliderScalar("##DR",ImGuiDataType_U8,&op.dr,&maxArDr,&_ZERO)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_DR)); + + if (settings.susPosition==0) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##SL",ImGuiDataType_U8,&op.sl,&_FIFTEEN,&_ZERO)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_SL)); + } + + if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##D2R",ImGuiDataType_U8,&op.d2r,&_THIRTY_ONE,&_ZERO)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_D2R)); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##RR",ImGuiDataType_U8,&op.rr,&_FIFTEEN,&_ZERO)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_RR)); + + if (settings.susPosition==1) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##SL",ImGuiDataType_U8,&op.sl,&_FIFTEEN,&_ZERO)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_SL)); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + op.tl&=maxTl; + P(CWSliderScalar("##TL",ImGuiDataType_U8,&op.tl,&maxTl,&_ZERO)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_TL)); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Separator(); + ImGui::TableNextColumn(); + ImGui::Separator(); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { + P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_RS)); + } else { + P(CWSliderScalar("##KSL",ImGuiDataType_U8,&op.ksl,&_ZERO,&_THREE)); rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_KSL)); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_MULT)); + + if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { + int detune=(op.dt&7)-3; + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderInt("##DT",&detune,-3,4)) { PARAMETER + op.dt=detune+3; + } rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_DT)); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE)); rightClickable + if (ImGui::IsItemHovered() && ins->type==DIV_INS_FM) { + ImGui::SetTooltip("Only on YM2151 (OPM)"); + } + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_DT2)); + + if (ins->type==DIV_INS_FM) { // OPN only + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderScalar("##SSG",ImGuiDataType_U8,&ssgEnv,&_ZERO,&_SEVEN,ssgEnvTypes[ssgEnv])) { PARAMETER + op.ssgEnv=(op.ssgEnv&8)|(ssgEnv&7); + } rightClickable + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_SSG)); + } + } + + if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPZ) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + + ImGui::TableNextColumn(); + ImGui::Text("%s",FM_NAME(FM_WS)); + } + + ImGui::EndTable(); + } + + if (ins->type==DIV_INS_OPLL || ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) { + if (ImGui::Checkbox(FM_NAME(FM_VIB),&vibOn)) { PARAMETER + op.vib=vibOn; + } + ImGui::SameLine(); + if (ImGui::Checkbox(FM_NAME(FM_KSR),&ksrOn)) { PARAMETER + op.ksr=ksrOn; + } + } + */ + + if (settings.separateFMColors) { + popAccentColors(); + } + + ImGui::PopID(); + } + ImGui::EndTable(); + } + } else { // classic int columns=2; switch (settings.fmLayout) { case 1: // 2x2 diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index ea1d9274..da3b0f27 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1117,6 +1117,15 @@ void FurnaceGUI::drawSettings() { if (ImGui::RadioButton("Compact (4x1)##fml3",settings.fmLayout==3)) { settings.fmLayout=3; } + if (ImGui::RadioButton("Alternate (2x2)##fml4",settings.fmLayout==4)) { + settings.fmLayout=4; + } + if (ImGui::RadioButton("Alternate (1x4)##fml5",settings.fmLayout==5)) { + settings.fmLayout=5; + } + if (ImGui::RadioButton("Alternate (4x1)##fml5",settings.fmLayout==6)) { + settings.fmLayout=6; + } ImGui::Text("Position of Sustain in FM editor:"); if (ImGui::RadioButton("Between Decay and Sustain Rate##susp0",settings.susPosition==0)) { @@ -2077,7 +2086,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.roundedMenus,0,1); clampSetting(settings.loadJapanese,0,1); clampSetting(settings.loadChinese,0,1); - clampSetting(settings.fmLayout,0,3); + clampSetting(settings.fmLayout,0,6); clampSetting(settings.susPosition,0,1); clampSetting(settings.effectCursorDir,0,2); clampSetting(settings.cursorPastePos,0,1); From bd7710991b58e72bd0c40d17d8a64bb2371b9891 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 13 Jun 2022 03:57:31 -0500 Subject: [PATCH 024/580] GUI: a bit more to it --- src/gui/insEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 81edbfe1..681ae10d 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2036,7 +2036,7 @@ void FurnaceGUI::drawInsEdit() { if (ImGui::BeginTable("KGE93BSIEO3NOWBDJZBA",columns,ImGuiTableFlags_SizingStretchSame)) { for (int i=0; ifm.op[(opCount==4 && ins->type!=DIV_INS_OPL_DRUMS)?opOrder[i]:i]; - if ((settings.fmLayout!=3 && ((i+1)&1)) || i==0 || settings.fmLayout==2) ImGui::TableNextRow(); + if ((settings.fmLayout!=6 && ((i+1)&1)) || i==0 || settings.fmLayout==5) ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Separator(); ImGui::PushID(fmt::sprintf("op%d",i).c_str()); From 327a013186358c17162863ecfaf66fc571bf828f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 13 Jun 2022 23:22:17 -0500 Subject: [PATCH 025/580] GUI: finish alternate FM layout --- TODO.md | 2 +- src/gui/insEdit.cpp | 505 ++++++++++++++++++-------------------------- 2 files changed, 201 insertions(+), 306 deletions(-) diff --git a/TODO.md b/TODO.md index d667201e..b0fc02d3 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,5 @@ # to-do for 0.6pre1 -- add another FM editor layout - add ability to move selection by dragging - implement Defle slide bug when using E1xy/E2xy and repeating origin note (requires format change) @@ -11,3 +10,4 @@ - songs made in older versions will go through old system name detection for compatibility - Game Boy envelope macro/sequence - volume commands should work on Game Boy +- ability to customize `OFF`, `===` and `REL` diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 681ae10d..be09eb6d 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2033,12 +2033,13 @@ void FurnaceGUI::drawInsEdit() { break; } char tempID[1024]; - if (ImGui::BeginTable("KGE93BSIEO3NOWBDJZBA",columns,ImGuiTableFlags_SizingStretchSame)) { + ImVec2 oldPadding=ImGui::GetStyle().CellPadding; + ImGui::PushStyleVar(ImGuiStyleVar_CellPadding,ImVec2(8.0f*dpiScale,4.0f*dpiScale)); + if (ImGui::BeginTable("KGE93BSIEO3NOWBDJZBA",columns,ImGuiTableFlags_SizingStretchSame|ImGuiTableFlags_BordersInner)) { for (int i=0; ifm.op[(opCount==4 && ins->type!=DIV_INS_OPL_DRUMS)?opOrder[i]:i]; if ((settings.fmLayout!=6 && ((i+1)&1)) || i==0 || settings.fmLayout==5) ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::Separator(); ImGui::PushID(fmt::sprintf("op%d",i).c_str()); // push colors @@ -2074,20 +2075,22 @@ void FurnaceGUI::drawInsEdit() { ImGui::Dummy(ImVec2(dpiScale,dpiScale)); if (ins->type==DIV_INS_OPL_DRUMS) { - ImGui::Text("%s",oplDrumNames[i]); + snprintf(tempID,1024,"%s",oplDrumNames[i]); } else if (ins->type==DIV_INS_OPL && ins->fm.opllPreset==16) { if (i==1) { - ImGui::Text("Envelope 2 (kick only)"); + snprintf(tempID,1024,"Envelope 2 (kick only)"); } else { - ImGui::Text("Envelope"); + snprintf(tempID,1024,"Envelope"); } } else { - ImGui::Text("OP%d",i+1); + snprintf(tempID,1024,"Operator %d",i+1); } + CENTER_TEXT(tempID); + ImGui::TextUnformatted(tempID); float sliderHeight=200.0f*dpiScale; float waveWidth=140.0*dpiScale; - float waveHeight=sliderHeight-ImGui::GetFrameHeightWithSpacing()*5.5f; + float waveHeight=sliderHeight-ImGui::GetFrameHeightWithSpacing()*(ins->type==DIV_INS_OPLL?4.5f:5.5f); int maxTl=127; if (ins->type==DIV_INS_OPLL) { @@ -2106,14 +2109,13 @@ void FurnaceGUI::drawInsEdit() { bool ksrOn=op.ksr; bool vibOn=op.vib; bool egtOn=op.egt; - bool susOn=op.sus; // don't you make fun of this one + bool susOn=op.sus; // yawn unsigned char ssgEnv=op.ssgEnv&7; - if (ImGui::BeginTable("opParams",ins->type==DIV_INS_OPLL?3:4,ImGuiTableFlags_BordersInnerV)) { + ImGui::PushStyleVar(ImGuiStyleVar_CellPadding,oldPadding); + if (ImGui::BeginTable("opParams",4,ImGuiTableFlags_BordersInnerV)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); - if (ins->type!=DIV_INS_OPLL) { - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed); - } + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,waveWidth); ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed); @@ -2122,13 +2124,11 @@ void FurnaceGUI::drawInsEdit() { float textY=ImGui::GetCursorPosY(); CENTER_TEXT_20(FM_SHORT_NAME(FM_AR)); ImGui::TextUnformatted(FM_SHORT_NAME(FM_AR)); - if (ins->type!=DIV_INS_OPLL) { - ImGui::TableNextColumn(); - if (ins->type==DIV_INS_FM) { - ImGui::Text("SSG-EG"); - } else { - ImGui::Text("Waveform"); - } + ImGui::TableNextColumn(); + if (ins->type==DIV_INS_FM) { + ImGui::Text("SSG-EG"); + } else { + ImGui::Text("Waveform"); } ImGui::TableNextColumn(); ImGui::Text("Envelope"); @@ -2198,29 +2198,172 @@ void FurnaceGUI::drawInsEdit() { ImGui::SetCursorPos(prevCurPos); - if (ins->type!=DIV_INS_OPLL) { - ImGui::TableNextColumn(); - switch (ins->type) { - case DIV_INS_FM: { - // SSG - ImGui::BeginDisabled(!ssgOn); - drawSSGEnv(op.ssgEnv&7,ImVec2(waveWidth,waveHeight)); - ImGui::EndDisabled(); - if (ImGui::Checkbox("##SSGOn",&ssgOn)) { PARAMETER + ImGui::TableNextColumn(); + switch (ins->type) { + case DIV_INS_FM: { + // SSG + ImGui::BeginDisabled(!ssgOn); + drawSSGEnv(op.ssgEnv&7,ImVec2(waveWidth,waveHeight)); + ImGui::EndDisabled(); + if (ImGui::Checkbox("##SSGOn",&ssgOn)) { PARAMETER + op.ssgEnv=(op.ssgEnv&7)|(ssgOn<<3); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Only for OPN family chips"); + } + + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderScalar("##SSG",ImGuiDataType_U8,&ssgEnv,&_ZERO,&_SEVEN,ssgEnvTypes[ssgEnv])) { PARAMETER + op.ssgEnv=(op.ssgEnv&8)|(ssgEnv&7); + } + + // params + ImGui::Separator(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); + P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable + + int detune=(op.dt&7)-3; + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT)); + if (CWSliderInt("##DT",&detune,-3,4,tempID)) { PARAMETER + op.dt=detune+3; + } rightClickable + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT2)); + P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE,tempID)); rightClickable + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Only on YM2151 (OPM)"); + } + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_RS)); + P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE,tempID)); rightClickable + + break; + } + case DIV_INS_OPLL: + // waveform + drawWaveform(i==0?(ins->fm.ams&1):(ins->fm.fms&1),ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); + + // params + ImGui::Separator(); + if (ImGui::BeginTable("FMParamsInner",2)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + bool amOn=op.am; + if (ImGui::Checkbox(FM_NAME(FM_AM),&amOn)) { PARAMETER + op.am=amOn; + } + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_KSR),&ksrOn)) { PARAMETER + op.ksr=ksrOn; + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_VIB),&vibOn)) { PARAMETER + op.vib=vibOn; + } + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_EGS),&ssgOn)) { PARAMETER op.ssgEnv=(op.ssgEnv&7)|(ssgOn<<3); } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Only for OPN family chips"); + + ImGui::EndTable(); + } + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); + P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_KSL)); + P(CWSliderScalar("##KSL",ImGuiDataType_U8,&op.ksl,&_ZERO,&_THREE,tempID)); rightClickable + + break; + case DIV_INS_OPL: + // waveform + drawWaveform(op.ws&7,ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##WS",ImGuiDataType_U8,&op.ws,&_ZERO,&_SEVEN,(ins->type==DIV_INS_OPZ)?opzWaveforms[op.ws&7]:(settings.oplStandardWaveNames?oplWaveformsStandard[op.ws&7]:oplWaveforms[op.ws&7]))); rightClickable + if ((ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) && ImGui::IsItemHovered()) { + ImGui::SetTooltip("OPL2/3 only (last 4 waveforms are OPL3 only)"); + } + + // params + ImGui::Separator(); + if (ImGui::BeginTable("FMParamsInner",2)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + bool amOn=op.am; + if (ImGui::Checkbox(FM_NAME(FM_AM),&amOn)) { PARAMETER + op.am=amOn; + } + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_KSR),&ksrOn)) { PARAMETER + op.ksr=ksrOn; } - ImGui::SameLine(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (CWSliderScalar("##SSG",ImGuiDataType_U8,&ssgEnv,&_ZERO,&_SEVEN,ssgEnvTypes[ssgEnv])) { PARAMETER - op.ssgEnv=(op.ssgEnv&8)|(ssgEnv&7); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_VIB),&vibOn)) { PARAMETER + op.vib=vibOn; + } + ImGui::TableNextColumn(); + if (ImGui::Checkbox(FM_NAME(FM_SUS),&susOn)) { PARAMETER + op.sus=susOn; } - // params - ImGui::Separator(); + ImGui::EndTable(); + } + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); + P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_KSL)); + P(CWSliderScalar("##KSL",ImGuiDataType_U8,&op.ksl,&_ZERO,&_THREE,tempID)); rightClickable + + break; + case DIV_INS_OPZ: { + // waveform + drawWaveform(op.ws&7,ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##WS",ImGuiDataType_U8,&op.ws,&_ZERO,&_SEVEN,(ins->type==DIV_INS_OPZ)?opzWaveforms[op.ws&7]:(settings.oplStandardWaveNames?oplWaveformsStandard[op.ws&7]:oplWaveforms[op.ws&7]))); rightClickable + if ((ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) && ImGui::IsItemHovered()) { + ImGui::SetTooltip("OPL2/3 only (last 4 waveforms are OPL3 only)"); + } + + // params + ImGui::Separator(); + if (egtOn) { + int block=op.dt; + int freqNum=(op.mult<<4)|(op.dvb&15); + ImGui::Text("Block"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImVec2 cursorAlign=ImGui::GetCursorPos(); + if (ImGui::InputInt("##Block",&block,1,1)) { + if (block<0) block=0; + if (block>7) block=7; + op.dt=block; + } + + ImGui::Text("Freq"); + ImGui::SameLine(); + ImGui::SetCursorPos(ImVec2(cursorAlign.x,ImGui::GetCursorPosY())); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##FreqNum",&freqNum,1,16)) { + if (freqNum<0) freqNum=0; + if (freqNum>255) freqNum=255; + op.mult=freqNum>>4; + op.dvb=freqNum&15; + } + } else { ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable @@ -2231,106 +2374,26 @@ void FurnaceGUI::drawInsEdit() { if (CWSliderInt("##DT",&detune,-3,4,tempID)) { PARAMETER op.dt=detune+3; } rightClickable - - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT2)); - P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE,tempID)); rightClickable - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Only on YM2151 (OPM)"); - } - - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_RS)); - P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE,tempID)); rightClickable - - break; } - case DIV_INS_OPL: - // waveform - drawWaveform(op.ws&7,ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - P(CWSliderScalar("##WS",ImGuiDataType_U8,&op.ws,&_ZERO,&_SEVEN,(ins->type==DIV_INS_OPZ)?opzWaveforms[op.ws&7]:(settings.oplStandardWaveNames?oplWaveformsStandard[op.ws&7]:oplWaveforms[op.ws&7]))); rightClickable - if ((ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) && ImGui::IsItemHovered()) { - ImGui::SetTooltip("OPL2/3 only (last 4 waveforms are OPL3 only)"); - } - // params - ImGui::Separator(); - if (ImGui::BeginTable("FMParamsInner",2)) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - bool amOn=op.am; - if (ImGui::Checkbox(FM_NAME(FM_AM),&amOn)) { PARAMETER - op.am=amOn; - } - ImGui::TableNextColumn(); - if (ImGui::Checkbox(FM_NAME(FM_KSR),&ksrOn)) { PARAMETER - op.ksr=ksrOn; - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (ImGui::Checkbox(FM_NAME(FM_VIB),&vibOn)) { PARAMETER - op.vib=vibOn; - } - ImGui::TableNextColumn(); - if (ImGui::Checkbox(FM_NAME(FM_SUS),&susOn)) { PARAMETER - op.sus=susOn; - } - - ImGui::EndTable(); - } - - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); - P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable - - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_KSL)); - P(CWSliderScalar("##KSL",ImGuiDataType_U8,&op.ksl,&_ZERO,&_THREE,tempID)); rightClickable - - break; - case DIV_INS_OPZ: { - // waveform - drawWaveform(op.ws&7,ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - P(CWSliderScalar("##WS",ImGuiDataType_U8,&op.ws,&_ZERO,&_SEVEN,(ins->type==DIV_INS_OPZ)?opzWaveforms[op.ws&7]:(settings.oplStandardWaveNames?oplWaveformsStandard[op.ws&7]:oplWaveforms[op.ws&7]))); rightClickable - if ((ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) && ImGui::IsItemHovered()) { - ImGui::SetTooltip("OPL2/3 only (last 4 waveforms are OPL3 only)"); - } - - // params - ImGui::Separator(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); - P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable - - int detune=(op.dt&7)-3; - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT)); - if (CWSliderInt("##DT",&detune,-3,4,tempID)) { PARAMETER - op.dt=detune+3; - } rightClickable - - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT2)); - P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE,tempID)); rightClickable - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Only on YM2151 (OPM)"); - } - - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_RS)); - P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE,tempID)); rightClickable - break; + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT2)); + P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE,tempID)); rightClickable + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Only on YM2151 (OPM)"); } - default: - break; + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_RS)); + P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE,tempID)); rightClickable + break; } + default: + break; } ImGui::TableNextColumn(); - float envHeight=sliderHeight-ImGui::GetStyle().ItemSpacing.y*2.0f; + float envHeight=sliderHeight;//-ImGui::GetStyle().ItemSpacing.y*2.0f; if (ins->type==DIV_INS_OPZ) { envHeight-=ImGui::GetFrameHeightWithSpacing()*2.0f; } @@ -2341,9 +2404,11 @@ void FurnaceGUI::drawInsEdit() { if (ImGui::BeginTable("FMParamsInnerOPZ",2)) { ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_FINE)); - P(CWSliderScalar("##FINE",ImGuiDataType_U8,&op.dvb,&_ZERO,&_FIFTEEN,tempID)); rightClickable + if (!egtOn) { + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_FINE)); + P(CWSliderScalar("##FINE",ImGuiDataType_U8,&op.dvb,&_ZERO,&_FIFTEEN,tempID)); rightClickable + } ImGui::TableNextColumn(); bool amOn=op.am; @@ -2375,7 +2440,7 @@ void FurnaceGUI::drawInsEdit() { ImGui::TableNextColumn(); op.tl&=maxTl; - P(CWVSliderScalar("##TL",ImVec2(20.0f*dpiScale,sliderHeight-(ins->type==DIV_INS_FM?(ImGui::GetFrameHeightWithSpacing()+ImGui::CalcTextSize(FM_SHORT_NAME(FM_AM)).y+ImGui::GetStyle().ItemSpacing.y):0.0f)),ImGuiDataType_U8,&op.tl,&maxTl,&_ZERO)); + P(CWVSliderScalar("##TL",ImVec2(ImGui::GetFrameHeight(),sliderHeight-(ins->type==DIV_INS_FM?(ImGui::GetFrameHeightWithSpacing()+ImGui::CalcTextSize(FM_SHORT_NAME(FM_AM)).y+ImGui::GetStyle().ItemSpacing.y):0.0f)),ImGuiDataType_U8,&op.tl,&maxTl,&_ZERO)); if (ins->type==DIV_INS_FM) { CENTER_TEXT(FM_SHORT_NAME(FM_AM)); @@ -2388,178 +2453,7 @@ void FurnaceGUI::drawInsEdit() { ImGui::EndTable(); } - - /* - ImGui::SameLine(); - - bool amOn=op.am; - if (ImGui::Checkbox(FM_NAME(FM_AM),&amOn)) { PARAMETER - op.am=amOn; - } - - if (ins->type!=DIV_INS_OPL && ins->type!=DIV_INS_OPL_DRUMS && ins->type!=DIV_INS_OPZ) { - ImGui::SameLine(); - if (ImGui::Checkbox((ins->type==DIV_INS_OPLL)?FM_NAME(FM_EGS):"SSG On",&ssgOn)) { PARAMETER - op.ssgEnv=(op.ssgEnv&7)|(ssgOn<<3); - } - if (ins->type==DIV_INS_FM) { - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Only for OPN family chips"); - } - } - } - - if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) { - ImGui::SameLine(); - if (ImGui::Checkbox(FM_NAME(FM_SUS),&susOn)) { PARAMETER - op.sus=susOn; - } - } - - //52.0 controls vert scaling; default 96 - drawFMEnv(op.tl&maxTl,op.ar&maxArDr,op.dr&maxArDr,(ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPLL)?((op.rr&15)*2):op.d2r&31,op.rr&15,op.sl&15,op.sus,op.ssgEnv&8,ins->fm.alg,maxTl,maxArDr,ImVec2(ImGui::GetContentRegionAvail().x,52.0*dpiScale),ins->type); - //P(CWSliderScalar(FM_NAME(FM_AR),ImGuiDataType_U8,&op.ar,&_ZERO,&_THIRTY_ONE)); rightClickable - if (ImGui::BeginTable("opParams",2,ImGuiTableFlags_SizingStretchProp)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch,0.0); \ - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,0.0); \ - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - op.ar&=maxArDr; - P(CWSliderScalar("##AR",ImGuiDataType_U8,&op.ar,&maxArDr,&_ZERO)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_AR)); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - op.dr&=maxArDr; - P(CWSliderScalar("##DR",ImGuiDataType_U8,&op.dr,&maxArDr,&_ZERO)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_DR)); - - if (settings.susPosition==0) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - P(CWSliderScalar("##SL",ImGuiDataType_U8,&op.sl,&_FIFTEEN,&_ZERO)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_SL)); - } - - if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - P(CWSliderScalar("##D2R",ImGuiDataType_U8,&op.d2r,&_THIRTY_ONE,&_ZERO)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_D2R)); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - P(CWSliderScalar("##RR",ImGuiDataType_U8,&op.rr,&_FIFTEEN,&_ZERO)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_RR)); - - if (settings.susPosition==1) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - P(CWSliderScalar("##SL",ImGuiDataType_U8,&op.sl,&_FIFTEEN,&_ZERO)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_SL)); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - op.tl&=maxTl; - P(CWSliderScalar("##TL",ImGuiDataType_U8,&op.tl,&maxTl,&_ZERO)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_TL)); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Separator(); - ImGui::TableNextColumn(); - ImGui::Separator(); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { - P(CWSliderScalar("##RS",ImGuiDataType_U8,&op.rs,&_ZERO,&_THREE)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_RS)); - } else { - P(CWSliderScalar("##KSL",ImGuiDataType_U8,&op.ksl,&_ZERO,&_THREE)); rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_KSL)); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_MULT)); - - if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { - int detune=(op.dt&7)-3; - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (CWSliderInt("##DT",&detune,-3,4)) { PARAMETER - op.dt=detune+3; - } rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_DT)); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - P(CWSliderScalar("##DT2",ImGuiDataType_U8,&op.dt2,&_ZERO,&_THREE)); rightClickable - if (ImGui::IsItemHovered() && ins->type==DIV_INS_FM) { - ImGui::SetTooltip("Only on YM2151 (OPM)"); - } - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_DT2)); - - if (ins->type==DIV_INS_FM) { // OPN only - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (CWSliderScalar("##SSG",ImGuiDataType_U8,&ssgEnv,&_ZERO,&_SEVEN,ssgEnvTypes[ssgEnv])) { PARAMETER - op.ssgEnv=(op.ssgEnv&8)|(ssgEnv&7); - } rightClickable - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_SSG)); - } - } - - if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPZ) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - - ImGui::TableNextColumn(); - ImGui::Text("%s",FM_NAME(FM_WS)); - } - - ImGui::EndTable(); - } - - if (ins->type==DIV_INS_OPLL || ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS) { - if (ImGui::Checkbox(FM_NAME(FM_VIB),&vibOn)) { PARAMETER - op.vib=vibOn; - } - ImGui::SameLine(); - if (ImGui::Checkbox(FM_NAME(FM_KSR),&ksrOn)) { PARAMETER - op.ksr=ksrOn; - } - } - */ + ImGui::PopStyleVar(); if (settings.separateFMColors) { popAccentColors(); @@ -2569,6 +2463,7 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndTable(); } + ImGui::PopStyleVar(); } else { // classic int columns=2; switch (settings.fmLayout) { From 500e73b2a8e3cd91b70673b34305e0c42f4359b8 Mon Sep 17 00:00:00 2001 From: LoKiToon <98922449+LoKiToon@users.noreply.github.com> Date: Tue, 14 Jun 2022 11:58:43 +0300 Subject: [PATCH 026/580] Add files via upload --- demos/FDS TEST.fur | Bin 1574 -> 1587 bytes demos/Fake Gameboy.fur | Bin 0 -> 1255 bytes demos/c64 ring test.fur | Bin 0 -> 961 bytes demos/game boy thing.fur | Bin 0 -> 1204 bytes demos/thick bass test.fur | Bin 0 -> 17608 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Fake Gameboy.fur create mode 100644 demos/c64 ring test.fur create mode 100644 demos/game boy thing.fur create mode 100644 demos/thick bass test.fur diff --git a/demos/FDS TEST.fur b/demos/FDS TEST.fur index 54b6d3b40607fd0367a5de8f511989df758bb900..54bdd36cd1ff9a0592b9072fff0960ea4336ce18 100644 GIT binary patch literal 1587 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 YJxxZG{!Y`=WEZ8s)AUsNUy`BxAD+J{f&c&j diff --git a/demos/Fake Gameboy.fur b/demos/Fake Gameboy.fur new file mode 100644 index 0000000000000000000000000000000000000000..50d7e36d90ecb33bde6b355e27588de842d1de79 GIT binary patch literal 1255 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 literal 0 HcmV?d00001 diff --git a/demos/thick bass test.fur b/demos/thick bass test.fur new file mode 100644 index 0000000000000000000000000000000000000000..13268e48bccb66cf5215b095a12af357a1f7361f GIT binary patch literal 17608 zcmV)5K*_&&ob0^?TwKYvFI;=KI}LQ>?!gHWqQu?Z-9y}oyH0H432}EPPJ|Gdct}DZ zI1TNtTj~`vbM8HF&N+8p?stCQ_vPIwveHfWuC-RJT2=q`-@Vx#-*)zlDI-RW3C@^0 zdiLZo@uL6$!QekzhpuhA{rZH%!2p=nG97RM(~XB-U;q*N|2p`uTl$~0Kk5GedF#@x zTRYHo!lbEFdXE`1B{(|0^VCighV`C0bxI5XON(0p{I}yU>~B3VtP^@I8--|u8vtT2 z0B!~V&>|cFq7DF~lL2_u0D$_<0MK^^;LunA+AjlOz)Aont^pu(Jpdaw0dQao02j6c z@L(qZZ}$LDwjTh~K@|0)0C=AGPycWnV6{Kke^~$ZDgI~U!v3!P*|F*WF~Zt^%wK=` zk2iOspWj-CuDyEKK8^x`pk<3*y#QeT?nn@q#gL%Ev;KvFASQ+hlKzYL`505;{;wSj z;$b|=zaFv#;OW15%>7;d(EIOyiT?eO5B_tI;@_Xw3jDqC{_eTx_vf77k6(mjA(Bia z3y{qJJDH1Q4wBhOW+It^WEzsGNTwjkKr$K0q~B#Ck_kx0Awj7EYS-roBtwx5Led{e zA0$1HpmYN5z;E-_1W7$4DM(_Ggd*|y-M@yvzlTy0#3MnO3?hF&CJ>1a5;+n!l3&oY z?Fj*(t{)PV%XN{GS17Lml2<4&d(hxt36XC|z~9NO-(&d42LI50P2K;49Q z{nqQhW$G_m|HRh!_WjY@zdM%StN$-Me`Y6`)t!}t{i+ZIGyZ=wz<=KU%LOZu{3idZ z{XN*W@6fLO4+*xlfQkS9_{V7cJ=p$N@m~Ud1Ke5=tp&@GNc#OjS1oYPLec?=FZd0Z znE!f&zqUWx`n^#43#fiTTi@IFM{ob`SbnemzwG>(o&UK&72Kj{_y23b3V?q-SGDi` zS72rN{g{qO+9GKMeq(ZflmDvy(bivJ_2b(5-o8J2`*+9kd-eZi=g;i?&jhPZ9a?qz zA%Uv)4BX##e;oYp5&37V3jE=<+GG9(RJErpYnf9mVAYd&GJAY>9e>~7M{2_n_{|jjTvh^LdzPIm>-u~UO{9gTk z+4(a&|8sz*SC{U!e{2e7j>t#`ojCxc|Gss*p=Y(eC1XA449+d)E#eG+G5MU@!(D9b z%3kDn=t#u(I($GL-VxG_JkC*?DO?WN%v-ENVj$*5%yEPgI@@DMTWY=SGCS7(MX(&! z;ST1nWk2EQ1Yf97_EkWcbj)*l+8P4tDs@;77soip{f!~PJ&9oy++_YNTWWhOXAlN@ zitvO+$E{=8Z_l76+L+F>;FkRqmIsbf^;vE4W|)yX05<0Z(7v2IgbCP*Aw&;*09dat z#JH|H)-I9;mKEYAd@np(8qV7R%;FlVDRGV6!93seRAl*>@1I-jAv)l^#NAE|^<3oG zDL#d7g(WQ7MM8=5G6k(0sdD=T3X(r#9pD4@5N0n>B3)yB<93@K?Ha-RY9slaMP8`Hwx>4XM%RTD^4BBm;UlDEJ%(331O@3}rvg(K%X$kb- ztZnPF4vvLC^9v}4eJ5|DZWHh$-AvsXI~~6CK5&9J+Pu#1hBcJsk{_si?{moz>mtbh zbaur~&n(qB>!Pq*?~f<6v6SMYz4A$bM~b@PiPeWV?b_y18Q>Tg-azsur*2#MqVu9nePbmE2Wo zE4Pttj&;2CpjiBATlDeDZLEuaZ!051x{@0)HgkwLqB73I0>8dLQNQO?m*9ar>vdS- zgrc$DjSLIiC)o#LYSA*?Yqvp;r*IhuvyJ99p<|rWg$cHs*fRb@>nV1IV4=B-$3HGYjH_FWMzmr+7Q3bZ*)4n#2ZA&fkb0 zYv2E+UF`BNrvq22F3H1*Qdg`ioLt2GvVv( z=XKLWGh)5(RL%4FfKRH)mQ1ltt2r&XY}{PkIkNd@v&RY^Y0F?t@bqwWQLk#CeYjk7 zD*XM?k8MldR~mcy9V{K<{ZjiRaIvl*=dSE{#SV8X?l5X4x0r*;ILTM`7P7ZM19}m0 zOdh_($zk2+bhlVUPUb1yTHgUCo!wn7t@0)NNn<~~;)RN4y{nEnVr~!X34G)#%{4~v zxQCbb)lIa;-j3mpPF=vO3pGWk@mn7lvs?ZjK_0Rp2xe%q{HoWV~#nDp$M~RD9jxy|)T?H6kNB_bY8gcTtcW9L6QQR)TE)Tbq_=Vc~`W z{3&it^n_P;&;7;=UZ3cLuKF%_mmY32JMa;r_O>zDBX7FoK4%v*tMWdb3B&NTlKu%N zOiil0*Kb_Xj_B>xx$=bUts>B0!Dv{ptqpirtV(P7WphQZ2R5&PJ7n&f#bkVad3 zi-w4gY3noc#4ntAj^&}}@kdmm{1oG*V*>G5G*88(Zo0=ssA@XB$ZHecm7e0;l`+BA+3lFaNX8RQczo9yd#rdZqskgA z-sT=x?Gz5jWfo;gaadSQ+oF%n-9LQ=`Z^8|dgtF>0vY4Z2qy4P*OCa?uOUm$m@XMt5SzxyQTG*!iB_K^Y@I`XuBT82$ z=)3*mDyLVAQF}K?7IKAcc=WRpGL=_m6hO7xni#68f=mFC%vaQCoE1;lb}B$Z*y zy{G#tydhq0Uq>eiR`WA$6Bye~3CvP@-shuyNO`fHRt2K5^0&W-odfo$j`rr>n_ku48^RS73`3w*!KmGv2+e8_n;aUu+p= zU?t0Rmh9VMO#>54UU~NTx;}h@XUAP!X;bg9_N6SXe-!IFe$aVIblthULd>x7abZ`d zf*0WJ;)!UbxI1-Nwcd1yyU+V1F%z~D_V;+E*{^))6Up*%9;4tZHU~_z>$Nd*g3s2PblrwV(Rt0BQawj{sP2|5OhTez0KN%T@p)Rf;gR$)MOW}vmW5zxuXRCY? zOlkLXV&5}^M#s$*T)AFh;C7)X;pG8fOK9WNq1Gi^hA^Jid(4noV<{JVZtyVPi4Rt7 zf6meXKhcQN2K==W+;dV6eK#kIzbVl5ye>qE(%t``{gqEnPTa*zKa z$A~xci0R%|RvR)MihM?JhCA}GF~Yf$sgBv@U6~X8d9oIkQ|dJLMcjRwcNKL(W$YQR zs3*B4=77yUjo9~J+_zUWIn2)Z5>Q@W+A+P0&T>Y;lBO{|y14qC#@M>}-r5}|Z_#Rh zAX??TRJn}Pjbb^@$Sw$O^2UMom`*g4@kAfTZ^)N$D(#=j#>!Vm$at-b7UYg$eoW}^ z{Z=vHmr))`{^v~WifQ%($wajKE4MsfaZL+$r1IAA%X8y$+SM1od3Wn<%aFY21oQYB zEjPe>K)@0!Q$5!FlWm~nIsX`QhSb~RXHsB{R<3g^ip~@y)JT3A#|&-KAZnfF`t5Zk zo5EFbFDUO%-lnqwJIqZrfwV{HgSs!P2W0c@gI_N)+EtRLKVCkcw2Mf72;;Ft88I5eE5CfH5?)Mm^Ghh}lH5J{HjpNX|z?Pd=6$@KWrgo2^T za&G6E9tIG2+!vLNHnFJ{>o(Tgmdn)z7!y+M37;NT8GZ5e4g3>@AD$c#-fymnnrqto z_+IHU&s8D&B*P6^%0|HSc@mkL+9hy|?Az0K4`2Yh!`*;}pZe|JiC6Rw^4(`iJ~6E5 zbo~`9jjGDr--8)&9-3{Nm>hbdHO@!Pt(S1(Ed+XDW?Q7b1QAA0_vF{F?dG7b6UsU+TD#;FUg=~Z_3}Dpd z-S?|gOZfsLpM1$LlKHrr+x>kH5b1Vf)p9p}Yro{@R`a8=RVm?Q`ZfNJkL6F@?3)|X z(P}K`8|U!>t6ln%xgv>e`bm4U>}=kY4tdQM^Tt$5_v+|6Bkm*>+qFjxx4I9&6Zg<&=oELZ~m^&IKQNMiFasq%nOCm zEzT`Ii8;j<@HwhT$9bbYTJMYumNlyp-su%~agdkfgXQR9&v%apcWkp0^UpcIr&Z%w z9iy1zHP81^qPmesO@WRH{H?O}o_WUIn31TYzmgeFPPA9JL^fY}H9wbS3SS?*NjLSy z2vxjqlf>TAD8maqox2rFcjShwZ%lu_rvOh%Vb;W~fbqupceAbw+NlSYvkHquTW<3w z^_#)k%l1DZ&|VJJn4jP~*x!6_VdYL=ZknUL-D#NNNjIDrKEr%Jzn5xgcvk(MqNGpK zUp_LTnqeCqgje>v?=fKOY;eW5})&Z`@oV=H6bb~LdMhxXJrcs5|yZfQTF>!;9jINJXE5?>yZ?U1BR0}nVMw*@(pK&|L8`RBqPc0TGOqxwiKlpaF zn?JmH*D-mXd}88-@@b{TYVVJ-z_*e`v58pqy_u?==4Ne+TN=t&e8L~xmmi!E%x$T> zb(}06)GtX^SF$i$@<}9DGTd3y@gTt&Rtje}rBq)b7x2WPS$=Qy4K;$Q0l{gZ$-FCy zW6#PMy}ZhkXR}{?Jyx^2WT5vPnQ!0)!S-iiiZJViQXj2PYK7Pf1J1|E4M!)2| zx?n;3iGee{6c4w&%NBp-&-JLs&100)#l!>lb+l>zALlVa8oeyn$i0sJ^ghmMkVE!!%5V$IMXk0E zvJ#B_;sWjvaUs^7}qtbg~lGF#Z`jd$Llb7%==cic7Y(hXCFD0uK^-$=g#pQV8rzDGR5xQB`5mKf6x z(@RTF`(jrtd;;539UQ%lQuUYW#^oZ*HeXg)WazS}Y`--3G9k}7Pq*37OP^!8?|S5% zM0?`-?tG}+NdU0jnvd`7c1y_R@ zag3DKf&Q}QZk=7btShwr)ia1(+auRID&LhxzjoF!^ij(z7gt=Xs$}jC3X6G@$`4y6 zU*Msol(uC3WTnC>voCR~NZ{;BCAr2KPpWkl4J(2xchlAW1(9d!yGIT1Z7c7B&2i4s z3zZB1JCDrc~9V)x3DtNKJRq?(lU&4NSuR^*?2m~J&i=Nx#@6~J`YXDH zCISx^X9VmD4hmT1zrcHucolPybFHnr?YgO}>89zmHOYC-KHIX)%rg%&D~!X;ov3cS zVV>i?Z}?~e&-nL}srZ9{fb4BwYpm8mU1w7}>t6E$({2;rT*q8&&{|G``$C6&gYW(z zeW)Wq=ed-#pFZW-X=G_Hsq=N+%p%KcQ(beM#bTLiZfqQE|B3NT($u?yUrvZ4)Hh(8 zG@qd(FW7hnt9pWZzrLkKZ24erW%0Ad+f=45MvJpCdz5>I_YD8gu=$~%eP@a8V)qG! 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 Date: Tue, 14 Jun 2022 04:41:31 -0500 Subject: [PATCH 027/580] GUI: slight visualizer tweaks --- src/engine/engine.h | 3 ++- src/engine/playback.cpp | 4 +++ src/gui/gui.h | 2 ++ src/gui/pattern.cpp | 55 ++++++++++++++++++++++++++++++++++++++--- 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index dc16584d..1fa88a91 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -83,7 +83,7 @@ struct DivChannelState { int note, oldNote, lastIns, pitch, portaSpeed, portaNote; int volume, volSpeed, cut, rowDelay, volMax; int delayOrder, delayRow, retrigSpeed, retrigTick; - int vibratoDepth, vibratoRate, vibratoPos, vibratoDir, vibratoFine; + int vibratoDepth, vibratoRate, vibratoPos, vibratoPosGiant, vibratoDir, vibratoFine; int tremoloDepth, tremoloRate, tremoloPos; unsigned char arp, arpStage, arpTicks, panL, panR; bool doNote, legato, portaStop, keyOn, keyOff, nowYouCanStop, stopOnOff; @@ -112,6 +112,7 @@ struct DivChannelState { vibratoDepth(0), vibratoRate(0), vibratoPos(0), + vibratoPosGiant(0), vibratoDir(0), vibratoFine(15), tremoloDepth(0), diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index ed70da94..f8cb79ac 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -988,6 +988,10 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { if (chan[i].vibratoDepth>0) { chan[i].vibratoPos+=chan[i].vibratoRate; if (chan[i].vibratoPos>=64) chan[i].vibratoPos-=64; + + chan[i].vibratoPosGiant+=chan[i].vibratoRate; + if (chan[i].vibratoPos>=512) chan[i].vibratoPos-=512; + switch (chan[i].vibratoDir) { case 1: // up dispatchCmd(DivCommand(DIV_CMD_PITCH,i,chan[i].pitch+(MAX(0,(chan[i].vibratoDepth*vibTable[chan[i].vibratoPos]*chan[i].vibratoFine)>>4)/15))); diff --git a/src/gui/gui.h b/src/gui/gui.h index 55ea989c..e5ad4a94 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1539,6 +1539,8 @@ class FurnaceGUI { void addScroll(int amount); void setFileName(String name); void runBackupThread(); + void pushPartBlend(); + void popPartBlend(); int processEvent(SDL_Event* ev); bool loop(); bool finish(); diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index fa00243c..1d220795 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -17,6 +17,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include +#include #include #define _USE_MATH_DEFINES #include "gui.h" @@ -31,6 +33,30 @@ inline float randRange(float min, float max) { return min+((float)rand()/(float)RAND_MAX)*(max-min); } +void _pushPartBlend(const ImDrawList* drawList, const ImDrawCmd* cmd) { + if (cmd!=NULL) { + if (cmd->UserCallbackData!=NULL) { + ((FurnaceGUI*)cmd->UserCallbackData)->pushPartBlend(); + } + } +} + +void _popPartBlend(const ImDrawList* drawList, const ImDrawCmd* cmd) { + if (cmd!=NULL) { + if (cmd->UserCallbackData!=NULL) { + ((FurnaceGUI*)cmd->UserCallbackData)->popPartBlend(); + } + } +} + +void FurnaceGUI::pushPartBlend() { + SDL_SetRenderDrawBlendMode(sdlRend,SDL_BLENDMODE_ADD); +} + +void FurnaceGUI::popPartBlend() { + SDL_SetRenderDrawBlendMode(sdlRend,SDL_BLENDMODE_BLEND); +} + // draw a pattern row inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int chans, int ord, const DivPattern** patCache, bool inhibitSel) { static char id[32]; @@ -692,11 +718,14 @@ void FurnaceGUI::drawPattern() { ImU32* color=noteGrad; switch (i.cmd) { - case DIV_CMD_NOTE_ON: + case DIV_CMD_NOTE_ON: { + float strength=CLAMP(i.value,0,119); partIcon=ICON_FA_ASTERISK; - life=96.0f; + life=80.0f+((i.value==DIV_NOTE_NULL)?0.0f:(strength*0.3f)); lifeSpeed=3.0f; + num=6+(strength/16); break; + } case DIV_CMD_LEGATO: partIcon=ICON_FA_COG; color=insGrad; @@ -794,7 +823,7 @@ void FurnaceGUI::drawPattern() { float frameTime=ImGui::GetIO().DeltaTime*60.0f; - // note slides + // note slides and vibrato ImVec2 arrowPoints[7]; if (e->isPlaying()) for (int i=0; icurSubSong->chanShow[i]) continue; @@ -849,11 +878,30 @@ void FurnaceGUI::drawPattern() { } } } + if (ch->vibratoDepth>0) { + ImVec4 col=uiColors[GUI_COLOR_PATTERN_EFFECT_PITCH]; + col.w*=0.2; + float width=patChanX[i+1]-patChanX[i]; + + particles.push_back(Particle( + pitchGrad, + ICON_FA_GLASS, + off.x+patChanX[i]+(width*0.5+0.5*sin(M_PI*(float)ch->vibratoPosGiant/64.0f)*width)-scrollX, + off.y+(ImGui::GetWindowHeight()*0.5f)+randRange(0,patFont->FontSize), + randRange(-4.0f,4.0f), + 2.0f*(3.0f+(rand()%5)+ch->vibratoRate), + 0.4f, + 1.0f, + 128.0f, + 4.0f + )); + } } // particle simulation ImDrawList* fdl=ImGui::GetForegroundDrawList(); if (!particles.empty()) WAKE_UP; + fdl->AddCallback(_pushPartBlend,this); for (size_t i=0; iAddCallback(_popPartBlend,this); } ImGui::PopStyleColor(3); From cc06f36c92b8535c93a72e58bc3adc048a94b146 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 14 Jun 2022 14:08:28 -0500 Subject: [PATCH 028/580] GUI: fix dumb header insertion --- src/gui/pattern.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 1d220795..b7940a9e 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -17,9 +17,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include -#include -#include #define _USE_MATH_DEFINES #include "gui.h" #include "../ta-log.h" From dc9f1112d15f45168a388de6bae475dab9060aa6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 14 Jun 2022 23:00:20 -0500 Subject: [PATCH 029/580] MSM6258: fix rate being twice #541 --- src/engine/platform/msm6258.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/msm6258.cpp b/src/engine/platform/msm6258.cpp index db1848cf..731bf8f2 100644 --- a/src/engine/platform/msm6258.cpp +++ b/src/engine/platform/msm6258.cpp @@ -380,7 +380,7 @@ void DivPlatformMSM6258::setFlags(unsigned int flags) { chipClock=4000000; break; } - rate=chipClock/128; + rate=chipClock/256; for (int i=0; i<1; i++) { oscBuf[i]->rate=rate; } From 64f534328924013a93bda360bc0682315546b023 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 15 Jun 2022 02:03:20 -0500 Subject: [PATCH 030/580] I give up trying to fix this file dialog for now --- extern/igfd/ImGuiFileDialog.cpp | 10 ++++++---- src/gui/gui.cpp | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/extern/igfd/ImGuiFileDialog.cpp b/extern/igfd/ImGuiFileDialog.cpp index f7a2be5b..776ad373 100644 --- a/extern/igfd/ImGuiFileDialog.cpp +++ b/extern/igfd/ImGuiFileDialog.cpp @@ -1287,8 +1287,6 @@ namespace IGFD std::sort(prFileList.begin(), prFileList.end(), [](const std::shared_ptr& a, const std::shared_ptr& b) -> bool { - if (a==NULL || b==NULL) - return false; if (!a.use_count() || !b.use_count()) return false; @@ -1760,7 +1758,7 @@ namespace IGFD struct stat statInfos = {}; char timebuf[100]; int result = stat(fpn.c_str(), &statInfos); - if (!result) + if (result!=-1) { if (vInfos->fileType != 'd') { @@ -1781,7 +1779,11 @@ namespace IGFD { vInfos->fileModifDate = std::string(timebuf, len); } - } + } else { + vInfos->fileSize=0; + vInfos->formatedFileSize = prFormatFileSize(vInfos->fileSize); + vInfos->fileModifDate="???"; + } } } diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index b982987c..fd904649 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4105,6 +4105,7 @@ bool FurnaceGUI::init() { #ifndef __APPLE__ if (settings.dpiScale<0.5f) { + // TODO: replace with a function to actually detect the display scaling factor as it's unreliable. SDL_GetDisplayDPI(SDL_GetWindowDisplayIndex(sdlWin),&dpiScaleF,NULL,NULL); dpiScale=round(dpiScaleF/96.0f); if (dpiScale<1) dpiScale=1; From 491109e765812e725995087d2b3e606f0f35a8c9 Mon Sep 17 00:00:00 2001 From: LoKiToon <98922449+LoKiToon@users.noreply.github.com> Date: Wed, 15 Jun 2022 23:38:18 +0300 Subject: [PATCH 031/580] Add files via upload --- demos/Fusion.fur | Bin 0 -> 1881 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Fusion.fur diff --git a/demos/Fusion.fur b/demos/Fusion.fur new file mode 100644 index 0000000000000000000000000000000000000000..a69f26e815e1ada047d94f642a76a8c0e204c657 GIT binary patch literal 1881 zcmZ8ec{tPwA7_wZS|mq~oDE@wMJzJ8k}G9%6;?!M3a^gO+Pe~$0x^ZDK-v3zDTbWB4M;1~~|dK?oj(({hG+ z70g6e0Uoni0X!0f_{ig?!?)hS=M6AkPlCb$LC%gjdsDD8VjKh1@jc1H2!@09%?0pr zN7|wx#{1C74XwG}@y^s)9%_d`2TdEF>PztlXZq?lWTT@Qk1jATu8h2V99XPqCUvCY zucJmy5&1is zzMTak@|(UTEoN=N*LRnVIsjkeXBSQHVnq7y)uYrVnzwQrE=*4IJB-+d?Tj*PKQ}hw zBtndHgOStPE6=YklpEVcd5&qU2)DUXr~cG8JH1~)UHW;}d|(zu?5t#2U12FyNfJ@HqatHN;C7T`weY8dVm^cZRT$2YWr6~ zku}W4#AIP^W~Pv|DNN0ARLShPrW(faXnv&LqbX=wdm&fBz@C`1+w}VX+AiaARiKoq zl`JcAC=GZ%(io8LO@^zEX!HNL9jQBGu;hVf6<)b*CS!Tk=|gdXPf5fN`6X;`Upnby zrrlw5u52EatWhu{ef0`!3N4m*iuH7%-fkxZi*{nbaZfj84AHLLNT+!?&LMky= z30`a}^zebPNwLA99}W7ZCz}lsm>(adyv)&^C;KAA;sPGVx+DpGPJV?ItEb&`PS>4p z)71eZ#INAhU?;jvHz>W?P1SoDEK0}4F4aCjZJ<&7L*24YbKjndKo*Q!mGrBW!zeN| zZ_7!)h{6d=Lt71hhcAmozp*An0!s8)NQ=4+Are85w&p;8m0d+Hhu&ZRLecCfJX4*r zVeRdBwT z!fBe;&o#SaY9wh9h$V+_>ANe^%AhTF z?2C}>Od-S&%}_tA*|kxSxy00wNRsgqtC4#7oE` Date: Thu, 16 Jun 2022 01:26:19 -0500 Subject: [PATCH 032/580] GUI: prepare for replace undo --- src/gui/editing.cpp | 8 +++++++- src/gui/findReplace.cpp | 10 ++++++++++ src/gui/gui.h | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index ea12eb59..f299b1af 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -66,6 +66,8 @@ void FurnaceGUI::prepareUndo(ActionType action) { e->curPat[i].getPattern(e->curOrders->ord[i][curOrder],false)->copyOn(oldPat[i]); } break; + case GUI_UNDO_REPLACE: // this is handled by doReplace() + break; } } @@ -86,7 +88,7 @@ void FurnaceGUI::makeUndo(ActionType action) { if (oldOrders.ord[i][j]!=e->curOrders->ord[i][j]) { s.ord.push_back(UndoOrderData(subSong,i,j,oldOrders.ord[i][j],e->curOrders->ord[i][j])); } - } + }SATGDIOPTASDIOKP;ASDTG } s.oldOrdersLen=oldOrdersLen; s.newOrdersLen=e->curSubSong->ordersLen; @@ -126,6 +128,8 @@ void FurnaceGUI::makeUndo(ActionType action) { doPush=true; } break; + case GUI_UNDO_REPLACE: // this is handled by doReplace() + break; } if (doPush) { MARK_MODIFIED; @@ -943,6 +947,7 @@ void FurnaceGUI::doUndo() { case GUI_UNDO_PATTERN_FLIP: case GUI_UNDO_PATTERN_COLLAPSE: case GUI_UNDO_PATTERN_EXPAND: + case GUI_UNDO_REPLACE: for (UndoPatternData& i: us.pat) { e->changeSongP(i.subSong); DivPattern* p=e->curPat[i.chan].getPattern(i.pat,true); @@ -991,6 +996,7 @@ void FurnaceGUI::doRedo() { case GUI_UNDO_PATTERN_FLIP: case GUI_UNDO_PATTERN_COLLAPSE: case GUI_UNDO_PATTERN_EXPAND: + case GUI_UNDO_REPLACE: for (UndoPatternData& i: us.pat) { e->changeSongP(i.subSong); DivPattern* p=e->curPat[i.chan].getPattern(i.pat,true); diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index d5548c0f..5dae95bc 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -189,6 +189,12 @@ void FurnaceGUI::doFind() { queryViewingResults=true; } +/* issues with the find and replace function: + - doesn't mark the module as modified + - can't undo + - replace notes to anything starting from C-0 to lower notes will have an octave higher, so set it to replace to C-0 it will becom C-1, b_1 will become B-0 and so on +*/ + void FurnaceGUI::doReplace() { doFind(); queryViewingResults=false; @@ -399,6 +405,10 @@ void FurnaceGUI::doReplace() { for (int i=0; i Date: Thu, 16 Jun 2022 02:09:57 -0500 Subject: [PATCH 033/580] fix build --- src/gui/editing.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index f299b1af..8b30d251 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -88,7 +88,7 @@ void FurnaceGUI::makeUndo(ActionType action) { if (oldOrders.ord[i][j]!=e->curOrders->ord[i][j]) { s.ord.push_back(UndoOrderData(subSong,i,j,oldOrders.ord[i][j],e->curOrders->ord[i][j])); } - }SATGDIOPTASDIOKP;ASDTG + } } s.oldOrdersLen=oldOrdersLen; s.newOrdersLen=e->curSubSong->ordersLen; From c44ca95b92277578661f9d317b4ae80f4fc9bf07 Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Fri, 17 Jun 2022 03:06:07 +0700 Subject: [PATCH 034/580] Make volume command handling consistent For WonderSwan and VIC-20 --- src/engine/platform/swan.cpp | 2 +- src/engine/platform/vic20.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/swan.cpp b/src/engine/platform/swan.cpp index 73dc7928..905fa82a 100644 --- a/src/engine/platform/swan.cpp +++ b/src/engine/platform/swan.cpp @@ -347,7 +347,7 @@ int DivPlatformSwan::dispatch(DivCommand c) { case DIV_CMD_VOLUME: if (chan[c.chan].vol!=c.value) { chan[c.chan].vol=c.value; - if (!chan[c.chan].std.vol.had) { + if (!chan[c.chan].std.vol.has) { calcAndWriteOutVol(c.chan,15); } } diff --git a/src/engine/platform/vic20.cpp b/src/engine/platform/vic20.cpp index a766ba44..8475b0e5 100644 --- a/src/engine/platform/vic20.cpp +++ b/src/engine/platform/vic20.cpp @@ -195,7 +195,7 @@ int DivPlatformVIC20::dispatch(DivCommand c) { case DIV_CMD_VOLUME: if (chan[c.chan].vol!=c.value) { chan[c.chan].vol=c.value; - if (!chan[c.chan].std.vol.had) { + if (!chan[c.chan].std.vol.has) { calcAndWriteOutVol(c.chan,15); } } From 7d78b393fb69619045c4d1cfb83999a31f29cde8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 16 Jun 2022 21:25:06 -0500 Subject: [PATCH 035/580] update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 06576ee5..566a3c3f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .vscode/ build/ +clangbuild/ nosdl/ release/ t/ From ed6a110d4493cbad3efc8852d74bf4739b4c12ec Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 16 Jun 2022 21:25:21 -0500 Subject: [PATCH 036/580] initialize SF_INFO before loading sample --- src/engine/engine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 76b2cd11..dfac034c 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2183,6 +2183,7 @@ int DivEngine::addSampleFromFile(const char* path) { return -1; #else SF_INFO si; + memset(&si,0,sizeof(SF_INFO)); SNDFILE* f=sf_open(path,SFM_READ,&si); if (f==NULL) { BUSY_END; From 327952f3f448591075516cc32844f9c52480845f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 16 Jun 2022 22:07:12 -0500 Subject: [PATCH 037/580] finally support loading floating-point samples --- src/engine/engine.cpp | 58 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index dfac034c..b7a96209 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2201,8 +2201,22 @@ int DivEngine::addSampleFromFile(const char* path) { BUSY_END; return -1; } - short* buf=new short[si.channels*si.frames]; - if (sf_readf_short(f,buf,si.frames)!=si.frames) { + void* buf=NULL; + sf_count_t sampleLen=sizeof(short); + if ((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_PCM_U8) { + logD("sample is 8-bit unsigned"); + buf=new unsigned char[si.channels*si.frames]; + sampleLen=sizeof(unsigned char); + } else if ((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_FLOAT) { + logD("sample is 32-bit float"); + buf=new float[si.channels*si.frames]; + sampleLen=sizeof(float); + } else { + logD("sample is 16-bit signed"); + buf=new short[si.channels*si.frames]; + sampleLen=sizeof(short); + } + if (sf_read_raw(f,buf,si.frames*si.channels*sampleLen)!=(si.frames*si.channels*sampleLen)) { logW("sample read size mismatch!"); } DivSample* sample=new DivSample; @@ -2216,19 +2230,41 @@ int DivEngine::addSampleFromFile(const char* path) { sample->depth=16; } sample->init(si.frames); - for (int i=0; idata8[index++]=averaged; } - averaged/=si.channels; - if (((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_PCM_U8)) { - sample->data8[index++]=averaged>>8; - } else { + delete[] (unsigned char*)buf; + } else if ((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_FLOAT) { + for (int i=0; i32767.0) averaged=32767.0; sample->data16[index++]=averaged; } + delete[] (float*)buf; + } else { + for (int i=0; idata16[index++]=averaged; + } + delete[] (short*)buf; } - delete[] buf; + sample->rate=si.samplerate; if (sample->rate<4000) sample->rate=4000; if (sample->rate>96000) sample->rate=96000; From cdbcf7fcd3789dbd77997a657d4ece2595cc3cdf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 16 Jun 2022 22:10:57 -0500 Subject: [PATCH 038/580] fix loading 8-bit samples --- src/engine/engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index b7a96209..ecd095de 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2234,7 +2234,7 @@ int DivEngine::addSampleFromFile(const char* path) { for (int i=0; idata8[index++]=averaged; From 4d44c577e734507a4e65b0e0898a6f9138fc8e15 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 16 Jun 2022 23:22:40 -0500 Subject: [PATCH 039/580] support saving 8-bit samples as-is --- src/engine/sample.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index 53441095..36886856 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -51,7 +51,14 @@ bool DivSample::save(const char* path) { si.channels=1; si.samplerate=rate; - si.format=SF_FORMAT_PCM_16|SF_FORMAT_WAV; + switch (depth) { + case 8: // 8-bit + si.format=SF_FORMAT_PCM_U8|SF_FORMAT_WAV; + break; + default: // 16-bit + si.format=SF_FORMAT_PCM_16|SF_FORMAT_WAV; + break; + } f=sf_open(path,SFM_WRITE,&si); @@ -77,7 +84,21 @@ bool DivSample::save(const char* path) { } sf_command(f, SFC_SET_INSTRUMENT, &inst, sizeof(inst)); - sf_writef_short(f,data16,samples); + switch (depth) { + case 8: { + // convert from signed to unsigned + unsigned char* buf=new unsigned char[length8]; + for (size_t i=0; i Date: Thu, 16 Jun 2022 23:39:38 -0500 Subject: [PATCH 040/580] harden sample movement --- src/engine/engine.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index ecd095de..0812535c 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2067,6 +2067,8 @@ int DivEngine::addSample() { sample->name=fmt::sprintf("Sample %d",sampleCount); song.sample.push_back(sample); song.sampleLen=sampleCount+1; + sPreview.sample=-1; + sPreview.pos=0; saveLock.unlock(); renderSamples(); BUSY_END; @@ -2302,6 +2304,8 @@ int DivEngine::addSampleFromFile(const char* path) { void DivEngine::delSample(int index) { BUSY_BEGIN; + sPreview.sample=-1; + sPreview.pos=0; saveLock.lock(); if (index>=0 && index<(int)song.sample.size()) { delete song.sample[index]; @@ -2516,6 +2520,8 @@ bool DivEngine::moveWaveUp(int which) { bool DivEngine::moveSampleUp(int which) { if (which<1 || which>=(int)song.sample.size()) return false; BUSY_BEGIN; + sPreview.sample=-1; + sPreview.pos=0; DivSample* prev=song.sample[which]; saveLock.lock(); song.sample[which]=song.sample[which-1]; @@ -2553,6 +2559,8 @@ bool DivEngine::moveWaveDown(int which) { bool DivEngine::moveSampleDown(int which) { if (which<0 || which>=((int)song.sample.size())-1) return false; BUSY_BEGIN; + sPreview.sample=-1; + sPreview.pos=0; DivSample* prev=song.sample[which]; saveLock.lock(); song.sample[which]=song.sample[which+1]; From ad5072dad675199ec11d02c5158c310724c8e775 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 16 Jun 2022 23:55:17 -0500 Subject: [PATCH 041/580] more MIDI debugging messages --- src/audio/abstract.cpp | 2 ++ src/engine/engine.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/audio/abstract.cpp b/src/audio/abstract.cpp index e44fdf7e..942e3143 100644 --- a/src/audio/abstract.cpp +++ b/src/audio/abstract.cpp @@ -92,10 +92,12 @@ bool TAMidiOut::closeDevice() { } std::vector TAMidiIn::listDevices() { + logW("attempting to list devices of abstract TAMidiIn!"); return std::vector(); } std::vector TAMidiOut::listDevices() { + logW("attempting to list devices of abstract TAMidiOut!"); return std::vector(); } diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 0812535c..8ce31a60 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3025,6 +3025,8 @@ bool DivEngine::initAudioBackend() { if (!output->midiIn->openDevice(inName)) { logW("could not open MIDI input device!"); } + } else { + logV("no MIDI input device selected."); } } if (output->midiOut) { @@ -3035,6 +3037,8 @@ bool DivEngine::initAudioBackend() { if (!output->midiOut->openDevice(outName)) { logW("could not open MIDI output device!"); } + } else { + logV("no MIDI output device selected."); } } From d5d381328bddc84262dbd61c2c83c4f3174a5c8f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 00:02:29 -0500 Subject: [PATCH 042/580] add modified version of Native File Dialog it will replace portable-file-dialogs on Windows, and perhaps in the rest of operating systems (maybe not Linux) as well. --- extern/nfd-modified/.gitignore | 181 +++++ extern/nfd-modified/LICENSE | 16 + extern/nfd-modified/MODIFIED.md | 7 + extern/nfd-modified/README.md | 182 +++++ extern/nfd-modified/docs/build.md | 39 + extern/nfd-modified/docs/contributing.md | 25 + extern/nfd-modified/src/common.h | 21 + extern/nfd-modified/src/include/nfd.h | 74 ++ extern/nfd-modified/src/nfd_cocoa.m | 286 +++++++ extern/nfd-modified/src/nfd_common.c | 142 ++++ extern/nfd-modified/src/nfd_common.h | 39 + extern/nfd-modified/src/nfd_gtk.c | 379 +++++++++ extern/nfd-modified/src/nfd_win.cpp | 762 ++++++++++++++++++ extern/nfd-modified/src/nfd_zenity.c | 307 +++++++ extern/nfd-modified/src/simple_exec.h | 218 +++++ extern/nfd-modified/test/test_opendialog.c | 29 + .../test/test_opendialogmultiple.c | 32 + extern/nfd-modified/test/test_pickfolder.c | 29 + extern/nfd-modified/test/test_savedialog.c | 28 + 19 files changed, 2796 insertions(+) create mode 100644 extern/nfd-modified/.gitignore create mode 100644 extern/nfd-modified/LICENSE create mode 100644 extern/nfd-modified/MODIFIED.md create mode 100644 extern/nfd-modified/README.md create mode 100644 extern/nfd-modified/docs/build.md create mode 100644 extern/nfd-modified/docs/contributing.md create mode 100644 extern/nfd-modified/src/common.h create mode 100644 extern/nfd-modified/src/include/nfd.h create mode 100644 extern/nfd-modified/src/nfd_cocoa.m create mode 100644 extern/nfd-modified/src/nfd_common.c create mode 100644 extern/nfd-modified/src/nfd_common.h create mode 100644 extern/nfd-modified/src/nfd_gtk.c create mode 100644 extern/nfd-modified/src/nfd_win.cpp create mode 100644 extern/nfd-modified/src/nfd_zenity.c create mode 100644 extern/nfd-modified/src/simple_exec.h create mode 100644 extern/nfd-modified/test/test_opendialog.c create mode 100644 extern/nfd-modified/test/test_opendialogmultiple.c create mode 100644 extern/nfd-modified/test/test_pickfolder.c create mode 100644 extern/nfd-modified/test/test_savedialog.c diff --git a/extern/nfd-modified/.gitignore b/extern/nfd-modified/.gitignore new file mode 100644 index 00000000..5f144cbe --- /dev/null +++ b/extern/nfd-modified/.gitignore @@ -0,0 +1,181 @@ +.sconsign.dblite +# Object files +*.o +*.ko +*.obj +*.elf +# Precompiled Headers +*.gch +*.pch +# Libraries +*.lib +*.a +*.la +*.lo +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates +# User-specific folders +*.sln.ide/ +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +# Roslyn cache directories +*.ide/ +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* +#NUNIT +*.VisualState.xml +TestResult.xml +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc +# Chutzpah Test files +_Chutzpah* +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile +# Visual Studio profiler +*.psess +*.vsp +*.vspx +# TFS 2012 Local Workspace +$tf/ +# Guidance Automation Toolkit +*.gpState +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user +# JustCode is a .NET coding addin-in +.JustCode +# TeamCity is a build add-in +_TeamCity* +# DotCover is a Code Coverage Tool +*.dotCover +# NCrunch +_NCrunch_* +.*crunch*.local.xml +# MightyMoose +*.mm.* +AutoTest.Net/ +# Web workbench (sass) +.sass-cache/ +# Installshield output folder +[Ee]xpress/ +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html +# Click-Once directory +publish/ +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# If using the old MSBuild-Integrated Package Restore, uncomment this: +#!**/packages/repositories.config +# Windows Azure Build Output +csx/ +*.build.csdef +# Windows Store app package directory +AppPackages/ +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +bower_components/ +# RIA/Silverlight projects +Generated_Code/ +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +# SQL Server files +*.mdf +*.ldf +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +# Microsoft Fakes +FakesAssemblies/ diff --git a/extern/nfd-modified/LICENSE b/extern/nfd-modified/LICENSE new file mode 100644 index 00000000..3ab103c5 --- /dev/null +++ b/extern/nfd-modified/LICENSE @@ -0,0 +1,16 @@ +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + diff --git a/extern/nfd-modified/MODIFIED.md b/extern/nfd-modified/MODIFIED.md new file mode 100644 index 00000000..bb542f8b --- /dev/null +++ b/extern/nfd-modified/MODIFIED.md @@ -0,0 +1,7 @@ +# MODIFIED + +this is a modified, altered, edited and revised version of the Native File Dialog library used to display native-feeling, original and operating-system specific file archive dialog picker selectors, which is done by the Native File Dialog library. + +it should not and shall NOT be mistaken for the original, authentic or actual version and revision of the library. + +this is a version tailored for Furnace. diff --git a/extern/nfd-modified/README.md b/extern/nfd-modified/README.md new file mode 100644 index 00000000..fd7a9783 --- /dev/null +++ b/extern/nfd-modified/README.md @@ -0,0 +1,182 @@ +# Native File Dialog Modified Version!!! # + +A tiny, neat C library that portably invokes native file open, folder select and save dialogs. Write dialog code once and have it pop up native dialogs on all supported platforms. Avoid linking large dependencies like wxWidgets and qt. + +This is a modified version of Native File Dialog, tailored for Furnace. + +Features: + + - Lean C API, static library -- no ObjC, no C++, no STL. + - Zlib licensed. + - Consistent UTF-8 support on all platforms. + - Simple universal file filter syntax. + - Paid support available. + - Multiple file selection support. + - 64-bit and 32-bit friendly. + - GCC, Clang, Xcode, Mingw and Visual Studio supported. + - No third party dependencies for building or linking. + - Support for Vista's modern `IFileDialog` on Windows. + - Support for non-deprecated Cocoa APIs on OS X. + - GTK3 dialog on Linux. + - Optional Zenity support on Linux to avoid linking GTK. + - Tested, works alongside [http://www.libsdl.org](SDL2) on all platforms, for the game developers out there. + +# Example Usage # + +```C +#include +#include +#include + +int main( void ) +{ + nfdchar_t *outPath = NULL; + nfdresult_t result = NFD_OpenDialog( NULL, NULL, &outPath ); + + if ( result == NFD_OKAY ) { + puts("Success!"); + puts(outPath); + free(outPath); + } + else if ( result == NFD_CANCEL ) { + puts("User pressed cancel."); + } + else { + printf("Error: %s\n", NFD_GetError() ); + } + + return 0; +} +``` + +See self-documenting API [NFD.h](src/include/nfd.h) for more options. + +# Screenshots # + +![Windows rendering a dialog](screens/open_win.png?raw=true) +![GTK3 on Linux rendering a dialog](screens/open_gtk3.png?raw=true) +![Cocoa on MacOS rendering a dialog](screens/open_cocoa.png?raw=true) + +## Changelog ## + + - **Major** version increments denote API or ABI departure. + - **Minor** version increments denote build or trivial departures. + - **Micro** version increments just recompile and drop-in. + +release | what's new | date +--------|-----------------------------|--------- +1.0.0 | initial | oct 2014 +1.1.0 | premake5; scons deprecated | aug 2016 +1.1.1 | mingw support, build fixes | aug 2016 +1.1.2 | test_pickfolder() added | aug 2016 +1.1.3 | zenity linux backend added | nov 2017 + | fix char type in decls | nov 2017 +1.1.4 | fix win32 memleaks | dec 2018 + | improve win32 errorhandling | dec 2018 + | macos fix focus bug | dec 2018 +1.1.5 | win32 fix com reinitialize | aug 2019 +1.1.6 | fix osx filter bug | aug 2019 + | remove deprecated scons | aug 2019 + | fix mingw compilation | aug 2019 + | -Wextra warning cleanup | aug 2019 + +## Building ## + +NFD uses [Premake5](https://premake.github.io/download.html) generated Makefiles and IDE project files. The generated project files are checked in under `build/` so you don't have to download and use Premake in most cases. + +If you need to run Premake5 directly, further [build documentation](docs/build.md) is available. + +Previously, NFD used SCons to build. As of 1.1.6, SCons support has been removed entirely. + +`nfd.a` will be built for release builds, and `nfd_d.a` will be built for debug builds. + +### Makefiles ### + +The makefile offers up to four options, with `release_x64` as the default. + + make config=release_x86 + make config=release_x64 + make config=debug_x86 + make config=debug_x64 + +### Compiling Your Programs ### + + 1. Add `src/include` to your include search path. + 2. Add `nfd.lib` or `nfd_d.lib` to the list of list of static libraries to link against (for release or debug, respectively). + 3. Add `build//` to the library search path. + +#### Linux GTK #### + +`apt-get libgtk-3-dev` installs the gtk dependency for library compilation. + +On Linux, you have the option of compiling and linking against GTK. If you use it, the recommended way to compile is to include the arguments of `pkg-config --cflags --libs gtk+-3.0`. + +#### Linux Zenity #### + +Alternatively, you can use the Zenity backend by running the Makefile in `build/gmake_linux_zenity`. Zenity runs the dialog in its own address space, but requires the user to have Zenity correctly installed and configured on their system. + +#### MacOS #### + +On Mac OS, add `AppKit` to the list of frameworks. + +#### Windows #### + +On Windows, ensure you are linking against `comctl32.lib`. + +## Usage ## + +See `NFD.h` for API calls. See `tests/*.c` for example code. + +After compiling, `build/bin` contains compiled test programs. The appropriate subdirectory under `build/lib` contains the built library. + +## File Filter Syntax ## + +There is a form of file filtering in every file dialog API, but no consistent means of supporting it. NFD provides support for filtering files by groups of extensions, providing its own descriptions (where applicable) for the extensions. + +A wildcard filter is always added to every dialog. + +### Separators ### + + - `;` Begin a new filter. + - `,` Add a separate type to the filter. + +#### Examples #### + +`txt` The default filter is for text files. There is a wildcard option in a dropdown. + +`png,jpg;psd` The default filter is for png and jpg files. A second filter is available for psd files. There is a wildcard option in a dropdown. + +`NULL` Wildcard only. + +## Iterating Over PathSets ## + +See [test_opendialogmultiple.c](test/test_opendialogmultiple.c). + +# Known Limitations # + +I accept quality code patches, or will resolve these and other matters through support. See [contributing](docs/contributing.md) for details. + + - No support for Windows XP's legacy dialogs such as `GetOpenFileName`. + - No support for file filter names -- ex: "Image Files" (*.png, *.jpg). Nameless filters are supported, however. + - GTK Zenity implementation's process exec error handling does not gracefully handle numerous error cases, choosing to abort rather than cleanup and return. + - GTK 3 spams one warning per dialog created. + +# Copyright and Credit # + +Copyright © 2014-2019 [Frogtoss Games](http://www.frogtoss.com), Inc. +File [LICENSE](LICENSE) covers all files in this repo. + +Native File Dialog by Michael Labbe + + +Tomasz Konojacki for [microutf8](http://puszcza.gnu.org.ua/software/microutf8/) + +[Denis Kolodin](https://github.com/DenisKolodin) for mingw support. + +[Tom Mason](https://github.com/wheybags) for Zenity support. + +## Support ## + +Directed support for this work is available from the original author under a paid agreement. + +[Contact Frogtoss Games](http://www.frogtoss.com/pages/contact.html). diff --git a/extern/nfd-modified/docs/build.md b/extern/nfd-modified/docs/build.md new file mode 100644 index 00000000..a1f73271 --- /dev/null +++ b/extern/nfd-modified/docs/build.md @@ -0,0 +1,39 @@ +# Building NFD # + +Most of the building instructions are included in [README.md](/README.md). This file just contains apocrypha. + +## Running Premake5 Directly ## + +*You shouldn't have to run Premake5 directly to build Native File Dialog. This is for package maintainers or people with exotic demands only!* + +1. [Clone premake-core](https://github.com/premake/premake-core) +2. [Follow instructions on how to build premake](https://github.com/premake/premake-core/wiki/Building-Premake) +3. `cd` to `build` +4. Type `premake5 `, where is the build you want to create. + +### Package Maintainer Only ### + +I support a custom Premake action: `premake5 dist`, which generates all of the checked in project types in subdirectories. It is useful to run this command if you are submitting a pull request to test all of the supported premake configurations. Do not check in the built projects; I will do so while accepting your pull request. + +## SCons build (deprecated) ## + +As of 1.1.6, the deprecated and unmaintained SCons support is removed. + +## Compiling with Mingw ## + +Use the Makefile in `build/gmake_windows` to build Native File Dialog with mingw. Mingw has many distributions and not all of them are reliable. Here is what worked for me, the primary author of Native File Dialog: + +1. Use mingw64, not mingw32. Downloaded from [sourceforge.net](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download). +2. When prompted in the intsaller, install the basic compiler and g++. +3. Add the installed bin dir to command prompt path. +4. Run `set CC=g++` to enforce `g++` instead of the default, `cc` for compiling and linking. +5. In `build/gmake_windows`, run `mingw32-make config=release_x64 clean`. Running clean ensures no Visual Studio build products conflict which can cause link errors. +6. Now run `mingw32-make config=release_x64`. + +The author has not attempted to build or even install an x86 toolchain for mingw. + +If you report an issue, be sure to run make with `verbose=1` so commands are visible. + +## Adding NFD source directly to your project ## + +Lots of developers add NFD source directly to their projects instead of using the included build scripts. As of 1.1.6, this is an acknowledged approach to building. Of course, everyone has a slightly different toolchain with various warnings and linters enabled. If you run a linter or catch a warning, please consider submitting a pull request to help NFD build cleanly for everyone. diff --git a/extern/nfd-modified/docs/contributing.md b/extern/nfd-modified/docs/contributing.md new file mode 100644 index 00000000..f6c3b54c --- /dev/null +++ b/extern/nfd-modified/docs/contributing.md @@ -0,0 +1,25 @@ +# Pull Requests # + +I have had to turn away a number of pull requests due to avoidable circumstances. Please read this file before submitting a pull request. Also look at existing, rejected pull requests which state the reason for rejection. + +Here are the rules: + +- **Submit pull requests to the devel branch**. The library must be tested on every compiler and OS, so there is no way I am going to just put your change in the master before it has been sync'd and tested on a number of machines. Master branch is depended upon by hundreds of projects. + +- **Test your changes on all platforms and compilers that you can.** Also, state which platforms you have tested your code on. 32-bit or 64-bit. Clang or GCC. Visual Studio or Mingw. I have to test all these to accept pull requests, so I prioritize changes that respect my time. + +- **Submit Premake build changes only**. As of 1.1, SCons is deprecated. Also, do not submit altered generated projects. I will re-run Premake to re-generate them to ensure that I can still generate the project prior to admitting your pull request. + +- **Do not alter existing behavior to support your desired behavior**. For instance, rewriting file open dialogs to behave differently, while trading off functionality for compatibility, will get you rejected. Consider creating an additional code path. Instead of altering `nfd_win.cpp` to support Windows XP, create `nfd_win_legacy.cpp`, which exists alongside the newer file dialog. + +- **Do not submit anything I can't verify or maintain**. If you add support for a compiler, include from-scratch install instructions that you have tested yourself. Accepting a pull request means I am now the maintainer of your code, so I must understand what it does and how to test it. + +- **Do not change the externally facing API**. NFD needs to maintain ABI compatibility. + +## Submitting Cloud Autobuild systems ## + +I have received a few pull requests for Travis and AppVeyor-based autobuilding which I have not accepted. NativeFileDialog is officially covered by my private BuildBot network which supports all three target OSes, both CPU architectures and four compilers. I take the view that having a redundant, lesser autobuild system does not improve coverage: it gives a false positive when partial building succeeds. Please do not invest time into cloud-based building with the hope of a pull request being accepted. + +## Contact Me ## + +Despite all of the "do nots" above, I am happy to recieve new pull requests! If you have any questions about style, or what I would need to accept your specific request, please contact me ahead of submitting the pull request by opening an issue on Github with your question. I will do my best to answer you. diff --git a/extern/nfd-modified/src/common.h b/extern/nfd-modified/src/common.h new file mode 100644 index 00000000..7745d323 --- /dev/null +++ b/extern/nfd-modified/src/common.h @@ -0,0 +1,21 @@ +/* + Native File Dialog + + Internal, common across platforms + + http://www.frogtoss.com/labs + */ + + +#ifndef _NFD_COMMON_H +#define _NFD_COMMON_H + +#define NFD_MAX_STRLEN 256 +#define _NFD_UNUSED(x) ((void)x) + +void *NFDi_Malloc( size_t bytes ); +void NFDi_Free( void *ptr ); +void NFDi_SetError( const char *msg ); +void NFDi_SafeStrncpy( char *dst, const char *src, size_t maxCopy ); + +#endif diff --git a/extern/nfd-modified/src/include/nfd.h b/extern/nfd-modified/src/include/nfd.h new file mode 100644 index 00000000..74c92743 --- /dev/null +++ b/extern/nfd-modified/src/include/nfd.h @@ -0,0 +1,74 @@ +/* + Native File Dialog + + User API + + http://www.frogtoss.com/labs + */ + + +#ifndef _NFD_H +#define _NFD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* denotes UTF-8 char */ +typedef char nfdchar_t; + +/* opaque data structure -- see NFD_PathSet_* */ +typedef struct { + nfdchar_t *buf; + size_t *indices; /* byte offsets into buf */ + size_t count; /* number of indices into buf */ +}nfdpathset_t; + +typedef enum { + NFD_ERROR, /* programmatic error */ + NFD_OKAY, /* user pressed okay, or successful return */ + NFD_CANCEL /* user pressed cancel */ +}nfdresult_t; + + +/* nfd_.c */ + +/* single file open dialog */ +nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ); + +/* multiple file open dialog */ +nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdpathset_t *outPaths ); + +/* save dialog */ +nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ); + + +/* select folder dialog */ +nfdresult_t NFD_PickFolder( const nfdchar_t *defaultPath, + nfdchar_t **outPath); + +/* nfd_common.c */ + +/* get last error -- set when nfdresult_t returns NFD_ERROR */ +const char *NFD_GetError( void ); +/* get the number of entries stored in pathSet */ +size_t NFD_PathSet_GetCount( const nfdpathset_t *pathSet ); +/* Get the UTF-8 path at offset index */ +nfdchar_t *NFD_PathSet_GetPath( const nfdpathset_t *pathSet, size_t index ); +/* Free the pathSet */ +void NFD_PathSet_Free( nfdpathset_t *pathSet ); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/extern/nfd-modified/src/nfd_cocoa.m b/extern/nfd-modified/src/nfd_cocoa.m new file mode 100644 index 00000000..776152d4 --- /dev/null +++ b/extern/nfd-modified/src/nfd_cocoa.m @@ -0,0 +1,286 @@ +/* + Native File Dialog + + http://www.frogtoss.com/labs + */ + +#include +#include "nfd.h" +#include "nfd_common.h" + +static NSArray *BuildAllowedFileTypes( const char *filterList ) +{ + // Commas and semicolons are the same thing on this platform + + NSMutableArray *buildFilterList = [[NSMutableArray alloc] init]; + + char typebuf[NFD_MAX_STRLEN] = {0}; + + size_t filterListLen = strlen(filterList); + char *p_typebuf = typebuf; + for ( size_t i = 0; i < filterListLen+1; ++i ) + { + if ( filterList[i] == ',' || filterList[i] == ';' || filterList[i] == '\0' ) + { + if (filterList[i] != '\0') + ++p_typebuf; + *p_typebuf = '\0'; + + NSString *thisType = [NSString stringWithUTF8String: typebuf]; + [buildFilterList addObject:thisType]; + p_typebuf = typebuf; + *p_typebuf = '\0'; + } + else + { + *p_typebuf = filterList[i]; + ++p_typebuf; + + } + } + + NSArray *returnArray = [NSArray arrayWithArray:buildFilterList]; + + [buildFilterList release]; + return returnArray; +} + +static void AddFilterListToDialog( NSSavePanel *dialog, const char *filterList ) +{ + if ( !filterList || strlen(filterList) == 0 ) + return; + + NSArray *allowedFileTypes = BuildAllowedFileTypes( filterList ); + if ( [allowedFileTypes count] != 0 ) + { + [dialog setAllowedFileTypes:allowedFileTypes]; + } +} + +static void SetDefaultPath( NSSavePanel *dialog, const nfdchar_t *defaultPath ) +{ + if ( !defaultPath || strlen(defaultPath) == 0 ) + return; + + NSString *defaultPathString = [NSString stringWithUTF8String: defaultPath]; + NSURL *url = [NSURL fileURLWithPath:defaultPathString isDirectory:YES]; + [dialog setDirectoryURL:url]; +} + + +/* fixme: pathset should be pathSet */ +static nfdresult_t AllocPathSet( NSArray *urls, nfdpathset_t *pathset ) +{ + assert(pathset); + assert([urls count]); + + pathset->count = (size_t)[urls count]; + pathset->indices = NFDi_Malloc( sizeof(size_t)*pathset->count ); + if ( !pathset->indices ) + { + return NFD_ERROR; + } + + // count the total space needed for buf + size_t bufsize = 0; + for ( NSURL *url in urls ) + { + NSString *path = [url path]; + bufsize += [path lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1; + } + + pathset->buf = NFDi_Malloc( sizeof(nfdchar_t) * bufsize ); + if ( !pathset->buf ) + { + return NFD_ERROR; + } + + // fill buf + nfdchar_t *p_buf = pathset->buf; + size_t count = 0; + for ( NSURL *url in urls ) + { + NSString *path = [url path]; + const nfdchar_t *utf8Path = [path UTF8String]; + size_t byteLen = [path lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1; + memcpy( p_buf, utf8Path, byteLen ); + + ptrdiff_t index = p_buf - pathset->buf; + assert( index >= 0 ); + pathset->indices[count] = (size_t)index; + + p_buf += byteLen; + ++count; + } + + return NFD_OKAY; +} + +/* public */ + + +nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow]; + NSOpenPanel *dialog = [NSOpenPanel openPanel]; + [dialog setAllowsMultipleSelection:NO]; + + // Build the filter list + AddFilterListToDialog(dialog, filterList); + + // Set the starting directory + SetDefaultPath(dialog, defaultPath); + + nfdresult_t nfdResult = NFD_CANCEL; + if ( [dialog runModal] == NSModalResponseOK ) + { + NSURL *url = [dialog URL]; + const char *utf8Path = [[url path] UTF8String]; + + // byte count, not char count + size_t len = strlen(utf8Path);//NFDi_UTF8_Strlen(utf8Path); + + *outPath = NFDi_Malloc( len+1 ); + if ( !*outPath ) + { + [pool release]; + [keyWindow makeKeyAndOrderFront:nil]; + return NFD_ERROR; + } + memcpy( *outPath, utf8Path, len+1 ); /* copy null term */ + nfdResult = NFD_OKAY; + } + [pool release]; + + [keyWindow makeKeyAndOrderFront:nil]; + return nfdResult; +} + + +nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdpathset_t *outPaths ) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow]; + + NSOpenPanel *dialog = [NSOpenPanel openPanel]; + [dialog setAllowsMultipleSelection:YES]; + + // Build the fiter list. + AddFilterListToDialog(dialog, filterList); + + // Set the starting directory + SetDefaultPath(dialog, defaultPath); + + nfdresult_t nfdResult = NFD_CANCEL; + if ( [dialog runModal] == NSModalResponseOK ) + { + NSArray *urls = [dialog URLs]; + + if ( [urls count] == 0 ) + { + [pool release]; + [keyWindow makeKeyAndOrderFront:nil]; + return NFD_CANCEL; + } + + if ( AllocPathSet( urls, outPaths ) == NFD_ERROR ) + { + [pool release]; + [keyWindow makeKeyAndOrderFront:nil]; + return NFD_ERROR; + } + + nfdResult = NFD_OKAY; + } + [pool release]; + + [keyWindow makeKeyAndOrderFront:nil]; + return nfdResult; +} + + +nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow]; + + NSSavePanel *dialog = [NSSavePanel savePanel]; + [dialog setExtensionHidden:NO]; + + // Build the filter list. + AddFilterListToDialog(dialog, filterList); + + // Set the starting directory + SetDefaultPath(dialog, defaultPath); + + nfdresult_t nfdResult = NFD_CANCEL; + if ( [dialog runModal] == NSModalResponseOK ) + { + NSURL *url = [dialog URL]; + const char *utf8Path = [[url path] UTF8String]; + + size_t byteLen = [url.path lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1; + + *outPath = NFDi_Malloc( byteLen ); + if ( !*outPath ) + { + [pool release]; + [keyWindow makeKeyAndOrderFront:nil]; + return NFD_ERROR; + } + memcpy( *outPath, utf8Path, byteLen ); + nfdResult = NFD_OKAY; + } + + [pool release]; + [keyWindow makeKeyAndOrderFront:nil]; + return nfdResult; +} + +nfdresult_t NFD_PickFolder(const nfdchar_t *defaultPath, + nfdchar_t **outPath) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow]; + NSOpenPanel *dialog = [NSOpenPanel openPanel]; + [dialog setAllowsMultipleSelection:NO]; + [dialog setCanChooseDirectories:YES]; + [dialog setCanCreateDirectories:YES]; + [dialog setCanChooseFiles:NO]; + + // Set the starting directory + SetDefaultPath(dialog, defaultPath); + + nfdresult_t nfdResult = NFD_CANCEL; + if ( [dialog runModal] == NSModalResponseOK ) + { + NSURL *url = [dialog URL]; + const char *utf8Path = [[url path] UTF8String]; + + // byte count, not char count + size_t len = strlen(utf8Path);//NFDi_UTF8_Strlen(utf8Path); + + *outPath = NFDi_Malloc( len+1 ); + if ( !*outPath ) + { + [pool release]; + [keyWindow makeKeyAndOrderFront:nil]; + return NFD_ERROR; + } + memcpy( *outPath, utf8Path, len+1 ); /* copy null term */ + nfdResult = NFD_OKAY; + } + [pool release]; + + [keyWindow makeKeyAndOrderFront:nil]; + return nfdResult; +} diff --git a/extern/nfd-modified/src/nfd_common.c b/extern/nfd-modified/src/nfd_common.c new file mode 100644 index 00000000..55517f5d --- /dev/null +++ b/extern/nfd-modified/src/nfd_common.c @@ -0,0 +1,142 @@ +/* + Native File Dialog + + http://www.frogtoss.com/labs + */ + +#include +#include +#include +#include "nfd_common.h" + +static char g_errorstr[NFD_MAX_STRLEN] = {0}; + +/* public routines */ + +const char *NFD_GetError( void ) +{ + return g_errorstr; +} + +size_t NFD_PathSet_GetCount( const nfdpathset_t *pathset ) +{ + assert(pathset); + return pathset->count; +} + +nfdchar_t *NFD_PathSet_GetPath( const nfdpathset_t *pathset, size_t num ) +{ + assert(pathset); + assert(num < pathset->count); + + return pathset->buf + pathset->indices[num]; +} + +void NFD_PathSet_Free( nfdpathset_t *pathset ) +{ + assert(pathset); + NFDi_Free( pathset->indices ); + NFDi_Free( pathset->buf ); +} + +/* internal routines */ + +void *NFDi_Malloc( size_t bytes ) +{ + void *ptr = malloc(bytes); + if ( !ptr ) + NFDi_SetError("NFDi_Malloc failed."); + + return ptr; +} + +void NFDi_Free( void *ptr ) +{ + assert(ptr); + free(ptr); +} + +void NFDi_SetError( const char *msg ) +{ + int bTruncate = NFDi_SafeStrncpy( g_errorstr, msg, NFD_MAX_STRLEN ); + assert( !bTruncate ); _NFD_UNUSED(bTruncate); +} + + +int NFDi_SafeStrncpy( char *dst, const char *src, size_t maxCopy ) +{ + size_t n = maxCopy; + char *d = dst; + + assert( src ); + assert( dst ); + + while ( n > 0 && *src != '\0' ) + { + *d++ = *src++; + --n; + } + + /* Truncation case - + terminate string and return true */ + if ( n == 0 ) + { + dst[maxCopy-1] = '\0'; + return 1; + } + + /* No truncation. Append a single NULL and return. */ + *d = '\0'; + return 0; +} + + +/* adapted from microutf8 */ +int32_t NFDi_UTF8_Strlen( const nfdchar_t *str ) +{ + /* This function doesn't properly check validity of UTF-8 character + sequence, it is supposed to use only with valid UTF-8 strings. */ + + int32_t character_count = 0; + int32_t i = 0; /* Counter used to iterate over string. */ + nfdchar_t maybe_bom[4]; + + /* If there is UTF-8 BOM ignore it. */ + if (strlen(str) > 2) + { + strncpy(maybe_bom, str, 3); + maybe_bom[3] = 0; + if (strcmp(maybe_bom, (nfdchar_t*)NFD_UTF8_BOM) == 0) + i += 3; + } + + while(str[i]) + { + if (str[i] >> 7 == 0) + { + /* If bit pattern begins with 0 we have ascii character. */ + ++character_count; + } + else if (str[i] >> 6 == 3) + { + /* If bit pattern begins with 11 it is beginning of UTF-8 byte sequence. */ + ++character_count; + } + else if (str[i] >> 6 == 2) + ; /* If bit pattern begins with 10 it is middle of utf-8 byte sequence. */ + else + { + /* In any other case this is not valid UTF-8. */ + return -1; + } + ++i; + } + + return character_count; +} + +int NFDi_IsFilterSegmentChar( char ch ) +{ + return (ch==','||ch==';'||ch=='\0'); +} + diff --git a/extern/nfd-modified/src/nfd_common.h b/extern/nfd-modified/src/nfd_common.h new file mode 100644 index 00000000..1a9ab162 --- /dev/null +++ b/extern/nfd-modified/src/nfd_common.h @@ -0,0 +1,39 @@ +/* + Native File Dialog + + Internal, common across platforms + + http://www.frogtoss.com/labs + */ + + +#ifndef _NFD_COMMON_H +#define _NFD_COMMON_H + +#include "nfd.h" + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define NFD_MAX_STRLEN 256 +#define _NFD_UNUSED(x) ((void)x) + +#define NFD_UTF8_BOM "\xEF\xBB\xBF" + + +void *NFDi_Malloc( size_t bytes ); +void NFDi_Free( void *ptr ); +void NFDi_SetError( const char *msg ); +int NFDi_SafeStrncpy( char *dst, const char *src, size_t maxCopy ); +int32_t NFDi_UTF8_Strlen( const nfdchar_t *str ); +int NFDi_IsFilterSegmentChar( char ch ); + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/extern/nfd-modified/src/nfd_gtk.c b/extern/nfd-modified/src/nfd_gtk.c new file mode 100644 index 00000000..7a9958ed --- /dev/null +++ b/extern/nfd-modified/src/nfd_gtk.c @@ -0,0 +1,379 @@ +/* + Native File Dialog + + http://www.frogtoss.com/labs +*/ + +#include +#include +#include +#include +#include "nfd.h" +#include "nfd_common.h" + + +const char INIT_FAIL_MSG[] = "gtk_init_check failed to initilaize GTK+"; + + +static void AddTypeToFilterName( const char *typebuf, char *filterName, size_t bufsize ) +{ + const char SEP[] = ", "; + + size_t len = strlen(filterName); + if ( len != 0 ) + { + strncat( filterName, SEP, bufsize - len - 1 ); + len += strlen(SEP); + } + + strncat( filterName, typebuf, bufsize - len - 1 ); +} + +static void AddFiltersToDialog( GtkWidget *dialog, const char *filterList ) +{ + GtkFileFilter *filter; + char typebuf[NFD_MAX_STRLEN] = {0}; + const char *p_filterList = filterList; + char *p_typebuf = typebuf; + char filterName[NFD_MAX_STRLEN] = {0}; + + if ( !filterList || strlen(filterList) == 0 ) + return; + + filter = gtk_file_filter_new(); + while ( 1 ) + { + + if ( NFDi_IsFilterSegmentChar(*p_filterList) ) + { + char typebufWildcard[NFD_MAX_STRLEN]; + /* add another type to the filter */ + assert( strlen(typebuf) > 0 ); + assert( strlen(typebuf) < NFD_MAX_STRLEN-1 ); + + snprintf( typebufWildcard, NFD_MAX_STRLEN, "*.%s", typebuf ); + AddTypeToFilterName( typebuf, filterName, NFD_MAX_STRLEN ); + + gtk_file_filter_add_pattern( filter, typebufWildcard ); + + p_typebuf = typebuf; + memset( typebuf, 0, sizeof(char) * NFD_MAX_STRLEN ); + } + + if ( *p_filterList == ';' || *p_filterList == '\0' ) + { + /* end of filter -- add it to the dialog */ + + gtk_file_filter_set_name( filter, filterName ); + gtk_file_chooser_add_filter( GTK_FILE_CHOOSER(dialog), filter ); + + filterName[0] = '\0'; + + if ( *p_filterList == '\0' ) + break; + + filter = gtk_file_filter_new(); + } + + if ( !NFDi_IsFilterSegmentChar( *p_filterList ) ) + { + *p_typebuf = *p_filterList; + p_typebuf++; + } + + p_filterList++; + } + + /* always append a wildcard option to the end*/ + + filter = gtk_file_filter_new(); + gtk_file_filter_set_name( filter, "*.*" ); + gtk_file_filter_add_pattern( filter, "*" ); + gtk_file_chooser_add_filter( GTK_FILE_CHOOSER(dialog), filter ); +} + +static void SetDefaultPath( GtkWidget *dialog, const char *defaultPath ) +{ + if ( !defaultPath || strlen(defaultPath) == 0 ) + return; + + /* GTK+ manual recommends not specifically setting the default path. + We do it anyway in order to be consistent across platforms. + + If consistency with the native OS is preferred, this is the line + to comment out. -ml */ + gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER(dialog), defaultPath ); +} + +static nfdresult_t AllocPathSet( GSList *fileList, nfdpathset_t *pathSet ) +{ + size_t bufSize = 0; + GSList *node; + nfdchar_t *p_buf; + size_t count = 0; + + assert(fileList); + assert(pathSet); + + pathSet->count = (size_t)g_slist_length( fileList ); + assert( pathSet->count > 0 ); + + pathSet->indices = NFDi_Malloc( sizeof(size_t)*pathSet->count ); + if ( !pathSet->indices ) + { + return NFD_ERROR; + } + + /* count the total space needed for buf */ + for ( node = fileList; node; node = node->next ) + { + assert(node->data); + bufSize += strlen( (const gchar*)node->data ) + 1; + } + + pathSet->buf = NFDi_Malloc( sizeof(nfdchar_t) * bufSize ); + + /* fill buf */ + p_buf = pathSet->buf; + for ( node = fileList; node; node = node->next ) + { + nfdchar_t *path = (nfdchar_t*)(node->data); + size_t byteLen = strlen(path)+1; + ptrdiff_t index; + + memcpy( p_buf, path, byteLen ); + g_free(node->data); + + index = p_buf - pathSet->buf; + assert( index >= 0 ); + pathSet->indices[count] = (size_t)index; + + p_buf += byteLen; + ++count; + } + + g_slist_free( fileList ); + + return NFD_OKAY; +} + +static void WaitForCleanup(void) +{ + while (gtk_events_pending()) + gtk_main_iteration(); +} + +/* public */ + +nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + GtkWidget *dialog; + nfdresult_t result; + + if ( !gtk_init_check( NULL, NULL ) ) + { + NFDi_SetError(INIT_FAIL_MSG); + return NFD_ERROR; + } + + dialog = gtk_file_chooser_dialog_new( "Open File", + NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + "_Cancel", GTK_RESPONSE_CANCEL, + "_Open", GTK_RESPONSE_ACCEPT, + NULL ); + + /* Build the filter list */ + AddFiltersToDialog(dialog, filterList); + + /* Set the default path */ + SetDefaultPath(dialog, defaultPath); + + result = NFD_CANCEL; + if ( gtk_dialog_run( GTK_DIALOG(dialog) ) == GTK_RESPONSE_ACCEPT ) + { + char *filename; + + filename = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER(dialog) ); + + { + size_t len = strlen(filename); + *outPath = NFDi_Malloc( len + 1 ); + memcpy( *outPath, filename, len + 1 ); + if ( !*outPath ) + { + g_free( filename ); + gtk_widget_destroy(dialog); + return NFD_ERROR; + } + } + g_free( filename ); + + result = NFD_OKAY; + } + + WaitForCleanup(); + gtk_widget_destroy(dialog); + WaitForCleanup(); + + return result; +} + + +nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdpathset_t *outPaths ) +{ + GtkWidget *dialog; + nfdresult_t result; + + if ( !gtk_init_check( NULL, NULL ) ) + { + NFDi_SetError(INIT_FAIL_MSG); + return NFD_ERROR; + } + + dialog = gtk_file_chooser_dialog_new( "Open Files", + NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + "_Cancel", GTK_RESPONSE_CANCEL, + "_Open", GTK_RESPONSE_ACCEPT, + NULL ); + gtk_file_chooser_set_select_multiple( GTK_FILE_CHOOSER(dialog), TRUE ); + + /* Build the filter list */ + AddFiltersToDialog(dialog, filterList); + + /* Set the default path */ + SetDefaultPath(dialog, defaultPath); + + result = NFD_CANCEL; + if ( gtk_dialog_run( GTK_DIALOG(dialog) ) == GTK_RESPONSE_ACCEPT ) + { + GSList *fileList = gtk_file_chooser_get_filenames( GTK_FILE_CHOOSER(dialog) ); + if ( AllocPathSet( fileList, outPaths ) == NFD_ERROR ) + { + gtk_widget_destroy(dialog); + return NFD_ERROR; + } + + result = NFD_OKAY; + } + + WaitForCleanup(); + gtk_widget_destroy(dialog); + WaitForCleanup(); + + return result; +} + +nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + GtkWidget *dialog; + nfdresult_t result; + + if ( !gtk_init_check( NULL, NULL ) ) + { + NFDi_SetError(INIT_FAIL_MSG); + return NFD_ERROR; + } + + dialog = gtk_file_chooser_dialog_new( "Save File", + NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + "_Cancel", GTK_RESPONSE_CANCEL, + "_Save", GTK_RESPONSE_ACCEPT, + NULL ); + gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER(dialog), TRUE ); + + /* Build the filter list */ + AddFiltersToDialog(dialog, filterList); + + /* Set the default path */ + SetDefaultPath(dialog, defaultPath); + + result = NFD_CANCEL; + if ( gtk_dialog_run( GTK_DIALOG(dialog) ) == GTK_RESPONSE_ACCEPT ) + { + char *filename; + filename = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER(dialog) ); + + { + size_t len = strlen(filename); + *outPath = NFDi_Malloc( len + 1 ); + memcpy( *outPath, filename, len + 1 ); + if ( !*outPath ) + { + g_free( filename ); + gtk_widget_destroy(dialog); + return NFD_ERROR; + } + } + g_free(filename); + + result = NFD_OKAY; + } + + WaitForCleanup(); + gtk_widget_destroy(dialog); + WaitForCleanup(); + + return result; +} + +nfdresult_t NFD_PickFolder(const nfdchar_t *defaultPath, + nfdchar_t **outPath) +{ + GtkWidget *dialog; + nfdresult_t result; + + if (!gtk_init_check(NULL, NULL)) + { + NFDi_SetError(INIT_FAIL_MSG); + return NFD_ERROR; + } + + dialog = gtk_file_chooser_dialog_new( "Select folder", + NULL, + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, + "_Cancel", GTK_RESPONSE_CANCEL, + "_Select", GTK_RESPONSE_ACCEPT, + NULL ); + gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER(dialog), TRUE ); + + + /* Set the default path */ + SetDefaultPath(dialog, defaultPath); + + result = NFD_CANCEL; + if ( gtk_dialog_run( GTK_DIALOG(dialog) ) == GTK_RESPONSE_ACCEPT ) + { + char *filename; + filename = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER(dialog) ); + + { + size_t len = strlen(filename); + *outPath = NFDi_Malloc( len + 1 ); + memcpy( *outPath, filename, len + 1 ); + if ( !*outPath ) + { + g_free( filename ); + gtk_widget_destroy(dialog); + return NFD_ERROR; + } + } + g_free(filename); + + result = NFD_OKAY; + } + + WaitForCleanup(); + gtk_widget_destroy(dialog); + WaitForCleanup(); + + return result; +} diff --git a/extern/nfd-modified/src/nfd_win.cpp b/extern/nfd-modified/src/nfd_win.cpp new file mode 100644 index 00000000..949da2b5 --- /dev/null +++ b/extern/nfd-modified/src/nfd_win.cpp @@ -0,0 +1,762 @@ +/* + Native File Dialog + + http://www.frogtoss.com/labs + */ + + +#ifdef __MINGW32__ +// Explicitly setting NTDDI version, this is necessary for the MinGW compiler +#define NTDDI_VERSION NTDDI_VISTA +#define _WIN32_WINNT _WIN32_WINNT_VISTA +#endif + +#define _CRTDBG_MAP_ALLOC +#include +#include + +/* only locally define UNICODE in this compilation unit */ +#ifndef UNICODE +#define UNICODE +#endif + +#include +#include +#include +#include +#include +#include "nfd_common.h" + + +#define COM_INITFLAGS ::COINIT_APARTMENTTHREADED | ::COINIT_DISABLE_OLE1DDE + +static BOOL COMIsInitialized(HRESULT coResult) +{ + if (coResult == RPC_E_CHANGED_MODE) + { + // If COM was previously initialized with different init flags, + // NFD still needs to operate. Eat this warning. + return TRUE; + } + + return SUCCEEDED(coResult); +} + +static HRESULT COMInit(void) +{ + return ::CoInitializeEx(NULL, COM_INITFLAGS); +} + +static void COMUninit(HRESULT coResult) +{ + // do not uninitialize if RPC_E_CHANGED_MODE occurred -- this + // case does not refcount COM. + if (SUCCEEDED(coResult)) + ::CoUninitialize(); +} + +// allocs the space in outPath -- call free() +static void CopyWCharToNFDChar( const wchar_t *inStr, nfdchar_t **outStr ) +{ + int inStrCharacterCount = static_cast(wcslen(inStr)); + int bytesNeeded = WideCharToMultiByte( CP_UTF8, 0, + inStr, inStrCharacterCount, + NULL, 0, NULL, NULL ); + assert( bytesNeeded ); + bytesNeeded += 1; + + *outStr = (nfdchar_t*)NFDi_Malloc( bytesNeeded ); + if ( !*outStr ) + return; + + int bytesWritten = WideCharToMultiByte( CP_UTF8, 0, + inStr, -1, + *outStr, bytesNeeded, + NULL, NULL ); + assert( bytesWritten ); _NFD_UNUSED( bytesWritten ); +} + +/* includes NULL terminator byte in return */ +static size_t GetUTF8ByteCountForWChar( const wchar_t *str ) +{ + size_t bytesNeeded = WideCharToMultiByte( CP_UTF8, 0, + str, -1, + NULL, 0, NULL, NULL ); + assert( bytesNeeded ); + return bytesNeeded+1; +} + +// write to outPtr -- no free() necessary. +static int CopyWCharToExistingNFDCharBuffer( const wchar_t *inStr, nfdchar_t *outPtr ) +{ + int bytesNeeded = static_cast(GetUTF8ByteCountForWChar( inStr )); + + /* invocation copies null term */ + int bytesWritten = WideCharToMultiByte( CP_UTF8, 0, + inStr, -1, + outPtr, bytesNeeded, + NULL, 0 ); + assert( bytesWritten ); + + return bytesWritten; + +} + + +// allocs the space in outStr -- call free() +static void CopyNFDCharToWChar( const nfdchar_t *inStr, wchar_t **outStr ) +{ + int inStrByteCount = static_cast(strlen(inStr)); + int charsNeeded = MultiByteToWideChar(CP_UTF8, 0, + inStr, inStrByteCount, + NULL, 0 ); + assert( charsNeeded ); + assert( !*outStr ); + charsNeeded += 1; // terminator + + *outStr = (wchar_t*)NFDi_Malloc( charsNeeded * sizeof(wchar_t) ); + if ( !*outStr ) + return; + + int ret = MultiByteToWideChar(CP_UTF8, 0, + inStr, inStrByteCount, + *outStr, charsNeeded); + (*outStr)[charsNeeded-1] = '\0'; + +#ifdef _DEBUG + int inStrCharacterCount = static_cast(NFDi_UTF8_Strlen(inStr)); + assert( ret == inStrCharacterCount ); +#else + _NFD_UNUSED(ret); +#endif +} + + +/* ext is in format "jpg", no wildcards or separators */ +static int AppendExtensionToSpecBuf( const char *ext, char *specBuf, size_t specBufLen ) +{ + const char SEP[] = ";"; + assert( specBufLen > strlen(ext)+3 ); + + if ( strlen(specBuf) > 0 ) + { + strncat( specBuf, SEP, specBufLen - strlen(specBuf) - 1 ); + specBufLen += strlen(SEP); + } + + char extWildcard[NFD_MAX_STRLEN]; + int bytesWritten = sprintf_s( extWildcard, NFD_MAX_STRLEN, "*.%s", ext ); + assert( bytesWritten == (int)(strlen(ext)+2) ); + _NFD_UNUSED(bytesWritten); + + strncat( specBuf, extWildcard, specBufLen - strlen(specBuf) - 1 ); + + return NFD_OKAY; +} + +static nfdresult_t AddFiltersToDialog( ::IFileDialog *fileOpenDialog, const char *filterList ) +{ + const wchar_t WILDCARD[] = L"*.*"; + + if ( !filterList || strlen(filterList) == 0 ) + return NFD_OKAY; + + // Count rows to alloc + UINT filterCount = 1; /* guaranteed to have one filter on a correct, non-empty parse */ + const char *p_filterList; + for ( p_filterList = filterList; *p_filterList; ++p_filterList ) + { + if ( *p_filterList == ';' ) + ++filterCount; + } + + assert(filterCount); + if ( !filterCount ) + { + NFDi_SetError("Error parsing filters."); + return NFD_ERROR; + } + + /* filterCount plus 1 because we hardcode the *.* wildcard after the while loop */ + COMDLG_FILTERSPEC *specList = (COMDLG_FILTERSPEC*)NFDi_Malloc( sizeof(COMDLG_FILTERSPEC) * ((size_t)filterCount + 1) ); + if ( !specList ) + { + return NFD_ERROR; + } + for (UINT i = 0; i < filterCount+1; ++i ) + { + specList[i].pszName = NULL; + specList[i].pszSpec = NULL; + } + + size_t specIdx = 0; + p_filterList = filterList; + char typebuf[NFD_MAX_STRLEN] = {0}; /* one per comma or semicolon */ + char *p_typebuf = typebuf; + + char specbuf[NFD_MAX_STRLEN] = {0}; /* one per semicolon */ + + while ( 1 ) + { + if ( NFDi_IsFilterSegmentChar(*p_filterList) ) + { + /* append a type to the specbuf (pending filter) */ + AppendExtensionToSpecBuf( typebuf, specbuf, NFD_MAX_STRLEN ); + + p_typebuf = typebuf; + memset( typebuf, 0, sizeof(char)*NFD_MAX_STRLEN ); + } + + if ( *p_filterList == ';' || *p_filterList == '\0' ) + { + /* end of filter -- add it to specList */ + + CopyNFDCharToWChar( specbuf, (wchar_t**)&specList[specIdx].pszName ); + CopyNFDCharToWChar( specbuf, (wchar_t**)&specList[specIdx].pszSpec ); + + memset( specbuf, 0, sizeof(char)*NFD_MAX_STRLEN ); + ++specIdx; + if ( specIdx == filterCount ) + break; + } + + if ( !NFDi_IsFilterSegmentChar( *p_filterList )) + { + *p_typebuf = *p_filterList; + ++p_typebuf; + } + + ++p_filterList; + } + + /* Add wildcard */ + specList[specIdx].pszSpec = WILDCARD; + specList[specIdx].pszName = WILDCARD; + + fileOpenDialog->SetFileTypes( filterCount+1, specList ); + + /* free speclist */ + for ( size_t i = 0; i < filterCount; ++i ) + { + NFDi_Free( (void*)specList[i].pszSpec ); + } + NFDi_Free( specList ); + + return NFD_OKAY; +} + +static nfdresult_t AllocPathSet( IShellItemArray *shellItems, nfdpathset_t *pathSet ) +{ + const char ERRORMSG[] = "Error allocating pathset."; + + assert(shellItems); + assert(pathSet); + + // How many items in shellItems? + DWORD numShellItems; + HRESULT result = shellItems->GetCount(&numShellItems); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError(ERRORMSG); + return NFD_ERROR; + } + + pathSet->count = static_cast(numShellItems); + assert( pathSet->count > 0 ); + + pathSet->indices = (size_t*)NFDi_Malloc( sizeof(size_t)*pathSet->count ); + if ( !pathSet->indices ) + { + return NFD_ERROR; + } + + /* count the total bytes needed for buf */ + size_t bufSize = 0; + for ( DWORD i = 0; i < numShellItems; ++i ) + { + ::IShellItem *shellItem; + result = shellItems->GetItemAt(i, &shellItem); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError(ERRORMSG); + return NFD_ERROR; + } + + // Confirm SFGAO_FILESYSTEM is true for this shellitem, or ignore it. + SFGAOF attribs; + result = shellItem->GetAttributes( SFGAO_FILESYSTEM, &attribs ); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError(ERRORMSG); + return NFD_ERROR; + } + if ( !(attribs & SFGAO_FILESYSTEM) ) + continue; + + LPWSTR name; + shellItem->GetDisplayName(SIGDN_FILESYSPATH, &name); + + // Calculate length of name with UTF-8 encoding + bufSize += GetUTF8ByteCountForWChar( name ); + + CoTaskMemFree(name); + } + + assert(bufSize); + + pathSet->buf = (nfdchar_t*)NFDi_Malloc( sizeof(nfdchar_t) * bufSize ); + memset( pathSet->buf, 0, sizeof(nfdchar_t) * bufSize ); + + /* fill buf */ + nfdchar_t *p_buf = pathSet->buf; + for (DWORD i = 0; i < numShellItems; ++i ) + { + ::IShellItem *shellItem; + result = shellItems->GetItemAt(i, &shellItem); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError(ERRORMSG); + return NFD_ERROR; + } + + // Confirm SFGAO_FILESYSTEM is true for this shellitem, or ignore it. + SFGAOF attribs; + result = shellItem->GetAttributes( SFGAO_FILESYSTEM, &attribs ); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError(ERRORMSG); + return NFD_ERROR; + } + if ( !(attribs & SFGAO_FILESYSTEM) ) + continue; + + LPWSTR name; + shellItem->GetDisplayName(SIGDN_FILESYSPATH, &name); + + int bytesWritten = CopyWCharToExistingNFDCharBuffer(name, p_buf); + CoTaskMemFree(name); + + ptrdiff_t index = p_buf - pathSet->buf; + assert( index >= 0 ); + pathSet->indices[i] = static_cast(index); + + p_buf += bytesWritten; + } + + return NFD_OKAY; +} + + +static nfdresult_t SetDefaultPath( IFileDialog *dialog, const char *defaultPath ) +{ + if ( !defaultPath || strlen(defaultPath) == 0 ) + return NFD_OKAY; + + wchar_t *defaultPathW = {0}; + CopyNFDCharToWChar( defaultPath, &defaultPathW ); + + IShellItem *folder; + HRESULT result = SHCreateItemFromParsingName( defaultPathW, NULL, IID_PPV_ARGS(&folder) ); + + // Valid non results. + if ( result == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) || result == HRESULT_FROM_WIN32(ERROR_INVALID_DRIVE) ) + { + NFDi_Free( defaultPathW ); + return NFD_OKAY; + } + + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Error creating ShellItem"); + NFDi_Free( defaultPathW ); + return NFD_ERROR; + } + + // Could also call SetDefaultFolder(), but this guarantees defaultPath -- more consistency across API. + dialog->SetFolder( folder ); + + NFDi_Free( defaultPathW ); + folder->Release(); + + return NFD_OKAY; +} + +/* public */ + + +nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + nfdresult_t nfdResult = NFD_ERROR; + + + HRESULT coResult = COMInit(); + if (!COMIsInitialized(coResult)) + { + NFDi_SetError("Could not initialize COM."); + return nfdResult; + } + + // Create dialog + ::IFileOpenDialog *fileOpenDialog(NULL); + HRESULT result = ::CoCreateInstance(::CLSID_FileOpenDialog, NULL, + CLSCTX_ALL, ::IID_IFileOpenDialog, + reinterpret_cast(&fileOpenDialog) ); + + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not create dialog."); + goto end; + } + + // Build the filter list + if ( !AddFiltersToDialog( fileOpenDialog, filterList ) ) + { + goto end; + } + + // Set the default path + if ( !SetDefaultPath( fileOpenDialog, defaultPath ) ) + { + goto end; + } + + // Show the dialog. + result = fileOpenDialog->Show(NULL); + if ( SUCCEEDED(result) ) + { + // Get the file name + ::IShellItem *shellItem(NULL); + result = fileOpenDialog->GetResult(&shellItem); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not get shell item from dialog."); + goto end; + } + wchar_t *filePath(NULL); + result = shellItem->GetDisplayName(::SIGDN_FILESYSPATH, &filePath); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not get file path for selected."); + shellItem->Release(); + goto end; + } + + CopyWCharToNFDChar( filePath, outPath ); + CoTaskMemFree(filePath); + if ( !*outPath ) + { + /* error is malloc-based, error message would be redundant */ + shellItem->Release(); + goto end; + } + + nfdResult = NFD_OKAY; + shellItem->Release(); + } + else if (result == HRESULT_FROM_WIN32(ERROR_CANCELLED) ) + { + nfdResult = NFD_CANCEL; + } + else + { + NFDi_SetError("File dialog box show failed."); + nfdResult = NFD_ERROR; + } + +end: + if (fileOpenDialog) + fileOpenDialog->Release(); + + COMUninit(coResult); + + return nfdResult; +} + +nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdpathset_t *outPaths ) +{ + nfdresult_t nfdResult = NFD_ERROR; + + + HRESULT coResult = COMInit(); + if (!COMIsInitialized(coResult)) + { + NFDi_SetError("Could not initialize COM."); + return nfdResult; + } + + // Create dialog + ::IFileOpenDialog *fileOpenDialog(NULL); + HRESULT result = ::CoCreateInstance(::CLSID_FileOpenDialog, NULL, + CLSCTX_ALL, ::IID_IFileOpenDialog, + reinterpret_cast(&fileOpenDialog) ); + + if ( !SUCCEEDED(result) ) + { + fileOpenDialog = NULL; + NFDi_SetError("Could not create dialog."); + goto end; + } + + // Build the filter list + if ( !AddFiltersToDialog( fileOpenDialog, filterList ) ) + { + goto end; + } + + // Set the default path + if ( !SetDefaultPath( fileOpenDialog, defaultPath ) ) + { + goto end; + } + + // Set a flag for multiple options + DWORD dwFlags; + result = fileOpenDialog->GetOptions(&dwFlags); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not get options."); + goto end; + } + result = fileOpenDialog->SetOptions(dwFlags | FOS_ALLOWMULTISELECT); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not set options."); + goto end; + } + + // Show the dialog. + result = fileOpenDialog->Show(NULL); + if ( SUCCEEDED(result) ) + { + IShellItemArray *shellItems; + result = fileOpenDialog->GetResults( &shellItems ); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not get shell items."); + goto end; + } + + if ( AllocPathSet( shellItems, outPaths ) == NFD_ERROR ) + { + shellItems->Release(); + goto end; + } + + shellItems->Release(); + nfdResult = NFD_OKAY; + } + else if (result == HRESULT_FROM_WIN32(ERROR_CANCELLED) ) + { + nfdResult = NFD_CANCEL; + } + else + { + NFDi_SetError("File dialog box show failed."); + nfdResult = NFD_ERROR; + } + +end: + if ( fileOpenDialog ) + fileOpenDialog->Release(); + + COMUninit(coResult); + + return nfdResult; +} + +nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + nfdresult_t nfdResult = NFD_ERROR; + + HRESULT coResult = COMInit(); + if (!COMIsInitialized(coResult)) + { + NFDi_SetError("Could not initialize COM."); + return nfdResult; + } + + // Create dialog + ::IFileSaveDialog *fileSaveDialog(NULL); + HRESULT result = ::CoCreateInstance(::CLSID_FileSaveDialog, NULL, + CLSCTX_ALL, ::IID_IFileSaveDialog, + reinterpret_cast(&fileSaveDialog) ); + + if ( !SUCCEEDED(result) ) + { + fileSaveDialog = NULL; + NFDi_SetError("Could not create dialog."); + goto end; + } + + // Build the filter list + if ( !AddFiltersToDialog( fileSaveDialog, filterList ) ) + { + goto end; + } + + // Set the default path + if ( !SetDefaultPath( fileSaveDialog, defaultPath ) ) + { + goto end; + } + + // Show the dialog. + result = fileSaveDialog->Show(NULL); + if ( SUCCEEDED(result) ) + { + // Get the file name + ::IShellItem *shellItem; + result = fileSaveDialog->GetResult(&shellItem); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not get shell item from dialog."); + goto end; + } + wchar_t *filePath(NULL); + result = shellItem->GetDisplayName(::SIGDN_FILESYSPATH, &filePath); + if ( !SUCCEEDED(result) ) + { + shellItem->Release(); + NFDi_SetError("Could not get file path for selected."); + goto end; + } + + CopyWCharToNFDChar( filePath, outPath ); + CoTaskMemFree(filePath); + if ( !*outPath ) + { + /* error is malloc-based, error message would be redundant */ + shellItem->Release(); + goto end; + } + + nfdResult = NFD_OKAY; + shellItem->Release(); + } + else if (result == HRESULT_FROM_WIN32(ERROR_CANCELLED) ) + { + nfdResult = NFD_CANCEL; + } + else + { + NFDi_SetError("File dialog box show failed."); + nfdResult = NFD_ERROR; + } + +end: + if ( fileSaveDialog ) + fileSaveDialog->Release(); + + COMUninit(coResult); + + return nfdResult; +} + + + +nfdresult_t NFD_PickFolder(const nfdchar_t *defaultPath, + nfdchar_t **outPath) +{ + nfdresult_t nfdResult = NFD_ERROR; + DWORD dwOptions = 0; + + HRESULT coResult = COMInit(); + if (!COMIsInitialized(coResult)) + { + NFDi_SetError("CoInitializeEx failed."); + return nfdResult; + } + + // Create dialog + ::IFileOpenDialog *fileDialog(NULL); + HRESULT result = CoCreateInstance(CLSID_FileOpenDialog, + NULL, + CLSCTX_ALL, + IID_PPV_ARGS(&fileDialog)); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("CoCreateInstance for CLSID_FileOpenDialog failed."); + goto end; + } + + // Set the default path + if (SetDefaultPath(fileDialog, defaultPath) != NFD_OKAY) + { + NFDi_SetError("SetDefaultPath failed."); + goto end; + } + + // Get the dialogs options + if (!SUCCEEDED(fileDialog->GetOptions(&dwOptions))) + { + NFDi_SetError("GetOptions for IFileDialog failed."); + goto end; + } + + // Add in FOS_PICKFOLDERS which hides files and only allows selection of folders + if (!SUCCEEDED(fileDialog->SetOptions(dwOptions | FOS_PICKFOLDERS))) + { + NFDi_SetError("SetOptions for IFileDialog failed."); + goto end; + } + + // Show the dialog to the user + result = fileDialog->Show(NULL); + if ( SUCCEEDED(result) ) + { + // Get the folder name + ::IShellItem *shellItem(NULL); + + result = fileDialog->GetResult(&shellItem); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("Could not get file path for selected."); + shellItem->Release(); + goto end; + } + + wchar_t *path = NULL; + result = shellItem->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, &path); + if ( !SUCCEEDED(result) ) + { + NFDi_SetError("GetDisplayName for IShellItem failed."); + shellItem->Release(); + goto end; + } + + CopyWCharToNFDChar(path, outPath); + CoTaskMemFree(path); + if ( !*outPath ) + { + shellItem->Release(); + goto end; + } + + nfdResult = NFD_OKAY; + shellItem->Release(); + } + else if (result == HRESULT_FROM_WIN32(ERROR_CANCELLED) ) + { + nfdResult = NFD_CANCEL; + } + else + { + NFDi_SetError("Show for IFileDialog failed."); + nfdResult = NFD_ERROR; + } + + end: + + if (fileDialog) + fileDialog->Release(); + + COMUninit(coResult); + + return nfdResult; +} diff --git a/extern/nfd-modified/src/nfd_zenity.c b/extern/nfd-modified/src/nfd_zenity.c new file mode 100644 index 00000000..5f931337 --- /dev/null +++ b/extern/nfd-modified/src/nfd_zenity.c @@ -0,0 +1,307 @@ +/* + Native File Dialog + + http://www.frogtoss.com/labs +*/ + +#include +#include +#include +#include "nfd.h" +#include "nfd_common.h" + +#define SIMPLE_EXEC_IMPLEMENTATION +#include "simple_exec.h" + + +const char NO_ZENITY_MSG[] = "zenity not installed"; + + +static void AddTypeToFilterName( const char *typebuf, char *filterName, size_t bufsize ) +{ + size_t len = strlen(filterName); + if( len > 0 ) + strncat( filterName, " *.", bufsize - len - 1 ); + else + strncat( filterName, "--file-filter=*.", bufsize - len - 1 ); + + len = strlen(filterName); + strncat( filterName, typebuf, bufsize - len - 1 ); +} + +static void AddFiltersToCommandArgs(char** commandArgs, int commandArgsLen, const char *filterList ) +{ + char typebuf[NFD_MAX_STRLEN] = {0}; + const char *p_filterList = filterList; + char *p_typebuf = typebuf; + char filterName[NFD_MAX_STRLEN] = {0}; + int i; + + if ( !filterList || strlen(filterList) == 0 ) + return; + + while ( 1 ) + { + + if ( NFDi_IsFilterSegmentChar(*p_filterList) ) + { + char typebufWildcard[NFD_MAX_STRLEN]; + /* add another type to the filter */ + assert( strlen(typebuf) > 0 ); + assert( strlen(typebuf) < NFD_MAX_STRLEN-1 ); + + snprintf( typebufWildcard, NFD_MAX_STRLEN, "*.%s", typebuf ); + + AddTypeToFilterName( typebuf, filterName, NFD_MAX_STRLEN ); + + p_typebuf = typebuf; + memset( typebuf, 0, sizeof(char) * NFD_MAX_STRLEN ); + } + + if ( *p_filterList == ';' || *p_filterList == '\0' ) + { + /* end of filter -- add it to the dialog */ + + for(i = 0; commandArgs[i] != NULL && i < commandArgsLen; i++); + + commandArgs[i] = strdup(filterName); + + filterName[0] = '\0'; + + if ( *p_filterList == '\0' ) + break; + } + + if ( !NFDi_IsFilterSegmentChar( *p_filterList ) ) + { + *p_typebuf = *p_filterList; + p_typebuf++; + } + + p_filterList++; + } + + /* always append a wildcard option to the end*/ + + for(i = 0; commandArgs[i] != NULL && i < commandArgsLen; i++); + + commandArgs[i] = strdup("--file-filter=*.*"); +} + +static nfdresult_t ZenityCommon(char** command, int commandLen, const char* defaultPath, const char* filterList, char** stdOut) +{ + if(defaultPath != NULL) + { + char* prefix = "--filename="; + int len = strlen(prefix) + strlen(defaultPath) + 1; + + char* tmp = (char*) calloc(len, 1); + strcat(tmp, prefix); + strcat(tmp, defaultPath); + + int i; + for(i = 0; command[i] != NULL && i < commandLen; i++); + + command[i] = tmp; + } + + AddFiltersToCommandArgs(command, commandLen, filterList); + + int byteCount = 0; + int exitCode = 0; + int processInvokeError = runCommandArray(stdOut, &byteCount, &exitCode, 0, command); + + for(int i = 0; command[i] != NULL && i < commandLen; i++) + free(command[i]); + + nfdresult_t result = NFD_OKAY; + + if(processInvokeError == COMMAND_NOT_FOUND) + { + NFDi_SetError(NO_ZENITY_MSG); + result = NFD_ERROR; + } + else + { + if(exitCode == 1) + result = NFD_CANCEL; + } + + return result; +} + + +static nfdresult_t AllocPathSet(char* zenityList, nfdpathset_t *pathSet ) +{ + assert(zenityList); + assert(pathSet); + + size_t len = strlen(zenityList) + 1; + pathSet->buf = NFDi_Malloc(len); + + int numEntries = 1; + + for(size_t i = 0; i < len; i++) + { + char ch = zenityList[i]; + + if(ch == '|') + { + numEntries++; + ch = '\0'; + } + + pathSet->buf[i] = ch; + } + + pathSet->count = numEntries; + assert( pathSet->count > 0 ); + + pathSet->indices = NFDi_Malloc( sizeof(size_t)*pathSet->count ); + + int entry = 0; + pathSet->indices[0] = 0; + for(size_t i = 0; i < len; i++) + { + char ch = zenityList[i]; + + if(ch == '|') + { + entry++; + pathSet->indices[entry] = i + 1; + } + } + + return NFD_OKAY; +} + +/* public */ + +nfdresult_t NFD_OpenDialog( const char *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + int commandLen = 100; + char* command[commandLen]; + memset(command, 0, commandLen * sizeof(char*)); + + command[0] = strdup("zenity"); + command[1] = strdup("--file-selection"); + command[2] = strdup("--title=Open File"); + + char* stdOut = NULL; + nfdresult_t result = ZenityCommon(command, commandLen, defaultPath, filterList, &stdOut); + + if(stdOut != NULL) + { + size_t len = strlen(stdOut); + *outPath = NFDi_Malloc(len); + memcpy(*outPath, stdOut, len); + (*outPath)[len-1] = '\0'; // trim out the final \n with a null terminator + free(stdOut); + } + else + { + *outPath = NULL; + } + + return result; +} + + +nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdpathset_t *outPaths ) +{ + int commandLen = 100; + char* command[commandLen]; + memset(command, 0, commandLen * sizeof(char*)); + + command[0] = strdup("zenity"); + command[1] = strdup("--file-selection"); + command[2] = strdup("--title=Open Files"); + command[3] = strdup("--multiple"); + + char* stdOut = NULL; + nfdresult_t result = ZenityCommon(command, commandLen, defaultPath, filterList, &stdOut); + + if(stdOut != NULL) + { + size_t len = strlen(stdOut); + stdOut[len-1] = '\0'; // remove trailing newline + + if ( AllocPathSet( stdOut, outPaths ) == NFD_ERROR ) + result = NFD_ERROR; + + free(stdOut); + } + else + { + result = NFD_ERROR; + } + + return result; +} + +nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, + const nfdchar_t *defaultPath, + nfdchar_t **outPath ) +{ + int commandLen = 100; + char* command[commandLen]; + memset(command, 0, commandLen * sizeof(char*)); + + command[0] = strdup("zenity"); + command[1] = strdup("--file-selection"); + command[2] = strdup("--title=Save File"); + command[3] = strdup("--save"); + + char* stdOut = NULL; + nfdresult_t result = ZenityCommon(command, commandLen, defaultPath, filterList, &stdOut); + + if(stdOut != NULL) + { + size_t len = strlen(stdOut); + *outPath = NFDi_Malloc(len); + memcpy(*outPath, stdOut, len); + (*outPath)[len-1] = '\0'; // trim out the final \n with a null terminator + free(stdOut); + } + else + { + *outPath = NULL; + } + + return result; +} + +nfdresult_t NFD_PickFolder(const nfdchar_t *defaultPath, + nfdchar_t **outPath) +{ + int commandLen = 100; + char* command[commandLen]; + memset(command, 0, commandLen * sizeof(char*)); + + command[0] = strdup("zenity"); + command[1] = strdup("--file-selection"); + command[2] = strdup("--directory"); + command[3] = strdup("--title=Select folder"); + + char* stdOut = NULL; + nfdresult_t result = ZenityCommon(command, commandLen, defaultPath, "", &stdOut); + + if(stdOut != NULL) + { + size_t len = strlen(stdOut); + *outPath = NFDi_Malloc(len); + memcpy(*outPath, stdOut, len); + (*outPath)[len-1] = '\0'; // trim out the final \n with a null terminator + free(stdOut); + } + else + { + *outPath = NULL; + } + + return result; +} diff --git a/extern/nfd-modified/src/simple_exec.h b/extern/nfd-modified/src/simple_exec.h new file mode 100644 index 00000000..6308dfe0 --- /dev/null +++ b/extern/nfd-modified/src/simple_exec.h @@ -0,0 +1,218 @@ +// copied from: https://github.com/wheybags/simple_exec/blob/5a74c507c4ce1b2bb166177ead4cca7cfa23cb35/simple_exec.h + +// simple_exec.h, single header library to run external programs + retrieve their status code and output (unix only for now) +// +// do this: +// #define SIMPLE_EXEC_IMPLEMENTATION +// before you include this file in *one* C or C++ file to create the implementation. +// i.e. it should look like this: +// #define SIMPLE_EXEC_IMPLEMENTATION +// #include "simple_exec.h" + +#ifndef SIMPLE_EXEC_H +#define SIMPLE_EXEC_H + +int runCommand(char** stdOut, int* stdOutByteCount, int* returnCode, int includeStdErr, char* command, ...); +int runCommandArray(char** stdOut, int* stdOutByteCount, int* returnCode, int includeStdErr, char* const* allArgs); + +#endif // SIMPLE_EXEC_H + +#ifdef SIMPLE_EXEC_IMPLEMENTATION + +#include +#include +#include +#include +#include +#include +#include +#include + +#define release_assert(exp) { if (!(exp)) { abort(); } } + +enum PIPE_FILE_DESCRIPTORS +{ + READ_FD = 0, + WRITE_FD = 1 +}; + +enum RUN_COMMAND_ERROR +{ + COMMAND_RAN_OK = 0, + COMMAND_NOT_FOUND = 1 +}; + +int runCommandArray(char** stdOut, int* stdOutByteCount, int* returnCode, int includeStdErr, char* const* allArgs) +{ + // adapted from: https://stackoverflow.com/a/479103 + + int bufferSize = 256; + char buffer[bufferSize + 1]; + + int dataReadFromChildDefaultSize = bufferSize * 5; + int dataReadFromChildSize = dataReadFromChildDefaultSize; + int dataReadFromChildUsed = 0; + char* dataReadFromChild = (char*)malloc(dataReadFromChildSize); + + + int parentToChild[2]; + release_assert(pipe(parentToChild) == 0); + + int childToParent[2]; + release_assert(pipe(childToParent) == 0); + + int errPipe[2]; + release_assert(pipe(errPipe) == 0); + + pid_t pid; + switch( pid = fork() ) + { + case -1: + { + release_assert(0 && "Fork failed"); + break; + } + + case 0: // child + { + release_assert(dup2(parentToChild[READ_FD ], STDIN_FILENO ) != -1); + release_assert(dup2(childToParent[WRITE_FD], STDOUT_FILENO) != -1); + + if(includeStdErr) + { + release_assert(dup2(childToParent[WRITE_FD], STDERR_FILENO) != -1); + } + else + { + int devNull = open("/dev/null", O_WRONLY); + release_assert(dup2(devNull, STDERR_FILENO) != -1); + } + + // unused + release_assert(close(parentToChild[WRITE_FD]) == 0); + release_assert(close(childToParent[READ_FD ]) == 0); + release_assert(close(errPipe[READ_FD]) == 0); + + const char* command = allArgs[0]; + execvp(command, allArgs); + + char err = 1; + ssize_t result = write(errPipe[WRITE_FD], &err, 1); + release_assert(result != -1); + + close(errPipe[WRITE_FD]); + close(parentToChild[READ_FD]); + close(childToParent[WRITE_FD]); + + exit(0); + } + + + default: // parent + { + // unused + release_assert(close(parentToChild[READ_FD]) == 0); + release_assert(close(childToParent[WRITE_FD]) == 0); + release_assert(close(errPipe[WRITE_FD]) == 0); + + while(1) + { + ssize_t bytesRead = 0; + switch(bytesRead = read(childToParent[READ_FD], buffer, bufferSize)) + { + case 0: // End-of-File, or non-blocking read. + { + int status = 0; + release_assert(waitpid(pid, &status, 0) == pid); + + // done with these now + release_assert(close(parentToChild[WRITE_FD]) == 0); + release_assert(close(childToParent[READ_FD]) == 0); + + char errChar = 0; + ssize_t result = read(errPipe[READ_FD], &errChar, 1); + release_assert(result != -1); + close(errPipe[READ_FD]); + + if(errChar) + { + free(dataReadFromChild); + return COMMAND_NOT_FOUND; + } + + // free any un-needed memory with realloc + add a null terminator for convenience + dataReadFromChild = (char*)realloc(dataReadFromChild, dataReadFromChildUsed + 1); + dataReadFromChild[dataReadFromChildUsed] = '\0'; + + if(stdOut != NULL) + *stdOut = dataReadFromChild; + else + free(dataReadFromChild); + + if(stdOutByteCount != NULL) + *stdOutByteCount = dataReadFromChildUsed; + if(returnCode != NULL) + *returnCode = WEXITSTATUS(status); + + return COMMAND_RAN_OK; + } + case -1: + { + release_assert(0 && "read() failed"); + break; + } + + default: + { + if(dataReadFromChildUsed + bytesRead + 1 >= dataReadFromChildSize) + { + dataReadFromChildSize += dataReadFromChildDefaultSize; + dataReadFromChild = (char*)realloc(dataReadFromChild, dataReadFromChildSize); + } + + memcpy(dataReadFromChild + dataReadFromChildUsed, buffer, bytesRead); + dataReadFromChildUsed += bytesRead; + break; + } + } + } + } + } +} + +int runCommand(char** stdOut, int* stdOutByteCount, int* returnCode, int includeStdErr, char* command, ...) +{ + va_list vl; + va_start(vl, command); + + char* currArg = NULL; + + int allArgsInitialSize = 16; + int allArgsSize = allArgsInitialSize; + char** allArgs = (char**)malloc(sizeof(char*) * allArgsSize); + allArgs[0] = command; + + int i = 1; + do + { + currArg = va_arg(vl, char*); + allArgs[i] = currArg; + + i++; + + if(i >= allArgsSize) + { + allArgsSize += allArgsInitialSize; + allArgs = (char**)realloc(allArgs, sizeof(char*) * allArgsSize); + } + + } while(currArg != NULL); + + va_end(vl); + + int retval = runCommandArray(stdOut, stdOutByteCount, returnCode, includeStdErr, allArgs); + free(allArgs); + return retval; +} + +#endif //SIMPLE_EXEC_IMPLEMENTATION diff --git a/extern/nfd-modified/test/test_opendialog.c b/extern/nfd-modified/test/test_opendialog.c new file mode 100644 index 00000000..54bf3742 --- /dev/null +++ b/extern/nfd-modified/test/test_opendialog.c @@ -0,0 +1,29 @@ +#include "nfd.h" + +#include +#include + + +/* this test should compile on all supported platforms */ + +int main( void ) +{ + nfdchar_t *outPath = NULL; + nfdresult_t result = NFD_OpenDialog( "png,jpg;pdf", NULL, &outPath ); + if ( result == NFD_OKAY ) + { + puts("Success!"); + puts(outPath); + free(outPath); + } + else if ( result == NFD_CANCEL ) + { + puts("User pressed cancel."); + } + else + { + printf("Error: %s\n", NFD_GetError() ); + } + + return 0; +} diff --git a/extern/nfd-modified/test/test_opendialogmultiple.c b/extern/nfd-modified/test/test_opendialogmultiple.c new file mode 100644 index 00000000..45db6b65 --- /dev/null +++ b/extern/nfd-modified/test/test_opendialogmultiple.c @@ -0,0 +1,32 @@ +#include "nfd.h" + +#include +#include + +/* this test should compile on all supported platforms */ + +int main( void ) +{ + nfdpathset_t pathSet; + nfdresult_t result = NFD_OpenDialogMultiple( "png,jpg;pdf", NULL, &pathSet ); + if ( result == NFD_OKAY ) + { + size_t i; + for ( i = 0; i < NFD_PathSet_GetCount(&pathSet); ++i ) + { + nfdchar_t *path = NFD_PathSet_GetPath(&pathSet, i); + printf("Path %i: %s\n", (int)i, path ); + } + NFD_PathSet_Free(&pathSet); + } + else if ( result == NFD_CANCEL ) + { + puts("User pressed cancel."); + } + else + { + printf("Error: %s\n", NFD_GetError() ); + } + + return 0; +} diff --git a/extern/nfd-modified/test/test_pickfolder.c b/extern/nfd-modified/test/test_pickfolder.c new file mode 100644 index 00000000..708fee85 --- /dev/null +++ b/extern/nfd-modified/test/test_pickfolder.c @@ -0,0 +1,29 @@ +#include "nfd.h" + +#include +#include + + +/* this test should compile on all supported platforms */ + +int main( void ) +{ + nfdchar_t *outPath = NULL; + nfdresult_t result = NFD_PickFolder( NULL, &outPath ); + if ( result == NFD_OKAY ) + { + puts("Success!"); + puts(outPath); + free(outPath); + } + else if ( result == NFD_CANCEL ) + { + puts("User pressed cancel."); + } + else + { + printf("Error: %s\n", NFD_GetError() ); + } + + return 0; +} diff --git a/extern/nfd-modified/test/test_savedialog.c b/extern/nfd-modified/test/test_savedialog.c new file mode 100644 index 00000000..7ec37f08 --- /dev/null +++ b/extern/nfd-modified/test/test_savedialog.c @@ -0,0 +1,28 @@ +#include "nfd.h" + +#include +#include + +/* this test should compile on all supported platforms */ + +int main( void ) +{ + nfdchar_t *savePath = NULL; + nfdresult_t result = NFD_SaveDialog( "png,jpg;pdf", NULL, &savePath ); + if ( result == NFD_OKAY ) + { + puts("Success!"); + puts(savePath); + free(savePath); + } + else if ( result == NFD_CANCEL ) + { + puts("User pressed cancel."); + } + else + { + printf("Error: %s\n", NFD_GetError() ); + } + + return 0; +} From 25af023dc6c1ce63907766824a82871c6754748b Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 17 Jun 2022 14:30:18 +0900 Subject: [PATCH 043/580] Various corrections and fixes Fix SN PSG pitch corrections Revive YM2612 from dead Add Game Gear stereo function finally Add OPN/A prescaler config --- src/engine/platform/ay.cpp | 7 +++ src/engine/platform/ay.h | 1 + src/engine/platform/fmshared_OPM.h | 20 ++++---- src/engine/platform/fmshared_OPN.h | 28 +++++------ src/engine/platform/genesis.h | 7 --- src/engine/platform/sms.cpp | 67 +++++++++------------------ src/engine/platform/sms.h | 3 +- src/engine/platform/sound/sn76496.cpp | 2 +- src/engine/platform/ym2203.cpp | 35 +++++++++++++- src/engine/platform/ym2203.h | 4 +- src/engine/platform/ym2608.cpp | 38 +++++++++++++-- src/engine/platform/ym2608.h | 6 +-- src/engine/song.h | 4 +- src/gui/presets.cpp | 16 ++++++- src/gui/sysConf.cpp | 8 +--- 15 files changed, 147 insertions(+), 99 deletions(-) diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 83de1fa1..52ac6e57 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -593,6 +593,13 @@ void DivPlatformAY8910::poke(std::vector& wlist) { for (DivRegWrite& i: wlist) immWrite(i.addr,i.val); } +void DivPlatformAY8910::setExtClockDiv(unsigned int eclk, unsigned char ediv) { + if (extMode) { + extClock=eclk; + extDiv=ediv; + } +} + void DivPlatformAY8910::setFlags(unsigned int flags) { if (extMode) { chipClock=extClock; diff --git a/src/engine/platform/ay.h b/src/engine/platform/ay.h index a1f35d1b..f67a2ad9 100644 --- a/src/engine/platform/ay.h +++ b/src/engine/platform/ay.h @@ -91,6 +91,7 @@ class DivPlatformAY8910: public DivDispatch { friend void putDispatchChan(void*,int,int); public: + void setExtClockDiv(unsigned int eclk=COLOR_NTSC, unsigned char ediv=8); void acquire(short* bufL, short* bufR, size_t start, size_t len); int dispatch(DivCommand c); void* getChanState(int chan); diff --git a/src/engine/platform/fmshared_OPM.h b/src/engine/platform/fmshared_OPM.h index 97844656..9b838c19 100644 --- a/src/engine/platform/fmshared_OPM.h +++ b/src/engine/platform/fmshared_OPM.h @@ -26,16 +26,16 @@ class DivPlatformOPM: public DivPlatformFMBase { protected: - const unsigned char ADDR_MULT_DT=0x40; - const unsigned char ADDR_TL=0x60; - const unsigned char ADDR_RS_AR=0x80; - const unsigned char ADDR_AM_DR=0xa0; - const unsigned char ADDR_DT2_D2R=0xc0; - const unsigned char ADDR_SL_RR=0xe0; - const unsigned char ADDR_NOTE=0x28; - const unsigned char ADDR_KF=0x30; - const unsigned char ADDR_FMS_AMS=0x38; - const unsigned char ADDR_LR_FB_ALG=0x20; + const unsigned short ADDR_MULT_DT=0x40; + const unsigned short ADDR_TL=0x60; + const unsigned short ADDR_RS_AR=0x80; + const unsigned short ADDR_AM_DR=0xa0; + const unsigned short ADDR_DT2_D2R=0xc0; + const unsigned short ADDR_SL_RR=0xe0; + const unsigned short ADDR_NOTE=0x28; + const unsigned short ADDR_KF=0x30; + const unsigned short ADDR_FMS_AMS=0x38; + const unsigned short ADDR_LR_FB_ALG=0x20; const unsigned short opOffs[4]={ 0x00, 0x08, 0x10, 0x18 diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index 74e13219..0aaad16d 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -85,27 +85,27 @@ class DivPlatformOPN: public DivPlatformFMBase { protected: - const unsigned char ADDR_MULT_DT=0x30; - const unsigned char ADDR_TL=0x40; - const unsigned char ADDR_RS_AR=0x50; - const unsigned char ADDR_AM_DR=0x60; - const unsigned char ADDR_DT2_D2R=0x70; - const unsigned char ADDR_SL_RR=0x80; - const unsigned char ADDR_SSG=0x90; - const unsigned char ADDR_FREQ=0xa0; - const unsigned char ADDR_FREQH=0xa4; - const unsigned char ADDR_FB_ALG=0xb0; - const unsigned char ADDR_LRAF=0xb4; + const unsigned short ADDR_MULT_DT=0x30; + const unsigned short ADDR_TL=0x40; + const unsigned short ADDR_RS_AR=0x50; + const unsigned short ADDR_AM_DR=0x60; + const unsigned short ADDR_DT2_D2R=0x70; + const unsigned short ADDR_SL_RR=0x80; + const unsigned short ADDR_SSG=0x90; + const unsigned short ADDR_FREQ=0xa0; + const unsigned short ADDR_FREQH=0xa4; + const unsigned short ADDR_FB_ALG=0xb0; + const unsigned short ADDR_LRAF=0xb4; const unsigned short opOffs[4]={ 0x00, 0x04, 0x08, 0x0c }; double fmFreqBase; - double fmDivBase; - unsigned char ayDiv; + unsigned int fmDivBase; + unsigned int ayDiv; - DivPlatformOPN(double f=9440540.0, double d=72, unsigned char a=32): + DivPlatformOPN(double f=9440540.0, unsigned int d=72, unsigned int a=32): DivPlatformFMBase(), fmFreqBase(f), fmDivBase(d), diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index 7d2004f3..c46a992d 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -99,13 +99,6 @@ class DivPlatformGenesis: public DivPlatformOPN { Channel chan[10]; DivDispatchOscBuffer* oscBuf[10]; bool isMuted[10]; - struct QueuedWrite { - unsigned short addr; - unsigned char val; - bool addrOrVal; - QueuedWrite(unsigned short a, unsigned char v): addr(a), val(v), addrOrVal(false) {} - }; - std::deque writes; ym3438_t fm; ymfm::ym2612* fm_ymfm; diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 35bb9c40..71e9b0bc 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -35,7 +35,7 @@ const char* regCheatSheetGG[]={ }; const char** DivPlatformSMS::getRegisterSheet() { - return isStereo()?regCheatSheetGG:regCheatSheetSN; + return stereo?regCheatSheetGG:regCheatSheetSN; } const char* DivPlatformSMS::getEffectName(unsigned char effect) { @@ -74,7 +74,7 @@ void DivPlatformSMS::acquire_nuked(short* bufL, short* bufR, size_t start, size_ o=YMPSG_GetOutput(&sn_nuked); if (o<-32768) o=-32768; if (o>32767) o=32767; - bufL[h]=o; + bufL[h]=bufR[h]=o; for (int i=0; i<4; i++) { if (isMuted[i]) { oscBuf[i]->data[oscBuf[i]->needle++]=0; @@ -86,13 +86,6 @@ void DivPlatformSMS::acquire_nuked(short* bufL, short* bufR, size_t start, size_ } void DivPlatformSMS::acquire_mame(short* bufL, short* bufR, size_t start, size_t len) { - if (snBufLenwrite(w.val); writes.pop(); } - for (size_t h=0; hsound_stream_update(outs,1); for (int i=0; i<4; i++) { @@ -115,17 +108,6 @@ void DivPlatformSMS::acquire_mame(short* bufL, short* bufR, size_t start, size_t } } } - if (stereo) { - for (size_t i=0; i>1)&1)<>1)&1)<<(i+4)); rWrite(1,lastPan); } } @@ -204,7 +186,7 @@ void DivPlatformSMS::tick(bool sysTick) { } for (int i=0; i<3; i++) { if (chan[i].freqChanged) { - chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,true,0,chan[i].pitch2,chipClock,64); + chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,true,0,chan[i].pitch2,chipClock,toneDivider); if (chan[i].freq>1023) chan[i].freq=1023; if (chan[i].freq<8) chan[i].freq=1; //if (chan[i].actualNote>0x5d) chan[i].freq=0x01; @@ -263,7 +245,7 @@ void DivPlatformSMS::tick(bool sysTick) { } int DivPlatformSMS::dispatch(DivCommand c) { - int CHIP_DIVIDER=64; + int CHIP_DIVIDER=toneDivider; if (c.chan==3) CHIP_DIVIDER=noiseDivider; switch (c.cmd) { case DIV_CMD_NOTE_ON: @@ -340,11 +322,12 @@ int DivPlatformSMS::dispatch(DivCommand c) { updateSNMode=true; break; case DIV_CMD_PANNING: { - if (isStereo()) { + if (stereo) { + if (c.chan>3) c.chan=3; lastPan&=~(0x11<0) pan|=0x01; - if (c.value2>0) pan|=0x10; + if (c.value>0) pan|=0x10; + if (c.value2>0) pan|=0x01; if (pan==0) pan=0x11; lastPan|=pan<reset(); ay->getRegisterWrites().clear(); ay->flushWrites(); @@ -1013,7 +1017,8 @@ void DivPlatformYM2203::setSkipRegisterWrites(bool value) { } void DivPlatformYM2203::setFlags(unsigned int flags) { - switch (flags&0x3f) { + // Clock flags + switch (flags&0x1f) { default: case 0x00: chipClock=COLOR_NTSC; @@ -1034,10 +1039,36 @@ void DivPlatformYM2203::setFlags(unsigned int flags) { chipClock=3000000.0/2.0; break; } + // Prescaler flags + switch ((flags>>5)&0x3) { + default: + case 0x00: // /6 + prescale=0x2d; + fmFreqBase=4720270.0, + fmDivBase=36, + ayDiv=16; + break; + case 0x01: // /3 + prescale=0x2e; + fmFreqBase=4720270.0/2.0, + fmDivBase=18, + ayDiv=8; + break; + case 0x02: // /2 + prescale=0x2f; + fmFreqBase=4720270.0/3.0, + fmDivBase=12, + ayDiv=4; + break; + } rate=fm->sample_rate(chipClock); for (int i=0; i<6; i++) { oscBuf[i]->rate=rate; } + immWrite(0x2d,0xff); + immWrite(prescale,0xff); + ay->setExtClockDiv(chipClock,ayDiv); + ay->setFlags(16); } int DivPlatformYM2203::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { @@ -1050,11 +1081,11 @@ int DivPlatformYM2203::init(DivEngine* p, int channels, int sugRate, unsigned in } fm=new ymfm::ym2203(iface); fm->set_fidelity(ymfm::OPN_FIDELITY_MIN); - setFlags(flags); // YM2149, 2MHz ay=new DivPlatformAY8910(true,chipClock,ayDiv); ay->init(p,3,sugRate,16); ay->toggleRegisterDump(true); + setFlags(flags); reset(); return 6; diff --git a/src/engine/platform/ym2203.h b/src/engine/platform/ym2203.h index 6d7bc420..d406e2f2 100644 --- a/src/engine/platform/ym2203.h +++ b/src/engine/platform/ym2203.h @@ -90,6 +90,7 @@ class DivPlatformYM2203: public DivPlatformOPN { unsigned char sampleBank; bool extMode; + unsigned char prescale; friend void putDispatchChan(void*,int,int); @@ -118,7 +119,8 @@ class DivPlatformYM2203: public DivPlatformOPN { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2203(): - DivPlatformOPN(4720270.0, 36, 16) {} + DivPlatformOPN(4720270.0, 36, 16), + prescale(0x2d) {} ~DivPlatformYM2203(); }; #endif diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 46b8b0ad..733f0481 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -1325,6 +1325,10 @@ void DivPlatformYM2608::reset() { // enable 6 channel mode immWrite(0x29,0x80); + // set prescaler + immWrite(0x2d,0xff); + immWrite(prescale,0xff); + ay->reset(); ay->getRegisterWrites().clear(); ay->flushWrites(); @@ -1395,7 +1399,8 @@ void DivPlatformYM2608::renderSamples() { } void DivPlatformYM2608::setFlags(unsigned int flags) { - switch (flags&0x3f) { + // Clock flags + switch (flags&0x1f) { default: case 0x00: chipClock=8000000.0; @@ -1404,10 +1409,36 @@ void DivPlatformYM2608::setFlags(unsigned int flags) { chipClock=38400*13*16; // 31948800/4 break; } + // Prescaler flags + switch ((flags>>5)&0x3) { + default: + case 0x00: // /6 + prescale=0x2d; + fmFreqBase=9440540.0, + fmDivBase=72, + ayDiv=32; + break; + case 0x01: // /3 + prescale=0x2e; + fmFreqBase=9440540.0/2.0, + fmDivBase=36, + ayDiv=16; + break; + case 0x02: // /2 + prescale=0x2f; + fmFreqBase=9440540.0/3.0, + fmDivBase=24, + ayDiv=8; + break; + } rate=fm->sample_rate(chipClock); for (int i=0; i<16; i++) { oscBuf[i]->rate=rate; } + immWrite(0x2d,0xff); + immWrite(prescale,0xff); + ay->setExtClockDiv(chipClock,ayDiv); + ay->setFlags(16); } int DivPlatformYM2608::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { @@ -1423,11 +1454,12 @@ int DivPlatformYM2608::init(DivEngine* p, int channels, int sugRate, unsigned in oscBuf[i]=new DivDispatchOscBuffer; } fm=new ymfm::ym2608(iface); - setFlags(flags); + fm->set_fidelity(ymfm::OPN_FIDELITY_MIN); // YM2149, 2MHz - ay=new DivPlatformAY8910(true,chipClock,32); + ay=new DivPlatformAY8910(true,chipClock,ayDiv); ay->init(p,3,sugRate,16); ay->toggleRegisterDump(true); + setFlags(flags); reset(); return 16; } diff --git a/src/engine/platform/ym2608.h b/src/engine/platform/ym2608.h index c1f43f4d..ac38a8c0 100644 --- a/src/engine/platform/ym2608.h +++ b/src/engine/platform/ym2608.h @@ -101,8 +101,7 @@ class DivPlatformYM2608: public DivPlatformOPN { unsigned char writeRSSOff, writeRSSOn; bool extMode; - double fmFreqBase; - unsigned char ayDiv; + unsigned char prescale; double NOTE_OPNB(int ch, int note); double NOTE_ADPCMB(int note); @@ -137,7 +136,8 @@ class DivPlatformYM2608: public DivPlatformOPN { int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformYM2608(): - DivPlatformOPN(9440540.0, 72, 32) {} + DivPlatformOPN(9440540.0, 72, 32), + prescale(0x2d) {} ~DivPlatformYM2608(); }; #endif diff --git a/src/engine/song.h b/src/engine/song.h index 6bbb00cf..df622d86 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -357,7 +357,7 @@ struct DivSong { // - 3: 3MHz // - 4: 3.9936MHz (PC-88, PC-98) // - 5: 1.5MHz - // - bit 5-6: output rate (TODO) + // - bit 5-6: output rate // - 0: FM: clock / 72, SSG: clock / 16 // - 1: FM: clock / 36, SSG: clock / 8 // - 2: FM: clock / 24, SSG: clock / 4 @@ -365,7 +365,7 @@ struct DivSong { // - bit 0-4: clock rate // - 0: 8MHz // - 1: 7.987MHz (PC-88, PC-98) - // - bit 5-6: output rate (TODO) + // - bit 5-6: output rate // - 0: FM: clock / 144, SSG: clock / 32 // - 1: FM: clock / 72, SSG: clock / 16 // - 2: FM: clock / 48, SSG: clock / 8 diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index d0e63c11..5056de74 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -56,13 +56,13 @@ void FurnaceGUI::initSystemPresets() { )); cat.systems.push_back(FurnaceGUISysDef( "Yamaha YM2608 (OPNA)", { - DIV_SYSTEM_PC98, 64, 0, 3, + DIV_SYSTEM_PC98, 64, 0, 0, 0 } )); cat.systems.push_back(FurnaceGUISysDef( "Yamaha YM2608 (extended channel 3)", { - DIV_SYSTEM_PC98_EXT, 64, 0, 3, + DIV_SYSTEM_PC98_EXT, 64, 0, 0, 0 } )); @@ -258,6 +258,18 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "TI SN94624", { + DIV_SYSTEM_SMS, 64, 0, 0x80, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "TI SN76494", { + DIV_SYSTEM_SMS, 64, 0, 0x84, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "AY-3-8910", { DIV_SYSTEM_AY8910, 64, 0, 0, diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 02d06db3..21fef35d 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -397,8 +397,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("1.5MHz",(flags&31)==5)) { copyOfFlags=(flags&(~31))|5; } - /* - ImGui::Text("Output rate: (DOES NOT WORK YET!)"); + ImGui::Text("Output rate:"); if (ImGui::RadioButton("FM: clock / 72, SSG: clock / 16",(flags&96)==0)) { copyOfFlags=(flags&(~96))|0; } @@ -408,7 +407,6 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("FM: clock / 24, SSG: clock / 4",(flags&96)==64)) { copyOfFlags=(flags&(~96))|64; } - */ break; } case DIV_SYSTEM_PC98: @@ -420,8 +418,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("7.987MHz (PC-88/PC-98)",(flags&31)==1)) { copyOfFlags=(flags&(~31))|1; } - /* - ImGui::Text("Output rate: (DOES NOT WORK YET!)"); + ImGui::Text("Output rate:"); if (ImGui::RadioButton("FM: clock / 144, SSG: clock / 32",(flags&96)==0)) { copyOfFlags=(flags&(~96))|0; } @@ -431,7 +428,6 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("FM: clock / 48, SSG: clock / 8",(flags&96)==64)) { copyOfFlags=(flags&(~96))|64; } - */ break; } case DIV_SYSTEM_RF5C68: { From 66f3f0e67810fff5a7abfccecd98828f5820f239 Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 17 Jun 2022 14:34:00 +0900 Subject: [PATCH 044/580] Input clock is too high for these chips --- src/gui/presets.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 5056de74..53ef7d42 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -260,13 +260,13 @@ void FurnaceGUI::initSystemPresets() { )); cat.systems.push_back(FurnaceGUISysDef( "TI SN94624", { - DIV_SYSTEM_SMS, 64, 0, 0x80, + DIV_SYSTEM_SMS, 64, 0, 0x182, 0 } )); cat.systems.push_back(FurnaceGUISysDef( "TI SN76494", { - DIV_SYSTEM_SMS, 64, 0, 0x84, + DIV_SYSTEM_SMS, 64, 0, 0x186, 0 } )); From d8513e0856174a980c021ca91dcf91eeba83a092 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 01:28:22 -0500 Subject: [PATCH 045/580] GUI: use Native File Dialog on Windows/macOS latter is untested --- CMakeLists.txt | 14 +++++++ src/gui/fileDialog.cpp | 84 ++++++++++++++++++++++++++++++++++++++++++ src/gui/fileDialog.h | 16 ++++++++ 3 files changed, 114 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d8491b45..25c3c904 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -520,8 +520,17 @@ src/gui/volMeter.cpp src/gui/gui.cpp ) +if (WIN32 OR APPLE) + list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_common.c) +endif() + +if (WIN32) + list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_win.cpp) +endif() + if (APPLE) list(APPEND GUI_SOURCES src/gui/macstuff.m) + list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_cocoa.m) endif() if (NOT WIN32 AND NOT APPLE) @@ -549,6 +558,11 @@ if (BUILD_GUI) extern/IconFontCppHeaders extern/igfd ) + if (WIN32 OR APPLE) + list(APPEND DEPENDENCIES_INCLUDE_DIRS + extern/nfd-modified/src/include + ) + endif() list(APPEND DEPENDENCIES_DEFINES HAVE_GUI) message(STATUS "Building GUI") else() diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index e50298c1..c88a0427 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -2,7 +2,62 @@ #include "ImGuiFileDialog.h" #include "../ta-log.h" +#ifdef USE_NFD +#include +#else #include "../../extern/pfd-fixed/portable-file-dialogs.h" +#endif + +#ifdef USE_NFD +struct NFDState { + bool isSave; + String header; + std::vector filter; + String path; + FileDialogSelectCallback clickCallback; + NFDState(bool save, String h, std::vector filt, String pa, FileDialogSelectCallback cc): + isSave(save), + header(h), + filter(filt), + path(pa), + clickCallback(cc) { + } +}; + +// TODO: filter +void _nfdThread(const NFDState state, std::atomic* ok, String* result) { + nfdchar_t* out=NULL; + nfdresult_t ret=NFD_CANCEL; + + if (state.isSave) { + ret=NFD_SaveDialog(NULL,state.path.c_str(),&out); + } else { + ret=NFD_OpenDialog(NULL,state.path.c_str(),&out); + } + + switch (ret) { + case NFD_OKAY: + if (out!=NULL) { + (*result)=out; + } else { + (*result)=""; + } + break; + case NFD_CANCEL: + (*result)=""; + break; + case NFD_ERROR: + (*result)=""; + logE("NFD error! %s\n",NFD_GetError()); + break; + default: + logE("NFD unknown return code %d!\n",ret); + (*result)=""; + break; + } + (*ok)=true; +} +#endif bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback) { if (opened) return false; @@ -10,7 +65,12 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, c curPath=path; logD("opening load file dialog with curPath %s",curPath.c_str()); if (sysDialog) { +#ifdef USE_NFD + dialogOK=false; + dialogO=new std::thread(_nfdThread,NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult); +#else dialogO=new pfd::open_file(header,path,filter); +#endif } else { ImGuiFileDialog::Instance()->DpiScale=dpiScale; ImGuiFileDialog::Instance()->OpenModal("FileDialog",header,noSysFilter,path,1,nullptr,0,clickCallback); @@ -25,7 +85,12 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, c curPath=path; logD("opening save file dialog with curPath %s",curPath.c_str()); if (sysDialog) { +#ifdef USE_NFD + dialogOK=false; + dialogS=new std::thread(_nfdThread,NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult); +#else dialogS=new pfd::save_file(header,path,filter); +#endif } else { ImGuiFileDialog::Instance()->DpiScale=dpiScale; ImGuiFileDialog::Instance()->OpenModal("FileDialog",header,noSysFilter,path,1,nullptr,ImGuiFileDialogFlags_ConfirmOverwrite); @@ -46,15 +111,24 @@ void FurnaceGUIFileDialog::close() { if (sysDialog) { if (saving) { if (dialogS!=NULL) { +#ifdef USE_NFD + dialogS->join(); +#endif delete dialogS; dialogS=NULL; } } else { if (dialogO!=NULL) { +#ifdef USE_NFD + dialogO->join(); +#endif delete dialogO; dialogO=NULL; } } +#ifdef USE_NFD + dialogOK=false; +#endif } else { ImGuiFileDialog::Instance()->Close(); } @@ -63,6 +137,15 @@ void FurnaceGUIFileDialog::close() { bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { if (sysDialog) { +#ifdef USE_NFD + if (dialogOK) { + fileName=nfdResult; + logD("returning %s",fileName.c_str()); + dialogOK=false; + return true; + } + return false; +#else if (saving) { if (dialogS!=NULL) { if (dialogS->ready(0)) { @@ -90,6 +173,7 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { } } return false; +#endif } else { return ImGuiFileDialog::Instance()->Display("FileDialog",ImGuiWindowFlags_NoCollapse|ImGuiWindowFlags_NoMove,min,max); } diff --git a/src/gui/fileDialog.h b/src/gui/fileDialog.h index 5eb67d85..6131f56b 100644 --- a/src/gui/fileDialog.h +++ b/src/gui/fileDialog.h @@ -3,10 +3,19 @@ #include #include +#if defined(_WIN32) || defined(__APPLE__) +#define USE_NFD +#endif + +#ifdef USE_NFD +#include +#include +#else namespace pfd { class open_file; class save_file; } +#endif typedef std::function FileDialogSelectCallback; @@ -16,8 +25,15 @@ class FurnaceGUIFileDialog { bool saving; String curPath; String fileName; +#ifdef USE_NFD + std::thread* dialogO; + std::thread* dialogS; + std::atomic dialogOK; + String nfdResult; +#else pfd::open_file* dialogO; pfd::save_file* dialogS; +#endif public: bool openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback=NULL); bool openSave(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale); From 02d4712e9c7e2844d99d681eef6dbf1a82b2ea70 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 02:21:07 -0500 Subject: [PATCH 046/580] implement undo in find and replace --- src/gui/findReplace.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 5dae95bc..c0d59c49 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -190,7 +190,6 @@ void FurnaceGUI::doFind() { } /* issues with the find and replace function: - - doesn't mark the module as modified - can't undo - replace notes to anything starting from C-0 to lower notes will have an octave higher, so set it to replace to C-0 it will becom C-1, b_1 will become B-0 and so on */ @@ -202,6 +201,12 @@ void FurnaceGUI::doReplace() { bool* touched[DIV_MAX_CHANS]; memset(touched,0,DIV_MAX_CHANS*sizeof(bool*)); + UndoStep us; + us.type=GUI_UNDO_REPLACE; + + short prevVal[32]; + memset(prevVal,0,32*sizeof(short)); + for (FurnaceGUIQueryResult& i: curQueryResults) { int patIndex=e->song.subsong[i.subsong]->orders.ord[i.x][i.order]; DivPattern* p=e->song.subsong[i.subsong]->pat[i.x].getPattern(patIndex,true); @@ -211,6 +216,9 @@ void FurnaceGUI::doReplace() { } if (touched[i.x][(patIndex<<8)|i.y]) continue; touched[i.x][(patIndex<<8)|i.y]=true; + + memcpy(prevVal,p->data[i.y],32*sizeof(short)); + if (queryReplaceNoteDo) { switch (queryReplaceNoteMode) { case GUI_QUERY_REPLACE_SET: @@ -400,6 +408,13 @@ void FurnaceGUI::doReplace() { } } } + + // issue undo step + for (int j=0; j<32; j++) { + if (p->data[i.y][j]!=prevVal[j]) { + us.pat.push_back(UndoPatternData(i.subsong,i.x,patIndex,i.y,j,prevVal[j],p->data[i.y][j])); + } + } } for (int i=0; isettings.maxUndoSteps) undoHist.pop_front(); + } } #define FIRST_VISIBLE(x) (x==GUI_QUERY_MATCH || x==GUI_QUERY_MATCH_NOT || x==GUI_QUERY_RANGE || x==GUI_QUERY_RANGE_NOT) From a8ae8f6e5465143b981f396f9fa2c884bb46ded0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 02:40:34 -0500 Subject: [PATCH 047/580] address the final find and replace issue --- src/gui/findReplace.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index c0d59c49..10fd1253 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -43,6 +43,7 @@ int queryNote(int note, int octave) { } bool checkCondition(int mode, int arg, int argMax, int val, bool noteMode=false) { + const int emptyVal=noteMode?-61:-1; switch (mode) { case GUI_QUERY_IGNORE: return true; @@ -51,19 +52,19 @@ bool checkCondition(int mode, int arg, int argMax, int val, bool noteMode=false) return (val==arg); break; case GUI_QUERY_MATCH_NOT: - return (val!=-1 && val!=arg); + return (val!=emptyVal && val!=arg); break; case GUI_QUERY_RANGE: return (val>=arg && val<=argMax); break; case GUI_QUERY_RANGE_NOT: - return (val!=-1 && (valargMax) && (!noteMode || val<120)); + return (val!=emptyVal && (valargMax) && (!noteMode || val<120)); break; case GUI_QUERY_ANY: - return (val!=-1); + return (val!=emptyVal); break; case GUI_QUERY_NONE: - return (val==-1); + return (val==emptyVal); break; } return false; @@ -249,8 +250,11 @@ void FurnaceGUI::doReplace() { if (note>119) note=119; p->data[i.y][0]=(note+60)%12; - if (p->data[i.y][0]==0) p->data[i.y][0]=12; - p->data[i.y][1]=(unsigned char)((note-1)/12); + p->data[i.y][1]=(unsigned char)(((note+60)/12)-5); + if (p->data[i.y][0]==0) { + p->data[i.y][0]=12; + p->data[i.y][1]=(unsigned char)(p->data[i.y][1]-1); + } } } break; @@ -266,8 +270,11 @@ void FurnaceGUI::doReplace() { } p->data[i.y][0]=(note+60)%12; - if (p->data[i.y][0]==0) p->data[i.y][0]=12; - p->data[i.y][1]=(unsigned char)((note-1)/12); + p->data[i.y][1]=(unsigned char)(((note+60)/12)-5); + if (p->data[i.y][0]==0) { + p->data[i.y][0]=12; + p->data[i.y][1]=(unsigned char)(p->data[i.y][1]-1); + } } } break; From 56b56ebdde69df343e9a4e0bc7644cf4e385077a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 02:41:40 -0500 Subject: [PATCH 048/580] GUI: fix cursor moving on undo replace --- src/gui/editing.cpp | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index 8b30d251..ef63ab26 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -953,13 +953,15 @@ void FurnaceGUI::doUndo() { DivPattern* p=e->curPat[i.chan].getPattern(i.pat,true); p->data[i.row][i.col]=i.oldVal; } - if (!e->isPlaying() || !followPattern) { - cursor=us.cursor; - selStart=us.selStart; - selEnd=us.selEnd; - curNibble=us.nibble; - updateScroll(cursor.y); - setOrder(us.order); + if (us.type!=GUI_UNDO_REPLACE) { + if (!e->isPlaying() || !followPattern) { + cursor=us.cursor; + selStart=us.selStart; + selEnd=us.selEnd; + curNibble=us.nibble; + updateScroll(cursor.y); + setOrder(us.order); + } } break; } @@ -1002,13 +1004,15 @@ void FurnaceGUI::doRedo() { DivPattern* p=e->curPat[i.chan].getPattern(i.pat,true); p->data[i.row][i.col]=i.newVal; } - if (!e->isPlaying()) { - cursor=us.cursor; - selStart=us.selStart; - selEnd=us.selEnd; - curNibble=us.nibble; - updateScroll(cursor.y); - setOrder(us.order); + if (us.type!=GUI_UNDO_REPLACE) { + if (!e->isPlaying() || !followPattern) { + cursor=us.cursor; + selStart=us.selStart; + selEnd=us.selEnd; + curNibble=us.nibble; + updateScroll(cursor.y); + setOrder(us.order); + } } break; From d911c8eeabde83b593aeb43f2175de9f6f90e1b4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 02:42:55 -0500 Subject: [PATCH 049/580] GUI: remove pointless comment in find/replace --- src/gui/findReplace.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 10fd1253..f16ccd7a 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -190,11 +190,6 @@ void FurnaceGUI::doFind() { queryViewingResults=true; } -/* issues with the find and replace function: - - can't undo - - replace notes to anything starting from C-0 to lower notes will have an octave higher, so set it to replace to C-0 it will becom C-1, b_1 will become B-0 and so on -*/ - void FurnaceGUI::doReplace() { doFind(); queryViewingResults=false; From 5025c489775867731947fbafb700e39121f7b16e Mon Sep 17 00:00:00 2001 From: Bassian <67491162+Bassian@users.noreply.github.com> Date: Fri, 17 Jun 2022 04:46:10 -0500 Subject: [PATCH 050/580] Add files via upload --- ..._thing_the_Metallix_fear_is_you_Forte....fur | Bin 0 -> 59895 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/The_only_thing_the_Metallix_fear_is_you_Forte....fur diff --git a/demos/The_only_thing_the_Metallix_fear_is_you_Forte....fur b/demos/The_only_thing_the_Metallix_fear_is_you_Forte....fur new file mode 100644 index 0000000000000000000000000000000000000000..123381d8dc27c50307fcc76664ca1fc82d92b8dd GIT binary patch literal 59895 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 literal 0 HcmV?d00001 From 753458f8983ae83e6a32c8bfe2a572ca0043fdfc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 04:51:39 -0500 Subject: [PATCH 051/580] LOL --- src/engine/platform/nes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 50e548ea..67ad2852 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -65,7 +65,7 @@ const char** DivPlatformNES::getRegisterSheet() { const char* DivPlatformNES::getEffectName(unsigned char effect) { switch (effect) { case 0x11: - return "Write to delta modulation counter (0 to 7F)"; + return "11xx: Write to delta modulation counter (0 to 7F)"; break; case 0x12: return "12xx: Set duty cycle/noise mode (pulse: 0 to 3; noise: 0 or 1)"; From ab7c2acd564bec9fb4aa4d6e890de96bfa95f03a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 17 Jun 2022 04:51:45 -0500 Subject: [PATCH 052/580] GUI: try --- src/gui/sampleEdit.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 19fd7596..7264baed 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -765,16 +765,16 @@ void FurnaceGUI::drawSampleEdit() { float highP=sampleFilterH*100.0f; float resP=sampleFilterRes*100.0f; ImGui::Text("Cutoff:"); - if (ImGui::SliderFloat("From",&sampleFilterCutStart,0.0f,sample->rate*0.5,"%.0fHz")) { + if (CWSliderFloat("From",&sampleFilterCutStart,0.0f,sample->rate*0.5,"%.0fHz")) { if (sampleFilterCutStart<0.0) sampleFilterCutStart=0.0; if (sampleFilterCutStart>sample->rate*0.5) sampleFilterCutStart=sample->rate*0.5; } - if (ImGui::SliderFloat("To",&sampleFilterCutEnd,0.0f,sample->rate*0.5,"%.0fHz")) { + if (CWSliderFloat("To",&sampleFilterCutEnd,0.0f,sample->rate*0.5,"%.0fHz")) { if (sampleFilterCutEnd<0.0) sampleFilterCutEnd=0.0; if (sampleFilterCutEnd>sample->rate*0.5) sampleFilterCutEnd=sample->rate*0.5; } ImGui::Separator(); - if (ImGui::SliderFloat("Resonance",&resP,0.0f,99.0f,"%.1f%%")) { + if (CWSliderFloat("Resonance",&resP,0.0f,99.0f,"%.1f%%")) { sampleFilterRes=resP/100.0f; if (sampleFilterRes<0.0f) sampleFilterRes=0.0f; if (sampleFilterRes>0.99f) sampleFilterRes=0.99f; @@ -793,17 +793,17 @@ void FurnaceGUI::drawSampleEdit() { sampleFilterPower=3; } ImGui::Separator(); - if (ImGui::SliderFloat("Low-pass",&lowP,0.0f,100.0f,"%.1f%%")) { + if (CWSliderFloat("Low-pass",&lowP,0.0f,100.0f,"%.1f%%")) { sampleFilterL=lowP/100.0f; if (sampleFilterL<0.0f) sampleFilterL=0.0f; if (sampleFilterL>1.0f) sampleFilterL=1.0f; } - if (ImGui::SliderFloat("Band-pass",&bandP,0.0f,100.0f,"%.1f%%")) { + if (CWSliderFloat("Band-pass",&bandP,0.0f,100.0f,"%.1f%%")) { sampleFilterB=bandP/100.0f; if (sampleFilterB<0.0f) sampleFilterB=0.0f; if (sampleFilterB>1.0f) sampleFilterB=1.0f; } - if (ImGui::SliderFloat("High-pass",&highP,0.0f,100.0f,"%.1f%%")) { + if (CWSliderFloat("High-pass",&highP,0.0f,100.0f,"%.1f%%")) { sampleFilterH=highP/100.0f; if (sampleFilterH<0.0f) sampleFilterH=0.0f; if (sampleFilterH>1.0f) sampleFilterH=1.0f; From 6dc81c7af1f1f5d9c596c334e0d8e08e64f7f36f Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 18 Jun 2022 10:38:48 +0900 Subject: [PATCH 053/580] Pitch correction (again), Fix compatibility issue --- src/engine/platform/sms.cpp | 24 +++++++++++++++--------- src/engine/platform/sms.h | 4 ++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 71e9b0bc..3dc7afc4 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -120,7 +120,7 @@ void DivPlatformSMS::acquire(short* bufL, short* bufR, size_t start, size_t len) void DivPlatformSMS::tick(bool sysTick) { for (int i=0; i<4; i++) { - int CHIP_DIVIDER=toneDivider; + double CHIP_DIVIDER=toneDivider; if (i==3) CHIP_DIVIDER=noiseDivider; chan[i].std.next(); if (chan[i].std.vol.had) { @@ -245,7 +245,7 @@ void DivPlatformSMS::tick(bool sysTick) { } int DivPlatformSMS::dispatch(DivCommand c) { - int CHIP_DIVIDER=toneDivider; + double CHIP_DIVIDER=toneDivider; if (c.chan==3) CHIP_DIVIDER=noiseDivider; switch (c.cmd) { case DIV_CMD_NOTE_ON: @@ -465,8 +465,8 @@ void DivPlatformSMS::setFlags(unsigned int flags) { } resetPhase=!(flags&16); divider=16; - toneDivider=64; - noiseDivider=64; + toneDivider=64.0; + noiseDivider=64.0; if (sn!=NULL) delete sn; switch (flags&0xcc) { default: // Sega @@ -479,11 +479,13 @@ void DivPlatformSMS::setFlags(unsigned int flags) { sn=new sn76489_device(); isRealSN=true; stereo=false; + noiseDivider=60.0; // 64 for match to tone frequency on non-Sega PSG but compatibility break; case 0x08: // TI+Atari - sn=new sn76496_base_device(0x4000, 0x0f35, 0x01, 0x02, true, false, 8, false, true); + sn=new sn76496_base_device(0x4000, 0x0f35, 0x01, 0x02, true, false, 1/*8*/, false, true); isRealSN=true; stereo=false; + noiseDivider=60.0; break; case 0x0c: // Game Gear (not fully emulated yet!) sn=new gamegear_device(); @@ -494,37 +496,41 @@ void DivPlatformSMS::setFlags(unsigned int flags) { sn=new sn76489a_device(); isRealSN=false; // TODO stereo=false; + noiseDivider=60.0; break; case 0x44: // TI SN76496 sn=new sn76496_device(); isRealSN=false; // TODO stereo=false; + noiseDivider=60.0; break; case 0x48: // NCR 8496 sn=new ncr8496_device(); isRealSN=false; stereo=false; + noiseDivider=60.0; break; case 0x4c: // Tandy PSSJ 3-voice sound sn=new pssj3_device(); isRealSN=false; stereo=false; + noiseDivider=60.0; break; case 0x80: // TI SN94624 sn=new sn94624_device(); isRealSN=true; stereo=false; divider=2; - toneDivider=8; - noiseDivider=8; + toneDivider=8.0; + noiseDivider=7.5; break; case 0x84: // TI SN76494 sn=new sn76494_device(); isRealSN=false; // TODO stereo=false; divider=2; - toneDivider=8; - noiseDivider=8; + toneDivider=8.0; + noiseDivider=7.5; break; } rate=chipClock/divider; diff --git a/src/engine/platform/sms.h b/src/engine/platform/sms.h index 589bb9b8..35bb44ba 100644 --- a/src/engine/platform/sms.h +++ b/src/engine/platform/sms.h @@ -62,8 +62,8 @@ class DivPlatformSMS: public DivDispatch { unsigned char oldValue; unsigned char snNoiseMode; int divider=16; - int toneDivider=64; - int noiseDivider=64; + double toneDivider=64.0; + double noiseDivider=64.0; bool updateSNMode; bool resetPhase; bool isRealSN; From 9cad9077738657572588a6815c2b1d69d165d7fb Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 18 Jun 2022 11:07:36 +0900 Subject: [PATCH 054/580] Fix potential register related issue --- src/engine/platform/sms.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 3dc7afc4..0556d2e4 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -52,7 +52,9 @@ void DivPlatformSMS::acquire_nuked(short* bufL, short* bufR, size_t start, size_ for (size_t h=start; hstereo_w(w.val); - else + else if (w.addr==0) { sn->write(w.val); + } writes.pop(); } for (size_t h=start; h Date: Sat, 18 Jun 2022 11:42:14 +0900 Subject: [PATCH 055/580] More presets Dynax/Nakanihon 3rd generation hardware: Naming reference is MAME source (https://github.com/mamedev/mame/blob/master/src/mame/drivers/ddenlovr.cpp), It's sound system combined with AY PSG(optional), OPLL, MSM6295 and mostly used in their mahjong, hanafuda, and something else. Dynax/Nakanihon Real Break: This sound system is used in Billard Academy Real Break (MAME source: https://github.com/mamedev/mame/blob/master/src/mame/drivers/realbrk.cpp), MSM6295 is replaced to YMZ280B but entire music is still drived in OPLL. --- src/gui/presets.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 53ef7d42..46335227 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1859,7 +1859,7 @@ void FurnaceGUI::initSystemPresets() { DIV_SYSTEM_AY8910, 64, 0, 13, 0 } - )); + )); cat.systems.push_back(FurnaceGUISysDef( "Namco (3-channel WSG)", { // Pac-Man, Galaga, Xevious, etc DIV_SYSTEM_NAMCO, 64, 0, 0, @@ -1957,6 +1957,21 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Dynax/Nakanihon 3rd generation hardware", { + DIV_SYSTEM_AY8910, 64, 0, 0, // AY or YM, optional - 1.79MHz or 3.58MHz; various per game + DIV_SYSTEM_OPLL, 64, 0, 0, + DIV_SYSTEM_MSM6295, 64, 0, 6, // 1.023MHz mostly + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Dynax/Nakanihon Real Break", { + DIV_SYSTEM_OPLL, 64, 0, 0, + DIV_SYSTEM_YMZ280B, 64, 0, 0, + 0 + } + )); sysCategories.push_back(cat); cat=FurnaceGUISysCategory("DefleMask-compatible","these configurations are compatible with DefleMask.\nselect this if you need to save as .dmf or work with that program."); From 0e163baffcbb45450e3f5f79aea6e33b3b70ddfa Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 18 Jun 2022 02:00:10 -0500 Subject: [PATCH 056/580] GUI: update credits --- src/gui/about.cpp | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 76fc80ad..1b257af1 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -48,6 +48,7 @@ const char* aboutLine[]={ "-- graphics/UI design --", "tildearrow", "BlastBrothers", + "Mahbod Karamoozian", "Raijin", "", "-- documentation --", @@ -59,18 +60,38 @@ const char* aboutLine[]={ "", "-- demo songs --", "0x5066", + "Abstract 64", "ActualNK358", + "akumanatt", + "AmigaX", + "AURORA*FIELDS", + "BlueElectric05", "breakthetargets", "CaptainMalware", + "DeMOSic", + "DevEd", + "Dippy", + "Forte", + "Fragmare", + "freq-mod", + "iyatemu", "kleeder", + "jaezu", + "Laggy", + "LunaMoth", "Mahbod Karamoozian", + "Miker", "nicco1690", "NikonTeen", "SuperJet Spade", "TheDuccinator", + "theloredev", "TheRealHedgehogSonic", "tildearrow", "Ultraprogramer", + "Weeppiko", + "WitchyValeria", + "ZoomTen (Zumi)", "", "-- additional feedback/fixes --", "fd", @@ -85,7 +106,9 @@ const char* aboutLine[]={ "and Mark Adler", "libsndfile by Erik de Castro Lopo", "Portable File Dialogs by Sam Hocevar", + "Native File Dialog by Frogtoss Games", "RtMidi by Gary P. Scavone", + "backward-cpp by Google", "adpcm by superctr", "Nuked-OPL3/OPLL/OPM/OPN2 by Nuke.YKT", "ymfm by Aaron Giles", @@ -93,21 +116,31 @@ const char* aboutLine[]={ "MAME AY-3-8910 by Couriersud", "with AY8930 fixes by Eulous, cam900 and Grauw", "MAME SAA1099 by Juergen Buchmueller and Manuel Abadia", + "MAME Namco WSG by Nicola Salmoria and Aaron Giles", + "MAME RF5C68 core by Olivier Galibert and Aaron Giles", + "MAME MSM6258 core by Barry Rodewald", + "MAME YMZ280B core by Aaron Giles", "SAASound by Dave Hooper and Simon Owen", "SameBoy by Lior Halphon", "Mednafen PCE and WonderSwan audio cores", "puNES (NES, MMC5 and FDS) by FHorse", + "NSFPlay (NES and FDS) by Brad Smith and Brezza", "reSID by Dag Lem", "Stella by Stella Team", - "QSound emulator by Ian Karlsson and Valley Bell", + "QSound emulator by superctr and Valley Bell", "VICE VIC-20 sound core by Rami Rasanen and viznut", "VERA sound core by Frank van den Hoef", "K005289 emulator by cam900", "Namco 163 emulator by cam900", "Seta X1-010 emulator by cam900", "Konami VRC6 emulator by cam900", + "Konami SCC emulator by cam900", + "MSM6295 emulator by cam900", "", - "greetings to all members of Deflers of Noice!", + "greetings to:", + "Fractal Sound team", + "NEOART Costa Rica", + "all members of Deflers of Noice!", "", "copyright Ā© 2021-2022 tildearrow", "(and contributors).", From af8c6313dfbf942b39cbdba57673ce49f5e0b6c9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 18 Jun 2022 02:01:44 -0500 Subject: [PATCH 057/580] update demo song authors --- demos/AY-3-8910_Jam.fur | Bin 1230 -> 1274 bytes demos/UNATCOPCM.fur | Bin 205937 -> 205943 bytes demos/ecolove.fur | Bin 57851 -> 57812 bytes demos/su_memory.fur | Bin 20139 -> 20220 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/demos/AY-3-8910_Jam.fur b/demos/AY-3-8910_Jam.fur index b249c5bfde36c68fc322ab07c8cc702aa4dfe7b7..dad4f190ef7439917a0b0aff3174700a11e1efd4 100644 GIT binary patch literal 1274 zcmVap$*15JgU5wFLM(%O;zE9 zA*72|5)$=N7nLFA&z15AjIxpx_R^(%0Fwk47RLeU&afy+rA?hw{fSq-+cu1Yzs5G3 zNS5i#w5{#Zbu3Nsou4K@y(g_pR+82S#qs^D)XiF(c}RsXrNJ3mc+dQVE9 zSV>CyeYw{qrB!SlI-=WrU#4wsm#$-Jitqe1`RNbQ?OeO}6@5L<@4#iZXcwKnczsO1 zZ?F#i*;G9t*ZGKE^JPM)yh>a`bgI*Ma+5&oV;BEU^_YpXmp_6lJs>(s2(=n<46$0> zr<1b={V~-;OZv~=_{)S)Plk>mR;vq3E+|g7C81d+)(N2(BI9g8qQ-EHpthdVIeUlS zgzp*o&@cB*@p~%Xo#N>oDsz=6GE>c%99CkGOPQH-p1ave$o9|X8-Fa zf!4<}dhi!lvmwB>LdzQbP!{NsesZ}82WT!Ux5zUeOh%h9{DXF!M+fBC<9i=z9Qd>OB%XIHrgi8ucd>J0S#(01#*n+Q(fS#-C=)_`hbUnf kA~C#!bM_onIeaC8tv9>SIQvE8+w#a4bB|2_15wZEx&`u+YXATM literal 1230 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

$`*X+gux|NcR2ccVn9${QQR;}v73rJc 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 Vum_Qr(aQ8E) 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�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 R0DaNt-{KH~6r&JN_CG!NIpF{R literal 205937 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 z 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

h;rKa6drI_Jh^ zTaW*ey|55PY*D@U4f=j%xswfy+Kkqe7iGMzx&ESAsWg1?G8=X!YQP9U&@c&`Og!yU4Qo$H3Rff$OY~~z;+38*v7}4+7SaP)%sBEr{@!v0`l0b@8sV=rwZwyaKxfKO)FU^Xls`*D0;Mh0P;!%uW}U(Kok?D^ALX zhliO5Ua^D33iIuR_b=vv5A^UWs} zol6(ivYZ&U-E?7bYSw6fj~DFYS7Y4`Y59?!rZ{bj{1c%GrfludRg+0=JO`^+q$(u&#)moFrdq+kgp5{xV9o@8%osw%}e(h0}Qg;}kDp;YP5qtDEa zgrkefcGi@kfX|vFLk&NEQ6sb#PgH3M2>dJ3FGcw$QBfa#*$ zn%VBPLK@7EESqQ(>r|I9)P+FgU6IGCMiaofY`B4axp_Qhc-o=Z7w~>C@x3&XHr>IK zEG{j2@DpYc8$rSt>MMb>dwPgBIxSjNk|U*v$g~$Uy^-p@2(KHsI&MhEq+}Un?LnD} zgT-Hxk~D!&oL|5wUM1k4KBOYL6(=?*GJmDS)Q5|=@YGc&K!-=zwusiU|2<@2fsr-P z;5j)pTJ&J-;gceMehAt?RJn@qA-T~LMG>lkqu8fGw7?Dy{D{fPfJVD>-)xM1JQroe zL{v{4U3yp=d8mSLq`9_>5*ozVcMKg86%BI}r;G&{>O!SU)xVOPR1fYt1^!hJQB9GW zc16eklDjG84%#QNEmYSbp~{u-h8{6wu}PjmDMyN={6L=-z?^X-5o>16dF(p`hwr0| z)l83zeX^|O2k8dPfe#wIi)w;eNR;T|e|iE9L%0>$2OzZjy76wTc#y$v%0A3&c2#j^hH}r^VMuJ4X=PH#Pf@K!f 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

Cxjg17YaHB!$PNrT?lUrcZJ^y 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 ZdPnh+rGu9^S< delta 51163 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 IA9%i+zzGblP5=M^ diff --git a/demos/neon_night_riders_TFMX.fur b/demos/neon_night_riders_TFMX.fur new file mode 100644 index 0000000000000000000000000000000000000000..a15f448922687b0c04126fa55d40ddbd4930aee1 GIT binary patch literal 160437 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

-OcJe!kv4X-v@A0I5J$zg#ARSFrWyV-Ihx(6Fg2 zIwi6;ap(H2j&WNkmIMk$=Zb-4@MuIlgD;hdg(4A$MJLmFQngkk63g=|np!qCm%2W9 z`>iXf!Xk$Gmyf<2p>BNs`P~X4t6=^1ovpX z+M>#ee{Sn~pprbPbLW>JPtgyoj+ls1He0d}drX z*f;JZvdG?vTQ@o^jGX#vIg^NIi;Ej-$|S^eDup9t;vVDD;)*LvW)M?hm(35H9ZzJ4 zRNA64twJJ}L$qwHD-ltEo>P&yxmd#TcYgADcQorB`S{G~^H-fTvh~`x-}a^(jva2H zx~3MXii#>h!aUS7Z>LB(H2=)t@N$&JBP`v$a(l*0=4(_UdX_F!=4piVWB_$VM7_ZH z4HjRT!r^nM#59g2FQ_U}Nf>NJVOe>;go!6{rFj}TA0jK&Kk@15Z|p@?l(A3#`@-*D zGAq#W?T44`qJjdJXR%vHkheA!3Q|U$KFpPfNgnSkIO`z;}mq`$`DBNs+wC%>4w1` zt5`Wox zvvcw!8Ha9h)fGvlLLR3loTaiL82X&PIF2RY(orS?-N6b4Jk(jspyI(X27w?l*i0IM z#1d#5TU*L=sPVP2g@AzL9=h@Ky*WFR799QY+iTM%91Ul`^V^jXN18~8o0fI9w6eTh z%S<@j)ST+pQUN|3p(qMVL@DcV|Jc0MWiu`=n!IUZHW6?+y@W@ocF=mJ6_g(VUx zax}RLAuSya$Kk-UXy_`B!Dch5bdFG|R`N53DJxsSh)(?e%OCgWLkazzAHM&+bJk?h zk6ruy#<(krC#U?@Rab(QmzN`AaV3RKZJX+I*bD|wEacHrfYn?+pVwtK8&S&;a+$$E zAP|aY2{aD6bCt-Dl(m$HZf?138Znd35~(x_2~VW4MRJ9NM`!V*xdjDz;UF-bypFiCiU3OUJ2LHU)H(`!tGcmWt>Z7Vlsw$K`4o_WD-B_6`W^-f! zJz>)le&EEBNYHK7udW$QW~K{E5!L6?gTCwajZ;^PRtryPRr{2%;fBnZf#|DdUo0D^mv_Civ`KK zI0KOsnS;u==uB)-1rkozz}KN%0UBG$<+8CW77~F-$fB7UXz(G0M554Xq)f&@=`p0=J8Zi|OM-n(ZJ`)f7U3Qxl zyQcAbTy{)V#D|1ITrP**YBrdx4kQ_iE|c+OI=Z5hp!X&{=mj$ugvLG#rj$atd@B8R41`5_I;3Vt5A9DaHf8XI zqmc|nsFDg;3?`kJOh9Z&_)JLf6)CD4omiqLjT$$S846ejk41>sj3z5e%LZZ)=Gi=v zLZiu1ViQ>eEK<_%Seu;~o19y-dLmgWU#e8eg-kLblT4+v>4?j`rnfmgPK(82_l437 zkxVXT!os3FDH_^{LqHstiiDFmSWToHra(OdVyOU}DuY2ud-X`Oe8ChVh}4B;W#uJW zF*D^btgILvZkKtsujBUpp|RNooyir!F_3i>^sV3sYVMZ1dEgj7)HBp+@CQ7;}M@}rnkF) zVs?7)`j7v-bZgS&bOTq}JvCW|joX>#Nuq&vlv$V6;98Tk+v zB?1H?#&#kD$t)A40WO^zDL?JzSzi`g20rG#LZj{2MqXCR!Ri`Cjf ztxC!yW??-j@LZu-Do1iU+y{9!iBciqB=sYAZVgQ7OslhlcP?MP)jvBwb@#`wKmO+S zVjxLj(wSUEL4j7rq)<4@g36Zaq8u)ZCz7jV0%|&yrV2G$m5`KhLu~Me!@%v$;FukL zcv&Q01UN~E#_b3s@MDpz5MKa6Jri<3G=Xmj0kt4f*ixm8M@*n`@+qVVk;S8QGfJUy zr8xzK0HWcAQ3gc7LDG5lwVBb8kcw1ED9mkWFp`q)1Y?LOABT(n( z$(YfVvAefA`et+n-PpZ9fBp4Z|IDh@X3OP-@GsjRLjE6h`g zSrmLS1OYdJBf*DB?bwP1XB$6P}7!DJ>QpoSLqvl?u@?=4y zmXKo#K5%*zDg(R!P-=4X^YhT)j2w+x$|Xd7E_X1IA+p5^b&f(v%|tv7FgZLS8;^t& zLuM@l≫4aAoh0*>xoU+7UI9(Kke~rXS`8o^ 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

8oPtwaPQWwi4{DL+(V5#D@e}p)XmwMif`pxQ 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%0Dk$t<&$LQT6%0t}G#;&~ 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 M4Zc9H`O1j?AI$LVc>n+a literal 0 HcmV?d00001 From b66cc81fc6f73dd5ce803e6039a647257704f5a6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 22:33:25 -0500 Subject: [PATCH 099/580] fix loading 24-bit samples --- src/engine/engine.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 12ee7a06..149a5b9f 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2221,8 +2221,14 @@ int DivEngine::addSampleFromFile(const char* path) { buf=new short[si.channels*si.frames]; sampleLen=sizeof(short); } - if (sf_read_raw(f,buf,si.frames*si.channels*sampleLen)!=(si.frames*si.channels*sampleLen)) { - logW("sample read size mismatch!"); + if ((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_PCM_U8 || (si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_FLOAT) { + if (sf_read_raw(f,buf,si.frames*si.channels*sampleLen)!=(si.frames*si.channels*sampleLen)) { + logW("sample read size mismatch!"); + } + } else { + if (sf_read_short(f,(short*)buf,si.frames*si.channels)!=(si.frames*si.channels)) { + logW("sample read size mismatch!"); + } } DivSample* sample=new DivSample; int sampleCount=(int)song.sample.size(); From a717c67f3d17960008cbe9e42418b91369e2cea3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 22:53:21 -0500 Subject: [PATCH 100/580] change IDs of null/dummy audio backends for eventual alternate audio backend support --- src/engine/engine.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 1fa88a91..a7699546 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -60,8 +60,9 @@ enum DivStatusView { enum DivAudioEngines { DIV_AUDIO_JACK=0, DIV_AUDIO_SDL=1, - DIV_AUDIO_NULL=2, - DIV_AUDIO_DUMMY=3 + + DIV_AUDIO_NULL=126, + DIV_AUDIO_DUMMY=127 }; enum DivAudioExportModes { From 951db12e6a28de3987cd731892b71d6689119dbd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 22:59:06 -0500 Subject: [PATCH 101/580] Namco WSG: fix C15/C30 high notes --- src/engine/platform/namcowsg.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/namcowsg.cpp b/src/engine/platform/namcowsg.cpp index 43136d91..6bcf43d2 100644 --- a/src/engine/platform/namcowsg.cpp +++ b/src/engine/platform/namcowsg.cpp @@ -322,7 +322,7 @@ void DivPlatformNamcoWSG::tick(bool sysTick) { } rWrite((i<<3)+0x04,chan[i].freq&0xff); rWrite((i<<3)+0x05,(chan[i].freq>>8)&0xff); - rWrite((i<<3)+0x06,((chan[i].freq>>15)&15)|(i<<4)); + rWrite((i<<3)+0x06,((chan[i].freq>>16)&15)|(i<<4)); } break; case 30: @@ -336,7 +336,7 @@ void DivPlatformNamcoWSG::tick(bool sysTick) { } rWrite((i<<3)+0x103,chan[i].freq&0xff); rWrite((i<<3)+0x102,(chan[i].freq>>8)&0xff); - rWrite((i<<3)+0x101,((chan[i].freq>>15)&15)|(i<<4)); + rWrite((i<<3)+0x101,((chan[i].freq>>16)&15)|(i<<4)); } break; } From ecb6635c507c5d1139640ae8c9959af9f7495817 Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Fri, 24 Jun 2022 13:51:05 +0700 Subject: [PATCH 102/580] Fix typo --- papers/format.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/format.md b/papers/format.md index 013f2c5d..84239b3b 100644 --- a/papers/format.md +++ b/papers/format.md @@ -248,7 +248,7 @@ size | description 4f | A-4 tuning 1 | limit slides (>=36) or reserved 1 | linear pitch (>=36) or reserved - | - 0: non-linaer + | - 0: non-linear | - 1: only pitch change (04xy/E5xx) linear | - 2: full linear (>=94) 1 | loop modality (>=36) or reserved From deffd99503324c7fe308936e017fce9fefba7fd1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 03:11:16 -0500 Subject: [PATCH 103/580] pass filter to NFD - DOES NOT BUILD I am so lazy to adapt the macOS part --- extern/nfd-modified/src/include/nfd.h | 8 ++- extern/nfd-modified/src/nfd_cocoa.mm | 10 +-- extern/nfd-modified/src/nfd_win.cpp | 89 ++++++--------------------- src/gui/fileDialog.cpp | 4 +- 4 files changed, 31 insertions(+), 80 deletions(-) diff --git a/extern/nfd-modified/src/include/nfd.h b/extern/nfd-modified/src/include/nfd.h index 4e4ddcf7..7f630167 100644 --- a/extern/nfd-modified/src/include/nfd.h +++ b/extern/nfd-modified/src/include/nfd.h @@ -12,6 +12,8 @@ #include #include +#include +#include /* denotes UTF-8 char */ typedef char nfdchar_t; @@ -35,19 +37,19 @@ typedef enum { /* nfd_.c */ /* single file open dialog */ -nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, +nfdresult_t NFD_OpenDialog( const std::vector& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback = NULL ); /* multiple file open dialog */ -nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, +nfdresult_t NFD_OpenDialogMultiple( const std::vector& filterList, const nfdchar_t *defaultPath, nfdpathset_t *outPaths, nfdselcallback_t selCallback = NULL ); /* save dialog */ -nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, +nfdresult_t NFD_SaveDialog( const std::vector& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback = NULL ); diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index 8eac6f79..2f08a3a2 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -14,7 +14,7 @@ // // might as well make Objective-Ruswift++... -static NSArray *BuildAllowedFileTypes( const char *filterList ) +static NSArray *BuildAllowedFileTypes( const std::vector& filterList ) { // Commas and semicolons are the same thing on this platform @@ -56,7 +56,7 @@ static NSArray *BuildAllowedFileTypes( const char *filterList ) return returnArray; } -static void AddFilterListToDialog( NSSavePanel *dialog, const char *filterList ) +static void AddFilterListToDialog( NSSavePanel *dialog, const std::vector& filterList ) { if ( !filterList || strlen(filterList) == 0 ) return; @@ -130,7 +130,7 @@ static nfdresult_t AllocPathSet( NSArray *urls, nfdpathset_t *pathset ) /* public */ -nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, +nfdresult_t NFD_OpenDialog( const std::vector& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback ) @@ -173,7 +173,7 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, } -nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, +nfdresult_t NFD_OpenDialogMultiple( const std::vector& filterList, const nfdchar_t *defaultPath, nfdpathset_t *outPaths, nfdselcallback_t selCallback ) @@ -218,7 +218,7 @@ nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, } -nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, +nfdresult_t NFD_SaveDialog( const std::vector& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback ) diff --git a/extern/nfd-modified/src/nfd_win.cpp b/extern/nfd-modified/src/nfd_win.cpp index ea18d72b..2e7f4000 100644 --- a/extern/nfd-modified/src/nfd_win.cpp +++ b/extern/nfd-modified/src/nfd_win.cpp @@ -197,44 +197,19 @@ static void CopyNFDCharToWChar( const nfdchar_t *inStr, wchar_t **outStr ) #endif } - -/* ext is in format "jpg", no wildcards or separators */ -static int AppendExtensionToSpecBuf( const char *ext, char *specBuf, size_t specBufLen ) -{ - const char SEP[] = ";"; - assert( specBufLen > strlen(ext)+3 ); - - if ( strlen(specBuf) > 0 ) - { - strncat( specBuf, SEP, specBufLen - strlen(specBuf) - 1 ); - specBufLen += strlen(SEP); - } - - char extWildcard[NFD_MAX_STRLEN]; - int bytesWritten = sprintf_s( extWildcard, NFD_MAX_STRLEN, "*.%s", ext ); - assert( bytesWritten == (int)(strlen(ext)+2) ); - _NFD_UNUSED(bytesWritten); - - strncat( specBuf, extWildcard, specBufLen - strlen(specBuf) - 1 ); - - return NFD_OKAY; -} - -static nfdresult_t AddFiltersToDialog( ::IFileDialog *fileOpenDialog, const char *filterList ) +static nfdresult_t AddFiltersToDialog( ::IFileDialog *fileOpenDialog, const std::vector& filterList ) { const wchar_t WILDCARD[] = L"*.*"; - if ( !filterList || strlen(filterList) == 0 ) + if (filterList.empty()) return NFD_OKAY; + // list size has to be an even number (name/filter) + if (filterList.size()&1) + return NFD_ERROR; + // Count rows to alloc - UINT filterCount = 1; /* guaranteed to have one filter on a correct, non-empty parse */ - const char *p_filterList; - for ( p_filterList = filterList; *p_filterList; ++p_filterList ) - { - if ( *p_filterList == ';' ) - ++filterCount; - } + UINT filterCount = filterList.size()>>1; /* guaranteed to have one filter on a correct, non-empty parse */ assert(filterCount); if ( !filterCount ) @@ -256,43 +231,17 @@ static nfdresult_t AddFiltersToDialog( ::IFileDialog *fileOpenDialog, const char } size_t specIdx = 0; - p_filterList = filterList; - char typebuf[NFD_MAX_STRLEN] = {0}; /* one per comma or semicolon */ - char *p_typebuf = typebuf; - char specbuf[NFD_MAX_STRLEN] = {0}; /* one per semicolon */ + for (size_t i=0; i& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback ) @@ -558,7 +507,7 @@ end: return nfdResult; } -nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, +nfdresult_t NFD_OpenDialogMultiple( const std::vector& filterList, const nfdchar_t *defaultPath, nfdpathset_t *outPaths, nfdselcallback_t selCallback ) @@ -653,7 +602,7 @@ end: return nfdResult; } -nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, +nfdresult_t NFD_SaveDialog( const std::vector& filterList, const nfdchar_t *defaultPath, nfdchar_t **outPath, nfdselcallback_t selCallback ) diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index 64f9e989..f9d4ac4d 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -30,9 +30,9 @@ void _nfdThread(const NFDState state, std::atomic* ok, String* result) { nfdresult_t ret=NFD_CANCEL; if (state.isSave) { - ret=NFD_SaveDialog(NULL,state.path.c_str(),&out,state.clickCallback); + ret=NFD_SaveDialog(state.filter,state.path.c_str(),&out,state.clickCallback); } else { - ret=NFD_OpenDialog(NULL,state.path.c_str(),&out,state.clickCallback); + ret=NFD_OpenDialog(state.filter,state.path.c_str(),&out,state.clickCallback); } switch (ret) { From 522fecc635db4d28626cae008819ce42f767fb28 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 03:17:40 -0500 Subject: [PATCH 104/580] GUI: gradient whoops --- src/gui/gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 3de09f8e..bc309bc4 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4082,6 +4082,7 @@ bool FurnaceGUI::init() { chanOscColor.w=e->getConfFloat("chanOscColorA",1.0f); chanOscUseGrad=e->getConfBool("chanOscUseGrad",false); chanOscGrad.fromString(e->getConfString("chanOscGrad","")); + chanOscGrad.render(); syncSettings(); From e39a923b23cd1d71c7aca18a671639b8af383e09 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 03:26:00 -0500 Subject: [PATCH 105/580] C64: fix per-channel osc for 6581 --- src/engine/platform/c64.cpp | 7 ++++--- src/engine/platform/sound/c64/sid.cc | 7 +++++++ src/engine/platform/sound/c64/sid.h | 1 + src/engine/platform/sound/c64/voice.h | 7 +++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index 3372c820..a55b5390 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -109,14 +109,15 @@ const char* DivPlatformC64::getEffectName(unsigned char effect) { } void DivPlatformC64::acquire(short* bufL, short* bufR, size_t start, size_t len) { + int dcOff=sid.get_dc(0); for (size_t i=start; i=8) { writeOscBuf=0; - oscBuf[0]->data[oscBuf[0]->needle++]=sid.last_chan_out[0]>>5; - oscBuf[1]->data[oscBuf[1]->needle++]=sid.last_chan_out[1]>>5; - oscBuf[2]->data[oscBuf[2]->needle++]=sid.last_chan_out[2]>>5; + oscBuf[0]->data[oscBuf[0]->needle++]=(sid.last_chan_out[0]-dcOff)>>5; + oscBuf[1]->data[oscBuf[1]->needle++]=(sid.last_chan_out[1]-dcOff)>>5; + oscBuf[2]->data[oscBuf[2]->needle++]=(sid.last_chan_out[2]-dcOff)>>5; } } } diff --git a/src/engine/platform/sound/c64/sid.cc b/src/engine/platform/sound/c64/sid.cc index d6ebbb44..aaed90a5 100644 --- a/src/engine/platform/sound/c64/sid.cc +++ b/src/engine/platform/sound/c64/sid.cc @@ -60,6 +60,13 @@ SID::~SID() delete[] fir; } +// ---------------------------------------------------------------------------- +// Get DC offset of channel. +// ---------------------------------------------------------------------------- +sound_sample SID::get_dc(int ch) { + return voice[ch].getDC(); +} + // ---------------------------------------------------------------------------- // Mute/unmute channel. // ---------------------------------------------------------------------------- diff --git a/src/engine/platform/sound/c64/sid.h b/src/engine/platform/sound/c64/sid.h index f6b39271..e8b0d5c6 100644 --- a/src/engine/platform/sound/c64/sid.h +++ b/src/engine/platform/sound/c64/sid.h @@ -34,6 +34,7 @@ public: sound_sample last_chan_out[3]; + sound_sample get_dc(int ch); void set_is_muted(int ch, bool val); void set_chip_model(chip_model model); void enable_filter(bool enable); diff --git a/src/engine/platform/sound/c64/voice.h b/src/engine/platform/sound/c64/voice.h index d248f32a..85b4fede 100644 --- a/src/engine/platform/sound/c64/voice.h +++ b/src/engine/platform/sound/c64/voice.h @@ -38,6 +38,7 @@ public: // Amplitude modulated waveform output. // Range [-2048*255, 2047*255]. RESID_INLINE sound_sample output(); + RESID_INLINE sound_sample getDC(); protected: WaveformGenerator wave; @@ -72,6 +73,12 @@ sound_sample Voice::output() return (wave.output() - wave_zero)*envelope.output() + voice_DC; } +RESID_INLINE +sound_sample Voice::getDC() +{ + return voice_DC; +} + #endif // RESID_INLINING || defined(__VOICE_CC__) #endif // not __VOICE_H__ From 3366099dbe7c7c6a7db853a8e1ee5cf6b66fbbc0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 13:17:43 -0500 Subject: [PATCH 106/580] can you call C++ methods from Smalltalk --- extern/nfd-modified/src/nfd_cocoa.mm | 46 ++++++++++++---------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index 2f08a3a2..5b5ee4cc 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -22,32 +22,26 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis // NSMutableArray *buildFilterList = NSMutableArray::alloc()->init(); NSMutableArray *buildFilterList = [[NSMutableArray alloc] init]; - char typebuf[NFD_MAX_STRLEN] = {0}; - - size_t filterListLen = strlen(filterList); - char *p_typebuf = typebuf; - for ( size_t i = 0; i < filterListLen+1; ++i ) - { - if ( filterList[i] == ',' || filterList[i] == ';' || filterList[i] == '\0' ) - { - if (filterList[i] != '\0') - ++p_typebuf; - *p_typebuf = '\0'; - - // or this: NSString::stringWithUTF8String(typebuf); - // buildFilterList->addObject(thisType); - // really? did you have to make this mess?! - NSString *thisType = [NSString stringWithUTF8String: typebuf]; - [buildFilterList addObject:thisType]; - p_typebuf = typebuf; - *p_typebuf = '\0'; - } - else - { - *p_typebuf = filterList[i]; - ++p_typebuf; - + String typebuf; + for (std::string& i: filterList) { + typebuf=""; + for (char& j: i) { + if (j==' ' || j==',' || j ==';') { + // or this: NSString::stringWithUTF8String(typebuf); + // buildFilterList->addObject(thisType); + // really? did you have to make this mess?! + NSString *thisType = [NSString stringWithUTF8String: [typebuf c_str]]; + [buildFilterList addObject:thisType]; + typebuf=""; + } else if (j!='.' && j!='*') { + typebuf+=j; } + } + if (!typebuf.empty()) { + // I don't think this will work, but come on... + NSString *thisType = [NSString stringWithUTF8String: [typebuf c_str]]; + [buildFilterList addObject:thisType]; + } } NSArray *returnArray = [NSArray arrayWithArray:buildFilterList]; @@ -58,7 +52,7 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis static void AddFilterListToDialog( NSSavePanel *dialog, const std::vector& filterList ) { - if ( !filterList || strlen(filterList) == 0 ) + if ( filterList.size()&1 ) return; NSArray *allowedFileTypes = BuildAllowedFileTypes( filterList ); From 1ffca9bea22c4c57ea066b363dd2de6e5f07c169 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 13:28:11 -0500 Subject: [PATCH 107/580] can you do the inverse --- extern/nfd-modified/src/nfd_cocoa.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index 5b5ee4cc..cb57e565 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -22,7 +22,7 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis // NSMutableArray *buildFilterList = NSMutableArray::alloc()->init(); NSMutableArray *buildFilterList = [[NSMutableArray alloc] init]; - String typebuf; + std::string typebuf; for (std::string& i: filterList) { typebuf=""; for (char& j: i) { @@ -30,7 +30,7 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis // or this: NSString::stringWithUTF8String(typebuf); // buildFilterList->addObject(thisType); // really? did you have to make this mess?! - NSString *thisType = [NSString stringWithUTF8String: [typebuf c_str]]; + NSString *thisType = NSString::stringWithUTF8String(typebuf.c_str()); [buildFilterList addObject:thisType]; typebuf=""; } else if (j!='.' && j!='*') { @@ -39,7 +39,7 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis } if (!typebuf.empty()) { // I don't think this will work, but come on... - NSString *thisType = [NSString stringWithUTF8String: [typebuf c_str]]; + NSString *thisType = NSString::stringWithUTF8String(typebuf.c_str()); [buildFilterList addObject:thisType]; } } From 01d2971b402189dc834399aa75ed59acc0eaa81b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 13:29:01 -0500 Subject: [PATCH 108/580] oh wait --- extern/nfd-modified/src/nfd_cocoa.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index cb57e565..929bad8d 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -23,9 +23,9 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis NSMutableArray *buildFilterList = [[NSMutableArray alloc] init]; std::string typebuf; - for (std::string& i: filterList) { + for (const std::string& i: filterList) { typebuf=""; - for (char& j: i) { + for (const char& j: i) { if (j==' ' || j==',' || j ==';') { // or this: NSString::stringWithUTF8String(typebuf); // buildFilterList->addObject(thisType); From 0c480a3ea724ec07f4989c25fc990a51dfcb1961 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 13:39:50 -0500 Subject: [PATCH 109/580] go to hell and your stupid mess of C++ with Smalltalk language --- extern/nfd-modified/src/nfd_cocoa.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index 929bad8d..4e0f9e0b 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -30,7 +30,8 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis // or this: NSString::stringWithUTF8String(typebuf); // buildFilterList->addObject(thisType); // really? did you have to make this mess?! - NSString *thisType = NSString::stringWithUTF8String(typebuf.c_str()); + const char* typebufC=typebuf.c_str(); + NSString *thisType = [NSString stringWithUTF8String:typebufC]; [buildFilterList addObject:thisType]; typebuf=""; } else if (j!='.' && j!='*') { @@ -39,7 +40,8 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis } if (!typebuf.empty()) { // I don't think this will work, but come on... - NSString *thisType = NSString::stringWithUTF8String(typebuf.c_str()); + const char* typebufC=typebuf.c_str(); + NSString *thisType = [NSString stringWithUTF8String:typebufC]; [buildFilterList addObject:thisType]; } } From fa29c6c00a298e85eb1defe53bf9dc10d83e3173 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 14:23:57 -0500 Subject: [PATCH 110/580] GUI: update credits --- src/gui/about.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 1b257af1..27e5f611 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -83,6 +83,7 @@ const char* aboutLine[]={ "Miker", "nicco1690", "NikonTeen", + "SnugglyValeria", "SuperJet Spade", "TheDuccinator", "theloredev", @@ -90,7 +91,6 @@ const char* aboutLine[]={ "tildearrow", "Ultraprogramer", "Weeppiko", - "WitchyValeria", "ZoomTen (Zumi)", "", "-- additional feedback/fixes --", From 3811d694dbad88a44583d1f5718a4feda98e0eaa Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 15:27:11 -0500 Subject: [PATCH 111/580] submit initial batch of contest instruments --- instruments/FM/FM_4OP_-_Tenor_Sax.fui | Bin 0 -> 1670 bytes instruments/FM/GEN_weird.fui | Bin 0 -> 1666 bytes instruments/FM/OPNx_BottleBlow.fui | Bin 0 -> 1675 bytes instruments/FM/Octave_Square.fui | Bin 0 -> 1674 bytes instruments/FM/Octave_Square2.fui | Bin 0 -> 1676 bytes instruments/FM/Reverby_Live_Chords.fui | Bin 0 -> 1718 bytes instruments/FM/Square.fui | Bin 0 -> 1667 bytes instruments/FM/bass/4-OP_Vowel_Bass.fui | Bin 0 -> 1743 bytes instruments/FM/bass/4_OP_Funky_Bass.fui | Bin 0 -> 1672 bytes instruments/FM/bass/Bass.fui | Bin 0 -> 1632 bytes instruments/FM/bass/FM_CriminalBass.fui | Bin 0 -> 1673 bytes instruments/FM/bass/Heavy_synth_bass.fui | Bin 0 -> 1677 bytes instruments/FM/bass/House_Bass.fui | Bin 0 -> 1019 bytes instruments/FM/bass/OPNx_FingerBass.fui | Bin 0 -> 1676 bytes instruments/FM/bass/OPNx_PickBass.fui | Bin 0 -> 1674 bytes instruments/FM/bass/OPZ-Fake_Famicom_Tri.fui | Bin 0 -> 1673 bytes instruments/FM/bass/PickMD.fui | Bin 0 -> 1668 bytes instruments/FM/bass/bass1.fui | Bin 0 -> 1665 bytes instruments/FM/bass/bass2.fui | Bin 0 -> 1667 bytes instruments/FM/bass/bass3.fui | Bin 0 -> 1667 bytes instruments/FM/bass/bass4.fui | Bin 0 -> 1667 bytes instruments/FM/bass/bass5.fui | Bin 0 -> 1667 bytes instruments/FM/bass/bass6.fui | Bin 0 -> 1667 bytes instruments/FM/bass/opm_nestri.fui | Bin 0 -> 1683 bytes instruments/FM/bass/tarylbass1.fui | Bin 0 -> 1665 bytes instruments/FM/drums/Drum.fui | Bin 0 -> 1632 bytes instruments/FM/drums/fmbigkick.fui | Bin 0 -> 1640 bytes instruments/FM/drums/fmclap.fui | Bin 0 -> 1649 bytes instruments/FM/drums/fmclap2.fui | Bin 0 -> 1655 bytes instruments/FM/drums/fmhat.fui | Bin 0 -> 1640 bytes instruments/FM/drums/fmopenhat.fui | Bin 0 -> 1640 bytes .../FM/drums/idk_something_percussion.fui | Bin 0 -> 1693 bytes instruments/FM/drums/powersnare.fui | Bin 0 -> 1625 bytes instruments/FM/drums/snareclap_G-2.fui | Bin 0 -> 1455 bytes instruments/FM/growl.fui | Bin 0 -> 1666 bytes instruments/FM/guitar/OPNx_ElectricGuitar.fui | Bin 0 -> 1680 bytes instruments/FM/guitar/YM2151_DistGuitar.fui | Bin 0 -> 1673 bytes instruments/FM/horn/GEN_Tuba.fui | Bin 0 -> 1673 bytes instruments/FM/horn/OPNx_SynthBrass.fui | Bin 0 -> 1676 bytes instruments/FM/keys/ElisOrgan.fui | Bin 0 -> 1638 bytes instruments/FM/keys/OPNx_Piano.fui | Bin 0 -> 1671 bytes instruments/FM/keys/PianoMD.fui | Bin 0 -> 1667 bytes instruments/FM/keys/YM2151_E-PIANO.fui | Bin 0 -> 1446 bytes instruments/FM/keys/fmpiano.fui | Bin 0 -> 1673 bytes instruments/FM/percussion/BellMD.fui | Bin 0 -> 1665 bytes instruments/FM/percussion/ChurchBell.fui | Bin 0 -> 1639 bytes instruments/FM/percussion/Marimba.fui | Bin 0 -> 1673 bytes instruments/FM/percussion/MusicBox.fui | Bin 0 -> 1673 bytes instruments/FM/percussion/OPN_-_Music_Box.fui | Bin 0 -> 1670 bytes instruments/FM/percussion/Rainbow_Bell.fui | Bin 0 -> 1621 bytes instruments/FM/percussion/octave_8_bell.fui | Bin 0 -> 1677 bytes instruments/FM/powerchord.fui | Bin 0 -> 1673 bytes instruments/FM/strings/OPNx_5thsPad.fui | Bin 0 -> 1673 bytes instruments/FM/strings/OPNx_String.fui | Bin 0 -> 1672 bytes instruments/FM/strings/Violin.fui | Bin 0 -> 1667 bytes instruments/FM/strings/ViolinMD.fui | Bin 0 -> 1666 bytes instruments/OPL/OPL1_Ride_Closed.fui | Bin 0 -> 1672 bytes instruments/OPL/OPL3-FakeFalcomGuitar.fui | Bin 0 -> 1684 bytes instruments/OPL/OPL3-MajorSquare.fui | Bin 0 -> 1679 bytes instruments/OPL/OPL3.zip | Bin 0 -> 4131 bytes instruments/OPL/OPL3_-_C64_like_sqr_snare.fui | Bin 0 -> 1704 bytes instruments/OPL/OPL3_-_PWM_Lead.fui | Bin 0 -> 1734 bytes instruments/OPL/OPL3_C64_Kick_or_Snare_Start.fui | Bin 0 -> 1690 bytes instruments/OPL/OPL3_C64_Snare_Carry.fui | Bin 0 -> 1683 bytes instruments/OPL/OPL3_Slap_Bass.fui | Bin 0 -> 1673 bytes instruments/OPL/OPL_horn.fui | Bin 0 -> 1665 bytes instruments/OPL/opl3_4op_bass_1.fui | Bin 0 -> 1667 bytes instruments/OPL/opl3_4op_bass_2.fui | Bin 0 -> 1667 bytes instruments/OPL/opl3_4op_bass_3.fui | Bin 0 -> 1667 bytes instruments/OPL/opl3_4op_drum_kick.fui | Bin 0 -> 1822 bytes instruments/OPL/opl3_4op_drum_power_snare.fui | Bin 0 -> 1681 bytes instruments/OPL/opl3_4op_drum_snare.fui | Bin 0 -> 1823 bytes instruments/OPL/opl3_4op_drum_tom.fui | Bin 0 -> 1821 bytes instruments/OPL/opl3_4op_growl_synth.fui | Bin 0 -> 1672 bytes instruments/OPL/opl3_4op_lead_guitar.fui | Bin 0 -> 1672 bytes instruments/OPL/opl3_4op_piano_bell.fui | Bin 0 -> 1671 bytes instruments/OPL/opl3_4op_rhythm_guitar_1.fui | Bin 0 -> 1676 bytes instruments/OPL/opl3_4op_rhythm_guitar_2.fui | Bin 0 -> 1676 bytes instruments/OPL/opl3_4op_strings.fui | Bin 0 -> 1668 bytes instruments/other/C64_Snare.fui | Bin 0 -> 1706 bytes instruments/other/Castanets.fui | Bin 0 -> 1671 bytes instruments/other/Closed_Hi-hat.fui | Bin 0 -> 1671 bytes ...osejapaneseguitarsidkhowtheyarecalledyeah.fui | Bin 0 -> 1752 bytes .../FDS-overfuckingholyshitdriven-guitar.fui | Bin 0 -> 1969 bytes instruments/other/FDS-slapassbass.fui | Bin 0 -> 1677 bytes instruments/other/GBkick.fui | Bin 0 -> 1759 bytes instruments/other/GBsnare.fui | Bin 0 -> 1760 bytes instruments/other/Gunshot.fui | Bin 0 -> 1671 bytes instruments/other/NES_0-2-5_arp_lead.fui | Bin 0 -> 1807 bytes instruments/other/NES_0-3-5_arp_lead.fui | Bin 0 -> 1807 bytes instruments/other/Open_Hi-hat.fui | Bin 0 -> 1671 bytes instruments/other/SMS_0-2-5_arp_lead.fui | Bin 0 -> 1803 bytes instruments/other/SMS_0-3-5_arp_lead.fui | Bin 0 -> 1803 bytes instruments/other/Side_Stick.fui | Bin 0 -> 1671 bytes instruments/other/Supersaw.fui | Bin 0 -> 1669 bytes instruments/other/VERA_0-2-5_arp_lead.fui | Bin 0 -> 1699 bytes instruments/other/VERA_0-3-5_arp_lead.fui | Bin 0 -> 1699 bytes instruments/other/VERA_Noise_Kick.fui | Bin 0 -> 1685 bytes instruments/other/VERA_Noise_Snare.fui | Bin 0 -> 1698 bytes instruments/other/VIC20_kick.fui | Bin 0 -> 1705 bytes 100 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/FM/FM_4OP_-_Tenor_Sax.fui create mode 100644 instruments/FM/GEN_weird.fui create mode 100644 instruments/FM/OPNx_BottleBlow.fui create mode 100644 instruments/FM/Octave_Square.fui create mode 100644 instruments/FM/Octave_Square2.fui create mode 100644 instruments/FM/Reverby_Live_Chords.fui create mode 100644 instruments/FM/Square.fui create mode 100644 instruments/FM/bass/4-OP_Vowel_Bass.fui create mode 100644 instruments/FM/bass/4_OP_Funky_Bass.fui create mode 100644 instruments/FM/bass/Bass.fui create mode 100644 instruments/FM/bass/FM_CriminalBass.fui create mode 100644 instruments/FM/bass/Heavy_synth_bass.fui create mode 100644 instruments/FM/bass/House_Bass.fui create mode 100644 instruments/FM/bass/OPNx_FingerBass.fui create mode 100644 instruments/FM/bass/OPNx_PickBass.fui create mode 100644 instruments/FM/bass/OPZ-Fake_Famicom_Tri.fui create mode 100644 instruments/FM/bass/PickMD.fui create mode 100644 instruments/FM/bass/bass1.fui create mode 100644 instruments/FM/bass/bass2.fui create mode 100644 instruments/FM/bass/bass3.fui create mode 100644 instruments/FM/bass/bass4.fui create mode 100644 instruments/FM/bass/bass5.fui create mode 100644 instruments/FM/bass/bass6.fui create mode 100644 instruments/FM/bass/opm_nestri.fui create mode 100644 instruments/FM/bass/tarylbass1.fui create mode 100644 instruments/FM/drums/Drum.fui create mode 100644 instruments/FM/drums/fmbigkick.fui create mode 100644 instruments/FM/drums/fmclap.fui create mode 100644 instruments/FM/drums/fmclap2.fui create mode 100644 instruments/FM/drums/fmhat.fui create mode 100644 instruments/FM/drums/fmopenhat.fui create mode 100644 instruments/FM/drums/idk_something_percussion.fui create mode 100644 instruments/FM/drums/powersnare.fui create mode 100644 instruments/FM/drums/snareclap_G-2.fui create mode 100644 instruments/FM/growl.fui create mode 100644 instruments/FM/guitar/OPNx_ElectricGuitar.fui create mode 100644 instruments/FM/guitar/YM2151_DistGuitar.fui create mode 100644 instruments/FM/horn/GEN_Tuba.fui create mode 100644 instruments/FM/horn/OPNx_SynthBrass.fui create mode 100644 instruments/FM/keys/ElisOrgan.fui create mode 100644 instruments/FM/keys/OPNx_Piano.fui create mode 100644 instruments/FM/keys/PianoMD.fui create mode 100644 instruments/FM/keys/YM2151_E-PIANO.fui create mode 100644 instruments/FM/keys/fmpiano.fui create mode 100644 instruments/FM/percussion/BellMD.fui create mode 100644 instruments/FM/percussion/ChurchBell.fui create mode 100644 instruments/FM/percussion/Marimba.fui create mode 100644 instruments/FM/percussion/MusicBox.fui create mode 100644 instruments/FM/percussion/OPN_-_Music_Box.fui create mode 100644 instruments/FM/percussion/Rainbow_Bell.fui create mode 100644 instruments/FM/percussion/octave_8_bell.fui create mode 100644 instruments/FM/powerchord.fui create mode 100644 instruments/FM/strings/OPNx_5thsPad.fui create mode 100644 instruments/FM/strings/OPNx_String.fui create mode 100644 instruments/FM/strings/Violin.fui create mode 100644 instruments/FM/strings/ViolinMD.fui create mode 100644 instruments/OPL/OPL1_Ride_Closed.fui create mode 100644 instruments/OPL/OPL3-FakeFalcomGuitar.fui create mode 100644 instruments/OPL/OPL3-MajorSquare.fui create mode 100644 instruments/OPL/OPL3.zip create mode 100644 instruments/OPL/OPL3_-_C64_like_sqr_snare.fui create mode 100644 instruments/OPL/OPL3_-_PWM_Lead.fui create mode 100644 instruments/OPL/OPL3_C64_Kick_or_Snare_Start.fui create mode 100644 instruments/OPL/OPL3_C64_Snare_Carry.fui create mode 100644 instruments/OPL/OPL3_Slap_Bass.fui create mode 100644 instruments/OPL/OPL_horn.fui create mode 100644 instruments/OPL/opl3_4op_bass_1.fui create mode 100644 instruments/OPL/opl3_4op_bass_2.fui create mode 100644 instruments/OPL/opl3_4op_bass_3.fui create mode 100644 instruments/OPL/opl3_4op_drum_kick.fui create mode 100644 instruments/OPL/opl3_4op_drum_power_snare.fui create mode 100644 instruments/OPL/opl3_4op_drum_snare.fui create mode 100644 instruments/OPL/opl3_4op_drum_tom.fui create mode 100644 instruments/OPL/opl3_4op_growl_synth.fui create mode 100644 instruments/OPL/opl3_4op_lead_guitar.fui create mode 100644 instruments/OPL/opl3_4op_piano_bell.fui create mode 100644 instruments/OPL/opl3_4op_rhythm_guitar_1.fui create mode 100644 instruments/OPL/opl3_4op_rhythm_guitar_2.fui create mode 100644 instruments/OPL/opl3_4op_strings.fui create mode 100644 instruments/other/C64_Snare.fui create mode 100644 instruments/other/Castanets.fui create mode 100644 instruments/other/Closed_Hi-hat.fui create mode 100644 instruments/other/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui create mode 100644 instruments/other/FDS-overfuckingholyshitdriven-guitar.fui create mode 100644 instruments/other/FDS-slapassbass.fui create mode 100644 instruments/other/GBkick.fui create mode 100644 instruments/other/GBsnare.fui create mode 100644 instruments/other/Gunshot.fui create mode 100644 instruments/other/NES_0-2-5_arp_lead.fui create mode 100644 instruments/other/NES_0-3-5_arp_lead.fui create mode 100644 instruments/other/Open_Hi-hat.fui create mode 100644 instruments/other/SMS_0-2-5_arp_lead.fui create mode 100644 instruments/other/SMS_0-3-5_arp_lead.fui create mode 100644 instruments/other/Side_Stick.fui create mode 100644 instruments/other/Supersaw.fui create mode 100644 instruments/other/VERA_0-2-5_arp_lead.fui create mode 100644 instruments/other/VERA_0-3-5_arp_lead.fui create mode 100644 instruments/other/VERA_Noise_Kick.fui create mode 100644 instruments/other/VERA_Noise_Snare.fui create mode 100644 instruments/other/VIC20_kick.fui diff --git a/instruments/FM/FM_4OP_-_Tenor_Sax.fui b/instruments/FM/FM_4OP_-_Tenor_Sax.fui new file mode 100644 index 0000000000000000000000000000000000000000..be9f5eeb5dd52bcea0ddf70efe09d3056b58afd9 GIT binary patch literal 1670 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpLQ?bcixh$rD;SvA85o#A z!a@uT{QNQu49xN%9wv}yVC3fp$}wX~fki|?`bF^RXW-`qs>ESFKLe8k&|wS=98e6T zkN^%xA*n!O{wDyCl){_YeRaOV?Br literal 0 HcmV?d00001 diff --git a/instruments/FM/GEN_weird.fui b/instruments/FM/GEN_weird.fui new file mode 100644 index 0000000000000000000000000000000000000000..1e5bc1cdf24ae2c1d657991fe22fd2d56d186d2e GIT binary patch literal 1666 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp%2P9oQW%(77#Ns9LYy4j z%={`0%&Z^|7Qn~C#KVHD!!{kTp uK@9;|xB$yw)&SN6j0_-Y1_hi&BwRhJF{Jb029d?UTM+T{GcbTKE&u=~KrT4| literal 0 HcmV?d00001 diff --git a/instruments/FM/OPNx_BottleBlow.fui b/instruments/FM/OPNx_BottleBlow.fui new file mode 100644 index 0000000000000000000000000000000000000000..d4923ccf2cae825bab7f5ef9347393cbda0faaf4 GIT binary patch literal 1675 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpg1v&{o$^aca#Edg^2-@m z*cljDKyreDOq@(o3=GUbHQ0c>C=(}xE=V3bkmqCMWZ=QApO*_L&yQ0-KLe8k*k%r( z@gR%}^l9|?A$`+2zYF;gI_2&Mi< xH4Qg!)E?9jK!lV6YXIv3Mh1{Hg95G+6rmi|7}9wNlgMG=Er|GmMK}oK0su5)HVi@rB3l0IXlNlHp{F6%(%Tg7B3riD=QW;p- z85o#AQu6XF3=C2X3_w0sATQ6s2r?6=JU0^yKL=K=U_p6q7JTyj3``C{$1yN~jKDNT z9w}GYDM^$SLFkbh8NYA@-1GBO$ZVBccl literal 0 HcmV?d00001 diff --git a/instruments/FM/Octave_Square2.fui b/instruments/FM/Octave_Square2.fui new file mode 100644 index 0000000000000000000000000000000000000000..f6fcea32de7386ea8a106b4014dbf48865ccb1ed GIT binary patch literal 1676 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp{F6%(%Tg7B3riD=QWcCC zSlAgDm_U;9@*E5dQVa}0K2{(v&jL0Tr#v?c3qLPbtzbcUZYCCfpcOa(KLe8k(0L3D zASIZ}>`5xz>pn0xWnB3&p*>-TUmt;H$Bb=A+JfA zq@g6*mwA?4QgzMlMZS&_0E$E-KAg_X69~i{Qr^<6P}>dQ0uy$HzURml;PJtN&=q1% z@tyveaOKi+u`z{#2xL{s8Y3~;QFDOb2q^=h!7EB_cj8H4CuC5~&gHQRj|6k{Q0(vfh@{Zm^R7(rW ish4u=wX*kA!%ljYIFz}2EnCYPMxDhlwNy%gr3){%e)HVi@rB3l0IXlNlHpf(uI%i&7a_*clj@Kw|Rp zEDQ`%3=BX%Rv^#9$jDvKz`%-C7O0<_iG?4B97tH6laZ4js2>O5XJB#wx{85;1B!tZ z5|Bq?6J-7;0I(T=t_9>2asj$og!mA9$g`1<+34~k!7g+^4|hJHbV{lJ37HR*AGHTH s1YqF;EQDDDSPw8VfTS4|m=WSQSg6L3&ck6Wk-~TjB7R^Q55l+r0Q%Z5fB*mh literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/4-OP_Vowel_Bass.fui b/instruments/FM/bass/4-OP_Vowel_Bass.fui new file mode 100644 index 0000000000000000000000000000000000000000..b45a50b12c0f5cd4bf1d844c1429b63c3520d833 GIT binary patch literal 1743 zcmeHIO-sW-5PkV-($9rn6*@QTAs)mZARdGsv;oC?NEaW!~G_Y}oMfIZxw6(mE~5{3J{O5RV3n>zmsuPGI3ITt;-4y~szph>L>ea|MmYk2|t zoI3!5kHL>m;Og#pGeD)(E~%EXFWOqBdF`{Gqe;8X>%6E#vu!QYoF%!b-|g#wMOD7_ z@@p?4CX?}aG#U;EgML2RsCPinLh1LdpGGf{J+oc4mA4$kQaHc e*5+V>oNZnc?aF+ArjhNK{_=)HVi@rB3l0IXlNlHp+)DGZD;1Iwi;EQ)7+AoF zfkB>wi;YQ?ftigFrUjLj=VD}I5@%pyW_YeR zaOY#DKvWS*{f}xIZr-Rps3Cv|DFxO5)&q literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Bass.fui b/instruments/FM/bass/Bass.fui new file mode 100644 index 0000000000000000000000000000000000000000..147b43e76a3a8c633a3381b73fc68d457dd04757 GIT binary patch literal 1632 zcmdOOD=o@POioqE%quP_($fuLU|>)HVi@rB3kC@>gfK8NI3*SrGcd6+FtUI|#5fuF z8I&0q*gzaCK$4S*pFs)HVi@rB3l0IXlNlHpJV8oIb5rw56bu*`*clj@ zKr&)NJiLt342;ZdARZ===V#z#=3!s}VQfHBn2Co=5vZRVn=Au^JSPJuKNABJGj?fy z1||of+ZY%)pcqIY0eK`gLFRt~0Gk2mT0l-A7oeL(h!3%cJR1p_jV?bD>_YeRaOV?B zr)HVi@rB3l0IXlNp2=JW>t|!+ z)HVi@rB3l0IXO&J&&Jn~D6Qx%*Ni;Ec;*cljD zK;mM2jQmUr42*0b4i+HK#=y@l!@$JMfkhH1BqhMe&mjVo=f^G&*3X4gKR*ML1JGp* u3?SoiSOJtF3j8Mkuo;4`1>_WR0lHa)_z-)@vyqV5=<*}ME_6Q+cRm2%bL%+( literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/OPNx_FingerBass.fui b/instruments/FM/bass/OPNx_FingerBass.fui new file mode 100644 index 0000000000000000000000000000000000000000..a9f71261984b703623d66cd34b5bb6df56af2904 GIT binary patch literal 1676 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp`~&6^5{ru& znAsT^SU{5U!mOZ;QAg7QE(9I&mhuA}&jfBibmmdjsq5FBb^9iL>O8rmBe3<;GJ*Xi7 q3m0H%%o@OYfRO)HVi@rB3l0IXlNlHpg1v&{12U7dof3rNx>s>;Q}m+Sp!%PFfxFo85D4ofC$xKb*M&>#zQiS3?|-!h#y#ngD@@t0I)HVi@rB3l0IXlNp2=JV8oIb5rw56bu-c*%=s^ zKr-?ST>Sis3=GU54hS$pC>RNr_aGo|i%*_`pC4!w4)ggLm>j@XasVv^VN@WG%Eiz7 zPXJ)kjjjdF_t>=H6hk+Q5FcU?c{UO<8(n@R*oE%r;m*gI5TO#3`k#>bF!@n?P(uI~ sF2JIgHGuU1BLhg9K>=O@BIMCnsK$`aLo<#t<8 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/PickMD.fui b/instruments/FM/bass/PickMD.fui new file mode 100644 index 0000000000000000000000000000000000000000..094c805a103baf70d49d1f4d59dc2cd4624901c3 GIT binary patch literal 1668 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpf-Cc!5{ru&7}yyYm_UMZ ze5`C7Vhl`d93UPhkYizB47}9w-j3rVSZ$ZS*&%gk}xBvjb4KEu2 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass1.fui b/instruments/FM/bass/bass1.fui new file mode 100644 index 0000000000000000000000000000000000000000..e4b6c127c1957b0c7e9ce76dc32481d921f65dc5 GIT binary patch literal 1665 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoDz$RflMYK1Oj)HVi@rB3l0IXlNlHpoDz$R6^s}dSeO`?Kw|P7 z%*_1CKt70r1&FaQGIFajFfe100}1hRGqLb%Gcd5>kQe7<;^YU~#EM;>pMl8%=qd&V z4k!jvNI)KmO_2GY0KjGdx)zXA$OY(T5#mGaACuBZM we$*b+5P*dXun=YqU_HRd0Fq`)HVi@rB3l0IXlNlHpoDz$R6^wx#CLja?c~%x? zelZ3HRuBgZkmq4!VU;ByuZ%?_R7jqSiGv?(6IM0+3``C{S1~YfKrxU)0`f>~g3SK} z05${AwSb&LEc{UO<8(n@R*oE%r;m#+NPAT<2A@gDKqxPVN04!X9g)nOX k>j6dvkTin=GeR5(3)L9Xc{q$EQW$SR#Lv&b0K&Kc06nEH6aWAK literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass4.fui b/instruments/FM/bass/bass4.fui new file mode 100644 index 0000000000000000000000000000000000000000..ff36a2dc070221579ce1ade33d26d4146ec48041 GIT binary patch literal 1667 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoDz$R6-*cySeO`?Kw|P7 z%*_1CKt70r1xT|nGIFajFfe100|`lUGqLb%Gcd5>lILXN)HVi@rB3l0IXlNlHpoDz$R6-*fzSeO`?Kw|P7 z%uM`pKt70r1xT|nGIImvnX$-$grvEdnE6#07}#*hb272<18ri(F3-=v)HVi@rB3l0IXlNlHpoDz$R6^s}d*qIoZKw@$n z%*_0%3=AwF4i+HI!pO+2#K6FeMGhn+!_CCPug<{0hC^P8lZlfbXcH@Td42{a2cWAM z7&xF9NFf1vBsM|je*yrT0q9ylP9Ybdn?;BZv4=bx37L&9KN9Rh_w#V)6H2F)`k#>b yF!@n?P(uI~F2F*VHGuU1BLhg9K>=3@icpSf4Cy?CN#wBb7DW8~3=ANQ3jhEDRxUIE literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/opm_nestri.fui b/instruments/FM/bass/opm_nestri.fui new file mode 100644 index 0000000000000000000000000000000000000000..2b0ac741413adf308774a85b26ce90dc82fdcc3a GIT binary patch literal 1683 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp%2JCef$9>IlS_*dOHvi` zQh{1B85r0Z7??n6#^A{|T87 xlOMGQH3VSc0xXnS16U6*GJvER6qpg>I9RC0kj}$lERn)^3nG4CAr8X0002yyH532< literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/tarylbass1.fui b/instruments/FM/bass/tarylbass1.fui new file mode 100644 index 0000000000000000000000000000000000000000..f3b5921310daddb730c3a5ec69667a0ef0e097cf GIT binary patch literal 1665 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoDz$RflMYK1Oj66IM0+3``C{H!(19KrxU)0`f>~g3SK} z05${AwSb&LEc{UO<8(n@R*oE%r;m#+NPAT<2A@gDKqxPVN04!X9MKEgs k>j6dvkTin=GeR5(3)L9Xc{q$EQW$SR#Lv&b0K&Kc0CsRK&j0`b literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/Drum.fui b/instruments/FM/drums/Drum.fui new file mode 100644 index 0000000000000000000000000000000000000000..fdc6b4fdd8dd879eda3e2b0d247cf68214e34b51 GIT binary patch literal 1632 zcmdOOD=o@POioqE%quP_($fuLU|>)HVi@rB3kC@>gfK8NxD=J)HVi@rB3l0IXBN!MNJV8oIb5rw56pR^ISs56Z zKr-?o{QQg@3=Hh@ARZ===VIdE2MV)eN`Xb>xfnV5h4IL90_E#*%JVZYIRM?pzyNdt z7y~IJfWuKpDv+4}2>>Lea3;DIkW8>8h~r?P8bdk{hp|Ko<12^&nmsWd literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/fmclap.fui b/instruments/FM/drums/fmclap.fui new file mode 100644 index 0000000000000000000000000000000000000000..be58200163ede9fe8b54491277deb7c9c7df5281 GIT binary patch literal 1649 zcmdOOD=o@POioqE%quP_($kG#U|>)HVi@rB3l0IXBN!MN(sGk?5(^j@*clj@Kw|PB zLXa6mVg>RH91Q%@K&4=Xm`dbD z-Q9%v$o{G?sVAg-xXBYrsFeDbkohqAQF~BB02VI5GMP1i^#CKdd}2_*mFf}7QH>#; MhcJm87QV6w02EFy-v9sr literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/fmclap2.fui b/instruments/FM/drums/fmclap2.fui new file mode 100644 index 0000000000000000000000000000000000000000..5b399793d87124c4257bdfc836f4506483e87b5c GIT binary patch literal 1655 zcmdOOD=o@POioqE%quP_($kG#U|>)HVi@rB3l0IXBN!MNJV8oIb5rw56igVH*%=s^ zKr-?SO#J*DObo0b4i+HKz`)Nh#!Nt-5sOZUkUT#S;FM+HXJB#wx{ZN>1B!tZ5&+tc z0L%y`R@Q$40HmoNh)bX}h>r}=wd3{_vM%gwbh8NYA*PULBO$ZV<%zKiS6HK)MTk#~ zUD!jAfq{_O=<>*R#iiw-OAmKGu3&_TQ|f=1IfUp@dr(6F5nc+c0jviY!ReYo0ap$~ RC`UDhbRNPaa#;AvA^;NmGcy1H literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/fmhat.fui b/instruments/FM/drums/fmhat.fui new file mode 100644 index 0000000000000000000000000000000000000000..f26b7fe46b16032608136b728c8ea572334e4296 GIT binary patch literal 1640 zcmdOOD=o@POioqE%quP_($kG#U|>)HVi@rB3l0IXBN!MNJV8oIb5rw56igTx*clj@ zKr-?S4E+2I%nYm`4i*5Gmmnao%7{fLL`YtkA80;Kz|X+s0CXDz0|yiXDI@^2op|t{ z0KjGvx)$6X!KNEk4Bae3e28xHY$Rkhy8KA63*FDdosXLOFnN^vAJataBBS=8h5#az g6j%dT4=^%-q!|>L5#l&lsK$`a!(l9u!uSdz0B=PwlmGw# literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/fmopenhat.fui b/instruments/FM/drums/fmopenhat.fui new file mode 100644 index 0000000000000000000000000000000000000000..a5198fc0304c333efb39005bbd339b8eb50f14e5 GIT binary patch literal 1640 zcmdOOD=o@POioqE%quP_($kG#U|>)HVi@rB3l0IXBN!MNJV8oIb5rw56igTx*clj@ zKr-?S4E+2I%nYm`4i*5Gmmnao%7{fLL`YtMpPvoHdU`OH literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/idk_something_percussion.fui b/instruments/FM/drums/idk_something_percussion.fui new file mode 100644 index 0000000000000000000000000000000000000000..13380460a9c6b2c104a9bb4b58a5a4383d1a067e GIT binary patch literal 1693 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpg7b4zOENO^(iPJ3ixdh{ zi;_!=i!<}{6iSOz85md?7??mR<;7W<`Ar!ZSV0^tKwgxIky{s!yfh;VKNfv3AqhT4 zPJXaWFcB1*pMl8%=vD>>4k!jvNI)Kmjll$ILk9oR07wp52*ke$6adl409g%)4Kf$q zY-IKL*yv^v;zP_L&o)A4qsxy3yU_hS-1+#@B1n!>{}VDFCO>KqY6!r>1z0?@2CyDr k1V;pe0y9D!2Mg60(s?+HB~lo4U|>)HVi@rB3l0IX{TUb;JV8oIb5rw56igTxSQr?X zKr-?S4E+2+CM$@81wiDPam(|9^fO}72@#U#1IgnAK&u_Vx;cPKK$rsXp8&vSG`bet z9zo~^1|3#_ZWbXv#1LX^#I%l(+351a*e+lILc*{I9RC0kj}$lERn+S!UzD}Rx#cH literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/snareclap_G-2.fui b/instruments/FM/drums/snareclap_G-2.fui new file mode 100644 index 0000000000000000000000000000000000000000..8455de32469e402fd64a7e1a7ec6ff66ee3df9c5 GIT binary patch literal 1455 zcmdOOD=o@POioqE%quP_($n=|U|>)HVi@rB3l0IXJs21nit`eSQj>EM3mBN$85o#A z!tx9Z{QLsU46Hx~HXzRhlotak#U&5Y4>TI5JRd7io`HcKyMBHKCI^si1`a3&QuqKf z9?Abe0P+)v#s*+oe*-0XU>qbGT@NE8$YJCGbh8NYA-0fbA0e~R)HVi@rB3l0IXlNlHp+>7$da~PO_JP>AJ=3r&! zuV-Lj1#z$d78XWkZUNl#91M&s{9;%%LWQ_kf%0IRu&Uu_U~&LDih+Rxih&dokVj$@ zWd0`ruo-}^1>_WR0lHa)_z-)@vyqV5=<*}ME_6Q+cRrzXN~!+|nGcg6wFfl>VBrER ngINPu4=^%-q!|>L5#l&lsK$`a!(l9u!gvcJetrf95XJ=nv(PRi literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/OPNx_ElectricGuitar.fui b/instruments/FM/guitar/OPNx_ElectricGuitar.fui new file mode 100644 index 0000000000000000000000000000000000000000..8916da6757f06fee1c5b8bc873724ae19962ca31 GIT binary patch literal 1680 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp`~&3=GWjARZ==X9Ftb1(V2R8cz)HVi@rB3l0IX;}{qjJV8oIb5rw56bu*`SQr?X zKr#{>49pBN3=FIw4i+HA!pO)Vgbihs^V_@Kb zVjzVC)HVi@rB3l0IX6B!s8JV8oIb5rw56bu=d*clj@ zKr(z>jQso(3{1=*4i>;G4wP5JEzc*x&d;xbTV9wAsGkR?JU;`I1JG>@3>;7lq>z9- z5}P3NKLLQv0CX)Nr;rQK%_78y*h8L;gv>^l9|?A$`+2zY38hm?{ZGhznEa?cs38Cg p7hqA$8o+vhkpU#lpn$7{MJPu#hIAgnByw1I3nG4g1_ltu1pw(VF#rGn literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/OPNx_SynthBrass.fui b/instruments/FM/horn/OPNx_SynthBrass.fui new file mode 100644 index 0000000000000000000000000000000000000000..900660133b69f263427234b49991b21e2aad10a8 GIT binary patch literal 1676 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpg1v&{gDdk&GMtJMi;ImI z*jO1DSU{3O%#5sT{0t1tAPyEF&%(&cC5T6!k&%^~1CKmVKMQX2`5BlTfX-uJ02%?t zKne-SBe4lG{}TY%3_#ZcatgTs-7G?Uh&|-lNXTq-`H^53x}S$TpHMob)c=IchslrH ugBk*`Z~>OatO2YC7#Tp)3<|hPScGy^V@T&AOd^Mcw;)HVi@rB3kC@>gfK8NxaMRQEBF_sC+0D*vobKS zfW+lFIanEl7#P?<94tVdlZlOiAD=u6D}yK&jZh(ZPDVBcF`V-J3``C{moYGKKrxU) z0`f>~g3SK}05${AwSb&LEc{UO<8(n@R*oE%r;m#+NPAT<2A@gDKqxPVN l04!X91u<&?>j6dvkTin=GeR5(3)L9Xc{q$EQW#%B1ON**FJk}z literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/OPNx_Piano.fui b/instruments/FM/keys/OPNx_Piano.fui new file mode 100644 index 0000000000000000000000000000000000000000..1db80df880bc40ca8468f6af59e035c44b3e49e1 GIT binary patch literal 1671 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpg1v&{12Ply@=X~SSr{0A zh=D<#gPEOQk%55?#K8jOxtQ4bS+7}@z*8JKYB=VxGY z0J@BUfdh(x6cUg}ViRQkCjhV+fUX7P6mkK&S%mlyd&skqklE<+Bf&0oKM!|4p>#^A z{|T87lOMGQH3VSc0xXDG16U6*GJvER6mXP)2-RS9s78^-Lo$jCCf)HVi@rB3l0IXlNlHp90M{F^YR&(SQr?XKw|Q& zjEs!R49sj`9!LZg$g?stGO95!Gvkn#WaVIFG-6=FB`?O#$O^U#yMBHKCI_Ia7#KL9 z7)T)jc_cPL=6?bJn*r!rKu#eSpqoXA53z?l8wr_>E)HVi@rB3l0IX?HL#u`~!UBT_Vim13Vr5{25qS z7#M(vfkBd!kAqd3fq{(;#KQ!#+>Gpu!VC;d?3i*O5qW+_9ySgJCT33T@-pm;9^D{6x03FA`zyZZTid^uY0KjH0x)zXA$OY(T5#mGaACuBZMe$*b+5P*dXuq)HVi@rB3l0IXlNlHpJV8oIb5rw56bu+xSQr?X zKr-^&jGWxEKn9ox5jC>p{Dhv$Fyr|+Zo;(X97mqLl0~;Gm1eKQOV&vqN2I^-< z6^HWp8JHY^Zew8JfMOtp1muy}1eyN{0Bi=JYXLchT!3yCAwI+&@@ynzHoE*sunXPK z!<|nkol@$5LgvHdN9{ok0a&;Ii(=LQ)&q;)h~F#}i~s!^ozkj)~Ujkh4; L=VxF5VO#(J2nR6* literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/BellMD.fui b/instruments/FM/percussion/BellMD.fui new file mode 100644 index 0000000000000000000000000000000000000000..8d94d85effb824738c23abdec955e2cd357036b2 GIT binary patch literal 1665 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoKkag7+BaC7??mJ@(i2| z400eAb|BBd1(pY@#|q@RnAjMx%0LA9xOl^l9|?A$`+2zYk<%VFHl_Z@W+pbVQF~BB01-wC mtO2YC7#Tp)3<}H$aU3jEV@T)WFqTMRyaf?IKLY~@;{pIDc`a@L literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/ChurchBell.fui b/instruments/FM/percussion/ChurchBell.fui new file mode 100644 index 0000000000000000000000000000000000000000..85a187b18c42ec67324c4d55c703addd877a85f1 GIT binary patch literal 1639 zcmdOOD=o@POioqE%quP_($fuLU|>)HVi@rB3kC@>gfK8NIA@d=C1)r&rRL-?urM$% z0x<)lJO?)mzXFiO3dEQIF3-k>DG3shXJcXJ=KwOW>j%rT1LfJU%kwiZIRKr;zyLA= zgi(P!Di=TRKLLPEH@X&(Q^*DAW)b2;>>)HVi@rB3l0IXlNlHpJV8oIb5rw56bu+x*%=s_ zKr-?o{LH*^3=FIw4i+HK!pO)Zh(}(EgN0uLi$VHD!!{kTp uK@9;|xB!b{)&SN6j0_-Y1_fq>I1U!7F{JZw7)zuu-hzmqpMe2{aRC5)r7-OP literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/MusicBox.fui b/instruments/FM/percussion/MusicBox.fui new file mode 100644 index 0000000000000000000000000000000000000000..53512b99aeed64580854edd4dd2db1dba361a28a GIT binary patch literal 1673 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpJV8oIb5rw56bu+x*clj@ zKr-_DtZe*Z3=FIw4i+FU%*etWh(}(Kk(Hkhi$VHD!!{kTp uK@9;|xB!b{)&SN6j0_-Y1_fq>I1U!7F{JZw7)zuu-hzmqpMe2{aRC6vaWNwR literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/OPN_-_Music_Box.fui b/instruments/FM/percussion/OPN_-_Music_Box.fui new file mode 100644 index 0000000000000000000000000000000000000000..7bcda34fba8bb8cee4af783032261396a9fba98c GIT binary patch literal 1670 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpd`pWnlNFruD;OAA7#Ns9 z!tx9(93b_~0$d<21^~;O0Offwq`(653>-{ALl~HOIj|~_=VjsG2gzX9&(FZ*0CX4w z14uWf2|$C12mc8GY$l;=0Xc)HVi@rB3l0IX0~mN2f)X?HlJd(HoKkag7#LU> z7??mZ{H$CIEHVrXtRN01VB}|E=HUm5vodgiWf{@b$a68W@C%^{B5~z889DjEHX#Wj znEVV(4h$eOL8e1&05Zq}{|NwWrlM;>_Z~JqxWv%SBE*N7L!OO<%tn_V33j3TdARd& xr9+rFrT&MRLx>)=2Q>r`;ibSDzE;b!9q2LbRG_4i4=wxL;!^LFarPp literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/octave_8_bell.fui b/instruments/FM/percussion/octave_8_bell.fui new file mode 100644 index 0000000000000000000000000000000000000000..4dc80b630ba1dac1610355caabe215add0b12839 GIT binary patch literal 1677 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpqWzOg63bE*EVLDzQgd=* zfx=8c2n6!1EX@333=FIw4i+HK!^FZWi%*`Bg;g1gMyQZH7b6Eh*e0xM_!*cSfbL^p z;DBNvg#_f0*aVsX2>@&cplbm+gw9`bA?WH!3|NU#gt&%>QhD4kO3e?sQN x60r1NkXOQbN~f{34=fdPbZ0RRMTF?0X` literal 0 HcmV?d00001 diff --git a/instruments/FM/powerchord.fui b/instruments/FM/powerchord.fui new file mode 100644 index 0000000000000000000000000000000000000000..40e8ba34c672739d2c271ee63fa5941ac513d968 GIT binary patch literal 1673 zcmdOOD=o@POioqE%quP_($kG)U|>)HVi@rB3l0IXV;LA3JV8oIb5rw56bu+x*%=s^ zKr-^I%>4X<3=FLDARZ==XJO#y2MXhqX8`I4X~U(Tfr+1=6{kEu1Cs;LZ43+?PzO8rmBe3<;G vJ*Xi73m0Hf%o@OYfRO)HVi@rB3l0IXlNlHp`~&t z7+63uteh;Y%wixGcEHNX29{^TF3lj%2Gq}kLlP(~&j!>Fl*gf;pMl8%=r#rh4k!jv zNI)KmO_2GY0KjGdx)zXA$OY(T5#mGaACuBZMe$*b+ t5P*dXuqb8?U_HRd0Fq`)HVi@rB3l0IXlNlHpg1v&{gG-7s^U{qOSlAgD zSU?iOoQ&*@G7Jo?U>-;W6^L*%volIFFfihf7vKi!=foz>=6Xfb{?)14x=dff*r=gN14g={y|95-E(gAmZm|U;trU003*QFZKWc literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/Violin.fui b/instruments/FM/strings/Violin.fui new file mode 100644 index 0000000000000000000000000000000000000000..2a560518c37fa868d9fa822d75a4455e755fb8f2 GIT binary patch literal 1667 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp!ZP!7GV>UiSr{0YKw|O? z?9BXH3=FIw4i+HKz{t)mk58VNonIA;MyL=k10yFt*e0xM_!*cSfUaU-;DBNvg#>^W z6A%6q0N6}I*8*}1xd7cPLVSolCZdhdZB8I;GVAgv^J@kJ^J80)HVi@rB3l0IXlNlHpoKtgh@)?-e85o#ALXupJ ztc+?5jLaYo79hjR#Kxq_z{rM04kRSW&C0)HVi@rB3l0IXlNtCJf-+N56`XVOi&Ik=7}yyY zm_QQz3@qIIybKJiAPyG5&&JQq0hENwGomZu=VD~x7eW_B@cB6zIr+ghA;gea{0vME z3?M@}pcqIY0eK`gLFRt~0Gk2mS}^>FO%o0=bh8NYA;yqrBO$ZVqLT zE=;Na;RX?4jM{@50*K&JU=3hBz{miSW>8>8h~r?P8bdk{hp|Ko<1L8z`GHjh5aR*> DT68b- literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-FakeFalcomGuitar.fui b/instruments/OPL/OPL3-FakeFalcomGuitar.fui new file mode 100644 index 0000000000000000000000000000000000000000..f18286ee4ce03f371e9b08597b51791bc488cf31 GIT binary patch literal 1684 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?VuB60=j?5_6LC zbKOfbOA?D17}yvXSb%C6IhdK*nIsq(Si!m(8G%Az7L4FzWn^QNgvo;>QRUg07}*(t z`k?@50IEDU&bF!@n?P(uI~E({C`tO2YC7#Tp)3<}H$aU3jE WV@T)WFqTMRyaf?IunY%bTmS&bF*JSv literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-MajorSquare.fui b/instruments/OPL/OPL3-MajorSquare.fui new file mode 100644 index 0000000000000000000000000000000000000000..e5beed0fc93dfc4d683978487a80e3fa9de662ce GIT binary patch literal 1679 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?Vt06SMM*f(uI% zi&7bwfl@3Wd43jFc77nu3gR#@Ffy<~7%-BbnT3@H$iXSk#LmnIHVLc)Q$GtE*nFsY z=<@swOb$Rx85lUA7)T)jc_cPL=6?bJn*r!rKu#eSpqoXA53z?l8wr_>E0~! literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3.zip b/instruments/OPL/OPL3.zip new file mode 100644 index 0000000000000000000000000000000000000000..68150232d699ff9dd6d60a4a905d27b58467f52b GIT binary patch literal 4131 zcmb7|eN?KUtmHNHMJ=#otN1X#X4rgt|5l}R!5^m%4kAhe|Kpj!*+tfFe9Pi>FG2v zW}g-~OWPaQniV%vVd;!fU|$)3G#Lj*P5LyEcqER$Op}(-%ARG7tB0NkKs^s+C@;hv z;qUOdx%Ptfi-%)A%$Y;)G7SOlGMJ6RthDea;Cz>w- z&3E^|Sl*>ZYl0ioG|A(kq ztJUjkVX7t8(%EU`4Tt`=emIw%D_M3|n$An@XEw@{4H;B7L+FRB@>`frbus2^#wbwC zHa5pfA6rcsNI`E$DaK(#tLJ*YaAc2sb@LEq3a?bOmFaszoF6|nU82}q;a5UZ_5uiY`ylB$VH z$ap;Oujj_X7^3BotKZ&vo16T@LJQ5pMJRKutyp4l;{LggK8xGU(oM&+90M%d{XV() z31HX*Sip}^ic(#nl9f)5LMqOc8jP1Q#_+E-lx2gG+(9*mExGhAhr`Kbi=gFk0n;1! zLT0pExytLB7jVh&LBTuA|m6cD9aHi~>qq(73n$u`9v+7O8!*;C4 z<{2)h97XRP2F5~tSWqCKyMKoxWFPTGPC z&kykhk1g~6=w7?sXRr;MjcwETm-2R#p0xgxSEY%+?0S;IkH+`nJ^)uPb$!95MuIjmA}k^)V2z@h7EZU+f|)vbL`xZIfq3c6F!EDJQZ2+i(N?wg%G4dA6Tn0T zmoPn5*$-ft;LP4!ST-fE%dc-f<-i-B!66@_^qUz2Ff)F6-1Gy9VFw5+1D6sN1`9e0 z#;1JB<5LG%wqN*NNGD)823S1)kX==%M3ssvKs1#a@?cgCODj>TVx<_sXU)>s1Bwj#RFIqie!A{g|xgEWDaLOil3P4_ANTWUj za32Fm&(d92CQ}yjQk9h-O>&f2M-NLH&p2|#&1Vr{eV$G<+;uwS)SG60l$o(m(^Atg zW4+NoE$?`pesBJMIHKN(4iC$_7xme(Vdxz_`M^z8+jRclzO22Q#KMY8q4vY{nw5c- zqmiKyaCo2pl-!Qac|^2(Gw-%fysz2-oIE6;k@pWL%`jj(Zlhh zObUPY9Hgg>nKpN2mXBs^KB@cnv%Bg73B4~TVbO#^$p)}aZ0)b``1<&ety7n&ih0S( z$tFLR)bxSjR}L`X4&IfdF>vbUI;9rb}1sGV30(8d_bpVppUv zI8&;6_97^S5(Om-i_=y2v#MtyGR+;?>N8KB+($a&%6MJs9N z6T`?8?BR(l{y{--SKYg>vt?-C)_f0z{a-c{VB69>h@1p$;~xLMqP$cwxlqe$GPN|A zuDwcs8|7$Gp@IHHtEts%^&rv4#CB=}lZQEMPOj+Qy|380qkGw#N$NG}YpTPK-g;4~ zCCggb@5Pg+Ig((3j+;(%UD`PlUYeTm_=I7@SO&YbN@6H^-mzlOqqWEkWCiB)PW>va z`VU)K%dsP}r%yxKZ+R*Olak02KX?GN7oT>m=fFRP;FUxn|D_Is+O;>p*Eb_SUQHCH zz3O(DAX?+)METV#-%NTf&EkbbQPC@0NuD4$;;$eIW8N!5C=*39{2fG@$9snx+<{L( zcqLKD@G7rR$CVyW#OsLmxmRZZp8Cdi$BT&;s8^gvpJ1KhuOM1a-YZgk{&!j7)kOa9 zRr99d)o+p$nXFg)Z;$qM%f1=p4kz07xr@>Q~*E>X6R8Ry@&|*SO MpbvlHc?SUf7hPw{MgRZ+ literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3_-_C64_like_sqr_snare.fui b/instruments/OPL/OPL3_-_C64_like_sqr_snare.fui new file mode 100644 index 0000000000000000000000000000000000000000..19d85f5a9ab5c3c841a90cd9afae4fcd380aa7d0 GIT binary patch literal 1704 zcmds2%?^Sv4DOI0G3pXu0L~hG1w5H}F(&u|hH&u00rmZSGi?z_9Rrrg$tF#|cHQ?e z7+bV|6!|61!fSrJ7uzTWfDpa5!!bD%PGJd2ekn2l55S_5goTtC9ZEDNUC}!p%!Dmh znu%2@@P#i+C2fxcYX<^{rj=u07BE~wTP?8sHDDyOMvu@p6~^#oDutj)8pGGuSl2Ug zt_gP6ImdO4BDSDfTaartq6*+VCb&yWq1C1){JiHw(q5OATq$xM6U?<}Tic$D0b&rs zvc0(p!$0*XFSC{Yy4DtuMcqC6fTq{E@#MicLs Q=@{+(2y|1Fw?)U~HyI))tN;K2 literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3_-_PWM_Lead.fui b/instruments/OPL/OPL3_-_PWM_Lead.fui new file mode 100644 index 0000000000000000000000000000000000000000..b4bdf2f2ac847490fb2674f59a323fc93baf1d88 GIT binary patch literal 1734 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJ0>XV2d{Prr7#P?Y7??n! z{0xlz{IU!TtRM~p10zHf!U2)|3{3p|JV^3v2swy6BR`S|BLjYUxIs`oK;s>NmNGDK zKrxU)0`f>~g3SK}05${AwSb&L2sq+UfNmCy4>A+RMy4Ug5Mv{zg~;X*!yXBCF|n|5 zaB=hS@(T)yh>D4cOGrpcfq=A(jI6AjoIDW7fq<-xjFgn5gt(Zfh_H~L06!lOHzx-> zD-+g8A|`N$sv68>g(^a+zfeuX%^S4`H3SeLrNA1%dVmp}Fc}n>5#l&lsK$`a!(l9u P!gxzEeqb#D!ngnc4bd;< literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3_C64_Kick_or_Snare_Start.fui b/instruments/OPL/OPL3_C64_Kick_or_Snare_Start.fui new file mode 100644 index 0000000000000000000000000000000000000000..f3f77153972e315af4a94775fc498c4f03ff9a01 GIT binary patch literal 1690 zcmeHH%MJlC6g?frn=X8SyJUfl53rJm1j+b;Ml3`!ksAN!&uG0St(pcq+~jt8?&&$V zZ6@uG_A(aB6|Li4B70o{fK=XMJdGB5F3>=GFq?O1A;p#^>*a>}6vaZWC`yD(fFh9B zORE9n$N`}S0K0tBv0e*GWd*N1P)IpFt5lS}d9N{>=Vg|EFugAaM=(4$EvcGLGg>Ch zMn_M$)V3sJt1h`wv%P%yB7U!<&)epIp_hH;Z^y>Z=K!Cc-(l%2{ri|VkX{mn^YFl+ YX^?tkJz?6sjy(1rI`bjo9MJhJPWV1F%m4rY literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3_C64_Snare_Carry.fui b/instruments/OPL/OPL3_C64_Snare_Carry.fui new file mode 100644 index 0000000000000000000000000000000000000000..e0c755a3f37af65038af84028fa5e607210dcbb9 GIT binary patch literal 1683 zcmdOOD=o@POioqE%quP_($h_3U|>)HVi@rB3l0IX6B+mzG)(*hG!;UM5(^Z9^Ad|v z6`T``iYgfx*cljDKx#M`*jN~t7#LVV90mqP2!$Xy*x6ZFx#98%2`Gz;iw$TL9AN0@ zXJ=%C%VIM48JHZvmT~~)Ko}LsqjK@{{u2P$bfas*a6dLpIK)HVi@rB3l0IX;~DrEJV8oIb5rw56b!)fEFhAf znVp$Qo`HcCEQCq$voJ6-isF%HW@cuT#ncBA;b&oFV_=5y7#QI!2!o%2$pI|L0px=) zDgZi+c<`S9z-AJ<7IgPv(}PP4-7G?Uh&klhNXTq-`H^53x}S$TA6GhriBsx-m^p;# wQF~BB01;jatO2YC7#Tp)3<`)s5TO8-g=!4xJXF(2<>4)e`1yfV1rXx`0DciLMF0Q* literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL_horn.fui b/instruments/OPL/OPL_horn.fui new file mode 100644 index 0000000000000000000000000000000000000000..38313a62a3f634b1d7a06eb309cc647d6ef79ce4 GIT binary patch literal 1665 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJGV+V^7#P?Y7??mJ989e2 zydn$?tRM~pBN&01P=bS*pPd)ThR7q!K-ltJj4b>@nBp)Ic}_-7ey~k25fqxAfyn`6 zD+31<11TgRkHjX({7(R2GXPx+$SLFkbh8NYA@-1GBO$ZV12Y3inn8gXA&!HEY7FT-9L5qUjJF`-=VxF5VO#(JIlnFN literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_bass_1.fui b/instruments/OPL/opl3_4op_bass_1.fui new file mode 100644 index 0000000000000000000000000000000000000000..bdc01cdf136ea357aa5ff808e6e43c8edef35433 GIT binary patch literal 1667 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJk`jxH6$}{|SQ!{tKw|tX zY-}ttU_OY;2qKUHKMMmJvj`q}HdZzkUAPWR{Y;D;{A@Vo`5BlTz?O0Vm4GlRkVoa> z=lv%Du<1tEg5iE_nsA7rn?;BZF@`)F37L&9KN9Rh_w#V)<4A^ZVM_fEH;4dZ)E?9j rKm?ZpYXIv3Mh1{Hg90-`90v>47}9w-j3rVSZ$ZS*53DMH7#9Elqwp>H literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_bass_2.fui b/instruments/OPL/opl3_4op_bass_2.fui new file mode 100644 index 0000000000000000000000000000000000000000..555cf369bf1441f0bcb231a5ee85733e2f723728 GIT binary patch literal 1667 zcmeHIyAFad6g?MOWU`C9O`LJ?3!F?`jEVjL5(gIs(Esz#v<ZZy~(BLog!!7E30j7X@4N?fZC)HVi@rB3l0IXlNtCJk`jxH6^t1e*cljDKw|uC z%q+|@3=FIw4g&)t0~3S+B^miy7+4rZaLP0Ab1<;50p(%p8DT6a&Ckfd#?J;9WJHta zXJB#wTFSt{0mVQH3CJU{2{Qi^0N4yb*MjCeY+7)Np_@gB4>5>58wr_>EPzg%?Psn_j{HQ&sApi>(U?I#JzE;b!9q2LbRG_4i4?|L5b^T^ Js|p~-1pxLzE!+SA literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_drum_kick.fui b/instruments/OPL/opl3_4op_drum_kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..ed89055b4ba1de25b215e689f79bef52b3f9841a GIT binary patch literal 1822 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQi@7*6|ysvvl$rJ85meV z!u+f(3>-k36~w^;__>+bc!AiI2m|#^78|$Fd)VS0ASZ+3jhEB literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_drum_power_snare.fui b/instruments/OPL/opl3_4op_drum_power_snare.fui new file mode 100644 index 0000000000000000000000000000000000000000..b351cf3451db2c9be390504e51f70dce92e7a3b1 GIT binary patch literal 1681 zcmeHHOAdlC5PjvNxUomD7r-;PGI3)}^a2D~xDZW|cs*~XGa%t3*oX-W<4el)@uqJw z4UE4`bsU6|I>gCE&;1a9qE%qE-tKrGVv4;^kLrB7Mp`9tpd-Kr99E@mk1dKW69@q& z6-ZA=K|I&-symkBmH7grlJHKtn8>Ws^L<^Huoh$rut&v*7-N=)^2w=PxD#08*aki; zTMjpK=@NRQ>1E=1p?(ET-c5brTGZ6=eKmXjb#D4lzwO`TU+Dij^&2Seg+{Wwac?3U ZN>DU)4XE3E&J6Yj`RxxYX?XJL!ULCPE(!nu literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_drum_snare.fui b/instruments/OPL/opl3_4op_drum_snare.fui new file mode 100644 index 0000000000000000000000000000000000000000..7b3dac7171f316ef0c22c8ae54a502e257aa8580 GIT binary patch literal 1823 zcmd^=KM%n`7{=e0`qP9PEKF{(NSF*ZCW%EPd;uwgL5Je|`8XmXA|fJ!=ZeO)4xyVj z`K9;1cklDuUD~wNm^yaP8t|b#o;c-_MMNCjquJ_o#n_@W^_}U6kL{i_Ac_-3MV&>W z?!XYqlVGMEOQNovkLhMS@ucxqVx*}jVNZJ9T_GfbGWo~eERxh?!8bm?39-EP1y%G^ zKp7N40dSB58IT4haPJe(6ZUZg2e1b_umu~i1}m@x3or+0kpd+tw3jz1wFVMN=!4`c z@SWiY^3sxj@RAPv2T9-s^c8-+0-u~R4aevGcMy(`@)+Jkcs|@{8#9fBAn}N2pgQXB V##d#PzPAD8;AJOc_=f;hTmUf3V{rfg literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_drum_tom.fui b/instruments/OPL/opl3_4op_drum_tom.fui new file mode 100644 index 0000000000000000000000000000000000000000..437facdc12e435e87b2f75f208926ba99b9c1dc4 GIT binary patch literal 1821 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQi@7*6-x4R8JO4^7+64} z{Hz=dTtJ!?#K8jiIhok_`H|#-8j%4%8xt278?p#0o1cLZRRER8&%opWR>1)j2Vqno zkIa<-a(Iyi(AfV80FZKfGOz_uj|mX#0kIYks{*kC5K98FFc9+rF(?SZ;R&Sw0p0Nj zh<^d`4b16U6*GJp(ZP+*2z bfXl0tTMRK7m-%o9;AG&{396bv7#9El$dF>v literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_growl_synth.fui b/instruments/OPL/opl3_4op_growl_synth.fui new file mode 100644 index 0000000000000000000000000000000000000000..c91745b260f1595589571383be8241d68ceccdaf GIT binary patch literal 1672 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJ(u?xTa}CFAPxfqBM>43Mt-0Y1|cMQWLY4ag_((;Uj{D7$jAg|gBd`3*!a2N zVvMN91I=b~09(lcR06`NKpvHgpZA{tz@{5r3!3w=X~8LmZWbXv#31r)BxE+a{7A41 z-Ot0Fk24`cB`EbjA@gDKqxPVN04!X9B{6FN>j6dvkTin=GeR5(3)L9Xc{q$EQW$SR M#1EoZtWX^kdF& zSLRt1Cp^vWMZO7R09>pF`@`uh^%zUslIX&(Wm-fz-~lrkU_M<0E+8%mQVVq_%)#6d z$tq4&tWuam18=Q-gcuAA#6!@DE43~M-BwL~ValarrJLi{Q$S`&IfS8VGtYedp&Fad z2>QH1Avew(F(!T$V%hKl6M85j literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_piano_bell.fui b/instruments/OPL/opl3_4op_piano_bell.fui new file mode 100644 index 0000000000000000000000000000000000000000..5157820a9d538584939a8c448504108f02500acd GIT binary patch literal 1671 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJ3NjP(@)eR&b8;A%*ccdC zK;pcN%&h#93=GU54g(`2m_j1>nfO@w6!6G1GP3dmO@ioWLN|bspP7Y~p9dz-fNnlN z1Cs+-kOOEZ2%`ddR4#tre*yrTZgef^?!%@Bml(QPg!mA1$g`1<+34~k!7g+^4|hJU zbO;lt)c-JZ2+^bVpoRbf6G;)lTM+T{GcbTK GE&u=p127Z- literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_rhythm_guitar_1.fui b/instruments/OPL/opl3_4op_rhythm_guitar_1.fui new file mode 100644 index 0000000000000000000000000000000000000000..38f02327bdd1f8d0b77079f841487bd4b7543729 GIT binary patch literal 1676 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJiZUuoGIABtOEXInixdnQ z7}yyYSU{5e>`ZLTKo%>A!@$4@gvfxApN)Zyi3drZ8Ce>rpP7M;87L10jHudy@{EjZ z{9G_;G}D373``DSK@Ol25Jm;^s9gNK{{#Rw-RN4-osUfqE-`eo2=O82kY^(yv(e>8 zf?eo-9`1Zx=@2GPssCZ-5TZxzK@9;!cqy<3upVG!07)|_pcR}5Rd5!nF{Jb029d?U OTM+T{1Iub4#svUiNikLc literal 0 HcmV?d00001 diff --git a/instruments/OPL/opl3_4op_rhythm_guitar_2.fui b/instruments/OPL/opl3_4op_rhythm_guitar_2.fui new file mode 100644 index 0000000000000000000000000000000000000000..97c2328877c81b3aeb3c0eef75e72d12f03060fd GIT binary patch literal 1676 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJiZUuoGIABtOEXInixi9) z7}yyYSU{5e>`ZLTKo%>A!@$4@gvfxApN)}?i3g`V13xnZ8#7QI3K&tf1I=e-WaH<8 zNu!w#lxARZ01I*em4GlRkVoa>=lv%Du<1tEg6@25dT@!Mn?;BZF^4=G37L&9KN9Rh z_w#V)<4T7xaZ3FUGlvj8Y7c4%Ai_(5HGuU1BLhg9L4g?|j)R424Cy=^#u6!vw;)HVi@rB3l0IXlNtCJfC@76(u*0GSQr?9h=GBh zfr)`ZjDdj}#9?4yWQ5Q#k`Yy&2~C=Tft`(sjgbqtexN)HLLS|Cko67>AVWEz7)T)j zc_cPL=6?bJn*r!rF#Ly26Am$Svk37a#*k+tA+yotM}l4Geje_89LW$aOsW6j1`%M4 w+JhPbh~RQyTfo-9%m9*RP=J=O2w4mksxhSVFbpI~0B=FW&kw9BfEX750C|Bf)HVi@rB3l0IXlNp#9oXt!Wg7XrKQW+Rn7#Ns9 z!txxf%=}sm46Gmy79h{U$jEJgN1lt3g$yk7#SHrkSu`B zUHHTxmXK!|K6A0jjRd=}`Fl8v5lW<#`kj#ZF!@n?P(uI~F2J&yHGuU1Be>9FPyiKQ Z_yMXhr1S8bPDmDSLB!9`zyQLy001|jEUW+k literal 0 HcmV?d00001 diff --git a/instruments/other/Castanets.fui b/instruments/other/Castanets.fui new file mode 100644 index 0000000000000000000000000000000000000000..a81f93e14d409235b0c9cf070442b0edb8576b41 GIT binary patch literal 1671 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNp#9f-_T66@p7Lld~BZSQr?X zK;rTotjzpc3=FIw4i+HK!pO*NfJdH-k%eCfi$L(Mr?|R6hk+Q5FcVJc{UO<8(n@R*oE%r;m#+N zEGhLrA@gDKqxPVN04!X91u<&?>j6dvkTin=q(nnVVzN+;A)SY5A}Jzx3nG4CsSLun F008guFvb7? literal 0 HcmV?d00001 diff --git a/instruments/other/Closed_Hi-hat.fui b/instruments/other/Closed_Hi-hat.fui new file mode 100644 index 0000000000000000000000000000000000000000..20cc2fced2e71528b3afa477878a1054b5ceddea GIT binary patch literal 1671 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNp#9f-_T66@p7Lld~BZSQr?X zK;rTotjzpc3=FIw4i+HK!pO*NfJdH-k%eCfi$M{0xi?47-_uqCnSyNg|2=1OPT;(6s=qCL5reMTifvh&&q!nT;+#66`|v^Kj=A zN~o0jpOE=5`B8gNLjV>oz=D`Hfb{?)14x=d0aBtNBr#d2#*og#G?5e$yaf?IKLY~@ G;{pH%`7p`= literal 0 HcmV?d00001 diff --git a/instruments/other/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui b/instruments/other/FDS-oneofthosejapaneseguitarsidkhowtheyarecalledyeah.fui new file mode 100644 index 0000000000000000000000000000000000000000..3dc7798a1313666d31723269997c3e410aded147 GIT binary patch literal 1752 zcmeH{-Acni5QWdS2{isKiii|7do5Ia1h0hNNI_p9gxJQ5jU?#{`6RxXp3wx8khrwo zsRurGes*UvOW4`%I=4}rnA8?!el?2$7*cC~cmE)E42{etCVMpHDk~E66g@{ap|M=2 zWt20T+GPQFz(@{+6Mw8P0biURg`QHo*WcuKl&6n+4pyNsP=WsF)VoJxbOXiIq=HLB zVZ+8j)9JC_9Fil3oRc#$C8y+s921%1kZ7_`_DE2{rKN5w8DU#>Yq|W-KHGJ4)$Zp1 zLa*-3zukBJr$3$FRlm;v_i5iieJ^~a{DuFjAZeKKSA4)~m)YDKDC-EzcL~ZaFy_W9QAx&XTvV>GfyRY>*D!ID2`Wp7&BBa$t#@+xrKJQ?fLgrO)H+(LD_(6QY=? zC6%OYB6~(;L?}pN=ADZl>f0RKJ!RuOm2|jc^OMvbORZ~Sl-hG*@sM~iU3o&b?1Hii z1z!!29;Z+a@p%ee@&xf;d5pbv?4qXe2>FtSh&3J{?{gno9F{8-;%akU`U1H!#lv@wD`Z@ug%nQn{%oTEIe}N&U|qG mfRl?B`I@LY=J!e)8&&ZcqWI0oGs}kQ?NXb8oV5jO%JdCrc1fH7 literal 0 HcmV?d00001 diff --git a/instruments/other/FDS-slapassbass.fui b/instruments/other/FDS-slapassbass.fui new file mode 100644 index 0000000000000000000000000000000000000000..058a83265c2c4ac9eb6cd1e4e2824c155aeb29d9 GIT binary patch literal 1677 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCKigOYR5{ru!l7IvQ0}BHK z6G%p$gO!KVJ zffN#uM`EKeL0Ztke(U~$YEzYpI2#i@6 R8Fa&ODCXy9U;trU000niEw%sv literal 0 HcmV?d00001 diff --git a/instruments/other/GBkick.fui b/instruments/other/GBkick.fui new file mode 100644 index 0000000000000000000000000000000000000000..d669277a561674f5e2631e4724858f39b8e1d189 GIT binary patch literal 1759 zcmdOOD=o@POioqE%quP_($h^~U|>)HVi@rB3l0IX6Bw8nvNMyj6*LNR5-SxFOB9@S zO*9!8SQvm3Kp@Y-%FM6Dz`zRPU;*+hjEvj{c;vYlS@?ypXoL#Mb24)BgKfg9hM$4S zfq@Yy#R0`Y3JJ&~vB69>APG{A4g4nnV0!)l)%}3tFF+cEv6%@JMgfeB*i^wx#ZRLc zL<9$78hQ2+VLXbGkzf~!herShe`;i4pfm^wnGcg6wFfl>VBrERtXTtC4={owf#NyVICv2*klHpgAIf11Qj)HVi@rB3l0IX6Bw8nit`eSQWZ1`auO>Q5=#`E zbxkxG7+4s9GC&~D!OG09#lXM{;$Q*tER2lY26*JT7+Ls*uxNw|$#XJt@`G){s)nC| z$$^0pD8&KAKne-SBeB6uHXsR7jt%@L0Fd?k0ICIHm>4!Q(T!td#HI>n0)86ZEJA#U zY2?{Q$ZT}^kzg0PpNBgie`;i4pw$0_%!kR3+JhPbuy6sE)~o@n2N=N-!Jxp*zz&rG t6>!)9%ovb7j7swWIK_I9b`7L8p3S6I{En-7(f^o000MIHfsO? literal 0 HcmV?d00001 diff --git a/instruments/other/Gunshot.fui b/instruments/other/Gunshot.fui new file mode 100644 index 0000000000000000000000000000000000000000..09cb8fb8b96b77fac44d29c3c0427bc773623d12 GIT binary patch literal 1671 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNp#9f-_T66@p7Lld~BZSQr?X zK;rTotjzpc3=FIw4i+HK!pO*NfJdH-k%eCfi$M{0xi?3@3pY2;{*ek;H!j0Gl!BS|HY9Q%P71-7G?Uh>7IcNXTq-`H^53x}S$T zpHPaV)c=IchslrHgBk*`Z~+#?tO2YC7#Tp)3<}H$aU3jEV@T)WFqTMRyaf?IKLY~@ G;{pI}wJ_WO literal 0 HcmV?d00001 diff --git a/instruments/other/NES_0-2-5_arp_lead.fui b/instruments/other/NES_0-2-5_arp_lead.fui new file mode 100644 index 0000000000000000000000000000000000000000..493a167d1fe94bdba6b14b199d86f70099699be2 GIT binary patch literal 1807 zcmeHIO>4t243(Rt%||yw&n@wJ;86y>?=;wD6t+JQ+8hcajI{fI`)8Y8WtJ-@)l{!-uRm8#k|^;%b3qL^reSeYh~ zydg^9cu>Yd6w5$77qOgq9yD8JCNkM&@}7}2x+lS*)R31Wlt(r#*ol}p?!(+{e)a%i z+yojRx1b|R2gl5bp}kJVzGcp~Wx+N$HN4{0@|tZ+$u@wz$l>dRdtD*=DuhxPuGWzM zt@gWoL)vcq9CEoe|93z9H4^=`{vmxEzvMaXfb9$a5R!HBA-Weq3S%#fQ<4t243(Rt%||yw&n@wJ;87U8?=;wD6t+JQ+8hcajI{fI`)8Y8WtJ-@)l{!-uRm8#k|^;%b3qL^reSeYh~ zydg^9cu>Yd6w5$77qOgq9yD8JCNkM&@}7}2x+lS*)R31Wlt(r#*ol}p?!(+{e)a%i z+yojRx1b|R2gl5bp}kJVzGcp~Wx+N$HN4{0@|tZ+$u@v|$l>dRdtD*=DuhxPuGWzM zt@gWoL)vcq9CEoe|93z9H4^=`{vmxEzvMaXfb9$a5R!HBA-Weq3S%gYQ<)HVi@rB3l0IXlNp#9f-_T66@p7Lld~BZSQr?X zK;rTotjzpc3=FIw4i+HK!pO*NfJdH-k%eCfi$M{0xi?40o7;qCnSyNg|2=1OPT;(6s=qCL5reMTifvh&&q!nT;+#66`|v^Kj=A zN~o0jpOE=5`B8gNLjV>oz=D`Hfb{?)14x=d0aBtNBr#d2#*og#G?5e$yaf?IKLY~@ G;{pKRWH9gm literal 0 HcmV?d00001 diff --git a/instruments/other/SMS_0-2-5_arp_lead.fui b/instruments/other/SMS_0-2-5_arp_lead.fui new file mode 100644 index 0000000000000000000000000000000000000000..c21c2d234af101f48d9be3e650582bbf9bd26a7e GIT binary patch literal 1803 zcmeHI%L>9U5Zu^S+xiH2R+_U=5y87B!HWp`14TUuQl#qt`DePT3DyuBtT%OG$ZV$B zNtTktlT(%^tBu&Ehhx@{R{$UoDyFl=k~qx|;$b`zNwyceO|k}X0V?@OM`yq`Uc%do9U5Zu^S+xiH2R+_U=5yZPE!HWp`14TUuQl#qt`DePT3DyuBtT%OG$ZV$B zNtTktlT(%^tBu&Ehhx@{R{$UoDyFl=k~qx|;$b`zNwyceO|k}X0V?@OM`yq`Uc%do)HVi@rB3l0IXlNp#9f-_T66@p7Lld~BZSQr?X zK;rTotjzpc3=FIw4i+HK!pO*NfJdH-k%eCfi$)HVi@rB3l0IXlNsb0f=dfhi;5G=85md?7??n! z@*J$p{8|hQtRM~+AkV_c$Zdc}o{N!%UkHmvsE|A-BPT!DCah}s8JHXx7=cn8Pz literal 0 HcmV?d00001 diff --git a/instruments/other/VERA_0-2-5_arp_lead.fui b/instruments/other/VERA_0-2-5_arp_lead.fui new file mode 100644 index 0000000000000000000000000000000000000000..9f52221b51dd93f15a92e9816ea45b2e9364554e GIT binary patch literal 1699 zcmeHH!3x4K3{AHcoE{3Eysc-UIt0&p61<3@KQQJFf()7ZfBu;^bK;hD9pX)WkhL#K zUzSp$7MCoI;zaJ#(>WWd7yzWUCzh+t7WXj>AXF1Il~Hz-ha}nocmNK@f)01Z5P%~w zAn+LLg_d}id7^JPShxb8`691m%n{(sf$31EFujxzl=gX=s~wn*Msd?XAFd`~Y=$2V z{3C36jKlzXo-t!d!^ygfYPIo)f~mv0Hubb=)A%pcqCI~*r*DGtPy45OP5fV{dIPU} el6=jtEFV-LairN%m3g1p)!U-hK_mnKS`+SUWGwgq literal 0 HcmV?d00001 diff --git a/instruments/other/VERA_0-3-5_arp_lead.fui b/instruments/other/VERA_0-3-5_arp_lead.fui new file mode 100644 index 0000000000000000000000000000000000000000..5f5c61947cd0450e7b2004ad7414adb249e0e3e2 GIT binary patch literal 1699 zcmeHHy$ZrG5WchxSRDdRZp|!23*xMk;39&)K&c%BDN^WWd7yzWUCzh+t7Vj|(AXF1Il~Hz-ha}nocmNK@f)01Z5P%~w zAn+LLg_d}id7^J9EL?%le35rD<_K`+z;vinm_AAfO7}d?)ecNYqqu3H4^I;?Hp7nw z>fp#@BnHrW#*8fum30@@YU2+D(}ZS@!a@n7ggXa06h{|U-JouBG8@qeG{3%uS* e@-@G*d{KeKRb)q1=6z;YZ;M(Nkq`iAO}GPiK`i)HVi@rB3l0IXlNlr!yfc%t85md?7??mJ@*J$p z{8|hQtRM~+AkV_c$Zdc}o{N!%UkHmvsE|A-BPT!DCah}s8JHXx7=cn8Pzoz+#y-fb{?)xR7E{z*hVql!92O W#*ofKHH}mr-hzmqpMe2{aRC4T9V=7- literal 0 HcmV?d00001 diff --git a/instruments/other/VERA_Noise_Snare.fui b/instruments/other/VERA_Noise_Snare.fui new file mode 100644 index 0000000000000000000000000000000000000000..015d9a89e3010ef6f6d3b8793e567541810e7ecd GIT binary patch literal 1698 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlr!g7XrKQW+Rn7#Ns9Lh>A} z%=}sm46Gmy79h{U$jEJgN1lt3g{Ae4+J1_5RDChtf>HEeIU+*vh9I1%q$oU6oLbEa~OdDE=eK--7G?U zi1FlEN62h+`H^53x}S$TpHT9o)c=IchslrHgBk*`Z~>OltO2YC7{LV=g95hV2cZ literal 0 HcmV?d00001 diff --git a/instruments/other/VIC20_kick.fui b/instruments/other/VIC20_kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..bc49b4626d64caff19160180220985cad8780224 GIT binary patch literal 1705 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNq=evNMyj85md?7??mJ@*J$p z{8|hQtRM~+AkV_c$Zdc}o{N!%UkHmvsE|A-BPT!DCah}s8JHXx7=cn8Pzr$U0yUfC0!XE+7WEk`IVMa_9ivETEGaLCz)zpqoXA z53z$h+X$JBE Date: Sat, 25 Jun 2022 08:08:45 +0700 Subject: [PATCH 112/580] Add new demo song --- demos/traumatic.fur | Bin 0 -> 4732 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/traumatic.fur diff --git a/demos/traumatic.fur b/demos/traumatic.fur new file mode 100644 index 0000000000000000000000000000000000000000..7600b42c30a1e0e6429b4a697fc41932f9f4bdb6 GIT binary patch literal 4732 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 Fe*kNNSrGsL literal 0 HcmV?d00001 From d032f473285447d47a07d0542d91d03370648d97 Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Sat, 25 Jun 2022 08:12:22 +0700 Subject: [PATCH 113/580] Delete traumatic.fur --- demos/traumatic.fur | Bin 4732 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 demos/traumatic.fur diff --git a/demos/traumatic.fur b/demos/traumatic.fur deleted file mode 100644 index 7600b42c30a1e0e6429b4a697fc41932f9f4bdb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4732 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 Fe*kNNSrGsL From 0c84824cc6dceb1947d22be68ef4b01bb1eb142f Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Sat, 25 Jun 2022 08:12:39 +0700 Subject: [PATCH 114/580] Add new demo song --- demos/atmosphere.fur | Bin 0 -> 4732 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/atmosphere.fur diff --git a/demos/atmosphere.fur b/demos/atmosphere.fur new file mode 100644 index 0000000000000000000000000000000000000000..7600b42c30a1e0e6429b4a697fc41932f9f4bdb6 GIT binary patch literal 4732 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 Fe*kNNSrGsL literal 0 HcmV?d00001 From 50e4428fb3c8d2390a3398e997cca1c1b92370ff Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Sat, 25 Jun 2022 08:24:38 +0700 Subject: [PATCH 115/580] Fix grammar a bit --- papers/doc/5-wave/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/5-wave/README.md b/papers/doc/5-wave/README.md index 0668c0bf..dacc88ea 100644 --- a/papers/doc/5-wave/README.md +++ b/papers/doc/5-wave/README.md @@ -2,4 +2,4 @@ Wavetable synthizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. As of Furnace 0.5.8, wavetable editor affects PC Engine, WonderSwan and channel 3 of Game Boy. -Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If larger wave will be defined for these systems, it will be squashed to fit within the constraints of the system. +Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If a larger wave is defined for these systems, it will be squashed to fit within the constraints of the system. From ef5361160636303f15d26784bd766b4c6cbdf766 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 24 Jun 2022 20:28:26 -0500 Subject: [PATCH 116/580] ..... --- instruments/OPL/4op Bass.fui | Bin 0 -> 1669 bytes instruments/OPL/Chorus Organ.fui | Bin 0 -> 1673 bytes instruments/OPL/Closed Hi-hat.fui | Bin 0 -> 1667 bytes instruments/OPL/Crystal.fui | Bin 0 -> 1668 bytes instruments/OPL/DX7 Electric Piano.fui | Bin 0 -> 1679 bytes instruments/OPL/Distortion Guitar.fui | Bin 0 -> 1678 bytes instruments/OPL/Guitar 2.fui | Bin 0 -> 1669 bytes instruments/OPL/Guitar.fui | Bin 0 -> 1667 bytes instruments/OPL/OPL3.zip | Bin 4131 -> 0 bytes instruments/OPL/Open Hi-hat.fui | Bin 0 -> 1672 bytes instruments/OPL/Overdriven Guitar.fui | Bin 0 -> 1693 bytes instruments/OPL/Snare Drum 2.fui | Bin 0 -> 1677 bytes instruments/OPL/Snare Drum.fui | Bin 0 -> 1675 bytes instruments/OPL/Synth Brass.fui | Bin 0 -> 1672 bytes instruments/OPL/Synth Guitar.fui | Bin 0 -> 1673 bytes instruments/OPL/Violin.fui | Bin 0 -> 1667 bytes 16 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/OPL/4op Bass.fui create mode 100644 instruments/OPL/Chorus Organ.fui create mode 100644 instruments/OPL/Closed Hi-hat.fui create mode 100644 instruments/OPL/Crystal.fui create mode 100644 instruments/OPL/DX7 Electric Piano.fui create mode 100644 instruments/OPL/Distortion Guitar.fui create mode 100644 instruments/OPL/Guitar 2.fui create mode 100644 instruments/OPL/Guitar.fui delete mode 100644 instruments/OPL/OPL3.zip create mode 100644 instruments/OPL/Open Hi-hat.fui create mode 100644 instruments/OPL/Overdriven Guitar.fui create mode 100644 instruments/OPL/Snare Drum 2.fui create mode 100644 instruments/OPL/Snare Drum.fui create mode 100644 instruments/OPL/Synth Brass.fui create mode 100644 instruments/OPL/Synth Guitar.fui create mode 100644 instruments/OPL/Violin.fui diff --git a/instruments/OPL/4op Bass.fui b/instruments/OPL/4op Bass.fui new file mode 100644 index 0000000000000000000000000000000000000000..0432505d2792d9f1147e5e833908fecd036aaae8 GIT binary patch literal 1669 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJO!5m9oDz$R!E!7hlAn!- zfmxJ+ffX#o#K;Jy5d=Rc0|S!?Or8N4VN@WG%Eiz7PXJ)kjjjd7ao9BA5kohN5FcU`c{UO<8(n@R*oE%r;m*gC6v0xI z`k#>bF!@n?P(uI~F2G`#HGuU1BLhg9K>?)@M5sYxp&COv56LJpn0N~!etuw80mQff E01~P$sQ>@~ literal 0 HcmV?d00001 diff --git a/instruments/OPL/Chorus Organ.fui b/instruments/OPL/Chorus Organ.fui new file mode 100644 index 0000000000000000000000000000000000000000..14a418d00b9fa1a199c33773994f5724d1dad04a GIT binary patch literal 1673 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJoHO!^N{bczi_#PG7?@ZX z7=Va@ffYokLum#EMn)!(00OWwu(Gn4AmkyskmOkySy(yYd`1RFI2+7hWdO<}%tVuA z;AdcR0Bhj@ss>?HAdkw$&-+gRVAGAR1>Jqv^xzUhH;WJ-Vh(vW5;7ZIek9n1?&smo z$CVCY;*|OyW)2~G)E?9jK!le9YXIv3Mh1{Hg90-`90v>47}9w-j3rVSZ$ZS*&%gk} GxBvirRWL*V literal 0 HcmV?d00001 diff --git a/instruments/OPL/Closed Hi-hat.fui b/instruments/OPL/Closed Hi-hat.fui new file mode 100644 index 0000000000000000000000000000000000000000..262678961ee11969df44ddff24b31472a1e33d53 GIT binary patch literal 1667 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJJTi4N5=$5uSQ!|YKw|uC zoJ)HVi@rB3l0IXlNtCJoQo=pOA>P!n1Os2kRT@; zD=RxM0|P6F!@$VM2o?o%zyv!p6AP0tOdcT)WAQVvu<&cbct8`F5Nr^OpP7l3A4!Z6 zO`3tpfdM4O0mVQH3CJU{2{Qi^0N4yb*MjCeY+7)Np_@gB4>5>58wr_>EPzg%?Psn_j{HQ&sApi>(U@6QRz)HVi@rB3l0IXlNtCJTq4XBTys*BONug+6#_C7 z^YR&(m>C#YK=S;IjI8|93=FIw4g(XIL?-x|xLDaVVe-f_5H>$EBRfB)Hn>6p^85@; z4h)Py)f`X^q>z9-5}P3NKLLQv0CX)Nr;rQK%_78y*h8L;gv>^l9|?A$`+2zY38hm? z{ZGhznEa?cs38Cg7hr+R8o+vhkpU#lpa3j!2>?`MNaqnSo`5vof{33VSXBTqE&u?i C5i%$M literal 0 HcmV?d00001 diff --git a/instruments/OPL/Distortion Guitar.fui b/instruments/OPL/Distortion Guitar.fui new file mode 100644 index 0000000000000000000000000000000000000000..8bbe234a82f58add3bee2f72926810d07c4d3413 GIT binary patch literal 1678 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJTr!JG@{39`^YawkOEXIn zix?Q#7#Ns9(j1Ho?ED-I46Gmy5HLb0ILXfdln3%4@=OejK#j;io{N!%UkF(Ql`YT7 z$jJ}32~`}*<7Z%U0NV+40s{!60(n#}e%^lq0Gn=fE$H6IrU#c8x>yL$xBvj=r82Gn literal 0 HcmV?d00001 diff --git a/instruments/OPL/Guitar 2.fui b/instruments/OPL/Guitar 2.fui new file mode 100644 index 0000000000000000000000000000000000000000..78b590cca701d0e538a6b3f50a7312c56552016f GIT binary patch literal 1669 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJ+)Fb{5{nd!z;a9=lAncx ziCK+-ffXzSBp4ZCEHKT-#K_LYj9Xrwi;;z22t^ADN1l_BlOJpoiZG1B&%ors0J4z- zih&dokVj$@Wd0`ruo-}^1=aJ|bl?_4H;WJ-ViI{a5;7ZIek9n1?&smo$DI-(GL-tC zkohqAQF~BB02VI5Vwg36^#CISNSZ+bScnn;sK$`aBVarMX}kpyKR>Xl0AgGK0JfVh A!~g&Q literal 0 HcmV?d00001 diff --git a/instruments/OPL/Guitar.fui b/instruments/OPL/Guitar.fui new file mode 100644 index 0000000000000000000000000000000000000000..09e0c4231696c3eb2bf3a04634cf2d824c860062 GIT binary patch literal 1667 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJ+)Fb{5{noZ*clj@Kw|tH z%B<^*47}9w-j3rVSZ$ZS*53DMH H7#9ElB%>~f literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3.zip b/instruments/OPL/OPL3.zip deleted file mode 100644 index 68150232d699ff9dd6d60a4a905d27b58467f52b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4131 zcmb7|eN?KUtmHNHMJ=#otN1X#X4rgt|5l}R!5^m%4kAhe|Kpj!*+tfFe9Pi>FG2v zW}g-~OWPaQniV%vVd;!fU|$)3G#Lj*P5LyEcqER$Op}(-%ARG7tB0NkKs^s+C@;hv z;qUOdx%Ptfi-%)A%$Y;)G7SOlGMJ6RthDea;Cz>w- z&3E^|Sl*>ZYl0ioG|A(kq ztJUjkVX7t8(%EU`4Tt`=emIw%D_M3|n$An@XEw@{4H;B7L+FRB@>`frbus2^#wbwC zHa5pfA6rcsNI`E$DaK(#tLJ*YaAc2sb@LEq3a?bOmFaszoF6|nU82}q;a5UZ_5uiY`ylB$VH z$ap;Oujj_X7^3BotKZ&vo16T@LJQ5pMJRKutyp4l;{LggK8xGU(oM&+90M%d{XV() z31HX*Sip}^ic(#nl9f)5LMqOc8jP1Q#_+E-lx2gG+(9*mExGhAhr`Kbi=gFk0n;1! zLT0pExytLB7jVh&LBTuA|m6cD9aHi~>qq(73n$u`9v+7O8!*;C4 z<{2)h97XRP2F5~tSWqCKyMKoxWFPTGPC z&kykhk1g~6=w7?sXRr;MjcwETm-2R#p0xgxSEY%+?0S;IkH+`nJ^)uPb$!95MuIjmA}k^)V2z@h7EZU+f|)vbL`xZIfq3c6F!EDJQZ2+i(N?wg%G4dA6Tn0T zmoPn5*$-ft;LP4!ST-fE%dc-f<-i-B!66@_^qUz2Ff)F6-1Gy9VFw5+1D6sN1`9e0 z#;1JB<5LG%wqN*NNGD)823S1)kX==%M3ssvKs1#a@?cgCODj>TVx<_sXU)>s1Bwj#RFIqie!A{g|xgEWDaLOil3P4_ANTWUj za32Fm&(d92CQ}yjQk9h-O>&f2M-NLH&p2|#&1Vr{eV$G<+;uwS)SG60l$o(m(^Atg zW4+NoE$?`pesBJMIHKN(4iC$_7xme(Vdxz_`M^z8+jRclzO22Q#KMY8q4vY{nw5c- zqmiKyaCo2pl-!Qac|^2(Gw-%fysz2-oIE6;k@pWL%`jj(Zlhh zObUPY9Hgg>nKpN2mXBs^KB@cnv%Bg73B4~TVbO#^$p)}aZ0)b``1<&ety7n&ih0S( z$tFLR)bxSjR}L`X4&IfdF>vbUI;9rb}1sGV30(8d_bpVppUv zI8&;6_97^S5(Om-i_=y2v#MtyGR+;?>N8KB+($a&%6MJs9N z6T`?8?BR(l{y{--SKYg>vt?-C)_f0z{a-c{VB69>h@1p$;~xLMqP$cwxlqe$GPN|A zuDwcs8|7$Gp@IHHtEts%^&rv4#CB=}lZQEMPOj+Qy|380qkGw#N$NG}YpTPK-g;4~ zCCggb@5Pg+Ig((3j+;(%UD`PlUYeTm_=I7@SO&YbN@6H^-mzlOqqWEkWCiB)PW>va z`VU)K%dsP}r%yxKZ+R*Olak02KX?GN7oT>m=fFRP;FUxn|D_Is+O;>p*Eb_SUQHCH zz3O(DAX?+)METV#-%NTf&EkbbQPC@0NuD4$;;$eIW8N!5C=*39{2fG@$9snx+<{L( zcqLKD@G7rR$CVyW#OsLmxmRZZp8Cdi$BT&;s8^gvpJ1KhuOM1a-YZgk{&!j7)kOa9 zRr99d)o+p$nXFg)Z;$qM%f1=p4kz07xr@>Q~*E>X6R8Ry@&|*SO MpbvlHc?SUf7hPw{MgRZ+ diff --git a/instruments/OPL/Open Hi-hat.fui b/instruments/OPL/Open Hi-hat.fui new file mode 100644 index 0000000000000000000000000000000000000000..22b18f8d60fe36c6618503b3da6e7a8a574dff75 GIT binary patch literal 1672 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJ{0ma^6g)C@GZIS}7+4t? zm_QQzY@A>k$j1tJxY?OmfHDYqMih1OT#PLILMTEg9C=PgPJXZrD8eufKLe8k1IR=U zC)HVi@rB3l0IXlNtCJ{L4~{Qi?LmQu7qtOEXIn zixf}+0|P4q0~1I!J0l}I69>PynbN2!L9cQI*JZF|zOrfhDmL z@|=vE{9v1~O7k-?IWT}s1UdnXffN#uM`9CX{wDyi8Gx<@)pOW%;1)wSix3}T5_vWf zG8)HVi@rB3l0IXlNtCJg7XrKQWac^N^=#A7#P?Y z7??mZ{2ctOAR0`dFhCrjJP#)uh=$8EFoL*nAkW3f!Y>5pVld=689DjEHepDC1o#=4 z9Ka@W068Fx3gl6_3}}|4%KirekO+vz20#wyLDd50p{r#?^&u7=xP{QoBE*N7M4p9& z%tn_V33j3TdARd&r$mShrT!;mK1_bp9@G$kg$uAaW({CHzz8ms7!;Th;y75S#*og# TVJwltcnczaeqebG#JB(e$W1H{ literal 0 HcmV?d00001 diff --git a/instruments/OPL/Snare Drum.fui b/instruments/OPL/Snare Drum.fui new file mode 100644 index 0000000000000000000000000000000000000000..470a78dfcce082de4df275a738d7e0ce2b183548 GIT binary patch literal 1675 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJg7XrKQWac^N^=>Q*cljD zK;rx$D8#_P3gUnO6NG}1{Ort({6G#|o((1gq4~L3P(@f7Q55jAa00DD0$^L=e0~Nd z2L_N14k!jvNI)Km4Q8Smjw<^f2tXnr8XLf+7hNqQE`_MpVdbHlMTieEgggrgnT;+# z66`|v^Kj>5O@v5-l=>gZD7?&3dr(6F5m*YW0jviY!G#io0y9D!2Mg60(s?+HB~ln~ NLBtQN2S6AX004R+D~JF9 literal 0 HcmV?d00001 diff --git a/instruments/OPL/Synth Brass.fui b/instruments/OPL/Synth Brass.fui new file mode 100644 index 0000000000000000000000000000000000000000..0bb75117806979d2d51dac522d87cdb580b225e7 GIT binary patch literal 1672 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJf-Cb%G8CMO5{ru&m{=GX zfQW&Cot1%|Pk@1e6~tj+U}Ru|FkmDPfKAOn5|CI_$(ND;C^h$49iMI8B`0KjGnx)xN|Vbg(I4Bae3e27Wp*+|H2bor5B z7rLK^J0EvSgve0pe?sQN)HVi@rB3l0IXlNtCJf-Cb%G8EiPGfNVS7#LU> z7??mZe4GqS%*+f7tRN0Zh=~!*f)Tt-Ow4>h4pg3zfelq&o{N!%UkIiela}XX5^68wr_>E(U{TB(z)HVi@rB3l0IXlNtCJ!ZP!7GV>T1SQ!|YKw|8S z%&biEU_Ow?#K^!15=8(uMn*P}LZEsOU}R*0FkqxS7b6S55R8XO%X2bv@`G){lmm+J zGcY-Tt>gf5Ko}JO9Y#F(PXJ&u30(`C@3CpYDTZzqAwI+)@@ynzHoE*sunXPK!<~;a zAwnf6^*47}9w-j3rVSZ$ZS*4=k&J H7#9El`v)#q literal 0 HcmV?d00001 From e97f16e2b1ee722b51d4e7536895a254dbd9a6c7 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:04:31 -0400 Subject: [PATCH 117/580] Fix outdated documentation Will likely change other outdated parts of the docs soon --- papers/doc/1-intro/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/papers/doc/1-intro/README.md b/papers/doc/1-intro/README.md index c5729742..41cb32dc 100644 --- a/papers/doc/1-intro/README.md +++ b/papers/doc/1-intro/README.md @@ -13,10 +13,10 @@ Furnace generates sound from 3 different main types of sound sources. - Instruments are the most standard and most used type of sound source in Furnace. The instrument format is how you can specify parameters and macros for certain channels on certain soundchips, as well as binding samples and wavetables to a format that you can sequence on the note grid. See [4-instrument](https://github.com/tildearrow/furnace/tree/master/papers/doc/4-instrument) for more details. - - Wavetables are the way that you create custom waveform shapes for the HuC6280 sound chip. + - Wavetables are the way that you create custom waveform shapes for the HuC6280, Seta X1-010, WonderSwan, any PCM chip with wavetable synthesizer support, etc. Wavetables only work in the sequencer if you bind them to an instrument. See [4-instrument](https://github.com/tildearrow/furnace/tree/master/papers/doc/4-instrument) and [5-wave](https://github.com/tildearrow/furnace/tree/master/papers/doc/5-wave) for more details. - Samples are how you play back raw audio streams (samples) on certain channels, on certain soundchips, and in some cases, in certain modes. -To sequence a sample, you do not need to assign it to an instrument, however, to resample samples (change the speed of a sample), you need to bind it to an Amiga/Sample instrument. +To sequence a sample, you do not need to assign it to an instrument, however, to resample samples (change the speed of a sample), you need to bind it to a Sample instrument. See [6-sample](https://github.com/tildearrow/furnace/tree/master/papers/doc/6-sample) and [4-instrument](https://github.com/tildearrow/furnace/tree/master/papers/doc/4-instrument) for more details. ## Interface/other From e0e06c0897ca0d7bcdd7bda917fe08b78052e6cd Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:19:46 -0400 Subject: [PATCH 118/580] Add wavetable synth docs Surprised this wasn't added a while ago :p --- papers/doc/5-wave/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/papers/doc/5-wave/README.md b/papers/doc/5-wave/README.md index dacc88ea..0c32106c 100644 --- a/papers/doc/5-wave/README.md +++ b/papers/doc/5-wave/README.md @@ -2,4 +2,12 @@ Wavetable synthizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. As of Furnace 0.5.8, wavetable editor affects PC Engine, WonderSwan and channel 3 of Game Boy. -Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If a larger wave is defined for these systems, it will be squashed to fit within the constraints of the system. +Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If a larger wave is defined for these systems, it will be squashed to fit within the constraints of the system. + +## wavetable synthesizer + +Furnace contains a mode for wavetable instruments that allows you to modulate or combine 1 or 2 waves to create unique "animated" sounds. Think of it like a VST or a plugin, as it's basically an extension of regular wavetable soundchips that still allow it to run on real hardware. + +This is accomplisged by selecting a wave or two, a mode, and adjusting the settings as needed until you come up with a sound that you like, without taking up a load of space. This allows you to create unique sound effects or instruments, that, when used well, almost sound like they're Amiga samples. + +Unfortunately, on chips like the HuC6280, you cannot use the wavetable synth to animate waveforms and have them spund smooth, as the chip resets the channel's phase when a waveform is changed while the channel is playing. On certain frequencies, this can be avoided, but not on most, unfortunately. From 4ab685bb9cb95a4ff9e66099845d4a2da712cf73 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:51:05 -0400 Subject: [PATCH 119/580] Update outdated sample docs --- papers/doc/6-sample/README.md | 36 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index 87ddf0f8..952db35e 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -6,14 +6,25 @@ In Furnace, these samples can be generated by importing a .wav (think of it as a ## supported systems -As of Furnace 0.5.5, the following sound chips have sample support: - - NES/Ricoh 2A03 (PCM only, no DPCM, and only on channel 5) - - Sega Genesis/YM2612 (channel 6 only; but only if there exists a `1701` effect that gets played on or before a trigger for a sample) +As of Furnace dev99, the following sound chips have sample support: + - NES/Ricoh 2A03 (with DPCM support and only on channel 5) + - Sega Genesis/YM2612 (channel 6 only; but only if there exists a `1701` effect that gets played on or before a trigger for a sample, or if you are using an instrument with Sample type) - PC Engine/TurboGrafx 16/Huc6280 (same conditions as above) - - Amiga/Paula (on all channels AND resamplable, but you need to make an instrument with the Amiga format and tie it to a sample first) - - Arcade/SEGA PCM (same as above but you don't need to make an instrument for it and you have to use the `20xx` effect command to resample your samples) - - Neo Geo/Neo Geo EXT-Ch2 (on the last 7 channels only and can be resampled the same way as above) - - Seta/Allumer X1-010 (same as above, and both `1701` and `20xx` effect commands are affected on all 16 channels) + - Amiga/Paula (on all channels) + - Arcade/SEGA PCM (same as above) + - Neo Geo/Neo Geo CD (on the last 7 channels (6 if you are using Neo Geo CD) only and can be resampled the same way as above) + - Seta/Allumer X1-010 (same as YM2612) + - Atari Lynx (though the option is a bit hidden) + - MSM6258 and MSM6295 + - YMU759/MA-2 (last channel only) + - QSound + - ZX Spectrum 48k + - RF5C68 + - WonderSwan + - Tildearrow Sound Unit + - VERA (last channel only) + - Y8590 (last channel only) + - And a few more that I've forgotten to mention. Furnace also has a feature where you can make an Amiga formarted instrument on the YM2612 and Huc6280 to resample a sample you have in the module. @@ -22,11 +33,12 @@ Furnace also has a feature where you can make an Amiga formarted instrument on t You can actually tweak your samples in Furnace's sample editor, which can be accessed by clicking on `window` (at the top of the screen) then clicking on `sample editor`. In there, you can modify certain data pertaining to your sample, such as the: - - volume of the sample (from 0% of the original to 200% of the original) - - pitch of the sample (from 1/6 of the original sample pitch to 6x the original sample pitch) - - and the sample rate of the sample (from 1KHz (1,000Hz) to 32KHz (32,000Hz)). + - volume of the sample in percentage, where 100% is the current level of the sample (note that you can distort it if you put it too high) + - the sample rate, from 0Hz (no sample movement) to 65535Hz (65.5kHz). + - what frequencies to filter, along with filter level/sweep and resonance options (much like the C64) + - and many more. -To apply the changes you made to a sample, just click the `apply` button at the bottom, near the preview button. +The changes you make will be applied as soon as you've committed them to your sample, but they can be undoed and redoed, just like text. # tips -If you have a sample you wanna use that is about 44100 or anything over 32000Hz downsample the sample to 32000Hz so that the pitch of the sample in Furnace stays like the original wav. You can do this in Audacity by going to the Bottom Left of audacity (If you see "Project Rate (Hz)" you are there) and changing the project rate to 32000Hz and save the file to wav in Audacity using "File -> Export -> Export as WAV". +If you have a sample you wanna use that is about 44100 or anything over 32000Hz, downsample the sample to 32000Hz so that the pitch of the sample in Furnace stays like the original audio file. You can do this in Audacity by going to the bottom left of the screen (If you see "Project Rate (Hz)" you are there), change the project rate to 32000Hz and save the file to wav in Audacity using "File -> Export -> Export as WAV". From 5d8861918bd905aca238535aaee106a8347222f8 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:55:03 -0400 Subject: [PATCH 120/580] PCE has the wavetable synth now --- papers/doc/4-instrument/pce.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/papers/doc/4-instrument/pce.md b/papers/doc/4-instrument/pce.md index 50ac335b..ac0a6824 100644 --- a/papers/doc/4-instrument/pce.md +++ b/papers/doc/4-instrument/pce.md @@ -5,3 +5,5 @@ PCE instrument editor consists of only three macros, almost like TIA: - [Volume] - volume sequence - [Arpeggio] - pitch sequence - [Waveform] - spicifies wavetables sequence + +It also has wavetable synthesizer support, but unfortunately, it clicks a lot when in use on the HuC6280. From 145fc0d81370ea04f179e355875ae494a6e88617 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:58:56 -0400 Subject: [PATCH 121/580] Correct typo --- papers/doc/4-instrument/x1_010.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/x1_010.md b/papers/doc/4-instrument/x1_010.md index 8f3691ee..e6cfff9e 100644 --- a/papers/doc/4-instrument/x1_010.md +++ b/papers/doc/4-instrument/x1_010.md @@ -8,4 +8,4 @@ X1-010 instrument editor consists of 7 macros. - [Envelope Mode] - allows shaping an envelope - [Envelope] - spicifies envelope shape sequence, it's also wavetable. - [Auto envelope numerator] - sets the envelope to the channel's frequency multiplied by numerator -- [Auto envelope denominator] - ets the envelope to the channel's frequency multiplied by denominator +- [Auto envelope denominator] - sets the envelope to the channel's frequency multiplied by denominator From ccc7e88e173ae9d78f4ab3ef9dc59ec6313848d7 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 03:02:11 -0400 Subject: [PATCH 122/580] The vrc6 has 2 inst types now --- papers/doc/4-instrument/vrc6.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/vrc6.md b/papers/doc/4-instrument/vrc6.md index a4ea64a1..87d78488 100644 --- a/papers/doc/4-instrument/vrc6.md +++ b/papers/doc/4-instrument/vrc6.md @@ -1,7 +1,15 @@ # VRC6 instrument editor -VRC6 instrument editor consists of only three macros: +The VRC6 (regular) instrument editor consists of only three macros: - [Volume] - volume sequence - [Arpeggio] - pitch sequence - [Duty cycle] - specifies duty cycle for pulse wave channels + +## VRC6 (saw) instrument editor + +This channel has its own instrument, a (currently, as of dev99) one-of-a-kind thing in Furnace. + +The only differences from this instrument type from compared to the regular instrument are that it: + - has a volume range of 0-64 instead of 0-32 + - has no duty cycle range From 29b4a4e0f07a6b2a2c25cea9d7dcd9d91d375ec5 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:18:50 -0700 Subject: [PATCH 123/580] it is not hidden --- papers/doc/6-sample/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index 952db35e..d367b950 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -14,7 +14,7 @@ As of Furnace dev99, the following sound chips have sample support: - Arcade/SEGA PCM (same as above) - Neo Geo/Neo Geo CD (on the last 7 channels (6 if you are using Neo Geo CD) only and can be resampled the same way as above) - Seta/Allumer X1-010 (same as YM2612) - - Atari Lynx (though the option is a bit hidden) + - Atari Lynx - MSM6258 and MSM6295 - YMU759/MA-2 (last channel only) - QSound From acdb2b0fc3dc29c4da6cf2632c7e443a78a0eb4e Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:21:00 -0700 Subject: [PATCH 124/580] correct vrc6 volume --- papers/doc/4-instrument/vrc6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/vrc6.md b/papers/doc/4-instrument/vrc6.md index 87d78488..29cd6593 100644 --- a/papers/doc/4-instrument/vrc6.md +++ b/papers/doc/4-instrument/vrc6.md @@ -11,5 +11,5 @@ The VRC6 (regular) instrument editor consists of only three macros: This channel has its own instrument, a (currently, as of dev99) one-of-a-kind thing in Furnace. The only differences from this instrument type from compared to the regular instrument are that it: - - has a volume range of 0-64 instead of 0-32 + - has a volume range of 0-63 instead of 0-15. - has no duty cycle range From ed4710c206596cd1f2e45706f5c4775f1f13deeb Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:21:39 -0700 Subject: [PATCH 125/580] spund --- papers/doc/5-wave/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/5-wave/README.md b/papers/doc/5-wave/README.md index 0c32106c..d2bbdcbb 100644 --- a/papers/doc/5-wave/README.md +++ b/papers/doc/5-wave/README.md @@ -10,4 +10,4 @@ Furnace contains a mode for wavetable instruments that allows you to modulate or This is accomplisged by selecting a wave or two, a mode, and adjusting the settings as needed until you come up with a sound that you like, without taking up a load of space. This allows you to create unique sound effects or instruments, that, when used well, almost sound like they're Amiga samples. -Unfortunately, on chips like the HuC6280, you cannot use the wavetable synth to animate waveforms and have them spund smooth, as the chip resets the channel's phase when a waveform is changed while the channel is playing. On certain frequencies, this can be avoided, but not on most, unfortunately. +Unfortunately, on chips like the HuC6280, you cannot use the wavetable synth to animate waveforms and have them sound smooth, as the chip resets the channel's phase when a waveform is changed while the channel is playing. On certain frequencies, this can be avoided, but not on most, unfortunately. From 6fcb61818384595866f1aa12f0b829de7304898c Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:22:17 -0700 Subject: [PATCH 126/580] 0.6 :p --- papers/doc/4-instrument/vrc6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/vrc6.md b/papers/doc/4-instrument/vrc6.md index 29cd6593..bd87e050 100644 --- a/papers/doc/4-instrument/vrc6.md +++ b/papers/doc/4-instrument/vrc6.md @@ -8,7 +8,7 @@ The VRC6 (regular) instrument editor consists of only three macros: ## VRC6 (saw) instrument editor -This channel has its own instrument, a (currently, as of dev99) one-of-a-kind thing in Furnace. +This channel has its own instrument, a (currently, as of 0.6) one-of-a-kind thing in Furnace. The only differences from this instrument type from compared to the regular instrument are that it: - has a volume range of 0-63 instead of 0-15. From 2087211aeab3a385199b5544d57df2ea6ed8885e Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:23:09 -0700 Subject: [PATCH 127/580] 0.6 :p part 2 --- papers/doc/6-sample/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index d367b950..0c038fdb 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -6,7 +6,7 @@ In Furnace, these samples can be generated by importing a .wav (think of it as a ## supported systems -As of Furnace dev99, the following sound chips have sample support: +As of Furnace 0.6, the following sound chips have sample support: - NES/Ricoh 2A03 (with DPCM support and only on channel 5) - Sega Genesis/YM2612 (channel 6 only; but only if there exists a `1701` effect that gets played on or before a trigger for a sample, or if you are using an instrument with Sample type) - PC Engine/TurboGrafx 16/Huc6280 (same conditions as above) From 01057ced3a431e93b27651f1ae8a11578f830e45 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 25 Jun 2022 16:08:41 -0500 Subject: [PATCH 128/580] fix Android build --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ef3a508..9484a602 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,6 +95,7 @@ else() if (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(WITH_OUR_MALLOC ON CACHE BOOL "aaa" FORCE) endif() + set(BUILD_TESTS OFF CACHE BOOL "come on" FORCE) add_subdirectory(extern/fftw EXCLUDE_FROM_ALL) list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/fftw/api) list(APPEND DEPENDENCIES_LIBRARIES fftw3) From 6381e98df6085dd15457c3205ba6c69e718692a1 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 16:37:50 -0700 Subject: [PATCH 129/580] divided --- papers/doc/4-instrument/x1_010.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/x1_010.md b/papers/doc/4-instrument/x1_010.md index e6cfff9e..c76cbcb5 100644 --- a/papers/doc/4-instrument/x1_010.md +++ b/papers/doc/4-instrument/x1_010.md @@ -8,4 +8,4 @@ X1-010 instrument editor consists of 7 macros. - [Envelope Mode] - allows shaping an envelope - [Envelope] - spicifies envelope shape sequence, it's also wavetable. - [Auto envelope numerator] - sets the envelope to the channel's frequency multiplied by numerator -- [Auto envelope denominator] - sets the envelope to the channel's frequency multiplied by denominator +- [Auto envelope denominator] - sets the envelope to the channel's frequency divided by denominator From 5507fd9f333c052da3d3a2f147e0b154b3aa1479 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 03:23:13 -0500 Subject: [PATCH 130/580] fix Windows file picker filter not working at all --- extern/nfd-modified/src/nfd_win.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/extern/nfd-modified/src/nfd_win.cpp b/extern/nfd-modified/src/nfd_win.cpp index 2e7f4000..9273bb1e 100644 --- a/extern/nfd-modified/src/nfd_win.cpp +++ b/extern/nfd-modified/src/nfd_win.cpp @@ -211,7 +211,8 @@ static nfdresult_t AddFiltersToDialog( ::IFileDialog *fileOpenDialog, const std: // Count rows to alloc UINT filterCount = filterList.size()>>1; /* guaranteed to have one filter on a correct, non-empty parse */ - assert(filterCount); + if (filterCount==0) filterCount=1; + if ( !filterCount ) { NFDi_SetError("Error parsing filters."); @@ -219,12 +220,12 @@ static nfdresult_t AddFiltersToDialog( ::IFileDialog *fileOpenDialog, const std: } /* filterCount plus 1 because we hardcode the *.* wildcard after the while loop */ - COMDLG_FILTERSPEC *specList = (COMDLG_FILTERSPEC*)NFDi_Malloc( sizeof(COMDLG_FILTERSPEC) * ((size_t)filterCount + 1) ); + COMDLG_FILTERSPEC *specList = (COMDLG_FILTERSPEC*)NFDi_Malloc( sizeof(COMDLG_FILTERSPEC) * ((size_t)filterCount) ); if ( !specList ) { return NFD_ERROR; } - for (UINT i = 0; i < filterCount+1; ++i ) + for (UINT i = 0; i < filterCount; ++i ) { specList[i].pszName = NULL; specList[i].pszSpec = NULL; @@ -236,19 +237,22 @@ static nfdresult_t AddFiltersToDialog( ::IFileDialog *fileOpenDialog, const std: String name=filterList[i]; String spec=filterList[i+1]; for (char& i: spec) { - if (i==' ') i=','; + if (i==' ') i=';'; } + if (spec==".*") spec="*.*"; CopyNFDCharToWChar( name.c_str(), (wchar_t**)&specList[specIdx].pszName ); CopyNFDCharToWChar( spec.c_str(), (wchar_t**)&specList[specIdx].pszSpec ); ++specIdx; } - /* Add wildcard */ - specList[specIdx].pszSpec = WILDCARD; - specList[specIdx].pszName = WILDCARD; + /* Add wildcard if specIdx is 0 */ + if (specIdx==0) { + specList[specIdx].pszSpec = WILDCARD; + specList[specIdx].pszName = WILDCARD; + } - fileOpenDialog->SetFileTypes( filterCount+1, specList ); + fileOpenDialog->SetFileTypes( filterCount, specList ); /* free speclist */ for ( size_t i = 0; i < filterCount; ++i ) From f8347ac50f7ff1e7e38bcd3f86d415465453e741 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 03:30:57 -0500 Subject: [PATCH 131/580] GUI: fix several things in OPL drums ins editor - alternate layout being wrong - macros being wrong --- src/gui/insEdit.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 275a34f9..646be8b5 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2285,6 +2285,7 @@ void FurnaceGUI::drawInsEdit() { break; case DIV_INS_OPL: + case DIV_INS_OPL_DRUMS: // waveform drawWaveform(op.ws&7,ins->type==DIV_INS_OPZ,ImVec2(waveWidth,waveHeight)); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); @@ -3401,7 +3402,7 @@ void FurnaceGUI::drawInsEdit() { if ((ins->type==DIV_INS_PCE || ins->type==DIV_INS_AY8930)) { volMax=31; } - if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_VERA || ins->type==DIV_INS_VRC6_SAW) { + if (ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_VERA || ins->type==DIV_INS_VRC6_SAW) { volMax=63; } if (ins->type==DIV_INS_AMIGA) { @@ -3463,7 +3464,7 @@ void FurnaceGUI::drawInsEdit() { dutyLabel="Noise"; dutyMax=8; } - if (ins->type==DIV_INS_OPLL || ins->type==DIV_INS_OPL || ins->type==DIV_INS_VRC6_SAW || ins->type==DIV_INS_FDS || ins->type==DIV_INS_MULTIPCM) { + if (ins->type==DIV_INS_OPLL || ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_VRC6_SAW || ins->type==DIV_INS_FDS || ins->type==DIV_INS_MULTIPCM) { dutyMax=0; } if (ins->type==DIV_INS_VERA) { @@ -3492,7 +3493,7 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_TIA || ins->type==DIV_INS_VIC || ins->type==DIV_INS_OPLL) waveMax=15; if (ins->type==DIV_INS_C64) waveMax=4; if (ins->type==DIV_INS_SAA1099) waveMax=2; - if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPZ) waveMax=0; + if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPZ) waveMax=0; if (ins->type==DIV_INS_MIKEY) waveMax=0; if (ins->type==DIV_INS_MULTIPCM) waveMax=0; if (ins->type==DIV_INS_SU) waveMax=7; @@ -3544,6 +3545,7 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_STD ||//Game Gear ins->type==DIV_INS_FM || ins->type==DIV_INS_OPL || + ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_GB || ins->type==DIV_INS_OPZ || ins->type==DIV_INS_VERA) { @@ -3607,6 +3609,7 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_FM || ins->type==DIV_INS_STD || ins->type==DIV_INS_OPL || + ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPZ || ins->type==DIV_INS_PCE || ins->type==DIV_INS_GB || From 7ea49d7e840fc21c760db1e28d137c84b08e02b1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 03:39:42 -0500 Subject: [PATCH 132/580] what? --- src/engine/fileOpsIns.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index bf83a2dc..a2cc6534 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -192,7 +192,13 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St ins->fm.ops=reader.readC()?4:2; } } else { - ins->fm.ops=reader.readC()?2:4; + // HELP + if (reader.size()==49) { + ins->fm.ops=4; + reader.readC(); + } else { + ins->fm.ops=reader.readC()?2:4; + } } } else { ins->fm.ops=4; From 869fe23036081e25858ff94d5dc10e3f4fa6b07d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 03:44:09 -0500 Subject: [PATCH 133/580] fix .y12 TL loading --- src/engine/fileOpsIns.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index a2cc6534..b7ca22c1 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -841,8 +841,9 @@ void DivEngine::loadY12(SafeReader& reader, std::vector& ret, St DivInstrumentFM::Operator& insOp = ins->fm.op[i]; uint8_t tmp = reader.readC(); insOp.mult = tmp & 0xF; - insOp.dt = ((tmp >> 4) & 0x7); - insOp.tl = (reader.readC() & 0x3F); + // ??? + insOp.dt = ((3 + (tmp >> 4)) & 0x7); + insOp.tl = (reader.readC() & 0x7F); tmp = reader.readC(); insOp.rs = ((tmp >> 6) & 0x3); insOp.ar = tmp & 0x1F; From fef09fb00dbb40f23f9ace336ebbd9f5407bbda9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 03:55:55 -0500 Subject: [PATCH 134/580] fix major per-channel audio export issue in ExtCh --- src/engine/engine.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 149a5b9f..3c61269b 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -482,6 +482,7 @@ void DivEngine::runExportThread() { while (true) { if (i>=chans) break; if (getChannelType(i)!=5) break; + i++; } i--; } From b04743d0455498a1e6108e190646a5a2580d93a4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 04:09:24 -0500 Subject: [PATCH 135/580] SMS: implement Game Gear stereo in Nuked core --- extern/Nuked-PSG/ympsg.c | 62 +++++++++++++++++++++++++++++-------- extern/Nuked-PSG/ympsg.h | 7 +++-- src/engine/platform/sms.cpp | 16 +++++++--- 3 files changed, 65 insertions(+), 20 deletions(-) diff --git a/extern/Nuked-PSG/ympsg.c b/extern/Nuked-PSG/ympsg.c index 935b43ea..0cc065ed 100644 --- a/extern/Nuked-PSG/ympsg.c +++ b/extern/Nuked-PSG/ympsg.c @@ -245,6 +245,11 @@ void YMPSG_Write(ympsg_t *chip, uint8_t data) chip->write_flag = 1; } +void YMPSG_WriteStereo(ympsg_t *chip, uint8_t data) +{ + chip->stereo = data; +} + uint16_t YMPSG_Read(ympsg_t *chip) { uint16_t data = 0; @@ -265,6 +270,7 @@ void YMPSG_Init(ympsg_t *chip, uint8_t real_sn, uint8_t noise_tap1, uint8_t nois chip->noise_tap1 = noise_tap1; chip->noise_tap2 = noise_tap2; chip->noise_size = noise_size; + chip->stereo = 0xff; for (i = 0; i < 17; i++) { chip->vol_table[i]=(real_sn?tipsg_vol[i]:ympsg_vol[i]) * 8192.0f; @@ -316,32 +322,62 @@ void YMPSG_Clock(ympsg_t *chip) } } -int YMPSG_GetOutput(ympsg_t *chip) +void YMPSG_GetOutput(ympsg_t *chip, int* left, int* right) { - int sample = 0; + int sample_left = 0; + int sample_right = 0; uint32_t i; YMPSG_UpdateSample(chip); if (chip->test & 1) { - sample += chip->vol_table[chip->volume_out[chip->test >> 1]]; - sample += chip->vol_table[16] * 3; + sample_left += chip->vol_table[chip->volume_out[chip->test >> 1]]; + sample_left += chip->vol_table[16] * 3; + sample_right += chip->vol_table[chip->volume_out[chip->test >> 1]]; + sample_right += chip->vol_table[16] * 3; } else if (!chip->mute) { - sample += chip->vol_table[chip->volume_out[0]]; - sample += chip->vol_table[chip->volume_out[1]]; - sample += chip->vol_table[chip->volume_out[2]]; - sample += chip->vol_table[chip->volume_out[3]]; + if (chip->stereo&(0x10)) { + sample_left += chip->vol_table[chip->volume_out[0]]; + } + if (chip->stereo&(0x01)) { + sample_right += chip->vol_table[chip->volume_out[0]]; + } + if (chip->stereo&(0x20)) { + sample_left += chip->vol_table[chip->volume_out[1]]; + } + if (chip->stereo&(0x02)) { + sample_right += chip->vol_table[chip->volume_out[1]]; + } + if (chip->stereo&(0x40)) { + sample_left += chip->vol_table[chip->volume_out[2]]; + } + if (chip->stereo&(0x04)) { + sample_right += chip->vol_table[chip->volume_out[2]]; + } + if (chip->stereo&(0x80)) { + sample_left += chip->vol_table[chip->volume_out[3]]; + } + if (chip->stereo&(0x08)) { + sample_right += chip->vol_table[chip->volume_out[3]]; + } } else { for (i = 0; i < 4; i++) { - if (!((chip->mute>>i) & 1)) - sample += chip->vol_table[chip->volume_out[i]]; + if (!((chip->mute>>i) & 1)) { + if (chip->stereo&(0x10<vol_table[chip->volume_out[i]]; + } + if (chip->stereo&(0x01<vol_table[chip->volume_out[i]]; + } + } } } - return sample; + *left=sample_left; + *right=sample_right; } void YMPSG_Test(ympsg_t *chip, uint16_t test) @@ -349,7 +385,7 @@ void YMPSG_Test(ympsg_t *chip, uint16_t test) chip->test = (test >> 9) & 7; } - +/* void YMPSG_Generate(ympsg_t *chip, int32_t *buf) { uint32_t i; @@ -373,7 +409,7 @@ void YMPSG_Generate(ympsg_t *chip, int32_t *buf) } out = YMPSG_GetOutput(chip); *buf = (int32_t)(out * 8192.f); -} +}*/ void YMPSG_WriteBuffered(ympsg_t *chip, uint8_t data) { diff --git a/extern/Nuked-PSG/ympsg.h b/extern/Nuked-PSG/ympsg.h index 97e039e3..bb3f6009 100644 --- a/extern/Nuked-PSG/ympsg.h +++ b/extern/Nuked-PSG/ympsg.h @@ -52,6 +52,8 @@ typedef struct { uint8_t test; uint8_t volume_out[4]; + uint8_t stereo; + // uint64_t writebuf_samplecnt; uint32_t writebuf_cur; @@ -68,15 +70,16 @@ typedef struct { void YMPSG_Write(ympsg_t *chip, uint8_t data); +void YMPSG_WriteStereo(ympsg_t *chip, uint8_t data); uint16_t YMPSG_Read(ympsg_t *chip); void YMPSG_Init(ympsg_t *chip, uint8_t real_sn, uint8_t noise_tap1, uint8_t noise_tap2, uint32_t noise_size); void YMPSG_SetIC(ympsg_t *chip, uint32_t ic); void YMPSG_Clock(ympsg_t *chip); -int YMPSG_GetOutput(ympsg_t *chip); +void YMPSG_GetOutput(ympsg_t *chip, int* left, int* right); void YMPSG_Test(ympsg_t *chip, uint16_t test); -void YMPSG_Generate(ympsg_t *chip, int32_t *buf); +//void YMPSG_Generate(ympsg_t *chip, int32_t *buf); void YMPSG_WriteBuffered(ympsg_t *chip, uint8_t data); void YMPSG_SetMute(ympsg_t *chip, uint8_t mute); diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 0556d2e4..f16d5335 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -48,12 +48,15 @@ const char* DivPlatformSMS::getEffectName(unsigned char effect) { } void DivPlatformSMS::acquire_nuked(short* bufL, short* bufR, size_t start, size_t len) { - int o=0; + int oL=0; + int oR=0; for (size_t h=start; h32767) o=32767; - bufL[h]=bufR[h]=o; + YMPSG_GetOutput(&sn_nuked,&oL,&oR); + if (oL<-32768) oL=-32768; + if (oL>32767) oL=32767; + if (oR<-32768) oR=-32768; + if (oR>32767) oR=32767; + bufL[h]=oL; + bufR[h]=oR; for (int i=0; i<4; i++) { if (isMuted[i]) { oscBuf[i]->data[oscBuf[i]->needle++]=0; From 32ca9e6b0f09013385eaef9c3789a87b34666a7d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 04:58:25 -0500 Subject: [PATCH 136/580] remember last dir when using NFD --- src/gui/fileDialog.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index f9d4ac4d..f64f72cb 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -148,6 +148,8 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { #ifdef USE_NFD if (dialogOK) { fileName=nfdResult; + size_t dsPos=fileName.rfind(DIR_SEPARATOR); + if (dsPos!=String::npos) curPath=fileName.substr(0,dsPos); logD("returning %s",fileName.c_str()); dialogOK=false; return true; From fc489239c209f0c267d1a6536ab2562874e139bf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 27 Jun 2022 05:04:23 -0500 Subject: [PATCH 137/580] tildearrow Sound Unit no longer a secret --- src/gui/gui.cpp | 4 ++-- src/gui/presets.cpp | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index bc309bc4..642572d3 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2888,7 +2888,7 @@ bool FurnaceGUI::loop() { ImGui::Separator(); if (ImGui::BeginMenu("add system...")) { for (int j=0; availableSystems[j]; j++) { - if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY || availableSystems[j]==DIV_SYSTEM_SOUND_UNIT)) continue; + if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY)) continue; sysAddOption((DivSystem)availableSystems[j]); } ImGui::EndMenu(); @@ -2907,7 +2907,7 @@ bool FurnaceGUI::loop() { for (int i=0; isong.systemLen; i++) { if (ImGui::BeginMenu(fmt::sprintf("%d. %s##_SYSC%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { for (int j=0; availableSystems[j]; j++) { - if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY || availableSystems[j]==DIV_SYSTEM_SOUND_UNIT)) continue; + if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY)) continue; sysChangeOption(i,(DivSystem)availableSystems[j]); } ImGui::EndMenu(); diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 67acca82..a30d4eab 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -490,13 +490,13 @@ void FurnaceGUI::initSystemPresets() { 0 } )); - cat.systems.push_back(FurnaceGUISysDef( - "tildearrow Sound Unit", { - DIV_SYSTEM_SOUND_UNIT, 64, 0, 0, - 0 - } - )); } + cat.systems.push_back(FurnaceGUISysDef( + "tildearrow Sound Unit", { + DIV_SYSTEM_SOUND_UNIT, 64, 0, 0, + 0 + } + )); sysCategories.push_back(cat); cat=FurnaceGUISysCategory("Game consoles","let's play some chiptune making games!"); From e2449d91f1860846f8de816d0d190af6d7f0af63 Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Mon, 27 Jun 2022 19:37:45 +0700 Subject: [PATCH 138/580] VERA: Run noise generation in each channel update --- src/engine/platform/sound/vera_psg.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/engine/platform/sound/vera_psg.c b/src/engine/platform/sound/vera_psg.c index 19f15d4e..fe1cf6b3 100644 --- a/src/engine/platform/sound/vera_psg.c +++ b/src/engine/platform/sound/vera_psg.c @@ -20,8 +20,8 @@ void psg_reset(struct VERA_PSG* psg) { memset(psg->channels, 0, sizeof(psg->channels)); - psg->noiseState=1; - psg->noiseOut=0; + psg->noiseOut = 0; + psg->noiseState = 1; } void @@ -54,10 +54,14 @@ render(struct VERA_PSG* psg, int16_t *left, int16_t *right) { int l = 0; int r = 0; - psg->noiseOut=((psg->noiseOut<<1)|(psg->noiseState&1))&63; - psg->noiseState=(psg->noiseState<<1)|(((psg->noiseState>>1)^(psg->noiseState>>2)^(psg->noiseState>>4)^(psg->noiseState>>15))&1); for (int i = 0; i < 16; i++) { + // In FPGA implementation, noise values are generated every system clock and + // the channel update is run sequentially. So, even if both two channels are + // fetching a noise value in the same sample, they should have different values + psg->noiseOut = ((psg->noiseOut << 1) | (psg->noiseState & 1)) & 63; + psg->noiseState = (psg->noiseState << 1) | (((psg->noiseState >> 1) ^ (psg->noiseState >> 2) ^ (psg->noiseState >> 4) ^ (psg->noiseState >> 15)) & 1); + struct VERAChannel *ch = &psg->channels[i]; unsigned new_phase = (ch->phase + ch->freq) & 0x1FFFF; @@ -87,11 +91,11 @@ render(struct VERA_PSG* psg, int16_t *left, int16_t *right) r += val; } - if (ch->left || ch->right) { - ch->lastOut=val; - } else { - ch->lastOut=0; - } + if (ch->left || ch->right) { + ch->lastOut = val; + } else { + ch->lastOut = 0; + } } *left = l; @@ -104,6 +108,6 @@ psg_render(struct VERA_PSG* psg, int16_t *bufL, int16_t *bufR, unsigned num_samp while (num_samples--) { render(psg, bufL, bufR); bufL++; - bufR++; + bufR++; } } From f483292a88dc1e89bd5ced889f1f921289006757 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 28 Jun 2022 01:16:46 -0500 Subject: [PATCH 139/580] OPN[A/B/2]?: implement 18xx effect --- src/engine/platform/fmshared_OPN.h | 6 ++++-- src/engine/platform/genesis.cpp | 7 +++++++ src/engine/platform/genesisext.cpp | 12 +++++++++++- src/engine/platform/ym2203.cpp | 7 +++++++ src/engine/platform/ym2203ext.cpp | 10 ++++++++++ src/engine/platform/ym2608.cpp | 7 +++++++ src/engine/platform/ym2608ext.cpp | 10 ++++++++++ src/engine/platform/ym2610.cpp | 7 +++++++ src/engine/platform/ym2610b.cpp | 7 +++++++ src/engine/platform/ym2610bext.cpp | 12 +++++++++++- src/engine/platform/ym2610ext.cpp | 12 +++++++++++- 11 files changed, 92 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/fmshared_OPN.h b/src/engine/platform/fmshared_OPN.h index 0aaad16d..406d7281 100644 --- a/src/engine/platform/fmshared_OPN.h +++ b/src/engine/platform/fmshared_OPN.h @@ -104,12 +104,14 @@ class DivPlatformOPN: public DivPlatformFMBase { double fmFreqBase; unsigned int fmDivBase; unsigned int ayDiv; + bool extSys; - DivPlatformOPN(double f=9440540.0, unsigned int d=72, unsigned int a=32): + DivPlatformOPN(double f=9440540.0, unsigned int d=72, unsigned int a=32, bool isExtSys=false): DivPlatformFMBase(), fmFreqBase(f), fmDivBase(d), - ayDiv(a) {} + ayDiv(a), + extSys(isExtSys) {} }; diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index b3afdd2a..fa06a699 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -886,6 +886,13 @@ int DivPlatformGenesis::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + if (extSys) { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + } + break; + } case DIV_CMD_FM_LFO: { if (c.chan>=6) break; lfoValue=(c.value&7)|((c.value>>4)<<3); diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index cd4d603c..1c44bcfb 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -34,6 +34,10 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) { } int ch=c.chan-2; int ordch=orderedOps[ch]; + if (!extMode) { + c.chan=2; + return DivPlatformGenesis::dispatch(c); + } switch (c.cmd) { case DIV_CMD_NOTE_ON: { DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); @@ -173,6 +177,11 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) { opChan[ch].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + break; + } case DIV_CMD_FM_LFO: { lfoValue=(c.value&7)|((c.value>>4)<<3); rWrite(0x22,lfoValue); @@ -489,7 +498,7 @@ void DivPlatformGenesisExt::forceIns() { for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; - if (i==2) { // extended channel + if (i==2 && extMode) { // extended channel if (isOpMuted[j]) { rWrite(baseAddr+0x40,127); } else if (isOutput[chan[i].state.alg][j]) { @@ -592,6 +601,7 @@ int DivPlatformGenesisExt::init(DivEngine* parent, int channels, int sugRate, un for (int i=0; i<4; i++) { isOpMuted[i]=false; } + extSys=true; reset(); return 13; diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index e0bbe1a3..83c93c58 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -659,6 +659,13 @@ int DivPlatformYM2203::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + if (extSys) { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + } + break; + } case DIV_CMD_FM_FB: { if (c.chan>2) break; chan[c.chan].state.fb=c.value&7; diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index d3fd3487..3ff24eb7 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -34,6 +34,10 @@ int DivPlatformYM2203Ext::dispatch(DivCommand c) { } int ch=c.chan-2; int ordch=orderedOps[ch]; + if (!extMode) { + c.chan=2; + return DivPlatformYM2203::dispatch(c); + } switch (c.cmd) { case DIV_CMD_NOTE_ON: { DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); @@ -151,6 +155,11 @@ int DivPlatformYM2203Ext::dispatch(DivCommand c) { opChan[ch].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + break; + } case DIV_CMD_FM_LFO: { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; @@ -514,6 +523,7 @@ int DivPlatformYM2203Ext::init(DivEngine* parent, int channels, int sugRate, uns for (int i=0; i<4; i++) { isOpMuted[i]=false; } + extSys=true; reset(); return 9; diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 733f0481..b70efaf0 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -988,6 +988,13 @@ int DivPlatformYM2608::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + if (extSys) { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + } + break; + } case DIV_CMD_FM_LFO: { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index 91c3a897..63503ccc 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -34,6 +34,10 @@ int DivPlatformYM2608Ext::dispatch(DivCommand c) { } int ch=c.chan-2; int ordch=orderedOps[ch]; + if (!extMode) { + c.chan=2; + return DivPlatformYM2608::dispatch(c); + } switch (c.cmd) { case DIV_CMD_NOTE_ON: { DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); @@ -151,6 +155,11 @@ int DivPlatformYM2608Ext::dispatch(DivCommand c) { opChan[ch].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + break; + } case DIV_CMD_FM_LFO: { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; @@ -528,6 +537,7 @@ int DivPlatformYM2608Ext::init(DivEngine* parent, int channels, int sugRate, uns for (int i=0; i<4; i++) { isOpMuted[i]=false; } + extSys=true; reset(); return 19; diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index bed59c20..1a67c428 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -1032,6 +1032,13 @@ int DivPlatformYM2610::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + if (extSys) { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + } + break; + } case DIV_CMD_FM_LFO: { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index a2291c3f..600c89fd 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -1014,6 +1014,13 @@ int DivPlatformYM2610B::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + if (extSys) { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + } + break; + } case DIV_CMD_FM_LFO: { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index b5e1ac9f..7c8247ff 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -34,6 +34,10 @@ int DivPlatformYM2610BExt::dispatch(DivCommand c) { } int ch=c.chan-2; int ordch=orderedOps[ch]; + if (!extMode) { + c.chan=2; + return DivPlatformYM2610B::dispatch(c); + } switch (c.cmd) { case DIV_CMD_NOTE_ON: { DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); @@ -151,6 +155,11 @@ int DivPlatformYM2610BExt::dispatch(DivCommand c) { opChan[ch].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + break; + } case DIV_CMD_FM_LFO: { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; @@ -427,7 +436,7 @@ void DivPlatformYM2610BExt::forceIns() { for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; - if (i==2) { // extended channel + if (i==2 && extMode) { // extended channel if (isOpMuted[j]) { rWrite(baseAddr+0x40,127); } else if (isOutput[chan[i].state.alg][j]) { @@ -528,6 +537,7 @@ int DivPlatformYM2610BExt::init(DivEngine* parent, int channels, int sugRate, un for (int i=0; i<4; i++) { isOpMuted[i]=false; } + extSys=true; reset(); return 19; diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index 6f9c8700..b2bd06a8 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -34,6 +34,10 @@ int DivPlatformYM2610Ext::dispatch(DivCommand c) { } int ch=c.chan-1; int ordch=orderedOps[ch]; + if (!extMode) { + c.chan=2; + return DivPlatformYM2610::dispatch(c); + } switch (c.cmd) { case DIV_CMD_NOTE_ON: { DivInstrument* ins=parent->getIns(opChan[ch].ins,DIV_INS_FM); @@ -151,6 +155,11 @@ int DivPlatformYM2610Ext::dispatch(DivCommand c) { opChan[ch].freqChanged=true; break; } + case DIV_CMD_FM_EXTCH: { + extMode=c.value; + immWrite(0x27,extMode?0x40:0); + break; + } case DIV_CMD_FM_LFO: { rWrite(0x22,(c.value&7)|((c.value>>4)<<3)); break; @@ -427,7 +436,7 @@ void DivPlatformYM2610Ext::forceIns() { for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; - if (i==1) { // extended channel + if (i==1 && extMode) { // extended channel if (isOpMuted[j]) { rWrite(baseAddr+0x40,127); } else if (isOutput[chan[i].state.alg][j]) { @@ -528,6 +537,7 @@ int DivPlatformYM2610Ext::init(DivEngine* parent, int channels, int sugRate, uns for (int i=0; i<4; i++) { isOpMuted[i]=false; } + extSys=true; reset(); return 17; From be7d7002e2d3f1753f0c2c702fce380f4f0aa2ab Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 28 Jun 2022 02:00:08 -0500 Subject: [PATCH 140/580] fix opening/saving audio files with non-ASCII char s on Windows this required making a wrapper... --- CMakeLists.txt | 4 ++ src/engine/engine.cpp | 26 +++++---- src/engine/playback.cpp | 3 -- src/engine/sample.cpp | 7 +-- src/engine/sfWrapper.cpp | 112 +++++++++++++++++++++++++++++++++++++++ src/engine/sfWrapper.h | 54 +++++++++++++++++++ 6 files changed, 189 insertions(+), 17 deletions(-) create mode 100644 src/engine/sfWrapper.cpp create mode 100644 src/engine/sfWrapper.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 9484a602..5312692a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -451,6 +451,10 @@ src/engine/platform/rf5c68.cpp src/engine/platform/dummy.cpp ) +if (USE_SNDFILE) + list(APPEND ENGINE_SOURCES src/engine/sfWrapper.cpp) +endif() + if (WIN32) list(APPEND ENGINE_SOURCES src/utfutils.cpp) list(APPEND ENGINE_SOURCES src/engine/winStuff.cpp) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 3c61269b..47833ca9 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -37,7 +37,7 @@ #endif #include #ifdef HAVE_SNDFILE -#include +#include "sfWrapper.h" #endif #include @@ -200,11 +200,12 @@ void DivEngine::runExportThread() { case DIV_EXPORT_MODE_ONE: { SNDFILE* sf; SF_INFO si; + SFWrapper sfWrap; si.samplerate=got.rate; si.channels=2; si.format=SF_FORMAT_WAV|SF_FORMAT_PCM_16; - sf=sf_open(exportPath.c_str(),SFM_WRITE,&si); + sf=sfWrap.doOpen(exportPath.c_str(),SFM_WRITE,&si); if (sf==NULL) { logE("could not open file for writing! (%s)",sf_strerror(NULL)); exporting=false; @@ -259,7 +260,7 @@ void DivEngine::runExportThread() { delete[] outBuf[1]; delete[] outBuf[2]; - if (sf_close(sf)!=0) { + if (sfWrap.doClose()!=0) { logE("could not close audio file!"); } exporting=false; @@ -280,6 +281,7 @@ void DivEngine::runExportThread() { SNDFILE* sf[32]; SF_INFO si[32]; String fname[32]; + SFWrapper sfWrap[32]; for (int i=0; i16777215) { lastError="this sample is too big! max sample size is 16777215."; - sf_close(f); + sfWrap.doClose(); BUSY_END; return -1; } @@ -2301,7 +2305,7 @@ int DivEngine::addSampleFromFile(const char* path) { if (sample->centerRate<4000) sample->centerRate=4000; if (sample->centerRate>64000) sample->centerRate=64000; - sf_close(f); + sfWrap.doClose(); saveLock.lock(); song.sample.push_back(sample); song.sampleLen=sampleCount+1; diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index f8cb79ac..02d3228f 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -24,9 +24,6 @@ #include "engine.h" #include "../ta-log.h" #include -#ifdef HAVE_SNDFILE -#include -#endif constexpr int MASTER_CLOCK_PREC=(sizeof(void*)==8)?8:0; diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index 36886856..908b9a0d 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -22,7 +22,7 @@ #include #include #ifdef HAVE_SNDFILE -#include +#include "sfWrapper.h" #endif #include "filter.h" @@ -45,6 +45,7 @@ bool DivSample::save(const char* path) { #else SNDFILE* f; SF_INFO si; + SFWrapper sfWrap; memset(&si,0,sizeof(SF_INFO)); if (length16<1) return false; @@ -60,7 +61,7 @@ bool DivSample::save(const char* path) { break; } - f=sf_open(path,SFM_WRITE,&si); + f=sfWrap.doOpen(path,SFM_WRITE,&si); if (f==NULL) { logE("could not open wave file for saving! %s",sf_error_number(sf_error(f))); @@ -100,7 +101,7 @@ bool DivSample::save(const char* path) { break; } - sf_close(f); + sfWrap.doClose(); return true; #endif diff --git a/src/engine/sfWrapper.cpp b/src/engine/sfWrapper.cpp new file mode 100644 index 00000000..f71bff34 --- /dev/null +++ b/src/engine/sfWrapper.cpp @@ -0,0 +1,112 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "sfWrapper.h" +#include "../fileutils.h" + +sf_count_t _vioGetSize(void* user) { + return ((SFWrapper*)user)->ioGetSize(); +} + +sf_count_t _vioSeek(sf_count_t offset, int whence, void* user) { + return ((SFWrapper*)user)->ioSeek(offset,whence); +} + +sf_count_t _vioRead(void* ptr, sf_count_t count, void* user) { + return ((SFWrapper*)user)->ioRead(ptr,count); +} + +sf_count_t _vioWrite(const void* ptr, sf_count_t count, void* user) { + return ((SFWrapper*)user)->ioWrite(ptr,count); +} + +sf_count_t _vioTell(void* user) { + return ((SFWrapper*)user)->ioTell(); +} + +sf_count_t SFWrapper::ioGetSize() { + return (sf_count_t)len; +} + +sf_count_t SFWrapper::ioSeek(sf_count_t offset, int whence) { + return fseek(f,offset,whence); +} + +sf_count_t SFWrapper::ioRead(void* ptr, sf_count_t count) { + return fread(ptr,1,count,f); +} + +sf_count_t SFWrapper::ioWrite(const void* ptr, sf_count_t count) { + return fwrite(ptr,1,count,f); +} + +sf_count_t SFWrapper::ioTell() { + return ftell(f); +} + +int SFWrapper::doClose() { + int ret=sf_close(sf); + fclose(f); + return ret; +} + +SNDFILE* SFWrapper::doOpen(const char* path, int mode, SF_INFO* sfinfo) { + vio.get_filelen=_vioGetSize; + vio.read=_vioRead; + vio.seek=_vioSeek; + vio.tell=_vioTell; + vio.write=_vioWrite; + + const char* modeC="rb"; + if (mode==SFM_WRITE) { + modeC="wb"; + } + if (mode==SFM_RDWR) { + modeC="rb+"; + } + + f=ps_fopen(path,modeC); + if (f==NULL) { + return NULL; + } + + if (fseek(f,0,SEEK_END)==-1) { + fclose(f); + f=NULL; + return NULL; + } + + len=ftell(f); + if (len==(SIZE_MAX>>1)) { + len=0; + fclose(f); + f=NULL; + return NULL; + } + + if (fseek(f,0,SEEK_SET)==-1) { + len=0; + fclose(f); + f=NULL; + return NULL; + } + + sf=sf_open_virtual(&vio,mode,sfinfo,this); + return sf; +} \ No newline at end of file diff --git a/src/engine/sfWrapper.h b/src/engine/sfWrapper.h new file mode 100644 index 00000000..32387159 --- /dev/null +++ b/src/engine/sfWrapper.h @@ -0,0 +1,54 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +// sfWrapper.h: libsndfile FILE* wrapper to work around Windows issue with +// non-ASCII chars in file path +// I wanted to do this in sndfile directly, but it's a +// submodule... + +#ifndef _SFWRAPPER_H +#define _SFWRAPPER_H +#include +#include +#include +#include +#include "../ta-utils.h" + +class SFWrapper { + FILE* f; + size_t len; + SF_VIRTUAL_IO vio; + SNDFILE* sf; + + public: + sf_count_t ioGetSize(); + sf_count_t ioSeek(sf_count_t offset, int whence); + sf_count_t ioRead(void* ptr, sf_count_t count); + sf_count_t ioWrite(const void* ptr, sf_count_t count); + sf_count_t ioTell(); + + int doClose(); + SNDFILE* doOpen(const char* path, int mode, SF_INFO* sfinfo); + SFWrapper(): + f(NULL), + len(0), + sf(NULL) {} +}; + +#endif From 13f14b68547df99bf5836e0c3c56543384a8f102 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 28 Jun 2022 12:55:14 -0500 Subject: [PATCH 141/580] SoundUnit: fix copy-paste blunder --- src/engine/platform/su.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 692fbbee..c6860afb 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -74,10 +74,10 @@ const char* DivPlatformSoundUnit::getEffectName(unsigned char effect) { return "1Dxx: Set cutoff sweep boundary"; break; case 0x1e: - return "17xx: Set phase reset period low byte"; + return "1Exx: Set phase reset period low byte"; break; case 0x1f: - return "18xx: Set phase reset period high byte"; + return "1Fxx: Set phase reset period high byte"; break; case 0x20: return "20xx: Toggle frequency sweep (bit 0-6: speed; bit 7: direction is up)"; From 96bc63470f342133ec20064e6411d362c8f2ce39 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 28 Jun 2022 15:06:22 -0500 Subject: [PATCH 142/580] GUI: add unsigned detune option closes #559 --- src/gui/gui.h | 2 ++ src/gui/insEdit.cpp | 16 ++++++++-------- src/gui/settings.cpp | 8 ++++++++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 1abe9d9e..b3393a5a 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1086,6 +1086,7 @@ class FurnaceGUI { int doubleClickColumn; int blankIns; int dragMovesSelection; + int unsignedDetune; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1187,6 +1188,7 @@ class FurnaceGUI { doubleClickColumn(1), blankIns(0), dragMovesSelection(1), + unsignedDetune(0), maxUndoSteps(100), mainFontPath(""), patFontPath(""), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 646be8b5..45f7c675 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1894,11 +1894,11 @@ void FurnaceGUI::drawInsEdit() { } if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { - int detune=(op.dt&7)-3; + int detune=(op.dt&7)-(settings.unsignedDetune?0:3); ImGui::TableNextColumn(); CENTER_VSLIDER; if (CWVSliderInt("##DT",ImVec2(20.0f*dpiScale,sliderHeight),&detune,-3,4)) { PARAMETER - op.dt=detune+3; + op.dt=detune+(settings.unsignedDetune?0:3); } ImGui::TableNextColumn(); @@ -2224,11 +2224,11 @@ void FurnaceGUI::drawInsEdit() { snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable - int detune=(op.dt&7)-3; + int detune=(op.dt&7)-(settings.unsignedDetune?0:3); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT)); if (CWSliderInt("##DT",&detune,-3,4,tempID)) { PARAMETER - op.dt=detune+3; + op.dt=detune+(settings.unsignedDetune?0:3); } rightClickable ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); @@ -2369,11 +2369,11 @@ void FurnaceGUI::drawInsEdit() { snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_MULT)); P(CWSliderScalar("##MULT",ImGuiDataType_U8,&op.mult,&_ZERO,&_FIFTEEN,tempID)); rightClickable - int detune=(op.dt&7)-3; + int detune=(op.dt&7)-(settings.unsignedDetune?0:3); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); snprintf(tempID,1024,"%s: %%d",FM_NAME(FM_DT)); if (CWSliderInt("##DT",&detune,-3,4,tempID)) { PARAMETER - op.dt=detune+3; + op.dt=detune+(settings.unsignedDetune?0:3); } rightClickable } @@ -2666,12 +2666,12 @@ void FurnaceGUI::drawInsEdit() { ImGui::Text("%s",FM_NAME(FM_MULT)); if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPZ) { - int detune=(op.dt&7)-3; + int detune=(op.dt&7)-(settings.unsignedDetune?0:3); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); if (CWSliderInt("##DT",&detune,-3,4)) { PARAMETER - op.dt=detune+3; + op.dt=detune+(settings.unsignedDetune?0:3); } rightClickable ImGui::TableNextColumn(); ImGui::Text("%s",FM_NAME(FM_DT)); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index bdcc2de8..cb2064e6 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1197,6 +1197,11 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Use German notation",&germanNotationB)) { settings.germanNotation=germanNotationB; } + + bool unsignedDetuneB=settings.unsignedDetune; + if (ImGui::Checkbox("Unsigned FM detune values",&unsignedDetuneB)) { + settings.unsignedDetune=unsignedDetuneB; + } // sorry. temporarily disabled until ImGui has a way to add separators in tables arbitrarily. /*bool sysSeparatorsB=settings.sysSeparators; @@ -2049,6 +2054,7 @@ void FurnaceGUI::syncSettings() { settings.doubleClickColumn=e->getConfInt("doubleClickColumn",1); settings.blankIns=e->getConfInt("blankIns",0); settings.dragMovesSelection=e->getConfInt("dragMovesSelection",2); + settings.unsignedDetune=e->getConfInt("unsignedDetune",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2134,6 +2140,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.doubleClickColumn,0,1); clampSetting(settings.blankIns,0,1); clampSetting(settings.dragMovesSelection,0,2); + clampSetting(settings.unsignedDetune,0,1); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { @@ -2268,6 +2275,7 @@ void FurnaceGUI::commitSettings() { e->setConf("doubleClickColumn",settings.doubleClickColumn); e->setConf("blankIns",settings.blankIns); e->setConf("dragMovesSelection",settings.dragMovesSelection); + e->setConf("unsignedDetune",settings.unsignedDetune); // colors for (int i=0; i Date: Tue, 28 Jun 2022 22:08:24 -0500 Subject: [PATCH 143/580] fix audio saving being totally wrong --- src/engine/sfWrapper.cpp | 11 ++++++++++- src/engine/sfWrapper.h | 4 +++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/engine/sfWrapper.cpp b/src/engine/sfWrapper.cpp index f71bff34..f12dc95b 100644 --- a/src/engine/sfWrapper.cpp +++ b/src/engine/sfWrapper.cpp @@ -19,6 +19,7 @@ #include "sfWrapper.h" #include "../fileutils.h" +#include "sndfile.h" sf_count_t _vioGetSize(void* user) { return ((SFWrapper*)user)->ioGetSize(); @@ -41,7 +42,14 @@ sf_count_t _vioTell(void* user) { } sf_count_t SFWrapper::ioGetSize() { - return (sf_count_t)len; + sf_count_t ret=(sf_count_t)len; + if (fileMode==SFM_WRITE || fileMode==SFM_RDWR) { + ssize_t lastTell=ftell(f); + fseek(f,0,SEEK_END); + ret=(sf_count_t)ftell(f); + fseek(f,lastTell,SEEK_SET); + } + return ret; } sf_count_t SFWrapper::ioSeek(sf_count_t offset, int whence) { @@ -108,5 +116,6 @@ SNDFILE* SFWrapper::doOpen(const char* path, int mode, SF_INFO* sfinfo) { } sf=sf_open_virtual(&vio,mode,sfinfo,this); + if (sf!=NULL) fileMode=mode; return sf; } \ No newline at end of file diff --git a/src/engine/sfWrapper.h b/src/engine/sfWrapper.h index 32387159..6e984a45 100644 --- a/src/engine/sfWrapper.h +++ b/src/engine/sfWrapper.h @@ -35,6 +35,7 @@ class SFWrapper { size_t len; SF_VIRTUAL_IO vio; SNDFILE* sf; + int fileMode; public: sf_count_t ioGetSize(); @@ -48,7 +49,8 @@ class SFWrapper { SFWrapper(): f(NULL), len(0), - sf(NULL) {} + sf(NULL), + fileMode(0) {} }; #endif From 3b5f584b491209f9e8ca316500e892fcacdb13a7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 28 Jun 2022 23:19:56 -0500 Subject: [PATCH 144/580] submit second batch of instruments --- instruments/FM/accordion/Accordion.dmp | Bin 0 -> 51 bytes instruments/FM/accordion/Harmonium.dmp | Bin 0 -> 51 bytes .../FM/accordion/brickblock369 Accordion.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(CH3) Double Synth.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Bass Guitar 1.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Bass Guitar 2.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Bass Guitar 3.dmp | Bin 0 -> 51 bytes .../FM/bass/(GEN) Common Genesis Bass.dmp | Bin 0 -> 51 bytes .../FM/bass/(GEN) Electric Bass Guitar.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Growl Bass.dmp | Bin 0 -> 51 bytes .../FM/bass/(GEN) Heavy Electric Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Low Piano.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Low Sax.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Low Square.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Low Trumpet.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Punch Packer.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Rounded Saw.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Slap Bass 1.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Slap Bass 2.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Slap Bass 3.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Space Synth.dmp | Bin 0 -> 51 bytes .../FM/bass/(GEN) Sunsoft Slap Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Synth.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Techno Bass 1.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Techno Bass 2.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Thiel Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Tuba 1.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Tuba 2.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) Twang.dmp | Bin 0 -> 51 bytes instruments/FM/bass/(GEN) VRC7 Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Algorithmic Bass.fui | Bin 0 -> 1769 bytes instruments/FM/bass/Bass Guitar.dmp | Bin 0 -> 51 bytes instruments/FM/bass/BassThing.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Double Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/FM-Bass-2.dmp | Bin 0 -> 51 bytes instruments/FM/bass/FM_Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/GEMSLike Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Levin Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Passport Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Piano Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Power Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Punch Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Radical Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Real Bass 1.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Real Bass 2.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Resonant Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Slap Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Spooky Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Squire Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Sublime Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/acoustic bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/algobass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/bass_acoustic_00.fui | Bin 0 -> 1674 bytes instruments/FM/bass/bass_electric_00.fui | Bin 0 -> 1674 bytes instruments/FM/bass/bass_electric_01.fui | Bin 0 -> 1674 bytes instruments/FM/bass/bass_electric_02.fui | Bin 0 -> 1674 bytes .../FM/bass/bass_electric_03_muffled.fui | Bin 0 -> 1689 bytes instruments/FM/bass/bass_electric_04.fui | Bin 0 -> 1674 bytes instruments/FM/bass/bass_electric_05_amp.fui | Bin 0 -> 1680 bytes instruments/FM/bass/bass_growl_00_wobbly.fui | Bin 0 -> 1680 bytes instruments/FM/bass/bass_growl_01_wobbly2.fui | Bin 0 -> 1683 bytes instruments/FM/bass/bass_growl_02_wobbly3.fui | Bin 0 -> 1673 bytes instruments/FM/bass/bass_picked_00.fui | Bin 0 -> 1672 bytes instruments/FM/bass/bass_picked_01_snappy.fui | Bin 0 -> 1681 bytes instruments/FM/bass/bass_picked_02.fui | Bin 0 -> 1672 bytes instruments/FM/bass/bass_slap_00.fui | Bin 0 -> 1670 bytes instruments/FM/bass/bass_slap_01.fui | Bin 0 -> 1670 bytes instruments/FM/bass/bass_slap_02.fui | Bin 0 -> 1670 bytes instruments/FM/bass/dxbass1.dmp | Bin 0 -> 51 bytes instruments/FM/bass/dxbass2.dmp | Bin 0 -> 51 bytes instruments/FM/bass/dxbass3.dmp | Bin 0 -> 51 bytes instruments/FM/bass/dxbass4.dmp | Bin 0 -> 51 bytes instruments/FM/bass/dxbass5.dmp | Bin 0 -> 51 bytes instruments/FM/bass/dxbass5slap.dmp | Bin 0 -> 51 bytes instruments/FM/bass/fm_bass1.fui | Bin 0 -> 1686 bytes instruments/FM/bass/fm_bass2.fui | Bin 0 -> 1669 bytes instruments/FM/bass/fm_bass3.fui | Bin 0 -> 1666 bytes instruments/FM/bass/generic alg 0 bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/nicco1690 Slap Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/sonic_modbass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/weird bass.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Crash.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Double Tom.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Hi-Hat Closed.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Hi-Hat Open.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Kick 1.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Kick 2.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Light Snare.dmp | Bin 0 -> 51 bytes .../drums/(GEN) Obvious Kick (C-5 02CC).dmp | Bin 0 -> 51 bytes .../drums/(GEN) Obvious Ride Closed (C-5).dmp | Bin 0 -> 51 bytes .../drums/(GEN) Obvious Ride Open (C-5).dmp | Bin 0 -> 51 bytes .../drums/(GEN) Obvious Snare (D#5 0299).dmp | Bin 0 -> 51 bytes ...ous Tom (C-5 0266, G#4 0255, E-4 0244).dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Snare 1.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Snare 2.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Snare 3.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Timpani.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Tom.dmp | Bin 0 -> 51 bytes .../(GEN) Trap Snare Carry (C-4, 0201).dmp | Bin 0 -> 51 bytes .../(GEN) Trap Snare Start (D-4 023F).dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Triangle.dmp | Bin 0 -> 51 bytes instruments/FM/drums/(GEN) Wood Block.dmp | Bin 0 -> 51 bytes instruments/FM/drums/909 Hat.dmp | Bin 0 -> 51 bytes instruments/FM/drums/Compressed Clap.fui | Bin 0 -> 1693 bytes instruments/FM/drums/Cymbal.dmp | Bin 0 -> 51 bytes instruments/FM/drums/GB Tom.fui | Bin 0 -> 1709 bytes instruments/FM/drums/Heavy Kick.fui | Bin 0 -> 1781 bytes instruments/FM/drums/Kick_B0.dmp | Bin 0 -> 51 bytes instruments/FM/drums/Less Chrunchy Snare.dmp | Bin 0 -> 51 bytes instruments/FM/drums/Snare_B2.dmp | Bin 0 -> 51 bytes instruments/FM/drums/Squishy Snare.fui | Bin 0 -> 1762 bytes instruments/FM/drums/Trap Kick.dmp | Bin 0 -> 51 bytes instruments/FM/drums/Trap Snare.dmp | Bin 0 -> 51 bytes .../FM/drums/[2OPHigh]HatClosed_B2.dmp | Bin 0 -> 51 bytes instruments/FM/drums/[2OPHigh]HatOpen_B2.dmp | Bin 0 -> 51 bytes instruments/FM/drums/crash_00.fui | Bin 0 -> 1670 bytes instruments/FM/drums/hihat_00.fui | Bin 0 -> 1666 bytes instruments/FM/drums/kick_00_classic.fui | Bin 0 -> 1699 bytes instruments/FM/drums/kick_01_power.fui | Bin 0 -> 1685 bytes instruments/FM/drums/kick_02_power2.fui | Bin 0 -> 1688 bytes instruments/FM/drums/kick_03_muffled.fui | Bin 0 -> 1687 bytes instruments/FM/drums/kick_04_bassdrum.fui | Bin 0 -> 1688 bytes instruments/FM/drums/kick_05_noisy.fui | Bin 0 -> 1737 bytes instruments/FM/drums/kick_06_fat.fui | Bin 0 -> 1691 bytes instruments/FM/drums/kick_07_fat2.fui | Bin 0 -> 1711 bytes instruments/FM/drums/snare_00_simple.fui | Bin 0 -> 1679 bytes instruments/FM/drums/snare_01_curvy.fui | Bin 0 -> 1694 bytes instruments/FM/drums/snare_02_weak.fui | Bin 0 -> 1689 bytes instruments/FM/drums/snare_03_weak2.fui | Bin 0 -> 1700 bytes instruments/FM/drums/snare_04_muffled.fui | Bin 0 -> 1696 bytes instruments/FM/drums/snare_05_intense.fui | Bin 0 -> 1746 bytes instruments/FM/drums/thinclosedhihat.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) Buzzer.dmp | Bin 0 -> 51 bytes .../FM/effect/(GEN) C64 Wave Combo.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) Clap.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) Clink.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) Crank Turn.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) Decay Laser.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) Laser Gun.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) Laser.dmp | Bin 0 -> 51 bytes .../FM/effect/(GEN) Lightning Bolt.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) TV Static.dmp | Bin 0 -> 51 bytes .../effect/(GEN) Techno TL Pitch Slider.dmp | Bin 0 -> 51 bytes .../FM/effect/(GEN) Thunder Strike.dmp | Bin 0 -> 51 bytes instruments/FM/effect/(GEN) U.F.O.dmp | Bin 0 -> 51 bytes instruments/FM/{ => effect}/GEN_weird.fui | Bin instruments/FM/effect/Glide.dmp | Bin 0 -> 51 bytes instruments/FM/effect/Heart.dmp | Bin 0 -> 51 bytes instruments/FM/effect/Interference.dmp | Bin 0 -> 51 bytes instruments/FM/effect/Ocean.dmp | Bin 0 -> 51 bytes instruments/FM/effect/Skid.dmp | Bin 0 -> 51 bytes instruments/FM/effect/Sore Throat.dmp | Bin 0 -> 51 bytes .../FM/effect/[2OPLow]Analog Horror 1.dmp | Bin 0 -> 51 bytes .../FM/effect/[2OPLow]Analog Horror 2.dmp | Bin 0 -> 51 bytes instruments/FM/effect/fm_propeller.fui | Bin 0 -> 1673 bytes instruments/FM/effect/white nosie.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(CH3) Double Guitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(GEN) Banjo.dmp | Bin 0 -> 51 bytes .../FM/guitar/(GEN) Electric Guitar 1.dmp | Bin 0 -> 51 bytes .../FM/guitar/(GEN) Electric Guitar 2.dmp | Bin 0 -> 51 bytes .../FM/guitar/(GEN) Electric Guitar 3.dmp | Bin 0 -> 51 bytes .../FM/guitar/(GEN) Electric Guitar EX.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(GEN) Grunge.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(GEN) Guitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(GEN) Rough Sitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(GEN) Shamisen.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(GEN) Sitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/(GEN) Space Sitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Acoustic Guitar.dmp | Bin 0 -> 51 bytes .../FM/guitar/Acoustic Nylon Guitar.dmp | Bin 0 -> 51 bytes .../FM/guitar/Acoustic Steel Guitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Distorted Guitar 1.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Distorted Guitar 2.dmp | Bin 0 -> 51 bytes .../FM/guitar/Electric Clean Guitar.dmp | Bin 0 -> 51 bytes .../Electric Distorted Guitar (High).dmp | Bin 0 -> 51 bytes .../Electric Distorted Guitar (Low).dmp | Bin 0 -> 51 bytes .../FM/guitar/Electric Funk Guitar.dmp | Bin 0 -> 51 bytes .../FM/guitar/Electric Guitar Harmonics.dmp | Bin 0 -> 51 bytes .../FM/guitar/Electric Jazz Guitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Electric Lap Guitar.dmp | Bin 0 -> 51 bytes .../FM/guitar/Electric Muted Guitar.dmp | Bin 0 -> 51 bytes .../Electric Overdriven Guitar (High).dmp | Bin 0 -> 51 bytes .../Electric Overdriven Guitar (Low).dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Funk Guitar.fui | Bin 0 -> 1690 bytes instruments/FM/guitar/Gardenshroom.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Guitar Test.opm | 1030 ++++++++++++++++ instruments/FM/guitar/Hard Guitar.fui | Bin 0 -> 1669 bytes instruments/FM/guitar/SSGuitar_A2.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/SSGuitar_B2.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/SSGuitar_F#2.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/SSGuitar_G2.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Spanish Guitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/Ukulele.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/distguitar_00.fui | Bin 0 -> 1683 bytes instruments/FM/guitar/high guitar.dmp | Bin 0 -> 51 bytes instruments/FM/{ => guitar}/powerchord.fui | Bin .../FM/guitar/sine distorted guitar.dmp | Bin 0 -> 51 bytes instruments/FM/guitar/trashy guitar.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(CH3) Trumpet + Echo.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(GEN) Dubious Trumpet.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(GEN) Ringing Trumpet.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(GEN) Trumpet 1.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(GEN) Trumpet 2.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(GEN) Trumpet 3.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(GEN) Trumpet EX.dmp | Bin 0 -> 51 bytes instruments/FM/horn/(GEN) VRC7 Trumpet.dmp | Bin 0 -> 51 bytes instruments/FM/horn/FM Brass.dmp | Bin 0 -> 51 bytes instruments/FM/horn/Saw Trumpet.dmp | Bin 0 -> 51 bytes instruments/FM/horn/Trumpet.dmp | Bin 0 -> 51 bytes instruments/FM/horn/ass overtone brass.dmp | Bin 0 -> 51 bytes instruments/FM/horn/brass_00_wobbly.fui | Bin 0 -> 1675 bytes instruments/FM/horn/brass_01_bassish.fui | Bin 0 -> 1677 bytes instruments/FM/horn/brass_02_boring.fui | Bin 0 -> 1687 bytes instruments/FM/horn/brass_03_boring2.fui | Bin 0 -> 1689 bytes instruments/FM/keys/(CH3) Double Piano.dmp | Bin 0 -> 51 bytes .../FM/keys/(CH3) Double Reed Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) Church Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) Piano 1.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) Piano 2.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) Reed Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) Short Piano.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) Space Piano.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) Spoopy Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/(GEN) VRC7 Reed Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/80's Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Bite Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Celesta (High).dmp | Bin 0 -> 51 bytes instruments/FM/keys/Celesta (Low).dmp | Bin 0 -> 51 bytes instruments/FM/keys/Church Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Circus Organ.fui | Bin 0 -> 1681 bytes instruments/FM/keys/Clavinet.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Creep Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/E. Piano 1 (Rhodes).dmp | Bin 0 -> 51 bytes instruments/FM/keys/E. Piano 2 (DX).dmp | Bin 0 -> 51 bytes instruments/FM/keys/Harpsichord.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Less Soft E Piano.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Low Piano.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Marimba.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Organ 1 (Drawbar).dmp | Bin 0 -> 51 bytes instruments/FM/keys/Organ 2 (Percussive).dmp | Bin 0 -> 51 bytes instruments/FM/keys/Organ 3 (Rock Organ).dmp | Bin 0 -> 51 bytes .../FM/keys/Organ 3 Alt (Rock Organ Alt).dmp | Bin 0 -> 51 bytes .../keys/Organ 5 (Percussive Variation).dmp | Bin 0 -> 51 bytes instruments/FM/keys/Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Piano 1 (Acoustic).dmp | Bin 0 -> 51 bytes .../FM/keys/Piano 2 (Bright Acoustic).dmp | Bin 0 -> 51 bytes .../FM/keys/Piano 3 (Electric Grand).dmp | Bin 0 -> 51 bytes instruments/FM/keys/Piano Test.opm | 1030 ++++++++++++++++ .../FM/keys/Reed Organ or Bandoneon.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Rock Organ.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Soft E Piano.dmp | Bin 0 -> 51 bytes instruments/FM/keys/Sparksichord.dmp | Bin 0 -> 51 bytes .../FM/keys/brickblock369 Church Organ.dmp | Bin 0 -> 51 bytes .../FM/keys/brickblock369 Harpsichord.dmp | Bin 0 -> 51 bytes instruments/FM/keys/harpsisine.dmp | Bin 0 -> 51 bytes .../FM/keys/nicco1690 Church Organ.dmp | Bin 0 -> 51 bytes .../FM/keys/organ_test/Organ Test - Notes.txt | 12 + instruments/FM/keys/organ_test/Organ Test.opm | 94 ++ .../percussion/(CH3) Double Metalliphone.dmp | Bin 0 -> 51 bytes .../FM/percussion/(CH3) Double Steel Drum.dmp | Bin 0 -> 51 bytes .../FM/percussion/(CH3) Double Xylophone.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/(GEN) Bongo.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/(GEN) Chime.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/(GEN) Cowbell.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Deep Marimba.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/(GEN) Marimba.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Metalliphone.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Short Bongo.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Space Chime.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Space Marimba.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Steel Drum.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) VRC7 Chime.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) VRC7 Marimba.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) VRC7 Metalliphone.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) VRC7 Soft Hestian.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) VRC7 Xylophone.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Xylophone 1.dmp | Bin 0 -> 51 bytes .../FM/percussion/(GEN) Xylophone 2.dmp | Bin 0 -> 51 bytes .../FM/percussion/Agogo or Cowbell.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Bell_Oct4-7.dmp | Bin 0 -> 51 bytes .../FM/percussion/Chromatic Percussion.opm | 1040 +++++++++++++++++ instruments/FM/percussion/Cowbell_F#5.dmp | Bin 0 -> 51 bytes .../percussion/Dangerously Cheap Timpani.fui | Bin 0 -> 1673 bytes instruments/FM/percussion/Dulcimer.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Glockenspiel.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Kalimba.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Music Box.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Peck.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Realistic Bell.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Steel Drum.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Timpani.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Tubular Bells.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/VRC7 Vibraphone.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Vibraphone.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/Xylophone.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/agogo.fui | Bin 0 -> 1666 bytes instruments/FM/percussion/alg 7 bongoes.dmp | Bin 0 -> 51 bytes .../FM/percussion/bell_00_glockenspiel.fui | Bin 0 -> 1680 bytes .../bell_01_glockenspiel_echoing.fui | Bin 0 -> 1689 bytes .../bell_02_glockenspiel_wobbly.fui | Bin 0 -> 1688 bytes .../percussion/brickblock369 Glockenspiel.dmp | Bin 0 -> 51 bytes .../percussion/brickblock369 Steel Drum.dmp | Bin 0 -> 51 bytes .../FM/percussion/brickblock369 Timpani.dmp | Bin 0 -> 51 bytes instruments/FM/percussion/fm_cowbell.fui | Bin 0 -> 1670 bytes .../FM/percussion/trashy handbells.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(CH3) Double Viola.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) Choir.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) Fiddle.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) Rapid Fiddle.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) Space Violin.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) VRC7 Strings.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) VRC7 Viola.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) Violin 1.dmp | Bin 0 -> 51 bytes instruments/FM/strings/(GEN) Violin 2.dmp | Bin 0 -> 51 bytes instruments/FM/strings/Earthbound Strings.dmp | Bin 0 -> 51 bytes instruments/FM/strings/Enchant.dmp | Bin 0 -> 51 bytes instruments/FM/strings/Ethereal Something.dmp | Bin 0 -> 51 bytes instruments/FM/strings/Fifths Pad.dmp | Bin 0 -> 51 bytes instruments/FM/strings/Fifths Type Beat.dmp | Bin 0 -> 51 bytes instruments/FM/strings/Pad.dmp | Bin 0 -> 51 bytes instruments/FM/strings/SSGPad.dmp | Bin 0 -> 51 bytes instruments/FM/strings/Sawsine pad.dmp | Bin 0 -> 51 bytes instruments/FM/strings/orchestal bullshit.dmp | Bin 0 -> 51 bytes instruments/FM/strings/strings_00.fui | Bin 0 -> 1668 bytes .../FM/synth/(CH3) Double Ambience.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(CH3) Double Choir.dmp | Bin 0 -> 51 bytes .../FM/synth/(CH3) Double Rounded Square.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(CH3) Saw & Organ.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(CH3) Sine Chord.dmp | Bin 0 -> 51 bytes .../FM/synth/(CH3) Synth with Light Snare.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) 1 16 Pulse.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) 1 4 Pulse.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) 1 8 Pulse.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) 3 16 Pulse.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) 3 8 Pulse.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) 5 16 Pulse.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) 7 16 Pulse.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Ambience.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Church Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Cutoff.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Distorted Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) High Hestian.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Hyperspeed Decay Sine.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) K.K. Slider Aah.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) K.K. Slider Weh.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Low Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) NES Triangle.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Near Perfect Saw Wave.dmp | Bin 0 -> 51 bytes .../synth/(GEN) Near Perfect Square Wave.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Perfect Saw Wave.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Perfect Square Wave.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Perfect Triangle Wave.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Rattling Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Rough Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Rough Square.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Rounded Square.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Saw Malleable.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Sharp Saw.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Sine Growl.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Space Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Space Organ.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Space Saw.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Sparkle.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Spoopy.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Square Wave.dmp | Bin 0 -> 51 bytes .../synth/(GEN) Synth with Closed Hi-Hat.dmp | Bin 0 -> 51 bytes .../FM/synth/(GEN) Synth with Open Hi-Hat.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Twang EX.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Twang Whistle.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) VRC7 Choir.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) VRC7 Hestian.dmp | Bin 0 -> 51 bytes instruments/FM/synth/(GEN) Wahwah.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Abduction.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Altered Square.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Buttermilk.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Circuitbird Donk.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Cricket Chorus.fui | Bin 0 -> 1690 bytes instruments/FM/synth/Desert Synth.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Ecco.dmp | Bin 0 -> 51 bytes instruments/FM/synth/FM_noname1.fui | Bin 0 -> 1668 bytes instruments/FM/synth/Guess.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Klax.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Kyd.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Love.dmp | Bin 0 -> 51 bytes instruments/FM/{ => synth}/Octave_Square.fui | Bin instruments/FM/{ => synth}/Octave_Square2.fui | Bin .../FM/{ => synth}/Reverby_Live_Chords.fui | Bin instruments/FM/synth/RustEcho.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Saw.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Signal.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Space Cowboy.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Space Shredder.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Square.dmp | Bin 0 -> 51 bytes instruments/FM/{ => synth}/Square.fui | Bin instruments/FM/synth/Squid.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Thin.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Tri.dmp | Bin 0 -> 51 bytes instruments/FM/synth/Twoah.dmp | Bin 0 -> 51 bytes instruments/FM/synth/[1OPHigh]Saw.dmp | Bin 0 -> 51 bytes .../FM/synth/[2OPHigh]Filtered Square.dmp | Bin 0 -> 51 bytes instruments/FM/synth/ass-loud lead.dmp | Bin 0 -> 51 bytes instruments/FM/synth/cool leaed.dmp | Bin 0 -> 51 bytes instruments/FM/synth/early 80s bs.dmp | Bin 0 -> 51 bytes instruments/FM/synth/fm_grinder.fui | Bin 0 -> 1671 bytes instruments/FM/synth/fm_horror.fui | Bin 0 -> 1667 bytes instruments/FM/synth/fm_noname2.fui | Bin 0 -> 1672 bytes instruments/FM/synth/fm_noname3.fui | Bin 0 -> 1672 bytes instruments/FM/synth/fm_noname4.fui | Bin 0 -> 1670 bytes instruments/FM/synth/fm_noname5.fui | Bin 0 -> 1666 bytes instruments/FM/synth/fm_noname6.fui | Bin 0 -> 1671 bytes instruments/FM/synth/fm_noname7.fui | Bin 0 -> 1664 bytes instruments/FM/{ => synth}/growl.fui | Bin instruments/FM/synth/huh.dmp | Bin 0 -> 51 bytes instruments/FM/synth/mystic cave lead.dmp | Bin 0 -> 51 bytes .../FM/synth/saw + whatever the fuck.dmp | Bin 0 -> 51 bytes instruments/FM/synth/sawtooth.dmp | Bin 0 -> 51 bytes instruments/FM/synth/snes-ish square.dmp | Bin 0 -> 51 bytes .../sonic spinball toxic caves thingy.dmp | Bin 0 -> 51 bytes instruments/FM/synth/whut.dmp | Bin 0 -> 51 bytes instruments/FM/synth/yrwywryw.dmp | Bin 0 -> 51 bytes instruments/FM/tfilib/banjo.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/bass.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/bell.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/cymbal.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/distbass.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/distguit.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/distslap.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/elecbass.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/fifths.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/flute.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/guitar.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/harp.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/harpsich.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/hithat.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/kick.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/list.txt | 42 + instruments/FM/tfilib/lyre.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/marimba.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/neslike.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/ocarina.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/organ.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/piano.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/sawtooth.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/sax.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/sine.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/slapbass.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/snare.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/sofpiano.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/softsaw.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/softsqr.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/square.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/steldrum.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/synbell.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/tackpian.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/timpani1.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/timpani2.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/toypiano.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/triangle.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/trumpet.tfi | Bin 0 -> 42 bytes instruments/FM/tfilib/wooddrum.tfi | Bin 0 -> 42 bytes instruments/FM/wind/(CH3) Double Clarinet.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(CH3) Double Flute.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(CH3) Double Woodwind.dmp | Bin 0 -> 51 bytes .../FM/wind/(CH3) Quadruple Ocarina.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Clarinet.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Didgeridoo.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Flute.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Forest Flute.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Harmonica.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Ocarina.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Saxophone EX.dmp | Bin 0 -> 51 bytes instruments/FM/wind/(GEN) Saxophone.dmp | Bin 0 -> 51 bytes instruments/FM/wind/B'arinet.dmp | Bin 0 -> 51 bytes instruments/FM/wind/Clarinet.dmp | Bin 0 -> 51 bytes instruments/FM/wind/English Horn.dmp | Bin 0 -> 51 bytes .../FM/{ => wind}/FM_4OP_-_Tenor_Sax.fui | Bin instruments/FM/wind/Flute.dmp | Bin 0 -> 51 bytes instruments/FM/wind/Harmonica.dmp | Bin 0 -> 51 bytes instruments/FM/{ => wind}/OPNx_BottleBlow.fui | Bin instruments/FM/wind/Pan Flute.dmp | Bin 0 -> 51 bytes instruments/FM/wind/bassoon.fui | Bin 0 -> 1668 bytes instruments/FM/wind/bassoon_clarinet.fui | Bin 0 -> 1678 bytes instruments/FM/wind/fm_pipeflute.fui | Bin 0 -> 1673 bytes instruments/FM/wind/woodwind_00.fui | Bin 0 -> 1669 bytes instruments/OPL/OPL-ClickKik.fui | Bin 0 -> 1477 bytes instruments/OPL/OPL-RhythmTemplate.fui | Bin 0 -> 1679 bytes instruments/OPL/OPL-RollingDrum.fui | Bin 0 -> 1715 bytes instruments/OPL/OPL2-TwinkleBlare.fui | Bin 0 -> 1756 bytes instruments/OPL/OPL3-4opbrass11.fui | Bin 0 -> 1687 bytes instruments/OPL/OPL3-4opharmonica.fui | Bin 0 -> 1686 bytes instruments/OPL/OPL3-4opsitar.fui | Bin 0 -> 1682 bytes instruments/OPL/OPL3-FakeFalcomString.fui | Bin 0 -> 1684 bytes instruments/OPL/OPL3-GabberKick.fui | Bin 0 -> 1503 bytes instruments/OPL/OPL3-GabberKick3-60hz-.fui | Bin 0 -> 1503 bytes instruments/OPL/OPL3-PWM.fui | Bin 0 -> 1677 bytes instruments/OPL/OPL3-PeriodicNoise.fui | Bin 0 -> 1459 bytes instruments/OPL/OPL3-SegaBass.fui | Bin 0 -> 1627 bytes instruments/OPL/OPL3-SyncDuck.fui | Bin 0 -> 1716 bytes instruments/OPL/OPL3-TwinkleKey.fui | Bin 0 -> 1738 bytes instruments/OPL/OPL3-clap.fui | Bin 0 -> 1715 bytes instruments/OPL/OPL3-easyhoova.fui | Bin 0 -> 1842 bytes instruments/OPL/OPL3_BigBass.fui | Bin 0 -> 1687 bytes instruments/OPL/OPL3_Springybass.fui | Bin 0 -> 1647 bytes instruments/OPL/OPLL_Clickik.fui | Bin 0 -> 1663 bytes instruments/OPL/OPL_GoodPanFlute.fui | Bin 0 -> 1816 bytes instruments/OPL/OPL_KoreanSquare.fui | Bin 0 -> 1680 bytes instruments/OPL/OPL_SupersawUnit.fui | Bin 0 -> 1706 bytes instruments/OPL/OPM-lowpitch-fmclap.fui | Bin 0 -> 1463 bytes .../OPLL/(SMSFM) Near Perfect Square Wave.dmp | Bin 0 -> 51 bytes instruments/README.md | 31 + .../(S16) Computer Shutdown [C-6 0213].dmp | Bin 0 -> 51 bytes instruments/other/(S16) Dog Whistle.dmp | Bin 0 -> 51 bytes instruments/other/(S16) Donkey Kong Lead.dmp | Bin 0 -> 51 bytes instruments/other/(S16) Hi-Hat Closed.dmp | Bin 0 -> 51 bytes instruments/other/(S16) Hi-Hat Open.dmp | Bin 0 -> 51 bytes ...6) Perfect Square Wave + Hi-Hat Closed.dmp | Bin 0 -> 51 bytes ...S16) Perfect Square Wave + Hi-Hat Open.dmp | Bin 0 -> 51 bytes instruments/other/(S16) Portal Cast.dmp | Bin 0 -> 51 bytes instruments/other/(SMS) 2-Arp Chord High.dmp | Bin 0 -> 30 bytes instruments/other/(SMS) 2-Arp High.dmp | Bin 0 -> 30 bytes instruments/other/(SMS) 2-Arp Major Low.dmp | Bin 0 -> 30 bytes instruments/other/(SMS) 2-Arp Minor Low.dmp | Bin 0 -> 30 bytes instruments/other/(SMS) 3-Arp High.dmp | Bin 0 -> 26 bytes instruments/other/(SMS) 3-Arp Major.dmp | Bin 0 -> 26 bytes instruments/other/(SMS) 3-Arp Minor.dmp | Bin 0 -> 26 bytes instruments/other/(SMS) 5-Arp Major.dmp | Bin 0 -> 34 bytes instruments/other/(SMS) 5-Arp Minor.dmp | Bin 0 -> 34 bytes instruments/other/(SMS) Arp Snare.dmp | Bin 0 -> 102 bytes instruments/other/(SMS) Attack.dmp | Bin 0 -> 25 bytes instruments/other/(SMS) Buzz Noise.dmp | Bin 0 -> 142 bytes instruments/other/(SMS) Crash.dmp | Bin 0 -> 306 bytes instruments/other/(SMS) Cyclic Noise.dmp | Bin 0 -> 22 bytes instruments/other/(SMS) Decay Noise.dmp | Bin 0 -> 158 bytes instruments/other/(SMS) Decay.dmp | Bin 0 -> 21 bytes instruments/other/(SMS) Down Slider.dmp | Bin 0 -> 162 bytes instruments/other/(SMS) Hi-Hat & Note.dmp | Bin 0 -> 39 bytes instruments/other/(SMS) Hi-Hat Closed.dmp | Bin 0 -> 29 bytes instruments/other/(SMS) Hi-Hat Open.dmp | Bin 0 -> 181 bytes instruments/other/(SMS) Kick Noise.dmp | Bin 0 -> 39 bytes instruments/other/(SMS) Multi Slider.dmp | Bin 0 -> 162 bytes instruments/other/(SMS) Obvious Crash.dmp | Bin 0 -> 383 bytes .../other/(SMS) Record Scratch Down.dmp | Bin 0 -> 94 bytes instruments/other/(SMS) Record Scratch Up.dmp | Bin 0 -> 94 bytes instruments/other/(SMS) Retrig.dmp | Bin 0 -> 49 bytes instruments/other/(SMS) Ride.dmp | Bin 0 -> 367 bytes instruments/other/(SMS) Snare.dmp | Bin 0 -> 86 bytes instruments/other/(SMS) Splash.dmp | Bin 0 -> 517 bytes instruments/other/(SMS) Thump & Note.dmp | Bin 0 -> 46 bytes .../(SMS) Tim Follin 6-Arp Fast Major.dmp | Bin 0 -> 38 bytes .../(SMS) Tim Follin 6-Arp Fast Minor.dmp | Bin 0 -> 38 bytes .../(SMS) Tim Follin 6-Arp Slow Major.dmp | Bin 0 -> 50 bytes .../(SMS) Tim Follin 6-Arp Slow Minor.dmp | Bin 0 -> 50 bytes instruments/other/(SMS) Tim Follin Lead.dmp | Bin 0 -> 26 bytes instruments/other/(SMS) Tom A.dmp | Bin 0 -> 62 bytes instruments/other/(SMS) Tom B.dmp | Bin 0 -> 98 bytes instruments/other/(SMS) Up Slider.dmp | Bin 0 -> 162 bytes instruments/other/(SMS) Variable.dmp | Bin 0 -> 13 bytes instruments/other/(SMS) Whistle.dmp | Bin 0 -> 22 bytes instruments/other/Echo.fui | Bin 0 -> 1784 bytes instruments/other/Flute.fui | Bin 0 -> 1942 bytes instruments/other/Follin Guitar 2.fui | Bin 0 -> 1788 bytes instruments/other/Follin Guitar.fui | Bin 0 -> 1786 bytes instruments/other/Guitar.fui | Bin 0 -> 1705 bytes instruments/other/Octave Arp.fui | Bin 0 -> 1815 bytes instruments/other/SMSPerc/SMSPerc About.txt | 26 + .../SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui | Bin 0 -> 1708 bytes .../SMSPerc ExampleInst [KickSnare] CH3.fui | Bin 0 -> 1723 bytes .../SMSPerc ExampleInst [Nothing] CH3.fui | Bin 0 -> 1704 bytes .../SMSPerc/SMSPerc Hat_Closed CH4 [D].fui | Bin 0 -> 1707 bytes .../SMSPerc/SMSPerc Hat_Open CH4 [D].fui | Bin 0 -> 1789 bytes .../other/SMSPerc/SMSPerc Kick CH4 [C].fui | Bin 0 -> 1721 bytes .../other/SMSPerc/SMSPerc KickSnare CH3.fui | Bin 0 -> 1695 bytes .../other/SMSPerc/SMSPerc Snare CH4 [D].fui | Bin 0 -> 1774 bytes 574 files changed, 3305 insertions(+) create mode 100644 instruments/FM/accordion/Accordion.dmp create mode 100644 instruments/FM/accordion/Harmonium.dmp create mode 100644 instruments/FM/accordion/brickblock369 Accordion.dmp create mode 100644 instruments/FM/bass/(CH3) Double Synth.dmp create mode 100644 instruments/FM/bass/(GEN) Bass Guitar 1.dmp create mode 100644 instruments/FM/bass/(GEN) Bass Guitar 2.dmp create mode 100644 instruments/FM/bass/(GEN) Bass Guitar 3.dmp create mode 100644 instruments/FM/bass/(GEN) Common Genesis Bass.dmp create mode 100644 instruments/FM/bass/(GEN) Electric Bass Guitar.dmp create mode 100644 instruments/FM/bass/(GEN) Growl Bass.dmp create mode 100644 instruments/FM/bass/(GEN) Heavy Electric Bass.dmp create mode 100644 instruments/FM/bass/(GEN) Low Piano.dmp create mode 100644 instruments/FM/bass/(GEN) Low Sax.dmp create mode 100644 instruments/FM/bass/(GEN) Low Square.dmp create mode 100644 instruments/FM/bass/(GEN) Low Trumpet.dmp create mode 100644 instruments/FM/bass/(GEN) Punch Packer.dmp create mode 100644 instruments/FM/bass/(GEN) Rounded Saw.dmp create mode 100644 instruments/FM/bass/(GEN) Slap Bass 1.dmp create mode 100644 instruments/FM/bass/(GEN) Slap Bass 2.dmp create mode 100644 instruments/FM/bass/(GEN) Slap Bass 3.dmp create mode 100644 instruments/FM/bass/(GEN) Space Synth.dmp create mode 100644 instruments/FM/bass/(GEN) Sunsoft Slap Bass.dmp create mode 100644 instruments/FM/bass/(GEN) Synth.dmp create mode 100644 instruments/FM/bass/(GEN) Techno Bass 1.dmp create mode 100644 instruments/FM/bass/(GEN) Techno Bass 2.dmp create mode 100644 instruments/FM/bass/(GEN) Thiel Bass.dmp create mode 100644 instruments/FM/bass/(GEN) Tuba 1.dmp create mode 100644 instruments/FM/bass/(GEN) Tuba 2.dmp create mode 100644 instruments/FM/bass/(GEN) Twang.dmp create mode 100644 instruments/FM/bass/(GEN) VRC7 Bass.dmp create mode 100644 instruments/FM/bass/Algorithmic Bass.fui create mode 100644 instruments/FM/bass/Bass Guitar.dmp create mode 100644 instruments/FM/bass/BassThing.dmp create mode 100644 instruments/FM/bass/Double Bass.dmp create mode 100644 instruments/FM/bass/FM-Bass-2.dmp create mode 100644 instruments/FM/bass/FM_Bass.dmp create mode 100644 instruments/FM/bass/GEMSLike Bass.dmp create mode 100644 instruments/FM/bass/Levin Bass.dmp create mode 100644 instruments/FM/bass/Passport Bass.dmp create mode 100644 instruments/FM/bass/Piano Bass.dmp create mode 100644 instruments/FM/bass/Power Bass.dmp create mode 100644 instruments/FM/bass/Punch Bass.dmp create mode 100644 instruments/FM/bass/Radical Bass.dmp create mode 100644 instruments/FM/bass/Real Bass 1.dmp create mode 100644 instruments/FM/bass/Real Bass 2.dmp create mode 100644 instruments/FM/bass/Resonant Bass.dmp create mode 100644 instruments/FM/bass/Slap Bass.dmp create mode 100644 instruments/FM/bass/Spooky Bass.dmp create mode 100644 instruments/FM/bass/Squire Bass.dmp create mode 100644 instruments/FM/bass/Sublime Bass.dmp create mode 100644 instruments/FM/bass/acoustic bass.dmp create mode 100644 instruments/FM/bass/algobass.dmp create mode 100644 instruments/FM/bass/bass_acoustic_00.fui create mode 100644 instruments/FM/bass/bass_electric_00.fui create mode 100644 instruments/FM/bass/bass_electric_01.fui create mode 100644 instruments/FM/bass/bass_electric_02.fui create mode 100644 instruments/FM/bass/bass_electric_03_muffled.fui create mode 100644 instruments/FM/bass/bass_electric_04.fui create mode 100644 instruments/FM/bass/bass_electric_05_amp.fui create mode 100644 instruments/FM/bass/bass_growl_00_wobbly.fui create mode 100644 instruments/FM/bass/bass_growl_01_wobbly2.fui create mode 100644 instruments/FM/bass/bass_growl_02_wobbly3.fui create mode 100644 instruments/FM/bass/bass_picked_00.fui create mode 100644 instruments/FM/bass/bass_picked_01_snappy.fui create mode 100644 instruments/FM/bass/bass_picked_02.fui create mode 100644 instruments/FM/bass/bass_slap_00.fui create mode 100644 instruments/FM/bass/bass_slap_01.fui create mode 100644 instruments/FM/bass/bass_slap_02.fui create mode 100644 instruments/FM/bass/dxbass1.dmp create mode 100644 instruments/FM/bass/dxbass2.dmp create mode 100644 instruments/FM/bass/dxbass3.dmp create mode 100644 instruments/FM/bass/dxbass4.dmp create mode 100644 instruments/FM/bass/dxbass5.dmp create mode 100644 instruments/FM/bass/dxbass5slap.dmp create mode 100644 instruments/FM/bass/fm_bass1.fui create mode 100644 instruments/FM/bass/fm_bass2.fui create mode 100644 instruments/FM/bass/fm_bass3.fui create mode 100644 instruments/FM/bass/generic alg 0 bass.dmp create mode 100644 instruments/FM/bass/nicco1690 Slap Bass.dmp create mode 100644 instruments/FM/bass/sonic_modbass.dmp create mode 100644 instruments/FM/bass/weird bass.dmp create mode 100644 instruments/FM/drums/(GEN) Crash.dmp create mode 100644 instruments/FM/drums/(GEN) Double Tom.dmp create mode 100644 instruments/FM/drums/(GEN) Hi-Hat Closed.dmp create mode 100644 instruments/FM/drums/(GEN) Hi-Hat Open.dmp create mode 100644 instruments/FM/drums/(GEN) Kick 1.dmp create mode 100644 instruments/FM/drums/(GEN) Kick 2.dmp create mode 100644 instruments/FM/drums/(GEN) Light Snare.dmp create mode 100644 instruments/FM/drums/(GEN) Obvious Kick (C-5 02CC).dmp create mode 100644 instruments/FM/drums/(GEN) Obvious Ride Closed (C-5).dmp create mode 100644 instruments/FM/drums/(GEN) Obvious Ride Open (C-5).dmp create mode 100644 instruments/FM/drums/(GEN) Obvious Snare (D#5 0299).dmp create mode 100644 instruments/FM/drums/(GEN) Obvious Tom (C-5 0266, G#4 0255, E-4 0244).dmp create mode 100644 instruments/FM/drums/(GEN) Snare 1.dmp create mode 100644 instruments/FM/drums/(GEN) Snare 2.dmp create mode 100644 instruments/FM/drums/(GEN) Snare 3.dmp create mode 100644 instruments/FM/drums/(GEN) Timpani.dmp create mode 100644 instruments/FM/drums/(GEN) Tom.dmp create mode 100644 instruments/FM/drums/(GEN) Trap Snare Carry (C-4, 0201).dmp create mode 100644 instruments/FM/drums/(GEN) Trap Snare Start (D-4 023F).dmp create mode 100644 instruments/FM/drums/(GEN) Triangle.dmp create mode 100644 instruments/FM/drums/(GEN) Wood Block.dmp create mode 100644 instruments/FM/drums/909 Hat.dmp create mode 100644 instruments/FM/drums/Compressed Clap.fui create mode 100644 instruments/FM/drums/Cymbal.dmp create mode 100644 instruments/FM/drums/GB Tom.fui create mode 100644 instruments/FM/drums/Heavy Kick.fui create mode 100644 instruments/FM/drums/Kick_B0.dmp create mode 100644 instruments/FM/drums/Less Chrunchy Snare.dmp create mode 100644 instruments/FM/drums/Snare_B2.dmp create mode 100644 instruments/FM/drums/Squishy Snare.fui create mode 100644 instruments/FM/drums/Trap Kick.dmp create mode 100644 instruments/FM/drums/Trap Snare.dmp create mode 100644 instruments/FM/drums/[2OPHigh]HatClosed_B2.dmp create mode 100644 instruments/FM/drums/[2OPHigh]HatOpen_B2.dmp create mode 100644 instruments/FM/drums/crash_00.fui create mode 100644 instruments/FM/drums/hihat_00.fui create mode 100644 instruments/FM/drums/kick_00_classic.fui create mode 100644 instruments/FM/drums/kick_01_power.fui create mode 100644 instruments/FM/drums/kick_02_power2.fui create mode 100644 instruments/FM/drums/kick_03_muffled.fui create mode 100644 instruments/FM/drums/kick_04_bassdrum.fui create mode 100644 instruments/FM/drums/kick_05_noisy.fui create mode 100644 instruments/FM/drums/kick_06_fat.fui create mode 100644 instruments/FM/drums/kick_07_fat2.fui create mode 100644 instruments/FM/drums/snare_00_simple.fui create mode 100644 instruments/FM/drums/snare_01_curvy.fui create mode 100644 instruments/FM/drums/snare_02_weak.fui create mode 100644 instruments/FM/drums/snare_03_weak2.fui create mode 100644 instruments/FM/drums/snare_04_muffled.fui create mode 100644 instruments/FM/drums/snare_05_intense.fui create mode 100644 instruments/FM/drums/thinclosedhihat.dmp create mode 100644 instruments/FM/effect/(GEN) Buzzer.dmp create mode 100644 instruments/FM/effect/(GEN) C64 Wave Combo.dmp create mode 100644 instruments/FM/effect/(GEN) Clap.dmp create mode 100644 instruments/FM/effect/(GEN) Clink.dmp create mode 100644 instruments/FM/effect/(GEN) Crank Turn.dmp create mode 100644 instruments/FM/effect/(GEN) Decay Laser.dmp create mode 100644 instruments/FM/effect/(GEN) Laser Gun.dmp create mode 100644 instruments/FM/effect/(GEN) Laser.dmp create mode 100644 instruments/FM/effect/(GEN) Lightning Bolt.dmp create mode 100644 instruments/FM/effect/(GEN) TV Static.dmp create mode 100644 instruments/FM/effect/(GEN) Techno TL Pitch Slider.dmp create mode 100644 instruments/FM/effect/(GEN) Thunder Strike.dmp create mode 100644 instruments/FM/effect/(GEN) U.F.O.dmp rename instruments/FM/{ => effect}/GEN_weird.fui (100%) create mode 100644 instruments/FM/effect/Glide.dmp create mode 100644 instruments/FM/effect/Heart.dmp create mode 100644 instruments/FM/effect/Interference.dmp create mode 100644 instruments/FM/effect/Ocean.dmp create mode 100644 instruments/FM/effect/Skid.dmp create mode 100644 instruments/FM/effect/Sore Throat.dmp create mode 100644 instruments/FM/effect/[2OPLow]Analog Horror 1.dmp create mode 100644 instruments/FM/effect/[2OPLow]Analog Horror 2.dmp create mode 100644 instruments/FM/effect/fm_propeller.fui create mode 100644 instruments/FM/effect/white nosie.dmp create mode 100644 instruments/FM/guitar/(CH3) Double Guitar.dmp create mode 100644 instruments/FM/guitar/(GEN) Banjo.dmp create mode 100644 instruments/FM/guitar/(GEN) Electric Guitar 1.dmp create mode 100644 instruments/FM/guitar/(GEN) Electric Guitar 2.dmp create mode 100644 instruments/FM/guitar/(GEN) Electric Guitar 3.dmp create mode 100644 instruments/FM/guitar/(GEN) Electric Guitar EX.dmp create mode 100644 instruments/FM/guitar/(GEN) Grunge.dmp create mode 100644 instruments/FM/guitar/(GEN) Guitar.dmp create mode 100644 instruments/FM/guitar/(GEN) Rough Sitar.dmp create mode 100644 instruments/FM/guitar/(GEN) Shamisen.dmp create mode 100644 instruments/FM/guitar/(GEN) Sitar.dmp create mode 100644 instruments/FM/guitar/(GEN) Space Sitar.dmp create mode 100644 instruments/FM/guitar/Acoustic Guitar.dmp create mode 100644 instruments/FM/guitar/Acoustic Nylon Guitar.dmp create mode 100644 instruments/FM/guitar/Acoustic Steel Guitar.dmp create mode 100644 instruments/FM/guitar/Distorted Guitar 1.dmp create mode 100644 instruments/FM/guitar/Distorted Guitar 2.dmp create mode 100644 instruments/FM/guitar/Electric Clean Guitar.dmp create mode 100644 instruments/FM/guitar/Electric Distorted Guitar (High).dmp create mode 100644 instruments/FM/guitar/Electric Distorted Guitar (Low).dmp create mode 100644 instruments/FM/guitar/Electric Funk Guitar.dmp create mode 100644 instruments/FM/guitar/Electric Guitar Harmonics.dmp create mode 100644 instruments/FM/guitar/Electric Jazz Guitar.dmp create mode 100644 instruments/FM/guitar/Electric Lap Guitar.dmp create mode 100644 instruments/FM/guitar/Electric Muted Guitar.dmp create mode 100644 instruments/FM/guitar/Electric Overdriven Guitar (High).dmp create mode 100644 instruments/FM/guitar/Electric Overdriven Guitar (Low).dmp create mode 100644 instruments/FM/guitar/Funk Guitar.fui create mode 100644 instruments/FM/guitar/Gardenshroom.dmp create mode 100644 instruments/FM/guitar/Guitar Test.opm create mode 100644 instruments/FM/guitar/Hard Guitar.fui create mode 100644 instruments/FM/guitar/SSGuitar_A2.dmp create mode 100644 instruments/FM/guitar/SSGuitar_B2.dmp create mode 100644 instruments/FM/guitar/SSGuitar_F#2.dmp create mode 100644 instruments/FM/guitar/SSGuitar_G2.dmp create mode 100644 instruments/FM/guitar/Spanish Guitar.dmp create mode 100644 instruments/FM/guitar/Ukulele.dmp create mode 100644 instruments/FM/guitar/distguitar_00.fui create mode 100644 instruments/FM/guitar/high guitar.dmp rename instruments/FM/{ => guitar}/powerchord.fui (100%) create mode 100644 instruments/FM/guitar/sine distorted guitar.dmp create mode 100644 instruments/FM/guitar/trashy guitar.dmp create mode 100644 instruments/FM/horn/(CH3) Trumpet + Echo.dmp create mode 100644 instruments/FM/horn/(GEN) Dubious Trumpet.dmp create mode 100644 instruments/FM/horn/(GEN) Ringing Trumpet.dmp create mode 100644 instruments/FM/horn/(GEN) Trumpet 1.dmp create mode 100644 instruments/FM/horn/(GEN) Trumpet 2.dmp create mode 100644 instruments/FM/horn/(GEN) Trumpet 3.dmp create mode 100644 instruments/FM/horn/(GEN) Trumpet EX.dmp create mode 100644 instruments/FM/horn/(GEN) VRC7 Trumpet.dmp create mode 100644 instruments/FM/horn/FM Brass.dmp create mode 100644 instruments/FM/horn/Saw Trumpet.dmp create mode 100644 instruments/FM/horn/Trumpet.dmp create mode 100644 instruments/FM/horn/ass overtone brass.dmp create mode 100644 instruments/FM/horn/brass_00_wobbly.fui create mode 100644 instruments/FM/horn/brass_01_bassish.fui create mode 100644 instruments/FM/horn/brass_02_boring.fui create mode 100644 instruments/FM/horn/brass_03_boring2.fui create mode 100644 instruments/FM/keys/(CH3) Double Piano.dmp create mode 100644 instruments/FM/keys/(CH3) Double Reed Organ.dmp create mode 100644 instruments/FM/keys/(GEN) Church Organ.dmp create mode 100644 instruments/FM/keys/(GEN) Piano 1.dmp create mode 100644 instruments/FM/keys/(GEN) Piano 2.dmp create mode 100644 instruments/FM/keys/(GEN) Reed Organ.dmp create mode 100644 instruments/FM/keys/(GEN) Short Piano.dmp create mode 100644 instruments/FM/keys/(GEN) Space Piano.dmp create mode 100644 instruments/FM/keys/(GEN) Spoopy Organ.dmp create mode 100644 instruments/FM/keys/(GEN) VRC7 Reed Organ.dmp create mode 100644 instruments/FM/keys/80's Organ.dmp create mode 100644 instruments/FM/keys/Bite Organ.dmp create mode 100644 instruments/FM/keys/Celesta (High).dmp create mode 100644 instruments/FM/keys/Celesta (Low).dmp create mode 100644 instruments/FM/keys/Church Organ.dmp create mode 100644 instruments/FM/keys/Circus Organ.fui create mode 100644 instruments/FM/keys/Clavinet.dmp create mode 100644 instruments/FM/keys/Creep Organ.dmp create mode 100644 instruments/FM/keys/E. Piano 1 (Rhodes).dmp create mode 100644 instruments/FM/keys/E. Piano 2 (DX).dmp create mode 100644 instruments/FM/keys/Harpsichord.dmp create mode 100644 instruments/FM/keys/Less Soft E Piano.dmp create mode 100644 instruments/FM/keys/Low Piano.dmp create mode 100644 instruments/FM/keys/Marimba.dmp create mode 100644 instruments/FM/keys/Organ 1 (Drawbar).dmp create mode 100644 instruments/FM/keys/Organ 2 (Percussive).dmp create mode 100644 instruments/FM/keys/Organ 3 (Rock Organ).dmp create mode 100644 instruments/FM/keys/Organ 3 Alt (Rock Organ Alt).dmp create mode 100644 instruments/FM/keys/Organ 5 (Percussive Variation).dmp create mode 100644 instruments/FM/keys/Organ.dmp create mode 100644 instruments/FM/keys/Piano 1 (Acoustic).dmp create mode 100644 instruments/FM/keys/Piano 2 (Bright Acoustic).dmp create mode 100644 instruments/FM/keys/Piano 3 (Electric Grand).dmp create mode 100644 instruments/FM/keys/Piano Test.opm create mode 100644 instruments/FM/keys/Reed Organ or Bandoneon.dmp create mode 100644 instruments/FM/keys/Rock Organ.dmp create mode 100644 instruments/FM/keys/Soft E Piano.dmp create mode 100644 instruments/FM/keys/Sparksichord.dmp create mode 100644 instruments/FM/keys/brickblock369 Church Organ.dmp create mode 100644 instruments/FM/keys/brickblock369 Harpsichord.dmp create mode 100644 instruments/FM/keys/harpsisine.dmp create mode 100644 instruments/FM/keys/nicco1690 Church Organ.dmp create mode 100644 instruments/FM/keys/organ_test/Organ Test - Notes.txt create mode 100644 instruments/FM/keys/organ_test/Organ Test.opm create mode 100644 instruments/FM/percussion/(CH3) Double Metalliphone.dmp create mode 100644 instruments/FM/percussion/(CH3) Double Steel Drum.dmp create mode 100644 instruments/FM/percussion/(CH3) Double Xylophone.dmp create mode 100644 instruments/FM/percussion/(GEN) Bongo.dmp create mode 100644 instruments/FM/percussion/(GEN) Chime.dmp create mode 100644 instruments/FM/percussion/(GEN) Cowbell.dmp create mode 100644 instruments/FM/percussion/(GEN) Deep Marimba.dmp create mode 100644 instruments/FM/percussion/(GEN) Marimba.dmp create mode 100644 instruments/FM/percussion/(GEN) Metalliphone.dmp create mode 100644 instruments/FM/percussion/(GEN) Short Bongo.dmp create mode 100644 instruments/FM/percussion/(GEN) Space Chime.dmp create mode 100644 instruments/FM/percussion/(GEN) Space Marimba.dmp create mode 100644 instruments/FM/percussion/(GEN) Steel Drum.dmp create mode 100644 instruments/FM/percussion/(GEN) VRC7 Chime.dmp create mode 100644 instruments/FM/percussion/(GEN) VRC7 Marimba.dmp create mode 100644 instruments/FM/percussion/(GEN) VRC7 Metalliphone.dmp create mode 100644 instruments/FM/percussion/(GEN) VRC7 Soft Hestian.dmp create mode 100644 instruments/FM/percussion/(GEN) VRC7 Xylophone.dmp create mode 100644 instruments/FM/percussion/(GEN) Xylophone 1.dmp create mode 100644 instruments/FM/percussion/(GEN) Xylophone 2.dmp create mode 100644 instruments/FM/percussion/Agogo or Cowbell.dmp create mode 100644 instruments/FM/percussion/Bell_Oct4-7.dmp create mode 100644 instruments/FM/percussion/Chromatic Percussion.opm create mode 100644 instruments/FM/percussion/Cowbell_F#5.dmp create mode 100644 instruments/FM/percussion/Dangerously Cheap Timpani.fui create mode 100644 instruments/FM/percussion/Dulcimer.dmp create mode 100644 instruments/FM/percussion/Glockenspiel.dmp create mode 100644 instruments/FM/percussion/Kalimba.dmp create mode 100644 instruments/FM/percussion/Music Box.dmp create mode 100644 instruments/FM/percussion/Peck.dmp create mode 100644 instruments/FM/percussion/Realistic Bell.dmp create mode 100644 instruments/FM/percussion/Steel Drum.dmp create mode 100644 instruments/FM/percussion/Timpani.dmp create mode 100644 instruments/FM/percussion/Tubular Bells.dmp create mode 100644 instruments/FM/percussion/VRC7 Vibraphone.dmp create mode 100644 instruments/FM/percussion/Vibraphone.dmp create mode 100644 instruments/FM/percussion/Xylophone.dmp create mode 100644 instruments/FM/percussion/agogo.fui create mode 100644 instruments/FM/percussion/alg 7 bongoes.dmp create mode 100644 instruments/FM/percussion/bell_00_glockenspiel.fui create mode 100644 instruments/FM/percussion/bell_01_glockenspiel_echoing.fui create mode 100644 instruments/FM/percussion/bell_02_glockenspiel_wobbly.fui create mode 100644 instruments/FM/percussion/brickblock369 Glockenspiel.dmp create mode 100644 instruments/FM/percussion/brickblock369 Steel Drum.dmp create mode 100644 instruments/FM/percussion/brickblock369 Timpani.dmp create mode 100644 instruments/FM/percussion/fm_cowbell.fui create mode 100644 instruments/FM/percussion/trashy handbells.dmp create mode 100644 instruments/FM/strings/(CH3) Double Viola.dmp create mode 100644 instruments/FM/strings/(GEN) Choir.dmp create mode 100644 instruments/FM/strings/(GEN) Fiddle.dmp create mode 100644 instruments/FM/strings/(GEN) Rapid Fiddle.dmp create mode 100644 instruments/FM/strings/(GEN) Space Violin.dmp create mode 100644 instruments/FM/strings/(GEN) VRC7 Strings.dmp create mode 100644 instruments/FM/strings/(GEN) VRC7 Viola.dmp create mode 100644 instruments/FM/strings/(GEN) Violin 1.dmp create mode 100644 instruments/FM/strings/(GEN) Violin 2.dmp create mode 100644 instruments/FM/strings/Earthbound Strings.dmp create mode 100644 instruments/FM/strings/Enchant.dmp create mode 100644 instruments/FM/strings/Ethereal Something.dmp create mode 100644 instruments/FM/strings/Fifths Pad.dmp create mode 100644 instruments/FM/strings/Fifths Type Beat.dmp create mode 100644 instruments/FM/strings/Pad.dmp create mode 100644 instruments/FM/strings/SSGPad.dmp create mode 100644 instruments/FM/strings/Sawsine pad.dmp create mode 100644 instruments/FM/strings/orchestal bullshit.dmp create mode 100644 instruments/FM/strings/strings_00.fui create mode 100644 instruments/FM/synth/(CH3) Double Ambience.dmp create mode 100644 instruments/FM/synth/(CH3) Double Choir.dmp create mode 100644 instruments/FM/synth/(CH3) Double Rounded Square.dmp create mode 100644 instruments/FM/synth/(CH3) Saw & Organ.dmp create mode 100644 instruments/FM/synth/(CH3) Sine Chord.dmp create mode 100644 instruments/FM/synth/(CH3) Synth with Light Snare.dmp create mode 100644 instruments/FM/synth/(GEN) 1 16 Pulse.dmp create mode 100644 instruments/FM/synth/(GEN) 1 4 Pulse.dmp create mode 100644 instruments/FM/synth/(GEN) 1 8 Pulse.dmp create mode 100644 instruments/FM/synth/(GEN) 3 16 Pulse.dmp create mode 100644 instruments/FM/synth/(GEN) 3 8 Pulse.dmp create mode 100644 instruments/FM/synth/(GEN) 5 16 Pulse.dmp create mode 100644 instruments/FM/synth/(GEN) 7 16 Pulse.dmp create mode 100644 instruments/FM/synth/(GEN) Ambience.dmp create mode 100644 instruments/FM/synth/(GEN) Church Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) Cutoff.dmp create mode 100644 instruments/FM/synth/(GEN) Distorted Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) High Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) Hyperspeed Decay Sine.dmp create mode 100644 instruments/FM/synth/(GEN) K.K. Slider Aah.dmp create mode 100644 instruments/FM/synth/(GEN) K.K. Slider Weh.dmp create mode 100644 instruments/FM/synth/(GEN) Low Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) NES Triangle.dmp create mode 100644 instruments/FM/synth/(GEN) Near Perfect Saw Wave.dmp create mode 100644 instruments/FM/synth/(GEN) Near Perfect Square Wave.dmp create mode 100644 instruments/FM/synth/(GEN) Perfect Saw Wave.dmp create mode 100644 instruments/FM/synth/(GEN) Perfect Square Wave.dmp create mode 100644 instruments/FM/synth/(GEN) Perfect Triangle Wave.dmp create mode 100644 instruments/FM/synth/(GEN) Rattling Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) Rough Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) Rough Square.dmp create mode 100644 instruments/FM/synth/(GEN) Rounded Square.dmp create mode 100644 instruments/FM/synth/(GEN) Saw Malleable.dmp create mode 100644 instruments/FM/synth/(GEN) Sharp Saw.dmp create mode 100644 instruments/FM/synth/(GEN) Sine Growl.dmp create mode 100644 instruments/FM/synth/(GEN) Space Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) Space Organ.dmp create mode 100644 instruments/FM/synth/(GEN) Space Saw.dmp create mode 100644 instruments/FM/synth/(GEN) Sparkle.dmp create mode 100644 instruments/FM/synth/(GEN) Spoopy.dmp create mode 100644 instruments/FM/synth/(GEN) Square Wave.dmp create mode 100644 instruments/FM/synth/(GEN) Synth with Closed Hi-Hat.dmp create mode 100644 instruments/FM/synth/(GEN) Synth with Open Hi-Hat.dmp create mode 100644 instruments/FM/synth/(GEN) Twang EX.dmp create mode 100644 instruments/FM/synth/(GEN) Twang Whistle.dmp create mode 100644 instruments/FM/synth/(GEN) VRC7 Choir.dmp create mode 100644 instruments/FM/synth/(GEN) VRC7 Hestian.dmp create mode 100644 instruments/FM/synth/(GEN) Wahwah.dmp create mode 100644 instruments/FM/synth/Abduction.dmp create mode 100644 instruments/FM/synth/Altered Square.dmp create mode 100644 instruments/FM/synth/Buttermilk.dmp create mode 100644 instruments/FM/synth/Circuitbird Donk.dmp create mode 100644 instruments/FM/synth/Cricket Chorus.fui create mode 100644 instruments/FM/synth/Desert Synth.dmp create mode 100644 instruments/FM/synth/Ecco.dmp create mode 100644 instruments/FM/synth/FM_noname1.fui create mode 100644 instruments/FM/synth/Guess.dmp create mode 100644 instruments/FM/synth/Klax.dmp create mode 100644 instruments/FM/synth/Kyd.dmp create mode 100644 instruments/FM/synth/Love.dmp rename instruments/FM/{ => synth}/Octave_Square.fui (100%) rename instruments/FM/{ => synth}/Octave_Square2.fui (100%) rename instruments/FM/{ => synth}/Reverby_Live_Chords.fui (100%) create mode 100644 instruments/FM/synth/RustEcho.dmp create mode 100644 instruments/FM/synth/Saw.dmp create mode 100644 instruments/FM/synth/Signal.dmp create mode 100644 instruments/FM/synth/Space Cowboy.dmp create mode 100644 instruments/FM/synth/Space Shredder.dmp create mode 100644 instruments/FM/synth/Square.dmp rename instruments/FM/{ => synth}/Square.fui (100%) create mode 100644 instruments/FM/synth/Squid.dmp create mode 100644 instruments/FM/synth/Thin.dmp create mode 100644 instruments/FM/synth/Tri.dmp create mode 100644 instruments/FM/synth/Twoah.dmp create mode 100644 instruments/FM/synth/[1OPHigh]Saw.dmp create mode 100644 instruments/FM/synth/[2OPHigh]Filtered Square.dmp create mode 100644 instruments/FM/synth/ass-loud lead.dmp create mode 100644 instruments/FM/synth/cool leaed.dmp create mode 100644 instruments/FM/synth/early 80s bs.dmp create mode 100644 instruments/FM/synth/fm_grinder.fui create mode 100644 instruments/FM/synth/fm_horror.fui create mode 100644 instruments/FM/synth/fm_noname2.fui create mode 100644 instruments/FM/synth/fm_noname3.fui create mode 100644 instruments/FM/synth/fm_noname4.fui create mode 100644 instruments/FM/synth/fm_noname5.fui create mode 100644 instruments/FM/synth/fm_noname6.fui create mode 100644 instruments/FM/synth/fm_noname7.fui rename instruments/FM/{ => synth}/growl.fui (100%) create mode 100644 instruments/FM/synth/huh.dmp create mode 100644 instruments/FM/synth/mystic cave lead.dmp create mode 100644 instruments/FM/synth/saw + whatever the fuck.dmp create mode 100644 instruments/FM/synth/sawtooth.dmp create mode 100644 instruments/FM/synth/snes-ish square.dmp create mode 100644 instruments/FM/synth/sonic spinball toxic caves thingy.dmp create mode 100644 instruments/FM/synth/whut.dmp create mode 100644 instruments/FM/synth/yrwywryw.dmp create mode 100644 instruments/FM/tfilib/banjo.tfi create mode 100644 instruments/FM/tfilib/bass.tfi create mode 100644 instruments/FM/tfilib/bell.tfi create mode 100644 instruments/FM/tfilib/cymbal.tfi create mode 100644 instruments/FM/tfilib/distbass.tfi create mode 100644 instruments/FM/tfilib/distguit.tfi create mode 100644 instruments/FM/tfilib/distslap.tfi create mode 100644 instruments/FM/tfilib/elecbass.tfi create mode 100644 instruments/FM/tfilib/fifths.tfi create mode 100644 instruments/FM/tfilib/flute.tfi create mode 100644 instruments/FM/tfilib/guitar.tfi create mode 100644 instruments/FM/tfilib/harp.tfi create mode 100644 instruments/FM/tfilib/harpsich.tfi create mode 100644 instruments/FM/tfilib/hithat.tfi create mode 100644 instruments/FM/tfilib/kick.tfi create mode 100644 instruments/FM/tfilib/list.txt create mode 100644 instruments/FM/tfilib/lyre.tfi create mode 100644 instruments/FM/tfilib/marimba.tfi create mode 100644 instruments/FM/tfilib/neslike.tfi create mode 100644 instruments/FM/tfilib/ocarina.tfi create mode 100644 instruments/FM/tfilib/organ.tfi create mode 100644 instruments/FM/tfilib/piano.tfi create mode 100644 instruments/FM/tfilib/sawtooth.tfi create mode 100644 instruments/FM/tfilib/sax.tfi create mode 100644 instruments/FM/tfilib/sine.tfi create mode 100644 instruments/FM/tfilib/slapbass.tfi create mode 100644 instruments/FM/tfilib/snare.tfi create mode 100644 instruments/FM/tfilib/sofpiano.tfi create mode 100644 instruments/FM/tfilib/softsaw.tfi create mode 100644 instruments/FM/tfilib/softsqr.tfi create mode 100644 instruments/FM/tfilib/square.tfi create mode 100644 instruments/FM/tfilib/steldrum.tfi create mode 100644 instruments/FM/tfilib/synbell.tfi create mode 100644 instruments/FM/tfilib/tackpian.tfi create mode 100644 instruments/FM/tfilib/timpani1.tfi create mode 100644 instruments/FM/tfilib/timpani2.tfi create mode 100644 instruments/FM/tfilib/toypiano.tfi create mode 100644 instruments/FM/tfilib/triangle.tfi create mode 100644 instruments/FM/tfilib/trumpet.tfi create mode 100644 instruments/FM/tfilib/wooddrum.tfi create mode 100644 instruments/FM/wind/(CH3) Double Clarinet.dmp create mode 100644 instruments/FM/wind/(CH3) Double Flute.dmp create mode 100644 instruments/FM/wind/(CH3) Double Woodwind.dmp create mode 100644 instruments/FM/wind/(CH3) Quadruple Ocarina.dmp create mode 100644 instruments/FM/wind/(GEN) Clarinet.dmp create mode 100644 instruments/FM/wind/(GEN) Didgeridoo.dmp create mode 100644 instruments/FM/wind/(GEN) Flute.dmp create mode 100644 instruments/FM/wind/(GEN) Forest Flute.dmp create mode 100644 instruments/FM/wind/(GEN) Harmonica.dmp create mode 100644 instruments/FM/wind/(GEN) Ocarina.dmp create mode 100644 instruments/FM/wind/(GEN) Saxophone EX.dmp create mode 100644 instruments/FM/wind/(GEN) Saxophone.dmp create mode 100644 instruments/FM/wind/B'arinet.dmp create mode 100644 instruments/FM/wind/Clarinet.dmp create mode 100644 instruments/FM/wind/English Horn.dmp rename instruments/FM/{ => wind}/FM_4OP_-_Tenor_Sax.fui (100%) create mode 100644 instruments/FM/wind/Flute.dmp create mode 100644 instruments/FM/wind/Harmonica.dmp rename instruments/FM/{ => wind}/OPNx_BottleBlow.fui (100%) create mode 100644 instruments/FM/wind/Pan Flute.dmp create mode 100644 instruments/FM/wind/bassoon.fui create mode 100644 instruments/FM/wind/bassoon_clarinet.fui create mode 100644 instruments/FM/wind/fm_pipeflute.fui create mode 100644 instruments/FM/wind/woodwind_00.fui create mode 100644 instruments/OPL/OPL-ClickKik.fui create mode 100644 instruments/OPL/OPL-RhythmTemplate.fui create mode 100644 instruments/OPL/OPL-RollingDrum.fui create mode 100644 instruments/OPL/OPL2-TwinkleBlare.fui create mode 100644 instruments/OPL/OPL3-4opbrass11.fui create mode 100644 instruments/OPL/OPL3-4opharmonica.fui create mode 100644 instruments/OPL/OPL3-4opsitar.fui create mode 100644 instruments/OPL/OPL3-FakeFalcomString.fui create mode 100644 instruments/OPL/OPL3-GabberKick.fui create mode 100644 instruments/OPL/OPL3-GabberKick3-60hz-.fui create mode 100644 instruments/OPL/OPL3-PWM.fui create mode 100644 instruments/OPL/OPL3-PeriodicNoise.fui create mode 100644 instruments/OPL/OPL3-SegaBass.fui create mode 100644 instruments/OPL/OPL3-SyncDuck.fui create mode 100644 instruments/OPL/OPL3-TwinkleKey.fui create mode 100644 instruments/OPL/OPL3-clap.fui create mode 100644 instruments/OPL/OPL3-easyhoova.fui create mode 100644 instruments/OPL/OPL3_BigBass.fui create mode 100644 instruments/OPL/OPL3_Springybass.fui create mode 100644 instruments/OPL/OPLL_Clickik.fui create mode 100644 instruments/OPL/OPL_GoodPanFlute.fui create mode 100644 instruments/OPL/OPL_KoreanSquare.fui create mode 100644 instruments/OPL/OPL_SupersawUnit.fui create mode 100644 instruments/OPL/OPM-lowpitch-fmclap.fui create mode 100644 instruments/OPLL/(SMSFM) Near Perfect Square Wave.dmp create mode 100644 instruments/other/(S16) Computer Shutdown [C-6 0213].dmp create mode 100644 instruments/other/(S16) Dog Whistle.dmp create mode 100644 instruments/other/(S16) Donkey Kong Lead.dmp create mode 100644 instruments/other/(S16) Hi-Hat Closed.dmp create mode 100644 instruments/other/(S16) Hi-Hat Open.dmp create mode 100644 instruments/other/(S16) Perfect Square Wave + Hi-Hat Closed.dmp create mode 100644 instruments/other/(S16) Perfect Square Wave + Hi-Hat Open.dmp create mode 100644 instruments/other/(S16) Portal Cast.dmp create mode 100644 instruments/other/(SMS) 2-Arp Chord High.dmp create mode 100644 instruments/other/(SMS) 2-Arp High.dmp create mode 100644 instruments/other/(SMS) 2-Arp Major Low.dmp create mode 100644 instruments/other/(SMS) 2-Arp Minor Low.dmp create mode 100644 instruments/other/(SMS) 3-Arp High.dmp create mode 100644 instruments/other/(SMS) 3-Arp Major.dmp create mode 100644 instruments/other/(SMS) 3-Arp Minor.dmp create mode 100644 instruments/other/(SMS) 5-Arp Major.dmp create mode 100644 instruments/other/(SMS) 5-Arp Minor.dmp create mode 100644 instruments/other/(SMS) Arp Snare.dmp create mode 100644 instruments/other/(SMS) Attack.dmp create mode 100644 instruments/other/(SMS) Buzz Noise.dmp create mode 100644 instruments/other/(SMS) Crash.dmp create mode 100644 instruments/other/(SMS) Cyclic Noise.dmp create mode 100644 instruments/other/(SMS) Decay Noise.dmp create mode 100644 instruments/other/(SMS) Decay.dmp create mode 100644 instruments/other/(SMS) Down Slider.dmp create mode 100644 instruments/other/(SMS) Hi-Hat & Note.dmp create mode 100644 instruments/other/(SMS) Hi-Hat Closed.dmp create mode 100644 instruments/other/(SMS) Hi-Hat Open.dmp create mode 100644 instruments/other/(SMS) Kick Noise.dmp create mode 100644 instruments/other/(SMS) Multi Slider.dmp create mode 100644 instruments/other/(SMS) Obvious Crash.dmp create mode 100644 instruments/other/(SMS) Record Scratch Down.dmp create mode 100644 instruments/other/(SMS) Record Scratch Up.dmp create mode 100644 instruments/other/(SMS) Retrig.dmp create mode 100644 instruments/other/(SMS) Ride.dmp create mode 100644 instruments/other/(SMS) Snare.dmp create mode 100644 instruments/other/(SMS) Splash.dmp create mode 100644 instruments/other/(SMS) Thump & Note.dmp create mode 100644 instruments/other/(SMS) Tim Follin 6-Arp Fast Major.dmp create mode 100644 instruments/other/(SMS) Tim Follin 6-Arp Fast Minor.dmp create mode 100644 instruments/other/(SMS) Tim Follin 6-Arp Slow Major.dmp create mode 100644 instruments/other/(SMS) Tim Follin 6-Arp Slow Minor.dmp create mode 100644 instruments/other/(SMS) Tim Follin Lead.dmp create mode 100644 instruments/other/(SMS) Tom A.dmp create mode 100644 instruments/other/(SMS) Tom B.dmp create mode 100644 instruments/other/(SMS) Up Slider.dmp create mode 100644 instruments/other/(SMS) Variable.dmp create mode 100644 instruments/other/(SMS) Whistle.dmp create mode 100644 instruments/other/Echo.fui create mode 100644 instruments/other/Flute.fui create mode 100644 instruments/other/Follin Guitar 2.fui create mode 100644 instruments/other/Follin Guitar.fui create mode 100644 instruments/other/Guitar.fui create mode 100644 instruments/other/Octave Arp.fui create mode 100644 instruments/other/SMSPerc/SMSPerc About.txt create mode 100644 instruments/other/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui create mode 100644 instruments/other/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui create mode 100644 instruments/other/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui create mode 100644 instruments/other/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui create mode 100644 instruments/other/SMSPerc/SMSPerc Hat_Open CH4 [D].fui create mode 100644 instruments/other/SMSPerc/SMSPerc Kick CH4 [C].fui create mode 100644 instruments/other/SMSPerc/SMSPerc KickSnare CH3.fui create mode 100644 instruments/other/SMSPerc/SMSPerc Snare CH4 [D].fui diff --git a/instruments/FM/accordion/Accordion.dmp b/instruments/FM/accordion/Accordion.dmp new file mode 100644 index 0000000000000000000000000000000000000000..10b8011c2e43ce3b829430e7eac3683dd3fa4c9e GIT binary patch literal 51 xcmd;PVq{=pWnki!6K7^%U0WSam literal 0 HcmV?d00001 diff --git a/instruments/FM/accordion/Harmonium.dmp b/instruments/FM/accordion/Harmonium.dmp new file mode 100644 index 0000000000000000000000000000000000000000..3dba2392f8f884b52a6313f4484b98556a88fbb9 GIT binary patch literal 51 ocmd;PVq{=vWMEX0=Vah#U|?ooV3db58Pp+61|VRUVSp+C04I?FV*mgE literal 0 HcmV?d00001 diff --git a/instruments/FM/accordion/brickblock369 Accordion.dmp b/instruments/FM/accordion/brickblock369 Accordion.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f3a1cd95ab1e1c843a8713ef5ad0bf562df630e9 GIT binary patch literal 51 rcmd<)U}RumVPF)NXJBAvU|<7slz~j3AQO<}<>O=IgfQ74OrRP79UB1z literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(CH3) Double Synth.dmp b/instruments/FM/bass/(CH3) Double Synth.dmp new file mode 100644 index 0000000000000000000000000000000000000000..3b3997249f556308d1c4eeef57a95881057a8872 GIT binary patch literal 51 mcmd;PVq{=oVPF)H5@cXwU|{AzVY13|GjIY$85kHv;7kA?@BuUc literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Bass Guitar 1.dmp b/instruments/FM/bass/(GEN) Bass Guitar 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4a7dff8df0bd8d468962d1322125ca1c9e70cf9f GIT binary patch literal 51 ycmW;AOAY`K3_!uxN)b)`HtgL0mc(u{u7X9F+c5|Qd{qsPKt7Qq=wr8`?e7H~(*X(q literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Bass Guitar 2.dmp b/instruments/FM/bass/(GEN) Bass Guitar 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f2ab416ce279b068182f03204d930bd3c2f2bb34 GIT binary patch literal 51 ycmW;AI|=|G48YLXQUweC7Tvu6EiF!Y#3f+{>o^gu;Jb+ifp#+`A;Do&`o9kyBLNQp literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Bass Guitar 3.dmp b/instruments/FM/bass/(GEN) Bass Guitar 3.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f4b99414bec1046cf9203ddb1d29b3ed22bf6a34 GIT binary patch literal 51 qcmd;PVq{=oW#AB$7h+{*U}Oezc;s1G*ccdqOcn%_4aj7Mhynm0^#Lyc literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Common Genesis Bass.dmp b/instruments/FM/bass/(GEN) Common Genesis Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5b408d4eaae5ac9a25971d7322129acdc08cba18 GIT binary patch literal 51 xcmd;PVq{=sVBk`b7h>XPU|?ooU=Wt)0x}udSQr>|<@rFO3_vC;M3kAC0RSqt0gwOy literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Electric Bass Guitar.dmp b/instruments/FM/bass/(GEN) Electric Bass Guitar.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a82e47bc6841873075afe0b370094674ba604c83 GIT binary patch literal 51 scmd;PVq{=vVPNE!=Vat(U|?q8WE7I;&TabZ)1I%O<6XarG2QvW|mH_7f literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Low Square.dmp b/instruments/FM/bass/(GEN) Low Square.dmp new file mode 100644 index 0000000000000000000000000000000000000000..010a44600feb0de77f7155dad52870246dd19a9e GIT binary patch literal 51 rcmd;PVq{=vV_?yf=Vah#U}R=sV62yy=jUf&V3ucKWB`jYpo#(jL4N|k literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Low Trumpet.dmp b/instruments/FM/bass/(GEN) Low Trumpet.dmp new file mode 100644 index 0000000000000000000000000000000000000000..407a1504a73794411aa0b49cc92e7d56daa86488 GIT binary patch literal 51 vcmd;PVq{=rWnd5z=3{1KU|?ndGUeG>z)U6vK3N79pd?6?N1m0L1v04Lc2asU7T literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Space Synth.dmp b/instruments/FM/bass/(GEN) Space Synth.dmp new file mode 100644 index 0000000000000000000000000000000000000000..d84a796911ce24883726dd0c92403605d1ae6859 GIT binary patch literal 51 scmd;PVq{=qVPIsC;$~rEU|{B8U=)xNWPmbR<+&L+fualyj3RI*03ApHBme*a literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Sunsoft Slap Bass.dmp b/instruments/FM/bass/(GEN) Sunsoft Slap Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..2da8452d198f954d6725e93c8a072b9866d2c360 GIT binary patch literal 51 xcmWm2!3_W)2mrB@fEfJ{7a$Jd{;P?v2e!pJ%gC1U|x literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Techno Bass 2.dmp b/instruments/FM/bass/(GEN) Techno Bass 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..84e12a142296420b0591de2386f16c9d4d532e9d GIT binary patch literal 51 zcmd<)U}RutX5bK#7h&UPU}h0uV3CmLW9DaI0$~w(4t5~L#>c?KF3-*Z5@lxq057ls A!TUVIrDzRuZC-+Lb-PK~Zn9&sphzjSC)-0U`hZ literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Tuba 2.dmp b/instruments/FM/bass/(GEN) Tuba 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0a8dfcaf89e3773c8c72bc24600ae6bb74d716bd GIT binary patch literal 51 xcmWm3ISK$E3;@B+rGf-R8$191OG!I3RcH;lZ{vssdUAMxDN6QA16gU5!UrAh0Qmp_ literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) Twang.dmp b/instruments/FM/bass/(GEN) Twang.dmp new file mode 100644 index 0000000000000000000000000000000000000000..093a0f8cffc860442316397fe5c4699975b6e6da GIT binary patch literal 51 ucmd;PVq{=rV`Siy=V#+*U|?ooVC0k+2Qvj37#ZY67(k*x%m-zPFaQ82aRHS8 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/(GEN) VRC7 Bass.dmp b/instruments/FM/bass/(GEN) VRC7 Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..6f79a3394c0a2d200017617d831f9bc57b38aa92 GIT binary patch literal 51 scmd;PVq{=uVPMn|XJutzU}k1uV5pau=jR8qeFS+YW za+Hi0d6w?>i9MvJb2b@o0a&6SUamK+w@`?=BtItU+0Kf5z@rJZk13#wrRrb;U$N!e zd|w3^RKJrI)AM>5%B&J2cyl@%5I#u3fpK)Byb`#G<127(#KRNZT0ROx;(Z2iuY^8n zVVAVfBQ5NZ7P6O++bAUY5!`dO(RcIbo3z`qjlWy-3wycu{RQ3hr+nLkCV$EQ_bGQk h`T|(J(ic@cc(D8=)uU|l`K;c(DO>vxMG?S!hZ}W>DH#9& literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Bass Guitar.dmp b/instruments/FM/bass/Bass Guitar.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c55655574a3f4050f9e0233d90ee4fba07521642 GIT binary patch literal 51 xcmd;PVq{=rW?#0{|w)0dD{R literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/BassThing.dmp b/instruments/FM/bass/BassThing.dmp new file mode 100644 index 0000000000000000000000000000000000000000..57c74f3bd07cc573a74269bb1bbf529281d397aa GIT binary patch literal 51 xcmd;PVq{e literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Power Bass.dmp b/instruments/FM/bass/Power Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a7b5e98edaf31ff1f0f3e2fcfade811ee31d0e8b GIT binary patch literal 51 xcmd;PVq{=rWaQA2=Vs++U|<$!V33yQWZ-9HU}j)o5Rm8N2Z;iiEb^RCCIBtq0ipl^ literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Punch Bass.dmp b/instruments/FM/bass/Punch Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..90189febff2901344003f7097ae9179bcf12ce37 GIT binary patch literal 51 wcmd;PVq^dUc3ycwCUyn}W=;l126+)S5R;jK*;t;7nG48d0*P`nftc(J03-|nVE_OC literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Radical Bass.dmp b/instruments/FM/bass/Radical Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..095d225d7ed99d2c07ed0c1f798ebd66d29d1974 GIT binary patch literal 51 ucmd;PVq{=tX5eFxXJFuGU|?ooV33q&;|DTtrlmTx5 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Real Bass 1.dmp b/instruments/FM/bass/Real Bass 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..58a0169b72cfa0ce28abfbb9739f5b6cdf5fd9d4 GIT binary patch literal 51 ucmXBGu?hen2tdK7Swao9xCQ?IUq*P-EfuW8P1w*tPfo8w`lt#S_8UAQ`~g=0 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Real Bass 2.dmp b/instruments/FM/bass/Real Bass 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5e6cefcc0ae87eb3c632a76dd74729794c611f6b GIT binary patch literal 51 ucmd;PVq{=tWnd7Lmt^5*U|?ooU=on$Vuvsp*yP#SpiBmN5q=O;o&f+QzX5{) literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Resonant Bass.dmp b/instruments/FM/bass/Resonant Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..2ae09ad01230392116a279449b1c31429c01bc07 GIT binary patch literal 51 qcmd;PVq^dUMkQ_r27VBWfl*r)%w%I=VB%+G1dB2=fN7utpeO(wG647h literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Slap Bass.dmp b/instruments/FM/bass/Slap Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5c15c14c5b86938774738fcfaeee69f81f8d1e54 GIT binary patch literal 51 scmd;PVq{=pWaQA5=j7*SU|?ooV33n%;pb-rF_{HqrC_2gAW^Ua04{F@~ literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Spooky Bass.dmp b/instruments/FM/bass/Spooky Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..b511715b72786dbcb2859dd74976e640b19e9e20 GIT binary patch literal 51 xcmd;PVq{=vX5yD;=jP{UU|?fl;FOnV#G@@2IH2T#VVIX?eY+jZtPwsbV*z;p literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Sublime Bass.dmp b/instruments/FM/bass/Sublime Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..3bae37d1d08c703b8f59333bbf35678d972261a5 GIT binary patch literal 51 ucmd;PVq{=oVPKJ$7h+&zU|?ooU;;5&89+QHeR+0Ph$st#JO>9iSOEYh?E!ND literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/acoustic bass.dmp b/instruments/FM/bass/acoustic bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..6f58b76c9867d11c5c7ec2c7ea161deaacb0d998 GIT binary patch literal 51 xcmd;PVq{=oU}h7Q=jQ@47=#!YB;C$@*cn*# literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/algobass.dmp b/instruments/FM/bass/algobass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e2d4197cb78ba1534c032f562d656f6391d4d0cd GIT binary patch literal 51 ycmWN@u?hen2tdJSnnDpoL#tE&|BE@@%_aos&Eq9Tf4Q{kMx5L>suLlHSLu8y0Re#k literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_acoustic_00.fui b/instruments/FM/bass/bass_acoustic_00.fui new file mode 100644 index 0000000000000000000000000000000000000000..0ba14ba9c5bb147ebadc5bb02696a531b929b126 GIT binary patch literal 1674 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp9Fy})i%T+-6`T@_iy0VL z7#Ns9Qu6$ae5}?C46Gmy79h{Vz{e(uM_!DPkBuLTMyQZHCj%cIX?_MK2cY8^7&xF9 zNFf1vBsM|je*yrT0q9ylP9Ybdn?;BZv4=bx37L&9KN9Rh_w#V)6H2F)`k#>bF!@n? uP(uI~F2J&wHGuU1BLhg9L4g?|j)R424Cy=^#u6!vw;)HVi@rB3l0IXlNlHpTys*BONug+6`T@_iy4?$ z85meVQt|@4{On2~7Iq-d&A`bj0Mw5I$aAstb7c z!l*zVm5ZPEp8&w78(j-de`3>&CWdYnAwEPqc{UO<8(n@R*oE%r;m$`(ei&Rz{f}WF w4uMg7P(uI_ObV<4tOpnwK++5f%m{HDEL3Ai=ixAxNMXDM5kEfz0|?^+04%97F8}}l literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_electric_01.fui b/instruments/FM/bass/bass_electric_01.fui new file mode 100644 index 0000000000000000000000000000000000000000..f0a9f14bc359b3a7736396976133b84930173079 GIT binary patch literal 1674 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpTys*BONug+6`T@_iy4?$ z85meVQu2Jv{G5D1c^p8Vn}L&60FOKuJ3og84$UC*Ss6Jwm~hJTGcY-T4d(zV0bx`i zkIKc*`%eI1(~YhLXEqu3d{&`94u60Nax`&mPlc|1ra|#0|N--0swaUF%kd( literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_electric_02.fui b/instruments/FM/bass/bass_electric_02.fui new file mode 100644 index 0000000000000000000000000000000000000000..c33d5a8c4f5df0b6f02bd2f8354dab0ede807fe1 GIT binary patch literal 1674 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpTys*BONug+6`T@_iy4^N z85meVQu5;L3~UAr49p-779cOk$G|UzN1l^`fn5NPJO?8uPzf&c`5BlTfR1Be;DBNv zg#_f0*aVsX2>@&cplbm+gw9`bA?WH!3|NU#gt&%>QhD4kO3e?sQN)HVi@rB3l0IXlNlHpTys*BONug+6`T@_ixo72 zQ*$#Fd`r{Pa#B+?8JO7_7+63m#^A{|T87lOMGQH3VSc0xX(Y16U6*GJvER6mXP)2-RS9s78^-Lo$jCCf)HVi@rB3l0IXlNlHpTys*BONug+6`T@_iy4^N z85meVQu1QV3>+d149p-779cOo#=tIyM;>Sprvx5(PDW0Cpt(5A=VxGY06LC=fdh(x z6cUg}ViRQkCjhV+fUX7P6mkK&S%mlyd&skqklE<+Bf&0oKM!|4p>#^A{|T87lOMGQ vH3VSc0xXMJ16U6*GJvER6mXP)2-RS9s78^-Lo$jCCf)HVi@rB3l0IXlNlHpTys*BONug+6`T@_ixo5+ za|<*X7+4sXnLrApx!L(xBp4W2K^!bVo}Gb@O&pKB5F;P69u|#IA$d*)K7QQN{0vME zKqoRVa6mDTLIUzgY=X@H1OPSz(6xY^0t8SB!XcJKH;WJ-VlG)$F%U8vU4A6kh3@C! z&L@;EDfK@g^I`I%_MnCUEL?ykGHU?q0Y-3UWl&&7h~r?P8bdk{hp|Ko<1L8zfn_)d G;{pI+JTk!m literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_growl_00_wobbly.fui b/instruments/FM/bass/bass_growl_00_wobbly.fui new file mode 100644 index 0000000000000000000000000000000000000000..f8084eb89950d4ce4e424902150206637dd1416e GIT binary patch literal 1680 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp+>7$da}=Bsi;ERB!t;}o zaw;_$7+4sXnSk<)@~n(}>CuBZMe$*b+5P*dXuta7JU_HRd0Fq`kJI0)kc E0QBxM*8l(j literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_growl_01_wobbly2.fui b/instruments/FM/bass/bass_growl_01_wobbly2.fui new file mode 100644 index 0000000000000000000000000000000000000000..7111e281728aa498478b52e8b1192703aa5f8d47 GIT binary patch literal 1683 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp+>7$da}=Bsi;ERB!t;}o zaw-)(JvA8^S(urbKx*V!8Ti<>7#LVV94tVdgMp7l9JjnQKO-N%5J)2z7TrMeIT`r) zvC4o2`5BlTfUaa<;DBNvg#_f0*aVsX2>@&cplbm+1qh%NghMQeZWbXv#9XqhVjyHT zy8KA63*FDdolhuTQtE#~=ELMi?LiFzShxTSW!3=J1B~Fz%AmlE5XZqnHHLH^4r7TF O##<2a1Ius_#svU1voodu literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_growl_02_wobbly3.fui b/instruments/FM/bass/bass_growl_02_wobbly3.fui new file mode 100644 index 0000000000000000000000000000000000000000..ac91ef7cf40a1ad13e889082fbae76a054295807 GIT binary patch literal 1673 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp+>7$da}=Bsi;ESE7#LWX znVEnRjPk4ueC%2b46HCMXtX>B10RbxPI*Ro4n{r>X*5kpTzO6gK7J%V8k3)a$pPp# z1_ll&22w~s9*Iqm`JVv5W&pYtkW+vFN)HVi@rB3l0IXlNlHp0y2}cQ&SY25{ru&7+4q> zm_QQpT#S6IDhv#)APyEF&%(&ZhEHCcfsaKJi$_YeRaOV?Br)HVi@rB3l0IXlNlHp0y2}cQ&SY25{ru!G=lRI z3koVV85md?7??mR47}9w-j3rVSZ$ZQlEW<$<7XSc; C>oYz8 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_picked_02.fui b/instruments/FM/bass/bass_picked_02.fui new file mode 100644 index 0000000000000000000000000000000000000000..5093a621b01f7fb1302a1e8af08c485f4711b0bd GIT binary patch literal 1672 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHp0y2}cQ&SY25{ru&7+4sX znLrZqtSo%&_6!WHAPyEF&(6TdCXQ2{QJ#yDk690kMyQZHCj%cpZfSl7CI_I?7#KL9 z7)T)jc_cPL=6?bJn*r!rKu!SyCoz>=6Xfb{?)II}V+FeAiquuzR5orl9%B8Bl5MEt-q9E5QJ0COTR AbpQYW literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/bass_slap_00.fui b/instruments/FM/bass/bass_slap_00.fui new file mode 100644 index 0000000000000000000000000000000000000000..7cadc66c463599ac1b2b9f879e5b9c78b4d92c24 GIT binary patch literal 1670 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpf^!lJ6r2)^iy0W085o#A z!ty+PtSll73~V3{79h{Z$jUDORg6tuf|->SsGpe=izHA;UYwB?WDzqrR(XB~CI_Iy z7#KL97)T)jc_cPL=6?bJn*r!rKu#eSpqoXA53z?l8wr_>E)HVi@rB3l0IXlNlHpf^!lJ6r2)^iy4^N85o#A z!t#7v?Cg>Z49p-779cOqz{<*tN1l&`gH0KaJSQUu&@No&^D{6x03F7_zyZZT3JJ&~ zu?aH&69Cu@K-U6t3b_E?EJA#UJ>=O)$ZT}^kzg0PpNBi2P&%d5|Afqk$&cED8UnCz p0hYt80jviY89>qu3b;yGgmP44NarC;B8P>yAmZm|U;trU003seFM)HVi@rB3l0IXlNlHpf^!lJ6r2)^iy4^N85o#A z!tw$f?3@w|49p-779h{fz{<*pN1l(FgH0KaJSQUu&@No&^D{6x03F7_zyZZT3JJ&~ zu?aH&69Cu@K-U6t3b_E?EJA#UJ>=O)$ZT}^kzg0PpNBi2P&%d5|Afqk$&cED8UnCz p0hYt80jviY89>qu3b;yGgmP44NarC;B8P>yAmZm|U;trU001LgFLwX{ literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/dxbass1.dmp b/instruments/FM/bass/dxbass1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..d77bb762f5545bd3e4cf268172d23668119d03eb GIT binary patch literal 51 vcmd;PVq{=uX5bK$=Vj$&U}9k4WMq&R2Qoo`Ls_1S8OUT~U;v8pvp|>tCF=oY literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/dxbass2.dmp b/instruments/FM/bass/dxbass2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..800646cf6780c22781c7935b777a9a77b7d34aaa GIT binary patch literal 51 tcmd;PVq{=pU|?d97iHsTU|?ooU=)@YhB5i&d09ZBObm<+@|^q-1pp(n0bKw9 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/dxbass3.dmp b/instruments/FM/bass/dxbass3.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7bf0a5534a1e7008077db1258448474372938a7d GIT binary patch literal 51 wcmd;PVq{=uW?&PN7h&UPU|?WlU}TUNgECo#A3;@AZszf3}9Gv?9Ut&(vB=A`GV+}$kO<$?LMzr|W0%{08SfdOp* literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/dxbass5.dmp b/instruments/FM/bass/dxbass5.dmp new file mode 100644 index 0000000000000000000000000000000000000000..abe46a08fdc2399b60640420dc11aaa491bf341b GIT binary patch literal 51 wcmd;PVq^dU79nXqes%^1CLmi-l9Qhm%w*A*5?}%{SvVLN8Gxc3KqdnN03;6qT>t<8 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/dxbass5slap.dmp b/instruments/FM/bass/dxbass5slap.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0ee63eb9ac9fa6c89cbd83f2edac4f2ceecccaea GIT binary patch literal 51 wcmd;PVq^dU79nXqes%^1CLmi-l9Qhm%w*A$5?}%{SvVLN8Gxc3KqdnN03)UWSO5S3 literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/fm_bass1.fui b/instruments/FM/bass/fm_bass1.fui new file mode 100644 index 0000000000000000000000000000000000000000..d72ad4d9e63c008e54bd51a0726704a3cb18dd5d GIT binary patch literal 1686 zcmdOOD=o@POioqE%quP_($kG&U|>)HVi@rB3l0IX;}{qj@=_B^(n~W-5{q(6b4oH3 zbJ7)b6%unw3>lc&85meV%H)}uIQeB5n3zEvEI^)_k%M0xk30_(JG&UrFkUR0fkHs@ z+4*^J>gQ)*asWD%fq?^xffN#uM`9CX{wDyi8Gx<@

rNx>s>;Q}m|Sp!%PFfxFo85D4pun6U-#*ofKm_!Z>Z$ZS* K&%gk}xBvjj-8I4h literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/fm_bass2.fui b/instruments/FM/bass/fm_bass2.fui new file mode 100644 index 0000000000000000000000000000000000000000..35fab8fbf44cf0b002760d3eaf599edb1e80c60e GIT binary patch literal 1669 zcmdOOD=o@POioqE%quP_($kG&U|>)HVi@rB3l0IX;}{qjQq$8Fk`jxHflLMl7LcgC z5C=b#3IhW(h=T>lb20EU2{SOVfmLHFkmm!+>jK4b$#XIBGjT95GGn)ZpMl8%>=+K9 z5g?2T)HVi@rB3l0IX;}{qjk`jxHjTxAMJQk3Uybv2d zlOzKJ8;FAi$a699GjTF7vVm1&Dv;*`%1Z(D@&cplbm+gw9`bA?WH!3|NU#gt&%>QhD4kO3e?sQNC$@*cn*#JQ3`N0bJA9G21Vn@6G1z~zxI10CF+lmBIaoC_#)U77yd5}6rzY3-KJ)_El30bT$A literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Double Tom.dmp b/instruments/FM/drums/(GEN) Double Tom.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f2c20d24d44f53317fcacbf27ccfffd79e17f96f GIT binary patch literal 51 ncmd;PVq{=oVc-##lw{y%U|^PK;NXHYnYrW{z@iKcOb8|bE3g5D literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Hi-Hat Closed.dmp b/instruments/FM/drums/(GEN) Hi-Hat Closed.dmp new file mode 100644 index 0000000000000000000000000000000000000000..11b708be71ceb909983e0b8be0db189e9015d3a6 GIT binary patch literal 51 vcmd;PVq{=rW8h~H<7Z%FU|?oo;7DcQVc`ce`57d{m_SS+2F_r4Zm1{#Eg1pk literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Hi-Hat Open.dmp b/instruments/FM/drums/(GEN) Hi-Hat Open.dmp new file mode 100644 index 0000000000000000000000000000000000000000..48b2a553e5ec81f19aecdaa3ffae79ef6b8fc40b GIT binary patch literal 51 vcmd;PVq{=rW8h~H<7Z%FU|?oo;80-TVc`ce`Gq97SV2r~22NFZZm1{#BOU>D literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Kick 1.dmp b/instruments/FM/drums/(GEN) Kick 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e260ccd28cb12c2e389282622086eaacb5dcc507 GIT binary patch literal 51 scmd;PVq{=uVqjp97iZvLU|<$uXQ&7AfPfi9$b$$dlb?+p$mC=I04B5nTL1t6 literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Kick 2.dmp b/instruments/FM/drums/(GEN) Kick 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7865aba26d2d95385823bb65b7372479a052b654 GIT binary patch literal 51 pcmd;PVq{=vVPIsC7vWW(Ed61e2dbUW^4O%q+yffnWjvB4Po0 literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Obvious Ride Open (C-5).dmp b/instruments/FM/drums/(GEN) Obvious Ride Open (C-5).dmp new file mode 100644 index 0000000000000000000000000000000000000000..bc01447bb8842299b60e6791eb2e8eaebce2e1d8 GIT binary patch literal 51 ncmd;PVq{=vVc=(w2Vw>WW(Ed61e2dbUW^4O%*@NcfnWjvA{PO0 literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Obvious Snare (D#5 0299).dmp b/instruments/FM/drums/(GEN) Obvious Snare (D#5 0299).dmp new file mode 100644 index 0000000000000000000000000000000000000000..ade18f3a3896619541ecd2b52a8302b6bd754369 GIT binary patch literal 51 wcmWlOISv3I2*8RL116X_Ir0Br3R9cbnxF$GaEC-AUTFuP_h{h($ literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Snare 2.dmp b/instruments/FM/drums/(GEN) Snare 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..76b5100d3a7a3a047b13161aebc8a9f8def78e2e GIT binary patch literal 51 zcmd;PVq{=vVPN8xX8-|a1_nl6c}Y$-AX5a$m*;0@XJBOJVPN2p=VoFDiV86R03aj* AO#lD@ literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Snare 3.dmp b/instruments/FM/drums/(GEN) Snare 3.dmp new file mode 100644 index 0000000000000000000000000000000000000000..77e488bec14e1948d6332f42efe49aadb4c71259 GIT binary patch literal 51 scmd;PVq{=vVc=(wXJBAv00Bk@c`1G{3&iB-0I_*NOkqwgAXAHlQej6dxN%l#c-bFna;h literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Tom.dmp b/instruments/FM/drums/(GEN) Tom.dmp new file mode 100644 index 0000000000000000000000000000000000000000..23e8fba242eed020d92b3a3c91e70ca2ac4c39bf GIT binary patch literal 51 zcmWm2F&2Oz3`D_CqVWMm(1MaZs#jO0oNk5dAbkzCn|w7%aABe6Y#5@1hQ+^?4>%

6hMV+AqU8Q2&^V4{qy@&fE2Q62^W9{d47 literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/(GEN) Trap Snare Start (D-4 023F).dmp b/instruments/FM/drums/(GEN) Trap Snare Start (D-4 023F).dmp new file mode 100644 index 0000000000000000000000000000000000000000..24e76a6b623deba7d8e8eb9a9d9e03fdbf988efc GIT binary patch literal 51 wcmd;PVq{=vU|?hxW8mj!U|?q8U}BJx;07@T85q??prQj?suDU%8d}JxSj0y2;dcl({w4-Z$M{jkN7bz_P A)HVi@rB3l0IX6Brm7JV8oIb5rw56by|R7+AoF zfkB>wftg>6fq@mK2aT3zVPxb6is6*!Vr1b*(}T>F=VIhy=Ry`iVe>OEIRG8Uz`y~; zKne-SBeB6uptEs;{{#R?<42&HPeA+wh{dp&gl+^Q$Zcc-bh8NYA=coxkQs+t2$_v8 zPmEnStYSbnix7XH?5by}C*-u@CXXx1VB(be7iJD2dek1&5I}^N0&4*40Y-2hVo<=9 an-R)UjUk)HVi@rB3l0IX6Brm7JV8oIb5rw56wDbISip#Z zL7szypTUTMff=R+jh1I&;%6|xBhSUi&me?Ho)aj~hEtxOfyn{rHUBqbL~(cAPx# literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/Heavy Kick.fui b/instruments/FM/drums/Heavy Kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..79a85e516d1cb28e2080f25e82016b2d064fa447 GIT binary patch literal 1781 zcmdOOD=o@POioqE%quP_($h^~U|>)HVi@rB3l0IX6Brm7JV8oIb5rw56wDY{*%=sE zKr-?o4E+2+nia&s0_0g3__=}NIOVw*K-zHvc?O{QOgN?a8JHY^Zew8JfMOtp1c15` zKmf=DIRzK^PXK`Q)su)Lf$G(PSQvoz+#^@ kfb{?)xFBLs02N920je>i^YEKaNEUBF1gej~brKF!09vq16951J literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/Kick_B0.dmp b/instruments/FM/drums/Kick_B0.dmp new file mode 100644 index 0000000000000000000000000000000000000000..765d486a5a6e1df17246c11ef8e4b92c47234172 GIT binary patch literal 51 vcmd;PVq{=vVPIg87iZ&VU|<#oF@^a-OnC+-26=vVh$th2JU1hVDZl^#DA@s* literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/Less Chrunchy Snare.dmp b/instruments/FM/drums/Less Chrunchy Snare.dmp new file mode 100644 index 0000000000000000000000000000000000000000..3d23eaeed54f9365c0c79a279e6b8718f2472622 GIT binary patch literal 51 zcmd;PVq{=oWMF3zkmcuRU|^Q#W?&MN1~M60flOX`5q6*`D-f~D^Ra;xFfafBE-V4Q literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/Snare_B2.dmp b/instruments/FM/drums/Snare_B2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7a659bf09b7b289019199c3809bb5ad9d5838b12 GIT binary patch literal 51 zcmWm2ISK$E3;@A3@hAi%Sfmm1|6gjlVWt#DWe~0g3e-3~=?K@v5M95+TJGinB`*PY literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/Squishy Snare.fui b/instruments/FM/drums/Squishy Snare.fui new file mode 100644 index 0000000000000000000000000000000000000000..3ccef338ce0761a0a222c61c69c9af070ab93bc7 GIT binary patch literal 1762 zcmdOOD=o@POioqE%quP_($h^~U|>)HVi@rB3l0IX6Brm7JV8oIb5rw56wDczfPyR_ z8F>y4W`0=)238OU3y_s!<>zMy$#YQOb24a5&Vvw3oK>QJizd+e< zfb?S^z6Zo0z32cai~<-zej)(C;g3ZPia|thAVv^j;V`g^7mFXT2@w%&C`uT>i4YQo zx}xT}Kr2ZUI98 literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/[2OPHigh]HatClosed_B2.dmp b/instruments/FM/drums/[2OPHigh]HatClosed_B2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..89d5af4d8f6afdddfd0b9f7cccc2ff0945e5598e GIT binary patch literal 51 ncmd;PVq{=tVc=($XW-{&U;t7K_44viCYO{v4B literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/crash_00.fui b/instruments/FM/drums/crash_00.fui new file mode 100644 index 0000000000000000000000000000000000000000..cacf151c164d131fd80836cee0027e9471a0e403 GIT binary patch literal 1670 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoQo2RGZ*Y-~#XkIhVM vVx#t;h5#ar6j%dT4=^%-q!|=&m68bMsK$`aLzqMk3vWTh4=m?F7#9ElGs7)HVi@rB3l0IXlNlHpJTfy9OBh(#85o#ALh=j@ ztRNc5#|q?G7#O+h8JKa(3o&x>W7P=}l;>pR=sM!T ze*yrTN$6TYP9Ybdn?;BZv4=bx37L&9KN9Rh_w#V)6H2F)`k#>bF!@n?P(uI~F2FLF lHGuU1BLhg9K>=40h)|Ad4Cy?CN#wBb7DW8OG9H9+0RYG3F4zD7 literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/kick_00_classic.fui b/instruments/FM/drums/kick_00_classic.fui new file mode 100644 index 0000000000000000000000000000000000000000..e48795c8f15b6f57bcbb8264ebd4e0e1762f19ff GIT binary patch literal 1699 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpyfc%t6*Qc45{rv7lQkJw z*clj@Kyvc(to$IFRUSlQ0(oghUXTJ-OewI4ygVaVKLalP42--uw1R~B8JHY^u47=} zfMOtp1TYL`Ly|;i{wDxn>c0Thy+FcufNYo?j7B$#5#&ZP0lHa)_z-KzvyhP4=<*}M zE_6Q+cRrzHN~!+|nGcg6wFfl>VBrERq*()44=^%-q!|>L5#l&lsK$`a!(l9u!gvcJ LeqiAb!ngnc5~f6& literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/kick_01_power.fui b/instruments/FM/drums/kick_01_power.fui new file mode 100644 index 0000000000000000000000000000000000000000..d091d9e85e5093bfb4f422917f229e7d557d6ac8 GIT binary patch literal 1685 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpyfc%t6*L0!%TtRq8CcjE z7??mZ@~r&){2UAntRM~+ATQ0q%MTRCDK8AvFNZ}VR7jqO0jwW~3VsGA2cX*+7=TUy zV<3eDKqY6!r>1z0Sz2CyDrWB^GsDBvr`AX-q3A)SY?m>d?~f`}hj JAAm3}008j%I9LDx literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/kick_02_power2.fui b/instruments/FM/drums/kick_02_power2.fui new file mode 100644 index 0000000000000000000000000000000000000000..2e348ba4fde6ad44b81274ac2cb464d6fbecf2fd GIT binary patch literal 1688 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpyfc%t6*L0!%TtRKJUulT zSlAgDm_U;9LJa);;tUL|APyEFFU`Tr4;05KFACI;MITH^o`(UfAI3+c`5BlTfX-uJ z;DBNvg#_f0*kC3zx&RXYKLG$!`UR-&1rWpdFdAJuBgkE30(7$o@gdfbXCWc8(d9>i zUFd!u?tDVYlv4i_G9M;CY7c4%z`_MsGP4G-9$;huNi!(mE5;yNP>ms-hp?C&7T$sg JRNmt&^8wHnIP3rb literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/kick_03_muffled.fui b/instruments/FM/drums/kick_03_muffled.fui new file mode 100644 index 0000000000000000000000000000000000000000..3e0219533621a03d82236b4fc5da5bcf57f648bd GIT binary patch literal 1687 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpyfc%t6*PQH)6#NMQ#2V^ z*clj@Kyvad4E+3V3=FIw4i+HK%)rZFk4K&js2__yn2@{_0}mc~eg-B7pz9bIIG`9v zApv)HVi@rB3l0IXlNlHpyfc%t6*Qa@i;Gi=N^>)HVi@rB3l0IXlNlHpyfc%t6*Tvm~tQyNnu8Q7Lc3(c6oVzMt*+mQXo-&1||of z+ZY%)pcqIY0Sre0osARxCjdYizX8>J0OB`5`~r%f0O>nG%!y_)PzVJug4_uNPzuau z0g|{dSOEzHie*G_AVwp*hIq?}Fdjw8NU#gV!y|x0D78=;1cc0o$&cED8UnCz0T$(~ k0jviY89>qu3d{&`94u60Nax`&mPlc|1rewYz*i3d06;EF=>Px# literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/kick_06_fat.fui b/instruments/FM/drums/kick_06_fat.fui new file mode 100644 index 0000000000000000000000000000000000000000..151f017200fe0bc63f7769f95ad71727573ff3ef GIT binary patch literal 1691 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpyfc%t6*SxuOEei+*clj@ zK;rTYJpBCJU)HVi@rB3l0IXlNlHpyfc%t6*SxuOB6gk74#KC z5;L>&?KK%#*clj@Kx*U}c=-9b!3+==1ISA-Z~@gaFbH5sfd%Ac82R}nflM(R@|=wP zVEx$T`5BlTfUaa<;DBNvg#_f0*kC5uD0D$6|33i$)Aj+V?h6pV0pj;S{2Yj%0x?V; zMgxUV03*nqWC9d}h~Pl1A)HVi@rB3l0IXlNlHpg7XrKQWZ3UGjj`aQZ*S^ z*clj@Kyvc({H!1vOn?|@Kwg@Wksm0AQ(l0di=PWk6B1Wmkbw)N9|z!PU~&Muj)8## zih&dokVj&JnINUOz<&Y&qz~+8Gy~AJF*4$_1x+&=7u_sEe28}P>?340y8KA63*FDd zosX9MFu0WZAHzT#0;Bezh5#a%6j%dT4=^%-q!|>L5#l&lsK$`a!(l9u!gvcJeqcEc H!ngnco+B|M literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/snare_01_curvy.fui b/instruments/FM/drums/snare_01_curvy.fui new file mode 100644 index 0000000000000000000000000000000000000000..e82114730b1d4074533166e829ae809a1847b47b GIT binary patch literal 1694 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpg7XrKQWZ3uON+`XH5pjg z85o#AQu6ZrtRNc5#|q@785ue8$qVpv@pIwPFTlXXk6S-K1Cs;LaSRL`Pz*#AHp9iSV-$Ov*Ec>vukLVSoVCZd zhdZB8Dy7u_gv^J@kJ^J80)HVi@rB3l0IXlNlHpg7XrKQWZ49Qxmf_8CcjE z7??mZ^78zwAR5TW3gkJM7+DSQ$P4gu@pIvmXW-(;Z9YE(lLOFg3=AAl45W~NJQ5qs zWI-1|;{PWAKuSS=1}Xao#D9SpNjsPcl0ycJj3CF62awGnh7GZWJo|_-A6d;vunXD0 zBY{mQl~Ni8gv^J@kJ^J80)HVi@rB3l0IXlNlHpg7XrKQWZ49QxmflJUulT zSlAgDm_U;94E+2c2D?0nhY94RnfN*Qf%06Kav%{&DMpBX0qpYf{EYlS?F>NsumOGs zCI_JN7#KL97)T)j3`emcNuo3V696FfKY?n#0r3|g{tU#QpqP+Zj376X34m6R1R&Os zXCX-z0Tqt~yGRX_p{|}#GNsgigv^J@kJ^J80)HVi@rB3l0IXlNlHpg7XrKQWZ3OOViSFQd2Y; zSlAgDm_U;94E+2|AeKCchY94x8M(Mbf#O`4av%{&DMo%KZXiPtySzLm^h3E3ZVc-ko(94C{9 literal 0 HcmV?d00001 diff --git a/instruments/FM/drums/snare_05_intense.fui b/instruments/FM/drums/snare_05_intense.fui new file mode 100644 index 0000000000000000000000000000000000000000..087f8d6cb8a47bf13c253f115c085c572d169179 GIT binary patch literal 1746 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpg7XrKQWZ2j^GZ_lic|Gn z67!N%H5nM#85o#AO5_>%`I$g0c@Pg1$cr;_aY+EhxiIBGBJ!e){45{_FNnYd^8Aea z{FuTp5q<_H2cRPv7&xF9NFf0XM**FU6Z|ItKpMeL1=4?jYC-r16n_NLoMuCT literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/(GEN) Decay Laser.dmp b/instruments/FM/effect/(GEN) Decay Laser.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7b5218ed55705011eda0be1fd209bfb76251856e GIT binary patch literal 51 tcmWm2F$w@63z>% literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/(GEN) Techno TL Pitch Slider.dmp b/instruments/FM/effect/(GEN) Techno TL Pitch Slider.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c10cc7d95249e477f03dbd0e110ac4c8c123e872 GIT binary patch literal 51 pcmd;PVq^dTDS1v-eg+0+AX8ADlL5+PmuKdOGI`}WnL$iu1^^-l0ZIS> literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/(GEN) Thunder Strike.dmp b/instruments/FM/effect/(GEN) Thunder Strike.dmp new file mode 100644 index 0000000000000000000000000000000000000000..9d4a8dc78df8e76cb8037204c7c112974cd09696 GIT binary patch literal 51 scmd;PVq{=pU|{5w=Vaq&U|o&f+L0RdnD literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/Interference.dmp b/instruments/FM/effect/Interference.dmp new file mode 100644 index 0000000000000000000000000000000000000000..9a436c77fe6b6b5ad0526ec3ed446c6dac8a9440 GIT binary patch literal 51 pcmd;PVq^dUMh1Bnc76s1HXu_&o`E081c`DWm<*yaTp$I~TmT^=0dW8T literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/Ocean.dmp b/instruments/FM/effect/Ocean.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c9e6f339345299b52d59fa6f134c98f60cec3286 GIT binary patch literal 51 ucmd;PVq{@wVdRjJXXWQ-009<3d3Jt&Mg}%{1}+gEPOvDDDZ>e70!0BYlL7Al literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/Skid.dmp b/instruments/FM/effect/Skid.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a6d4a6f17a5de790b3439b86c41aa849c5ca4721 GIT binary patch literal 51 vcmWm0K@I>A3;@AJMCqZNN&5d^YUeasOQ%tJOd}TV*6fjizm;_XRg2<$BFO=X literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/Sore Throat.dmp b/instruments/FM/effect/Sore Throat.dmp new file mode 100644 index 0000000000000000000000000000000000000000..b4975acdae2519e396d6a5f265caec62472ee477 GIT binary patch literal 51 vcmd;PVq^dUCJA9Kett$qR(TEv2}yAdentimQ$&ytCdwed3}iAe%QFA~Fqr}I literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/[2OPLow]Analog Horror 1.dmp b/instruments/FM/effect/[2OPLow]Analog Horror 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..fdb79f2a0d537cb55286f22d0f46ccfb37a34df4 GIT binary patch literal 51 ycmd;PVq|A$VPdG4m*?kaU|^JIU|^7z0Wz7HG(418jo{0xlD0vrHRFar1h literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/[2OPLow]Analog Horror 2.dmp b/instruments/FM/effect/[2OPLow]Analog Horror 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..894185538970df8cd4095fb312572945b331f4ef GIT binary patch literal 51 scmd;PVq|A$VPdG4m*?kaU|^PKU|^7zfiO9cM41`*#5nmG7?}k)08%Of_W%F@ literal 0 HcmV?d00001 diff --git a/instruments/FM/effect/fm_propeller.fui b/instruments/FM/effect/fm_propeller.fui new file mode 100644 index 0000000000000000000000000000000000000000..f7e5dd97f40f8587985bb5ef2758a18a243bd2e7 GIT binary patch literal 1673 zcmdOOD=o@POioqE%quP_($kG&U|>)HVi@rB3l0IX;}{qj(sC6Fit-Cmb8=FP!1630 zQXYuez+CJENS+nD6j+p?ybuFFP$4rLCkHlD_!*cSfNo=80Lfyi0GUoS_)h>}GYDM^ z$SLFkbh8NYA@-1GBO$ZVC literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/(GEN) Banjo.dmp b/instruments/FM/guitar/(GEN) Banjo.dmp new file mode 100644 index 0000000000000000000000000000000000000000..b388e3de830563b3a04d1059512296c3fde67520 GIT binary patch literal 51 scmd;PVq{=oWMI^i=Vah#U|?ooU=o$*dJ|p-eV;es%~G04XN{iU0rr literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/(GEN) Electric Guitar 1.dmp b/instruments/FM/guitar/(GEN) Electric Guitar 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..8c418100d97fa29bfff0ad88c9801115c00b8575 GIT binary patch literal 51 ucmd;PVq|1xVqg@IXJg`LU|SsW(Ec(S$PgdC{swDl>y4+g);#j&;c?4 literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/(GEN) Grunge.dmp b/instruments/FM/guitar/(GEN) Grunge.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5a1764a150aed6726baeadc09c3ac527f1ec06da GIT binary patch literal 51 ucmd;PVq{=sW?V~cS%4xS1pp&00Wkmo literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/(GEN) Shamisen.dmp b/instruments/FM/guitar/(GEN) Shamisen.dmp new file mode 100644 index 0000000000000000000000000000000000000000..489bbb64160b38e9740ef0277db0ac973da52755 GIT binary patch literal 51 zcmWm3F%G~W32Y?5dy0j+P6^2V(f0{TdD<%K=&d literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Acoustic Nylon Guitar.dmp b/instruments/FM/guitar/Acoustic Nylon Guitar.dmp new file mode 100644 index 0000000000000000000000000000000000000000..b79addcf1c60e804b0f268207fc6e4330fcb786e GIT binary patch literal 51 wcmd;PVq{=oV&E{6l;P)RU|fr3CLtA;!SKMR=2$RN+f&k1G%052T@pa1{> literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Acoustic Steel Guitar.dmp b/instruments/FM/guitar/Acoustic Steel Guitar.dmp new file mode 100644 index 0000000000000000000000000000000000000000..64e77b9c8b089a462abbbd0a8875b1406e6cfc0e GIT binary patch literal 51 wcmd;PVq{=oV&G7hl;P)RU|?ooVAPOjnamRMEc`4GQ3iP~eoinG04z}fi2wiq literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Distorted Guitar 1.dmp b/instruments/FM/guitar/Distorted Guitar 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..319c4cf08ca5cb19159da7d520b6f0d0cac07888 GIT binary patch literal 51 ucmd;PVq{=pW?&YO7iD8$U;ttkZh3ZQAQK3f1myWxAWRl^d1fXKumS)drvV`V literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Distorted Guitar 2.dmp b/instruments/FM/guitar/Distorted Guitar 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..67f361cf40bbf1b83b8a2b6b4d7782d67f872b80 GIT binary patch literal 51 xcmd;PVq{=pU|{2r7h`8<00CA}c}{*HlZ}Cag->3TnG4KhVvy%x;RH!D001O$0agG2 literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Electric Clean Guitar.dmp b/instruments/FM/guitar/Electric Clean Guitar.dmp new file mode 100644 index 0000000000000000000000000000000000000000..08c7ec708d84fc6aef9d6282601815472f6d0633 GIT binary patch literal 51 xcmd;PVq{=vVBpk~=jG>QU|?ckV3d<*;bvrDUTU|?ooV3d<*;bw#|MdUg7Sr{0YfT9fYoc!EiQ2;C`0fYbm literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Electric Guitar Harmonics.dmp b/instruments/FM/guitar/Electric Guitar Harmonics.dmp new file mode 100644 index 0000000000000000000000000000000000000000..07f2103287a0c7b93f7bfbb4c403bf4c69ee084e GIT binary patch literal 51 ycmd;PVq{=vVqg-G7w6|^U|?ooU=fpN;ARBU3=ABK@(lby8i<$}pf=o{2jHXkPY0cQXJ literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Electric Overdriven Guitar (Low).dmp b/instruments/FM/guitar/Electric Overdriven Guitar (Low).dmp new file mode 100644 index 0000000000000000000000000000000000000000..8d276a1ae735fbcc16d81c1c25bad973ec6b7379 GIT binary patch literal 51 ycmd;PVq{=rVqoT!7w6|^U|?ooVC0i$;ARBUKqMs3z|X?K07Q%o^6dOPU)HVi@rB3l0IX6Brm7JV8oIb5rw56b#LQd)HVi@rB3l0IX6BrnQBohMz3y3Ge&B)3m$iU1D z62t_I@=P3T4AKk?Y?yLj5qUlib|yX?l0ad3P9`p9UIqqccC2dn8JHZv?%@DRgD@(P zN9E$@{U-oGx`EzC0q9y7p}_#6m{C*`&p|hn5FcVP_V6cUDd?~f{34=fdPbZ0RUmsEFAy< literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/SSGuitar_A2.dmp b/instruments/FM/guitar/SSGuitar_A2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a0b01b7e01ace92d8e3123e0b38d31bbeb995526 GIT binary patch literal 51 zcmd;PVq{@wW?&SNm*L}QU}6^IVdRl#XXa;MU}Rum5|w9X0y0^FJWhFLkSH?)0{|@o B0gC_t literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/SSGuitar_B2.dmp b/instruments/FM/guitar/SSGuitar_B2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5f541f317c42161bbdfc54efe3db9af1de7337c2 GIT binary patch literal 51 zcmd;PVq{@wW?&SN5$EM+U}l!!VdRl#XXa;MU}Rum5|w9X0y0^FJWhFLkSH?)0{|=f B0fhhn literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/SSGuitar_F#2.dmp b/instruments/FM/guitar/SSGuitar_F#2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..87cca094e8f9204b94da55cc4eb76224034a7b3e GIT binary patch literal 51 zcmWm2F%AGA2n4}{lMo|`jdlk9|4X&o*`d;$u$3n!lo=A`oPYqj%k`x__2Rz-E-p|3 AlmGw# literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/SSGuitar_G2.dmp b/instruments/FM/guitar/SSGuitar_G2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..8303444f422277999af66936a028b28a9ff90d40 GIT binary patch literal 51 zcmWm2K@I>A3`EgshcrTTLs;qkZ;9Q1zp5l7WSrF<KZNU|)HVi@rB3l0IXlNlHpTr!JG+)Fb{5{np^*%=s^ zK;rUTJp4Qo3=GU54i+FU#>&eogh!r>ou6L~k3172FVHSr=JPW!IRIV8z`y~;Kne-S zBeB6uT+ReZ{wDxnW_4^LVSodCZdhdZB8 zGNsi2gv^J@kJ^J80EVP|DzWMpGy;NX{MV`gMvU}oT85|CtLU;!~1m^9^C*g#BX1^^!x B0XP5v literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/(GEN) Ringing Trumpet.dmp b/instruments/FM/horn/(GEN) Ringing Trumpet.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0cf615ef09d6d975186c6c34a6be5f679cf1de58 GIT binary patch literal 51 ycmd;PVq{=vVPKG!XJuhzU|?ooU{R9iXW(aG1Tq;o1UOmPz@iL%qMR)JU?u<}WC1t; literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/(GEN) Trumpet 1.dmp b/instruments/FM/horn/(GEN) Trumpet 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..bea221387005673be16b904179af4128394bfcdc GIT binary patch literal 51 tcmd;PVq{=rVPKGyXJuhzU|?ooU{I3hXJTbw1TonJI9b>sqHLltCIBDg0T=)P literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/(GEN) Trumpet 2.dmp b/instruments/FM/horn/(GEN) Trumpet 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e333c327319d541773f2bf139ec36182c677ba95 GIT binary patch literal 51 ycmd;PVq{=vWnd7L7iMN;U|?ooU=)<+XX0RB1TqXx$e??ff8hfq CYXM>a literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/(GEN) VRC7 Trumpet.dmp b/instruments/FM/horn/(GEN) VRC7 Trumpet.dmp new file mode 100644 index 0000000000000000000000000000000000000000..931482df608b62fe349bea2e44c7b18d2050ba0e GIT binary patch literal 51 pcmd;PVq|7#VPKRMVPoT9U|?ooV5pau=jR79?Dh@9D|F0^U95Pu}sGcftz}V8s^B70bCiMBUz6>rOe*r}R literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/Saw Trumpet.dmp b/instruments/FM/horn/Saw Trumpet.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e8f3e43fef70bd0140c559c918131f05ed09bfb8 GIT binary patch literal 51 qcmd;PVq|7#Wnxqi=3wGy00S<04t^k$O`d^KNS=WKBFZETX955wqXA_A literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/Trumpet.dmp b/instruments/FM/horn/Trumpet.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5abd62ddf1a1797d120730e1384dacf413a136ec GIT binary patch literal 51 ycmWN@ISv3Z2n4|%z?Y2d*wOy~my1+EZIebr?@M)X$MTF=)slC`1Ow$UuLk@c1OWm7 literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/ass overtone brass.dmp b/instruments/FM/horn/ass overtone brass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f6aca14b553962d6c57cd62ec2ada1b8ebeea622 GIT binary patch literal 51 ycmWm2F%p0<48%YYn8P>};Zo=S-y~MGqaFubv}q8PmTzt9rKR%;I6stD)E)dD5dk>> literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/brass_00_wobbly.fui b/instruments/FM/horn/brass_00_wobbly.fui new file mode 100644 index 0000000000000000000000000000000000000000..3631dcd280f6087bf50aec99def72bd17b274631 GIT binary patch literal 1675 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoQe{Qixo7&^OKTtDm59H z*%_IbKytk7jLfVG3=GU54i+FU#mLI8g-4!^frV2Ax4a}LBPT!5TpZ@}GcY*-UB|${ z0mVQH3CJU{2{Qi^0N4yb*8*}1xd7cPLVSolCZdhdZB8I;GVAgv^J@ ykJ^J80)HVi@rB3l0IXlNlHpoQe{Qixo7SfTV6_afT)X z6DtD)3rJR;fq|c22E@V+1b7)ZIY3fO*yZ`T*!VfLu*-o&WO>r@P literal 0 HcmV?d00001 diff --git a/instruments/FM/horn/brass_02_boring.fui b/instruments/FM/horn/brass_02_boring.fui new file mode 100644 index 0000000000000000000000000000000000000000..3d9dcc31f472e9d17694865993fa9ace06facaa0 GIT binary patch literal 1687 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoQe{Qixo72Gjj`aQWX;O zQWTQ>gFOA*-8C7Q*cljDKT7?~Ng7?{{V94tVXg^__)HVi@rB3l0IXlNlHpoQe{Qixo72b28I2N^&X{ za#DfZr2L}HymUy9U7LZCA4n}4MH3kMY5C;noW?^LD(qUi#s>ceXI2l>kMR4nv z;AG_FXTqu#B*@Red3FYNuqcNZoCyFTAOS%D literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/(CH3) Double Reed Organ.dmp b/instruments/FM/keys/(CH3) Double Reed Organ.dmp new file mode 100644 index 0000000000000000000000000000000000000000..bf5bd1848df9a3f163fc5d7014ed21851bf8a30c GIT binary patch literal 51 mcmd;PVq{=vVPIC2XJBDvU|@5EMZ@FtVFiVYebj$4rqf;;-1I@AnZ+A@v#e5+c0YCr% literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/(GEN) Piano 2.dmp b/instruments/FM/keys/(GEN) Piano 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..dffd316ebd9adfedd52ada768499a10510c6234a GIT binary patch literal 51 zcmWN`K@vbP5CFj$yF!GkQ2~SvWvUE(Q)hc@}nvC;%vK0f_(r literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/(GEN) Spoopy Organ.dmp b/instruments/FM/keys/(GEN) Spoopy Organ.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4217049a3bbf2a879904ee4f7749f5d365dc6eab GIT binary patch literal 51 mcmd;PVq|AvXJFu!=VIVzU|?ooU{aQ6fHE1m;Y=1aI1>OPB>__a literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/(GEN) VRC7 Reed Organ.dmp b/instruments/FM/keys/(GEN) VRC7 Reed Organ.dmp new file mode 100644 index 0000000000000000000000000000000000000000..79cc28361bb2c8a4c6ac76c7982591c7fd2e7f98 GIT binary patch literal 51 qcmd;PVq{=vVPIC2XJBDvU|?ooV5pau=jR79imRKG;39%PKt&t`=}`6kd^1hjhF)VsEN8TZ0bdsCT(Nu`I=MDa2!V7;u0l#&9BF%S*rbSzh7}| p>%UKT0`0ugU>iJ~>Ze6YucEeusxD@DL|Mc2`-Mapi~-V3_5z$9Eja)H literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Clavinet.dmp b/instruments/FM/keys/Clavinet.dmp new file mode 100644 index 0000000000000000000000000000000000000000..038d3bf41fa861f29a6e3e4673658cae23e4bbcf GIT binary patch literal 51 wcmd;PVq{=vU|>{`7iVE+U|{B8U=o&R;AR9efudsa4E!t*CWAaDKNpw@03{g#Qvd(} literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Creep Organ.dmp b/instruments/FM/keys/Creep Organ.dmp new file mode 100644 index 0000000000000000000000000000000000000000..048d2ae9dfcd61f2edb002c82e628ca6e4a22ca5 GIT binary patch literal 51 ocmd;PVq{}rXJF-*5ocm!U}R=sV1Y6j85o$MOeO}H0tO%e03{~@UH||9 literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/E. Piano 1 (Rhodes).dmp b/instruments/FM/keys/E. Piano 1 (Rhodes).dmp new file mode 100644 index 0000000000000000000000000000000000000000..1047d95a53551a8267248cf5c1254795968e4e0c GIT binary patch literal 51 xcmd;PVq{=oVc@fr7iDHnBwxB{9Ftmz{n)e!Osb10st;&0hIs% literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/E. Piano 2 (DX).dmp b/instruments/FM/keys/E. Piano 2 (DX).dmp new file mode 100644 index 0000000000000000000000000000000000000000..cf7a206dd437a5f8ae513e85b7a567aeea3116e4 GIT binary patch literal 51 ucmd;PVq{=vVc=GiXW(aMU;rXUMR_)EMlh2{PM)8i10u>G&%w_LW&!{zya9>; literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Harpsichord.dmp b/instruments/FM/keys/Harpsichord.dmp new file mode 100644 index 0000000000000000000000000000000000000000..ce0d98220e59a7b929e5e5e51548c50763990b49 GIT binary patch literal 51 scmd;PVq{=oWZ=<}XJ=wyU}9!tU=)^T<_9qu7}#{-OeQ`clMO5i04Nm!dH?_b literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Less Soft E Piano.dmp b/instruments/FM/keys/Less Soft E Piano.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e55ec1162ce6cf9993b9f9ae51925d90f1923bb5 GIT binary patch literal 51 zcmWm2K?=Yi5Cp-V?5YV09&;QJe~|zGO;X3|mqbY0bv9AqUVcjw6!f{}Ew Cw*k5U literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Low Piano.dmp b/instruments/FM/keys/Low Piano.dmp new file mode 100644 index 0000000000000000000000000000000000000000..60d7f57180680ca8809e433fc0a9ceab5f8fda39 GIT binary patch literal 51 xcmWlPF$w@648+nabWnfbaJ%^b_gMph44DccVmk*Yp^jAEAQbKBW(V)!{g39$k`NyTh52^If(~{Q*KGPH30YWCI#l>D1p$@- literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Organ 3 Alt (Rock Organ Alt).dmp b/instruments/FM/keys/Organ 3 Alt (Rock Organ Alt).dmp new file mode 100644 index 0000000000000000000000000000000000000000..e5e472e4d611d17dea2964fe3926b7ae6484e481 GIT binary patch literal 51 ycmWN@F%G~W3a3oM0vZEHMF$ literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Piano 2 (Bright Acoustic).dmp b/instruments/FM/keys/Piano 2 (Bright Acoustic).dmp new file mode 100644 index 0000000000000000000000000000000000000000..887c9abc6efe41f8df0ea50d2167105fcedbbf84 GIT binary patch literal 51 zcmd;PVq{=vVqlb)mtbaLU|?ZkVA7Ch;bvrDUAj`?m31$KSDVqU% literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Piano 3 (Electric Grand).dmp b/instruments/FM/keys/Piano 3 (Electric Grand).dmp new file mode 100644 index 0000000000000000000000000000000000000000..c5041b1f36cf950b65d84505ecf66d174de55dcd GIT binary patch literal 51 zcmd<)U}RutVqlb&mSARKU|?ZkV3Lp*Vq#=qVCG<8RF>!A2Z}N?FfcO6a`JP6nE)w_ B0e%1g literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Piano Test.opm b/instruments/FM/keys/Piano Test.opm new file mode 100644 index 00000000..ad372590 --- /dev/null +++ b/instruments/FM/keys/Piano Test.opm @@ -0,0 +1,1030 @@ +//MiOPMdrv sound bank Paramer Ver2002.04.22 +//LFO: LFRQ AMD PMD WF NFRQ +//@:[Num] [Name] +//CH: PAN FL CON AMS PMS SLOT NE +//[OPname]: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN + +@:0 Piano1 (Acou.) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 31 24 4 4 2 41 0 3 4 0 0 +C1: 31 0 0 4 15 41 0 1 3 0 0 +M2: 31 7 0 1 11 43 0 2 3 0 0 +C2: 29 9 0 9 15 0 0 1 3 0 0 + +@:1 Piano2 (Brite) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 31 24 4 4 3 31 0 1 4 0 0 +C1: 31 0 0 4 15 39 0 3 3 0 0 +M2: 31 4 0 1 11 40 0 2 3 0 0 +C2: 29 9 0 9 15 0 0 1 3 0 0 + +@:2 Piano3 (EGrand) +LFO: 0 0 0 0 0 +CH: 64 7 2 0 0 120 0 +M1: 27 24 4 4 3 29 0 1 4 0 0 +C1: 31 12 0 4 15 35 0 1 3 0 0 +M2: 31 18 8 1 2 24 0 2 3 0 0 +C2: 29 9 0 9 15 0 0 1 3 0 0 + +@:3 EPiano1 (Rhodes) +LFO: 0 0 0 0 0 +CH: 64 0 4 0 0 120 0 +M1: 31 21 0 3 3 57 0 14 5 0 0 +C1: 31 9 0 10 15 23 0 1 0 0 0 +M2: 31 1 0 1 5 53 0 1 5 0 0 +C2: 31 8 0 9 15 2 0 1 0 0 0 + +@:4 EPiano2 (DX) +LFO: 0 0 0 0 0 +CH: 64 7 4 0 0 120 0 +M1: 31 0 0 3 15 38 0 11 3 0 0 +C1: 31 15 0 8 15 30 0 12 3 0 0 +M2: 31 6 0 1 11 33 0 1 3 0 0 +C2: 31 8 0 9 15 0 0 1 3 0 0 + +@:5 Harpsichord +LFO: 0 0 0 0 0 +CH: 64 7 0 0 0 120 0 +M1: 31 4 0 3 15 42 0 2 3 0 0 +C1: 31 28 6 4 1 21 0 5 3 0 0 +M2: 31 5 0 1 1 31 0 9 3 0 0 +C2: 31 9 0 9 15 0 0 1 3 0 0 + +@:6 Clavinet +LFO: 0 0 0 0 0 +CH: 64 7 0 0 0 120 0 +M1: 31 23 8 3 4 32 0 1 3 0 0 +C1: 31 0 0 4 15 22 0 1 3 0 0 +M2: 31 0 0 1 11 19 0 2 3 0 0 +C2: 31 9 0 10 15 0 0 1 3 0 0 + +@:7 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:8 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:9 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:10 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:11 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:12 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:13 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:14 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:15 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:16 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:17 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:18 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:19 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:20 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:21 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:22 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:23 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:24 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:25 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:26 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:27 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:28 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:29 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:30 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:31 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:32 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:33 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:34 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:35 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:36 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:37 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:38 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:39 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:40 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:41 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:42 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:43 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:44 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:45 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:46 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:47 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:48 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:49 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:50 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:51 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:52 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:53 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:54 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:55 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:56 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:57 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:58 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:59 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:60 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:61 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:62 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:63 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:64 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:65 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:66 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:67 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:68 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:69 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:70 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:71 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:72 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:73 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:74 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:75 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:76 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:77 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:78 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:79 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:80 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:81 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:82 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:83 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:84 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:85 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:86 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:87 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:88 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:89 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:90 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:91 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:92 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:93 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:94 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:95 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:96 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:97 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:98 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:99 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:100 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:101 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:102 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:103 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:104 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:105 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:106 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:107 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:108 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:109 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:110 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:111 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:112 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:113 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:114 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:115 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:116 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:117 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:118 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:119 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:120 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:121 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:122 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:123 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:124 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:125 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:126 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + +@:127 no Name +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 64 0 +M1: 31 0 0 4 0 0 0 1 0 0 0 +C1: 31 0 0 4 0 0 0 1 0 0 0 +M2: 31 0 0 4 0 0 0 1 0 0 0 +C2: 31 0 0 4 0 0 0 1 0 0 0 + diff --git a/instruments/FM/keys/Reed Organ or Bandoneon.dmp b/instruments/FM/keys/Reed Organ or Bandoneon.dmp new file mode 100644 index 0000000000000000000000000000000000000000..04a27e103201988546ed1abbe3862738cc5ecec1 GIT binary patch literal 51 mcmd<)U}RunVPKJ!XJB9kBSrxrlM&2h;uhdyYuz literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Rock Organ.dmp b/instruments/FM/keys/Rock Organ.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5b2e369255abb86de4d34d211cb82252b549bcb9 GIT binary patch literal 51 qcmd;PVq{=oVq%k$=VagqG8q`yjNwccX$X@IsDuy1WME)sU;qFqECGW6 literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Soft E Piano.dmp b/instruments/FM/keys/Soft E Piano.dmp new file mode 100644 index 0000000000000000000000000000000000000000..09c0ee36f392d66339dc5d3a12d9bcb55a639991 GIT binary patch literal 51 ycmd;PVq|1sW@I#yXX9sQWME@pU^JFwXW<9ZAf`N+$qHn$$jCErGB7Z6FaQ89sR6eD literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/Sparksichord.dmp b/instruments/FM/keys/Sparksichord.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e75439a5083da9312eac12c0f0770d1269d76fb4 GIT binary patch literal 51 tcmd;PVq{=pVPF)LXXWQ-U|?ooU|^SL05RDZ7??QZIYCSyV1zP(3IHQ;0a^e6 literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/brickblock369 Church Organ.dmp b/instruments/FM/keys/brickblock369 Church Organ.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4bb90d2be142a8a97b6ecadecc84f97c110ea18c GIT binary patch literal 51 vcmW;8K?(pM2mrxN%ESoi68)tA|15G&Gpx`nem6J>5C>XLRs@zsC%+00A&3DF literal 0 HcmV?d00001 diff --git a/instruments/FM/keys/brickblock369 Harpsichord.dmp b/instruments/FM/keys/brickblock369 Harpsichord.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a2aba1f2d7b3b99cfa540071d1c49d4e34639f15 GIT binary patch literal 51 xcmd;PVq{=vU|`acXW?gNU;rXcd3jbwMlh3AR9=RW1;}J$U}TWzho%d<0aGBU6*Ffj7MnE)&n0e%1g literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/(CH3) Double Steel Drum.dmp b/instruments/FM/percussion/(CH3) Double Steel Drum.dmp new file mode 100644 index 0000000000000000000000000000000000000000..25779c24d2c1b7c83fa7e3f32a7d9c296396d068 GIT binary patch literal 51 mcmd;PVq{=oVPMr3U|`^2U|?oIW-_wLb2EcPSs55P;Y+pOFh)6aYQg0;~W4 literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/(GEN) Metalliphone.dmp b/instruments/FM/percussion/(GEN) Metalliphone.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5622fb6d2c7bb0765d1f9d2f68b8b16ac90788a1 GIT binary patch literal 51 zcmd;PVq{=oV`5R4=j32vU|?ooV36bB;^71`IT#pt+pOFh)6aYQg0;~W4 literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/(GEN) VRC7 Metalliphone.dmp b/instruments/FM/percussion/(GEN) VRC7 Metalliphone.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5083c5f62d1b0cee2c3cdcdf74399e56d37ecb52 GIT binary patch literal 51 vcmd;PVq|7#VPrRuXJ+GJU}R=sV5pau=jUf&V3ucKWS3`W;$&oCK@kN2LRTv2FHcKEQQobdJO^cB!^A1f6BiU0rr literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Agogo or Cowbell.dmp b/instruments/FM/percussion/Agogo or Cowbell.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4b3b2e35070024df1f56579f820a50166f77d414 GIT binary patch literal 51 zcmd;PVq{=tVPIg8m*MAUU}l!*=H`><)HVi@rB3l0IX6Brm7JV8oIb5rw56igTx*ccdC zKr)iDJbe5z42-M{93U%^4#PXJ)*U|>Mk0&)tu0NpG?e26{d*+|H2bor5B7rLK^JD*TGrPTj~ z%!kR3+JhPbuy6qu#jF9W2N=PH41)qQLL3JR)fm!wIE*Dy7;izu4=lq$7#9El6jLz; literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Dulcimer.dmp b/instruments/FM/percussion/Dulcimer.dmp new file mode 100644 index 0000000000000000000000000000000000000000..76ddf97a7aa0965be3026ac29cbd88f9ce92487b GIT binary patch literal 51 ucmd;PVq^dUW<_~HCT1Yb$-t;4&%(_LWCD@2JUc&#W?*1slIP@yhynm7Rsn1P literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Glockenspiel.dmp b/instruments/FM/percussion/Glockenspiel.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a33a224b3f74a07746ef30143555ce2a0be91b26 GIT binary patch literal 51 xcmWm2*$Dt33AA^>5o6q}M^y4K(RIAq~a;Q}u10k;4E literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Kalimba.dmp b/instruments/FM/percussion/Kalimba.dmp new file mode 100644 index 0000000000000000000000000000000000000000..b62ae7d45374647f49a3bdae0742fd1dbab98dfa GIT binary patch literal 51 tcmd;PVq{=oV_;^G=j7*S0MZQ19P(lyCJ=D2%S(WmYzz#H9P<271pp<&0f7Jj literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Music Box.dmp b/instruments/FM/percussion/Music Box.dmp new file mode 100644 index 0000000000000000000000000000000000000000..1b65c6a1656a6f5bace79f497179faf75ff0acce GIT binary patch literal 51 tcmd;PVq{=pVc^o2=ip~!U|?ooVAB=l=4J#lnFRQ__}RfsMn-uU696j^0eAoa literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Peck.dmp b/instruments/FM/percussion/Peck.dmp new file mode 100644 index 0000000000000000000000000000000000000000..451de73ffa415db9dc479438723b2489e6fb3116 GIT binary patch literal 51 scmd;PVq{=pVPIsJ=i=vQU|?ooU=)<+1T*Cs7&+vHpiBl8s3-#i04n+c$^ZZW literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Realistic Bell.dmp b/instruments/FM/percussion/Realistic Bell.dmp new file mode 100644 index 0000000000000000000000000000000000000000..9c44759e2edbd161666a42201ad8c05dda25a4bf GIT binary patch literal 51 wcmd;PVq{=tVPa8`XXa;TU|^7EU@?a<+2k3xdF44kqRjFP`~n~*BLh$r05yIBCIA2c literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/Steel Drum.dmp b/instruments/FM/percussion/Steel Drum.dmp new file mode 100644 index 0000000000000000000000000000000000000000..386c60abf7887c227bd628e6306b9a27e9a06bcf GIT binary patch literal 51 pcmd;PVq{=pVPcVy=Vaw)WME`qfH7Ga7#KO^AJ0N)HVi@rB3l0IX6Brm79MkjD^BI`g85o#ALh?+! z%=}sm46Gmy79cOi!^p3UM_!bRgE)HVi@rB3l0IXlNlHpoKkag6g1p(@{_Yu^NI^H zQ*$&KSQr@?m_Q2TdAXSR>lqkWK^!bVUXY8CUjmOj3j+&CKQ188!^p`2k_1|a1@JR4 zIe?`=YQXAH6v?CT2yp%r0NAvnYr*bHY&tQ;(9I&mhnPT~jfBibmmdjsq5FBb^D$E( zstBe2M>P#MZ`2;t5I}^K0&4*40Y(OpG=l;&LL3JR)fm!wIE*Dy7;izu&(FXB!ngnc Dk~uT! literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/bell_01_glockenspiel_echoing.fui b/instruments/FM/percussion/bell_01_glockenspiel_echoing.fui new file mode 100644 index 0000000000000000000000000000000000000000..d177ddec1374afbd5b1cca0599babe0068c57ebf GIT binary patch literal 1689 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoKkag6g1p(@{_Yu^NI^H zQ*(3_T$3~MGxO3l8CVz@7??mR<$1Z7`9&BQSQ$7#Tnr#D$i>Jn0g}fKI1U!7F{JZw S7)zuu-hzmqpMe2{aRC6lO*S(C literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/bell_02_glockenspiel_wobbly.fui b/instruments/FM/percussion/bell_02_glockenspiel_wobbly.fui new file mode 100644 index 0000000000000000000000000000000000000000..2534f79c7bcc041991437cafeac6b2dec3d8d286 GIT binary patch literal 1688 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoKkag6g1p(@{_Yu^NI^H zQ*(3_!t;}oaw;_$SQr@?m_Q2UdAXSRMHm=Z88|>(3?MJa#mFxKlIOyZ0}05pFtYF~ zVU+?4%JVRCf=vcmhz0O7FgXC7$^f<<(*^QawBQu_PXJ)kh^_^@E3xUs6hk+Q5FcU! zc{UO<8(n@R*oE%r;m*fQfv6&s`XALa+`LhHP(uI_QVOgAtOpnwK++5f%m{HDEL3Ai U=ixAxNMXDM5kEfz0|?^+0Q+4v?*IS* literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/brickblock369 Glockenspiel.dmp b/instruments/FM/percussion/brickblock369 Glockenspiel.dmp new file mode 100644 index 0000000000000000000000000000000000000000..eae09ee9d20ec6280d558874efc0e01edf771ef1 GIT binary patch literal 51 ycmd;PVq{=oV&IgKm*(eVU|?ooU{jXo;%5ajd9>xZ`PslsMh1CaHg+JBhXDXD>H)g| literal 0 HcmV?d00001 diff --git a/instruments/FM/percussion/brickblock369 Steel Drum.dmp b/instruments/FM/percussion/brickblock369 Steel Drum.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a43ef62a47aa29c465b70056b3f511a686bf7d6d GIT binary patch literal 51 zcmd;PVq{=pU|`jf=ip}s(hLmDiUQos>)HVi@rB3l0IX;}{qj(sGmY%ac-bau`^c7#LVU z!tyNqtPGkA49q+r9wv}y;bdjdW?*3B#gqey$g?o9GKerRG2zq?mS@DFpPzxr0q8IW z1`a3&Qb<4^iA|9Cp8&vS0J;{CQ^*DAW)b2;>>` literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(CH3) Double Viola.dmp b/instruments/FM/strings/(CH3) Double Viola.dmp new file mode 100644 index 0000000000000000000000000000000000000000..1924f58ca95c5181612c3c7c526c8172c665cfdc GIT binary patch literal 51 ncmd;PVq{=tVPG^AXJKb!U}k1OW-@UKF*9*7FaSlF1mR2oB_{zs literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(GEN) Choir.dmp b/instruments/FM/strings/(GEN) Choir.dmp new file mode 100644 index 0000000000000000000000000000000000000000..bf7ff11a187f7e83ab3ec66ce629143fc2d61809 GIT binary patch literal 51 icmd;PVq{`qVPI61XJFuGU|?ooU_dY#xe%hla3%mFL;*qo literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(GEN) Fiddle.dmp b/instruments/FM/strings/(GEN) Fiddle.dmp new file mode 100644 index 0000000000000000000000000000000000000000..ebffe0706ae160d4da1b062679c62812e3e51f26 GIT binary patch literal 51 pcmd;PVq{=tVPKY!=Hp;yU;rY9dU<(%ejrnxfss>+pOFh)6aYN00;K=| literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(GEN) Rapid Fiddle.dmp b/instruments/FM/strings/(GEN) Rapid Fiddle.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a6c84ca215bd9a167758dd07cb38cfed46cc5999 GIT binary patch literal 51 tcmd;PVq{=pW#EyNmuKK-U|?oo;1H7+WCt+?I5=441-UqZOhFDLQ2;R{0rvm^ literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(GEN) Space Violin.dmp b/instruments/FM/strings/(GEN) Space Violin.dmp new file mode 100644 index 0000000000000000000000000000000000000000..24802321629858bc5308a316c88834e099faac8f GIT binary patch literal 51 zcmW;A!3uyd3`D_~O}hmHv4VI1|1TA9!;~U1*-s4zQ|P`dLk^-(eu9qeSl<>e9JT=h literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(GEN) VRC7 Strings.dmp b/instruments/FM/strings/(GEN) VRC7 Strings.dmp new file mode 100644 index 0000000000000000000000000000000000000000..796059359dc103c36f343aef22dd8fe6ca64ac58 GIT binary patch literal 51 pcmd;PVq{=tVPKY(=HXywU;rY9dU<(%ejrnxfss>+pOFJy6aYOE0;T`} literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(GEN) VRC7 Viola.dmp b/instruments/FM/strings/(GEN) VRC7 Viola.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4bb4b3695ce4db23c944adb5d5f4c7d7fc6b8d94 GIT binary patch literal 51 tcmd;PVq{=tVPG^AXJKb!U}k1uV5pau=jUf&V3ucK;uKJL;*dh0-*o^ literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/(GEN) Violin 1.dmp b/instruments/FM/strings/(GEN) Violin 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0650590f0a1cfb433c2b736c0331abde3019a55a GIT binary patch literal 51 wcmd;PVq{=tVPI1bAch85kJYI6zDWkSLobgb5S{05F3A%m4rY literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/Fifths Pad.dmp b/instruments/FM/strings/Fifths Pad.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0ab2b61a50bf8057656da4cf08a56aba9aefc9b6 GIT binary patch literal 51 scmd;PVq{@pVPp|u8IWOeP2u02_G$4FCWD literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/Fifths Type Beat.dmp b/instruments/FM/strings/Fifths Type Beat.dmp new file mode 100644 index 0000000000000000000000000000000000000000..78af1f7a64ca57b6156b25d13e68d8d60aacd770 GIT binary patch literal 51 pcmd;PVq{?eLOu>o20jKx1_ll`D3cAy<`v*%0Mg713_N^rCIA|!0R8{~ literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/Pad.dmp b/instruments/FM/strings/Pad.dmp new file mode 100644 index 0000000000000000000000000000000000000000..9e6674f167de26463c09cb58486b0fda6899d998 GIT binary patch literal 51 tcmd;PVq{@pVPp|u5{N_*j`BOaL1O0RjL3 literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/SSGPad.dmp b/instruments/FM/strings/SSGPad.dmp new file mode 100644 index 0000000000000000000000000000000000000000..6b37a3b0272d42452dad53268f7363ae67ee35d6 GIT binary patch literal 51 gcmd;PVq|AvVPIg87vtw=U|^Q#KxIlHM5Uoj05KB+7XSbN literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/Sawsine pad.dmp b/instruments/FM/strings/Sawsine pad.dmp new file mode 100644 index 0000000000000000000000000000000000000000..d03286c5465170b5f80dcdc820bd8ba0ea944340 GIT binary patch literal 51 scmd;PVq{=vXJF)$7iZ>RU|?flVB(eMdjJ3c literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/orchestal bullshit.dmp b/instruments/FM/strings/orchestal bullshit.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0c49c423cc22ce99e85b9b7047270f538166d3d4 GIT binary patch literal 51 ncmd<)U}R@uVPFywVqjon00AZ$2ouO-;({=l85mfgOrR(L8V3O3 literal 0 HcmV?d00001 diff --git a/instruments/FM/strings/strings_00.fui b/instruments/FM/strings/strings_00.fui new file mode 100644 index 0000000000000000000000000000000000000000..64a38f8b5211632ac910b01e3245f49d3fa45573 GIT binary patch literal 1668 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpf=h}r^U{kMm>C$EnLvW_ z3>*v$whRocAPyEF&%naKV1Z8_s7VToMyQZ50}~em*e0xM_!*cSfX-q7xdM!V6cUg} zViRQkCjhV+fUX7P6mkK&S%mlyd&skqklE<+Bf&0oKM!|4p>#^A{|T87lOMGQH3VSc p0xX4D16U6*GJvER6qpg>I9RC0kj}$lERn)^3nG4g1_ltu1pq!vF9HAn literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(CH3) Double Ambience.dmp b/instruments/FM/synth/(CH3) Double Ambience.dmp new file mode 100644 index 0000000000000000000000000000000000000000..335e026c353fc21c85b86ff386bc54edd90cfef9 GIT binary patch literal 51 icmd;PVq{=oVPNEwXJX-JU|?oIVG43FFhfPf;Yt9kq1C8nB4Mk^E~3^Ld{oBG=`nc3h>CQdjL03e|OCIA2c literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) 1 8 Pulse.dmp b/instruments/FM/synth/(GEN) 1 8 Pulse.dmp new file mode 100644 index 0000000000000000000000000000000000000000..66d86a1ed80f57549fa2aa7fdaa81bd90a60cb74 GIT binary patch literal 51 kcmd;PVq{=vWnh<+XJFuGU|?ooVB>=`S=r!B77jQQ03qH1F8}}l literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) 3 16 Pulse.dmp b/instruments/FM/synth/(GEN) 3 16 Pulse.dmp new file mode 100644 index 0000000000000000000000000000000000000000..15a469a7820637c4335c3ce3e136d1eab98dcae0 GIT binary patch literal 51 kcmd;PVq{=vWnh((XJFuGU|?ooU=e~dnK|K1CT=(r03kC0EdT%j literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) 3 8 Pulse.dmp b/instruments/FM/synth/(GEN) 3 8 Pulse.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4f516de951ee79680ef266bd165e5f3c113588e5 GIT binary patch literal 51 kcmd;PVq{=vU|^M#=Vah#U|?ooU{r-OS&&4T`(;&C-4D# literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Cutoff.dmp b/instruments/FM/synth/(GEN) Cutoff.dmp new file mode 100644 index 0000000000000000000000000000000000000000..ad556e08563edf71f679f2fc40fc9c87245cbe39 GIT binary patch literal 51 acmd;PVq{=oVPL42m*?kaU|^Of%me^sCjb#U8VnjGNaqci2?vOh60HI literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) K.K. Slider Weh.dmp b/instruments/FM/synth/(GEN) K.K. Slider Weh.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a85e7f10907d9d77d17d82de2375c1f673cc9ae5 GIT binary patch literal 51 rcmd;PVq{=oV_;++^mKj{Y{l^l!6j{>fhMw3qK!q0RX2n2nI$8ug=lTI2D8m7J literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) NES Triangle.dmp b/instruments/FM/synth/(GEN) NES Triangle.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4d4a99d1cff21a50575b893271e8b5191807d395 GIT binary patch literal 51 kcmd;PVq{=uVPMpfXJFuGU|?oo;8TV(85rP9J|Q?00406_RsaA1 literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Near Perfect Saw Wave.dmp b/instruments/FM/synth/(GEN) Near Perfect Saw Wave.dmp new file mode 100644 index 0000000000000000000000000000000000000000..d489f69c56168a2cb434dc4c8226c8558be63976 GIT binary patch literal 51 icmd;PVq{=tXJBHJ=VIVzU|?ooV5pau=La$6aWDZ$uLD&8 literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Near Perfect Square Wave.dmp b/instruments/FM/synth/(GEN) Near Perfect Square Wave.dmp new file mode 100644 index 0000000000000000000000000000000000000000..47f59cdf5ed2e5033a14fc362b6e66bf6422e54b GIT binary patch literal 51 mcmd;PVq{=vVPKJwXJFuGU|?ooV5pau=La$68JKvni2?vT*8-&g literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Perfect Saw Wave.dmp b/instruments/FM/synth/(GEN) Perfect Saw Wave.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7f4dbafcdaf444bcf32c5097d27a1596e3e5d4ca GIT binary patch literal 51 kcmd;PVq{=vW?+(*=Vah#U|?ooVA4P^We`jTc?PHg04Fg4UjP6A literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Perfect Square Wave.dmp b/instruments/FM/synth/(GEN) Perfect Square Wave.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0742fa5336163bbe95cecfa52a76cdbff5804089 GIT binary patch literal 51 lcmd;PVq{=vW?+(*=Vah#U|?ooU{XaeW#LRlCV2*^0stoO0bT$A literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Perfect Triangle Wave.dmp b/instruments/FM/synth/(GEN) Perfect Triangle Wave.dmp new file mode 100644 index 0000000000000000000000000000000000000000..09867025d1130eb2fa2b3889b580857df031bfab GIT binary patch literal 51 jcmd;PVq{=rWMGnzXJFuGU|?ooV6s6l72!-q1~?M{CD{R1 literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Rattling Hestian.dmp b/instruments/FM/synth/(GEN) Rattling Hestian.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f7ef159db572c6a58d6ec0d1f80c295a53d02dc1 GIT binary patch literal 51 wcmWN@!3h8$3KPhejumAu6 literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Rough Hestian.dmp b/instruments/FM/synth/(GEN) Rough Hestian.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f3662fada61d3bba9124c6bbec6c462db9a4df84 GIT binary patch literal 51 ucmd;PVq{=tVPF##fFC;$K=f&oMT literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Rough Square.dmp b/instruments/FM/synth/(GEN) Rough Square.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c0586dfd496b8d6cf5ca87f6f5d891fa209edc32 GIT binary patch literal 51 rcmd;PVq{=vVPFxHXJFuGU}R=sV5pau=jUf&V3ucKVh4*dpo#(jJA49~ literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Rounded Square.dmp b/instruments/FM/synth/(GEN) Rounded Square.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c8d87e0fd3df1ca3ba7b5e74d9d42b5a76f8406f GIT binary patch literal 51 ncmd;PVq{=pU|^Jx=Vah#U|46ahB? literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Sine Growl.dmp b/instruments/FM/synth/(GEN) Sine Growl.dmp new file mode 100644 index 0000000000000000000000000000000000000000..fefea8da53248a2475243e69e2d8b42054cc6e1d GIT binary patch literal 51 icmd;PVq{=oXJBHG6XEA)U|?q8V5pau2Q%dvurmQmngeP8 literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Space Hestian.dmp b/instruments/FM/synth/(GEN) Space Hestian.dmp new file mode 100644 index 0000000000000000000000000000000000000000..68c302aee3c35d8fd3bf2f6767d67643f5e0650f GIT binary patch literal 51 xcmd;PVq{=qVdfB!;$Y=xU|?or;NTPGWq~l6c;va5K};qFCN6nqCJ>W>0RSX20aE|~ literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Space Organ.dmp b/instruments/FM/synth/(GEN) Space Organ.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e7d796d415576b1606ec59f5868c27385e9f5e91 GIT binary patch literal 51 ycmd;PVq{=qVPNKyX9ZFW%s`|r&&kXWq`4TFcqLev*nvzo21Z_aHdc@*2Lk{iRsmB0 literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Space Saw.dmp b/instruments/FM/synth/(GEN) Space Saw.dmp new file mode 100644 index 0000000000000000000000000000000000000000..fe36dafaaca74aacb010aa88f64f799bfdc7039d GIT binary patch literal 51 ycmW;AK@I>A3;@AxODja&B;w%zzZ7nhX)1)mJe~#^ux7V{SVik`d+SK-{F%8U1OZF{ literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Sparkle.dmp b/instruments/FM/synth/(GEN) Sparkle.dmp new file mode 100644 index 0000000000000000000000000000000000000000..d0ebfcdf67032afcb00b615eae5746816600a60c GIT binary patch literal 51 tcmd;PVq{=tVPKOLTcP0|Psl$s{Pm1{P&u000~S0QUd@ literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Spoopy.dmp b/instruments/FM/synth/(GEN) Spoopy.dmp new file mode 100644 index 0000000000000000000000000000000000000000..6ba2222b7f7dc7496edce1c8994b72a72599c22c GIT binary patch literal 51 ocmd;PVq{=pXJF*#=3r!JU|?ooVAPf8bvz literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Synth with Open Hi-Hat.dmp b/instruments/FM/synth/(GEN) Synth with Open Hi-Hat.dmp new file mode 100644 index 0000000000000000000000000000000000000000..2a94410fe1b118a01d9c0087e8799c976a5a00b2 GIT binary patch literal 51 zcmd;PVq{=vVc=&F<7Z-HU|?ooU=)xNWB@Ta7Iq|yx4Ouc5%Q5C`SRG literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Twang Whistle.dmp b/instruments/FM/synth/(GEN) Twang Whistle.dmp new file mode 100644 index 0000000000000000000000000000000000000000..6e0a2bdc15b28570ad2a398295034736fb35148f GIT binary patch literal 51 xcmd;PVq{`tVPF=MXJuhzU|$nTZ`;6aYAA0)PMj literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/(GEN) Wahwah.dmp b/instruments/FM/synth/(GEN) Wahwah.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7b3dbbace26d071121aaf0a7878817a34bd51aa2 GIT binary patch literal 51 ycmW;AF$w@63;!D`5m9g`K3ol{;;Q#;t literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Cricket Chorus.fui b/instruments/FM/synth/Cricket Chorus.fui new file mode 100644 index 0000000000000000000000000000000000000000..4dfaefeed282efb12bbc5e25ee913848fda82fda GIT binary patch literal 1690 zcmeHHOA5j;5PdN%X^~QIkX)c{ynrjgjR?9Hr2dN1O0@U$W|}Bn^rPcvr#=Ye&C9%* zgfP({*XcZ7sw6!ebvK#;P-YbvjwVyPpMhb&%j4~Gp;kIut5_$7992)nn@r~i2!J{E zs1)26ZE)W4EUiKM%yWSj4{OpjAUz0U1}A9Lnd~@%+x(!>KSZl^nac53l#5SX0tnXPYhOuGEfxb96;8{V3TU_gXv&Fx@k(30>0AW#7v literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Ecco.dmp b/instruments/FM/synth/Ecco.dmp new file mode 100644 index 0000000000000000000000000000000000000000..87c8520bd5ef3d7cf0e0c865360efea37a6dddae GIT binary patch literal 51 scmd;PVq{=tVPKNv)HVi@rB3l0IX;}{qj^78W%b5ji&*cliYSwMpF zLd=}(+ziaj0w5kHkmqFNU}a!nV&=z`1Bu9UFtCFSBE*N7N{&qo41~-^mmdjsq5FBb z^9iL&O8rmBe3<;GJ*Xi73m0H1%o@OYfDxQo85Dq}AOV1C4Cy=q#uJdnTM+RBi+>Qt F1psh}F696K literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Guess.dmp b/instruments/FM/synth/Guess.dmp new file mode 100644 index 0000000000000000000000000000000000000000..be35eb8c3629e4d22e0bf30b57243ddb03fc2f07 GIT binary patch literal 51 zcmWN_F%Ezr6hy(dA8?n@kZ5D&{ckDBRI^IuF0aRy8lZP)UU1aD6Q3KXf60V4_yHak B0V4na literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Klax.dmp b/instruments/FM/synth/Klax.dmp new file mode 100644 index 0000000000000000000000000000000000000000..5ad6a10fda4c5df64cd253da84e943cc8dc467f9 GIT binary patch literal 51 wcmWm1NeTcU3(aP(%dRV+#pJ}#pHs{jB1 literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Kyd.dmp b/instruments/FM/synth/Kyd.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4506530e21bd62b4cc6e766b0c46ee20dd680890 GIT binary patch literal 51 pcmd;PVq{=vWng8Om*?kaU|^Q#VPqHKWd<=>7#I*tpeP?y6aXq)0e1iZ literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Love.dmp b/instruments/FM/synth/Love.dmp new file mode 100644 index 0000000000000000000000000000000000000000..75ff867c6bb54575de3e1992d999dd41e06d4876 GIT binary patch literal 51 ocmd;PVq{@qVPfHDOf7y<+U literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Signal.dmp b/instruments/FM/synth/Signal.dmp new file mode 100644 index 0000000000000000000000000000000000000000..d5bfcceed2f447beecaffc07952a75fad7b56fc3 GIT binary patch literal 51 ycmWm2u?hen2tdJCs1boKElo}R|1YN7ajQ2}kmD@^>>_U;Niyhmt!N~DYAt*zpaF0I literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Space Cowboy.dmp b/instruments/FM/synth/Space Cowboy.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c17037a27f5a27c34f5660597f0ec87e3e8e1640 GIT binary patch literal 51 rcmd;PVq{=oWng5M7i8vVU|?ovU}2EwWCJl-7#MiunfXCXd1NL4BIyB$ literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Space Shredder.dmp b/instruments/FM/synth/Space Shredder.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c9cbbc9d036119c5a5ee7af9ff75703e0530fffb GIT binary patch literal 51 hcmd;PVq{=oV_;yAXJ-OZ%q(CgGln*o#n literal 0 HcmV?d00001 diff --git a/instruments/FM/Square.fui b/instruments/FM/synth/Square.fui similarity index 100% rename from instruments/FM/Square.fui rename to instruments/FM/synth/Square.fui diff --git a/instruments/FM/synth/Squid.dmp b/instruments/FM/synth/Squid.dmp new file mode 100644 index 0000000000000000000000000000000000000000..4635260a1091b50474e6a95d3bf6b802d29cd4fb GIT binary patch literal 51 tcmd;PVq{=oVPKS(7v$$>U|^Hy0y2d_Oa^%_CN6nSh$sUil*u5^001|}0xtjn literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Thin.dmp b/instruments/FM/synth/Thin.dmp new file mode 100644 index 0000000000000000000000000000000000000000..b4ddac9e2becc554075607c2532c9cdea6d87877 GIT binary patch literal 51 pcmd;PVq{=vWnhq!kZ0g$U|?ooVBnJHX8|%nfCIur5@lmx001T$0cHRI literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/Tri.dmp b/instruments/FM/synth/Tri.dmp new file mode 100644 index 0000000000000000000000000000000000000000..37c05b3eb1616d87a502272c9554cb63fe6022e1 GIT binary patch literal 51 vcmd;PVq{=rV_*@G7iQpRU|?ooVB!+wgfW%n1%OOOW(H;^X)Br!feyaycRS7$^ZZW literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/early 80s bs.dmp b/instruments/FM/synth/early 80s bs.dmp new file mode 100644 index 0000000000000000000000000000000000000000..74e0440b003494ff14e666ed20dce5bc66add218 GIT binary patch literal 51 xcmd<)U}RumVPKUO;^AUrU|)HVi@rB3l0IX;}{qj(sC8ji!$?4Qi~Xv*cljD zK;nFSjQouJ3{1=*4i>-*l9$0P&&S8g&o75tUYHqZIyVC&4)cLFI{;nAz`y~;Kne-S zBe4lG{}TY%3_#ZcatgTs-7G?Uh&|-lNXTq-`H^53x}S$TpHMob)c=IchslrHgBk*` sZ~+#?tO2YC7#Tp)3<@|(K!j?rI#i=b;~^PE1`}^V#Lv&b0K&Kc06Jwa@&Et; literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/fm_horror.fui b/instruments/FM/synth/fm_horror.fui new file mode 100644 index 0000000000000000000000000000000000000000..029cfc5bdb95d141410afc8487ad553c4946d469 GIT binary patch literal 1667 zcmdOOD=o@POioqE%quP_($kG&U|>)HVi@rB3l0IX;}{qjGV+Ux@{1T)+1Z&{fI^J& z3``6R`Y@H4G*F(OUzUM^jSEu_BqGGl%E2rOWUynGm*-&RV3z{w$1cy$z~lgQ6$1kY z6ay(FAdkc*$ox+LU^4(+3&<(t0(7$o@geq*XCooA(d9>iUFd!u?tDV&lv4i_G9M;C wY7c4%z`_Ms2(t#T9$;huNi!%gBgApAP>ms-hr?JRh4B_d{QL|IAdCwD0PLDB`~Uy| literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/fm_noname2.fui b/instruments/FM/synth/fm_noname2.fui new file mode 100644 index 0000000000000000000000000000000000000000..6c5cae7469de6cfb9f6c97ebd2be5c56242d45a1 GIT binary patch literal 1672 zcmdOOD=o@POioqE%quP_($kG&U|>)HVi@rB3l0IX;}{qjl8O?Gixo;TGV{_ISXdbt zSU?i8KnVsu5DPnyV_;!okYQk8W5zBo%g(~V%ng)d=fJ8!j-7#nSskdK9ji1y1Cs;D z1q>kFm?p>rMTrLg2>@&cp=$v-gw9`bA?WH!3|NU#gt&%>QhD4kO3e?sQN z)HVi@rB3l0IX;}{qjk`jxHD-}vIGV{_ISb<_J zK+GsF#lXY_WUz4n2~5B!4V2>HW?*I$!IT7v$TKjpa`6Hg>{#U)#bwx;xq(tFLRjVb z8JHY^PGevIS&!)id7voK;6DL?%^-9wAg7QE(9I&mhuA}&jfBibmmdjsq5FBb^9iL> zO8rmBe3<;GJ*Xi73m0HX%o@OYfRO)HVi@rB3l0IX;}{qjN)q$ZE0Yq7QyG|87#M(v zfkB>~jh9K1ftigR#KQ#goDBSo!VFAoteA2j5qUONenw-Uel}e4jQsp;K>Zw8<@p(y z9DojEU;s&DDv<|@5)J+n0N4yd*8*}1xd7cPLVSolCZdhdZB8I;GVA zgv^J@kJ^J80)HVi@rB3l0IX;}{qj(lU!PDjC=q85meVLh_;v zto*zT%*-GT79h{b#KFOVPo9yT6R$iIK6!oyCI_IS7#KL97)T)jc_cPL=6?bJn*r!r zKu#eSpqoXA53z?l8wr_>E)HVi@rB3l0IX;}{qj%2P9oQc5y1^U@huSQ!{t zK;rU1aRz1(3pCuBZM we$*b+5P*dXupnj)U_HRd0Fq`)HVi@rB3l0IX;}{qj?CtFtSXdbtSU>{u3``6R z^&l2@0F>wFH)CL6( pUE;b!9q2LbRG_4i4?|L5b^UfFn};F005|vE#UwF literal 0 HcmV?d00001 diff --git a/instruments/FM/growl.fui b/instruments/FM/synth/growl.fui similarity index 100% rename from instruments/FM/growl.fui rename to instruments/FM/synth/growl.fui diff --git a/instruments/FM/synth/huh.dmp b/instruments/FM/synth/huh.dmp new file mode 100644 index 0000000000000000000000000000000000000000..1124f9d558511097c7cf8706c5aa37f36d879bf9 GIT binary patch literal 51 ncmd<)U}RurXJF!zU|?Wl00A}-lLO4-05LhiOcoH69jpKV8Fv8Z literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/mystic cave lead.dmp b/instruments/FM/synth/mystic cave lead.dmp new file mode 100644 index 0000000000000000000000000000000000000000..86ec421c0c1131053f84b85ae343c4674bf424bc GIT binary patch literal 51 mcmd;PVq{=oVPKIGVqjoq00E|YAd?M@n7DvU4g`}EtN;KcN&z?k literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/saw + whatever the fuck.dmp b/instruments/FM/synth/saw + whatever the fuck.dmp new file mode 100644 index 0000000000000000000000000000000000000000..6c23682c708d2c804b0b94a9fe340c69acc8c5fe GIT binary patch literal 51 wcmd<)U}RutVPKRH;$dW9U|?opU>239Vu(XFl-T;%u^IliVVqUoRxT&i0fztp literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/whut.dmp b/instruments/FM/synth/whut.dmp new file mode 100644 index 0000000000000000000000000000000000000000..94b3e55b1d155dfbaa22826b4d7fb0d095711d66 GIT binary patch literal 51 ycmd;PVq{=oWnhw$=Vjt&U|?orU}2CKWdSj{8Q28m`N5)G3~UUtLaZQBb_M_^Q~`tl literal 0 HcmV?d00001 diff --git a/instruments/FM/synth/yrwywryw.dmp b/instruments/FM/synth/yrwywryw.dmp new file mode 100644 index 0000000000000000000000000000000000000000..15127fe6d4199a61ba23ad6745d2eea526b59fa7 GIT binary patch literal 51 lcmd;PVq{=vVBk;?Vqjon00AapIFrK|!ej=DazU6tH2@re0RsR4 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/banjo.tfi b/instruments/FM/tfilib/banjo.tfi new file mode 100644 index 0000000000000000000000000000000000000000..7c1701888b74b5a5449edd586c11c6fc274807e1 GIT binary patch literal 42 icmZQ#U}TnImgiw%Vq{=}v)JG)MrLkCc^(c{CI$cC0mYb^1sG&lIDjkw8u$T3 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/distslap.tfi b/instruments/FM/tfilib/distslap.tfi new file mode 100644 index 0000000000000000000000000000000000000000..44b4d1f04dace3ebf455de35670c70ad984e8779 GIT binary patch literal 42 tcmZQz^5R@i4G6GBCnf06*peK>z>% literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/guitar.tfi b/instruments/FM/tfilib/guitar.tfi new file mode 100644 index 0000000000000000000000000000000000000000..27b6206c8c28fa33b923896f640eaa5caffb4f89 GIT binary patch literal 42 jcmZQ#U}TnIkmq4xVq{=pmSIL`F*0*8%JXorGBE%E9IgRQ literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/harp.tfi b/instruments/FM/tfilib/harp.tfi new file mode 100644 index 0000000000000000000000000000000000000000..c7fd62beba990e9529b2e41d7c4189cf8b427684 GIT binary patch literal 42 lcmZQ#U}RQckmq4xVq{=qR$zv(*x)QiW)4Pq9u8I}1^^w}0ayS4 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/harpsich.tfi b/instruments/FM/tfilib/harpsich.tfi new file mode 100644 index 0000000000000000000000000000000000000000..a64a86cab9761c71746e4a593bc243a5639b3864 GIT binary patch literal 42 lcmZQ#U|?2Ykmq4xVr1Z8R$zv(nBXi%W)4Pq9u5{J1^^xt0ayS4 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/hithat.tfi b/instruments/FM/tfilib/hithat.tfi new file mode 100644 index 0000000000000000000000000000000000000000..67559890cfdefab4671cdb0b53c74049b72706ad GIT binary patch literal 42 tcmWN@u?+wq3 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/list.txt b/instruments/FM/tfilib/list.txt new file mode 100644 index 00000000..78d9c5b9 --- /dev/null +++ b/instruments/FM/tfilib/list.txt @@ -0,0 +1,42 @@ +Middle column is recommended octave range or pitch. +Octaves are counted from 1 (i.e. full range is 1~8) + +piano ...... 3~8 ... acoustic piano +tackpian ... 3~8 ... tack piano +sofpiano ... 3~8 ... soft synth piano +toypiano ... 3~8 ... toy piano +organ ...... 3~8 ... organ +marimba .... 4~7 ... marimba +harp ....... 5~8 ... harp +lyre ....... 5~8 ... lyre +harpsich ... 5~8 ... harpsichord +bell ....... 6~8 ... bell +synbell .... 6~8 ... synth bell +flute ...... 5~8 ... flute (recorder) +ocarina .... 5~8 ... ocarina +trumpet .... 4~6 ... trumpet +sax ........ 3~5 ... saxophone +guitar ..... 3~6 ... acoustic guitar +banjo ...... 3~6 ... banjo +bass ....... 3~4 ... acoustic bass +elecbass ... 3~4 ... electric bass +slapbass ... 3~4 ... slap bass +distguit ... 3~4 ... distortion guitar +distbass ... 3~4 ... distortion bass +distslap ... 3~4 ... distortion slap bass +square ..... 1~8 ... square wave (sharp) +softsqr .... 1~8 ... square wave (softer) +sawtooth ... 1~8 ... sawtooth wave (sharp) +softsaw .... 1~8 ... sawtooth wave (softer) +triangle ... 1~8 ... triangle wave +sine ....... 1~8 ... sine wave +neslike .... 1~8 ... "NES"-ish sound (25.0% square-like) +fifths ..... 1~8 ... perfect fifth synth +snare ...... c-2 ... snare drum +kick ....... c-2 ... kick drum +cymbal ..... a-6 ... cymbals +hithat ..... a-6 ... hit-hats +timpani1 ... c-1 ... timpani +timpani2 ... c-1 ... timpani (deeper) +wooddrum ... c-2 ... wooden drum +steldrum ... c-2 ... steel drum diff --git a/instruments/FM/tfilib/lyre.tfi b/instruments/FM/tfilib/lyre.tfi new file mode 100644 index 0000000000000000000000000000000000000000..b984544c8b33c4a901fffa7a442f378eb99789a3 GIT binary patch literal 42 pcmZQ#U}08akmq4zW@KPyR$-RsVPOKX6re0dW)4Pq9u5{J1^^$P0b>9F literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/marimba.tfi b/instruments/FM/tfilib/marimba.tfi new file mode 100644 index 0000000000000000000000000000000000000000..c55c888a776487accf54ecec54eba7f5dc2049e1 GIT binary patch literal 42 ncmZQ);Aa+Kl$RIfW?q6F9Q1j literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/organ.tfi b/instruments/FM/tfilib/organ.tfi new file mode 100644 index 0000000000000000000000000000000000000000..aa365241fa51143a893b2ca9f84c08f848964335 GIT binary patch literal 42 hcmZQ);9!Z` literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/sax.tfi b/instruments/FM/tfilib/sax.tfi new file mode 100644 index 0000000000000000000000000000000000000000..78ce035907282f4fb0805394c324cf395e07ebcc GIT binary patch literal 42 gcmZQzWn`9Oke6ow0!C&zI13@h#vs7Wz`@7>03O=`OaK4? literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/sine.tfi b/instruments/FM/tfilib/sine.tfi new file mode 100644 index 0000000000000000000000000000000000000000..e41ef03f226d37e1453b84d4cb1b8807c84299ab GIT binary patch literal 42 ecmZQzU|_Cike8R|XTZv0WM*TKkZ0gwU;qG1$paVw literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/slapbass.tfi b/instruments/FM/tfilib/slapbass.tfi new file mode 100644 index 0000000000000000000000000000000000000000..47eb03ed680e6a82389b7b3924334aa3629c03ff GIT binary patch literal 42 scmZQzU}NTCkmq4w;9_84mSK<=U|?VYvTVRCE(S(s76y3^1~x_p02~kjO8@`> literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/snare.tfi b/instruments/FM/tfilib/snare.tfi new file mode 100644 index 0000000000000000000000000000000000000000..2148b239b0a52341f2516d370680da1c96988e8b GIT binary patch literal 42 ucmZQ!XJTVukeA?LV`5-rU}2D#7vW+6vKW};B?LH_7#P@?nC0bpfNB68&H--# literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/sofpiano.tfi b/instruments/FM/tfilib/sofpiano.tfi new file mode 100644 index 0000000000000000000000000000000000000000..462f88cf2ff5118a97d98c9b89f6390d0c9011c4 GIT binary patch literal 42 fcmZQ)U}BJBkYZtAV`5-pgRvMH_@H8pY%mr87XASO literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/softsaw.tfi b/instruments/FM/tfilib/softsaw.tfi new file mode 100644 index 0000000000000000000000000000000000000000..18c1cf9d17a5d7c6bc0a419b32af393e45122b95 GIT binary patch literal 42 fcmZQzXJl4jke6rRVPIfn)_}8A;4Cf%39u{xCD#G3 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/softsqr.tfi b/instruments/FM/tfilib/softsqr.tfi new file mode 100644 index 0000000000000000000000000000000000000000..c5b87811ed01aa714c59b8a4d3838cb7c0d5da60 GIT binary patch literal 42 gcmZQzU}Dx`ke6rRVgRyK;4BR&i;A5Cp+ymLL%!?(_d&QpXCWF7|Ga6xluGynhq literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/tackpian.tfi b/instruments/FM/tfilib/tackpian.tfi new file mode 100644 index 0000000000000000000000000000000000000000..9a98fe2acbe1507e8c2ed963bcabc7a7450c80a4 GIT binary patch literal 42 qcmZQ#U|?2Ykmq4zVq{=qmSL9XVF9vOm=&NbMrIyHIW7)XCI$cB>Xz5zr4 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/timpani2.tfi b/instruments/FM/tfilib/timpani2.tfi new file mode 100644 index 0000000000000000000000000000000000000000..8fe446f4d3a14bbd8cc9425e22cf1d2f2a58fbc2 GIT binary patch literal 42 ucmZQ!U}lzJkmq1wVq{B>acL8Dm literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/toypiano.tfi b/instruments/FM/tfilib/toypiano.tfi new file mode 100644 index 0000000000000000000000000000000000000000..8bb51789759533dfca5f8ba17aa569f2f43ac642 GIT binary patch literal 42 hcmZQ#U}9Ebkmq4xVgRz_n9*5`%)E^9TpX-S3;-R<0aXA1 literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/triangle.tfi b/instruments/FM/tfilib/triangle.tfi new file mode 100644 index 0000000000000000000000000000000000000000..abf0ed3100022d6a0c347709b7cf11048776834e GIT binary patch literal 42 hcmZQ)U}08dkdSBKVPIfpmV~mHm<6FMMrKYZ3jiUg0e%1g literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/trumpet.tfi b/instruments/FM/tfilib/trumpet.tfi new file mode 100644 index 0000000000000000000000000000000000000000..a5a9c6a81235b6dcfcfac6318f07ab9040bb5601 GIT binary patch literal 42 gcmZQzWn@-hke6ow0!C&TI13@h#=y_bz|P1303YfBQ~&?~ literal 0 HcmV?d00001 diff --git a/instruments/FM/tfilib/wooddrum.tfi b/instruments/FM/tfilib/wooddrum.tfi new file mode 100644 index 0000000000000000000000000000000000000000..a661547e6458d2414fcb631e621eaa0d43f45571 GIT binary patch literal 42 ucmWN_OAY`K5JbU8PsAr8!M^W*OKMrc&`tK~kQCY84YE33vk1h$8t?!k1ObQu literal 0 HcmV?d00001 diff --git a/instruments/FM/wind/(CH3) Double Clarinet.dmp b/instruments/FM/wind/(CH3) Double Clarinet.dmp new file mode 100644 index 0000000000000000000000000000000000000000..158b45a1d7cd8161aacbc2dc94cfa06647ef7d33 GIT binary patch literal 51 mcmd;PVq{=oVPKJyXJBGwU|^ literal 0 HcmV?d00001 diff --git a/instruments/FM/wind/(GEN) Forest Flute.dmp b/instruments/FM/wind/(GEN) Forest Flute.dmp new file mode 100644 index 0000000000000000000000000000000000000000..98a711e6d31907505ad236591166e069d7bee2ce GIT binary patch literal 51 ycmWN^%Mkz&5JbVpj!#i85|D=&)HVi@rB3l0IXlNlHpoDz$R^YilHOum_ULe z3@i)`whRocAPyD)lxJkHz$eehz#xT1BUFf=fr*O&Y!g;BKxqe{vltjSpcqIY0eK`g zLFRt~0Gk2mT0l-A7oeL(h!3%cJR1p_jV?bD>_YeRaOV?Br^#CISNSZ-`86l2?g=!4xJRHUnDU7!u;^${z0AXAJ0Le`*#sB~S literal 0 HcmV?d00001 diff --git a/instruments/FM/wind/bassoon_clarinet.fui b/instruments/FM/wind/bassoon_clarinet.fui new file mode 100644 index 0000000000000000000000000000000000000000..730dd32392a943cfeda9ea318c14bd8e6299a4fc GIT binary patch literal 1678 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNlHpoDz$R^Yawc6r6Jsi!$?4 zOBk3Ln3$MA()+JX%Lr5(U# za{y&Q7!}B)a`E&269CwBqiezCO>BD6#n8U3Y9>OGYSa=H}eqcQS!ngncgc&i? literal 0 HcmV?d00001 diff --git a/instruments/FM/wind/fm_pipeflute.fui b/instruments/FM/wind/fm_pipeflute.fui new file mode 100644 index 0000000000000000000000000000000000000000..d397017a3fd7b5c38574673a2a3d350e1841f97a GIT binary patch literal 1673 zcmdOOD=o@POioqE%quP_($kG&U|>)HVi@rB3l0IX;}{qj(sC6FG7D1Ea!N~58CcjE z7+HW4jPmk~T#RfC3?L3Rz{khL&LY9UgiBt4pOKSClYx;5n`WSxq&y=B0|x^$4tahC zCI_I~7=TJ37)T)jc_cPL=6?bJn*r!rKu#eSpqoXA53z?l8wr_>E)HVi@rB3l0IXlNlHp!t?V}$}{s)7?^1U|>)HVi@rB3l0IXJsJ2Il5;YXvoo{7QcMCsikp{> zhnby$ffX#o3?`8YeilZcEKHt(5m^qzmgiz*;TJ*|MeyZ089Dix5PUQiKLe8k*ia6j z1PBuVV7K5<^Pd0!X%huv9v}vp1M)Hp6ay&?fNmV7=P|V46hJqN5FcU?Mrh+SA6bHs v+34~k!7g+^4|hItdcek})c@Gb#3nXs4{8V?!bpKNfb{?)14x=dftdjSC^7D_ literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL-RhythmTemplate.fui b/instruments/OPL/OPL-RhythmTemplate.fui new file mode 100644 index 0000000000000000000000000000000000000000..5586d4e9c0e9d8abb4658068329fde359e0c0300 GIT binary patch literal 1679 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlYyfC0Y17x8I>g&xgn{!1v!Z& zsSFJ43=B*ld43KCc2*z_!q@;m2Qz+oegiUFd!u?tDV&lv4i_G9M;CY7c4% sz`})r!GUc7TLUu#NSZ+bZ!rnhgK7-vJcPyMu<#Z{{QSVG0*G+|00(q3u>b%7 literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL-RollingDrum.fui b/instruments/OPL/OPL-RollingDrum.fui new file mode 100644 index 0000000000000000000000000000000000000000..541b53df783827ded22a6fa2f4c316833e3cad7c GIT binary patch literal 1715 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?Vt6@^f-B^U__4 zN^=<)*clj@K=Sc0BpL^wV-+qn-1J!=w=b(LrlVNBW935 zbm1}^B#TXs7`q^9FiC9Y;S(DuyX;L(O$~tnpWB9`9A=E6icsojRMT+tM(sfj0YpeC zum-RmU<7AO1_frgIIs-H3Sh>7Bw=h)Xh=B@F&epeL1tsMn4lnD6ZrXo)d>*e0swHO BETjMc literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL2-TwinkleBlare.fui b/instruments/OPL/OPL2-TwinkleBlare.fui new file mode 100644 index 0000000000000000000000000000000000000000..c6c22b2bf8a3432e2d13df483667b259325f0222 GIT binary patch literal 1756 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?VsR$}{t_b5fmh z5{pv7%9ubT2PZQp13v=;D_Dquk%0xmfRX&ntZdxeNb)cVD9z8!!Ojkp#|8MA8F@K5 zaLEE~W^w>p3Umh)11TgRkHp4cqMQ034S+Nt3t<=l6i7kC=xUJlgV-Raf-pG%-7G?U zh#i==DG*^fve_Wz$b4*Upc0@(n066i6+yGn?Sq&}f4f+rfC&m%pnwqy(A_!Q`Gn$@ zQvVY&A0|I)4{8X&!i9lBfi-~j03$eqF(@#@#StvH5SW2#4Cy@d0)V_M3UUfwo&3P+ I283||0KoVyNdN!< literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-4opbrass11.fui b/instruments/OPL/OPL3-4opbrass11.fui new file mode 100644 index 0000000000000000000000000000000000000000..b9e8f2aa55305074e8f99e8448e0b7bdf1275f57 GIT binary patch literal 1687 zcmdOOD=o@POioqE%quP_($kG+U|>)HVi@rB3l0IX;~DrEQnE^%d?VtMii$JylJj#5 z5=#sX6*Nrp3pBy1SwJKQJ0m{}4+8@$Scs7kOd$wHHdaP{Mz}l!BM=~Dfh=}bc77%U zxDcu&P?&?CksmJ0z<@5#&%opW7UTe_MN$Z1%43M&5%^C4VAG1O1>Jqv^xzUhH;WJ- zVh(vW5;7ZIek9n1?&smo$CVCY;*|OyW)2~G)E?9jK!le9YXIv3Mh1{Hg90-`90v>4 W7}9w-j3rVSZ$ZQlEW|+=7XSd5sWj>U literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-4opharmonica.fui b/instruments/OPL/OPL3-4opharmonica.fui new file mode 100644 index 0000000000000000000000000000000000000000..2112f45a538a33a1f1ab354a18f7080e0c6030c0 GIT binary patch literal 1686 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?VsL5{q*4^D>hY zP4WvAG=PLASTPHTWM$&yVwD8aU?B!Z2!$Z|nHbsGq;SjgFtV|;L(Btd!qCsg#K?;z zh{Ocj!Oy_t0M^6-=lv%Du<1tEg6=+SdT@!Mn?;BZF^4=G37L&9KN9Rh z_w#V)<4T7xaZ3FUGlvj8Y7c4%Ai_(5HGuU1BLhg9L4g?|j)R424Cy=^#u6!vw;)HVi@rB3l0IXlNtCJQnE^%d?Vsb@(YSHOA?C| zG=MBkutF9f$;iaa%EGO{z`zO?Vqk<&aFUUek(rfW2)8^x3j+(QI6^&~1!eHFGO{8W zio^sf;AdcR09(od=lv%Du<1tEg6=+SdT@!Mn?;BZF^4=G37L&9KN9Rh z_w#V)<4T7xaZ3FUGlvj8Y7c4%Ai_(5HGuU1BLhg9L4g?|j)R424Cy=^#u6!vw;y literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-FakeFalcomString.fui b/instruments/OPL/OPL3-FakeFalcomString.fui new file mode 100644 index 0000000000000000000000000000000000000000..4ab838036593f57c8556069201973e0dbc939a46 GIT binary patch literal 1684 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?VuB60=j?5_6LC zbAwBYGV{_I7=iLEAVr+4jQmVMnia%h0E&Y+NPwGzk)K%^NghcK$YkVUW#wn#gA0Pp zMFH$gjQmIf=<@swOb%ejZ~zs7Fe;Eo<>Kf4CjhYNM%RMwK5Tk$iJ_ZChz~J`JR1p_ zjV?bD>_YeRaOdMnhcIzU{SPyT5It%SY6u|0OMx|j^#CISNSZ-`86l2?g=!4xJRHUn QDU7!u;s+MuAdCwD05@+mkN^Mx literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-GabberKick.fui b/instruments/OPL/OPL3-GabberKick.fui new file mode 100644 index 0000000000000000000000000000000000000000..ab55ac474b3e750a22d4f838ad0a9286352c7598 GIT binary patch literal 1503 zcmdOOD=o@POioqE%quP_($n>1U|>)HVi@rB3l0IXJsJ2I(i4-CQj4-Pvl$qefJgu+ z%*D*f#v;bRzzS9m6lG%svtR^2GcyZN6e`ca$iN1Zfza|?j4b>@sA9-Gc}_-7evkp! z0Y3wi1JFR(_z*i#qlj3037L&9KN9Rh_w#V)6G|(T`k#>bF!@n?P(uI~F2J&z QHGuU1BLhg9L4lb80K^{f8UO$Q literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-GabberKick3-60hz-.fui b/instruments/OPL/OPL3-GabberKick3-60hz-.fui new file mode 100644 index 0000000000000000000000000000000000000000..961039f56475260a27ac20647adccd34550c1e6f GIT binary patch literal 1503 zcmdOOD=o@POioqE%quP_($n>1U|>)HVi@rB3l0IXJsJ2I(i4-CQj4-Pvl$rJ85o!Z zfWlnN%xo-t3=FJb^-PRl3W?xnW@KRk@*(mJj0|i@l0c?B7b6S55ULn5Po9&JlOJRN zcEHcT)HVi@rB3l0IXlNtCJQnE^%d?Vrm!hIDqjPeUK z85r0Y7?^;PjQlK&%*;Xz46G1sj0}tr28`tAX9Oxmk_Yo(vJ4FJT#PLIK>fIYJSQV3 zKgcHRfS-ZM0c<4)P#%O)fjlY~Kkq*QfK4~L7Bt^u(}GhB-7G?Uh(YApNXTq-`H^53 zx}S$TA7?^@N>J*5LgvHdN9{ok0a&;Ii(}RR)&q1U|>)HVi@rB3l0IXJsJ2I3W`%pQ}T-v^HTD274q^k ztH6p_fFvV70|O8-FtCD!7#JZGf+R*BYyb}Z+^h`jObFu`7}$_GK)ab7z?O0Vg+Z7C z@Sgy{W;D7M4F6-(ghLG7EJA#UG341u$ZT}^kzg0PpNBgiM>2#9Q|f=XK?E41_MnCU TBDfS-16U6*GJvER6qp$R31{*p literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-SegaBass.fui b/instruments/OPL/OPL3-SegaBass.fui new file mode 100644 index 0000000000000000000000000000000000000000..3694ec4260508f4dfe9cd0098c0fff1062ec246e GIT binary patch literal 1627 zcmdOOD=o@POioqE%quP_($fuKU|>)HVi@rB3l0IX0~q)iQnE^%d?Vsb@(Yp@i;MH} zi*gwl*cljDK=S)HVi@rB3l0IXlNtCJQnE^%d?Vt6EAx_FN|Uo0 z7}yyYm_U*o%na;Yq6`eIAPxfqBZNYb{LIWe+(0f=o`Hc4AqQf~b1|~;3!#c3^W-@h zIr+ghA&bJ<{0vMEU`siGLLiI^v@eFunN0r3|g z{tm={ffyu*4uHZafDsr_7-5C32?rm=AR;&rW5~0O2;)(dj0C$-JUjw8IFcb;n9?AC z8$^IHY7c4%AcD(*Z2?;YGXqGPK>@jlLnuLJp&COv57{iz*?0>getrf95XJ=n%?MFh literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-TwinkleKey.fui b/instruments/OPL/OPL3-TwinkleKey.fui new file mode 100644 index 0000000000000000000000000000000000000000..71add431534e90c099f6bb9d0dbe91b7a5d0cacf GIT binary patch literal 1738 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?VsR$}{t_b5gxi zD;XGAz=(l?hns<$M~Z=g6{3$3rX5DJGqZAW1355xMmCrXm}cZ=XXW7+f{S73=VW2z zVrPQOqciv!m>d{DnmC{sNFf1vBsQ4Ij3mI0#0D|{696DJAeX@0=m2CJ0I?(xgS-gx z8LIDq0#JZ%G$YUum^m;t#M0)HVi@rB3l0IXlNtCJG7^hYic2bUQWcVO5(~g8 zSb!uWKbXnDzzU%mpfpc{?hPZZVoIp}5);zLX$&qhLKqsxy3 zyU_hS-1+!ZBLf4a{wHKUOn%fJ)DVD$3$V~;4PZUM2#yE_1(ebfp$3VCY7FT-B%{b+ O;w^~yfpq~0;{pJ5Q!@qt literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3-easyhoova.fui b/instruments/OPL/OPL3-easyhoova.fui new file mode 100644 index 0000000000000000000000000000000000000000..2f0aa153f88c327161b39e9b56d9ee37be6b7dae GIT binary patch literal 1842 zcmeH{!AiqG5QhJ)iM5Jd6a)`KqJkc5MeyKFyeJk#h57;^1lmgqtqMLz-^3^IZF~&< z$7JayW+m2}`oou*o!QJ}CnVjAhjALkNjOX=_v6EE3?L*%z3cv+_%Yf@qRG=>Ga!gLiIk_VJ5;u9gM|(+5a^$`ak!O+KdpWzbJ7k+| z5l$EzWR0}RDp?`&3^GxJjM*bqDxXPlZZf)gRIX*#Qp@)HVi@rB3l0IXlNtCJQnE^%d?VtEa}o;*Dw7h6 zi_KFj6f{io3p5!Rfl63F>iAh1IGBMnD~Q7Y7KgB)BtIJiJChVnc}5O)7EVr}JQOg3 z3`Pe0OpM(82muUf1||ovr5r#tAdCv+QMvee{|NwWy3w_uyAPWlTw>^E5#mG4Ai^YEKa QNEUBF#1AaPK^PYR0A>j_G5`Po literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL3_Springybass.fui b/instruments/OPL/OPL3_Springybass.fui new file mode 100644 index 0000000000000000000000000000000000000000..8f3ce27203994bca86ec9d290736e0859e11f416 GIT binary patch literal 1647 zcmdOOD=o@POioqE%quP_($kG%U|>)HVi@rB3l0IXqZs%YQnE^%d?Vt63yL!H(kqh^ zi;Ec;Ss55uK=S;ojGR2;3=BX%2rz;XgbgNnnHe~FL~+Y=vT<_qs=+m2)6c~Zm&P!k zpMl8%B*?%4#Xt%P$Rn`{GXE0**bG3|0&)tu0NpG?e26{d*+|H2bor5B7rLK^JD*TG wrPTj~%!kR3+JhPbuy6qu$gBaZ2N)SZ(hLgB2yq-NRAWfz;V_m+VY~$q054H8+yDRo literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPLL_Clickik.fui b/instruments/OPL/OPLL_Clickik.fui new file mode 100644 index 0000000000000000000000000000000000000000..5cc7b3bb76c5c1197a4ccd480cfc50f951c84333 GIT binary patch literal 1663 zcmdOOD=o@POioqE%quP_($fuLU|>)HVi@rB3kC@>gfQ?jB zGbaNBD_DpbOd=EfER0+rIaUS^kT4^%9EdH?#mK@hgf5EU%X2bv@`G(ch#|4~8JHZv zhJs87+khkqG#!Np)HVi@rB3l0IXlNtCJQnE^%d?VuB^Yc>z67$@0 zN=s517}yyYm_Q2n85kKDlo=RUK^z7U2Nkd~F|e@!g>c9-^02bHw6ov!LV1h^?n?np6qKlAiaBEQ*#F&q) z2CSKpj&>0YMHKJAImm7%h7HjO@t3`!y|kvFr~onghLak2;Nf6U>Q@}bVhE4ggBk*e o08(HLU_HPHE^HVSm=WSQSg6L3&ck6Wk-~Tj34UN@0>Zce0PT`RAOHXW literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL_KoreanSquare.fui b/instruments/OPL/OPL_KoreanSquare.fui new file mode 100644 index 0000000000000000000000000000000000000000..99aa0be13d86725efb4910bc6a325799d005d839 GIT binary patch literal 1680 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJQnE^%d?Vt$^NUgw^MVUY z6N^$A7+4t?m_Q2n8JW2G*ui`tkC721h79-_7&&->0zma3fT2L1i;;z22qKA%l;>pR zw81if+WH!3| zNU#gt&%>RMBN@VlDfK_xAOeh0dr(6F5nKwa0jviY89>qu3d{&`94u60Nax`&mPlc| O1ra|#u&MxJTmS$8-!o7E literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPL_SupersawUnit.fui b/instruments/OPL/OPL_SupersawUnit.fui new file mode 100644 index 0000000000000000000000000000000000000000..114ed5073173400ffde11126bd7ef3395ea2f053 GIT binary patch literal 1706 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXlNtCJf=dfhi;5G=6+-heOBfhg z85o#AQe3Qz93UFV2LVP1g&?`u7&sUtk>t@-$a68W@CzZ-qqF2W89DjEHlfRa`TPt_ z4q!_`jsQCZEDR&$VGL|Ey7K=(08$5{K>(QzogUG{jF9;-d31fG@?qu>qDeIuT|FW5 xVe;tuNae%K0hZOQ0jviY!37qB0y9D!2a8mT(ADEGmPlc|1ra|#0|N--0s!NrF%JL$ literal 0 HcmV?d00001 diff --git a/instruments/OPL/OPM-lowpitch-fmclap.fui b/instruments/OPL/OPM-lowpitch-fmclap.fui new file mode 100644 index 0000000000000000000000000000000000000000..427c337b0b0938dc4bc07d9398e9e708ceb0dbff GIT binary patch literal 1463 zcmdOOD=o@POioqE%quP_($n>1U|>)HVi@rB3l0IXJsB7o(sGk?5(^j@*clj@Kw|PB zLXa6mVg>RH91Q%@K&4=Xm`dbN0Nmd1(f|Me literal 0 HcmV?d00001 diff --git a/instruments/OPLL/(SMSFM) Near Perfect Square Wave.dmp b/instruments/OPLL/(SMSFM) Near Perfect Square Wave.dmp new file mode 100644 index 0000000000000000000000000000000000000000..392b8b59b3a449cb868c6b6655a3360f9446f648 GIT binary patch literal 51 ncmd;PW@KPzU|^AvXMh4G1_YBA$mC~WUT%15reg*(JYyu!Gj literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) 2-Arp High.dmp b/instruments/other/(SMS) 2-Arp High.dmp new file mode 100644 index 0000000000000000000000000000000000000000..cefb09cb937e863fcae557ac2037f8e22edb7ba8 GIT binary patch literal 30 acmd;PW?-IP6axSpDFIag literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) 3-Arp High.dmp b/instruments/other/(SMS) 3-Arp High.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a5ebf9759321339d37f27d0e167aa9747d651f19 GIT binary patch literal 26 acmd;PVqoNDU|{&q%mXAPfLH~HK>z?3zyW3e literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) 3-Arp Major.dmp b/instruments/other/(SMS) 3-Arp Major.dmp new file mode 100644 index 0000000000000000000000000000000000000000..3d284983e9765b93b28bdf09b9704b62a00c8fbd GIT binary patch literal 26 acmd;PVqoNDU|{&q%mX9^fLIuaK>z?2*a1xd literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) 3-Arp Minor.dmp b/instruments/other/(SMS) 3-Arp Minor.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a28275fb7769b55277b10f51232e1d7aa1a56c47 GIT binary patch literal 26 acmd;PVqoNDU|{&q%mXC(fmj%bK>z?2%mGXQ literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) 5-Arp Major.dmp b/instruments/other/(SMS) 5-Arp Major.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7a9291359585d93cdf62986da053f8a464a25c41 GIT binary patch literal 34 fcmd;PW?w{maZgObm21R1~~;kdfes2vF{Q`*wY_ Hpf%+HMiT+J literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Attack.dmp b/instruments/other/(SMS) Attack.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0be930625decb07ad10b738d1b2fdc8325ef4fc8 GIT binary patch literal 25 acmd;PVqjroU|`?|Vtydz1>*le%m4rhAOSuA literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Buzz Noise.dmp b/instruments/other/(SMS) Buzz Noise.dmp new file mode 100644 index 0000000000000000000000000000000000000000..8b7dfd97dc9c98035b493acf4aa29439ef4a1f6d GIT binary patch literal 142 acmd;PVo=~`U|<+X{GWk=ks0U)1_l7Ju>%nR literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Crash.dmp b/instruments/other/(SMS) Crash.dmp new file mode 100644 index 0000000000000000000000000000000000000000..f9855bde354ec99718132f753200ae33c698db0e GIT binary patch literal 306 zcmd;PVsPbWU|=8@^8xkZ!n{B^e3%C)kB+&4V#HuBpgMe*6DW_4Ie=o=FgsA36^NOE XmR{{y7})4>L% literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Cyclic Noise.dmp b/instruments/other/(SMS) Cyclic Noise.dmp new file mode 100644 index 0000000000000000000000000000000000000000..cb84b30983984606a668430e42c45bf12a8d852b GIT binary patch literal 22 acmd;PW?3?}CW=)XjeW_awqbSVpQ2qC;r&)!&ZVZn(R2PW(ovB8(EKidS` Z4z?|98`##ctzcWiwt#I8+YGkx_W^Km0}lWI literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Hi-Hat & Note.dmp b/instruments/other/(SMS) Hi-Hat & Note.dmp new file mode 100644 index 0000000000000000000000000000000000000000..3f92dc68e44f20be7565640baac423094d562952 GIT binary patch literal 39 jcmd;PVqoTGU|?VaVtye0&lCqFLHIu-6El!v0x=l?I-&#g literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Hi-Hat Closed.dmp b/instruments/other/(SMS) Hi-Hat Closed.dmp new file mode 100644 index 0000000000000000000000000000000000000000..24f92bf290db7b81d073e7d44b7a8140b517e428 GIT binary patch literal 29 Zcmd;PVqoQGU|;}YP9SCiVi5QbA^-|@0XqNy literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Hi-Hat Open.dmp b/instruments/other/(SMS) Hi-Hat Open.dmp new file mode 100644 index 0000000000000000000000000000000000000000..6726e12d3d56463370615435b710aa13b128959a GIT binary patch literal 181 zcmZ|ENe+M@5Jb@e2UHvm;{DHuzZaFTkj3l#RM)KckreLEMcYYRrR|_?r){G{!HNYl OrcS2+B=!+rYH>cpi~?r> literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Kick Noise.dmp b/instruments/other/(SMS) Kick Noise.dmp new file mode 100644 index 0000000000000000000000000000000000000000..8f2d3cbf9a4afe32ff867b34df5da03d0dbe6934 GIT binary patch literal 39 gcmd;PVqoTHU|;}YJ|Oko+Tt58vYoJ^%m! literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Record Scratch Down.dmp b/instruments/other/(SMS) Record Scratch Down.dmp new file mode 100644 index 0000000000000000000000000000000000000000..8e28c41800ba5555b93ec5fbb67d7dc3aeb8f951 GIT binary patch literal 94 wcma*fxe)*$3CYMyMFC|1 literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Ride.dmp b/instruments/other/(SMS) Ride.dmp new file mode 100644 index 0000000000000000000000000000000000000000..01070ff71e086084f506db28962abe36b40b8108 GIT binary patch literal 367 zcmajWOAde_3`Nmb{EN!+oVov9=w)V_qJxvBw~&+0BI$5;c5kCaGW~63k1X^*GjCcZ dZeK?3k%1oR>5-1!lDK(Bi;#8ORfk#qBs~B@1U~=( literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Snare.dmp b/instruments/other/(SMS) Snare.dmp new file mode 100644 index 0000000000000000000000000000000000000000..c0e32b212a6998d66607de58d3b9a7ca68a54da3 GIT binary patch literal 86 zcmXZUO9}uW3`4-j3$nUd3)^mLGA)k8L@5wc0mkS%J3Y*PiY tT^+C`pZn6^Y0>}qN8jsB-#zNt)btFao^jMWsOeorz00TGGuDwVzHW591z-RG literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Thump & Note.dmp b/instruments/other/(SMS) Thump & Note.dmp new file mode 100644 index 0000000000000000000000000000000000000000..41fb6d51db9d6a6c3ab3cc3d340d79c4a8bd5952 GIT binary patch literal 46 jcmd;PVqoQAU|`?|VlE)&1Y%ww{?CFe!T}OtWMBXQCkz5} literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Fast Major.dmp b/instruments/other/(SMS) Tim Follin 6-Arp Fast Major.dmp new file mode 100644 index 0000000000000000000000000000000000000000..e306203cbfa00db621c791b8b679c98a2b6f76e4 GIT binary patch literal 38 hcmd;PVqoNDU|{&q#sefJfLH*CWq?>1h~0igf@ literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Slow Major.dmp b/instruments/other/(SMS) Tim Follin 6-Arp Slow Major.dmp new file mode 100644 index 0000000000000000000000000000000000000000..9536150c65ce3590c7022fec86b4d24542fc3524 GIT binary patch literal 50 jcmd;PVqoNDU|{&q$pa)oSOSOzpjZY-3q!FykOlz&Kav5} literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Slow Minor.dmp b/instruments/other/(SMS) Tim Follin 6-Arp Slow Minor.dmp new file mode 100644 index 0000000000000000000000000000000000000000..166a1cb3af789baa0b4d0323a05c5fe50ba2d2dd GIT binary patch literal 50 jcmd;PVqoNDU|{&q$pa)oSOSRop;#J73q!FykOlz&KS}}8 literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Tim Follin Lead.dmp b/instruments/other/(SMS) Tim Follin Lead.dmp new file mode 100644 index 0000000000000000000000000000000000000000..08a3a0815f415ed796974e18f4405526363096d9 GIT binary patch literal 26 acmd;PVqoNDU|{&q%mXAHj}9<&kQRom1o^B32e=CPoH&5*=+dfBxm+=Av-YN;?~^ GSor~M00SQY literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Up Slider.dmp b/instruments/other/(SMS) Up Slider.dmp new file mode 100644 index 0000000000000000000000000000000000000000..765f156e824e56bd8cd569c561fd8f997d44551b GIT binary patch literal 162 zcmWm8*A0L$3;wuCU!;yTkT??Fripwl{1a_>UhaIRfhd literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Variable.dmp b/instruments/other/(SMS) Variable.dmp new file mode 100644 index 0000000000000000000000000000000000000000..7ed3209f5ce5f3d2b5bd4fd152b26b8870ee7b00 GIT binary patch literal 13 Scmd;PVqoNFU|{$U#0&riKmi>9 literal 0 HcmV?d00001 diff --git a/instruments/other/(SMS) Whistle.dmp b/instruments/other/(SMS) Whistle.dmp new file mode 100644 index 0000000000000000000000000000000000000000..0fd9127c031a0eb3668ed18eaf435e5c45d32936 GIT binary patch literal 22 Xcmd;PVqoNBU|{&q#04aIfEWY-5hVdM literal 0 HcmV?d00001 diff --git a/instruments/other/Echo.fui b/instruments/other/Echo.fui new file mode 100644 index 0000000000000000000000000000000000000000..65fe97f80bd4af5322097f03ac2b355871ff30af GIT binary patch literal 1784 zcmeHH!3x4K3{BmJn<52|Ue>cP@e{nLco9LtvyOp+C`|o7|4b8Yq>j2Wyr~aDUh>+c zEhWk5obOj@rndXzDeomI04OxZWIA6Er~GU_R>O32P|H=m-emwjK#jyW3_RHd2q>^1 z_JwHnOZ0~DW!th*r{YLN^4`h1MnY`>0;NzJIs>u6p`!y@Zo^fBH0GwKyhLlEH4Psj zuj?Fh_Vg^C)|s>CbCAxQz3s;4S%{10E-X+H#agcTQJzm%t(mKKQU8Tr#XEm{?D{dE s-rrT9^?#q&7vOin$sf#ui?|OyP&AUt@mi*OR9@YsmJT9`Lz?UzZq2za8~^|S literal 0 HcmV?d00001 diff --git a/instruments/other/Flute.fui b/instruments/other/Flute.fui new file mode 100644 index 0000000000000000000000000000000000000000..06119564cb2ffd60f023675bc60a458625d2c240 GIT binary patch literal 1942 zcmeH|&uYRz5XNUsQjNA<@CA~ykm4hF5_%~@eSsn#3dMt(_w&u{_eDp>kY=^LSqFZ} z{M(uAY)Fb}xn6xNmigyuvt7Rw3lYhI%In+voI3r}uX4K-iA6eeWxXWwBawtggJiLD zgK3_Ny~ZvCq71HwGE8GtA74E%*K zSK(UABW#7WEq&NZ3f-bx)_WImSJ_Hvkz;o zxz=li>_hF}^$XRm$NxjG`krsy4!xUy-G8XQ#_xU3C!lk|e<_(IJ0}cF&d*l6oR_)Y RYOfxOwtk2_ejel}`357UFxLP8 literal 0 HcmV?d00001 diff --git a/instruments/other/Follin Guitar 2.fui b/instruments/other/Follin Guitar 2.fui new file mode 100644 index 0000000000000000000000000000000000000000..504c587035238b4f610b6c0c81eff747ebb0c812 GIT binary patch literal 1788 zcmeH{O^U)m5QVEXQKO6vdVus=P=+~yE5(fr=mkVv1SCS#`*|P{83qv%^_58&8#+

0ArUDMtJCfExzFRR$$0Gfsy+8+gFt-|SwtC5 zx&=EcYeY5&2Dz3HrO%XnQCPBKcrhAs9pT8clW~ruOp^psg$OhkaxePyfuIa{x=F_? z;&)0BMYIlJ+dRkt-U4h3WdVP2>{CUb6}JcY?7UOLlD;fpWhATwJERQ#pla+MO*k22jQ6}KObFsa%Da9_R)9XZ+DdaZ7;<6LXzUE VnJ&G|{ZV@LYuVHvk(5MCl1{C*QL6v| literal 0 HcmV?d00001 diff --git a/instruments/other/Follin Guitar.fui b/instruments/other/Follin Guitar.fui new file mode 100644 index 0000000000000000000000000000000000000000..3a3d292e6fa5818411b9ec49d567b6d597084b50 GIT binary patch literal 1786 zcmeH{-D<)>5QS$=QWK>v=mTW01;t13%F-JV+7}3+7Xe8j>ihXXA|fKCi1mynGz*&; z>s{LeUpBL|J16@?dZR@W2jQEF;@Ldu_d+64Ak*{s<(1#LfAl_`MzMNYMDrjavWaS( z@?FQ0T_T4AgM3?v=Ab0s5VmX^CZ=7!Cp>v}GLDf{8CL!`JnM1W! zD^wx4RQ;J>h4R{vzu?8^%XdXv_%9AFXIlKccj?8I^~}GIz60O8qnwGe6z2;`imzt5 U^fI?c<<+lcOMgUC5-~+O0RTc#MgRZ+ literal 0 HcmV?d00001 diff --git a/instruments/other/Guitar.fui b/instruments/other/Guitar.fui new file mode 100644 index 0000000000000000000000000000000000000000..20f6f78106fa1b0299f668de8624308be6ac6193 GIT binary patch literal 1705 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXLE?@I?xmR}iA4+yEDQ`xAW?Y^ zR%U)J1_o9T2MdsAVPxb6D#j_##mK@hgheA%NS>3ClOMMy{G&c}~%mx8)m_V3t65UuvMqDm{Yr)AtH;WJ- zVi0-u5i%QHek9n1?&smo$C(hJ5|sL%kohqAQF~BB02VI5qM9{;^#CISNSZ-`86l2? Yg=!4xJRHUnDU7!u;s=)VAdCwD00OWtP5=M^ literal 0 HcmV?d00001 diff --git a/instruments/other/Octave Arp.fui b/instruments/other/Octave Arp.fui new file mode 100644 index 0000000000000000000000000000000000000000..a891ed9f341532f4a29825b91866658e1a2d8594 GIT binary patch literal 1815 zcmeH{zY4-I5XLXsYFqyVoZOnhNvQY;x(F^R=nF`3a1p81=kv|DhTRHp!PKLY~yL*@Bj) z$rdy;0bAf}%=YT+gPI1{2Cy$s)!@VcM*~og=`!d872QgH>q3~-_cgD4^R;aLz4m+k zY_;?8U+9%T^SAr9fAiDx+v=P6zt7_hn0p~o?!r9_LYNeus&YM+dEG0oZi|*aM3NtJ G@Jv@%S1Ex2 literal 0 HcmV?d00001 diff --git a/instruments/other/SMSPerc/SMSPerc About.txt b/instruments/other/SMSPerc/SMSPerc About.txt new file mode 100644 index 00000000..5964270c --- /dev/null +++ b/instruments/other/SMSPerc/SMSPerc About.txt @@ -0,0 +1,26 @@ +The SN7 noise channel can "steal" the pitch of the third square +channel for increased range, and this percussion set takes +advantage of that. The kick and snare drums use CH3 pitch for +two frames- CH3 is muted for the first frame and outputs a +square wave on the second. The hi-hats use CH3 pitch for only +one frame, during which CH3 is silent. + +In order for this to work, an instrument must be placed on both +CH3 and CH4, whenever a kick or snare is triggered. (Because +the hi-hats only need one frame of CH3 silence to sound +correct, and CH4 pitch macros take precedence over CH3 macros +in Furnace, you don't need to place an instrument in CH3 when +a hi-hat is playing by itself.) This is the "KickSnare CH3" +instrument in the folder. The "CH4" instruments are for CH4, +obviously. + +The "ExampleInst" instruments show a setup where a regular +melodic instrument is combined with the CH3 percussion +instruments, so that CH3 can play something useful with minimal +interruption from CH4. Of course, now you have to keep track of +three instruments for one timbre, and you can't have a note +sustain through a percussion sound, but I think it's worth it. + + +Note also that the CH4 instruments need to be played on either +C or D to sound correct. \ No newline at end of file diff --git a/instruments/other/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui b/instruments/other/SMSPerc/SMSPerc ExampleInst [Hat] CH3.fui new file mode 100644 index 0000000000000000000000000000000000000000..950f746163994a85b9c2847e89be5f6161d7bacf GIT binary patch literal 1708 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXLE;{XB?_(;iMa(isSFG(3=B*l z33(1yW_~RO238OU3y^1FWaKu$BhSUi!Y_nHBUDJ9laZ4jY!g;B{0vME42(c24k!jv zNI)Km&A^Gw!NUGe0Kl|x0U00+vXTvmfk6Qd3y?Fg0d!*-aVf;68BGk`EJA#UcJeGF zWH!3|NU#gt&%>RMmi#cdl=>gTKpX<2_MnCUBA66d16U6*GJvER6qpg>I9RC0kj}$l RERn)^3nG4g1_ltu1psRGFp&TN literal 0 HcmV?d00001 diff --git a/instruments/other/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui b/instruments/other/SMSPerc/SMSPerc ExampleInst [KickSnare] CH3.fui new file mode 100644 index 0000000000000000000000000000000000000000..2c658579f044ba6c0d5cccab4454dc52e129792c GIT binary patch literal 1723 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXLE_$-$=UkBd5J}-3a%B2xdl0? z3=Av`3``(-c@9=)ek}$DRuBgZkY{0J66IM0+3``CT zj6f+4Cjd=N$l=*Ba` zG@vUaf{$(%AwI-N@+>4|HoE*sunXPK!<|nkNmA;6LgvHdN9{ok0a&;I3vbo{)&q>- gLX1Iy86l2?g=!4xJRHUnDU7!u;s+M6AdCwD0GpLFMgRZ+ literal 0 HcmV?d00001 diff --git a/instruments/other/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui b/instruments/other/SMSPerc/SMSPerc ExampleInst [Nothing] CH3.fui new file mode 100644 index 0000000000000000000000000000000000000000..d51578af7137884bc939b4b0b9a4be713c00a17d GIT binary patch literal 1704 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXLE^3ziMa(isSFG(3=B*lL3s{V zW_~RO238OU3y^1FWaKu$BhSUi!Y_nHBUDJ9laZ4jY!g;B{0vME42(c24k!jvNI)Km z&A^Gw!NUGe0D!arz0JS{#ULx$pkg2wf}DX3pc~7GOCdJRXkzGQ5#mF%lV>3zv(e>8 zf?eo-9`1a!r`!KA<%zE;b!9q2LbRG_4i4?|L N5b^UfFn};F0035!FIWHo literal 0 HcmV?d00001 diff --git a/instruments/other/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui b/instruments/other/SMSPerc/SMSPerc Hat_Closed CH4 [D].fui new file mode 100644 index 0000000000000000000000000000000000000000..b3ec0f28ca87af8b5c1170984bdccb6032cc71db GIT binary patch literal 1707 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXLE_Oau?ilECGpNV`NgRz3eFxT z3=Av`3``(-c@9=)ek}$DRuBgZkY{0J66IM0+3``CT zj6f+4C?340y8KA63*FDdosT^gB19?mKf)yZtWkSVLjVz43akOF2N=Nx e6@vn(2*M9gjUk)HVi@rB3l0IXLE_Oau?ilECGq|Rsd);{9wrP7 zEDQ`xAX#}1R%U)J1_o9T2MdsAVPxbsz$4Ga$igp#MI%&5o|BQ2A8Zp=HT(=r4h)Py zDGn$GQb<4^iOnDZ5PlX6kO8t*82|sJp9@G#(gq8wp0P6upaKXo*04jnY09TerHHLH^_96~uD={=K Pmx1;2^D{7jFfIT9tPd_z literal 0 HcmV?d00001 diff --git a/instruments/other/SMSPerc/SMSPerc Kick CH4 [C].fui b/instruments/other/SMSPerc/SMSPerc Kick CH4 [C].fui new file mode 100644 index 0000000000000000000000000000000000000000..3a8f1e8586cd11fd358b09ded26706ef9d521bb0 GIT binary patch literal 1721 zcmeHHOA5j;6r9)=tVIG|pjiuw3lAU^L=i;LohV3gAwm~b@8`|*z1mHt|;NlEX3Wc47dEs4wrr+{0Zsa-0-XC<*o42W#W*LH}k z$#uq>$T=NzPNQrggsDq++t;#IReV!>&#y|mT>k~H@}0juw*QU5r}wYY*Y&^8;|u6_ i0hBlM&LaB|P&|U{c$9fPGLJaB=e=qjM3M$A^BJy=s4#s1 literal 0 HcmV?d00001 diff --git a/instruments/other/SMSPerc/SMSPerc KickSnare CH3.fui b/instruments/other/SMSPerc/SMSPerc KickSnare CH3.fui new file mode 100644 index 0000000000000000000000000000000000000000..f35b0ef0d7dd75cf2dc776727c8925b35334a005 GIT binary patch literal 1695 zcmdOOD=o@POioqE%quP_($h_5U|>)HVi@rB3l0IXLE_$-$=UkBd5J}-3eFzJ3=Av` z3``(7c@9=)ek}$DRuBgZkY{0J66IM0+3``CTj6f+4 zCAwI-Z z^6VpIHoE*sunXPK!<|nkRZ{AILgvHdN9{ok0a&;I3ux8=)&q>-f{H-_RHWetsK$`a T!*4nvS-b@iKd>MLVO#(J9#k!b literal 0 HcmV?d00001 diff --git a/instruments/other/SMSPerc/SMSPerc Snare CH4 [D].fui b/instruments/other/SMSPerc/SMSPerc Snare CH4 [D].fui new file mode 100644 index 0000000000000000000000000000000000000000..5569b2fc52ccf00bd9596c464085d17c6cef9720 GIT binary patch literal 1774 zcmeHHO>4qH5PhpjYiwn~Kaf2alpgv61WRczBIr#lh zgU8Ot?!4Ven8C|eo~_m!_mOQs^Wk6(zzG#^li8d$ Date: Tue, 28 Jun 2022 23:32:36 -0500 Subject: [PATCH 145/580] OPL: fix pitch macro fixes #535 --- src/engine/platform/opl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index da760af7..fa1009b0 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -601,8 +601,9 @@ void DivPlatformOPL::tick(bool sysTick) { if (chan[i].freqChanged) { chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,octave(chan[i].baseFreq)*2,chan[i].pitch2,chipClock,CHIP_FREQBASE); if (chan[i].fixedFreq>0) chan[i].freq=chan[i].fixedFreq; + if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>131071) chan[i].freq=131071; - int freqt=toFreq(chan[i].freq)+chan[i].pitch2; + int freqt=toFreq(chan[i].freq); chan[i].freqH=freqt>>8; chan[i].freqL=freqt&0xff; immWrite(chanMap[i]+ADDR_FREQ,chan[i].freqL); From 57c0f8bdc78ad22c910ebc50c91d8fceaab877fa Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 28 Jun 2022 23:42:34 -0500 Subject: [PATCH 146/580] error feedback on Windows see #540 --- src/main.cpp | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 23309d9a..222e13d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -241,6 +241,17 @@ void initParams() { params.push_back(TAParam("W","warranty",false,pWarranty,"","view warranty disclaimer.")); } +#ifdef _WIN32 +void reportError(String what) { + logE("%s",what); + MessageBox(NULL,what.c_str(),"Furnace",MB_OK|MB_ICONERROR); +} +#else +void reportError(String what) { + logE("%s",what); +} +#endif + // TODO: CoInitializeEx on Windows? // TODO: add crash log int main(int argc, char** argv) { @@ -281,7 +292,7 @@ int main(int argc, char** argv) { val=argv[i+1]; i++; } else { - logE("incomplete param %s.",arg.c_str()); + reportError(fmt::sprintf("incomplete param %s.",arg.c_str())); return 1; } } @@ -335,53 +346,54 @@ int main(int argc, char** argv) { logI("loading module..."); FILE* f=ps_fopen(fileName.c_str(),"rb"); if (f==NULL) { - perror("error"); + reportError(fmt::sprintf("couldn't open file! (%s)",strerror(errno))); return 1; } if (fseek(f,0,SEEK_END)<0) { - perror("size error"); + reportError(fmt::sprintf("couldn't open file! (couldn't get file size: %s)",strerror(errno))); fclose(f); return 1; } ssize_t len=ftell(f); if (len==(SIZE_MAX>>1)) { - perror("could not get file length"); + reportError(fmt::sprintf("couldn't open file! (couldn't get file length: %s)",strerror(errno))); fclose(f); return 1; } if (len<1) { if (len==0) { - printf("that file is empty!\n"); + reportError("that file is empty!"); } else { - perror("tell error"); + reportError(fmt::sprintf("couldn't open file! (tell error: %s)",strerror(errno))); } fclose(f); return 1; } unsigned char* file=new unsigned char[len]; if (fseek(f,0,SEEK_SET)<0) { - perror("size error"); + reportError(fmt::sprintf("couldn't open file! (size error: %s)",strerror(errno))); fclose(f); delete[] file; return 1; } if (fread(file,1,(size_t)len,f)!=(size_t)len) { - perror("read error"); + reportError(fmt::sprintf("couldn't open file! (read error: %s)",strerror(errno))); fclose(f); delete[] file; return 1; } fclose(f); if (!e.load(file,(size_t)len)) { - logE("could not open file!"); + reportError(fmt::sprintf("could not open file! (%s)",e.getLastError())); return 1; } } if (!e.init()) { - logE("could not initialize engine!"); if (consoleMode) { + reportError("could not initialize engine!"); return 1; } else { + logE("could not initialize engine!"); displayEngineFailError=true; } } @@ -394,12 +406,12 @@ int main(int argc, char** argv) { fwrite(w->getFinalBuf(),1,w->size(),f); fclose(f); } else { - logE("could not open file! %s",strerror(errno)); + reportError(fmt::sprintf("could not open file! (%s)",e.getLastError())); } w->finish(); delete w; } else { - logE("could not write VGM!"); + reportError("could not write VGM!"); } } if (outName!="") { @@ -434,7 +446,10 @@ int main(int argc, char** argv) { #ifdef HAVE_GUI g.bindEngine(&e); - if (!g.init()) return 1; + if (!g.init()) { + reportError("error while starting GUI!"); + return 1; + } if (displayEngineFailError) { logE("displaying engine fail error."); From 70239f879afdb0b9cf46ec8ead26276f7dda633e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 00:11:56 -0500 Subject: [PATCH 147/580] add 3 demo songs requested by Crisps --- demos/the_king_of_crisp.fur | Bin 0 -> 3728 bytes demos/the_machines_are_socialising.fur | Bin 0 -> 59616 bytes demos/the_serenity_of_lonliness.fur | Bin 0 -> 1046323 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/the_king_of_crisp.fur create mode 100644 demos/the_machines_are_socialising.fur create mode 100644 demos/the_serenity_of_lonliness.fur diff --git a/demos/the_king_of_crisp.fur b/demos/the_king_of_crisp.fur new file mode 100644 index 0000000000000000000000000000000000000000..afb4cbb839f16d4d45037cb23645a96a35e86174 GIT binary patch literal 3728 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 literal 0 HcmV?d00001 diff --git a/demos/the_machines_are_socialising.fur b/demos/the_machines_are_socialising.fur new file mode 100644 index 0000000000000000000000000000000000000000..870874dafffba250927e9aed230681c49976bc57 GIT binary patch literal 59616 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 literal 0 HcmV?d00001 diff --git a/demos/the_serenity_of_lonliness.fur b/demos/the_serenity_of_lonliness.fur new file mode 100644 index 0000000000000000000000000000000000000000..dc733370f25d3cdad129e95fc37b1ac670e05257 GIT binary patch literal 1046323 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�Rt>$6guoS+tnJv?I0_%ycQcc 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

)~FA^&o|Igz8OrmCrdPHNi7YXQ9~1( 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⪙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

9H45m`DlH?au%QC3zKIj#n3ObeQ@xle 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%0D5)Y&bud-kl)yZfbef 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

G-UOk8yU5)0nLo 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

!!Eh1Pt>Ug4(;u4TCcV+qI8vbtXy7R1H^oKC4O z@as)2S4^ofOBgN)esiI&ryNVy`9N1X`k2@5?AAp^%*GOekv%w6UvgzG!8awXW3_8a zSl=$UeL*W^L@iZNZ6&XT4$pPXa@TfRwH^Tyj8A&UG^Kbjv1UoGM7J;IzV>c1)@_d(C>FcwN(1RX1#xrL1b(lIm1UuiTUaC-fC52-AZ_ zgfd}%nAF@(S9C+QXWDH`5LG{x(c_^ysM=aatZz1Yjjfek)2f=b3A-Qbb$XoGZrMCI zp1f)(nZiWYjc1iW*7Z~(srg~I?MOkbDI|D7f$&@iJ6qe0W^HG;-n8VnF6zaEnn{~g zA?bB^(Su7GbOi-@@`ZFkjiri{gS-$A6sheyn;UJ&l6?;Iu3ppR6`|J(RjcW7GG_dt z4<^h@~^BEc}MlwK>1j>T=Fr2NAYCQ;=P7Gn^*7 zt|SM%U^l8g(Q{*QHJO8in&Tt^;uWXYvB6I3BA?C+2FIJ*JMG5$mLn;WujI3G5Yu=_ zU!7h6F?mAvV<|*Uii+Ud4j*=Vn8!M84>N5gFhX~))~Pfb)rRTWwt!9hL@t*MdVwtY z9v}F8sHXKmO$a*pnYb*-VIYbeSk`W{-Zi^6Vs}GMQ|t~nhAy@tdRD;q;LJiYr8$A5 z@uuOrRu|dS6X}#*9Lr}5sbtJB`EJ#Kt!qRE2jSCgnl>ixT~88_>&5plUIT9y)4+9dg2F?T6O%+e6OU!mn5z&R z0db`^C&M9yj}kfRKZBv_K!%ES##Rdf-rzYkRfI3j^#WD!c`dGL=|V0$P=q(rRe|>$ z%=xhpDg|Op@n9byzJkoYR<5^Ogf8GE$nRuH;W0LscurFNo`+=w2-~nZ5>KTd9l#PJ z_PA`j-Gz;TkjnL4-;)#p+K5+98%D5PehXQOg2X8KTjv#Va za6v|X?1IC>KtKf!U(h7*j|%U=gV!n@i|)G)AFiqr99!5hSQI$(L5KkKknA|a5%>yZs5gN|4 zfCEG^Q6{KjZ^UQ!iv3Va5w#&0>piJwLvlz#a+eMXhr=((evs554F!XW1G5N;fgqL& za5%*ixLA_Kb}C^!*oZgDFT5ed!ZguwQoW3FHP(;tsTJ~LLJVBU@%>(@Ok?DPs*aGtK?EYf@P^gT;m1Jf z1To5pg{X$FFdlGLOpKaK*h0b{eL!U+>`=19NUd0f>gZJ7;-acFc9`K1OMPvLsCSEH z6pMQF99Ru1tum-Xzorr?n`2wH-ZXl2?rhjBSdL0&tQ>&FFPrTr zO|^&patO^kAb$t8MtLe0X#L7_NR;S9PdZdrxN3!zNRwCg6{HzE)z!(&$2Ix|C zE0QJ;qK9W<0|E`@+mSjwt|1L#^rAB-Gd2R6d^e*YhRz{tmD>(GnUcg5>jjCGP1${< zX^E)*jv_i7UG6U7=VNrd1;VZ%ZUwtL*g5H|cJ%r@08u5IiGbIV zX}hTw(o%E7in*4?LjaXa7fPBGQ+Tt-n|oEiw(bOGPOk;UyeuW-QW(=j#gh|$2g2ko z=XTp$+wDN%441c+lxHh`S2QY0Lh!AIqZ24vh?nw(G_R*5Ur-g>3B491ZGyjB5i@B; zO(i5>)P3LDYbt8n*21(FfbZ);bYMxm1;H~MjyNK56RHp|WD0-(b}SHc`D{uR zLNBmUVAlrn&@U(+BC@tv08n=MZa&5nyhdA<;u7AA5bYGEbQDw=v- z(Rst=#JKFjVn9GGD+1>l2ILsNZ`xuEVg`(Se5={Swu_DXoX{YWmF0MX_hV@VZXT+P zc3VA<3*8`u2jU??6d_M*_w2Uo8>rHT(JzE-q07Sfk9}`qKJRTNiJ1wK#aj>r( zPr~I$=CTQmfTsw2L=r%3%y>R)9KyjAkjSTn6%rQ(xgqdD4H5F*^-<+W>PcjX=&iyJ-Sx0V3~??(EHnXwMr>cTx*jK}$SH=9&j8ySl)d1V z%c1S~Hu!tXFfb@V#|~Ko=8>+|Mq%j&j)sS!oWv1>QZb*_z*JDH#K8;($1YGSNX0A^ zzA78@4Un&@LvS$G)WgXRUXEcDg(n5MHgNJ4vNQND@G`hkV2cRAg{pF`Mze#b4@I() z@G6KwEJW$!24i>tWPM|FW4^lP5Jm0i~e3K zh@;V@s3H8cWt~jukUZ^RaOQ}>2Gt;cP|jM7DzP9uZA{?P@xXor3edpoAO_-qkR-ng!g1en-e^lz}shF-$wtR*wZX!EC%_ z>@rjJNwLsXb0?%($v9)@RK(Wh;yr>KF(`5=6-sJobI+od1Oqrv=E+pX5!;D^tQ|Y& z66VV8CPZ7MgBrALsycHW-r#^TzC_$8Edyc`nz-EK+$UOX$T;yIU@}XI8U(~m|FWfE z%(^BKHO&YwW!WOjV8o_;Q|r6x_lA4dCN<{U!aOgVg3f0}vX6L>2(q~kkcp{{u!TAO&iwhs_$Xgqyf zKL-=;!!Aeb5@$`cR}>BWXr75fKKB%vdVnesvF~U02)R4GLwk%wgwe(5$5T8B`1|hM zQqUTO4V^Q!FS4iRJWUd3M%Wj@$J0L{^2Ktl4;i4_I$0*#9ZWPlOB)IIIfh^q+XovT z5NJ!z0)XTBLrL%1U_k=To+QMnTxz~qUd~7(4#h^zs);tF5g&y=@L8{jk)%bMRfV== zG8JZ#Xamb5$jaeF5zwmKg1l;xB&6zGp*4PPAwmH*1Eu_7Y|MFHgtVIm0b)!G;$bTm zPHaJrxK=9r8~ZbPskN2Qa>QER{YX42YX(2?M6^|=>V^5Ye$j92rJzyA`G?Y;0jxiL z^4K=96`pX<7LBmD$yco_zjG$764ZsYk7y{jZ!$&AmuVs+6-qd`DLZkKSdtLs)L^Q8!ZlMPgLMnOvDgv@k_9PLNxsM) zGP9Wi#$>Ue!fAt^4)l-bDzA}qZ`QJ44=9!?A(0-`tH2FxQ9J&9gRbB_eUlQEL$*N7Y0BPT%Oa`0sh9_=}c=ZOhLtK)mfT8Zf`{dmgqQPvJdyB4ej zhE3o3y#?VOWE#oc>h6#gfuk9?lenC2YHV7`P%hH}{l3l-Pm!8H-&cH>>!#z^dkw81 zP`gRphY$1v^K%%cT_Y5-r?-I#6OH6*bskTHB7j~Y!9Iq; zmLO9&SG(jFH)gVIMzSEo;YE@ujZA6NW^Q6bK+t_v<8|dEkLJa?E5SnIVvQo!ux3Dn zyz`mjwZ(J91BOGnniS^+3fmkalG49r?j^rs>RP>!YSz#wa#N)}mu_0&RZfa+yE^3k z24+&@*NRrwrP{1boBr7H#%^+Ok;QByRL|4(Nm%~`l;HJjw)AmH&vpV{A zZR$!)_i2D^fDTEs=rw@JrkSl-Tsi)`sy;#CWLS$Mt)p#jO*(S(jr6IDZ!@)C{kHhk zjCyZVdWt3UFf}OocbZ?g$J3+?r!&$|jU&}S?PCA~)Wn78}Glhn6u!8pP9 z@q%Z|a1GFA`IauHBgAZ91_wF1zkIIM1vF;r0Y75}SNl~qe*FP|q}m)~HI)!eBIiGfGZxGU8wLMsoARDC6aN4UeP)g~mZ zm7lNBYg}7rb^sR{2W}Gsm77hvf6c@jv8sLw<=$&SxqOyOu|oO$$Gzri_lePM39lHz zSG0~FVr%!_t(WPKje*#4$0Egs!|9#p;+jCQX8my*tAN!R^MW9X^M4D!4D|*t*BZAf zbEYE~OO%K7;YR(}~O2i33fGzw42<$^5}yOFeA;t|kJ z7FOo9bH|~7`=O5Ri%;?~G#*hpZ*{(%$_GM*8uVznO!&|^EN#25F25b<9Qf_O zai%>)U?gS@D=xKGFVBu@Q-_wr*z04e-^*t0qx}`4TR$r|TH1)q27^wP$# zw3)f<8kTVv-VE2yZ{4xLw%+FpSaFsFvm(*Wr7hiNsRV@K7%vAqpNFj&v`-`$+kUc> z%Z7A|)E?*zp=vdBU}U0&1%{wbZ-=7xek*1-V~fg~18K2>bM+X);gArv9Qg>U!|OvH zx6MnTM_uE=JmdbZLWI)V=;k_pPaAYgD&iAfu;lX=g26Ltek5b4QB~_;tB3 zu=o1$?Ys10=koPJR82-C84-|3b}WUG@AD6~;twdRO~@%9p=Nn5ZcP78f)~@ly|Oq? zm%9%)l#%pN<}4y=4JlrLKA3NOm22qwlP|KEX#Yz2sd}Pd3an@aHw=SjW4W1{Ki}NE zio%3XwaGtcgBY=qJO5_R?7t=bshY>;eIFweA6B_nove1%{xtAn8EAt_O%<|Ct0@^8 z#nt(yst{c|6NH^XsflH1tfIdMdCjBs>5}$V#4k;lvSTS~3Q`=Vi{0D=yEiWRw`d0z z^)IYzf^)uoQ_BD0j}NdYaJItyFUxiJNY+}|4=M`6^;t2)_Dnca?#8RgV6 zr!B}1tSFL8B)c_kc708S%IDVB)(}1_#_jKprbPP}L{GJ#qwB=yXG{X*5?Q?fxQOPF z@ej8n4017Y)7QuJk#_*k`;{%9o((#V4j&;mSTe1}t^tB(zn#Bau9yiYMM^9T`VUO@=59u!=iKMM{#g*XGo z1@MRuVisaD0)6vB=vn;kFOSur^-U9CC7Hui7?st+Ig znmN)S6k3SKzJuRA6iYUF9bafI?+g_^6b7HJ9Sfo48gOL=n0nRy^?dR{xT#BjMSy^9vo-sKylZ=Gq>^k} zXk@^d-j-N6W>TL)f$pod~6O@M`y*|WX8y0o`T>0qQ45mkar zxyX3^ZPIZ~jz&r6PLPkC#7aI8S$+#~CMLH`y4EK_E5de1)>P9`4cx%r{(9yC8?0H@ z&RP&vV^@_O6(xu;bzj*#nOlp*#AJ{w5gtK$;V$%U&d4@wDVr$IAKlC6>}UB-d-dt; z=;`s(fTXJ0)#%8;$srM_ClX?k<5 zMyNdq`|J=xzq-AB)e?%NHqse{kh6=b@{Ah7%UC`px*6|p6VkHF6oOx!J3U)Zr&|?g zNMQ8J(gJ_&-NvoQujBVVQ2X_{((`da$fr|{AXz!U=>2l~P}xW_X*iDzfmrLsn%*xh zwwV_J$v_)s-=o!E(L6}Y<__wvI-lRj5mqP+1BRA)?LSL;jxq`QDtlglL;b8^{s%LDmozY?xZKhwCU7wW#WWU@M#5}CLZ{xIfooa?u_?=gadv#cqHWbHy8Nl zfoTuU1JQ`^_G3@lyFh!SOw?fqwLbk=Za1qtup$W=v(bILwe~Ps5GuR$H4sJRRjGo8 zNJ&KxS8O@6Wp3D(SYR%{_t!^gtU3^p29Y5aSJG`bZQjQhq3}1%mds8$Gzyvt)J}Uo zj7voS%Y$d*O_Rd2SRR8Od$P+C4UCwrc3#8RiWvkaS)o`ju z9^bdwkZ}A9wFyWKVuG+{UnuOh3=i8e>snk3LGlc+hNAd&PV5Az%3~D7cx~YeOu--| zR+opDy%Bl!C+jrs>=G=9r#Wo6#5>egP*#X_&R^O=aU`vL1@d~wq>D?b%9CK$ z7-`HlbMnWm7^2Hot`^6x^Oni^T|zcYTA^V zKt0v-hJ5^c88kn=|jBQqykv>^X>SVNRxY2EYQY4A%Izw6t`JDYm}&1}$ua zVHV-w6Ur0g>Z)jG&HWrLeSGKYQ4f093T8UQU?kgxS=bB!_rI-+J915rxfZ3n`Q_w7 z|JR3^O&vV=5{4LEUF!v@5Isx%Yf&W{92<9Uofgq-oh=Mzm3F%Gr>rqp+c=)UD(unV zDzjUSnMBTHHiY&G>YH1mqYb~m5a9Z!W+WYn;ns*~)=bOE>{hhe+j-8ZGTCl&wD<(9 zHfT!e@u@FwTRIG>-H^KLd@;tFcGOK=RP8$bewL1NEwtvotl7pc%(Gq7Eigy^gLi`!ncgT7VQ z^Owx;66NBx)AD*fSqLMZ3oX!-QfWS_@PU3ko8Y0DGuD0{AFce)H#-iwDLToibkyxy z8w4?VyFnjLAgXnjaA4ShX$C7nr(K&y%WDVt)Qg2tKxZrzp|LRq3NJp<(O#+1L{x=6 zG~^8CH0+c7{R}mfd^|?nxq42$Lo3NXSGAN1?nmjGs01AHe0GJ0e0msJwjFjZME8aS*vzNbq%foAq?_j*LV4D^NKz(;A{jpDRtXN;ju4F zPb;|$wS4-#wCa?V!-I=puYsKj^_A(l-R=*s2PbP2m=xm1Wxh9Y>KJ(}{vY+hriEe1 zSVvx;k2{zC{oDZqd=hu8pvbPf?KFm*Ri9>l>38|)Y3`-@2Zr9*s zMM*2@U3O1xi>&@m)J&{no~w2?qYYvPSbdOi%{oWxJoTu&@fao0%`E~ zCEYXtavf73_kbDLmf<8;5%Nt)WrT*_JpeiscFVtlNjC(TK~$T|I=?EBiFN6{%D1WS zyzEMnT0j9Alkf%c!pf>i>uv;Dx` zADcsm-ZZIKg63PmGEON)GZ&;GgD~tf$oFDHDchSF90@Zv>oCpUgHazudQrp(hU!rG zO8l2IZXZ-;+~&iIEBq2#MsF15L69;BNevpmfWg$yN`kMrqM+OfC{c#bBMl*YytiOy zjdKcdSG&DLk%%kjU=0z8p#sAfL%_)S`{QhSDBxzDYuIP2il+*PgbhX}TeLRp*9fs8 zakvTpkV&~7Lj;PLSS=Y=U1+@SQ=Kd?pvF~DtM^7fk{ZH(Pknww?6Cznymw<)LDK)nJ^# zlPhXOXB)X?-tg>|Mms$GA(zzI)J=cbBx*K;DUY&peC?uYR`+9WgJ3+6#}h45M+qwC zgxC`=Jz5tAjksv;Ov;^ECtLxcWR>Wc_8@}|TXCr_U;8SorT6w68=A(f9hCq> z6=3QW4$t=Jp0Ro|OAYb6RL(`1NY_i~)VA(T_?#3nlX+m<_>>K0$pqtcn0Y-O6WWQK zM1^dUCDzaqH>Ex27a&Ecvd*a#%nQPV+_!4e6r7QVE3(RHe+i-0{g`Wh@Z{>g#AU;> z^mUa-s=8kW8<3L-W%hSRNAh{d?w09>wg?=uv}e(pr&!PU3DksfGiR@V6t)YZjgosz zs`R&4!UrYqRPKJ3hP!tVX;nq>Qm7V;sQD+Gi3oWig!;KkpUj4N;ywB%9S>fi z|0WGbS?#bf8sIk(HmHv$2n?LCFym|7Vv}{tx0I{_Q@=w zpZ*N~Ok-NmmGHHqkju(4vaCXc2U{JM7Joa(Ou^*_0=}*9F#VF2B zc{wBgS^_N74QU7_hKx0z@O!eugK$a=3c!t}%!!=^1_SUdOexdD{Wtl@A9kpS@Wbl) z*PPr9Ns5ASZ~1;1|G;=Af>jWKg+5_QJ8cV<@6D7G!pIii@$e!q{WAUlF8Xk%aWtNk z@iYk5%ZAEapcOW;U#$^gVVB*cVOGN(CvB(K(i5$bKRSSMnVi5iX~s>~-9poTd0*KS?bC2=b>Yw80FlF3fDlQa~N+eiLOfM zE|OcDEW5JWC4}vR!N!s?Q@y|FJsqSMPV93SFHC;LdyyGaXr7P;38j*ck;7+_(!LKA z(%BL^(+dokwd(&hX>Y<*-F4py0Y$s8e5 z)5p^7Wt^9$B~3i1Eg3YOMq39{P`*9eXJ*j> zeaz?{$>uyK0WsXRyUg!MwJ3D9tbRErH=KfFw8X-RtnI7e`2%pwyea%7YG9={?|M^8 z*G$C@JAQ0lx`_QLAtn_y8^=1Wno9O3(oWr&bkf?OO}M?|qzZ{m*x&8lwPleR5(b-# zy5*(Lbl9Nu?5Bej#~Y*ZspIf48LyQj#*-*3&UaK{QJNs50WmXKV=J= zoAH6%_L`x6H8_`&ACmsi>`TAC(Q%rV5MM5gX6#3Bs%R)Rv%tr2n-R3OZq_ZoEhzr_ zTlC7HzJmIC)%KG4z8w?ZtXEFU3)-bn_~UF}eZZEd#QMDZU2pMpLg zp^-OUG{4Y#e8k>eKlwwpYTmc@flmC}K-e$++x6;c=@*KZi%dVno~{@9K6~}g#@qEC zgE{aM{-CWIzPt4=)*fBYL*Q5HguQ+4%f-z5qq*-JOV3C8*5{s^ zej)epdi`hPcVEARt<7(Q|1qj-57_aI;Me```tl8s8@Dz6J^s7H7yl6u_P?X8iJge@y+qn5w=Vuaov)NB#Dx|AWp) zE=G^8`+w8@s(*LA`(`Ddu*K*7-;MI`j~o9V_!s88>*asGfG>u?ts36{vBoc&_s4wO ztdHjhlY(V_O}Nh`qe_C@meUjUVf!n6&TckYpw`XF1@G63UmH5d*CX&?U-dCl>sp+` zw0En6Uv>er6m#HdC)UsEb^Y*pGU?xk{y({f4wraeLi8(sJ>QPt6$P3Y2>D-VHbo8@ABje`}be57ikt#Kmkir?1?;p4&Q z2epTa{P?c>ug(NS`_K2$QF{<&YbmCu^>DUXP#;67!j&xq3Uik4GR(>+h*yK*=-_mz z1VL03XsMYu+Y7usZy#n)h&(J`_m^)IY788{)zE9tB5V`Q7H~)XMv7(TTkrd4kt+jx zxjijG107@xm%NHKj+(316l-=~9=PCVznj}W>6zDoeqD4l+H@h}+;GqKdRVrg)#2O< zyG<$Mft}DI)@I(8>VKj?oP_n7!IuXP%*`5f`wLD7D0rdOMViM z>QABsrMYfePTP1q(g!a$t!qUU350o1(IQ=nI=pDpGu5PxCA&2Q_~Dg{3RZm2mx?fi z4USza#Us5wCj{gEy_##rCFGgQWx~32aMjaMMEV!f=1gp7q)Lmd>ef9dyD|;pH77DQ zZshx&rr_ExHA};zs!?XiVG+OYv}Cx30E`&OzQ{Jf2ieyJosj3A80NUrviIAHpn-%oSmoC@S_`z?Ji9; z@z16Bctx5+yj!c8nY0}^S!jl2q@^j>wGJCaf<&Q9&}w!E{54b{lJrEgUYKZ69BB4W z_G

;h#Q#lB4|v>}2ON*BR!fPvv2%J+Ri0X}FJAQS$6z4$RkO{=gk(g-6RGsF{`oeco2pRbg&=FQ&h4(LO44s$44Sq@Mo}PP&s#GD|?n1h#G`$_3*UMN#8C48ureSBp_nd%d+bg)?Q#XODhuZr2|joMvRxwt+QtMO zWzGN^E+0@)(TPF|+Rkpyy$Gf_8bBL~q837$?#S;!-x+apK3*;Y4hiC(UG!4eO zw+fwKf*0Z*nR>4?B&X+S0u)DX_%Wsqc916Ms|WfSy@9ZWp-?`Ayp|94T+mriNSSyn z;t`(K*PfEMXt!Ej18=N5eAY<~3$O>p|7(V5E3S7#%-xnQgr+U!Jd=PbB&w4|D<~M0 z>S2=3JX;@7Q}T=RTuu7iEC5OC1qRs)MK$l5FQGR!53eH6Ie-`z=IaK^YU!umzTn1U zFGzG)NR*4mM*HqwAR&8;s7W} zwBQnJi&5hMUU*ao_UCu^s!BuQ0r}kRFai7ot2Pomv6$ds`k#5%0&zrV&Z=ecF8)N^ zq62n=<;^ev3w#c3fQ5j}FKW=Lnzdna=q;w4c!8C$XTc_ZBpR4a)`$v%6$0uX*KIz? zI4r20W!ry=6w6-*J&eWydKj1Afl&5QF6S|CPxeFqvxcD|nGaO@U|Yp;Haozz z7~vKH3;P1{{V@(dg!g8hrr}J{e%>{tsbxUE5ep1JF0v1UpTl^~$*XMzsP__a_rYMQ z^*K5>cz=vhipi5YZB`;CnO!1yR77AAF>(g0&^;d79l3hGSVTo`gel~7olP&|hoai% zGW)UPyZvf351K9qpaT8LQy9aNTBQHa&ZkINhys4`VGw)+WN%$`#(((vVwNR3_Zy)= zeNsf&ZE?d8URTQQdiW-MD`p-9|Kojdz2FgA9x6Z znBT(7AkSCX?9DpvaM~|*6%t00Ujx4q0z>3hEk0M-wyA)eEnf*5 zR`l8QKvTfR<`Wm`?BuQ-?fg$3O{4EfxncEYeVxLWhwHSV;F-jihZg!B@%cg)^Uor) zFOL(SD`g;s3ja8+E2VrHl|jiKaBn^ziJth9mJuH@e-FrF9Xg4J;q9hV_1q_d z+LWF=pTK(>d4EK|UH@qP<;z3OK8!%imVLox3@y$3FJP~u4$}-o&TE8*0w(Jc%R3Xo zQycCqw65k`bZs3mIgCg|9pO$t$#60o{HwAl-oRr^Ffnfb{BinQJtI^>x#`ifux#w~ zrZ-%bDCml}nR8IKtJXuqH?U&L0G!3FhP@8cSdR|}&-a5bF|#NhhCw-03m)D93r4}f zeT5)ZECKAHnTxWpZ|z2dQq2Bvx*obC4~{3YClL9ZOer%-?L<$nZF3sMrNV zB(s&z#-PdZ8KzKpxY9OlDL&6UTxH0pDdbZ2(8-b+zl|g?l}?g!Mex)s-302icQ?;> z_IXOKNfu!#Gs_6*a$9Fv@g|F1Ge3`6LT{&WsbJ4Fv~(n)*ho4XH3SV3rC@ znO-`fkN+;%tQxxvgoKl=MK)A*74(%VnG160R+5O zLC_W@glBPEEdLlmCx@lKY#e=MNYeCfRWD5}0 zb|v2OJBcqEqV!9%=bc(=A1}O+%W;8||H>&&*)i+7W3Oy>`?IBj4yw2Y0nlud%ESQ9 zwgge@1~Qv5Hsoh=rDJDMNq8qvoQV^*?Ba#@df<@H(jBgfle>FHt;V5@ccQ5ktD&fB zq-;RLWFy5Y;x!Nt^#YFj@_2*NL&6AxIQvTfqzIzTM_DVt;?y%@H;t8{)$G8PA^hor zSlWiJqCwxJfVUA3btGfRU=H794rEw>VtmW54|xa{e$9Z|AWh;moL-79I0N+_tiy6Z zYef@Oo)y~R{{3ylUhuGI*YU52Zjl)0JsQQ^Z*?heFGP1s04gUYnD~*-bbVi{xA?E$A z#i2ZG593oJfl&|=Y!0j9ElcNoW*-HiHW2CSj>#jHtw2)le)4_}VPhr3<5P*LL@CM} z0)s!E2AZxC)lUvqs&#VD+9VYTok5|Kg74V)$nXRn{ltx}Qn2^uD5-OjaPJ5;lENZx zJ?cM4eE~V-^|q1mC6Us@nhzGsGOU9srr-I13o+gmHG;p=2`2tw-$N@MNdB|i87vq? z5^|e~R8fwDf3~kVD5ikKk&;!_c|vexhzJjEv)Z-|bZ}|=KJN`4E0kJl(FIzcBLWXJ zh<0Zg6M~YVh7(&qGsqXB3|Yb1-k|EQ^X^}W56X8zs-+UfVp9b3p8ymrYus8ED3URp zNd9~x5a|9xDCuAbLA3M?d|Ju80FH_6G2_HQQ!dtP=Gz6A&dPvdzTw+YqJlDVr1;0+ zFZ_#8V#R)BL`h7BWKXg`D1gYOBSj8H_0Y8560B7AcER|U@+ z%`@l-bf+&gCW&}l;wfxi!v;#xxc9w5NZffLETJED6h>MyD4Qt{tHv7*L?SFY3}HY-GD(5M zly?Vyn--Z8SRf)4oJU{HSP;d#(9!Em<>e~|{$7!dMBUYaCd;JIF}J;0te?d?!dq!& z6wMQ8m9ksCGV}2>Do@0Xn2^*u%AA`2Ctg*(q2Pf<5%Hy$fP7{v3vHO+O{UI~sAIK}dEwyZXoj%LeT! za#Y?2?Nc=-556_Hj~uPL*yjt)BTYL>u7Q)6i}#)h`=`zUOkW;Zi(TaprXJl75?`+w za0AM?&7t?;ExFU;@5K(tT)7a@8Dl$s^ELvpfcp>-wEH$;`wvFbwA)eFqnB-8^3NAx z?xen6ci^YXezP&QOCEzf6#{-}!;})=i*fUY(e>H|vMlSGk6zW;9egW?yltUsToCeC zFBes%->RUD0^H{}HL_@#^gaae{6HR8s7J!vb+YhVe8Vi4ch@u6p03lE3)c~Q3N4XM zXp2wMo-R-x=HLB@>5N~3@2=&g1o!Wc)REDJ^;If2nJ?S=Q|j-tH;sLrF9!$dsGO11 zIJkzSJ%^i-49PPzM^g+*@(JhIfd_A)J>es{wazZHpSPZ_N&3Egtt_HgAzyE&t(sTs zhbbIgWfJf}*L@W%*pBNw*3`Ggxr48J%ps9`Y0Ep{l{Zr-b~ii1OJwd>WbIJ&`^Dh< zBd+!PZ7F~1BSnw<9=%^OUTSypRt>B;zT5;9%zz)a9(XOj~yE=92^Z4Kd_UL$~2OF_fwu=*kMp(}E<`OaU^-cflb?g0N zX+RjoB((VR_4qeMtaz>bBxY@>xcEY@58I#NpE%mu0mRk!_6W8OTf;ZQ9g*Yg@Gax@ z+Jd|X8dLk3;X0Uwx$hcQaypyKFWY^Qjddym6N}TG+}&PP`IWvs`@5zURDJ%qGoeey zl;PzR=w}iwU`|yYL+*pNh_69@GEs_+le#Ne8UBxECAm47heNDk)s}BN+}^DZ-Ct+1 zn@j7uEnQ>tw(DYEdNkV%8Qs1<+)df`zK^F(xT$04`$nDYU<*>^2)yyN0{Onq>&k>LPr|q#8KGv>(y#!6E3JeTF?)tX38z~ zK>o#)R)$b&e$S6R`x%qHhswS3zbTg3v~%rFXII`a(l})Nlr<$<5rxfW3bECkHHDz1 z%d-U9-?!Rgv&KS^DKPb@Alm308cZy0ZDX?fEV%Iz>4ubUKl~@8i0%h;!4^hlq_#Rl z&U|VH>>WXmyQYS8a97)TJKY=8vb$c)f-nGlRF}Rl9asF-e4k69Z}L}mEqqB~>4aXs zw%S>quZ5A{HvznTZ>CmY2e7zHzhIFC6RBs<89&6=`CFB?sr+Pdk*sfLaoV+}LC(@C-m)Ep;VnHVZH8*(+_|Y?5H72N$BQ2%HhkhS^Cn8%p zn{P*n@2wf_awe2XNUD`)9&l@X9&UV0kza#&@gAGe1x)y0>Ooed*eg2NGUSn-4u-+(-RU5_Ld zpPB8+!K~uMmY1m-iQjd!?|hZSsUr6C`6%-RqY^TX8jF_TME&K4=d;!nT0&os&(F^f z)^1*GSX&MN8h)>#J+BA)pX)s@7jA?#mq5|X5(Qq15<{*Ou8g$3bQT_N9v5=++L@6{ zXPYn~RFA&PoxO*F&?j|u#8|>h6hGVn=E}VKAHsQgcYvIX5@Ug}xg?j2rqxq{_0V3( z;<5P%Zt6}oD5a`)m8k|Bw}!eM@RpOqOW%u^H=m>srgLQplU;ZC@vxiG*_%TT0dIRE zI*}UMy=7>UQqdGzZDThBp2m2#tQi}@mWP&#!lgaWXtR#D zkqh$C{7~iSF%!>DPCm^^-3?|_G&4%sKIvB8-bzH^Tdy|%zm0zkE3r>{Xy8<8ZG}T? zH~0HXm5Kh)E_LO%8n3;Xw2mZE-cQ06ExmU9Kq$}-Tm3rUuWvp&5P=gT8-|2tt6ic@=cU|$w7tEd z_j@BIEV>Y^&R0&T$Ia87N7pv3E6|>A_mAJ+uAiq5k&%(cE6d@nIObTt zG4@6zs5?{W{sOEGTq85`k?jd-OryL;>qIa~5iqc^p-)s%+zne}6U&0k%>^h7c^>2L zFUq)*wr2!qpszS!x_o|X@Y|(4#R56jKL|=n^4IrH+#@jFsJN6i){HDVgi-J4cSkZi z)+b^K85nBq?Ch^Nd^H3{K!Xnq&IK;SQdK~`7_;$n2^mUS$W;|vJ9^gL(`pcg)Web0 z(iAY`UopqYE$%m%v@WN9%Iu*X_FgW+{&en@?Bon)upOm~AK7CJpZzJtw5q*$<+<OAPi`K~VgaKR2v>*@d~C zE1b#V4GnPk!?xlovzwqi5F0pB%JICSzdQLESUd3tc-y?-pEOA3iN3_7{b zM!ky)02zP?Vot;nRMB-WYaFvMNT<$eLh6E+m)E@ZmR0aOeaUx6GdLjawnrooUij0) z|IA2U7r&2=_1g){?s{BKPA*1XZng+lm{qskp02h4(cZ5CI8aYS<&vhZbX zf`k9%CHL#Sl;8L6JL5)D)q9n9bD&Af{u=!Xh#Pyq4B5_>njf1l*C(bpU=kAY{e#KY z;O(y+dnM%aL)fbon!ovCWPYAi_xI_1cy$fMBBOAh5lfL#lF7j{Fy@JE5}aGFH_g$D zGbb;1a{dK}4uo$?5%7md%sz-h6yA8o*b4MjzZ7dA;<$zwzVqVt6{h&@sS=;SV0S}1 zASUFO42|4;_S(rA;m6v{=lhZ0W1_u&?k;@!>V7`3TUh?>O@75~q8V|+{}0Rg(A>VfZSw!S;YZSvVL>*7lqq8NrLcz4`zMlJ! z=@*06jcrt+8=b7p1Sz2RU8`1&RdK%Itq}~r2~Q<=0Ow-&u20{1CFyife?!;j_4@P8 z?P@#lA1#pYFpFvPSB~ah^WksS0BASg8x-Fz&g>4HT*%C~%Ghi3O`qqeE%zf~ih+2i z0fRin_-s3(%>``PS+AcA+J^rJRzRu0FB_%Bojsd;7O3@iFfj1I$ z5#1ou@dKJ;c7B*OP;b*MFrz`Tb3n8WOi3(H6Aj@fupnK3{s?ayM(T2hCLa=3Xv`=e zDduo?f{Xsei&N%zHx%@>N2 zfeZ*MU}5(VF+cfb4ncl6mYn1b{qqzOR{9ZrbZd`91v{Cw;n z7ipf%nSrJ+QqzYNEQRqQT^2n1fTVyBM7aZXblM&|*rseau8TjwvjPlB!8;207CZ)e zwbj^=PP9X#Y9&9I=zeuF7M+n$LG$NlYI2i^;m516RioRI%k7CG8s*@)sU6D_?+>O0 z<$WY7Z7ru)i7S<@suqUJ3qmFELA<%T+dX`~yAS-Ets<=d?n7lOt!j%=Z7xRU>z|yv zlQ%#8*_*L!9~;naW-#-s`}g}iT7UnWRU00J!jBq59gGxd;5gdg$d%N&oY^+Fu(qXZ z6=@A?e(yiu#D{IrWQX0=?!`!Z_3hbgAZR07Zrj8Qt27Pn{lwoT zoLKUPDHyIjva`aO55-o1205;Le|Pm**N%61&lV>m+0cq2 z39595YXI!jH}5~)JTC8iyrt4@YdDynU?uhP$FHWy5fNauIy_u{Tt@Nz1B^u&yJgl& zil|y*p^g+@6^jZzB}uLGuz1vmeZs+a@t~C`k~ZH5d6g7x6_nOMZTP{|7R}kQE1A== zZA0fOrrY4~unfGb`=rg*eg(~1LL;H=FJ4Dq;A; zlGDYku}o2bo@59ss68_3Rw-e1Y4XGM^=|vPyuDlP%a&K|(QF7+$YO+HXr%-Vzpg^r zqnC{?=XsST4VMS7eTKXJW{q79)Jak!sdcM~yd>$E8VpMdu~X9o3-hFHL<3q=QHDK4 zR5ej3YpIMHMdmmIohtB`$wC==o89*AcDda@+`|sC+XTCNKW}xpF`!1BERN5iYCSnS zS{$EFRoFIRx7=)Y2Ux*YK5pVs7(xl;?V~;PCcamzqUcO#XD?q}oWi1aJhC-aOrXb3 z!__9(C(t3MyDg@yBsu!!BtfxV$57zWC??yOIP`0`atm`kj`J8jWhtyMl5XpYGa8VK z5T?H_S+>;VNwivTcXtnKZ@-Iz)h5Ptt{hc~lNmNom=%nuA_Gh53GBP`G5j9laG=B9 zJX~GA{q7Hc`0d-vo7=}jBXIg;Jf9DtOBkb}elZ(DY2}VamMln04RZ{3Mx+2CN~)@x zIxk_1EfZ|W|?=(e&zVm|o!eNH2GNPWN+o^0Cn5MSt!jh$82r*YH z3a^-$KBmcS0^8f&<)`aMFN`t{@m{#F!jf#lE2yd_i;$894GYx1cp5uE0j5J%+g-k1JGvE!TVBFK|4;){`C278>Bfh95{yk zhY11iK*umKR0X#bCyH!2_>DTxQ#^&q@`j^U9+vwoiu0lsb$AAjs2_M;NQ!KdK;zv9ULZhqh=eZ>if>*upq@dO_jqU%w*aqo(20sRJzJIe zB0eB(3~$+x*|7H$yzZ{+j)9wFs4af*>Cp+iuo-zx@j^;M+dOKSSp)BRsK#VL&CnM? z*PK)WTDnipk*`G1DGRT5@tPKMdr{1RLgPKw{dc!_xAz;gb|P8{7l|R-1qc9uUPP1$ zGng@Ep+m2*yn`8f`>>6m=Tz}ZkF=TWyU;aucSYQC4Aw)bMpn`6g>s9Mp*wpn zDp3>`myPDiF4Tn74)8&2hK|}pzerBr&KX{?a4=Xs(RfKujFZWq%*tJOy8>lHiKMp0 z9u-zQ{I1ZFz(hnPdDdkxU@uZLP_dwrjh?DbOOyL78JUs}V2+@G1Wm9c6UAT9p-@yH zk%mz^#Ssy%!FCGyKytQX!~Ib&E3q3uVw z9-4m&yw_qW93hH*SwK(c%uh;=Zu(pTgOTiA>#}w5-|*uMm}bzhY?knfA2xV7-V)Wm zrSLNn+RC~!UEtBy2(S9lHozgFZKkgG zP<0|yGp`nd|Du64%1M;$Nm zabS@iQqw5(=?*H(?CGM$&?ijKX-5_eia4aS5LxOnLr^_V00NRMV=yNPHt=##AOSXy z0k1onAn?vM$k`AW!eKIYV7V@0ygTAl3uyuH)^L_-&`dn3qZ3+su^(L1_h_FI#w1Fu z?DPSMr=YLWk{x)vf+p>fj_{(qm5c$VwP2slv2-wn8csAEVaJKVZ6Omsczc!)&!U$q zif=(}KvIdiLwJXiITSPGOh(uphMrs9e59BJyp1P9BVx&DUD>mf2RzY0kM|5AUnqXp z>HgayMS#kVexT8KxVilF>CCj0!0PbY!tcb0v9M@LZX3*iy98 zM@1{MgQSV03uWw+J_?D6?CTPho`hL#2gs+tni(6=Y{2C8%vRr`#0lpk0TGug{7Z39 zq#y%Kt0OzjxJS1P$5VtM(lIyJbonooB99M=9nuilBA~n+mi${5F7yE@&-z(| zRtB_eAW9JV55%(}I|zn~u)G4cymqHMV>)9P!rUn1{RaEGJv$shX{SQc7(6fOJON*F zfLJIN6K^nK){|r2BkCO~b(nLe3)8}ZgV>4g4Z!rMQsibrw-FZ&-y16!x^KH-t0<2% zc#4N5sH!10W0!z|P)ST9tAC zzM~qkSfoDnsY@BFx z%~NMo4)T}b=_wWr^f*yPs1WVuDX>cIVoW;XF=Ne==n!clY?lsV7L?oIk?w#l6KFYe z2c5i)WeH}TqL0c)EL~YeqA=(Wvn%}|+m|`l@LZK>J4}e(zc7YB5h-qs5WbAIL!Y0j zFmFW| z5_E|ue#ix8$Mx)-o<)>QX~x~Qggxx83fGdgm@ z;y`JFQlLivdPl^Sf=P@z!G?wrH4iwu*iM^}vscC8GbE#AM^RFhF0_g*@CZpD@Efa$ zG_B79Ygi-^I*RpP?H;qtY?dj^^pPyD7hcr}e&Kf}y)47|(l2(#k}$6<#TgqEZfjdz zok$T?NIpV#aoq9en5eUhn8q9Df>3gZZJN(uCFQaM?78bLqqgCa%dyBz(pe+p4H44# zzN(I?CXnbd>}nHaAak<809{k8&>2&U#UbWBSc`q0J|<7-ZvpXM6AKu;Mk75&k&qIz zi*UrE7qM=5u|_y-gNXBZk4J|Z-EPIvd&9?1H**vm%EmJrcG&RYI!7UzBHiTS1>o)w zb@5+aZWblE>0R2UMvnL=5iyBvDH#(9#?ZrKQ;2Ym8IhOSKw}BpUDz`dVUwYu!-i94 zCSj9V=Z)~|3Ys_snkSw7Ut~d+ta2oWJDql#SSBI~7Wz05aTkQbQEN7sP0?xb8GL}NgAa|tGmHRU+nlF8xVOc*3le3Ja z#L{UXy>I#?n1wJqIe&?Ql98qGWx|d&f-ZNQTp2Y>9-}g(PZ_gl-~58CVycO>+n*)o z2=6kru&;aKzaU2Z@Aso77LvIMsg`81pEDR|7QF#D=Y#*i! zfHxv*?gUTaupRV_%5TmqN)=fF&-D-9!c+cj#ZC~K6=Wm!r70vu`BfavNukG z_mn;xJJ6t(kM++iVYw@HXmmF)C&x2n{gc$8dthIT#UxtqWZ`6=s#?BFC$!9tOHPBc zOW;l!Y=APmD)I#J?DA9;=#G9egONIO4Y7*%>xcXMht-ZY*)M6NeJUT_nYS!w7EcVO zOa?(_7(yL(hJ=C;11zJgt@`|KT#@n6bVLm!Av;4>T(I_E(%9JnTJZ6UGXgu^#3Px* zWpF}VJ@D8XIrJv+42h2*3Vj*@u>lfNphzq`S`s@odmkvr9zX}cCrStlUW@yDY^sv+ zwb$6;!M8#$d@m_EIX+svcW`+U8LA{q%snUDp|4xnERumn7F+vJ+g9`qtU(Xl$LnInl(!ol|(n@n7Gi#pOzHieFw| zOtSe`hHx<{QuS-`ll)SAdnGJh=f7>_=;*bO%S-#s>Q3eO{r~(Ax*L7EjA!Srb=v$Y z{#x~ewz{g79(epEv*d`_YeQyg5q$a9a-A-SLkHL3Z}D zfANj76E#ZJ-GS%Vr*pJ{hRoeA$>J0rOCJFUw>nYt|^D5Q{Q{e_IHhV_-gpJ z_|Y3(oeo={%hsFk?&DAYu)M$YOqFkz%hEkkSAKF^4|dyuRKHY{pZ&|P7iOwn9NV&9 z`OVmN)E#H!`^p|w!oY|nOSYQdzLn-q8jF0qE$p-i->)X4`@NZ6W%Uhz;YQvrbQfBj z@H!V-qlydeczb?fzk1Oqi_>FUXxF~d?ADjRx|hu&A2_Py8j1a~jiZNkp892&?yk6n zz5K`xhZl2cI&JtW8OXtE8^X>#aX3*M@S!j?6lFBC9lYx1nLE>NX$AVQZ-epBo=f#eHF#O{~}3NYaW{%090Z zCB0kmR(^fZM*OawO`W;EYmbyvH}ld}@7MB(zu8GuJ194$k$Zww2QnW?LhLnC60H*Z zXfaeJ`Q*jGo@;T{?DwSz6H|B1;gQ-ZjSeAGdx>g^(1zK^R#X`ICgEj1`Fz)MWf{WuibyBe`FD8~ zi9*inO*%N4PETepj@(mTKZ9{w`RlYgY`k1GI62w!MzvnY<>4W$wvjHhie#x(AsdQ_ z!KqLh&Rii)rLvLYFbh&akWyZ*tL*{4uQVNsoO3)R8%|TXFy+&z6})9@)v0dl z$O|u2YchmM?l^T0ue7>i9>Sc5Rde8IwKI`9=sJ^1kb5@TCRAHMvTXV2u>> zxRJ}0Z!<*eH(4nlQ(EMTR;UX;IdEE?8Y5d!M}wv^U6h81_5Lx84x6CLF$%2Ul3iA( z2_CT4MZp=Sqz{LqiNRYF*wigPYKql9L5F=IKtUkra&hpZIC!|-BxT8)sL6F^L&>lO zeK;^JnHP~+md7bp_@V?$wb16_{;<3LyxIjYeh1K29G|+=sWmVS5zV~*!}0)SR4a+H z>*}p2V<=RTEPWon8#KPtiESe04ZDyQo<6k7ahaEV(`tBRRu*NvjxY_P;4yN9goe<< zV5pM)C3pcCB>+9v+-5QS{bJ>AGedOBHiDRIDR+XD5gIYlmMazVW zq0A5d_I~Zbe@0D}wJJt~8B&p!c&RN~njjfEpO&)Jv@)NU9FN@q?2L@bo#rUU5RhOD zGXk1rZD5;XD@yRHYp6sOL9;Y$HDEvS)&VjI8Rkjlvl_!B;)WOMJVXhi$ji2)l$@@h znVqh;s{-x$P?`zwX5epymtR6rglFL^KP?Jj;F^PhY1^>thH<#V%mgS$j1kH>j%K6j zKsGF?j(0xvX<>&;J2`}=zYRV$K1H;0r&=H2PV3Q)$W!n^?f7qi= zH-h)xVpIv&^2kWTgC>|GHJ^tCl-ac?wT%LmmTgFF1+5gNr53fMYL+P}hKxl1s)hdv zw(gc^u08?X)pc1W*mZ6m*Flk_oC>9{^MA1SUeA_fS9)K1pT}QcrmGv>4L1fPhl&Y? z{$V}nQ3^#ULJvcV5IGnCjYj*j*PVO(N$*qZTYKlN28a-Y3OSCd1_M)lO`go1doS~? z-#4A2nuC^C$aD4dY$&ge^QI_a>C|NL_OM&hv)-psQg(fBdEV$`K4-mM0RB3i(+cu7 zFw@f{PZA2O@;n9_7Y2<58qWnd&j7qkf^czuvY3pg6I0QY3KgCmx-@Y{k+7ngmI0Q7 zfdPH`QHOn&ca#~^)lmv$>vhE+qrr?QY!XZZ0ah;tE03svQaV)B6u+4C=#f={RYqwi z?UMBLFzf4@I^YmMz0p@_EdHZMeWdRPGz|QyGH(^Mgeg5UF+y3K9p zF_gAQ*&z;jBAVxo!d+Boz9%6He8^i-C!%`*P8sS4$j;I%rXNzXzM|zib;ZOg&Em-d zh(}#dVzoOsY63M}LVdx7QZA$>hXX=?+=N=CG#02St}D7c#jkO1v#qh0PzVa59;(bo zwAqhnlJ^WwFofl=9PGA)l$cgwFO&i7FOZ^N4$rOzjdfVHiNZ9>daWkhh_E&^MwtOU zlU1U5k5(pfDK0J1J`1FRCcTSM0_Jpyi}bXMi~zpy0lGr8%~lS;k1KR7{i8yG+02~# zcdF>;Ef&(vPdcT8?ZzH*fZnl^_OKJ#J``-N1hD6n+yLyyB6Zm?=fGR!y(SZ58qSDg zHm>8OI?1K~IU^F-VH}!VR%>V?Y#;NdF#9rEOSSeP5jB18qzSYD8tjgPmm}Z`A}ck- zka#O9*tp?zkv-mYL&dPoS`=!mfSK_OXVWx8wp^J;T{qGuTKdB=P)_GkL&gCAIB(g3 zPGpcMtke=VP@>1@($#p5@FhFKLuQMT22bfju?(5|WG))TbdbiPJR*=_C_K`h#s+eU zAgA};03YaN)fk&>%N;)S&jjvG&hs`bMn~x)609&AG8cxmab1O5Zk(k8sWz0nWqQS# zISY=DLKFieA``&w?pKFgacAdGo)Qx^V<@fhteGg> z_ELZ?m}!sBXQ=?qF)p34h%7#k=4YrJqA#nMLxC}1Lks2oA5>I$d>-;|AtZ`X=%~4Z zEiA^6urh}RviLIRG@OfG+{6YlrR9NsQE5uVECZgpDqYn@X+Vf83<-@e4Pibq;8h2+ zJ1&I@JzXLHM&lNWgz95KHo|_q5g5LKRfiH!!zv`!f=FjH!9I~HGt?P*x=D=nOIC-d z^)gFD)(}~}5nv^cL)4OGJBW=MP=i2=He`#%lC9?$;Ya%u-CA!pwr!|v?^}P?t`wsNzO8&{ob|fv^zJquPt`bXgNbX8lx1^b zQDmncJB^k>s_3=R)6QFLw(B&y*;)GfpI$beR%vc`phVoLrWZk{PR}o9YO0_3)?#kj z;cQwT?Zw1OR{dOWoMv|{4aIVrik53ysQJUDy8mt;Z(Mz)Jb5->Jh`0MBhN5P#iCr5 z!gYw@AS(3@3ae{7ERsIkln<{Pqpk8oGn$S@^U(4pj@j<=HcvV?G~C(Do1IQEaqrH; zj#7#uE|nzNzg>3S!%?mFb+fH~ogQ^=2S!bsk)@4imenSZDb=Q#wccbp3PzTHHlxsW zb!?mcCZPbOERUU67ZqK*rc$iYrg~@{A1ampM@v}_EzFA(Plv9vtPca(Lq zk4yBi!N#6?j!Wm2LEB(TzcEu-HfAbDV5E6pu5a%tYufCiO6$^^_Ah%fp9Q_*JCxwj z$xW}L6HXVw#J4?*-h%8X|M}Z z^}fiPt`)deMWGa?EGWioqC<4d=&iBB3FSa$XmloJJZaUzGP|b_1RU0Q0wS*oLNUc+ zb-GFEn!2>78=xA7O^>CnDJN*_IHknMa5U2yjXm9fa-0Ga3T=_F_MKrir4{Hc1=X~V z95)oLS4GnqHt0x(LbsyU=_#9ajgB|=6d0FL4&YFptE77XY&bf_m@EB+3hrhWCX`Sq zrhh3#)ABeIka$g@SqfOoDD~G39p#L#`-gq4-N_Ah)LbW1FTV zwZXz&r8Acq;Wg4x`i}3pI5F^j7v*>=NE^A1NLc6u zpiu5*p|(R5U8WT`2H?>*qr=if_6S9au5z529}gKY9Tjirdl3X6Q#CtzruT54pmt61uC6hf7F~UMWb}Gzcnd8IKG2;7CA<-*ub@pA z%nQ>oA?&kVkcPf8^OD)AtrtvPdKI-cuK>?Rz6MMb%Yht5Z6my6R4^V&lKWxPKWU0TTpP7ZV1M83cBd+#~dktg9(5mohZ=1Drmcxbmph=;lM%$ zb}a%@ANT_{VhzC4R+)Uo%~x())e!6ops;AUvTZbi6A;vNiHsAbQ@SYsyWmb2|kWPyYq3dT1&0G$aRv4hPmMt6mTW)g{x!+g486qWx=%2D{8T z`d;+Wd8V-tL$`R!y&^PJjL7Dj10bF~pr2UY#tmUUc%eD~x{tAp8E1#IKbnrqGA>_e zrjR-^x0iOgmhU|`f4K`Pq;;&7MB<1H5d>qF7vww^3bwq~Rw-gux)G!3y5Wq~974S0_UT|UpoOxokxB&K&=6?sCi*=`r5fcHpU@EcjAf`N-UCN>E z6*3HdgUx~ErK-|q8U6R85CWrbjrON0zDDF?ouH2+oEP0w?(mn=Dou=}PN7T`m};(I z@rHNfHo=8apBNO`3wgoQs0x(iVRf_vYQ1udNv zHZ+oy*9&x@$0?=gSE7i(W5WC*F-!f(>O85zwb-Zu7cZU_iwg$Kp_F^co*?VDa54$? zD#Nd!ssJZ~rR9ixg{A`OZY-LzVv?2xu!b)D!^KCIMsLz=OOX!cWhoP3N!W6SoTrw2 zGa(`v{Irnqa_ira)?G-h9zD3k!WMd=T!;aL6n4b8I9(c6XX5>4OD{3B&g5=Z88%WA z33EB2Xs}ptBTUsEiE!zVHV!vYDBD=9C+4CRuFHs#qUw?T*2^^|)}%H_*;G~9y4j{G zIrGB6uaXww!#{U8J!DE*D?xHx@@kllC;RC9$_!UzNfn<^vm2NxlFsIWZrVB{mFKl==`cG7fsGL|w|)uoCxEI0IPLdtIJ< z<^mij2RX331PnA~xuJwZ*5x2678|D`D2tBIf;*2Fk(mA9s#zoiam_$^7vxPt46*ZB z@*Zc0Y9|`|M^=Y$m4;=Q@)Jl^KFj05P-G=d%L+F4kvG10JAA;i4?8 zn9|cA6*vW<){r_Vxvr$=T~!Gg(fg;$6Y%dvsY2ewf zGMwFFXK0uZXb2!BOF4vNJ^my-1R}KvT{_hktP!bPvZ#eXvZRExhab`6@ur-4Z9i$jWRx9=MO>S6e390iekUVDjAfRt=xtN z&qPJiBw2$7?P(YY^5-xH*2{(8NhG5ffsqcGXe<@tz+)1oEuiSq#G>Nf5??3ZYEj%4 zpIC}hI73mv&BSTGR1akMPx zr@ipn5D_SgZ+vg~T8?kTSFoTrmfBCvc$`RZLdnSn�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

qm=?wrUfqW==w26iX3OZB_#(?S8GEJW))R z$usv6VPV;rohJs44S{9b_N;Nf&#DioBz!H-GD`F}P>O8Pi20g#!hPXLaPnf)0hLza zPf0OuW1joBQoi=-hDMs4;yovBP8pKymAS?zrz4KF_B8`TgIXrf)ITY=%H#F9SUIsl zP`kM)CT*N0H@c(DC@5D_EwVID@Sf5>%c`UEGYIT;r@g|ihio8%A00&v9FA7n(T!LC z7CZCxha@Buug?!`48wsHF%7Kpefuto(j%Nv{UHsv^|mD0XcL9eVFZ82Zy9lU?X`3) z@aS!_HB!W_+=o?_i?q_7%5V#uz zhn7AyYHy(s3b#r+m@YRRz}@o6NvYDH7xeS2UNrvYv<|zUl{xD}QK5WWP|U_4Edmpg1PPQ;B&pXOT=;QmbagA@WXOMa6~;Ud7Q(g^ zOhp7>$_J=y6XI=4D`35mj!I|j1CTbnZ(toK8*2+ zO1k+L`H?~oX${ZVudQXWF;bY#u*4Q;C>A{FnGz?VF4);mXHAQ{8-k+f%96_8YSK<# zUM5^JFk!svaG!JJ(A(kC^WELnz;sP5Eb28C#9?-V?R`xPCAXbpStpcl(1>)S*l(=; zYNJWB79DClgA$mlM}lE`M^vtCHk^g_Ll(IRGDC?7BB~0q9b(A_s}EYl?m{{Prf4DMYK#VHD4hqo$)Xg3TJrQvzb?Z$MPLW1MyHq5;;h z%&jVkiisqukJI=0kOq zvDMYYZ>>-%&%OC2Ukzb{KbtPj5{b7t;+Qt9@=sZEODrx_DC0MxMO^bF#F>EauEWe` z0yG=Sqtc&w-UF7ixnF);%Z(8;Uv5HEp<~(Vm^}(kuNC%_4aOfd#2^IIDz#~*+!I89>nmb@!6e8&5-oWZd_?9~oQn*xl*w?6u5$a70klM_T_0P(9eRUG< zBY|%Hy}s7!ruqiKUl9YT?WffCYG%dcm#ENqXHWsY6j8>Xi1*ClJ8mxUp0Ez})m$Ge zgt;iGW~EI0dbw>(_11UKF)2DJfgh-!^t%p|eF@-XcBg zttx8THl&!+=nN>S%Qafd%uj|Vk3{VtI?6+td3|_R61^KC$>Ui9c5C{f)c=2|3zqJp|NWIPg~ZHl;>WfM10*dNtg8gowRcEGWRBi|P3UXsibJp<$rS)p?m z;UUmgr7bBv!$SB;7lX5l{q~PX!AL%})|0or&9Th3plq z7m%$;BaXST{*7b(IiP@lHpo~`6J(df?GK%32$YT7zug(@ZhnqKb#Kg5c6a)20dB7aVuec*(39lY3 ztHx0XNa}xV^+p^mXMi+54~+vRe%i|K37`P9fEPj93=rzzke#@0ETQjYSicGyKuOK| z{(E>(W5AC3496gmw@q4@gQh}eR+%-8r%MX()~af1N~-rM@g#=W`*$O=XFZQWlc##8 z>JgD0HCr&ygⅇ;uEGJO1_>8Lx_}7E^!s-+mj+$+OpNRPV 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 Date: Wed, 29 Jun 2022 00:49:11 -0500 Subject: [PATCH 148/580] YM2612: implement DualPCM macros --- src/engine/platform/genesis.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index fa06a699..e674d9ba 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -342,13 +342,17 @@ void DivPlatformGenesis::acquire(short* bufL, short* bufR, size_t start, size_t } void DivPlatformGenesis::tick(bool sysTick) { - for (int i=0; i<6; i++) { + for (int i=0; i<7; i++) { if (i==2 && extMode) continue; chan[i].std.next(); if (chan[i].std.vol.had) { - chan[i].outVol=VOL_SCALE_LOG(chan[i].vol,MIN(127,chan[i].std.vol.val),127); - for (int j=0; j<4; j++) { + int inVol=chan[i].std.vol.val; + if (chan[i].furnaceDac && inVol>0) { + inVol+=63; + } + chan[i].outVol=VOL_SCALE_LOG(chan[i].vol,MIN(127,inVol),127); + if (i<6) for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; if (isMuted[i]) { @@ -381,7 +385,9 @@ void DivPlatformGenesis::tick(bool sysTick) { if (chan[i].std.panL.had) { chan[i].pan=chan[i].std.panL.val&3; - rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + if (i<6) { + rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + } } if (chan[i].std.pitch.had) { @@ -394,6 +400,8 @@ void DivPlatformGenesis::tick(bool sysTick) { chan[i].freqChanged=true; } + if (i>=6) continue; + if (chan[i].std.phaseReset.had) { if (chan[i].std.phaseReset.val==1 && chan[i].active) { chan[i].keyOn=true; @@ -634,9 +642,20 @@ int DivPlatformGenesis::dispatch(DivCommand c) { chan[c.chan].dacPeriod=0; if (c.value!=DIV_NOTE_NULL) { chan[c.chan].baseFreq=parent->calcBaseFreq(1,1,c.value,false); + chan[c.chan].portaPause=false; + chan[c.chan].note=c.value; chan[c.chan].freqChanged=true; } chan[c.chan].furnaceDac=true; + + chan[c.chan].macroInit(ins); + if (!chan[c.chan].std.vol.will) { + chan[c.chan].outVol=chan[c.chan].vol; + } + + // ??? + //chan[c.chan].keyOn=true; + chan[c.chan].active=true; } else { // compatible mode if (c.value!=DIV_NOTE_NULL) { chan[c.chan].note=c.value; From 477674400c42393804de7cf453e97a64174193a2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 00:55:05 -0500 Subject: [PATCH 149/580] YM2612: whoops! --- src/engine/platform/genesis.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index e674d9ba..afd59b33 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -342,7 +342,7 @@ void DivPlatformGenesis::acquire(short* bufL, short* bufR, size_t start, size_t } void DivPlatformGenesis::tick(bool sysTick) { - for (int i=0; i<7; i++) { + for (int i=0; i<(softPCM?7:6); i++) { if (i==2 && extMode) continue; chan[i].std.next(); From 24c726a7ca53cada9c1b43eca7ef0f2f29b58eda Mon Sep 17 00:00:00 2001 From: TheDuccinator <66538032+TheDuccinator@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:57:52 -0700 Subject: [PATCH 150/580] Add new demo song --- demos/Contraduct Design OPL3 Cover.fur | Bin 0 -> 3015 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Contraduct Design OPL3 Cover.fur diff --git a/demos/Contraduct Design OPL3 Cover.fur b/demos/Contraduct Design OPL3 Cover.fur new file mode 100644 index 0000000000000000000000000000000000000000..750fb2d32ea9e64060aed077fac04d867ab2fc1f GIT binary patch literal 3015 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 ISE)|;FZAgDqW}N^ literal 0 HcmV?d00001 From 90481cc4603fadf3abb9990aeaec852f36a4df40 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 01:06:31 -0500 Subject: [PATCH 151/580] OPL: fix drums mode per-channel osc --- src/engine/platform/opl.cpp | 41 ++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index fa1009b0..af011622 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -299,18 +299,39 @@ void DivPlatformOPL::acquire_nuked(short* bufL, short* bufR, size_t start, size_ } } - for (int i=0; idata[oscBuf[i]->needle]=0; - if (fm.channel[i].out[0]!=NULL) { - oscBuf[i]->data[oscBuf[i]->needle]+=*fm.channel[ch].out[0]; + if (fm.rhy&0x20) { + for (int i=0; idata[oscBuf[i]->needle]=0; + if (fm.channel[i].out[0]!=NULL) { + oscBuf[i]->data[oscBuf[i]->needle]+=*fm.channel[ch].out[0]; + } + if (fm.channel[i].out[1]!=NULL) { + oscBuf[i]->data[oscBuf[i]->needle]+=*fm.channel[ch].out[1]; + } + oscBuf[i]->data[oscBuf[i]->needle]<<=1; + oscBuf[i]->needle++; } - if (fm.channel[i].out[1]!=NULL) { - oscBuf[i]->data[oscBuf[i]->needle]+=*fm.channel[ch].out[1]; + // special + oscBuf[melodicChans+1]->data[oscBuf[melodicChans+1]->needle++]=fm.slot[16].out*6; + oscBuf[melodicChans+2]->data[oscBuf[melodicChans+2]->needle++]=fm.slot[14].out*6; + oscBuf[melodicChans+3]->data[oscBuf[melodicChans+3]->needle++]=fm.slot[17].out*6; + oscBuf[melodicChans+4]->data[oscBuf[melodicChans+4]->needle++]=fm.slot[13].out*6; + } else { + for (int i=0; idata[oscBuf[i]->needle]=0; + if (fm.channel[i].out[0]!=NULL) { + oscBuf[i]->data[oscBuf[i]->needle]+=*fm.channel[ch].out[0]; + } + if (fm.channel[i].out[1]!=NULL) { + oscBuf[i]->data[oscBuf[i]->needle]+=*fm.channel[ch].out[1]; + } + oscBuf[i]->data[oscBuf[i]->needle]<<=1; + oscBuf[i]->needle++; } - oscBuf[i]->data[oscBuf[i]->needle]<<=1; - oscBuf[i]->needle++; } if (os[0]<-32768) os[0]=-32768; From 4dfd413ead63fbe4b93305cd37670bb829772322 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 01:32:52 -0500 Subject: [PATCH 152/580] OPLL: fix per-channel osc, part 1 --- extern/Nuked-OPLL/opll.c | 4 ++++ extern/Nuked-OPLL/opll.h | 2 ++ src/engine/platform/opll.cpp | 16 ++++++++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/extern/Nuked-OPLL/opll.c b/extern/Nuked-OPLL/opll.c index ecff69fd..bd59709a 100644 --- a/extern/Nuked-OPLL/opll.c +++ b/extern/Nuked-OPLL/opll.c @@ -1019,6 +1019,10 @@ static void OPLL_Operator(opll_t *chip) { } chip->ch_out = ismod1 ? routput : (output>>3); + + if (!ismod1) { + chip->output_ch[(chip->cycles+1)%9] = chip->ch_out; + } } static void OPLL_DoRhythm(opll_t *chip) { diff --git a/extern/Nuked-OPLL/opll.h b/extern/Nuked-OPLL/opll.h index 85c721a7..98113939 100644 --- a/extern/Nuked-OPLL/opll.h +++ b/extern/Nuked-OPLL/opll.h @@ -191,6 +191,8 @@ typedef struct { int16_t output_m; int16_t output_r; + int16_t output_ch[9]; + } opll_t; const opll_patch_t* OPLL_GetPatchROM(uint32_t chip_type); diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 6d77ca1f..2549c96f 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -97,6 +97,10 @@ const unsigned char drumSlot[11]={ 0, 0, 0, 0, 0, 0, 6, 7, 8, 8, 7 }; +const unsigned char visMapOPLL[9]={ + 6, 7, 8, 3, 4, 5, 0, 1, 2 +}; + void DivPlatformOPLL::acquire_nuked(short* bufL, short* bufR, size_t start, size_t len) { static int o[2]; static int os; @@ -124,10 +128,18 @@ void DivPlatformOPLL::acquire_nuked(short* bufL, short* bufR, size_t start, size OPLL_Clock(&fm,o); unsigned char nextOut=cycleMapOPLL[fm.cycles]; if ((nextOut>=6 && properDrums) || !isMuted[nextOut]) { - oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=(o[0]+o[1])<<6; os+=(o[0]+o[1]); + if (vrc7) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=(o[0]+o[1])<<6; } else { - oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=0; + if (vrc7) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=0; + } + } + if (!vrc7) for (int i=0; i<9; i++) { + unsigned char ch=visMapOPLL[i]; + if ((i>=6 && properDrums) || !isMuted[ch]) { + oscBuf[ch]->data[oscBuf[ch]->needle++]=(fm.output_ch[i])<<6; + } else { + oscBuf[ch]->data[oscBuf[ch]->needle++]=0; } } os*=50; From 9fee9fa36394895a25ddb53a848c7db83907f7bd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 01:37:12 -0500 Subject: [PATCH 153/580] GUI: run per-chan osc on instrument preview --- src/engine/engine.cpp | 4 ++++ src/engine/engine.h | 3 +++ src/gui/chanOsc.cpp | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 47833ca9..e68208ea 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1743,6 +1743,10 @@ bool DivEngine::isPlaying() { return (playing && !freelance); } +bool DivEngine::isRunning() { + return playing; +} + bool DivEngine::isStepping() { return !(stepPlay==0); } diff --git a/src/engine/engine.h b/src/engine/engine.h index a7699546..8c054c39 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -654,6 +654,9 @@ class DivEngine { // is playing bool isPlaying(); + + // is running + bool isRunning(); // is stepping bool isStepping(); diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index da82de27..547e59a1 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -312,7 +312,7 @@ void FurnaceGUI::drawChanOsc() { inRect.Max.y-=dpiScale; ImGui::ItemSize(size,style.FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID("chOscDisplay"))) { - if (!e->isPlaying()) { + if (!e->isRunning()) { for (unsigned short i=0; i<512; i++) { float x=(float)i/512.0f; waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f)); From 0b70902dbe4e29f663cc51f9d6d25b2dfb019acf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 01:40:03 -0500 Subject: [PATCH 154/580] OPLL: fix per-channel osc, part 2 --- src/engine/platform/opll.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 2549c96f..85fd551a 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -129,12 +129,12 @@ void DivPlatformOPLL::acquire_nuked(short* bufL, short* bufR, size_t start, size unsigned char nextOut=cycleMapOPLL[fm.cycles]; if ((nextOut>=6 && properDrums) || !isMuted[nextOut]) { os+=(o[0]+o[1]); - if (vrc7) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=(o[0]+o[1])<<6; + if (vrc7 || fm.rm_enable) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=(o[0]+o[1])<<6; } else { - if (vrc7) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=0; + if (vrc7 || fm.rm_enable) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=0; } } - if (!vrc7) for (int i=0; i<9; i++) { + if (!(vrc7 || fm.rm_enable)) for (int i=0; i<9; i++) { unsigned char ch=visMapOPLL[i]; if ((i>=6 && properDrums) || !isMuted[ch]) { oscBuf[ch]->data[oscBuf[ch]->needle++]=(fm.output_ch[i])<<6; From 4a0bb1fa38c91eaf14ee788c0fb5dd3fc277dc9e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 01:50:20 -0500 Subject: [PATCH 155/580] OPLL: one more chan osc fix --- src/engine/platform/opll.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 85fd551a..08292be6 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -129,12 +129,12 @@ void DivPlatformOPLL::acquire_nuked(short* bufL, short* bufR, size_t start, size unsigned char nextOut=cycleMapOPLL[fm.cycles]; if ((nextOut>=6 && properDrums) || !isMuted[nextOut]) { os+=(o[0]+o[1]); - if (vrc7 || fm.rm_enable) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=(o[0]+o[1])<<6; + if (vrc7 || (fm.rm_enable&0x20)) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=(o[0]+o[1])<<6; } else { - if (vrc7 || fm.rm_enable) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=0; + if (vrc7 || (fm.rm_enable&0x20)) oscBuf[nextOut]->data[oscBuf[nextOut]->needle++]=0; } } - if (!(vrc7 || fm.rm_enable)) for (int i=0; i<9; i++) { + if (!(vrc7 || (fm.rm_enable&0x20))) for (int i=0; i<9; i++) { unsigned char ch=visMapOPLL[i]; if ((i>=6 && properDrums) || !isMuted[ch]) { oscBuf[ch]->data[oscBuf[ch]->needle++]=(fm.output_ch[i])<<6; From 6fe7e638d5e91d231e194c6e0d8be3857d428562 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 01:56:57 -0500 Subject: [PATCH 156/580] update format.md --- papers/format.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/papers/format.md b/papers/format.md index 10b8068d..c86ac30a 100644 --- a/papers/format.md +++ b/papers/format.md @@ -25,10 +25,14 @@ the format has changed several times across versions. a `(>=VER)` indicates this furthermore, an `or reserved` indicates this field is always present, but is reserved when the version condition is not met. +the `size of this block` fields represent the size of a block excluding the ID and the aforementioned field. +these fields are 0 in format versions prior to 100 (0.6pre1). + # format versions the format versions are: +- 100: Furnace 0.6pre1 - 99: Furnace dev99 - 98: Furnace dev98 - 97: Furnace dev97 @@ -130,7 +134,7 @@ size | description size | description -----|------------------------------------ 4 | "INFO" block ID - 4 | size of the block excluding the ID and this field + 4 | size of this block 1 | time base (of first song) 1 | speed 1 (of first song) 1 | speed 2 (of first song) @@ -332,7 +336,7 @@ the way it's currently done is really weird, but it provides for some backwards size | description -----|------------------------------------ 4 | "SONG" block ID - 4 | size of the block excluding the ID and this field + 4 | size of this block 1 | time base 1 | speed 1 1 | speed 2 @@ -386,7 +390,7 @@ notes: size | description -----|------------------------------------ 4 | "INST" block ID - 4 | size of the block excluding the ID and this field + 4 | size of this block 2 | format version (see header) 1 | instrument type | - 0: standard @@ -795,7 +799,7 @@ size | description size | description -----|------------------------------------ 4 | "WAVE" block ID - 4 | size of the block excluding the ID and this field + 4 | size of this block STR | wavetable name 4 | wavetable size 4 | wavetable min @@ -809,7 +813,7 @@ size | description size | description -----|------------------------------------ 4 | "SMPL" block ID - 4 | size of the block excluding the ID and this field + 4 | size of this block STR | sample name 4 | length 4 | rate @@ -841,7 +845,7 @@ size | description size | description -----|------------------------------------ 4 | "PATR" block ID - 4 | size of the block excluding the ID and this field + 4 | size of this block 2 | channel 2 | pattern index 2 | subsong (>=95) or reserved From 0a055ff85bbb916c1e33b193bcfe91540bd77a3a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 02:11:25 -0500 Subject: [PATCH 157/580] OPL: fix crash --- src/engine/platform/opl.cpp | 6 +++--- src/engine/platform/opl.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index af011622..1d617355 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1800,7 +1800,7 @@ void DivPlatformOPL::setFlags(unsigned int flags) { break; } - for (int i=0; i<18; i++) { + for (int i=0; i<20; i++) { oscBuf[i]->rate=rate; } } @@ -1851,7 +1851,7 @@ int DivPlatformOPL::init(DivEngine* p, int channels, int sugRate, unsigned int f for (int i=0; i<20; i++) { isMuted[i]=false; } - for (int i=0; i<18; i++) { + for (int i=0; i<20; i++) { oscBuf[i]=new DivDispatchOscBuffer; } setFlags(flags); @@ -1869,7 +1869,7 @@ int DivPlatformOPL::init(DivEngine* p, int channels, int sugRate, unsigned int f } void DivPlatformOPL::quit() { - for (int i=0; i<18; i++) { + for (int i=0; i<20; i++) { delete oscBuf[i]; } if (adpcmChan>=0) { diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index 5e8294c3..e949c47f 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -75,7 +75,7 @@ class DivPlatformOPL: public DivDispatch { } }; Channel chan[20]; - DivDispatchOscBuffer* oscBuf[18]; + DivDispatchOscBuffer* oscBuf[20]; bool isMuted[20]; struct QueuedWrite { unsigned short addr; From 4123aa631c3500f94519408d5848460c510cc7fb Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Wed, 29 Jun 2022 14:24:52 +0700 Subject: [PATCH 158/580] Fix 2 typos --- papers/doc/5-wave/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/papers/doc/5-wave/README.md b/papers/doc/5-wave/README.md index d2bbdcbb..b22e8699 100644 --- a/papers/doc/5-wave/README.md +++ b/papers/doc/5-wave/README.md @@ -1,6 +1,6 @@ # wavetable editor -Wavetable synthizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. As of Furnace 0.5.8, wavetable editor affects PC Engine, WonderSwan and channel 3 of Game Boy. +Wavetable synthesizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. As of Furnace 0.5.8, wavetable editor affects PC Engine, WonderSwan and channel 3 of Game Boy. Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If a larger wave is defined for these systems, it will be squashed to fit within the constraints of the system. @@ -8,6 +8,6 @@ Furnace's wavetable editor is rather simple, you can draw the waveform using mou Furnace contains a mode for wavetable instruments that allows you to modulate or combine 1 or 2 waves to create unique "animated" sounds. Think of it like a VST or a plugin, as it's basically an extension of regular wavetable soundchips that still allow it to run on real hardware. -This is accomplisged by selecting a wave or two, a mode, and adjusting the settings as needed until you come up with a sound that you like, without taking up a load of space. This allows you to create unique sound effects or instruments, that, when used well, almost sound like they're Amiga samples. +This is accomplished by selecting a wave or two, a mode, and adjusting the settings as needed until you come up with a sound that you like, without taking up a load of space. This allows you to create unique sound effects or instruments, that, when used well, almost sound like they're Amiga samples. Unfortunately, on chips like the HuC6280, you cannot use the wavetable synth to animate waveforms and have them sound smooth, as the chip resets the channel's phase when a waveform is changed while the channel is playing. On certain frequencies, this can be avoided, but not on most, unfortunately. From 87fa8719729ca128d33b9a9ce150502eb8ce497c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 02:27:10 -0500 Subject: [PATCH 159/580] doc: update writer list --- papers/doc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/papers/doc/README.md b/papers/doc/README.md index 86e522a1..771ea5f1 100644 --- a/papers/doc/README.md +++ b/papers/doc/README.md @@ -19,6 +19,7 @@ writers: - nicco1690 - DeMOSic - cam900 +- host12prog other: From 6a35258e9bb6a5004c6800f71ef431bfb97cd9d8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 02:55:06 -0500 Subject: [PATCH 160/580] whoops --- instruments/FM/{keys => percussion}/Marimba.dmp | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename instruments/FM/{keys => percussion}/Marimba.dmp (100%) diff --git a/instruments/FM/keys/Marimba.dmp b/instruments/FM/percussion/Marimba.dmp similarity index 100% rename from instruments/FM/keys/Marimba.dmp rename to instruments/FM/percussion/Marimba.dmp From a8a38dce2b488c77fd93c3f38fdc45e8757ed299 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 29 Jun 2022 04:57:05 -0500 Subject: [PATCH 161/580] 0.6pre1 - introduce the final changes - implement E1xy/E2xy Defle bug when using same note twice - add SNK Touchdown Fever preset - update README.md and to-do list - update credits thank you for your patience! see you in 0.6pre1.5 coming soon... --- README.md | 190 ++++++++++++++++++++++++++-------------- TODO.md | 6 +- papers/format.md | 5 +- papers/screenshot2.png | Bin 0 -> 561350 bytes res/Info.plist | 6 +- res/furnace.appdata.xml | 7 +- src/engine/engine.h | 7 +- src/engine/fileOps.cpp | 14 ++- src/engine/playback.cpp | 14 ++- src/engine/song.h | 4 +- src/gui/about.cpp | 5 +- src/gui/compatFlags.cpp | 4 + src/gui/presets.cpp | 28 ++++++ src/main.cpp | 23 ++++- 14 files changed, 222 insertions(+), 91 deletions(-) create mode 100644 papers/screenshot2.png diff --git a/README.md b/README.md index caa4714c..241249df 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Furnace Tracker -![screenshot](papers/screenshot1.png) +![screenshot](papers/screenshot2.png) -this is a multi-system chiptune tracker. +the biggest multi-system chiptune tracker ever made! [downloads](#downloads) | [discussion/help](#quick-references) | [developer info](#developer-info) | [unofficial packages](#unofficial-packages) | [FAQ](#frequently-asked-questions) @@ -15,34 +15,91 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a ## features -- supports the following systems: - - Sega Genesis - - Sega Master System +- over 50 sound chips - and counting: + - Yamaha FM chips: + - YM2151 (OPM) + - YM2203 (OPN) + - YM2413 (OPLL) + - YM2414 (OPZ) used in Yamaha TX81Z + - YM2608 (OPNA) used in PC-98 + - YM2610 (OPNB) used in Neo Geo + - YM2610B (OPNB2) + - YM2612 (OPN2) used in Sega Genesis and FM Towns + - YM3526 (OPL) used in C64 Sound Expander + - YM3812 (OPL2) + - YMF262 (OPL3) with full 4-op support! + - Y8950 (OPL with ADPCM) + - square wave chips: + - AY-3-8910/YM2149(F) used in several computers and game consoles + - Commodore VIC used in the VIC-20 + - Microchip AY8930 + - TI SN76489 used in Sega Master System and BBC Micro + - PC Speaker + - Philips SAA1099 used in SAM CoupĆ© + - sample chips: + - Amiga + - SegaPCM - all 16 channels + - Capcom QSound + - Yamaha YMZ280B (PCMD8) + - Ricoh RF5C68 used in Sega CD and FM Towns + - OKI MSM6258 and MSM6295 + - wavetable chips: + - HuC6280 used in PC Engine + - Konami Bubble System WSG + - Konami SCC/SCC+ + - Namco arcade chips (WSG/C15/C30) + - WonderSwan + - Seta/Allumer X1-010 + - NES (Ricoh 2A03/2A07), with additional expansion sound support: + - Konami VRC6 + - Konami VRC7 + - MMC5 + - Famicom Disk System + - Sunsoft 5B + - Namco 163 + - Family Noraebang (OPLL) + - SID (6581/8580) used in Commodore 64 + - Mikey used in Atari Lynx + - ZX Spectrum beeper (SFX-like engine) + - TIA used in Atari 2600 - Game Boy - - PC Engine - - NES - - Commodore 64 - - Yamaha YM2151 (plus PCM) - - Neo Geo - - AY-3-8910 (ZX Spectrum, Atari ST, etc.) - - Microchip AY8930 - - Philips SAA1099 - - Amiga - - TIA (Atari 2600/7800) -- multiple sound chips in a single song! -- DefleMask compatibility - loads .dmf modules, .dmp instruments and .dmw wavetables -- clean-room design (guesswork and ABX tests only, no decompilation involved) -- bug/quirk implementation for increased playback accuracy -- VGM and audio file export -- accurate emulation cores whether possible (Nuked, MAME, SameBoy, Mednafen PCE, puNES, reSID, Stella, SAASound and ymfm) -- additional features on top: + - modern/fantasy: + - Commander X16 VERA + - tildearrow Sound Unit +- mix and match sound chips! + - over 200 ready to use presets from computers, game consoles and arcade boards... + - ...or create your own - up to 32 of them or a total of 128 channels! +- DefleMask compatibility + - loads .dmf modules from all versions (beta 1 to 1.1.3) + - saves .dmf modules - both modern and legacy + - Furnace doubles as a module downgrader + - loads .dmp instruments and .dmw wavetables as well + - clean-room design (guesswork and ABX tests only, no decompilation involved) + - bug/quirk implementation for increased playback accuracy through compatibility flags +- VGM export +- modular layout that you may adapt to your needs +- audio file export - entire song, per system or per channel +- quality emulation cores (Nuked, MAME, SameBoy, Mednafen PCE, NSFplay, puNES, reSID, Stella, SAASound, vgsound_emu and ymfm) +- wavetable synthesizer + - available on wavetable chips + - create complex sounds with ease - provide up to two wavetables, select and effect and let go! +- MIDI input support +- [Fractal Sound](https://gitlab.com/Natsumi/Fractal-Sound) support! + - the game-ready Sega Genesis/Mega Drive sound driver! + - compose your songs in Furnace using the Fractal Sound presets and then use them in your games with Fractal! +- additional features: - FM macros! - negative octaves - arbitrary pitch samples - sample loop points - - SSG envelopes in Neo Geo + - SSG envelopes and ADPCM-B in Neo Geo - full duty/cutoff range in C64 - - ability to change tempo mid-song with `Cxxx` effect (`xxx` between `000` and `3ff`) + - ability to change tempo mid-song + - multiple sub-songs in a module + - per-channel oscilloscope with waveform centering + - built-in sample editor + - chip mixing settings + - built-in visualizer in pattern view - open-source under GPLv2 or later. *** @@ -59,7 +116,7 @@ some people have provided packages for Unix/Unix-like distributions. here's a li - **Arch Linux**: [furnace-git is in the AUR.](https://aur.archlinux.org/packages/furnace-git) thank you Essem! - **FreeBSD**: [a package in ports](https://www.freshports.org/audio/furnace/) is available courtesy of ehaupt. - **Nix**: [package](https://search.nixos.org/packages?channel=unstable&show=furnace&from=0&size=50&sort=relevance&type=packages&query=furnace) thanks to OPNA2608. - - **OpenSUSE**: [a package](https://software.opensuse.org/package/furnace) is available, courtesy of fpesari. + - **openSUSE**: [a package](https://software.opensuse.org/package/furnace) is available, courtesy of fpesari. *** # developer info @@ -73,11 +130,17 @@ if you can't download these artifacts (because GitHub requires you to be logged ## dependencies - CMake -- SDL2 -- zlib -- JACK (optional) +- JACK (optional, macOS/Linux only) -SDL2 and zlib are included as submodules. +if building under Windows or macOS, no additional dependencies are required. +otherwise, you may also need the following: + +- libpulse +- libx11 +- libasound +- libGL + +some Linux distributions (e.g. Ubuntu or openSUSE) will require you to install the `-dev` versions of these. ## getting the source @@ -127,14 +190,20 @@ Available options: | Name | Default | Description | | :--: | :-----: | ----------- | | `BUILD_GUI` | `ON` | Build the tracker (disable to build only a headless player) | +| `USE_RTMIDI` | `ON` | Build with MIDI support using RtMidi | +| `USE_SDL2` | `ON` | Build with SDL2 (required to build with GUI) | +| `USE_SNDFILE` | `ON` | Build with libsndfile (required in order to work with audio files) | +| `USE_BACKWARD` | `ON` | Use backward-cpp to print a backtrace on crash/abort | | `WITH_JACK` | `ON` if system-installed JACK detected, otherwise `OFF` | Whether to build with JACK support. Auto-detects if JACK is available | +| `SYSTEM_FFTW` | `OFF` | Use a system-installed version of FFTW instead of the vendored one | | `SYSTEM_FMT` | `OFF` | Use a system-installed version of fmt instead of the vendored one | | `SYSTEM_LIBSNDFILE` | `OFF` | Use a system-installed version of libsndfile instead of the vendored one | +| `SYSTEM_RTMIDI` | `OFF` | Use a system-installed version of RtMidi instead of the vendored one | | `SYSTEM_ZLIB` | `OFF` | Use a system-installed version of zlib instead of the vendored one | | `SYSTEM_SDL2` | `OFF` | Use a system-installed version of SDL2 instead of the vendored one | | `WARNINGS_ARE_ERRORS` | `OFF` (but consider enabling this & reporting any errors that arise from it!) | Whether warnings in furnace's C++ code should be treated as errors | -## usage +## console usage ``` ./furnace @@ -156,36 +225,21 @@ this will play a compatible file and enable the commands view. **note that these commands only actually work in Linux environments. on other command lines, such as Windows' Command Prompt, or MacOS Terminal, it may not work correctly.** -*** -# notes - -> how do I use Neo Geo SSG envelopes? - -the following effects are provided: - -- `22xy`: set envelope mode. - - `x` sets the envelope shape, which may be one of the following: - - `0: \___` decay - - `4: /___` attack once - - `8: \\\\` saw - - `9: \___` decay - - `A: \/\/` inverse obelisco - - `B: \ĀÆĀÆĀÆ` decay once - - `C: ////` inverse saw - - `D: /ĀÆĀÆĀÆ` attack - - `E: /\/\` obelisco - - `F: /___` attack once - - if `y` is 1 then the envelope will affect this channel. -- `23xx`: set envelope period low byte. -- `24xx`: set envelope period high byte. -- `25xx`: slide envelope period up. -- `26xx`: slide envelope period down. - -a lower envelope period will make the envelope run faster. - *** # frequently asked questions +> woah! 50 sound chips?! I can't believe it! + +yup, it's real. + +> where's the manual? + +see [papers/](papers/README.md). it's kind of incomplete, but at least the systems (sound chips) section is there. + +> it doesn't open under macOS! + +this is due to Apple's application signing policy. a workaround is to right click on the Furnace app icon and select Open. + > how do I use C64 absolute filter/duty? on Instrument Editor in the C64 tab there are two options to toggle these. @@ -195,25 +249,27 @@ also provided are two effects: - `4xxx`: set fine cutoff. `xxx` range is 000-7ff. additionally, you can change the cutoff and/or duty as a macro inside an instrument by clicking the `absolute cutoff macro` and/or `absolute duty macro` checkbox at the bottom of the instrument. (for the filter, you also need to click the checkbox that says `volume macro is cutoff macro`.) -> Q: how do I use PCM on a PCM-capable system? +> how do I use PCM on a PCM-capable system? -A: Two possibilities: the recommended way is via creating the "Amiga/Sample" type instrument and assigning sample to it, or via old, Deflemask-compatible method, using `17xx` effect +two possibilities: +- the recommended way is by creating the "Sample" type instrument and assigning a sample to it. +- otherwise you may employ the DefleMask-compatible method, using `17xx` effect. -> Q: my song sounds very odd at a certain point +> my .dmf song sounds very odd at a certain point -A: file a bug report. use the Issues page. it's probably another playback inaccuracy. +file a bug report. use the Issues page. it's probably another playback inaccuracy. -> Q: my song sounds correct, but it doesn't in DefleMask +> my .dmf song sounds correct, but it doesn't in DefleMask -A: file a bug report **here**. it still is a playback inaccuracy. +file a bug report **here**. it still is a playback inaccuracy. -> Q: my C64 song sounds terrible after saving as .dmf! +> my song sounds terrible after saving as .dmf! -A: that's a limitation of the DefleMask format. save in Furnace song format instead (.fur). +the DefleMask format has several limitations. save in Furnace song format instead (.fur). -> Q: how do I solo channels? +> how do I solo channels? -A: right click on the channel name. +right click on the channel name. *** # footnotes diff --git a/TODO.md b/TODO.md index da090151..5032ea32 100644 --- a/TODO.md +++ b/TODO.md @@ -1,8 +1,4 @@ -# to-do for 0.6pre1 - -- implement Defle slide bug when using E1xy/E2xy and repeating origin note (requires format change) - -# to-do for 0.6pre2 (as this requires new data structures) +# to-do for 0.6pre1.5-0.6pre2 - rewrite the system name detection function anyway - this involves the addition of a new "system" field in the song (which solves the problem) diff --git a/papers/format.md b/papers/format.md index c86ac30a..04acc618 100644 --- a/papers/format.md +++ b/papers/format.md @@ -304,7 +304,7 @@ size | description 1 | new ins affects envelope (Game Boy) (>=72) or reserved 1 | ExtCh channel state is shared (>=78) or reserved 1 | ignore DAC mode change outside of intended channel (>=83) or reserved - 1 | E1xx and E2xx also take priority over Slide00 (>=83) or reserved + 1 | E1xy and E2xy also take priority over Slide00 (>=83) or reserved 1 | new Sega PCM (with macros and proper vol/pan) (>=84) or reserved 1 | weird f-num/block-based chip pitch slides (>=85) or reserved 1 | SN duty macro always resets phase (>=86) or reserved @@ -315,7 +315,8 @@ size | description 1 | new volume scaling strategy (>=99) or reserved 1 | volume macro still applies after end (>=99) or reserved 1 | broken outVol (>=99) or reserved - 9 | reserved + 1 | E1xy and E2xy stop on same note (>=100) or reserved + 8 | reserved --- | **virtual tempo data** 2 | virtual tempo numerator of first song (>=96) or reserved 2 | virtual tempo denominator of first song (>=96) or reserved diff --git a/papers/screenshot2.png b/papers/screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..afda65b294b3f26bcd241772ed2689b334b9320e GIT binary patch literal 561350 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

{3n5|r=lcSniIwiV1L4BaLpSDcZX6D}9#HTu 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 z∋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 literal 0 HcmV?d00001 diff --git a/res/Info.plist b/res/Info.plist index d9528b15..7b8d0120 100644 --- a/res/Info.plist +++ b/res/Info.plist @@ -15,17 +15,17 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 0.6pre0 + 0.6pre1 CFBundleName Furnace CFBundlePackageType APPL CFBundleShortVersionString - 0.6pre0 + 0.6pre1 CFBundleSignature ???? CFBundleVersion - 0.6pre0 + 0.6pre1 NSHumanReadableCopyright NSHighResolutionCapable diff --git a/res/furnace.appdata.xml b/res/furnace.appdata.xml index f5393048..2214cb10 100644 --- a/res/furnace.appdata.xml +++ b/res/furnace.appdata.xml @@ -10,10 +10,13 @@

- this is a work-in-progress chiptune tracker which interacts with DefleMask module files (.dmf). + the biggest chiptune tracker ever made!

- it supports creating songs for Sega Genesis, Master System, Game Boy, PC Engine, NES, C64, YM2151/PCM and Neo Geo. featuring a clean-room design (zero reverse-engineered code and zero decompilation; using official DMF specs, guesswork and ABX tests only), bug/quirk implementation for increased playback accuracy, and accurate emulation cores whether possible (Nuked, MAME, SameBoy, Mednafen PCE, puNES, reSID and ymfm). + it allows you to create songs using a music tracker interface for several computer/game console/arcade sound chips. +

+

+ it also offers DefleMask compatibility, allowing you to import your songs and even export them back for interoperability.

diff --git a/src/engine/engine.h b/src/engine/engine.h index 8c054c39..962e0fcc 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -45,8 +45,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev99" -#define DIV_ENGINE_VERSION 99 +#define DIV_VERSION "0.6pre1" +#define DIV_ENGINE_VERSION 100 // for imports #define DIV_VERSION_MOD 0xff01 @@ -88,7 +88,7 @@ struct DivChannelState { int tremoloDepth, tremoloRate, tremoloPos; unsigned char arp, arpStage, arpTicks, panL, panR; bool doNote, legato, portaStop, keyOn, keyOff, nowYouCanStop, stopOnOff; - bool arpYield, delayLocked, inPorta, scheduledSlideReset, shorthandPorta, noteOnInhibit, resetArp; + bool arpYield, delayLocked, inPorta, scheduledSlideReset, shorthandPorta, wasShorthandPorta, noteOnInhibit, resetArp; int midiNote, curMidiNote, midiPitch; size_t midiAge; @@ -136,6 +136,7 @@ struct DivChannelState { inPorta(false), scheduledSlideReset(false), shorthandPorta(false), + wasShorthandPorta(false), noteOnInhibit(false), resetArp(false), midiNote(-1), diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 7a4fb8f1..d4c45323 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -171,6 +171,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.newVolumeScaling=false; ds.volMacroLinger=false; ds.brokenOutVol=true; // ??? + ds.e1e2StopOnSameNote=true; // 1.1 compat flags if (ds.version>24) { @@ -1043,6 +1044,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { ds.volMacroLinger=false; ds.brokenOutVol=true; } + if (ds.version<100) { + ds.e1e2StopOnSameNote=false; + } ds.isDMF=false; reader.readS(); // reserved @@ -1439,7 +1443,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { reader.readC(); reader.readC(); } - for (int i=0; i<9; i++) { + if (ds.version>=100) { + ds.e1e2StopOnSameNote=reader.readC(); + } else { + reader.readC(); + } + for (int i=0; i<8; i++) { reader.readC(); } } @@ -2912,7 +2921,8 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeC(song.newVolumeScaling); w->writeC(song.volMacroLinger); w->writeC(song.brokenOutVol); - for (int i=0; i<9; i++) { + w->writeC(song.e1e2StopOnSameNote); + for (int i=0; i<8; i++) { w->writeC(0); } diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 02d3228f..d672c2d4 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -456,6 +456,7 @@ void DivEngine::processRow(int i, bool afterDelay) { chan[i].nowYouCanStop=false; chan[i].stopOnOff=false; chan[i].scheduledSlideReset=false; + chan[i].wasShorthandPorta=false; chan[i].inPorta=false; if (!song.arpNonPorta) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,true,0)); } @@ -475,6 +476,7 @@ void DivEngine::processRow(int i, bool afterDelay) { chan[i].nowYouCanStop=false; chan[i].stopOnOff=false; chan[i].scheduledSlideReset=false; + chan[i].wasShorthandPorta=false; chan[i].inPorta=false; if (!song.arpNonPorta) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,true,0)); } @@ -494,6 +496,7 @@ void DivEngine::processRow(int i, bool afterDelay) { chan[i].portaNote=chan[i].note; chan[i].portaSpeed=effectVal; chan[i].inPorta=true; + chan[i].wasShorthandPorta=false; } chan[i].portaStop=true; if (chan[i].keyOn) chan[i].doNote=false; @@ -573,6 +576,7 @@ void DivEngine::processRow(int i, bool afterDelay) { if ((effectVal&15)!=0) { chan[i].inPorta=true; chan[i].shorthandPorta=true; + chan[i].wasShorthandPorta=true; if (!song.brokenShortcutSlides) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,true,0)); if (song.e1e2AlsoTakePriority) lastSlide=0x1337; // ... } else { @@ -590,6 +594,7 @@ void DivEngine::processRow(int i, bool afterDelay) { if ((effectVal&15)!=0) { chan[i].inPorta=true; chan[i].shorthandPorta=true; + chan[i].wasShorthandPorta=true; if (!song.brokenShortcutSlides) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,true,0)); if (song.e1e2AlsoTakePriority) lastSlide=0x1337; // ... } else { @@ -715,7 +720,14 @@ void DivEngine::processRow(int i, bool afterDelay) { dispatchCmd(DivCommand(DIV_CMD_LEGATO,i,chan[i].note)); } else { if (chan[i].inPorta && chan[i].keyOn && !chan[i].shorthandPorta) { - chan[i].portaNote=chan[i].note; + if (song.e1e2StopOnSameNote && chan[i].wasShorthandPorta) { + chan[i].portaSpeed=-1; + if (!song.brokenShortcutSlides) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,false,0)); + chan[i].wasShorthandPorta=false; + chan[i].inPorta=false; + } else { + chan[i].portaNote=chan[i].note; + } } else if (!chan[i].noteOnInhibit) { dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,i,chan[i].note,chan[i].volume>>8)); keyHit[i]=true; diff --git a/src/engine/song.h b/src/engine/song.h index df622d86..2248292e 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -494,6 +494,7 @@ struct DivSong { bool newVolumeScaling; bool volMacroLinger; bool brokenOutVol; + bool e1e2StopOnSameNote; std::vector ins; std::vector wave; @@ -591,7 +592,8 @@ struct DivSong { noOPN2Vol(false), newVolumeScaling(true), volMacroLinger(true), - brokenOutVol(false) { + brokenOutVol(false), + e1e2StopOnSameNote(false) { for (int i=0; i<32; i++) { system[i]=DIV_SYSTEM_NULL; systemVol[i]=64; diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 27e5f611..70e09e72 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -108,9 +108,10 @@ const char* aboutLine[]={ "Portable File Dialogs by Sam Hocevar", "Native File Dialog by Frogtoss Games", "RtMidi by Gary P. Scavone", + "FFTW by Matteo Frigo and Steven G. Johnson", "backward-cpp by Google", "adpcm by superctr", - "Nuked-OPL3/OPLL/OPM/OPN2 by Nuke.YKT", + "Nuked-OPL3/OPLL/OPM/OPN2/PSG by Nuke.YKT", "ymfm by Aaron Giles", "MAME SN76496 by Nicola Salmoria", "MAME AY-3-8910 by Couriersud", @@ -131,7 +132,7 @@ const char* aboutLine[]={ "VICE VIC-20 sound core by Rami Rasanen and viznut", "VERA sound core by Frank van den Hoef", "K005289 emulator by cam900", - "Namco 163 emulator by cam900", + "Namco C163 emulator by cam900", "Seta X1-010 emulator by cam900", "Konami VRC6 emulator by cam900", "Konami SCC emulator by cam900", diff --git a/src/gui/compatFlags.cpp b/src/gui/compatFlags.cpp index d15f1722..8e5d7517 100644 --- a/src/gui/compatFlags.cpp +++ b/src/gui/compatFlags.cpp @@ -115,6 +115,10 @@ void FurnaceGUI::drawCompatFlags() { if (ImGui::IsItemHovered()) { ImGui::SetTooltip("does this make any sense by now?"); } + ImGui::Checkbox("E1xy/E2xy stop when repeating the same note",&e->song.e1e2StopOnSameNote); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("ugh, if only this wasn't a thing..."); + } ImGui::Checkbox("SN76489 duty macro always resets phase",&e->song.snDutyReset); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("when enabled, duty macro will always reset phase, even if its value hasn't changed."); diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index a30d4eab..154b44e0 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1808,6 +1808,34 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Touchdown Fever", { + DIV_SYSTEM_OPL, 64, 0, 2, + DIV_SYSTEM_Y8950, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Touchdown Fever (drums mode on OPL)", { + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + DIV_SYSTEM_Y8950, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Touchdown Fever (drums mode on Y8950)", { + DIV_SYSTEM_OPL, 64, 0, 2, + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 2, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "SNK Touchdown Fever (drums mode on OPL and Y8950)", { + DIV_SYSTEM_OPL_DRUMS, 64, 0, 2, + DIV_SYSTEM_Y8950_DRUMS, 64, 0, 2, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Alpha denshi Alpha-68K", { DIV_SYSTEM_OPN, 64, 0, 3, // 3MHz diff --git a/src/main.cpp b/src/main.cpp index 222e13d6..1f5f9560 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -140,20 +140,37 @@ TAParamResult pVersion(String) { printf("- libsndfile by Erik de Castro Lopo and rest of libsndfile team (LGPLv2.1)\n"); printf("- SDL2 by Sam Lantinga (zlib license)\n"); printf("- zlib by Jean-loup Gailly and Mark Adler (zlib license)\n"); + printf("- RtMidi by Gary P. Scavone (RtMidi license)\n"); + printf("- backward-cpp by Google (MIT)\n"); printf("- Dear ImGui by Omar Cornut (MIT)\n"); + printf("- Portable File Dialogs by Sam Hocevar (WTFPL)\n"); + printf("- Native File Dialog (modified version) by Frogtoss Games (zlib license)\n"); + printf("- FFTW by Matteo Frigo and Steven G. Johnson (GPLv2)\n"); printf("- Nuked-OPM by Nuke.YKT (LGPLv2.1)\n"); printf("- Nuked-OPN2 by Nuke.YKT (LGPLv2.1)\n"); + printf("- Nuked-OPL3 by Nuke.YKT (LGPLv2.1)\n"); + printf("- Nuked-OPLL by Nuke.YKT (GPLv2)\n"); + printf("- Nuked-PSG (modified version) by Nuke.YKT (GPLv2)\n"); printf("- ymfm by Aaron Giles (BSD 3-clause)\n"); + printf("- adpcm by superctr (public domain)\n"); printf("- MAME SN76496 emulation core by Nicola Salmoria (BSD 3-clause)\n"); printf("- MAME AY-3-8910 emulation core by Couriersud (BSD 3-clause)\n"); printf("- MAME SAA1099 emulation core by Juergen Buchmueller and Manuel Abadia (BSD 3-clause)\n"); - printf("- SAASound (BSD 3-clause)\n"); + printf("- MAME Namco WSG by Nicola Salmoria and Aaron Giles (BSD 3-clause)\n"); + printf("- MAME RF5C68 core by Olivier Galibert and Aaron Giles (BSD 3-clause)\n"); + printf("- MAME MSM6258 core by Barry Rodewald (BSD 3-clause)\n"); + printf("- MAME YMZ280B core by Aaron Giles (BSD 3-clause)\n"); + printf("- QSound core by superctr (BSD 3-clause)\n"); + printf("- VICE VIC-20 by Rami Rasanen and viznut (GPLv2)\n"); + printf("- VERA core by Frank van den Hoef (BSD 2-clause)\n"); + printf("- SAASound by Dave Hooper and Simon Owen (BSD 3-clause)\n"); printf("- SameBoy by Lior Halphon (MIT)\n"); - printf("- Mednafen PCE by Mednafen Team (GPLv2)\n"); + printf("- Mednafen PCE and WonderSwan by Mednafen Team (GPLv2)\n"); printf("- puNES by FHorse (GPLv2)\n"); + printf("- NSFPlay by Brad Smith and Brezza (unknown open-source license)\n"); printf("- reSID by Dag Lem (GPLv2)\n"); printf("- Stella by Stella Team (GPLv2)\n"); - printf("- vgsound_emu by cam900 (BSD 3-clause)\n"); + printf("- vgsound_emu (first version) by cam900 (BSD 3-clause)\n"); return TA_PARAM_QUIT; } From 0102fcbda87399cae5721c86940808aa8fdc5a2f Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:42:33 +0700 Subject: [PATCH 162/580] Create soundunit.md --- papers/doc/7-systems/soundunit.md | 43 +++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 papers/doc/7-systems/soundunit.md diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md new file mode 100644 index 00000000..ef1b1eda --- /dev/null +++ b/papers/doc/7-systems/soundunit.md @@ -0,0 +1,43 @@ +# TildeArrow Sound Unit +This is a fantasy sound chip, used in the specs2 fantasy console designed by tildearrow. It includes native support for sample playback, but with only 20K of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. +# Effects +`10xx`: set waveform + - 0: pulse wave + - 1: sawtooth + - 2: sine wave + - 3: triangle wave + - 4: noise + - 5: periodic noise + - 6: TODO find name for waves 6, 7 + - 7: TODO find name for waves 6, 7 +`12xx`: set waveform (0 to 7F) +`13xx`: set resonance of filter (0 to FF) + - despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF (255) +`14xx`: set filter mode and ringmod + - bit 0: ring mod + - bit 1: low pass + - bit 2: high pass + - bit 3: band pass +`15xx`: set frequency sweep period low byte +`16xx`: set frequency sweep period high byte +`17xx`: set volume sweep period low byte +`18xx`: set volume sweep period high byte +`19xx`: set cutoff sweep period low byte +`1Axx`: set cutoff sweep period low byte +`1Bxx`: set frequency sweep boundary +`1Cxx`: set volume sweep boundary +`1Dxx`: set cutoff sweep boundary +`1Exx`: set phase reset period low byte +`1Fxx`: set phase reset period high byte +`20xx`: toggle frequency sweep + - bit 0-6: speed + - bit 7: up direction +`21xx`: toggle volume sweep + - bit 0-4: speed + - bit 5: up direction + - bit 6: loop + - bit 7: alternate +`22xx`: toggle cutoff sweep + - bit 0-6: speed + - bit 7: up direction +`4xxx`: set cutoff (0 to FFF) From 86aacd818b7922bab85855f742ef14b245ee26c2 Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:43:40 +0700 Subject: [PATCH 163/580] Fix formatting issues, i think --- papers/doc/7-systems/soundunit.md | 38 +++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md index ef1b1eda..e6a676f6 100644 --- a/papers/doc/7-systems/soundunit.md +++ b/papers/doc/7-systems/soundunit.md @@ -1,7 +1,7 @@ # TildeArrow Sound Unit This is a fantasy sound chip, used in the specs2 fantasy console designed by tildearrow. It includes native support for sample playback, but with only 20K of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. # Effects -`10xx`: set waveform +- `10xx`: set waveform - 0: pulse wave - 1: sawtooth - 2: sine wave @@ -10,34 +10,34 @@ This is a fantasy sound chip, used in the specs2 fantasy console designed by til - 5: periodic noise - 6: TODO find name for waves 6, 7 - 7: TODO find name for waves 6, 7 -`12xx`: set waveform (0 to 7F) -`13xx`: set resonance of filter (0 to FF) +- `12xx`: set waveform (0 to 7F) +- `13xx`: set resonance of filter (0 to FF) - despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF (255) -`14xx`: set filter mode and ringmod +- `14xx`: set filter mode and ringmod - bit 0: ring mod - bit 1: low pass - bit 2: high pass - bit 3: band pass -`15xx`: set frequency sweep period low byte -`16xx`: set frequency sweep period high byte -`17xx`: set volume sweep period low byte -`18xx`: set volume sweep period high byte -`19xx`: set cutoff sweep period low byte -`1Axx`: set cutoff sweep period low byte -`1Bxx`: set frequency sweep boundary -`1Cxx`: set volume sweep boundary -`1Dxx`: set cutoff sweep boundary -`1Exx`: set phase reset period low byte -`1Fxx`: set phase reset period high byte -`20xx`: toggle frequency sweep +- `15xx`: set frequency sweep period low byte +- `16xx`: set frequency sweep period high byte +- `17xx`: set volume sweep period low byte +- `18xx`: set volume sweep period high byte +- `19xx`: set cutoff sweep period low byte +- `1Axx`: set cutoff sweep period low byte +- `1Bxx`: set frequency sweep boundary +- `1Cxx`: set volume sweep boundary +- `1Dxx`: set cutoff sweep boundary +- `1Exx`: set phase reset period low byte +- `1Fxx`: set phase reset period high byte +- `20xx`: toggle frequency sweep - bit 0-6: speed - bit 7: up direction -`21xx`: toggle volume sweep +- `21xx`: toggle volume sweep - bit 0-4: speed - bit 5: up direction - bit 6: loop - bit 7: alternate -`22xx`: toggle cutoff sweep +- `22xx`: toggle cutoff sweep - bit 0-6: speed - bit 7: up direction -`4xxx`: set cutoff (0 to FFF) +- `4xxx`: set cutoff (0 to FFF) From 200cb34d18e1494b05677e97faee3512ac882f3a Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:44:36 +0700 Subject: [PATCH 164/580] ah the bitch! markdown you anger mee --- papers/doc/7-systems/soundunit.md | 42 +++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md index e6a676f6..a869b6e2 100644 --- a/papers/doc/7-systems/soundunit.md +++ b/papers/doc/7-systems/soundunit.md @@ -2,22 +2,22 @@ This is a fantasy sound chip, used in the specs2 fantasy console designed by tildearrow. It includes native support for sample playback, but with only 20K of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. # Effects - `10xx`: set waveform - - 0: pulse wave - - 1: sawtooth - - 2: sine wave - - 3: triangle wave - - 4: noise - - 5: periodic noise - - 6: TODO find name for waves 6, 7 - - 7: TODO find name for waves 6, 7 + - 0: pulse wave + - 1: sawtooth + - 2: sine wave + - 3: triangle wave + - 4: noise + - 5: periodic noise + - 6: TODO find name for waves 6, 7 + - 7: TODO find name for waves 6, 7 - `12xx`: set waveform (0 to 7F) - `13xx`: set resonance of filter (0 to FF) - - despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF (255) + - despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF (255) - `14xx`: set filter mode and ringmod - - bit 0: ring mod - - bit 1: low pass - - bit 2: high pass - - bit 3: band pass + - bit 0: ring mod + - bit 1: low pass + - bit 2: high pass + - bit 3: band pass - `15xx`: set frequency sweep period low byte - `16xx`: set frequency sweep period high byte - `17xx`: set volume sweep period low byte @@ -30,14 +30,14 @@ This is a fantasy sound chip, used in the specs2 fantasy console designed by til - `1Exx`: set phase reset period low byte - `1Fxx`: set phase reset period high byte - `20xx`: toggle frequency sweep - - bit 0-6: speed - - bit 7: up direction + - bit 0-6: speed + - bit 7: up direction - `21xx`: toggle volume sweep - - bit 0-4: speed - - bit 5: up direction - - bit 6: loop - - bit 7: alternate + - bit 0-4: speed + - bit 5: up direction + - bit 6: loop + - bit 7: alternate - `22xx`: toggle cutoff sweep - - bit 0-6: speed - - bit 7: up direction + - bit 0-6: speed + - bit 7: up direction - `4xxx`: set cutoff (0 to FFF) From c21caa59915793b03fc56886e858eef4cf9e3123 Mon Sep 17 00:00:00 2001 From: Postbox2 <53163105+host12prog@users.noreply.github.com> Date: Wed, 29 Jun 2022 18:45:17 +0700 Subject: [PATCH 165/580] Update README.md --- papers/doc/7-systems/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/papers/doc/7-systems/README.md b/papers/doc/7-systems/README.md index fcf2e886..439e64f6 100644 --- a/papers/doc/7-systems/README.md +++ b/papers/doc/7-systems/README.md @@ -22,6 +22,7 @@ this is a list of systems that Furnace supports, including each system's effects - [Philips SAA1099](saa1099.md) - [Microchip AY8930](ay8930.md) - [VERA](vera.md) +- [TildeArrow Sound Unit](soundunit.md) - [Seta/Allumer X1-010](x1-010.md) - [WonderSwan](wonderswan.md) - [Bubble System WSG](bubblesystem.md) From 0a07abe1535d9d3026a6afcd36faf21bacab626e Mon Sep 17 00:00:00 2001 From: LovelyA72 Date: Wed, 29 Jun 2022 12:09:15 -0400 Subject: [PATCH 166/580] Fix paper 404 link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 241249df..b75db0d0 100644 --- a/README.md +++ b/README.md @@ -234,7 +234,7 @@ yup, it's real. > where's the manual? -see [papers/](papers/README.md). it's kind of incomplete, but at least the systems (sound chips) section is there. +see [papers/](papers/doc/README.md). it's kind of incomplete, but at least the systems (sound chips) section is there. > it doesn't open under macOS! From 15eebea7471a2e682adf22fee1185c842b2cbcc7 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Wed, 29 Jun 2022 12:10:38 -0400 Subject: [PATCH 167/580] Add checknobankh (again) --- demos/Checknobankh.fur | Bin 0 -> 67357 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Checknobankh.fur diff --git a/demos/Checknobankh.fur b/demos/Checknobankh.fur new file mode 100644 index 0000000000000000000000000000000000000000..75c670e9fa401eba8a9a6b2ce7e5882ae7cd2f10 GIT binary patch literal 67357 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 D#iMkA literal 0 HcmV?d00001 From e26d6b94c990bd9f9e2ce1598fe45c469a3dda05 Mon Sep 17 00:00:00 2001 From: Emre Cakir <82211203+DeMOSic@users.noreply.github.com> Date: Wed, 29 Jun 2022 21:21:39 +0200 Subject: [PATCH 168/580] Add 5 AY instruments. The instruments are, Closed Hat, Open Hat, Hat+EnvBass, Kick, and last but not least, Snare. --- instruments/other/(AY) Closed Hat.fui | Bin 0 -> 1718 bytes instruments/other/(AY) Hat-EnvBass.fui | Bin 0 -> 1712 bytes instruments/other/(AY) Kick E-1.fui | Bin 0 -> 1880 bytes instruments/other/(AY) Open Hat.fui | Bin 0 -> 1800 bytes instruments/other/(AY) Snare A#3.fui | Bin 0 -> 1917 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/other/(AY) Closed Hat.fui create mode 100644 instruments/other/(AY) Hat-EnvBass.fui create mode 100644 instruments/other/(AY) Kick E-1.fui create mode 100644 instruments/other/(AY) Open Hat.fui create mode 100644 instruments/other/(AY) Snare A#3.fui diff --git a/instruments/other/(AY) Closed Hat.fui b/instruments/other/(AY) Closed Hat.fui new file mode 100644 index 0000000000000000000000000000000000000000..237c8610e195166867b5af549706137475a1f1d2 GIT binary patch literal 1718 zcmeHHK?=e!5S(bMR*`@oXwHJ-6BI%8B7$B#itRxVg;u}eoBWyXs*yHmf_hVj4%y9a zX4y1sYp_o?i)E}5RAd)m>na^+r3rR7t literal 0 HcmV?d00001 diff --git a/instruments/other/(AY) Hat-EnvBass.fui b/instruments/other/(AY) Hat-EnvBass.fui new file mode 100644 index 0000000000000000000000000000000000000000..00b661abeb1bd52c57c3794c79816521b139b4cc GIT binary patch literal 1712 zcmeHHOA5j;5Pf4?@dp7f(5!`uM^G1{8xeHlvRD^xT(o)zkLArYQ>`YESjC+>bei|( z^U?_=(P*D;I0nENm9dQoX4| ze$38J@@94jTb;kmXZPa=H=R8_&yT7J07txCT;1G`R)7h5IK6Y1)A6G_tB!$e@c?B% z@7hBk_g_T5%#0b1TJi&v*{$fKAS?@0*iNv~Tv~KaV7S+>p$n`G);M6WP4xO_if;*% zmaSQ*7i(m-W=JmvH3hx!t#OPHy&8>7aFh$W^g_J}^(kcgWS8s^ok0`ZBpXCM`94(N z*HkU9@AbHaJ>qp0hZc{((8ByO>sTule`tTNTuM96|AkudnSXnn`Zs@i{*=DY|JP|w iz|RG6`E~wkpfsGWx^`>IEFZP2r?RaVk>#Z;zOr{;J29gG literal 0 HcmV?d00001 diff --git a/instruments/other/(AY) Open Hat.fui b/instruments/other/(AY) Open Hat.fui new file mode 100644 index 0000000000000000000000000000000000000000..0466625b12f3012c4e52e2bdbbefba62b5a980e6 GIT binary patch literal 1800 zcmeH{O-{ow5QU$cpEgOUr5*r#T`7noluZR2s8lvAE7Ap<2({_`dK7L#XM!y`3B*u# z(5HMF+hdPCqiFKQep{}eH~OXARokn)0H6u0yZhDSTMQJ4ar2}fUN@z_T~|O@e}EcA zft&%6J<+l%6e7Fs@uwn`)7BwpsuGdNfwRyYN(|-@v^Fx3aip9vF3p6uGi|+l#QUXT zLYBE8#)gb6lNu7TjD6aW#tfCShD*j!DQg0<3}?%@@8m?j^JW3@*)}@umnZ#>`y=9M z*L8w<7XHIso)Y{yx9^YqZNk3z)_=aISpi!YKu62yAi!>DZcY7ahWYudKf2G`+lVAJ IZssc;0Y?ro^8f$< literal 0 HcmV?d00001 diff --git a/instruments/other/(AY) Snare A#3.fui b/instruments/other/(AY) Snare A#3.fui new file mode 100644 index 0000000000000000000000000000000000000000..238199de8704dbc9e1abac12939bb103158e71cf GIT binary patch literal 1917 zcmeH|zfQwI4934}lhU-n@mFF%4J{EuAUE7z7gj{k*P@t%LX-}Egq x_S5~h<=6Oso%#fHF7o?HZ_-y&y$HBv$Mok?TJl>?c4CGQT3GKv5I literal 0 HcmV?d00001 From 807848cfee501f2d50cdd386c199b6c4b1e4f181 Mon Sep 17 00:00:00 2001 From: ZeroByteOrg Date: Wed, 29 Jun 2022 16:59:47 -0500 Subject: [PATCH 169/580] Fix LFO disable/enable behavior for YM2151. --- src/engine/platform/arcade.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 1be61fa2..47cc1b60 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -172,7 +172,7 @@ void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, si w.addrOrVal=true; } } - + OPM_Clock(&fm,NULL,NULL,NULL,NULL); OPM_Clock(&fm,NULL,NULL,NULL,NULL); OPM_Clock(&fm,NULL,NULL,NULL,NULL); @@ -182,13 +182,13 @@ void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, si for (int i=0; i<8; i++) { oscBuf[i]->data[oscBuf[i]->needle++]=fm.ch_out[i]; } - + if (o[0]<-32768) o[0]=-32768; if (o[0]>32767) o[0]=32767; if (o[1]<-32768) o[1]=-32768; if (o[1]>32767) o[1]=32767; - + bufL[h]=o[0]; bufR[h]=o[1]; } @@ -211,7 +211,7 @@ void DivPlatformArcade::acquire_ymfm(short* bufL, short* bufR, size_t start, siz delay=1; } } - + fm_ymfm->generate(&out_ymfm); for (int i=0; i<8; i++) { @@ -225,7 +225,7 @@ void DivPlatformArcade::acquire_ymfm(short* bufL, short* bufR, size_t start, siz os[1]=out_ymfm.data[1]; if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; - + bufL[h]=os[0]; bufR[h]=os[1]; } @@ -616,6 +616,12 @@ int DivPlatformArcade::dispatch(DivCommand c) { break; } case DIV_CMD_FM_LFO: { + if(c.value==0) { + rWrite(0x01,0x02); + } + else { + rWrite(0x01,0x00); + } rWrite(0x18,c.value); break; } @@ -938,6 +944,8 @@ void DivPlatformArcade::reset() { pmDepth=0x7f; //rWrite(0x18,0x10); + immWrite(0x01,0x02); // LFO Off + immWrite(0x18,0x00); // LFO Freq Off immWrite(0x19,amDepth); immWrite(0x19,0x80|pmDepth); //rWrite(0x1b,0x00); From f03f6bdb8d98dcc7f71982a26119d261683e8747 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 30 Jun 2022 03:44:03 -0500 Subject: [PATCH 170/580] possibly fix compilation under macOS? --- extern/rtmidi/RtMidi.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extern/rtmidi/RtMidi.cpp b/extern/rtmidi/RtMidi.cpp index 8958e6cc..b54da7e1 100644 --- a/extern/rtmidi/RtMidi.cpp +++ b/extern/rtmidi/RtMidi.cpp @@ -40,6 +40,7 @@ #include "RtMidi.h" #include +#ifdef TARGET_OS_IPHONE #if (TARGET_OS_IPHONE == 1) #define AudioGetCurrentHostTime CAHostTimeBase::GetCurrentTime @@ -66,6 +67,7 @@ #define EndianS32_BtoN(n) n #endif +#endif // Default for Windows is to add an identifier to the port names; this // flag can be defined (e.g. in your project file) to disable this behaviour. @@ -814,7 +816,7 @@ MidiOutApi :: ~MidiOutApi( void ) // time values. // These are not available on iOS. -#if (TARGET_OS_IPHONE == 0) +#ifdef TARGET_OS_IPHONE #include #include #endif From 5eb6c505bc03158e94e78d78d653343d8ebf691f Mon Sep 17 00:00:00 2001 From: Aleksi Knutsi <53163105+host12prog@users.noreply.github.com> Date: Thu, 30 Jun 2022 17:31:10 +0700 Subject: [PATCH 171/580] Update soundunit.md --- papers/doc/7-systems/soundunit.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md index a869b6e2..08a7676b 100644 --- a/papers/doc/7-systems/soundunit.md +++ b/papers/doc/7-systems/soundunit.md @@ -1,5 +1,5 @@ -# TildeArrow Sound Unit -This is a fantasy sound chip, used in the specs2 fantasy console designed by tildearrow. It includes native support for sample playback, but with only 20K of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. +# tildearrow Sound Unit +This is a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow. It includes native support for sample playback, but with only 20K of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. # Effects - `10xx`: set waveform - 0: pulse wave @@ -8,8 +8,8 @@ This is a fantasy sound chip, used in the specs2 fantasy console designed by til - 3: triangle wave - 4: noise - 5: periodic noise - - 6: TODO find name for waves 6, 7 - - 7: TODO find name for waves 6, 7 + - 6: XOR sine + - 7: XOR triangle - `12xx`: set waveform (0 to 7F) - `13xx`: set resonance of filter (0 to FF) - despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF (255) From 6a4f0ee3d997ef32dd39dc7b58e481807ad5c7a0 Mon Sep 17 00:00:00 2001 From: Aleksi Knutsi <53163105+host12prog@users.noreply.github.com> Date: Thu, 30 Jun 2022 17:36:45 +0700 Subject: [PATCH 172/580] Update README.md --- papers/doc/7-systems/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/7-systems/README.md b/papers/doc/7-systems/README.md index 439e64f6..6d428f3e 100644 --- a/papers/doc/7-systems/README.md +++ b/papers/doc/7-systems/README.md @@ -22,7 +22,7 @@ this is a list of systems that Furnace supports, including each system's effects - [Philips SAA1099](saa1099.md) - [Microchip AY8930](ay8930.md) - [VERA](vera.md) -- [TildeArrow Sound Unit](soundunit.md) +- [tildearrow Sound Unit](soundunit.md) - [Seta/Allumer X1-010](x1-010.md) - [WonderSwan](wonderswan.md) - [Bubble System WSG](bubblesystem.md) From 7725047de637bf0c5382fa39f10579f472fb2794 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Jul 2022 01:11:51 -0500 Subject: [PATCH 173/580] doc: fix soundunit.md --- papers/doc/7-systems/soundunit.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md index 08a7676b..d9d0abd7 100644 --- a/papers/doc/7-systems/soundunit.md +++ b/papers/doc/7-systems/soundunit.md @@ -1,6 +1,8 @@ # tildearrow Sound Unit -This is a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow. It includes native support for sample playback, but with only 20K of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. -# Effects +This is a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow. It includes native support for sample playback, but with only 8KB of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. + +# effects + - `10xx`: set waveform - 0: pulse wave - 1: sawtooth From e3a22ea7c19576d3447464df44f6c6e05aed9df2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Jul 2022 01:30:09 -0500 Subject: [PATCH 174/580] replace Checknobankh.fur --- demos/Checknobankh.fur | Bin 67357 -> 67930 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/demos/Checknobankh.fur b/demos/Checknobankh.fur index 75c670e9fa401eba8a9a6b2ce7e5882ae7cd2f10..ac465df985c6b2950ebf9028ae1fa94a57ec6d88 100644 GIT binary patch delta 63736 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
@h(a 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 From 02b28e6e7dd18f512e522e10e1e9532fd234f5f9 Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Fri, 1 Jul 2022 17:33:33 +0700 Subject: [PATCH 175/580] OPL: Correct CHIP_FREQBASE to match clock ratio This changes from 9440540 to 9437184 --- src/engine/platform/opl.cpp | 34 +++++++++++++++++----------------- src/engine/platform/opl.h | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 1d617355..127632e0 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1669,7 +1669,7 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { slots=drums?slotsDrums:slotsNonDrums; chanMap=drums?chanMapOPL2Drums:chanMapOPL2; outChanMap=outChanMapOPL2; - chipFreqBase=9440540*0.25; + chipFreqBase=32768*72; chans=9; melodicChans=drums?6:9; totalChans=drums?11:9; @@ -1683,7 +1683,7 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { slots=drums?slotsDrums:slotsNonDrums; chanMap=drums?chanMapOPL3Drums:chanMapOPL3; outChanMap=outChanMapOPL3; - chipFreqBase=9440540; + chipFreqBase=32768*288; chans=18; melodicChans=drums?15:18; totalChans=drums?20:18; @@ -1735,9 +1735,6 @@ void DivPlatformOPL::setFlags(unsigned int flags) { default: case 1: case 2: case 8950: switch (flags&0xff) { - case 0x00: - chipClock=COLOR_NTSC; - break; case 0x01: chipClock=COLOR_PAL*4.0/5.0; break; @@ -1753,15 +1750,15 @@ void DivPlatformOPL::setFlags(unsigned int flags) { case 0x05: chipClock=3500000.0; break; + default: + chipClock=COLOR_NTSC; + break; } rate=chipClock/72; chipRateBase=double(rate); break; case 3: switch (flags&0xff) { - case 0x00: - chipClock=COLOR_NTSC*4.0; - break; case 0x01: chipClock=COLOR_PAL*16.0/5.0; break; @@ -1774,28 +1771,31 @@ void DivPlatformOPL::setFlags(unsigned int flags) { case 0x04: chipClock=15000000.0; break; + default: + chipClock=COLOR_NTSC*4.0; + break; } rate=chipClock/288; - chipRateBase=double(rate); + chipRateBase=rate; break; case 4: switch (flags&0xff) { - case 0x02: - chipClock=33868800.0; - break; - case 0x00: - chipClock=COLOR_NTSC*8.0; - break; case 0x01: chipClock=COLOR_PAL*32.0/5.0; break; + case 0x02: + chipClock=33868800.0; + break; + default: + chipClock=COLOR_NTSC*8.0; + break; } - chipRateBase=double(chipClock)/684.0; rate=chipClock/768; + chipRateBase=chipClock/684; break; case 759: rate=48000; - chipRateBase=double(rate); + chipRateBase=rate; chipClock=rate*288; break; } diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index e949c47f..3d649736 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -95,7 +95,7 @@ class DivPlatformOPL: public DivDispatch { const unsigned char** slots; const unsigned short* chanMap; const unsigned char* outChanMap; - double chipFreqBase, chipRateBase; + int chipFreqBase, chipRateBase; int delay, chipType, oplType, chans, melodicChans, totalChans, adpcmChan, sampleBank; unsigned char lastBusy; unsigned char drumState; From 59bcd9599fd9bf969545355dcf3ac8ab73ef73b5 Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Fri, 1 Jul 2022 17:55:33 +0700 Subject: [PATCH 176/580] OPL: Missed changes from last commit --- src/engine/platform/opl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 127632e0..9373d0cd 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1539,7 +1539,7 @@ void DivPlatformOPL::reset() { } */ if (downsample) { - const unsigned int downsampledRate=(unsigned int)(49716.0*(double(rate)/chipRateBase)); + const unsigned int downsampledRate=(unsigned int)((double)rate*rate/chipRateBase); OPL3_Reset(&fm,downsampledRate); } else { OPL3_Reset(&fm,rate); @@ -1755,7 +1755,7 @@ void DivPlatformOPL::setFlags(unsigned int flags) { break; } rate=chipClock/72; - chipRateBase=double(rate); + chipRateBase=rate; break; case 3: switch (flags&0xff) { From 1e2cafcf902a1fe3685b662566eba7d1186eb40e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Jul 2022 14:05:37 -0500 Subject: [PATCH 177/580] possibly fix system file picker filter on macOS --- extern/nfd-modified/src/nfd_cocoa.mm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index 4e0f9e0b..204d79f8 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -23,7 +23,12 @@ static NSArray *BuildAllowedFileTypes( const std::vector& filterLis NSMutableArray *buildFilterList = [[NSMutableArray alloc] init]; std::string typebuf; + int index=-1; for (const std::string& i: filterList) { + index++; + if (!(index&1)) { + continue; + } typebuf=""; for (const char& j: i) { if (j==' ' || j==',' || j ==';') { From fd5f1106bc80ef1285690ca7bba3e03e44e37ccd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Jul 2022 14:13:50 -0500 Subject: [PATCH 178/580] update format.md --- papers/format.md | 1 + 1 file changed, 1 insertion(+) diff --git a/papers/format.md b/papers/format.md index 04acc618..d26ca41d 100644 --- a/papers/format.md +++ b/papers/format.md @@ -235,6 +235,7 @@ size | description | - 0xbc: reserved - 8 channels | - 0xbd: YM2612 extra features extended - 11 channels | - 0xbe: YM2612 extra features - 7 channels + | - 0xbf: T6W28 - 4 channels | - 0xde: YM2610B extended - 19 channels | - 0xe0: QSound - 19 channels | - 0xfd: Dummy System - 8 channels From fac415c8e8fe26f20e1e90d19acf7eb64f1e7667 Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Sat, 2 Jul 2022 08:19:25 +0700 Subject: [PATCH 179/580] Prepare for NGP system Also add PCM DAC as system format 0xc0 --- papers/format.md | 1 + src/engine/song.h | 2 ++ src/engine/sysDef.cpp | 29 +++++++++++++++++++++++++++++ src/gui/sysConf.cpp | 22 ++++++++++++++++++++++ 4 files changed, 54 insertions(+) diff --git a/papers/format.md b/papers/format.md index d26ca41d..bef8b1f8 100644 --- a/papers/format.md +++ b/papers/format.md @@ -236,6 +236,7 @@ size | description | - 0xbd: YM2612 extra features extended - 11 channels | - 0xbe: YM2612 extra features - 7 channels | - 0xbf: T6W28 - 4 channels + | - 0xc0: PCM DAC - 1 channel | - 0xde: YM2610B extended - 19 channels | - 0xe0: QSound - 19 channels | - 0xfd: Dummy System - 8 channels diff --git a/src/engine/song.h b/src/engine/song.h index 2248292e..d06c5737 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -114,6 +114,8 @@ enum DivSystem { DIV_SYSTEM_YM2612_FRAC, DIV_SYSTEM_YM2612_FRAC_EXT, DIV_SYSTEM_RESERVED_8, + DIV_SYSTEM_T6W28, + DIV_SYSTEM_PCM_DAC, DIV_SYSTEM_DUMMY }; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index e5a4888b..04815866 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -2082,6 +2082,35 @@ void DivEngine::registerSystems() { fmPostEffectHandler ); + sysDefs[DIV_SYSTEM_T6W28]=new DivSysDef( + "T6W28", NULL, 0xbf, 0, 4, false, true, 0, false, + "an SN76489 derivative used in Neo Geo Pocket, has independent stereo volume and noise channel frequency.", + {"Square 1", "Square 2", "Square 3", "Noise"}, + {"S1", "S2", "S3", "NO"}, + {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE}, + {DIV_INS_STD, DIV_INS_STD, DIV_INS_STD, DIV_INS_STD}, + {}, + [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { + switch (effect) { + case 0x20: // SN noise mode + dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); + break; + default: + return false; + } + return true; + } + ); + + sysDefs[DIV_SYSTEM_PCM_DAC]=new DivSysDef( + "Generic PCM DAC", NULL, 0xc0, 0, 1, false, true, 0, false, + "as generic sample playback as it gets.", + {"Sample"}, + {"PCM"}, + {DIV_CH_PCM}, + {DIV_INS_AMIGA} + ); + sysDefs[DIV_SYSTEM_DUMMY]=new DivSysDef( "Dummy System", NULL, 0xfd, 0, 8, false, true, 0, false, "this is a system designed for testing purposes.", diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 21fef35d..b34dd0b2 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -608,12 +608,34 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } break; } + case DIV_SYSTEM_PCM_DAC: { + int sampRate=(flags&65535)+1; + int bitDepth=((flags>>16)&15)+1; + bool stereo=(flags>>20)&1; + ImGui::Text("Output rate:"); + if (CWSliderInt("##SampRate",&sampRate,1,65536)) { + if (sampRate<1) sampRate=1; + if (sampRate>65536) sampRate=65536; + copyOfFlags=(flags&(~65535))|(sampRate-1); + } rightClickable + ImGui::Text("Output depth:"); + if (CWSliderInt("##BitDepth",&bitDepth,1,16)) { + if (bitDepth<1) bitDepth=1; + if (bitDepth>16) bitDepth=16; + copyOfFlags=(flags&(~(15<<16)))|((bitDepth-1)<<16); + } rightClickable + if (ImGui::Checkbox("Stereo",&stereo)) { + copyOfFlags=(flags&(~(1<<20)))|(stereo<<20); + } + break; + } case DIV_SYSTEM_GB: case DIV_SYSTEM_SWAN: case DIV_SYSTEM_VERA: case DIV_SYSTEM_BUBSYS_WSG: case DIV_SYSTEM_YMU759: case DIV_SYSTEM_PET: + case DIV_SYSTEM_T6W28: ImGui::Text("nothing to configure"); break; default: From 364c7c410452695ac2a95066b0cef143caf6f7a1 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 2 Jul 2022 11:59:27 +0900 Subject: [PATCH 180/580] Add Sega System E Preset It is Sega System C/2 but Master system; but this system has 2 SMS VDPs (One for foreground and another for background) and they has they own PSG output. FM addon is unofficial, but System E release of Fantasy zone II support that. MAME driver: https://github.com/mamedev/mame/blob/master/src/mame/sega/segae.cpp FM Addon example (Fantasy Zone II): https://www.youtube.com/watch?v=7dLc9UZ81CI --- src/gui/presets.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 154b44e0..a3a49496 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1282,6 +1282,29 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System E", { + DIV_SYSTEM_SMS, 64, 0, 0, + DIV_SYSTEM_SMS, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System E (with FM expansion)", { + DIV_SYSTEM_SMS, 64, 0, 0, + DIV_SYSTEM_SMS, 64, 0, 0, + DIV_SYSTEM_OPLL, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System E (with FM expansion in drums mode)", { + DIV_SYSTEM_SMS, 64, 0, 0, + DIV_SYSTEM_SMS, 64, 0, 0, + DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Sega Hang-On", { DIV_SYSTEM_OPN, 64, 0, 2, // 4MHz From 97832c6c9a13d425d1d2a260d87f84c6ec4ac2f1 Mon Sep 17 00:00:00 2001 From: Eris Lund <38136789+0x5066@users.noreply.github.com> Date: Sat, 2 Jul 2022 17:25:22 +0200 Subject: [PATCH 181/580] Add The Cheetahmen --- demos/The Cheetahmen.fur | Bin 0 -> 2454 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/The Cheetahmen.fur diff --git a/demos/The Cheetahmen.fur b/demos/The Cheetahmen.fur new file mode 100644 index 0000000000000000000000000000000000000000..105b64b11e6327f741bad1f658de1185735367e4 GIT binary patch literal 2454 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 UaoF3vLfBg-OOHJLKZtB$k0fXS2mk;8 literal 0 HcmV?d00001 From d3cd7bbb8151bb63007f061a79ca069eaea290fa Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Sun, 3 Jul 2022 01:42:47 +0700 Subject: [PATCH 182/580] Add generic PCM DAC system For use with NGP DAC and some arcade system combos --- CMakeLists.txt | 1 + src/engine/dispatchContainer.cpp | 6 +- src/engine/platform/pcmdac.cpp | 370 +++++++++++++++++++++++++++++++ src/engine/platform/pcmdac.h | 99 +++++++++ src/gui/guiConst.cpp | 1 + src/gui/sysConf.cpp | 8 +- 6 files changed, 481 insertions(+), 4 deletions(-) create mode 100644 src/engine/platform/pcmdac.cpp create mode 100644 src/engine/platform/pcmdac.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5312692a..dbf3ada7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,6 +448,7 @@ src/engine/platform/scc.cpp src/engine/platform/ymz280b.cpp src/engine/platform/namcowsg.cpp src/engine/platform/rf5c68.cpp +src/engine/platform/pcmdac.cpp src/engine/platform/dummy.cpp ) diff --git a/src/engine/dispatchContainer.cpp b/src/engine/dispatchContainer.cpp index 227f6067..8d8db5c5 100644 --- a/src/engine/dispatchContainer.cpp +++ b/src/engine/dispatchContainer.cpp @@ -54,6 +54,7 @@ #include "platform/su.h" #include "platform/swan.h" #include "platform/lynx.h" +#include "platform/zxbeeper.h" #include "platform/bubsyswsg.h" #include "platform/n163.h" #include "platform/pet.h" @@ -64,9 +65,9 @@ #include "platform/scc.h" #include "platform/ymz280b.h" #include "platform/rf5c68.h" +#include "platform/pcmdac.h" #include "platform/dummy.h" #include "../ta-log.h" -#include "platform/zxbeeper.h" #include "song.h" void DivDispatchContainer::setRates(double gotRate) { @@ -395,6 +396,9 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do dispatch=new DivPlatformNamcoWSG; ((DivPlatformNamcoWSG*)dispatch)->setDeviceType(30); break; + case DIV_SYSTEM_PCM_DAC: + dispatch=new DivPlatformPCMDAC; + break; case DIV_SYSTEM_DUMMY: dispatch=new DivPlatformDummy; break; diff --git a/src/engine/platform/pcmdac.cpp b/src/engine/platform/pcmdac.cpp new file mode 100644 index 00000000..314ba7dd --- /dev/null +++ b/src/engine/platform/pcmdac.cpp @@ -0,0 +1,370 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#define _USE_MATH_DEFINES +#include "pcmdac.h" +#include "../engine.h" +#include + +// to ease the driver, freqency register is a 8.16 counter relative to output sample rate +#define CHIP_FREQBASE 65536 + +void DivPlatformPCMDAC::acquire(short* bufL, short* bufR, size_t start, size_t len) { + const int depthScale=(15-outDepth); + int output=0; + for (size_t h=start; hdata[oscBuf->needle++]=0; + continue; + } + if (chan.useWave || (chan.sample>=0 && chan.samplesong.sampleLen)) { + chan.audPos+=chan.freq>>16; + chan.audSub+=(chan.freq&0xffff); + if (chan.audSub>=0x10000) { + chan.audSub-=0x10000; + chan.audPos+=1; + } + if (chan.useWave) { + if (chan.audPos>=(unsigned int)(chan.audLen<<1)) { + chan.audPos=0; + } + output=(chan.ws.output[chan.audPos]^0x80)<<8; + } else { + DivSample* s=parent->getSample(chan.sample); + if (s->samples>0) { + if (chan.audPos>=s->samples) { + if (s->loopStart>=0 && s->loopStart<(int)s->samples) { + chan.audPos=s->loopStart; + } else { + chan.sample=-1; + } + } + if (chan.audPossamples) { + output=s->data16[chan.audPos]; + } + } else { + chan.sample=-1; + } + } + } + output=output*chan.vol*chan.envVol/16384; + oscBuf->data[oscBuf->needle++]=output; + if (outStereo) { + bufL[h]=((output*chan.panL)>>(depthScale+8))<>(depthScale+8))<>depthScale)<getIns(chan.ins,DIV_INS_AMIGA); + double off=1.0; + if (!chan.useWave && chan.sample>=0 && chan.samplesong.sampleLen) { + DivSample* s=parent->getSample(chan.sample); + off=(s->centerRate>=1)?((double)s->centerRate/8363.0):1.0; + } + chan.freq=off*parent->calcFreq(chan.baseFreq,chan.pitch,false,2,chan.pitch2,chipClock,CHIP_FREQBASE); + if (chan.freq>16777215) chan.freq=16777215; + if (chan.keyOn) { + if (!chan.std.vol.had) { + chan.envVol=64; + } + chan.keyOn=false; + } + if (chan.keyOff) { + chan.keyOff=false; + } + chan.freqChanged=false; + } +} + +int DivPlatformPCMDAC::dispatch(DivCommand c) { + switch (c.cmd) { + case DIV_CMD_NOTE_ON: { + DivInstrument* ins=parent->getIns(chan.ins,DIV_INS_AMIGA); + if (ins->amiga.useWave) { + chan.useWave=true; + chan.audLen=(ins->amiga.waveLen+1)>>1; + if (chan.insChanged) { + if (chan.wave<0) { + chan.wave=0; + chan.ws.setWidth(chan.audLen<<1); + chan.ws.changeWave1(chan.wave); + } + } + } else { + chan.sample=ins->amiga.getSample(c.value); + chan.useWave=false; + } + if (c.value!=DIV_NOTE_NULL) { + chan.baseFreq=round(NOTE_FREQUENCY(c.value)); + } + if (chan.useWave || chan.sample<0 || chan.sample>=parent->song.sampleLen) { + chan.sample=-1; + } + if (chan.setPos) { + chan.setPos=false; + } else { + chan.audPos=0; + } + chan.audSub=0; + if (c.value!=DIV_NOTE_NULL) { + chan.freqChanged=true; + chan.note=c.value; + } + chan.active=true; + chan.keyOn=true; + chan.macroInit(ins); + if (!parent->song.brokenOutVol && !chan.std.vol.will) { + chan.envVol=64; + } + if (chan.useWave) { + chan.ws.init(ins,chan.audLen<<1,255,chan.insChanged); + } + chan.insChanged=false; + break; + } + case DIV_CMD_NOTE_OFF: + chan.sample=-1; + chan.active=false; + chan.keyOff=true; + chan.macroInit(NULL); + break; + case DIV_CMD_NOTE_OFF_ENV: + case DIV_CMD_ENV_RELEASE: + chan.std.release(); + break; + case DIV_CMD_INSTRUMENT: + if (chan.ins!=c.value || c.value2==1) { + chan.ins=c.value; + chan.insChanged=true; + } + break; + case DIV_CMD_VOLUME: + if (chan.vol!=c.value) { + chan.vol=c.value; + if (!chan.std.vol.has) { + chan.envVol=64; + } + } + break; + case DIV_CMD_GET_VOLUME: + return chan.vol; + break; + case DIV_CMD_PANNING: + chan.panL=c.value; + chan.panR=c.value2; + break; + case DIV_CMD_PITCH: + chan.pitch=c.value; + chan.freqChanged=true; + break; + case DIV_CMD_WAVE: + if (!chan.useWave) break; + chan.wave=c.value; + chan.keyOn=true; + chan.ws.changeWave1(chan.wave); + break; + case DIV_CMD_NOTE_PORTA: { + DivInstrument* ins=parent->getIns(chan.ins,DIV_INS_AMIGA); + chan.sample=ins->amiga.getSample(c.value2); + int destFreq=round(NOTE_FREQUENCY(c.value2)); + bool return2=false; + if (destFreq>chan.baseFreq) { + chan.baseFreq+=c.value; + if (chan.baseFreq>=destFreq) { + chan.baseFreq=destFreq; + return2=true; + } + } else { + chan.baseFreq-=c.value; + if (chan.baseFreq<=destFreq) { + chan.baseFreq=destFreq; + return2=true; + } + } + chan.freqChanged=true; + if (return2) { + chan.inPorta=false; + return 2; + } + break; + } + case DIV_CMD_LEGATO: { + chan.baseFreq=round(NOTE_FREQUENCY(c.value+((chan.std.arp.will && !chan.std.arp.mode)?(chan.std.arp.val):(0)))); + chan.freqChanged=true; + chan.note=c.value; + break; + } + case DIV_CMD_PRE_PORTA: + if (chan.active && c.value2) { + if (parent->song.resetMacroOnPorta) chan.macroInit(parent->getIns(chan.ins,DIV_INS_AMIGA)); + } + chan.inPorta=c.value; + break; + case DIV_CMD_SAMPLE_POS: + if (chan.useWave) break; + chan.audPos=c.value; + chan.setPos=true; + break; + case DIV_CMD_GET_VOLMAX: + return 255; + break; + case DIV_ALWAYS_SET_VOLUME: + return 1; + break; + default: + break; + } + return 1; +} + +void DivPlatformPCMDAC::muteChannel(int ch, bool mute) { + isMuted=mute; +} + +void DivPlatformPCMDAC::forceIns() { + chan.insChanged=true; + chan.freqChanged=true; + chan.audPos=0; + chan.sample=-1; +} + +void* DivPlatformPCMDAC::getChanState(int ch) { + return &chan; +} + +DivDispatchOscBuffer* DivPlatformPCMDAC::getOscBuffer(int ch) { + return oscBuf; +} + +void DivPlatformPCMDAC::reset() { + chan=DivPlatformPCMDAC::Channel(); + chan.std.setEngine(parent); + chan.ws.setEngine(parent); + chan.ws.init(NULL,32,255); +} + +bool DivPlatformPCMDAC::isStereo() { + return true; +} + +DivMacroInt* DivPlatformPCMDAC::getChanMacroInt(int ch) { + return &chan.std; +} + +void DivPlatformPCMDAC::notifyInsChange(int ins) { + if (chan.ins==ins) { + chan.insChanged=true; + } +} + +void DivPlatformPCMDAC::notifyWaveChange(int wave) { + if (chan.useWave && chan.wave==wave) { + chan.ws.changeWave1(wave); + } +} + +void DivPlatformPCMDAC::notifyInsDeletion(void* ins) { + chan.std.notifyInsDeletion((DivInstrument*)ins); +} + +void DivPlatformPCMDAC::setFlags(unsigned int flags) { + // default to 44100Hz 16-bit stereo + if (!flags) flags=0x1f0000|44099; + rate=(flags&0xffff)+1; + // rate can't be too low or the resampler will break + if (rate<1000) rate=1000; + chipClock=rate; + outDepth=(flags>>16)&0xf; + outStereo=(flags>>20)&1; +} + +int DivPlatformPCMDAC::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { + parent=p; + dumpWrites=false; + skipRegisterWrites=false; + oscBuf=new DivDispatchOscBuffer; + isMuted=false; + setFlags(flags); + reset(); + return 1; +} + +void DivPlatformPCMDAC::quit() { + delete oscBuf; +} diff --git a/src/engine/platform/pcmdac.h b/src/engine/platform/pcmdac.h new file mode 100644 index 00000000..c372219c --- /dev/null +++ b/src/engine/platform/pcmdac.h @@ -0,0 +1,99 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef _PCM_DAC_H +#define _PCM_DAC_H + +#include "../dispatch.h" +#include +#include "../macroInt.h" +#include "../waveSynth.h" + +class DivPlatformPCMDAC: public DivDispatch { + struct Channel { + int freq, baseFreq, pitch, pitch2; + unsigned int audLoc; + unsigned short audLen; + unsigned int audPos; + int audSub; + int sample, wave, ins; + int note; + int panL, panR; + bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, useWave, setPos; + int vol, envVol; + DivMacroInt std; + DivWaveSynth ws; + void macroInit(DivInstrument* which) { + std.init(which); + pitch2=0; + } + Channel(): + freq(0), + baseFreq(0), + pitch(0), + pitch2(0), + audLoc(0), + audLen(0), + audPos(0), + audSub(0), + sample(-1), + wave(-1), + ins(-1), + panL(255), + panR(255), + note(0), + active(false), + insChanged(true), + freqChanged(false), + keyOn(false), + keyOff(false), + inPorta(false), + useWave(false), + setPos(false), + vol(255), + envVol(64) {} + }; + Channel chan; + DivDispatchOscBuffer* oscBuf; + bool isMuted; + int outDepth; + bool outStereo; + + friend void putDispatchChan(void*,int,int); + + public: + void acquire(short* bufL, short* bufR, size_t start, size_t len); + int dispatch(DivCommand c); + void* getChanState(int chan); + DivDispatchOscBuffer* getOscBuffer(int chan); + void reset(); + void forceIns(); + void tick(bool sysTick=true); + void muteChannel(int ch, bool mute); + bool isStereo(); + DivMacroInt* getChanMacroInt(int ch); + void setFlags(unsigned int flags); + void notifyInsChange(int ins); + void notifyWaveChange(int wave); + void notifyInsDeletion(void* ins); + int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); + void quit(); +}; + +#endif diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 80f9b5d8..566a12e1 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -894,6 +894,7 @@ const int availableSystems[]={ DIV_SYSTEM_MSM6258, DIV_SYSTEM_MSM6295, DIV_SYSTEM_RF5C68, + DIV_SYSTEM_PCM_DAC, 0 // don't remove this last one! }; diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index b34dd0b2..89446e3b 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -609,16 +609,18 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool break; } case DIV_SYSTEM_PCM_DAC: { + // default to 44100Hz 16-bit stereo + if (!flags) copyOfFlags=flags=0x1f0000|44099; int sampRate=(flags&65535)+1; int bitDepth=((flags>>16)&15)+1; bool stereo=(flags>>20)&1; ImGui::Text("Output rate:"); - if (CWSliderInt("##SampRate",&sampRate,1,65536)) { - if (sampRate<1) sampRate=1; + if (CWSliderInt("##SampRate",&sampRate,1000,65536)) { + if (sampRate<1000) sampRate=1000; if (sampRate>65536) sampRate=65536; copyOfFlags=(flags&(~65535))|(sampRate-1); } rightClickable - ImGui::Text("Output depth:"); + ImGui::Text("Output bit depth:"); if (CWSliderInt("##BitDepth",&bitDepth,1,16)) { if (bitDepth<1) bitDepth=1; if (bitDepth>16) bitDepth=16; From caa1c2c93daaf9d1b0aca321dd156b2f25f3ec73 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Jul 2022 01:29:41 -0500 Subject: [PATCH 183/580] D E M O --- demos/massive_x_opz.fur | Bin 0 -> 5836 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/massive_x_opz.fur diff --git a/demos/massive_x_opz.fur b/demos/massive_x_opz.fur new file mode 100644 index 0000000000000000000000000000000000000000..f32a1f26c6c6201f8d664037d5396a532135b79d GIT binary patch literal 5836 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 Date: Sun, 3 Jul 2022 20:11:04 +0700 Subject: [PATCH 184/580] Fix GCC errors --- src/engine/platform/pcmdac.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/pcmdac.h b/src/engine/platform/pcmdac.h index c372219c..60d2a6fc 100644 --- a/src/engine/platform/pcmdac.h +++ b/src/engine/platform/pcmdac.h @@ -55,9 +55,9 @@ class DivPlatformPCMDAC: public DivDispatch { sample(-1), wave(-1), ins(-1), + note(0), panL(255), panR(255), - note(0), active(false), insChanged(true), freqChanged(false), From c3a693e804c3e5f9a33af368f22aafa7df54c345 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Jul 2022 23:02:25 -0500 Subject: [PATCH 185/580] GUI: possibly fix replace crashes --- src/gui/findReplace.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 78abce7c..69303c6f 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -997,16 +997,16 @@ void FurnaceGUI::drawFindReplace() { ImGui::TableNextColumn(); ImGui::BeginDisabled(!queryReplaceEffectValDo[i]); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::Combo("##ERMode",&queryReplaceEffectValMode[i],queryReplaceModes,GUI_QUERY_REPLACE_MAX); + ImGui::Combo("##ERModeV",&queryReplaceEffectValMode[i],queryReplaceModes,GUI_QUERY_REPLACE_MAX); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_SET) { - if (ImGui::InputScalar("##ERValueH",ImGuiDataType_S32,&queryReplaceEffectVal[i],&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { + if (ImGui::InputScalar("##ERValueVH",ImGuiDataType_S32,&queryReplaceEffectVal[i],&_ONE,&_SIXTEEN,"%.2X",ImGuiInputTextFlags_CharsHexadecimal)) { if (queryReplaceEffectVal[i]<0) queryReplaceEffectVal[i]=0; if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255; } } else if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_ADD || queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_ADD_OVERFLOW) { - if (ImGui::InputInt("##ERValue",&queryReplaceEffectVal[i],1,12)) { + if (ImGui::InputInt("##ERValueV",&queryReplaceEffectVal[i],1,12)) { if (queryReplaceEffectVal[i]<-255) queryReplaceEffectVal[i]=-255; if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255; } From 4b1db78a0ba115a6f287d223a612c992adc22f61 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Jul 2022 23:02:45 -0500 Subject: [PATCH 186/580] GUI: remove debug message --- src/gui/findReplace.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 69303c6f..e982882d 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -447,7 +447,6 @@ void FurnaceGUI::doReplace() { } if (!us.pat.empty()) { - printf("pusher\n"); undoHist.push_back(us); redoHist.clear(); if (undoHist.size()>settings.maxUndoSteps) undoHist.pop_front(); From 0ec28f168ee64a3b66cc2d2fd1d902ee680d6284 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Jul 2022 23:31:35 -0500 Subject: [PATCH 187/580] more .dmf compatibility stuff --- src/engine/playback.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index d672c2d4..329c5b54 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -334,6 +334,11 @@ void DivEngine::processRow(int i, bool afterDelay) { if (chan[i].lastIns!=pat->data[whatRow][2]) { chan[i].lastIns=pat->data[whatRow][2]; insChanged=true; + if (song.legacyVolumeSlides && chan[i].volume==chan[i].volMax+1) { + logV("forcing volume"); + chan[i].volume=chan[i].volMax; + dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + } } } // note From 949e29305390e5747bad7d7bd821568e6facc683 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Jul 2022 23:43:13 -0500 Subject: [PATCH 188/580] SMS: aaaand more .dmf compatibility --- src/engine/platform/sms.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index f16d5335..28462027 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -133,7 +133,7 @@ void DivPlatformSMS::tick(bool sysTick) { if (i==3) CHIP_DIVIDER=noiseDivider; chan[i].std.next(); if (chan[i].std.vol.had) { - chan[i].outVol=MIN(15,chan[i].std.vol.val)-(15-(chan[i].vol&15)); + chan[i].outVol=VOL_SCALE_LOG(chan[i].std.vol.val,chan[i].vol,15); if (chan[i].outVol<0) chan[i].outVol=0; // old formula // ((chan[i].vol&15)*MIN(15,chan[i].std.vol.val))>>4; From f4a85bebff2de4a3b3af5556a1d3ac6974ae6ca1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 4 Jul 2022 01:43:59 -0500 Subject: [PATCH 189/580] dev101 - fix SMSFM_intro.dmf --- papers/format.md | 4 +++- src/engine/engine.h | 4 ++-- src/engine/fileOps.cpp | 14 ++++++++++++-- src/engine/platform/amiga.cpp | 1 + src/engine/platform/arcade.cpp | 1 + src/engine/platform/ay.cpp | 1 + src/engine/platform/ay8930.cpp | 1 + src/engine/platform/bubsyswsg.cpp | 1 + src/engine/platform/c64.cpp | 1 + src/engine/platform/fds.cpp | 1 + src/engine/platform/gb.cpp | 1 + src/engine/platform/lynx.cpp | 1 + src/engine/platform/mmc5.cpp | 1 + src/engine/platform/n163.cpp | 1 + src/engine/platform/namcowsg.cpp | 1 + src/engine/platform/nes.cpp | 1 + src/engine/platform/opl.cpp | 3 +++ src/engine/platform/opll.cpp | 1 + src/engine/platform/pce.cpp | 1 + src/engine/platform/pcspkr.cpp | 1 + src/engine/platform/pet.cpp | 1 + src/engine/platform/qsound.cpp | 1 + src/engine/platform/rf5c68.cpp | 1 + src/engine/platform/saa.cpp | 1 + src/engine/platform/scc.cpp | 1 + src/engine/platform/segapcm.cpp | 1 + src/engine/platform/sms.cpp | 3 +-- src/engine/platform/su.cpp | 1 + src/engine/platform/swan.cpp | 1 + src/engine/platform/tia.cpp | 1 + src/engine/platform/tx81z.cpp | 1 + src/engine/platform/vera.cpp | 1 + src/engine/platform/vic20.cpp | 1 + src/engine/platform/vrc6.cpp | 1 + src/engine/platform/x1_010.cpp | 1 + src/engine/platform/ymz280b.cpp | 1 + src/engine/platform/zxbeeper.cpp | 1 + src/engine/song.h | 4 +++- src/gui/compatFlags.cpp | 18 +++++++++++------- 39 files changed, 67 insertions(+), 15 deletions(-) diff --git a/papers/format.md b/papers/format.md index bef8b1f8..3e358346 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 101: Furnace 0.6pre1 (dev101) - 100: Furnace 0.6pre1 - 99: Furnace dev99 - 98: Furnace dev98 @@ -318,7 +319,8 @@ size | description 1 | volume macro still applies after end (>=99) or reserved 1 | broken outVol (>=99) or reserved 1 | E1xy and E2xy stop on same note (>=100) or reserved - 8 | reserved + 1 | broken initial position of porta after arp (>=101) or reserved + 7 | reserved --- | **virtual tempo data** 2 | virtual tempo numerator of first song (>=96) or reserved 2 | virtual tempo denominator of first song (>=96) or reserved diff --git a/src/engine/engine.h b/src/engine/engine.h index 962e0fcc..5f5ab1a3 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -45,8 +45,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "0.6pre1" -#define DIV_ENGINE_VERSION 100 +#define DIV_VERSION "0.6pre1 (dev101)" +#define DIV_ENGINE_VERSION 101 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index d4c45323..ddc5edf6 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -172,6 +172,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.volMacroLinger=false; ds.brokenOutVol=true; // ??? ds.e1e2StopOnSameNote=true; + ds.brokenPortaArp=false; // 1.1 compat flags if (ds.version>24) { @@ -1047,6 +1048,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { if (ds.version<100) { ds.e1e2StopOnSameNote=false; } + if (ds.version<101) { + ds.brokenPortaArp=true; + } ds.isDMF=false; reader.readS(); // reserved @@ -1448,7 +1452,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } else { reader.readC(); } - for (int i=0; i<8; i++) { + if (ds.version>=101) { + ds.brokenPortaArp=reader.readC(); + } else { + reader.readC(); + } + for (int i=0; i<7; i++) { reader.readC(); } } @@ -2922,7 +2931,8 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeC(song.volMacroLinger); w->writeC(song.brokenOutVol); w->writeC(song.e1e2StopOnSameNote); - for (int i=0; i<8; i++) { + w->writeC(song.brokenPortaArp); + for (int i=0; i<7; i++) { w->writeC(0); } diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index 8037feaf..65b44136 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -355,6 +355,7 @@ int DivPlatformAmiga::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AMIGA)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_SAMPLE_POS: diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 1be61fa2..41042cd5 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -827,6 +827,7 @@ int DivPlatformArcade::dispatch(DivCommand c) { return 127; break; case DIV_CMD_PRE_PORTA: + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_LINEAR(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 07377610..7018824b 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -474,6 +474,7 @@ int DivPlatformAY8910::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AY)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/ay8930.cpp b/src/engine/platform/ay8930.cpp index 0fad4025..581ebb9e 100644 --- a/src/engine/platform/ay8930.cpp +++ b/src/engine/platform/ay8930.cpp @@ -506,6 +506,7 @@ int DivPlatformAY8930::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AY8930)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/bubsyswsg.cpp b/src/engine/platform/bubsyswsg.cpp index 48a07880..5fe4462f 100644 --- a/src/engine/platform/bubsyswsg.cpp +++ b/src/engine/platform/bubsyswsg.cpp @@ -250,6 +250,7 @@ int DivPlatformBubSysWSG::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_SCC)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index a55b5390..640df54e 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -369,6 +369,7 @@ int DivPlatformC64::dispatch(DivCommand c) { chan[c.chan].keyOn=true; } } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/fds.cpp b/src/engine/platform/fds.cpp index ea4b83e9..f9fc5b50 100644 --- a/src/engine/platform/fds.cpp +++ b/src/engine/platform/fds.cpp @@ -406,6 +406,7 @@ int DivPlatformFDS::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_FDS)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 999d31b9..2b7dcf6d 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -393,6 +393,7 @@ int DivPlatformGB::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_GB)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GB_SWEEP_DIR: diff --git a/src/engine/platform/lynx.cpp b/src/engine/platform/lynx.cpp index 4fd30db9..3f5e92c0 100644 --- a/src/engine/platform/lynx.cpp +++ b/src/engine/platform/lynx.cpp @@ -387,6 +387,7 @@ int DivPlatformLynx::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_MIKEY)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/mmc5.cpp b/src/engine/platform/mmc5.cpp index 2b97f46f..dc9e5aba 100644 --- a/src/engine/platform/mmc5.cpp +++ b/src/engine/platform/mmc5.cpp @@ -324,6 +324,7 @@ int DivPlatformMMC5::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_STD)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/n163.cpp b/src/engine/platform/n163.cpp index 50f9d836..b20b460e 100644 --- a/src/engine/platform/n163.cpp +++ b/src/engine/platform/n163.cpp @@ -562,6 +562,7 @@ int DivPlatformN163::dispatch(DivCommand c) { chan[c.chan].keyOn=true; } } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/namcowsg.cpp b/src/engine/platform/namcowsg.cpp index 6bcf43d2..00b12793 100644 --- a/src/engine/platform/namcowsg.cpp +++ b/src/engine/platform/namcowsg.cpp @@ -442,6 +442,7 @@ int DivPlatformNamcoWSG::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_PCE)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 67ad2852..d801fe66 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -573,6 +573,7 @@ int DivPlatformNES::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_STD)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 9373d0cd..823e764b 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1434,6 +1434,9 @@ int DivPlatformOPL::dispatch(DivCommand c) { return 63; break; case DIV_CMD_PRE_PORTA: + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) { + chan[c.chan].baseFreq=(c.chan==adpcmChan)?(NOTE_ADPCMB(chan[c.chan].note)):(NOTE_FREQUENCY(chan[c.chan].note)); + } chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 08292be6..5c9611b4 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -831,6 +831,7 @@ int DivPlatformOPLL::dispatch(DivCommand c) { break; case DIV_CMD_PRE_PORTA: if (c.chan>=9 && !properDrums) return 0; + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index b8c580e5..9e1302a0 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -445,6 +445,7 @@ int DivPlatformPCE::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_PCE)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/pcspkr.cpp b/src/engine/platform/pcspkr.cpp index 57c72b67..d40a297a 100644 --- a/src/engine/platform/pcspkr.cpp +++ b/src/engine/platform/pcspkr.cpp @@ -471,6 +471,7 @@ int DivPlatformPCSpeaker::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_BEEPER)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/pet.cpp b/src/engine/platform/pet.cpp index 9b3c9988..49343627 100644 --- a/src/engine/platform/pet.cpp +++ b/src/engine/platform/pet.cpp @@ -239,6 +239,7 @@ int DivPlatformPET::dispatch(DivCommand c) { if (chan.active && c.value2) { if (parent->song.resetMacroOnPorta) chan.macroInit(parent->getIns(chan.ins,DIV_INS_PET)); } + if (!chan.inPorta && c.value && !parent->song.brokenPortaArp && chan.std.arp.will) chan.baseFreq=NOTE_PERIODIC(chan.note); chan.inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/qsound.cpp b/src/engine/platform/qsound.cpp index 8af565df..6eb14be7 100644 --- a/src/engine/platform/qsound.cpp +++ b/src/engine/platform/qsound.cpp @@ -496,6 +496,7 @@ int DivPlatformQSound::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AMIGA)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=QS_NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/rf5c68.cpp b/src/engine/platform/rf5c68.cpp index 2106a5a7..176b6e7c 100644 --- a/src/engine/platform/rf5c68.cpp +++ b/src/engine/platform/rf5c68.cpp @@ -265,6 +265,7 @@ int DivPlatformRF5C68::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AMIGA)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_SAMPLE_POS: diff --git a/src/engine/platform/saa.cpp b/src/engine/platform/saa.cpp index c562838a..103c3348 100644 --- a/src/engine/platform/saa.cpp +++ b/src/engine/platform/saa.cpp @@ -335,6 +335,7 @@ int DivPlatformSAA1099::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_SAA1099)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/scc.cpp b/src/engine/platform/scc.cpp index 8175bc01..485839bf 100644 --- a/src/engine/platform/scc.cpp +++ b/src/engine/platform/scc.cpp @@ -267,6 +267,7 @@ int DivPlatformSCC::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_SCC)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/segapcm.cpp b/src/engine/platform/segapcm.cpp index 19b8eb82..71d45298 100644 --- a/src/engine/platform/segapcm.cpp +++ b/src/engine/platform/segapcm.cpp @@ -365,6 +365,7 @@ int DivPlatformSegaPCM::dispatch(DivCommand c) { return 127; break; case DIV_CMD_PRE_PORTA: + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=(chan[c.chan].note<<6); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 28462027..3d11a5ac 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -353,9 +353,8 @@ int DivPlatformSMS::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_STD)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; - // TODO: pre porta cancel arp compat flag - //if (chan[c.chan].inPorta) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); break; case DIV_CMD_GET_VOLMAX: return 15; diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index c6860afb..f3be01a7 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -454,6 +454,7 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_SU)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/swan.cpp b/src/engine/platform/swan.cpp index 905fa82a..b3e83319 100644 --- a/src/engine/platform/swan.cpp +++ b/src/engine/platform/swan.cpp @@ -431,6 +431,7 @@ int DivPlatformSwan::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_SWAN)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index da347244..ddb38084 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -259,6 +259,7 @@ int DivPlatformTIA::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_TIA)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=(chan[c.chan].note<<8); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index 123d1193..9d24e4db 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -933,6 +933,7 @@ int DivPlatformTX81Z::dispatch(DivCommand c) { return 127; break; case DIV_CMD_PRE_PORTA: + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_LINEAR(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_PRE_NOTE: diff --git a/src/engine/platform/vera.cpp b/src/engine/platform/vera.cpp index 62e1ea68..092bbb6a 100644 --- a/src/engine/platform/vera.cpp +++ b/src/engine/platform/vera.cpp @@ -359,6 +359,7 @@ int DivPlatformVERA::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_VERA)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=calcNoteFreq(c.chan,chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_STD_NOISE_MODE: diff --git a/src/engine/platform/vic20.cpp b/src/engine/platform/vic20.cpp index 8475b0e5..771b87d1 100644 --- a/src/engine/platform/vic20.cpp +++ b/src/engine/platform/vic20.cpp @@ -243,6 +243,7 @@ int DivPlatformVIC20::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_VIC)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/vrc6.cpp b/src/engine/platform/vrc6.cpp index 08c6d053..88fcb37b 100644 --- a/src/engine/platform/vrc6.cpp +++ b/src/engine/platform/vrc6.cpp @@ -399,6 +399,7 @@ int DivPlatformVRC6::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_VRC6)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_PERIODIC(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index dc5c7ed2..e2e360b1 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -732,6 +732,7 @@ int DivPlatformX1_010::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_X1_010)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NoteX1_010(c.chan,chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_SAMPLE_FREQ: diff --git a/src/engine/platform/ymz280b.cpp b/src/engine/platform/ymz280b.cpp index 45631a94..d8d98478 100644 --- a/src/engine/platform/ymz280b.cpp +++ b/src/engine/platform/ymz280b.cpp @@ -293,6 +293,7 @@ int DivPlatformYMZ280B::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AMIGA)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_SAMPLE_POS: diff --git a/src/engine/platform/zxbeeper.cpp b/src/engine/platform/zxbeeper.cpp index 524d3c11..01702dc5 100644 --- a/src/engine/platform/zxbeeper.cpp +++ b/src/engine/platform/zxbeeper.cpp @@ -224,6 +224,7 @@ int DivPlatformZXBeeper::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_BEEPER)); } + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: diff --git a/src/engine/song.h b/src/engine/song.h index d06c5737..185cac8a 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -497,6 +497,7 @@ struct DivSong { bool volMacroLinger; bool brokenOutVol; bool e1e2StopOnSameNote; + bool brokenPortaArp; std::vector ins; std::vector wave; @@ -595,7 +596,8 @@ struct DivSong { newVolumeScaling(true), volMacroLinger(true), brokenOutVol(false), - e1e2StopOnSameNote(false) { + e1e2StopOnSameNote(false), + brokenPortaArp(false) { for (int i=0; i<32; i++) { system[i]=DIV_SYSTEM_NULL; systemVol[i]=64; diff --git a/src/gui/compatFlags.cpp b/src/gui/compatFlags.cpp index 8e5d7517..9024992e 100644 --- a/src/gui/compatFlags.cpp +++ b/src/gui/compatFlags.cpp @@ -207,31 +207,35 @@ void FurnaceGUI::drawCompatFlags() { } ImGui::Checkbox("Stop portamento on note off",&e->song.stopPortaOnNoteOff); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("behavior changed in 0.6"); + ImGui::SetTooltip("behavior changed in 0.6pre1"); } ImGui::Checkbox("Allow instrument change during slides",&e->song.newInsTriggersInPorta); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("behavior changed in 0.6"); + ImGui::SetTooltip("behavior changed in 0.6pre1"); } ImGui::Checkbox("Reset note to base on arpeggio stop",&e->song.arp0Reset); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("behavior changed in 0.6"); + ImGui::SetTooltip("behavior changed in 0.6pre1"); } ImGui::Checkbox("ExtCh channel status is shared among operators",&e->song.sharedExtStat); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("behavior changed in 0.6"); + ImGui::SetTooltip("behavior changed in 0.6pre1"); } ImGui::Checkbox("New SegaPCM features (macros and better panning)",&e->song.newSegaPCM); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("behavior changed in 0.6"); + ImGui::SetTooltip("behavior changed in 0.6pre1"); } ImGui::Checkbox("Old FM octave boundary behavior",&e->song.oldOctaveBoundary); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("behavior changed in 0.6"); + ImGui::SetTooltip("behavior changed in 0.6pre1"); } ImGui::Checkbox("No OPN2 DAC volume control",&e->song.noOPN2Vol); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("behavior changed in 0.6"); + ImGui::SetTooltip("behavior changed in 0.6pre1"); + } + ImGui::Checkbox("Broken initial position of portamento after arpeggio",&e->song.brokenPortaArp); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("behavior changed in 0.6pre1.5"); } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_COMPAT_FLAGS; From b39924c9d6a7948013a69418f881ad54b0b8ff3b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 4 Jul 2022 23:54:56 -0500 Subject: [PATCH 190/580] AY: TODO fix wtr_envelope.dmf --- src/engine/platform/ay.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 7018824b..8df5bd4c 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -471,6 +471,8 @@ int DivPlatformAY8910::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: + // TODO: FIX wtr_envelope.dmf + // the brokenPortaArp update broke it if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AY)); } From 1ed6fdd405920830e5964d8d2c045e6b77b910ae Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 5 Jul 2022 14:02:40 -0500 Subject: [PATCH 191/580] and another demo song requested by Crisps --- .../Rise_against_the_ashes_to_the_new_dawn.fur | Bin 0 -> 29292 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Rise_against_the_ashes_to_the_new_dawn.fur diff --git a/demos/Rise_against_the_ashes_to_the_new_dawn.fur b/demos/Rise_against_the_ashes_to_the_new_dawn.fur new file mode 100644 index 0000000000000000000000000000000000000000..be28182fc422cc43fdf7c3eb57c53ac124fbc10d GIT binary patch literal 29292 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 MVJ`qkQa;ZA0_tTL Date: Thu, 7 Jul 2022 04:09:50 +0900 Subject: [PATCH 192/580] Fix typo --- src/gui/sysConf.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index b34dd0b2..9cd963cc 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -569,7 +569,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool case DIV_SYSTEM_OPL3: case DIV_SYSTEM_OPL3_DRUMS: { ImGui::Text("Clock rate:"); - if (ImGui::RadioButton("14.32MHz (MTSC)",(flags&255)==0)) { + if (ImGui::RadioButton("14.32MHz (NTSC)",(flags&255)==0)) { copyOfFlags=(flags&(~255))|0; } if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==1)) { @@ -591,7 +591,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("16.9344MHz",(flags&255)==0)) { copyOfFlags=(flags&(~255))|0; } - if (ImGui::RadioButton("14.32MHz (MTSC)",(flags&255)==1)) { + if (ImGui::RadioButton("14.32MHz (NTSC)",(flags&255)==1)) { copyOfFlags=(flags&(~255))|1; } if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==3)) { From fe94ea8e041d7c9662f999f6661fd8b453d1a387 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 7 Jul 2022 04:10:32 +0900 Subject: [PATCH 193/580] Fix typo --- src/engine/song.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/engine/song.h b/src/engine/song.h index 185cac8a..26640fdd 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -353,7 +353,7 @@ struct DivSong { // - 1: stereo // - YM2203: // - bit 0-4: clock rate - // - 0: 3.58MHz (MTSC) + // - 0: 3.58MHz (NTSC) // - 1: 3.55MHz (PAL) // - 2: 4MHz // - 3: 3MHz @@ -373,7 +373,7 @@ struct DivSong { // - 2: FM: clock / 48, SSG: clock / 8 // - YM3526, YM3812, Y8950: // - bit 0-7: clock rate - // - 0: 3.58MHz (MTSC) + // - 0: 3.58MHz (NTSC) // - 1: 3.55MHz (PAL) // - 2: 4MHz // - 3: 3MHz @@ -381,7 +381,7 @@ struct DivSong { // - 5: 3.5MHz // - YMF262: // - bit 0-7: clock rate - // - 0: 14.32MHz (MTSC) + // - 0: 14.32MHz (NTSC) // - 1: 14.19MHz (PAL) // - 2: 14MHz // - 3: 16MHz @@ -389,7 +389,7 @@ struct DivSong { // - YMF289B: (TODO) // - bit 0-7: clock rate // - 0: 33.8688MHz - // - 1: 28.64MHz (MTSC) + // - 1: 28.64MHz (NTSC) // - 2: 28.38MHz (PAL) // - MSM6295: // - bit 0-6: clock rate @@ -420,7 +420,7 @@ struct DivSong { // - YMZ280B: // - bit 0-7: clock rate // - 0: 16.9344MHz - // - 1: 14.32MHz (MTSC) + // - 1: 14.32MHz (NTSC) // - 2: 14.19MHz (PAL) // - 3: 16MHz // - 4: 16.67MHz From 899fa9e494037769a305adfd51ed5b74984a1ffa Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Thu, 7 Jul 2022 08:34:04 +0900 Subject: [PATCH 194/580] Made new FM presets to include in Furnace's repo. --- instruments/FM/bass/Acoustic Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Electric Finger Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Electric Fretless Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Electric Picked Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Electric Slap Bass.dmp | Bin 0 -> 51 bytes instruments/FM/bass/SC-55 Synth Bass 1.dmp | Bin 0 -> 51 bytes instruments/FM/bass/SC-55 SynthBass101.dmp | Bin 0 -> 51 bytes instruments/FM/bass/Yamaha MU Synth Bass 2.dmp | Bin 0 -> 51 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/FM/bass/Acoustic Bass.dmp create mode 100644 instruments/FM/bass/Electric Finger Bass.dmp create mode 100644 instruments/FM/bass/Electric Fretless Bass.dmp create mode 100644 instruments/FM/bass/Electric Picked Bass.dmp create mode 100644 instruments/FM/bass/Electric Slap Bass.dmp create mode 100644 instruments/FM/bass/SC-55 Synth Bass 1.dmp create mode 100644 instruments/FM/bass/SC-55 SynthBass101.dmp create mode 100644 instruments/FM/bass/Yamaha MU Synth Bass 2.dmp diff --git a/instruments/FM/bass/Acoustic Bass.dmp b/instruments/FM/bass/Acoustic Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..fb37c096d2dbf510c129efa4704d151ee2a75d56 GIT binary patch literal 51 zcmd;PVq^dURvAelW;O-}Mm`2cQE7I5Ad>}%h1FaBccIm literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/SC-55 Synth Bass 1.dmp b/instruments/FM/bass/SC-55 Synth Bass 1.dmp new file mode 100644 index 0000000000000000000000000000000000000000..9ac496227582b59815395d3b7d5b5939cad5f126 GIT binary patch literal 51 xcmW;ASqcCk2tdK7iO>Re1L>q)z2$G1u7WEvb3{QMWTheSxU+>pxg=}!zXvR~0l@$O literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/SC-55 SynthBass101.dmp b/instruments/FM/bass/SC-55 SynthBass101.dmp new file mode 100644 index 0000000000000000000000000000000000000000..2feefab3fad45e906cdf4dc318a80bb5182350d9 GIT binary patch literal 51 wcmW;AISv3I2mrwa)I=$0>3FJN_vj|$Ds)A&JPaKmS%kpjt`!aJlA7Uv4=w!x$^ZZW literal 0 HcmV?d00001 diff --git a/instruments/FM/bass/Yamaha MU Synth Bass 2.dmp b/instruments/FM/bass/Yamaha MU Synth Bass 2.dmp new file mode 100644 index 0000000000000000000000000000000000000000..08f8faca499186c66b47d5adba4c61930dae1ffe GIT binary patch literal 51 zcmWm2I}!j83_!sbpD@VK&?wyhmgsi2Iw1yR?vg5^kv5lU#;YOz@D}YjJ3W66E+(=8 Ai2wiq literal 0 HcmV?d00001 From af33876caf4c01ee9370507828183e558ab96191 Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Thu, 7 Jul 2022 08:34:53 +0900 Subject: [PATCH 195/580] To be used with acoustic string instruments. --- instruments/FM/effect/Acoustic String Slap SFX.dmp | Bin 0 -> 51 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/FM/effect/Acoustic String Slap SFX.dmp diff --git a/instruments/FM/effect/Acoustic String Slap SFX.dmp b/instruments/FM/effect/Acoustic String Slap SFX.dmp new file mode 100644 index 0000000000000000000000000000000000000000..a60d21e9cee9d279fd6c9e9ef9f91f6d0aab69c3 GIT binary patch literal 51 ycmWlO%MJh#48S^s;4rVV{r_K@q=%;MK`0609@-!{!h%F60Regd literal 0 HcmV?d00001 From b2134472ebc6426b3ef26316cdc2e0aa86181324 Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Thu, 7 Jul 2022 08:35:34 +0900 Subject: [PATCH 196/580] Made new FM presets to include in Furnace's repo. --- instruments/FM/bass/Basses.opm | 87 ++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 instruments/FM/bass/Basses.opm diff --git a/instruments/FM/bass/Basses.opm b/instruments/FM/bass/Basses.opm new file mode 100644 index 00000000..0b308cbf --- /dev/null +++ b/instruments/FM/bass/Basses.opm @@ -0,0 +1,87 @@ +//LFO: LFRQ AMD PMD WF NFRQ +//@:[Num] [Name] +//CH: PAN FL CON AMS PMS SLOT NE +//OP: AR D1R D2R RR D1L TL KS MUL DT1 DT2 AMS-EN + +// vgm offset = 000001d3, channels used = 1------- +@:0 Acoustic Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 25 18 14 6 3 28 0 5 6 0 0 +C1: 28 26 8 6 7 31 0 4 2 0 0 +M2: 27 7 0 6 15 21 0 1 1 0 0 +C2: 29 11 10 8 2 0 0 1 3 0 0 + +// vgm offset = 0000024e, channels used = 12------ +@:1 StringSlapSFX +LFO: 0 0 0 0 0 +CH: 64 7 4 0 0 120 0 +M1: 19 16 0 10 15 3 0 0 5 0 0 +C1: 31 20 0 9 15 4 0 7 0 0 0 +M2: 31 18 0 1 15 16 0 2 3 0 0 +C2: 31 17 0 9 15 30 0 1 3 0 0 + +// vgm offset = 0000093e, channels used = 1------- +@:2 Finger Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 31 15 0 11 1 31 0 3 3 0 0 +C1: 31 13 0 10 1 46 0 2 3 0 0 +M2: 31 10 0 10 1 24 0 1 3 0 0 +C2: 31 4 0 11 15 0 0 1 3 0 0 + +// vgm offset = 00000b30, channels used = 1------- +@:3 Fretless Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 31 0 0 3 15 21 0 1 5 0 0 +C1: 31 0 0 6 15 54 0 1 0 0 0 +M2: 31 0 0 7 11 26 0 1 5 0 0 +C2: 31 4 0 12 15 2 0 1 0 0 0 + +// vgm offset = 00000d2b, channels used = 1------- +@:4 Picked Bass +LFO: 0 0 0 0 0 +CH: 64 0 0 0 0 120 0 +M1: 31 18 1 11 3 24 0 5 3 0 0 +C1: 31 18 2 10 1 33 0 3 3 0 0 +M2: 31 10 3 10 1 33 0 1 3 0 0 +C2: 31 4 0 11 15 0 0 1 3 0 0 + +// vgm offset = 00000f2c, channels used = 1------- +@:5 Slap Bass +LFO: 0 0 0 0 0 +CH: 64 0 2 0 0 120 0 +M1: 31 20 0 3 15 0 1 0 0 0 0 +C1: 31 23 0 4 0 43 0 15 3 0 0 +M2: 31 17 0 1 2 16 1 1 3 0 0 +C2: 31 9 0 10 15 2 0 1 3 0 0 + +// vgm offset = 00001444, channels used = 1------- +@:6 Synth Bass 1 +LFO: 0 0 0 0 0 +CH: 64 6 2 0 0 120 0 +M1: 31 12 0 3 15 16 2 1 3 0 0 +C1: 31 10 0 4 15 127 0 1 0 0 0 +M2: 31 4 0 1 0 33 0 1 3 0 0 +C2: 31 9 0 11 15 0 0 1 3 0 0 + +// vgm offset = 0000189b, channels used = 1------- +@:7 SynthBass101 +LFO: 0 0 0 0 0 +CH: 64 5 2 0 0 120 0 +M1: 31 11 0 3 15 24 2 2 3 0 0 +C1: 31 10 0 4 15 127 0 1 0 0 0 +M2: 31 0 0 1 15 24 0 1 3 0 0 +C2: 31 9 0 11 15 0 0 1 3 0 0 + +// vgm offset = 00001d22, channels used = 1------- +@:8 Synth Bass 2 +LFO: 0 0 0 0 0 +CH: 64 5 4 0 0 120 0 +M1: 27 10 5 11 7 21 1 1 3 0 0 +C1: 31 0 15 11 7 3 0 1 3 0 0 +M2: 22 13 13 8 6 21 3 12 3 0 0 +C2: 31 15 16 11 8 13 0 2 3 0 0 + + From c2f1385703c70dddd82f26dfc22d7ab09e3714d9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 8 Jul 2022 02:25:25 -0500 Subject: [PATCH 197/580] MSM6258: fix position not being reset in furnace s ample mode --- src/engine/platform/msm6258.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/msm6258.cpp b/src/engine/platform/msm6258.cpp index 731bf8f2..dc81950e 100644 --- a/src/engine/platform/msm6258.cpp +++ b/src/engine/platform/msm6258.cpp @@ -121,6 +121,7 @@ int DivPlatformMSM6258::dispatch(DivCommand c) { chan[c.chan].outVol=chan[c.chan].vol; } sample=ins->amiga.getSample(c.value); + samplePos=0; if (sample>=0 && samplesong.sampleLen) { //DivSample* s=parent->getSample(chan[c.chan].sample); if (c.value!=DIV_NOTE_NULL) { @@ -144,8 +145,8 @@ int DivPlatformMSM6258::dispatch(DivCommand c) { //DivSample* s=parent->getSample(12*sampleBank+c.value%12); sample=12*sampleBank+c.value%12; samplePos=0; - msm->ctrl_w(1); - msm->ctrl_w(2); + rWrite(0,1); + rWrite(0,2); } break; } From c85b67b1da57a282cef3191de38a61ef6c51ccd0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 9 Jul 2022 15:55:27 -0500 Subject: [PATCH 198/580] NES + chip -> Famicom + chip --- src/engine/sysDef.cpp | 12 ++++++------ src/gui/presets.cpp | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 04815866..a5b689b2 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -165,25 +165,25 @@ String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_VRC6) { - return "NES + Konami VRC6"; + return "Famicom + Konami VRC6"; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_VRC7) { - return "NES + Konami VRC7"; + return "Famicom + Konami VRC7"; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_OPLL) { - return "NES + Yamaha OPLL"; + return "Family Noraebang"; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_FDS) { return "Famicom Disk System"; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_N163) { - return "NES + Namco C163"; + return "Famicom + Namco C163"; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_MMC5) { - return "NES + MMC5"; + return "Famicom + MMC5"; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_AY8910) { - return "NES + Sunsoft 5B"; + return "Famicom + Sunsoft 5B"; } if (song.system[0]==DIV_SYSTEM_AY8910 && song.system[1]==DIV_SYSTEM_AY8910) { diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index a3a49496..3774f232 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -589,49 +589,49 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with Konami VRC6", { + "Famicom with Konami VRC6", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_VRC6, 64, 0, 0, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with Konami VRC7", { + "Famicom with Konami VRC7", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_VRC7, 64, 0, 0, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with MMC5", { + "Famicom with MMC5", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_MMC5, 64, 0, 0, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with Sunsoft 5B", { + "Famicom with Sunsoft 5B", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_AY8910, 64, 0, 32, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with Namco C163", { + "Famicom with Namco C163", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_N163, 64, 0, 112, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with Family Noraebang", { + "Comboy with Family Noraebang", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_OPLL, 64, 0, 0, 0 } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with Family Noraebang (drums mode)", { + "Comboy with Family Noraebang (drums mode)", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, 0 @@ -2094,7 +2094,7 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "NES with Konami VRC7", { + "Famicom with Konami VRC7", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_VRC7, 64, 0, 0, 0 From 8104b717cdebdc1305e8d56e18d36d1b2a7201aa Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 11 Jul 2022 13:48:37 -0500 Subject: [PATCH 199/580] i knew it --- .../bass/{acoustic bass.dmp => Acoustic Bass 2.dmp} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename instruments/FM/bass/{acoustic bass.dmp => Acoustic Bass 2.dmp} (100%) diff --git a/instruments/FM/bass/acoustic bass.dmp b/instruments/FM/bass/Acoustic Bass 2.dmp similarity index 100% rename from instruments/FM/bass/acoustic bass.dmp rename to instruments/FM/bass/Acoustic Bass 2.dmp From 15ab8cc49bbf120dc821a2046cde39c9d7cf497d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 12 Jul 2022 18:45:54 -0500 Subject: [PATCH 200/580] YM2612: fix a CSM issue with key off --- src/engine/platform/genesisext.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 1c44bcfb..bfe771a6 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -418,6 +418,16 @@ void DivPlatformGenesisExt::tick(bool sysTick) { } } if (writeSomething) { + if (chan[7].active) { // CSM + writeMask^=0xf0; + } + /*printf( + "Mask: %c %c %c %c\n", + (writeMask&0x10)?'1':'-', + (writeMask&0x20)?'2':'-', + (writeMask&0x40)?'3':'-', + (writeMask&0x80)?'4':'-' + );*/ immWrite(0x28,writeMask); } } @@ -478,6 +488,13 @@ void DivPlatformGenesisExt::tick(bool sysTick) { if (chan[7].active) { // CSM writeMask^=0xf0; } + /*printf( + "Mask: %c %c %c %c\n", + (writeMask&0x10)?'1':'-', + (writeMask&0x20)?'2':'-', + (writeMask&0x40)?'3':'-', + (writeMask&0x80)?'4':'-' + );*/ immWrite(0x28,writeMask); } From 2f98da56756ccb82b940bc69f4591eed17de1e7d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 12 Jul 2022 19:15:10 -0500 Subject: [PATCH 201/580] GUI: sample editor icon improvements --- src/gui/sampleEdit.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 7264baed..b684a0c7 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -335,7 +335,7 @@ void FurnaceGUI::drawSampleEdit() { if (silenceSize<0) silenceSize=0; if (silenceSize>16777215) silenceSize=16777215; } - if (ImGui::Button("Resize")) { + if (ImGui::Button("Go")) { int pos=(sampleSelStart==-1 || sampleSelStart==sampleSelEnd)?sample->samples:sampleSelStart; sample->prepareUndo(true); e->lockEngine([this,sample,pos]() { @@ -512,14 +512,14 @@ void FurnaceGUI::drawSampleEdit() { ImGui::SameLine(); ImGui::Dummy(ImVec2(4.0*dpiScale,dpiScale)); ImGui::SameLine(); - if (ImGui::Button(ICON_FA_VOLUME_UP "##PreviewSample")) { + if (ImGui::Button(ICON_FA_PLAY "##PreviewSample")) { e->previewSample(curSample); } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Preview sample"); } ImGui::SameLine(); - if (ImGui::Button(ICON_FA_VOLUME_OFF "##StopSample")) { + if (ImGui::Button(ICON_FA_STOP "##StopSample")) { e->stopSamplePreview(); } if (ImGui::IsItemHovered()) { @@ -991,7 +991,7 @@ void FurnaceGUI::drawSampleEdit() { if (silenceSize<0) silenceSize=0; if (silenceSize>16777215) silenceSize=16777215; } - if (ImGui::Button("Resize")) { + if (ImGui::Button("Go")) { int pos=(sampleSelStart==-1 || sampleSelStart==sampleSelEnd)?sample->samples:sampleSelStart; sample->prepareUndo(true); e->lockEngine([this,sample,pos]() { From 936a95c1123780f4eff04058b20dd02d579c86b2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 13 Jul 2022 16:47:09 -0500 Subject: [PATCH 202/580] fix build on Arch not my fault that PipeWire is shipped in a broken state --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5312692a..8f0c4669 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -221,6 +221,11 @@ if (USE_SDL2) set(SDL_SHARED OFF CACHE BOOL "Force no dynamically-linked SDL" FORCE) set(SDL_STATIC ON CACHE BOOL "Force statically-linked SDL" FORCE) endif() + # https://github.com/libsdl-org/SDL/issues/5535 + # disable PipeWire support due to an unfixable bug: + # Looks like their headers have a C90 violation... I imagine they're probably on C99 so not the craziest bug in the world. Definitely file this at the PipeWire repository as well so they know this is out there. + set(SDL_PIPEWIRE OFF CACHE BOOL "Use Pipewire audio" FORCE) + # https://github.com/libsdl-org/SDL/issues/1481 # On 2014-06-22 17:15:50 +0000, Sam Lantinga wrote: # If you link SDL statically, you also need to define HAVE_LIBC so it builds with the C runtime that your application uses. From 5f92a6ffa6fe41f1b229c00a3a46f5fcbc56f270 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 14 Jul 2022 00:14:33 -0500 Subject: [PATCH 203/580] possibly fix major issue with NFD --- extern/nfd-modified/src/nfd_win.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/nfd-modified/src/nfd_win.cpp b/extern/nfd-modified/src/nfd_win.cpp index 9273bb1e..b4fa5a5f 100644 --- a/extern/nfd-modified/src/nfd_win.cpp +++ b/extern/nfd-modified/src/nfd_win.cpp @@ -368,7 +368,7 @@ static nfdresult_t AllocPathSet( IShellItemArray *shellItems, nfdpathset_t *path static nfdresult_t SetDefaultPath( IFileDialog *dialog, const char *defaultPath ) { - if ( !defaultPath || strlen(defaultPath) == 0 ) + if ( !defaultPath || strlen(defaultPath) == 0 || strcmp(defaultPath,"\\")==0 ) return NFD_OKAY; wchar_t *defaultPathW = {0}; From 28a2db7a57ac3c8a3586144c5697d2eaeb4ee820 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 14 Jul 2022 01:59:55 -0500 Subject: [PATCH 204/580] GUI: system file picker error feedback --- src/gui/fileDialog.cpp | 20 +++++++++++++++----- src/gui/fileDialog.h | 3 +++ src/gui/gui.cpp | 7 +++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index f64f72cb..bd54bf0f 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -25,9 +25,10 @@ struct NFDState { }; // TODO: filter -void _nfdThread(const NFDState state, std::atomic* ok, String* result) { +void _nfdThread(const NFDState state, std::atomic* ok, String* result, bool* errorOutput) { nfdchar_t* out=NULL; nfdresult_t ret=NFD_CANCEL; + errorOutput=false; if (state.isSave) { ret=NFD_SaveDialog(state.filter,state.path.c_str(),&out,state.clickCallback); @@ -49,6 +50,7 @@ void _nfdThread(const NFDState state, std::atomic* ok, String* result) { case NFD_ERROR: (*result)=""; logE("NFD error! %s\n",NFD_GetError()); + (*errorOutput)=true; break; default: logE("NFD unknown return code %d!\n",ret); @@ -68,14 +70,16 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, c #ifdef USE_NFD dialogOK=false; #ifdef NFD_NON_THREADED - _nfdThread(NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult); + _nfdThread(NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult,&hasError); #else - dialogO=new std::thread(_nfdThread,NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult); + dialogO=new std::thread(_nfdThread,NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult,&hasError); #endif #else dialogO=new pfd::open_file(header,path,filter); + hasError=!pfd::settings::available(); #endif } else { + hasError=false; ImGuiFileDialog::Instance()->DpiScale=dpiScale; ImGuiFileDialog::Instance()->OpenModal("FileDialog",header,noSysFilter,path,1,nullptr,0,clickCallback); } @@ -92,14 +96,16 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, c #ifdef USE_NFD dialogOK=false; #ifdef NFD_NON_THREADED - _nfdThread(NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult); + _nfdThread(NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult,&hasError); #else - dialogS=new std::thread(_nfdThread,NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult); + dialogS=new std::thread(_nfdThread,NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult,&hasError); #endif #else dialogS=new pfd::save_file(header,path,filter); + hasError=!pfd::settings::available(); #endif } else { + hasError=false; ImGuiFileDialog::Instance()->DpiScale=dpiScale; ImGuiFileDialog::Instance()->OpenModal("FileDialog",header,noSysFilter,path,1,nullptr,ImGuiFileDialogFlags_ConfirmOverwrite); } @@ -193,6 +199,10 @@ bool FurnaceGUIFileDialog::isOpen() { return opened; } +bool FurnaceGUIFileDialog::isError() { + return hasError; +} + String FurnaceGUIFileDialog::getPath() { if (sysDialog) { if (curPath.size()>1) { diff --git a/src/gui/fileDialog.h b/src/gui/fileDialog.h index 6724eb95..f3edd288 100644 --- a/src/gui/fileDialog.h +++ b/src/gui/fileDialog.h @@ -28,6 +28,7 @@ class FurnaceGUIFileDialog { bool sysDialog; bool opened; bool saving; + bool hasError; String curPath; String fileName; #ifdef USE_NFD @@ -46,12 +47,14 @@ class FurnaceGUIFileDialog { void close(); bool render(const ImVec2& min, const ImVec2& max); bool isOpen(); + bool isError(); String getPath(); String getFileName(); explicit FurnaceGUIFileDialog(bool system): sysDialog(system), opened(false), saving(false), + hasError(false), dialogO(NULL), dialogS(NULL) {} }; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 642572d3..c6a58c08 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3221,6 +3221,13 @@ bool FurnaceGUI::loop() { workingDirROM=fileDialog->getPath()+DIR_SEPARATOR_STR; break; } + if (fileDialog->isError()) { +#if defined(_WIN32) || defined(__APPLE__) + showError("there was an error in the file dialog! you may want to report this issue to:\nhttps://github.com/tildearrow/furnace/issues\ncheck the Log Viewer (window > log viewer) for more information.\n\nfor now please disable the system file picker in Settings > General."); +#else + showError("Zenity/KDialog not available!\nplease install one of these, or disable the system file picker in Settings > General."); +#endif + } if (fileDialog->accepted()) { fileName=fileDialog->getFileName(); if (fileName!="") { From bad11bc21e38466690e1c230c17b207ac0a4b95c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 14 Jul 2022 02:00:51 -0500 Subject: [PATCH 205/580] whoops --- src/gui/fileDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index bd54bf0f..0bcc00a4 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -28,7 +28,7 @@ struct NFDState { void _nfdThread(const NFDState state, std::atomic* ok, String* result, bool* errorOutput) { nfdchar_t* out=NULL; nfdresult_t ret=NFD_CANCEL; - errorOutput=false; + (*errorOutput)=false; if (state.isSave) { ret=NFD_SaveDialog(state.filter,state.path.c_str(),&out,state.clickCallback); From 6f90124d82f8cb8ef20724e27998367d23cbea41 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 14 Jul 2022 22:15:14 -0500 Subject: [PATCH 206/580] issue #588, part 1 --- CMakeLists.txt | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f0c4669..41818e96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ set(USE_SDL2_DEFAULT ON) set(USE_SNDFILE_DEFAULT ON) set(SYSTEM_SDL2_DEFAULT OFF) +include(CheckIncludeFile) + if (ANDROID) set(USE_RTMIDI_DEFAULT OFF) set(USE_BACKWARD_DEFAULT OFF) @@ -31,7 +33,17 @@ if (ANDROID) endif() else() set(USE_RTMIDI_DEFAULT ON) - set(USE_BACKWARD_DEFAULT ON) + CHECK_INCLUDE_FILE(execinfo.h EXECINFO_FOUND) + if (EXECINFO_FOUND) + set(USE_BACKWARD_DEFAULT ON) + else() + find_library(EXECINFO_IS_LIBRARY execinfo) + if (EXECINFO_IS_LIBRARY) + set(USE_BACKWARD_DEFAULT ON) + else() + set(USE_BACKWARD_DEFAULT OFF) + endif() + endif() endif() find_package(PkgConfig) @@ -548,8 +560,6 @@ endif() if (NOT WIN32 AND NOT APPLE) list(APPEND GUI_SOURCES src/gui/icon.c) - include(CheckIncludeFile) - CHECK_INCLUDE_FILE(sys/io.h SYS_IO_FOUND) CHECK_INCLUDE_FILE(linux/input.h LINUX_INPUT_FOUND) CHECK_INCLUDE_FILE(linux/kd.h LINUX_KD_FOUND) @@ -574,6 +584,10 @@ if (USE_BACKWARD) if (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") list(APPEND DEPENDENCIES_LIBRARIES dbghelp psapi) endif() + find_library(EXECINFO_IS_LIBRARY execinfo) + if (EXECINFO_IS_LIBRARY) + list(APPEND DEPENDENCIES_LIBRARIES execinfo) + endif() message(STATUS "Using backward-cpp") else() message(STATUS "Not using backward-cpp") From 3df5a6e2b6a0f6b4171280d4b172f2633f6c5f21 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 14 Jul 2022 22:17:05 -0500 Subject: [PATCH 207/580] issue #588, part 2 --- extern/backward/backward.hpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/extern/backward/backward.hpp b/extern/backward/backward.hpp index 5edda65a..04032a4d 100644 --- a/extern/backward/backward.hpp +++ b/extern/backward/backward.hpp @@ -221,6 +221,14 @@ #include #include #include +// https://github.com/tildearrow/furnace/issues/588 +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#include +#undef _GNU_SOURCE +#else +#include +#endif #if BACKWARD_HAS_BFD == 1 // NOTE: defining PACKAGE{,_VERSION} is required before including @@ -233,13 +241,6 @@ #define PACKAGE_VERSION #endif #include -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#include -#undef _GNU_SOURCE -#else -#include -#endif #endif #if BACKWARD_HAS_DW == 1 @@ -254,13 +255,6 @@ #include #include #include -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#include -#undef _GNU_SOURCE -#else -#include -#endif #endif #if (BACKWARD_HAS_BACKTRACE == 1) || (BACKWARD_HAS_BACKTRACE_SYMBOL == 1) From d085f76c7f97da826712b62fe0b13025f42b957b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 14 Jul 2022 22:29:04 -0500 Subject: [PATCH 208/580] issue #588, part 3 add check for the existence of inb() and outb() --- CMakeLists.txt | 9 +++++++-- src/check/check_sysIO.c | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 src/check/check_sysIO.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 41818e96..977f194a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -564,8 +564,13 @@ if (NOT WIN32 AND NOT APPLE) CHECK_INCLUDE_FILE(linux/input.h LINUX_INPUT_FOUND) CHECK_INCLUDE_FILE(linux/kd.h LINUX_KD_FOUND) if (SYS_IO_FOUND) - list(APPEND DEPENDENCIES_DEFINES HAVE_SYS_IO) - message(STATUS "PC speaker output: outb()") + try_compile(HAVE_INOUTB ${CMAKE_BINARY_DIR}/check SOURCES ${CMAKE_SOURCE_DIR}/src/check/check_sysIO.c) + if (HAVE_INOUTB) + list(APPEND DEPENDENCIES_DEFINES HAVE_SYS_IO) + message(STATUS "PC speaker output: outb()") + else() + message(STATUS "sys/io.h found but inb()/outb() not present") + endif() endif() if (LINUX_INPUT_FOUND) list(APPEND DEPENDENCIES_DEFINES HAVE_LINUX_INPUT) diff --git a/src/check/check_sysIO.c b/src/check/check_sysIO.c new file mode 100644 index 00000000..653721e6 --- /dev/null +++ b/src/check/check_sysIO.c @@ -0,0 +1,6 @@ +#include + +int main(int, char**) { + inb(0x61); + outb(0x00,0x61); +} From 666b0d581a274856157366aa7f377b6a2c541737 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 15 Jul 2022 02:23:16 -0500 Subject: [PATCH 209/580] GUI: add multi-selection capability to file dialog --- src/gui/debugWindow.cpp | 14 +++++++++ src/gui/fileDialog.cpp | 65 +++++++++++++++++++++++++---------------- src/gui/fileDialog.h | 6 ++-- src/gui/gui.cpp | 64 +++++++++++++++++++++++++++++++++++++++- src/gui/gui.h | 8 +++-- 5 files changed, 126 insertions(+), 31 deletions(-) diff --git a/src/gui/debugWindow.cpp b/src/gui/debugWindow.cpp index 22527a7b..d9739f68 100644 --- a/src/gui/debugWindow.cpp +++ b/src/gui/debugWindow.cpp @@ -260,6 +260,20 @@ void FurnaceGUI::drawDebug() { ImGui::Unindent(); ImGui::TreePop(); } + if (ImGui::TreeNode("File Selection Test")) { + if (ImGui::Button("Test Open")) { + openFileDialog(GUI_FILE_TEST_OPEN); + } + ImGui::SameLine(); + if (ImGui::Button("Test Open Multi")) { + openFileDialog(GUI_FILE_TEST_OPEN_MULTI); + } + ImGui::SameLine(); + if (ImGui::Button("Test Save")) { + openFileDialog(GUI_FILE_TEST_SAVE); + } + ImGui::TreePop(); + } if (ImGui::TreeNode("Playground")) { if (pgSys<0 || pgSys>=e->song.systemLen) pgSys=0; if (ImGui::BeginCombo("System",fmt::sprintf("%d. %s",pgSys+1,e->getSystemName(e->song.system[pgSys])).c_str())) { diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index 0bcc00a4..d59a3cd0 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -10,13 +10,14 @@ #ifdef USE_NFD struct NFDState { - bool isSave; + bool isSave, allowMultiple; String header; std::vector filter; String path; FileDialogSelectCallback clickCallback; - NFDState(bool save, String h, std::vector filt, String pa, FileDialogSelectCallback cc): + NFDState(bool save, String h, std::vector filt, String pa, FileDialogSelectCallback cc, bool multi): isSave(save), + allowMultiple(multi), header(h), filter(filt), path(pa), @@ -61,7 +62,7 @@ void _nfdThread(const NFDState state, std::atomic* ok, String* result, boo } #endif -bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback) { +bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback, bool allowMultiple) { if (opened) return false; saving=false; curPath=path; @@ -70,18 +71,18 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, c #ifdef USE_NFD dialogOK=false; #ifdef NFD_NON_THREADED - _nfdThread(NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult,&hasError); + _nfdThread(NFDState(false,header,filter,path,clickCallback,allowMultiple),&dialogOK,&nfdResult,&hasError); #else - dialogO=new std::thread(_nfdThread,NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult,&hasError); + dialogO=new std::thread(_nfdThread,NFDState(false,header,filter,path,clickCallback,allowMultiple),&dialogOK,&nfdResult,&hasError); #endif #else - dialogO=new pfd::open_file(header,path,filter); + dialogO=new pfd::open_file(header,path,filter,allowMultiple?(pfd::opt::multiselect):(pfd::opt::none)); hasError=!pfd::settings::available(); #endif } else { hasError=false; ImGuiFileDialog::Instance()->DpiScale=dpiScale; - ImGuiFileDialog::Instance()->OpenModal("FileDialog",header,noSysFilter,path,1,nullptr,0,clickCallback); + ImGuiFileDialog::Instance()->OpenModal("FileDialog",header,noSysFilter,path,allowMultiple?999:1,nullptr,0,clickCallback); } opened=true; return true; @@ -96,9 +97,9 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, c #ifdef USE_NFD dialogOK=false; #ifdef NFD_NON_THREADED - _nfdThread(NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult,&hasError); + _nfdThread(NFDState(true,header,filter,path,NULL,false),&dialogOK,&nfdResult,&hasError); #else - dialogS=new std::thread(_nfdThread,NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult,&hasError); + dialogS=new std::thread(_nfdThread,NFDState(true,header,filter,path,NULL,false),&dialogOK,&nfdResult,&hasError); #endif #else dialogS=new pfd::save_file(header,path,filter); @@ -115,7 +116,7 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, c bool FurnaceGUIFileDialog::accepted() { if (sysDialog) { - return (fileName!=""); + return (!fileName.empty()); } else { return ImGuiFileDialog::Instance()->IsOk(); } @@ -153,10 +154,15 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { if (sysDialog) { #ifdef USE_NFD if (dialogOK) { - fileName=nfdResult; - size_t dsPos=fileName.rfind(DIR_SEPARATOR); - if (dsPos!=String::npos) curPath=fileName.substr(0,dsPos); - logD("returning %s",fileName.c_str()); + fileName.clear(); + fileName.push_back(nfdResult); + if (!fileName.empty()) { + size_t dsPos=fileName[0].rfind(DIR_SEPARATOR); + if (dsPos!=String::npos) curPath=fileName[0].substr(0,dsPos); + } + for (String& i: fileName) { + logD("- returning %s",i); + } dialogOK=false; return true; } @@ -165,10 +171,11 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { if (saving) { if (dialogS!=NULL) { if (dialogS->ready(0)) { - fileName=dialogS->result(); - size_t dsPos=fileName.rfind(DIR_SEPARATOR); - if (dsPos!=String::npos) curPath=fileName.substr(0,dsPos); - logD("returning %s",fileName.c_str()); + fileName.clear(); + fileName.push_back(dialogS->result()); + size_t dsPos=fileName[0].rfind(DIR_SEPARATOR); + if (dsPos!=String::npos) curPath=fileName[0].substr(0,dsPos); + logD("returning %s",fileName[0]); return true; } } @@ -176,13 +183,19 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { if (dialogO!=NULL) { if (dialogO->ready(0)) { if (dialogO->result().empty()) { - fileName=""; + fileName.clear(); logD("returning nothing"); } else { - fileName=dialogO->result()[0]; - size_t dsPos=fileName.rfind(DIR_SEPARATOR); - if (dsPos!=String::npos) curPath=fileName.substr(0,dsPos); - logD("returning %s",fileName.c_str()); + fileName=dialogO->result(); + if (fileName.empty()) { + // don't touch + } else { + size_t dsPos=fileName[0].rfind(DIR_SEPARATOR); + if (dsPos!=String::npos) curPath=fileName[0].substr(0,dsPos); + for (String& i: fileName) { + logD("- returning %s",i); + } + } } return true; } @@ -217,10 +230,12 @@ String FurnaceGUIFileDialog::getPath() { } } -String FurnaceGUIFileDialog::getFileName() { +std::vector& FurnaceGUIFileDialog::getFileName() { if (sysDialog) { return fileName; } else { - return ImGuiFileDialog::Instance()->GetFilePathName(); + fileName.clear(); + fileName.push_back(ImGuiFileDialog::Instance()->GetFilePathName()); + return fileName; } } diff --git a/src/gui/fileDialog.h b/src/gui/fileDialog.h index f3edd288..54b83c28 100644 --- a/src/gui/fileDialog.h +++ b/src/gui/fileDialog.h @@ -30,7 +30,7 @@ class FurnaceGUIFileDialog { bool saving; bool hasError; String curPath; - String fileName; + std::vector fileName; #ifdef USE_NFD std::thread* dialogO; std::thread* dialogS; @@ -41,7 +41,7 @@ class FurnaceGUIFileDialog { pfd::save_file* dialogS; #endif public: - bool openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback=NULL); + bool openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback=NULL, bool allowMultiple=false); bool openSave(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale); bool accepted(); void close(); @@ -49,7 +49,7 @@ class FurnaceGUIFileDialog { bool isOpen(); bool isError(); String getPath(); - String getFileName(); + std::vector& getFileName(); explicit FurnaceGUIFileDialog(bool system): sysDialog(system), opened(false), diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index c6a58c08..32e69807 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1495,6 +1495,43 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { dpiScale ); break; + case GUI_FILE_TEST_OPEN: + if (!dirExists(workingDirTest)) workingDirTest=getHomeDir(); + hasOpened=fileDialog->openLoad( + "Open Test", + {"compatible files", "*.fur *.dmf *.mod", + "another option", "*.wav *.ttf", + "all files", ".*"}, + "compatible files{.fur,.dmf,.mod},another option{.wav,.ttf},.*", + workingDirTest, + dpiScale + ); + break; + case GUI_FILE_TEST_OPEN_MULTI: + if (!dirExists(workingDirTest)) workingDirTest=getHomeDir(); + hasOpened=fileDialog->openLoad( + "Open Test (Multi)", + {"compatible files", "*.fur *.dmf *.mod", + "another option", "*.wav *.ttf", + "all files", ".*"}, + "compatible files{.fur,.dmf,.mod},another option{.wav,.ttf},.*", + workingDirTest, + dpiScale, + NULL, + true + ); + break; + case GUI_FILE_TEST_SAVE: + if (!dirExists(workingDirTest)) workingDirTest=getHomeDir(); + hasOpened=fileDialog->openSave( + "Save Test", + {"Furnace song", "*.fur", + "DefleMask module", "*.dmf"}, + "Furnace song{.fur},DefleMask module{.dmf}", + workingDirTest, + dpiScale + ); + break; } if (hasOpened) curFileDialog=type; //ImGui::GetIO().ConfigFlags|=ImGuiConfigFlags_NavEnableKeyboard; @@ -3220,6 +3257,11 @@ bool FurnaceGUI::loop() { case GUI_FILE_MU5_ROM_OPEN: workingDirROM=fileDialog->getPath()+DIR_SEPARATOR_STR; break; + case GUI_FILE_TEST_OPEN: + case GUI_FILE_TEST_OPEN_MULTI: + case GUI_FILE_TEST_SAVE: + workingDirTest=fileDialog->getPath()+DIR_SEPARATOR_STR; + break; } if (fileDialog->isError()) { #if defined(_WIN32) || defined(__APPLE__) @@ -3229,7 +3271,11 @@ bool FurnaceGUI::loop() { #endif } if (fileDialog->accepted()) { - fileName=fileDialog->getFileName(); + if (fileDialog->getFileName().empty()) { + fileName=""; + } else { + fileName=fileDialog->getFileName()[0]; + } if (fileName!="") { if (curFileDialog==GUI_FILE_SAVE) { // we can't tell whether the user chose .dmf or .fur in the system file picker @@ -3468,6 +3514,20 @@ bool FurnaceGUI::loop() { case GUI_FILE_MU5_ROM_OPEN: settings.mu5Path=copyOfName; break; + case GUI_FILE_TEST_OPEN: + showWarning(fmt::sprintf("You opened: %s",copyOfName),GUI_WARN_GENERIC); + break; + case GUI_FILE_TEST_OPEN_MULTI: { + String msg="You opened:"; + for (String i: fileDialog->getFileName()) { + msg+=fmt::sprintf("\n- %s",i); + } + showWarning(msg,GUI_WARN_GENERIC); + break; + } + case GUI_FILE_TEST_SAVE: + showWarning(fmt::sprintf("You saved: %s",copyOfName),GUI_WARN_GENERIC); + break; } curFileDialog=GUI_FILE_OPEN; } @@ -4018,6 +4078,7 @@ bool FurnaceGUI::init() { workingDirColors=e->getConfString("lastDirColors",workingDir); workingDirKeybinds=e->getConfString("lastDirKeybinds",workingDir); workingDirLayout=e->getConfString("lastDirLayout",workingDir); + workingDirTest=e->getConfString("lastDirTest",workingDir); editControlsOpen=e->getConfBool("editControlsOpen",true); ordersOpen=e->getConfBool("ordersOpen",true); @@ -4255,6 +4316,7 @@ bool FurnaceGUI::finish() { e->setConf("lastDirColors",workingDirColors); e->setConf("lastDirKeybinds",workingDirKeybinds); e->setConf("lastDirLayout",workingDirLayout); + e->setConf("lastDirTest",workingDirTest); // commit last open windows e->setConf("editControlsOpen",editControlsOpen); diff --git a/src/gui/gui.h b/src/gui/gui.h index b3393a5a..2966d594 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -277,7 +277,11 @@ enum FurnaceGUIFileDialogs { GUI_FILE_EXPORT_LAYOUT, GUI_FILE_YRW801_ROM_OPEN, GUI_FILE_TG100_ROM_OPEN, - GUI_FILE_MU5_ROM_OPEN + GUI_FILE_MU5_ROM_OPEN, + + GUI_FILE_TEST_OPEN, + GUI_FILE_TEST_OPEN_MULTI, + GUI_FILE_TEST_SAVE }; enum FurnaceGUIWarnings { @@ -943,7 +947,7 @@ class FurnaceGUI { bool updateSampleTex; String workingDir, fileName, clipboard, warnString, errorString, lastError, curFileName, nextFile; - String workingDirSong, workingDirIns, workingDirWave, workingDirSample, workingDirAudioExport, workingDirVGMExport, workingDirFont, workingDirColors, workingDirKeybinds, workingDirLayout, workingDirROM; + String workingDirSong, workingDirIns, workingDirWave, workingDirSample, workingDirAudioExport, workingDirVGMExport, workingDirFont, workingDirColors, workingDirKeybinds, workingDirLayout, workingDirROM, workingDirTest; String mmlString[32]; String mmlStringW; From 96b7e5d3538c11c7876f56244b229fc3fbfa51df Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 16 Jul 2022 01:52:15 -0500 Subject: [PATCH 210/580] GUI: implement multi sel on NFD and IGFD --- src/gui/fileDialog.cpp | 39 +++++++++++++++++++++++++++++---------- src/gui/fileDialog.h | 2 +- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index d59a3cd0..8d524ab4 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -26,36 +26,48 @@ struct NFDState { }; // TODO: filter -void _nfdThread(const NFDState state, std::atomic* ok, String* result, bool* errorOutput) { +void _nfdThread(const NFDState state, std::atomic* ok, std::vector* result, bool* errorOutput) { nfdchar_t* out=NULL; nfdresult_t ret=NFD_CANCEL; (*errorOutput)=false; + nfdpathset_t paths; + + result->clear(); if (state.isSave) { ret=NFD_SaveDialog(state.filter,state.path.c_str(),&out,state.clickCallback); } else { - ret=NFD_OpenDialog(state.filter,state.path.c_str(),&out,state.clickCallback); + if (state.allowMultiple) { + ret=NFD_OpenDialogMultiple(state.filter,state.path.c_str(),&paths,state.clickCallback); + } else { + ret=NFD_OpenDialog(state.filter,state.path.c_str(),&out,state.clickCallback); + } } switch (ret) { case NFD_OKAY: - if (out!=NULL) { - (*result)=out; + if (state.allowMultiple) { + logD("pushing multi path"); + for (size_t i=0; ipush_back(String(NFD_PathSet_GetPath(&paths,i))); + } + NFD_PathSet_Free(&paths); } else { - (*result)=""; + logD("pushing single path"); + if (out!=NULL) { + logD("we have it"); + result->push_back(String(out)); + } } break; case NFD_CANCEL: - (*result)=""; break; case NFD_ERROR: - (*result)=""; logE("NFD error! %s\n",NFD_GetError()); (*errorOutput)=true; break; default: logE("NFD unknown return code %d!\n",ret); - (*result)=""; break; } (*ok)=true; @@ -155,7 +167,7 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { #ifdef USE_NFD if (dialogOK) { fileName.clear(); - fileName.push_back(nfdResult); + fileName=nfdResult; if (!fileName.empty()) { size_t dsPos=fileName[0].rfind(DIR_SEPARATOR); if (dsPos!=String::npos) curPath=fileName[0].substr(0,dsPos); @@ -235,7 +247,14 @@ std::vector& FurnaceGUIFileDialog::getFileName() { return fileName; } else { fileName.clear(); - fileName.push_back(ImGuiFileDialog::Instance()->GetFilePathName()); + if (saving) { + fileName.push_back(ImGuiFileDialog::Instance()->GetFilePathName()); + } else { + for (auto& i: ImGuiFileDialog::Instance()->GetSelection()) { + fileName.push_back(i.second); + } + } + // return fileName; } } diff --git a/src/gui/fileDialog.h b/src/gui/fileDialog.h index 54b83c28..7990b037 100644 --- a/src/gui/fileDialog.h +++ b/src/gui/fileDialog.h @@ -35,7 +35,7 @@ class FurnaceGUIFileDialog { std::thread* dialogO; std::thread* dialogS; std::atomic dialogOK; - String nfdResult; + std::vector nfdResult; #else pfd::open_file* dialogO; pfd::save_file* dialogS; From 707dc30f1558c1cd61741b94a5e75d34df3062e2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 17 Jul 2022 00:05:56 -0500 Subject: [PATCH 211/580] Revert "Fix issue #567: LFO disable/enable behavior for YM2151." --- src/engine/platform/arcade.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 29a2f67d..41042cd5 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -172,7 +172,7 @@ void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, si w.addrOrVal=true; } } - + OPM_Clock(&fm,NULL,NULL,NULL,NULL); OPM_Clock(&fm,NULL,NULL,NULL,NULL); OPM_Clock(&fm,NULL,NULL,NULL,NULL); @@ -182,13 +182,13 @@ void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, si for (int i=0; i<8; i++) { oscBuf[i]->data[oscBuf[i]->needle++]=fm.ch_out[i]; } - + if (o[0]<-32768) o[0]=-32768; if (o[0]>32767) o[0]=32767; if (o[1]<-32768) o[1]=-32768; if (o[1]>32767) o[1]=32767; - + bufL[h]=o[0]; bufR[h]=o[1]; } @@ -211,7 +211,7 @@ void DivPlatformArcade::acquire_ymfm(short* bufL, short* bufR, size_t start, siz delay=1; } } - + fm_ymfm->generate(&out_ymfm); for (int i=0; i<8; i++) { @@ -225,7 +225,7 @@ void DivPlatformArcade::acquire_ymfm(short* bufL, short* bufR, size_t start, siz os[1]=out_ymfm.data[1]; if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; - + bufL[h]=os[0]; bufR[h]=os[1]; } @@ -616,12 +616,6 @@ int DivPlatformArcade::dispatch(DivCommand c) { break; } case DIV_CMD_FM_LFO: { - if(c.value==0) { - rWrite(0x01,0x02); - } - else { - rWrite(0x01,0x00); - } rWrite(0x18,c.value); break; } @@ -945,8 +939,6 @@ void DivPlatformArcade::reset() { pmDepth=0x7f; //rWrite(0x18,0x10); - immWrite(0x01,0x02); // LFO Off - immWrite(0x18,0x00); // LFO Freq Off immWrite(0x19,amDepth); immWrite(0x19,0x80|pmDepth); //rWrite(0x1b,0x00); From 60a52d3b9f0b29173c10d74c880c70f7696d0f7d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 17 Jul 2022 00:06:04 -0500 Subject: [PATCH 212/580] Revert "Revert "Fix issue #567: LFO disable/enable behavior for YM2151."" --- src/engine/platform/arcade.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 41042cd5..29a2f67d 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -172,7 +172,7 @@ void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, si w.addrOrVal=true; } } - + OPM_Clock(&fm,NULL,NULL,NULL,NULL); OPM_Clock(&fm,NULL,NULL,NULL,NULL); OPM_Clock(&fm,NULL,NULL,NULL,NULL); @@ -182,13 +182,13 @@ void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, si for (int i=0; i<8; i++) { oscBuf[i]->data[oscBuf[i]->needle++]=fm.ch_out[i]; } - + if (o[0]<-32768) o[0]=-32768; if (o[0]>32767) o[0]=32767; if (o[1]<-32768) o[1]=-32768; if (o[1]>32767) o[1]=32767; - + bufL[h]=o[0]; bufR[h]=o[1]; } @@ -211,7 +211,7 @@ void DivPlatformArcade::acquire_ymfm(short* bufL, short* bufR, size_t start, siz delay=1; } } - + fm_ymfm->generate(&out_ymfm); for (int i=0; i<8; i++) { @@ -225,7 +225,7 @@ void DivPlatformArcade::acquire_ymfm(short* bufL, short* bufR, size_t start, siz os[1]=out_ymfm.data[1]; if (os[1]<-32768) os[1]=-32768; if (os[1]>32767) os[1]=32767; - + bufL[h]=os[0]; bufR[h]=os[1]; } @@ -616,6 +616,12 @@ int DivPlatformArcade::dispatch(DivCommand c) { break; } case DIV_CMD_FM_LFO: { + if(c.value==0) { + rWrite(0x01,0x02); + } + else { + rWrite(0x01,0x00); + } rWrite(0x18,c.value); break; } @@ -939,6 +945,8 @@ void DivPlatformArcade::reset() { pmDepth=0x7f; //rWrite(0x18,0x10); + immWrite(0x01,0x02); // LFO Off + immWrite(0x18,0x00); // LFO Freq Off immWrite(0x19,amDepth); immWrite(0x19,0x80|pmDepth); //rWrite(0x1b,0x00); From a4741861cef7e8162b0398a5fe46d781b2ecc8cf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 19 Jul 2022 15:57:06 -0500 Subject: [PATCH 213/580] fix audio output being reset on cmd line export --- src/engine/engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index e68208ea..d49764cc 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3081,7 +3081,7 @@ bool DivEngine::deinitAudioBackend() { output->quit(); delete output; output=NULL; - audioEngine=DIV_AUDIO_NULL; + //audioEngine=DIV_AUDIO_NULL; } return true; } From cd7b333b2df8ae6727e500a4f059fadfdff5e04d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 19 Jul 2022 17:01:19 -0500 Subject: [PATCH 214/580] introduce a benchmark mode --- src/asm/6502/macroInt.s | 32 ++++++++++++++++++++++ src/engine/engine.cpp | 60 +++++++++++++++++++++++++++++++++++++++-- src/engine/engine.h | 4 +++ src/main.cpp | 25 +++++++++++++++++ 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 src/asm/6502/macroInt.s diff --git a/src/asm/6502/macroInt.s b/src/asm/6502/macroInt.s new file mode 100644 index 00000000..c115a807 --- /dev/null +++ b/src/asm/6502/macroInt.s @@ -0,0 +1,32 @@ +macroState=$50 ; pointer to state +macroAddr=$52 ; pointer to address + +; macro state takes 4 bytes +; macroPos bits: +; 7: had +; 6: will + +; x: macro +macroIntRun: + lda macroAddr,x + ora macroAddr+1,x + beq :+ + + ; do macro +: rts + +; set the macro address, then call +; x: macro +macroIntInit: + lda #0 + sta macroState,x + sta macroPos,x + txa + rol + tax + lda macroAddr,x + ora macroAddr+1,x + beq :+ + lda #$40 + sta macroState,x +: rts diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index d49764cc..9b3fa06f 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -36,6 +36,7 @@ #include "../audio/jack.h" #endif #include +#include #ifdef HAVE_SNDFILE #include "sfWrapper.h" #endif @@ -181,6 +182,63 @@ void DivEngine::walkSong(int& loopOrder, int& loopRow, int& loopEnd) { } } +#define EXPORT_BUFSIZE 2048 + +double DivEngine::benchmarkPlayback() { + float* outBuf[2]; + outBuf[0]=new float[EXPORT_BUFSIZE]; + outBuf[1]=new float[EXPORT_BUFSIZE]; + + curOrder=0; + prevOrder=0; + remainingLoops=1; + playSub(false); + + std::chrono::high_resolution_clock::time_point timeStart=std::chrono::high_resolution_clock::now(); + + // benchmark + while (playing) { + nextBuf(NULL,outBuf,0,2,EXPORT_BUFSIZE); + } + + std::chrono::high_resolution_clock::time_point timeEnd=std::chrono::high_resolution_clock::now(); + + delete[] outBuf[0]; + delete[] outBuf[1]; + + double t=(double)(std::chrono::duration_cast(timeEnd-timeStart).count())/1000000.0; + printf("[RESULT] %fs\n",t); + return t; +} + +double DivEngine::benchmarkSeek() { + double t[20]; + curOrder=curSubSong->ordersLen-1; + prevOrder=curSubSong->ordersLen-1; + + // benchmark + for (int i=0; i<20; i++) { + std::chrono::high_resolution_clock::time_point timeStart=std::chrono::high_resolution_clock::now(); + playSub(false); + std::chrono::high_resolution_clock::time_point timeEnd=std::chrono::high_resolution_clock::now(); + t[i]=(double)(std::chrono::duration_cast(timeEnd-timeStart).count())/1000000.0; + printf("[#%d] %fs\n",i+1,t[i]); + } + + double tMin=DBL_MAX; + double tMax=0.0; + double tAvg=0.0; + for (int i=0; i<20; i++) { + if (t[i]tMax) tMax=t[i]; + tAvg+=t[i]; + } + tAvg/=20.0; + + printf("[RESULT] min %fs max %fs average %fs\n",tMin,tMax,tAvg); + return tAvg; +} + void _runExportThread(DivEngine* caller) { caller->runExportThread(); } @@ -189,8 +247,6 @@ bool DivEngine::isExporting() { return exporting; } -#define EXPORT_BUFSIZE 2048 - #ifdef HAVE_SNDFILE void DivEngine::runExportThread() { size_t fadeOutSamples=got.rate*exportFadeOut; diff --git a/src/engine/engine.h b/src/engine/engine.h index 5f5ab1a3..4bf4cb65 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -477,6 +477,10 @@ class DivEngine { // notify wavetable change void notifyWaveChange(int wave); + // benchmark (returns time in seconds) + double benchmarkPlayback(); + double benchmarkSeek(); + // returns the minimum VGM version which may carry the specified system, or 0 if none. int minVGMVersion(DivSystem which); diff --git a/src/main.cpp b/src/main.cpp index 1f5f9560..970bc784 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -49,6 +49,7 @@ FurnaceGUI g; String outName; String vgmOutName; int loops=1; +int benchMode=0; DivAudioExportModes outMode=DIV_EXPORT_MODE_ONE; #ifdef HAVE_GUI @@ -220,6 +221,19 @@ TAParamResult pOutMode(String val) { return TA_PARAM_SUCCESS; } +TAParamResult pBenchmark(String val) { + if (val=="render") { + benchMode=1; + } else if (val=="seek") { + benchMode=2; + } else { + logE("invalid value for benchmark! valid values are: render and seek."); + return TA_PARAM_ERROR; + } + e.setAudio(DIV_AUDIO_DUMMY); + return TA_PARAM_SUCCESS; +} + TAParamResult pOutput(String val) { outName=val; e.setAudio(DIV_AUDIO_DUMMY); @@ -254,6 +268,8 @@ void initParams() { params.push_back(TAParam("l","loops",true,pLoops,"","set number of loops (-1 means loop forever)")); params.push_back(TAParam("o","outmode",true,pOutMode,"one|persys|perchan","set file output mode")); + params.push_back(TAParam("B","benchmark",true,pBenchmark,"render|seek","run performance test")); + params.push_back(TAParam("V","version",false,pVersion,"","view information about Furnace.")); params.push_back(TAParam("W","warranty",false,pWarranty,"","view warranty disclaimer.")); } @@ -414,6 +430,15 @@ int main(int argc, char** argv) { displayEngineFailError=true; } } + if (benchMode) { + logI("starting benchmark!"); + if (benchMode==2) { + e.benchmarkSeek(); + } else { + e.benchmarkPlayback(); + } + return 0; + } if (outName!="" || vgmOutName!="") { if (vgmOutName!="") { SafeWriter* w=e.saveVGM(); From dff7c61b79213b8f33f0d3c7f22f161ce738f83d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 20 Jul 2022 00:32:06 -0500 Subject: [PATCH 215/580] GUI: add option to disable threaded input --- src/gui/gui.cpp | 9 ++++++++- src/gui/gui.h | 2 ++ src/gui/settings.cpp | 11 +++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 32e69807..14b1b99e 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2479,7 +2479,13 @@ void FurnaceGUI::processPoint(SDL_Event& ev) { } bool FurnaceGUI::loop() { - SDL_SetEventFilter(_processEvent,this); + bool doThreadedInput=!settings.noThreadedInput; + if (doThreadedInput) { + logD("key input: event filter"); + SDL_SetEventFilter(_processEvent,this); + } else { + logD("key input: main thread"); + } while (!quit) { SDL_Event ev; @@ -2495,6 +2501,7 @@ bool FurnaceGUI::loop() { WAKE_UP; ImGui_ImplSDL2_ProcessEvent(&ev); processPoint(ev); + if (!doThreadedInput) processEvent(&ev); switch (ev.type) { case SDL_MOUSEMOTION: { int motionX=ev.motion.x; diff --git a/src/gui/gui.h b/src/gui/gui.h index 2966d594..21bb0cf7 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1091,6 +1091,7 @@ class FurnaceGUI { int blankIns; int dragMovesSelection; int unsignedDetune; + int noThreadedInput; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1193,6 +1194,7 @@ class FurnaceGUI { blankIns(0), dragMovesSelection(1), unsignedDetune(0), + noThreadedInput(0), maxUndoSteps(100), mainFontPath(""), patFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index cb2064e6..9984e499 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -460,6 +460,14 @@ void FurnaceGUI::drawSettings() { ImGui::SetTooltip("saves power by lowering the frame rate to 2fps when idle.\nmay cause issues under Mesa drivers!"); } + bool noThreadedInputB=settings.noThreadedInput; + if (ImGui::Checkbox("Disable threaded input (restart after changing!)",&noThreadedInputB)) { + settings.noThreadedInput=noThreadedInputB; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("threaded input processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.\nhowever, crashes have been reported when threaded input is on. enable this option if that is the case."); + } + bool blankInsB=settings.blankIns; if (ImGui::Checkbox("New instruments are blank",&blankInsB)) { settings.blankIns=blankInsB; @@ -2055,6 +2063,7 @@ void FurnaceGUI::syncSettings() { settings.blankIns=e->getConfInt("blankIns",0); settings.dragMovesSelection=e->getConfInt("dragMovesSelection",2); settings.unsignedDetune=e->getConfInt("unsignedDetune",0); + settings.noThreadedInput=e->getConfInt("noThreadedInput",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2141,6 +2150,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.blankIns,0,1); clampSetting(settings.dragMovesSelection,0,2); clampSetting(settings.unsignedDetune,0,1); + clampSetting(settings.noThreadedInput,0,1); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { @@ -2276,6 +2286,7 @@ void FurnaceGUI::commitSettings() { e->setConf("blankIns",settings.blankIns); e->setConf("dragMovesSelection",settings.dragMovesSelection); e->setConf("unsignedDetune",settings.unsignedDetune); + e->setConf("noThreadedInput",settings.noThreadedInput); // colors for (int i=0; i Date: Wed, 20 Jul 2022 23:01:06 +0900 Subject: [PATCH 216/580] Struct-ize sample map variable --- src/engine/fileOps.cpp | 4 ++-- src/engine/instrument.cpp | 16 ++++++++++++---- src/engine/instrument.h | 19 +++++++++++++------ src/gui/insEdit.cpp | 25 +++++++++++++------------ 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index ddc5edf6..3aa432fd 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2445,8 +2445,8 @@ bool DivEngine::loadFTM(unsigned char* file, size_t len) { const int dpcmNotes=(blockVersion>=2)?96:72; for (int j=0; jamiga.noteMap[j]=(short)((unsigned char)reader.readC())-1; - ins->amiga.noteFreq[j]=(unsigned char)reader.readC(); + ins->amiga.noteMap[j].map=(short)((unsigned char)reader.readC())-1; + ins->amiga.noteMap[j].freq=(unsigned char)reader.readC(); if (blockVersion>=6) { reader.readC(); // DMC value } diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 196764d0..a7658856 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -387,8 +387,12 @@ void DivInstrument::putInsData(SafeWriter* w) { // sample map w->writeC(amiga.useNoteMap); if (amiga.useNoteMap) { - w->write(amiga.noteFreq,120*sizeof(unsigned int)); - w->write(amiga.noteMap,120*sizeof(short)); + for (int note=0; note<120; note++) { + w->writeI(amiga.noteMap[note].freq); + } + for (int note=0; note<120; note++) { + w->writeS(amiga.noteMap[note].map); + } } // N163 @@ -932,8 +936,12 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { if (version>=67) { amiga.useNoteMap=reader.readC(); if (amiga.useNoteMap) { - reader.read(amiga.noteFreq,120*sizeof(unsigned int)); - reader.read(amiga.noteMap,120*sizeof(short)); + for (int note=0; note<120; note++) { + amiga.noteMap[note].freq=reader.readI(); + } + for (int note=0; note<120; note++) { + amiga.noteMap[note].map=reader.readS(); + } } } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index c4af6f04..18bf2c5f 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -306,12 +306,18 @@ struct DivInstrumentC64 { }; struct DivInstrumentAmiga { + struct SampleMap { + int freq; + short map; + SampleMap(int f=0, short m=-1): + freq(f), + map(m) {} + }; short initSample; bool useNoteMap; bool useWave; unsigned char waveLen; - int noteFreq[120]; - short noteMap[120]; + SampleMap noteMap[120]; /** * get the sample at specified note. @@ -321,7 +327,7 @@ struct DivInstrumentAmiga { if (useNoteMap) { if (note<0) note=0; if (note>119) note=119; - return noteMap[note]; + return noteMap[note].map; } return initSample; } @@ -334,7 +340,7 @@ struct DivInstrumentAmiga { if (useNoteMap) { if (note<0) note=0; if (note>119) note=119; - return noteFreq[note]; + return noteMap[note].freq; } return -1; } @@ -344,8 +350,9 @@ struct DivInstrumentAmiga { useNoteMap(false), useWave(false), waveLen(31) { - memset(noteMap,-1,120*sizeof(short)); - memset(noteFreq,0,120*sizeof(int)); + for (SampleMap& elem: noteMap) { + elem=SampleMap(); + } } }; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 45f7c675..5633bb89 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3011,7 +3011,7 @@ void FurnaceGUI::drawInsEdit() { if (ImGui::BeginTable("NoteMap",2,ImGuiTableFlags_ScrollY|ImGuiTableFlags_Borders|ImGuiTableFlags_SizingStretchSame)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); - ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); + //ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); ImGui::TableSetupScrollFreeze(0,1); @@ -3022,37 +3022,38 @@ void FurnaceGUI::drawInsEdit() { /*ImGui::TableNextColumn(); ImGui::Text("Frequency");*/ for (int i=0; i<120; i++) { + DivInstrumentAmiga::SampleMap sampleMap=ins->amiga.noteMap[i]; ImGui::TableNextRow(); ImGui::PushID(fmt::sprintf("NM_%d",i).c_str()); ImGui::TableNextColumn(); ImGui::Text("%s",noteNames[60+i]); ImGui::TableNextColumn(); - if (ins->amiga.noteMap[i]<0 || ins->amiga.noteMap[i]>=e->song.sampleLen) { + if (sampleMap.map<0 || sampleMap.map>=e->song.sampleLen) { sName="-- empty --"; - ins->amiga.noteMap[i]=-1; + sampleMap.map=-1; } else { - sName=e->song.sample[ins->amiga.noteMap[i]]->name; + sName=e->song.sample[sampleMap.map]->name; } ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); if (ImGui::BeginCombo("##SM",sName.c_str())) { String id; - if (ImGui::Selectable("-- empty --",ins->amiga.noteMap[i]==-1)) { PARAMETER - ins->amiga.noteMap[i]=-1; + if (ImGui::Selectable("-- empty --",sampleMap.map==-1)) { PARAMETER + sampleMap.map=-1; } for (int j=0; jsong.sampleLen; j++) { id=fmt::sprintf("%d: %s",j,e->song.sample[j]->name); - if (ImGui::Selectable(id.c_str(),ins->amiga.noteMap[i]==j)) { PARAMETER - ins->amiga.noteMap[i]=j; - if (ins->amiga.noteFreq[i]<=0) ins->amiga.noteFreq[i]=(int)((double)e->song.sample[j]->centerRate*pow(2.0,((double)i-48.0)/12.0)); + if (ImGui::Selectable(id.c_str(),sampleMap.map==j)) { PARAMETER + sampleMap.map=j; + if (sampleMap.freq<=0) sampleMap.freq=(int)((double)e->song.sample[j]->centerRate*pow(2.0,((double)i-48.0)/12.0)); } } ImGui::EndCombo(); } /*ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputInt("##SF",&ins->amiga.noteFreq[i],50,500)) { PARAMETER - if (ins->amiga.noteFreq[i]<0) ins->amiga.noteFreq[i]=0; - if (ins->amiga.noteFreq[i]>262144) ins->amiga.noteFreq[i]=262144; + if (ImGui::InputInt("##SF",&sampleMap.freq,50,500)) { PARAMETER + if (sampleMap.freq<0) sampleMap.freq=0; + if (sampleMap.freq>262144) sampleMap.freq=262144; }*/ ImGui::PopID(); } From 4e8d71fc22b95bd0cc4f7fde846d191f74d86868 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 21 Jul 2022 13:42:20 +0900 Subject: [PATCH 217/580] Fix sample map struct Structize sample map variable is for easily extend features. --- src/gui/insEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 5633bb89..18e28680 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3022,7 +3022,7 @@ void FurnaceGUI::drawInsEdit() { /*ImGui::TableNextColumn(); ImGui::Text("Frequency");*/ for (int i=0; i<120; i++) { - DivInstrumentAmiga::SampleMap sampleMap=ins->amiga.noteMap[i]; + DivInstrumentAmiga::SampleMap& sampleMap=ins->amiga.noteMap[i]; ImGui::TableNextRow(); ImGui::PushID(fmt::sprintf("NM_%d",i).c_str()); ImGui::TableNextColumn(); From d8dff3c20794ccc8850e8481168dffd97d731942 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 20 Jul 2022 23:52:35 -0500 Subject: [PATCH 218/580] add demo song requested by LovelyA72 --- demos/Phoenix_cover.fur | Bin 0 -> 1299 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Phoenix_cover.fur diff --git a/demos/Phoenix_cover.fur b/demos/Phoenix_cover.fur new file mode 100644 index 0000000000000000000000000000000000000000..1a031443ada73d84d39666d43f60319881eb190b GIT binary patch literal 1299 zcmV+u1?>8Gob6j*ZyQArpF7*}zoZvMf)+}fMIbdniWFNF1tf&sC_#}z5~ZO$U+r~b zVf%s|qviprujK>q03QKfctiq;F906_z5=g^2bewI#p~1?dmJCxt9R{5#<#OGznz=8 z+1)s6Titfct#H=#s@(=(;{d>*-?n$R_MY3wWHJ`O$-@#PAi0pO_~A`}U)~1z{T}we1Mt@xjwk>u-3NH<0l@ta05(4acw7QF+5mXE z1@L?u;M*O5@Am+HJ^=XbQ(?yLy)D0;Lq0sNcNo6i9$Mzr*y%B6;Y{3i#jSF7+1;+>RT1@H~N_D&F5>xiu!culv3(TD)c zO|QKQ7;XSRqKE%MTE`EM_I5vhD8`)!q>TY7lr0O?zM%jr);R)N73(r@Bg{K(H!t-MHU>oNighfZ*WraJf{1`e- z5sI%Z>e#rqY5S6@-`E*tXLgFvXXVG63qnIFxFDYFLVgiRln-%`{wmTfq}P#dBfWui z2kGvFbSKaubiIajGqAH1*cC-U9Iu5(X%~;q!Xq*3iX?O-0^RArrkMMF`S2hs-S(t! zwSTYV`!2v%lNL2UPxMdJ^1Atl8b7K{zG`!>+T^QFN6G%_ zCq(~mJkxfP%%?QFfwpFNbPI6Z@K7HZWWJve{co;N6zEn_@|xj^I-scYrQRkveSH~h8n@{-9UgyCnNmn%fLXc8US;A^|r4)7dLf`rH5H~1&QFDFF! z9lxG}9MJ)3qP)>>^lPX;ObGd(LB=&=c*DPRd_N)npJP|U8(wR^pAeHByBgl`FBLB@ znanAZ;b)$gmrN!h3_tU{Tp{FRS4XpBGlzKWXYd>R6XBN=LOynNh{swE@z~7hH~O{I J{~u)b{&=X>hxh;h literal 0 HcmV?d00001 From 962dab012cf86eed89bb4334674f4d56cde30ca4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 21 Jul 2022 02:49:19 -0500 Subject: [PATCH 219/580] GUI: improve wavetable editor, part 1 --- src/gui/gui.cpp | 3 + src/gui/gui.h | 1 + src/gui/waveEdit.cpp | 129 +++++++++++++++++++------------------------ 3 files changed, 62 insertions(+), 71 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 14b1b99e..01292532 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4116,6 +4116,7 @@ bool FurnaceGUI::init() { tempoView=e->getConfBool("tempoView",true); waveHex=e->getConfBool("waveHex",false); + waveEditStyle=e->getConfInt("waveEditStyle",0); lockLayout=e->getConfBool("lockLayout",false); #ifdef IS_MOBILE fullScreen=true; @@ -4359,6 +4360,7 @@ bool FurnaceGUI::finish() { e->setConf("tempoView",tempoView); e->setConf("waveHex",waveHex); + e->setConf("waveEditStyle",waveEditStyle); e->setConf("lockLayout",lockLayout); e->setConf("fullScreen",fullScreen); e->setConf("mobileUI",mobileUI); @@ -4438,6 +4440,7 @@ FurnaceGUI::FurnaceGUI(): vgmExportVersion(0x171), drawHalt(10), macroPointSize(16), + waveEditStyle(0), globalWinFlags(0), curFileDialog(GUI_FILE_OPEN), warnAction(GUI_WARN_OPEN), diff --git a/src/gui/gui.h b/src/gui/gui.h index 21bb0cf7..e87b24ba 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -958,6 +958,7 @@ class FurnaceGUI { int vgmExportVersion; int drawHalt; int macroPointSize; + int waveEditStyle; ImGuiWindowFlags globalWinFlags; diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 4ff2182e..549bddb1 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -36,31 +36,45 @@ void FurnaceGUI::drawWaveEdit() { if (curWave<0 || curWave>=(int)e->song.wave.size()) { ImGui::Text("no wavetable selected"); } else { - ImGui::SetNextItemWidth(80.0f*dpiScale); - if (ImGui::InputInt("##CurWave",&curWave,1,1)) { - if (curWave<0) curWave=0; - if (curWave>=(int)e->song.wave.size()) curWave=e->song.wave.size()-1; - } - ImGui::SameLine(); - // TODO: load replace - if (ImGui::Button(ICON_FA_FOLDER_OPEN "##WELoad")) { - doAction(GUI_ACTION_WAVE_LIST_OPEN); - } - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_FLOPPY_O "##WESave")) { - doAction(GUI_ACTION_WAVE_LIST_SAVE); - } - ImGui::SameLine(); - DivWavetable* wave=e->song.wave[curWave]; - - if (!settings.waveLayout){ + + if (ImGui::BeginTable("WEProps",2)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableNextRow(); + + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(80.0f*dpiScale); + if (ImGui::InputInt("##CurWave",&curWave,1,1)) { + if (curWave<0) curWave=0; + if (curWave>=(int)e->song.wave.size()) curWave=e->song.wave.size()-1; + } + ImGui::SameLine(); + // TODO: load replace + if (ImGui::Button(ICON_FA_FOLDER_OPEN "##WELoad")) { + doAction(GUI_ACTION_WAVE_LIST_OPEN); + } + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FLOPPY_O "##WESave")) { + doAction(GUI_ACTION_WAVE_LIST_SAVE); + } + ImGui::SameLine(); + + if (ImGui::RadioButton("Steps",waveEditStyle==0)) { + waveEditStyle=0; + } + ImGui::SameLine(); + if (ImGui::RadioButton("Lines",waveEditStyle==1)) { + waveEditStyle=1; + } + + ImGui::TableNextColumn(); ImGui::Text("Width"); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("use a width of:\n- any on Amiga/N163\n- 32 on Game Boy, PC Engine and WonderSwan\n- 64 on FDS\n- 128 on X1-010\nany other widths will be scaled during playback."); } ImGui::SameLine(); - ImGui::SetNextItemWidth(128.0f*dpiScale); + ImGui::SetNextItemWidth(96.0f*dpiScale); if (ImGui::InputInt("##_WTW",&wave->len,1,2)) { if (wave->len>256) wave->len=256; if (wave->len<1) wave->len=1; @@ -74,56 +88,15 @@ void FurnaceGUI::drawWaveEdit() { ImGui::SetTooltip("use a height of:\n- 15 for Game Boy, WonderSwan, X1-010 Envelope shape and N163\n- 31 for PC Engine\n- 63 for FDS\n- 255 for X1-010\nany other heights will be scaled during playback."); } ImGui::SameLine(); - ImGui::SetNextItemWidth(128.0f*dpiScale); + ImGui::SetNextItemWidth(96.0f*dpiScale); if (ImGui::InputInt("##_WTH",&wave->max,1,2)) { if (wave->max>255) wave->max=255; if (wave->max<1) wave->max=1; e->notifyWaveChange(curWave); MARK_MODIFIED; } - } - ImGui::SameLine(); - if (ImGui::RadioButton("Dec",!waveHex)) { - waveHex=false; - } - ImGui::SameLine(); - if (ImGui::RadioButton("Hex",waveHex)) { - waveHex=true; - } - if (settings.waveLayout){ - if (ImGui::BeginTable("WaveProps",2,ImGuiTableFlags_SizingStretchSame)) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Width"); - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("use a width of:\n- any on Amiga/N163\n- 32 on Game Boy, PC Engine and WonderSwan\n- 64 on FDS\n- 128 on X1-010\nany other widths will be scaled during playback."); - } - ImGui::SameLine(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputInt("##_WTW",&wave->len,1,2)) { - if (wave->len>256) wave->len=256; - if (wave->len<1) wave->len=1; - e->notifyWaveChange(curWave); - if (wavePreviewOn) e->previewWave(curWave,wavePreviewNote); - MARK_MODIFIED; - } - ImGui::TableNextColumn(); - ImGui::SameLine(); - ImGui::Text("Height"); - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("use a height of:\n- 15 for Game Boy, WonderSwan, X1-010 Envelope shape and N163\n- 31 for PC Engine\n- 63 for FDS\n- 255 for X1-010\nany other heights will be scaled during playback."); - } - ImGui::SameLine(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputInt("##_WTH",&wave->max,1,2)) { - if (wave->max>255) wave->max=255; - if (wave->max<1) wave->max=1; - e->notifyWaveChange(curWave); - MARK_MODIFIED; - } - ImGui::EndTable(); - } + ImGui::EndTable(); } for (int i=0; ilen; i++) { @@ -131,21 +104,19 @@ void FurnaceGUI::drawWaveEdit() { wavePreview[i]=wave->data[i]; } if (wave->len>0) wavePreview[wave->len]=wave->data[wave->len-1]; - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); // wavetable text input size found here - if (ImGui::InputText("##MMLWave",&mmlStringW)) { - decodeMMLStrW(mmlStringW,wave->data,wave->len,wave->max,waveHex); - } - if (!ImGui::IsItemActive()) { - encodeMMLStr(mmlStringW,wave->data,wave->len,-1,-1,waveHex); - } ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f)); ImVec2 contentRegion=ImGui::GetContentRegionAvail(); // wavetable graph size determined here - if (ImGui::GetContentRegionAvail().y > (ImGui::GetContentRegionAvail().x / 2.0f)) { + contentRegion.y-=ImGui::GetFrameHeightWithSpacing()+ImGui::GetStyle().WindowPadding.y; + /*if (ImGui::GetContentRegionAvail().y > (ImGui::GetContentRegionAvail().x / 2.0f)) { contentRegion=ImVec2(ImGui::GetContentRegionAvail().x,ImGui::GetContentRegionAvail().x / 2.0f); + }*/ + if (waveEditStyle) { + PlotNoLerp("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion); + } else { + PlotCustom("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,true); } - PlotNoLerp("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion); if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { waveDragStart=ImGui::GetItemRectMin(); waveDragAreaSize=contentRegion; @@ -159,6 +130,22 @@ void FurnaceGUI::drawWaveEdit() { modified=true; } ImGui::PopStyleVar(); + + if (ImGui::RadioButton("Dec",!waveHex)) { + waveHex=false; + } + ImGui::SameLine(); + if (ImGui::RadioButton("Hex",waveHex)) { + waveHex=true; + } + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); // wavetable text input size found here + if (ImGui::InputText("##MMLWave",&mmlStringW)) { + decodeMMLStrW(mmlStringW,wave->data,wave->len,wave->max,waveHex); + } + if (!ImGui::IsItemActive()) { + encodeMMLStr(mmlStringW,wave->data,wave->len,-1,-1,waveHex); + } } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_WAVE_EDIT; From 191a0dedf90635b934657d497566a433ae6f165f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 21 Jul 2022 03:14:52 -0500 Subject: [PATCH 220/580] GUI: improve wavetable editor, part 2 --- src/gui/gui.cpp | 3 ++ src/gui/gui.h | 2 +- src/gui/waveEdit.cpp | 74 ++++++++++++++++++++++++++++++-------------- 3 files changed, 55 insertions(+), 24 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 01292532..90925b93 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4116,6 +4116,7 @@ bool FurnaceGUI::init() { tempoView=e->getConfBool("tempoView",true); waveHex=e->getConfBool("waveHex",false); + waveGenVisible=e->getConfBool("waveGenVisible",false); waveEditStyle=e->getConfInt("waveEditStyle",0); lockLayout=e->getConfBool("lockLayout",false); #ifdef IS_MOBILE @@ -4360,6 +4361,7 @@ bool FurnaceGUI::finish() { e->setConf("tempoView",tempoView); e->setConf("waveHex",waveHex); + e->setConf("waveGenVisible",waveGenVisible); e->setConf("waveEditStyle",waveEditStyle); e->setConf("lockLayout",lockLayout); e->setConf("fullScreen",fullScreen); @@ -4535,6 +4537,7 @@ FurnaceGUI::FurnaceGUI(): firstFrame(true), tempoView(true), waveHex(false), + waveGenVisible(false), lockLayout(false), editOptsVisible(false), latchNibble(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index e87b24ba..656b358e 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1222,7 +1222,7 @@ class FurnaceGUI { SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; - bool collapseWindow, demandScrollX, fancyPattern, wantPatName, firstFrame, tempoView, waveHex, lockLayout, editOptsVisible, latchNibble, nonLatchNibble; + bool collapseWindow, demandScrollX, fancyPattern, wantPatName, firstFrame, tempoView, waveHex, waveGenVisible, lockLayout, editOptsVisible, latchNibble, nonLatchNibble; FurnaceGUIWindows curWindow, nextWindow, curWindowLast; float peak[2]; float patChanX[DIV_MAX_CHANS+1]; diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 549bddb1..f8c27b1f 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -96,6 +96,11 @@ void FurnaceGUI::drawWaveEdit() { MARK_MODIFIED; } + ImGui::SameLine(); + if (ImGui::Button(waveGenVisible?(ICON_FA_CHEVRON_RIGHT "##WEWaveGen"):(ICON_FA_CHEVRON_LEFT "##WEWaveGen"))) { + waveGenVisible=!waveGenVisible; + } + ImGui::EndTable(); } @@ -105,31 +110,54 @@ void FurnaceGUI::drawWaveEdit() { } if (wave->len>0) wavePreview[wave->len]=wave->data[wave->len-1]; - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f)); + if (ImGui::BeginTable("WEWaveSection",waveGenVisible?2:1)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch); + if (waveGenVisible) ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,250.0f*dpiScale); + ImGui::TableNextRow(); - ImVec2 contentRegion=ImGui::GetContentRegionAvail(); // wavetable graph size determined here - contentRegion.y-=ImGui::GetFrameHeightWithSpacing()+ImGui::GetStyle().WindowPadding.y; - /*if (ImGui::GetContentRegionAvail().y > (ImGui::GetContentRegionAvail().x / 2.0f)) { - contentRegion=ImVec2(ImGui::GetContentRegionAvail().x,ImGui::GetContentRegionAvail().x / 2.0f); - }*/ - if (waveEditStyle) { - PlotNoLerp("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion); - } else { - PlotCustom("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,true); + ImGui::TableNextColumn(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f)); + + ImVec2 contentRegion=ImGui::GetContentRegionAvail(); // wavetable graph size determined here + contentRegion.y-=ImGui::GetFrameHeightWithSpacing()+ImGui::GetStyle().WindowPadding.y; + if (waveEditStyle) { + PlotNoLerp("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion); + } else { + PlotCustom("##Waveform",wavePreview,wave->len,0,NULL,0,wave->max,contentRegion,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,true); + } + if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { + waveDragStart=ImGui::GetItemRectMin(); + waveDragAreaSize=contentRegion; + waveDragMin=0; + waveDragMax=wave->max; + waveDragLen=wave->len; + waveDragActive=true; + waveDragTarget=wave->data; + processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y); + e->notifyWaveChange(curWave); + modified=true; + } + ImGui::PopStyleVar(); + + if (waveGenVisible) { + ImGui::TableNextColumn(); + + if (ImGui::BeginTabBar("WaveGenOpt")) { + if (ImGui::BeginTabItem("Shapes")) { + ImGui::Button("Square"); + ImGui::EndTabItem(); + } + if (ImGui::BeginTabItem("FM")) { + ImGui::EndTabItem(); + } + if (ImGui::BeginTabItem("Mangle")) { + ImGui::EndTabItem(); + } + ImGui::EndTabBar(); + } + } + ImGui::EndTable(); } - if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { - waveDragStart=ImGui::GetItemRectMin(); - waveDragAreaSize=contentRegion; - waveDragMin=0; - waveDragMax=wave->max; - waveDragLen=wave->len; - waveDragActive=true; - waveDragTarget=wave->data; - processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y); - e->notifyWaveChange(curWave); - modified=true; - } - ImGui::PopStyleVar(); if (ImGui::RadioButton("Dec",!waveHex)) { waveHex=false; From 09b47fafe3e6d8f242b6467f0183f68f3ba7245b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 21 Jul 2022 14:49:42 -0500 Subject: [PATCH 221/580] update demo songs --- demos/Melody_of_Certain_Feelings.fur | Bin 17076 -> 0 bytes demos/UNATCOPCM.fur | Bin 205943 -> 0 bytes demos/ecolove.fur | Bin 57810 -> 0 bytes demos/neon_night_riders_TFMX.fur | Bin 160437 -> 0 bytes demos/wolf3d.fur | Bin 29910 -> 0 bytes src/gui/about.cpp | 1 - 6 files changed, 1 deletion(-) delete mode 100644 demos/Melody_of_Certain_Feelings.fur delete mode 100644 demos/UNATCOPCM.fur delete mode 100644 demos/ecolove.fur delete mode 100644 demos/neon_night_riders_TFMX.fur delete mode 100644 demos/wolf3d.fur diff --git a/demos/Melody_of_Certain_Feelings.fur b/demos/Melody_of_Certain_Feelings.fur deleted file mode 100644 index 6ccf4e13cb18a3104f26a94ef12f2314b34d2046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17076 zcmch-V|Zpww>8=w+qTiMZFX$4W83Q3NyoNrJL&N5*tYHDj!yb{-@W(w_CDXgeVw1R zuBuscjxpw(t7epUSEWA3o#^d}$ky!k1wxJQ1+@`2kCScG9Sy{cuXjVjsR+ zz%~FSpuO7U9KD0Sz1?*%0`1u5XP%6qW&HO^fYo!(%LZJy$*--b1kT5PY2VRKw~MyJ z>`lJI?#xlRj7E1M&Cw{O;m(`1$irlW41XlYT#b&aneQoOKX<8u4&*s8?}e??kvDP` z(RsW5V>Tz=(jHh++&nr8oo%206vfDI9oO|# z9n~4`1<+%GQL1Mnswv`%H9_Z=%HRqQG$4C6BjufUA#+2@opXQ?o6rgqW=AXZT_OSf zFo{|BzXe_BgiLL|M@=a|lH6UQLsjX9Pc`?Ds@#7O?hZxzK_EtT3f=l{5j4afIt5;V z+OgFctaPI?G2g7u_^6EtOrDNKMEMeM7Y2th=K%0 zcTm9`!+kI(3JoX#8%)rmd~^>7;}b8NH|~MPtsz<>kd5l;w@b`)>}F+g+u8ma2#!=Hd^?_O{vraF}TnN zt)8GzA(j-4yC_8Xa6!>ri!|8QRmt2CHu!x}A}=%$%`?1Y>V+hDfd*|wV!AZED6X_5 zZcwJ+2X1so$*j3IMs)GPOljdyao7k8=h#4T#QVJI$Ty3-4I&&Lody>`jQ4hzbAwb+q zZKm}7l68kLH}2XH2c1`{fLMO&sItVudDMv&_-2Wd)FV@{Uo(B=&tY-*s?F+oh>zp* zMiA}lCt1)gZ;qxXO*){?I;JmC(1&a8eBj2KUY{h+agnRIY>PuzkvlDbFm==>!U~i} zkM1rnny&W5!MDj*91$b!N)h+?iUSWbdj#h%jtO9G|H@=eFp&GPjpf`ECp4*rb=RCF zq;JY-ZpI#Hd5eWcYmBs*Ak@}{&00$sC`UMw8yUiQ1l)!@poJ$vs@T1QC>V{>*Fvga zUVV4zg+?21e4F~ww5+XPTx4cyY_hux);@)i!p@aADx*nN&LS6P=llw5gLa~sxna)O zCv7Y~;#v8|E~hYD{^F~VyQ{Bo-rS7pi>5Y_quXt8AUs@VV_=Mn6&M=R5XGzqEWR`VlgBhMk;{~h zUbl6s&fK-kNc^;^rBPSAK6j3(a2!(gFfj!_*lp};a=SdQxGfTs9_NHg zm({3scjaqKQW699iG~7yO`-L4CU#74B*vyAz&>=;dGL%279SP>FzwSOhs8*ma86`M zWwDae99?UZ#%~D#8}3vZrrY0dRX%F)c374fj^~Ort&q}XyS}-_V=oqu>Xsc4;vj7J7I3=d|Kh1#eJDJksU9^I1&@zBtN17VtIbm>(NlEu5 zM~>lhSf%LLFMFtS7R&W~0d#m=XSPM+x$j-+v>W6Z`5uEDH59@@aL+m1?uZe2OsutO zU=ctag`x-0;FCLH_OjBu{0S%#8^BKhq$IxAIrk|jj|vatG2$%cSu;gpX4H7+m4_Ep z;zfa8(gjefvMJKBbQl*GkePPG*QXVG6gf$cnf`%j_+y@dQu%?$$oYyzX2_DrncR!6 zq0?q$di;lrMGC_({8nn-Kf{(5p*v`|*``)bAj zzB1sDo-R$j+n~&723;Ky2Szv#FvEQGo7L|+UrYn{$)c>_4&%renO#6bQ`s7#8RE!U z2GOM!v{#1(gHFxNN6q6|#y%PrzX5QVVp-hUhG+V^bHi001&jI9K^kC7r(cfU?@GEwgNZI?)T9gm-M}SAh$o?4cqqEldr# zOb!)357XoR8E`*ZwmzgeWb=(Cqz;no5%PW5gZ@(buY4(q$v=$#^uIgheZz*uy5O{< zPjz@-n~4u*lx_f|q$W2~2b6I(;PK>@uc9Z2m+L9Fn@{9(+27|oX7)_d&?!$6d~wZD zt;TLf(|M7P#GBf+sRA7w8Xz6?j*516g%0zl2JszF=bLlb=#1wvn6TC4-DRgWBj#n8 zD@KI-D0y}QT*GBt1#bb!-K|>;Yg(bazMpwb*XGslY98Okzr|!wIebgL zAt#5uk|AUndmX$zWEd3h^R4(+?BM7M-B~mK#^lu(J0@GqpdYQ>7s7o7!@kA@&Z*Lj zbbvhqWz6^SYKU6x5=FodvXG}{M4uU*!a!@!bi`dV?;%s3k(89;?{JtzpUNcRA|dLdT^NKol!<>@ZIYX*zi(45FRZWt!ev7C!Kw@79E*67@qJf>d{-5>7SCv= zt(3c58tG7z4toR(aNBl`~V`MmIwk0EZt}>UlYMTj?7Y5)$%kCM6@DCPlt*aJ`o5rkp zn6+Z>a+v?fM`c(~E49>!*2vy3OgGD@@E;!@0*|x5D!-x8p@W*fLWWX$U7~E(;H}5d z3-IQEWz3!b4<~DVGwVSgztWwLJE}&~#4D4D=C?Tg#mK?_|f8aJbZ;-a;>Jm2};-;CuRxccXN%&udGp zGAlk8=H#4~c!jhXfk&2M9YyTeOUwto)*cj8O%zlW7o3}ttL=qyko&ol*3)4PK?*BP zUawyK4=)V{IAE1oD@~gCKW0{gugRm_H$y};SIum%_rtF9D$iM(@X%oOIi2IQV|(8I z`{q0$^ccFlW<2~aWBN$J%_&c$u_3?X2+{tEPwaOb`l_O-RtpY|H|(<=d$au#!t^-GZ2ygb!1nb@1>un z=Iuq`()(%|bF)&r#rJe$th}8&Wft>5ENj{nFfz(;vRv{pWjHV##dEj@oj@ty_8M`# zsN*&}UesVVNk>DY@3^SzMz80%$h>x;lh050k^pQq$OGO9T)pE1lIiHQTfbDd?zflC zR;RIh^rxBS2>3qzBnE{AA^_rLeHwJ-xcL+uruHi~o6I(c_e|^|u!Eifr$ja7sP*`{cEiE`p`Pz~(tL%! z`}?t(p8IidNw)9Fs9BEBL7D`i7qG4*$Lk@SGDrJu4R-SVwk}1_V}F0XLVcjDru+H? zP*d&kQpKUCdpiyJ;rr4RE8zaJ9^3Q!^cKtix&^2ac)0^i3Ve93W9nCZ9Gt@A_B@-; zhD5J6`?i>z9*k?dS#Q>PJx;89(L7wNw|w*xn}^1#s1jDy*qK{f+c!OV`_?dwM8<=S zrpryHonZvB(eU)tme$tVZSuc`M&tR8T_NvIaQgf?-lf##^_U4xk?ndduc+>P0OH!x zrg;D=mz@qLdwjOzd6H>0+Ryyn4}XuZ9>{!LPVl7AxBK`m+cZdJVG$>N-*3J7 z>ATqNWIONBKc>9AzfXqdxIYXoE_S|cl<505*{){uLB_ChYQJ_$I+%KS${9{}2Y!0a z_YmbY*|W7%mLlJC(vEAF&1UsrbBjr*>3OINy|O1N>o%P8-fI6|)nJ>Z>A35nF5h#8 zQoHihAVfp?R?0thd;0(f7N4KFsO< zxahd->^c}<)b}_ZoS)>oolA%n0FDeGzTLjR5Vn5U(Wq~<>@YmO?=yV79146qU%0~G znt88vyLKu;INWqlJ_>s!RWJ!`J7OfWHNgnZTW)&A5UjX z+$MK+cJf~{&(6*&?^rVit=X};k_}T!$pG&kVA)zwRgN(gEMrM%vIj0X<$apmdh=~}gV__p_g$00+-2L}hm6qKdgjvYcd7_p0| z_uwGDIg^-B+Zb@ytzsm|LTI^SqFDY^V-fiy^_7BHs`;F%3L?!9VtR1011OQW6|;SQ za+408T^ms228^k_7!(bIAnbJ-b9R08tLN+)eB-wA(xJ%^vDnxa7HOJk*w|@lR|2rv z+WLjNkmgUKoHV5H`UwyzOAer#7)X}v=~WmUQNQM1s*M1~e$@bBeV`nN63M$_#Hu0)uDcy&L zHk-MKuXO)_*R#smFFQ_hWwXSmQJO<8Xg;GW$CKXARbHzJFzdV*ibt2FJe#%zWvlZM zofpqX^7p$U3DA{bNk0%;84(EZ zUrpMa-JPPSG zY;sSx_cL7+Afrhd4&b?6V$qW2a9j@#fV}juf3Dwb8mzT>+E(S9h(xSbXV7+?9S0<{ z>DGEb*LPHXTDx?3zQMnGe_GX+cQ0DceVTmP^xSKPnYt`r8!i6caWT-|#1 zowI(_VSK#EZK%o1wzX;hE)bOB+vC~h!+F<7=OL)~1z&dPT*>&+ycdW>cGs}m3z;$>_t5KB|ECkse;f4f?f-`<9*ZWvTL#F!6wilbF>4J%a%HD z)|-Q&>jBXxI{49c>G=RN^n<+ke4UBs<1sxOJT~GjtgK#-LkI_5mbs>5H}1`#}SP|7I|VsO5im zrfJl2L3sWkbxW_O#4M{-PgdeR>Tk85bryF&=Qo>7i``9D9o=cXHwCnzA@DLA#2prW z-Hb?jI=-gc_N&pjzC^EKEyw~V@9A+2f6r&J8(%lz?=tBxi^M&U(}uIjTNyjh@3uFb zc9!1_%&FvEc<;J6ZQ0aq`<_yF)6+5J4YYrskngd5KWIv->AZPp4mp3x@&0RcYE2&k`Eu^)92M_b==2HLafw! zX8857L8)J<({|7idjj*q@T%A0Fm}u*x}7kb{j?R$=cnIxgFe~f_hQo6!zMw*lugP*g!%lq? z$HPmf@Mrlb@*UYs)CmBx1gx|f9-ujYeUvxS+gLx{uv0 zL|eUIoYQLc0p^9@>HEv3stK?CN8rb6zd;cL=V7~VNerQ~9)GdNNf7Pr6d(kS@A0M% zbDg{SLstEv)BU3M<~yH+vG#)YSrgsyGu3AckLF($c)wl{SXl|Y6nNbSoi3JL%s$L; zzxN16g#|uNgv(_)1J6#YdI)(+X6ifeGVUtHUicSP;`tBb~MA?RATS{cvn!Ln$-9;%W3Q#b5EjsX}Eik z?KJcoP@SpHcz(8-S9>=uQK9c=H~>0X5#Q~z?cda~;Dd#iOjvtw$(n75%Lka^WP40h z1Z{4mm&J8m@R)r$1b%E0L}!zR)oF4J!QCyDe10e=P4#Vi$cU+-MY^Wst{ zi!~K*m)jBq9_P;z8{T_yv5S25zQf6gk9I#a$9zvpXG3JORgC|buQ*Tj6l^OvOSIN) zc-rO}J>4my+O}^uPK(fE>CH7T(kyLNtkoU{$`g3()|C)wH(VFlfpk(H@iRMn$HLZR zd2c@l4xs~6FE^llpUyAFKYU(~+~|%3Ddc(@KCeG+zPCcFsvzKG2^gNxeV$s@ zmk(t+_TpztFtT}?Q@BWgq@fit-96`7bY245pLY~A6^or3x^IqGw+xy0al*LDDd(#% zqkTs$9h;9fuYY1XvBk_VkLWpN{qDII<*3u_-;SVD?k2GqtA{ns_V!q0YQtj*mT&Gi zs&ECCm2Ufaa%^~Xb}KEp=4RVm&bQ_HUk`R89-Av)4AwVTHMg7N{ zj}@{K$3D%h{EH3JyhZX3wmr%(1@E8}UDkiF18rDS22|N@n@_rqBztex-7p*)dfb#_ zx>MT5%pG4I?aJQ|uHxR3AVCc`G*td*BXpoi!I@=L5_|kwXRd9%JQjg~!(sc@i;d9yD=rWs(^H93OKU0gy=4tKqIM*KRSz~OzRrWKb+S0Pr9FAj@i^}o=A!cdl z;fT-EpoR$(k-%}__aFY}N=mvD8x+r#F3q&Yo^spGiS@XXngze(Yu|^#jdPxb?q*=1 zu6Flwdy6Flq4k5JTn&Q?75hu;*FZU3--XnMYJz32qi66px$z0yco)rB|3Ey@msKvl z^OY`>$Gm8|-b|<_w>P2ptBu%2KgZnqhgGf1_pXf7Zmuhf^TSnA@8E<9*;B)_RinAy z?5>&NY&!?zT!0+S5tFZ=VfVVI`u=@=7`#kSO%sc))f;f^?ep9ec5#2oQN4LRIuY%a z>6PCkkn0!%}&D>$*6DU8&psw{P_ib%#)G z9$%jo2HjR&-(LWHglEe-`naVqp5+A)?L--XS`E2 zcH|b4zK|Gw0pEx=FI}`tqW*>7 z!_Qecf&H`VPkDEjwiKv;rTJbwGVPN$#4T@Q)4J1f5PjOC(NX3&oHGA9k$iv=$iIis zfjEa>U0P9g*9ID&*Q>|dZe}=r)z{^<3gajdOOPT!#KDomj?2YUgNkbz!1G9;>y~>l z^={vlk&-2jO`OLc#>>N7U7ju?fuPdiGcN4J$KWp87FSv|Xx!Lhe6VMB&qLmGSgY*0 z3aPc+A0W=9Iv z;vBdR7X}LnN8lGh$1f|f{VCTO56VJCw z%LEK-5$D{qaLtoh&`30d56-Wbc6c#qYoFFKuYDk3Cu^`bzU&6)n~{k}6-&?08w2eI z-F%8w!C&fdx{UD|-xxYMDF|3KAJ1Jb#R{trSeojGk%i3A0%NcxQD1=6RO=UWZ#WFM1^J3L1jG>)`a<{QSmzKbPyzJn*9eN98i5;Eos zo0rHOciFVv&{x*Iw1lanh#hhAfb8LFb$i^daSbg$fp08fGC$CTlh&Sv2l5Y;z%lUO zuMrH2rB!NRJG>xTZ~8p-_O(-GAv=VCO`8GObM3K4+r-dNe8wk`Zi2{q6!g0`S5>gt zp5t_fi}!heXr`F(6U?a|cDZGSAMd)5R_+7=Y0iap9`eB@ZPTdm*IxsP>1retwVH*7 zY5c__+q#MSl`(!}?A@Ql8ICj8sWs4fF`8VlXi5ntgJcT^wiNlNl+(1>@UPX{rSxoI z$AmbWh9gSo(pk^D9{PW4sn8q~_GaIyZ}7TziNc9nZ24F+^sp8uAe_S1>Z}}9cT%zB z`~%Uu3L4W%BGJ8$V;%pbFleT|=y!jeE#JLV=bK<9-;{Ij@a*B)MJFIY$-=XqIZG)Z zZw9ym3qTncvnh^xCzXgj_K*^<@rC;_1HuN0*v5WlyU|e6oaZ{(T|SoelA-IpgqxK9 zo3_hXN}402pCY@MEFl}24<25YO;t$1uFxi}OClOqe0iK*)PyFwk>I;2s!=?8_p;NR zy4#h#uC8=?TnRF%1R88Smb?a`=~*Y`urbZts-_<)<@1_Ku3r5Ofx5EnFGPasJFu(? zs2N!1=rzc-4Tze(=o|mn&c?o&etr)=*?XBd!TZrM$Pe^jYf{|1c9+UI6ev$al)!+a z`8qh8ALK))4v^~?22Z_lB1w=|yzsLAD?`QHKE<00i(|pq^i*1Hzx2Y<^6x;bv?lvJ z_(JzgSh%9lL@SpQ2a8OWX$=_%^4@Sc&XyYN7Pl>tFru_(_H)$@N#QW>p(?Q~pnxZ$ z-{;H@w7|zy^rvUeB1Ka(Gc)rEo;3%ti+^xyq>@8|(9!3VlouD3W3#b@&?@7gUUR%; z!AqQESc*v5`o>U?VPSta_#+M@hEw@`Tpte}lUN2AHvx0{eYtx25FC49>7dHdesYRP zSY-v1XPPoQf5cWS0dA$`+SAQfe-7T&5MY7*m6CiO#xXM1gpOjtR#qBNk70Teom@Mq zzUtoEOs{e1#1_I!um9Vnbwd5nQQWpgNHj`E^xEm~7hUBqhqOok|rgYQ&vS6~o3X zGk57EViiAVnd6UgW-*eQ1rY07$I;E!O1bUrK4I*Zj^u?$w$oj5YNZ#xmP&2LqD#XN zVj@vYEQNy|*uy$+bG3pfY0)02TsNj}Ty?q+P&~A;sIGP)sI<1cTL|s?irE_7k+*RP z>uwU)WZx(zF5Y%v?j&O5^%ABAERLE;n>%-rBR*gx7B$A&%bh!jOVQZECp=+whkSIB2Xua1NH4!n)|{V3Vp35tBf8=K zV%2YMYQqQkFe1pEpr=N%A)bR$$+zNuC)w1|yt2CF-B>ogKIdH9w}0;?hV&b#^P`rD zwjpBL@;igv<$4KGmwXMYlcKG-TsBkrt^(S1Ul`U^2$j8#H>5_MSWn03KKx5M4$j&I zFr?jd@%`WzL$3#jCv3)M2~mk#jz4yDwx*|Xf5op}uM@uUrtxm>5}F+t(L_Pf$$YpD z{#n{cl2mCZaGh=peMvY`P8J)+>4UW&64k`xrVaIt^!cJb)licI1fdB1X)bjB1upR| zWn7}C=yEk-@pz6L?IivOp0Tt*=XR(d%-Kp)6&;ntqy)1GMxq1+s&7}7g;Ow> zx1)H&Q{32|`&}0lu?>0H{b2%ob`}pn(Cpe(RHQON!60K{L--$}rgWN`ZCylw9OvcO&`F+OwqLc4gtL&E>`fXlbCL;5SIaKKdP@|dX)RpK@;Rde6 zSxf~`Hf&DC{dd+pSfl-pPp4lkvgAyo8ox-V%i!)o=uhF^v3spIMSB;P4W7CJP2_(a zC~)p!4%#m<90~tQj4&jXkT4E8sMHA=9jeD(PD^w4WXFV2YCLiYS@#ts4KKnXM~mt8 z41Uf3u_HEy1V&j{#f%!`o>g7TA_?gZ9*|>QkHaZ~_Bt%-wR8#MY(vQUg32c%lee~J|{VRUI$<{4bf13V2I1C>&WqNu2DNVlou#$H6WA>$D? ztN=X^;r*3J)`qG*O9*dF<|cecyVMYm;q=tyKoVe(k%*!P~J+tT47Org1KT9r7zM0L&kLL8KWpV$JbpRqC z8*6CRJ2Bx-t%n0A$ygxb8*z`kaVA|vFDbtz3qVr-l&b@!2wNP3%9s@wdjW!WuFug* zLJ7^35(z^m?-!s93>4*urae~73?MOl8+2Pinvo>b023pmbwnI31_3uZAdI9htfuc6 z{1ldeu+V@aVKmu9u0_MppJjC%0@SKj6OLUiCB$6{sx}en!5ulm6MX3;D6m(I0}RV- zMDr5)B#Yz{@f&e446w`aci`>!b{%awxzF$81Lg)Unid$wQ@FiCzveA-ZSY7lWGOK4 z_;&&ei;BzpRFx0mAc#$$Nr(@$a1GIV9&rozz(Ln zK%_IL{YhLmSXhP+Ad%dnlDs1QMhj(M1=tNZZ{cg zJZ6__jA$&=e`b~)6!M{fQ{#we@BsppvFF!hQ!k?ykqb1mqIewjYaCsCKbqr9ntAH1 zn5Hrg88bI2Gcz{^3TbdS&NI;<6HG-=!B#ZNfH-n%C`!P1T*=_>ZLqMO-N@k}AyNoY z$DaSs`cfmZL8!8f!CtKB5jcbid+w=Ne{%G2Wa9iQp|AuPnFK1JwlE0dwvJjqGKAP2 z1kOe z_x%JdxFA}BcR&&phCn>2;cuQ<8>OMtapr2bkOs2w?pu1!FM4DcRV zKf7(uycohL;W>goMN4a5p>yT2Umi;N6MT-ag{1FmM)XAhAT zQ>4iUo+0f2c-#GpC}<$R_m+2W49XM($j;=63Qus3Zj!@+74Z{it3|C~13^(VuYg$; zKW?5l8Kr>nJX>&yG6*!!ehM*CnsI8!{|PhR{pc6lDi^Himvj~Zh&;S|M@O=13);nT<7DIy4%06Yu@GO#@5MAGfBd_giLV<=w($y~hQqsrr6*Fa>r zKSwULAU_#vv1CQ+k#B-Y;_RUu*S^Svz>x+m=7T*b803&J)vAY!dq6-(kcq^UEM}Z7 zp}Rm)qtr6}_6p!d%y40Z#F8D}DNIi$O@u4PG#-f{MHVH-FBw25z#BNi2D2_Pz(fa; zMUP-Pz4sIkE%MhTHRS(7O<(y#k(z3YLsUZtgugb4Obk3NLP@+61M8lGWog}<*^z?O zUIvk-2mvBmkT_LAvWv(zoDrn(sx|Xxs3KH72^4Zz$#xiGB^p$(m0q4j!slmVjVMoA zAz5&P3F4MG|7T_-^*lo%|25o5=qCdw+^b-6gP&xxtf0%J)nnl^c(hedb}-cWB*EYs zrlL$Bd^>(hXm=pMsa`@|l|KD>bnr*;EMpC4&`#RE9jYBI?DP;(6g5^*NeGc|tuR7S zLF|DA{B4S+CvE0;Xt#siqJXC}DiT zFyfH1k&zv%p{fxSiJW&xB1=Jx1FpApK!D&WI}U8fNGksO;9<~v#fE(*_gjIvVKOv| zOdx%5#S~cah7JZ;I9@?W2!?hjqR?v!0m=n>P@SM3Rl5@r0l_eD~O2+Avm=SjpD(?CKZ4OfS7jFMSJ#VfrgDe(w#!ysB(qX?~7@W?8p9q=PWSEc-) zn&2XFpMSex93rLUv|5okhk>NVi zQ7@`yDijiGQ7ILz>Nb>XBBNfa2nd)2@2I5@$}hHnMI;S(P5h{@H_%O@hzBsN0n~>Y zyjq-JKiDx4q@eJ)(C$JFn;n92t3P0^?nQFxIYDXnTPI@sRrwROm_ts>8Ht5dn;sAY z_z##1=M0Vok&XsoC5J?YcF@Jx7&AxeX^}MO_(7D+ZLxyW`pIRGu|p+CP=8LwK~)}m zPZ9ns3nUj*s)8o?r2B+efA7km*OC^Yy%8ZlPAg($tDa#>5d>yisRIddQj0C=1Ueu{ zx>>ZT7}hFx0WrY8?@{$3VA(}Wmb4X#mKZ8tM}bg%9DN4SZ3nlz7A>d~U4dhc2Gh_4xt$y>E*E6t@mZ`(wg}-RsRu_TAJ6Uqb%K`HSUl;%x*!nnWM{L86 zh8Nq-Gq}%p#|L$pgOP+%0wIVR5^NfgSE-=uLpXtI{HE)|`-Fy*k)ae?z>O5Jn2X5C zbU`o+nxU=uCQLI8#*`XKTMeR?1zF=4Wr?h6S2*vp6KBw(W?Z$Sse4^J+88gcSv5A; z!8jjX_qg2~SfcM_Cbm%6$Zw?Wuap~$^Rp>^kxH+3e(C2gZiF+UlX6hCVV4Aw2fyz$ z%BrxM+OX{CvxjB!(VreB1SHi{;on6Ci8z)ne0>6^~EFRyq}&L#i#ftFb|)3^KwrT^q`ww=DW%~zwh=Cg!(KHXcVLXxRVSz`te+ronP4g$|;;WH*5?r z?8tak>50ubx!Hv>R3lX8+b6mSe?=e(67%^@$a~D)FaYL|4|HyR&!WqbVt%14mp41z zJbnmA?l0!2&_+l-p;pMhNub+5vi3W=L;u)=Hlz%a1bH4654)iFz#?Ahe&t+-652z3 z?kWDmJbj8oWrf3u7~S0yFqBuLWbZ>VEEZE_dCMg;gT?w~23 zo;by!nv;;qeAJ2O_e(sFMaluOq(L!AB+z>$K;86z0IYh=SPMB@xu#epDD7Alh(XeN zb}O%`6@9nUey?#~Ri*imyI)Nf<&WDG`fFa<2mHIsvomE0lIZ*778Y^i&E@|ILtc_! ziRTFEzhF>%A1Bv*{tpQBQ;Z+vRdOa4J`Xpjq(N%$S=KGfN_^l_D!%nacxCVNDLp@t zT!q8Pe&tvP9ogQ*A`8=;OY;jOJ&V5AP=C6HMl6al!co}zs=`nmMH+-bs^lYBMlUcA z9ru@j&z&>4eNe^r2oc?YL8#u|c%)#fQeku5v6&|~3FjRypJZ_gA3+hv3;LFC7JY{C z4`8DTW8E^j>DFMPr?|n4ye?+wCHr-sR^w@m=WB^|js_K{{&0+yP9uiDSuX#pBaFIEbR?-zNF#)()s20UtcNz zPyQv_djR;PL0Nyvp~NL_&v-Qon);U3xUijtBx7Ix3H3@hk^s|J&b?`KG~n~CyrMp? z+>>{e!^yLNum0l13uO$OPb%2`$Ms8Kte1_~gCVz#&hW5Gz|FPI!NlBQ%AfVv^GyZ> z%nJ8|QPli%^&nqB&{Lgq4kvL8LkXYb(Mp`1xrCoGB`S$xM^>hf99~ZAM<$+}#-|Q{ zd{-W(zBd~FKKEq>W?m8ErH(%YA?d^DPg6sGbIT1ydjKW(hA4hv1F4!oWjo09HwC`u zq4j~ep~rm6(Bss^A z&l4NIgPP+e62QSA_Y-M|Q#kV}2uawyssL(Qk;^N;r2rIgU}X}HYVtL0gK zi$38m=NW${HfEh4DCiWu(mPfuniCxQbBqT6lKR1&$GFV6tb)20@k!rU4=VbU9>NPi zAbdV^F7wD|&(+?mB>^=l;Rt4wL9xVj^0@Ptwfkbo!CG#i3rlBk#2Mj}ioI zso{}|;#gYgR{tAB68xqndi4l{03Il1=wfe&pb?c(!3cmHg4^6B2U*5jLe)~k?B&fM zRGbjhHO-j(UBY?HU{4pH@@HhLw=J&W=%k`*N+=}DYNZ$K8wnj=3m(A6P@XdmB%`1a zIVs^^P}6ms^U%PGA{m<=hT*T|sdB7e`oJjJVvu+Cx?KXdVg}Ljl|6-+i+}+*q(Ki= zxCbhP3K6?1l%iw1p9RNm-C!ihnVRCW7~_!!HAfnJmSrUwsOdpY@vvsQb)ujnsmvQL z_ws+uWh7e;Dr^rVvz#)$Et>@YtSCCFRD99v=J}W#q zC%FzT%|6^xlhrdNUAGPg)5yCg|0KK5s9^nm?K)ksbaP@^!yEB2b37LD*=IHXnGlV% zj?nVCNv76+G4LtlgE`?V->cH@^?Mi;nX8)cf5e0>97aEgR_C|4^H~hWdPaks$=Q)# z-01!hKKp+JD(@5@-SST*xB2W2HeUk#Ry7uv-?2$W&tmCOgkM7_Gq-j>!TGlZxqCG7 zeTS&OW&f{_@X9Cf_CG%82mZ+{G82+k?Y}_Y*a`oIgn(Fye?RhXo>5RMFYf#YB{z0A zDV9+0q2~^qd4*ODHV8>Ka+DxH^4~LUekiXCp)^q@81J6jK72MlwRc$(u)fhK9-mlT z(jeEIaO?684Ad7lrhfpWK+d;f%G#lp`bTB|YHPR)|A{XJamJQy^gld66SrfOcm_${ zcPRbSLB5a8HGL{N?&ebxO7F5)48!f4QqLTVTA!tYxTZs_(l`<+>m2cWO8zj^KMg+f zv%R^tMkB41Ace_*^sVE5%Ia@J2qH?|(ntT-Kv!;Y+`itY#kS>NRQz9pOZoo}?lV;O zdELnHw~oJ(U3Vw{49=mvgo^sFz{h$L=t9qJmjur?n?7Csd;7c(Xr)Hce(vV5yfC>osZVlxVeo*(#@gTCHat{mp7fSAR-7 zCB!f_nY6aMzvg=G?c(UCK`s)vvz&M~qMhn+C#_h-NLU9$Jqs~5^WDtx>AA=wF@u3E zIy@Y0ixIq5*gc;x?Y{25c$hr*SywfE{)2}l-YIeYn3VVa_uI>omYGey#0b!{0Np z!*PS8ZD%%I;^pvt7})ay#Y+TT1Ogi#MoWP#0uIY{U$reZlX^Nn&_q5xh+Y-TQ+l6{ zKZrdpzjKH_Q+K!7%rO)1o{Im;?B|LROoN)Qm28yS;F_O?n-xKw5Je#K*b+HVqly1EnfcAx^OtqmlN z8hUHA=P>+T7qw{*XQ({i8J&9Zc3EZcx{gHhx_*=qed>P`eF_vGPYQe#1qIx~gG}Bi za&P?;8Sr|BleVcYWnX1-dEco-^`96-SFWr?pJIEUqr)F$Aj%gi(I<|NB!-W-O3|mG z&CA_z)16V4P3Y)V;O^*Si?_xjJ1FGhrf7>Kx9X7#RP#;(a`ca5pn4$yiGKh=?>8)> zPfoQryC+W9yBWcv-cOvMIEuYdJu1+3sn;K@%c6I3P-^_8#fu=wF=Ko5ZBF#bD2U;M zX)@_UWH_mZ<9gSWMbukyYxGMF!><@gmrhB+aLMB}*rPiX3qy5kfhCk(0WySZ>uAaM zd}HblK43!a9r7;HIKuTdGlX29B_XjA{^vR^wnvua9})P5Q&Nb1mm0Oe8NrCW6aI*m z6V6DQ6W)mF8dE~gOM+x~V6CLdW0~Z}Te@UepfYs^2qom{x1@ADa?yb+?8mFv4{Q1H!eH75w#5Fzizr4dm5Di#nVh-i4nzVK+wd zwn*|-A0mqiyP`)pVxmv|U=91kOS_yVnE0AksPLYqNxOL$u}c(?NRA$9QD;IMNuOw4 z4ZL!XDrz*OCG(MMuqsv%@BB=QRZBEVBoMU=YKhpbT$Q`d$pLzw8zgr6cPSv=N74o) zDa;$nZFkAgQg}x1R`|-gy!iv4X5N6_hj>8mW0=I(Q5oP<<(o3yll?yHWAI2FITB9Y z2o>@xglHi874mMgMMWIe_|e;As{Y4l`zm14PFl}mj{-~lS$210`aIAt&;o;c5f7jb z5_=q!&+{|a9=Pibjb~pnHubtql+W|JtRLCI3h)WsE#NQ(U>M_L)9+&?I&R^9Hxx;VEHiDxb2TlpK4SoJEH@?(&K+46z?? z&ih5p^q-kcgf1j*YF;-}I9fKmr@J0E!~1%B-j>rS-$nbhHDNERhy*_nr9Ase8ukC`-O?tj9=1v|2EF_w~j!T{BYFJ(}%bG(5I#i z4-TsE29Tf7rIc~5sk5}f>e5{&>L~V3vVn}lY;Vb&l=^f2N#JACqt9tN8SClWl<`XOrPUu z(_WXC0;D`2RKwvAoz^oL$R}O4Ntv@=O^Y3bjR(nMqn=w>1B9@IhwxJIwp-R)FAhgZ z%x5;cDv^wtfaohFa2XU2s*COK*8Y&@b~|KVb_bQz499n zb~tYaWwlT>P7T{lF|a%TTUvc!-+hbD$)j_vUJV?#Sz7lBh?-~$Jj;B+Thur7-E_+F zz;ImJqJrF*oOG7%|K>x!GIcN=YTKBq20EMK6o8_B*eTc8pfn5S%h zKm2d4Zwl#J35}~s0WUk&LM>@N@yW-co^t39aa$o5`(|5>bxdFu8;AQV%Z-tJE>_8q zm;Fa@UWuwBGp8_})Gg3ngs2BEYwdlpSb}eniK{bk zc)`o^`z_s90|^Nu+iaH)e=O0yL8E@Q`W=`D#J+GG?7TJa6~_fy=0;E6^l9M=yzbwR zbeZ}bD#wdGhK_8!#f#nJYvbyyGvkyTNV}Imy=%yqMyD`JWOE=)Janl&i??_g`xQIB z#ZLl0a$Sv&yV73%@4T2bOm@YKcT2cj5K+FqA>D5uR61|cFSv0Bu%fj>x4*f0z*0y) z(I_Z)Uku<{G0FUS!R>Avc+oA}m*9W>@SXa9wQ~@x$fq}f?QtJXkC}UO(K$n;syEcN z12pAr17OW?WU@M}vcTU^k==fX9kkE;ay?^^Hv+<3%U@&3ZhbDpcFy>{s=}nE)00mfm3_OHts{{}1o;{sn&ZYJh%%cq8~$ zqT_!UE-uL}Yc5+T`&af_mRrtzaP;!#lR~?~ABCYu5H%6GTE7>&Oh!s|WT>tH5gtynbzRSXTXZ%Dd9y(&8#RC86Y$Tw%7iWVgEz5J%Ujd5 z0S&}ATJNQE*~)^QmJxRG=#w&9l);y;Xwe2gu1pYyq^V4BVE)sh@&D4ISrnKd*YCFc zEiDulO2`Q2;1EL-+lYp~&saZ_^xxxcgBd>RMt{8Mpie3kZSAzAzW<7Mq@ zj_y+SDpB^T?Nqge_{nPN#BV`W>CFt)Asy$Iu>ziJ1RiBcWV}4?fAvuv72Wi<_$fo4YV_0?|hlG3Ha=L z=u}MYfq^d%yWQGHDv%=J~K3`R){WHuxB|nt9uZH2u0QGM($Z`LbM7 zy|z`qlq;0$xKh6_1M{f@Ios)enenSu^|yn`MrXiX14IC;Gt*`5>S+jb z(~Z;RHuT%(<9Yd7>T0v-eFxRLBrcVoo9XABpQ z)280n?|Z>covyrdjdnZtO|b=$iQN)UvsxZ>3=G|Gu{|IA(})yoWc*`;(r*ms$Wi^n z;U#NG2g8%O3r_^IIeU`U$^9*XPtubCcEFI z3j!Zc=cchzbTh2zzsFr!z7scf#dBk# z`)M1L7a%tG`-A6>!u?prv~4Te^yzh-;-K)8VoR?7J5ufI-DdW@qfh=Gv%etk<9NUGkMq-gki=V3?Z*mL-_?SQj}ZM!)_I%M_H@ajr|H9C zw`y)M5>}7@P*eSn3$`uit>S*9&#i`3Z7*}4HDyjK4PQ_Gow>}+3Ao;$W_X(T@1IBr z{XAN)v!7NKSPK}h_Psw_?PxJff1aw8c%ce>k@(n-e?J6$TjMG`eCj(9-V_tN9mflg``ERbmUwIGd3{L>KN0Uf2zy%(@~DBf zd-$$jXaCEvGoJ0Pv0H8CV*wUs3f)$hn!diD44b@eNW9Mpbo&do{}^WLdD#27PMpGX zl4UTw_&5}Ms0PJS2)}6r@^`pz{De;X=Ov6w=)*{K!3xfS`< zN3nW;+OajXD*jy1Ww_+D-fbuI0ae%Kb_UZ?#ks28r=|5e zhgEkrrE3-Tx`xt++-bkEjgIsEYmVN?zwXmg(Ejk|`ta#&vH|7Q2Tm-m4wKn_m-mWL}#9yZR6lJiSHtxvs{&fVnUW{Q$ zcrA6W8>80VgSxKPFW!GUF|R)SQ)U2l@+?ZwjVD@)0Z(jNpBLl*JK{_D9pCsGtl<3` z2KC&joz5%p+oI=*x^aI&b-VXzdQJ^vGKVeP86`d97fpzOa-wg;`2WH@hNYip}@@vtVB z>+~*~Z}mGI6oTTDMVfR?rGsS7RUJn=d8;37p!IpWAyfaIi2@bdc3!?5Rg73F2^==> zS0z#5nQ0s*J;&3HfRiZ-yR@_AwK+XS65Ee~nfU)$XD9Lauf_CuoR+>}W9m+1(Z2Hz zQhHxYq}G!Yztl7llT-GXnKcH7w_{-`|HA#rc&gq{?WU#nn6V^|N|k~%*XwP5v|#I( zy!@S0dT2a;v(uUP2QUFCILqiviWjHZt)<>_u0Pwe*2p^f6tFa z`Sau1>$%)JU#IpOA#do>MZk%jMBvFx`uUC5$jTPvtGBs@5BG2?x@mDb%i}+Rb(bBu zc(Ln@RpI6GZ*SpP7PiqbZP&n};hY)-vU1X*#NlgP5Nji!1sTY^9FF#o3vI>D;Mh(%}5=p~x_()Bm-X z2Nbw-)Pgsmy=33LbAQLuFVw%a>OR+8?H*QAS(TZU`Muaod8b0VQlNS9iMj0*x-}Ob zr%K_sHFF{}fO8uvV>~WUWvnew!5q8Vd2VfLx@m3e=j9W1naz`;sEVF*E|Ny{kKe(x zWrE4wJJZj0rp@-`+)mfgWZ#V_%EI8XK1W>4=X&zu?Nz?#n2I7ZBZ}|_k9^a6Db~}3 zqRNx8xID6KN+2B0g*TJFk6&gKi#f!>4efdvLKXNhD5d+-pt^MS&)v9m+;p?f-@S;7 z>Oc1rkq6~a{9F~Tb#jZq!;~OOuuAp`0^P*K5nBQwGCs}l>*M65w7RScZ4OL!8l(hb%xVzJ)=fRb@KfmgqRngAKCKeUQ zxeoaU$X$|MY(|PqWsA%&K-IKT!^+DTxuRh4HNa3Mp%l70FY4URBzriIb6ZdpC9^e| zU0mq1Dj7ojZ1s7n+tuF8512@6e8OMzVDY`M!cYwzGnZoAif=nMr2U_f_>7gUk42S2 z5uyM?au6GfhtqPa)#Sg$$4fMc$9+(4pdFCT*QY&|4Q;`9<#`{2OxNCMpZZhn$MwhC zjg#L;cG`)J!?|<&s4SPhjZsr4TXyn|5_PA?cvur#?!?NR(=Dh(U)7U1G$Rq^m*@Bx zAI3&R_^kP-(qa0SX>!4NBDOMEq>tZlkyV@ClS3wXsd<^?Flh@5O#(xV64YqyR+TPL^yoPUgLruD-3;Ly2g;t;#o9qq~omhL1&WnlG#rn?1 zj$bw_i`8Tz24sdh&Av*5S{fXa+1@uz!KL5o%lo=z{7cn7H`vk6NA7EGl~+UfA}A^CLZIB@rBODve#@uZCS!R=N_2CFs&vPxu>+8%c#IGiq zRM^v}5ZBhU#rtF`wnN9g$*oyrB{K0<-TrZ+%_hZ_vnrUQJj2V!g*Rt6OSpEW&1UC1 zPS~o^X$7@5LDc>AF7NfUEsv6%GPP~y-mdxdU#IKRn2zpp4k+7aZ;!~-=WU%QcvwwM z=UBKS?LnG&e9)zQpryv7qhWz5dG5%bo z+rDwluAv{MpSq>+ea~@4(a@0v?TlHncvh{ocD5;cUWq1+#obao9)V1W|H82>y8q^F zsy1l+e%GE-xpe2&)^HG}*6DidJTbTN52{c^56TsGv0w$gVyewPwGW+Rbe-@w@haC3 zEIT)=v#HTvx64F=R3>)0Ef@Fh5y_USj_oV$jt=c_6c@~yxx`Wx;y`jprS$ap@~+ci zlU=&i=hjZxyVuJj^=Vi=K9{>kvL4+0lvZ#K6qWo&t~a?kCq9`9Uwuw*521&TBeyec zeFgXj)~-sJ&Gic)Vj0xmo*Z^)%2NqTXV>j*e;xw@)mRF`D%S93qng%f-Ov4;CX@C@%=k>ob7W@;_YKaUq4YETGtyjUX?H`!m5qg5(%!JmX_khK8pwa&nl6`$`A{WelCHvMLjz)znJdGj5c}m)zu*cXw4f zdxe7Uw(<>`@T0@dE2DpZ&WzL}&k_|7&WOXnjG;?^9?Dg?xSkpU_n*L{p%o50XyM`= zs8NXA?nAmE#0SW{mzd6^zruY5Oj~?6rwAMhMO~Xec8|I}F*{$kA@2pFdJvSBT0IK= z*$#Wl=;^*^gn}u&-4vy&Y&A}w^?%wJeP3TPS3U1%!ltP0;` zzO6KfEdRD$7*cg$lP(a>;W(Igv3G&)I&Y5bMqX(K*N<|afOpqD#;5qY)TU0*A4!5E z0>Zz*NQ{s~FiF*tV4D{GWFdgYllCWcXt$G|d$4SyKs& zWfe=&+7DgET;yB@wGbjIl2z@@IU7n!8y5!aEn|N)dCI>UI5LZibK;Mq1<5LP8tqy1 zt%83zJ3ToQ%AQgxmKjy#&66rEb>0)R937 zf{ADgEj8<{CF}YMAk~=Icq}ZKx~UitSzHa@c*hBx)SwVR< z&8gP#GzJ!!`sVpns)ZK0)4;;WeVrl}<1=B@uc(2x4C(S?d;3d~L327DlAM|-jhsya zk4v?U&6ycO^e0)d!1HCuuTln$m8d=ux)S1?%u!<5J#AAvLy(Nj%uyn|D*HiXF2{i~ zDua;F7slP4$im|*zS?8sS*EMKP9x5!HsFZ|X}MdrSO2&{usuCVR(hNzNf=SouV25o z!hSr<<>d>>8i$NF3^G!O!fPOye^In_q09LcWWdE;J|J6A*yayOZT_yvuFc#jGXGcO z0*WD{Ygt&Tfp?{(J@1Y+?MvXzJlfLuE1 zxfuZTGT|JD#8iUBRLs80(re9~gSaj>J33VH<91NEqh!EhN}irjN%PWeZ9++w`PNlCd*W>OH2DYy%VPVa!ksH9Aj+4+UKAC?xQO6SlZJO~QZptO+-h9NpA@IY z@Qq+}6W?PrGIDFydJ&noMIeNtFbz+(f9prvu034}$3EJg291a&A1tRg95~RWgqqJo z-heb%I$-zIIV|z+ubZ%VQU$4fuj%GKTC0BUWh=wyIqtSc3l|q4p>kR>_YTb8LzA|e z4lY*CQ1fEu;P;HtacWF6P|j5g4(3;5iy0T8Mz4$<)v@2ySbr zL|Z29W>mJ@;&D~iQLn506MjOkZ`y|iMkE4yCn?G6y$(@Vb{&~yd~#t* zij9lKP*olL8>uwt9GMFiStE6{uXVC>=^$wPsYp;!!FXL&qP-odl6VMY2n+h^Ns!Nj z?HDuPG#^PTBqTP^QFkHVa$M!xG2=9Nd|NY8t)4A3@;&@ z(=V$Z==7eAUcp4{SD8Dj5sLxZ2rhl3*~G>>3{SF)lF9QTty27i13b*2_M$o8vbTIp zkrR4~8ykfVzs@U_YXIuX2(8Tfp}pLdQ8XaquIUqJA@ZM$k(iNu7IJfZ>RB1~-1-Rw zqbFF8-Wy0=6%R#qq{N^N-P7q&ci2>r=zYk%MK`Ex?NvrO+$sgB<%C|@2F5D4YdROzNLBh1-_2v+Osl& zzx9fYqOSQIi1gcGyO-WZg%xF)Q0EufjWXL#o|&07y$d8qm~l{iywp?LBmqk%v8}C* zwY9xtmEEP34UNLWz(@up@k+0mHq9a!$JjA1nhCDC$R%p-3=6v}T~P+TvJ<&gm_ij_ z&q~HZ-^q>>dii*4_{n$@gS`enM`_@v5|=5Ht4R-5IvMIG62`UQy`NHEeMd7GLOBr( zJUpKcreYyTbNUOje^*!6XV>8Q$e`rZIyUsFir;VKCY=|STKGEzVQWRi3VZFKrbA~~ z&*VmQ0(d#2I=pe7g0V_8hJW+dc#&c76O;$d#ZB4mm?hf^@r-r&K3jY}BL~69SeK4t z099RDX^pG*Z!)}0zDQ2NC@S=7*vfqq3+R!V8rT_i%Md&^_;>PT+f04)a~D_9-N!6T*;*Li_!sl>Q)~qXHx-7(A*w@ zkh*8#@R8eP#BN4|8gI4Um?hd%MGYJP88gjLef)_RP=l9x@X)Ye57b@|igSPJGWzbu zXkbAih27~GkLT4?L0UM+=JIoZEYv>q;W3E4j6F?#Jvq3 zQ8sv}Z4Hv22A5cIlN|+!^SALK%K2qy?Z@q z&upxPp1YIdsJQF>2c-s}J6Y!cWyvwgCf-_lYMPg zFU`--&7aAb?7l&Q-tKn}HpN9L(q_bWzA|7>Q`mJS2;+*1JhB#LaP1wYP|dfp;EXaF zgTXogWDr9ZD)+dzq$K%x!%oE7Su4$&e%jWthv#eceFw@aYM1XfW>icG`WNiiB~>#A z9sZ2aVApNn!TY88BVjh=n^#&-O+mRhIjWCf7p&)QG+mp4cC_VkCL&W|Wfh}B5Tg{K zq@<$BY#IHpUy|ksDKzTg#I}lvi#4@QwvP6;=xuV<>5&Y0BnTRjp_d$KXyryLP#7Cy z%9f>zAMNmInjv-YjFEB-g;#DQglNE20?|9;%B7kkD|(BTRBg5Ol+ZMvNl7`cJpk9~l5ZPzzt08eUQ^$S4SsDIe5WI9^_G4V_VVEF z$|!ch95o11#|bIiJn)!+SC8EkTr^M3L2HUFIE#0Q^i@pFWLhmQHfFl0fzgeHx{rB) z#PQXc@(VL*J4=X{+8rIVFrN^d8>O9sV6x?`126z+LK10w0cT$3hwYd)D)`2= zI!f9UW#G_5vpWsBIo>YdNj{-+6yhL^ZMHfm^s1xJf5l!{h$6P6(fbztpt{n@21ad8 zYsQN*Ue{cI*{oa|zI2rhyBalMjG%9%&8RzDIn9l+&It3%oTY*>P^to(GuX^I2D96} z0UR;t*IahJ0aiBG#`y2^P#KtFU8)DKFvR`wIP+LW{gz?7+`bzYczBpO_?jIcR$OQ&d~mt&i5`B9JYuE- zy$^9iGiv2XkCzmwYa)md7rqo3p{-YnjBIX29n}p4k23Y8q8hkW5IaD}xMCx;+USn`#wh0@4 zbeo@Wq9VO!Mnf1mI^nEfOAlrg9rW0|o6*%VZ5Tn{n)4^#n63gmr)x7S87GTurOssW zI5X1q7eF%vK$!Cm9zK!H-bEKmivr2*C|;^_>B3r862o?yE-lZ@8y)QP0)71Itb0Li z$(b37v$n|T2rV!b8%M614CBPsg=E)cg{XyD3h&RK^Wfd*=2hBJTj2_YB$5;?Aw+_4 zWxdnvEiE_+_ufoW(q;avvkQWOoPy@&nV3Yvfy^3lr(@fXxeLvLVm*|L<#Kj55lksCb zpjODZ{aaXJuYJ$$&(Gj#glDES4wxR=?YW(PE2QDV$cm{Bv2Jx4LtPL^-W7SGW;_9y z&xQ*g$S>eA!_yAMzJ&LKiSMV8wCN3=W^rlLgP$^sfCdR;sIP(N_w^8Ob=tIQB*)4T zk!de!`Xkl*5#FGMnk~F_?egmR-l>yUzNJVt3PHj+R{z{3d zkCtxZsjE%_j*hWy5v^tadzQcgB5R<*b8>35>A~2;Cq<-x3W6f4Tu1nj-0F#<2-Uz* z9MB+IUVy=H4;acAC*TQsURF{ZtS6i1~CqtKt@DG!`#Fv zV;LGkrOVa7lbh5I?>T}0s)wkiO3k{WyS|8%lAT#8FJVp&moj! zB~pHXuL?lUxUq;0v(^IkU4o;JamHGvr{w`z*2=?717`4}2Jf<(pcWD(dib9{uwe+d zA{#;Dk(Qrus2@hu$eznpJ|BfBv>Kw!h7UoLD#g`Fi(X;I5$z@B22)bg4Pca}X4GQT}9|pt1C^425k1q$qSR+lM2@VBihH2eA!@?lR!q^8P5y0!C z9|N)O_(q;k%}9{Q_g$q@La@xDdJ*!y2o%H!c^j#&V?+D&2-$j%T$+p!Zr~Ix0kePK;z?thv=HK5!P!9cYHHt9oHW3a7iWO} zo-{iWvr4T& z%|IO@^;KBLou(&P^J{2SK^jd5U|Vui`dkXdybdq`%UuK42T+pm!jZM*%2A^KZq9QA zoZq9K2EWicV{dbgATd5t7ty@-CYjL@`XOZE7Jd4GV8+jJ2?HY!SG8HsP6XBK}kWN+{$Jvj>g4hj7}02^jS@}>s*q@E#=+?X3B#ckhqsGQGB5!A`2cVT7%p8> zZhjk^IYAE_q1)MiB$^E{Bf!cEQXDMQoC6eF65xHl4k0BYJ;@h$M}~*TLeEi}pyiQ7 zCbghIvc@W0-1%`C1N#i%M(nUkkw#p`%|@R^DccPKiekfdyGHJn^>K6(Hl?8UA5N!U&u z@Cyoj607bHKDvAg!dvW9Yz<8QGXxlbH}bz$19NJRt#s4}MK>FTw<*9X~bR(CjJ_1>d08x=xOIC+d5zftev9 zha&k~>u<#31hjtC-`OSRwy9C-7cjo~^-}mj*TYBwL$txg;38&lnOrQ=%9J?@LP3GX zRxmc&Vt7~IZXGKkzPCPP0K7Xh%LKpz1gS5v)FOgqy*_osS@<27R+Ty}1nJTQj&i7_BtsgK{SL0W{%*e6 zbc)3vz|bcXYwR!B$iHv<0~H-5nasiEEMU@Jd-YAJ2H^souoX#Pn5Q!4d0F~lDRjr1ezx7IH@d~ z%*r5%8woQ&01DiVfPdzP!hL}!0c>&D88oE_MNxC$ZEW4Q<|L4T-N?hx4)GC~5V(!Q zMyXFZ%V7A{a7(ZYOjT#7!IDv01^+g<=DOf-VtX z5i=3*_pC`F-=zF|xv2v!7%41(+k*4@X5ZJJnV9DWZ?MqJ?1Be7G5hbtXEfGISq+bjd;(87#h{Y6Yg z^ul05Cxv$e$ZBEd&K8M=(5Yivv>Pcf%>B+P+bZ=^B1lQ}+j90_24$70U-#cv&_%(M znl;CCBQ{M(V%v$9O4p+a0nI-Y3vQelyC)=>;LN49phmc@cr2PEG8pib!~=BOZ~?y= z@)734P#b)Nvt-`#3*|^ARMflk$C(r)@vVP*!(U=xYavXVS>gR8w|Ss`=B%?y1g^gR-!d$}-A!j8*MFHcfKT~`7Q(`YEI0>nzNn+RG#Ha)#z2XVo z^1hkigrVfqg-eqYe5nE7@n)uk>YF(TatWfSBipL|r&jo%StW4xs8&dAXtdOyO2Gm2 zWdgLjpM&8V!TgutF@)hFSAdh87JNztqIx@vO*@qe=dNC}M8 zmYEg2W~aAeeo>gDl2M=Q7X_B~v~FCD~|^)lCV?@#*I{dmuCQRElu&azXh_lc@6(z0qc# z)DB*ui$S6>lV-g^h2irs1W`-Q-?s`109N(ZVWeR2a(^K@8{$6_Ix|Rf!Wa8zSaB?4 z5oDUOd9c17jNxb36y>upeFL~1ZH>d_agu|U9ZHaMtP0nN z*g?!0q_mUA%?ac_h5d`zN`jgXD_sRX3JzshRPe$HLKH^T`+If=*a6zWaKpkaij>j(v>A;6D-r4NHwDS zBMopZD7M8>nJ4ftq!;(@Xh71I+Hzvl-#TEqhaeQ6;dGF{vVEOo|4RsiMBX<#sDetx zN}x{q4J`F6J>`4FLyGH#{l?IrN^Q!i2#7&A#iPCjl+lD!>q+7uAj15sVMd=qutB=$ z@P7wrLAdqMj!E3mvFV}Bwz!Crl!#?>7<7;<-J8fGFTz`aR=72I_P%H02r5_nQ_TK9 zVMi`#1f~+fNl`SgXIM0>J9VyFg$S*rX z--|}vxBPt9>ZQP;X`CO#GQR8{@=S#nHbzCs;?gS&aHZXgBKcQmoSe{0O>Pbc6g$On zz$}bl zj!9irX08iMr4RTvbD#wVll1CqIilxN)47DWBvb%=>%NS}8cRkPo<7c)g@&3DO3!0Q z2x57F1^r}Yc+u@9i>Os#Rj^-9xMo^D#UlY-WUc8e|dri2_c^73o0?N8B=`zp&qM#3Hbzl0c=akVMGm zA1lam35$pxGxhyoW?TgRF?JO;MvN}0nc-~26%*M7a7vKMAbz+E^uR*)Hp2C#44TXYyq|N(9*&6>6b}(595RNwh^~$fD<>BT&Vt}fOe}thtR$Vk>&u@; z`IF%D8EFt<4=wo*eySO|Fivj(+)A4>>2@t+&gPpQw*{us2@4c598jG&g>?fR>i3+qv<17O0w3QrL-EY(Kg`u zlLn~`3RCbX$C>4o$$$Tfnii@X=xqjII6wd3 zaf2CZ4VwNw28BNz7rYGSAa>`ZJJVNJs@B-gKi49L5}o$5P!n~}ss{61MihDRmTWQH#9wZgd1%k*)|Fg95_{P!@HOGRixtt=|F2@Z3z`dbiTd>0` zgQerR>7l~Wh;X;AvkX8t+QymUx?nF*#|mR#0U_rbA^>%6D}2D(zSU1X8$fQuD~dDB z%Swc%Woxb}%c(7n4zI2t-**`t^C!LmiuW~n8`+4MnsL#_(nc7=6*X@mNL9V5ue*=7 z8CkpBpifK_wZBj!*;zylWv|Ad*re86qrm!)wRyeQf99e^bswby4C+d*UQxf8*`SUI z&izF)#54bivAXOB4((C6EAelh5}tn;W$-^T(-p`6{?5nkud*I5X`fM%3_dM+k<$*v zu+%C}-gK@`4q*-L-9kdE=ljaOIIo%RS0>LTX|p904Ro~*CK4NASkw zGAPE0E+(WWW$jbk3iFuM!$U171dM`|P2>L1*m@i2%Z+%%B>_APjDD_IOO0J{aBLf|!r(i6U)lDhOW+iL9G;!2+H3h8IB-opL4m;xR0= zrtIO1NI_;18)K$kgv6l_>gV6s7EB)F$t30T@|I(B$xs_q&5$9|@lK>@&(r9Fh|*&I zpG4biYG|qQYWZgZsoMhkek4L9i;!Mr)|@zO1+JuaVqf5Ix{CCtpf5$ACOG#OwCcVs zXDv`loqzTYCiu0oQsiv@68TPx(1aChTto$L#oU$eHz03S7H4CH=Z-}$N=LSS{GAE8 znb-D+$0NiEF|UVaDC4m&UFR3`>d|hwcwys7Or$$w$0ZNC9-7%#5Sm}6&EpY!f{FTX z0wx2Xf#k}?aH*%>`86*RCsF0dM4bixN)Q~2A)!0HcxhoCS)X%(b!66e#vKjZ!mq#7 z)uk^BP^hWXXUx*nPa<1)l|t{?>iZ08Y#Ea-#q_GjEKwu3wZh*KwYBe2>wnVWBa{nLe?Q#DqgPj^i*hXUuwJ~3_zflJC5@e_ zuqV;yr;8}35UflI8LSq20LrZSh1$x&Fe_;@K&ZmR4lD8`DmUFMc4$pYXhE%+GM+yBGjrYSWnp1y zA`}7~K9X}gku-QyaKS=RTU08hyfu{&5+YA)Uqi7v20AUCtREPotq1yi(1aBFT#ll$ zPE0^EEJnsupXGk@F($PvQX{RvDQDwC%-plE-$WnA%xH5ZjQNvZ^wFVeR}NGNn+Rsg zGt*U8+*z@2s%OL0C6qjHA!dwVuLMghni<$^rhQwJ%vG9p9K|H_(_ox+m`dN`Z}bCA zbu`aMT)>?@>{N>4H6S6XsFV$O<_oJlUNB=Dq0jrbqNkhMU0`D5N+Pb z8WyZm3sD?0Ybk^FFtH>svz7`_-V{ix8B$a*GBDD6_?V1T2m6;n`HsmAeUa!~co*|$(_rW$4tBLJ9`U={M5Ny&y8mnQj} zDw2wOvlcTfIMYp>P1>ot7gqWyHEl?KWFJ|%h(0)YpvpV|kS3DYUU> z`Gs#$f0<7TbX#Fq%b<#sPJ?kvGrdfCiS8B@AC?pNyu@sW>!wyk1jLWVQMxwF@U{cY z?!(HeT~bkBV=La4X*d~5a1_R75Sq*-iWWhd%8u5NRr;XU)NeF11yd_oABjNKqMN=p zkqZ?ZY731%9;K!?OhH65&3wpg!U`=GOpG;)08~E`RxOgf5L+b5cGejdKA4))^0cYj zR7?I^1Z4e^;atuVTLoENm|0A=n#E{#TGd(`HFbpvvy^sdH^t;Gi(qV5hG)F33LlvEp?D|b=BQ^eHtbr_KH;mdf+PdA^811(jmSuG7@erNMBu{O2uZEc$2*s9` zwE9?fvYUUU&NQ{C$=Bvc)mb@dHopbQ`sj-Js-kZF7u{Bpf~||q zTE;|3Gk9(8HA`S~PqgNy{fSxOKr0eU2H3_lQO2|-Yr%n8-dP*g=3t#-i@jT`d{j&@ zF`o+229!mn7L*Y(&j+>+vOcY8%m%b-sVK`1W|3gB0=?bDExUPWCNyU+hn>waP1j~I z-}(@e1&7A0_E2YgkhaRT6F}2uC9`3_%UgQSYUs>5Mm0a~U?Zrx8kVs@!RmFIluc#} zA5(={*06kM6|<~WV=)#-+VN(#4D4cpv$ICECZIuOSj#Y_6lW2oMz>-Xdvi-M8>hUb zlxA_kQUvr*dDNb zV}V_bh}Ep_3u^(seUHi6w$V%-YgMeaf9D3HRWkjEmtojt#~f1G%CVwn7D0`<4v1kx-z?-?@0&2F*VxZmIjPy6KDX4lpJle}YXKTwZI~6L zDWYqBVcMv1xc$4%mXp{ya^z>$0>&1a_QP@0Lv*Vq#uYqJSWtv^SUn62z=#@d)~?{iLa&JuzhI5oLy^<(BtdVauKGgz=Sr*F*$ ztT}+KeC>}F%w;QUJH_TVJ4R+#YA)86a5iMm=7ptrSUZ}mUDZT@wS2?o8O!doHKAs; z7c5elbK9&iww7XRKr75`Qpm$ zXRTq>=GE-1bHrk=MW0K@dG}b6V8xR$mx9&|WUeHcg~yr*oZG5ia~MWVkj$#l*@&KV zq&|N^b3r$&x#n=gTI1}MHnv&46gxs@wU{<{8NJ)K=^U2mc9PCTnXb|x_1F<+}$%PjiL?#>RDIpbT)s5OcerRZE z_{=QY&xP2WvujOOyH{qOUuwNPH|v~n<{7be88sfA9oY8BT$a?%X^m3z#(8F*9~HH0 zvu!iapL0szk~H=*7C}kdVm2BZwR@Pi`B|c{msk^bvjH-P4fd{TL)N0=+5np?lMKtR zv*fb{%JESpzA&#cuf-%%GmBL^+YwuX zE46VryIA|BSs&REV<%JX{Pyg%xiic3H8z_w)vRl0xo~#Ac_~tx7G!=F&5zz1IH`#a z`T|+(SP(_?5V}TF*+6A1cFb9zCedqh#qMDkHA!7-ncCINt$5++wl1+_cXl-kA+L6) zvn!d~XAP&!L!|S}Qaida>wWvr=P!F6WYp%*9H-4Up)C=X`v0A&xm=&i)49-?wevg# zJrAkpt#qF8XV)>S`R4J#`TnUlV9u-uBK<_nLt&Ho?3%=3RHOMb#Rb)S%e{D=)T(xxbyilqF0vciBSXp10YH7|Md(#BhaK$aeD(O1vo1hS~7&r8#J z%J@B)Wa;-W@bV&KEKGU5CSWhJjK!{dFH5X(*M%DHoCM4=52hjxh}AZ3oYlu?=G>R3vrA6^1Qt+ zdg%pcSbR&h+g&(H&1>YmTh5zm-lP}Y?j>7f;U$Z{wdg=bP2jzkS-poJclpu=ztH}dUj7nWJnt_T zG01}9$sz%@_>>ng_2P&9|55yrJNMkX@2+**N%vi##)by_2l@xj z4vj_Q$#`sXe02Ei;6Q)>=~E|9oIG`UV0a3DIFsNn(}kKkdX}$PxpKv-wO4I|mG0WH zWy9K4%a?V-I$dlvmza*tBoZ@pjC1FPMkiwNWGa=yQ77;vn5MtKf8g9`G?7<0r$5}- z8tGlTY5Oi%>YnTO?7Q*in{V28-8EOks4IITO@2WsWKxOvbaY~P;KUKw|C_M?gYUe1 zExs%%J}P*Z!PXVv{2tTQ{y>)!W%x@00LH66r5dyFdyP(ieOu4k%~xN$=Z2eZy$u}n;Sb$?=WoC& zw{2d(qN}Ce=b&HREyIYh@u4%v4!-f~%P+qK2mJem=U;sJ)z=OjJdCS_QO^ub#&cEt zk$qo7d+*vUyY}9C$6c`Pdp>gCeIL2!?%Qv^e&?pu%Q_nISEL>Ifn59%s$4c18#{aE z3l_{zZ4m6?Owk6s?FQ3-mz=<_4{tTVej?V z?%cL%-O8T!#(+ztKXhU!_=Ab#V8+vZN8iC1JqXS@bnxJz!$;AgeaHJw4USG{tN$NS z?;Y0om1T>900|+1B#=ZFBIi(q0xIV!+vV(Xj_uTLceg#$dFHHoU`}Zd#}CrR)99dY>i9bQGW2m z$p;>K=%GhWJ^lQPFFgCigC`DP@%hrP8fz-9UikLQPe1q6}qo*Fl(w}_#*=L_R_3*uib`|Ai zrX)mLO`%3(s3ACTYZ)uY3GM4>sl9pm!uiWLZr3$7*4?hSe*Na{#=AWO1ARTc{Uh#W zjXun5iLgZ{q!*O!!#2t5o_kLm-CtIeo1PdKB}##0Q>`t|O^*$Bw>DH)T)%t)-|rm0 z;nka!Rh5;MRn@hPZQX-oQ!}2WjX*xi%pGO>4xf17v8P{n>E%~nd+qhtUVh=3Q}-X+ zTaurhp6rN@pghpZ()=9ur=$MH*)Kl+;JtU>|L~&^-+%A@k3RY0>$8`xUcYhkR&8Tz z7w(Z~X>~KeV2w-7D=Oc6@YsD1J@Nc2ufF!mi%*|=;P@e2rK0@I{mq%PXU=?k=E9ZA`qu9L z!I6pSIp0>WB_=5|zZeJp_yeb&fA!6`fAX`R{ry{SzWTzGeBXU#MLDUCsBmL21@z{p zT|F%|*Uo+U$;a>g`47MQ&2N7D`#-<;(WhUWK8@91uc~QmY405xotRl%*BHX16Ekqz z51n}M)H5%>{OYT(yztbcCy(Qc(ugD{Cd9`?TFnNY`gNao3Qx51+SMypuU@%)>4F?1 zIr6lfBhy|Vi9$hmOJ{0kZb4D$-lGpZ_5`ocy@&Udmz9;`VJ5{`D3<59u`=(*mfyY8 zP*ZvB!Z-M)AH4V82OoX>SFZoug{wDj*SB;IyB9YCV3P0^3(EE%yZ3=p&%OGipZ~)@ z{=?7z{;eN=|Fu_Mdj9E0?>$&n2veVu6c?f2@JtL3;086_zVh|QfByBq|NDPp>A(Hm zZ-4WEImF>t*b=ZxX<(aX8&bH?I>g(sf{_LZ7|M>gg{pLUZ_5b|yzx>~S{rBI#^Wi6_ z&tAG#)o{0e%#8!@7aWG~nVwr%e&G2151)GSsV5&l_1L3uarYiSa$rwsVNRMeE-E54 z$Zu`Yh&owo_t~Etit@aprjr6RX{G!s``wt%G z9QQ+qjvPCRwHIWjIAd&ggx2@<*`vhaQBTFU?7gHtYN-!a66@AjikYC#R+- zM~Avw>MF0}vR}J-3x4BH=itQLazI$LGbKF(ztU1tQd85ja(9&OIdtsU(Zh!h9@w|L z9M(813GcVz8SQOrti5%UH-`oT2I%^gi)X(2^rQFw^3Gr0`{1vieRbhxZEN4;l3$3` z3H!EtFa5-^V<+x^ zRbN|Oc@6LQ`N!}6{y+ZZfB&!l^}ql5|Ni=q@BQuTE47`YbIbnvP?I@~nt;(UvGK5= zJoTp@dj#I&G5p{CCk~Y6CPkTa{%eb~6RzQ*;n6A2BD^t$jc2Du`q~<9-=xQEY;A{A zpIHtv!x-h@+9f5#CnO~&Cncw(W#pG0IDYRvM-RYg5+)@@hiMkZdSKKmZ(O-_;rsmho!P~^_U_-mcULKF=CP9xpL+VG z@BiJe{`>!nU;p^Cx88X5#it%VR-PSi@|&L=?(6PoZEC2it*vWlYHoz%xODdPC-491 zxBvEk{^_6o>0f^H&R@T}Sk>4uFz#IoG+L}STSQn$h{+n|NXskUb@0Uf4`R@*FPt-TKN)XTSO8%=xPoI5PlU^>sDX zRX49*x_I{6ufF~U$FlzJpc|WGiE<=m{jPdk&vG_2L_E|NK|~_^Y4) zJ#PE=UwQ746MOQUR{iF}l&j}1076w&H8uly5O@C8^-Jf!J^lG#-+$-Ne|qQrzkYEB z=e@1RHMOwjucIb`Da>RFx5Xr+X62XcIegE_llL7za&Vs<&$Ps7vvz%cdUSZmH9qYT z-IwhiCRpg%DT3UwNw>#K{pu~)c8e`0Hp*tPghzy9?XY&4xjTw?mJ}A`^1XN+XMkcl z8mq3J`|67?zr_-pn#DnM_VjeYgjC(UQB~jC(cL>RI6OADp%0IWbvP4~QgI*m>_2p9 z|L$G;jy?F~3$MNTqaVKU+RHD!_}t?U;G!qTgzLAK+yia371yp;VC7wX1e{$x-JNZX zc%;`ZUAS=J+?j8_{`O);U0cu4$msZ#ciG=yjZH|1vs-ZTW7Bq&?**JME6f7~#n;Wi zx8-bS|&^ zxZ0ipZr057Xdh7Vou;Oy1|YnP7cSzMHMVy4!zjyio~W3Z*cf}b#Tw%Ppf4=ik(ZU8 zmWpE=A8R-12;&eLjE%birz!Fs9v*IuijA^b%w~%@jPo6q=0!l0${!SQH(G3wks>E< z3Nu@y6OvPsa0ASESU4-*aT#%R|4%PK7-9zJU&-^@2)bgTdcFwynKQ|4FIyyEr zy8u}1=dU%|5;F3NO3Ta3N{Wh$OG@{^Y2JJP{r4R|ynlCDQ64NvRH*-w8_yJR1x`_0 zXW#JX#N?FQv$(vp;F(2OGz`m6`*Qty1>>5QZrAkudXUi^ZnfKO_DFkVRBXJ{ndo#n ziDRN-V)1Wk{q$okyeXQC)NNj&I)0asW)&8K^XpK zp_;nM!iQursSzZ;xrzSH7Wo<#)%DG7T|?v3vz~>OEv+FeOmr-%dFpjf@Gec@+plYA ziV{*Xvau`0g?Tx-c?CF=g~fOk6&Dq9(`^R-6%XR8;UO5Hw!0m4i&XfOW=T=#^h~+B z@9;jss@68#>F8$=O^l0<#wMla z78VzY5y5?xn0;)hzqhXsQSb;169ouOG&*MLs;(@~xVoAd&)=%9Lnz-fJiV~?U*eM# zJEX91kP#=}nV1k88DSh zn;u5tdw(V9=)>9(cmhGhA$B3~a4~z(($r9UtE%Qsw`&Hb+-$W+#U&>3L%DX(QJlf$*N={-pW#sPIqhjI`l2S9W^NWfKvQlEqx~-+T8TaIvYiMwAXapcb z79N2=7-f$zg#@g65heC@v^F;Yg|v3`j!bbf5&Q8FlP@iJMMBg+*c=77oRsK@i?VWH z(wcWlwqRloJ8Fu+X;07HQBt;RS7|{8!bR<-Z=SPE;rra)MLD=;GZlu{<-c=K%+iK7 zj0=y6j0mOluy1yxr>(x~#!VQx{)stUB!69~6&5ias2NM);J9Cf)yCuSGdMNu%+ zY>kYvGeqH>tI&w3IA;paKxS5EMvB888nl6vH$6E%HZtrQpY?6Q+M2?xHeBHZhsux4 zOmT|P$WUKT|M2Meqc2#SR zNzTm5&dS2YD=8_;ON+-fTlFnb!e@n4d1)|K&A)5DMGuxf!vRk^JP!*(KpX}Qq9FHZ z-`(c=S{j^=0dDMOULk^Bw{pL#MUqaf&QFGVlWzUos4Gs4xD}< zV|XY07g!w6G!{4E_Nq&6Fu}k8xY+H8XBj8Xdt@ZZ%_3 z5Pb1l@D*m%E7^l(uX}Q0YIbprnw{o|$atKzocx0P93FW1FgPs=JxQZ!u;_#Ni`D|A z+hDQ0B5XwA4-uVQ=inLuqK>u}xb%)L`0&x`c@D#qpVsQALucfdU0H<*2!pBQC`t{L z)byONVl;*tL&Gc)_GtM0q@;uxD?F`6`n)MmO^~tb$ElTOSXTC7>y6toz@k@2m2&T_ zdm7ecc%ZMRyQ`;vh*o8CYKAvjXM)kUhQmIH;0HI5cR{0rQ&($G#c4}RhR?FnL;@2c z2*;=Juw#QX8x)#bmBlY`obD_q1@OBBu6gCrPfxh|+FKeMn%g>i2Zmvl7ME8yw!UlJ z(#i+XJJL|uY`A!McWrQpk@EfqJj5__1PpOZTzp(il-(RG0>4x%THbE`-r{pI!NO6J zQ2NEUwuPcqoAT1UTOzRzfT_NIZ2d4yBd{uk0`bunvr(rJH5c~&vyUt&I4s-_e43e& z?1+hqjEcsuNLvI}Pejb=aG?f6h+YOjl*x1t1Hw;XJKge;FqR1A+J-0+e$0sHyr^qj7TnwJH9j~aE=tw)lEg%YW zCGN<@kq-(_}^ zscasoISyy>&P?E>b+zAZYrE6b+}a5*JTc>?1i7?OE42imVOw-OLg1|2ygWSUBqu^^ zCnDkGq?8myhWuock%ExG4?2I?Zvuhg;lY7ECJ5oO{goU9B@q#903ZPwQx{+JU4zIv z$1skJ%19FdE}jLSNPmigGa<=_5^EF<*)VH7VzKhwyNYu&lAQ^ONlwHKRNsYfvP49f zaoShsl_U8IJxNJC#$!Yh@EG`(e zg#$KxbCbi^+rGYj*EpW=78Q>}MCV(xA!cy~K4?i)4`t0^Chi}V-8AcqxT~}C8+w}q z2qGu1uypUC=7-XXZQ+}^{W0GHmk#z#Np>TN?V|Hna zcr+%)4m&0T6lCOtA5S~O485-#AY;CNosb_h;r(!T)s-dP1C7FK0i zD80H&OIjA4gmp?kYPMEk!=^`i?>5!~xL4e`&KRPx1(6HWA2UkCS`@~VA`2Cy&DPkI z+>%{;4;(&v59=*>J$T>oqsQ-k;E_|0pL*!TzT)hZc)P)Geypph>gw6kpMU=4x9270 zQ(aTr0K|a6wZE^s9Sg6%jZn6+2{B#!z?3f_EHWW2JtZM7CeDFi4d^&7){zAJ#X!BN zFefD@+`xH|i%XOjT;A{x)P(}VCZ!;jO+aXu2&C(b4hvZEPLI0=hg^vLDbO!^XBwHR zVkB-`S*83>V1VD6oV>e@b+;=kZdO!O-LAXSPB7zQs*lcY7ML%{fODf29WxEEYK${I zzwF@glMg-e=wqjzczz98D%6SCrQY-Tsar;W`LVf;%{+X^Z{$$vHq@(&Yl6+#LWE41^|~qYA&pu>V*~B=RX63h->PkH@9OM;bst8!H#X@;oX&tFG>p^0IGsgnj*L&q-MRnB z@sp1}{o-rif8&iGyz%-gFFf<)94-}`rEVTFJ8KIt+KkVp{c2XMUyL6D{Aj_4Nfj>>BHmF3(5{0Id<&$y(jNI z!K~^2-Q}fa<>kBZtE?n1Ino#a*z5Jm6r)uNHFAtVkPKJ|k)c*$!T!FP(f;nPuCDIB zp)mx3{#rwLR9rkPb8>2mQ`Lf~=tQG8I|_5dpt17i^($9yR5!JCc6GzWwRiOo!}Kn4 zXyA9UNtz(N$rkNM%iFo{*hA00^5$EA_x4+F{rIgP<9|PR<>`lx?kmS@XJNL(xHQ~a zS9Sg3nJ@mzbSA4TUwrc6U*38DZ>P^*yjD?l^YZ!gcmlVpZ&fm9-tO{j8Ld%q$$7g^ zJo40wFTebPIz$iLcWnPI7O-)di?SWzLFT_mE=T65uO&wL7)O&a|Cs= zaftj8^EuOV@(Okog_3o`%XOk_~WM@fAX0ZzW4GgFTeQI!}lEAT~=CFR=#Uj*^X4Zesjs=o*bW;m>B8r zX03Y!#}c4RY2d;IEzTqAb8q7TPO%RRwK~%C3JZ4>qFkIitg6MhfEMCC}tQ zYxUI&-+uk|H)mK?JA3iQ?fT}nj&3HCSX5kI;n?tS>NC!T!j+2>z;@%iVTed^Rh z;z8g$^D`5pO@XW4sgXg%SFLy3JG=W`V~A@Uyg(HNQW+#Tb8!OJA{@aHieE7i!A4v(QlGVEQ?x6`F5EbuF&u%aXP3;*cTFHe8L8~@GO3zsfmxpL|J*$daITY5&^q!Z9mMaL&+j zdFrWWo_^-pXPa{^{{1(;|N1L0J@@#%d-9X)AscgJeQh;YzWV5$Km6v`zx~6zAAI!j$E>J-b>_mw z%U7>nzHt8Hl^eI}+xo^Bk!d*s2uLl=66r|GFWrCaI=f-V#1>D`5zSziaCZEIP4-x4T2^Kn^Q{(Rur@f8dt1JH-@&8zoP7An=U;i_%{SkC|ZFFF*U+Uvbsng_Zm8lhbD|UcGS>VDZ|Gs_MGNR$?Zea~%Rof>*?129rG@s|a`L zlpOdMUwDoO{>bh;rzAHg20HJy-KnpsA_&Yd}?-naVcMAyLQ7%<|o^N7RP$p>MJjw`SRm;e)pgM@$29J<>Sx3K7Xx> zEAJlx>T=I|IaLqf)o68OV(Ett?k(GqlbMl`y`xk}8TZ`(@Z-A&;zQyG& zV^m7cj^dqVyY?S@;MB9vKl{W(_p-8DknXVQ*JoTk9WBj(0yXdnmA4z)`-c$WO!FIZ zJp0Nrho{4fITDF*oK9@IDFkL20Y_3=W_D&~Rzd0h!v}Wl$V!T{!bdJl54BuB{n20k z{O5Px|LCI+-hcnY&(2jgcfo!zMYbR_2RXw?Z;5hdGS8TknVylstQ+pmj^ffi2anxz z?|moXh2V+qJ8_^SBQ9L;zdSeA-B5Yu+}B@z4y$(N{N?Kvw{F)p-R&J3L8Lf1ID}vk z-`eXFAzzW=1GEeX4#QbxIj5-n!14R;yN4%iFXFLuXH=NR=N@6|5>TM}7GYOs-|*O! ztec=z$@YhYTI{h7rz0)~v2#phgxQ2^WVS{pX3)&#WM?7JDaZ%N4%e=ECvkV`Z(Te4 z>HF`z^X~f}e|hd|6%c$|*WkpQkJ%F$loDhxg-6&TW8&fw7pLOIqGd90^^Ovt4V?V_ zhYm}{w!A1;7*1OYQ^Q?Nw{Ni2edY3%>y?Tyfv-Bp$qF;Pm++aKnd0O4iM1^%U&(Qe zcBCK}hA}QF1&S#zFD=eZi?^FNL{E4~t<9{~Hn$OSOu1({?OcsY!L>2U*Nl#`TO$ys zGpG;Y!-x?ylbp;DFB_gcKGG7(*l%W}tNHe|^Jnoo!*bJA-19bA-33XWP|7uxZ-Rl)|L_RM#aP@XXeurXQw)%xstG8tld36)Zf!Z9v2LpYl8WU zm8}3^a{;qP15;!s70K$-GvZ6)#SXj*Lsf z>1Du-X(XbL7+(^N{1H6I?BG02CGtmpLlj#4%=L+{_V4-jYJ)I-_Lv za98n#tvtLe4h2wdm}3(*mOazsld}sxHMd9R7#YJOETJKi7&4meQIQcQ1G63mvs71^ zuOe(TG_d)r%@SzsGuUJTD-j1?p`*VVT$zqmr$CLNZR+{qLPUGp>I!}S!1<=D|B z4%nVu+|(Mw?abbU&=#?%#xRRHJ5~g6dSY2rHyLC$md}d-U~GKK3s7zdHHy?TYo1F8 z@JC#u0%P!PM#d5AuCFffysEidGCXvNLvezQVMab#J*Of^gfkVdGg|Ql^9oCLmX`0{ zyKnEVqU@wt7D^4A(z3ysAJ53EuEgb+)leGCVlvenk92zYidwD&8 zM8C}Z;+@60sgBrahU5OMopZ=MhkFHZz7foWB`icMlCWE9u96r(ZViHT8VjvvlQ(4? zPTRxkBdZC_)Kay61%76pbssWRu-^-?DqfGQ+vCBGAsX`XOs;NjM+X|IHW_LCL-cw> zm^I3gnpe7K|A7Ph_mFgqyPxD_aZpbwIHg&d? zhVzU`C9p_E#Hig`A<2pATk1sw2r09*WFM8avQaA89^tx6l{FSFc~fZhfS1IvGt zv`yn<6H~Jse78oUh0s{6piFK8>=6*@OwA(eg;{C5cI3;UPfUROkHzw_cn-bxOb&K5 z)l^s4)g$)ARqtW-e^#!RESv24VZ@7WK%F%|W|y4lc_pN>vbsX%kBI|w`H?i}Qd+a( zaRhQYy-dtm5_w@J?`0CQ3`$xNp8L@7DA&F~!UVh^O+RaNk#HTb1{`bx2dN8K_s!$U zuP)KG#nZ2_LwGcR}>NN9Sbx8rU*zBe8utN$xOme{1U48}A&OL5*y zifHH3Qj!vr(z1x06CKgvh9DWt?3ouhalx!c);1!Cd!(VjVgtGKSlNA~x}ppd{RE;)kSuNz*kMn3-j&g0Zh?1blltk&oMr)?@JGwm7UpG$+gRzw z!u?iROeNE~r4a$o-JT)Iwk<3YF~c@7xCs$b0!}LcSRx=eYad$wHJM1tf-Gwg-wAqA zfz&rQ>FV!nLvW(nOZrEqJig69eQ3Clsj%oQESl+{J>{i^x#`IXjyP6d^%@qg)X+YB zGY;DGNFX;oI?$uqR+^fco8%s}!vKs%I?a1s=l zi@>RkBcUe&?gTeqNKtDnSq_ua-$c%5LsM%p$D*18c{MG?#q;NXa+rj>tmbSYco!z~IBNK`uV`kXF>rOgP8IC=6Jd0GesBp#% z8b6KJXo;}OC%~I`=^nRAK8=IS&VD}p8>uPHoTRUL_hW;y^3{xBvpO~DMnVX+q zkWa2Jw@A!egbi`7grk}1X~~EmY=HA5&AG=(%)Kj_ygHTD>FR+28E1I1<}Z#NK@BON zI8d?C(a};RWl=hewnPwt*{Jj5s19L;c-SSt-XFHAFz9LP>~oDX4+?l;G}~elCFfm8 z6JJ!w+;=kWCw4vDtZpVvGA}56E$$S|?(on+PkVDsRTXJ-%`Gi=nwiI8_6bM_US)1+ zT_d~+7*SlP0>rX8xJ~IPi4H^$35fu?@cVh$ndzx1#84JJ7Cwigj_AILJyo?e@F&&P zwT*aF7$?@FysJdACW+|ck}|Tgv(i(N7}TdQ#e)YC6YD?-if>83$PxFG!~OjOgZQR6 zMNAnqwa_Ycbdg}Uydl0J)CLH`(osQveqMfIY1z)A+>9i~%TZ(>#Kw~EU^5d*1ZmcN zb7Lf-*EQY2iW_QgRRHBQv~>0MbhNd|LzSp}ab+{mV2O+;m!G+zavUjwrtHj&j4UQ# za!DV;*H2D}wj#7=n%Onb)6vpUS6hASCK>WKDsI)XwdfA}113mXgzsaBNY)u{=gv|Z z=OW40=jY{SBs=05=)vMM=|sxdFk9$4TIyLIt#9D+8_9d^9s~+!`$CY>VvpXY&6Vuh zyI-jG1ps#08EM>oSWvq?n%q~DF<7%Y?;ay_q~k6iPUTH}y_$NM54KdbV%LWhHF0{5 zq(B&DTP)DxE;iI11XkWvhNoJPlbMkP*qD)l)9&OQuv$X=d>)t&SR)|Do0rd@`S#qU zt9b9~I_9w3dWI+G=7k=_MxeOl3|ggq`w#5jzi;2(-N2$di*SN6aHis-Ne>BNWIr`I zIz)0ej?eAeESutgbq!5ztj}$Sc?g|J=>+~N+*!W&fak(5ajWi5ryTdO$+;!Y!!wvzF)l9OvuDq~1BVVB zIePTS!M$ZgEYuY2*pZi>U=It?=@=O-&5rf8)z@Ibw<>O2js&F4$;qI|; z@{&Dx$w)q!;|NmY3yRCickS7`muCrIkVl@+G>(}VI5h(&h5Fc{H_+R8r>^SSr3>G! z`*w9rJ@dfh2ws4Y>E4*G%r7qG`|aJc7pp(G51S7ATvU*k$6RQHDI{=fjoqx{gI%r7 zjSaO`*DqhXbm`(nmP_k#N!vOHNIfAs)Bx03qv8_ae~Yj&~0XZB`heq|FzT?m5QOqm@OY_i9& zx{ysqD3C)IteP`EI$W>eHv~lRFlR-E)EsVl7tIIR)|FMaYe;XGWwRxKjK4548}U`6 z64G+9M`i3_VO8nG5uDK+Hl&(Ec*iAEG0#wb!qrbMM0Leg?D-W*Vv-y*yR;c3M6oav zK@vlyP?ME3kZj^PSWjjw)37@@kcbSJ6PTJ=Sl#5bYWPbghkBW5?dlyGpPgrU)WE~z zNB|%(Xam%MCV+wvOKfsxR%U8)GENYDab&nbv$`k*xM_(hWs2ka((Jfv5Ky^ENE?kX zYL;#qqngv%=O{H zzOIhWu72S5C3Yj46#}wHM%pX}4TD~Qc|^q71w|!0S(GZr@hr+oiL-`k{Z|(RakvO6 z=Y=`w9)o{#4fXUMxcp#!Cxr03 zMDG%))u}0xYT)^ne;`v{OrP4UQbh>WZ7oZx$UTejP!ot-50nl7Y7)vT8Nv$vclNs6 ziyJC!6vCl1oA^y8WR?{Bb}K+{wn{PwzZoPGhgo9x4>s9i2*0zlb70$~1=lK{3bfwW z#lBF|z0?HW6=p)_X4q3WG3pvZ)aE7SR_4d~2N}!};WE*D!%u4fs6bc0WFo-Ia)6*F zPC92Z`_#nbw4~KGn0<=a&NS!|Nth%c374$7yv>#xrzsi8NdXR<{@M@&hjMf7-J+K) z`+?r>?w;OW1W`*{x={AVG5j`#=+tmvNn&pJOBp3t=KSdlVa!b7@i52>5R}Y}GQz=F z0kampzi)PIXkbw21>QvtE6G11^DW?cJ87l%XoQT+>&sK%{BM?ebo^#anQSs^Mhg4%v?PeP$O1xG4lC)M zW2<>jH{dDY8rdZr;pO>R z+Kt(51b{ytErq;fGFv0C*WdFAxIbMh776sD>5 zU@+TbrM?ENpPQ4J6l*idBV1pS`j(`V$;)QqDpdwPMtxc)e;&^swZBoaQOHxE9-v#D&Mu8*yioy z+M{9}Ng27hS*eNftP1O7Xx*A3$ZrLOnD|K~i?jWmQD{%^fD4wDgNh{^wLstFo}p*k z3=A=mxs0oun^#a+v?Dt?F2acTbxEAS%$#S=E6&JbF|ikf)uBZ>x~?(z!Wt)(!8fth zAV@uxWf@_%B6(qZOhPg%iqSL|{_Be~<1VgzY8JM@KbXFP{VZmKmK;^@)VM;o9BR5f zymD>X%PN#G0bm>Tl=(={1OUiNNnpDjfc*wV7+^ZtnifWT2TP!1v2kp$ueTS7pC#Kl zAHc1QnB?4OEZ@68CXpmek`dY#Fj-WTmyw7#4h~v~v23Yf-byP5IYjG6FiF<33S<}A z1%zFPq1O1T^PpxxGk(AmWw)6#Ap!ARn3h~s=8fGvzX)8+5t8jU5?awKN{$hRSrZ(> zA_oy1uR3lzY@~ocAwk5E4w*+BVWqp`gweI_Y0*G6WSW!dwmLsG+}llf-^()asv07x z2BZ@zOpUYUKOls=qe?Z!%xNUW+07xk0AW_KuEojq20dp@2COf*$43VH`?nKh-gzH~ zSabRvOp-Jk;j}NUY~UV*MMy5h2|$%jTqY~z=+QM{E)yRxuNf=}XD)G4a_fYbKzdXy z07j6~@{Ck@*nGw&#yFPfQZh2q5~ITvFPL^$hp!karo+n8s2HA!F_s1CPUXI{UyI`) zRiVJm4o~bG1A9keN_r;Z+uY351OPLAfXsc?r~%JpRtIi>8)?K6Q=zJ>f?Mf#@iZl! zBUDRnD*L!tTSho%GviK3@`m*-1Dh;hB27jPTUU&<8Jc88=%dY8z(4tXs`+4YVtjID zag}4cGnN=lQqj(GSGLM=*PFnVczXKXFBYlx=C901HpR~N{ zuP3V{0dOjrDTlatq8}+>vN;UCimT)220>UQKIX7H_nl`Hm zfjhU_qj0X_jM&x0?n@*5lEG-E-?QR_WYn#c#3x<-yqiKL5#-KHIE$dLA#rCa&k)(*KBvZfcs$A#(4g*|Q<-8T{HSYzkw>3O{NQ z{sMao%u>&bjF!|(v@}0(RIW6b@W|85Nt+XE!7%Uha+YKU`6An1Xgq^Wbe5`{N}>vr zkQYdKQ^oagHZumOF~Q_|kFq>L%qxRwebP>|$@ixJ6TGW4vXY2*GD(SoRc6Ur3i6L< z_6|l`v$?{WBJU16RY#>Mnkn&V0TARrxMx&O!;j;)5$<7QaUlbO^pf3ySH@XQPEAdA z#zomI015$`Ej1FJXWS#LYunj-4$czGv?h~Jx#??bo3J7*#rkhDYr+Dd&2B^R9nMZ( zR_i#-UWS;iQ!9vKLGa|tovtcuN%MupldaZwXu>kP;Lkqs9gPX#!boNk~dbN=i-7OixL|%}R)g z2o2_hLZQxUNZ9vyrEmdvy6&eYYO#XMN~SnX{C$O0!(biF2CIkaf=5T=+ab23=#Z*9 zll~w~XwhB*#vCOWUQr!P@-cGn`G>^lvW6&cCSg7`8YG{YFKrT$;Y^mOR+E6O?_$S6 zn)=D{Q5U10_IAdRJ)Ny>U5N7M*toIEk!XN^%u$DgS%Du?GqbZ`o>Q>%ohXGIwaIct~w5s!KAvB1a$>UeO5&Y%M>Jm z=a?gyn|@S7BaM4+6Z#8K z7)~6XD{lw9sE>YsyI-vbJyOzyGru2xlf4>DmWN*L5MAM zI?Xx>FSDclB<3-ace!WM-%EJE?UfWDnsJBo`{SiUnq zJxOE$7#9PA1^EdC^UjP9cDGbtzjWc;H(!5q?t-){G`8IB=oIS1m^6h@gN<|#VpqE( zEvKN6JwV5f9o|z`N?Ji)Mv^m0YRkB1umBbj-9yY_|YSW_LpPzsj2B1WR%2H86!j;cv326Rn?0Y zio_aqjHT&pdK4hNr>B1yc6L?@_w0G(6z;%4%{qJFXM}6PQlPXxlX@WJDJmjeac9Vvq?j)C^pP9?Ruxa=62PM%jeI2`|Y_) zH!3PCZ{5Cqi`_YuwN0&UcRQuM*fqk+vY(DU1_k8@j@IKDe=-*xk&8gnVoPkDLy)iBTH~QL5e@C%Xd5bB$>8KK47q3wI=$n zN@{d+(#=kOi3S&#BjAW`hLpl(v|3qmXXG6&=!GGs5r&>UxQ>)8(of6w9%RzBWJgX~ zLbNzf5w7E98z1g&X{@QbPR{y;iGrN^Bb+%qcke%X|Kl&b_U79^`^C@R{=sW6J^Rd4 zrye|Ua3A#xb2BqDQyum&-FKB**ej9~5rs*kIBRXqEHKvBR>P_^H8i$#_Oi6Tw5c;O zIS?Dq5;gTHBuhFkCXHBzs2!2jRuF@1!GWaCVa0NY=`_jf6gU?h=SyL{<97JlKv`EzH^oVjqN;&y#o-{c~0dPHn` z@&4lvJofA>Kfs><@)y7S9$-m_0W_RzgY_H*BJQsb;tm|R<&b4!Z2zpuBq zyS-IZA?j;yT^E(Ft2e4@8>9%V^enKIlmJagkcwI&qqEB@cCz- z{Pm*`KmO$Ox92W!qpx1Mbp8yV0d77^IX7xsddC+0jP}Hg+#Ngj9J=TJN1u7+M?d}5 zKm6jSfB*M?_v1Hz@W$&eKlj8#C-#@_$WDP52@mmK5mNIg$xT`RlGaRymTE~cJSUM>)QQk*SJOBtr#wub78D{RF4@PiLO z`uNkY&S0?@E{FtKRU8#;x+D!Cl$jJd-T;>R2zyQ+5 z7=2L4#K9QJ84rU&Z4Q#+J6aoSYpQGOsVFx~Lyz!TRVU)e2cVb)!B$pb`Q8Hu53qu~ zhdxcp=lN_jV972cHBp#N_-3xI=IR^gzy9L0Pe1+aGyLt7&)EHR`R47q`g+kQt*WY| zg_FVq#XAfp8>?X0_`Q@FeExf{z45~z|M-V*y#DGdFFgI&gD3WtdHUiEx}}#Aos*1{j0`eOU?dV# zNID{=B_l0exHg%YSy@bhV!si(JB7n))GWJ4`a5BHZe4>x`}XV8r@#6JaHgudwxPAF zx0ezzuqxdh9jtSZQ{tNRP`X0P=#6!6AlV})?!Et^$De-o=_e_M_|VA{2X~j`rl>-j zYG7cav&h}19Gzm;(vmUcrluKJjBu}0z>!Qq(n2kXj#GAwYU7ejB zcUv0k>YLk@E;2K6HnyasV|f{A$%)RSl+={u2kwRo7?^@FNYl>Gb0j*D1L@?D9DDLa)=|YGMxPbV8;jC60q|+Ppio>N1 zBAEv$P_)Vhdb=1@P&Ar~RxGuJ+2h!Mki_7e3r-@T$R1(gBZ*}~g_%m$)ex|=uOxvi zA+vPD3z^b2(9uL4B6jQ4HMdLB8y_%=uZQIi4fL?PyR(b<%SHN~Z=IcGRDjGQeW0L_ zYMqA;NH<*Z4&15SEG7n&Y8gkqGuUMdh3K$smn66pd{9qMx5!3MU>hY{&L!)lGPc3| zJ(0WAyCsDr1n2Q>ae+1e?ZObEHa2S~CyRt00UeRN$cZ|fWD6m#B*THsE8+5y!?wj# zKKmvq5Z%$yMJ*hh>tWVa*|;-ED&yU@R_ZV}-?`g8MC$0$n!nBvW+9D&`S}DY)Y5vE z>?|uoctm#4m$|T4xoU7R!Axg7AZhAI@I4UpEWWzHOtiHI?%f=&`%9q zUZu%rWakzWF+0PYnMkey*sUxpts9o#5xg;80e%lRu>&Gnj3cFawi$=1P7y}Ky74b5 ziLo}|BvqMOVGGQ}IFpkqRYiTl;lTl($F9504P^5vLhq33)j{|YVh9llyYC2%Y3b={ zsU%e7z@*ZQI!I_m=xnzbwHl6yXE&ZAvm*A;Y)ClkWdRL_aEdzRo+WZgWcU}p(~2~E zkR>uS$aWbL2&Cr7d>3;YjDJ}qVtZB~?}*ArT2$y3$xNSF!P%IYXi_5+u>LqQ6R6)P zoe&E9X#zBI4&4-M5Y!|Z?yYy*+gqCuUNpCL_YLqkFcr=|D5+DCnvGD|PANQj(1@6$ zk>m9uA%4pP8eW9CZ!$ z^92*@npu(`7m|(CE955^*;^#NGXBheFvA_koNBJ42!f=>)Te zOHhm5A!hOywhNmu#)Zn*(bhs)rZy^sx3so2H#D~OxF*Q(W#Q0I7iPmM@4PFLnhH|I9!jx@OqI%9`SE7>uTdpvbcC5g ziYWArOwB36H;>OY3tA2bf-g#Rd7EpM|fozwM#w->x#wADE z(bYH1v_3wPsr>D;6Y$+16)P&z_Df56f~yu_2DAqKcY&?q!J9>$DlF7wjZG3QqvGNnxf#Mv zQnKb6Dqegi9|em~Q&)S75eG9CZQcDtBiMI(VCMR_C9c%`E=`b;EOzGTGvG#rJP;>j z^MLOJKeQs9CzLDkVq)|Wh2X*j>-9PfTcrHffng>lCPjm-hn!4VI}2hUqJqsTQqD*tT{&75;4HlA8ymu2oBc*g_)01mpZc@|h;L`+g~f1slV2qGfFn7l{=yHuzC7d{&&#vhXha0~DD6PtxbX z<(YE3rJ}mB8Dxq?*vU3B)hb^~4QX~_3onoAl%e{7wRx$UBF++_^TuWpS$mWy8~ZoL zT|*;MtOEj)ZShG!K~L&POw9(Gbx=1SS+PV=rH=*S$QVaFMPmZs z{@L<8IXOKwLN)=#+E{2%Wnc1pmZi0t#!+svAtY#XS@a@jW|UBkkFwivIa<*kql*6Q zq&z`5$oXxb9E)$aVF<-2{P4E< zML0!ak4b3>gXhs9pm0cg5(CIY_U#~6qU0haIs+A?5e;i$D>#K*5W`9lZoWVJPe}%p z#&?h6OL47dZ zQeHt}3F}5B?5xO0O9Iqoaf0-p)eV1`ZZ*Ayxq3u$eGF%S?AQVVnAdu@qpPdC7ngrl zF8n;(K@@M6Ksrj!Gc)QmYV@$AypTN&w1dbxDIqo{CRQw=$eV4gNjT50Z{q1~Z42^d zgp7vOzPZkTg>39$hcVWee6-xyv@qW z$uC5-m79~B$7qv8lqj2-qBh2`P(A%F+dg6OXC_DbyE@uC+C?2l@C_TERIG=~&W}(+ z2f#Q=`8HhQC$c(($f=sMsL`Iy+yYb1P9{gCFe~+R(Z&*iEi!WEW-0K&OY9Sl9}V~d z1@ZYOg%L(DETVEDEXw0d$&3sMh&VZbE2ls?&pNw2S2lu3-xlqOXf+@sFQ3hM*|}_e z$yCTrigtivYzl_WLofxyJJQ3%pv(ZOlOC9+mX3bc7~DV)`;u8jmJ*XNQ9^_a6&XYM z)mTRocUcL5=CUa!i%AnEi>$&NVSP%Z6ohajb!7E_r1wx|L2fmvS<8y+p%bf#-Jx%g zs=1W5{b8Klr11ihF%{U~&(TaI;d}YeHkBl2C}ZwerO1|+DcGi@q%c2=Q!}V;!&D!P zy)815ij~y+93SdoBE5#WO6ud(u>odiu&*1)evG97suRqT+sS&MpOzyDDDuu0SCaU% z8PQTHCXre*idi?Gw>yQKeguGEll% zirSjZr5RYX$?=i?j@COO)}>+quaa*C232@~1v=7!IQc5Kkj4%XS7~v9bSkAJOJAik zKAIs4Zqf4G_+WQCCz)Koa^(uE2b3=w7#$Y@RQIf$PesU~0>G+BMmmzHw3?WaU$}$n zU#T2Sk<7mm9dR*A^PSXGHLPo7T->G-quBHpH3G&gh+HVKLFHBI2J7e?$-lC*&69S8 zD%4ssKuJ$@j}COUHrCfm7iKFXKSmv-n5}LqtRu-k#&rZ=6jUoO-&xGIVdm*`0Csld zXEBdQgl7s3X5%2wJJWca(RH0IT1~ATeZyp6%`PrWxHUCRO%e|YicH{%TqaLd3X_8f z;Zsx7Sb>gHU2nMLL0c=ND6+y&+U=NdW!N9jKu*URS}@E2AUf&N{%lVV(F6F=l8_`t zpv+`JM5s=>m!$&+QOBJo1YGsfE`F!2YjE5xOulug&{A-~#67n&yP(i~E_E!~@>INY zXK|r~bZo??^a7yWqUxW+Wv{w^?M6lAt(wL=cST;BBwgZI5r6QC7&kGr9~(L;wiCy> z8O)P%oK31zAtoKW%yoofQc3zDSOG3_(EoK zoU|g7akRjG>k-P%Hq}+#xL#RMVIYnxGIt;DRdQPN(MAxNnRXn7bjPDKVZM zC`$Y}cspCgKH+(x+Keh;^!e2Qy)o1hDWmt&$$yEnOM^YhX~c3oO`&1ok+G6{**24m zIkq(x#)n0_s8i~i^h0b#9CLdXSIKl%WgW6gfU>r!X22QDYG&ke# zaPrpqSV|E~$ClpKwvJxcTR{d(g!DUXu9As8ImVWj8R{j8GO#3yqE%Cx2;1s( zs#Rgj&u?R8fn?*Uao6z31R}ys83d4=nv#~8U&5w+C$q;uSc2jKRLN4eNHcOwY_we< zvhrv%OsuhQWpreSt<0S2*V;k}*8$fgz~&|e56qIKjnt=Cb6Fm0(hkX3ab4BE%n5oNJG$y7)6m0hpszjRHPl+OILKs}~v< zo(CSs`iAP6vPdQov0oMpBTgM)HJ(}kf0V(A5**XB`JTN8fg%qpon%tKA#ZenqOST z&>Nf5<*~7`u_;>2LYG0f2TLP5fFxT=&?Tb$l=*?fUi1>Aut`}CE<2qtOy@NluaWs|pumV=B)j z`A7nIY$WTqujR2=w%XY0>12;$m!*CBlRV7!7QRD1cN< zW}&GIw6)13C&lXgMbero3qE0I$ z$)Fin52nz!EGacVk9;*JFCD2K3h-0 zB>EbM%$!Sw7h|PLdb)^LH3AHPRU>WGd9x5wZm2$1fe!0Zpdx$MPhwRm??@fSq|go% zqEra+PPzKJIcAnc!!cUCW%l%hC8%!X^6_8Hp%8DVg9hE+d&1=V!O05%Skpa8msP^(JeKQ)=UBEC|aW zMgR3>#dgNxMM^MC1O&~Z8?(erlvnAK`PR0NJcpVwXD2CYmcQfTaFpotZJgh=iKUP9 z_x2*(rZ6Sbn?B|{Sio3S5=$gm3!|RGb?gmdlb%SqDMb$+b~aSyz}+Xt+UaYBy*o|x z>SaVFs&SzP?Uu@ua6Ov^}@5|hY! z=~!f^_JULz*^DKDIu033EGgLBL~)@M_K=>p?SR-2v@YX}N5{rThx--VSy^3~qdFsb z0VRYb(M_<*kmIfygq6iwgNPrps+jDQ-aH&mt^ewxls*@vgH-qsdcE3qCR{{P(XDid zX<;X(sr4(}E0Sc>g|Y_}N0XsEASs7P>a`llvoK9fGY+%QIjV9nx4QzEuwd?45m0<< z(o-g^Y9bQ>%_$Nc(Ri?HO1hE871LLCNt#h+~deeQejE(%STPqk&SLpJt;Q8AId<0|($l8$}w4 zO)yF}Pnv^u;<&^R8T8-v1&G?xJiCkM2!PmBvcg0q6XIG4Xe?HWUyAx^TAFm|vXhf7 z&Ww1~CgD967S-CPWGIHzl~t94Y$l=$fw!D67GW_d zC9T7fP+(wy$eqo}G^R-opQAFbn;fzA0O3lkC<*ppilCWHbY<{u!Mw0MYzDm&N0X5b zK|!h(?o+uoI?WlO4X*RF1Cs>fT9V!q%}^=9nUtE5rRID|#t(jAV|6>RM>D)8-855T zhg`$`-I8gd^wsp7KvR*EGsxf=q8e%PiNTA>YEFHE6=0`{)O}ToS@h?^WHL(t3Ej+$ zBL*K5g&ifj?vn%ypB253w7zoELYT=Aq$*QVekE0cuGP#&T2||XVX-PxFi7H-*XX3j zwhd#QV7T^A@?dsQ8_qkN5?`BBf!m7Mh$o)U|a?|-Mws|9Ax{G8*eJz z&*CNQqEN|3XA1X7hXEy-5rFt_`LhcMK1XX1Z9A6HR8#CSvnt$XA}L_WNwR)e9g_x{ zAeIU>qDUY$qyXWW&_PL(EsS=Ry+tvsP>V2-Qo5U$mJf~!8)ETmUOCA?p^Hk0YYn%` z%n*ghY+=Dn*i&uRB>i}%P+b6%9eyjGDO~+gkvkh06vhlCxH-1Wx2cgqXrvBEc}|o` zd6}pxs08kW9->;ytdtX!!7Nftma>tDmr_D98o0@s`Q?p(Al_hM1`u(vPf!9F8CSv0 z5j-hM8n*2ug!E@|pp{rAYDbKXxJD@b?~+8|nm;2zskP8XkRC1i=#(fxRBmT}p8}W$ z_V}?oC5Ru)09>&-CdXVHH{aXc)jK3ACQ3b4mB=h|(JfMv4`-EHYGwbwK;gEIrCFL2 zY29dhDS5Xh9S-n&*d2v3*|I7<^>}R(O|b|nC`2lv-;E0UFGRxbZo8E>dfT7VFpZCk zZ~%MfMK^)?X;Ipu)>!*d;Vc!Vq_jb8Db~~t)T$!_=hm|~$&b69BjT9VS7%>~yH8%+3VxPu2;f7y)RqalC3;&D$3is#b^$Zh0Bal{ zOYs6LHiy@UevyyT$drQUftlD_sFbjj3?nDINS>L08x($zYmAD3D_eoV(pF8Nz=@|! zUJ0Lt4n#GIL`#bdi=T#2wq65!(dkdmc>YU!Q>1nn`>~InRdI5W*uTm&3&VUr2CJ(w zC5-~08)Bu@gf2LA*=`vlxTf?0mcIKBt4cY+6cOV{1olWtNlu8PC`lx?hi`2ZvV}}g zBLT{!XgEso)GZZL3X^Qp?YcTUIDxH~3|8+7PZFyOYy(n)UkLc@QA$0L-5|U_{Mfii znfHbZU{ph)RC~%i$*PRT;5Ml*3OLE|(kLy<>@?7cg0wc!Zn%xIsqe$=0s#Pjd%A9A_Ir)N32Yi)CjAXtbN5`HPw zanb3e+=tvAw%$2denK>ml@4e~;c2$s0nXaR5eEpbofTw?bW^I2W63DUB60UHM+Nuy za&A~{T`l$bI=cH@Q{Kg;l}*)8FH>Em@y#aV?1bWHVTCnO<~&lRjv{pls?R&nUqo0W zB%p{SrGvklDnr)9((*Q6j|4BjP2cReTK8aISC`U*^a1=cbTV-30tK}Q%>{8VuZNPO zfiVlU#;0UtW+Gh6$jr{>>ZRNowT%yjA*AJn50Me82)$O>A4VeG__!#OkXXyn&XtuM z&{RvlaG#7iWkD)f1pT99qiw9<+a=*l-FOB{$*CD4@hok5JMuD;6D0G3F--K(D)mG;cmC77Qb8Ub!m@k&24uwK%o2O^g0vE3Qk6-xV6>Ezq~|3B=klr5 z5E;W1SXNGME}nl*W;!SEF~B67j(e>aZ5Q5l`PL!9ftzc%?384L8=_bnwGQtz)soW8 z*#q@WEuDD!ZW&M{aNf#}`zSRAMWnr%7f5g>XBL$1J$U#ChiLEGRaR0!DMWVY1OPSR za!XnRrc@>fx+UHe9Rk&*NWEJMy$^`u>nKj3fFMpN&>2|mBq=6TwO^4qCFDk?KG}B8 zX}cjN8=E^2{pM4SkxF9H5h&t|ihZj1ZqhU#A+2&uJgT}11?}5fn(At9S6;n%{=(&} z*Z)7F-hw@kG`rRoGcz+=3>H|DLFR^;&V0Y~bRIVaU}EX%O*uy+^LRd&I43)uP`Uo zyC3cb8kDm$o|3hGOCJs_R0#iSaVu#*rTeG<)MxiSI){6&Ss$t zB#3o$Yjj3AWGa+bREiT?RxA)QC-*2)bgOE zsR>NulMd)|O${|wl@*oRFU2^G_z7O=yCBjg9tC_TiOzSYAwx#1`h$2Y}O_Ak=?N3N`rlJDR1?nuqIjjrOj<7A)7nGH=x~3W+YWmf=sin zmOpivjBD%fx3soDY=6*HTTz_jGBC6vIAbNpSaEb@XrTAoC;Q~T{`0^7?|=T^|N4Lb z#BKiJYY(JYqU$g9Y7f;3N&ZEK!@ptkyI<#)N)OuGS{iC9B_Js)yH`?>#R*GiOljwF zAr@)kr50~Aga)$b+q2RY$tu^p>x&FZ|NUS8_1|`@ z|MvT@zy9{;$8Y^(vox`8sTSetbycnD8l)oQAR)fC){fPN20?DiN=hrLQHx2luiaz7 z4NHE~q2acmj{%fGm*j+_sM(fRNmxZExGfPoEy?+XgnF)fQN|u}!&Ogku)TZeVdbsL zj)T>lSA=f7p`od@y1JH1*xa&PPci!Dxw?5GEa~Lga&K(Jf2-i$4 zn9K%jGmjp&+l>zTp}4T9*loO6IiR+q{+$fz+Ma3D?c&ab`kDX4`Tp~7}_w9#!y%k8OkeYJ6fLTJBEL1FQ|>N@-6@OE1p z>uVv4mpZpvHb+mQsP(=VA`vajP7Dw9_jG;x`tjXc`^XUs(xbl(JD9yz_}t8Dy`@@`FbC|Kgp$%WS;+?ns_CUevpZNhHg2c|)6wm( zG{F^ZO8gu_J~crjRe4KE8V4kN_&eDu2%~tn%&~{Cs;lNo1T(DUvt?9WP-{rt7FZ&+R1+O~**3_s{GF*Jvg&=lpgYu3d|Bv(v&ac(wq z01385Esb=$`dDgcRiAF)f9B>37yq``_}*R|?eZK*|FO2NeKtAvP=3Xvk%@vGw8I=} z=iq_A!n~myQ@2d}1r#|};aN@j=yoR-7Ua6gik2;2&*tJN7iPzY`g(fBo$W%lCdZ{K zFAf2Pd0vEI$^F7ZH6x9cYA@ODdwc46w6mNpDk(mi7k{{yFCXOOHInu-U%wFuNFhXQ zI6UJ8g8M_4AgQ$i<1FsxJMa$Ty0v8qXmuh$jX~tbTsziTknRdF63ExXX?{6TFug0CO0z~ znYt#*zD`c>#$p_f(P6Y43{Y=yn?Pq&y%H*5j6z(Tp3zEN!GZK2lI(zRD`$_Jm?7+T zXaD3nAS}v>;1fWl^SLuKM6k=vFDk2${VqQr+d!JS7-e-SHv~--G|wFy*bY*0$#<@p6rg#?mL-RjHs|JAP*9d9>UHB|C?DO0zXle< zAI63DEV%q7=J~<^d$TtsmL0Pep@NZea&iJA=+Zix+#6KPy7!XgN+%bDkDgytkduM) zD9_FvKwgN1F@{8Hs4v-!xg($C_swJS|wO<;VHA1p%@Yq=_Ko##ebpLC$rfos{N-Hyk;_t6 zuow{5z~gbSb6tb|YwNeta$w>(kFe27>E# zZJUzvh^oEm5#o;78N$~Ho)CjjNJNa= ztk^vr7^Kq1X*Q*<)L2$?(rBH&K?EC|yC}M2=MGz#pJ!k-HZet(1vCBq3x7Ku!=p*L zEy}kOou0Hz*m%M3w9QLS)M(uLj?f^KF{IutF=l4^I6gixMf96W2=BwNRn zSvu{^24ICA4;s5>V(cy@#23OZIs_%Mkl1e9eX9LpNQhiljKkRV5MAi}qdwC8Nv_5I zAtow1E(ZE?GQVzty(udF*Y`eJI4OV2S{6|Nn{LJ7FJS`Oj-5sVp3CBhBNxq z@{M8C#mlm`IITnnNI*lf8ZB=fUuiob)^Bt)nrQpR?hM@Mu8#PLNLl_Yy>|77ms}-1kmko;6s!N zd}4HXcx+~ARs75=bV?YwLc*dGGwgO3HUSx+UHanuth6Km-tlBWY4s%d&WRW{c36%N zb$)vP{^OUP;j!`Y>G`$YlWV`A2+UJ#mXalKMd#w)SA2y|hsJtDo9Zwp%L{VmS@C#T zE^C^5EI_ot|G+UVy!3 zkT=DtHrKYF6ck`*>1nPsjfl{eFxIh&Jc|Td1D7Rft+$mUR*PZTKI z$N^^qC2R;+NsKvGX)tc-8l~AAlRRj;j&$mVI!n~Io>K7q(noSMYta?-nVVlyPIik@ zJF+tFS_r#a!}TrNGq{J5*zTXVpXmT$6%>mX!lhf17+YKnm`t)1h@{y2ql0e|NSyAi z&4UUa9qj({>64Y}{R-GorM|wsf9#l)44YxBBl5^DEX7~IHlrw);GzO5hio+{=pRB* z0oV_=n`vbM;jY3tHAF^DyD5yHgn0Ik)@14Z;0xsl)N6bKc14KZRud#As++Vs!Jct; zlGe!5#B8W;pJ$fk97ZS}2%i-K4(T1EnF9I6a|=q#yi;CxE0UK8=+HYGs|yn&L&HM@ zeFVr_U;4RgU{sW{DLXg8T#_^|W{+?Q={ZH^%Gg0itOQ~^O)7w};7ZRTmpT~NDJf-o z0oj2xF{xCtMc$iM4trPW%qd@Gp~GaMWKQmICuwv#$%OcLG8KI2>yF3{TU}jQb*AHK zLW8B!-51w2NN+@UE>gLZ>shK?XJ>;UE*NhaM^;qG?U9?g_J8~EmuPoizd@m4zn~lf z@oT^@G4;0BO)Q~W_G7B+mDp2PBL_nR1HYP@>WX6g8;Mb&O8O!10MMDGr5*ChGQN_T?o?D1iV6+f=UDZ5J2kKzXl8G%C1Eh?Rt4L^}!s zn1T~P!=h5VPE|4y>%6lO-3DkJ>7TF^&T>jj2UJU z+WtehB`PF3UT@s^Dq{$7=H}-Y<;6UPS`)0@T8yI% zC#7=13wg>*O3LhaW%4h%J6&6@8@>iyAMYyLvGdEPKY#rnfzSTw6A|) zXna<1M`_y-O$COtevWd&JEi?ftvI z{`&LH@4x;2Mz8>T*vCXJ&{Sx9PgXaGyF}=fl8D~=`1$J}e*D`{fB)gdllHdOyJcFO z3OJ_OgoTVl2FCS>@)LA0!FKa6@{F59Ec!%n=OxD{_w-=moHwu ze*NnCNxZ7cko;GJvCu{#>K(|LL%TP56zFs^Z>O!epD z0_>^^br1@w*ot4_oa| zOG8B=<8^yNL;WtLJENFc*WOqI7SzYiP>CQ7+X4#SJ-hHX_9-;WcO_x4m;QO^p~SH? ztt@#O9(zNsY#*vkQjh^&Ds`l3;^M?;?U$BU%FE2zrm@Sbf6LFnQDiUP6H(<^A_I9N z%CWcW>(_7H`rN~$>`W~zFV0TSEMi4pU0K_-mmKT``|Kq(O%GZ~YkKtb8Ch!gtICuE zl_hy2%?7?vVvqL^J^0zaGX;}1jZ9?=`P_mduzShl()1wdAiGr{PgJ&qj-iK>&)Ryn z6{5tgD7d_Zd>0v?oRWlUCEe+wyyaJRenEa=X=QcAy?fT?Ix%Ezi%(D=N1u-`aA&ns1jF#j3Ib zpa4XQ$-)vI=zHrUUc1xu+_+$s1Fai&kTtGtD6`=33~Pmyn@~8e>B^~K6gMKHye!9x zK+>QcBGXWTlps6tZSyFyayBtOf<~ z$uoO~?a1NP)zAaLT{9@g;MMQPP!D#htmt=5u7l zG)&f}Cb&uv>-dhkuGojd@l}m2$axe z+}=hpx35sF<<&L8%=un1@z`;|Eh7B@4IY9j?NLxlBGSid>(({L+O{i*&bps)*YH4s zWB!W zEPQfPo_Q(UC+D}C^XknH!#*Mc16m+k#?y0FG&1VhcVn+d?s+m*5X5+E5Du`9EX@#!OCdXoWoLeoQ8Y;+Tl?B!(rsHU!9)Par0VS~ zpflX+#bgB6+p9z(0@;#@v%VE#R7HDOBfQHBsMzH8X^XON3eFpx`J z9vVTQl?$xUlE@c|J&(h+{8qsl@1oC)lR=H`j+EPpqT$7g>#R9Q*j*r+-YIOSqG`AA z18!UMZuKJbIm}9POOiN{U9o}i1G>5$^s?*OZJ**g;0&wm?S?P5Yk!Y5UPWbXeS`S* zxoPnc0d5~E6bPO_vdQf`Ms5xAbZ%Bv=^^v=1Drrt-qOvksh}|OrKh+_L!xrPu_gOl zDvyClSAdXD+I$6xwZwJBk|>%E_U7;~g@8fORFb9FE>S@;X^Ik1hPf=ST!_K5O#9F` zcq@L|ZhO;jA7JulHKfGQR7Tvn1tnG?BT;bx7BEw!kY*;uMuq8J1>kSnl_#u@S1_p9 zUB5i9jOZr1p>OLNCB2k4|hmq*;R}em8_MrtBZHCwH0mLHl1UTEv~%S z;%HiP#17L%1&f*s6Dl=6BJk!+mI7xZVQtFOE`xzR=tu`<=N2`_00wk)>fB5$Ur;7# zy6G18Nm}H^M}>tt83+C#2h8ARkByGNcyfIsWT1}HT}?vw4rIVlwvzj%VvrkX$VO1I z^~PF11<@c{$@er{5 ztXk_mGSJ)8KPb@W&}rDx_Al~FM|T~c$CU^^%Za?@n@BR15tM@npr$jJ_S zh=wv(NC`P5PXwb?ERP{%ea6N_OO>VgOU*smW#RU9F;Mol()f`g7JM~$oYNzR%buSZ z8w49+mD!|%Nw=K&DU8>0LULxVRXT+wBK_Xu_l%9UZx`u6h;S>K5x{fHJFEBhhA8M|YIz=Cfz2sC#qa=8eC$wO zU6>f^Ck?%~4+yh0-}5R>b`K$yDJaiV&ALG~!PqEw$8nXJjz|rc)t4x0p+Y))^UIN`keEJmb6TOT=nI zCGDgW|MabQ&^r9_$yq8=2`$M|5sZth4&FoM8r+o?X5WGOVmO#lGzgV3H9p+mqd4#Z zNS}if+D>?aJOr0z+H;WCPE}LtaLF!?38N&dEn4*b?d6#%4h^8t?(9%hIb9iwtbJG2 z!08Rv&N4bNBL}RECcpWJ`AZ7(@->2y#G4C`&OFY3TcjYXi&P~PWIf+L5-QQvH!`kU z%KZh0LQqEt(SUZeuIWK5anmJeEU17J{5}zZO5Np|+wpAFlPebM6X`_>MZ-C@v(`Sg=KpJm@E@VBInBK zbx@>>%gW3zt*WV(y0=R3@#@NZMR~dTlE#q!k(ZSkZ*_^!*`CvPk}r>NooXBv)Ys1b z@tL`q$#G&YjfGuVCE41-ls%2pGt*#hN5*GF zN7y;M@RNQaKFMV;i5AM}6S<&ZBaq~*5%s-1K2QP`E6q9kQPZ>2{Gid%5e9%$<9rG8 zo`hl7E7I8QMkQtzlu;hmRaezCG_^FLx#X|0SErSZ1%)ML)+^+sB{^Qo3FId0KYKdA ze);_2-MjaUm^)!ub#?cTOwKND?C$Ly66%*MnZ8~3%KAnIST$8DykS7Igk{4G0SqpK zBkNM+O+eX3&$F#97beFzhgQ;%y0%Wt%n}4?+388qVOC-i=y;@*oy~QW?V2vy>CrdH z_`e@~52nBQxtZCeEy8y8mA7a=7hYOvMU8@knwy&yAJm{ho3z~=bOj`$6WrlOfpj)v(Mhs z+t<_8**oC2x{C}zw;VL`ge-sXdp96T-4aE6RwI`NIlmC3;C5$s1iqP&oyBT)2WHJ^YUqE|7_N*Uro`8|v%r>+1s} zIW)<<4eY?y-ib4~^763i_+CZreddbx*_+!QcRYUB*3v|h4Dm@B+L$LLMA-*d*?+u8 zDFZKHu(y+_6XbrPIDPo|rDtejZguB~MmPwGm%Yidc*9jGVcl8KU3@QdmMAUZIqy&x zK|9jCNE8s!2b}#nI5IKAO2XV+mYWsTu;jpn61ios$kW|T>Q**Ij(0yVaM73@yc4`P zdI!d4<`*dD#NfoMWZhbDR1&XEzRjA3miEU_9zASt4po(XD0u!MP9Y(m1>9rImH}nz>ICA$q<1J>C@G@RaO7m?&P=oS5#h3S&&cO+XV_QWYVR)@*yrqRF-_*uyvU)D z^Jo?rUf3;vapPb`S#}dK^0#Zv|2`nkshWA1KpXjR_cN$;G!?K49y$Ala_cE+2wnL7 z*WZ5oQY@@XACQMF zD3SxDn0D}fODoYijZjEAjukWEl~2|x5VM>R<%Ty0o6FV_OpW$;fBo?Gx8IZ}^BbT1 zgPrregJZKRRydq1?u9{9JP5RO7JT{^GqtcHC<_Q^UVe5;oMg|+!2>{gX{s|ueniOObb2(0L$OYIs*2K!4nqmEJ<>JgN5jFEflPFln-s<7H zDjNJYH{Gu-FDZqE-qh68c)zjvL8}#Eb<6~08%&J{N9i^n$VNx|z7VrvpZu4ffBxk+ z;=(?6Qh?8|;h}+)>8G_hT@t{{JkbcPTBI>2hH2(>)?Z3&9v&H+URX(} zil*Il^`t*EJ$&~3>66Eg+FP5g!l|q%$w`spUMawP8^ZJ1{mzsA_V=F&&ieKDH-EnS z__c=(>g7Y|YhcYf`9xaujj}f%vjMISab1yP*MyT7#T>{^|@_ zh;(22@DYyA?)UHPfioAt%oajhm|f88m^OA~U0jwsoGG2+s_iIPTHe?fA=D1xWC8W* z3wgUgXnpwj@x%56kz z&~Bf-u?}UJHpdB3V8Q+H1#hj)jgO6!d0sJmhB4sz{i;qvr z$j(fTl{OTiMs!5Topv!nqDi|ilHwvmnF8K=yg!ke1XJ`E?ZtshFL?_DI7E~dWI-V; zJ0ON!-CSWz1BHtjQJnG(I|B%`ToAL0(&_N@CNM(I;JiZjYEyVv6Rs_L(96q8tYdYm zMKo5Yvb5^`hGuC-wR|_73!y5b_I=DPuJ2moB_WERtm`43GK`s@;?Fa)9Ib;`ix9ZK z;X?n~SEJ3p)T8VF zjSDIR?3f2yNCL1RPwMvCzPzBQ#58MO%c`s)wkvO^8^qzNQpO?D0a`s19xCazVh1;^ zDB4(>W(c4`$mqymfB(?9OaFvUWk1;t9lB02uUu4#gbfKvPTt_@UlIQXc#3e5li`hs z`4}QxCqdsVMUT&{Ex5V%2@VGx7N+0Dx`ZHYbWhLOQ`$ptjYJX~Cc~svxf$6;c&Pi+ z{q608GmuTptvB~hZzNNVNzNec*v|PHCFE731hWG!GY1}WrnO1&5$;((l+j;B!=lih z420AtPTlEw*wXKxT#7^s=>}`2Iss0%M6oU7nFxAXY@KKRU?T{Sar9>^@F2aNU;6m@ zJBQ`vg;07>thCFDiqKKd+D!W)$8q(t-M4r4_O@5%td3_K&shId?0LI`gajrQ7P{g2 z4d4Na?dbuJXGcs(Ow5o?S%xi-)&KdF!8R>uWs!tv=YcFMhNDL{O}L9zbe!vKs!%IVG;eI z{a=Y9KkR&u4u#m}cL`z=wjw-FKA}+B+b+gZn$k7-e9S0 z1?-~iB5m#*S{of8o|6-ZI;=Nt2N7i7Ux#qwZ zhfbb%0G$f|e2G9>Rn8aR?&X>-d1jv~vu75a(7`A|hPvyd|# z#**xdHo%b`>k-fFqo-vM4kEh+KI1*-+(68Ic^eoWCBBr)F3{qiqE(rvp<#CTNeKoj zjg$hcTz-y$Fvf_nDk`GmlpiR- zJ!Ms(KR&QyXZ>|1e?$O>cfK@nPmd3+La@rp6OL=c%fPBGL-!Kw;5T{{V%>yr5eG6Q=ZX+kmXJVb+bw zxntGKRX~`k3pvElfW^w`OcAO3Dl{^dZJU?%phRfh8RFsX$@lqhsG_#D$Zv#|^YKiD zH+EA6Vqnw?*PijX1dX=XXL845GgcMHZ|rww@v{ zgxMEDLzI+~oFG3b)GfPua_fjHz+iJ}d3n)^!*v!3?h=S_ES$qkbiqV>uO_5t=i)Jr ziNGgnU1?B&?jrl4kwF+CZ*Q*7_O~RpXMZ;{F)_EYp}FRTSg*po2Fal&je*|c5mJ`M z0UndzDx5(>lECn?pC`xL50@MO(~8wb*6-|S%Chftt$N!jTFdh&=|+fDUV;?q5|2gk zOIr;P>}MxHpwIcdD_AP{GBtxTTLr$EQ*z5ob$9W zTyeL1BCQDnXqpXeE>|VKUt1G1hP{m!=10I1<4PZWy{=u2aQ0lgGCB((y#-ivWUPKc+Us+)T z#goXun34(WL8B75F>=-Tv4G+9NK}x@Wu(ydji!9&aK5I^_N*|h-TadqTR|vct z9Z0-d?C?%V$>d}dD_Z(FNh_7835!PxKZg+r3Ubs!Q~&~`2n>UtHmFh9`$B51|7a3_C*{#}Bg({1slPn^YV2(mmW4^4W)HT*>u`={flY&W?D`g`qIo zWh9)I=#r|e9=bl>-hlH50dAb|1@=k(18Ppjrsm;!tk@lYiSiH*zsAD!aWyN`n@(I69i;s|> z+a5wR6KjhiVhwazAKug5$u_mSt4mA)kIcnx32Q&dHBfUo+AI16)Guc7%&?f;x{yE|qjtfq zV0K8!JBBryksBUyncUM{(rqD9=F-AE0r8l#OKqw|uI02jK z7rO}tMrZ8TT~~v0ZY`uea(Gr)WXStd(;z+xW3DGGvY7ecTFJu89v*nZv5rJ+-ahy2 z?A+4&rt0D~$K2=D43T3HaWtSSn`T1)ob$NLPP{%I!-uCK( z0?+M^S=&B1bqMzG7+8;aMP)SL?2EzmAhQ(0rVPbIVPT$~$(g`SG8_bsvHl6W6;drb zzkGP}umAq<|M~eBRt$FK-+%bj*+)Lg=;SN{L@1rsa9#L@*;Ut0rL3~y!K03jryWn8 zJp1ma|M-u;|M=?hgXX5D`YPx2<;8YsrHpk}iczBWTG?=!ey56-;l8Ek++~Y~%FpBO zGpJ!S>wA5?>*B$-cu;2D8=RvO%La{Wa728Dlt-1-vg0&15msMSQ>!n*nbC?kj_r)k z%yy$@0*ZW?x2`PAO)J0suit+D*U$gr4-B|J-`fqZ>D!c@b?B`X7-HoYp2^tctb)=C zWHS$+ymRWd3mB)!jWXFEDjF;m-B7!CKqha zU}^tA2^1nEv4`7H`G?>c(XaguEEiYg<5etyZ*UaLj@;r(KDC`U_PsaqKWObL6?Il# z!A-zXZx4Q9epYe}IF}%Q@@6(-=U@7{kPXyZBOA zQO(Y2V>UV8?Yy5x|1`IxLXZ1mTZFd_j(^?@^N31Ur4d`S3%|6ncYKD+$eQFx>$;&2 zmQ>caw6?Xjwb@B?zrLCubK|5L@2#@c9pa|LJevzkK%e*^8Gi zpFe%vDi=pZsk|$$ZL&ACqrwp2M}q|Lb!UBXR+6uYnR&bQCdQ{1)||5z70~k9=Eln0 zJLx21B&kx@ya0dE%2XNNSAy-(% zfUjMBVn#uEU2|*u!$(h^zIgrpcQ4u7J#1sGp>MyYydX0*Jv+Z3C-p7^!|&$u%;kSD z?^~UR?>&WNL(|=9fHf$<0OG97+5Z<6;H(e|XsIzOEwkJ_JX6YJU}$twCOW&yn%e5h z>iU+pw&uF33VRUk##4wXm&R#L381r^K075g)Sq`ci3EG=3o}zwE=TL@XV_35K7E4x zD1RQW`mWwV`(}Dwn6t`dMz2<0XE4yNs%vU{($Vqw(c{NYo^(8Y_Ux&>}J^k%(=Fd)@OU4 zpxYZjJK?dcx2#exC@QV2Yizn-Tg4a9{-Bu)ZZ|?h6YJv|n5TNb7urWxSd(=w=Ld{& z*H#v%M+cDL^mKQ9dH37D{`Jf6Z{8~M?fu7(QV9+YkBp#=T}F8iYu7I{IsxfSS+!nq z54Fg#8{o;)XV0H^JQ0Qs?p`(LOnz3X3&;pm?)B}(328DEw$(0;jk|q0l+0>rDtRpmQ~dtv#W)}$ReqU0Xz9-jdfM`N) z#>1ZE>^ec#3$VRAv|Eqyx*!Xk@8A5v$A05XslWgE(Mp@{Uj0^Mvn!iS_w5xg^aA_( z+>)w#J5%fQ`5!;EL;h(;$MaX;efRQN$K%#!ynt0@1pqw~5fwy)_`72d%*-)h6}#8cVKLKp2exw<*c~KdR6Mwo%Yr4dZasLA~e*NW_Uw>tx{0BI^Zjf0cDgq~|u-jfg852y$XvnBTP*3U+n8 zv$mvretBVLY_Pi%Z_uc$+Ff$T4dRmPW!EvUkfYVDy#vKpQnd$qXlB?cS-HCD%c^Sa z!#1_>jw8si5!*<)!u^Q!W8j>V!mc+Kfr`)73F)CE#%!-4Oqj9yrdt|jX&KR`H>mEFQ{LnsaQ%l>^*FXO7>e&V{H)rhE)5Dx*yhrAhxMM#a2 zo$jnH%zDv*Up_&5<*bwWzPBH{-mo3WlhQ0$D=SQVaCjV3+pK#oD zJbnK1<*S!3pFL`+t5h|eBgHIp8>L!ZpB*`7!qWWAq*Uxc*@n6A5o__F@yYv#Mr5yF zTwdQH+k~~7l8qJp9TpZ5o0=np2DzWAM2#=c=qb`cev4;?e?py0`qIFEK4Q;+Giqe9U%H#nzLgJVIpU|eZ&1d-#&k| zkKPGK+-`k)wdi;y3G~F(xB>$zzY?-Gk?Cm3onHpMuVU$|D@zNkVS`j5*leszgLTmb zKDWO1#KK#~0P3%zld-n$z=1w>@0>em*9ZFX<_>fAa`Z5}TvaU{7)GWb+AMq6*xf#~ zhyB&}KUi`1L||*X<0?ywii(T!G7?#`OC#>*M|AbJSk^e-tze#-zza)WdS^F0z9F>e z17m`Gu-V)clS1)x^fy7?7%nM2uN1ULX?d;P?wsh>wif1-Qk$Dis}?WtrijSQ%TY0f z1^6Ikj~3C&TjslsO1=Ow!xGpwg@=Y~G;n$1ZKdfOW+!>a;>jh@_rtsQpK+-28dAXP7G`-Q1+loi zA&1vDwmx}gFSbW^+H>DOZf|L*Dl5YOYY%&JQgX7wFG&(SVYGC8akRNKr|g!oL41(V z9Y#3myE{93hsW(c7#yCQU&hY0Nw)K)4?7;jDPWukO1D2*eJj%%na+ByL&rp z^Hl58I^`tt9T^)R8-i;xF%A%ns>WS&hShemtC+-1UBqKnS6^FRl!qZ!Y1Fu6!h;km zrvP*%bsh3{IJ;)q8Xg+r?R9YMI<1o?mL!2`?0bHCysrqk(V^Zi@2sT%Q@9!0n$BJ; zJ?*et-Pk+xbw5Vjn!*Y@;~Np%H#N7m*+YKc{zXfZJ?bT;_ezVDCF!m?u#mGOx8_j` zw=iQjyj}2NSIka~kB(5-QD`}a2*atf+aNpAv3+M{*y&PMg;@X+TA7UBdD&_4kzwdI z=+4*&N}zGFzqz)tV`UgBr4#LEh?j{B3y(_5F0HC6%}o^nJTE6TE-Xk{khhnIYqNyZ zk55ew_gH)LmwoyVc(kn67@SyKS6KbEZ*Zg))7iN>IoN4P31(JMOY2}24ao)2luHY9 zvqhPTj}Gxsz8Rsh)|_iB%>rO_gkX4A&Li|D9$p5cWqJJxIt_@lE-*F$Fj5JV7$8R0 zMYKL>D9^`cPY_3l%Yr1e<#21oUc)$G&X1i6{YVV}c-4T2q)e!+$$*fnE9Il(G>nUj z3cBW9uMESvNu=i8UEav@)2Gg%srmW2dAkF}01b!sY8AZ|H--86qNmeJ)z#P6$hOrC zZzM05-~e)@h+8B?%I+x!mbe-0#XdG-CHu%ImPb2XMki-xCPzmn=N9R5w)T!)28Wxw zW>^7PRgJN#(#xa8A5)Z<#UrZ}SpupyR^)_mQ=qk#wH?Qf7B<({PeDMjp0ln%sse4w z5@RERy%e(J{cU+n>~AF?TXE&0S?$rw;~e8QEV)++R*F8kzOk{s zq6kC2NYd%a@lFqK&FjIooWAR83zNh4;ux@cm0Ny59g7T#6VnSTZe{~ljo==I{3T@; zdU5mj%4Pp-VjNgXHy*FFCLfO@x29kOt-4m7xC-F;!8yr^zNDaAEeho;Pb1|rvR=@8{5ioBpsWojqJ^f=db2H-*KKh3zW+nAqa-pn59Re?sRNUSV zDN0{1DpCDH^@yC`I%CfD)cD8{C+yu?T~fyGx)To1E9gU1{G9{%AP94BeFMYX@{pUB zw2?$)Y@7qkRLQSArp#f5AZrz;@CfDy?7YxW{X?P?lZE!pC4jCl-*XEhQL#%6<0Z|r z&T35zL3#Z9ziv*-!NRe_0WjeWR&H!-ZW}fKh-f1 zsurlbC?D0eY`B+4TkGozk)kx6lvtdN`O3=rwqv`T5a{9S<*_NnSQ4KPt~O zOFsL=?78d~T3VW)9%pGz+@}((l!G8%ty3iua0=WJS${0>0dBQ$m!YM|tYh~o=GgIb zsi-9X@+yr_LUXMw5QrW*F7h5_V3PB#*fVx^?c;ZQzQ2XzhsS7K*cL}MutVM6m(=pp zb1U12BC}gt9uypIk0jx4#5>`H$+73Bw4|(}wvJofzJu!OisD>Wo$2=AY6LDA@sYw# z7MGQYF(vvC8Hd~rRvbBA8N=aoC&g9}QjlX^vnO>3R(%<;oH;{Ij!vj11*V{HjZy|{ zM6`m)^yRzkJlS|5az;uMcP7QnEp@UNLbJ81_1nCL71p_o42?{>$)t?ZIzttNVsA6Y zOm?B0g`kph^Ghr1Fz0coxMQ!hz;5~IsHn&gpR;{J0k-UbUM9|bY)nU#-B#nXON{sy zS2w{tZ0?;hCU%6r+Z(Ch#MpD&bUZjXz6IQij}9Y>)Ft>SEeapA)W9(bsa8~`i{OFy zJKE760D@Az9PS+u{fjI>zW>9+11z4CvnyLWa%kek1qrpdLQJAtBs_C{Du13(#_h0EO2 zGl!P$^6FBU4CTXJpt#*pZrzDg7A}cJJ^Qr!vxP;m;O16$jxU@eA}lrq6p}1dWD6IQ zr$snMIV6kvD$QbBn``goXQiiSW~C=Y+Kb6fX59RX(<6Po{exB(5BGO>_sRh{II$qH zxK=?Z#E`iHA!eI=d+WzX5~bOhcXEksOHFbmZ?ePi1Ul$NLQDjTDJSzs92${ytf+A?BYXA&CW|~cA~BO+pdeqkQ7h$GurXtQ z(EjLA`vYql>Z)=0^Lh)nhB(k(pPS2~VU00t?1F^$6=z|awI0ejd#y^`cw z>q~#P+fVRN{NDLuUpAp8Xdp8bGH0JTJ~bzwO;&_HHPZmB96n4v?1i}Pm{2ZRlM4Fa zU{?t=a2%8rJ#&$?GGQ4IAiZO z9848Ons|$R4 z#39aep07*$kMVkO>&G*D_SY93Rt61*;!)4-wQld6fbhhe5^MbOg@mZCYi@hk+EiDo z%o(%{_JVWXyg2w|H})Ye_SXp60p&}y5@1uia7MDIEEYJtb25Eu^+M;f`U8!Bj1qw-~uUeGa z;SD^_iZ%W^yGZ*2z8oGM?5-=n_28I85Q5sdZ)glfV01!8Vb%TSrrLXjMdfT*;EvW+ zaJb)Zs4mIP(8w`H*7Fm>W$o>~JUwFl@9+@mN}nC?aA?$Cp+lpS4AccbGVGkY zh3w$vDkIfTN>inlTMPoNxU7Qcz#{m`WrdumIoTOW9;ivcd2oKa`^RjwBwlU_s*_(DJda>sOsyBqn+)e+XxPnB#N-JxsS=!p`m4p|ot};`c{WVawI7f^*KHAj> zUw7@pq6GBwa@jfokjp->3g?pidFIlm#2(wd;D}*3*-o4X1bw3YCP|qTuz+tWMVhFF zvI|uN-BK=kz!+GH0sa7Y4~~c=SW{r%)cBY<4#=dy-c4$zKevn^5SrD#U>hEm-`(wT z(P1Isu_+nZ(wwE*g_oS5va}%AzW$oJn)1Tz3_I`$FSFy#@9Lah`* zQHq$5^-Kq!OQXFK8&dJs1X|Duxv&nO^TYi^>!}g@UptwmP~XXES@|X9g0&QYsxQZj zTauqC?p;y>T?k#tZZ|7pm)CyWT{sl_Gf zc)g7D6TCgAva{WwIB-RqLR{2HMuY`%{gjv)6y$$%ap@Zxmy(X^FUJ)(Il1{trGU|v zoyGtJub{We)uXh(yScK+es*`qdoNjM#uFi`WvMgc{tYi1m z!c4{O?4ulW-YP-LtXEWYXoOJaxW8@#0q*-;U;9hLBj$I8!glOQON>uQ%E-;LTFV38 z6IOhABBlN1`Qg^`tUcFDtE-Fn`mLNDVt+k{<#mbtLigCw90ohIeFLS8bhNX>MlNiIZA9znefR!OsSLs-R3^0Lr7W^;96 zim@i1CBb{-a2H*ka3y82LewN{GuCBSLA;aM-cdzmR>grK1D}&bJ8utJB!QS0IAL(# zsYZoZuP`NsV`5{`I(tdLtZ5~YyKstY5*zGG(1=g|DB|h~#|RHpsvy_IT1LNMJTmxJ z66G%dZk&c@Me1bbt8&d@g+ggsTahSh+Y538ur1HltUP~qhLXo@-+BamxuBrX=)?@` zzU+&%BgNXo{G7BzG|HqhfKc<*FB0k;SWdl*Qpg`W4aMu3Qk<;@vv=ISRcer$Xz=B& zRFvMvn(_bvUIHmNyY>qSxBuqNjXmv3SW&=2R4gDsYrQdtxp4`4@gV1HP!hKlTZ(c+ zz8Mp%nH*u0gizw(*jiybd2nRyAum@u^42yK$ve+@l1K8G0Ubsn>Fi_eB`#SrbGq!@ zoUHVuI45roQj*HWO+bitb&56)m%ChUC3{9g1FliYaBSPzeSJY!?|M{$I1ZF5xFA&q zbngREg6xd50|qZZU|5V|D&p{bI<7?$Z!6x^KmgrX#EokrW$&m2rLsTJW8elho!6r}9Pe)tyS||(A5glzQn6z5W@oB- z7ZQ)X867J@R#|BYF(NxeMBq#jyAqdpM3Cmlu}~p{6sLrHL&Oh6wsy$M4YalG#sgL& ztqSDn{_f?i6ML8H?cs+gL|GO|iPCyYJ?ygTQgLVnIJ2RhUux{|%b%Tdsa)z-&|PQ{ zAJkt45r02sxr!r;aM=Tg-0A`lEi5Crb>=wn!li&GNC}f`{J--H)G;Qza33c3F29Il zP>whSH3cKJ$Gk2Wu(M|2xpQ5jJW31+ICC9jSP0jn(`$c)&9fU%PRHlPl!1#5Adr6v zs+lyGfZOu}&)P)**1xfef&TVF(t4j)&*kM!07Vz`RwUh#@kxo%!9G{lzCod(LANs0 z$o2tF1b)Wqmc!Y50aCiUF$rnec`iW8s>iI%v;-t~#AVP)c|k5N0me@^m(LBq8%u_* zb;p)m_lTN1q%z8%q-RcwbJwCM&4p2m154-~0R{!YU}lP3D`=+!SvWIIAi_c7ZGK(H z^5QyE?*;_w=|_+r7OvDHJBL)$v$hQhR7BU!nPVY3q3goZ()^5~vj{G^ybTD8P88w* zo4Z0G3-aKZe|iT z0w|a4wHXdN3DjU>imV&Cs7Q0t?Ei-uiqcY9<_evho1UIoSR;6Dckk%J2UC{wlHY>b zC0;F1Ej~QTu$TmGthwKPudjUqLqY;>PIi=*sZk6ZKwz5t3~tD(jL<2A5+E-h`V`$r zjth`VPDzXbW?>gA)J4E3WL=z!ZB2O4AuRxAVZ5>BK%xlP?TQ2_)J@Sh5uDamm?sk7 z4FAQmf?<+j)|n^8M>N*5*f9Ug!!5My>y(1iE`mTfsS^+ppPZZ!8*2@DIq*=H#o2Vjxg7H3uaVPqdnO1rq>dv= zs@Kixco<^#-}=_oD*lHdm^bwa&|*N0#Z-Aq+dS&4sqnx+idQg z`-er!8L3ZhS2>4?cWyzE#PqDu6BAIh;%UDk{^0ariwWPZ+{^Y9Iy57OUTYK`+1Gh! zxI4J+ggSzG^S464>cGVReYOjr(G#|b?5m`Vob>Gsbc-MoMs%XJEFcRmcO$L z>pNB=xi{057a?bDJzrxUC2*Wfj{=1uAaH5k96d71s=9!lgcieIg<(-n4wH=oPi)i7 zG=2So(8lnPhPeXT-m=n?9}-YR_rJITN`N=U^4b<)hC_wK@2l=o{HM~iu>CnzrDG&z zrh(Qh*M=H`Ba@fXybN&fX!q^ENXMrwH^5I3+?Htvw$=(AO1Ma-Pzx}?#_aE*_f4<5|WVO+u9YeT&t*FSn1EZ4_m9Fpu*Nj-tj$t2v z8|9auqBeyH-}T^>Q*$y#2oK}34eWui7ZAfARw{d1Cu7`qM=5t_LQ;A`xpN30M6nNF zTUC~yMYMAaWC5D(O$RHTpXP{L-QIz;Xl26|ys!OTG{RduN0-DT`uPTg#c9`?;4b6&ATuF*wGXmn(-e1&bWs44=EfGx4mnE?dD9&=M=R+WmWfE9yEcx zy;mkUaaKw!>QQ;~x7L^EocdqY=jzJ(?lIAUxRkbud!rwx>Amy`VhAlbF}+lLatgvY z3R|KPcQ;lzfY~bVNKUTZmTzzr)kF>%cEsrv&}QeIy5w~uz@jxIj;jXohjmF-`?&w_Ez0HyzmVS^z#pnPR`IdT3lFITGb%z zDQU`;)m8WM(!fZE2ilo(g;kXz;-WPm9`g*DFr&3gJ`JR~l*Cw! z`1J2SR%f~prkx!uJsQgqVhEQc$|^XX@qEF23yMpN^O-cct&TK|!WLL(oM3k%KR+-u zJjCaCV_{)+XMcBNk<6Nr5f;Z#wz%+n^ukJgP!6@ix0UaKh+A94sKm@dX+0opR@EaP zZ>-EuPoaX&=DPbj@V?zad-hPRZXdcxZ#JYydL8fD?Y~GE)(%y@5;sH#M1C3^r1=s- zHO_x}N&=GozPt23*2~y^;uoGsjh>uHz!iZi#R9^x)v=yQU`r?kaSpyKlcSZyH&(mK zDMi@t?8GRZTX3p&+s{cYPw4N-i5g7%d+q+%mGDD3wxX3r#1Ukal~+{fG;FQ}Q1x8gb~_%}gmS4}SchCwe zNvQ3!^U7UZz%2k1z+NBBM}SFi`E(xJzqyo(+X~K%?7SjJ`fX`#s=WuZ^`7|N_UK78 z84{)$>*QV0dS-%9eM&4Wk85JXpQ~V=^^b7v$E53 z*v)5GkbI++oRpN7%OZ<{-AW2Q_(U7={>|XG2@9gcYEzCeSI6fmkYHf}6u*+X^>>Um4D1E_` z1qB9$iCLpWne+^_b_K-Sl;&rofDaXVmbx+_Cc;_+>jWY~G=>p^(8F_C1-G`oxhd1= z%F@(OZ~rKi1v(AD{VS_02x=7w4K?TV1XgLVK)>Y8+MR|BsiDD{1?unDS67q?94$R3 zY9|`e5P;#kE;a06Pg}%8r|(?VQgnvc!xe=QEO~>7Epm8K5ggjrO%x1w58?`DpMWhK zp(@$keXPxM@>pfvV`Z2~QJ9mNsz`+pmiSQ-L4N9A6eF$Cr#oYryg1{^xO_qb0|?Ko z`kI`WT7bN!s5{|6V8YR1Mt(Ae^k(T zQ{E|uik})A9-f$^y3ojd*2Qyj{@bZ^Vt=pw7^E6tC*qv)k1R-!bC8>zS6WpoEO?Q? z^&SnLMj$dKE;{(?X#e=i*H7;rCS}&2G5%QRFJpx^3Dvr%rx&2{$OziYQLcuAk*#g) zp5DN;3X4gE_vqxcbp&i(}wFukIzfl4DCFJ2hJWLB!FMa_?x z--Q5VY7G)ioO_VZg=0zsz1Wd-jYXkVs@v=2o7-i#Z+>u~Uk(Bo=6yrBWwi1^C3wVU zPr0jc38|TRMPA-$g+1rhbtGhJQQv}my`DdH)mGIfc?0gtvpc(jB-}1!gw#}0jA3sq z@BoHDdB4nKUKt-98J3tEB{!TPmm2^CMwd`ox2o4OL=`XN&a1DjP(CYO)T)Y-{M@{v z;-XyIH-RVZHb;abm9H{xAj<7iPFrQ^>?+cSP2A4K0M+tfaPeo zr|jGr9vYdLTXCZ@g*#s>gBu4fp2$3+yAbzQ%68i*K7UmW-#IQBZ4~i>O85z8_Dm7i zaA=l1Kj`wZRG)U?y|5R%_LHN-P9HX_?_i9RM1moJDQKDX{hH&4aNzmghwZ3Zk_sdC^D$PlWrDwMKE+XJ^e@j)&;^NF`zamrZD;^o_@9pjx9G{t; zae#i$@vVoQbpTOh+cB*^D%XH{-IRIMWf1@!dx z_K4`w=|G#@Z8LNB(d|3mU|#Bmq}Jnz(H;}asGUHD#@0t2PoF(~@`SL;?>gEPOHfg! z$Or9NL0nl4b0JXl%^9xa6$uQvmSm6cGNBblZ{{*Qk0qp7TNevsdwo#~JnjK%PDa$1 zj?)yEmVb||wE6~_bolxow-E?zH=R-;3JdddGtE`Pl za&m0QZuQR}-o5$l*Wcd!`S#6UpS%0*Ug#g5oV8!aI$gvvoT_%NC-I|VHl=qY9)D8Fo z{jN@d@#`jAAepNlmtXfcEYBX`fIyfY`{Z*=>(-y{ZEx?L2Smh*Bb%Hm+h;|Er(%9! zeD!Da~bAYKL18YX;mQTf5emui7?~SbgfzB4BK^YQ4WZmaLw>s5SZU{iSk)#UOA&IIw;WH5J_n*G?4GYvZy|BI~hICMX6%h%dD8axSHBZ3L4Q;3nhr74ujEwauC$sw>ZB&3S%6TxL;(}i|YY)NP+D;JzJ zMF@zsjr2@b?`Y2jO4mRQPc3y{Iq$?HmWiU9tL<)dM6mDmB}Ddv9d9vD)X4NC2BmJR zl1GO6u({gtZZCMq`F&PB&aG@XdW{_^!Q}iV#>FOOmsD|x2ps}B#48^Nn{RKuUu{nq zIlsv7!ujY&I;X5VTBJ5+7S8fRbQmitRJh55vknhjkGE5+xzPmbQy-D^FK+yT#kq7C zK&W`6$QPI31g*h{*3=BWr~F>2G9Uz>#B)m9!mlBwomv&S&`_v=M0-9tzpng`RekzhftsADL8CcNG&X_Z zl0~7DP!dHJbo7eq8cks#)s#~|Dgha1L2+Jsd?YJ;NcR|YHneJ$?{a+9Dpk9_5}0@Q zTLCkq=yvJ%r(N*KGS8blD}kED5CD|T5Y*~aY>v%d)Qo-fmbS-_?W0%SCDkR!TgKYr zY%^E@f<-b8SL${j$9Czag8F^cf>C9^p{?Q49J>5Cqv`Kj6x+fDd8>>5;Bnz zwHZq~Xwkj$^0NF4X2Hx8WGyF&>VRHJ9gCcJy}~x2vhERm(keH*6^2HpmaLt^QbDNH zj>iQCRh5)U7DR4No)zs4dV|z8v^;wL>h;SGs~jQbSnE<-S(?vqf{Yymt|IIn>{>ZC zMSS)6P)}D^cQ_0B zFZQ)VQz&teG|0a=>a|_o*^rKO-7DM2XjI5m7cs>yI=|HzD>>yPI@#&ERG>}<7)Ec7 zJfx_&w47YJ3OvUTpT2kw#R6K@(`PSUbhOpq%fkqml^Pf71DDvI*MqIa3H85h{l*8n zK7aT?mKfv;d>mbULu0@+hNhO*?t~QkOhPZOeXS+Oq-h5mR~*n{XGP+L9#F-=@Ua#xFFk=4Q7Nd02X_=q@@~;;EaD{02zxIz>1BK*w(%$#V2ix5_IKA-~fi{A`hir*7 zFm8~DhsV8|8@;u?{b76C11sGL^{SP>8slj^2yW>-6{azd1BukI$x+fUXQ#*dpmq?l zIW%m2TQB1B39B~d7w?3>6p^P;O=Z4CoF(jGnHzpKwLXGn@chNA@2qtH{`>DE_*FsNqJFrDpFTpXz~}Q`&LglK9apm z$5q0Ny3v=gAwvW9xb+W>xC4G>7JM&Bz?*u(AiDJfUJ;GKKEI%_gj$9&uGwB^PhbBH z9O3t`U%h_)3Q}2nb4^)MK2oXhAm7Vl?K*b1mZ$AKYJZ`9?ypuU+TH%;%cpm5{}eU= z$}Ix|ERhm9?;c1HN4mOG6DDHImKLj+g4N21cHyy}JbwK6Ne6wZyOe9IPGBUc7wu z`n&JGfBpQi-ST$K)l_>SH>pW+2(Zs_U@?rDp8*zOSGd0in@|sJ+E;s}*;B62#)+BP zso~!4{?Qp&xT_u@aR2Q3>g8R<@(4Y$- zVfDpmV%I?cMYhHW${AByT2^(x{h7T>pFewX_l>`J`Qljz?zs9YKnLk5$qAAOo~veacU;OYN|M>fN&!2WY?I3Q3mrJH#gt#$5OLE4|jSmmn12qT&&+hZL z?>=>QcYXc%?)}Gay+GNZSXgy6E-=uNJY+kdt#1@s7Xzm}!)n&ziaINt9zA^l4vL%Y z2RmTC|KZ2)Uv;!L3d2}dn4Ojw6N>Wl`cz$tU|_S8ps2nLOezZ^A&0qii-CrNR;@9%RSEht@AkGN)()q2wwV6JF5pZsC z;+5g{t*N*7>GPNNx&Qu;|L;G3c=?R+$m{1%+8p?lC|-gFeEs}=F37`VrJ-z}!Jcmd zbJ*>sew_Ynz&!&!eM7uqCZ-qHB$r^7eQ5Ep{=4tK`{8eY|KWwbR9p3GD*&eu9Ug)J z(ivf-k;!@#5K&M^?{u*vqB1@?Ke~d^8&ViG6oMG!ZG{lrkfHz8-G8uZjw_n_We; zwkxCKim9AgaHZ^_ge}08;^GmpwT5eJk2mJk(}y=hrXx7k~Nm>1%iYKp)RI5V&r8qmPVDC<9s&!YxwH zZ>{SJfSqquq`lEI^9nErrDf*dt8MZ!GFw~Qa2_`cN!ZrbQjc9Mm0TS5$+Dtut*>uL z?hA~IkWkWqdE`_`Qbc3JwolHc596<%H4>i!gJsTh*&axKAqtlhyIeyl#rOS`lNCge zW&~DllxV%gTG3arS;t3v8;eu$@kf9taL@C^LlVX&W)wxxXuR|g+QN+qjF31x! zJv~uAsbCWAo!E;|qdCIDA&G()bQSE-m>O5ecZ?7aD{`xg^r##vIYATR#_U3v(Tjk(wgLi z=m_Lo1fdKu^uPknopK~Qu$BkBZ-CDN?OEc*K&%KE8z|{h0qZbug+NC=8;P@^mKg}$ zIKC($0Z}>t&_k)WkILvM>_kHJgqR5A4M%}%p%68b9S$dWbA6}=M>afiJT%l(he<8f zvIIc|@W%I0Ej2@WE1g5BHNjRx#2KI$WO8M2cofu3!=r)q5svU=;#CskGa@-QR4FIH z4N$2AE{~3C5kQkgWniISq8&sisRRi`55#YTuOSKF5B*pgV$%VH4C3lc%8QfZwZYl| zxfj=~>kSqUb#p;UG9D=hy}E6FVibn)Cms!@2Lw5A7Zw}(da#ZRdRD+ALSX}&+B#6$ zogAkmMjbY}=nNpuhkym8DwL=%3ffi*KV(G%RhbZES^(B|XwZua1I>sa@STzK$PQW) z(AjCT7*I$FOtuy&#*yuk0;hS=V%|?Sls91x9gHjO>Kq*`a7EF#9B`N8s0D_$o(4mH^ ztrk=gfTR-wM%r4M0ep+8R_J~tHjM%DwxE;=%|5`Ai11J$RYMkOgMog=9#!o9sV z21VTDlzydLq4ZK%_)~570E-L?L_j1gbBe(j8&3cO1;|K>85lZdtma3pYtZuyG&RVq zj(eL6<{UvVEJ_&)l}(|q6t!b0=>!wLLWADqpo1aeV~216ux((|f*4h0EmEf{+jLhsuVMJQuQdAh(m8YJ5a1AVsxG z>H=gcJOIaoZYbc1$Lty^v7*=+0>yym(*qoV0Nep#dXF20&}g{7kU@rzkQf0NSa<_$ z8iE_Cw>g9@1!jv*sDw&Y`FI?la^;02Q&8|$ z%E0xh2eeiXg8{G!-RcVNC-vs zmI3e%`p5wd1ALbNCd8@<1>>X0a8SO}MMv;2)l5nz6w2^)#KnMq9qtvhz(dG|V75^N zqzqscf)YD8J~C9(@xyfq7*V)o=-Hy?$ydx{IHBj%j8f#t<^)|Dn7`@AHVrt|xF8}7 zuagp@0vHuY|A=`kaxu_8LRSsv3_8F7_6L|(l)C{qH*{K>ab~a$8hTAp!A3&ykg!4tyAiaSd?8&1!thY_L{5H+cmjGd$@{c8z=@)c79eN|K)MJiMNrB`8w6lX zKH^Epv$=sS`Vrz6vz`N}eCYN5baK*unJhM>@t9LmJ8ydQuZjcO%?233REYB6fCuL7Dd zyy6O4Y?-tIav7NBxZWpMP^4bKsRPF_o=ucIl}tieJU$m%MTZ|%xe!{^N0F5yeKYjx zb2)%?3ZUAWDJUwc&JrW;RTU=x(hV>*iit^QqXDUe7EWp0jSgzLgL)l{!C;I0RKykm zv{va4-Gu?f8u6|l*0Pu>;4K@^OeMk$FylQe}Iq< z;_)e+L5filFlDf{Q5Rk4RYj)^3YMq=3hMyO)*$4e;G{>TNf!$AxZ zivZjwXET$DI91T?<+6R8fOx?l0&yp(`RPz<5-8p*a8cqxXrV*jgUWdT8b>D#{ZBA; zekdP@Yykegd?pRGhG=f2i$Urjc#DXQx1#fbTZimlhr>;xC!QC>k8!gExh;f1wp0kPV>@HucauuER`GVxF`Llr`Mfb@JwM;C(qoah{fC3c91^xnsgiAa^C*^mcBVxBvLPZ#<0BFx-vbpgH zrbr^Vl>DuaH%|iM;;#e!!E z1Aqx0)MWHByuv9Cz&bjO(hY@XCV<%hI~)~CqD4nv3OY`K&IL7dDe`RrWt*iaIEWx| zFr}2GqyRuF*~}QAk}D(M1VrVJgkWJe!NL*)RWqJ< zAn6$xNcB*I7OcyMD-;5$D0y_dchLfKCiGjN!W1|WPD+%Ji;fZ#4oD`1zL4{P%TsO! z9hM(Of#D668I&L`QWjA2j0plJMFl{~iaz4q!|n`xQEbQ_Fo9fxN;5c|-mL`ph2)F4 z*D+K!qvpHr-w-iEx|b4D7K1yFP5r>7Lc&B5wg-V`mp?@@!R305K3Ea#g3>{bo=LYG zp+|=V9uV)7FNSqiI$t6tha;LT1|>=3B#VpzD-Jj=U~jO!ur()j`p|*VSAy_u3B?Qp z6pI)H!`4C877;2fqc%62(qAP8mIl(;K*i(42PLLcXSBNT4q@v9cNCy&9<@Az_kixV z4Wo48x3K|@tw0_;$UULv0l?3Zy%ij3$hx5MfQSfrDoD7_ber{f(iy#C%HZ&ts0D!C z02I*|9mtZ&3!?)B+>Xq-uu6fQ0lW@izCaZPoK$GSgFK9aid!hlj?c^ml6IC?HJr*| zp}4#Ye+H02pwWcmb_fnlGo~Ui*w$kQ)e!U*BNHXY;5L90c$ttS0=^g$pP}K=38|?` zC|f1>4-5rBtdN7b3NXtyuk(S-EkK)U0j)F?j5AQjj2TWvcqBK{2-7IBXNWV%#-_WG zVip+Ez}G_K2EHJQJBz5vCWoR>f`nDT*TCmdtUVkdS@UEy!STdHDkIPwMyD9blF;Ts z---@V$jG5W=39@P1km&ha?sEe1t>W)GMNw~56=!hSRnF$fubJp6{AF|3b-wRnLtd! zCYwQ{(UbKA9+DUs;Lv#L>V^h#bN*ipE3i;gawWTWy)m0fCWfB2={_@4)!D5cBDRKx zde+_qj@sKPBC*`mazm~z128M=*D5Vn2zXFpH(7pu)Lr*Ps>7n~6f@1>~ zH#98*@sZcofS)|P(pnGL`b1K11JJIyHLWFM7G5DhJ25dqS=7- zK43wyybvD?WWr&9jtdT=*fJm?h@v_aZ7;|klhCHGrw>{7yRl$wojb zBS;lOO$i+t$_PN1L>wt(n+pJf4Pkw-93i-T@H2sq2PL10r)CF+8)}g` zFnvz;l|h5(2qp`Ba4%ny2Iy3KH3q{l2u@LS1V&2Vhek1T1KEZu1bbca@hQIeXhesp zki#jEY&sAqCQh`Ei&6lwnSl-o77+B4_jaQqo|b~Df~nCPK=hV)J6@q{HCcL)bVW`$ z)X{>@cJ%h4_wW(dAZ2l={4VPFP+<$0btt1*kh9WbLz+<=>@HApr>G?0tN_;wn1d`9 zszVVoz|eiz>6Nks1xp<)ddR0@F(D`fq;s&M2s|U8fD#o3HjeyFIIKtFo`Wa}Og$W? zFzvejE}$Twvdf+Aojv3=m=IkLCmcCwLD&vbS`^|MIhP)h!cl#fa$kuo0J@@5Qc|Ij zSQQAIhu#bd_;x}{-WxM0WKBPknKA1$6qTsO`sfU^A*$R5C?zTF0V9f-0%g5+xW5P5 zWLi)hfOwxq2OSa}P7h1u7Ze_o2>Uw%A01Rj;0;6r@}9UELI86CO$?ZN5jb^bTylU< z?7^1T)`q(J=Jp;Scz~Ni9e5qFIMCkecA~-?ynm2#=kPJ-Le)8B0AxTJM5vL5DE%;} z1Key}@Cn=)(6GEDZ0JbCx#&djH)LUvQpb#kCHOUNWH=$-jvFM#(4WP617Pzz5zRz3 zszBA zfL1XmEHVli!+}u;;J_eigxM=7b19MF1kyNcw9CldgiIm5lpqGSoYg(TUiQM4GE+zi z@ZN!Pg+xwq&Y};}NMc3<9e1d{nZepZ=^5+;oh_saN1>51u-t*dC(vI? zDc%Fyfmdb&(r#2SflVXcw*~ZNP;~>Tg&OLi*SZFX#yBI0LV!(tC4esNvF^Z|C8ty%O%*|54A0^mjIOntzh~C zWPBw2!eSkoc38?5Z_U2Hw;ftu>nWIZ7trje2dSc*#ZKe;`lBz3K_~GY!jJ$DXrqB? z2n}i|h;xybFA-C_9HV42Mg>R!1upU+v~Fs_EA1OLL2(7+aU14mkoFR_5rCB)+A*lQ z0z|<)|V<53PeI4l!z^u=cVEobd_=1B0O&A09?gr>InvN&s{u0Oui;C&;`w zk?@*$;Jy7r265{i6KNTo%%n7$&>1y#=j;51T%fSZKvIY`h26m7_;1!y$L zFk{-rXs5Gz-rOS|Hl|!DBL$BJjdwz9O2VQ!*na^iYrs1Zh^SWq&@Ep|^%ZDI zL9LzzVJ1*q!4m^bug!=}{c3QJ!FfT*XCIcMh}{HHY%=9EhBr3i38bp1*r*T^i78YO zvGMWI;Xs{(Vl$!0L5NfnkiCU^CyVLhFb+YnN2f#QyZ@1@QfnKwv>_aC0K#t)5?Glc zsW0Eh4&J4c21K0TpHXVf9vV~V9~wh02>M)XIPZ{U08#;Bstg2r!2UqKhisydICMZf zEZ~qp#eg0+a!3Ju1p5(yo2?&6S|~m?6J`QHP}^!Xc~byD{)$O-i9dMe2p^A7DSSo5 zY9d@F1;k|hWLOgLS5mcTFI_JdQ4lnNY=jNa#HXg%|608~*#JZ{JW6kBOm3v)fd^o- zsa799Y(T+qQzQ!nvYMC>;4kAM98u|w!MQ9Z)E+Pz2F^w5?8I^%meoPbi@e_ZnGP>_z>Bd4Yw}3F971GZr$!Sh8PN~9)cafEUeBpUqi ztztkFj28yFd#tfSDwZ<6l1GG#J|OwvLvxx?>9v>Q-@%pwa$=!=`v8^c85lrL5lB`z z+?3t7KPsBgNL=Z`UJGQ-4GE6~Ixr+&3?q*lsZvlp#sQ!vM(LgUqCJI!$qD5gAb{&? zYiR-aA!vu!R9972p^z^ywxNo4KOAyKyEpJ=b03jhg2zpXI6ylJLYuwZNg0<0W~jl+WdMLsqiTp4m_T6G7=oq-@*DRglH z4O|Cw*;duJ^$ra50Vm*~#Y1uBX~Cv~tgTWBoW*|Ngvx`Wl18K=<6$)5O1-xbN~{aj z<%BRjtcm){BzzyRP?#Y0IL*VoUC7Z;Ut15-cYRp@N8~S{+PyG1NPuDJ=!DXOn(VLChWs$&0x(Y-Auy9^{X zU0nmZ(&e?-vQ3s7m|7$!2Pc`*kp_F|4;KQ(s#p-T0d)~10fSB}a>PUdDV10tlm!w8 zIwCj#`YU{SRE-V8A`?hXbWm#Et%x&hM$(XW;Ke}>i(YSkA&SeO<_A^yWnsRJ7!z3l ziF7dn48hq|p+OJE6ApnxxD4ZylH!Q@Q$USQF6Me{C=F?Zv_c1&hj{d zMGvc++7XZ2+=+BHLm+Mgupl>-6qo|JDm(&wQ4;=x^k!COdMc>#!TUuTuwc*tps1=q zkO6jE0I;h1LG+aGKXnikdQPYYcz1Aq?52XI-K0lhzvyBQl}k>tRQw3bLqra)AWH)UQdZV)S#*j zU?l26_MrwK5)|nzIq!zC!GfH42>k@d*n?h>K;jn^9vL1am-zarq7u_b19?ME#)uIk zvqxp8#YabxDF^OU=bpX z0+flsm4PayNvCeDtEp{lZmzE^1wG%o>hh8Y#rKMeiXWEOfFK}9W+Pe;gnb<}@SM$9 z%A)|FQa>uii0OQ?d4%C(z?#iam@x_|q|&D-Qt@>dWWgE;^RPLObBLSW27lI)-m;N8kh z2e!BPq!F28CQg|)b<+4znHd0$19e-VrW%n*j#$`cVgU~vR=}ibDH`vlI*^42tSz~T z+VbK%w{G3JSAt#4?PRl+lvULOaY)aw)#F2VSq#YX?)2gL`U7z?WOfumVbO6(sTqJy z7&|IEdki2hfhT7aS$!kZ$Wn|)N-*Nz_#r2jfLtHQ{@WU=KtCG9gb?Ihe5df%?K=QJ zEiQgoSzliRlEycSDqDIX1&TEJRQ$~m`Kcme;!vqMoRTmaHD>Ji36rKyo02;wCkq~Y z)Trz%XyDJvNCy87R5-vP5HKD3fo{~cz#Y{<7I#C{!+Uq`78TtsEWG=$0)?F)0y+}1 z5+GR!oqpJwX`wha#S&~74}(7OlvL!ZPR$%WcHFq!iIXOb!&je`L)JhxdH2N3#f1le z4-a95fJ3tk_dv^fH!zLWp;~w8gL{BcAsZfe9LTP}ed{(NW{A;;cJ?lKd?Ur|3M#wg z%29E^5d&EI3`8l61|owoIrs^{U#Cu)G&UnK23ZJUzf-gZ0EZ(kWDhyco2pCh-^U$Z zS6OoJE|?iW{yr!zBS%ej4KOT}R5q)LTaRj+1|+B92vD6Bs1~77KMN5OS)lPtCLf+3 zNyrfEJUV-1Dw%g+nuRVkrgIF~30!ED*O)>9{A-g>*EeXj86JtT$2&y~2T)N$e4I#wT^mjB=JOn&Y=|c)! z|L{J!aN(W1@Z1QFyGOoTMs^}`_qqr4&`n|YaDW6W5>L-aa{27Bx#P!<89jR3gh^z% z0pndp*67^HQ>RQELtc7fQes?mXrSCzg0TbYaRTFbUsqd04F$v@=jxqXw~I;h z2GA-1*&aYufd4Knd(4=e^rTn-|06vhruLm!$TEPa3V6>o)gTL4Q(Frf^>=RFyaAZw zQov>bF7mh06J+WLP|bA}h&_e3URqv-sMj`Z;ip&yoY9~&Mh;X=&J#nuqy&A~(`AoyEa z0rgB~y|4)UIda*?`WoU|6+bAgs&DBAa&Ztb=o`=h4VhFK5{VU~kdW{w&=>~vS>}iY zuxJ3bC;K}iEtR-^-jwox?Z7Ubj@1_D9k6a|a|KtV~!2t*2v0MR4nwYr{o z^Z*iVq*!06A`_gSpb=UaSv7a@{z^b zD+NRRnSN}-1%gF{=Kzu)Vi>@f-@ixZ8id3s1f-f`(t^r82*=RLW(V4T5JpS_hYbu( z0uoD*vksZ-fzKGEt%2J+7RhZP^Ua_dji410tvu@43_+Q$lUOt2Ig%@qL!LqdR@Suu z;T^@P)7Gg5sz*8#6~pLUUvdM~0h1h0-fk#NE~@;d;P#G90D-{h#q$=-g^cs$sf!+; zmqE)>&}flMX*js#GY=WGfBm9+=x+Gs<6_wPt-2WQm<{Wvjb0txIBRbBirHh#-M4m~ zZ5@5{4voF|rO74#oWFkc^xqdwi8>CS*ps*abp8cJ$zOYS?A^0(@7_a)3+VdR=v85b zR}S9bF5R$t<-&#Y=FeNWVDaLmOP4*lV#TUet5-ks%(Ks}S+n-}=hv-!;f3|8zE0m-3hso zb@2S_UtIs|>N=t!7r1Fz;U2dCx5Rr5x z5AGG-$Uk@N;J*F)_u&ogg118M=g;4N`<0BXzx@33&s(-^rp8a3VEnXs^OmjK_a8rz zcjU;iyc6dxU%Pqx-opnE%IeyXK5N+IaJgx0kxUVU8s#Ju${s(J-29?tE1!C1&2u$z4khcH{N*dm6z79dw$K+tClZYykOqU$;8V7GXK=%I1=E;LC?z>@}KF`0hCW>e(Gdk|Cj*UvEU14!wF5+Kr)DJkf;-lHwk|r4Hf{X zN-Sl_Ks}n0>f%u9?}%e_!=NAoAd6?m#%U;6qec}93EQ!~((R#9{}_8onM@|t%n6N( zfEHm>@EG_EI(aGObSBjR0RIQ#u&^KB@~E8)+e>uVPlE)}kmCcP@U9-@0|Vk<$TPPz zBeb`<33Hu)x2y`}0&CRWCZEfvs@B!&D zQNyPmXyf19vT)IMHSrR;z)p>m;!|VG+P|4MShI-43O3J2|7F z3kv!%w7?BxKs_Fij6s%cKp{Xc1*YV@Wbsa_H5c4b78XxI&mA(%P~MQssfP(5<58oM z5scvEgexKdPf?_LoqeIuJoSs6ra z6%_Ux=DZ#RbD%=e*#&fnYAkM}Haq&aRvVUGakq6>eSoee%T z{!@(IfP4^r`79E$!_I|p8c_e<0bk_+?<`&ed|%*l1NsTF;$mZf_8GFOpvLEq7!xtJ z53oRs4Xe$tv7ji{hnzO3CEDEFK*E5k$_n5DLFb=(o50}+sV{utFbc?T7$jJ@d9$E^ ze7tev`t@tquH(mR@Co^heD^wx8`p1;e_8;nuQzYNf64z2vqdJ2OxazWTQbMQ?|*=_ zZl#cRsjfpFrbd)FYWL1p4^`&TA~+Mu*Z_!t_DAeKp`f+C6kaqSkg6etM?$JS9(lMR zEdf&lc62lnVdbI;rR?YwAQhfM##CZN$snIiCVz;1C4V^)xUXrQb%NH-4KX>-*nbW6Eo;Y#**s-I>jvP61`0(LFhYlV* zaNxlH{re9P2Y4S0@{xSG4?Z3^aPSa}!$*!DJ9g~&@#7~>oH~8>?Ah}dE?&HJDgVmV z>o*Hv{xOeUUJ3Ni6weXal~B1cKpQRe4npzESMCpz?7*%Smw+-+S=m%(jm*}JnKNh4 zo`YWRk|mEXed38_PZEE7#meO?R+6!5)l-kgO7czo{p7M`Pb?+l@g+-^ELyl={$umz z&Y3fN*322eDm`i9gz@9Xj>ZEw3pj+pTqlDdIyJX&W9}_!)U}1j{K>IL5v(8Z`D=69|zT$iVEZ^1g>ou4~gFkS{*Dl`9a7kXfPz+0oZwtHVFO4Q7`71QMo038)fy;_DjFu#(8Km*UWdRw=-sP{|1tSWU_HBq2JPO0Oa|_Hw|k6C(o$ zY%G-OhMDsqIvOSoaVnTF1g~HarwenJKvM-%)#_C)Ae)MEMCx!_s^Mg-qDJMv88Ah_ z^;ba+_*T`UL0)YQ_%L<<@>IYeHhIZkfrqXgSaUEp1mwPbYG8VXYB%)tfSrUBA2pQW za08SMk`{mlE;;wTpnddU0O=(XqlXG~LvYwBVY0A-fYngy%)??C9(-}2dQLM%gvw_F#EENa7e$77beE za0A)ARt>NgMk58jMBD?}P#VzV!jmG6(t5+UY(%C2Y+t1Cp5U2L!|N>LK%4BQ24*9?gO0-o2W7*Vj|R&-(0lfR%{l)X z-2X7(<-y1Q+u;A-|N37)>(N#4%IrsX;=M73_ptE}>JjLVp2+iPc%PO!j$G6f{`=wh z-;Dq8kN)j&{bz>z|2*)n9{q89{@3vzzw@6PwEvbt|M!FT?_cYG;pcjPIF0`AzxAIT z{~uqTi6#pWTUhFQzvlD&!x<72gy5QLH$6y}Qh{)wS4N@4o9^>=rmHZEu);^esbo)zLlt z&WbjDYiDah`^L_bJ!kuSH4DraT?bfa#rKu3MhKHKNA4a|KGAR5xET>M6K0N@{^OLt zC%!vAVf5szinM9T6XH4|Hmc(MUl9wq@jfliE!OW$5r#0mMK`ElXLOhk+rnKR(e^Nk z*st=o2&+Usl2?40B%)aBd%^b|+3$WcmHUD|4^fBJh5s5pE3`Clt^B@##)!3z(-d{D zYT{MzEh)WcDx7$G=`HiE`GxYkKiqroL3PQ~6@r?O`k77Nw9&i%>K!%k`S3N}H^ysb zo{ekIw{NiDvE^D9nA;7X=ta5$O}eIgc>S+O}50_UT`G34!B-*hq-C4a}Jh$zm;oon+iZY z{R!7%`Y0BU|Ab_|pE1B3{Cvb~F~{OpCFP`4r94c2Eb&%sVZ^H7CzMv{0ilgEnps2( zaBa7(G)^0)^?lhkzTUt5`FrPXIj)V(kGs6|a$~;XTHdX5MIV;D07XE$zfi4f+|{vH z9ji??>`mZ+B;Tyk>poQ2;#_T8NN znY*VCP7_Xhd)mI~fiu-JZ8Q64luvtN(r4omvTIVmij{^qpU5rtGX|6Xs#~UwA+^E;jvl- zM%mrK#E6mcH&g%4JTdy%_`fIap3Iu6nHoFo=+x2E7Eb$f+RkZHrk$I5ee&3e`^VLd z`Z04wnmqa4giqpD#?FZCiP;c)D)vH5UiA2=_;5pTQeeOTJF+Ll!+agb#OU$->3GAu zL3gEpN9Vkz-l{(zOuQ|>vj6Oe<5Lb7@Bek5asP*hZsj$ced_9kJL0kvb>Fp#dzTC@ z(54ye##+;Wd6DHU%g5GsTf3veHGyXE8OsXi&f@0_T!Mwd6Z~b|RMt6~#-TDtYpVO^ zcX%2)s-jEJ7nj`qrm*pLTjBdf-`wvk3#fU&(PKGdFLgK_qa9Y;lh!%r zlSZT7q+71**U=5l#;+{LY>zq4I}2TlT(=!g>rrEiHgd4McW38ZsK4FFtjXceL_^~jg0K< zzEPi!SvRI`)XQ1Vr&$vgLpOOa>nqQ423HQSl$9Y)LE2cq_x0#vSol%Ew9T z6TeF6PN+!KCf!fIobq+**wlq7>ZG!SZ{l8x9v_|>{C+@*U%T%;(FuMm_ak;Ga})Cg zri6Ksahy@aptD|Or*O~m&k6G+4`mPi_XU0ytPfon@ml2as86HLN9m&uM?D*r8)*vP z9d;?CGH7AI9lvSPLg7Ac1e51^+V+-_qq)_W(OKV;)9_%eSst&QtmW4dYk+q00fL}F6PB1{Rl z)BnifkLwx#$N24|2S=_`d?-w&KW@G}sOm0lNpH-rKUP23aI|SvYfXDp_p;t2 z>Nf}143}yS>Gj6FmY?h<*IJ)s&O1VjEFy4b*oByTNt4p{kDQ!k&deJ*GW~e+mblQ! z)4`jS7TJfAOrbyTc}^E|tKdIXHu<1_Q&BNEuT{T}Tzxl^qdD%zx?C!a`BW{D>rGR&$kEATi3?BW& zSlQU$M(1Vcjbx`^N%bU$Cr2a|BvvP=;upu9j-Z9el^owi+!D|CmdhG)NA2G>wbzB$ zd{&)YO|L1feZFCK)6$j!5?`-r8)(UFu5Q>|cd6#7>iyNZb)Prw=!_g(W}e~`Bk@=H z#HFV#&q*B@IDUAHU-loVd!kPS9u!G^7Fl);*Y}z__O!LNHn%P8+~4C=e?9cE_C0;M z;f%4_xWbfg3^S#ff3yDM(0aBof8oC?eKO#aP+fF%Vr6P&1}*E!?5WxBXXR%oQWFzS zMM_jNWPIKV_wPn^|JAlPYcont7Cw7z?8U4z2Tx4PJ9x~VH|x~9=bA1nZr;0_Q{t%_ zsGrfgzw?LQ`u;D5lC*ugtwx6BuJv>KC11lQEaAiA|TD3--=1%|lZd2>b z#*?+@s?Jv~sd~I-Uj0kW>FsshrRq~dbF`E69~*dvWW7}zskt-69=bQwH(aE9+WeRE z6GofhcRzN>r!ilqoEte|RQkAwxz9~dPPjMz`?24Q8py00(VD1;*&q6Oz^76-U&?yZ z{ei98_?2#)Mn0S|9H!~fW*ZddA8fN-k+iLh{0QB4#B%HZpPS3zJ9BJU;i#{O1-j7S%7jy5R5mpU>-_t)Edgl{xvD+|S3#Mnz@j zrL9g5jej{x8xp0A^?i}+^2jYuYF702wf3T9-9`S0|~Bt9`TXSmRr* ze{?qv6}a4Po&i8-g|~#>n0lX}JfP_dWS`rnysVAL!|A=-k_u z+A_Jx*7#!6cg-IW8`9L7(XH?9>;9o@S^Lv1cj^bLJ}rCf!TGyy+>X7;yH=8a=u+5) zIp@AVlXuE}V(Ib5V;he?dnEkGq9eRxEAtMVbeW{TTjn@Qi?$~wPb()jUOA#0Z*`g{@zpzj651+v+ zV#l+X%!iCwOdhM5&Ej3=pAyU${wVP9PH?6$f1+)5b=aS^eQ15o`mU|Q@xH6wy^$vH znZTIFdX6(qknLNdd?WnL#GEYuN$NSnOSY~odZuwr-@zT=g7Je{y!RyJ)1JZS zy5gFpbqlIJRf@U^&4FE_!6!|7UG22_Z;tYs(&459B}ln=~HzZ+Zvlz*MD9+vTkOhtxcqU+%VOh z%MbDYE;Ky0A#rKS*C~wT_u_-18$y2w4EO66_wx?0Cec^A=GwWIY2>GG)m#}`I=E}# zr-7#i7Yx0lnX2DqyllPdc-)ifGst{`y@#E}zQ7FiIp~@1+V046Xr0SFa~Wdp8sSb~ zhy0A+O}|63o8mwDGg;r$_B#$(l%{j~)w*|e96ir)(%5L$S-Tt$+^_hIXC2|R^6v3Z z@N2jZ)?IqGGtb1=u=}R8*EH&DKdb(->bvTzwO1M!x4+k`AGVr9J$zU5SJ5oBzwJEu*bbwo|r?cA?`<$Ft6LuB)yn&pWg< zpKln?vI03h+@*XU;aSm#k^rf%%q0CtS}WNp%Htnk-}EVVXFEQz1e-4FPiTWQokO>W zs)iyp=XKGhJ=XKi8?+mYcUfcDU$K@jws}rChAc;o(fSqo-;H;z<2|?7E#j9HCxV}g zxDoYR@zsc^13b z&XxAXR;{_zRAGuWFR|>g{%ZT(e%GOJW;<^?DjdVk2>16i592VmN7O9arA!Du8tNau zGW?m)L#hGg6#1{>pLiT*srzr+UgOKdKlc6Aaknv|dTeQU@y~@93!-kmcynEW-Rp_z-!t_;~~qd4z;_U-p-uH9S|se1LeyUoWLNJBDg_S z8KeoQ_V1RyDO%0-XIynJvPYQTFl^B6)4ryCUl&0B-?dI5{SZ4yIOv<{|7F0BL5Ea1 zs`fyGa-)BTY?<#_(PW`Rutm5)^r|FBmf`=EGA$@H_~(#Gp}ApShqZ)7g5~*xMZ!U0>2>Gw!k0ahd$v{6YQ!-a<|R^C4}r>jT>Z^H0W8hDL+M zSZV3Dhq)8zF^mtHO6C-wSKV8zWxA{C>+NsVAF1ejm~(&i{kn%ASG-*Rbo+9P*;-Hz*ZQPlj^X7MlJ>ADzvg-^Lua>-g|AXSTV%r0EX<5~lhP<}BJzayF z^vf*^9jWdGB)ac%&vosve{NZ6+@bRfI|r`~um+b5T8aPip}yI8)bfQ*=@@jZa;7=E z9Fg{g*4-ppYtrx1&Cu=DUDuB@owQ`wKXJWJdz~R=J8AyHVqE_? z`t2L-vm7?Z3(jtr)N|X@K#Qg)(+|^a78T&F)JSUejqr_S;UHCj%NPI%Hw>& z-zj>{w?Ou+-~0Y?{_XOoWXZl9k)8KCdz#N4_YS)+vAR#{ztB$7bPxZat`_>Iy7>d^XrrDw~3^fm=t0Q}cI(}}Q-4s** za?SjzgB34StS@gaFD%cjc)Mb-++HrJC@f!Av9|JL)!f=;jX$>D?Rvalq3tvFlla^0 z=yKe*ow4|tEV@$7qTvfedxzH&ztCzP;rQ6Ip0S;y=J$wR@lBV9`i1x}@$d61mmibv zkpznhc{%KDK2LjAIXi7XTK+a()A?!o2dsUwyJ;QQS|_&Xn@d}UTL0?c_e}3Usrkf| z=V1GM%Dp9i*YC5yuuxCLq3C~N{)%mic|N*4vMb_1_@=P8!_vZQ!aj_6JaQ$8B159q zM&1cmgxw5IR`CLx6n=_)zs-IL@w zcqaB3#!XL&bCG?V^`vF5Wv7*9zwP+k#q<2-5zzL~dTH;|=F?s$zb4ZHXz$Qmp0OUG z`)%h(_TMcDrl$=vbYr!-+F|W8`mM%v>mJ83&weJCS0L(_9ajzn?~I6#U7Ymeh|43t z%YJ2yYP`<`#YE}E-zFR%zi-U+?CueTafd?v{h#ND(DF>WL2K8F7FokzH8-k$ud1y& zSp7{czroYo)Gp~M@86_ZZ(MAZIv2W!-BaBn*L24-*0;?YjDZHW;dSE(%is23_q#p~ z>`D9)Lbd3$=&)b}??u*Iv;s$#Wt3r|=C{F1{Z(qCS}@=ld{gtMzSs1t?S%7b&r|e; zj5nEgnIExcu*Y%U<#PBr!rh`|$r(wvL@gTTcd!rAH#w3`B}2O2ruH?>f7f@{o~fBp zYp6?VJk)%r^-jmO?&-ZUb$S1jgXW=d-Ff53wmkP?R*ujpn-?@D{8CItf*@I+ye(Om zSP&lf-q78y9nJ2#E!A7Awp1Uh>uP?dbEo>i@C4&RYo%?sZKw4G z(=qMpf%Kk=w$qJ%b+1+bT{*ULuu56mSTAXgZTIiq+t)nso@Sx`Eu+(P(Gp}mVSU54 z#y-h$+p*FW@9C!PVVq>Y!`mfXBl%0(E91!dvJKK2@qNK$-ZSixEIZ>IdG=7&0oE>d zCg*uh5&IR^B&L)87Om6sx2N2bKrdiE$KetGZBRa5`D@VI!Mj4f3Mo+S4&3TL%Qu~W zgVE zV*{sgOw-Jk)b@#8k?Ne`PJ`I?o;!uHl(Uc@Ag+^c_WM?OAgD9sr|@s1SaGWpgh@Hc zlTw0G)+Z+-d`e z4^G{VxVGU^zP;H8sor6s zRWbY7o4K9bot)XM&lx`St*#sPZ5E4hwEiXp%eD4XmRKw54e@tDb zmrRMqcl1B&Dl`v=kCVuHp7x|Z$CPee(ZEBmmV?%dn|38|ACX3yNUe5C4pA*)RnEWx( zSwR4g&06Gh&GU(CxpR^8kZXa*;4{c^i{A3vud0mtAnE&zGoyaWO`5`(UN$3l=Hcm$ zQ;KspjLJzHAG>7E$AG&D!sX}E0*qB+@HM9ckbfuDr#h*%kw8GR$F zFk*Aq_aQS>Uj!}*_*FSIfETC;`duXr{v|jm_#IVL(C^B9er#!`XgN24A#;~mHtByE zic=4DkM1hyEbBhrCm#+rFFh#QS%3l3mWe>#x);p-QE6O=TF^V_BhF}PkS%)F6x`BKGFZe z&_>N9{U%eYP39tAF7qi)ir|(wU4Bie2ss{=nfP`3j#0NKBu$?)=h^vxEL^?Fvmkzc z&zuP}PEHCMo1Hl>b)5pJ`jxmEZT`kY0D$bjZ5H{xPx8=k23x zht0PQ&uY^L|LTqF9N8kMkFMTXQCW7eyrAlG!*`t_!$tNPycq$Fu^UI8%x#-~Y3`&2 z-3vy|e`{{+tg@+blYSk)er&|(KXR1W^_kO0TGB)#zE6HDVSen3QRl-|Ap?QumEZcs zNVkg~@;+x@^O@)w>*U#Hn(rB|>qB&BwOcfm!wZJA14i||-lFbhUCgfOT}Qjkz1o2< zw6W$doFc|3?l|G!;yQ7+a22=GXOiQPeq{fz9W9NDnw;{jC8ZBeKbTSSZJDe}U%Rd8 z#g1Ejhcq#kG*2;my<~$jBCICnizL>F&FP|y_tJ7x=<(aas{@Wow5(X?T>S*~$L-U} z&yiG=mToQSFF9LUR+e1hU-d`z%G&*P%7*V6qncbz70nSXX{~o!i`)Kbzt(ZKOV+cZ z*GK(B|5Jkj!$R#=z1zSsO);-E=b4rmb@~!*#p9+qk+=xDlcwH+Fk=8d7&!B>X%4RsH@HCkPzVX^5K5(zG{OtXALqTz*Bnf;*C zN@9wsya4g%vd0vw0&l362KTBKs_Fwj4_Ko-qR3Ll2L2edFL+j{GxSF2K(Hb31;u3P zIH8imWo-6rb7>q49m|}(uKS)hd=9aj_%|dGirFDMquI%4GIB;;9ea5Ey74Vz2D5qT z8xzMwiBxWRgK!u7dHNX_(~)EM*fp*^dM~?BxLvLd`YvKw{Hau0R^6!lv8TrG%6%($ z&bYkMrPzKG`I0!^oAlAvv|)PJGY#*QKU+M%@b!W(Zk{PPS=e)LO$oQEyMA8ls;*De z7l%(7p0iGIZX-KQ!*1n85?{CRW-}%x*9T?H?(f+7~egkPc%?7l%QR#f821# zaNAI*U#`;*&mMTar?l<2#)_)vO0)0HyZz6N)N6xRbFS|xD8EZ9QC72>MLn+%=UDD| z5;!MB3G$Cf6s--C2Q61_l0PN-lf$8#?75~tw30zbFRyDv+w7*^T1MsilHq&3h0||2 zZc1+bT=>hqKT40)yw}p&lQVqTbe8NTK5wDqN&lLll<(X$V*Q`j%FkFvM2b2*v3I>88uN2Uz88QdFjCw5O_RZ3ub zM@D>RP*z0d-H~H5K1(yEq$X{T7seclm=Ss@C^4YIzem1O_LVe6I$Qd!^t|+{>^u2e zew}{Z{s$E^mHPvB2Xce{4qB<&s5+@CCBK?gH&kcH+>Zfv==IWs<+Wh5L{<^l|W^bXjII?_0jl1#f_Ui6J z_5Q(^hnJAJZj;8MnWhcVoz#DAdfXP~ZeU3H%Y0u`>{kiH-VJw$i9_ZqKlEjDfAoy8 z{G-{gezx1yq3zh$b)fHsp=S+)*0r8bS-yfCNrBAYf0g1hh0(vnuT?fm`i?{_enq@S zQX>7(e`1g@>{H@dolMx8xFXRIua0>tVnMJ@F-@8yyvuoyd7U0Yd)HI%Sxus)*))OY z4QHsW!6?(b-*>ycx#8E!wGWTq{k_0&t>Mb=SEgS*a6R*uZ_&U*W!3zK!L|jxyN3)0 zmi-~^7fz^npI?5^`iRxB*Ao|~MyI`zJ~ll#tsrH3(&6|OF;^pg4LKU{w7g$f%>Kor zvQ06ZA0FtRuI}#Z>9-EC^gAp*ZWE)MH$n2OU!}4p$S>F(JUzHW#SThS?v!tpj1^2~ z+i7zg8%KIl`>5u%>h7was&-TztM0CuTrX~V(DFvdrrx=OiMmkp z5r>;j=MIUVBCGeWa8Yb@Vtg_?H6e9cYGg`U^5LX{#QX$xd_w$lafz{4qt8aN!{bBF z1WgJ!>fbIOAxrRW5&b0?&&_0R_FS~L8P{tv)ru}j+sjSY>L06<)D_p>tNW?pndZ#4 z!p^6AKOLyjEHeIPbvgf`-)5fW<_n7@XJkWuuPAORc#7}+=1Dce0*=F{(8aXrOuok5 zhG^3w%a@L8p4-g1yk23b?*Dk(?gGkCkql zW^1tKS~*sa<+e4(UhI&$ne+%IpHsm5Rj^PvSy(4<^V9hgcr&?n_Ag8~eWXX{5L(|d z8nn!zR`rx#|L!SW+q+J6kLjx(n4@(Wr`oIB2A?-rud+X3S21n$hpxA6Y34r+=kyuI z7V|RaWX5vA+wzx!6)}D(fte%6te9|Y%I@j0v-)QroHKc@drrpe?is1mzMu5N_&uXF zSzl!=PPHZe6zhx#4t~;~A+BM4>%3xk(7(QOT=Sax$l5)%ISuZXpSnGRnWkR%C~l8$ zLg3~wezZNdId)w1FJWB)D}0^okixOHsqdT0^C|H2cBz zd#s|BMVa?YOKYp=Hox2b%FukH)4JR_!A0JsJ;1WfSgAXuU9EdyD72J2{TV-U=ZFqV z&GNhQb<#Xh7I&4;Sm#7DOQ#y@P|MUseY4cke%e6Uz^?=9{!i2iy_>u4w*T51()>eX zUPDL&tD&LcpGH%Yu4O@cf9LLAb3aG(w&9A|-~Rgl;OH!)+StD?9Cvpkgamh|(9!}e zP@$zpU2fgo?bf}$b$54H>ZMdD?jC_CarflS|6S+%%&ar#?7g40=C{VX7LW*<3H|{d z1K9{U4~c|kz~T@iP{S}f>{gr@C&c2=DA-(p!KpEIs~^c?#hIPqZP_h1n-xt-&6Aqz zo2#0enzy%b+hpx6oqL6=C7+~El}(yoh9;}RZ2?9jXA?g$hw>|rCROrDPn+c$j`Ubyo7ugtf81qUaIlLkswc zyqus4rh+<=cpE(f!tgd(PwUPqanku>op775TRca4OLbF!+g9Lv3a!FkrEFqP2+0d) z#sCu5B}JqtQtZhEiH~B3Mhf_NHkmRBdl>c<0Cy{_c+(yoO0!-?Q@obe^e`p+MHK-~ z(ux-JoR$slyQKSI0^5^aCp{BCh{Xr=TBzVZQV31CDW4pgGa_S6{5- z>GtX7>njYm%^2HBr`+=q-~r!(3(!w-DnbXTp4>#{kh6(e+$GF=WGMV8bTqUE+6*Hh zpQ10|CK9PsDB}$q5?sJv81_6OHaao(MC`=a!_n0d(V@4vJDAZ_Cm|mfg}s4$O61T= zIW>ZNF_e_t%n{k22JIcRA$wpZCgo&IZYYgYOAf;1KuJEUeY1IhzDwiiL-ysWQdP55 z_f;9Ht4f5Dq8KYfO07LpdOk^zJEUKBK9OXo;fAR91IU+qCwo* ztQJZkz7eq<^w>jkJTqT2B(r0|e1pzxCOy%%I^MT06+ z)2FkWrr1w<2;d<|5MdiFgmZ)!5xPIDIQ&!C_0Va8F(DIq)!gG;1$T6CHg8NwLP%-| zCwLS4DD5x46&~q-W}B|vBP$gO+p3$o8d@7t8e^MBwB>ctB=2R@`xfa(n1|ZPPLzAO zo95Z>x#4N>lKr{Bn~=ZoH1u}dQNkYLHo|D!N8~E-O?Q{+sWMY|x$%6(fN%PDxi2<7 zx&8?GnD~tT+V^33nZ0sv^J5`VFQw!7GsAw;E%1kd>F_dC3JytpNIpxQN2Aft(LPi6Q=H^j@*#301w|c2 z+e}|TFQ?6>q!8e!P2gefFJ_izh3u4gST~_-dlyakTpElu1emkaFv+mmu+xY$ zA2Po)KQ`x@h8iAdSN2_zAL%(HeAt=SPG~RgINNRLq4kkW5cf66QS3+xjAiCb4~pj; zV8&9v5}siA$hELC$RP+0dJXyqCP0)R7>EwoU`QKagy*S!nYm53U9D8Uk@w2NWH)3A z`2yuj)pE^P-7^E(yu&)ik?ZF88i4gs3vxeh0Y%Nc7c33MN9*DTCPk&JNjaM=OPCtB zCHhNvJKxWp#-2zoAVUcMVrC)7z!$;9&@J#J)FvYh?;GMi?-ke|+Cyh0f zuBCL5Z;~z4C5->rQ-kvbiQ%6k{*CAgE9L(P!ZVb_7wE4LoPUM$viYhmr0<2)DNJcU z-1MOCK$WI~@MpvC(%)+;W>(*6khCokN2uN#vs|A*I#dnu3%!GVDENBFbUr{Znhy<$ z3HEUk*dv%MhLXONK9gQaPi5So|3jlwKaghN2VssN)~*e;0Z7`bQ`1@3<>0#66gr{5d;Ty4xNO}!DZmT62!y?(i2iHIW(}# zTS)VWU4$|Ch1mUQ6tWoR0^0#}U#xqJLtqn{yNx#u9{ptfUOmmQ*7(}2ux@mWb07Cb zf+oT)qKfeh$_4rm_8RUt-b%iY@8GwF6!S>jfE{&mV8Kca`_0 zdxZ0V^_QVieM?T1#B>d7{nlh|Xs$oh;A-64e5?)8#TToj`&9qwW?J%GYJVE^BI+An zLq0$|#vIOKvpCFrdM9NIi9=xEo?upC>=+JK8t8fj&VW0Q2N5y}g9&E>L`5gxrd*+> z1ZHp$gTkE3e8t+$wsD4VBYCU&OG4*`-3-HobqWrLgmRCta;Yf%aD)mt&<(Zb>Q||6 zsop9zDx5aKG||4sw;$RcZNlFt6_6do@3>GD8oI$>=h|+oGQBfg(a+LD^(NhG?H~=X z@4MoKRNG?_UlK2o%nhWqB$YwiWMVmT%~C4@pND62yLUbE^qB?O>2MNQPsJm zQ{AcPXbU8bnwE>rtC}JkS2n2Ye6^t3q*t%KujK-8^L(4yHq>l3)&pIQ! zGP?QQYr1!LE4rmZnuOCkK`!a*XIN>~xWS;A2qX45c??6%Y33orOi|qUyyUOx@+{N9 z^SS&XhYF?@!iVlItSF%8-^sHNv}G+wlO;q%(?kE|j$^7R*+d?0Iyw&d3{HYsApe1% z0QrD$|5on?&qvo0r^<2MG28jab=VsPw8BELKPWdj??Xq%*b`Z4as6)eTaoc4^<5%6 zwm5tuZwNb?dJ3P0E`ZMh_W-i}FhAK}2OxmoLPsK0s5{tEgbySzMMRxKpUcQ%UEwSV z?&W`u7$3VW$(f!yU}#R*knaU$g-;6W^C#s^9(bxBHF-nKnNUN}Q#y~xMPGv|{d=50 zO}ErSDNRUf-CkE*IrO*h$DT51S^5vx&kKJwwWTe;g%HI%{TheE-v^t9i6smnwGb~7 z{=uF@><1a$&n+q162%Acw$9|%Cry=&6^*Z(3vIeyG=eT%$e(s^Pcym z_$&P_{uTavzD|$c1#*O19~f2IICYWADKAy5Q611^86Vh|de4Hrh(z2z(lF{}`VV?G zeK++d=_j6#AtF|RrM^7Z=D@V6^is_NwV;o#s!$*mb7gR;S~5~p*nO)bq>a#GX&Tb> zr|C<}$M#3vTYLH`2WzWLnGUGe3Rnd8K!RXXpiIaiP#&Pbcidg$%yqczowh>zH~Uma zwzI;?aB-bC>=UdgQnPJeUrzlCF!fV0` zLUnw8Ah)jMbhDzEarEod9LiVnB2qcwF%E_Cz$ZXj{IlGrZ9S$_dZu=&rdHFbn`&yb zsoW=lC*h;9_emLy(VU&U3xeqI!x6s7s>s}klCZK6YfujBCG90Sg4Be@f1`X!?V2xqK(q5Cl5?R@pAZnzAFhVB9l^#{8b+6)GFA614BJ!t=@`EdQtn$^`+RpnL3s+$Apa%uhP z#@yx!Z8y5Id#uX6h7{*Nz=KFXUPZn|ole<9Jd25gy#chjs%&wVVWtezJhRo3ZI?Qt zU0d8s++*AnccClMDR545j&M?4Ku?74b09N4hs{Th$Hd~d62Awo^MjtmOlB7bm2ug; z0U=95xcs4fMTjM29zRR4O0ZLa6Zk{c^29-S_Axq=oQV5^$OE@|%N_SEvyEr;srq=s zI1|K{=9=f{K;9zqFeLms!Zku3{y4^rsE4EhhPeCNE}H22A`PamMEOv`lHZond*?}b zqP1Na9g_lnlh*R8Mo_;4B{$RT(W-IZ9GHZJo-|Azjytbv&`(kqkG65d1~41d9Y z#NEQ)$CyT?l7``bpyLn>C>xaGCk18=?YwH&TSu4~#!>n!n()4His7=Ho*CkkLPYoe zu037N-J3*bdtS;1sRtTF)_|J()CFc{b z;=t&?@U!5RzDQ?3^C7KPsgj=P+1{h?)yq$)%MDWNcvqBf0U#Gh2d?uk@^-t*9W47c z+i&X|>tCza;xM@a@-Ja3XLGq=_LwyG{+qEOLH0=%bbJaM- zY}t_BNs^f&gorJ|i}QP)%8vF`7(yM*fWOH9NLE(1028w-sUpKNU{J1o$lSv6p}b*R zhHfpmllLpTGb2CwP|TB1I`=r^8|fjo7}*q1i!JUD+cLxGz8%s+k)mUL>*AKTE!pks zyVv&)?W;6aItzeJ@ZZ=M#Mk7~fYQt+M&ew^YtRWmyBFdXIKMiEIzPL6{XWPu)Jg)L zHkti6_#8h`KoGp9v*azqi28TbOyx-cZ85a--cg}lEmze`!``=;-3U`LR;+C zsGP9jyko4Hls&j2Br&i{=R8y05Vz5t>azog5ITG+Y7hE6W&lQjo`!q``vyJ%IN|-z zb;@zdPPM_^!0kc8>Q#1vH z4#@!j2F?L)0rm$S1RsU`f{LMN=u)uQFL5ume=~kjkC7jf9Pe)J7~SS=scnAMl+xH! zpI3LiCZ~F3)t#!<)uU?<*Mpj#wAOZrx|1XWdef!DWhnU_`8!2{YJr-eJ8bH+H+%Kq zae+SeQ02@kYz!xq9Uykne9R8WSGUt7Qcdic-r3S(XnfhQw9(b1X+6+s5Dk>>Qy$PP zG_Wjmhu<~EmkJyJ`3U=tSc7_nq$2C#pP+!iQ?B(^x&+Q_`wVM+AZ7p5KhXB5zp7>` zcPbsqZG8*1MaJzmw1)${1iOYlj;|vPrzBI0skf*~N*0wydqls@1P29&oCu#Cdo?*T zbKRh_{Bt9=jJ{jKn-o7~$&_J}J0^g}of)-YSj}L_pz_STv=K@Dk&VSB@ zvYTk{Ne6LjP(`ro!2i7coIJ}wJwn~22$P-fEs>s*-|oX1>{g3=H}C`8Th{wfdO$uw^-+CQ_s6)?(q>O^ zpZ9S=haltNyHHm#D{v_UH(@ccg7`R4k;Ga8jd+GIn$Vx{8Gj0I#g$_xVkjsr3=972 zqq@#oLiI!Y9!mLQcjw?XcXL=%VbiLnh0W_*OWTijq5^sGZ};SGU+1t6bKB^)^R2C| z7uyzfgms-0O2xUoQ)HtRH*b z;$||AVhFqs2c;swQ4(Wz5x_!`x_I z2`?uY#I0qIV$P$1DUXTk@%?dYuv;*_=soBUC=YTeax-E+d@ig6Iu()#TJ4|Y$#yna zIi}OPZ1q}Yn+zxI>-o{s*Hb0c$XBU$Xxe& zsr7>pca) zIM_233vVFusrwiv_8V?d2uyG)G$-spAniQhE#Z{Vw-e`}DnN7G1FduPd(@T6%ZhD^ zL8|xaIvvV1(00ff>4E#c_)UO~!0SLFC@AF;pt@7S+16-E^9ob`S)zl~&dm6e4?I)WbHpJCgt2?V7 zS6gb#b;8ESEhpOhb=3>si&G>;;$uQe=fu{{jlNn^&G%|eZC#_GeVb%(Uyx;@7Y8lG zaEUW1AE*lIAS#XWjdV9KHT&?1xX+k(C=r|o-3)r{Pxh{H7rDf)2cA#O?auC!cXoHB2%X~Q-kEZemuvc|=k%%i zwrFI!6!US%dEZm$Tl5R!W7>Y!LQV}QnmvvgN}EHTLHLN7yWmkIJdQ_5WJzIN*_YCSCCC!%A$-)(XltxvX zxWc?{2SLG$K}o>v{`KBqH`fWZyDU-WL}Q%}tJ$L@%jQW6yXUp-YM#;Xp*E~0 zvbwhFUR8eegX-lql-h;059)R_tZFK4DQW-ODG*5{9liOoZ?d3(O8l18iPD8fx*m5j zx`4vJ;+MTm3bDFK|IoC>`qaK5K)e^-v%C~vy`KiEg4p0O=nJ?D#O;(U`VQtQb~$G} zw}dy8KRMJ8{$JGNnEvt5#9c{<(dMuTAx`#KdLfB`TZgKG?}HV=7Q!DP zWteh83}r3-J2R8rz~-@%8CNM22>sC+u))A*9-tFqBUs*;;?0*VLu~^c<<4#HAn#dk zrVkTHi4Y&qj{>d-?}m*)5%3Gi1o~-K6K4oFB^Vwo4%*1Uvoo2G=-+7%Y0GFrS_Y$l zS<1S@&Iz(}1-xFKC}cmsi!TXqL|Mqj;84zb29d15v_Mb#bha`26UvyLn65o7CmZJ1 z9;&)piK=o}C)abD4|D(}>54R6uyute4V;Y3!wV=-hLnAu>)`F>pWy@f@?a->3Y|@4 zqEbN5UFXb5ZIH5~cWuwK9-QozQled8+2MW*ibnS0=wuC5K-UDa^hL6fpusLfd0-y! z9H7n@3efo>-i38H&T)# zU99+5RoeHW@1<&ra)`W3>gWlVM2kyAdqg8eTSaxESE37|G2;8;DoJSXRaud0p?0T{ zX*=uM<_iTb0Plqih9rRZ0^9tuk+6ZlmlJht*}D~DXKqKi7O|Z zCmo}_r|zL|V|v&n!D9vUBL9tjnYcd{lCh`XgiJ=io9RDOmLxunl|UeB4*#9AbTBT&M-9Cd$4_ zVnh?VKXy&)P802yj0LabXdHvcc9|EdZFQf^_X*t$L$&7-f5Q^U#LT*)b7fb6^)kq z`i8A7qdO1wTvEN!zc5RzGpt3XC@n@YUOb@VL$jvgK*PC!^CCKy2@m#IWy=)V%0gwY zV!EP3?v$GqB-OdTt7@WlkS<9-M?YVGR%g(LXn&}C``Y`+>Zj_x+F<=!Bf@goHpDf+ zcLB5zUW}-;+ex>%$DC~DKGbz)Ou21=r;E1XeRB<4*t++JAR#2t)S0IhyY!|H) ztjn!~Z6j>=YzA9|s2TPaeU31n3S`|50)^bY6`X#KB#P1WH) z4L?iEu|KE&N~(BRMXx{9yr}~wTG3N1i&5NC=Bk2KkCb>7vu}=uX?Sm$>DmqGfF)pD zco3N&>j4O;vW2t$g6%^33V(&8leLyYnC2#<+)Su^F@49QBXc=$3 zs*BQ;^l?j?9313H$%@48OmBr z-$2phSEDoGcfpGQlf9|#FU~QJ&-M=c9EZ&@#dXf}&Nn;26c%J0E|k29QOfBF2@5|S zJu;q}9F)fE2ksw}Z5@crNyuHD6ESGXfN`11)K>|EqQ{4R3=-0A;ZGn=0ggH*8j*dA zd#-i?+juP_nt!#}JBCW4l`9PfCkf2Q+@%z;hlJFIzKm#z{1}xM)i0_kVrls9&=P)9 z@Ei6Kx}5w6FGr6?Y=?@$D?kF!p+LTw3oe87hc1Vmfqy|fL-nH1Vdvv{#Pg(~ln`1Q zUCo@pnae%Go5QyXK7@`7>k3s0HuBlL>>yuYCkB%*~7l{>mbWs z^GNeGGs}9(e$Bbgg9cE+`=LCt?i{6cSg8^XHqPL@0pvmats2wN+VhlV1HVOg; zUjZHk?f?ovOo$h{7I_mpnY5fy#8nEmNBxR7B^RWB>~|q+aaMemtly-JrD-cuUL?Iq ze3URXzAv^c`f~Uy-X_LYTq9_|?N?up=tFaCEw$2D@%FE|dS1ibmP;Kcg-sH;^o#6+ ze5~?ufW-eZ66`GRc<^0hI$;E@leLC>J!Gc96AB0)6mc;U9~~YuJT@V&AZ}6Iqu3A8 z8zV=CEehEXl*JlFW0CUk5bQ|wd6WvZA6< z(rPH*iMwzJOdH}fG#Pvb_#dFrf6g!PUqYh(JdmG9+)A0ydsP1hHk_cODN+Xi~N%Gb0V2=!%*qDB#3W$+$w;4&MsfMBO7#w@*Y0J7!t!Peff_$^$mvXYouF6;6)b#1*8oMna&I->>;2!8m z1Q-1T(~6bhPT_;`RoGHA7})|X08a5duuV1iRZDs^yUSV)ji>8g)oiJqRzIql*14c( zrh1qa02q!QLOsq+jWEU?O-av~pP7|mE43i;W%P{D(?NdfQ7jS)@pPF?%5%b_ z&DSf7%A!7ucvj{8a7&)=kCQT<0~njz_M*0Vz9}W!$HN z_Ywa_ua2=qAC1I^HU*ck9#anE)6i$&GohcsQz0Xv!(mnMS;&DX0eU2wiJFNBhVj8- zzr!=g72%j|dt*(s-L>y=j&oOg&Hj_X4DbPn1#$=)1gnSsPuI$Uxjv=ypru-OIgs;x zoqt-kHE3%NR&K1=^?UHI_HuFg-JidHCsnO$=;@%!P8orI5Vn)WjO>`2^mI5jTHl#&8o~`s zgV`|IWH85Ck62ck==zktJH5%>#jV%twber^cUJDII#qM7VLf>oHjr61$kUBeXhvQG_SrLquBmlF%AHD`Y0Gnmdd;fqOUTC}(|u2Zu4TsBJ_J zwiSK|w8zt8J7|2aS)r6jy*)Q27|9y(BXOmuzi>zAo7S<7*K0Tx3xE9jvg~7CDX+BY z!88rQsGk~t*_`fn|2ohThz^W0{;{lodCc$km6rOJw!M->^;k=WR}RHv`$+R>cNoo#rF0f` zXF#`8F~P|Bu$7Q|K(fExGuCy~fw2`^%1mL#_4;YLB2ANutQ;x(*wZWO?oRENbt$^P ziGK7vm;a|;YP@0p=p6?!q9&4VGE+ksQO?A=er-8TL)R8JmgG+@n)!a#tl76_X=lut z(lCxtRGvrAY>AHvi(n5W&&ONpOrTv!6<=qZi2JgXylk1s7gNKB&BXKdNSYGUz==TwW z`4rAyDiZe!CiSH{SSE^gg)(1O+H*y`Q}j|eN;pY)Ry0)dJU|i)`=;rJn1Hs$&JCUw zehF|MGy-`a^O#Ua8NztWdc(G`Z!-^56?hgh71-doX;`nS>v`Fo-R^9j*Z8fzvF=*! zq1th^@wE?Y*>&gZD;pQI(XSyrJM}_BTa=k!$%+j0qSC7~?@@R3Ug@^AO=;QI{HNu0TT|y4 z@nzZNz7YnZ?YP?tz`{15M-W_;m(1Hi#*j&2y2#5hYvQ8fixP&$PmDbnl@vCYSIk;S z9*>EEl6(%^SmSujWu;fPSeh=am%`;;io>e2>Y>^mU9}FSpR9kPhZ!mi4^0`?T*oud zYS2<-B~iq_8IhXOHxM+uW8Awb;u#ZXb7M9{U?62JLhOBDW~;Hi z2fK!~#x>T}{jN=||K1qi1`&o!ZGBqfVrQbi6*3cf3j@Hr@X>f1_9dzTRt8jimfDrZ z!#2`6H zGuIgGX!4aqCZOixb>v(|D*Gju6ao;0hs}z371bE~J|QyMm%>lWNV}8rHPIat7G59x zjj@ZEit>X|KC;tktuoaZrW%eJdW=~Xto@XW?AL*;u#+etPJ`c1Y$J9O%L(`KmAH{O zDBcvHjVAIxv@=WxYXXPJ$zg4vcaXMV_rZ?%>+B_lC#u50(zdl9Y1!9wxAAL3NW+ze zJ&onfpV}B*|41;3q1qn-P3Q+*g2m9_+=pRLWA7)IW~}Z1VbIOIG5MfE#;~Wu9t@j0 z^j`k9ykptY^cxBO@LcXN>T!%2lVgwPZ9MY@|0eHCMEex;YZEjH*1N3h$evidSrw?iPRS+S7im`FBG?eS2+G z?cmzqfr8bQ*8Qq8*A1vYThDCR+PI{7UE9;HPm(yLRG;n$I4)u=@gDOVZ+7_0Xh;0X zq1*wt|!S-v{e*rev@0cQ^TJEFgRbx0^nbSb{zR zO$JPGyKS|mf%>=VNTp8tNkS3M=xA$^HiXoIsxDT{sn}i7T^V0XXo_inExak^t1bGw zmYa@qo+RKDXn#~JVF^vgk?@6)koeI_x>QX1-$3aDGY3g(i*-b<5FlFb|vp8VkAz{0htgJpi2p4FJnQmqFh_ zDDVr=9?(H>1UL>n2>clI3efD`;4C$FXx>SEok6xlvn*eitwvJ=?V0hk1Th2avvP~w>?&L*BoK#Uw8yCC64 z^6bZ9dfep*gPQK}%8V#x`W9fi#63r3OO+hW9DRo= z)%wc5(7DRB#|3uvI#)RRJNGzOxOg6r?-AfTXe_ipq7(fSZzCULt_}_g9}>4Mb$iym zLD%xEgC%*sLA)$R@`b1uyc2XaZUbT`xEP@H_W{0uI-$X+*VqFD1nD(7g8DD@0M$+% zN}tAPVlp|^+)CbMzE;pJc+KAzGB8-p>1M5G;Au(Zn}i>@F_``+4SXH66g1Y4_H;QO z*ltsT#13yZZatvc&Q)0Rlk%8uKgS*TJ8im0e1nTfVIFS zzye?wa3c^6Dh(6?tOt*UI-r?w7(#^9psl#5i*f?p4-I9XQ}CT zsDsJB33>Q~xJsN1H;G^+7E@f*NcwcTkJd|xB+kdMU{igi0jkcBe-bve9c)_GaJ@di zadXSrj@zPMX`iZ4H_=El->{&p)s~Uw2gU`u+kG1q#@^3jxG=G+wc}NLXZ!8;SMApJ zO&y0j7Ip0G$m|U33Kf19<7BO><@)Q^TK8^X2P_X$PH3YHWr~Ad^PflTjk}Y=&64Mo z6cmie9px>~E`C}RKXg+rJL`24FRG4Lz+{oMnDg-6;C23SZoYktX_*$RjOf(~Z+Bul z4s>*Njub(pAC+;s-=-tB>CS_$4A*i;nRSfmwC=O2T>3+_rQ>;1L2dTmn)3T!kA1xS zKJD#;H{iG9-oO2XEkjkTs;_Ln)#Fkhw!ZbMp>Hs`q>=P*ta6ScD3?2pyFW<6*}=|Y z*%^`aAnHLNPq(T22@{bvW%0HBUWJ{YQ=0G-#e_XX-li62o6puyvE& z>^$PR?>*to@RqrcI@IQTU5QfA)7DkccBe_#@U`J`V|#N@JE9vdnJpu!nlz{MuZ&a+ z!9Lz~!CL}44!?_gMq3@Mh)76mO>Z5b&HbB?8lEtcIA-1Wixat1q|?sN9QV(inIC5~ zPm7t-H1So*)bTyz{*F5^-c+KQuyNvqi7!f^<9Nl`;hzS}vu)|(gnm&qd<-X-D#Sg5 zKL_+WYfV-C5T9xUsOlx`tOhxaw@>f0e_kmQ@pLE9;C6cbdp8u9iQohg-L{ z3~PSc_`ZI0ZCmxWs!>(M>de}2^}rTO$6iUd(q>3>mH{WAKqNimI`R~Rb-9KJhr za)>L)$%NC!kVfL{i*Q zA6Y-Wzgd-6YQvjjx_0;WQ*SnhxGO=|P!{|ws*U-EdsaY;oECd7X?MD!|IA!a;p(Ct zW3Us(Pex74oc?wCtZ9%bnyehvYC#`>Qx+rmV%%gBmNK6ohd4SqXA`oK< zj|sDhyT}dHZ;ah+aZnJiCnQKv!;cOjapy5#k!n$MfQ`1XYKADR(fzyTi{jncS94x$ zerbC{{V^+3aKtKIbzK!Pnp zmlGyai&@oNIsbI{)u`&sy<4@1tTzPKTe@pk@*%iNI z{Lacfu0wIB^q1owsNd9ozgD%pwMFzsK0xEq>rGyZ**3tj#i4R+c7AuZIOjRl&SKYk z*GW&UF9-B5Y#4@4-o$DSNs0Urr%dWiwWPnz7?sXTBc<#}WXG#x4n}PX{~|ceqXm6s z{-mxYF2lwlPeXqL|N12EL?^-i+%nXB-t@zmY4VxITa>nej;$`6r@=Q3Km@VCxsXO^ zE8Kxtfu4YUg8xAbC$FV+Qr=Q@~kJtuP)jR+)xd!fkIHba%1$nQw!?#{b2?%fH>v^QZau`0oPz zfEmE$fE+*A>vCOmY_-d6etUv@nO_Md;HJ}_b2o%{2ex8H%F&d5Nv_y^5o1CcSuRQ; z-hoCT)8RW|gJ34u&44eBMVvzpj4=iG8ZKiMu0`zX!6JUn7+_BQyVG)Zb*}AQ^YW&a#=}i(TaL8Dh1Q;L%5L3Si`lu& zHw63yE<~>+oTo;xO}teRm*R${JkIcB3bSmP4e5+=x-|A5aXW9`q0>18fTPjSjpH`~-9YZ9pLC zKH#wLkcaIovbGooY3y>fWPJC#wi!)D_29Y{b@S_4O=sGk317%&YyVh)9wo>Icc9yF zI|x;TF@XdF#q34RL#%<%g58FWh4zCAp|4m7u`=? zYA4Q#aa37Po3|U@XlAJ%%K!GpNE{-%c(mldUWFX3KBcEyF9$ks0mOn?;Bm-RNHAg( zi~{)pg!o5#2(AH+k+yCN*upj6G|e&TO@qzjE!}}iupY32?e`szTqf@s;Cfgi`T=nd zeH^EfH!8F-d}U-!khtsynUMevqR`C@oe$c z0j`7T@HMDsSQM$2*2flwjEdM2w=(5pzZ=<}T+xu${HFY!L-2Vs27T<`l3`B$6qpP~ z!tMCI@s9ZX1aSgBab=He}rWD=k2y400psl%6HTLhRKi7X9DUU8&@wNHWnh#&zOW%!n zzq9n@$3tIuWt?9i+H@0}%z@BouET5-6*v18DV(YF7i@R9Wjh} z2XDn~!J5%bR4Tk1yc{skbH;JW(rH+!z1a6kX_WU@2o?KO12lL&-!#jLaqwJM+)KR| z16$ev_yj^juOa@!bP+C5kFemuc>-=oKr9Ii1QEvfaY9F{={Jk!|x8;R|p=mWKeBpL(08)bd*xS=c<@DC}sE!==tzu zaG6iJ6i{;eBi5p}hdnfzAnS^P1U>fcnREO|_cZoVud=dkxo{CbzbBq>29a zwyNR{i8g@;48p?f$VC_;7LMJ7VWV%N_8})D`=idGM_@nWml7Y5Zj$GaW62pLAn^*} zC?SW~Od3R`GJ@I4psL{Eyi43~Y%}dEApv#49Y#S-M~l(VP({f5uqTiUAS_^*@0w?<>$pR2y(PbHrdOjsA?LrpzWP0*NsnwBLiabIqapTun*edDT(X zuD(pozq)4M2aJx$3MY- zKuv-pz@a{(bD6nCyGOZMdSBevt?RURtm%+;%;_xY`p~^t#Fc#Ry)Hka0%~U){g(BP z^X@wDGJm4~iEokjox9SN<=W(0>2`Qt`)>l{z~>J*+kVpFldPPO~I#h&>dk z4&w>V@?HeZXG@tg=`89w@-HHYK*VBDu>p6i@Xv6Q?Ssu9^boC8-L3wtq3g#Qc@~d# zQ9uPm4uLbpiFW;Uzw+J$PK2FC!-$b|4kw4Vn9mkSL*T)D_DfnF@gwFbq89Rh9Gz7_ zRO{Qtr@MQGnPC{ZyFoxCB<${PJ?61JwjSfy-Q9tOsGy({(%msI1Jm94@&E4k-WTg# z&w76AV(+~kG!78rYIi#Zg>j>_G4FEW z9vJ>xj||>3&KVY(eva~pbY^rmH<13NT%@mJkN3Fm4G&lnQWE|$>THZSHYbi3=NVfY zeLWHrUKCOnSm1ZoOTqij?x0)9&k0h@A><4=5t;&i4jcr`2A%`#bv<&D9CF)y%VE<2 z{aJ0D`irVd6|K3b+iwUmbF3<>Vsx)w*56e>_^Z@`~J7y!#HN3`=~ox-(!mF>Qb@2j&bUj583J@O;5^lMp2xxH#~T}9KwHfq<6 z-lT!lL59d%jFQh+zcK*r`Jg3Zic(=IA*-qv|+Iey#0f_@)`cY$0 zWvFN9AD9lDjChDz%(%nWxN|&rc*pvF^tJo4d~bS3dtP$)XU}6irt}dY*uAK;a51zM z96h>A!(5?`O6z6QCjBn;U3sRYK_n1Z`WkwEj5a!Gm$Ykt_l(|i{nH08i$06j$Yv^` z+ARh@%RI*tP&#}WCWq)v?PAB{Y?Nc15DBCP(g4dtaz>RU5=?j+?iUIS^>R)!mMgkNd;1bQhMJ2S{Oixw zA8gXKp?awzhH|`lD|jJpBXgYB^I%hSb>f?pO=$sXm&crqCq*U%jd*S59HJ8NQAi*( z5;PN#HOdU0pk6Qvwi5B*C?{1S^ATX!HqdkD18bPkqV-n?D9wssr9^dAyTCBZQf`L; zYakyGR!j}y3E4$8&@oITQ%zq@?Ic`5*Ff;jP?KF%Az33_(og7F(ple*?>OFpAMLy& zy{Y}2fg1yWfir!a-rlab&O`0f+X`F3ZF|}V+jX6|o*jKx2aJM8Ltlo7!Wlz|!S#Ya z1B(Q62KNe&iiL8QMrpKKrH&^~e`kyBkU2nqQuRqj6*r60g>Q%Yho*}j4QGk3Nc-jc zRAIWmOibra*a-d;E7<3Jctc`AdSmv9+}50wENI%fI7!GKuQ@CUp#uKR_0n=mpR8G` z;;ZJWo~VnpI}E+1c-vBEKM)LEi2z_qa5&-{@&zi8evBa)M<+<&1W3p$lAF}6g zM4SoSE!>@)59}YTB*p`375P1JDq%G~h~P$qkRzxqw3YNT^dh>1_JUeK$*2578Bb-< zxlAK7-fe^1&(W4Hr-7(9Nau(J#1*916dC=k+fw)a9#qcp3e!JwI*N0VwJHCt*|12x0SW~;RCAsI9us|`@sCPbqF|lOg3^JKg zMzZ3sp#Q)Qf;Kqc*f`csORH6GLpXjqA{@Rpl$oj9ArBhf+>h=AwCEbPKdvm9FbNy_E`G(vD;IL$;|k+sK3Kz1tNT& zyLU1}$RJEQ^p>;9oUZFo?vzcINX2KQ9tw^|W5~ACKzk7X;!cwX8BR9aL*eyA>S@%e_Uh!GJOR-Bm!?4!Y4C+O85?<2c z-T2(K+}oTXRyM7ZP=F4DZgY8CM+~dA|ESlhaB7qGpmC0UKIkp-9bpy?!k*=h^lEj zV!z_eL>}b^6;7K*{Y5S#*wFi6buJ%Eh)$xIBrP1FjVMQsOAg2^@^i|ks{j4tAyIMcVk`)T`@7DvOW+Fw;0%TYfozYl&3|6(tE@hR++^5cU~tfH=O<)ynSj@I?H zuIjro@k&%*8${VY-^(k@Y0AQm6OD1iZH?F*nBpa4`_M%AT+|-u3E(BCkG;uSZ3#8U zn*K4aF!&qZ>Ra^zdZ+HC4x?j_Dn3SaN8vB$%TlF9(igH5iqooz8lbLRw^5g=-K?%r z0Hqs-?+AK(ncc@b7PfI)2`%2u|2D5~5wz;tS9Do=VS_t{L!@t&;aU&lb<1K$7oZV> zLV94o5{Wb%YXLXO!|ZAD`r}pY8Q}4r^NvwQnuPWRcUpYZ^x@)0hP1sCbWWkM1xN07j32WFbIPZ5j~hV-fbU3(Cje3s0A_GV(-K@#SBJA zMqwjoeu#q08;-YkJGRf0^+i`0d44=`Vl1{Pb$*P2ju0kFSfM-#dQqsU2vW zB)BE_u$+S)B~^0f`Nu|Fiif8(jx8RC%J515p3<2xHR@nstH%}E52VGGqbwWv+1yZh z`+N6i{D;7IeeWK9Nd3H`_;T4u<+QqE&8s?~y;TDHaHVXFdV|4WB>>LBFjx)wCo9%t zgKtUD(lAmaF6wE-r_h?f$39zm6InSFAnqDsANZH^v9-k5sWWNDYF=xqbQ}}Jo&)-f zTtb}0l=ANT{S2KD(~-C`^?Js|@t_Hhr|g(nIrqpS*;3d_*y`!4Nvj;o5R1pnqt4hf z@lN*Rv~3B$BV9pwU%iKboy9;?mf?@10$@x~t7Dn{WO!> zl3_PGy#dPr$*vRjKW3`_u(De0J9NLVsSDU~wsmofqB*kpWz+w@5`VJMy>V;9o%$7Z z`L+L6&!`$-zOU?X$=4#whjVXhULJma{n_;Aoi814e}9@(a^rVht+oZ+6D~*<1&c-E z-;$4#_0l0}y?n6>s6&|Y?Gzv%=7~OrizC*O^du^2Jz*I83iTV72=aAKwT#stQl-ek zN0tr^4xH-m?e`GCg#+SSsyU_)E(PK@>784(Co`}s>`BzK*s*a5acg4zW8Or~j$9Rf zA=Eec)M!&Z=HA8N5`Q960PoD#H238_l5+8o^o9yxS_zng2GWQ5o*|sL?o?gok=(QS z@ALig{u;kGqdjF-LQ`Z*u&3XA{%>xXn}W5GJ;{BiXQZDhctWHy7L`Ow*`Df1jZAGx zx)66cA}%nMAHZ0PT?5K9;S}mY_pXqpfN$vchepRQv z3bBPepMA~qi|;i5eE%Td2G4`;PneP9uV^he%s#B6$Ww)9dU9K@)mq9UOV4~=T-fzt z@V)axP+{0tuOEAUcT}HjtZTc~oiuPsI9p;kblgC6jWAOe#VsB)0fXYKeK*@ZCd^m*u*=zuB=b#Gsg_X z1x3Pxe|bOPwo*4>wt{1=eQLBAG=T2xYtF4dShKZyR?VE+O?A-5{N`6J+_o3(z3td` zM%#fFOjAt#j+&K!+^f!4DXM?fhqQj{o;>7~^0kSUL(apXjgZ}tTCfoq@0@6zWAxYF zSA<9j;^V`+hsTWE6BkII%c~S6%4^DH%A?9Y#Vs^hI<>+ywM~pJ= zY_HP+mf%BSXTtvp?+CpYB=ZaR26)WmykmZ$U84k%&J#}I;?Or>D?zjD*9{7#dE}wM z(jC*0+nUnyv}IpAtmnG`DjCqE*}g;8T+vdRG+Uw)GcVVwI1m{C|Dwfsb8CTt}3Vj zZ6rXc|I#a%92V8>G0TnR#cZHw(h?{&gzY#BN(gUGoOnZFY<8g#90T zr%h!&XMJgzVSZ|AGgcWJjenb-n;R`bwq6GbXa!G(*P{qH9x;q^i*|{*mwnKEnP<0; zBw%HzAhJ3(EWwqSlvJ9~64MvHD^SLN$2f<(4IXD^C?^OH^whL^H>zu+YQ9$2*W}gR zY-nzNI;sI;aI6@lVj9Oe&Co8)2Qr=+%!%Lu`Eb60m+Fq-v@k!=CXgo)6c{UV8LS!v zahC4~WT60#3d#!2A4 z^H||Q<^9Kjx_L3iQLV&jcqH~9YAPHLxdAv~?=s1?f2)+zx5G1r+WNQjUhcBC_q7f* zGn@7`GMnBv-)?)}Efhpa#G3QAdPp2jNegi|drJaYVf!O1qqAcl$4TNJCVWUJPMndH zndF}IG4Wc0D6TMOa^&048v(1mj&UAR)}zk@ml(gwXo8gXLv)IvO*|t+frxO1gI4`^U@-F3>pAJP0EfTs!Z$`LMHw8t-*DTgP z)IHIC)Na&ECj^imsh#!a4@PD2z8{I;Yc{88R+rWio4AXEron zFd=xNK0ht@->i3Iza@Fbehf&yJD6FF4Ej>q7OH}BYLrbqDfcMP zD4(gvseh<7v;%Y&qmzkbujX2L+dcpBiT3{(UoqcwIm1)e-%##U(6Z&Sie{F26@u)&nuBi0< z^P>*YvY_kl0gurXrs?>mN-Nkg)w#`8=X&k>=DGj?gQ6f;VQkblY&20v31_ZluXj%$ zCAWz_DZb@C54{(9dh^7r2x>Mi9v%TmwrtQw$?uQU4owpL+rPPQSKqq+{{|8UPYV|e zkCRws(^L@M72_sruImjX6Xi*aWmIrmyjud(!^e&~yEHa4=5oZ*AdQ!ng(pNoI!u>k z;{KU!5p}YPnxCbm2TQ9AuzTwA|NQu3*ZJO+F>#FpBmlB{=Vg{+*)GA zoYJq~8j8|CFZukoXz@4g_q)GE)eoD$_S_WZsd6prz+Tw-v<{BmOXQyt-*i7*F#M}${+=)XIMH6uoZ|CpM0cGtT`yqKs+=Ynu zK?{6~_{H4IZbC-YXfNMPIZf^$O7Z^Kv#2cCSHLUV7~?+8G&x@KL*yDdJ`^yNC>$E4 zwu>@)f z6C*zd^T=)fpRSWDm$?^e!x3KTOLyv$my;mdMFp9gmLmUc6{*LPR;9PZyb zxO#Z0^o3Hdtunr_K5*oX`m7xE6LbZn0agH`fRUi3kREswri>KKn$Cak|0Qg3%$tPN zQsvtun6xJ;9!3^zqd}sF=T! z&!tynU&|Yw@b@I&Nfi^6xd*Zyq?r?35upLmyh*e~ECzDL9%&S5N|YGIZ}}00OIfO3 zp?#}QHO@5MH8ZTawsL!zYbx*-L=Q)!VYu&vR#FA|B4r(ADtRU;nW)7l;r(#P(I&eB zHGp8l1EHlLU%)ko*m~F8ZUE}0s+TB#$W)R&V)<~^aMUn=*gk9)n`LooyWx!eBsd!# zLr!tyd9nkxgt^CjPTZX8J?>#I=<0$9Lc+7#1@?{Kz=y4);AD;)w1~dNTH2=Kk!&?6M4b3MuY;uqQu) zx)J`%vS0qAe@jbnwY4n1xVp&WGqvc-S7XVzpR+5wYsa;ObpJc(62nzr43lkR0cRo0 z5!L8rcpq{u?I07+p3Qy1E9C$5{KxyN&qv=rzlr|O{Mvm>y(fA)-Q(HKbR@YC`wVd% zvJE)KS!3H}$uj*mFP{*DX68+dzNdzpz`#HO$vMldpfsg2=^j^-25E_Ke$+U6^}& zV)>NA(-+Nbn00n`>MYT8*p!OggmK1%%rKSLE5=C-2DskXB+n9E>0@;*Z(Gn}YYJ&v z&=lF+(DJ#R)-CKK3Twq?MVn4%S>$SmsE`Jnm2{A1Vhph$Y#(-+TQh4vvz-2b3Mbd% zr=a)1n7}Qzc!OQFOa>WA7d{v|B3wGWL|h`S+s5EUpcb|-!f@ja=XoI!a+zVQEljpHJQLD}|s`g~co;AdNF^|jLU&n<6k z&*nd#_h{qed(YVgnO~Sc57+WKiNZ8hm}L*>ZzP*=fvRLWI7dC!cwg}&237{$4_+EP zKhVRE=lOxHrVOBuf$mw>Y1T`5qDg`$eQ$fi`*!yG2rdb!VwVi5KBt$PW%f;gec(yZ z(WHm1hCPGgpc&96*hW-4KA*1Oy$DjpUCQvB@_C+knR)fnwfojwS}vKtW!j4D2Z>KY zd_BA=*@#!R_3DcvYA>*DlrZas^}434_Tt_eVT!y^_heMhc*q}46nc9_hJ1sPAL(24IL40mZY54mftB-+qh8aNeKwSrxTdryBlI}sT z-j^Mjt@+JUo3=CsHmA4Nboln}93+Tim17Lw?0djD$Y7k67*3u<=8!`10hm?rE1;Y9 z*QU%-w*D;k5Ec(~^&acl(M{`ybbEA5yYOAKPHDTP)!NK$dfXtXKi1IOsA_rHF{ej6 zU=|jQOqE`i`O0IY5#mN6T#(Q+wTi6?qRgn^Z~} zLz_kGqHdxlQ$CV*6CPo`P_3{|kj6RN7HUp2@bwbiI{k6OC(|2ClMU}A0X703f_8$D z(0^eWh>Pfd@iWK`bZ<_*M}hYazrO=$fyBVW{)>IXy-IlVIYrFhR4i#F?i!kg*bJ=# zodyB`X4f9T3ZM;i8qx$?hzLOH5Iyh~$T`4L+fu_Mb&hPJIC2ClekeVu5*l=NcSsMa zj4+;hixJGiv4R+})KA3m*d6e2V497kPgM90Yx;`YH#e;LbL^Mjcjnjh&nrI_e*F4L zRJ6O;x6DzYuixLXZ(xDsw^nFlLT+GkDE)5xJihwe2oMLcgHHvm4e<5t<4@#}=?e&t z5fY%t8gHO#zAA&21Ii8Bzf8rBtKgl;4BQoB9;t-*8Q(oRK?{HqTaHPf8?S|Hq58$< z)6SW&6#O_wu}4sVBrGcCZ2Zy0zY=D~Iih}qzV-L>EOXmP-ismu158KdMnPtWu)etR zec9XZ=_QVmwLdpjJ!+iVeQ6|5zYTZ*|AUhr*dMcC?BTro(*Scx3wstZ7B?@bnUgi+ z>qKdmBxNXeMc5Djm7V}@IN zEAC4@Kprvf%iMm^{vxt4GN{cJW{)>-FdWqjbXxsr-!c)bMEk#vHLhwv4k!tH4MYNe z1D8gP~+X*!#GH9<^Tc{lr1I z@Tbx3@u|rxQj{sU)Zj6}iQ8j8MiN3d2F&$c>UGi6*Nf_N+5croQB+vM#uRe;_Do&o z-VDfCN>YDhQ$QT=03`xhZO_sy6zMv**0ulKRCN8#e^2yx{#-kDY2F3(`9~MCuO7Vh z_@V0s@Z*-^+rQ&#A+2fMxdQiLiu8~CxeBXcYcFU|YekxeYP{;a!YExPrVc+E`aO`? zx3Z_H>#xo)9X=gh?St+6J2+j)?z6q10sYVl$tES<@YMDa1VFyRb7>qmfA@bp89w8E z*ZbY~HF~%4|8Tdnq|{X6W6XSn9dZg33kY<*avB_0ooE-%1#z8ly$84hp92HH$Dl6Q zALI*65I&StN9m=or6|DqQQ584S<`j>8}0G zEl#9sx$By19^fZnE-(o=8;Ap?f~J8@;7-VEXv+WJu@hVgD6l7+8Z`N`lf#C=7X#}B zKZar@vsE%o$wWI?4D#J3w7U{+GCva2s#KJ;U9@fpIa|W9Vo^ zBZL7cvAF40%h|&p2OjqHc1`P=-<{MuZD8#XWh6niMRiVJWr+p+fB|uHX-(YUzNoOa z*sWv0>B5Y@%)^=J^x@=!*zsZC{nR`wtCDgOABMh$cnJL)YysW|^g9zAcH41Vi*1tq zvg3qn1#l0T2JL{YLA*th(GSrI%ygU-4)Q(5(C)+o*^V=`Bk=rD#>)Ie4 zr#j1f{tQ?}n`Gm)8uM~j3G^yz7cQ9ikeE-@;SiYb@Qa|Wj#cJ19YxhA4IlYBc&z_G zPi)tY4qe+&+xvEF=j2}A;I5H33Z?EZYZ?#*zkz|0?$Bp-8rS~-jsDl;+hX)r1 z-1RNx-(mMtSK`(n3V|BiPSZX;PzThB^!rQ~tP33sK<21lEx=*dOh>ZygYl^ru9_`( zlO7dIM$F*Fc8{@_>6gl=a72HZj^20XT-npD=-(3uVDQU z0(cJSHRuIc38f)SNE!MWIvbsZ+zFcmTI)nu1%}<)F4YfZvJ$Jx(69|a%MZssFdXGY zK+~mMu+QV5@sWk`rZLabLD?sA59F_%uwa5HzcY8`_~#j$(%?z%F*Cy80h>H8a(MJ( zL_c%~^fKVFHAlZ)xm02r8tO0VY3q*bnbB7xSUkK{Hc^vqJZn4enhExW0TEc_Z{&5< z7E}~!E~*CAk9vjLk9vb*A@dPqVgG`au0OW-rW)M^)dKk#=?`)G$j9OD!{H;(M|Mjl z%g3vpYS$Z4wmugH@(FPj1I7PEq>xXOCy=!yIcbQ}TpP_CtQR zPqM$$FU^ViUvNb5cn~?t{x>8*#dNhw+oi`C zA;vLAg}zWXLAy^ArB&-Vrl+=c;2k&t-%ho-HSprS3_fMPEZ<+=Sg%07HxKUq#(gKR zh`-3&<-0Z@A*eQ}Hz+-j?0?_8h<}%>Wd5KMNY`-3(DRTp;8joxBoK7XMRgQdZW-uW zo1#tnaAc8i>mXe4y5FsTejlZ;q^GuPeaD2>1C7nKbN-yEAeQ6Hd&=)rWz+^VUT(>2 z=X8>~zI7~Vt7+=1-BE@3y{k0q`}vZdAKQNQRj$ zS7OvIO^2Ro(K@2R+Yv|{o9s=uFn!oX?8|OC=1qDuWi0VF?jvRmx&-|mQ;bg}*U>B3 z;rs@l^gw3F>ae}xKH={}PX@dE|MFSIf5k0fJ*GdS07%aXGx7PjOG>KmLB`NAZub zWoLhaf72=|s_JVP4YcOc)}W3BU4))}y_CMfzOVf!2Lys6LfptI=}pBy>hIbqdWU|i z{*10mtJZAP&Kk`;e>2&h1PF)R9BmoZxE2C~h$P|(MY!p>Nx1QN6seZFl9lWJz-yU5 zJ$OziC-h_R@qi+4GjEIAE}D+`5QoLALJ^P>I0?21{LIyAy`f*Hygz~)T-Mv&d9dSK zhpyAwvrzyVPM0Pq6EtYOyCKBbXylo)Oc3*0v&4+Hu+7U%9)`2pKdJ)76j_wyqIjz~ zRx(w(Lf)->qHfae(;pkXeyO>~oNno}gxZGfQ=L)3sgMP51#%t+jRWERaC!^@eF{+u zT?}S|xS$Q-g)letQo=S`A^QXWknf4WxRBaVQRwmzUEo_^0e>wUMD4<~L-Oqx^nB$f zaiOqiaEIWbVE52tkz|A;`=!{d{#R3}sn@>JZqVAbtMw<0kruo&7|cP2;qH=%v{E{P zKAC!yv;>!qN`gOvTm|Pse#87x1l$+WVftG)J$JFkbN)h4oF~uowP%6nI?u75Z}=s= z0!}b%BQ2YF2t!1GAlrZ>pbRt_R)v<5w5%kri$QTw4T;sMQ5n5i_MFaKaNhddyqs}a zCFwU)lat}`62g>_5_Z{#3(;L=*YhcCDlaY4$1g+kj1W1FQ$12G@7T2BNsq^;m ztMso3zyvY_F9i(x)BLi0diW2x1+3$=b);Q5H2O7y3e!Lmp#<12gdVjO7ety&?P9dL zt>MTx8Jq&vAF4Or2xq$X8xG4Pg0!wH%}sU0nuO|YHDz`3#`Uc;JAr*}gIk9Gk+M_= zb#qKRt&bgkE~Rs#LuPR|pj3FtjG;w+FS^cjtm^oy^JVw#{%~QQgrNlJPg;|JClGSH znJ#np_nRDMk2#yvpF&D&Oz}uU#)gE$17`7k*x9s~g!h;>1Om1c;tie$ehwLe<|CG% zC*g((6Db_}5*CeJ%~|ihkXOQ+?XlV;$>Scc)4iR0o(*KpqTMEeaVf~-5G>${Jc zA>9Y#N$VNcEl4;@j<2M6F}Z9Z_dniD-ff-*w|S*q{mYS1Dqh+*=W9+(_4E^b{SJ_(x`9=|7gLD;iEjo&h#LT`~ziGNwJ zBjR-&bj-G~{u#bm5m`Q&CaZ5lHvVOn%;Xn_AuUIRT9cLUsRu2y!7(s}{y&ZeZs zs)oglolV6pEvvs_YVmrcGYA9(sI^TXe+U7H2A9uM#c~H zwwE^?{6i^^`T4XgHA>k816vOVwX)?=i?rpRw#1H4ot`~EdS!h}`d{?Z2Vw+6gYm=nWXm+O&HDh$ zkV--keV84=+wbv=H^DuabD1^FJi)xks$z3^lf69rjDi1qN9A?ItH>o$Sj$ z|48&6(~(-8z9;i}wj!r3?`nQ!esTVz{Fix&d9QL;=fq@x$T%@Jbc`}~YWR$Rm;8$? zE$JY7K2+!Gx5>>mqe;)#BlJVMa@{wbOqV;#(Oa|!G&SnqDv*kytdP^?-=#uHq!cD~ zO4Txpe3KHXzM+|=YtT;|)nu=2sq;GU0(cqh1OkcbM9oJ>qL-p}B6lI?!gJws;Zg7@ z2o^FBeFD3j@S8-YY@jZsEuu-O(I6_3e?0wjs z+F9Qk()6e9P<2ebVNB6GCKVa zLEWHqC%7#hMKq5#}= zE_7UW(4F^2vv()>6!aE+BkC9SFwsRl?k4vb@@ox!7h_CnN<(GvGC>*ivGFaT07Pj!noS?WX=_nA}!#huqUVrg?~XneG{!%Whv7 zFgl2OpS*;47JnLBgW3Xr3$AjBtl@?=>IPZq2u}2DaI@fqVC>+@A%ZAv7$FvkW28r< z0_joNS-D+)Q}J18QEgVgQKze;R02hd{F&^E^ov9t|A_)+}Lt+ytiP}tm z!2)pGJ&L@;1EPY*g{4IvjTXchV^U*%VlTy9iw=vL7ZDX!7VIDB@~!m>_2^?4GY(L$ z6ZT|*N&i{8A_6mRg=a@8~B`Qpc- z%Y%6X`rc1Hyq@FT^SjsduzKJ1Li&V#g1$e!+MdR4R@d?lZ2P*ln{9}8L}y|5p8mT- z1o13It!9_;n)SYO3(x>+ge->^LOz3sK_DQ?*<=-&j_Agy&dFYg;lshAIim9;66rPc#Nm<*S&7n3x7Zxv@C3bvf{|eK zQfwYRn7E%@K=H^r8IDsxlT*39yBpVVoI3u3N>D}rkLws}W;HhFyU z80$&)fd(uIiH!Oa?~@A4l;=*KbZhFCX)~tbrnvGyWCy41kN+Je_5IAXQ#WGA!ctv} zEDQAuR3Q1>k*7oaf%sljSATnD8=>uCTT93G9^V0q5GEd!y;sUr5cM_X3)zVgr-0Uz z-kMZLs7x(=`Snp@{>S1E&JSNdUHCHiecx|kO=jz@-U-8e z8Xg=D5MPj_$Ue*0DNm@~wYj>_`dnkY`I>dW5eYg9OTZ+MY8kQIC7xZr-vfpM4M8n| z1O5+uI{97PbF3KJc+wTzEYt)z2yzy9$;q_aENSLY(=+1{qt3YBe8kr1YJoH%>G&k- zG`H~{lYJKi%fiLc);LDujl`D;v2ldx*3D;-0YX5%zHT^p#rq`IukR5ZwdQpt$daF6hzuur&2baeRiNYBV$;xO^- z;Ri!A2Cnt&?by;Xukm<&W!;tfla0jI>79%ER6`JHy=uB~k$p4h2kbF20P_`NL*vjp zkzhnC3;}xq`vs3jEx_gwSyTuU!d}5W?M~+1cVEE`Vb5n4QFIy@N)=PlkH~R#|rG(8@*9oY5{-C5=_qXa(jcu0yc?(KGl( z1G4yT#cmVb@>zK1J-U!~gIYuhq{NdylB$R};sQb}em(9HwhX%nyBqrt4n){PTuXjS zy+_~4ILY|JI73I$c$9Q9iWEjXLo6UhkU~kN#6rSY+Y!E%kb}HJyv!hR z7x4qU!o8#(Bix&;Y19Sy4&(}m!?oL{HGR@w*1%P76i4M9vIdz%?o_-|VRX}teCumR z3=j+@!X1bpR3plT+=_gSh=KdU7C>mAU9O9En8nAqLpx11S$A*uNR@MapzM4#_i2mH*Q~=GRYW&3VZF}!%yH? z=~d+AgzdN_%r?|(gaRgq5WxQdt~sVzi%kdghc)+q}J z$7#y}XucSdkeR1Q}mi-+=J#7Ny$ZGj-?Njp#=QcP^5D*ahy7lHe+EN`-J}ncyL2DT*Bm0iMDS#Y5#kHB0$wKpRM z;%6e%&?P~(VB+8rVXfFD57*u|&vy+$qp)wtFPZ-C49^~KFJG;X#M|4`=3e1eK>tXx zVPyy@_^dP8;?%8FR*G*AYI`6ZlUf^^XSXbFFY5UvoS+J|eL%#}te%g;u!+mluZ<_< z<0pL0o0o&kJdlP?ejN9Av@1d$CJ1v2KN9X9Nss&#p$Ve|&-Go%Yh~OaC=h8twr#pG zM%Sp0R8LpWSD#Q{RO{3WH8(UGE!)sxdTJv8QlW296g+Gfb zgzR=^nq#%+WYwa110mgQZBLrU*ZbG7tE|7T{+wRg@O^Rd;cr7<$BnkcHzj+2`2O5d z{;R64_IG1_t9#e=KChvb;xHvnr!jwVZUr~OJJ1Vpv+)DC)7U#`1;Phf2CQ*1Z97df z^%pex%5vF=BulIrK053gek>NtG%Aq6WMzW7klrLTE7qgl*A(0wo*2c8{yX|nh0YI0K2#LKO16~`HSF(|No&k@ zNC;sSlf#?lh4*#$UF3a-|A(8+dPI#QS~1?p$1n}#JY*$wGr|iCBr{mqeE-0ck@EOG zV-BR9OM5&fFu^D4YVbK9GH)}>O6?kDs?&seLKsmo%DSziDXJmt!M#KmAULoDFcd&? zZni^gNXs?T3L zEJdAqkG{=v(3K4hK{ep?q*Mxmnos#bI*I>**??ri-$CAkIpE;YT%8Q=0?!6t0U^LP zkPc)3mqV{1`Y~gP6KD@v?p(Nsk$;7Mo0r9vv3zLz313hc2*z1$0%K8U|YA@)~3AT+C%kODoj4N#D(Z+BJItkH+ zZot)&F47U4GyEC8C4niSEnyjC5Q`-e(iMWp`ow+k$v6$NkbfQj&h%& z+P)ET9t9#irg+n989vNS3?S_)iGvSAzk)Y`ZvceOb&e}`rTs4l(skGs0Z0LCa2DDC zrmdPUk|~4su5m3Rbq&>w>fD;fdP?ik?#+UYBen7XO{z|zKW^yN-_W!4d81uDVU(v& zI%WfxLz9s2F#-5rgd|cI={@N&QAn7MTaSJ{>bteTay!m4*+AEhs6@(fs$c4C-31fC zF#tM>^e6m758_Vs4hxb-%#9CB)n&@_i>HES56>@JL|(jT(TDkQvo1}ZIldwV74t1H zguk01#Xm&kgQ6XWEx(NS4b$}Zbdz*6U8c5DlcfP`W@^HktTvgg-<1 z!q~=M>WtKQj}W7;;d}@)NmkN&GK*9}SdTk`>VU=q=2%KJcFB*y zwcWy2Q{%#h#|?{`d|DejR`x9E_ZyrsbWr$d5GOd_cdI+Bb732%RoDEwnbiVsz24g1 zTGg7{8q>O95}K= z0+ml!Pt!j)H`_Y^YzP3h4ZatSh24V82ZaLgPL?Cbamm>LI08vPj=@$Coa9Z^SZXAh zO@LxN;4n~|U1;_&v})|Cb;{qPo!(zglAn|hE7q!FwPgl~CD~yI$i2HX{WwQw@iQ6FlZXE zE^|x-E zU>&1>BM%d9V?H3{kWj!o+ux>_x@YQ46<ZRxI?5CS{sY)euSUso#t!t1^ONK3HLh28+0SmBm_^i67s=y!+Ot@Wbo9z z(++B@bnynMDa+byU*hTkwt@|?6Q~|+6)~2&n9;zZasK1QpE`REP!GSVih zn0}vm!EHLHc65`M^OkzxJznto+_7AQ+a|_DY6h_#^9f-Ee{zl3I!t_hy84nlUIH4f z8)OT953~<32A2v0N1jTovZ;!TiW~AHQm}Zsuv8%E>+S9CdD^?M|C`{5P&V>SI#;nl z6{4P~VQHb-sk&8$-=-Bdg9{1$fO?OgLK(-Px=rLvLA^!GHw>g($NG>^0@?IrCTjYF9t|0@121PUJYwsz4v$(^XK!tT?3 z2L`8)Y?4h?tMy#V6T8s48t@!=AGi~+-8I+w(q3)7XBjbfnbXV;Q?RMrc-+vb^ViB% zSfxwOmgD6x1zUAeJIT1$)(e;k+lPUZt&FwYo1V44BLAs@ZGl$&h75$D;V4|{9XD=bwM9#(K=p&_QEG( z))GXN2mi;>Sw}auv|T*z?%vehsZpSm7I$|m6fb&lySTf%`$aDoheBzgN{&QIf*sBZW${v2Q0l+<%c#F0rT#mvH@4g6 zs-VwXj2LsRMPZxecKJxhXiH>i+=?W9 z>ePN$Gf!oW&n9GhGgayJDdq9Uquz&PF&IP*A_la{lWsp}zH7`f+0&vY42=tG?vy+t(#M` zqIyJiRBh`Yd(+`IjcBp>tfEId%ampN>>#<9c!qh(Jn`P^-W|R&|9^m6pwp1=uw2AJ zE3g1eJM=w4-Radx zwNLcBOn0n1oyop#&?@9v0*yX~wLJ;SC%0j*PSHHZQmm}+FIQDyLE+NV%z)IBAIOQ%id80bC{)Z$pkTKFk+F#3_sP#S4m#sh|sK9D|{wvBS1n1-ig zwD8qI8lLPLYHczM(R9i=l25(ky7vkzJ4Ux-+h(_}YT>m`5EQrH5-#bTBTv=7H-B=b z`Az~hgK9u;fVjX6Z?$uTeW+!Xsm{RG=W9=>Ym{%~XQdfpb`L_dtwY=#v?C;(Ky|y4t|Eu62I#Y65FOWB>n2EFW5k(-DP~G{$yzct~V;PV|@flw?YJ zVdk#vuQ|E>1KFdq2pNR5A<0`4?!^9#S`iN8=W?DiUQlug?Px#z8dw>)?k#jX9KfKS zU9;v{k6O|#OU%1W5Ti#oQoB<1&eD#c`u_{L!4ZGz95yY#ee~(APMgKKlvtY{M9By~?Awt_a9O6(1F= zlsA=qL61t4<@U)$yV?#kU8&nrb*`f9XK&e=GRjXzMf>mj)qp>98gI3}=&*LdC4CCE z&Sl=<9OEkm4usahO5uax$*>Mc2IzXA#WTyX+N{t%QpAh*b^Yw<76e*0wXAI2&^EF2 zZFjeHo#v@|qNg4rz#V3+2%8(fE0_Y3^2GT^hqUJ>Zl24@rXGCmWv z95xy96mlMlLo}nu;A6=)%0+4|S&QeO0N^d2I~I-Zl=`wNO_Oe%{X*B_oUKRY|?bH>nql=PjcYm%2FUXSk|`zvZw#J8TRYU8t8XKB1t&3V^Ex(#?G;MFZ z-T1rddCP~kmBRR*;gS#XbE*?sy1{39VO`-W_3wa2VgFD@b6$seqk-{j<9)H8qZFZE zI3wtDiRtJwuy9b2;(bNlbZ?1Q=q>ck@iltOJ)_)ZPNQ96n`b+1`(lrF{^uO)n&Fxp z?Ach$3By6{SJgh%->NRn0E5ROcO4IGgML7EV?Ps%DLZNF=@xnoy+55xJw__Tm!LPo z+rd|X-vW7nrJy3{4HS9bLc0ZqOtTlueYyk>{~fqAiGulF|aFW3W=340Sih+rXP5;VB&*c9|aq&i5jR^TT8 zQujCeMbkoUi2Qtyu47`$&ic&SpVeQgPuG6_Lu~re`lBPO>s;@530{6g`A3b@-8Kv} zkG2b43I2!RQHXqOG6_OUWl}hEc>a)cp@OjJ2z1oU=%(o1F(+cuW0IraM-Gd)9|j7| z=8Jf7y#3rX?iNlF3rHuD2{<&O5wy{J#i6%MF-Z;EjBm`j_82!Yz=Z5YEh9XmhOv+E zA4Fuv@ME1ZT~YnRecbJgI#LPt2(kxu2f7hD97aUkMjl7c#;(CN90e%F!1DQZ4C>?qiJ_t1j6ONN& z%dvSFW>CpifnNlq9-o6{B^uqDTMCwBTKAmJNI`Map!&!^@9K#4IZg3`OyR~pxgt{k z$3k>n^Fe@{z-yrY!9egY@LISRJ|D3PX+kw%6!?)O4aHBZWQdsCm}QLmpxd#D9asnQ z9W(@(>3!$eZszGeDqMXRMW5QTo1^Ma)C#NjR|~4Y*GTG+4F{U)T3Br#JK{wjdwRu7 zW}sNyanE!o-^*rE}$#awZe7MZSZ^zl1eP_31}STK6DWL zAA|!Lj&@*>xD4C~+(X_W^_)G=fU;sfju)C(B^A%Ir`R|FD$cGt$BgEEc7bQbkG zRg7}C;(`1xnM$gbl=gk?UEBSvE3V7h^{3~!__=(5mTf6?Zvo~atk|pMSBwr0n(qmF z8CeyRl5j5>o<1m(nX|V)B6oj(Lr!y+u;2OAEr|`W{iD*u*75GJ*3)^EON0XKT(kli zhAcr1!FLFf`aO0Kp^?0s9?gEt8y?yl-VwPcYE{(7$fpr`;U_}{Ax*rm zylo+s{P6JZNO0`Y_`ee$C#EJ|i<3oN2pz*dM7e-9!wv#+z4gvo`vN<|VQ?<;B>6u9 zt&n0wG5RoeC1DKd6lE860qqqvjJkjvNhIKtu>CN(=z7!=%oglC!Z}hNRYHHsw6TV> zpRt}YqZwrS1R967k#>lFnX#DVW&gu5aVBssvu86~Xzrj&4@A#_MS&*!r@Nc&r_B)t zwq~&6vgBFs+-^{pU05YtB{BzThud{WBoMCb9MO(%?bmp`?rs&hg86;w=gN1rZ??VM z^3U+6qn{WaXFR?2&(W93Z!ezJcBZTF_WFgtK^$Pe}^3kTNfH1 zQq0L@-lOg(Ixt6&|G`c`P+%)?84wTb1?U4O{2njKQ{o!q9O&5OFgP@>a_?inHmD5w z2%AW}N}fvrQnr$w;RWbJh~3cn;K86PAST2HorlW6%^{7WF<5K3b31vOnRnC!@%AYDms$OU=>MxiF+h4lUd_{qCfZ+gM zz~hCuvaFX48ucNCO9Gc{7T=cakV%vqw0n&=Y?EEJ9)$0fx79ttZZYPlX7puroNOFk zv-`KCd{c$D@>c!hwl94^oy(~JkHGz;GeavXe*c?=oPqd@rsA zyAAylQ3BlsSmN1aGa1TMbjiK0g!c8#N%e@D>6H}~-Q`z*7XEDdSyi6&YkuY0+T_M= z0jO({BuvHDv&`eIAFK<_zjRn-QlFrM(EPd%S3RRjP<`%?xFuVplHS!-*xq=q0GhxH zAUlF-`l7GcRb$<09HX73+$vLxIemZkM)Vc*%@@~8YGfG2MAaNkk?xIQo_Uvbg8i{W zo)Lk$pfk{q2pl?qiNV$3F$5mrHXej8#U^9k zq8P|hxDq-a`W;LKUj`Ne<_6yQ+x!SX0WcX%fXzWRVJHL!Wepv{?#Elo$A$YNrO_8- zk?}(lh9w$;<5OZ?!ut5_alc}!qgO`fL{EvXh)$2Gi*AjAMXnEnhd5dFw2>qe){LA1 zZvy`Y0su@u+B?~Wb_gtYjZB?bHBP=b*tOcuk!^pP&oso;5o*R&bybS0)HP-Gn_A9w zUhd^7l5|CuHs?AY8FU*~fa<_T5`R!;(Z{lQ8~|6!8P4`HWRy>YALvZ@b&xHv$bZAX z5U>IAAMz~W4P#_zYiwD{-z^X4y2G{hlf6A>?9Bo0KhTlXVXK?8~J{* zrl+|3au=ohSx=GpvuuhgptTq$S^GQox?Z@)dD=XGdoFmUd1~Ab-MidB-8(&NyeEDA z0UtqRC=>n}`32=czrt8C2FyG3NAzGc5B(A~6nzPuixuD+2}?*Rl-txF^dC$r`xGae zTh57KS1|Ta=Mv>;A5RxG^Z%Wg%b!FNQTC9GiVV#L<-D~f0#(J*#jsZ~MZfFtW z2I?LLhV$T_wGiexYlE-EQ%lH(Q#mW=DkQfu9Jfhb)65kROmokdKikkrR>8$O`1Y$oHr!bPIL? zp@h7Lp3MHh!-c(xsEu3^wI%XNcsn1!>(Ba4laj}i&Jz!ku25j~zgYXZRDM$^IsEUi zMWHK0#&hqm&N0T(aFl+e`k)(nF@w?lkV5EmFcYZoAM|NG>)eU%a96VPl>LOwVi{!K zW}Kw2(xvDOT9fvNPOP70Qdx}lA1)#xUN&)R8iwB zZ~9*SmGZTJsk!V~PYHgDv)-V zCZHb-l1>#fmYG4vQaed_f*nf?(t`t^K>kS|#A)WwjG#wnMXMsq!|Hgqm@Mi9LK9{Z zdOM1Yeukmr=M!g>S5qmpX|!Y1Rg_PpPlRjuskrw+?%0YyLcB#zryXW)I}k6j2!L-&jifz^}3^64#yQoo+IF(xjwtSp7Fj<{xg8xAR9OfW zyP=3RUEm^1uM;ImX%kv1~HOn8b!? z1Ke;^uhC7`wP=TFi!=r5H>%~T(<+Txq#b7X&pgzA$5rGl_g4UV0qX+-ugdwy@?Pgu z>=1A0I@&(3HL0n-{!(3O?U&k=x`g^6jaAJ?!N|^K-7xVPnNsNs?&@r#)J(Viu-|nS zdMbS(z%s~j#4gN#cno<9?J%Q&xrlj>v6-%`8*@Epa0oE0CG2I` zcRrk#$xNi=;+%+nkmkTcpUShr6Xo6RPXeYwCLzXP9^!@4?k$Hfb!*tW9QCTE3 zj)-spDV|0PR123WjBbFwgrlcYRk9(oMb{{j)3&;W=hwck1{Qpka{D(P>v7$yG z_)s`-w|A?55E!Mwa!mL#1bX_8Er0Tl;TZp{Y61j}4|x+~e^@p63@?=SDR;O9yG z`+#Sl&rx3dCE9lOD*onhZG<6WT-X5KI>tZ5&&au;)1E@xTH{<@q-KSNsAC$hTlP50 zJhK9`Kn-9U_+rpOj|bNH{GNkup=*zOq34cQ=9?NQ1S|&(450k6o@U2-%Mtx$)mYi5 z-Y24`?P~-HEi+sCwcKsZYdh2-5MM|DEAFf1I=S(X1>kt>UhSU=jzZ+(rc?6R zUqc5($0U%Gho<6E4<^q~D2qN6eulfBzJ~Y^{SCSrVDNl!v<6vqmT9liXq;_cW+B;v zT<<*ZTH_w=0ea#7#y~D;K6E{z2Q>pb9hZw+j9HEJL#TkQ?lD%5;jDU*;)9GX7b!s6 zO4Cn=-MXb{?bN(E^=sg7i$>}7_BjE#aMb!E&LXc__d?_4tJ$0B2vRvJ6|&#E$u>tnUU^=e+I^#w z(~c0VYx%c1y!lqsqb5t!#Fp;Xr|m65LC;!gh$>IdwG!O9foRASWEIv%{6rNq26MW& zRUt2e3U{5~7s3m1a{;^rUQ)_lTEpb-3Vs_yWG=kspd?h!q8$| zW3@WB_>V#+pnnm&=xpwo&?yl^qBzmxqBW7b!}s$$IFCpc-~zp2HOYoqLy!Y~t#pbU$>j42R8awr38pLuub-J!(9!c_2rN z`wAhee1m-&n;I! z=U)4E+g00W`#2}u)8OL(PeZQ4=c0>oCc;4yjB=mCql_lwi2HFP(97VNkRO2+-nTBL z!)nu6H(LYNbGEVeJO|}}|4r^1AH3H&K4M@CFaZ7uNNLpdX{6 zgL8n8L&<(}fLg{l#y-Z254#ju6w?yd9X}}EAA^Z32w6ivg;PNec*dBc)cKO5-Is(M zVZHD~_u4**Y_{5_uQkWmXSi;7+I^9Lv7ko~418-)J3Fuy_;19oBnUZ+p9T9wI{3>CoYwiDzdaVW4Og(^VoCkwdNDL zPPwb=TFa7}wLceq9rAJC`<)+(KVSVm>G!%nYg-dVmExhwiXgdPv$i^xc(ndUpvSNc zC_T1=P)JH8w~-^rRm4|#H>LqO6E+HT(Fb?>OdEA;loaXVUQze#?!S6U`X)>NQAB8A zMuFv;BgZq^-wNP@?GQ2S65=s31Xc2Obp29hPIw?C!TY4VvOiTA27O;XwSNxOcIcF*Q+>BbSCl!qj|Z zh>CNA`7iY?ApzwC-ErSDjZ#MT9B%W}7gWnC*8Y^0(SQ2NH~(&_I$f*&^H0OsrsK^M zT8{{b?O~n0qPX51Nw@;7xo!AniE?f7#ROBO0O3I`4z5Nh)`>ofia~sYf*>ux6@lme zW&S$feJ{|i*s5lkL|m zH|=oj@nwLI!r!1Am~A))j)N^hS0b+?Cc~@YlMr3V`@uSb6S{*emqKwBJ$#fy8JMnlg!=&zA8=MjuFgn*MM0(Sg?oGl$F@5|+PfP;Y-}Wl5$^I>RnelwqbMK2~Zw|cA|4J^GRHGXAwfz#U5+9RKRrlAU%wF43 zSB!UTzyyRtW-v zYugVrji}47!u%Rt-uAQQC#k~q>%S^gt@#h7N!AQ(bp%P^Qq!7-r25@;4{G~r5r1|x zL^l5vln9%8SIWz@BJ%>*x4=p#1X_hHoO1Jer z>v`L~vb%o|v(G9iQ4G{X8^)N&*aUWz^PS_Won`xI2{Vr|bsLA9wC2gS%g)i>2%sMN z1!ci4Ag`qf>2PKz<6rs++Iq@2B9d?uHxQSApFm8ZY-eobNcdADQ(~tltVmju{BQEy zBw@TL`dv7kHI0TJ@p7qn6Ov_gNOZ7VCHMv>#Om;-}QJO4S-?z92EJ|o63wAUw zYP#Cg)3TvGzsoFMtX!shVcKKuvj-gRU`~i}e6#PiUvZe6_uSXL#epOc4Eh^B4^@I4 zj~`E3MSaCEvZiy1A#X#}ysg{{_F{&RGM6|6zXV%`d4wGkoF{?ug=S{lVs2!1(FK%e z_$H(h^w_h_GF0uB{wZn&Gz&oYY_qG(vkeg4X3bsoUz$g{AI9gl1D;2q zL+CW>b6)>gYkK;??L(bo1e4mPRnBOd`Dy0(8QZ2dOiG)OJeEF+IHJ1nT>kEXlpIQW z|AcuF3ic7wHpGO$aeK4=ks?hD?4BTu??7~vw-4z2B6M{DdQXa9OC55mlA=1VT&Mh7 z&XIQXMfQvnK5rY)vaj*OpBc5?)y36)Rn67EYj6IMHLzN|Z7o7_&pUCEOf3({$H@`0 z>Edg>XL_1@0==gtrxa>UxiRSbp4lu|H)J4jIz(LaLgq0VpEanv&m>0 zZu)JwqF=8wYo=?yYnrs1^-9w=`$&%r5C)rtevGdmt)loSD=0*AA7Lr(6#5hb0LzCw z0--@|Kpto?=mp3FdIZ9Ot^s=dUQexaw|%+wg!!OpscD)SZ3WsNJO6dB^Cbl)1Czlo zAz`r7a0>#0+KhgM3CA75zb6z0Q(OXpgs;a=LfheHa28;Yr`EQ{6r~%h-mhG#daT`J z`p?-4P#_nQ9tHVa96BhB%U{WX(@x?qBWX|rU~u4X|L#D4z--_)&~ea4;Oju1FVyqY zne2FKJ7Ya#1=)_-oc0!Hle^G21~33ZLfUX6sg0aZ5r~A3shOFwY;^yx+50p8PI({q zIea+x3oV9t4}(HJgrc&k*A)%W9TRcX));!J-tF@}qlnQyWe2=V88ZHG&qoicn2l*J)CT+K|)b`ag z8n^=%gT9EbCN)qpX_>SN>Lkh!;%D4dlmj*jd<0R?^4R|SbFy$P( zKJyn~qi z`_dcZkA{UYAlMM#1KU&8%^rX2>$-2hSN@#&{mHj=rQ5%6EkjlO`TbY5q9(BpS^ubh zbHmKWElt~+CC%4bPPgh?*9fxO-nJj^+%KBd(;%KGPYv!T(YV!AW$Cq=Z0~JNw!!u| zN14;?F7z(|rNaNhB#>(8S2=t5m%{kr2Sa!9KC=pFV@TEbrMO6ZB*{fP%2^xsGDeYj zDm6d-YI;@b%cOg;&m;DREMHWG9v9 zHB0qH#$@wXv(AJw&d^O!!DNg2bfRw^)VAY-%C=t}FGL&rXo?S7tr_Wp_>Y1PK~3;( z#5V*PkpbHTo*UTYA=*zF&#R|OA9cIhD_TxAW;ASTXlSf&ZR?!fcU<}0ptQ4m=^zdC z2_h3U2-SsTAh@s#kXfJ?fB}H5!K^q3Y=rJW>_v@0-$D&Qc0(5dQ@m3gC(PIMLd^ix zBxQ@jtjt%Xs%zC3w6Arq^f=>r<4F_UyvTgOTw&U2++@HT{^%&WcwMb-h+bsaWL|D% z2NgfbmE|7on&rZ|AkN1QmgAmdk(1>Xdba|qA;Xc+vAc;*${~7x)?3a@9)a%+gGD`! zd!CY%B^X#;=pMCoLgi%Fl&C3lCe)4c6b#Juq+X3_<*lMu5j|K5T8G(#|4MpCAI%|! z_C%bB&W%|Zjfp(Ym$9~yHRw!;(mU85Yi!VqyI^gpS|_yM4XWRH@f_J9MYyt5aYlAgJhew84DWc` zTGKqV+16}n-P}>vby56Bu|nrFy|D!xvCai{nuV<|RrK`k=>W7`{v)VHRW((9sUBVb zvNfSgCiCf0PB&mLLWa9V=F>YF5M~170Bt<=HYuO*7Y>h|fS!%=B9l;igZfpD)#6u@ zhtj98mxaWIH%A3xE%Cgh9mz9OCa0)U)~52)`qKZ-T%D6Mz%l5|U~vA^ywU;kte2_T z@lPYJ@un~=fVz@F~U8-YRn6BJF1*`#gpZ1YEJbZEtI{}&GOMahXO;M(vNsCBN zPM4b|iAG{Ax>BD$(U1o>HF15LAp|*DG z9qVFim8Hcz$K*G3>l)Q>6&R_zr%`BaQ?wjz+SahWesX)=}B`=>vh3#!F9o~ z*1^rz#;f%)bv4z*D*o@s6?@Cm%ZcS1e$M>4M|u!$j$!m1*#$GnMC#h*zCBz#NAOL!fx ziWA4OV@e`h!bBlp?hclYzK8mToKLDD4kq3ploLJ?+;|(V4cmwk!=%7y-*U$plUn1I z-xS~Px!ZlJ+u1WvY?2-b=4GC)&Tz!^z$`XzvzW}87L6s;cF*B(BLiyiEd(6(P5KC0GH@i!UXV5VqoHW929?q8Pdwd=xYl^a~UV@j(~D zUct`5z|g0_cfL&5nxG0<)UOpf*?ie9`8w5lU8=diW1x2wU^Rq{K%x(02N52SU9>x_ zOCi1Cu`wA5fn;+Uuix|Z?$ozQwpe3$ALkSGJZ>I*5U|Xnc7)o0*k3wtdzu4Rp!uk` zxL?EzKx-k6QX0S1*J&vezow3jQO=YPlvT<~6jaT5;~K~Lz-4$PK9lyG9mc!B zlXB9TF%&&k1fK|Wc~H(P)?Ma4W4KXaC^ZE1&-A->Q?v!@1l0~@hVqi4ML|~DlylWX zHBU5mwFk8nEkm3w0C$AgpSq8|IQ(G3yiE3B?x^%hhiCHVU0-;*=*xo9bD=XIPMS7)a6w(JHGNgW ziOBhUFMAMk7;`u4BgYc5Izk_lnwXNhv)}2=*vvf{p!DJ-ZtQ`uRV)JOJMu8_t*gy^ zOSee{mA6WcNn)kpvV1v4k*R;PBV80oa zsH(|TU6u2H%ge8o&HMiQ>x|FeKR)?jcwhBl`zP8rcUgH=XJc09A_+#f%*OXgKw?-0 zvH{tQsDo_P!lnuvH93dm?vl?`YLJ%x)i&GkVF1LTg*DnwTDPU&xWlJ z%MPm!ZRKl1=7tOlso*8^=5yC`j01LsJp?>%z^a$KGVi$={K1oU?tizl_ zBtayB&E7coT-R<_g6D+a4m<}Nf=wLo^D z#7lDTw42N)3}xCIsuPME@-EqBIaisXnWGQ4L^vn;w7}=Ec4Qr9DNc(oBhX1@Bt3a1 z)lR!ZpT_Xfx6#;?c;Z5g8kPXO;^jN==IQ$Bng%6IaYQy&)*zcE7b%{qXXsjtcFRo% z+FkD1=h^F;YrkoFsF@>+@8-1sY6dpkue)A%xc*X;P%u{*-&d+QuVYv%+@pbDL^f^@ zWeYQhcOncMg^R(*HO5O5ha@{vxM|1I?di>F1*z{739+CEV2FTufOemvr1a6~>{0yw zQJdrYCpV{dq#BbO<9|hk^J%Q(lw!gjj2d|cF$!UVk3|eeZbce`^{^3Df}W4*!14&& zNwX*n`fx@R)5~b4Z=yPh^RROG0U*i~W6jo`l)vh|D-5*73rbou1jE`d2pf7#l6k7D zx`QU0b-ClV^P}s#`(O80_W)0mr@$Nk|7V=l?!B(ZPPe1ML2=4mCEmFK8psdn2fu>2 zgLsEH0sjfT4E_z&0R(}afscVmz!<j`W(tqBXzL%~2K zs;@P?hWD+7T?^$cMv&(Qqy#IWbTB7y(t;J)$mG*SaL)|l+rNP?AYljh0I%7A9Afo6%Zzjq#TmAJ+` zvaFqk9h!KBQ+%_hSya)P-Z8ynZbxs&T%kr(+gMEQuk+k%_$f-Ebr9dwRv5+A(?`t^2mBNpBN3Zdu~~Xy7S7ZvT@R<(qA&CVwt){ zt1_fpj@v~+g0Jzy0&##VfG@z^ARYKVv^3a>Fx+n9e##yCTjobr0{adtp9x@0r=#h2 z=q*ef_g*MF$`x0aJShELzy28y(&wf8i60v!3i-`!Bk3?i_!8i0&sF<6lTm|F6iWK_ zqPiXl{lY0-vwAYbZrMDQRa;?5HjlNOvRt?9GOss!bk8(4)` z>?c$NoDUuwc;=Sc9++c|Y5GCB`?^TISno1qnDFLSlhDL4O*0hhEb7I|;j;IAIo+v3 zS=-{4K~1w766!(qAO7UllN;_dENnD19&O5PDsDQ~IK2TkyiDYyN-9zTdy>%t*xm1^sBDocEy2T(<`Ypd+TZ%7Pi3K zHNu0vD0#AWyE)I@4_J(Nhl`}9u~zerg?f2n!YcN8{d0eKAR9dSJoNF!ukd7*Xa1(R9+2UlczWB&KYM@2mveqjEf1-DR7-3c-xet< z=$kEFq1dPTteLLAYjl}YZJQiVTs&{6zY_2aEQ8HJ4aUU~7m>3mV9F~}B|aK+6!8X< z1B?kk0;>T^5DI<2c37X}4z45!1;(X&t37i5Qhsxo95OTyC#8#LW3<2)($=nV{j}30?v9&psUK(gV zvWQ4y-Veb=3Sw$v#j&TOUquY(=d(XhqX-G83y=r?nNFpNqYaU7>IDkh1w)zvjT0L$ zHJuVf2s8VpE2V}h4w1hZIs!c$znp}i9HKlYJ-{boejo-yAAxwFCBUH|3?u_4N93X& zqK{z)VEiZ~%87W0=!YytwPFnTjpQ!+ZT6s$r=f?!?}WQT*M{8UY-QY`{6mbyFT%<& zr?Fx9Aw(Eu2YoB6h^q>z2<3)%h3^Uf5q2STcF0}MTjm=YhMY?H63lh~AyLSO2wjl; zBd}3~wd5kYnSGppBO*K|KK@!FFsUtZQo>)cj)NYoOo3#=uv1m$gnmUdb1OMNR>% znb)xH&#^z3g7mRQpcnf4)XEEn_qNj>0H6zOfNe$kQF8P?%tOq4^e@C~=zqYaK8UNo zb(i6z`nUYNcvMfZ(A}2bdZVeM{$U-k&Qe!Z-_Q)`jOdjsJ{kqCQ=kK=Lqs;cokiu1 z=id%Bg@y*#>s4qV)DjjQF+VCh)*jDDo}8MWp51R|`kho;&3)(o)6JS_rj{q{VB{H{eQ8kWn28<{R3liZaRL z-bLM0x@L5b>u<}^l)8HvA196=$_!K^6GP3{@)F?N6ssQZa2NAouxh75-+|VHE<=VQrsLu%W7r9y+oK~B zjwg>u<)#fywI{uf{~8?#xAIb0_o!9GY#afdh}Z~aLSBLEz>6SDp_^cR@cW2gh)-}2 z^g4(bnBzWRyJLE%AFYehEjN5Mr#ZfOM+09#J&3)iy{Om0jAslib)U4Z)90wp$m%2{ z$pLAH;<#q2QEA=my5buJumj(L=7LPXk-$!X0l)-N!4sf%_;vJr+ylaN5|jL#L?$L+ z55VsPa_y5e{_dv60MpVN|Gigbuvczsb4ORHY7=^1AEW<*oDEs z-wp38m(EpR4Q6bW|2}jSdI?@a>?BPgRp4J?+{l?Q6XYkj5%LN)9eFmGK!4Ldv!Zz) z`K_VIup&N`_l|Xg_LcMq8-n}?x)2-->7kw1}Z~v1( zEbuL;400287XA@&1bGb^63hf1gd3?vS5x?m{aWtIC`9V*Awrg02e#}{vP!a z*G~LK*+x4R%vt>@vxspR2Fw!BI@?Vx>g%#WeWLC_S3&o#UXg^aJgQr7ncyl3OoBc} zHe&xKoFn}vuOz=C{)gvcCc|-{Ti&zwB;!VPqg2>~6P;*p5V%^i1=Ve*I#!7^-6efZ z5|n(ZVup?L(Wp`2VFiQV=k%reVsT+}*f(g!WE~Mg z7E|@isF2J^UVLpzS!QSM>%nshQNvG+SUl?0sK`XCf z_QC9dqRhcbc@gs%r_c-hl_tC#)Ws918!Zi=n%V_pMI?z{ebdBoPWDd)jfH{{W@J&& zd$RCa!c(${*3A@foLnjI0&f|I$y`O9Pkf3!h};D`3~2%{1gAo9&}~6?cn1|hxL`4W z9r)qhb0bJSkwrNB$)OXCaW`o3MA<`!rpr2g5T z=7uZHWo^erQ~UU`4n>Q)NOMQ?zf;5GW;z!^+6Xs#Pg;w0TY{-wrKndG>2{fN?WbJL-sXS`hyWKrtU-;5gq?%UfEOXw zBf^jmk&Ort{3rwl!uWT)K(-aeh1v#Xv#d?BMm$zLO>$N`R7R3Nmb+zs>2YyN4^o&S z*xHDz8&F#iS^5Ey`S%L<4ZlC~ z;HaF@XGcej9y4mxNYL<`g^IkhIntDaQRCSxJQ$33_UZx3LsF|GLl&mGue)j<;+W`( z@B;%>fZku}8|3-w^x5Gym1ROuz1Q0(xN5v^KnG+j!iIi|Ey10~S+QQs1{5Ct47?)n z*7eQOrj3(l^jvMf)I6`=U9-1(RyDV#sLo!W(mbzirO??Uk|wE9hNV`jdqzMCxffI# zAn^y8Lc32t$Y^1%W6$S43V9j!F)|}oAK#bcOV?BG6VS?n$}QFH)MkL(!>fP(RQVYd&k1X?oNkO^{}`_OpJT>78|-YcYt1 z7=}AdSt>KZK!C#Uuiphfp5G}B!#9O(r4Nw% z@S`v*5GByV;I*KspzYut5MP)-;xY0%dM_4$|Avnsd?);eZ^qSQ*JI+*+2|#hlem9~ z7OH}^&wps}o3L*YRgn!5W5dS=dpH9$6>d6gm20nQp(b9=lPHAm1QLN&XcrYoCddei z{VJ|@h~ceymHo0i5WEAfLmkAeB7Pw2sfqM;3><4XdzsG+-=V(QzUk~dhJ!o-yUPYOin2Y5m%|wrysI zk$<5VFz6A@lf%?Mb;+hQ+ZWeLAOpGuISluW_?&W|R!aLs;S%R#7C@_AD@}8hbir4C zP1B<4n`MQ6KK*?31N~F>`(WwpN}u{ut?Rn@{VowlzDu=Q%P}l5`B+!kJ+6MhQSd?N zYWNJq8ssQsGvbq%j8%v)NHuCb<_>P0cQtON!I?AJJ-&mS$DBi)yFQzl<&=lG?FbZb zf*oM&Q48dS(pu><`8<`M{*l!eFavRh;9*qw6GK-=jg5~_My8geg$`4uUrbL;+na(< znita?_SSzS)q(KXxhi=7&X!Bnx#hb`8_PG>$Xh=5E|Bjx>wwMZ63TM6+3#&&9d~BX z|GwGD4_**_g7-D#c;@DYdt#91UAwGkPQutKFE zoX2EeWZ@W$8mMxitVz6FR3|JH2_*iCKuxM~hHb$86*3Jaz+EJ1DZ6P*+A4~an27Tr z(NHj8p<|QzqyDW{srjsJ(oZxO+N(W#A%75b3;{olaG8+)|2L&3!&CsNcNB!mXmLZ| z7XG7FNK-=nhnmUN+0}=u8MVs#lg-CE+xuf>xAggrTM#-1ONyeI=uhZ-sQ}V_Y%^jk zWDTIiYh2H)4s(Pl-VmufsyV5$DyWKDMVQx7ALxTEG0x+_D)c z=ljqZX=Dy=E8+_HqWhLD*mz2_Rvsx*^l`ebw>@f7*GJUr>xMQgX*s~(Js^{3n$5s_ zxS4EB=(q&yu;MWXMs47?7m!o9!rK_YmS%`9uMqmiA zRy#ie<6ulw8g>r;6A?~cK|V=YLw!%RP^Zz3&^**c%16=$0t{D&hNCVZlHk#>>(F*c zA^0F@3E-y7V0&wRZCI+?rm<)cx(|j+mIcn|Ab$iK2c{fljP=>)Kb)HuJe9XCq$&g& zLJQs+IDu2k@F!*?Jg#+mq9mr9*tEBjS#t8H|979SrXt+8J>Td25dNV3eDTBneeU;5 z-_jKn^~~jQZFcWs>z3cUiT`mLU>6Bv>$W%h}l z9iS)wJ5j-eT@CN@5i}c#)d+>a~6z8C&(J(_hQVEbQ6BhSh>Dk})m@nst zc4zlZ7s#a`uV+tj`hzDUQ}KnA>5NxCcK@frw(vJGYm?7rTpsfwCv|G9%%8Df z`1~bv5@(#7d~!TDvnu^uGCf`uog1l&h=?2?iHuqi^)>QK#J}PE5KqvMK!cx+Q_NZC zmlu%A^$C8=+r>K=Je14z|LoJp*h1Y;&Leq9d#I-veD)+iT|jQo&LA{5(SIRZLHUb) z0$b&Ywt{t!6}!cy1C-t-{<024dtKX&_Uz7c-GlvK#OGBO<7?+ja3B(d?Z6$vPD34n zJaK(C9Z|g$ZSMWv;c9->5L^GT?p^)f#)Ot*ZU1zx?H2Y*`bQ0J6S##4kyZ3jY?egJ z0u=~#u+Cwynf6+b*+$z5_FLBLX0xG7=hkGYF{&t4oO+`6o&Kz;*vfH6dDtK|L=U@w z=tB}wH;^*;Cg=>%GIx{RVAkmqG!e=u`Fg2La#*@k)+Vo4K3At{ z2Gw0#+s-t_H(aj|X-sOZ=MM~=m$&F!?KeRy5Yw=kgzZFv*A@Q5TtIm7*>&C&tVW4X z_M+Nl^+zkmm0tXf{Q3IF&R?41=!z-z%iBlw9hC4j4Hls140JT6iB!hWbKV5ihtH2@ zCcI9Dq-xTD-aML_&QJ4Cdz#vn3QhZ#b}TI?^?ve-1V;4h(6WHjtj**;%u{$Qq!zHz z9q&A5A89Q%Aq`EMASFe1R(wZzMPL-9iWW&x$`iUl%S!h|Xc0P&)JCgeu3;f z&l&5S!@&=bd+_hblj$p%*I0kqdUl3SExUx(&1_|q(-+X%C=Rlc6iR%LZ^Ol6d1wG~ zBpe8R3?2g_g6@MZfyY68;5(5;Xft*=-iZ$*Y{VbKc`!J10_qyF7ZHc_K@CHX$0T8& z;5Oos1T9X9EkYL{;-NbMv+P;MJE}Z!eg8%NKu#BA9LoWBA&U^7&@NmEsh^ThdqPiPUSRF^$?|3TUGsktAPd~iUCVtG=<=V*>0+Vj zAtX399zg<6a);YLn6Dbhx;<*P>a~1}?2Z&GMM%F%4e}wXt=a(76?>s)EMx}aFDe%U z#iXEmU~fUkTx6Tw_(iuw)28~We4=RZrsH_!Ze@(>mTH$;r=jZB8cvx^mf!Y0t`DBA zphJ)q(3P+^Fh1-l{3K!#auu3`D41>c8JAf7|>z)qsGoz-@nhYDCH&QiJ75y<}hTn2VF6j{VF){*9^ZNZnPzo>_ zQ03n4n&L#;%PhsF*@mrJm|CZdP{Nf-s%Xt=-7w=N3&Boy4s-Rpj=3_O(RQ?@T_34_ zES)5{-SfIb+8p1|SL0tLs)(o@QFW$fK|@+=5Wk@>QWUIsrF~=6Sl2q2xhHx6fcb#w zfb{?mU^XZnG7}z%IZbrYRlaG#bHcwy_C#NaejnlCCHd{8no(~6b!L}3T_zA|MP|tl z<#R*3BLngYeVX)_c9$_g%OwB6oPj*EYcwozTlbi@u%>Yhl@0Hj*lo%D<$ZqzL#5Xg zZdH`FLgzNzFzvKnbacCoz-*`!o`BqmynxsMe*swuTj^M9(uvu2pVy>u2dsYWbRfv;wV5muZ-5oN2mc8f)5QRO*j=Q{jzn zr`}}Du#R(H0VF~(s5h8$+$UTEW(iUUx#d<_F#3FDt+;t`WWS`Sq{ueAINe#_;z@X;Mi- zNnTlg<&!!^b5ZB<-jjpl#lvOwN`kJ&lNMw$iVT37)1@C$$cUHGKTA#ONcZ#|b2iHocYxt&8=Sk3U_y8&oa~pF6eHM8d z)&tG~mV4^mH$Az)FvwqcE@m6yDy5Bnfi=R1;k({zBIkSszCSoMey#qzz|z3Fzykr9 zemmJX`X}N(v=urB$n`9C&j)-1Z$#ShI$E{wIc{!o2bZ^~#;q|ez0=i(=V8KA;z{x?1aHCi#YgV5y zHaT{J8_*2OR-gG?dia=Vzxd?D*Gc~-F%rw-7DX$=_wh&pxokRhDUJs(^h~t~HDKwd zzL)K%8}ci^6fgWi{6hNh^G!=(LLtA<^yb%x^Isi*l$D#CK6m8{8x)W9FD;K8H(fby zy4&BC@7QYVuxvI>F?`bXX-ZYom9ynFk~k4{a97{N?&BS?t$~fE+OL)7^1hPlVr;Qb z3AJowCA?nPitlAgmTEWIzJo5JUK8$64$=OjUL#fGMj=(;AMOKomgSOBZOAf?H)+iU zw$ZM`fCxxFJO@>VVc?8dAvV|RI|1-tkScHeQF{sj|A0E6+mUl|VzLjjl`}R75VkCm z6*oPxIr(zRkkr_ey-8*9v!aKE-3ipQ%PDEN4+uG!0{q|!^<)8@Ks@9<%nvyP{RA@} zn}pqov7*1DE+J_M4{Qo_5PTmr2e<{W1~3Ou0)POQf+8So&=>?7eG7{w(y1xT5xxO| zvv`lfM@R08CdS^1T@o`tx;5fWSbT7Ye~`~M+Gj!y3J9IznQQ-QTBm1f->9dmV>M5; zSM(t!l|^8ya!htrxtl!^z#SmI*F@>?*YMBqjj#}i!?W5EVj81v6+3$GwO2J7Ys8f= zD*qFaZ|mw@-c#0365J8Nr0--c@<>I$B1@4e$IHT{8zfALMf_UQAPtl6 zRjSnE^|wqftnH5T?$y8y$X)n-6dD&!qS5xSW^#-H^q|?n{2(@Wzz@N$qa@?Aks~1p zz$};1aoM48K5|!k<^g*_iy-5vLA5m z0qB4~K@&kH0Nwq`E-~e3qvRYRq?gzsXdSI^Wv^Y#Pf((=@|V?GDujIbXa*(A57=FSA$I`+Wc_?p7Z2GEY3T74wTc zjoIc?}*SU@~YG!s@3_Tk=OUZDJtFW_|eZg?`%7o*1?B44Hf znZsD?n2%@=NCDVyFe+e&t;3k9y`cJ{_@cP2w5XeP{oWiN?|AP50e!(_Xc*jrq+>qe z5F`Z!<(R!m0Mp37pIg3=#(>1U&LP?7NeFm#Jse(eKm7QOG6Fxz9-AYdoB0QwQujA%izFduNY2ujjE zN)|PNDkHBYM&rk03K7|`ZIJokRp2ww3y7DP;{+znkA2_o8&?-14MT-557Pxx1F~6r zNG+)6pd^RfxI+6*IaCquWu8PeOe@r*jn7Qe%sb3{lb=at3^!s7x%v~j0d2A7rdpBQl%~#-9_+-2Sw-3j`ZNS!I{4lRkc}N?46zm>&Jz%ZVZOu2` z&>z;JbszO?bBUb=Ai+MM{}Q?=hv~J9%gl=m0v$yKlJDWIUhi^&zPQd>Hyf}TvVtRd zA!H1;^_}TW@0r_utLrv@r8fu#ow@vFT{T^*?%JO9eb)yL2|Qw@?7M1|j$n+mT(_-r z6uNReNKhXHi4dSgxVOajlpNYA+8{NCa+A0fw;eqPc^^Iv4u_+VM^H>Gk#L55kN%9k zz%P&6!`l{qF>*qTHuhb7O~OFJ!~|6wE*2AYH(bCA;igbgIZyU=qq?3c@{mNX=5H?;u!#H43UEE zKx9KNfc$_v0Uv<`uo{|&{EMAJET zjKNp&S9q;&mUp&dy9C|nzO4iEgf?-j^tJq$VvTa9Qm%+rUi8v0O;xV0)uBuWZCgD8 zs2^q{se_L3!T4GIfBOI61hN0pW)R1qKSS<#vg{Ad{>EaxQXgvkWrEq_ooSw@z;N&= za2F^Sc;0>7QDePm;utRJQgssjLt~fOVf*2t09QgT!4eTAh);+XxC*uc>I8RyH$$F7 zi{WJSR@@!pdWwTKmbu;QPI#XO>|FLNmYW&G{Eq=TMTu5iE#5DNSloB?4% zdcfJ>#h`h>7w#%YiAAF~Dzl~f!419hy6$w^I<%dWyI=OL6`q$p(mXYvb)A9$(H{s_ zihvGejb=|^Ut;}X@)`H&8tNFzza$M_g|Q>`u;Y+a@FH*~bQ&CpZo+>ikD^azY1nMv zOrM`DI-`*cA@rgz!&|`)PqM4ko?|<1on+Npc3UOZhqkRYr*)21Yfd#T*O4?+RC;fM zLR7Vy7-PJR=HWnxqK^=OGzW9056ADZe{R6a09HV-{{s%t2gnShW)q)ck*K4v^7S-1FzaM<9a{>Z)^y|}*L{cD9iYd_m@*jHvr)6?zf+5NbK{JbV%K4+skAbUw3Bv?1)j~ z{TOdJ&Y*8$XCvQ7x5qq*UK0roU(3S>+-0{?i3B5RILrmQ2T%dHpmWggCVcUsMf#x3nd-97yh!C2uN0erxxcOgHk9p7qi{@pUzuIdgEJW+UzXWapC0qzHt z#v0-~n)8ka8e=Ze&EZJTD ztMYIiymdskuP8@ zPhBuUkvS`^IgT6w3i%Tl9#G^T7PyLgKe#?5JFGCQKkUEoci~Ax&P6Pa`WgK>mL5MX z;ZVFR1{Ap>v?|~~b_Eqen2k<{yCGW8Okg&E>3Q$E;aFiSH$x0^^-_gPdRdYuo+inY zewG(2E7bAY*V|msS6-1hBt4=cVVw{pj+2g%KUX1iVWv{+TW1sC9ykOBLp(=} zK#YQUz-54O&QF#YL#gVDY`%D$@Z}(3kR3fZ2?*IOuSE;Dd(xy>wxAYXE=B-icP#j=lYHeU~sQ-7X;ck-&i1OJAOMd5uEH& zS#iZ#rQf$)*naXU%A zUS5zh7BFL(Zx|yPEwmy^E$IWH0z*J5pu0dD0RqoQU=8FY@;&}CEuT{m42ZDCK1=dT znVLE`H7Vuaq#+4OvCpHx5r4z`!}7gz+8j|C)gCh|t|oqB!eAUKrXqqHN(mg|Gf0gh zWT1XQ_5jeXPMgKD#B$&K&Jt2n*FMrt(8EpXR)g~{a1X2(?Iz%4D`*ANY3EDszj zJdc1_a5DH5@SS_6Bixd0^w&L68=a+7EmPRUkf~2$)^y*{CUqeK0wg z1nl*Ub#HM!cBQ-P-N}HBKr5&L{0s5|LWi_@32w3Hk8_mWWQj1b^i`T0N}&9{VmIC&P&+L&OJ0~RQ8S0z!6{4{!LmFcQtD5kli5wXh4_0d0ZoBD|3+4fcAqZoI+EO z=AtZ4R5EyNuz&Egut0KE5u$l(IBa=uH#n!c?XGI)ZpRJl1XHUnPrXm^Pl)Ds@7UO0+g{({$3NMP8(OQ6RvxaHRk5ye zWi_at-t?-qr*nP}XMiijNCsv3N{MEi0dF1SWCAb2=A!4|Pmn%Qw$VcAL+GdJUui$6 zcq)SWmU5VKirPq9OCQZx%`9Lo^V!H*}%x}?OF<%p?RR$t0~Z) z){zZ+{&(x0t=N(0iUUYN*-#>U5i$`SfL(|mMO;bZP%cte(=O0bsb9(Qg!vd6Vmo+> z2j~p7EwpN^bjKAJ3iuAP2odUiBOiMKhr+MKuOpC1-zX+J&}XXu$e;_MBZf?md>uuO z4v(H19U6T)dRb(}yX+?IYeNV`vZQ z26_$c9OX5^fm#7&dj8ljrlWe4UTipFIqNzPd4jn~`OQ`aB=Sy_8H5sX!IJnfa27}7~oh}Q|1h(t1t=3ylIzW3L2hx6w1?gUf0C;bXp zn`t4WUAXmL!t6qi$6mpsNQbFaj5+L+zO|g=ekV9BK77Vf$}j9J*cI0v<5ESk;6;~z z+mt3%!<@$Omf`KIy9)ZY2&%-dC6gp2qDzC$o(mnICQUW(udPH>e6eI>d2aRN#;SJT zK7*IWaVnAqs2!*MPcx_~)6COe(QP)^jdRWOEe>;r>A3!+YL=8ec%l1Zdq?w0i4$=Fr~+sn;Id<@xkCq2eUQu;JlB1vExEC$ddFXOY5ni5 zKZ!rj{9OL)pFcNCb1OdA5S#ezNxcf;dIdw*?KLos{j#IbF11`UKG(fhb5-M1wdysx zJ7%ye6Y?Crnq0ve9iZi%j?l!+Nvcj=IQ&kgVeGN-|K>c(`7dX5Hg0@s*6cBfnOjDF z8iDjS@CejM(+KMb*2sM$Vu$}3_Bid@(Af#wqsNCIo@0?qEr&Sd*|>lh2wa@?9{fA0zas=!RR6w!pNL$tz9fZgujc8+>AVkvgc~w>wzDFtD-1LqIA4$P$rQ@$mUBSlBpv7 z;LiT1yswaASnTLaBhID^lBdPvqSl74 z;;!Q;8T%+)VjTVu_8EqP{fJqH^|2ILn(C+Zoh>wx{$mtRGu=hL|cN=FtD~Xm$!r~q1Rfu@#Q;@@> za8CDTq|r3Xc-62@pQ68}^Vc!8SJkJK^W+O8CxuT3M)V@O3p%sfkGF<4|I;v{wxpu6 zbo8$!U*~=*dbj3H+?x^anm-nNV-(M;{MN9y-Pr>d{1WGS^J<<7q-oHpjO(mz&U|1S zGy`=IH;WWUmC>r{ct!<%DE$M?MmtXHrAg@@m?wQ!`_%=`2{}0Ad30<%D``sd_vBB> z-AQqYt#OlLIwFcf=L9)99Ol2I;g|yG5zhtN7b8;pOsSS*70n8STA_Vu46$Z9rvmnX zKR|!Oq|on>Y|u>i7CX-zt)H$=QP#+fGNk;G{F@@m+p{scxrTCcfi2pV4!i(;fW%-A z5#q^jDetNOQ9CG!lqm8ABAxIRy9!;25I|AjPac44i9NwuZq7GtGXnUM(*n1RFA)cQ=R|IFfUm`GlgtH6y^_L+&s32Fq%*)*NKLWOq4R0e0{r z*baCxoQJ4@efIVd4~+8UxT&s9&UcPh`%~K`OP~>}W2;WcGbB1?gYl;8Gz^3n z(`NV%<)()Oh0hzJ3(pJ7;$?BE{!4uyvTidDF#a&Ze5n5QL36@EF{z0iL${~pq-UhR zPrI8^lzcQPF>z@EFJWy0GXa*cFkT(&iEfAxhdu}j^K&qhXunBU@RxAsa3BJfw3PA> zeJg97&jZe1zeNB0enL*U?{%M}Y&0u{Swvq)Q&6suPI#^I6x<35aoeod4Wrb#viria zetmZyKfhyddq}&dUE0~)9oN4@I6+pSjx^r4{c@Lqm%(MIWXuH2CNv9K13?2)?U@FT zqEndJ`>11mGqV0hwXsrFvAMFVYFDkH;XuoZj)UEU{Tae=X{j8l+@LB@JyJbaJyyfC zt-4Rf;Qv3(E%HnQJ_XW&!#r`W`?gc2@7j&ZKN7m2zBi}qNXM(zx@JpbZ^MuValL=T zzJ`sBf14JzENz?7+1-`a`>`J?I3tV}<0NG1Txpl|ptMHvM!ZRsB-|;uBCrl_6YTdI zWs<}reIZX$m8jj?8pCVzF541UB4`fGioQooWjx@l3wjgQ7r7+nR%}{qXmrw$xjess znQREnMO=xG!|xzOks0(WY?J@N;L~9fB3Utjxao1PV_!yZk9ZNn4_L`IQF^iW;VXew zXSJ=tveOb~U2O|J&#+#$u0_UNUtp>YRe!(v(@$A{nJT@KXy zhO&a`MU$a%{1eT8CSzOpOMpK3j*=IyEme-CpX*)(z7I>%QoY>No4(>6r$r;e>I9*sHaJFI1s8I8VA_xs54WIn{=PGfx3D6 zH^$M{d5+a?Kj01g6+F(8*II{m5ygF z4}b?xG9Be%1pytDsUSj3o`}#1brV) z1LZifjBAu<#lr?C_YLXu^iLJNRoL|B9U+in42rtgM;ACT^moL87{B=GiTO!KlBXo^ zO&Xo3kJ}XeYDg=uIAE*~nl2(<$Ce|^kaXZ?_fT&I6k0WwLd!JkLmSB3b0M$m;JVP^$dzyx^e40pnhPI|e2)GH=O%C|m9&=(1WUj=#SUQ`n8}QK8kKsS{D*j# zFaduadk3A1T8g+0Q$wmjwSW}&VrP^6xow=S-a5=)>iFVX>WKxiz+C7Ps0DTgehQ9) zYoTMHAHm;&Gdv$1iIx`qWz{mt*a1w}(^gT#irSx5=E@h9)l~~>2@Q9={QauyPcLFn zCj2GYEMKQIso&@>8=_4R^HB3V(+~Y#ja9KnnlDTlu=S4b>FG}InbiBMm(Vw>FRO2V z?|~lwZerIaSCx{W9lx&oV6j#-& zwa0W&ZzZW!`zu9{Q;yZov7$ZKp$v2xe!q7IO`(O+4p396B;YRlBab;PHvL`%dC7UnN^zE`NLVR6 zC)zE(<~1^)>Yg|6nA&@4it?pYCy@27#(_41r$J!QA<$LOXxMF7BRm+n0rd*~2VIVqBl)m&FwldwlT2#ueN~}C zA)l+rSIX5p^`A}u*woHS&pA*JI1G{jk%KRRZUfjJmlNY4+QwJ}<`xstY&9FLOB~DG zi$SlTcMxY#&FG65Df%NEXt| zggXOH`X#WH)cN@7$OGVo?gsls>pqLgGRrP?c6kh-2ACKH#%YPqDSzle?4`c>ezyXD z1+C{5hmgZ2hOG))6Gjbt6`B(|He@J|9`wMwDu1$WP!AD)q0T{T0WjwwYnjnc-=ra` z*otV`fW#uEd5LhHOs}x3GYr+1>rM=i1D%ZIW7_f0iC;*iWH1Fpl~RUMCR5f@q?9&F zD&;l#B54Y7B;f+?8m1HV5Fv-zApM{y;7m8pImx=jv`k;CzNf&;Zi_j>%7IOND|?Lm z#T}7tyPD;V6B=_H&oq(Ss`v#1dD1lPY0Ftx0q6!S4_Sv^jU^JMkuTG1%oCi1Aa`hW z#JZSJFGX)97D%xtwqHb7Z;J zdP)G_0C@nkXPh&`T4~s%j+LDfjO*Rrscb#h+}>2vglK7Qi|wlIe=O#yf{hRDC4f&* zKNJj?L)c3alJ8Lzlzo&q>R##sS|nXX|G_{qOPNzy4c_Wm%zovA^X>56$VuV+=2ZA* z`{wwJXY(1qXtT-F@kywI&_A9__B8WHeUA3InxSr1)3j@J+l~KYsw2*~o=(su=ze${ zazE-W>K^hKA_TS-G~o7en9WZ8SIsU}mSUNFtK1-;smxMqwQd8{La=+C1~4D|7-mGx z!coYp=zG{ve(3>^0!7?e+yence#sm?+s({nY^C>5QPd>zQX&WEhbo8O2HdnCH=%V` zRpE-o^2_oGO0wFa%`%>_T(UoNb$Zf)ZJ;RVDfn#EBy2qKB6TS1C1-!&{$Okf*SmJQ z{T?xo5r-i_?#D)jymb)YbFGuv@wKCmzphs_cu=BOtkh)b>h&`W90S+zOy6esY_eO5 z9WIX(5`_|CiwPm5d&D{TW9Sc1p69Dos%uru5f=`Q@1ND@>I)vcD$>d3s-GH`Sx>lf zfrlVpyiAsW)FTs6eW-KjEX-wWCC-Dl5~q-Vk@=((q*DYo?lP(awh_42`Q1#`eN1c^E^(q40D9hp+~J40i;}$An|p=ntq7=R zuLrjE3wwFJ)!oOs5#2G}pSuiQ*q(L0dHq2GpyZGIs0MFpvV#HtKt0I0xFbXa1xk&e zIcPzQOy*YBJD)gCqQBgq8Q2t1=O52rjcKwU>ziq3+C0oBge-jq0CA=+j;rvnf$ z6*_^mjq%bqGcblX5ULLw8fFe%5|SR0%46`LAsL~k!d(%cqKC!BB_fkuL(is6O9>om zNt_pdE;?WcGk7m&GF^!;La;$;&T|&IG0^zf=xa%~|M47!q$4+AGYKFPfs{)0!$)HZ z5jUZ$K$8I<-49$lU6)+XTn}7_T}xcwod=zE`xpBW+cfJPbAjQ82BjP-)d;M85k2#| zPVsxY_V>;m^p*Zr?>7gzOQ3r&+el|<6^uvBkBk?zd1MeF0b_(?AQnJ{>w%-(=C(qt z!ItZ0h#6(NYKYaxYi}q=$`*-E4s7rK(*Cz;c^$fn{P$03aS5liwk)~ARpqD^G)!sc zx3sjjwEk&rY#r7X(6Nz^?^!&MAWl>y{r^8AIgTjzVZbNQZpapx3(gFuXSZXV_;QMX zl^383$%q_?eV8yIu|57*%=U=4yifi!SSKkQLV%Zuw_tj4vq%NB1h$;x30Tf`aSeez z{vghDb`f(t!-si}W%rc@J`H^oH6&rw&^xLBrtlMAMt|Yi*mME{Jkk6}j_QBkex=b? zbEYbx(o>ONsjQ5yK3{XAZfQe-mum~Ug8IuvQx%W2KTP*+{mzB%r|w!;niFQ@n4jr? zs`n{sBy5q7VEf?I!85{Fl95W4?w+O3ErkYPcawKAHu$XMr1`b_MzY>e&*D1}8NfC6 zdHNp3d(pdoa<{p|-hQa#XJ=dYKLb0(5z246^_Cxwx1On>C*W8}BDfov=6U73Z(D0V zVtA^3s$$F2B*O*VzO#H`>(NF>?Zc{Rl`|`=s*CIYwsv(t5j|GBEPlWfNE=}(eSr_c z|9l{s3*+t$=;OR$I~jUv1X)e^f&YlVNO(jhc+GcsKuAb<#ID$$#K}W-DNQN+hAv4$ zCWvG8(Zi$PL}$kCjen6eHFal3;mFaW?~l=q*)kfKIdk~&^q!&BiQnR;dObNP93N8Y zb(jQ(iuf6I7(C3CWjSNGsT-xcq0cvswAR|)j;GFAdy#pE7A|8Ba65yVF4S_Xax14) z{jE7v|8LXl)|`%8U2#1@{r?KyN`5IZ2B=*QI0T=KjUc_Jw$K2K3i?&AgW2gB%m?0C z4(CqiJqc?Zax>yb_?nQ|fIrN4gb&bXj(7U|@*_gu{-&PRp2K~A2Yf|3Nx6KYDpY+* zeO2{Q8K;oQNHUOYsWeyCB6le=Ra*5&O}H*v|Hlw(T5R^QF14+8Tz9^Ab-TZNrUJGD zssT#?Gd!7|7|&0S)w3DM0jaA&h5j0>%=oDyI++y^^{WTD=q3+OtUlKcrb5it(5(xEpdXgG4HI8cz=|D&hA>r-b> z`#-G%O@szuZC6!LWp>5Aihruc)Rs5cTgG(W?Fk)>5SPg|E0fj7HFQm&nyB(93gkxF z3;9jOG}Q#%O4D;2+#Ln-g;gSgP&D)o)FtF^*lWl~;0DhJXR`gY#aq|C`6$)x(TQ|P zhG63y(g)X-wBamPb#s1x{jax(P?^&usW^cXL~ zEJR&EWFp!SX!KodD)BZ|$BgE52W$*l%WLHwvfB@fFBQ*2Hhk7=*?yL)_{8o0P^l7QN+*LKK zVMSX>_h`XyX`^bBuE%)9yu^}d3A8LQ-!;86WtdqOsU^mC$^O}~$=UB*?^@~J@803z z19k&XgZDw*a3iV`x0w8v-p(%cKNR$yH!@^B&!5}J;WO;S*Qnv(o6h~_=Q^tjrl81o z%QEDC$^+^M{YP(>g#hkAH>0rl$E59)n-m=7A+ZI=ce-hgmQ+Uwiv4%B_9|J~TvB5#LxJ?`1lccOpu0Ar9bICfx5e^x)Y?@G`8u2&uCw#7}B zx{~UWioWu(<*>g;D-Ki#)SqsyX#d_dvzIgQzgwdgOYX`jsx`VUGuPPyzP-tQ z)G@=E?Aq&Qdv3WS+-ID0N0s%JnPp7WEmD7wE5$ThUhIMbwSt>tU_ zOC`V6cTFdqV9*xWZ{&6KcuXbwK57DT2BI7O2O&oWVVQ(klwZsOKPpcj@iBgX>ckO4 z#s=inOnQ~OcIu?uhKWMsav;MN3I`>*qf zq5mN!V-O_p=S0mfV8*7OXzB7lxLjnmO-voDM+%*k|yy> z(QnZR$wC=MHAcs>ymT=kGtiF+!PIPeB;7?J68ezWL0jyVh7vVa>8of`PSe(#a85F) zAA!WRl8CgS^lS8dnuEL?{}lBJngN{d+F^Tc<{N{Jd-czCJndw4s6r;WD4_OF?XK%g z>!|E#;u*@~uKmEbpvyp|+uy#-bW1xy`9OA4I$t(kIYqn9blQH#lLfZG zLXg==CtLw71l71p>{HAt-GFL@{MY|+be2(VWo;XdyE{opAOV6G_m-9x>Pl^DQ+Ido zl$pA_y9@PF_m)!J9YWmQ{mc8U^Cv$}WMx15zOQSooE*h^*;8qd-=w!>^Atl=Anl@{ z&m1!MSijqL*g?+e&Lr1E=Qd}UW0}oiD$}QH7|KG~LdjWigQ!WYm3))Z<&zX(iXTsMQc`J8X*l`>`dGS$)=UfXAQeWLLOO*%kGYDZ z!>faCuYl-aI^=9@4rwOsTnL7}JMR%QrJTsb*JE~| z{zIVPkD=Q6F~Bx_P%pnwqG|V=#|O_X=Ptq&)x3w?%Tb$MU!MQg~6Rb3)~Lu04@SA zfqg*CMT2n^LJ4sU`5XBxWg)d6)k)bz5s|NwhLEZWNAaI=XxtI(W^6YWh(qFfv3l&k z7%l2NG6@k5-wx}5r=ezJsial(<)Kl$l&BFgzhbAw-~}cgI@CiOOn8l~1)+V@90D^| ze@eAZK1RA-+${PcIxRjb*&^F0pROoTY*u8-8>9~S-)?==_`7amZDwstt+L+JxTX1b3%z&O z4FJGjVOFFKeLT1dEW`=$5?_-&$ylnQNTY?SuB{!iHbL8|w#Dt_j!T`#x*zxc5p_$c zN}VR$7_d%rRrs7B7km%4jr=Oa&vizQiyM`6GEJC)$a;`jk^XmzDIqCF!f)WNW6feT z(2{9!^iswx)-TRE-eiF?{%8s&dr$s~qN-7ACp?{Ubo#Ve`q|0zM$apn=a{=@E^qGH zIj?3H&2E~tcSiWM$&wD@l{2?a44_J;~Mgx96`PbZd|+f7F1n zx!*FSsp@_e@m z_myEk{`Ga%k43*4%Afy^`m?A~R#jWGrr|})%r3L=snn&qr~7PlnI~9xTC1#!ta{5E z%P;c)bDv3MR2gFR>$FHUQL$fACVbJgysdxJin^Mr;eQmt_DcQT{bxvRPxF7>Cu9}+ zv5s8<36zd{iHXM&Fe^~!;VYo)!I9u0;1|K>_8=ys=%`TSQs{*M(>dJ0l~3!=ZruN8 z#CO=|a~~uh4t@^#5%K3^9lG^f_kZHm3Z7=CKFPG$a>07XR%csnlUtHZdvsq^M%g2= zM3~mMPjpMRUXyLkarX!9MF#K;N&_vOo=EFY$s#_)f>3|MmV!3>*`6s5vURVi&5&k@ zF|dp}(|qd_$8nDUz7S z)?2l)nkwac`F@GF?|1L*ZcA4~*S>C+aEkbc45*%<=U6`58{I8F2EYN30+WGxfZ=|x z2k6>iPqJhf%XI~sjjB3%tc)nVDjp{KtM9UqAuJU7gd7o7!j!kESo(LC6|T5|7gB?~ zfD@7=6gWZd`&U+4$=5K=Mr3F0Y) z4s`eo9;ln>y6zn2g1U!$Nd6dLGo%%fi~T`tq1G`bvi7lWvfV)j){>iW^O4<O4xGNcQ^$7#vOLbACVBl2U?5;)1lY3NK)HZEsl?t$E%+}<2Q*0NM>!na60 zdktwGyvMyy&_(9TfJJlSa;lT*A!~q?kM)m0St!DLSYD2 zY6=U;oy4n)m>4x#;ERGq#YT(@Z{$c>dl@^aI${~lh58D601EfhTnOuALxcL094|@h zgY^afkw#6gcM{;hyO_?K0-gw#gZQA~ zKq>G9*apR*LI}fXCG2M2uIP0Mqmy6%|1}8zWhyd4GVi9hrS>L&POOd#k7h?&!+&z$ za`tmJb2G!6_;^7??6df*{Z=O{Q!r_U)U33c6j8D^X;aXmhQ!*UKJZ=Kk!&4(1SLqZ zxHimsGy$^?>j=7TC$)vKkVRoDSQkUaQzzp6@VkJcj%9{p3X5n|PfXW}uDITRB*)a9 z=4Q`fs0#al(#g;;BboDPF$5JH9k^)&>Q2bE^)2hU5L}fq;Vm&jwn0&@yr9fd{4HA~ z?&t+~OFHoFzuLaEJ38^bwW1R;imFLduA87=t{hRYxipr`nP(Fafa!asUpb7 zGxRdeH$|i5f-t%3aO;7FteV#qykE1wo&0>}lj+l~FW&F>ewWn@ZNA;rBtD@0ru$|3 zU`@0`9cV|6Bh&HLk?hQM?RH0ddwj;g8(o z9Q{MZU13!F-TLf5>>rTN_VzZbF?H12fiZu`PmyL%_dxM{Dnx)b9 z-Pz|A0DVvf`Z|6o#YfL##;{+oM~61B_p#5iP%I^LFY6C`2lpb69|eh1_Vc7g<#hCK z8dzMgtRQnxot27^u@=>#to$|~Uwk6^`oPK2fH%dzL@6|Ndy zH1hDM7bC-lj~_x9Fgi1~-|47FoD{|{5)&VeC1LU~GRzU|bnFlGcw{QHB#`D*8DbOz zdgEF%YenT*->N>gyraGCd~@L)=+laCiN6uGuUZE6WJ|58Z@OkftufU&TK`oOQ0`V9 z4W`R{eX*s|x!Hdbat@(Gzrha2#-Xd>72uJ9WDnE1$G*V+%Ms~r@(KXYz&cnXQj01> z4@B3YMxq`eQOI$K{qXa!5-13g4oVGd@(y&ZwDHV3eUWya8l*~Ab*k*@1-dsztTn~4 z)Ya_S;oay<@gaOt&n(Y6&k8Tde=qPkXx{JP;i&PLpV$?+2{;md0O1JXH1Q63B9%cO z7P5~CV*Oxtgv?+prd^_1D6N#S)O$1*eI{K)e@6$JzpK`t#Gr|KsPKitTClnF;0tjKX5243WdQY;jGw8 zm{Q~tSTnFD=!pNbvIOfitH9P|S39bmBG(_+G1orVKv$Kk$34gQ3=jjc!%3KWTma7@ z^x`rxJfsr3B{%^~zzbmv^aDF~zamA#fgdh6mr_kh8^MwLP=GH}g!n#!|y!W16|h26MgjeFhze zkHT089prf0HQG(uLh2y$K|(e*9A$>ZLtcSi0M`LyfN`K>ph=)M;C0~Kz*=vD8{vqw z-ZFhNzA=)_A1zmG0mnJlSN93`HCLenVZCAqS3i~B6|U)g+H$`kzV1m4r>3mtNZq-{ zrL8YJ!+Yf-yA-E*pj@mj)XdRt&CApru+TB-u zHoy}o4SkXDo?0E!%FgHTICZROdM$ARx(^)Y#n{FhPOBYqm2{)zt2jkGO}s)>CS2QF z){XDdbX0V>J41U;3;EJVN}Nt+nrmO;F7=N99fnRoq@p)ti-Wtcijqn%2@$f!b9RS? z@kd9}1#bmx!R5#Yd~jGSOH6IU=OZ)0M}13OD%(=aUuKSFyS2mq+|}pZ6%Ya&!6Tp= z=vwGOhz+zE2n8(j*Lu%;cU38_PUFyYW9WANZ~;I1ia;FE z6Sk4HggPECK#IYu0(G8yt{A7y(dn2M^#3&HS4W4v#D2<#w|%wlwQjUMunU~iT&vtt z&jRmHkJ8O|_1b4xYfQ@wqje)RE7Z-Z&1#+IoG!*_w5Xh3zcJVYgJ_31)Tp`f#N_a_ ze(4v}nv&xZ_r{d*zj7)V|52V2USKz&-=l7#lF;ihZ?J9na^ht2q@ekRQb$u_$Y>$} z55itUk3k(owP1Si^^{Q7R9;og$K=h~;DP50=MFzIvTo#~5l@F%3ttq#^CdZtGciG4 zE=(+n3yrCdN{uY!$MDvK9|#k1$8gP|8a9*lFJlmuPLg9GC{)lKD*eTt#m-@NqovC9 z$*@)j(hg9UD=muuT~{fUcPPfFOzMZ)?Ru}F%b0J9G~tXp^?pDamJrY zYHMpLX?fq`Ykk;$r4!n-UPuTP+ zP}b7pm~rf~&=(v7XFg{So4}k&W0N5S1qO^Bgj$Z=g1m}cjpCw)BDcYxK$+kffIc7F z!*bnsxNJjgpRI?jWa|dYThj}}RGmhRQqdG{S+(@2#3+uHTo6Z!ABzy;dhx%Kxw3TS zU)pcRRd$J&1YVCAiTy^@QNZ*c^s)5G)a#@_xaJ_Sp}@BT_kCSnqqo=(2Alx#p~Y|$ zd>|qm9uL_FcuH9lf;=BOJM_wi_ zXTISHVrj{rGcWgt4IVsf%IJ0Db0&?LTKCu0>5}OaroWi>ZtBX(;S;mRL&nI5M->7G zw&$M7kR+c{T$$#ISVed4z z8On9HG|g&Ya1I_QM=Q_EL!?8+=|XdNX=h(YekZy+NqAmzS1H#?%}hs%oA2G{J?(w% zS>*oWyz3~lPqNq9QteKAnZxVc=)UP$=UAwI+nFRd~LKO z5t05l=lTFs{*M8Ra-XLSj++p+h=PZ|_dGQ3)NWK^)VVsSb(MD$^a3u6?hD<(BS-ZU zNTR|cZ}OtJovd&4&E&IqFnS8?H4y5{a7EeC*3*`67K81)6Xw*6MPVo555bS+GVae%GL_0+!{JQrcbd?Rk4U0`N&nt7hci7`jxHzZC^T9tAt6_a*7 zRh$A#mL>>dmq(TGPH|2%!{{H$UBoYhgM^EOrNn-u1>|9r?UZ^-GkF)W8B0Yn!9||^ zW}y0*$lgA@aYOa>ih;kG6|buz8(y^I#Iv+1j&;Ck=m_$P5E7>@yqr&qycc;U@?<15 zVli)f7%lV#V;Gr&)xl-}PPw7B6DGgmdyuv|EK?j~JPQ8<&>`4#R01xZG@9;W@8ew; zbj8Oc?@BAqh{`;ku{dpNGBObxtBJf6{x4?}b2IHeDFuHMC4}Gt9~>-WfpVnC+(~ZD zXdGBStFEB_W@B;7p!V5a5xr~rBE@+Us$`XToJc8D^k}*Sort#onu_YqR$czR;%D!- zf4<)N%KM)Fb7Mtb?faH>Jzr%a-7?#+U{AvW^**y(WqV~z(!k|^N%W!-;-AtH%0b$v zMy8c$kG5m2(+!tYLnQp}l9q#YKPpRpdw*>!e^Sw2Wv|=T>}qf7-rM(D(k}DLYZY&m z3)Ds0di`6p`_m?M-$XNNcj-OGR6pPe^2N1auc zIWu!X=6_kVoB?^)2NV|!D6Af~W8|aJJH{lAc{eI^#L}X~f@A%q*;g{&r}j(9N_HfX zlOH6{NXbr}l?qS&n!-s=>31VOECv_3JdDSJ(6R|vP-W0c;30ptNA2!&i`_zx+qV&5 z1C4>_q6oN15|DN#Br@BK#^LDz2*#ngq>I&13azRlf4K ze3xvVs6=~e@X@ObP=az_Z3vw?Rea(+~PRAP}g= z52Ye0MDa~M-jHNPyC(P!0KS2CgYSZ$fyaZdfR_+_(UYJ9uLEX zp;sUdLc)Ut-spbn)Y#7ioAHh9n0=9Bo%6XX#B#*xDPrXk8@I$U5ci}|j zxRB!|Nta3K#=}fg8al$auILxfnZv2&c_wqBy>=E&QU$ z=qOGkntz1b&b&{>6Y!{bh|I@z=31`m=V{~AlhkTWn0||Ci0!%SgKs5pIAjs@3uGVY zjQ@{|V2#vQC~KvQMRSE6y$Ql?eGf%!iCD5ua$2nDixe*DA$Py;>gi4q#!HG6Q0-6S zUF#udpWE(@@r(RwAH_ey*XteU6?(j$g`RAW+1=^>;7)h{aT%ODoNmViN1@|bkV1z# zZaJcY1i!<3$Da<+0tJvC&~5NEmQagmMKlg=J{3W^O!VN^ zqg!A!&{!YcdD?PXKUBk0y;D3@5Y?M>-_3_zYQSLx6Q4=l9P)r!9WsxWMZASP4;<+d zn+|ATibXP+?5%Qu?y|+@iHF?6#8cVqI9|5kN^ETW_V{aYLt>?ZlaW98GkMJLgWMEO z3|q{A(6FQqY(8={)DPqbZuv^QQqK%G+O^Yh-`Z|!(o?i!RD6X%zFRg>woyJ*2~>~J z9MQhgB^x#xq=w5zhsk50>5P0lA1S0tX1wbWJ=%fPtSque5L>z#PhZV!u zBebYnn0$O2VLkC*5|B)z)KI@O$f0NXA#v>~tvTBY&J6oA>f#v5sN7*?1BscJ-g%p={)9&bieTQ^KJH*1PTD1fRVsw zfP=v_hI@WH>ug`lVuM!uSe>pcmmQbv5P^lY-IF`-v=42oZ*6Z)Y#-OPMW~Tht9P2V zIbQ|F!iHk9g7o2_ZlsQ-#1JA-1aPB!x_P0hSXA4Q&=gV^UOlHOx@J>-YRj^&_2P%B z{-(*!^uQfRB+`Q}!Op=ii?VWRVeKz!vt%%^Q3oQU^VbK zumaE*Q26e9s-5NbA3-x+V=6K3GOjRI8;_cb%_Wut)=#!kK~D~K$9sl(M+H4U-xuxu z?V0YG?1}O=`Xqs)U>ht6eH6bn=&mw)KSnogJLMyRfY}dU4o(bId;W7}J0qNChse3s z<#eIlO|GX-vIAz%u|BXIGMAbso9CIQo0CjpgGYzeu2e0PuaJ5~J$-OdgoLIb>YiB5 zJ~F~W9Lzo)b-3TY%#Z!I75pqLDbf`Yi?$EWAA}uHnO&dWkbE=29dk7b#vja`$l6R> zOZ7kymj{Plnn_f0MTiu;HVT-IlGt79{KE$&Va05y}SK@7ywINeN z5n*S-?}tOfcL)1G$oa%s%dHJN!+RT%6jc>KNh{Y&+Be{thXCwIUW{8%fC_+r#Pv zYx;f4nAv|_!QVxR!=?_4F6tR{HrJavJI)clj1fVY2bTmsy9%tuMxqX_$yTK+k0{0| z6!JRx8u=Z0rF?}#q=;6IQUz39L2uOQUm4GumYF}9S(ZEImF9rygz1fOkKvo{xh7Ag zlcB}Jp1e+QE2i<^+Ur#t{(SuX?ssQ}pz2ypX@kBcwsU$fLtHMaRhU$#)vGiN%?9-# zm0Yn>K2XMy?h6{q8PP!TFezK%RMQO)EE&!@o)+IA|4%Q&{mJ&&xJTU}ogy63{kjv< zHK=EA-)EU!jWOog0PYqa8@LF(4bmTa5uyX%2Au?s1r!EC{0iSh-z)FHAlaJT2KP!& zp|{@mE^r#O0Ln+KLTBMB@EF1gTpnf>;sChF4{=E>Zv8y<8u>KwTwz_;i}uOEHjS=d zQX5utym~}UWbM^@dNaCpUx%@KOy4_cw#u)ow(NF?09U{xad*f8#zXd6EHjy zDq!trgwqaF?vc-s?^0&c(M&9-mA6u`JpN5maT+kQGfR~{JLh`#lPpo@&y2@uzfyGl zZpEL7ITE=p{3&}r!$^rIRTG923W-Frf$C+Xu;z!}4HdDUGjGrnC~(4abS3;eq#DQr zoD7fvXMmSMpTOrKB1kH90kju-3zmx*gEC;Q5HyrWjH9er&K_63HlEh&b+2^G_3sV!rhMxH`#_hOy)U!LHd65czX_098P$zwUoAKjdp2H};7^#DsEaqoF=I;wvm-scMPWxn|7ODI$>ePW9)^Xe zgbV-$rgNX`wd{Y34PrY5vu`xaC~y!nVil%+B{+<9luh(c)%le`SO=(saze!dni? zM^XqcXa%7k_%~t>CN4>VGgDm&W4l+7JCP~M%$BZY#YWt-TBb7G*AsGM%^Kl(8R3Y z;aO3w-GUtS0kW(+(rt0M_r(oz$WA5r*BSDb{S~ zQ*R6~47wg+3?@YtZXfPE<~ni()BsR=kGXE!Y4&tSv}=^F88`>lh+Kn-#%19aV*f@r zAzGn0Q2)SaZ?p5T{gJiJEH{Q5DMq4klCjXV(EQl4#oB3mXHRf6*;m+Awh7kRmKIZz zDaz0aGTr;UzTi6j8%)?Qo^&y*CmPuj8*cLiRd#?gkLw>`f(F|NQp@dANMTAUeXK;`4PDItj{z-Hu=cGT# zJelp!7UYKIKFi&f_d9ROfW85Oe0Kht0gl{^?5MP-iMyi5@LsSYXkEm9_!T$_ZYHso z0ttB%I)?W=a#!?{*y6awaW7&?v8~aIqu&c61n~m6peYI}NQ!EUSQ)XD9|+G5Kf@iw znHy?mt!0i3iKgdKkCU$B%g|Oh9zq4&@a}M?*=kG``aJCtRjMLMHcMg=9q)S}93kA$ zd$TvBcVO?gZdi9^=dh0b?Wndzt?8{DEx%hlE#q1g&EJ}e8WS2$*B8|}YDd ziW7e8?$Wvac&)#xh$`Qf{8S(Fh>4!4X?h{6g?kzoEp&VI%L(mV88XnCN*9dHb^@3gM6 zZn7$^M$1O?X=AJIk)}wcQFs(eWvqsvzhv5D(>h^Zj6W*yGw{YA=}Y!hI;YtmTX?3^ z`XSnI^|>Hb&ysYDrixNUbHxLsljTR1cJ*l;%@|=mZJB2ab7VL_yPkTu{u)3Vgo`v` zCzCNDRL*MNu*gG#d(rozr$+xJ_!dctjE(T|U-HZO^oZyDBfJS=<2j3%JE_@(Xfy`i z5BveJ8&CyE0N;k*Lh^A1#18Tts)f=>s>QuUrhv1&b8J=mRZ5_=rf*5#NYORvW>uka zy8{Rm;i?Pl!4n`z+x?KUdPmq@DeS zC3@m6#nePWBGV%15$hsMkq$v#?C=D75;ldNdLxaHE=s$S`ZPH%5f)Rzi)S^GE+H2M zR@pb`&dM5k1)b~K+FReW%e&t8U6=3F4l)NEx4n-8X}}`j9Kc2YeNU7t%bst&Z{BG- zW!i3{m`|BaW|#$Ueq#*iXKC|PmGYI6T#>zZT@S4LZ0GpSOP%np(cQCq_lUkpmntXe zNaig24>!oa5GVt`2zEXNf(7G&$UuX)AUFd=dzn>gwwWNtCcRv@N!O*Ds9$aH7~h+D zR++WfcGr5woNIic{i=K~IV>#cB6oDQ^=osqP3f4|h3Z)@yx;duv`G9?jFPY=gQdG< z8pS5nc*LpcgV{z)ex?~ z+PTCkF-|m)3||a?jPuM`Ynu(==ydcs%nptHX>cW~jZ}StW{omTc0wE>YUwkHaI!P1 ziH2XcTCW`R1aTcxkIToqu>H{r*d)*t-zTTo3bgDo&k1@(qi-Z+JK9Z>hFs$=iTGDA zBL);36Pq5R6(}dhK>$B8%pKe=VXPA;nhSe6ikb`8MiZGT0c`# zMQ~a^q*rH5%4BC?QV%CaMPK9^s8iAVfoGhVCXzNxc~l-N=O{)ix2d$MEOne3s8%bv zs_!bM_MxHHB621M#zCi{^@JKKF=RYz0Q(F37wa+;%NR*(CXXY2#~;AOVEbWi2Wdrz ztU_!@gu~~<=D=cMz0gb;0`>=54e^2Q0}8!mj$-qB?JEUOGQ4lDu(WTGWR>!+ex=Rp z*#Y!Hha!ie51_B1wj%~ZQ$gflf7dxX>>}GDE6+MUnB$G^!T=Yt1S!M8C{o5#_H6Fg zaBKKT-u3X8VYsjwPETkD`#Wns>k*U2j9?6)8Auk~I@AQ{)W9j{5;IDBOMXNY)0@-% zrOVfi7LE~Zl@b*-s>7O8ohV3zDqXW~nC`gtrADvrr@E|IBLhjk^iJ+%x2Wo1mEV3| z{2Kmg@Q3t|ZJ(UqN`617dDOhDYpX~nb1U`gO&YPPTyawRL>$p~yZ1`(U7=n?l|$6i z4R5W7+~@s+LF*tms0y+Iv@cNX+3C<&o*L-}u7POenU&V_&b3}n;0|yJcnWwsNFGS= zd4gnEZy#uQ?o z=$`GDgA6brx&XhFLJS$iN#Ktc6vgQi&!*f?TbZ#ZV`avlG-XOm(ueq4G1#a?-d;{0 z^AaPOc8ros-b~&_DWo%531Q2l#wUcQ*>lPU>I*jwFBnxnx_3<9*c)SgV=?2;7Z07x z{p-?=Yabka2zugw@$>D$&x~KAs!$D-mTT?9x>|d^eQZgJ ztXeTx?b8g@MHu!O)usoQ-?oR&O~IC%17l+?WDRp@_z;02wkCdj!ofI9^kUvSwu0)w z*P%*bx4>-Rrocr%+K2Q$a8=uTEf(X4;3U1#@$@$h4Mvptrden%Gi^2A)j!c}R!QX; z>2`5xU!3q(PkFbeE4%ALN1$zB>(J&wjs5Fq)Q+!aR=xidsCZlP@K0!!w0eELr0HQh zpl7w{u8ga4YhG)A>ah9{9Zq*q*QGyUstV>i5 zVGQbZkle2YQUd@$7AO&V5W&N=<9Z1w(h^c1(L*?oSK_qTh1dg_rRe>r-N<$D-;hb5 zlYwJiiA(L6=%{imb28jZy`_F0AQ4CeO$#1c;J?5zzzska=rrgmxC8P4YJfe3PeM#V zlF?p_4DTlwg&gNVB45RwOrDZX%sih#O09{%%g2X|#6AV;?aTF>luu*~nNv}zO|sbB zBfw7d6Usbx0e?}=? z{VE9N2tccMl>3F#;dt#tdB*x)0_+exN{6c^Lm87<6GF2>easHpB;s+@d~lSv+qTJg zUOP_>2`2VX%@fTFtx&sJ+o6tEB`Y4u_|oB$>C!a$a^-ie%IL72@eBnlgj|FlK`q2= z#^P|(aPM&c;i7R@u$h<=bPsYVf)2MpqoJ>$Y`6d^#FP;FC|ZV!9UIon`!|9TIVo~- zL^NL=wuSSWRmzB@ZYSb!JCO&WgMr_?7aYUQAZU@>Dl<&rAbsdmaC|*dC&{(|0?t2*iLDqqukvS4FS)#>DjZsf?7ue)HoaV`fB+;3tLMW|xFKqy8Ws#5xfHaD@N1 z>y~w@aiMmg8lhw>REn?4wd#r5)B4-SK2x|Q#roO$!FtMe)0SkH+asI^x6Hl6GuR99 zesX_uM%j_UMAqvLX;U<K2JP*Z zFT<1Qayet1LZ`%4?;hse=-c66@V|Rv20Vdxfqj8B>@(I{(<~}%|-k|?m-DrK=f495F`*W4VniI z0siz4_A=aaoXZ`xc8z_k(2?~Xr&3iDGnRG&NYCM@WbfQI3d0O zUx<5*K80+At%N)QfkEei=RngTl`tyuGCCg1!l^MGsCYOFG{L*V{@7Tm-KqMjq^N&u zpP2d_)qXGJ33?{cN?j3xXRT&i*aO%Hm`6fJ(7Pz5q%pxv9g5kHDnkr~Rf0jl&Hg_3 zSVyttiT-8ZrCbst@lszB;ut+%~M=ojoS>WR?x{9Vy)u{rVbxT4rkg5eR9 z!g|?l3lHZ;1$TN=x3O1*oW9F zSP+(gE<;4YwUDFWJn#|76}SMyB}o}6VQGR*@uf-oQx&NPQtJENi|dNI63z&H%NRr* zO6tK^WAiaMbP4Zj-~v|MR-^nhh~+D>bg?=CbxXnl2z47M+HKL^06W!sqh85uMT z`5E4W<|Af7E&(?B(%o^cQYX|04e}n49ts(uP z&1a6}9^;inzKc$bD~OlHUx=R`cQ^(UJuEVX-yZgk`I8C0O6s zhC9y$pK}-d6Mhr55PKb;L);$h-vr`tf*_bC-Kc|zE@(P95f~My@`CD7V{hBMaCjeBR(LoNHsD71xIZRrr}DM77_*)0lx!h z0ULpl;46?@u07wI@Y8JmWAhRMQ-2v^8wXv;$8 zu;lEY>@)0Vta|2#5F7m|%}rTNUQR^e377=r3aAMv^uP07^xW|ff*rpLgn*4e9!8g9 z%W%7JpD=Bx7w~J4uYi1?!I^9`n+6%a>H29wT8wVJ{+#iF<%Ye%b-Z zxV5+foD4Gptwdm9MG!4;JK%Xh>lgc;dgpl#yDavfmR{p&U8{PfimZ%PZB{pH_ZUEC zL~ueP9ifhWcDQYvrNU$~nDu4)5Be_SK1+h5$n!VgDa42PiusDKC0-}pB2h_T;%dSa zd^~B<%+3NJaQ+_9aV^;B>hu)@D;QvLELCK!a)>(#;YMJb+czoaD-ZeezdQJ;> ziBHMLYS5;7#~}YY$Vt>M{H~w{XRy0D|Az15vm;kU-4Vn^Pl{FxCPdZp*Mz5V5X{$9 z66rnGip+!k0BHgXya@Mt#~_=^JlB+F7^YjUIi>m~mrHkxWx`QGue{ja+Zxkyy}7mN zpT^e>tLigrKUKy2d0MXe(f_;WTmJXaKbaM{nqf_-&Z(k_s!N6s)`70yo_*ebJWZ~{ z4uP%Dgfvbzhz)a1NmivJ+q2pa0saP#2c8S8@;V$DmOr{R%IlIYVP4OF-O!#mVWc=h z&QkxaziW!L675gz1jiZ&-@e~=#zwR+wdXrr&b{svK6&6tkQB!vXJg61UA~BpX0B%6 z4qX*m&DMnUP@fak7#N}+JU-aRvjZ&v16Tz|VD{qwC7q_oC{bh=;Sgp&d=_xLC(ouZ zG-+~_a_Kfnt>}r6)_c24+s<#@(TJ(rUwyk0Sb47UUCsA~k?q_1?yGiKR(KmAGtu`5 z>&TDE+elix6(d6`UvvNftL`U}=+?h}A0C;~Yi z(;wH1n~8gc{e>Z5pqP!AHY|v+f_#|%iS;?`O=KWuef-VD+(cb`X)Hx>nMdbzGW_Ix zd>iTxya9R>G8|G4HNpL;xwu;59V$Fz2YWG>%_BwhMt+Wp7yK(=3o4>UN5=B~+?3F| zkj1ohq~-X0OdfIt{1D6rEr*T>y2(}8Pq+$hf`=iza4J%Ve2U7$WMh}&cH*`8xA;xC zFIYUb0CN=c2xG#w<7)89gcw2reld16YCP;Au+KZ*nPB~BT%u3XIkW?HSM?8!L`$a) zO9i>K|E2;R;6gZXh-U3I;Iw^NmU0_yG{VcSCwGqdQ0l*hz;{5@b(f{Vdk(q|+d#e@(h?dSHY4mGZhELcq=hOaDA9WOAcz7mI8f{t_-6(T zfCr!>5E2XnR|k#o2^bEX?B{zAIVahhZCsncHrIaEQS6%U26_JS^tmUv{myg;)3(Pv z%5YdCS3H!~^;LA^I(l2h&1;)_o6fX!w@>bYO6IAO4QV!n+vfWOUu?kIo`Qua6IureD{2PLhEzZ!EQ>MVaw z_#93%`!+KwWGv$y-9rmdOR3)|;beJ`rz224=vENQ|JE(CzqN)~BFtCJ8!S_-S8QlU zuFK}0=(`ROgH7;j=vnwW@*xJB{f65TzK8cuxQV+w6wMq>FQZ%{Jtrm+wS;X1G5&Ad zJM=ijC-AtyQy0coY>e0bP*UXwrFSG-g1aL|+AMt}TPA<3NLC%yjMh&yEwW;q?>&|N zWxz$?YmnIx3gkZcFo*#-;G5^ka6)ZtGt1atpQW3sTV^y%t@vc(|xnwcE}wPxB`&|X`l_oK+c5H0uP-ROn+-6vJ`PmpQ}$H$qz2y z0jt1s5I7!w6tjRhnd)T>VSNY<;T{b;9M;R#a;~vggdC-wAnwGhfw=)6+?`gGfv(yw zsqE=)Z)+}SSYMl64X*lJxwq;|bxrN%`r(b(W`E1sw!#ih7qzFq@Qi4lbbumH6{#U< z>Dn&!Qe~?2k_U9UC(?MV zM;vVU_wbhR=V3_h8#a^`6>@-Xr;VeHq4DXRjLS?tdmJ~Mw=zN>`5O%oPx!0EV)AXuBkB&?VA?zynJ!@53&~(hIW6ID`JWhG=){RfaIr1k(f4cGFE`o#B>V zqg$uI~t`PCimZS@j-wcg49$I)3vwY9umJnrrxMhNauphXMR-Ai3>_14{my1P4dH!8Q@ z(iSLC+zBDX-QC{&-*r|#*j^3y*bevkTQ`7-e9yzk1Ni~fwOzts+q$TT6g8NM;#e1rgf z3%wlm2KEFL=KE<6HGR?ir-+qBN*73rWET`8)a|-FV~2URb%*V&UG3QAeC!7JLICq2 z3CPn}5-E$mE~JQamn-3=@Oa!j_Lz`x#vAGdaxqbe-;1ln#$z+F=dj1HVr(>SDef+I zBIYA92{snw@-Ox@ICT!0k7HsInv?z{E0RYiZ%H)9uZ?BI zv_>6`%!v3VC=LVg$)Rjs4tF;vj`P3sQI~T1a+|qJxc_iouqHFN(?*jw5fM+FN zTWQA`!J2)F*Rn~n?TSh2(?MpLWEp7#*~FG26GHD%-%*^GNhKR3LnI5NI9Z2$pJJYJ zplXVGj{1UHqn@Z)rzzJW^eiLZ?6C5kT^=-G7sP@{$BiSMqm?kfvd3|`yiDFkPFqME zy+7#%<`fJHNO0?{4Tg`JZp9_pWXbN{tK!+cU!~)f{d6&wL+)(Q1XM9`4gDKy2X`Ou z9M{Ft(YKKA;O-&gpre7|etXbM_qq=< z8}bVHFmTOZ9^`B-Py|826OgM=+fjwcQut^H1h~$Z>uz=sgZ|TKf9x3RqIeXZBA?w` z>Yd_^_pEgFIBIQG*5TH}mX{W=^`7;N?S%b|W0v!+OXE83PV=OA-g&kM?}2!`JmH=b zuFsAp+c@(OJy5+=_MxY}v!Jb_1<^9Mb!hv_u4_G|Qn)Hvx7hf_^3X1J{_)K4kpplb z5tIxfgI)nY1JHp4pUWe5tq9ggyRu*f0*(32^{iIcILP?zCAXe8)M;G-|fllK36U>Xd+b=NgB)t%~OjY4}|FE_F* zbFE!Ak!^=H#^N+~>iTOADZTO|@&gK~s-Mnm%5)A6GC&II3jQZ~7Y)z&!x+Gv%P`X0 zX`5&#shg=OG&CK-05ZFnLqpDn)HB1Gn;E0%y;Kx+D5aV_pZtxaA=(Lb_`}#%)I#_a zNFH#nkK^v|$gy3v)S7#OikfUP2K9$%RO-q425pBzfoV)e=!cw)2KH|*YQ~x z2|^C75AsNnufo06iL(!~^fAuXYqi&d4ye$o^}*3Q9(c@v1JE7>480UBMvX(hflUQJ z3p9Cp9RcfR(`)@6ZL?;PhNm5*uQ$H7esGff_d#&@9W)3}Cn-pIf`i`%#56j z{zU}?2CNuZF|cRAqr&m|?(CEdXi^|j!ns75jqU^`d4^cO={Kpr$}^>#C5+yE;_{wd zJ#%~higt@)x(^CZbOAfFI&AGx9fR8Yv|nrMXtlI_ZJyP%xFMoGyLMa6uxiPlDSuRz zyh>1|xq??Is<2mXtwQ~ct?$$PpyO4KLhjMsvp#SW19L#rA@?DLU=pCiU1arY_saTo z-)+@4WYoT_Ia))nHP_#59@(K2^~gSJ?_2Pme9%PXK)jPu&IEC1@c$9)i?|wbGJJ8E zoY#lFm(HbZC4^wcB1SWvV3vQ8FT)G>jByWe@txo8hwXk_w0)$5?E2Re9k>I! z30sIVVZHca!FAA*XHx1YPbgm~-IR+|H8|;zx$*!)n8yN8FAa7gZB= zB?=t*OmH>yDeDAn27Um1RG`%E)D_9B!kew-4a8bj&8})w_14;o`i$o2c41d-PnR@T z`9%|Dcxo=T=epDUPS94k20efPrf_K*I-BWc+-1bkA5fo@4-pdybo@G;2MfcE!X@El zK|=aUpb`5Jml6S_iKLsm0O^2#{Uf}cu89tv^@-(%WuT4Yi1(ZVoPkwhK~yhmec1iz z_woIc*vZ$E`X&sDIUoRYP}J3!dJxNHGTc|B^}O$Zwti|(Z@Jp;=~l~Fx(T-3z8{cB zs3g3RxR7*$IEBE%)uA_`egt_j68!*k6t^FLkT8cZ3-8AkqyIz9fUSbe07rq}fPX_5 zAaXDngj`BC6UdtyUKP`rq)RtuiTf81s2-Fv1U2ORz~A|uS=_YTczk$WNGS0%-0xrH z*l66S5hzLWZ?YY7fbwKeceL6u`b@(lqu7{ZPPV#i7oAT%e*Zb(Zm(DLmG&`gI+Q}i_*Hv_MhG7_~{~hfBFZ3l3?$V-Pi-fy%Y|8B!j{{$oNh#r?r!}5Mu}^ zd_>Tl9^=0d36$_)RorD1Fpo3((XrIEq%eFw`YXH#oCfUmReL_U(wutxa(kSe;D~ot zx;A>_0{?*;p(JE~%tIW8P(pwcPU45)mADu9nM4X1PusMVRyWtxMNjP*-T|y7}fk&Rc<3@J)mnjB?(z$fnqWgp!2iaY<3HLl-l(gjD2u;5PS2 zTY>qVkzlGZ-M4huRyn<%>HcoebyzqGjO!tCsHf=LnR`Q4F;CDU3VeQ!7Ij?K7FtK~4NZM1^yIy)mo~b&hg&3b$K05yQoAEmE2>2!R zK>R||HR^e~n^DSq$DG4_Nk2#XNiHFL#uOtCfgkxp-8=2cmf@yFrs?KJ>n`VW?^oaq z*pDDj^9fYaZc-Adj<`MOp*q|k+-NKv8-n4YorrqqUeIyh5=VsTvih^+jL_P8sPR|* z$GSiDYnx|voa|94YV-xRkM2EyX;1_508UEoWlZ7SiP#=@KczKeN%ph6dHEOeEBpPokp!ZBx~y(*Ym3TkMO*ZB)llxBg6`ac3tZz zZZkB|>+7q>m&bh{@zGlP=-JqZ1$X010Jq|9UAsN){@5pmm;U#>Z}sJ-+V`z1MHB^A zpK4{eTm64Q#n41}0Jb0Y2Qm~S51jYS@J*HD>qcuq?wmcw#i+74Dgd4liUF$mscb0S> z?gVy$yUbntx{ve>kp$$=G>eTBY!UANy(_%|U5}cnNVPrJ5GWT+EK-Jqeo~Ns6tA z?@Zj2{3rQw(zAGJR0BVr#U`6j7r~RfPi+s4B5j;nsHCgn)ZaAA^cziQtQ#EvxG{bO zum{?XT2APoMzO|(?g_sfjf)FQxR%h7&?ga`6ra2*<#HckdSSokS(9^4=9FbG%w%Vr zPU#y6-=_PCdOJA4^_ynm+mhRbDpZ*pnxC`!cz zoeP?W);X#oD=p>p%4Jn^YKJxPIgb{Jj%de$OhzH>>pAn{Z@#J{ex@d zz}Z+vH~A&54*3asAGjc}*q`BV^^*XJKnZ9qWDC>=4S_|$lu!zsh`5dHi}{7WK;Fza z!A{|yju;vph#ekZ7r!%ZWz6r$hk{$7F19m-5>%w`G(N3@ilAPnc*t)^5+ayrB0M4h zi6Nxt#Q(Kv9VgWUHwI-=&A0kYf;xf_)D)wRaO02TurGx)^MUl+QAT2_0E$2r=F-EW*%XG z<5>o{3dN&N;L=D#DIL`9w3)QER2D@<`W|G2RzfbZk~ot%pTNN@FnK5&tOC3OVD^=I ziC%~A2;d~70r`Uv!Z^Syio6nEopLSXT;}X-VfMKkX3qQUitKSY{c>02$@1RkadTCf zmbC7~y^-HIP2_i|W5C0%8*WD2d2*ol4*vjcDY_Pc*LtAb>C(mBIj>#6jbeIxvzeU;wZ zZinNU^}Ok!ezbOhdaH`Bey-lB8KB#t|7zH0d~Td+R2WtnkVdd+q1k9X<1F^x1U!Pw zhZ~TaP`$|62n{qVSns_)rZ?O(+9UT`{QkU5U((yNQlt~z5Z{r8sP^fGm`JwmPPXT? z_m}ULe`laGc-03+1W5jsUZ^|7vEK5+5T#`)=gHp{yw*MPHtn}8+2Prx~#CEyw0D$rig8(BM3fcy}fv87K!H&aw z@$Cc<2|}JnG0|utvD_zN3!-ZiHuO>V`;r@0uy?@s0Urv>`@hM)oAETcF$N*n%^@+s z6f_Y}7)wwQK9OP+P^(^xZ_W$w6_;o(Mzh7V#a4}>a zVmbB-Nk}hemxZPau7%GCcZRj|rm$P+P2?$rvDlgDc2pDUDtbQl7LHE1Lu@65Qu1g* zdMOjjTE!M}#&IWc!dT}SugG24J#Z#4;ND}KXEGT|4698gHiElPAOn(vY{eYG`w4Us zinNq?fv^K_!x8Xv@n-yF!YSf=(syz)WfJ8tl1 z?apW$-}tH4Up=6DUQJVNUE|R9$D+5g@tOt3HtWB^mEGa4as?dYY_m->brNNyG+k8C z0c6S-$O<5*#g1j=#z6ZCh)HrRF8N<=046+urM#7P%Gq6fsG z<4b}%dpQEj*RZLKew2;GF?blRA5MpBz<(vYB=#pgCH)~mNhZP){0Hn#v^?lXZ$S#b z+das>()2^yPZ=lOC;rw`)f=g3(zaPseP>|1@!RMw_TC^ZE(m)a`jXQaGK$`ZQb}wl zJR#T#u%Om0AXXD7ght#+>>}T*=Jf3in zaDi}-I4oG}cJfY2E`>;rBd)_uK>=Wiz>QwM6K%a}e5;r1e(I(g`kTV6KkfOhi=N1! zey(#H)!+a?;=S$|V1 zg6WlQiM!AT1%N?Uz(mMC2oBmF{4_yUL0*HWfxLjFftx;{x86l}_6z#kYHMHXI_n7g zd}ob&weKc?0ZxYcpetbGp&k$wu-9jCN$lnzo9wbJ3ugVNFYZ(W*&GsXRHDaPd9sy0Y5$w$wE#8_ze5Y^8NEdRtZZOt)Nf z0UGEY zOOH{HmOtzDi74H&u1w*z?sGjP$r1S()fdfW-3&cTKUnuwJww?nTP#hJJdl)1Es7;t zl=;2mly4mP8hjH9gmI!TqF@L+WD#h4;F*u?P4Ot*d7dAh|GZ_s(7-OYJv%r}fxw234IrVw^CFwzM%%~bD` zri$)%KwIxMVuKmxP)&7pZS|I#%e6lmM6ExBzh&!ncWpO)ry&PX4{;!pi#(S)gG!~Q zQ4diBlxRvaMNgIobC`u-!Ck~OBe%nm&~HIk`vsl`?S=7>rD!eoBi={6PcEPm=-EtT z$W(3(KPz%h+~8ztrGoOJ8W(ZKc@@9r4aL&RXZpU{?Rn`z$~L|AbG)oF#gx;E-bWQqCX_ zkv)Q0K)pbmj>RH>Lxo@hSOW@xk3t2ALFje(yX4vQIcz##6EPxgYVz*%m02BmhJwxk zZ3Ax&$SN3-3+Oj8wJA;!eun#jF_bc&(1iVl@nR-pUj|j4LfDN@z+FWP5U0Qg{Xd;~ zmM{8E>J)`j%9awP_0lggtGq=)R_;{JQwo%Fg+RGqiBs>^#OR_708_a+)Aqtq@3MPK z129ktBnvhfei(5DX-0~WlTj~_7m++}!_=Th>>H|g+YZJSh&1H{e zHd9v;4`JfrI8d+et!t<~%=*U+H#eH*nvYtRS()~24v`b!?hR%)v-_uOyYr$=YBm|Z zYPo8lB18H_JV|8hI@wX$R?*tGbwz7(dv&KxbWe6syTm%)3x;mRuB40)*}}UKW(~g@ zF*|ZugPw$6K)gr3L-j!yqq*o})JH@c>?ZggV6p$A=eujF^Sxt{CZnZNR1pCT^N%UlN$3R+8oJ@;0Qqc2V4Qiz*2^cX139P zQN5&v_*3W+@Qt9Uev-%U-0mc~UwSVAzC(AR`s1yn)l@C*G;KGfiLe4Q8SVx4cuQS1 zjuyMce#EJBfA(z&+y?9eP5>4GDE@ZOeb;`6)b`5?wQdZ0ip&~q4|C)>8-vg8^OpOa zfj0nWkRD4s*B#F-eGPS*&|vmnBkhnB%GM~Bs*S2BRR? zAWMVpNP|v+tOnyi%D{cU#7psnxzDTUWi{1I1cy;91Ge4$_Fh1wF4i5gkTY5 zF#IvH1M>hMLTV?2sIMuJWIZ7g8;evy>HxQWJkK=uX7_Z@4eu-eIzRz%J&+AN4xj?o z2c-Um{>Z@4z{ubeoDaIsM(A*87i1eaIQxMaKAAhiS#2X)-Wiqpdfh|ab$yGm-IC-i z^;&^PUtVdUW=Lv^8+XNS9!$FXAW>M->kQ* zY(DE93)FmE->E56K9h}>5PH9h(Y=o(v2vt3$FSE5@vwn%xD^X0Bk0}CFCiA@Qu;pf zQk)vO7g`%+s9L`~Fddi)IR)!ROh7Tv1oSCnGJ*rkg!}|v3cUBRyoK)LjuhKybAy4e zo2Z$u+N->-M5$b=Ld`ABNi9$()jrhSY~=@`Q{ks$qy(&!(n?7Zsb?g zQ&c2s2{IdjLrg<>5dWbIaes+P)P2nR>`A<}{Q9tU!Jdr?1MtuBa=7C;^VxV-3-cEv zn*N(&Bwok8LM?#q4BQD)?_XV!^0M^4xKo4^!zCC+kEY7h=ok>_gtnls60KAbBOyc( za+ujeFQMTm3B-Q5!>Il+H0ZqVv-72;S)ZYvCL1hv38TBjopD_=yBCP5@>~trG|@59 z*8_&2E)WuF237&TI^tPOTEc|nx2bVyJ?Vq`zU_A|^Lds#yEbC{I{8ii@x!}=rF~v~ewp{`P3h71 zhEKzP94!ad5F2K;#COaP_J~IHo|4roz?xC|@5Y%Hq@CyFx-Pg*yB52&&NGfF_G7kW z>kIQllUn~lo3D;gj+gaHmiD^Dc5$pkA}tSkV!axqovP(&i`7_Ft$e7|FZPMbL@d!d zQI%-6h$G7D)^#B}m$f&v4hyPpZQK0LZKAQ#?P`q?V{k?_>h^AQWABOYoNZw zZ9{m$6d*Ei%)iNh-|zN;eF3-40kC3>)#{J3Nb%0DiuQr6TUsnZmi*avrsHpyLAXuy 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 diff --git a/demos/ecolove.fur b/demos/ecolove.fur deleted file mode 100644 index 744b0c9f6d563860bcf687ba08cea23176473a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57810 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%0Dn#%v8oaAO=Y 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�UycrE!j& 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 Ph;?zo9Dx)Sn*{tXqkx=4 diff --git a/demos/neon_night_riders_TFMX.fur b/demos/neon_night_riders_TFMX.fur deleted file mode 100644 index a15f448922687b0c04126fa55d40ddbd4930aee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160437 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

-OcJe!kv4X-v@A0I5J$zg#ARSFrWyV-Ihx(6Fg2 zIwi6;ap(H2j&WNkmIMk$=Zb-4@MuIlgD;hdg(4A$MJLmFQngkk63g=|np!qCm%2W9 z`>iXf!Xk$Gmyf<2p>BNs`P~X4t6=^1ovpX z+M>#ee{Sn~pprbPbLW>JPtgyoj+ls1He0d}drX z*f;JZvdG?vTQ@o^jGX#vIg^NIi;Ej-$|S^eDup9t;vVDD;)*LvW)M?hm(35H9ZzJ4 zRNA64twJJ}L$qwHD-ltEo>P&yxmd#TcYgADcQorB`S{G~^H-fTvh~`x-}a^(jva2H zx~3MXii#>h!aUS7Z>LB(H2=)t@N$&JBP`v$a(l*0=4(_UdX_F!=4piVWB_$VM7_ZH z4HjRT!r^nM#59g2FQ_U}Nf>NJVOe>;go!6{rFj}TA0jK&Kk@15Z|p@?l(A3#`@-*D zGAq#W?T44`qJjdJXR%vHkheA!3Q|U$KFpPfNgnSkIO`z;}mq`$`DBNs+wC%>4w1` zt5`Wox zvvcw!8Ha9h)fGvlLLR3loTaiL82X&PIF2RY(orS?-N6b4Jk(jspyI(X27w?l*i0IM z#1d#5TU*L=sPVP2g@AzL9=h@Ky*WFR799QY+iTM%91Ul`^V^jXN18~8o0fI9w6eTh z%S<@j)ST+pQUN|3p(qMVL@DcV|Jc0MWiu`=n!IUZHW6?+y@W@ocF=mJ6_g(VUx zax}RLAuSya$Kk-UXy_`B!Dch5bdFG|R`N53DJxsSh)(?e%OCgWLkazzAHM&+bJk?h zk6ruy#<(krC#U?@Rab(QmzN`AaV3RKZJX+I*bD|wEacHrfYn?+pVwtK8&S&;a+$$E zAP|aY2{aD6bCt-Dl(m$HZf?138Znd35~(x_2~VW4MRJ9NM`!V*xdjDz;UF-bypFiCiU3OUJ2LHU)H(`!tGcmWt>Z7Vlsw$K`4o_WD-B_6`W^-f! zJz>)le&EEBNYHK7udW$QW~K{E5!L6?gTCwajZ;^PRtryPRr{2%;fBnZf#|DdUo0D^mv_Civ`KK zI0KOsnS;u==uB)-1rkozz}KN%0UBG$<+8CW77~F-$fB7UXz(G0M554Xq)f&@=`p0=J8Zi|OM-n(ZJ`)f7U3Qxl zyQcAbTy{)V#D|1ITrP**YBrdx4kQ_iE|c+OI=Z5hp!X&{=mj$ugvLG#rj$atd@B8R41`5_I;3Vt5A9DaHf8XI zqmc|nsFDg;3?`kJOh9Z&_)JLf6)CD4omiqLjT$$S846ejk41>sj3z5e%LZZ)=Gi=v zLZiu1ViQ>eEK<_%Seu;~o19y-dLmgWU#e8eg-kLblT4+v>4?j`rnfmgPK(82_l437 zkxVXT!os3FDH_^{LqHstiiDFmSWToHra(OdVyOU}DuY2ud-X`Oe8ChVh}4B;W#uJW zF*D^btgILvZkKtsujBUpp|RNooyir!F_3i>^sV3sYVMZ1dEgj7)HBp+@CQ7;}M@}rnkF) zVs?7)`j7v-bZgS&bOTq}JvCW|joX>#Nuq&vlv$V6;98Tk+v zB?1H?#&#kD$t)A40WO^zDL?JzSzi`g20rG#LZj{2MqXCR!Ri`Cjf ztxC!yW??-j@LZu-Do1iU+y{9!iBciqB=sYAZVgQ7OslhlcP?MP)jvBwb@#`wKmO+S zVjxLj(wSUEL4j7rq)<4@g36Zaq8u)ZCz7jV0%|&yrV2G$m5`KhLu~Me!@%v$;FukL zcv&Q01UN~E#_b3s@MDpz5MKa6Jri<3G=Xmj0kt4f*ixm8M@*n`@+qVVk;S8QGfJUy zr8xzK0HWcAQ3gc7LDG5lwVBb8kcw1ED9mkWFp`q)1Y?LOABT(n( z$(YfVvAefA`et+n-PpZ9fBp4Z|IDh@X3OP-@GsjRLjE6h`g zSrmLS1OYdJBf*DB?bwP1XB$6P}7!DJ>QpoSLqvl?u@?=4y zmXKo#K5%*zDg(R!P-=4X^YhT)j2w+x$|Xd7E_X1IA+p5^b&f(v%|tv7FgZLS8;^t& zLuM@l≫4aAoh0*>xoU+7UI9(Kke~rXS`8o^ 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

@Jkl=4Ns}LO9Yo9Q>HcR&Vv2yWz%NN& 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 VX2l>Ya^e5)ZZ<-~86)pg{s(PBp(X$T literal 0 HcmV?d00001 diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 00d899f8..e65413fc 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -80,10 +80,12 @@ const char* aboutLine[]={ "Laggy", "LovelyA72", "LunaMoth", + "LVintageNerd", "Mahbod Karamoozian", "Miker", "nicco1690", "NikonTeen", + "psdominator", "SuperJet Spade", "TheDuccinator", "theloredev", From 17dba66fa0ba5e7e49a4acea2092c38e87b71e54 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 22:52:39 -0500 Subject: [PATCH 324/580] MMC5: finally fix PCM linear pitch mode issues --- src/engine/platform/mmc5.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/mmc5.cpp b/src/engine/platform/mmc5.cpp index bafbda3f..2154e855 100644 --- a/src/engine/platform/mmc5.cpp +++ b/src/engine/platform/mmc5.cpp @@ -171,7 +171,7 @@ void DivPlatformMMC5::tick(bool sysTick) { // PCM if (chan[2].freqChanged) { - chan[2].freq=parent->calcFreq(chan[2].baseFreq,chan[2].pitch,false); + chan[2].freq=parent->calcFreq(chan[2].baseFreq,chan[2].pitch,false,0,chan[2].pitch2,1,1); if (chan[2].furnaceDac) { double off=1.0; if (dacSample>=0 && dacSamplesong.sampleLen) { @@ -201,7 +201,7 @@ int DivPlatformMMC5::dispatch(DivCommand c) { } dacPos=0; dacPeriod=0; - chan[c.chan].baseFreq=parent->song.tuning*pow(2.0f,((float)(c.value+3)/12.0f)); + chan[c.chan].baseFreq=parent->calcBaseFreq(1,1,c.value,false); if (c.value!=DIV_NOTE_NULL) { chan[c.chan].freqChanged=true; chan[c.chan].note=c.value; @@ -282,7 +282,7 @@ int DivPlatformMMC5::dispatch(DivCommand c) { chan[c.chan].freqChanged=true; break; case DIV_CMD_NOTE_PORTA: { - int destFreq=NOTE_PERIODIC(c.value2); + int destFreq=(c.chan==2)?(parent->calcBaseFreq(1,1,c.value2,false)):(NOTE_PERIODIC(c.value2)); bool return2=false; if (destFreq>chan[c.chan].baseFreq) { chan[c.chan].baseFreq+=c.value; @@ -315,7 +315,11 @@ int DivPlatformMMC5::dispatch(DivCommand c) { } break; case DIV_CMD_LEGATO: - chan[c.chan].baseFreq=NOTE_PERIODIC(c.value+((chan[c.chan].std.arp.will && !chan[c.chan].std.arp.mode)?(chan[c.chan].std.arp.val):(0))); + if (c.chan==2) { + chan[c.chan].baseFreq=parent->calcBaseFreq(1,1,c.value+((chan[c.chan].std.arp.will && !chan[c.chan].std.arp.mode)?(chan[c.chan].std.arp.val):(0)),false); + } else { + chan[c.chan].baseFreq=NOTE_PERIODIC(c.value+((chan[c.chan].std.arp.will && !chan[c.chan].std.arp.mode)?(chan[c.chan].std.arp.val):(0))); + } chan[c.chan].freqChanged=true; chan[c.chan].note=c.value; break; From 47ea8132b2a0e74719a76155b1cf5727ead4b683 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 23:05:54 -0500 Subject: [PATCH 325/580] QSound: limit max frequency to $EFFF it appears $F000 and beyond cause glitches (#256) --- src/engine/platform/qsound.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/qsound.cpp b/src/engine/platform/qsound.cpp index faeaf6a9..6bc88dbf 100644 --- a/src/engine/platform/qsound.cpp +++ b/src/engine/platform/qsound.cpp @@ -358,7 +358,7 @@ void DivPlatformQSound::tick(bool sysTick) { } } chan[i].freq=off*parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,2,chan[i].pitch2,440.0,4096.0); - if (chan[i].freq>0xffff) chan[i].freq=0xffff; + if (chan[i].freq>0xefff) chan[i].freq=0xefff; if (chan[i].keyOn) { rWrite(q1_reg_map[Q1V_BANK][i], qsound_bank); rWrite(q1_reg_map[Q1V_END][i], qsound_end); From 9f8c96d45bea71aac19b4ded40e616d0f60039a3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 00:03:27 -0500 Subject: [PATCH 326/580] dev105 - prepare for Game Boy hardware sequences issue #27 --- papers/format.md | 33 +++++++++++++++++++++++++++++++++ src/engine/engine.h | 4 ++-- src/engine/instrument.cpp | 16 ++++++++++++++++ src/engine/instrument.h | 11 +++++++++-- src/engine/platform/gb.h | 7 ++++++- 5 files changed, 66 insertions(+), 5 deletions(-) diff --git a/papers/format.md b/papers/format.md index 97e22a4e..26395502 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,8 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 105: Furance dev105 +- 104: Furnace dev104 - 103: Furnace dev103 - 102: Furnace 0.6pre1 (dev102) - 101: Furnace 0.6pre1 (dev101) @@ -813,6 +815,37 @@ size | description --- | **Sound Unit data** (>=104) 1 | use sample 1 | switch roles of phase reset timer and frequency + --- | **Game Boy envelope sequence** (>=105) + 1 | length + ??? | hardware sequence data + | size is length*3: + | 1 byte: command + | - 0: set envelope + | - 1: set sweep + | - 2: wait + | - 3: wait for release + | - 4: loop + | - 5: loop until release + | 2 bytes: data + | - for set envelope: + | - 1 byte: parameter + | - bit 4-7: volume + | - bit 3: direction + | - bit 0-2: length + | - 1 byte: sound length + | - for set sweep: + | - 1 byte: parameter + | - bit 4-6: length + | - bit 3: direction + | - bit 0-2: shift + | - 1 byte: nothing + | - for wait: + | - 1 byte: length (in ticks) + | - 1 byte: nothing + | - for wait for release: + | - 2 bytes: nothing + | - for loop/loop until release: + | - 2 bytes: position ``` # wavetable diff --git a/src/engine/engine.h b/src/engine/engine.h index 256b0c96..f5422423 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -45,8 +45,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev104" -#define DIV_ENGINE_VERSION 104 +#define DIV_VERSION "dev105" +#define DIV_ENGINE_VERSION 105 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 4d274e18..37c6a9b2 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -532,6 +532,13 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeC(su.useSample); w->writeC(su.switchRoles); + // GB hardware sequence + w->writeC(gb.hwSeqLen); + for (int i=0; gb.hwSeqLen; i++) { + w->writeC(gb.hwSeq[i].cmd); + w->writeS(gb.hwSeq[i].data); + } + blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); w->writeI(blockEndSeek-blockStartSeek-4); @@ -1085,6 +1092,15 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { su.switchRoles=reader.readC(); } + // GB hardware sequence + if (version>=105) { + gb.hwSeqLen=reader.readC(); + for (int i=0; i Date: Sun, 7 Aug 2022 00:22:03 -0500 Subject: [PATCH 327/580] Game Boy: make channel state independent of instru --- src/engine/platform/gb.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 4067e9f1..a239ea15 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -187,9 +187,8 @@ void DivPlatformGB::tick(bool sysTick) { } if (chan[i].std.duty.had) { chan[i].duty=chan[i].std.duty.val; - DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_GB); if (i!=2) { - rWrite(16+i*5+1,((chan[i].duty&3)<<6)|(63-(ins->gb.soundLen&63))); + rWrite(16+i*5+1,((chan[i].duty&3)<<6)|(63-(chan[i].soundLen&63))); } else { if (parent->song.waveDutyIsVol) { rWrite(16+i*5+2,gbVolMap[(chan[i].std.duty.val&3)<<2]); @@ -241,7 +240,6 @@ void DivPlatformGB::tick(bool sysTick) { } } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { - DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_GB); if (i==3) { // noise int ntPos=chan[i].baseFreq; if (ntPos<0) ntPos=0; @@ -257,8 +255,8 @@ void DivPlatformGB::tick(bool sysTick) { rWrite(16+i*5,0x80); rWrite(16+i*5+2,gbVolMap[chan[i].vol]); } else { - rWrite(16+i*5+1,((chan[i].duty&3)<<6)|(63-(ins->gb.soundLen&63))); - rWrite(16+i*5+2,((chan[i].vol<<4))|(ins->gb.envLen&7)|((ins->gb.envDir&1)<<3)); + rWrite(16+i*5+1,((chan[i].duty&3)<<6)|(63-(chan[i].soundLen&63))); + rWrite(16+i*5+2,((chan[i].vol<<4))|(chan[i].envLen&7)|((chan[i].envDir&1)<<3)); } } if (chan[i].keyOff) { @@ -270,10 +268,10 @@ void DivPlatformGB::tick(bool sysTick) { } if (i==3) { // noise rWrite(16+i*5+3,(chan[i].freq&0xff)|(chan[i].duty?8:0)); - rWrite(16+i*5+4,((chan[i].keyOn||chan[i].keyOff)?0x80:0x00)|((ins->gb.soundLen<64)<<6)); + rWrite(16+i*5+4,((chan[i].keyOn||chan[i].keyOff)?0x80:0x00)|((chan[i].soundLen<64)<<6)); } else { rWrite(16+i*5+3,(2048-chan[i].freq)&0xff); - rWrite(16+i*5+4,(((2048-chan[i].freq)>>8)&7)|((chan[i].keyOn||chan[i].keyOff)?0x80:0x00)|((ins->gb.soundLen<63)<<6)); + rWrite(16+i*5+4,(((2048-chan[i].freq)>>8)&7)|((chan[i].keyOn||chan[i].keyOff)?0x80:0x00)|((chan[i].soundLen<63)<<6)); } if (chan[i].keyOn) chan[i].keyOn=false; if (chan[i].keyOff) chan[i].keyOff=false; @@ -309,6 +307,11 @@ int DivPlatformGB::dispatch(DivCommand c) { ws.changeWave1(chan[c.chan].wave); } ws.init(ins,32,15,chan[c.chan].insChanged); + } else if (chan[c.chan].insChanged) { + chan[c.chan].envVol=ins->gb.envVol; + chan[c.chan].envLen=ins->gb.envLen; + chan[c.chan].envDir=ins->gb.envDir; + chan[c.chan].soundLen=ins->gb.soundLen; } chan[c.chan].insChanged=false; break; @@ -328,9 +331,13 @@ int DivPlatformGB::dispatch(DivCommand c) { chan[c.chan].insChanged=true; if (c.chan!=2) { DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_GB); - chan[c.chan].vol=ins->gb.envVol; + chan[c.chan].envVol=ins->gb.envVol; + chan[c.chan].envLen=ins->gb.envLen; + chan[c.chan].envDir=ins->gb.envDir; + chan[c.chan].soundLen=ins->gb.soundLen; + chan[c.chan].vol=chan[c.chan].envVol; if (parent->song.gbInsAffectsEnvelope) { - rWrite(16+c.chan*5+2,((chan[c.chan].vol<<4))|(ins->gb.envLen&7)|((ins->gb.envDir&1)<<3)); + rWrite(16+c.chan*5+2,((chan[c.chan].vol<<4))|(chan[c.chan].envLen&7)|((chan[c.chan].envDir&1)<<3)); } } } From 7dad9098b60e69a2fc195b28b8813c2adc7ad6d5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 00:37:35 -0500 Subject: [PATCH 328/580] Game Boy: fix wave channel --- src/engine/platform/gb.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index a239ea15..2ec9bfdf 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -307,7 +307,8 @@ int DivPlatformGB::dispatch(DivCommand c) { ws.changeWave1(chan[c.chan].wave); } ws.init(ins,32,15,chan[c.chan].insChanged); - } else if (chan[c.chan].insChanged) { + } + if (chan[c.chan].insChanged) { chan[c.chan].envVol=ins->gb.envVol; chan[c.chan].envLen=ins->gb.envLen; chan[c.chan].envDir=ins->gb.envDir; From 1721e1d03e5a164e2a688e8213ee50d4e398166d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 00:40:26 -0500 Subject: [PATCH 329/580] Game Boy: re-enable wave corruption bug emulation --- src/engine/platform/sound/gb/apu.c | 8 ++++---- src/engine/platform/sound/gb/gb.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/sound/gb/apu.c b/src/engine/platform/sound/gb/apu.c index 4c473997..8836ddd2 100644 --- a/src/engine/platform/sound/gb/apu.c +++ b/src/engine/platform/sound/gb/apu.c @@ -1180,11 +1180,11 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) if ((value & 0x80)) { /* DMG bug: wave RAM gets corrupted if the channel is retriggerred 1 cycle before the APU reads from it. */ - /*if (!CGB && + if (!CGB && gb->apu.is_active[GB_WAVE] && gb->apu.wave_channel.sample_countdown == 0 && gb->apu.wave_channel.enable) { - unsigned offset = ((gb->apu.wave_channel.current_sample_index + 1) >> 1) & 0xF;*/ + unsigned offset = ((gb->apu.wave_channel.current_sample_index + 1) >> 1) & 0xF; /* This glitch varies between models and even specific instances: DMG-B: Most of them behave as emulated. A few behave differently. @@ -1193,7 +1193,7 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) Additionally, I believe DMGs, including those we behave differently than emulated, are all deterministic. */ - /*if (offset < 4) { + if (offset < 4) { gb->io_registers[GB_IO_WAV_START] = gb->io_registers[GB_IO_WAV_START + offset]; gb->apu.wave_channel.wave_form[0] = gb->apu.wave_channel.wave_form[offset / 2]; gb->apu.wave_channel.wave_form[1] = gb->apu.wave_channel.wave_form[offset / 2 + 1]; @@ -1206,7 +1206,7 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) gb->apu.wave_channel.wave_form + (offset & ~3) * 2, 8); } - }*/ + } if (!gb->apu.is_active[GB_WAVE]) { gb->apu.is_active[GB_WAVE] = true; update_sample(gb, GB_WAVE, diff --git a/src/engine/platform/sound/gb/gb.h b/src/engine/platform/sound/gb/gb.h index ac817395..ca365085 100644 --- a/src/engine/platform/sound/gb/gb.h +++ b/src/engine/platform/sound/gb/gb.h @@ -16,7 +16,7 @@ extern "C" { #define GB_STRUCT_VERSION 13 -#define CGB 0 +#define CGB (gb->model&GB_MODEL_CGB_FAMILY) #define GB_MODEL_FAMILY_MASK 0xF00 #define GB_MODEL_DMG_FAMILY 0x000 From 45196daf95ef5feeb5fec4116664f099243dc086 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 01:32:28 -0500 Subject: [PATCH 330/580] Game Boy: fix serious typo --- src/engine/instrument.cpp | 2 +- src/engine/instrument.h | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 37c6a9b2..b1afc395 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -534,7 +534,7 @@ void DivInstrument::putInsData(SafeWriter* w) { // GB hardware sequence w->writeC(gb.hwSeqLen); - for (int i=0; gb.hwSeqLen; i++) { + for (int i=0; iwriteC(gb.hwSeq[i].cmd); w->writeS(gb.hwSeq[i].data); } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 33e2856b..eddf9f79 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -262,6 +262,16 @@ struct DivInstrumentSTD { struct DivInstrumentGB { unsigned char envVol, envDir, envLen, soundLen, hwSeqLen; + enum HWSeqCommands: unsigned char { + DIV_GB_HWCMD_ENVELOPE=0, + DIV_GB_HWCMD_SWEEP, + DIV_GB_HWCMD_WAIT, + DIV_GB_HWCMD_WAIT_REL, + DIV_GB_HWCMD_LOOP, + DIV_GB_HWCMD_LOOP_REL, + + DIV_GB_HWCMD_MAX + }; struct HWSeqCommand { unsigned char cmd; unsigned short data; From 800f08b0fdaac548091d3ef5745e915f1dc24d0a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 06:06:14 -0500 Subject: [PATCH 331/580] Game Boy: hardware sequences, part 1 still not working! just the UI for it --- src/gui/insEdit.cpp | 155 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 8e405251..e0c18b6c 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -284,6 +284,15 @@ const char* dualWSEffects[9]={ "Phase Modulation" }; +const char* gbHWSeqCmdTypes[6]={ + "Envelope", + "Sweep", + "Wait", + "Wait for Release", + "Loop", + "Loop until Release" +}; + const char* macroAbsoluteMode="Fixed"; const char* macroRelativeMode="Relative"; const char* macroQSoundMode="QSound"; @@ -2974,6 +2983,152 @@ void FurnaceGUI::drawInsEdit() { } drawGBEnv(ins->gb.envVol,ins->gb.envLen,ins->gb.soundLen,ins->gb.envDir,ImVec2(ImGui::GetContentRegionAvail().x,100.0f*dpiScale)); + + if (ImGui::BeginChild("HWSeq",ImGui::GetContentRegionAvail(),true,ImGuiWindowFlags_MenuBar)) { + ImGui::BeginMenuBar(); + ImGui::Text("Hardware Sequence"); + ImGui::EndMenuBar(); + + if (ins->gb.hwSeqLen>0) if (ImGui::BeginTable("HWSeqList",2)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); + int curFrame=0; + ImGui::TableNextRow(ImGuiTableRowFlags_Headers); + ImGui::TableNextColumn(); + ImGui::Text("Tick"); + ImGui::TableNextColumn(); + ImGui::Text("Command"); + for (int i=0; igb.hwSeqLen; i++) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("%d (#%d)",curFrame,i); + ImGui::TableNextColumn(); + ImGui::PushID(i); + if (ins->gb.hwSeq[i].cmd>=DivInstrumentGB::DIV_GB_HWCMD_MAX) { + ins->gb.hwSeq[i].cmd=0; + } + int cmd=ins->gb.hwSeq[i].cmd; + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::Combo("##HWSeqCmd",&cmd,gbHWSeqCmdTypes,DivInstrumentGB::DIV_GB_HWCMD_MAX)) { + if (ins->gb.hwSeq[i].cmd!=cmd) { + ins->gb.hwSeq[i].cmd=cmd; + ins->gb.hwSeq[i].data=0; + } + } + bool somethingChanged=false; + switch (ins->gb.hwSeq[i].cmd) { + case DivInstrumentGB::DIV_GB_HWCMD_ENVELOPE: { + int hwsVol=(ins->gb.hwSeq[i].data&0xf0)>>4; + bool hwsDir=ins->gb.hwSeq[i].data&8; + int hwsLen=ins->gb.hwSeq[i].data&7; + int hwsSoundLen=ins->gb.hwSeq[i].data>>8; + + if (CWSliderInt("Volume",&hwsVol,0,15)) { + somethingChanged=true; + } + if (CWSliderInt("Env Length",&hwsLen,0,7)) { + somethingChanged=true; + } + if (CWSliderInt("Sound Length",&hwsSoundLen,0,64,hwsSoundLen>63?"Infinity":"%d")) { + somethingChanged=true; + } + if (ImGui::RadioButton("Up",hwsDir)) { PARAMETER + hwsDir=true; + somethingChanged=true; + } + ImGui::SameLine(); + if (ImGui::RadioButton("Down",!hwsDir)) { PARAMETER + hwsDir=false; + somethingChanged=true; + } + + if (somethingChanged) { + ins->gb.hwSeq[i].data=(hwsLen&7)|(hwsDir?8:0)|(hwsVol<<4)|(hwsSoundLen<<8); + PARAMETER; + } + break; + } + case DivInstrumentGB::DIV_GB_HWCMD_SWEEP: { + int hwsShift=ins->gb.hwSeq[i].data&7; + int hwsSpeed=(ins->gb.hwSeq[i].data&0x70)>>4; + bool hwsDir=ins->gb.hwSeq[i].data&8; + + if (CWSliderInt("Shift",&hwsShift,0,7)) { + somethingChanged=true; + } + if (CWSliderInt("Speed",&hwsSpeed,0,7)) { + somethingChanged=true; + } + + if (ImGui::RadioButton("Up",hwsDir)) { PARAMETER + hwsDir=true; + somethingChanged=true; + } + ImGui::SameLine(); + if (ImGui::RadioButton("Down",!hwsDir)) { PARAMETER + hwsDir=false; + somethingChanged=true; + } + + if (somethingChanged) { + ins->gb.hwSeq[i].data=(hwsShift&7)|(hwsDir?8:0)|(hwsSpeed<<4); + PARAMETER; + } + break; + } + case DivInstrumentGB::DIV_GB_HWCMD_WAIT: { + int len=ins->gb.hwSeq[i].data+1; + curFrame+=ins->gb.hwSeq[i].data+1; + + if (ImGui::InputInt("Ticks",&len)) { + if (len<1) len=1; + if (len>255) len=256; + somethingChanged=true; + } + + if (somethingChanged) { + ins->gb.hwSeq[i].data=len-1; + PARAMETER; + } + break; + } + case DivInstrumentGB::DIV_GB_HWCMD_WAIT_REL: + curFrame++; + break; + case DivInstrumentGB::DIV_GB_HWCMD_LOOP: + case DivInstrumentGB::DIV_GB_HWCMD_LOOP_REL: { + int pos=ins->gb.hwSeq[i].data; + + if (ImGui::InputInt("Position",&pos)) { + if (pos<0) pos=0; + if (pos>(ins->gb.hwSeqLen-1)) pos=(ins->gb.hwSeqLen-1); + somethingChanged=true; + } + + if (somethingChanged) { + ins->gb.hwSeq[i].data=pos; + PARAMETER; + } + break; + } + default: + break; + } + ImGui::PopID(); + } + ImGui::EndTable(); + } + + if (ImGui::Button(ICON_FA_PLUS "##HWCmdAdd")) { + if (ins->gb.hwSeqLen<255) { + ins->gb.hwSeq[ins->gb.hwSeqLen].cmd=0; + ins->gb.hwSeq[ins->gb.hwSeqLen].data=0; + ins->gb.hwSeqLen++; + } + } + + ImGui::EndChild(); + } ImGui::EndTabItem(); } if (ins->type==DIV_INS_C64) if (ImGui::BeginTabItem("C64")) { From 829db187df2a70c13a700dc3eb98e3a222c82435 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 06:24:48 -0500 Subject: [PATCH 332/580] Y8950: fix ADPCM per-chan osc I think --- src/engine/platform/opl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 36dd2c66..a32777c3 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -293,7 +293,7 @@ void DivPlatformOPL::acquire_nuked(short* bufL, short* bufR, size_t start, size_ if (!isMuted[adpcmChan]) { os[0]-=aOut.data[0]>>3; os[1]-=aOut.data[0]>>3; - oscBuf[adpcmChan]->data[oscBuf[adpcmChan]->needle++]+=aOut.data[0]; + oscBuf[adpcmChan]->data[oscBuf[adpcmChan]->needle++]=aOut.data[0]; } else { oscBuf[adpcmChan]->data[oscBuf[adpcmChan]->needle++]=0; } From f80488d9b0905fe90b12aa2f18b45f0f959ed173 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 17:32:39 -0500 Subject: [PATCH 333/580] minimize allocations in nextBuf --- src/engine/engine.h | 6 +++++- src/engine/playback.cpp | 39 ++++++++++++++++++--------------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index f5422423..001ea194 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -164,7 +164,7 @@ struct DivNoteEvent { struct DivDispatchContainer { DivDispatch* dispatch; blip_buffer_t* bb[2]; - size_t bbInLen; + size_t bbInLen, runtotal, runLeft, runPos, lastAvail; int temp[2], prevSample[2]; short* bbIn[2]; short* bbOut[2]; @@ -182,6 +182,10 @@ struct DivDispatchContainer { dispatch(NULL), bb{NULL,NULL}, bbInLen(0), + runtotal(0), + runLeft(0), + runPos(0), + lastAvail(0), temp{0,0}, prevSample{0,0}, bbIn{NULL,NULL}, diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index ee9115fd..00ae942e 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1308,25 +1308,22 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi } // logic starts here - size_t runtotal[32]; - size_t runLeft[32]; - size_t runPos[32]; - size_t lastAvail[32]; for (int i=0; i0) { - disCont[i].flush(lastAvail[i]); + disCont[i].lastAvail=blip_samples_avail(disCont[i].bb[0]); + if (disCont[i].lastAvail>0) { + disCont[i].flush(disCont[i].lastAvail); } - runtotal[i]=blip_clocks_needed(disCont[i].bb[0],size-lastAvail[i]); - if (runtotal[i]>disCont[i].bbInLen) { + disCont[i].runtotal=blip_clocks_needed(disCont[i].bb[0],size-disCont[i].lastAvail); + if (disCont[i].runtotal>disCont[i].bbInLen) { + logV("growing dispatch %d bbIn to %d",i,disCont[i].runtotal+256); delete[] disCont[i].bbIn[0]; delete[] disCont[i].bbIn[1]; - disCont[i].bbIn[0]=new short[runtotal[i]+256]; - disCont[i].bbIn[1]=new short[runtotal[i]+256]; - disCont[i].bbInLen=runtotal[i]+256; + disCont[i].bbIn[0]=new short[disCont[i].runtotal+256]; + disCont[i].bbIn[1]=new short[disCont[i].runtotal+256]; + disCont[i].bbInLen=disCont[i].runtotal+256; } - runLeft[i]=runtotal[i]; - runPos[i]=0; + disCont[i].runLeft=disCont[i].runtotal; + disCont[i].runPos=0; } if (metroTickLen>MASTER_CLOCK_PREC); for (int i=0; i Date: Sun, 7 Aug 2022 17:37:07 -0500 Subject: [PATCH 334/580] fix possible crash when closing Furnace --- src/engine/engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index fd94e521..bf55d9d6 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3339,6 +3339,7 @@ bool DivEngine::initAudioBackend() { bool DivEngine::deinitAudioBackend() { if (output!=NULL) { + output->quit(); if (output->midiIn) { if (output->midiIn->isDeviceOpen()) { logI("closing MIDI input."); @@ -3352,7 +3353,6 @@ bool DivEngine::deinitAudioBackend() { } } output->quitMidi(); - output->quit(); delete output; output=NULL; //audioEngine=DIV_AUDIO_NULL; From 1c92d23d27965a230de25328a373ce811a312f33 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 7 Aug 2022 17:40:01 -0500 Subject: [PATCH 335/580] commands view now only displays useful commands --- src/engine/playback.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 00ae942e..3ba4f141 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -211,7 +211,27 @@ const char* formatNote(unsigned char note, unsigned char octave) { int DivEngine::dispatchCmd(DivCommand c) { if (view==DIV_STATUS_COMMANDS) { - if (!skipping) printf("%8d | %d: %s(%d, %d)\n",totalTicksR,c.chan,cmdName[c.cmd],c.value,c.value2); + if (!skipping) { + switch (c.cmd) { + // strip away hinted/useless commands + case DIV_ALWAYS_SET_VOLUME: + break; + case DIV_CMD_GET_VOLUME: + break; + case DIV_CMD_VOLUME: + break; + case DIV_CMD_NOTE_PORTA: + break; + case DIV_CMD_LEGATO: + break; + case DIV_CMD_PITCH: + break; + case DIV_CMD_PRE_NOTE: + break; + default: + printf("%8d | %d: %s(%d, %d)\n",totalTicksR,c.chan,cmdName[c.cmd],c.value,c.value2); + } + } } totalCmds++; if (cmdStreamEnabled && cmdStream.size()<2000) { From 2af4992e9b785d4944c766317ea077b5533af027 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 8 Aug 2022 00:25:05 -0500 Subject: [PATCH 336/580] JACK: fix crash when changing buffer size --- src/audio/jack.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/audio/jack.cpp b/src/audio/jack.cpp index 6e7b7bf1..f9502cf4 100644 --- a/src/audio/jack.cpp +++ b/src/audio/jack.cpp @@ -52,17 +52,30 @@ void TAAudioJACK::onBufferSize(jack_nframes_t bufsize) { } void TAAudioJACK::onProcess(jack_nframes_t nframes) { - if (audioProcCallback!=NULL) { - if (midiIn!=NULL) midiIn->gather(); - audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,desc.bufsize); - } for (int i=0; idesc.bufsize) { + delete[] inBufs[i]; + inBufs[i]=new float[nframes]; + } + memcpy(iInBufs[i],inBufs[i],nframes*sizeof(float)); + } + for (int i=0; idesc.bufsize) { + delete[] outBufs[i]; + outBufs[i]=new float[nframes]; + } + } + if (audioProcCallback!=NULL) { + if (midiIn!=NULL) midiIn->gather(); + audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,nframes); } for (int i=0; i Date: Tue, 9 Aug 2022 14:53:31 -0500 Subject: [PATCH 337/580] i guess to anybody who bothers reading the contents of this commit: who cares? you promised me C163 would become the name but nobody has bothered to call it C163 for an entire week. there's no point on pushing a dead idea forward! --- papers/doc/7-systems/README.md | 2 +- papers/doc/7-systems/n163.md | 22 +--------------------- src/engine/platform/gb.h | 5 ++++- src/gui/about.cpp | 2 +- src/gui/guiConst.cpp | 2 +- src/gui/presets.cpp | 4 ++-- src/gui/settings.cpp | 3 +-- 7 files changed, 11 insertions(+), 29 deletions(-) diff --git a/papers/doc/7-systems/README.md b/papers/doc/7-systems/README.md index e4b6cf5b..c4dc6d49 100644 --- a/papers/doc/7-systems/README.md +++ b/papers/doc/7-systems/README.md @@ -26,7 +26,7 @@ this is a list of systems that Furnace supports, including each system's effects - [Seta/Allumer X1-010](x1-010.md) - [WonderSwan](wonderswan.md) - [Bubble System WSG](bubblesystem.md) -- [Namco C163](n163.md) +- [Namco 163](n163.md) - [Namco WSG](namco.md) - [Yamaha OPL](opl.md) - [PC Speaker](pcspkr.md) diff --git a/papers/doc/7-systems/n163.md b/papers/doc/7-systems/n163.md index d3ece830..3c2f389f 100644 --- a/papers/doc/7-systems/n163.md +++ b/papers/doc/7-systems/n163.md @@ -1,24 +1,4 @@ -# - ANNOUNCEMENT - - -Start calling it C163! The TRUE name of the chip! - -The line will be consistent with your help: -- Namco C15 -- Namco C30 -- Namco C140 -- **Namco C163** -- Namco C219 -- Namco C352 - -The C names are official as indicated by: - -- MAME -- VGMPlay -- Korg Ɨ Bandai Namco (from Kamata info page) - -C stands for Custom! Call it C163! - -# Namco 163 (also called Namco C163, 106, 160 or 129) +# Namco 163 (also called N163, Namco C163, Namco 106 (sic), Namco 160 or Namco 129) This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 128 byte of internal RAM, and both channel register and wavetables are stored here. Wavetables are variable size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. But waveform RAM area becomes smaller as more channels are activated; as channel registers consumes 8 bytes for each channel. You must avoid conflict with channel register area and waveform for avoid broken channel playback. diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index d4f6ca53..58cce880 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -32,6 +32,7 @@ class DivPlatformGB: public DivDispatch { bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta; signed char vol, outVol, wave; unsigned char envVol, envDir, envLen, soundLen; + unsigned short hwSeqPos, hwSeqDelay; DivMacroInt std; void macroInit(DivInstrument* which) { std.init(which); @@ -59,7 +60,9 @@ class DivPlatformGB: public DivDispatch { envVol(0), envDir(0), envLen(0), - soundLen(0) {} + soundLen(0), + hwSeqPos(0), + hwSeqDelay(0) {} }; Channel chan[4]; DivDispatchOscBuffer* oscBuf[4]; diff --git a/src/gui/about.cpp b/src/gui/about.cpp index e65413fc..587aba84 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -135,7 +135,7 @@ const char* aboutLine[]={ "VICE VIC-20 sound core by Rami Rasanen and viznut", "VERA sound core by Frank van den Hoef", "K005289 emulator by cam900", - "Namco C163 emulator by cam900", + "Namco 163 emulator by cam900", "Seta X1-010 emulator by cam900", "Konami VRC6 emulator by cam900", "Konami SCC emulator by cam900", diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 6c0bb891..59c917ae 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -97,7 +97,7 @@ const char* insTypes[DIV_INS_MAX+1]={ "FM (OPL)", "FDS", "Virtual Boy", - "Namco C163", + "Namco 163", "Konami SCC/Bubble System WSG", "FM (OPZ)", "POKEY", diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index f8e7a522..571cda44 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -409,7 +409,7 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "Namco C163", { + "Namco 163", { DIV_SYSTEM_N163, 64, 0, 0, 0 } @@ -617,7 +617,7 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "Famicom with Namco C163", { + "Famicom with Namco 163", { DIV_SYSTEM_NES, 64, 0, 0, DIV_SYSTEM_N163, 64, 0, 112, 0 diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 2ad3ef23..73e9d233 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1201,7 +1201,7 @@ void FurnaceGUI::drawSettings() { ImGui::Separator(); - ImGui::Text("N163/C163 chip name"); + ImGui::Text("Namco 163 chip name"); ImGui::SameLine(); ImGui::InputTextWithHint("##C163Name",DIV_C163_DEFAULT_NAME,&settings.c163Name); @@ -2028,7 +2028,6 @@ void FurnaceGUI::syncSettings() { settings.audioDevice=e->getConfString("audioDevice",""); settings.midiInDevice=e->getConfString("midiInDevice",""); settings.midiOutDevice=e->getConfString("midiOutDevice",""); - // I'm sorry, but the C163 education program has failed... settings.c163Name=e->getConfString("c163Name",DIV_C163_DEFAULT_NAME); settings.audioQuality=e->getConfInt("audioQuality",0); settings.audioBufSize=e->getConfInt("audioBufSize",1024); From 28698beaf3cad3abb11c77c84da28acf7354921d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 10 Aug 2022 01:55:44 -0500 Subject: [PATCH 338/580] dev106 - Game Boy: implement hw seq and prepare for software envelope maybe --- TODO.md | 1 - papers/format.md | 6 +++- src/engine/engine.h | 4 +-- src/engine/instrument.cpp | 10 +++++++ src/engine/instrument.h | 5 +++- src/engine/platform/gb.cpp | 57 +++++++++++++++++++++++++++++++++++++- src/engine/platform/gb.h | 6 ++-- src/gui/insEdit.cpp | 17 ++++++++---- 8 files changed, 93 insertions(+), 13 deletions(-) diff --git a/TODO.md b/TODO.md index 46773705..13f31300 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,5 @@ # to-do for 0.6pre1.5-0.6pre2 -- Game Boy envelope macro/sequence - volume commands should work on Game Boy - ability to customize `OFF`, `===` and `REL` - stereo separation control for AY diff --git a/papers/format.md b/papers/format.md index 26395502..1a8cd721 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,7 +32,8 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: -- 105: Furance dev105 +- 106: Furnace dev106 +- 105: Furnace dev105 - 104: Furnace dev104 - 103: Furnace dev103 - 102: Furnace 0.6pre1 (dev102) @@ -846,6 +847,9 @@ size | description | - 2 bytes: nothing | - for loop/loop until release: | - 2 bytes: position + --- | **Game Boy extra flags** (>=106) + 1 | use software envelope + 1 | always init hard env on new note ``` # wavetable diff --git a/src/engine/engine.h b/src/engine/engine.h index 001ea194..483ebcf0 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -45,8 +45,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev105" -#define DIV_ENGINE_VERSION 105 +#define DIV_VERSION "dev106" +#define DIV_ENGINE_VERSION 106 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index b1afc395..555d7d17 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -539,6 +539,10 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeS(gb.hwSeq[i].data); } + // GB additional flags + w->writeC(gb.softEnv); + w->writeC(gb.alwaysInit); + blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); w->writeI(blockEndSeek-blockStartSeek-4); @@ -1101,6 +1105,12 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { } } + // GB additional flags + if (version>=106) { + gb.softEnv=reader.readC(); + gb.alwaysInit=reader.readC(); + } + return DIV_DATA_SUCCESS; } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index eddf9f79..df7a6b36 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -262,6 +262,7 @@ struct DivInstrumentSTD { struct DivInstrumentGB { unsigned char envVol, envDir, envLen, soundLen, hwSeqLen; + bool softEnv, alwaysInit; enum HWSeqCommands: unsigned char { DIV_GB_HWCMD_ENVELOPE=0, DIV_GB_HWCMD_SWEEP, @@ -281,7 +282,9 @@ struct DivInstrumentGB { envDir(0), envLen(2), soundLen(64), - hwSeqLen(0) { + hwSeqLen(0), + softEnv(false), + alwaysInit(false) { memset(hwSeq,0,256*sizeof(int)); } }; diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 2ec9bfdf..5b7393ef 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -233,12 +233,61 @@ void DivPlatformGB::tick(bool sysTick) { } } } + // run hardware sequence + if (chan[i].active) { + if (--chan[i].hwSeqDelay<=0) { + chan[i].hwSeqDelay=0; + DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_GB); + int hwSeqCount=0; + while (chan[i].hwSeqPosgb.hwSeqLen && hwSeqCount<4) { + bool leave=false; + unsigned short data=ins->gb.hwSeq[chan[i].hwSeqPos].data; + switch (ins->gb.hwSeq[chan[i].hwSeqPos].cmd) { + case DivInstrumentGB::DIV_GB_HWCMD_ENVELOPE: + chan[i].envLen=data&7; + chan[i].envDir=(data&8)?1:0; + chan[i].envVol=(data>>4)&15; + chan[i].soundLen=data>>8; + chan[i].keyOn=true; + break; + case DivInstrumentGB::DIV_GB_HWCMD_SWEEP: + chan[i].sweep=data; + chan[i].sweepChanged=true; + break; + case DivInstrumentGB::DIV_GB_HWCMD_WAIT: + chan[i].hwSeqDelay=data+1; + leave=true; + break; + case DivInstrumentGB::DIV_GB_HWCMD_WAIT_REL: + if (!chan[i].released) { + chan[i].hwSeqPos--; + leave=true; + } + break; + case DivInstrumentGB::DIV_GB_HWCMD_LOOP: + chan[i].hwSeqPos=data-1; + break; + case DivInstrumentGB::DIV_GB_HWCMD_LOOP_REL: + if (!chan[i].released) { + chan[i].hwSeqPos=data-1; + } + break; + } + + chan[i].hwSeqPos++; + if (leave) break; + hwSeqCount++; + } + } + } + if (chan[i].sweepChanged) { chan[i].sweepChanged=false; if (i==0) { rWrite(16+i*5,chan[i].sweep); } } + if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { if (i==3) { // noise int ntPos=chan[i].baseFreq; @@ -300,6 +349,9 @@ int DivPlatformGB::dispatch(DivCommand c) { } chan[c.chan].active=true; chan[c.chan].keyOn=true; + chan[c.chan].hwSeqPos=0; + chan[c.chan].hwSeqDelay=0; + chan[c.chan].released=false; chan[c.chan].macroInit(ins); if (c.chan==2) { if (chan[c.chan].wave<0) { @@ -308,7 +360,7 @@ int DivPlatformGB::dispatch(DivCommand c) { } ws.init(ins,32,15,chan[c.chan].insChanged); } - if (chan[c.chan].insChanged) { + if (chan[c.chan].insChanged || ins->gb.alwaysInit) { chan[c.chan].envVol=ins->gb.envVol; chan[c.chan].envLen=ins->gb.envLen; chan[c.chan].envDir=ins->gb.envDir; @@ -320,11 +372,14 @@ int DivPlatformGB::dispatch(DivCommand c) { case DIV_CMD_NOTE_OFF: chan[c.chan].active=false; chan[c.chan].keyOff=true; + chan[c.chan].hwSeqPos=0; + chan[c.chan].hwSeqDelay=0; chan[c.chan].macroInit(NULL); break; case DIV_CMD_NOTE_OFF_ENV: case DIV_CMD_ENV_RELEASE: chan[c.chan].std.release(); + chan[c.chan].released=true; break; case DIV_CMD_INSTRUMENT: if (chan[c.chan].ins!=c.value || c.value2==1) { diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index 58cce880..a4432f1e 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -29,10 +29,11 @@ class DivPlatformGB: public DivDispatch { struct Channel { int freq, baseFreq, pitch, pitch2, note, ins; unsigned char duty, sweep; - bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta; + bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta, released; signed char vol, outVol, wave; unsigned char envVol, envDir, envLen, soundLen; - unsigned short hwSeqPos, hwSeqDelay; + unsigned short hwSeqPos; + short hwSeqDelay; DivMacroInt std; void macroInit(DivInstrument* which) { std.init(which); @@ -54,6 +55,7 @@ class DivPlatformGB: public DivDispatch { keyOn(false), keyOff(false), inPorta(false), + released(false), vol(15), outVol(15), wave(-1), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index e0c18b6c..ce9406ba 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2965,6 +2965,10 @@ void FurnaceGUI::drawInsEdit() { } } if (ins->type==DIV_INS_GB) if (ImGui::BeginTabItem("Game Boy")) { + P(ImGui::Checkbox("Use software envelope",&ins->gb.softEnv)); + P(ImGui::Checkbox("Initialize envelope on every note",&ins->gb.alwaysInit)); + + ImGui::BeginDisabled(ins->gb.softEnv); P(CWSliderScalar("Volume",ImGuiDataType_U8,&ins->gb.envVol,&_ZERO,&_FIFTEEN)); rightClickable P(CWSliderScalar("Envelope Length",ImGuiDataType_U8,&ins->gb.envLen,&_ZERO,&_SEVEN)); rightClickable P(CWSliderScalar("Sound Length",ImGuiDataType_U8,&ins->gb.soundLen,&_ZERO,&_SIXTY_FOUR,ins->gb.soundLen>63?"Infinity":"%d")); rightClickable @@ -3060,13 +3064,13 @@ void FurnaceGUI::drawInsEdit() { somethingChanged=true; } - if (ImGui::RadioButton("Up",hwsDir)) { PARAMETER - hwsDir=true; + if (ImGui::RadioButton("Up",!hwsDir)) { PARAMETER + hwsDir=false; somethingChanged=true; } ImGui::SameLine(); - if (ImGui::RadioButton("Down",!hwsDir)) { PARAMETER - hwsDir=false; + if (ImGui::RadioButton("Down",hwsDir)) { PARAMETER + hwsDir=true; somethingChanged=true; } @@ -3128,6 +3132,7 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndChild(); + ImGui::EndDisabled(); } ImGui::EndTabItem(); } @@ -3689,8 +3694,10 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_FM || ins->type==DIV_INS_MIKEY || ins->type==DIV_INS_MULTIPCM || ins->type==DIV_INS_SU) { volMax=127; } - if (ins->type==DIV_INS_GB) { + if (ins->type==DIV_INS_GB && !ins->gb.softEnv) { volMax=0; + } else { + volMax=15; } if (ins->type==DIV_INS_PET || ins->type==DIV_INS_BEEPER) { volMax=1; From df10b6cc5952926e4a1c81dcd87fc58d0b074392 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 10 Aug 2022 14:16:26 -0500 Subject: [PATCH 339/580] Game Boy: hardware sequences, part 3 the previous commit was part 2 --- src/gui/insEdit.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index ce9406ba..0d90e373 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2993,15 +2993,18 @@ void FurnaceGUI::drawInsEdit() { ImGui::Text("Hardware Sequence"); ImGui::EndMenuBar(); - if (ins->gb.hwSeqLen>0) if (ImGui::BeginTable("HWSeqList",2)) { + if (ins->gb.hwSeqLen>0) if (ImGui::BeginTable("HWSeqList",3)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthFixed); int curFrame=0; ImGui::TableNextRow(ImGuiTableRowFlags_Headers); ImGui::TableNextColumn(); ImGui::Text("Tick"); ImGui::TableNextColumn(); ImGui::Text("Command"); + ImGui::TableNextColumn(); + ImGui::Text("Move/Remove"); for (int i=0; igb.hwSeqLen; i++) { ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -3119,6 +3122,46 @@ void FurnaceGUI::drawInsEdit() { break; } ImGui::PopID(); + ImGui::TableNextColumn(); + ImGui::PushID(i+512); + if (ImGui::Button(ICON_FA_CHEVRON_UP "##HWCmdUp")) { + if (i>0) { + e->lockEngine([ins,i]() { + ins->gb.hwSeq[i-1].cmd^=ins->gb.hwSeq[i].cmd; + ins->gb.hwSeq[i].cmd^=ins->gb.hwSeq[i-1].cmd; + ins->gb.hwSeq[i-1].cmd^=ins->gb.hwSeq[i].cmd; + + ins->gb.hwSeq[i-1].data^=ins->gb.hwSeq[i].data; + ins->gb.hwSeq[i].data^=ins->gb.hwSeq[i-1].data; + ins->gb.hwSeq[i-1].data^=ins->gb.hwSeq[i].data; + }); + } + MARK_MODIFIED; + } + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_CHEVRON_DOWN "##HWCmdDown")) { + if (igb.hwSeqLen-1) { + e->lockEngine([ins,i]() { + ins->gb.hwSeq[i-1].cmd^=ins->gb.hwSeq[i].cmd; + ins->gb.hwSeq[i].cmd^=ins->gb.hwSeq[i-1].cmd; + ins->gb.hwSeq[i-1].cmd^=ins->gb.hwSeq[i].cmd; + + ins->gb.hwSeq[i-1].data^=ins->gb.hwSeq[i].data; + ins->gb.hwSeq[i].data^=ins->gb.hwSeq[i-1].data; + ins->gb.hwSeq[i-1].data^=ins->gb.hwSeq[i].data; + }); + } + MARK_MODIFIED; + } + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_TIMES "##HWCmdDel")) { + for (int j=i; jgb.hwSeqLen-1; j++) { + ins->gb.hwSeq[j].cmd=ins->gb.hwSeq[j+1].cmd; + ins->gb.hwSeq[j].data=ins->gb.hwSeq[j+1].data; + } + ins->gb.hwSeqLen--; + } + ImGui::PopID(); } ImGui::EndTable(); } From 6bcb3063a59f40df4cfbe3d350c67d57b016ad71 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 10 Aug 2022 15:41:52 -0500 Subject: [PATCH 340/580] add OPZ disclaimer in docs --- papers/doc/7-systems/opz.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/papers/doc/7-systems/opz.md b/papers/doc/7-systems/opz.md index 61e93139..c7952a55 100644 --- a/papers/doc/7-systems/opz.md +++ b/papers/doc/7-systems/opz.md @@ -1,5 +1,7 @@ # Yamaha OPZ (YM2414) +**disclaimer: despite the name, this has nothing to do with teenage engineering's OP-Z synth!** + this is the YM2151's little-known successor, used in the Yamaha TX81Z and a few other Yamaha synthesizers. oh, and the Korg Z3 too. it adds these features on top of the YM2151: From bccecc4c07ba59eee23507590ba627e720795588 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 10 Aug 2022 16:27:29 -0500 Subject: [PATCH 341/580] Game Boy: software envelopes, part 1 --- src/engine/fileOps.cpp | 5 +++-- src/engine/platform/gb.cpp | 41 ++++++++++++++++++++++++++------------ src/engine/platform/gb.h | 3 ++- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 8dcd55d2..db2305c6 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -590,7 +590,9 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { logD("GB data: vol %d dir %d len %d sl %d",ins->gb.envVol,ins->gb.envDir,ins->gb.envLen,ins->gb.soundLen); } else if (ds.system[0]==DIV_SYSTEM_GB) { - // try to convert macro to envelope + // set software envelope flag + ins->gb.softEnv=true; + // try to convert macro to envelope in case the user decides to switch to them if (ins->std.volMacro.len>0) { ins->gb.envVol=ins->std.volMacro.val[0]; if (ins->std.volMacro.val[0]std.volMacro.val[1]) { @@ -600,7 +602,6 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ins->gb.soundLen=ins->std.volMacro.len*2; } } - addWarning("Game Boy volume macros converted to envelopes. may not be perfect!"); } } diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 5b7393ef..aa95d6cb 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -160,6 +160,16 @@ void DivPlatformGB::tick(bool sysTick) { for (int i=0; i<4; i++) { chan[i].std.next(); + if (chan[i].softEnv) { + if (chan[i].std.vol.had) { + chan[i].outVol=VOL_SCALE_LINEAR(chan[i].vol&15,MIN(15,chan[i].std.vol.val),15); + if (chan[i].outVol<0) chan[i].outVol=0; + + // temporary until zombie mode is implemented + chan[i].vol=chan[i].outVol; + chan[i].keyOn=true; + } + } if (chan[i].std.arp.had) { if (i==3) { // noise if (chan[i].std.arp.mode) { @@ -189,7 +199,7 @@ void DivPlatformGB::tick(bool sysTick) { chan[i].duty=chan[i].std.duty.val; if (i!=2) { rWrite(16+i*5+1,((chan[i].duty&3)<<6)|(63-(chan[i].soundLen&63))); - } else { + } else if (!chan[i].softEnv) { if (parent->song.waveDutyIsVol) { rWrite(16+i*5+2,gbVolMap[(chan[i].std.duty.val&3)<<2]); } @@ -244,11 +254,13 @@ void DivPlatformGB::tick(bool sysTick) { unsigned short data=ins->gb.hwSeq[chan[i].hwSeqPos].data; switch (ins->gb.hwSeq[chan[i].hwSeqPos].cmd) { case DivInstrumentGB::DIV_GB_HWCMD_ENVELOPE: - chan[i].envLen=data&7; - chan[i].envDir=(data&8)?1:0; - chan[i].envVol=(data>>4)&15; - chan[i].soundLen=data>>8; - chan[i].keyOn=true; + if (!chan[i].softEnv) { + chan[i].envLen=data&7; + chan[i].envDir=(data&8)?1:0; + chan[i].envVol=(data>>4)&15; + chan[i].soundLen=data>>8; + chan[i].keyOn=true; + } break; case DivInstrumentGB::DIV_GB_HWCMD_SWEEP: chan[i].sweep=data; @@ -352,6 +364,7 @@ int DivPlatformGB::dispatch(DivCommand c) { chan[c.chan].hwSeqPos=0; chan[c.chan].hwSeqDelay=0; chan[c.chan].released=false; + chan[c.chan].softEnv=ins->gb.softEnv; chan[c.chan].macroInit(ins); if (c.chan==2) { if (chan[c.chan].wave<0) { @@ -387,13 +400,15 @@ int DivPlatformGB::dispatch(DivCommand c) { chan[c.chan].insChanged=true; if (c.chan!=2) { DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_GB); - chan[c.chan].envVol=ins->gb.envVol; - chan[c.chan].envLen=ins->gb.envLen; - chan[c.chan].envDir=ins->gb.envDir; - chan[c.chan].soundLen=ins->gb.soundLen; - chan[c.chan].vol=chan[c.chan].envVol; - if (parent->song.gbInsAffectsEnvelope) { - rWrite(16+c.chan*5+2,((chan[c.chan].vol<<4))|(chan[c.chan].envLen&7)|((chan[c.chan].envDir&1)<<3)); + if (!ins->gb.softEnv) { + chan[c.chan].envVol=ins->gb.envVol; + chan[c.chan].envLen=ins->gb.envLen; + chan[c.chan].envDir=ins->gb.envDir; + chan[c.chan].soundLen=ins->gb.soundLen; + chan[c.chan].vol=chan[c.chan].envVol; + if (parent->song.gbInsAffectsEnvelope) { + rWrite(16+c.chan*5+2,((chan[c.chan].vol<<4))|(chan[c.chan].envLen&7)|((chan[c.chan].envDir&1)<<3)); + } } } } diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index a4432f1e..082f33ba 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -29,7 +29,7 @@ class DivPlatformGB: public DivDispatch { struct Channel { int freq, baseFreq, pitch, pitch2, note, ins; unsigned char duty, sweep; - bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta, released; + bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta, released, softEnv; signed char vol, outVol, wave; unsigned char envVol, envDir, envLen, soundLen; unsigned short hwSeqPos; @@ -56,6 +56,7 @@ class DivPlatformGB: public DivDispatch { keyOff(false), inPorta(false), released(false), + softEnv(false), vol(15), outVol(15), wave(-1), From 4b18d0920bbde8e0887beab27c302a24026bcfd0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 10 Aug 2022 17:02:45 -0500 Subject: [PATCH 342/580] Game Boy: software envelopes, part 2 --- src/engine/platform/gb.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index aa95d6cb..87530402 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -166,7 +166,10 @@ void DivPlatformGB::tick(bool sysTick) { if (chan[i].outVol<0) chan[i].outVol=0; // temporary until zombie mode is implemented - chan[i].vol=chan[i].outVol; + chan[i].envLen=0; + chan[i].envDir=0; + chan[i].envVol=chan[i].outVol; + chan[i].soundLen=64; chan[i].keyOn=true; } } @@ -314,10 +317,10 @@ void DivPlatformGB::tick(bool sysTick) { if (chan[i].keyOn) { if (i==2) { // wave rWrite(16+i*5,0x80); - rWrite(16+i*5+2,gbVolMap[chan[i].vol]); + rWrite(16+i*5+2,gbVolMap[chan[i].outVol]); } else { rWrite(16+i*5+1,((chan[i].duty&3)<<6)|(63-(chan[i].soundLen&63))); - rWrite(16+i*5+2,((chan[i].vol<<4))|(chan[i].envLen&7)|((chan[i].envDir&1)<<3)); + rWrite(16+i*5+2,((chan[i].envVol<<4))|(chan[i].envLen&7)|((chan[i].envDir&1)<<3)); } } if (chan[i].keyOff) { @@ -406,6 +409,7 @@ int DivPlatformGB::dispatch(DivCommand c) { chan[c.chan].envDir=ins->gb.envDir; chan[c.chan].soundLen=ins->gb.soundLen; chan[c.chan].vol=chan[c.chan].envVol; + chan[c.chan].outVol=chan[c.chan].vol; if (parent->song.gbInsAffectsEnvelope) { rWrite(16+c.chan*5+2,((chan[c.chan].vol<<4))|(chan[c.chan].envLen&7)|((chan[c.chan].envDir&1)<<3)); } @@ -415,8 +419,9 @@ int DivPlatformGB::dispatch(DivCommand c) { break; case DIV_CMD_VOLUME: chan[c.chan].vol=c.value; + chan[c.chan].outVol=c.value; if (c.chan==2) { - rWrite(16+c.chan*5+2,gbVolMap[chan[c.chan].vol]); + rWrite(16+c.chan*5+2,gbVolMap[chan[c.chan].outVol]); } break; case DIV_CMD_GET_VOLUME: From 51db06298bfcdbcb4e197407e00d6510e2585d43 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 10 Aug 2022 23:53:47 -0500 Subject: [PATCH 343/580] Game Boy: fix volume regression --- src/engine/platform/gb.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 87530402..abbb1933 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -423,6 +423,9 @@ int DivPlatformGB::dispatch(DivCommand c) { if (c.chan==2) { rWrite(16+c.chan*5+2,gbVolMap[chan[c.chan].outVol]); } + if (!chan[c.chan].softEnv) { + chan[c.chan].envVol=chan[c.chan].vol; + } break; case DIV_CMD_GET_VOLUME: return chan[c.chan].vol; From 92f40774e4c87675a659c931cb74001bafc9ef01 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 10 Aug 2022 23:56:25 -0500 Subject: [PATCH 344/580] Game Boy: I hate your artificial limitations fixes a DefleMask demo module --- src/engine/platform/gb.cpp | 4 ++++ src/engine/platform/gb.h | 1 + 2 files changed, 5 insertions(+) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index abbb1933..31ce2424 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -573,6 +573,10 @@ void DivPlatformGB::reset() { antiClickWavePos=0; } +int DivPlatformGB::getPortaFloor(int ch) { + return 24; +} + bool DivPlatformGB::isStereo() { return true; } diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index 082f33ba..e4b8568b 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -94,6 +94,7 @@ class DivPlatformGB: public DivDispatch { void forceIns(); void tick(bool sysTick=true); void muteChannel(int ch, bool mute); + int getPortaFloor(int ch); bool isStereo(); void notifyInsChange(int ins); void notifyWaveChange(int wave); From 340052cf0a50f6a848d5c545df4ada5a6c077283 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 00:46:15 -0500 Subject: [PATCH 345/580] Game Boy: add chip revision flag --- src/engine/platform/gb.cpp | 35 ++++++++++++++++++++++++++++++----- src/engine/platform/gb.h | 9 +++++++++ src/gui/sysConf.cpp | 13 +++++++++++++ 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 31ce2424..39ccaf56 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -21,8 +21,8 @@ #include "../engine.h" #include -#define rWrite(a,v) if (!skipRegisterWrites) {GB_apu_write(gb,a,v); regPool[(a)&0x7f]=v; if (dumpWrites) {addWrite(a,v);} } -#define immWrite(a,v) {GB_apu_write(gb,a,v); regPool[(a)&0x7f]=v; if (dumpWrites) {addWrite(a,v);} } +#define rWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); regPool[(a)&0x7f]=v; if (dumpWrites) {addWrite(a,v);} } +#define immWrite(a,v) {writes.emplace(a,v); regPool[(a)&0x7f]=v; if (dumpWrites) {addWrite(a,v);} } #define CHIP_DIVIDER 16 @@ -84,6 +84,12 @@ const char* DivPlatformGB::getEffectName(unsigned char effect) { void DivPlatformGB::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; iapu_output.final_sample.left; bufR[i]=gb->apu_output.final_sample.right; @@ -97,8 +103,8 @@ void DivPlatformGB::acquire(short* bufL, short* bufR, size_t start, size_t len) void DivPlatformGB::updateWave() { rWrite(0x1a,0); for (int i=0; i<16; i++) { - int nibble1=15-ws.output[((i<<1)+antiClickWavePos)&31]; - int nibble2=15-ws.output[((1+(i<<1))+antiClickWavePos)&31]; + int nibble1=15-ws.output[((i<<1)+antiClickWavePos-1)&31]; + int nibble2=15-ws.output[((1+(i<<1))+antiClickWavePos-1)&31]; rWrite(0x30+i,(nibble1<<4)|nibble2); } antiClickWavePos&=31; @@ -559,7 +565,7 @@ void DivPlatformGB::reset() { } memset(gb,0,sizeof(GB_gameboy_t)); memset(regPool,0,128); - gb->model=GB_MODEL_DMG_B; + gb->model=model; GB_apu_init(gb); GB_set_sample_rate(gb,rate); // enable all channels @@ -581,6 +587,10 @@ bool DivPlatformGB::isStereo() { return true; } +bool DivPlatformGB::getDCOffRequired() { + return (model==GB_MODEL_AGB); +} + void DivPlatformGB::notifyInsChange(int ins) { for (int i=0; i<4; i++) { if (chan[i].ins==ins) { @@ -613,6 +623,20 @@ void DivPlatformGB::poke(std::vector& wlist) { void DivPlatformGB::setFlags(unsigned int flags) { antiClickEnabled=!(flags&8); + switch (flags&3) { + case 0: + model=GB_MODEL_DMG_B; + break; + case 1: + model=GB_MODEL_CGB_C; + break; + case 2: + model=GB_MODEL_CGB_E; + break; + case 3: + model=GB_MODEL_AGB; + break; + } } int DivPlatformGB::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { @@ -626,6 +650,7 @@ int DivPlatformGB::init(DivEngine* p, int channels, int sugRate, unsigned int fl parent=p; dumpWrites=false; skipRegisterWrites=false; + model=GB_MODEL_DMG_B; gb=new GB_gameboy_t; setFlags(flags); reset(); diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index e4b8568b..ce582979 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -24,6 +24,7 @@ #include "../macroInt.h" #include "../waveSynth.h" #include "sound/gb/gb.h" +#include class DivPlatformGB: public DivDispatch { struct Channel { @@ -73,10 +74,17 @@ class DivPlatformGB: public DivDispatch { bool antiClickEnabled; unsigned char lastPan; DivWaveSynth ws; + struct QueuedWrite { + unsigned char addr; + unsigned char val; + QueuedWrite(unsigned char a, unsigned char v): addr(a), val(v) {} + }; + std::queue writes; int antiClickPeriodCount, antiClickWavePos; GB_gameboy_t* gb; + GB_model_t model; unsigned char regPool[128]; unsigned char procMute(); @@ -96,6 +104,7 @@ class DivPlatformGB: public DivDispatch { void muteChannel(int ch, bool mute); int getPortaFloor(int ch); bool isStereo(); + bool getDCOffRequired(); void notifyInsChange(int ins); void notifyWaveChange(int wave); void notifyInsDeletion(void* ins); diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 3259f00c..48449034 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -185,6 +185,19 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::Checkbox("Disable anti-click",&antiClick)) { copyOfFlags=(flags&(~8))|(antiClick<<3); } + ImGui::Text("Chip revision:"); + if (ImGui::RadioButton("Original (DMG)",(flags&7)==0)) { + copyOfFlags=(flags&(~7))|0; + } + if (ImGui::RadioButton("Game Boy Color (rev C)",(flags&7)==1)) { + copyOfFlags=(flags&(~7))|1; + } + if (ImGui::RadioButton("Game Boy Color (rev E)",(flags&7)==2)) { + copyOfFlags=(flags&(~7))|2; + } + if (ImGui::RadioButton("Game Boy Advance",(flags&7)==3)) { + copyOfFlags=(flags&(~7))|3; + } break; } case DIV_SYSTEM_OPLL: From d30f9bc8a02f80d337ba6239b7d1a38d8152c96b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 01:24:53 -0500 Subject: [PATCH 346/580] Game Boy: software envelopes, part 3 zombie mode --- src/engine/platform/gb.cpp | 29 +++++++++++++++++++++++++---- src/engine/platform/gb.h | 6 ++++-- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 39ccaf56..2fad226a 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -171,12 +171,13 @@ void DivPlatformGB::tick(bool sysTick) { chan[i].outVol=VOL_SCALE_LINEAR(chan[i].vol&15,MIN(15,chan[i].std.vol.val),15); if (chan[i].outVol<0) chan[i].outVol=0; - // temporary until zombie mode is implemented chan[i].envLen=0; - chan[i].envDir=0; + chan[i].envDir=1; chan[i].envVol=chan[i].outVol; chan[i].soundLen=64; - chan[i].keyOn=true; + + if (!chan[i].keyOn) chan[i].killIt=true; + chan[i].freqChanged=true; } } if (chan[i].std.arp.had) { @@ -327,6 +328,7 @@ void DivPlatformGB::tick(bool sysTick) { } else { rWrite(16+i*5+1,((chan[i].duty&3)<<6)|(63-(chan[i].soundLen&63))); rWrite(16+i*5+2,((chan[i].envVol<<4))|(chan[i].envLen&7)|((chan[i].envDir&1)<<3)); + chan[i].lastKill=chan[i].envVol; } } if (chan[i].keyOff) { @@ -346,6 +348,25 @@ void DivPlatformGB::tick(bool sysTick) { if (chan[i].keyOn) chan[i].keyOn=false; if (chan[i].keyOff) chan[i].keyOff=false; chan[i].freqChanged=false; + + if (chan[i].killIt) { + if (i!=2) { + //rWrite(16+i*5+2,8); + int killDelta=chan[i].lastKill-chan[i].outVol+1; + if (killDelta<0) killDelta+=16; + chan[i].lastKill=chan[i].outVol; + + if (killDelta!=1) { + rWrite(16+i*5+2,((chan[i].envVol<<4))|8); + for (int j=0; jgb.alwaysInit) { + if ((chan[c.chan].insChanged || ins->gb.alwaysInit) && !chan[c.chan].softEnv) { chan[c.chan].envVol=ins->gb.envVol; chan[c.chan].envLen=ins->gb.envLen; chan[c.chan].envDir=ins->gb.envDir; diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index ce582979..9498317b 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -30,8 +30,8 @@ class DivPlatformGB: public DivDispatch { struct Channel { int freq, baseFreq, pitch, pitch2, note, ins; unsigned char duty, sweep; - bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta, released, softEnv; - signed char vol, outVol, wave; + bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta, released, softEnv, killIt; + signed char vol, outVol, wave, lastKill; unsigned char envVol, envDir, envLen, soundLen; unsigned short hwSeqPos; short hwSeqDelay; @@ -58,9 +58,11 @@ class DivPlatformGB: public DivDispatch { inPorta(false), released(false), softEnv(false), + killIt(false), vol(15), outVol(15), wave(-1), + lastKill(0), envVol(0), envDir(0), envLen(0), From 7e7a5a8e3037cdf0415a1db3adb512ad04a4fc9e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 01:34:18 -0500 Subject: [PATCH 347/580] Game Boy: software envelopes, part 4 fixes --- src/engine/platform/gb.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 2fad226a..3797d5bc 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -171,13 +171,17 @@ void DivPlatformGB::tick(bool sysTick) { chan[i].outVol=VOL_SCALE_LINEAR(chan[i].vol&15,MIN(15,chan[i].std.vol.val),15); if (chan[i].outVol<0) chan[i].outVol=0; - chan[i].envLen=0; - chan[i].envDir=1; - chan[i].envVol=chan[i].outVol; - chan[i].soundLen=64; + if (i==2) { + rWrite(16+i*5+2,gbVolMap[chan[i].outVol]); + } else { + chan[i].envLen=0; + chan[i].envDir=1; + chan[i].envVol=chan[i].outVol; + chan[i].soundLen=64; - if (!chan[i].keyOn) chan[i].killIt=true; - chan[i].freqChanged=true; + if (!chan[i].keyOn) chan[i].killIt=true; + chan[i].freqChanged=true; + } } } if (chan[i].std.arp.had) { @@ -452,6 +456,10 @@ int DivPlatformGB::dispatch(DivCommand c) { } if (!chan[c.chan].softEnv) { chan[c.chan].envVol=chan[c.chan].vol; + } else if (c.chan!=2) { + chan[c.chan].envVol=chan[c.chan].vol; + if (!chan[c.chan].keyOn) chan[c.chan].killIt=true; + chan[c.chan].freqChanged=true; } break; case DIV_CMD_GET_VOLUME: From ed98df91d284b0c9d37515ac54d80c6fa8eb7ee4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 02:05:05 -0500 Subject: [PATCH 348/580] turn on proper noise layout by default --- src/engine/song.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/song.h b/src/engine/song.h index 8375fc56..8b7eaa59 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -562,7 +562,7 @@ struct DivSong { linearPitch(2), pitchSlideSpeed(4), loopModality(0), - properNoiseLayout(false), + properNoiseLayout(true), waveDutyIsVol(false), resetMacroOnPorta(false), legacyVolumeSlides(false), From 762b3b292845cea80acbdb8b22c1bef2bc2a1ce5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 02:08:24 -0500 Subject: [PATCH 349/580] PCE: per-chan osc DAC mode overflow fix --- src/engine/platform/pce.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index 5d9a0de8..3fc7a05b 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -115,7 +115,7 @@ void DivPlatformPCE::acquire(short* bufL, short* bufR, size_t start, size_t len) pce->ResetTS(0); for (int i=0; i<6; i++) { - oscBuf[i]->data[oscBuf[i]->needle++]=(pce->channel[i].blip_prev_samp[0]+pce->channel[i].blip_prev_samp[1])<<1; + oscBuf[i]->data[oscBuf[i]->needle++]=CLAMP((pce->channel[i].blip_prev_samp[0]+pce->channel[i].blip_prev_samp[1])<<1,-32768,32767); } tempL[0]=(tempL[0]>>1)+(tempL[0]>>2); From 81482c2f2be021b58f605c49060500e9646c6613 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 04:50:16 -0500 Subject: [PATCH 350/580] QSound: SAMPLE LOOP BUG DEBUG BEGIN --- src/engine/platform/qsound.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/qsound.cpp b/src/engine/platform/qsound.cpp index 6bc88dbf..ca6a794c 100644 --- a/src/engine/platform/qsound.cpp +++ b/src/engine/platform/qsound.cpp @@ -365,7 +365,7 @@ void DivPlatformQSound::tick(bool sysTick) { rWrite(q1_reg_map[Q1V_LOOP][i], qsound_loop); rWrite(q1_reg_map[Q1V_START][i], qsound_addr); rWrite(q1_reg_map[Q1V_PHASE][i], 0x8000); - //logV("ch %d bank=%04x, addr=%04x, end=%04x, loop=%04x!",i,qsound_bank,qsound_addr,qsound_end,qsound_loop); + logV("ch %d bank=%04x, addr=%04x, end=%04x, loop=%04x!",i,qsound_bank,qsound_addr,qsound_end,qsound_loop); // Write sample address. Enable volume if (!chan[i].std.vol.had) { rWrite(q1_reg_map[Q1V_VOL][i], chan[i].vol << 4); From 0528f4e7bde0d04609d37ed0d6a3f9205de7f2d8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 05:04:35 -0500 Subject: [PATCH 351/580] Game Boy: possibly fix wave soft env --- src/engine/platform/gb.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 3797d5bc..0a8b624c 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -173,6 +173,7 @@ void DivPlatformGB::tick(bool sysTick) { if (i==2) { rWrite(16+i*5+2,gbVolMap[chan[i].outVol]); + chan[i].soundLen=64; } else { chan[i].envLen=0; chan[i].envDir=1; @@ -413,6 +414,9 @@ int DivPlatformGB::dispatch(DivCommand c) { chan[c.chan].envDir=ins->gb.envDir; chan[c.chan].soundLen=ins->gb.soundLen; } + if (c.chan==2 && chan[c.chan].softEnv) { + chan[c.chan].soundLen=64; + } chan[c.chan].insChanged=false; break; } From 01d1556fb496675927a8c4b1fd5e1ee694b792e2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 05:38:31 -0500 Subject: [PATCH 352/580] GUI: rename "system" to "chip" "system" made sense when Furnace was a .dmf tracker and had compound setups like Genesis (YM2612+SN) however, it doesn't make too much sense now when compared to "chip" --- src/gui/debug.cpp | 2 +- src/gui/debugWindow.cpp | 4 ++-- src/gui/gui.cpp | 22 +++++++++++----------- src/gui/settings.cpp | 11 +++-------- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/gui/debug.cpp b/src/gui/debug.cpp index f1c974e8..5ae596bc 100644 --- a/src/gui/debug.cpp +++ b/src/gui/debug.cpp @@ -334,7 +334,7 @@ void putDispatchChan(void* data, int chanNum, int type) { break; } default: - ImGui::Text("Unknown system! Help!"); + ImGui::Text("Unimplemented chip! Help!"); break; } } diff --git a/src/gui/debugWindow.cpp b/src/gui/debugWindow.cpp index 6ad2dddd..8fe02b11 100644 --- a/src/gui/debugWindow.cpp +++ b/src/gui/debugWindow.cpp @@ -297,7 +297,7 @@ void FurnaceGUI::drawDebug() { } if (ImGui::TreeNode("Playground")) { if (pgSys<0 || pgSys>=e->song.systemLen) pgSys=0; - if (ImGui::BeginCombo("System",fmt::sprintf("%d. %s",pgSys+1,e->getSystemName(e->song.system[pgSys])).c_str())) { + if (ImGui::BeginCombo("Chip",fmt::sprintf("%d. %s",pgSys+1,e->getSystemName(e->song.system[pgSys])).c_str())) { for (int i=0; isong.systemLen; i++) { if (ImGui::Selectable(fmt::sprintf("%d. %s",i+1,e->getSystemName(e->song.system[i])).c_str())) { pgSys=i; @@ -358,7 +358,7 @@ void FurnaceGUI::drawDebug() { if (ImGui::TreeNode("Register Cheatsheet")) { const char** sheet=e->getRegisterSheet(pgSys); if (sheet==NULL) { - ImGui::Text("no cheatsheet available for this system."); + ImGui::Text("no cheatsheet available for this chip."); } else { if (ImGui::BeginTable("RegisterSheet",2,ImGuiTableFlags_SizingFixedSame)) { ImGui::TableNextRow(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index c1cd7f07..8ee6c60b 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1879,7 +1879,7 @@ void FurnaceGUI::processDrags(int dragX, int dragY) { #define sysAddOption(x) \ if (ImGui::MenuItem(getSystemName(x))) { \ if (!e->addSystem(x)) { \ - showError("cannot add system! ("+e->getLastError()+")"); \ + showError("cannot add chip! ("+e->getLastError()+")"); \ } \ updateWindowTitle(); \ } @@ -2887,7 +2887,7 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("one file")) { openFileDialog(GUI_FILE_EXPORT_AUDIO_ONE); } - if (ImGui::MenuItem("multiple files (one per system)")) { + if (ImGui::MenuItem("multiple files (one per chip)")) { openFileDialog(GUI_FILE_EXPORT_AUDIO_PER_SYS); } if (ImGui::MenuItem("multiple files (one per channel)")) { @@ -2928,7 +2928,7 @@ bool FurnaceGUI::loop() { "pattern indexes are ordered as they appear in the song." ); } - ImGui::Text("systems to export:"); + ImGui::Text("chips to export:"); bool hasOneAtLeast=false; for (int i=0; isong.systemLen; i++) { int minVersion=e->minVGMVersion(e->song.system[i]); @@ -2937,17 +2937,17 @@ bool FurnaceGUI::loop() { ImGui::EndDisabled(); if (minVersion>vgmExportVersion) { if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) { - ImGui::SetTooltip("this system is only available in VGM %d.%.2x and higher!",minVersion>>8,minVersion&0xff); + ImGui::SetTooltip("this chip is only available in VGM %d.%.2x and higher!",minVersion>>8,minVersion&0xff); } } else if (minVersion==0) { if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled)) { - ImGui::SetTooltip("this system is not supported by the VGM format!"); + ImGui::SetTooltip("this chip is not supported by the VGM format!"); } } else { if (willExport[i]) hasOneAtLeast=true; } } - ImGui::Text("select the systems you wish to export,"); + ImGui::Text("select the chip you wish to export,"); ImGui::Text("but only up to %d of each type.",(vgmExportVersion>=0x151)?2:1); if (hasOneAtLeast) { if (ImGui::MenuItem("click to export")) { @@ -2972,14 +2972,14 @@ bool FurnaceGUI::loop() { ImGui::EndMenu(); } ImGui::Separator(); - if (ImGui::BeginMenu("add system...")) { + if (ImGui::BeginMenu("add chip...")) { for (int j=0; availableSystems[j]; j++) { if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY)) continue; sysAddOption((DivSystem)availableSystems[j]); } ImGui::EndMenu(); } - if (ImGui::BeginMenu("configure system...")) { + if (ImGui::BeginMenu("configure chip...")) { for (int i=0; isong.systemLen; i++) { if (ImGui::TreeNode(fmt::sprintf("%d. %s##_SYSP%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { drawSysConf(i,e->song.system[i],e->song.systemFlags[i],true); @@ -2988,7 +2988,7 @@ bool FurnaceGUI::loop() { } ImGui::EndMenu(); } - if (ImGui::BeginMenu("change system...")) { + if (ImGui::BeginMenu("change chip...")) { ImGui::Checkbox("Preserve channel positions",&preserveChanPos); for (int i=0; isong.systemLen; i++) { if (ImGui::BeginMenu(fmt::sprintf("%d. %s##_SYSC%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { @@ -3001,12 +3001,12 @@ bool FurnaceGUI::loop() { } ImGui::EndMenu(); } - if (ImGui::BeginMenu("remove system...")) { + if (ImGui::BeginMenu("remove chip...")) { ImGui::Checkbox("Preserve channel positions",&preserveChanPos); for (int i=0; isong.systemLen; i++) { if (ImGui::MenuItem(fmt::sprintf("%d. %s##_SYSR%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { if (!e->removeSystem(i,preserveChanPos)) { - showError("cannot remove system! ("+e->getLastError()+")"); + showError("cannot remove chip! ("+e->getLastError()+")"); } } } diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 73e9d233..37d4bfec 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -468,7 +468,7 @@ void FurnaceGUI::drawSettings() { } bool restartOnFlagChangeB=settings.restartOnFlagChange; - if (ImGui::Checkbox("Restart song when changing system properties",&restartOnFlagChangeB)) { + if (ImGui::Checkbox("Restart song when changing chip properties",&restartOnFlagChangeB)) { settings.restartOnFlagChange=restartOnFlagChangeB; } @@ -1232,11 +1232,6 @@ void FurnaceGUI::drawSettings() { } ImGui::EndDisabled(); - bool chipNamesB=settings.chipNames; - if (ImGui::Checkbox("Use chip names instead of system names",&chipNamesB)) { - settings.chipNames=chipNamesB; - } - bool oplStandardWaveNamesB=settings.oplStandardWaveNames; if (ImGui::Checkbox("Use standard OPL waveform names",&oplStandardWaveNamesB)) { settings.oplStandardWaveNames=oplStandardWaveNamesB; @@ -1567,8 +1562,8 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_SONG,"Song effect"); UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_TIME,"Time effect"); UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_SPEED,"Speed effect"); - UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY,"Primary system effect"); - UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY,"Secondary system effect"); + UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY,"Primary specific effect"); + UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY,"Secondary specific effect"); UI_COLOR_CONFIG(GUI_COLOR_PATTERN_EFFECT_MISC,"Miscellaneous"); UI_COLOR_CONFIG(GUI_COLOR_EE_VALUE,"External command output"); ImGui::TreePop(); From 00ae5b4142589d37d5e038e1b8afc287561b0d37 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 11:30:45 -0500 Subject: [PATCH 353/580] GUI: fix volume macro always being 15 issue #629 --- src/gui/insEdit.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 0d90e373..55094252 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3737,10 +3737,12 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_FM || ins->type==DIV_INS_MIKEY || ins->type==DIV_INS_MULTIPCM || ins->type==DIV_INS_SU) { volMax=127; } - if (ins->type==DIV_INS_GB && !ins->gb.softEnv) { - volMax=0; - } else { - volMax=15; + if (ins->type==DIV_INS_GB) { + if (ins->gb.softEnv) { + volMax=15; + } else { + volMax=0; + } } if (ins->type==DIV_INS_PET || ins->type==DIV_INS_BEEPER) { volMax=1; From b156336216a7f55c04dcc67cbf3c1cfd39bec2bc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 11 Aug 2022 14:27:33 -0500 Subject: [PATCH 354/580] GUI: fix Game Boy ins edit crashes --- src/gui/insEdit.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 55094252..1c29c5d9 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3173,10 +3173,9 @@ void FurnaceGUI::drawInsEdit() { ins->gb.hwSeqLen++; } } - - ImGui::EndChild(); - ImGui::EndDisabled(); } + ImGui::EndChild(); + ImGui::EndDisabled(); ImGui::EndTabItem(); } if (ins->type==DIV_INS_C64) if (ImGui::BeginTabItem("C64")) { From 39feda54acb0a75d32dfe7c1e6e4da6e178fb9c5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 12 Aug 2022 04:11:17 -0500 Subject: [PATCH 355/580] OPZ: volume macro should go to 127 --- src/gui/insEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 1c29c5d9..d4e76611 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3733,7 +3733,7 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_AMIGA) { volMax=64; } - if (ins->type==DIV_INS_FM || ins->type==DIV_INS_MIKEY || ins->type==DIV_INS_MULTIPCM || ins->type==DIV_INS_SU) { + if (ins->type==DIV_INS_FM || ins->type==DIV_INS_MIKEY || ins->type==DIV_INS_MULTIPCM || ins->type==DIV_INS_SU || ins->type==DIV_INS_OPZ) { volMax=127; } if (ins->type==DIV_INS_GB) { From 2743c60cf3f6021b6271af9eb9afc9c250bd535a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 12 Aug 2022 23:09:34 -0500 Subject: [PATCH 356/580] Game Boy: fix wave channel auto-enable on wave cha --- src/engine/platform/gb.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 0a8b624c..a7b31093 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -636,7 +636,7 @@ void DivPlatformGB::notifyWaveChange(int wave) { if (chan[2].wave==wave) { ws.changeWave1(wave); updateWave(); - if (!chan[2].keyOff) chan[2].keyOn=true; + if (!chan[2].keyOff && chan[2].active) chan[2].keyOn=true; } } From 5506b87b4073bc4e22772c5c7606b472ce4e7dcd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 02:48:34 -0500 Subject: [PATCH 357/580] update sample doc --- papers/doc/6-sample/README.md | 72 ++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index 0c038fdb..035a58cc 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -4,29 +4,54 @@ In the context of Furnace, a sound sample (usually just referred to as a sample) In Furnace, these samples can be generated by importing a .wav (think of it as an higher quality MP3) file. -## supported systems +## supported chips -As of Furnace 0.6, the following sound chips have sample support: - - NES/Ricoh 2A03 (with DPCM support and only on channel 5) - - Sega Genesis/YM2612 (channel 6 only; but only if there exists a `1701` effect that gets played on or before a trigger for a sample, or if you are using an instrument with Sample type) - - PC Engine/TurboGrafx 16/Huc6280 (same conditions as above) - - Amiga/Paula (on all channels) - - Arcade/SEGA PCM (same as above) - - Neo Geo/Neo Geo CD (on the last 7 channels (6 if you are using Neo Geo CD) only and can be resampled the same way as above) - - Seta/Allumer X1-010 (same as YM2612) - - Atari Lynx - - MSM6258 and MSM6295 - - YMU759/MA-2 (last channel only) - - QSound - - ZX Spectrum 48k - - RF5C68 - - WonderSwan - - Tildearrow Sound Unit - - VERA (last channel only) - - Y8590 (last channel only) - - And a few more that I've forgotten to mention. +as of Furnace 0.6, the following sound chips have sample support: -Furnace also has a feature where you can make an Amiga formarted instrument on the YM2612 and Huc6280 to resample a sample you have in the module. +- NES/Ricoh 2A03 (with DPCM support and only on channel 5) +- Sega Genesis/YM2612 (channel 6 only) +- PC Engine/TurboGrafx-16/HuC6280 +- Amiga/Paula +- SegaPCM +- Neo Geo/Neo Geo CD/YM2610 (ADPCM channels only) +- Seta/Allumer X1-010 +- Atari Lynx +- MSM6258 and MSM6295 +- YMU759/MA-2 (last channel only) +- QSound +- ZX Spectrum 48k (1-bit) +- RF5C68 +- WonderSwan +- tildearrow Sound Unit +- VERA (last channel only) +- Y8950 (last channel only) +- a few more that I've forgotten to mention + +## compatible sample mode + +effect `17xx` enables/disables compatible sample mode whether supported (e.g. on Sega Genesis or PC Engine). + +in this mode, samples are mapped to notes in an octave from C to B, allowing you to use up to 12 samples. +if you need to use more samples, you may change the sample bank using effect `EBxx`. + +use of this mode is discouraged in favor of Sample type instruments. + +## notes + +due to limitations in some of those sound chips, some restrictions exist: + +- Amiga: sample lengths and loop will be set to an even number, and your sample can't be longer than 131070. +- NES: if on DPCM mode, only a limited selection of frequencies is available, and loop position isn't supported (only entire sample). +- SegaPCM: your sample can't be longer than 65535, and the maximum frequency is 31.25KHz. +- QSound: your sample can't be longer than 65535, and the loop length shall not be greater than 32767. +- Neo Geo (ADPCM-A): no looping supported. your samples will play at ~18.5KHz. +- Neo Geo (ADPCM-B): no loop position supported (only entire sample), and the maximum frequency is ~55KHz. +- YM2608: the maximum frequency is ~55KHz. +- MSM6258/MSM6295: no arbitrary frequency. +- ZX Spectrum Beeper: your sample can't be longer than 2048. +- Seta/Allumer X1-010: frequency resolution is terrible in the lower end. your sample can't be longer than 131072. + +furthermore, many of these chips have a limited amount of sample memory. check memory usage in window > statistics. # the sample editor @@ -34,11 +59,12 @@ You can actually tweak your samples in Furnace's sample editor, which can be acc In there, you can modify certain data pertaining to your sample, such as the: - volume of the sample in percentage, where 100% is the current level of the sample (note that you can distort it if you put it too high) - - the sample rate, from 0Hz (no sample movement) to 65535Hz (65.5kHz). + - the sample rate. - what frequencies to filter, along with filter level/sweep and resonance options (much like the C64) - and many more. The changes you make will be applied as soon as you've committed them to your sample, but they can be undoed and redoed, just like text. # tips -If you have a sample you wanna use that is about 44100 or anything over 32000Hz, downsample the sample to 32000Hz so that the pitch of the sample in Furnace stays like the original audio file. You can do this in Audacity by going to the bottom left of the screen (If you see "Project Rate (Hz)" you are there), change the project rate to 32000Hz and save the file to wav in Audacity using "File -> Export -> Export as WAV". + +if you have a sample you wanna use that is about 44100 or anything over 32000Hz, downsample the sample to 32000Hz so that the pitch of the sample in Furnace stays like the original audio file, From 4707eb7002d07747a6bfc3d9d0397a4ce0faa6e2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 04:07:50 -0500 Subject: [PATCH 358/580] update Namco 163 doc --- papers/doc/4-instrument/n163.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/n163.md b/papers/doc/4-instrument/n163.md index 0bd91445..ca4dd2e7 100644 --- a/papers/doc/4-instrument/n163.md +++ b/papers/doc/4-instrument/n163.md @@ -2,7 +2,7 @@ Namco 163 instrument editor consists of two tabs: one controlling various parameters for waveform initialize and macro tab containing 10 macros. -## N163 +## Namco 163 - [Initial Waveform] - Determines the initial waveform for playing. - [Initial Waveform position in RAM] - Determines the initial waveform position will be load to RAM. - [Initial Waveform length in RAM] - Determines the initial waveform length will be load to RAM. From ce2d322e474911440cc4ca8544b27db91a55e235 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 04:17:32 -0500 Subject: [PATCH 359/580] GUI: add replace for wave/sample and prepare for raw sample import --- src/engine/engine.cpp | 112 +++++++++++++++++++++---------------- src/engine/engine.h | 17 ++++-- src/gui/dataList.cpp | 19 +++++++ src/gui/doAction.cpp | 12 ++++ src/gui/gui.cpp | 126 +++++++++++++++++++++++++++++++++++++++--- src/gui/gui.h | 12 +++- src/gui/guiConst.cpp | 4 ++ src/gui/waveEdit.cpp | 3 +- 8 files changed, 242 insertions(+), 63 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index bf55d9d6..9b2696c1 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2196,7 +2196,10 @@ void DivEngine::delInstrument(int index) { } int DivEngine::addWave() { - if (song.wave.size()>=256) return -1; + if (song.wave.size()>=256) { + lastError="too many wavetables!"; + return -1; + } BUSY_BEGIN; saveLock.lock(); DivWavetable* wave=new DivWavetable; @@ -2208,50 +2211,62 @@ int DivEngine::addWave() { return waveCount; } -bool DivEngine::addWaveFromFile(const char* path, bool addRaw) { +int DivEngine::addWavePtr(DivWavetable* which) { if (song.wave.size()>=256) { lastError="too many wavetables!"; - return false; + delete which; + return -1; } + BUSY_BEGIN; + saveLock.lock(); + int waveCount=(int)song.wave.size(); + song.wave.push_back(which); + song.waveLen=waveCount+1; + saveLock.unlock(); + BUSY_END; + return song.waveLen; +} + +DivWavetable* DivEngine::waveFromFile(const char* path, bool addRaw) { FILE* f=ps_fopen(path,"rb"); if (f==NULL) { lastError=fmt::sprintf("%s",strerror(errno)); - return false; + return NULL; } unsigned char* buf; ssize_t len; if (fseek(f,0,SEEK_END)!=0) { fclose(f); lastError=fmt::sprintf("could not seek to end: %s",strerror(errno)); - return false; + return NULL; } len=ftell(f); if (len<0) { fclose(f); lastError=fmt::sprintf("could not determine file size: %s",strerror(errno)); - return false; + return NULL; } if (len==(SIZE_MAX>>1)) { fclose(f); lastError="file size is invalid!"; - return false; + return NULL; } if (len==0) { fclose(f); lastError="file is empty"; - return false; + return NULL; } if (fseek(f,0,SEEK_SET)!=0) { fclose(f); lastError=fmt::sprintf("could not seek to beginning: %s",strerror(errno)); - return false; + return NULL; } buf=new unsigned char[len]; if (fread(buf,1,len,f)!=(size_t)len) { logW("did not read entire wavetable file buffer!"); delete[] buf; lastError=fmt::sprintf("could not read entire file: %s",strerror(errno)); - return false; + return NULL; } fclose(f); @@ -2279,7 +2294,7 @@ bool DivEngine::addWaveFromFile(const char* path, bool addRaw) { lastError="invalid wavetable header/data!"; delete wave; delete[] buf; - return false; + return NULL; } } else { try { @@ -2320,7 +2335,7 @@ bool DivEngine::addWaveFromFile(const char* path, bool addRaw) { } else { delete wave; delete[] buf; - return false; + return NULL; } } } catch (EndOfFileException& e) { @@ -2338,7 +2353,7 @@ bool DivEngine::addWaveFromFile(const char* path, bool addRaw) { } else { delete wave; delete[] buf; - return false; + return NULL; } } } @@ -2346,17 +2361,10 @@ bool DivEngine::addWaveFromFile(const char* path, bool addRaw) { delete wave; delete[] buf; lastError="premature end of file"; - return false; + return NULL; } - BUSY_BEGIN; - saveLock.lock(); - int waveCount=(int)song.wave.size(); - song.wave.push_back(wave); - song.waveLen=waveCount+1; - saveLock.unlock(); - BUSY_END; - return true; + return wave; } void DivEngine::delWave(int index) { @@ -2372,7 +2380,10 @@ void DivEngine::delWave(int index) { } int DivEngine::addSample() { - if (song.sample.size()>=256) return -1; + if (song.sample.size()>=256) { + lastError="too many samples!"; + return -1; + } BUSY_BEGIN; saveLock.lock(); DivSample* sample=new DivSample; @@ -2388,11 +2399,28 @@ int DivEngine::addSample() { return sampleCount; } -int DivEngine::addSampleFromFile(const char* path) { +int DivEngine::addSamplePtr(DivSample* which) { if (song.sample.size()>=256) { lastError="too many samples!"; + delete which; return -1; } + int sampleCount=(int)song.sample.size(); + BUSY_BEGIN; + saveLock.lock(); + song.sample.push_back(which); + song.sampleLen=sampleCount+1; + saveLock.unlock(); + renderSamples(); + BUSY_END; + return sampleCount; +} + +DivSample* DivEngine::sampleFromFile(const char* path) { + if (song.sample.size()>=256) { + lastError="too many samples!"; + return NULL; + } BUSY_BEGIN; warnings=""; @@ -2425,7 +2453,6 @@ int DivEngine::addSampleFromFile(const char* path) { if (extS==".dmc") { // read as .dmc size_t len=0; DivSample* sample=new DivSample; - int sampleCount=(int)song.sample.size(); sample->name=stripPath; FILE* f=ps_fopen(path,"rb"); @@ -2433,7 +2460,7 @@ int DivEngine::addSampleFromFile(const char* path) { BUSY_END; lastError=fmt::sprintf("could not open file! (%s)",strerror(errno)); delete sample; - return -1; + return NULL; } if (fseek(f,0,SEEK_END)<0) { @@ -2441,7 +2468,7 @@ int DivEngine::addSampleFromFile(const char* path) { BUSY_END; lastError=fmt::sprintf("could not get file length! (%s)",strerror(errno)); delete sample; - return -1; + return NULL; } len=ftell(f); @@ -2451,7 +2478,7 @@ int DivEngine::addSampleFromFile(const char* path) { BUSY_END; lastError="file is empty!"; delete sample; - return -1; + return NULL; } if (len==(SIZE_MAX>>1)) { @@ -2459,7 +2486,7 @@ int DivEngine::addSampleFromFile(const char* path) { BUSY_END; lastError="file is invalid!"; delete sample; - return -1; + return NULL; } if (fseek(f,0,SEEK_SET)<0) { @@ -2467,7 +2494,7 @@ int DivEngine::addSampleFromFile(const char* path) { BUSY_END; lastError=fmt::sprintf("could not seek to beginning of file! (%s)",strerror(errno)); delete sample; - return -1; + return NULL; } sample->rate=33144; @@ -2480,22 +2507,16 @@ int DivEngine::addSampleFromFile(const char* path) { BUSY_END; lastError=fmt::sprintf("could not read file! (%s)",strerror(errno)); delete sample; - return -1; + return NULL; } - - saveLock.lock(); - song.sample.push_back(sample); - song.sampleLen=sampleCount+1; - saveLock.unlock(); - renderSamples(); BUSY_END; - return sampleCount; + return sample; } } #ifndef HAVE_SNDFILE lastError="Furnace was not compiled with libsndfile!"; - return -1; + return NULL; #else SF_INFO si; SFWrapper sfWrap; @@ -2507,15 +2528,15 @@ int DivEngine::addSampleFromFile(const char* path) { if (err==SF_ERR_SYSTEM) { lastError=fmt::sprintf("could not open file! (%s %s)",sf_error_number(err),strerror(errno)); } else { - lastError=fmt::sprintf("could not open file! (%s)",sf_error_number(err)); + lastError=fmt::sprintf("could not open file! (%s)\nif this is raw sample data, you may import it by right-clicking the Load Sample icon and selecting \"import raw\".",sf_error_number(err)); } - return -1; + return NULL; } if (si.frames>16777215) { lastError="this sample is too big! max sample size is 16777215."; sfWrap.doClose(); BUSY_END; - return -1; + return NULL; } void* buf=NULL; sf_count_t sampleLen=sizeof(short); @@ -2613,13 +2634,8 @@ int DivEngine::addSampleFromFile(const char* path) { if (sample->centerRate<4000) sample->centerRate=4000; if (sample->centerRate>64000) sample->centerRate=64000; sfWrap.doClose(); - saveLock.lock(); - song.sample.push_back(sample); - song.sampleLen=sampleCount+1; - saveLock.unlock(); - renderSamples(); BUSY_END; - return sampleCount; + return sample; #endif } diff --git a/src/engine/engine.h b/src/engine/engine.h index 483ebcf0..a03c9243 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -706,8 +706,11 @@ class DivEngine { // add wavetable int addWave(); - // add wavetable from file - bool addWaveFromFile(const char* path, bool loadRaw=true); + // add wavetable from pointer + int addWavePtr(DivWavetable* which); + + // get wavetable from file + DivWavetable* waveFromFile(const char* path, bool loadRaw=true); // delete wavetable void delWave(int index); @@ -715,8 +718,14 @@ class DivEngine { // add sample int addSample(); - // add sample from file - int addSampleFromFile(const char* path); + // add sample from pointer + int addSamplePtr(DivSample* which); + + // get sample from file + DivSample* sampleFromFile(const char* path); + + // get raw sample + DivSample* sampleFromFileRaw(const char* path, DivSampleDepth depth, int channels, bool bigEndian); // delete sample void delSample(int index); diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 3a536951..10dda6aa 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -420,6 +420,12 @@ void FurnaceGUI::drawWaveList() { if (ImGui::Button(ICON_FA_FOLDER_OPEN "##WaveLoad")) { doAction(GUI_ACTION_WAVE_LIST_OPEN); } + if (ImGui::BeginPopupContextItem("WaveOpenOpt")) { + if (ImGui::MenuItem("replace...")) { + doAction((curWave>=0 && curWave<(int)e->song.wave.size())?GUI_ACTION_WAVE_LIST_OPEN_REPLACE:GUI_ACTION_WAVE_LIST_OPEN); + } + ImGui::EndPopup(); + } ImGui::SameLine(); if (ImGui::Button(ICON_FA_FLOPPY_O "##WaveSave")) { doAction(GUI_ACTION_WAVE_LIST_SAVE); @@ -470,6 +476,19 @@ void FurnaceGUI::drawSampleList() { if (ImGui::Button(ICON_FA_FOLDER_OPEN "##SampleLoad")) { doAction(GUI_ACTION_SAMPLE_LIST_OPEN); } + if (ImGui::BeginPopupContextItem("SampleOpenOpt")) { + if (ImGui::MenuItem("replace...")) { + doAction((curSample>=0 && curSample<(int)e->song.sample.size())?GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE:GUI_ACTION_SAMPLE_LIST_OPEN); + } + ImGui::Separator(); + if (ImGui::MenuItem("import raw...")) { + doAction(GUI_ACTION_SAMPLE_LIST_OPEN_RAW); + } + if (ImGui::MenuItem("import raw (replace)...")) { + doAction((curSample>=0 && curSample<(int)e->song.sample.size())?GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE_RAW:GUI_ACTION_SAMPLE_LIST_OPEN_RAW); + } + ImGui::EndPopup(); + } ImGui::SameLine(); if (ImGui::Button(ICON_FA_FLOPPY_O "##SampleSave")) { doAction(GUI_ACTION_SAMPLE_LIST_SAVE); diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index ca640d62..931de26d 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -648,6 +648,9 @@ void FurnaceGUI::doAction(int what) { case GUI_ACTION_WAVE_LIST_OPEN: openFileDialog(GUI_FILE_WAVE_OPEN); break; + case GUI_ACTION_WAVE_LIST_OPEN_REPLACE: + openFileDialog(GUI_FILE_WAVE_OPEN_REPLACE); + break; case GUI_ACTION_WAVE_LIST_SAVE: if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE); break; @@ -728,6 +731,15 @@ void FurnaceGUI::doAction(int what) { case GUI_ACTION_SAMPLE_LIST_OPEN: openFileDialog(GUI_FILE_SAMPLE_OPEN); break; + case GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE: + openFileDialog(GUI_FILE_SAMPLE_OPEN_REPLACE); + break; + case GUI_ACTION_SAMPLE_LIST_OPEN_RAW: + openFileDialog(GUI_FILE_SAMPLE_OPEN_RAW); + break; + case GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE_RAW: + openFileDialog(GUI_FILE_SAMPLE_OPEN_REPLACE_RAW); + break; case GUI_ACTION_SAMPLE_LIST_SAVE: if (curSample>=0 && curSample<(int)e->song.sample.size()) openFileDialog(GUI_FILE_SAMPLE_SAVE); break; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 8ee6c60b..022dfe83 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1320,6 +1320,7 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { ); break; case GUI_FILE_WAVE_OPEN: + case GUI_FILE_WAVE_OPEN_REPLACE: if (!dirExists(workingDirWave)) workingDirWave=getHomeDir(); hasOpened=fileDialog->openLoad( "Load Wavetable", @@ -1341,6 +1342,7 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { ); break; case GUI_FILE_SAMPLE_OPEN: + case GUI_FILE_SAMPLE_OPEN_REPLACE: if (!dirExists(workingDirSample)) workingDirSample=getHomeDir(); hasOpened=fileDialog->openLoad( "Load Sample", @@ -1351,6 +1353,17 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { dpiScale ); break; + case GUI_FILE_SAMPLE_OPEN_RAW: + case GUI_FILE_SAMPLE_OPEN_REPLACE_RAW: + if (!dirExists(workingDirSample)) workingDirSample=getHomeDir(); + hasOpened=fileDialog->openLoad( + "Load Raw Sample", + {"all files", ".*"}, + ".*", + workingDirSample, + dpiScale + ); + break; case GUI_FILE_SAMPLE_SAVE: if (!dirExists(workingDirSample)) workingDirSample=getHomeDir(); hasOpened=fileDialog->openSave( @@ -2630,6 +2643,8 @@ bool FurnaceGUI::loop() { case SDL_DROPFILE: if (ev.drop.file!=NULL) { std::vector instruments=e->instrumentFromFile(ev.drop.file); + DivWavetable* droppedWave=NULL; + DivSample* droppedSample=NULL;; if (!instruments.empty()) { if (!e->getWarnings().empty()) { showWarning(e->getWarnings(),GUI_WARN_GENERIC); @@ -2639,10 +2654,12 @@ bool FurnaceGUI::loop() { } nextWindow=GUI_WINDOW_INS_LIST; MARK_MODIFIED; - } else if (e->addWaveFromFile(ev.drop.file,false)) { + } else if ((droppedWave=e->waveFromFile(ev.drop.file,false))!=NULL) { + e->addWavePtr(droppedWave); nextWindow=GUI_WINDOW_WAVE_LIST; MARK_MODIFIED; - } else if (e->addSampleFromFile(ev.drop.file)!=-1) { + } else if ((droppedSample=e->sampleFromFile(ev.drop.file))!=NULL) { + e->addSamplePtr(droppedSample); nextWindow=GUI_WINDOW_SAMPLE_LIST; MARK_MODIFIED; } else if (modified) { @@ -3269,10 +3286,14 @@ bool FurnaceGUI::loop() { workingDirIns=fileDialog->getPath()+DIR_SEPARATOR_STR; break; case GUI_FILE_WAVE_OPEN: + case GUI_FILE_WAVE_OPEN_REPLACE: case GUI_FILE_WAVE_SAVE: workingDirWave=fileDialog->getPath()+DIR_SEPARATOR_STR; break; case GUI_FILE_SAMPLE_OPEN: + case GUI_FILE_SAMPLE_OPEN_RAW: + case GUI_FILE_SAMPLE_OPEN_REPLACE: + case GUI_FILE_SAMPLE_OPEN_REPLACE_RAW: case GUI_FILE_SAMPLE_SAVE: workingDirSample=fileDialog->getPath()+DIR_SEPARATOR_STR; break; @@ -3438,13 +3459,45 @@ bool FurnaceGUI::loop() { e->song.wave[curWave]->save(copyOfName.c_str()); } break; - case GUI_FILE_SAMPLE_OPEN: - if (e->addSampleFromFile(copyOfName.c_str())==-1) { + case GUI_FILE_SAMPLE_OPEN: { + DivSample* s=e->sampleFromFile(copyOfName.c_str()); + if (s==NULL) { showError(e->getLastError()); } else { - MARK_MODIFIED; + if (e->addSamplePtr(s)==-1) { + showError(e->getLastError()); + } else { + MARK_MODIFIED; + } } break; + } + case GUI_FILE_SAMPLE_OPEN_REPLACE: { + DivSample* s=e->sampleFromFile(copyOfName.c_str()); + if (s==NULL) { + showError(e->getLastError()); + } else { + if (curSample>=0 && curSample<(int)e->song.sample.size()) { + e->lockEngine([this,s]() { + // if it crashes here please tell me... + DivSample* oldSample=e->song.sample[curSample]; + e->song.sample[curSample]=s; + delete oldSample; + e->renderSamples(); + MARK_MODIFIED; + }); + } else { + showError("...but you haven't selected a sample!"); + delete s; + } + } + break; + } + case GUI_FILE_SAMPLE_OPEN_RAW: + case GUI_FILE_SAMPLE_OPEN_REPLACE_RAW: + pendingRawSample=copyOfName; + displayPendingRawSample=true; + break; case GUI_FILE_SAMPLE_SAVE: if (curSample>=0 && curSample<(int)e->song.sample.size()) { e->song.sample[curSample]->save(copyOfName.c_str()); @@ -3508,13 +3561,36 @@ bool FurnaceGUI::loop() { } break; } - case GUI_FILE_WAVE_OPEN: - if (!e->addWaveFromFile(copyOfName.c_str())) { + case GUI_FILE_WAVE_OPEN: { + DivWavetable* wave=e->waveFromFile(copyOfName.c_str()); + if (wave==NULL) { showError("cannot load wavetable! ("+e->getLastError()+")"); } else { - MARK_MODIFIED; + if (e->addWavePtr(wave)==-1) { + showError("cannot load wavetable! ("+e->getLastError()+")"); + } else { + MARK_MODIFIED; + } } break; + } + case GUI_FILE_WAVE_OPEN_REPLACE: { + DivWavetable* wave=e->waveFromFile(copyOfName.c_str()); + if (wave==NULL) { + showError("cannot load wavetable! ("+e->getLastError()+")"); + } else { + if (curWave>=0 && curWave<(int)e->song.wave.size()) { + e->lockEngine([this,wave]() { + *e->song.wave[curWave]=*wave; + MARK_MODIFIED; + }); + } else { + showError("...but you haven't selected a wavetable!"); + } + delete wave; + } + break; + } case GUI_FILE_EXPORT_VGM: { SafeWriter* w=e->saveVGM(willExport,vgmExportLoop,vgmExportVersion,vgmExportPatternHints); if (w!=NULL) { @@ -3641,6 +3717,11 @@ bool FurnaceGUI::loop() { ImGui::OpenPopup("Select Instrument"); } + if (displayPendingRawSample) { + displayPendingRawSample=false; + ImGui::OpenPopup("Import Raw Sample"); + } + if (displayExporting) { displayExporting=false; ImGui::OpenPopup("Rendering..."); @@ -4071,6 +4152,34 @@ bool FurnaceGUI::loop() { ImGui::EndPopup(); } + bool doRespond=false; + if (ImGui::BeginPopupModal("Import Raw Sample",NULL,ImGuiWindowFlags_AlwaysAutoResize)) { + ImGui::Text("Work In Progress - sorry"); + if (ImGui::Button("Oh... really?")) { + ImGui::CloseCurrentPopup(); + } + ImGui::SameLine(); + if (ImGui::Button("Why are you so hostile? I'm just trying to import a raw sample.")) { + doRespond=true; + ImGui::CloseCurrentPopup(); + } + ImGui::EndPopup(); + } + + if (doRespond) { + doRespond=false; + ImGui::OpenPopup("Fatal Alert"); + } + + if (ImGui::BeginPopupModal("Fatal Alert",NULL,ImGuiWindowFlags_AlwaysAutoResize)) { + ImGui::Text("Well, I'd rather you didn't. So, good night."); + if (ImGui::Button("Fine")) { + abort(); + ImGui::CloseCurrentPopup(); + } + ImGui::EndPopup(); + } + layoutTimeEnd=SDL_GetPerformanceCounter(); // backup trigger @@ -4521,6 +4630,7 @@ FurnaceGUI::FurnaceGUI(): noteInputPoly(true), displayPendingIns(false), pendingInsSingle(false), + displayPendingRawSample(false), vgmExportVersion(0x171), drawHalt(10), macroPointSize(16), diff --git a/src/gui/gui.h b/src/gui/gui.h index 0ce4afae..3b148924 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -259,8 +259,12 @@ enum FurnaceGUIFileDialogs { GUI_FILE_INS_OPEN_REPLACE, GUI_FILE_INS_SAVE, GUI_FILE_WAVE_OPEN, + GUI_FILE_WAVE_OPEN_REPLACE, GUI_FILE_WAVE_SAVE, GUI_FILE_SAMPLE_OPEN, + GUI_FILE_SAMPLE_OPEN_RAW, + GUI_FILE_SAMPLE_OPEN_REPLACE, + GUI_FILE_SAMPLE_OPEN_REPLACE_RAW, GUI_FILE_SAMPLE_SAVE, GUI_FILE_EXPORT_AUDIO_ONE, GUI_FILE_EXPORT_AUDIO_PER_SYS, @@ -451,6 +455,7 @@ enum FurnaceGUIActions { GUI_ACTION_WAVE_LIST_ADD, GUI_ACTION_WAVE_LIST_DUPLICATE, GUI_ACTION_WAVE_LIST_OPEN, + GUI_ACTION_WAVE_LIST_OPEN_REPLACE, GUI_ACTION_WAVE_LIST_SAVE, GUI_ACTION_WAVE_LIST_MOVE_UP, GUI_ACTION_WAVE_LIST_MOVE_DOWN, @@ -464,6 +469,9 @@ enum FurnaceGUIActions { GUI_ACTION_SAMPLE_LIST_ADD, GUI_ACTION_SAMPLE_LIST_DUPLICATE, GUI_ACTION_SAMPLE_LIST_OPEN, + GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE, + GUI_ACTION_SAMPLE_LIST_OPEN_RAW, + GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE_RAW, GUI_ACTION_SAMPLE_LIST_SAVE, GUI_ACTION_SAMPLE_LIST_MOVE_UP, GUI_ACTION_SAMPLE_LIST_MOVE_DOWN, @@ -958,13 +966,15 @@ class FurnaceGUI { bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints; bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; bool displayNew, fullScreen, preserveChanPos, wantScrollList, noteInputPoly; - bool displayPendingIns, pendingInsSingle; + bool displayPendingIns, pendingInsSingle, displayPendingRawSample; bool willExport[32]; int vgmExportVersion; int drawHalt; int macroPointSize; int waveEditStyle; + String pendingRawSample; + ImGuiWindowFlags globalWinFlags; FurnaceGUIFileDialogs curFileDialog; diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 59c917ae..5fabb1c7 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -581,6 +581,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("WAVE_LIST_ADD", "Add", SDLK_INSERT), D("WAVE_LIST_DUPLICATE", "Duplicate", FURKMOD_CMD|SDLK_d), D("WAVE_LIST_OPEN", "Open", 0), + D("WAVE_LIST_OPEN_REPLACE", "Open (replace current)", 0), D("WAVE_LIST_SAVE", "Save", 0), D("WAVE_LIST_MOVE_UP", "Move up", FURKMOD_SHIFT|SDLK_UP), D("WAVE_LIST_MOVE_DOWN", "Move down", FURKMOD_SHIFT|SDLK_DOWN), @@ -594,6 +595,9 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("SAMPLE_LIST_ADD", "Add", SDLK_INSERT), D("SAMPLE_LIST_DUPLICATE", "Duplicate", FURKMOD_CMD|SDLK_d), D("SAMPLE_LIST_OPEN", "Open", 0), + D("SAMPLE_LIST_OPEN_REPLACE", "Open (replace current)", 0), + D("SAMPLE_LIST_OPEN_RAW", "Import raw data", 0), + D("SAMPLE_LIST_OPEN_REPLACE_RAW", "Import raw data (replace current)", 0), D("SAMPLE_LIST_SAVE", "Save", 0), D("SAMPLE_LIST_MOVE_UP", "Move up", FURKMOD_SHIFT|SDLK_UP), D("SAMPLE_LIST_MOVE_DOWN", "Move down", FURKMOD_SHIFT|SDLK_DOWN), diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index ac06bcb7..7e453ef5 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -131,9 +131,8 @@ void FurnaceGUI::drawWaveEdit() { if (curWave>=(int)e->song.wave.size()) curWave=e->song.wave.size()-1; } ImGui::SameLine(); - // TODO: load replace if (ImGui::Button(ICON_FA_FOLDER_OPEN "##WELoad")) { - doAction(GUI_ACTION_WAVE_LIST_OPEN); + doAction(GUI_ACTION_WAVE_LIST_OPEN_REPLACE); } ImGui::SameLine(); if (ImGui::Button(ICON_FA_FLOPPY_O "##WESave")) { From 91f9352eafbc516e97100950cac47636f81f316c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 05:50:36 -0500 Subject: [PATCH 360/580] implement raw sample import untested --- src/engine/engine.cpp | 166 ++++++++++++++++++++++++++++++++++++++++++ src/gui/gui.cpp | 56 +++++++++----- src/gui/gui.h | 2 + 3 files changed, 205 insertions(+), 19 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 9b2696c1..ffe2d6aa 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2639,6 +2639,172 @@ DivSample* DivEngine::sampleFromFile(const char* path) { #endif } +DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, int channels, bool bigEndian) { + if (song.sample.size()>=256) { + lastError="too many samples!"; + return NULL; + } + if (channels<1) { + lastError="invalid channel count"; + return NULL; + } + if (depth!=DIV_SAMPLE_DEPTH_8BIT && depth!=DIV_SAMPLE_DEPTH_16BIT) { + if (channels!=1) { + lastError="channel count has to be 1 for non-8/16-bit format"; + return NULL; + } + } + BUSY_BEGIN; + warnings=""; + + const char* pathRedux=strrchr(path,DIR_SEPARATOR); + if (pathRedux==NULL) { + pathRedux=path; + } else { + pathRedux++; + } + String stripPath; + const char* pathReduxEnd=strrchr(pathRedux,'.'); + if (pathReduxEnd==NULL) { + stripPath=pathRedux; + } else { + for (const char* i=pathRedux; i!=pathReduxEnd && (*i); i++) { + stripPath+=*i; + } + } + + size_t len=0; + size_t lenDivided=0; + DivSample* sample=new DivSample; + sample->name=stripPath; + + FILE* f=ps_fopen(path,"rb"); + if (f==NULL) { + BUSY_END; + lastError=fmt::sprintf("could not open file! (%s)",strerror(errno)); + delete sample; + return NULL; + } + + if (fseek(f,0,SEEK_END)<0) { + fclose(f); + BUSY_END; + lastError=fmt::sprintf("could not get file length! (%s)",strerror(errno)); + delete sample; + return NULL; + } + + len=ftell(f); + + if (len==0) { + fclose(f); + BUSY_END; + lastError="file is empty!"; + delete sample; + return NULL; + } + + if (len==(SIZE_MAX>>1)) { + fclose(f); + BUSY_END; + lastError="file is invalid!"; + delete sample; + return NULL; + } + + if (fseek(f,0,SEEK_SET)<0) { + fclose(f); + BUSY_END; + lastError=fmt::sprintf("could not seek to beginning of file! (%s)",strerror(errno)); + delete sample; + return NULL; + } + + lenDivided=len/channels; + + unsigned int samples=lenDivided; + switch (depth) { + case DIV_SAMPLE_DEPTH_1BIT: + case DIV_SAMPLE_DEPTH_1BIT_DPCM: + samples=lenDivided*8; + break; + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: + case DIV_SAMPLE_DEPTH_QSOUND_ADPCM: + case DIV_SAMPLE_DEPTH_ADPCM_A: + case DIV_SAMPLE_DEPTH_ADPCM_B: + case DIV_SAMPLE_DEPTH_VOX: + samples=lenDivided*2; + break; + case DIV_SAMPLE_DEPTH_8BIT: + samples=lenDivided; + break; + case DIV_SAMPLE_DEPTH_BRR: + samples=16*((lenDivided+8)/9); + break; + case DIV_SAMPLE_DEPTH_16BIT: + samples=(lenDivided+1)/2; + break; + default: + break; + } + + if (samples>16777215) { + fclose(f); + BUSY_END; + lastError="this sample is too big! max sample size is 16777215."; + delete sample; + return NULL; + } + + sample->rate=32000; + sample->centerRate=32000; + sample->depth=depth; + sample->init(samples); + + unsigned char* buf=new unsigned char[len]; + if (fread(buf,1,len,f)==0) { + fclose(f); + BUSY_END; + lastError=fmt::sprintf("could not read file! (%s)",strerror(errno)); + delete[] buf; + delete sample; + return NULL; + } + + fclose(f); + + // import sample + size_t pos=0; + if (depth==DIV_SAMPLE_DEPTH_16BIT) { + for (unsigned int i=0; i=len) break; + accum+=((short*)buf)[pos>>1]; + pos+=2; + } + accum/=channels; + sample->data16[i]=accum; + } + } else if (depth==DIV_SAMPLE_DEPTH_8BIT) { + for (unsigned int i=0; i=len) break; + accum+=(signed char)buf[pos++]; + } + accum/=channels; + sample->data8[i]=accum; + } + } else { + memcpy(sample->getCurBuf(),buf,len); + } + delete[] buf; + + BUSY_END; + return sample; +} + void DivEngine::delSample(int index) { BUSY_BEGIN; sPreview.sample=-1; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 022dfe83..4d01f60f 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4152,29 +4152,47 @@ bool FurnaceGUI::loop() { ImGui::EndPopup(); } - bool doRespond=false; if (ImGui::BeginPopupModal("Import Raw Sample",NULL,ImGuiWindowFlags_AlwaysAutoResize)) { - ImGui::Text("Work In Progress - sorry"); - if (ImGui::Button("Oh... really?")) { + ImGui::Text("Data type:"); + for (int i=0; isampleFromFileRaw(pendingRawSample.c_str(),(DivSampleDepth)pendingRawSampleDepth,pendingRawSampleChannels,pendingRawSampleBigEndian); + if (s==NULL) { + showError(e->getLastError()); + } else { + if (e->addSamplePtr(s)==-1) { + showError(e->getLastError()); + } else { + MARK_MODIFIED; + } + } ImGui::CloseCurrentPopup(); } ImGui::SameLine(); - if (ImGui::Button("Why are you so hostile? I'm just trying to import a raw sample.")) { - doRespond=true; - ImGui::CloseCurrentPopup(); - } - ImGui::EndPopup(); - } - - if (doRespond) { - doRespond=false; - ImGui::OpenPopup("Fatal Alert"); - } - - if (ImGui::BeginPopupModal("Fatal Alert",NULL,ImGuiWindowFlags_AlwaysAutoResize)) { - ImGui::Text("Well, I'd rather you didn't. So, good night."); - if (ImGui::Button("Fine")) { - abort(); + if (ImGui::Button("Cancel")) { ImGui::CloseCurrentPopup(); } ImGui::EndPopup(); diff --git a/src/gui/gui.h b/src/gui/gui.h index 3b148924..e178efc9 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -974,6 +974,8 @@ class FurnaceGUI { int waveEditStyle; String pendingRawSample; + int pendingRawSampleDepth, pendingRawSampleChannels; + bool pendingRawSampleBigEndian; ImGuiWindowFlags globalWinFlags; From 041a76ad816159436ea309bf44a5e437bc8488f1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 06:25:11 -0500 Subject: [PATCH 361/580] raw sample import fixes --- src/engine/engine.cpp | 10 +++++++--- src/engine/engine.h | 2 +- src/gui/gui.cpp | 7 ++++++- src/gui/gui.h | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index ffe2d6aa..4c51f367 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2639,7 +2639,7 @@ DivSample* DivEngine::sampleFromFile(const char* path) { #endif } -DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, int channels, bool bigEndian) { +DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, int channels, bool bigEndian, bool unsign) { if (song.sample.size()>=256) { lastError="too many samples!"; return NULL; @@ -2780,7 +2780,11 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, int accum=0; for (int j=0; j=len) break; - accum+=((short*)buf)[pos>>1]; + if (bigEndian) { + accum+=(short)(((short)((buf[pos]<<8)|buf[pos+1]))^(unsign?0x8000:0)); + } else { + accum+=(short)(((short)(buf[pos]|(buf[pos+1]<<8)))^(unsign?0x8000:0)); + } pos+=2; } accum/=channels; @@ -2791,7 +2795,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, int accum=0; for (int j=0; j=len) break; - accum+=(signed char)buf[pos++]; + accum+=(signed char)(buf[pos++]^(unsign?0x80:0)); } accum/=channels; sample->data8[i]=accum; diff --git a/src/engine/engine.h b/src/engine/engine.h index a03c9243..3a73d7d2 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -725,7 +725,7 @@ class DivEngine { DivSample* sampleFromFile(const char* path); // get raw sample - DivSample* sampleFromFileRaw(const char* path, DivSampleDepth depth, int channels, bool bigEndian); + DivSample* sampleFromFileRaw(const char* path, DivSampleDepth depth, int channels, bool bigEndian, bool unsign); // delete sample void delSample(int index); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4d01f60f..0ed0ffbe 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4172,6 +4172,7 @@ bool FurnaceGUI::loop() { if (ImGui::InputInt("##RSChans",&pendingRawSampleChannels)) { } ImGui::Text("(will be mixed down to mono)"); + ImGui::Checkbox("Unsigned",&pendingRawSampleUnsigned); ImGui::EndDisabled(); ImGui::BeginDisabled(pendingRawSampleDepth!=DIV_SAMPLE_DEPTH_16BIT); @@ -4179,7 +4180,7 @@ bool FurnaceGUI::loop() { ImGui::EndDisabled(); if (ImGui::Button("OK")) { - DivSample* s=e->sampleFromFileRaw(pendingRawSample.c_str(),(DivSampleDepth)pendingRawSampleDepth,pendingRawSampleChannels,pendingRawSampleBigEndian); + DivSample* s=e->sampleFromFileRaw(pendingRawSample.c_str(),(DivSampleDepth)pendingRawSampleDepth,pendingRawSampleChannels,pendingRawSampleBigEndian,pendingRawSampleUnsigned); if (s==NULL) { showError(e->getLastError()); } else { @@ -4653,6 +4654,10 @@ FurnaceGUI::FurnaceGUI(): drawHalt(10), macroPointSize(16), waveEditStyle(0), + pendingRawSampleDepth(8), + pendingRawSampleChannels(1), + pendingRawSampleUnsigned(false), + pendingRawSampleBigEndian(false), globalWinFlags(0), curFileDialog(GUI_FILE_OPEN), warnAction(GUI_WARN_OPEN), diff --git a/src/gui/gui.h b/src/gui/gui.h index e178efc9..ff6dd93b 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -975,7 +975,7 @@ class FurnaceGUI { String pendingRawSample; int pendingRawSampleDepth, pendingRawSampleChannels; - bool pendingRawSampleBigEndian; + bool pendingRawSampleUnsigned, pendingRawSampleBigEndian; ImGuiWindowFlags globalWinFlags; From 02fb5abc021c241e34606790ba1591fdbd6c49db Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 15:43:13 -0500 Subject: [PATCH 362/580] add ability to save ins/wave as .dmp/.dmw also saving wavetables as raw data --- src/engine/instrument.cpp | 145 ++++++++++++++++++++++++++++++++++++++ src/engine/instrument.h | 7 ++ src/engine/wavetable.cpp | 62 ++++++++++++++++ src/engine/wavetable.h | 16 ++++- src/gui/gui.cpp | 61 +++++++++++++--- 5 files changed, 282 insertions(+), 9 deletions(-) diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 555d7d17..2836e6f9 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -1150,3 +1150,148 @@ bool DivInstrument::save(const char* path) { w->finish(); return true; } + +bool DivInstrument::saveDMP(const char* path) { + SafeWriter* w=new SafeWriter(); + w->init(); + + // write version + w->writeC(11); + + // guess the system + switch (type) { + case DIV_INS_FM: + // we can't tell between Genesis, Neo Geo and Arcade ins type yet + w->writeC(0x02); + w->writeC(1); + break; + case DIV_INS_STD: + // we can't tell between SMS and NES ins type yet + w->writeC(0x03); + w->writeC(0); + break; + case DIV_INS_GB: + w->writeC(0x04); + w->writeC(0); + break; + case DIV_INS_C64: + w->writeC(0x07); + w->writeC(0); + break; + case DIV_INS_PCE: + w->writeC(0x06); + w->writeC(0); + break; + case DIV_INS_OPLL: + // ??? + w->writeC(0x13); + w->writeC(1); + break; + case DIV_INS_OPZ: + // data will be lost + w->writeC(0x08); + w->writeC(1); + break; + case DIV_INS_FDS: + // ??? + w->writeC(0x06); + w->writeC(0); + break; + default: + // not supported by .dmp + w->finish(); + return false; + } + + if (type==DIV_INS_FM || type==DIV_INS_OPLL || type==DIV_INS_OPZ) { + w->writeC(fm.fms); + w->writeC(fm.fb); + w->writeC(fm.alg); + w->writeC(fm.ams); + + // TODO: OPLL params + for (int i=0; i<4; i++) { + DivInstrumentFM::Operator& op=fm.op[i]; + w->writeC(op.mult); + w->writeC(op.tl); + w->writeC(op.ar); + w->writeC(op.dr); + w->writeC(op.sl); + w->writeC(op.rr); + w->writeC(op.am); + w->writeC(op.rs); + w->writeC(op.dt|(op.dt2<<4)); + w->writeC(op.d2r); + w->writeC(op.ssgEnv); + } + } else { + if (type!=DIV_INS_GB) { + w->writeC(std.volMacro.len); + for (int i=0; iwriteI(std.volMacro.val[i]); + } + if (std.volMacro.len>0) w->writeC(std.volMacro.loop); + } + + w->writeC(std.arpMacro.len); + for (int i=0; iwriteI(std.arpMacro.val[i]+12); + } + if (std.arpMacro.len>0) w->writeC(std.arpMacro.loop); + w->writeC(std.arpMacro.mode); + + w->writeC(std.dutyMacro.len); + for (int i=0; iwriteI(std.dutyMacro.val[i]+12); + } + if (std.dutyMacro.len>0) w->writeC(std.dutyMacro.loop); + + w->writeC(std.waveMacro.len); + for (int i=0; iwriteI(std.waveMacro.val[i]+12); + } + if (std.waveMacro.len>0) w->writeC(std.waveMacro.loop); + + if (type==DIV_INS_C64) { + w->writeC(c64.triOn); + w->writeC(c64.sawOn); + w->writeC(c64.pulseOn); + w->writeC(c64.noiseOn); + w->writeC(c64.a); + w->writeC(c64.d); + w->writeC(c64.s); + w->writeC(c64.r); + w->writeC((c64.duty*100)/4095); + w->writeC(c64.ringMod); + w->writeC(c64.oscSync); + w->writeC(c64.toFilter); + w->writeC(c64.volIsCutoff); + w->writeC(c64.initFilter); + w->writeC(c64.res); + w->writeC((c64.cut*100)/2047); + w->writeC(c64.hp); + w->writeC(c64.lp); + w->writeC(c64.bp); + w->writeC(c64.ch3off); + } + if (type==DIV_INS_GB) { + w->writeC(gb.envVol); + w->writeC(gb.envDir); + w->writeC(gb.envLen); + w->writeC(gb.soundLen); + } + } + + FILE* outFile=ps_fopen(path,"wb"); + if (outFile==NULL) { + logE("could not save instrument: %s!",strerror(errno)); + w->finish(); + return false; + } + if (fwrite(w->getFinalBuf(),1,w->size(),outFile)!=w->size()) { + logW("did not write entire instrument!"); + } + fclose(outFile); + w->finish(); + return true; +} diff --git a/src/engine/instrument.h b/src/engine/instrument.h index df7a6b36..9f49a627 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -500,6 +500,13 @@ struct DivInstrument { * @return whether it was successful. */ bool save(const char* path); + + /** + * save this instrument to a file in .dmp format. + * @param path file path. + * @return whether it was successful. + */ + bool saveDMP(const char* path); DivInstrument(): name(""), type(DIV_INS_FM) { diff --git a/src/engine/wavetable.cpp b/src/engine/wavetable.cpp index 953400ee..0b13497e 100644 --- a/src/engine/wavetable.cpp +++ b/src/engine/wavetable.cpp @@ -92,3 +92,65 @@ bool DivWavetable::save(const char* path) { w->finish(); return true; } + +bool DivWavetable::saveDMW(const char* path) { + SafeWriter* w=new SafeWriter(); + w->init(); + + // write width + w->writeI(len); + + // check height + w->writeC(max); + if (max==255) { + // write as new format (because 0xff means that) + w->writeC(1); // format version + w->writeC(max); // actual height + + // waveform data + for (int i=0; iwriteI(data[i]&0xff); + } + } else { + // write as old format + for (int i=0; iwriteC(data[i]); + } + } + + FILE* outFile=ps_fopen(path,"wb"); + if (outFile==NULL) { + logE("could not save wavetable: %s!",strerror(errno)); + w->finish(); + return false; + } + if (fwrite(w->getFinalBuf(),1,w->size(),outFile)!=w->size()) { + logW("did not write entire wavetable!"); + } + fclose(outFile); + w->finish(); + return true; +} + +bool DivWavetable::saveRaw(const char* path) { + SafeWriter* w=new SafeWriter(); + w->init(); + + // waveform data + for (int i=0; iwriteC(data[i]); + } + + FILE* outFile=ps_fopen(path,"wb"); + if (outFile==NULL) { + logE("could not save wavetable: %s!",strerror(errno)); + w->finish(); + return false; + } + if (fwrite(w->getFinalBuf(),1,w->size(),outFile)!=w->size()) { + logW("did not write entire wavetable!"); + } + fclose(outFile); + w->finish(); + return true; +} diff --git a/src/engine/wavetable.h b/src/engine/wavetable.h index 616b048c..0f518ab5 100644 --- a/src/engine/wavetable.h +++ b/src/engine/wavetable.h @@ -46,6 +46,20 @@ struct DivWavetable { * @return whether it was successful. */ bool save(const char* path); + + /** + * save this wavetable to a file in .dmw format. + * @param path file path. + * @return whether it was successful. + */ + bool saveDMW(const char* path); + + /** + * save this wavetable to a file in raw format. + * @param path file path. + * @return whether it was successful. + */ + bool saveRaw(const char* path); DivWavetable(): len(32), min(0), @@ -56,4 +70,4 @@ struct DivWavetable { } }; -#endif \ No newline at end of file +#endif diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 0ed0ffbe..f065dfe3 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1313,8 +1313,9 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { if (!dirExists(workingDirIns)) workingDirIns=getHomeDir(); hasOpened=fileDialog->openSave( "Save Instrument", - {"Furnace instrument", "*.fui"}, - "Furnace instrument{.fui}", + {"Furnace instrument", "*.fui", + "DefleMask preset", "*.dmp"}, + "Furnace instrument{.fui},DefleMask preset{.dmp}", workingDirIns, dpiScale ); @@ -1335,8 +1336,10 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { if (!dirExists(workingDirWave)) workingDirWave=getHomeDir(); hasOpened=fileDialog->openSave( "Save Wavetable", - {"Furnace wavetable", ".fuw"}, - "Furnace wavetable{.fuw}", + {"Furnace wavetable", ".fuw", + "DefleMask wavetable", ".dmw", + "raw data", ".raw"}, + "Furnace wavetable{.fuw},DefleMask wavetable{.dmw},raw data{.raw}", workingDirWave, dpiScale ); @@ -1921,6 +1924,15 @@ void FurnaceGUI::processDrags(int dragX, int dragY) { fileName+=fallback; \ } +#define checkExtensionTriple(x,y,z,fallback) \ + String lowerCase=fileName; \ + for (char& i: lowerCase) { \ + if (i>='A' && i<='Z') i+='a'-'A'; \ + } \ + if (lowerCase.size()<4 || (lowerCase.rfind(x)!=lowerCase.size()-4 && lowerCase.rfind(y)!=lowerCase.size()-4 && lowerCase.rfind(z)!=lowerCase.size()-4)) { \ + fileName+=fallback; \ + } + #define drawOpMask(m) \ ImGui::PushFont(patFont); \ ImGui::PushID("om_" #m); \ @@ -3365,10 +3377,21 @@ bool FurnaceGUI::loop() { checkExtension(".wav"); } if (curFileDialog==GUI_FILE_INS_SAVE) { - checkExtension(".fui"); + // we can't tell whether the user chose .fui or .dmp in the system file picker + const char* fallbackExt=(settings.sysFileDialog || ImGuiFileDialog::Instance()->GetCurrentFilter()=="Furnace instrument")?".fui":".dmp"; + checkExtensionDual(".fui",".dmp",fallbackExt); } if (curFileDialog==GUI_FILE_WAVE_SAVE) { - checkExtension(".fuw"); + // same thing here + const char* fallbackExt=".fuw"; + if (!settings.sysFileDialog) { + if (ImGuiFileDialog::Instance()->GetCurrentFilter()=="raw data") { + fallbackExt=".raw"; + } else if (ImGuiFileDialog::Instance()->GetCurrentFilter()=="DefleMask wavetable") { + fallbackExt=".dmw"; + } + } + checkExtensionTriple(".fuw",".dmw",".raw",fallbackExt); } if (curFileDialog==GUI_FILE_EXPORT_VGM) { checkExtension(".vgm"); @@ -3451,12 +3474,34 @@ bool FurnaceGUI::loop() { break; case GUI_FILE_INS_SAVE: if (curIns>=0 && curIns<(int)e->song.ins.size()) { - e->song.ins[curIns]->save(copyOfName.c_str()); + String lowerCase=fileName; + for (char& i: lowerCase) { + if (i>='A' && i<='Z') i+='a'-'A'; + } + if ((lowerCase.size()<4 || lowerCase.rfind(".dmp")!=lowerCase.size()-4)) { + e->song.ins[curIns]->save(copyOfName.c_str()); + } else { + if (!e->song.ins[curIns]->saveDMP(copyOfName.c_str())) { + showError("error while saving instrument! make sure your instrument is compatible."); + } + } } break; case GUI_FILE_WAVE_SAVE: if (curWave>=0 && curWave<(int)e->song.wave.size()) { - e->song.wave[curWave]->save(copyOfName.c_str()); + String lowerCase=fileName; + for (char& i: lowerCase) { + if (i>='A' && i<='Z') i+='a'-'A'; + } + if (lowerCase.size()<4) { + e->song.wave[curWave]->save(copyOfName.c_str()); + } else if (lowerCase.rfind(".dmw")==lowerCase.size()-4) { + e->song.wave[curWave]->saveDMW(copyOfName.c_str()); + } else if (lowerCase.rfind(".raw")==lowerCase.size()-4) { + e->song.wave[curWave]->saveRaw(copyOfName.c_str()); + } else { + e->song.wave[curWave]->save(copyOfName.c_str()); + } } break; case GUI_FILE_SAMPLE_OPEN: { From ee16d20047ee44ac606c9dd4e2908a77524590be Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 15:53:47 -0500 Subject: [PATCH 363/580] add demo song by brickblock369 --- demos/Egyptian_Rule.fur | Bin 0 -> 11774 bytes src/gui/about.cpp | 1 + src/gui/gui.cpp | 1 + 3 files changed, 2 insertions(+) create mode 100644 demos/Egyptian_Rule.fur diff --git a/demos/Egyptian_Rule.fur b/demos/Egyptian_Rule.fur new file mode 100644 index 0000000000000000000000000000000000000000..1715906ec3376d6ee757af34530ff6832ee34c02 GIT binary patch literal 11774 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 literal 0 HcmV?d00001 diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 587aba84..ae0792ae 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -67,6 +67,7 @@ const char* aboutLine[]={ "AURORA*FIELDS", "BlueElectric05", "breakthetargets", + "brickblock369", "CaptainMalware", "DeMOSic", "DevEd", diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index f065dfe3..add68d76 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1267,6 +1267,7 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Load Instrument", // TODO supply loadable formats in a dynamic, scalable, "DRY" way. + // thank the author of IGFD for making things impossible {"all compatible files", "*.fui *.dmp *.tfi *.vgi *.s3i *.sbi *.opli *.opni *.y12 *.bnk *.ff *.gyb *.opm *.wopl *.wopn", "Furnace instrument", "*.fui", "DefleMask preset", "*.dmp", From bb5cee4a662c3cd54fa4b3e4739cd55cc0186ab0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 18:00:29 -0500 Subject: [PATCH 364/580] GUI: add pattern label customization settings --- src/gui/editing.cpp | 2 +- src/gui/findReplace.cpp | 24 ++++++++++++------------ src/gui/gui.cpp | 20 ++++++++++++++++---- src/gui/gui.h | 19 ++++++++++++++++++- src/gui/pattern.cpp | 26 +++++++++++++------------- src/gui/settings.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ src/utfutils.cpp | 8 ++++---- src/utfutils.h | 2 ++ 8 files changed, 106 insertions(+), 35 deletions(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index 9bd82795..21b1a72e 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -24,7 +24,7 @@ #include "actionUtil.h" -const char* noteNameNormal(short note, short octave) { +const char* FurnaceGUI::noteNameNormal(short note, short octave) { if (note==100) { // note cut return "OFF"; } else if (note==101) { // note off and envelope release diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 559d7f7f..428fce5a 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -593,11 +593,11 @@ void FurnaceGUI::drawFindReplace() { i.note=0; } if (i.note==130) { - snprintf(tempID,1024,"REL"); + snprintf(tempID,1024,"%s##MREL",macroRelLabel); } else if (i.note==129) { - snprintf(tempID,1024,"==="); + snprintf(tempID,1024,"%s##NREL",noteRelLabel); } else if (i.note==128) { - snprintf(tempID,1024,"OFF"); + snprintf(tempID,1024,"%s##NOFF",noteOffLabel); } else if (i.note>=-60 && i.note<120) { snprintf(tempID,1024,"%s",noteNames[i.note+60]); } else { @@ -613,13 +613,13 @@ void FurnaceGUI::drawFindReplace() { } } if (i.noteMode!=GUI_QUERY_RANGE && i.noteMode!=GUI_QUERY_RANGE_NOT) { - if (ImGui::Selectable("OFF",i.note==128)) { + if (ImGui::Selectable(noteOffLabel,i.note==128)) { i.note=128; } - if (ImGui::Selectable("===",i.note==129)) { + if (ImGui::Selectable(noteRelLabel,i.note==129)) { i.note=129; } - if (ImGui::Selectable("REL",i.note==130)) { + if (ImGui::Selectable(macroRelLabel,i.note==130)) { i.note=130; } } @@ -916,11 +916,11 @@ void FurnaceGUI::drawFindReplace() { ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); if (queryReplaceNoteMode==GUI_QUERY_REPLACE_SET) { if (queryReplaceNote==130) { - snprintf(tempID,1024,"REL"); + snprintf(tempID,1024,"%s##MREL",macroRelLabel); } else if (queryReplaceNote==129) { - snprintf(tempID,1024,"==="); + snprintf(tempID,1024,"%s##NREL",noteRelLabel); } else if (queryReplaceNote==128) { - snprintf(tempID,1024,"OFF"); + snprintf(tempID,1024,"%s##NOFF",noteOffLabel); } else if (queryReplaceNote>=-60 && queryReplaceNote<120) { snprintf(tempID,1024,"%s",noteNames[queryReplaceNote+60]); } else { @@ -934,13 +934,13 @@ void FurnaceGUI::drawFindReplace() { queryReplaceNote=j-60; } } - if (ImGui::Selectable("OFF",queryReplaceNote==128)) { + if (ImGui::Selectable(noteOffLabel,queryReplaceNote==128)) { queryReplaceNote=128; } - if (ImGui::Selectable("===",queryReplaceNote==129)) { + if (ImGui::Selectable(noteRelLabel,queryReplaceNote==129)) { queryReplaceNote=129; } - if (ImGui::Selectable("REL",queryReplaceNote==130)) { + if (ImGui::Selectable(macroRelLabel,queryReplaceNote==130)) { queryReplaceNote=130; } ImGui::EndCombo(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index add68d76..66649cba 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -84,13 +84,13 @@ void FurnaceGUI::bindEngine(DivEngine* eng) { const char* FurnaceGUI::noteName(short note, short octave) { if (note==100) { - return "OFF"; + return noteOffLabel; } else if (note==101) { // note off and envelope release - return "==="; + return noteRelLabel; } else if (note==102) { // envelope release only - return "REL"; + return macroRelLabel; } else if (octave==0 && note==0) { - return "..."; + return emptyLabel; } else if (note==0 && octave!=0) { return "BUG"; } @@ -5067,4 +5067,16 @@ FurnaceGUI::FurnaceGUI(): memset(queryReplaceEffectValDo,0,sizeof(bool)*8); chanOscGrad.bgColor=ImVec4(0.0f,0.0f,0.0f,1.0f); + + memset(noteOffLabel,0,32); + memset(noteRelLabel,0,32); + memset(macroRelLabel,0,32); + memset(emptyLabel,0,32); + memset(emptyLabel2,0,32); + + strncat(noteOffLabel,"OFF",32); + strncat(noteRelLabel,"===",32); + strncat(macroRelLabel,"REL",32); + strncat(emptyLabel,"...",32); + strncat(emptyLabel2,"..",32); } diff --git a/src/gui/gui.h b/src/gui/gui.h index ff6dd93b..1c735506 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1017,6 +1017,12 @@ class FurnaceGUI { ImU32 sysCmd1Grad[256]; ImU32 sysCmd2Grad[256]; + char noteOffLabel[32]; + char noteRelLabel[32]; + char macroRelLabel[32]; + char emptyLabel[32]; + char emptyLabel2[32]; + struct Settings { int mainFontSize, patFontSize, iconSize; int audioEngine; @@ -1119,6 +1125,11 @@ class FurnaceGUI { String midiOutDevice; String c163Name; String initialSysName; + String noteOffLabel; + String noteRelLabel; + String macroRelLabel; + String emptyLabel; + String emptyLabel2; std::vector initialSys; Settings(): @@ -1224,7 +1235,12 @@ class FurnaceGUI { midiInDevice(""), midiOutDevice(""), c163Name(""), - initialSysName("Sega Genesis/Mega Drive") {} + initialSysName("Sega Genesis/Mega Drive"), + noteOffLabel("OFF"), + noteRelLabel("==="), + macroRelLabel("REL"), + emptyLabel("..."), + emptyLabel2("..") {} } settings; char finalLayoutPath[4096]; @@ -1657,6 +1673,7 @@ class FurnaceGUI { public: void showWarning(String what, FurnaceGUIWarnings type); void showError(String what); + const char* noteNameNormal(short note, short octave); const char* noteName(short note, short octave); bool decodeNote(const char* what, short& note, short& octave); void bindEngine(DivEngine* eng); diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index b7940a9e..15394479 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -56,7 +56,7 @@ void FurnaceGUI::popPartBlend() { // draw a pattern row inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int chans, int ord, const DivPattern** patCache, bool inhibitSel) { - static char id[32]; + static char id[64]; bool selectedRow=(i>=sel1.y && i<=sel2.y && !inhibitSel); ImGui::TableNextRow(0,lineHeight); ImGui::TableNextColumn(); @@ -114,9 +114,9 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int ImGui::PushStyleColor(ImGuiCol_Text,rowIndexColor); if (settings.patRowsBase==1) { - snprintf(id,31," %.2X ##PR_%d",i,i); + snprintf(id,63," %.2X ##PR_%d",i,i); } else { - snprintf(id,31,"%3d ##PR_%d",i,i); + snprintf(id,63,"%3d ##PR_%d",i,i); } ImGui::Selectable(id,false,ImGuiSelectableFlags_NoPadWithHalfSpacing,fourChars); if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem)) { @@ -151,7 +151,7 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int bool cursorVol=(cursor.y==i && cursor.xCoarse==j && cursor.xFine==2 && curWindowLast==GUI_WINDOW_PATTERN); // note - sprintf(id,"%s##PN_%d_%d",noteName(pat->data[i][0],pat->data[i][1]),i,j); + snprintf(id,63,"%.31s##PN_%d_%d",noteName(pat->data[i][0],pat->data[i][1]),i,j); if (pat->data[i][0]==0 && pat->data[i][1]==0) { ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor); } else { @@ -182,7 +182,7 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int // instrument if (pat->data[i][2]==-1) { ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor); - sprintf(id,"..##PI_%d_%d",i,j); + snprintf(id,63,"%.31s##PI_%d_%d",emptyLabel2,i,j); } else { if (pat->data[i][2]<0 || pat->data[i][2]>=e->song.insLen) { ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INS_ERROR]); @@ -194,7 +194,7 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INS]); } } - sprintf(id,"%.2X##PI_%d_%d",pat->data[i][2],i,j); + snprintf(id,63,"%.2X##PI_%d_%d",pat->data[i][2],i,j); } ImGui::SameLine(0.0f,0.0f); if (cursorIns) { @@ -221,13 +221,13 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int if (e->curSubSong->chanCollapse[j]<2) { // volume if (pat->data[i][3]==-1) { - sprintf(id,"..##PV_%d_%d",i,j); + snprintf(id,63,"%.31s##PV_%d_%d",emptyLabel2,i,j); ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor); } else { int volColor=(pat->data[i][3]*127)/chanVolMax; if (volColor>127) volColor=127; if (volColor<0) volColor=0; - sprintf(id,"%.2X##PV_%d_%d",pat->data[i][3],i,j); + snprintf(id,63,"%.2X##PV_%d_%d",pat->data[i][3],i,j); ImGui::PushStyleColor(ImGuiCol_Text,volColors[volColor]); } ImGui::SameLine(0.0f,0.0f); @@ -263,15 +263,15 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int // effect if (pat->data[i][index]==-1) { - sprintf(id,"..##PE%d_%d_%d",k,i,j); + snprintf(id,63,"%.31s##PE%d_%d_%d",emptyLabel2,k,i,j); ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor); } else { if (pat->data[i][index]>0xff) { - sprintf(id,"??##PE%d_%d_%d",k,i,j); + snprintf(id,63,"??##PE%d_%d_%d",k,i,j); ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_EFFECT_INVALID]); } else { const unsigned char data=pat->data[i][index]; - sprintf(id,"%.2X##PE%d_%d_%d",data,k,i,j); + snprintf(id,63,"%.2X##PE%d_%d_%d",data,k,i,j); ImGui::PushStyleColor(ImGuiCol_Text,uiColors[fxColors[data]]); } } @@ -297,9 +297,9 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int // effect value if (pat->data[i][index+1]==-1) { - sprintf(id,"..##PF%d_%d_%d",k,i,j); + snprintf(id,63,"%.31s##PF%d_%d_%d",emptyLabel2,k,i,j); } else { - sprintf(id,"%.2X##PF%d_%d_%d",pat->data[i][index+1],k,i,j); + snprintf(id,63,"%.2X##PF%d_%d_%d",pat->data[i][index+1],k,i,j); } ImGui::SameLine(0.0f,0.0f); if (cursorEffectVal) { diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 37d4bfec..6c300d0a 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -21,6 +21,7 @@ #include "fonts.h" #include "../ta-log.h" #include "../fileutils.h" +#include "../utfutils.h" #include "util.h" #include "guiConst.h" #include "intConst.h" @@ -1081,6 +1082,15 @@ void FurnaceGUI::drawSettings() { ImGui::Separator(); + ImGui::Text("Pattern view labels:"); + ImGui::InputTextWithHint("Note off (3-char)","OFF",&settings.noteOffLabel); + ImGui::InputTextWithHint("Note release (3-char)","===",&settings.noteRelLabel); + ImGui::InputTextWithHint("Macro release (3-char)","REL",&settings.macroRelLabel); + ImGui::InputTextWithHint("Empty field (3-char)","...",&settings.emptyLabel); + ImGui::InputTextWithHint("Empty field (2-char)","..",&settings.emptyLabel2); + + ImGui::Separator(); + ImGui::Text("Orders row number format:"); if (ImGui::RadioButton("Decimal##orbD",settings.orderRowsBase==0)) { settings.orderRowsBase=0; @@ -2118,6 +2128,11 @@ void FurnaceGUI::syncSettings() { settings.noThreadedInput=e->getConfInt("noThreadedInput",0); settings.initialSysName=e->getConfString("initialSysName",""); settings.clampSamples=e->getConfInt("clampSamples",0); + settings.noteOffLabel=e->getConfString("noteOffLabel","OFF"); + settings.noteRelLabel=e->getConfString("noteRelLabel","==="); + settings.macroRelLabel=e->getConfString("macroRelLabel","REL"); + settings.emptyLabel=e->getConfString("emptyLabel","..."); + settings.emptyLabel2=e->getConfString("emptyLabel2",".."); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2345,6 +2360,11 @@ void FurnaceGUI::commitSettings() { e->setConf("unsignedDetune",settings.unsignedDetune); e->setConf("noThreadedInput",settings.noThreadedInput); e->setConf("clampSamples",settings.clampSamples); + e->setConf("noteOffLabel",settings.noteOffLabel); + e->setConf("noteRelLabel",settings.noteRelLabel); + e->setConf("macroRelLabel",settings.macroRelLabel); + e->setConf("emptyLabel",settings.emptyLabel); + e->setConf("emptyLabel2",settings.emptyLabel2); // colors for (int i=0; i=0.5f) dpiScale=settings.dpiScale; // colors diff --git a/src/utfutils.cpp b/src/utfutils.cpp index c9952898..4c727777 100644 --- a/src/utfutils.cpp +++ b/src/utfutils.cpp @@ -19,7 +19,7 @@ #include "utfutils.h" -int decodeUTF8(const unsigned char* data, char& len) { +int decodeUTF8(const unsigned char* data, signed char& len) { int ret=0xfffd; if (data[0]<0x80) { ret=data[0]; @@ -66,7 +66,7 @@ int decodeUTF8(const unsigned char* data, char& len) { size_t utf8len(const char* s) { size_t p=0; size_t r=0; - char cl; + signed char cl; while (s[p]!=0) { r++; decodeUTF8((const unsigned char*)&s[p],cl); @@ -76,7 +76,7 @@ size_t utf8len(const char* s) { } char utf8csize(const unsigned char* c) { - char ret; + signed char ret; decodeUTF8(c,ret); return ret; } @@ -84,7 +84,7 @@ char utf8csize(const unsigned char* c) { WString utf8To16(const char* s) { WString ret; int ch, p; - char chs; + signed char chs; p=0; while (s[p]!=0) { ch=decodeUTF8((const unsigned char*)&s[p],chs); diff --git a/src/utfutils.h b/src/utfutils.h index 087913a4..76c89470 100644 --- a/src/utfutils.h +++ b/src/utfutils.h @@ -21,6 +21,8 @@ #define _UTFUTILS_H #include "ta-utils.h" +int decodeUTF8(const unsigned char* data, signed char& len); + size_t utf8len(const char* s); size_t utf8clen(const char* s); size_t utf8pos(const char* s, size_t inpos); From 774a949ccaebbbd7ddc82f46abf168efb2e203ed Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 13 Aug 2022 18:16:24 -0500 Subject: [PATCH 365/580] GUI: fix labels being empty --- src/gui/gui.cpp | 10 +++++----- src/gui/settings.cpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 66649cba..2b4367c9 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5074,9 +5074,9 @@ FurnaceGUI::FurnaceGUI(): memset(emptyLabel,0,32); memset(emptyLabel2,0,32); - strncat(noteOffLabel,"OFF",32); - strncat(noteRelLabel,"===",32); - strncat(macroRelLabel,"REL",32); - strncat(emptyLabel,"...",32); - strncat(emptyLabel2,"..",32); + strncpy(noteOffLabel,"OFF",32); + strncpy(noteRelLabel,"===",32); + strncpy(macroRelLabel,"REL",32); + strncpy(emptyLabel,"...",32); + strncpy(emptyLabel2,"..",32); } diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 6c300d0a..ee35fd86 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -2781,7 +2781,7 @@ void setupLabel(const char* lStr, char* label, int len) { memset(label,0,32); for (int i=0, p=0; i Date: Sat, 13 Aug 2022 22:50:11 -0400 Subject: [PATCH 366/580] Add demo song --- ...m Follin - Silver Surfer - Stage Music 1.fur | Bin 0 -> 22904 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/[TSU] Tim Follin - Silver Surfer - Stage Music 1.fur diff --git a/demos/[TSU] Tim Follin - Silver Surfer - Stage Music 1.fur b/demos/[TSU] Tim Follin - Silver Surfer - Stage Music 1.fur new file mode 100644 index 0000000000000000000000000000000000000000..bbe6a3c778e5706ecfdb4f577b359a705c347ed0 GIT binary patch literal 22904 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 Date: Sun, 14 Aug 2022 16:09:31 +1000 Subject: [PATCH 367/580] Reported bug - 2nd 2op pair did not read ALG and FB registers to instrument patch --- src/engine/fileOpsIns.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index 54e0eefc..62c3a1d8 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -733,6 +733,8 @@ void DivEngine::loadOPLI(SafeReader& reader, std::vector& ret, S ins = new DivInstrument; ins->type = DIV_INS_OPL; ins->name = fmt::sprintf("%s (2)", insName); + ins->fm.alg = (feedConnect2nd & 0x1); + ins->fm.fb = ((feedConnect2nd >> 1) & 0xF); for (int i : {1,0}) { readOpliOp(reader, ins->fm.op[i]); } @@ -1498,6 +1500,8 @@ void DivEngine::loadWOPL(SafeReader& reader, std::vector& ret, S ins = new DivInstrument; ins->type = DIV_INS_OPL; ins->name = fmt::sprintf("%s (2)", insName); + ins->fm.alg = (feedConnect2nd & 0x1); + ins->fm.fb = ((feedConnect2nd >> 1) & 0xF); for (int i : {1,0}) { patchSum += readWoplOp(reader, ins->fm.op[i]); } From 2b6160b76fc7ea524c839c2d9d6030bf5a08937d Mon Sep 17 00:00:00 2001 From: SirForte <67491162+SirForte@users.noreply.github.com> Date: Sun, 14 Aug 2022 08:32:48 -0500 Subject: [PATCH 368/580] The only thing i'm proud of --- demos/BONUS. Sonic 2 Boss.fur | Bin 0 -> 17308 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/BONUS. Sonic 2 Boss.fur diff --git a/demos/BONUS. Sonic 2 Boss.fur b/demos/BONUS. Sonic 2 Boss.fur new file mode 100644 index 0000000000000000000000000000000000000000..8f5263f79c9f3ac8d34fdc79f6cf53f131f947d1 GIT binary patch literal 17308 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

#Mb2)^I^j*G*qT zuIQ10*nV@tG~eXYdEY!GugRJaEzh8X<`l1@YRZ0#&wKFI`RVbK?lWBI0}vgt=lGfWE!Q$hv_ z_Soy3c;ZJ$rNedMk}FetcFh7Jcw{IYs;2*5z5&0p2Q`B1V9!ytIdm*M@>5XVD<%g$2~^#8bE`t0AziIC_> z{FnVb-t-TsMl-ShDER9BDKcLF{UEDH{m=8Cy8~aI0-VOz?E8O<59J&t^#9tESit?y zK>t(WDv}V8`M-k53=x__gZod=WA;30xC5lX|Df~G-~Vq41vqiTvJKb5|1yN{x&6m3 zffedMV0JuXEifRsMM?g{DsTC}DatWLcBg3#82(q>|HmW#SH)?F5|a6tJWkYquw?Au z$NwLX_-_gx(mufzmN$IIaX2ZaeonM`59=S`O~BqAmn+P-kgrQAP*eyL!2THp{VhbG zQ1Jxw%^>cJ3SL-7{a>zh9Z8O8bML^@T zpdX~8eQM}`W%?ES{4@FhH!&Utu~R|ZMS~OQgwP6^%gNWer?DrX@!Q-+P#pu+EGT_n z_5!r_;&uL?!&}ULu%ra_(p*UTV)r|6qy?1sPo^0O7;E+WiG5BZ=ho4p=1}DBaVLSy z_tzJ{%H0P9Ye3NX7YU%<&!Xy$blpP%m(=$Mz?G^-$G>Nn1*ryyJr}gkr5YWmbJwVb9O!%(137k$f3?0XT7ZBp=p9zj9%Z7eVFY(b(Q)RJ*zyC6vs7~v5Dk% z)%w$(q8t6wpIhz$bjUOdQp>FQ5|oB>W&&hz%fM-5XKw!F(HQ^J#M!($n@PW|Bkv#v zGCLoF|N0)H!Ds8+ zIdKl@XzzhLuKXpqAgn-jfZ!CrE!p%X1uC}-$sL-fdEkFg;zICC>PTp~6s+#)*eN=- zx|-|w*FH%6!*+)GIZgjx&2O>fg9r~ERhO-R?NliqSV{363a2kMRdDkq{#9F7WLxGg z!N%E_yteKEq$5nU2Rg{o-R?WjgzsO##rOdp2nFTL?@$*V3Bm+XE#E(TnTs&Fg-Jm` zz{4GQed+%beks---#$)+7``EOL_mdXCkF`C9v{0g-}?WH_0L4HS4|zF48dgxVRvk- z4ZlavpqT3A$k-SJHEqL}j8-<45FH_k#uv{l4fp>@(5&{*pr%daF7p4Y%l`39is6Fl zzyEIF8RkVdD*8{3A61SyAi@OrlaBZwZv*BA|Nqg*suplqTBQG5JkvjAa^uV&UsrBGYtpZV4haDkIn6a_dyAFJxcns3Wf*tD{@*1G!^fw+fR;f;=-(HtnCN9~z;qO@R3inJD~-g-GG-+DX# zN1dM6fD|!;FyvDAM2z8r>u5c03CtRyUBtpOn=)bf|LuuGUJWnuH;}VW`2z=z1>CW`eGv6*em&0$0UWxsm+_Hel_~~gbZ%}dX^Wp2^B&UY?!VjLm z`X|bnn04A?O~ju{(R^W_C+eSsf9A_pcKq2c39K%@f{d?)@*? zm*3_8_UV6I{+oyYyY2S>GUq}WAJK^mbNX23b2A=&FSK*&3xmx|jBo!cUTVJRzkc}q z7yoa~c=7+)rJeVF?N?GfQ&W00Mx_P4VtroZWFlVD_1q&LSU1C>B!V9p{=eQYyc5N> zAA`s<36HaZ9ulay44sL{@#+eZXfYYR!$k!Ub08 NaEbr_7yI=D008b-jFSKW literal 0 HcmV?d00001 From 9f9ee6153e39904b2060029745d65c8a091c4e4c Mon Sep 17 00:00:00 2001 From: SirForte <67491162+SirForte@users.noreply.github.com> Date: Sun, 14 Aug 2022 08:33:21 -0500 Subject: [PATCH 369/580] old crappy demo song --- ..._thing_the_Metallix_fear_is_you_Forte....fur | Bin 59895 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 demos/The_only_thing_the_Metallix_fear_is_you_Forte....fur diff --git a/demos/The_only_thing_the_Metallix_fear_is_you_Forte....fur b/demos/The_only_thing_the_Metallix_fear_is_you_Forte....fur deleted file mode 100644 index 123381d8dc27c50307fcc76664ca1fc82d92b8dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59895 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 From 1b10c547e38daebb1951c7fa2eadeead6d15c069 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 14 Aug 2022 14:19:30 -0500 Subject: [PATCH 370/580] SoundUnit: implement switch roles flag --- src/engine/platform/su.cpp | 48 ++++++++++++++++++++++++++++---------- src/engine/platform/su.h | 4 +++- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 6c6b0b32..ef06e4bf 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -26,6 +26,7 @@ #define rWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } #define chWrite(c,a,v) rWrite(((c)<<5)|(a),v); +#define CHIP_DIVIDER 8 #define CHIP_FREQBASE 524288 const char** DivPlatformSoundUnit::getRegisterSheet() { @@ -98,6 +99,13 @@ const char* DivPlatformSoundUnit::getEffectName(unsigned char effect) { return NULL; } +double DivPlatformSoundUnit::NOTE_SU(int ch, int note) { + if (chan[ch].switchRoles) { + return NOTE_PERIODIC(note); + } + return NOTE_FREQUENCY(note); +} + void DivPlatformSoundUnit::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; h0); - chWrite(i,0x1e,chan[i].syncTimer&0xff); - chWrite(i,0x1f,chan[i].syncTimer>>8); + if (chan[i].switchRoles) { + chWrite(i,0x00,chan[i].syncTimer&0xff); + chWrite(i,0x01,chan[i].syncTimer>>8); + } else { + chWrite(i,0x1e,chan[i].syncTimer&0xff); + chWrite(i,0x1f,chan[i].syncTimer>>8); + } writeControlUpper(i); } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { //DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_SU); - chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,2,chan[i].pitch2,chipClock,CHIP_FREQBASE); + chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].switchRoles,2,chan[i].pitch2,chipClock,chan[i].switchRoles?CHIP_DIVIDER:CHIP_FREQBASE); if (chan[i].pcm) { DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_SU); // TODO: sample map? @@ -213,8 +226,13 @@ void DivPlatformSoundUnit::tick(bool sysTick) { } if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>65535) chan[i].freq=65535; - chWrite(i,0x00,chan[i].freq&0xff); - chWrite(i,0x01,chan[i].freq>>8); + if (chan[i].switchRoles) { + chWrite(i,0x1e,chan[i].freq&0xff); + chWrite(i,0x1f,chan[i].freq>>8); + } else { + chWrite(i,0x00,chan[i].freq&0xff); + chWrite(i,0x01,chan[i].freq>>8); + } if (chan[i].keyOn) { if (chan[i].pcm) { DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_SU); @@ -256,6 +274,7 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { switch (c.cmd) { case DIV_CMD_NOTE_ON: { DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_SU); + chan[c.chan].switchRoles=ins->su.switchRoles; if (chan[c.chan].pcm && !(ins->type==DIV_INS_AMIGA || ins->su.useSample)) { chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA || ins->su.useSample); writeControl(c.chan); @@ -263,7 +282,7 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { } chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA || ins->su.useSample); if (c.value!=DIV_NOTE_NULL) { - chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); + chan[c.chan].baseFreq=NOTE_SU(c.chan,c.value); chan[c.chan].freqChanged=true; chan[c.chan].note=c.value; } @@ -421,7 +440,7 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { } break; case DIV_CMD_NOTE_PORTA: { - int destFreq=NOTE_FREQUENCY(c.value2); + int destFreq=NOTE_SU(c.chan,c.value2); bool return2=false; if (destFreq>chan[c.chan].baseFreq) { chan[c.chan].baseFreq+=c.value*((parent->song.linearPitch==2)?1:(1+(chan[c.chan].baseFreq>>9))); @@ -453,7 +472,7 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { chan[c.chan].keyOn=true; break; case DIV_CMD_LEGATO: - chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value+((chan[c.chan].std.arp.will && !chan[c.chan].std.arp.mode)?(chan[c.chan].std.arp.val):(0))); + chan[c.chan].baseFreq=NOTE_SU(c.chan,c.value+((chan[c.chan].std.arp.will && !chan[c.chan].std.arp.mode)?(chan[c.chan].std.arp.val):(0))); chan[c.chan].freqChanged=true; chan[c.chan].note=c.value; break; @@ -461,7 +480,7 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_SU)); } - if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_FREQUENCY(chan[c.chan].note); + if (!chan[c.chan].inPorta && c.value && !parent->song.brokenPortaArp && chan[c.chan].std.arp.will) chan[c.chan].baseFreq=NOTE_SU(c.chan,chan[c.chan].note); chan[c.chan].inPorta=c.value; break; case DIV_CMD_GET_VOLMAX: @@ -485,6 +504,11 @@ void DivPlatformSoundUnit::forceIns() { for (int i=0; i<8; i++) { chan[i].insChanged=true; chan[i].freqChanged=true; + + // restore channel attributes + chWrite(i,0x03,chan[i].pan); + writeControl(i); + writeControlUpper(i); } } diff --git a/src/engine/platform/su.h b/src/engine/platform/su.h index 9972599d..2392624f 100644 --- a/src/engine/platform/su.h +++ b/src/engine/platform/su.h @@ -31,7 +31,7 @@ class DivPlatformSoundUnit: public DivDispatch { int ins, cutoff, baseCutoff, res, control, hasOffset; signed char pan; unsigned char duty; - bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, noise, pcm, phaseReset, filterPhaseReset; + bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, noise, pcm, phaseReset, filterPhaseReset, switchRoles; bool pcmLoop, timerSync, freqSweep, volSweep, cutSweep; unsigned short freqSweepP, volSweepP, cutSweepP; unsigned char freqSweepB, volSweepB, cutSweepB; @@ -67,6 +67,7 @@ class DivPlatformSoundUnit: public DivDispatch { pcm(false), phaseReset(false), filterPhaseReset(false), + switchRoles(false), pcmLoop(false), timerSync(false), freqSweep(false), @@ -108,6 +109,7 @@ class DivPlatformSoundUnit: public DivDispatch { SoundUnit* su; size_t sampleMemLen; unsigned char regPool[128]; + double NOTE_SU(int ch, int note); void writeControl(int ch); void writeControlUpper(int ch); From cb4417824d383a9041d3476317d52ba915f6de0c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 14 Aug 2022 14:26:55 -0500 Subject: [PATCH 371/580] YMZ280B: restore panning in forceIns --- src/engine/platform/ymz280b.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/engine/platform/ymz280b.cpp b/src/engine/platform/ymz280b.cpp index b690d30c..0543a815 100644 --- a/src/engine/platform/ymz280b.cpp +++ b/src/engine/platform/ymz280b.cpp @@ -332,6 +332,8 @@ void DivPlatformYMZ280B::forceIns() { chan[i].insChanged=true; chan[i].freqChanged=true; chan[i].sample=-1; + + rWrite(0x03+i*4,chan[i].panning); } } From 9b6730607e2ae72ba5f32614d663badb90445fdd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 14 Aug 2022 19:17:03 -0500 Subject: [PATCH 372/580] OPL: finally fix the carnival night zone bug TODO: RUN TEST SUITE! --- src/engine/platform/opl.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index a32777c3..8b76db21 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -872,6 +872,13 @@ int DivPlatformOPL::dispatch(DivCommand c) { int ops=(slots[3][c.chan]!=255 && chan[c.chan].state.ops==4 && oplType==3)?4:2; chan[c.chan].fourOp=(ops==4); if (chan[c.chan].fourOp) { + /* + if (chan[c.chan+1].active) { + chan[c.chan+1].keyOff=true; + chan[c.chan+1].keyOn=false; + chan[c.chan+1].active=false; + }*/ + chan[c.chan+1].insChanged=true; chan[c.chan+1].macroInit(NULL); } update4OpMask=true; From f8b3c089a4386c8f40f7f80670956cf72edb919c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 14 Aug 2022 23:07:19 -0500 Subject: [PATCH 373/580] Game Boy: fix volume column --- src/engine/platform/gb.cpp | 11 ++++++++++- src/engine/platform/gb.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index a7b31093..9680d0ff 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -373,6 +373,8 @@ void DivPlatformGB::tick(bool sysTick) { chan[i].killIt=false; } } + + chan[i].soManyHacksToMakeItDefleCompatible=false; } } @@ -409,10 +411,16 @@ int DivPlatformGB::dispatch(DivCommand c) { ws.init(ins,32,15,chan[c.chan].insChanged); } if ((chan[c.chan].insChanged || ins->gb.alwaysInit) && !chan[c.chan].softEnv) { - chan[c.chan].envVol=ins->gb.envVol; + if (!chan[c.chan].soManyHacksToMakeItDefleCompatible) { + chan[c.chan].envVol=ins->gb.envVol; + } chan[c.chan].envLen=ins->gb.envLen; chan[c.chan].envDir=ins->gb.envDir; chan[c.chan].soundLen=ins->gb.soundLen; + if (!chan[c.chan].soManyHacksToMakeItDefleCompatible) { + chan[c.chan].vol=chan[c.chan].envVol; + chan[c.chan].outVol=chan[c.chan].envVol; + } } if (c.chan==2 && chan[c.chan].softEnv) { chan[c.chan].soundLen=64; @@ -460,6 +468,7 @@ int DivPlatformGB::dispatch(DivCommand c) { } if (!chan[c.chan].softEnv) { chan[c.chan].envVol=chan[c.chan].vol; + chan[c.chan].soManyHacksToMakeItDefleCompatible=true; } else if (c.chan!=2) { chan[c.chan].envVol=chan[c.chan].vol; if (!chan[c.chan].keyOn) chan[c.chan].killIt=true; diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index 9498317b..00dcca03 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -31,6 +31,7 @@ class DivPlatformGB: public DivDispatch { int freq, baseFreq, pitch, pitch2, note, ins; unsigned char duty, sweep; bool active, insChanged, freqChanged, sweepChanged, keyOn, keyOff, inPorta, released, softEnv, killIt; + bool soManyHacksToMakeItDefleCompatible; signed char vol, outVol, wave, lastKill; unsigned char envVol, envDir, envLen, soundLen; unsigned short hwSeqPos; @@ -59,6 +60,7 @@ class DivPlatformGB: public DivDispatch { released(false), softEnv(false), killIt(false), + soManyHacksToMakeItDefleCompatible(false), vol(15), outVol(15), wave(-1), From 23276211f5dfb037e1d487e696324e8b473b93dc Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 15 Aug 2022 13:25:31 +0900 Subject: [PATCH 374/580] Fix incorrect info on ES5506 --- src/engine/sysDef.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index c5541baa..73964089 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1840,7 +1840,7 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_ES5506]=new DivSysDef( "Ensoniq ES5506", NULL, 0xb1, 0, 32, false, true, 0, false, - "a sample chip used in the Gravis Ultrasound, popular in the PC (DOS) demoscene.", + "a sample chip used in the Ensoniq's unique transwave synthesizers, \nand SoundScape series PC ISA soundcards...\nthat's just yet another (partially)SB compatible one with emulated OPL3 and MIDI ROMpler.", {"Channel 1", "Channel 2", "Channel 3", "Channel 4", "Channel 5", "Channel 6", "Channel 7", "Channel 8", "Channel 9", "Channel 10", "Channel 11", "Channel 12", "Channel 13", "Channel 14", "Channel 15", "Channel 16", "Channel 17", "Channel 18", "Channel 19", "Channel 20", "Channel 21", "Channel 22", "Channel 23", "Channel 24", "Channel 25", "Channel 26", "Channel 27", "Channel 28", "Channel 29", "Channel 30", "Channel 31", "Channel 32"}, {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32"}, {DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, From a8d3803efcb98243f44cf493ccb29cc15b2ffbb6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 14 Aug 2022 23:28:15 -0500 Subject: [PATCH 375/580] Game Boy: now fix wave channel volume column --- src/engine/platform/gb.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 9680d0ff..27d2ff83 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -84,7 +84,7 @@ const char* DivPlatformGB::getEffectName(unsigned char effect) { void DivPlatformGB::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; igb.alwaysInit) && !chan[c.chan].softEnv) { - if (!chan[c.chan].soManyHacksToMakeItDefleCompatible) { + if (!chan[c.chan].soManyHacksToMakeItDefleCompatible && c.chan!=2) { chan[c.chan].envVol=ins->gb.envVol; } chan[c.chan].envLen=ins->gb.envLen; chan[c.chan].envDir=ins->gb.envDir; chan[c.chan].soundLen=ins->gb.soundLen; - if (!chan[c.chan].soManyHacksToMakeItDefleCompatible) { + if (!chan[c.chan].soManyHacksToMakeItDefleCompatible && c.chan!=2) { chan[c.chan].vol=chan[c.chan].envVol; chan[c.chan].outVol=chan[c.chan].envVol; } From a34c9806cb847ff6ec91a186095b52cbf63680c9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 14 Aug 2022 23:30:36 -0500 Subject: [PATCH 376/580] Game Boy: whoops --- src/engine/platform/gb.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 27d2ff83..b6a00c0f 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -84,7 +84,7 @@ const char* DivPlatformGB::getEffectName(unsigned char effect) { void DivPlatformGB::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; i Date: Sun, 14 Aug 2022 23:34:57 -0500 Subject: [PATCH 377/580] fix system definition for ES5506 - again --- src/engine/sysDef.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 73964089..e3c356cf 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1840,7 +1840,7 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_ES5506]=new DivSysDef( "Ensoniq ES5506", NULL, 0xb1, 0, 32, false, true, 0, false, - "a sample chip used in the Ensoniq's unique transwave synthesizers, \nand SoundScape series PC ISA soundcards...\nthat's just yet another (partially)SB compatible one with emulated OPL3 and MIDI ROMpler.", + "a sample chip used in the Ensoniq's unique TransWave synthesizers, and SoundScape series PC ISA soundcards (which are yet another (partially) Sound Blaster compatible ones with emulated OPL3 and MIDI ROMpler).", {"Channel 1", "Channel 2", "Channel 3", "Channel 4", "Channel 5", "Channel 6", "Channel 7", "Channel 8", "Channel 9", "Channel 10", "Channel 11", "Channel 12", "Channel 13", "Channel 14", "Channel 15", "Channel 16", "Channel 17", "Channel 18", "Channel 19", "Channel 20", "Channel 21", "Channel 22", "Channel 23", "Channel 24", "Channel 25", "Channel 26", "Channel 27", "Channel 28", "Channel 29", "Channel 30", "Channel 31", "Channel 32"}, {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32"}, {DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, From 15b42945323fa3f591f48c95dec8003b0ef77111 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 02:01:08 -0500 Subject: [PATCH 378/580] FC loader: fix wave, sample and freq seq loading --- src/engine/fileOps.cpp | 64 +++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index db2305c6..c5084252 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2272,8 +2272,8 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { unsigned int patPtr, freqMacroPtr, volMacroPtr, samplePtr, wavePtr; unsigned int seqLen, patLen, freqMacroLen, volMacroLen, sampleLen; - unsigned char waveLen[40]; - unsigned char waveLoopLen[40]; + unsigned char waveLen[80]; + //unsigned char waveLoopLen[40]; struct FCSequence { unsigned char pat[4]; @@ -2363,24 +2363,24 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { wavePtr=0; } - logD("patPtr: %d",patPtr); + logD("patPtr: %x",patPtr); logD("patLen: %d",patLen); - logD("freqMacroPtr: %d",freqMacroPtr); + logD("freqMacroPtr: %x",freqMacroPtr); logD("freqMacroLen: %d",freqMacroLen); - logD("volMacroPtr: %d",volMacroPtr); + logD("volMacroPtr: %x",volMacroPtr); logD("volMacroLen: %d",volMacroLen); - logD("samplePtr: %d",samplePtr); + logD("samplePtr: %x",samplePtr); if (isFC14) { - logD("wavePtr: %d",wavePtr); + logD("wavePtr: %x",wavePtr); } else { logD("sampleLen: %d",sampleLen); } // sample info - logD("samples:"); + logD("samples: (%x)",reader.tell()); for (int i=0; i<10; i++) { - sample[i].loopLen=reader.readS_BE(); sample[i].len=reader.readS_BE(); + sample[i].loopLen=reader.readS_BE(); sample[i].loopStart=reader.readS_BE(); logD("- %d: %d (%d, %d)",i,sample[i].len,sample[i].loopStart,sample[i].loopLen); @@ -2389,11 +2389,10 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { // wavetable lengths if (isFC14) { logD("wavetables:"); - for (int i=0; i<40; i++) { - waveLen[i]=reader.readC(); - waveLoopLen[i]=reader.readC(); + for (int i=0; i<80; i++) { + waveLen[i]=(unsigned char)reader.readC(); - logD("- %d: %.4x (%.4x)",i,waveLen[i],waveLoopLen[i]); + logD("- %d: %.4x",i,waveLen[i]); } } @@ -2482,11 +2481,12 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { DivSample* s=new DivSample; s->depth=DIV_SAMPLE_DEPTH_8BIT; if (sample[i].len>0) { - s->init(sample[i].len); + s->init(sample[i].len*2); } + s->name=fmt::sprintf("Sample %d",i+1); s->loopStart=sample[i].loopStart*2; s->loopEnd=(sample[i].loopStart+sample[i].loopLen)*2; - reader.read(s->data8,sample[i].len); + reader.read(s->data8,sample[i].len*2); ds.sample.push_back(s); } ds.sampleLen=(int)ds.sample.size(); @@ -2500,11 +2500,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { return false; } logD("reading wavetables..."); - for (int i=0; i<40; i++) { + for (int i=0; i<80; i++) { DivWavetable* w=new DivWavetable; w->min=0; w->max=255; - w->len=MIN(256,waveLoopLen[i]*2); + w->len=MIN(256,waveLen[i]*2); for (int i=0; i<256; i++) { w->data[i]=128; @@ -2513,13 +2513,14 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { if (waveLen[i]>0) { signed char* waveArray=new signed char[waveLen[i]*2]; reader.read(waveArray,waveLen[i]*2); - int howMany=MIN(waveLen[i]*2,waveLoopLen[i]*2); + int howMany=waveLen[i]*2; if (howMany>256) howMany=256; for (int i=0; idata[i]=waveArray[i]+128; } delete[] waveArray; } else { + logV("empty wave %d",i); w->len=32; for (int i=0; i<32; i++) { w->data[i]=(i*255)/31; @@ -2600,9 +2601,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } } } else { - p->data[k][2]=fp.val[k]&0x3f; + p->data[k][2]=(fp.val[k]+seq[i].offsetIns[j])&0x3f; } } + } else if (fp.note[k]>0) { + p->data[k][2]=seq[i].offsetIns[j]; } } } @@ -2627,6 +2630,9 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { signed char loopMap[64]; memset(loopMap,-1,64); + signed char loopMapFreq[64]; + memset(loopMapFreq,-1,64); + // volume sequence ins->std.volMacro.len=0; for (int j=5; j<64; j++) { @@ -2678,7 +2684,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { if (freqMacrostd.arpMacro.len; if (fm.val[j]==0xe1) { + if (ins->std.arpMacro.mode) { + ins->std.arpMacro.loop=(signed int)ins->std.arpMacro.len-1; + } break; } else if (fm.val[j]==0xe2 || fm.val[j]==0xe4) { if (++j>=64) break; @@ -2692,11 +2702,12 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ins->std.waveMacro.val[ins->std.waveMacro.len]=wave-10; ins->std.waveMacro.open=true; lastVal=wave; - if (++ins->std.waveMacro.len>=128) break; if (++ins->std.arpMacro.len>=128) break; } } else if (fm.val[j]==0xe0) { - logV("unhandled loop!"); + if (++j>=64) break; + ins->std.arpMacro.loop=loopMapFreq[fm.val[j]&63]; + break; } else if (fm.val[j]==0xe3) { logV("unhandled vibrato!"); } else if (fm.val[j]==0xe8) { @@ -2708,9 +2719,18 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } else if (fm.val[j]==0xea) { logV("unhandled pitch!"); } else { - ins->std.arpMacro.val[ins->std.arpMacro.len]=(signed char)fm.val[j]; + if (fm.val[j]>0x80) { + ins->std.arpMacro.val[ins->std.arpMacro.len]=fm.val[j]-0x80+24; + ins->std.arpMacro.mode=1; // TODO: variable fixed/relative mode + } else { + ins->std.arpMacro.val[ins->std.arpMacro.len]=fm.val[j]; + } + if (lastVal>=10) { + ins->std.waveMacro.val[ins->std.waveMacro.len]=lastVal-10; + } ins->std.arpMacro.open=true; if (++ins->std.arpMacro.len>=128) break; + if (++ins->std.waveMacro.len>=128) break; } } } From 4663534fa3565a49ab8c3acf6098d0dd06efa9ea Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 03:18:54 -0500 Subject: [PATCH 379/580] FC loader: preset waveforms, vibrato and stuff --- src/engine/fileOps.cpp | 189 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 175 insertions(+), 14 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index c5084252..2ac810c6 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2262,6 +2262,95 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) { return success; } +unsigned char fcXORTriangle[32]={ + 0xc0, 0xc0, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, 0x00, 0xf8, 0xf0, 0xe8, 0xe0, 0xd8, 0xd0, 0xc8, + 0xc0, 0xb8, 0xb0, 0xa8, 0xa0, 0x98, 0x90, 0x88, 0x80, 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8 +}; + +unsigned char fcCustom1[32]={ + 0x45, 0x45, 0x79, 0x7d, 0x7a, 0x77, 0x70, 0x66, 0x61, 0x58, 0x53, 0x4d, 0x2c, 0x20, 0x18, 0x12, + 0x04, 0xdb, 0xd3, 0xcd, 0xc6, 0xbc, 0xb5, 0xae, 0xa8, 0xa3, 0x9d, 0x99, 0x93, 0x8e, 0x8b, 0x8a +}; + +unsigned char fcCustom2[32]={ + 0x45, 0x45, 0x79, 0x7d, 0x7a, 0x77, 0x70, 0x66, 0x5b, 0x4b, 0x43, 0x37, 0x2c, 0x20, 0x18, 0x12, + 0x04, 0xf8, 0xe8, 0xdb, 0xcf, 0xc6, 0xbe, 0xb0, 0xa8, 0xa4, 0x9e, 0x9a, 0x95, 0x94, 0x8d, 0x83 +}; + +unsigned char fcTinyTriangle[16]={ + 0x00, 0x00, 0x40, 0x60, 0x7f, 0x60, 0x40, 0x20, 0x00, 0xe0, 0xc0, 0xa0, 0x80, 0xa0, 0xc0, 0xe0 +}; + +void generateFCPresetWave(int index, DivWavetable* wave) { + wave->max=255; + wave->len=32; + + switch (index) { + case 0x00: case 0x01: case 0x02: case 0x03: + case 0x04: case 0x05: case 0x06: case 0x07: + case 0x08: case 0x09: case 0x0a: case 0x0b: + case 0x0c: case 0x0d: case 0x0e: case 0x0f: + // XOR triangle + for (int i=0; i<32; i++) { + wave->data[i]=(unsigned char)((fcXORTriangle[i]^0x80)^(((index+15)data[i]=(index>i)?0x01:0xff; + } + break; + case 0x20: case 0x21: case 0x22: case 0x23: + case 0x24: case 0x25: case 0x26: case 0x27: + // tiny pulse + for (int i=0; i<32; i++) { + wave->data[i]=((index-0x18)>(i&15))?0x01:0xff; + } + break; + case 0x28: + case 0x2e: + // saw + for (int i=0; i<32; i++) { + wave->data[i]=i<<3; + } + break; + case 0x29: + case 0x2f: + // tiny saw + for (int i=0; i<32; i++) { + wave->data[i]=(i<<4)&0xff; + } + break; + case 0x2a: + // custom 1 + for (int i=0; i<32; i++) { + wave->data[i]=fcCustom1[i]^0x80; + } + break; + case 0x2b: + // custom 2 + for (int i=0; i<32; i++) { + wave->data[i]=fcCustom2[i]^0x80; + } + break; + case 0x2c: case 0x2d: + // tiny triangle + for (int i=0; i<32; i++) { + wave->data[i]=fcTinyTriangle[i&15]^0x80; + } + break; + default: + for (int i=0; i<32; i++) { + wave->data[i]=i; + } + break; + } +} + bool DivEngine::loadFC(unsigned char* file, size_t len) { struct InvalidHeaderException {}; bool success=false; @@ -2301,10 +2390,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { DivSong ds; ds.tuning=436.0; ds.version=DIV_VERSION_FC; - //ds.linearPitch=0; + ds.linearPitch=0; + ds.pitchMacroIsLinear=false; //ds.noSlidesOnFirstTick=true; //ds.rowResetsArpPos=true; - //ds.ignoreJumpAtEnd=false; + ds.ignoreJumpAtEnd=false; // load here if (!reader.seek(0,SEEK_SET)) { @@ -2521,12 +2611,16 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { delete[] waveArray; } else { logV("empty wave %d",i); - w->len=32; - for (int i=0; i<32; i++) { - w->data[i]=(i*255)/31; - } + generateFCPresetWave(i,w); } + ds.wave.push_back(w); + } + } else { + // generate preset waves + for (int i=0; i<48; i++) { + DivWavetable* w=new DivWavetable; + generateFCPresetWave(i,w); ds.wave.push_back(w); } } @@ -2542,6 +2636,14 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ds.subsong[0]->speed1=3; ds.subsong[0]->speed2=3; + int lastIns[4]; + int lastNote[4]; + signed char lastTranspose[4]; + + memset(lastIns,-1,4*sizeof(int)); + memset(lastNote,-1,4*sizeof(int)); + memset(lastTranspose,0,4); + for (unsigned int i=0; iorders.ord[j][i]=i; @@ -2559,6 +2661,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { for (int k=0; k<32; k++) { FCPattern& fp=pat[seq[i].pat[j]]; if (fp.note[k]>0 && fp.note[k]<0x49) { + lastNote[j]=fp.note[k]; short note=(fp.note[k]+seq[i].transpose[j])%12; short octave=2+((fp.note[k]+seq[i].transpose[j])/12); if (fp.note[k]>=0x3d) octave-=6; @@ -2574,6 +2677,27 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { p->data[k][4]=2; p->data[k][5]=0; } + } else if (fp.note[k]==0x49) { + if (k>0) { + p->data[k-1][4]=0x0d; + p->data[k-1][5]=0; + } + } else if (k==0 && lastTranspose[j]!=seq[i].transpose[j]) { + p->data[0][2]=lastIns[j]; + p->data[0][4]=0x03; + p->data[0][5]=0xff; + lastTranspose[j]=seq[i].transpose[j]; + + short note=(lastNote[j]+seq[i].transpose[j])%12; + short octave=2+((lastNote[j]+seq[i].transpose[j])/12); + if (lastNote[j]>=0x3d) octave-=6; + if (note==0) { + note=12; + octave--; + } + octave&=0xff; + p->data[k][0]=note; + p->data[k][1]=octave; } if (fp.val[k]) { if (ignoreNext) { @@ -2602,10 +2726,12 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } } else { p->data[k][2]=(fp.val[k]+seq[i].offsetIns[j])&0x3f; + lastIns[j]=p->data[k][2]; } } - } else if (fp.note[k]>0) { + } else if (fp.note[k]>0 && fp.note[k]<0x49) { p->data[k][2]=seq[i].offsetIns[j]; + lastIns[j]=p->data[k][2]; } } } @@ -2619,11 +2745,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ins->type=DIV_INS_AMIGA; ins->name=fmt::sprintf("Instrument %d",i); ins->amiga.useWave=true; - //unsigned char seqSpeed=m.val[0]; + unsigned char seqSpeed=m.val[0]; unsigned char freqMacro=m.val[1]; - //unsigned char vibSpeed=m.val[2]; - //unsigned char vibDepth=m.val[3]; - //unsigned char vibDelay=m.val[4]; + unsigned char vibSpeed=m.val[2]; + unsigned char vibDepth=m.val[3]; + unsigned char vibDelay=m.val[4]; unsigned char lastVal=m.val[5]; @@ -2633,6 +2759,9 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { signed char loopMapFreq[64]; memset(loopMapFreq,-1,64); + signed char loopMapWave[64]; + memset(loopMapWave,-1,64); + // volume sequence ins->std.volMacro.len=0; for (int j=5; j<64; j++) { @@ -2672,9 +2801,13 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { if (++ins->std.volMacro.len>=128) break; } } else { - ins->std.volMacro.val[ins->std.volMacro.len]=m.val[j]; - lastVal=m.val[j]; - if (++ins->std.volMacro.len>=128) break; + // TODO: replace with upcoming macro speed + for (int k=0; kstd.volMacro.val[ins->std.volMacro.len]=m.val[j]; + lastVal=m.val[j]; + if (++ins->std.volMacro.len>=128) break; + } + if (ins->std.volMacro.len>=128) break; } } @@ -2685,6 +2818,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { FCMacro& fm=freqMacros[freqMacro]; for (int j=0; j<64; j++) { loopMapFreq[j]=ins->std.arpMacro.len; + loopMapWave[j]=ins->std.waveMacro.len; if (fm.val[j]==0xe1) { if (ins->std.arpMacro.mode) { ins->std.arpMacro.loop=(signed int)ins->std.arpMacro.len-1; @@ -2707,6 +2841,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } else if (fm.val[j]==0xe0) { if (++j>=64) break; ins->std.arpMacro.loop=loopMapFreq[fm.val[j]&63]; + ins->std.waveMacro.loop=loopMapWave[fm.val[j]&63]; break; } else if (fm.val[j]==0xe3) { logV("unhandled vibrato!"); @@ -2735,6 +2870,32 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } } + // vibrato + for (int j=0; j<=vibDelay; j++) { + ins->std.pitchMacro.val[ins->std.pitchMacro.len]=0; + if (++ins->std.pitchMacro.len>=128) break; + } + int vibPos=0; + ins->std.pitchMacro.loop=ins->std.pitchMacro.len; + do { + vibPos+=vibSpeed; + if (vibPos>vibDepth) vibPos=vibDepth; + ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; + if (++ins->std.pitchMacro.len>=128) break; + } while (vibPosstd.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; + if (++ins->std.pitchMacro.len>=128) break; + } while (vibPos>-vibDepth); + do { + vibPos+=vibSpeed; + if (vibPos>0) vibPos=0; + ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; + if (++ins->std.pitchMacro.len>=128) break; + } while (vibPos<0); + ds.ins.push_back(ins); } ds.insLen=(int)ds.ins.size(); From bef8cf5f5f374bdb811932523a180aa75274ac55 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 03:32:27 -0500 Subject: [PATCH 380/580] FC loader: sample loop point and more fixes --- src/engine/fileOps.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 2ac810c6..a9b0bcfc 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2470,8 +2470,8 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { logD("samples: (%x)",reader.tell()); for (int i=0; i<10; i++) { sample[i].len=reader.readS_BE(); - sample[i].loopLen=reader.readS_BE(); sample[i].loopStart=reader.readS_BE(); + sample[i].loopLen=reader.readS_BE(); logD("- %d: %d (%d, %d)",i,sample[i].len,sample[i].loopStart,sample[i].loopLen); } @@ -2574,8 +2574,10 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { s->init(sample[i].len*2); } s->name=fmt::sprintf("Sample %d",i+1); - s->loopStart=sample[i].loopStart*2; - s->loopEnd=(sample[i].loopStart+sample[i].loopLen)*2; + if (sample[i].loopLen>1) { + s->loopStart=sample[i].loopStart; + s->loopEnd=sample[i].loopStart+(sample[i].loopLen*2); + } reader.read(s->data8,sample[i].len*2); ds.sample.push_back(s); } @@ -2703,7 +2705,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { if (ignoreNext) { ignoreNext=false; } else { - if (fp.val[k]&0xe0) { + if (fp.val[k]==0xf0) { + p->data[k][0]=100; + p->data[k][1]=0; + p->data[k][2]=-1; + } else if (fp.val[k]&0xe0) { if (fp.val[k]&0x40) { p->data[k][4]=2; p->data[k][5]=0; @@ -2780,6 +2786,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ins->std.volMacro.val[ins->std.volMacro.len]=lastVal; if (++ins->std.volMacro.len>=128) break; } + if (ins->std.volMacro.len>=128) break; } else if (m.val[j]==0xe9 || m.val[j]==0xea) { // volume slide if (++j>=64) break; signed char slideStep=m.val[j]; @@ -2870,6 +2877,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } } + // waveform width + if (lastVal>=10 && (unsigned int)(lastVal-10)amiga.waveLen=ds.wave[lastVal-10]->len-1; + } + // vibrato for (int j=0; j<=vibDelay; j++) { ins->std.pitchMacro.val[ins->std.pitchMacro.len]=0; From 206b3af12a7e7aed2f814871fd8d1dc22a1b6188 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 03:40:04 -0500 Subject: [PATCH 381/580] FC loader: aaaaaaand more fixes --- src/engine/fileOps.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index a9b0bcfc..4b7f7878 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2390,10 +2390,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { DivSong ds; ds.tuning=436.0; ds.version=DIV_VERSION_FC; - ds.linearPitch=0; - ds.pitchMacroIsLinear=false; + //ds.linearPitch=0; + //ds.pitchMacroIsLinear=false; //ds.noSlidesOnFirstTick=true; //ds.rowResetsArpPos=true; + ds.pitchSlideSpeed=8; ds.ignoreJumpAtEnd=false; // load here @@ -2843,7 +2844,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ins->std.waveMacro.val[ins->std.waveMacro.len]=wave-10; ins->std.waveMacro.open=true; lastVal=wave; - if (++ins->std.arpMacro.len>=128) break; + //if (++ins->std.arpMacro.len>=128) break; } } else if (fm.val[j]==0xe0) { if (++j>=64) break; @@ -2892,19 +2893,19 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { do { vibPos+=vibSpeed; if (vibPos>vibDepth) vibPos=vibDepth; - ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; + ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32; if (++ins->std.pitchMacro.len>=128) break; } while (vibPosstd.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; + ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32; if (++ins->std.pitchMacro.len>=128) break; } while (vibPos>-vibDepth); do { vibPos+=vibSpeed; if (vibPos>0) vibPos=0; - ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; + ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32; if (++ins->std.pitchMacro.len>=128) break; } while (vibPos<0); From 20c5e14f266a4deaf1fd15864d3c8a511078a05a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 04:22:14 -0500 Subject: [PATCH 382/580] FC loader: the final fixes for this night --- src/engine/fileOps.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 4b7f7878..845ee98b 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2642,10 +2642,12 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { int lastIns[4]; int lastNote[4]; signed char lastTranspose[4]; + bool isSliding[4]; memset(lastIns,-1,4*sizeof(int)); memset(lastNote,-1,4*sizeof(int)); memset(lastTranspose,0,4); + memset(isSliding,0,4*sizeof(bool)); for (unsigned int i=0; idata[k][0]=note; p->data[k][1]=octave; - if (isSliding) { - isSliding=false; + if (isSliding[j]) { + isSliding[j]=false; p->data[k][4]=2; p->data[k][5]=0; } @@ -2714,9 +2715,9 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { if (fp.val[k]&0x40) { p->data[k][4]=2; p->data[k][5]=0; - isSliding=false; + isSliding[j]=false; } else if (fp.val[k]&0x80) { - isSliding=true; + isSliding[j]=true; if (k<31) { if (fp.val[k+1]&0x20) { p->data[k][4]=2; @@ -2856,7 +2857,9 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } else if (fm.val[j]==0xe8) { logV("unhandled sustain!"); } else if (fm.val[j]==0xe7) { - logV("unhandled newseq!"); + if (++j>=64) break; + fm=freqMacros[MIN(fm.val[j],freqMacros.size()-1)]; + j=0; } else if (fm.val[j]==0xe9) { logV("unhandled pack!"); } else if (fm.val[j]==0xea) { From 2fb00e76149be685f4490cb4e6439949faa813df Mon Sep 17 00:00:00 2001 From: Eris Lund <38136789+0x5066@users.noreply.github.com> Date: Mon, 15 Aug 2022 20:37:21 +0200 Subject: [PATCH 383/580] Add files via upload --- .../government funding breakcore-ish remix.fur | Bin 0 -> 417084 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/government funding breakcore-ish remix.fur diff --git a/demos/government funding breakcore-ish remix.fur b/demos/government funding breakcore-ish remix.fur new file mode 100644 index 0000000000000000000000000000000000000000..5659ca1a1a930c347249e700da26b6bf5be42bfe GIT binary patch literal 417084 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

yZB1y%9oUOX> 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

SbKxOT%qU&}-j5jq3;5;z8=YzyB|O{4 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 z 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

dJS3K6f7_(_vm#dV3je+DA;ou*vV6z6JW2rW6V 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

Y-376yk^et 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

p9OPfR z9Dh+T-0Rlts?{w~mpoX^gYySA#vS3Ofuil!Y~9zi_0+b1-g`~oTlBxG{T)6MxZ?k0 z#$DOgoN{gt^{6p@ct`ePueejoLyym0H080_hcMm8oI#p_*fT<62yNgFuKL2d5f06! zLmyq8)Z!}JGjZ+dxd*Gpw{*Tc3;vhO_kSwm#`(_|I-dUTjGoi?|L17`#ZAR)ghzfL zABNlpWTfTjn^VTWXhx8nK!H`5&;8@Z^xfZOw9uTti0@;#8e`Om^^_gZgK+-=Mz{9DHi z7Zhb)&rxBYFg-_iiF32*n_b1$j(<7b(S_mT$NuG`OcXHzchCUEykEoj1jYHeyKdW? zW=o2H_dhs%y~cXv_qRVbe!abj_s|#F`TJ=o^ZWOJccaUW^s+%w{n-D5+~OY>@3lliy@3L)lAh%fWIHg=XYuOwTjK^(f2|IjKkt9#nMZH@FQ4yF z;o<*N5A1jCrXDn3w?;e9B7f$X`?--OQ(NZ?V-_VFR4~?_{3d$iwk+D$mPOJa@>-{L z-p_Qd40U_ETDMEE_?w-Fd_L2(dT(eO&ZV!gLptmk&79bv_nd-I388N-7ZH9&J&dR% z=O*N>{h!`m&;2h~^WV9&;+Qd=82`Uz-vM^C51 zg=62E66Nn-EmZAyQQr&vSHo|a-ZYcXnet6<`Po#Xy!T;ERiPh;iES2%Vt8vSanwVO zPGQ!#{@Q+pflB{T!sX6dPeQ165sxDWaOWGCFIIBC4X!i3C%#nwmE3c>YDMjBy{uze zQ9;|&SDt+UZhu(gj%xD z++#Q_=0%^2#mbKA;32NzmE?DHd}P3q3Uj1I?|Nf`3jP$nBtRFf4*CT8$kZ}S0Dd{R5&H0k| z*fw^cr1&wJuMfk^>fDqshogHp=;tU}nKjac+OKr6Z~Rb>&I_|a2AnjT`zqKUGw2^d z9B|95@W25Q?hE${E^C+A3g+k;Z4HZf9Mol>DETK@T@rjhG!{ycVxN%YQ0rO7^q`I3 zeA`%lu79HufvBvqVD(9-<<#w3J_diVENR?#73o{zVbdj-k0*~UsF+}@Zuo3izh*S4 zhH0Ma=?7kd+()O%X94Y4ebhD94Ogt%Zkf7yFop*T22J&KJ6~_*Cz6-%Q);ky59x@gSD4BoCSBEzz9TdOb z0U0dG?37QSzt0@D#9M#uVqGON4_aRZ$SBQS#%>g3w}sW77hpbf+R{zkC0kme>mC{) z!hdVM@38A5UPioz+4%W;M&-pQw*~F&`vrDQyM!)pe+GOe{O~fy?mf-BN-exI=np?G zh*93=6JJMECknn%FL`u;cCnZCT>t|lm0bl+*TT-!k>pL(;MGW2*!qh%`mTHRYsi||=bAcd=u6s>Hnw$~>) zT1VnthMzUL57Yn)!T_kRh+@txUZmAN5^Lf@In(JJY8|J}6OEhSwzSg(o61;jR{=O` zJ=-KkXQ2MD7o{Owa#bYOliS&<_a>j3o2wV`hN*uMz_hG2RUXC-vIu?vdLs0UzJIUj!Z1k{ zhp>{AVLD;qeK-5F0Yk)<rlXK7MVFmdw+)NtovcVdrWiC zpJ8ZCn^9uPE?mjF;Zw(G6MSzW@e34lzEq6-cDJ0SwvH>m+bA9X!PpIZ3ZESC_XKSIb+mGAzb)Ze(1zZ|5*@f+>E=;G zO_}-tb6}f8znC@KV}Csf#$3Q{nT0WtjPc?V*N+p7bWl5jqdlVEXz|5+ruRrp=xn;`m+|7twISBvv$%RCWvmOohAJQx71xE!X_<+ zd}3N3pC3oxNQi`H4Osz_rQ6#ysHd`v`n4#6rqXy`aBSkU@_!zff&KIIZubJW+n|%R zSiUc0)W+51yx_s4uOI^+XNZ!o76l`ik`tpp(Px2@hNSVOh^yH9z(B=(1+Ar&1tG+N zPuF}QCwgbWa|WRRu%EjkX$pc)0Y3wNBCf-YstZ*P`tPR8JtoL+jr}Mi#oc^FK43fn zb1`HQhkY0NJ%1#{GqxZcIvC^i7VU<|xN;9)+(GCpi+)LI7n?!!0)wu|mm=J#3bSHO z5BL`N0Kv~;7YKxCx0y}6gD%z_{o}($TG!$tQJ-W??Mp=FZ_hC@Fk4XuFF=V2`Etk6 zV$BuuBNcvR1?nR43eHn~p8S|RtxJmxCS?lx(5b<2(tp_KAF)v}9cT_sP()2$|2H>U zFZ?(6Rb72gqwx$Q9+ai}>Tqe)uD{uDJ!0wbH<-|L0r{8Vi_uYeXK<;>d!cH?pi;^Gj&!QE(F(>+KNh$}pe}`|sUi5G*26j;L zL1;5{r5}lo>x}K5Z#4{a;^wn<);#QUnW`aN#(&qK!KzC_AjBYDZ?Glwn%KhDs}Cw@ zrX0Kxg*V>~djxtQr-9Q*bk#1tsFCtWXZepG^RrS_r0$wK=5;3qtsv8muhz3BJ_`-Ukrf3s2dW;KV z)p(?2t@%mC`mxf<127I0*KnWk>H!H=-oj{cR5p8Y{tNxrX? zk0f%0SezN;BiwDJA=))7~JDC|ueg*y(!b7!axu=*Z;#|NF% z02iO_DW2qm^r{;J(RH4PM~uh)Bdv2#hsf@d#oRaAELqCSMKSnjX`l%VmCpMbnl9Z1v3ks|maO z4*Cqq5{;cfBzx9Cubvs06p=6R;%{Ie^pE(%I!kJ}=_9szV;M2Vn$dT@HA5Aw=JOAa zFOzl1@>%DgF*>IKiJaTNup>omK!5uv!YaQ>Un0!AL#s07DW*}J>+KbiInej2{z`8D z6$qOh!;2=07`2nZeI31eJ)hWw&`81&yX-A_R&7E zpUKa|5w3BeJoD~k>QvAx*lCyDIc140fb;8 z_MKrqYOnmP4uubpvb2#-2MAnwmFZJBNq@j&DSe0y;NsBbQTJTu@vM;zPGDl6bT6{h z8vsbdD$Fcl_o*mm5n!0-z<)Rr7r{vDo2Ps4axFO3Uw z!YMzmxL*-DvF7`s$qInF9rve06h?U?sjQe_IYWL=P`Fo+e^)TA0DpRedqcv&ezL!h zzB0KRtw3%eF~&B)pE>6!6I){}yy8wygb%O9U$^+7>c&;G3mUKKHGsp|B%1-FMlvW? z$ZyIMCr_I`(vP7pqn4@e_3^}WaSZT0-RmCvv1OQ*@)GU~he%N}fz`6MdL{elBfQ$vUjUgEZId_pilzB$XuDVWscK*8UJ+Y;^*>@4{vHz?a< z>!+m~D)6g=&7>v>`J5F_=Z!YB`4gGsAjf)`Dc}2#C;g!LE`J%YpAJV5ZL0ar(aqoc z?8swP6_3w3eVm&0q_A#Z%c8-JO}dt@ZY;5{J?1K?+#M>#ejd%#T3CGD8NYUc#)YjjmeAQ-LVzRZy zS>w@k5tO$RM~O(>9R<$bZ=ExZm$^eCMdw(5+NJ#_py~ zK81dtKl)JWb{=?{+dY|oP8-HVjRYtkhh|Fv8JUxW8;+8a# zj!J`UA8?Y)27DU9p8uWJ_lUOe>IpXeKuf$U-gwF6yN=C1J9iDKR> z_|@U~UVkR)kAEZuka6D3a;|45hMwJMK0abo(*BJ4i z!0@9pXXH%t2I3k3$G#MwWO(sHq&Y6nx*a2(G=FcOw0v)g@8A^A(@Flx@l<+y#)2Y1 z#(o-j=fnHY{#5z<#XqQc@%sRbi`(TADIwL_N89dbX?Mj0+xLI>qReHb#HaFNF^Ic zzJI44?8~8s_Ozg9C&dW6GAGv_i`_ZCMT~ZwXsGTrroV4CYr-?nF-J)mKR$WZbzCq^ z?QN)SmYudKP<$z|brw+8|8z0UQ6k$bv^8^)FQ3<*nXw6accMFwUAC@bbHGJa#_bPt z6CHy;7br%Mk*E$)%FkX^x2;dY#T3OGXn(0OeWy*#VCdWx(Ea)w<~0kbZtmPQN((oa zWnbiT%ukV(uHj?f5sZk1h3m`~ZN5(h-?p?%+tvSNbXc-H3c|~2^|`mu_?X&|iwD(T zowD@Jtt_b}gob~c@ogetxT>PIoIvVm<*I>bZ`kjE?@TA-NUy4O&K&NGlh$sjOMlz? z-^;8f(mP+yt_d1$G7c~k9y)Ndmpea+9&Udu=ONG#cW9x#%_}qE*xU`xlOu%;ncvOl z?h_84`9{xgk7Oqk0>50RKJT7DrjT|&$+7z#_LGqN#cgzp8b%I@YvGBTHgTs}DkhVa z5uR+ewI-3ZxN^DkEq_g|_t)<>27l-0%u7_u!S|wKvpjsQW*!>j-)$T98_9D|IEb$; z*lxbUYK}xsO65Yv zfPABp)piU}CbQ50z1?4|>TE@&+PC~Vf_d-qyOtR^3Gir5H4*oe4ZXrRYkxL+e4BPf zF6lY~Pr+)mTM+vUtgxcUvfc+~bC=V^m)hN;o;Va(9SZOdUT8Ah^U%PYGYz-6vUpad za^JLyM%RAC=_2Vz7p_cSHS~B*?;&b%gIho=r3{t z3I-7slE$vXrk~g;HCZN$2*s9Q*>gObkyUo!Pn+XRN4q?4B{E3nDVaPiP9H0)6T`fz z5uQt0V|Y>C7sF2o>5s%{Cw#Nt9H)mZpHe=OE-7z9XyX}4MhdjM&g5gfB<7bXv0mEw zfv{we6LZz)4?)nyPk%e+_U~~An-o=k3LYlxfXt3V%MDFFk|)?bK51Y<>3#I|AecA1 zZW%j^@x|yqk>Fmg9IIOHQDA6QjMLQ2VO?JP@n2IPbq#U;kYRk0rsXo1J^|KvL!4Eg`{_ILA-z6zFPK1`@${l zgI199XQaPpJdZLTKl3-F2i_v-M^wkaB&@j4TMV1<%Yi-R4W)1UGkQn7AE^S{K1dho zPSYzVLwf)c27mn$H3||zduCnHmIqzI6uIz1(#7_4yU9PZowtou6#$4{WpIvS<4jJ1 z09uB@GcVZeqRolDFI?A(i4G#qW)B)(`d28{kK=sxE^w0Lue%a@a2@C=hy#dc@0UHZ zJ`=a0x#y?9pVI#fe^2S+SUld8T`aE|>>=4;GDJY!h=1Fcek&gw@BW_vi(j1qGcOV1 zMUNp#;xgGa#tjNi7(R6kl;zT?G;O}ojWV}H>lrOlQ0KV`E$(38Oct`~x-|_ETZ{9c zfgMDf$w@6M3!3%&U6wIEVIsM>rlq7BJK@wf=^w;w;^$E>%oep3J`1yp9jU!!SDmzP z%oOBn_J0Ut#k|zhzzrrn2+$c83EON}+V+3xRAT*pkFQ2HAc%>pBriu>;A%M>ZPqu|8`7x76{BVL}36y~8D82%GxA(8^MGo7SMX9d7MCR(03P4o9TFqkp#eU~R+RMs-88 z*{x0jW_2N*y)Nb(%(Sll7g2rI`YU+j=)>WWP?~As`+<_>9v5ZvAG3*_*7<^y(7j!s zI-1lm1R*`Lv=MR}z7O2Rbq8clUjH+Wc7GYWn{d#4=5LO|(gG{$lC7?rvkc@*7U{#BE)vlt*Odpgmrz565ey3n52{#<29${++ur!I8(W({S#T<}tQBz{C^)_~0W`3eE`fxz?lH0*u zBlv+_iOzL4=q><8J^`EIa9d=ljDH(DtHijPIoAr_8q*@ai!<2g$>Y==f>q)MN~nc9 zWn4O|XWitaQvl3^^@F&y^DcBeXg%UqeYkk7m0OQ5B!}8e3^Hy6Mv?b&>Uo8AXGCfK zIn>08_})-wR=4MPy80~+t!Xb`WjKakV)n8ATD61zneyS(8gzszru~y@1%LCta9g_% zepnd#D~YaRq}9I^`$CqG`_Q|AFtbdSi(!!+9dkwAqjt07NY)TGTKg!5t>NQU>gllW zo%;~QF`=Vx^R7F~?8C*{62|!FsHJL5jRClZkPWcZ{j6$bUX2dwzch$oqs*^UO-1{O zr@>v?#mvPcFIwYW{6aJ%S%1}TR6&@xvc2V%{Z(m{|t-u#JEir5PUMr9BwL*c1G^jJOF~WfDqW07D=YY)uM;;b5 zn*!AHIXU;F1BFYa;-oO#iQ{pmO2Y>BMulvM2yD|(= za9J`co{Nl~Si>`=VW!ZNU%}7uucapAX!5Ym*=VJGz-d6~=v93KlND=2b)`jlft$VO zck4R2W^eG9DPYf4eYWjiO|kZ2ia8Woh{f+mWgU!4+ie83?(=tdfXrkR%(S9TZtuQ3 zkV<>Zxz)16?3(Bd`+th%XW-MqmwhLcDe54>XJra0p8cZX>(phf(?lgX8MZkOAt8+$rQ~#Pz0AmRF3Wts1Qqd)mf0aYRPIjm<28F8}q=(171);h+ajhAQ_c zAQn0Uv1Lg0$40_QY)zn?H+r<~rRBblAuA+$PYhN=S%O0&@z5gkGw=q~N)1+)~8ZC)E?u#_}COApw12CET5l*eCMMeEPcDEsbYvoF(Rt92I+@8j#|#pa!DWleY4w zk@wrT0wBWe?tIT5@G}^aC`9EB=<)wS{3*NwIW8b#Ie++C$P%12XP$Bi`32G(a8PmA z+-1C{^9+2eUyk*PTE5=FPeQ&q86ZrnKSKQJYau@%4JE{3?~iUmd5$Xtb6HuUC-fIc zTVOx*27uMw*i{aDX0c7WnI%Pd8ho@TMnC@CNk6FA-Yo*18+oMvp~~dsv&KiCkF=K7 z^{OpOpnr(oYCdxCNA=LvDt;8y?g9_15rgyr3 zqHU|<63l46)AXzBC5uy*3mMZ1kKnIi)wCG&H{ZMNSr`|avxLq4FU93iIXZJEqN~$L z7D(c~#`;31w{VPb#jRK~WmjwYwQnmNWAkGOH-Fk3ybiY$+ynloKBBUO{k3feBj8&| z)4W@`f;I=tF^XvDO!ZEKHni4O`g*{)Gv0yC`}UEe5_)lbIos9gMcjUDcacTUfoiG$F0 zVt)e~<1k%!fEQrxO(?*(8Jz_)1?wiaGq+QKtTaRm0V_HIq-e>yab*!#qIqgxgRa-z z8ZJeC(r+8=vs0Qr0#(YTh2egd{u`_(^qv#VxTRZczNW#{wW;d(FE>l%YT!=kkKwJQVS%~;~hAR3r7_4535H4cHlB6 zivTDmDozF}x4up&=V|}yj7ap=%bzhzX`wl9);)>ho)}F)<+;y;z0&)uJ^k2mUe=};4?!PRe$$| zHKU&5WgVs}Yshl+TJCTYZ#c7POU+EpPxLP_n)A~FVpq*CW!-eVCd%XHF~giD982)N z#^nZMtjE21DXf*E`d;2ab@JxJ`$FO`fLcBG!{^tvhE{yCh3n0cOAwi3)Uh zT-X`Q9VQgB5QTdMeq%Q(!My>zkbmZj9nJ!m53r)SkeD9gYegP{y))WwRB zS-ATB-y%_B7aO7;95ALk&J@N!O~HAT+N#1c=M@E7N_(qoIbn)Ny(QcqKYy-%DC^yk zyZc_u!{9r!Z~v$FtpDHa++|OLPXIDfU(I;^@!RzF;IZ{J8bynBtovkad%W1%gicu; zzjMjP>&I<3yQb71FFLk&d1Lazo&Uk~YwOQ-zx`O8nvDGqIl_gEA( ztB)!`McJ~T*~|~pwDL24;D5A9W*da8Q&V|#Dfk9py6~|vrwLu*`eWwhl?9XefQ+v0 za|8b%Vs&?w0y2RAMkPEr8I}FU$y}0{_v`b|?+;&p(VU!^oBdw)cWny6g3Qmuesi?3 zR#6+Nmar0MK~2z*%Z5h^PEtfJiZZf7Tjw{=*~Os*e;Xt94_VqAUVjxaGdX4JgV18g zU(ZHKCejyB{sy> zd*-yi=9KQQdsNtTy|U{`i{saSP*%47vk$9X-1bikCcbIh^5N6dQ@?Q^0U360Xf5)I z^w-J{`T)paq7IID@f+O#>Hm;C zN2wf^v0V#ext4<|AKuiCeSc6il$4?dWN;qXO%~-Z`*HPKP=7&U2_WP3=u6T+*G&Ht zI}%%&$dUBJ8d}ipyI__H1J`)~)IVrO7Y0&NJ;$br?d02y=`&VW>-%(oJ;wB$LmSs! z^F&gYEKfgTF1eYE4=X0y@?L^BQVDswh3z)}&833yaR~5kq?g~{(S0nBT#Iie?v|R@ zdb%D$E|HtmbAK9x9g+}9efWu$|IU?7BNAg|?X`>DxxE+5@41g~OWeOaxqqSD2N3df z_d}_}P6Yn#yR%wWPU04uF7Ar%mtbq}B>~aB0WelVRYZXAPm5XK52C)Td2Bg*3vtGo~XGbE?9h)qQfF1^U^1 z`=zPagHH1hz-;#|OEY!WAQ%krwQ%MNC1N-Tot!W-=z4RTVwTFJb^duXZL3?*NAOmc zBJ(0{&d2t%mt%>hO()Ldc6|b5%=$$wff-BY1OfmVGippo7@JH%R0G36L4BEZ9Sz9P z;C~woP(aUN%NVSsD!wUn41Kx0uD$4dR(L3Yal zZ{9vWF?r2P+q-Y=hkriK8);1?ng$EY zU*EbubH%3IFE24XO*?RdUe6eP^ z*lf3ob$WoCJ~u4VrSsjelHNmy&3}6A##0xvBb`Q;x5=~HR(7ev_pZ^tX?}DT9p}2h zc)76)s_(GY>mGm}<{rSHn++Jxrx{Jci_W z{KHVsVmxR?_T=NX09HV$znH2CC6!r)7G&Pkvr*gc8K33~ilF;umx)sD?=1<^z`B1f z!BRo%Cf9p`F-6*QVYBsfN^R##qYtrusER0aHE(?85eSx2_3?(|)7!naLxH@CJW`9Y{32DO4{{*OAI`nOdM zOe&7%d&xFiZu0r6UfE>^Yy!7?g~u-)KNAdGehN3xaDp1QY+U(7%qFr^ti6Am5F!u} zyTnZO|M2!6U`;)5zIYlXv?R0uq4(Z<@4YL{f&v!6hA4_Pu`6~!R76Dt0Rcsn-h1!8 z*8m|9N(dndAvfsvxBLCw-Tm+V@7}%7d7hawlQZSK=kvbrXC`OP;2v4TagXF=FUfDy zZH$cu$0w#JeN{{QMf?$@Ei8YN;dB|Xo5ybxxTN8{IFs3Rv2W@o%)$~v{EF6M=ldx? z>L8^^2FFp=6K&jiKFc$tX&M{1O%ZIl-ncN&fF+#It0GE;6F)qq?h&eVxA963zyKsPazUJ_}&3ndgn9};l67M0xUzTD=6N!VJUyyuEcq^V=`vb z52Q4hc|V6~0|K}0CvT_jE|@_OrC(V0#b@eh z+wTIuP-SMWf?Z^CAr<`Z0B`A^__Fx?5zy+m4$FxuRV`>1?zoi6NnzF6Ku|DrS(7oq_mVbQUeNh|A)q-ooM*egZ>kuU-_AOJ z-O!o!cJmkN4_<$<#dD-VSelG3SOi~A#z@90lt6}{JG{~2hv%Mc`aUU|JW( zBH>iw0M21Bkv;${Yb~D$k`muKIeC8M=VBsf@`4f`BY9YIe#^6t1;&smneUhm*}=(4 ztevS(UN#ogH;Y0(t#~x`oLDA^Lb|q#;8~%Pyg0!(oAZAicSltaI{43BEyzi()Wzo` zJ4=Vylc=-c8_VfnJ40uQ5ia!VDX=+vA=miYLm{$p1Ofl7b`(Vlu>etrn!vBa=V9M~9vedtJ;dqlaq5176#4medIO$=jxv&Z!cn-r$!UQY zqVkYCdHH`?U@Sf3qJ$v5d0~%5p4o+ItsP}B`$UyfBS*etza8*H?Z$ zx-iE*$*xK5UN___C(n)+kWNRlj|(*caP&#UZJ2+ul!45&Ogi^B_)GqHoPYvBg97xY zi?Iev2IEf7U1dr<9#p*ka4mA80Q(uVyRpu=!Ez52I9oMpuw}D5&+k7MFuSw?20bK2 zFNiAN5WYQgtix@y2gV_;L-m+Q-g+eZR?=YMIB5-r0>^D8ZlrKGAPVWSW9oyRibz2= z?9G4q&s;&sg4MfVU2Gn~N^w*`XoYXbS>!O=VVw8snmA3>2Du1MTQ_5rtbHO$Kt4g# zwG>!4rr4&?qH2n7TjOz@5P3-rN@yn$6bXF5l1sfqmEWFW>;nZ+zU|zeIfZoEzKWeh z`4i&6Nm^Ig^G3{|M}-C!%U5~;tUMgFLtuZ9Xc-Q>7_jqtu$fV!<%mU0z2msS5-PwC zD8xC@dl^}L@9bl^G)EF(v8t0?Z;4>G2+dDI7dTQ>&hjIWg>uabL7F_AfxrXe>7v?- zNn%w?06?_3B5iN=*(hrvA+P_%#AQwfZII&{S4J5(y;0!Ns@4t;G(2Up@tyxH3`2i- zJs7|o#S1XlMBCu@GdQ{z=~%DA#uV@x;?3qH?%OPOQELZ2ZHC_zAuWe3*t1BiNe&dR z2XS+a0${IXP2iD0t^tR!DoU#CWm##sCP?BpuA)85O@o^K5WT3i}ctK7&OC| zil*^b0Hik#u07>DAkIk|8=4f{C)t0pd40u{Bhql5f1P@HqlqO!IF++#{m%N&qBH-&zDRdim&Fih%d*h(ArskN*HgyqdldjBddSqJjX}L zmqkEG0Wm@LZMrVlfx*R{gIK19@t+YO5JCkC+4c`N&>gw+1k=IJE88GWG2JBu<=s|& zQ84|jU=gPTPs28U-J8uQZY1$3X%Wl8@?&$0VT_Q(HZ5$^>GX1uV!-tk@@_EEj{@Tm z0uIezp$@FzX>mv+@HP>!et~~>5PxlspC-sF&G}|GgDa91%ZWrJFTdI`Mx2}H+fmXg z;TZ&kaeQH%-*yA7&os6@)ZB>>a_w-&Q_5Gv6u ztBca)UEpid%{9*j@U{cbC?}ASPqIby?GkadFiG}Y(oOt0#2a}A{(OHMyV6cW65Z+X zI6I&>FKW|si%#fjU2nfAc1~!Gc7JxZ&1qYf>aw*?{RvmyKu@)7R^yfgu24DGsNe4wA3&nI19yg4|t76Ke#71~){@xvx=9OJOu!4QY=f|UKNW5Vo$ zOq_%##0zh*ZZM;XND#g|#lP$YXqbqs%kuI4+LUo2UWCxHC|a_rI*shq>24gIB3-bkKK zKlTUw2bRCj*m26h7_?^mx1CAE>?+U7&L)8<#`&7Wx;B5h6So=4sqyC)j8Jj|mlYsvTn`Z-Qqw278MV8ge4q0bkV3x1Rgc8( zoSuYjt*%&YiNk(z9Hx8q$ZXX?jOpRf_GKxY26q-TgK%u<)RF}kk`S~c0hwp1UqygZ zfxMuvEbjf}O}LOKn=2_*fWXEIWs_pi-mTf`Qi)F)nXnwR`9@SvkR+_cM_H-m zSL8U25-<@KzQBgR!ip_S`%QOk%0gd1g_^I4G9r8cCL3By*qTILl%Q zKaRh-7DHrfYXd6HgGQ|(YFoTG5r#Zbdn=!zQLchhnnn`+=||f)hfRRCWt|@r7R=tk z@}+-QJ~ZSeGm>y!YPkSRMvPI-PWi*{LfL<2mZX6bqDzYrZI8a~?f@`3BQh*LmB5#2 z!VGkM4FIEfb~^%q+5cv5hM`7ej3(&bS1zN-KnKeum@?3BBd!nsnF~qi{nvRBVc0*< ziG8yC6Sw`-Zh;jC+N}Sa*`mx|`bja+*Xw@)m`O(lI=&2m;fu@O9J>R+@V@=I@~59A z$^Y@}7~!v2H}UVes(pXrhP>b9@c_)Vcq^HwPXL%B9VjdSb857*M`WxR2B^zwZ>ns6 zomN?_Xb%21{DwlRY-otjTV8vp`Wg~AE12q7ja%IQR;L$iL^1ztBz@7a?*p1d}w^Sx*6?Q6rX zMKI7};kAET-*@gZ=cYBnC7KKuDlMcC}6rm+8Pw)VezTngF?Uxo=d z9}SH-Nz<268wwnxk@wxz3#{*$=P^8?`9Rn+OZGcn{AK0MUkYU3LE3|`{HjE~ehDV} z1lIQMB!8OcuXUjh)4u$*Q)7Q;BL4O7HD3R+vTNnVUf3FQZ}Lw%>AUjBh*yZj`o|jg z;a_P@m)`Q!Ta{#IHsu~2n}%KQ%t{E`GLx>JgRZDU2n4>3d}_H8O>BISn{9}1lv7qq zWm}gLVSLN5dNPaQ10%{|mAYC#>Nsj{is-IZPx>gXia1i@1)=p0JnMe}+5n-IWbrYV zJWv4eNwb80zDd8}sJi%qP+y%^=Fti47U>qeU4|lZbly|=kct7#7C}IyV9%=2Ol-Lh zgSI7chvF!r1f76U2WOEXRf3#rAQR&r*}UPQ$G_rbjQ%-Evo%>;PAGj6wxJ#BPor)r2TVsXAvbm2j`Rjxa!*HJ6{VZ zni&AhT%lSLdpspY@MFN;OV9Tt{3Q1D?^UbXxqIQE)c-%|TzP-|zvnprwTtBQdvBi~ z|Gm>HIk70)@fEY?7o5M?GyLw4K7zkI+Z?@Bk)QTDIlsJ*?}v6r9M*rXV6?mHc~|}# ztHLXRgt{j)u39#t*}R?dn-WZxr5~)3DPd*Gr+(OPoKN*Q1Fdg;UOAG}{Cpu=#vbEG zKKa(hz-Q?k16_Y^*m%73(s7gK>&`c=&XxvS-rR4^{d*7Bi-7{a*HS{6rO*4#Mf@G# zwEchLNY?{Q9b*5z((>2=GY{iaqI)}^p5(dshF76kZn2C3sD8)(UQOua{I<;xgzXirZY8W=vd5HNcPdkpY}Y6)Ch zkm~XQXakbRv$=0?ohSZUaFUD^X`6-aq%UO&sY8FX`L6>(OIInE5G8AOM~8V2jzz9~ z5}E|*Qi^A6c3U>X$H0i1#k0*COPRofB(BxNWv{A)1i)QuGhWb}J(e4s(;h94+E%9e z29~Nc=U7-epnh%jZJJ$R9D4O&yLd+y9z6GR@!;Uo!ISL^gb$ZXr2r{7-yi>kPvznk$I8*f^Faydm~YJYl4YEetc_ajM+ zj#IB#^7(!&{v2fL!))q_@{~62ywP;ZztvU*M8oq}d_O5(ShBNbi$EMzt;novoc3st>%x_0fA)syVYl8;1)UW6vO|f-t5FyAPa~8qFjrM1#{(M7TbAN=lPtL`J_^)9 zQ>#Q~G_EO9!e7y1|7KgK`4~xsF9c#jBkv zgn15rhau_t~e=L0ZL(+0B5ALCljys3IM$$TO|9)J2S&$N6Sse`}&-}`_5Ix<}) zrXe1DuNuP=n{uD_5`aNx4&T>#viIw)_b&==m+(K$e6*K>q}ZhcFgz*Ax#W*Vuf!j| zEWyM~#)ws^R+WB?tpI%Dd+$Fd)BNR$eXdh$VcBkdEM9p^IrGb)@;Ah{*Mlc0F>{*L z4%4T*v}VJp70Ya+(qs!_17UxCtY=w=LFYP06>NJeX(s)7@-^h1;OfTxSwHYJfBA+S zQeJX>dWUiY5JPye!M)wxm&%$fT+{cwOJZJ$XM2)389ZVIkn8rwz7#LTN)f`=?@WIk zzp(DL)}wuRuD&f0co5o3SOZXYB*x;|o^g+`9a-Op0>FN)Q~K`m=1PCFt;RzA+3@_y z{A6V0N)T3>GhNS>Xa7pF;y1Vi&l*ht;x7l_&;Tc>`G_lWc=NjOR|sDc*Y0xI z8zQSE(IU^Ip6M`e^~ir6YIudj5C<6_GPaa0f*<1kDC;A0K`r?}1L~q`nTDBItzwxR zO3&V>)|A^^(7jNuM77WTh-tJ7-<8KlA%>4MnSAbKn5lZe1=AAe_}@5oKf$G0 z#a_%|{JPbR8wU&{`%ket@AFRZ^l();=W>B9SkukKkT*hNf4hI@jJ}lPrJ!!>p@1vS z9hTP*@>}ij<^`?n%MMQjR$9v2uxhaxkD9@SLX=e88q6=NpGV*UpLK;? zCyfMzeo#79j>(wP4zpc^?(DX)9-);$+*TC<(SY8;;u*Kq`-@TCIrMikzd96V%lf-U zLMGUzt~MI|ys>}a%F|SNyqIrMH1Aju6dGP!^49md1o?CKl)UwfRBU;W2EJm>kJ znDZqv9)K~uQ}v?x_Vs6Osh*#*U+HBye*AQM=1FFH+^c{7YDT5)Ti{oZyYV@WKR15n zCJeP--=IESD_I{L{qZFsyRm1eq^FMhbei5O%N+ddAI>EWPt6JT^0cDN)@Y1bq@wWU zMI{KI*&@4_iHb(6(R;o3n{$ZEX3z8@4rf{FAprK;N0gmTS*Y7hD=K=z_p=-2o!C6? z8ZfS}CUbw5>6a-7UxyqvVmUByMcY0+ggq!FnD1a^2&c!rtE0!G^cd(5hmLr{L(#!Y zUelg$nU*r*^eH_BhsR#rLDzjP9EFc5+J80R^Tn8_TBo^ObGs$csY$SDwTZQp;jfmX zE8B~IQ$H(nMB7GmY>Q-YUXmf~CyL^xa=1e6)R%uGG`Qb_(z%HU0iiL#ZJLCTg1{1- z!dfV&uI0S)q4g8wtPDkop}0=+o(g9B2G5wg$n!(AlFCiL${x(+LmLp`C1eoh6<1|b z;arqf`UPQD=_#N-YwPw26`UjuI^nb_;IpjBR;m9*i*0v^v7@JFG{{fXpes8|Xv>uF zJurXJ@_Ofa4RvbO%L5z%HX1UCQ^|5RF|$+x$ds91v73|Y2-uOorQ>XNPq|qkT07nw zqGZkU&cGsQ$3j?qT3n6aTb|87!$`zZSF}?;+Q4zM&qCwy6B%>vljcbCOr=Hl+iEe} zTvGFH#*-L-@C>$t>I=I!?cVXR!gO{)~gHKx)z8}s=%O!pJR9u&Q z>+Z(K=qvz+<#k%`)T8o8*1va+FUn^5n#}9)2kEa$UzHbFCj&4SlBmp{sJI zaR2b>>t@xVa>H7MVO00_XR(69yx@_cv77DL<<~n=HNyi1ONPbzKqzNMf5d?5%A?I* zs@6)V5=8dS+6+UUP{Q}nvcr-a)gXU&z+gmU#{!@|ZJ-j=u04m6^5$lGM<+*K<&}N) z?%^Kj(__aXPXD@L>QjD{-)C=Z>J-&|R6W!_TJc7ruWTq1y&E1EJQRXGw`Z}2oy3{m z+09?-s)v`f;a-k$MC#3Je*JEJ`*QsD(&Y!=Sk#7j2Zvpt9((0_*>^C^HROMW{fM8X zb-cHi^Vk8l!xYy>FHJe5x#8t5T|5luC+)Ruj*;ZocCc#@e5_<=)~24QGcE2a1d^{4 z`XS#cX$kx;?qHdq9S8mbi9_bex$w)=YXkr?XJqrKyYNRy4~Z&@;(8PkCetDc8TNoz zqX1i}oYxm|b0pYBzCPqrsO^8Y@#Nb{GiolQkNqbQyAeG;-VP?n6HXFe0D)ur^(|O1 z4uwqyq;3#KL^D{&f_N`)a4d)nhLt>>wuT(rlEP)Rv##~7Ew#Y$I#ivp+69l5iiN7F zl1MWWX66i2ag$)kX!{t+hcC+x% zmE87%)wAoVrNRqKD@lVViMDeWE1bG^+DOe-Gml%2PRC)}sz&-b+c~Fg+SosHHYu#w zbW?`{C*;0S(yNNr2F3o2SkOv_zf>#i#KwOerc$G$GHzObyuf|gY0 z7TyNbt1~UDi;m^{@75Hgx5?))@@t!ozLowY|3qYZ7aIgSz@-Y1ifBw2>a_Ff*0PIlq) zf2!XVBzgY*K4gDH#j$HaH$(N@oFbCL-uc`<#&gp);`+hN;~#8n&L@Y39K08SJ-!@L z9QJzumB5@+EC$rKJd zuH%Pd$`qS__J#D>Rmt=oZU0ba^m8M%FvGSX@CTTH@4bfs)r{Brm%S~+7EGo1eY}$9 z((Kb5^zCyQCgW5&U)5Ukc+iip3K2IIj%o!O+Nr;C%{*T2}*i<`+cZmFM=?MmwtNw4GnW$u6B;gkP}+Ys-?Fd2~JWA==D8NO-f3)ROY z)~1Ft$tcYb^-*iqGyhZbW&bj-V25+l<>g$HT&nzjKIZ4$|L$zyzjydP*qb3NzLWdT zJ>KyZ^^;=k>71UrolM)Do8QIW?=YoQl%i8R*P7nV9Y6NPr;3>XH{rdER=jGU8%pJIi}rY zU!?A7@8@2n*P|AwGpwm0C9k_4AY>%AK8V+?3Y8K*v z*>m8O#T6B;=Hz(UHq~!x8Q5#+HOYSj9BlT8Q7&)_I-Go@BvRnA@}<8^FX-BtoBvhG z|NBQJvjzPt!9h5UdW%VK8F4{gF}MVkKFQR(l8P_KvMQ2H9{u;9$baXUe)##Va8gly z{nQ8C-Cb@}ndD_NSlG>g|7oQD+avDeF@x;$4D=KG%Oc)V#)1c-S$yB%`GbGS&AM%z z$!AOWE62WUzKOe^`{4i1ohv=biz#F>zsQuhS5K2CKm5S<6D~D0HJh#vu0NRBny)4R zsT5!oJJ*sOYpRkL4`}ro*9R0A7`d&w@o1Ny2HA+*h^F12eX)3Ygs)0%!FwQnq^RX+ z0;S#vtCKeM<45_qinK3D4%O8VzPTz}h$@b}kZuY*ob`y4wq>G;-BHh@pvU2am+TKb1YgfReyrbK^DnNP)RLzKj~ z_T>c(56-}b@Fg{+lR4;*_tQsmGRmq8u}thbel!1V7lU5llm6eM_vf>Nf1!c(fx`QD zxuBxfoXEHbUm!mKUz*nISHmjbEv$By;7@_00dm~Eq$3;$`S5DNMg_+87Ms@64(#Sp zP7lu3`qcUme}65o#@B!A^8ahxi(D_e`s3Q(*{^8Bz_qaYlj9zdH&vNzJkRZ_CREA9 zchtI^H69fv6JY2e0$e-7U%)-e>4%&|*b4eGdLjA(SqcnAP02tdn$UZBHP1*dQH>0v z#|I}JM|A7-Z@K<(f9EOZbjZTaI@@Aq|55$ZMh`rf%=BHWPrQE)(f7)7PV_Q8<`Agu zsb=r(zIN9A6qggj)J%)03vgK#=-}Zr*%i>CZUXyOLnh`5xjwFqxA%^w=ocLN{}|!_ zpC1yxM^&*8&OVHNax5w3V^#&N)~;SNPxoVH>F8qd0=aRg`_{y-^+T(>6V4NN7~woY z;K2nXG0i|+ID~(EbxCyctKwsc&qT>x3F;jvKVSy>0{(MDjV8Do%>fru-kctnpEF&r z>=9c@0po|%2WPvx`%1>FNjZ~NL+^&3_g`(h)Bb#pve-KJtNC;F=@HKPdu8YF#so?g zcj1*L^b&C{rG}>yF#f9k>$1;!MpDPZh+8*Mk>Sc?ahi7_PeqOKA zZ168TK6s+Wt{`}Xyt-Ln)A(e(Vn|~kyC%99Iifwz)A^?DcFFN#(CEoIwkghHzKQmQ z`l6sVqfy{=(T2sGKu?Fzu0ZYb;ceBOsg2L5!@B(1a7fAgxW22xd0lqLn+k#I3KFhj zw%#m9L^Xd3mECpO^jw`Qj>PzB+8j^>8}$YZ?Kk#gJ!2SBVrS{9Ymw?}v#-Is=;Al8 zr>X^dwEf=?;E#-2ry8cZo_DkJjZ`m`s|(>UJttJ9iIUHhC=gxOUy`72SHSk6G(i>1 z-r#KZBjO)-y6df{jp^pRt@PB1(<2rmrEM2U;_H94bx!@_GyYu)*?l#*xz)b1*2z|_ z(t}M0r)7pF=S(KtTU(a2drysC2Ab>$Z6rZO1-&<~q0BWGBQCu~ zBncE627HyzhyivxedUe zZdqlGy+%KN{OoG#b{R{OQ6eZ2pVd&9-niD0oG;an=yqxLC~fc60)8K_TDn4tomYRN zzQ&(gGFmES?@=>=d9ShymKmk0qm5m8(pa8YxwxdM^%)0yJ8B+PJ!U#!UEzasEcTqT zj?&9E&e4S(*|k3JC>yEgw`*N!bI*Izp~x%By+()4|MA85`_5RKY6lznc#bM%I%Egi z7%wXrNga_1x75~_5q4D=(i$*(pf-Q1euYmI6>d^*jAh-})Ub`y{LUdF9Vsiq6R~T{ z_P`)kwQqNVHwKZ;9>N+-xU%+To{#mRbSXP@Lt;K+$(ii8sfY7mEhDmYm@W^keW}eL z@&RuTbqty=AeIcqC8weWG)7CNk1W*9-=FOqh?z{7In=m+(MXgC`nrX|r7VBBfg^YU zTa2yS;^WXJ;X6W6NJr5eIWMgfQUM|=MtQnN#a2bmn~&SED4OUzu(EKBH2h)v+N9bW zd;EvWe%YG=8Yf8yv|ZNq516)kqut%TpSTp6b$C2ADbcTW(KaYjx@(-L%wbStSgEBf z)yos7LNM~tHk9U3%2zd)=aPR4lKQHaudsuZw7@GKmwwN@wq8$N8X^)YvZg&M@m>3( zbGa%31th?lMoA0Lnh;Xgvx=BLe&g+48 z>P6}}qqu#u7WLe&(luVfJ{@-Ewu&w{4Ad2_Sc38mTxKHt)%(+hw|;*dNGf|?{^o4f$qa+o@U)mNrLT%ljq^sUmcM7#hc!P=SuKS% zUoB5+imsa&jUM{ZHqsS4-GyU}(*`3au&ig-KjE!t&>cRqEv{~@PP!9`+8hIrSOn!o zgt#`5Y<40Xuuf5XVJ_rLVR4pkD~6Cm@^;xR%c>Y&Yg;;{AZ~yPgQ>i6>O$g zK@@ao!{adc2Ci$E*i`4Z;ZH&s+{;H|(EGggvGY_dW=}DsJcocFGX}QBL zs4TCUV=v4=-#+j$oPpMGpT#O(V4!1+7-$!(J)7sr;zVbl*I4eS{IP+Rs_DF;vm(=b z=WMHcVStFqIR;w!nnKDYx9>Oha&U-**uD7Y#9es?y8D0TuZIhE40ML~J42K3JDo>y6W>A54p#W+mv)K%^ z0OprH(+b13#2Dz$C;$eu#6XXj+qN$3?a0Ojz!>r{&}Uhalk_IFlx&dv3;Q%YN>8Z7 zcysm$=lg$;@VX(p9H`ZPg@ORgV{(syR(8z>f_H8C%|2<)jF?=iZNI{zo8}_2c4o(2 zXgKI6qj^#}1_hk}Nf|9YQyC?@zt!ZqkDLHtcGz!^XVABC!DV~4 za-jl%ad|r2_|L4w;LhVW0L*ZW`0sUW;rJ-M!;XKpplC&ee{mSkO~f^0Txj;c=Wli> zd)LS9`;!8g?q}AbSjj*?m;qoeyjF7VfByGYnB$J_|BN3olFTZEX)ar>L|gA$e|@Dp z>RLVWzvd6a4s^=bQOjC0vrQlVsXr#i=s)FgjX(aLGOJZw_Wk{yMPw9v9)nK&PH#XS<4Z>CO3T&1MF1uk9dSuj)*8q^Gv)Y9=yHR6QiGh z@8{#+|01+!vFH6;c~87hs{~*^y(@mow2Xa0$S2yGTpH&QCpo8Ee)h@dp=~Em-DiIl z`nSDoKU<&r((|A5*dy#=zC7GlO#!bsVbM)YZExpz{`OznD*d(>awXo6``>%9n7VVH z(Djehucx3Q<`@h5o*RHU+fgfiZt(l>uSW~DaJ>?KI5#p0672`JAGO0XTkwziKSw0Z zvMlK1U$}-}W(i}Um&fdYB~5=?Ri1xRkNoI6*&qJgU5(WTU@AHe%l*aywCa*C^;U~5qV2egT44H{%xU4hHc_V& zTgqDNc?FyqXm>Zbhl;nzFQ&#n+4~L4+Qh;@Uodb2^#)q*oJeJ2Kh09fN!fqvdXbl6 zbCSt5)LzY1@_S#TKN(?qY;Y^Jpu2^#VmASOlkt~~)wYP<>6^fggr31y&5oWC!>Fbn_vo>9##0CRNA`CN>7 zN2r0CDp1PJd*9dm88I{^nQ5ONF)oXSBicH%rJk@XI221&!FGd zidnl>DZhAQsrC2MZUwslOuz<{@e6PqV4y#kn+YA#YveS}0btzYKUMgjK#SfYGkrqG zAGz!|+xyo2A*O_h=qa5gkw3Z8It(<2y^e{i>c}aG1ONl|tqcKR_I;=-vT@&Qkw=!6 zc3R`5ClvnTui3o)uAYBSy9EE7U+A4a#`I(yp}$f0KznC^fo8of8O%UmJ{NDamuKaY zBl+iA0Y(Rtouu{7HRLn#Q3G_{UvB+JbDs(spW2HD(&Knd*MC3NjlD3RiBzq{3$UtByWM3~+s29wZxQe%X0i)jxxeQz+Y4XJ-s1;C7;Qm&OU#|VEl>SQJ=6o#1|QW=2h zc(9#UGt8qS{fJ(@*8{$|mc)I;YoG)6&-XkE=FrEz+;zsG7rLo8?)aE8(02j`hxi@= zFe-DS!;7~b@2t`G`k@}cbuH1?!uub(B9J!B`z;-Sxd^@aYnS!L@Apr5IxqWf`o=MR zpLe3|$i~kK{=I)(%4`Y}!?e0x{h0^NHMiQ;#FM_4Ro^)yA8|N>>heb}Lv|yRdvRKl zNx@!xX!T#wscF6*_?M&~?tOib=?Q=gwB^C)Ojc6k^8;S8umQwC%Nbi##E9 z9yc-xz19;I)LKd^lt zdh&&raN{p8&?3cb#g%C{TlQK;>xl#~&?z+@OvDYSUq8y^J{!S~yf*jEm^?{Qg`UM^ zIi6uAv-g!cmkxMFhjm(v-V|DdDKgMKXPq#ob{Xh?wo^;hOkGAHzsbJi&j3}kF>6xV zYsss9(BOa4Ria!T?h&&`i5m$_>-79NXM3NMB_{y${(jfJ8+TeiuZZ^9so|`+~0gxEIwvWk3YV`)D)T3>^py7kN7AYwD>G^Wj#RfXQ`e*XvNSN zOAOlcKr#ma^GI};*`HT$9&Ii|_ZZ+I%61e_Rq|7-Pq##T`0aa@#OCXG-cx47sl5rO zuu?>srw3jGFt!=hU0?Pm9vv$w`8`A9lta)!jRG)dn7oG`bdoElVWgo>p^hp;8vxeX zH8Fo}?qvZ6S`7Z8PksM=_ysl7p)=|XH2G2$??=v?`um>4UfKU z`jh6UrMoJ~xB8`mwj(yi=7IwU0IXtiQjUMzzj{l)yJg-hOHA=~X62#OYx5V0v>30e zs<7$Qs*k<336OmVy{O8Dbs()VJr~Er-JNQ#xeq5BjE#DH&a|9i-O(K9E1$TLZ|!kL z_C{r%4Q}pSvXVl8!$*fH-~{q8%G=m<26X?7L#VYaXgG5u2d68{yz7L8Ws_rJABTUX z)5ENah5g_9COE1X)0z60pjeqAdQTF7@#OE`QD}kaoRb!FXfbA?DNkKzZ8~rgeM#Aa zGrZWRQYwg+eD|@`p+)}_qJ>Po^V(m=)P=O6-1eS@lOsbUiVoi}PLRxG4{Y56mtWHI zi(hLU;=T!yXJh(}&-MqF&Xv5pkbi$F*k(7M$q6op-`_Z5rP^2BPxJV8G)dvEF#}yl z|M|n&VGeY+=%f0CEdyQ89>Ubx>`M~!b)`(Eyl@kdgrnattUuMiz_LKv zZtbaykXn|mgSuA8bvMz<*jl zhdio)Z3Q-NOi=7iS@Ffo4-|i2aq=fU0Nh|<`qk!>%4fF%3$~I~Cw_4pQ?ye$_B8cJ z?)R`KomI&aR&A&D#;z}f`)-L2WfxMZ8p-epVp_Q zRFsXC^F7cO4;iI;#5o+By?u?fvb(p+CV3VNS;^DrQ~~0byrv87p3!x zDDX^F^wN5w#}V>sGunScm^mH3gCvD-g|QE~ zPhyhT0x6dxm86Fdiw50+T!ot<2}j^UpCF*}(}&!nPBiLHMcbcQd`?fd&|cP%A{gCO z>7i+@bRm2cd3KUzO2nSe&C9%meHhVVg+ufw9M*b;Oni5cRc(JdO&wG^p|kNj3sgxq zfW$9drELm2d>!byup*kpa~kDgeU)9Cg^%;GNIm!pG*g|hJ;Z0C^H6NpP~W->b%u4_ z7TWYSFv)rcRs%YF4yCSv;f5t1;_nGaJGkyDg+c|&6s#1+eEaZu4mKcqs3F6vS zN`CMuNANam7ha99oxGP}SAPjNvhCkrhC2%w+@d?Wt^o(X$tKkfKHVmCKyEKwLKtyR z{KR*JZOQa*?(7Ow&Wl&V76f;t7w=cOuylbohtXI@E&=pTdvH0R>Jc`DJHJOcRVF`= z0FwVUd-H##aqD}^h34KdOZ8NBxuwfw{n_BpMT;QhvUH2)VL2_OCx8>1CY=WP#%$J> z&Spm;Nze$eFihUu9mU0cPc8>_cQ=+#P56{3Q2*Ob?7WyjzDW;%@Aud>Nq4$nXQLEd ziYw$tN)6vc)#{mv?WT`uk#PAWeU zaTxJvHD$@4%SiqJZE0oH%TpUCn89_BasS|ubY$nenpfxr)B6IfkP~`x@?rcOrh2-c zQ72I-`CZu}0dbB6=zY#EdL3VhbAeRkhQbQZEH{zGN}aE45-f*h6 z%(j2zCC#eUH+5+w-|mI)%?fBIo5kkJ5e^ByMzZEeQNg37)s21x2kZ_{tPpmGoT*Wy zfgBWe+Gg1zqLxYbCJ#v+;&E5k-uuuwB9+usjs5ZF<3q6%adUPurEWo z&X?d%A!m6HiGr2G#Lan;lRhkQqG4Mm0vCS_EF^cP)|-MsrBVx8`3lEt;|3gf09$FW zYao%q^np=wvRVYU==LM*kp)gh`X-_~Ie!J5s4fRSJx6G`yYx&do%hppe}4t75P=n` z)_tX}(-SpNCE5((TZHZmPhDZuQMom|jh_y_9Dgyfz|h{p5bLP>*aB7#O)V~U3-o{S z+5>XvN83Z-y`)RkkAWzsP*;e+dHT!cc&-t*K=mKH^NPJ5y2#n3K*PCH`;~5Sent!k z+%>j4xVO_Vga3dyPzdVa?A0R^s3gfQv%IRK6mp*xI{R2@-7;?UQolNcjq(Lrzgjfm zgrlw>fDN$5m3J?8j8&I?Tp?{m&$NG(UtQhZiNd~L)vW%xc%L(a@O{V}J4Ie>YakBu z4lIg}3@nSgqop}Tw6!Z;qo6Bg9xEgDRl<%tiL zL8G!f6jnn2!S(|k11%9twp>uwu<;0NBan0OB4i(z_wFy2x1jIKlejo=1lWIhr(v6u zaijMGZmf4@>7!SND|a8%qjF_(C5`M5-5yUjVf8zfn1fDiMo?$}-R@^(v0s z9!i!DF@ij^0?=aqPtyUzby|O3TCX-_U^;6tlfuh0jCOIm9YM-1&a(>~%}ule%f=(m zw-c5Numr>te46dl&lC5DqZgSPV6#SIum=)Fjwt=t0Gv0p5cC{=8H5nQ4LXC&2wnlOm znsO`h9p)82R3KD+oo3h1-1D#i3%+`e7Ssyhsi=$vZp)*a|aopaQtp=ay@ z3g^TecreO>yq3VjAVKaU!VYVF+y~c+X$JNzrbi*~vF!`~#BP7iaG`{)XqvZP7D>8u z4p&dn+s=aIu9eL9La%XwHjgq&S7+PqZb}0uL7amozdrtwU!9O8kUH~Z zy`Nw^x!b3)DoQY$UL~teyqp;q@*C}_J;vgQ{aVKj@|9MahRnW(y6v(oT%UMATVvS| z=bt$`sK0R(;y-^mJemp5f=(^+tPmvk31YS_w&@^)t%~u8HZ5{L*L?|gP=D*Sxlz_o z^07*8f*w7zuc2XQl${Mc>DCx9tUn=(AHuh_Jnvt}b4`5!U2HGuDOwR7!Qr;nihyoY zrQMCQ`4B($i%<`^6zTy#67gvazrdkpCqdI%ReH~h0S$kvJP{t`5Z6}G5ZcKbS&%;C z+h<(Qz9m*D*tSwlZ`hHXjaSyd6wA<&`RzINEUk2jrv6%Fmg6t5vobrMi zukIegwsn7=>9p^CI1e0yjc@fxw5KlSk|47Pu)iRww`4GNHf0sfI|$1|ILnsNtLHlS zyhWpsByE4?VRk3MVwrH~QCAhYNZCc?94f{<*(%e}%OgvxMgZ%O8+uj6N?h0YoSmW- z2Te%;%_#W}58Xhy?5T*+Tqq33e3~!{7<_h>OrB`SG{zWK_KV-2)s0GPSD}w9M zc~RDZu9j1 z;hL2%JXRde8}DWU`?!hucf-JNd#y&x5iO?O}?MR(kmbh@#n4qyS4Hnl3Y9{D zIJuL5xcjqhtOvH(N9YYr>zZ=G2rqm$*_bVi11g|I5+NCb+F>D_SGjFeI3YDFyAn;X z*N_NJF%hkuaG@0^5z9|vms#(EV@ZXAW+n`oFD7^0opftw(kXSSYp^7U9^HbC%FiMG zez$hnZUfV0JTkx;L`g4FuXX0UFmtXcv|crTZns`+!x7tAR8z&alrqp)6xkv?)Sq*{ zu&92fXMONz!Eky0^oc3Y@m###WXOce%&(b*h0u+c>*H&-#8<%QY?y88Rvk2!he2EB zTaq{{ye0$Z>*euM?Uy^OQRFpa@>Gi;m&NzhO4R16o|9vtW1X~-RE^G@151mC>1+JR?fr0JVLZnTKsos& z!a!V$a}YLf+HH7He_q^I$cWvHrx2B9AS4^YSuJ;6K$&-lx(xkbWGl%@;)5?K=^+Yn zYs<6XrgdII3O5qEbYeLN z#b%rF{e<^R`GcV=AsYZ%EHtU-Ti?mK^r>Fbw+$DL+x#bqJd3G|T*xX>BwI91o|wh+ zQKF6YC?ia*PsIZc+maWQ(-aVrp{)XkcoI0S$wjMqh+Ks7vT5xc=DIF_A`kkuIEU&` zNT7YCsgh3)Ld41|t*$w$0Y_%Dd*%BZUpoybAl1kw?QE zCtm#Pq@rPDa}^0fncx~Q8`*{5Yx_}H-8(T_s)Lw^(VqG@=oIMao9pAJp|8O~qsD>b z?%TEk<2+JC9_1dx1dDxW><{rgmR1f6)?cT?Qj5HEZs zd58aj>19#cpcTknxU#51uN}Z@y@mKAoT5loZO3jTOabn4Ur~5UAByLgt&U6jU({{N z3cyX})`1{_M7>&kR(3@3Qed7~1ZyT-oY0P&`+o1PnXH_D3hjQ(dBP{qIq8!AAYBaO zBI2DihMa@XMvkF{a0+D!N*{8 zB(r%yh>dc8+P+MZr`$v?gXf4FL=?aa@N2Lf;Axp-{#SI}c*UNl+bs)M0w~oizPnQN zi|h~AC*oF*N8n!!1(Q|F*8M@hLn{LPi0P+rK&t`kT~g;`STT5*3dWp*CBUgTA+d;N z1Drr~QC=ahFkl@VgJDAYE$IRq06k>eVDWKXz{x#-z6CYXm*D=g|6w=-A&{BAUwszRk%Tq$ zX_ixtJXjsS7Q7@(&BJ?|q54{TYC-=VkiC+v(sDcop686J?5a~hDdN!erpf=l3 z(}?}}3%2#vBKRah*$SZx&>ZJ9ONWYUdP;6^N0>^C2h2T)hkzmJ3H1v1AR^1c8pBL~ z6lxW=+cvT}L)#!vw{%MW;blNUuBW1tLXqM>&=b@WqirNby9&M$xJS3rx&(4U7CUws z_yWAkc*(f{HVjKt3N0u~EO@K^4EZq(54{qh@o*q6AYYLkq+_tP%o$;EgoU0@r+_V| z@soS_SI7q6B9?bh)zn5S-1Q&vxO=aEyBS?g`{4VFVMtmGo(<=Lr1~^RJwa;>9GayW zF-k4V2Y%}RY`OvVvX?4_QpjKf_im&6TL8EV`r3M%o6}vPJs>Hckm+_RIvtbxjBHnY z)z{%~BRA-$^4|jmoS9yKfM=pE!%P}AER+-D3o)ye$z(~`->9u(n>GuiMSit^NDwbW z9(leszJ+K2bGCr$+iX+GLQjjH0L+>T$jXHZDsdqSx+8%2&?7piI zdfmNJwo79|N}anj$(rX%fc+SMtQMTD@w2zs8Imu_6!LPQeR5oiy>12q-@*3>6)1Lo6Ss7o|_$YYq6{D7!| zN}UMj$;s1|8%_}z%>UqT0dRyTW;#-VjOFYl8yshBaic72V_>TD7j>jNP#Ox3AqRjr zjaQ9C$!Kb}lB4<^phK*G(gV47gx7R0)L>PkwZ|~S8muiaGL%v3A2dm7kgHVZiAh0` zbsNoS2-`7Nn~P~6hr^!1uS0HmG*kP43gli$Du(M(#tQbzp%i1Y$ua_u_S}0qgNo#n zM?D?bEBInhp-%;+1@HmVLHm{Ef&bfn+XlezBD(=cNwYBl20DCyt_f)Lf_?{gqI(Se zfI%xj(M-soD3CVObq!p-RlCVuVB7<2z%@Dhbm^*K=pE2$#eC-r^?LOw7z|RSNE;=A zHsNB`XWGB^h8i-_&tV|MW%G;SZ5pn9z?kaHvD@Vb)g**Y?ZD@f~pdQdA?p8Sm?gGMWvDP1*BR06JP9f!GI^fnJ zRhIsqwojKQ*=zKGE?3+zR4ATm1O}__JnSO)rg;WfKbcp5xu!9P2yofF*c1+|M6LvH zcRg?-fqIM#SRnrydIa^tpnzPlAF<;IZLoG!H+dccZBsi01{8E7^(3Yp-)?7FXFG4W zY9Q}GTLBjsC2THgg1{uNgS5e>pe5Kn%ydwO{Tsx}yzKozYUC#p`0i@UD%w^`CGxdw zulxxB04)c99|Jz|fKv9Di&P(MI?@ib&gBQ-fO6s4NFYSZ&JT^(_KjYK)w+tYaxW&N z5WgGzz=AP&0i-?~SV2HAC<**!@ApS1Kbg_49yve=YMjhpt|fX$34_yRHSHwa~_94{>e7s zD8QAXA3JU!0uWw+&t8$p0eKNfh-pN;rw)53>K;flyfj{QULL3nyM$il!J(}n`_RR{ zmkHN@$uW!FSAmGjhp+sDut+1Oyz#2xA0N&VrC-~sC4(Z5~)(+pSX5$z3zjXO#NN^mfr*~ zg)xzH0ikM=kcEA$`!co{nWH^uQajR=2PDsgcR)L#6x1Ezm*MkDF8>0f)z++xfL21J z`n8fPfXAapWuaibYUd>VY5;dE_2}!OMc;oA1=4O&j=_8;&S+*>mzy3t^v<}LHUbWR zwiP-|c+TvxKEx0CbbunXr#*i5iVXi2Zp1$)?C}mo$Y5J3+mHq1Dvw%Dzv)j=FNn=N zpnG6h;wyrV%3$Ni&{FtkZCei?@(S76BUcpZZ<@I#7$k-Nt1v;|p?6Bvqo-guhCQ3s zyDm=ln3u_6P0_MpGz53xvNFJP0^Q_)T;#Yg9_A#3Ls3@^GFZxFHr8s=iI0K7S`sk{ zdm5kROoW{zlD(%R>6i_~KfrI$77&*8H>yKbOR>A;V2jNE%AYfDp**_BdVsic zdZzLkOo`1E()IUUb{s8wv8i_A6KFl1Zpj1|a_xcgw;(D{i#{@+qcYm)8GuH8;K+kngT^A1%Ucez|Fp zf9B`PdB@iNi36~<+gCRDiZz_gBp5mXv=Sd&?tKb&Q?!Z5Pz=wzGJn->j zf`2-W;8*yz&06inZ&?fcJ>uBtGahtxir9D5ee|9Qkgtw>w@>O*+c)yo|2K%F6Zjq$ z)YD6xD&Aw3sDWu*{_eiN#WHg_C#&PS=sG#J`Pz3(*cE&re2%WGRrYZ%Ka`Xmcc8YR zW#w!clmB^3$A~Z2uZ91Adic&tu`Q`hu9!`00UR8-<`0N3x1M;}4y7{IObhrvMk0M4|ark|rau;MfSu6fIvzwA#n-iyL@TP*I8 zLKA8G6}+dk&`X1Acmg5NLmOQ%NEW6DK0cBe@&{pbTxw3fYCdub-?RM)e`?ZiuUn?0P z4y#Wl(CcX=J2~5J30O{PsccaMU@ev;`mi8mGNrB@Cc4BnF=LE5o!g)(jQ@=w?;ez; z$3FCu30`B*rh4*!)-<>Lynq_6+mzUd{o5o)-crN{5;-&aP+pXI|-=?mIe7AY+BG5JpoG>o)s!x@6*P=L`Aj-A$j0x{iYY8KYq0>oGd(g6$p!PTEXA8M|cs zwtGFNVxYUd(C=2n&bh3K-D(~!srjMDH*!gTFHi0LyO+JiU$lblJ9z5Fa?@hGw|ox} z4$iIqhc_3sLX`0#x8nk%Ke)T)_mTUP4hIz7=o~?R`d~NNV2}d#+Xl)2C*Xn4bZ+&~ z)VVv%V-g9XCa6!Mt%#ddfLkZW`vGx8_3x%i?ycaAlvnK?#0ly%{c7>)2%6_FZOelv zn2U6SB)j`F)Q#VwI!n5N;IN8lLe);wX7EDKPQh}@#o1%86Ln*Iy`Z1IUS{fj-s^fe zvjcX2d-{j>{Oh8a zx+f9$dd8a&&4ZzBII`eNeJ0`Cg7c%6rmGWwAvmfnxjz8>X8I#*q#F|Xs}yd%My&{r z*CM^GA>rP6gmTx_gp!~_F`<7(^s8m6q(exLU>iQPbF+bhFU-(*IpO|OM!{s|k|~LT zvtw#zs{Wowm&wZ92KkJ?{PFNm0t?)m;4Y{Hvv5GtY`TC-dffj(LLpBl=>_|v| z#O+&(+u;jFe^xjHjw63FW18;`ya>zmp8j@U+esQ8@WFS)cGBWy^5c7mE8TTd(d5p^ zuGT$`8PHkmEBNr9U2ZG$lw+Fo4#vyAba>`Keex6g#xFd~Qc^HL(sp-L%buEoXfjp3 zP=BJGFaX(uhAZ6cVfRDrSNXKP?MB)6BD17E>bVq}=jFj6UYq}~mV^BN zFk_KRt$n)hvlF8JFkr0Vun*yXVA>S_aBrO&GwG8Ab}HuNj10eSaxHc`W4=#*=p7mW z8bob^uZTnVT*03wEcSS>J3}5!$fEUvx^4C5J%oq&ud0NAm9hsQMfe%+a=^Wa1n0cY z32G4ysjK_euh7wB4YamdxNZivw@XniJmMjImp$I)cfLpR@(0nM3pN>le{A~2#Xvji zH;E9e9g%lB9?4XpJ9-+&ZUO$BGQTO$JZ%lsF6+re&kR0etQugTGv;1%OlD)({8$+7 zmf|;b4rP5b6)DF32wxMu3X^34*d3l8es=bM@DG|iZwSy9L3A}saFIFji$30$4QxzR zJ^Xfvyc4wp*gd6Pv4=T-1gdI90;ejL=*%*o#8% z+4p|}TlNLwlyjKj-VL_X-D?T=Ob=)|cwZeAvJcE*9cR!3m|gpST%lp$fE?6nfC85r z8fw_430ry^bqM#5eiMTXtR|wv_c$^Mt4-BWMVJt`7-`qQtt-e5Lx!D0Tj&~KUqQ9= zuQm_(f@yVP4S)?iH169o!_$aQ_~idEC~{}8+a6UPV*K61yZ;IFfR1WgI)+CTqAF0^ z5&4!(bIJg(gy5}XDc z(0oMf0ZI(muY-nD>jE+BUE_cZ6WDoxO7tAkccG%;D6fA&wT6RUp<&ZC6NC>_9?}1W z^aoE3o^QDpasW6;vQnu*(1?2GgdSQ8SWy zMZ4Yb1LTA{t?^>pZ@L=M7GbI67<0d+y7!|D3DmZ~9OPL(kjq&3hNB2ez(*NS6oL0q zC&^CIme?M9KfzxS_gbo;4af&Rr$Tc4!Z7vdWF*jkmg?jqA=4M*B?u%l935dFfXu*t zM}R!JfDNj>?(d`zMhMl8tn6Q>c}bnrSmV~?Z z{innJFGHEuss(1w)=1K1eLFeVb?H*ftlvY&lu}^`VYt<)m`SvsGB+* zA;|xKHCT#SCjv_sg>b!ohW2^K`yCl!qXl$^GL){N^w0z7859o9VtF*S))7lTi%4^9 zq$bcX^fR_|UwcUV5TB$wP4hU-%nQb~%xU`BUrqhl<5FoKbFN=05XgPleNZv>rKa7e zUF0aR1z4ABn+F#w_9$coQ_J@1^ zi^LJGX5zZ@#3Y{B3{BBo9S9O4FGWiU_H*2!#F5kJ@71yJiAA-d&% z+sHq~;ml98d#LV#J(33j{~EJEU(|i0tB9N2pozs4t69YF)mOt8p|{I^6I?b+;iVD= z^@O478&4k*e9$jTct?m;xd?7kx$Kc=8x1eUlx_)V%Ty5lLd zd^32!eSiu>vRuFVIQo7!nWk(+zZ05&7$3+XniakyqcK#;|{{m4{t}sUOI!$+N;UR=D8&?MT!QR>5dK6qX(EvaV9$DQK{KF!fb-@6aBe`neO>=OO8nFm z{HCt^;I)yzAi4lQVs_4aK-=869Qq*O45PvW9*FULBcNH|`yYo)cb7oq&^s6(>}=3Q z7uhk(ID!5N*9jb-%o0POj-eLl3D1RN$_cFMAD=zmr(YelmIA>-jr~7=6;$D+csZIb zO?UdJ!&D*eg>8&4$3pH{xC2HLMtv5s&RD3p0{uzDb|gbQg+|kVaGYbEEnk1bkVvhE zE#Y>{-(jY+4^X+#2YQp{KD`QG+PDojw&Ebl%RV7!QNX8-h4`rVkp`ypSkEibL5Acv z1h0YHjMC{4^J`DZv^(&B2Y^=Rktyn%P2=!LoP@%=f|B#$61K{>*qImc#o~j>bu_hmg-y z1N|#RftJnKZb%u3M!#)yi^09;ST$^^;eEaxm{Fp%uP z&egsJT;bnU{*LN1o3RV&pYaPEE5|l;WZPnbeueK6jZu99|B*g6pCcYM%$v|zUy%V` zebi5&8ny&{?fY3o2;-$ALrWx;lj?!dG_v`aVE6EG#%qp^A3|nRXLXg1{sp~?2-ji8 zdJO;CGO4$q8a~p0%+X(zWse(8Re%IcBm<&s9GinSTcd|Ut@Byl>}%q&7(M4UDe$VH%W@nU=KBpq%59kM;4JVzfg-nY`QGx0-~KiO~X zhct^RqiW#zIem;TF|1V%chRuL|9iJMlmJgg&TtJPzN`0JesnHZQ1~e(D*3okCmS=j zn7W`XcByoK>i|Qt9dQGE2HB$?(^VoDj5dA30q+t{i;JzTHll2)HBr|spO2{?@*Y2n zSTEyh^D!sD%3%+26>2K#uqxX&!4$Ykm9MRNW{2Sq(mR^aSql3H-UB`dnt}M}vN$(- z|AN@8UJ!YKeHo^~zmUzqT)C-4eqi*-0LRiZY_rFDnhh=d-v>n9m-J`I`<;b=SKQye zm|g3C!Nu04;7Coz$Q;LRFwK)aJ+*gR|4n8kqlidW7C@4x><+x^i09Ar`^uVT8OQsO z7JB~V>&+NeezTFOUugzq58_euNw{9P47P>VraKhJWOxo0Sw13yQI}yq!ZD;>3=#gY z{-wE?Q;hvGQKPxw`!8g!Jt=IC@@J?HVIJOpYYQaa2>X@h1Ky*{u;&uf902}^d?o!l zSp=wL{3?ymE^tu$8%dr14aV;VFViD~4`-7mUi)4Bd+QqT3A!)rrn1Kh>qm+GaaH^@ z9bdCwl?tNTT1@ZYL&CLO{X0MtRl{&B!~Bc z<{7r)kp!jn23_NEdVnmr;t?9Q7`2r@3$mVc_v1|b&WOe0mJxJ+8t}6DIWWhszzrU% z^Lv+c4t~e-7itr3Bl-a`pBNl*j(8P+J3dwR11%zAr760l!T6nN>S=9ec)IN3S|9_zs{QLh-pZ{}N|J>_& zclUZPu+FMogPk+S6Ky*Of7M@TZ;ph6gv>?boB~y-Mak_n?6hUue##T9IvFrEe#@Gb8_H)Np0Rn= z^O$^$cG*AM|DnZlJVR~#ZMfLLY+n-VGH~;31A5QvSzJH<*CxT6qlWl@#arVmOIGFw69Nit~nZm%{D=6^SgzDWdf4{x6b>r0~r*CwsZ^*75zjxot z6M7Zgyn3R(RvqUcPMEJ9cog~hyg(&v`G7JJ+@2kW;UVnl#-9OyKiQUAuanCWpNOk` zPBH87+p(oT{JJn#dLgK2cgV)v?KKlJYR(J(hJLhqzT?YR zYqygkZI91RseKrK+)FI_`r^%}2Yh)pqlG_X_>YPH23i}H9Ik_33w#i4YNRi9#lf`3 zsogb5`oh2M?|~I_SGttokhSZAHkvmDHO!f_DSuwbTIKwtK>5t))P1Y|Ok=qY`;;tO zIQujn9fX^Hhexg@Xa>{OOuBQAcdjr^IoNj<%LR;m1c;%33M|hxx{5}o&iP`my5U;p z9p2L_A_P66|NO0?AILs29MPICEz^taNBchZ83upsjUB$-J_FnYPpciNQ?w)q3C2Ei z7BRMYVl>$|#bXz_*WzOcHBi~v696<$?4XU11FJa*iebfl_a z7$a3W4jnOWfX`45jjz8LHt?be*hQ zQyohjQ~k#b3P~Ig{lvY3LXSTQ_Gd3+D(Tlowd5UtgbWH;)u5Rz2dxJzP)pZjBteVc3!`nk~9 z1X1vm(GrbtJv5~;ti$Kfl%BA+&|OoGFG8@&+aQFO>wW=u@JO^5*c$m9T{@A^$kNw; zT3<3x2J9i6B+eK9)!N2vh8^LX+;q&xi526y&RW+cPyzWOVwogTGiy9dHM`gNZP}L~ z;D#CQ59ay``%}hz*1o>(v-7ONBzKfp#MY^V#u#&$5*a7nmsqp(~y@WZ92PPI_p6O}yuRe<@9jX^& zZ(xgJaznZHI&ll&g%xJw@!p!2+lPc+s0sh4q8Gz~#9REIQD+h4o~a{07!lHkBSrcz z>K<3bh{&`}(>Dk-N;>!7dH(%>2{c}8>B!-WD9gS?)D&nA;t_f;yVbkfMgymV0;1<3 zmVMzvZlq43p3;qZcf?L7Kj9l3J3X#)8WAYG5&tIU)4Wpu`Ig=49#5XnUR!~N6~+xN zM)azFV9yFlcB_aR3FV%{1UX=qXsanEXja@0Y%%vXB*HH!GEh2Ke3OcQbgcHWX?qNt zJZ@sPml?+5V;}%205(dxM^F16NKW)`H8`OS&=u(ZVAiz`}Z6w_C`Y=8TS7 zZ7O>g4FWsYOz6NZcs|mTx5U=xpNv~cv+bAfD-a``E9oh*5-|6 z6~SMT&nu-)JLIs>G&@TT*GjWD}t`*5OB+31bNnsvt(gD0nrz57u5pm4D4;&1#Sxd6LG5PfWsd-=AOzlggMVfzD=odevPz-nG=%ijabfQO7ZcA;~Z2G!bO z*@xKNIluQ6c_zSr_AR*|Y?&T@3RounM=zHDY}Yatk~pAc=;y$3`v zj6L(Io$c@L#@+IohFK*Xf%ry-l1}v1Xikudt#{Egu$ydu+nZCw0f;zYhB$TTAJCLW z9`7Rkj0UfLsl1{%1Sv57Xt5A$xQqEm4LssL*Zqle7MglB2KpPMKRy!)|M`hqGy`6)FhK!6>>^ugvi zIF^s}6Qmh`hUF+T{VkMf3kLZ46{)WF>79q+W8O)_pL$W0YSu9zKv5&AHGG3y17@J| zRkmu(ZDcXKbw+yjbHk5?2*}EEAluWs_TRb(E`WqN~m>!XNb% zATprGV1w9p)HLB)a58x|X1VE@na(;Sr|^qZYpDsC56C+E#?e977;we}w|k#@h4Cl% zeAX*ltYNod&zEJoyFfq1b}$%oQGM26fxjSq#LiIvVVGt)ggnFm;GLND;0)B5(hY!m z{Q!x7WEee0rc~krrDwsvQIlLN5t)(aSW?y_&LF1`4dd?Qm#|3zR_YbhX|It<+C4xm zz!f0V&m3)tf8wS%wkq^+g!41t9%?Vn zX8&S6Zp)(W#y$ju(ru`@04e-vm_MV#LWLY)62WH?NN=!@1%v_jQ~CjD_YLa3zVqRLc={Pu4Ay1`foHLQ?*fs^cdDhN)liQ9rtSf#kse{6ZmfeYGzcxe zOd4XV*2e{QuC{jy3P*A%N#F~bA?K*ISHD|rH2r3tAn@RITCq_l6WR6f5u8bWVz>|* zP2^zy15u!-6?=`f;3~j%$WwW`v)7p_WV##36KD_nsCr`3tII$Q<6o@d%IWTZ{XT0Q z>C(A?eo85NF5sjy2rWl#2X}esuy=tPJ09BWbJ4R2{s^%he8?R@nm`x3*2s<;qDWQ2 zOOONHMBP(co#L4a4f&C%!tBy)P%Q?WBGiI!i&CA7?Nc0=Xn53n-Jg)3?O%ufl>h5~ zX4z+;*bjrMOh1iBTLAVD(RKrW7IV|wGYoeAis7g@y`{>#{t$x6xDv6zaamdK$ff;= zxh4MDzQB>M(n5glk63`|wg~F+Jn|^%s`W2>fzihrN#4K`lV?GCu*aAMkQ3H3?sEYy zLMJ+$iA1Nug_as*mh+j=X1WFajFONN(LcFq)*f|_ti!SivKes^yvT8XL4Hqr9;Q=! zs;caxu6rgw?RVL7`vc2YDO9^mx5s>I6FSI5MSuBr8 zE98WJKgB-!ub4sWVNj~`v9i?RiCJp6g<{c3QZ96u@IbX3sze+HZE~|*7c@osqu3^A zswEsvv2T_&f~R_1RQD-=yPzvwKil_%km!xxClF!14*`{oRLcQnBUbCXir8*1$Ks(E zKH~?TL^w!$<D^#vS`z6ZU4oU2Ig|3m!`=p%R?QetolHyOw6W$;D=O!MBc zO64!|HU9+h9>3XBYq$cHU^RGyZu^u2R(0rfgI@Qou{Z446cfbAS=qNY}{3ka`Jp-$PyGENGGQw5s zfBId0JeXT{id_eK_<`|C4Snd`V(cz@e6DUniKIo!JzAzhiI>OtXYN6}5=pR#okW^KgV;^{bsmsfLV=@K9T{4GG z9c5^89%u6`e;5{$ilj!n$(>+n2Cjxq#otAXv}<)g1g*kM`Epwm6>TP+8XR+!AU8;N zga2i(MXzJ*f#C#e&1^IX>+LSoUgx4A<(!4sBlth)tClWbLca_IWKID9S^$9jB*6bI z!sM5Ga%EY6yv%ppa2SV}K%EP#l@<-$>*n?O50`N>1!xT)WF)3CX>0+b1O3?j&{kqE zbn@&?4za5Mpal8DONpJ#0bgcBbo`1LnKO^fdK_EJd~8W*zx{BiaQC%S#kU`~y)A3K z*stZqO8|ya2#KKzZ<@nebvfhyX2Lq>l0|XrSS9X%N`+NMQm96@cdhxdu%+f(RR20r zyyYdPh6W+BaW^RdYBFvZDAsS6TP0<(Gum{=K_rbNAW%VB_9EaWSBW9O)MP7ya0sc? z0*@k6wcDzS7po?!Wi*2b$R?8LGWbJ7jt1iJ$7gVOVVxo8Im{4dWSJ+#nK!=Vi>1y| zXQ(TGs%vSu*5N;vbL)7txPK|cLIArPO^|teWid9G4W!NZc0VAA!lYz8zX|L^V7!&UzEuRANoR;X#V7+vN>g7}ar8_D$S4A~U*cmD zp;;x4N?C#^U$#z?Iu_68@jZsN52J<2dLy)lUg?7f;D(1!`#WxZgp9caUTMjYR1cJY z_2v)b#)^2E6Zz731FVUlq!>^wEt(@IMv zwNqO;S0m^#`{P6A9808yiI!*42}`lE+IlDrW{P4Xwq&X=0!F z(DPA{X}U!9Y;kNbvje13aE1#;Pb*V@^qr68H)n$hIJ3BR#br2a()&c)=@AImL zmKKkuxlQ2jnWKAD0oL=tYV>*f376bAIBqU>r|K`Z}wjqWN@tMQ6_tTb63(LwiVnJZdVj2W@g6 zax4LoK&xH74z!i0suSf4cw)A0ks|@v0S~5B`hA#!iHQzwWt8BJXaK&@gA+gw#xnx! z{9d2WHTCeugN-%qd4riews^g^)}4kL#tX=;EV5rlV0o}tDAR|8$~V=?awXZyLc>*C z9$=}fR@Y>R11txpSgLh@i8eN@k(BAJi@?O?gf-$Jn!16f-}ilA(=pr?GhU}(13phG z_n93MAGnkaCpf_E$RvuDvIKg_7&XD}5;Zh_+}U)xJAHy_4u&ODXnu<#s)GZ(b3AKV z1wKt-(eb7kO+lwoY}s(f@%F~{bM1z9z+i_EqDV3of&oOhhnU@e!#2`#2#uKI@Fq*L zY*?5)@lYHityU(P9@}ra_t>sl@?h=c8ge6Kz_ku`f*Kzzm=-&uB>Fr%29cpD7>^$v z7!hzu;zPzXOSmQ8K?A>rEe9@j08C3Qd60TUF`!zNK2gW}Z75+dVOYe+>vF*{#D^Z$ z{(z|DaDlJPE6>}1%fB;}I~5aG65dXUc9F&n?OR$tHFh+#G@S1&6sYuNz*59=>>(m) zGMuHtvca8>0L@ZSiJ)epM?o_J+&qK~KR~Xh6;l>4Zu*m>5<}RuV1k2mh}epkA>{5D z{X;RBw`3rucWzfkR~;{0chzwZghMw{Z+gbF_EC)JI^bh}_cdUND?=O1H;!jWtWu6N zUjEWx0XxXG>@=Sq&O`P-N-183;Sc~G@xG}+0uBJ5WvLjiYZtX7eU*K0?PT{>2$mX) zU~Fo;S7*Sb5OR>!n?}6{4lvwQrl>9{TUB_uR=iw#NFJ}mt5bFB9Sev$Uu#&RpNL*h zts$1-9Rw18K?JXL-L&pA;+5ye)(w)zUMg2ui=hdm6y_eUB;Qtc4ao;2)+H)(Wo5$c zeKFtt`#3zj^ra@raMOGbz(%R?4oWM%j0yL`d*;&XDL3htII)wy5a6)|-fCW|6{wa< z!o~5Tc-f>v+r-XBz#3o-5MmEjp@r3>>xP$e(*%isifAL#9Ac?;ZinS!(C7-}04~cb zF}x{eeVj2+M81gbKot>s@Y%2|XNc{Ky~K?Y|H|H zSP?USV(dNLUpfrnXNpCVcs1Ex45`Ciq72i{V^eHgMV%;fJb~LWmLV@Oavc?bi}2%k z9-$qx1hE}uWu`>Pr&T4ah&+#rwFa0M+3Ubj@Hn8CS*AnFj}Kk^qHVg?Q8-ersB#2j z)7bdP*!ava4z^y$mCN*(+-ZQvlmB0(jyCmwm~LvAQnV~hooQ7{S z5##~x!Q?SAS#0t}NToSPpRCDO7OJcou@3F(!0e+#ywS{7NUAbzta0S{Xv}c%@Y3;O zDMWk3{K1h6l)-~>>DVGz9HbN{^K=G^1L7(B94cd#D;2pMzYaTqc}adqFT!Qnk7#v& zhC)NK{;@3;A){y+3rHkLtrY&HwC;6_vNwAyQF>FgPg8B+nX{}bEFUaI;B<;}vZwO> z3Ik6BR(kFuF2^PlIW(qcCa2!B5QVlz8?#K84DIT6O^Tt?(CKJH^q{u@a#X>>i$is7 zxt}WD_cwg{wt%}`annYFC{c$#DmL%0_Gl z<~Y$10j7ospx~*)%zV%7^fY1-mWBlowv!K0>Ig4!C9qZlQz{y*A07|{t7>(BR^y}! zfl3?!hV^QPGD%gY+@q4I&a0EmCRZ6C59E(Hk7bjVlMdplk%h=s9GjR!V|!J5k%(+y zt@DUI#|p6loG}nSG}@XdPn&osQE35=V#Gx(n6M6yM%6&~*%QR&qcy@pS-d{nTH^8t z@j(_K+O^)AZ^?0bfN3tB7NF~YG|HW);SNL|stjL8NoAJ!K>W}6*Ln?jrFd1+1cY2d z2|gFDvKZ9?s$tQTtL&c|!pO=4*Yl`b!&VQ(jwmqB#X%RM?6(7V6dg)o|LGmsP zP(@_MB}X6f&Y?Q+I4l^J=sa&5a9Hg!eWz@lEJt%ypKbbJ6+8CW#HRCq*7dfV5=VD- zN7VPzJ=r6dWGgKBHm0o+*aI&_ZO7H&7T~s1vb^>LB}U{&h=VTqC;35`OUdWy#SAOu zIQ)q1h&|aLQ*^2UraV>rkVog--irS4p>}Rhe@3sipFO;MEM1J(e*&TLc^d4=xB;RW7OxW}Pm~Q+bSeAVhw`}<<1Z!k znrPcaSP~%#e;O!oECBxokHN69I7~Y3G%gjJjI0C6of&G9K+6|NTg}BF8a9cxl(GQx z8kzy|z!Wp;e2)Ysdsa~D$Y^{ArW&!rIiO*Svc>uGJb`jBsRRChoz}zeKRBowDUrq6 zi(w+HfL!iT!Y=Xc^e)AvTbs-z=tXRv2iL#cH-<5cssrW%zqslh!+@8_Rzec74BY`v zH0Mi;#Yu_`J;$EnDu672Rh#z-+K05<`U$wIP?v99VGPieXkO~d6}6H?nL}Ay=>n3A?m}YCU_51h%n_tD^R@-h%#A!697{{tiNlkfD90-y>9x7 zm`l+rm(CEQeyKPu-=_}-)D8)Gl6XO0=yEo$5|{{(`9J= z^nGrZwk@}*qDj;y8jg`>$k7tKBv`%Fb{-OpiJ=HsVxIy3$06wOGl5O4^O!VDCOy$J z-aFnek<&xWv;u_beI#Vu! z#C#mQDN+{oWyQ^#$NfQ-Q0J8gv?>;ilK8c%a&?6uulHh0 z_lK}rd(FKD+(4Rw?Cd~jDPo^$`ZW;O=rk1riZBkkf68Ohsezdql6;?Xz;+x}On8aL zAqtRXgqNPl{&n6ox`0?u31$L((}P->8Q=f~ZuH<#^$>h)yDVInDi@5#^!(Nh5I|J% z@@zp7|Fp8#_6e3jsb|$OlPSfheoz}U4YL%5Mhs(Hnc2bIm=)7hVYO@yYQUwlhFHVh z97v~~f1@})x}@)EcWQqDk0;fc{6XP(h-atoc~3CvrjaCS=T`G>${w2@+UgWr`bb~5 zf2|(~R#=_=s60}()SBL7JT*TdfA!Rb#S;qCbRwzg=Qa?f98Sa>sLMm1pz@oP*4;U6(b2o5@|?6 zs|}gZ(J7fYqce2l9&<{s*fnS9#$B_uSDZDc%!ymGVK(lXtuwkqrgpVMCZw8@ghmsL zB%-MJ34(&Y2m*?N@^Re%-aomX_xJps`@VRGp#Fph5m|x+J(0f1xRy=La?v^&?&62< ze@u%ftN!Jur4=2;1F7xMEAg^~=RjQywX3mK{O~7rrur+*sh8JhNw$TJ)}4Z|Dy-bb zx}ovJ(&KJ~?^&rT9JOk7W( zb4_V|KCPJ)zPUPHYvRqTR)r3VS@^bRe_HJ5@CCeF*NDAygLKe?^kNLSR$M2(lhj3K zQ?D?j?3%*nBlr2nql-DC*@MgnY*d~U4Q}z5`)4jpJNy)zSI9~*)b#yP~=6~8hn zLo>);DuqCelD6cYwqOL1pqj8C0Z-8p24ftzec|?0|02oo`e}V`6 zHnxnWA~Yac4`Nwy_2JFw_J|i8OUiZB zt{e~o*!{j(Ey9WAkn8CV7MF(>y?f4fE~B!e%$iY!s0m4eDzDbgUI{IhTW-(ySSMB# z>wP;aKw+N4HLyDxQiTOaA?Qfyk0`f3J7;e^1Xdhd$OF z8~u&J^D6s|*^IY{Z7^^DUhA&f2Rme@p6!lZYPfCh{C-cO1K*rs&J(Z<0~?uSSGqG5uf1QYj@vVW-fQFMyw6yq3M<-qoaQV6{ri{2sk!7 zy!=oTq!qz9Xx!@Z>4G1{e}pLw8ESG9CXyJ9GosB0!TsBC5O2y>a#`iqPPtEgaHg*; zLM(Tcz0!?en(J{WHe?$OEA7i+d%I&|MdKv-Nc;S_e4n%Dj<=vA$#zHsv^(WC#t&Qt zh7Z6^h0Ek4Ma73Z(VfOk2k4c|uDl0%@+>1+gTIvA4FscXxIUGaf9l$kfDEtN+Ytyv zyHS@Dyla=K0A824Mq3!&G~^W6wGKHF)Y6tnr>ax z&B@G7vkY4|$k+)+I-xyrb)duPU%G9zxEjH3Z>OKJ3x;on9>xz_FqK0z6G(VH0hT2= z_WSpy&t0r|c;^0@jx)d!4HmIAVeHgbyjfUQ+wJDgHxZ-Ne~6f3PJaD{Io;xv29*b& z#Dd5OS)ZfGQRDD%J(`=2VhWBW@U&#M$r=ZMusF(s=1TskEfl z1K4KR#rIbG`vbh~Xpj)Jxb222NMnGUQ^ z7DmNyL-24Nl0~%Sx{rPK?%2UHh9aihuM zTr#g3JTy-=NCNN8-5WDc46KNJihXLVAU+zWf53Ig16VD+?%0j9uoIPx*#xyqyvYgO zPV7pf=14N-Ne`nyxH;%_Ppk~Au+~)TSGGrB?SvL8p4LeoAb_bPWP4&0BpT`S>0K;W z#oXKh~xWn2f?5TpJ$k>6!>)oK(2Hw(MSG~PESv6y^(%h9HGnAboikkux2^FONTrRCV zwLQTS=b-vYEJl!X@wkmI;Hg+xQh(IDeI>vRn0$lVY=65;?b5FSYXfUSQ0qhPYZ9CZ zg19-T^LBz*_pk@pTG*g^T7AN8Y($ade@q#TU5ia5)5wf0eYTjc%)VCmNr~#{xBUAj zO-EHZov@KLo~7FovDa)i2F4wW8_{ftH|E{Hvh8)!?AUeuYS~Qhv}z^do!*Z?9H9RE1VNX6i{&`^>3d(iH+`ZzT?q3hhElvF6;*~Cj<@+$8*NUmGw5mD zv4n2z@dA!rY)G`tJ#eCw=`gw&Ul;B1s#g|fRnt|Au=Un$daQ1r>sJP(+pPV8WFdva zkWv9yYs3nZrf4ZW^lqv;e~X(lNExKm zHS<=20YbcM|Kb4xAtcmh^i%l+0O!nj$X2jhS#0_cem02+xIzzOatJLklH^Crh%jb>=%Fe5n(jiP`k4UOh^@=O=`da_)Z$N=m8&n0zrlCb2h1KjMeT9qu;ULj$otj zq1n(o5jh+rXtOoBe`4CrWX^VdKy?s;K~qYSTa#;0R}pP{5xd1ETZefipvFP6RV zq#)Ke0o0^M$ibxQfWS@jbb_qSzMY=Rd&yEC}1m^UocI_1G8C@ED!X(Cz^NihYYiyUUQ=2bJS#F|tY+5qiI z6v8BX{x#$LrP=yLf!n$-+~s+wJNSgF=-Olu)kdz#?jmbY^5h5sn`C6a(o#i(b@5s!A|#S9=@X!~XDr4q6UpCn8XMT$rFrGZHEi zhqpRbe~r#&YtIbj&6lJ2H&^FIoZ;Z*gq~fV)3|{;P^a)Rk@@G3+~Gx!uo$E1oXqLM z8vgH&Df4@>d&n|u5B$nOpZDtAU7hc{AHKi)^71UoVjriyX_!;4Q}-&MH<3atBI`z; zE{9tn;#@1ZR*214Qmt^^Hp8#k7W#}^*LKBFe-fcP(?ajTqGEWTW{th6@>36+vvIxO z*1gi|{v;|*sM{0n-HOP87MMO+M$$8a3|S_JP>#Hb08lD|Gi5le+=WF6(Z#UR*XS0m zF=rLiGJC(LKj1pJiIk;k3G&pIG)r_A7ln^`&k<^f`rL-i2`$oUf@%5D2d~bys zf4Bq~k{JX9ot6y{HAz^SzT7W|U6Sfi78=*t`eZt~p>M+lU>x zpK-${-aYxCI83jmc9KZgZi1TXzzji*VeSse2d+{Kp+V1gXMY$UyFMpb0;ZqO($*B) zU9p}dFUi30G6K1_Qo-?$j@6%>e&^k@e{JQe%&vpx?OTz>D8nz`7XQ98G%acf63%A&H0DfVS2L#bZLf_Z7HtH<6!P=8$gCj@jth2 zT^tA|STGvG0KCqln5}rroUT|CZZbB-KG-H|w=+Q$ws`nH(Y_8)Ceg6m^e)y%N73b8 z-eJo#P3&t0H<-ie-Kc9(RHWvRwoowYPXFx3KQ0f?KTdvp`APT4=Wo z4U#NO4pYq-E$%D(_RJs7R+oKJdW&5{3Z>jlkZ;30D6h_UW5*aCjTOOa5kVMuK=Tc{ zWSiGQeFxk<*t*`rbyaQwcK?j|_1TfgNXfL=O#|3?SZ=~G*qJBi|4ZEW4wm-?S8^0v zcH`K?fP@vBWVvX^!eOPP(Qh_W-Hb+qF4GZm- z;3VzM*Khe2(HhK$4R<0mM0IvETaZsLit;SS>REDhU04+4#wK8$e^5VE3V#I1{E_*A z7nmpU7l6sR$O0QfcqkvmAhNQoY*~ShEKKcT+$!rRzmq$VQXTJz)r9d|8dvvH!-8&= zu2hCwr>|&G@05^HNJ@6pOK#>78pmFWS4j9sHh}I^YT0b!%m|`H;Gw5t1 zTafK1NyvRv4RHXke^0MD?Au^o6X_AW9j1+eOBbG<{O%wB`?dPqAO83a^l|Si)S_i; z79vW!lFKi?RXoW3+f$3@GS1Z>>&R-%Y0PfK@ep=@?M^=$k)}-5;3!E2 z5t3iDHSE8!*9r+G_Bfsoz4*&dwamx8Pm0EC7puY32P0S|fAiw;FUnQi^Tl^~fzyF^ zxW_DoZ3Ud8CrGbWl?XNG)s#Y}X-heW8JsC?PWiYS+gp>rP*XN;*)*Uy|hxfbuoP8mrIvzdX z?>SdBrijtJ-0tbv)&Sjz>&eo@8wZBH&*D&IZ{lc7f99Q?WSY8Mr{h9|0Xl$?V0Bb5 zzxilENe8(#u_T2{Ydq|@{ydNlql9UdS^jiRw0-%inK{9H_D}!$pa1Xg{{`~L3qv8} zZQG523??UQ+4ZHrJNBUD$~zAvC#0WzP*=G~=%HYh@+ld|C3$q3zWhUYX@AM-2 zD3Ux@e-Wc_FhhZ;ixZ-zXqT&YGX5(6;gNx_bY)ZWNyDVU)*Z0JXy{1d#rU;2CrL+A z=6@pi_Jdzs`rkkORPy7w^Y4CoR+R&$48Q@XBN#IEKD_)F-w#9jtK;l>=i%-GD;TqG zO0vxNOdqIHXcPnyfwk;3IF-AdDQX&t)=KS9e`<_5kyWG?`W5czsUHRC^7>LULyVC4 zQ5#n0f{nALwM1S(CnBq?K;xFdF9}xxDkwGL^72>kHkyyL?}|CG9a(L;tlZ{YfWk`+ zA?iH+AU}+U3~y0p&9hyr{oejiE22AXlu=(m=a`BdEPZ|>@8WScSC+Go(ioB2n#?1U ze>@{o|96^?A8!1${PDdP&N<^YAI+y*i)xNrj*Mp2Q>(MO7#JKgIh+=bqr8D=Z*nO4 z5zG;%9t?(BeI3pPXOla)ql69+!i>gZY?=3+6XnE(6Bora~8$cfHwU!&@ZvZRy(Bpdc5KugdLmXrU_;*AZKe>4Ew{=Os z_^n99)@JnL==*)!b-oEZXSQ}~;w^qGG%`MX@2|i4Hvf-_fAkD|_(D4m1VTyGSt#x= z&OH3^vtI-%>4FEMXk}NKl|jmae`WDVVu0$tJ;i&eGqx<~SIVs;i{&evEewQ#S2H+l zY&rmEAoZ9|xNb+}uJmDJ^svRP0mC-qO54tZxFF=+6-8z63osyL@^Au`yQK#JT1#u8 z1&L}*ABn^niJtPbWxvhh5K-g@bc+1UA7e=}BYLM%Er zl&(wDzZp|b$yViiHxXtsJ^!P!IYG|pzkTn{IkfbIs6Aa3y&vs5==5k7)o&k}BMy?A z?|l&D?)8OlLgbjPEKA8B%H)M4;%MxCsA*HWh%x);Mr_VW-pk(%l|N@pH?K&S@fM85 zVrPW9al`qgf(IAAsQJ01KCNgJmMGbobj!vot4TFBsMan_~m;608@eOMtmb=7*N#e|F`HVoARw0P7EA zKnPZYkI*AjKE55*j#ZL7Ghm$a$FN*|u`-hssoZ32G4?F`lE~czRf>^7!Cr@S#M|O^ z-kPQMrM@-s^2g6U*QP$X^t@sg>%VirhIA%ll6n&@*gLGSpg=Nr@n3$rTd^pR=Q)$u zhsGj<-46?G%&CuGe~Zmt8*PU8^iPi~^o&`U_j*D(;SLK{_R;&hKmWFhP*%qf%CDv|pbs8dJX!e=S&?gpdv*2{!?)#0VW* z6yRMfW-(;+t7zJ`a7Tk+ku_-w#C3QRk_3Ga(}t_PcyE174xuF0khvL$&X8J#y|V9L zwoa<2*^Z9gcEIEj&l^@MJ>j+Mi&gWq<--}r6p+fWIB|j8mv`~x!*joV_u4U4?mc`3 z4whM8*v$Qef7{IIV=)l;$(zH@A7zu_HLnk}U7xvbPJVsr&2h_oFMtA`oDhl&d&*_o0%g?*P;~&W@7#NUE{&2%b@Jea$IGLw z^TBNkij*BKV&xB#7swn|brzUBfKVVuW5aPpRBES9fAQz8FOPzQUW3c*F-1wK@@#J* zz&0?#6a}G*45o`yc`2ln`!Pp!0(BePo;(&_uwOPeJ%>Jh5!*2cpeJI7Qc}G{bGm^v3t>b^@Y_gZ#A>a08=6tBaGd5% z1ZZ$zfA^qhRr+8$f-p#RO&(lF|Y-FM^Bt2ob2Ot<(rBfX?P#r+v+_X2_jfwuhl;E zZ@qVWe?3t9+FC??fH=P+($J2DBmfBa*8g1UG9z(?gHvJU$rpm8xAot_#$ z%%xbSEg9EEp+gHs-Aif3X-EK$mUNgpx-5s2i%6{wigy*e=H(xrmk*`?_YZyFXj>*Z zUS+HV&c?K6+{yPIC6xXCc$+X#aibhntji;%O9+vq`rR5Qd$rnabuz75I|}sM7M41^ ze>CU_hKJV28rGQ$e4E;(c3IbMF1I)z>@nh^SUD_`w#bz568K$Z$WuQGcZH`_I9A z-Rc{#%)asr-~FL%ylEb_+Pune=>u%2JWZGt&aq~TbE{AMRy32)LZA zCW@HDc^pblYJ>z(rD$)w1wu(;!o<)8*n>!e%WC}UdBd}^?^6f9)LtDoTLb>O7zriH zuoPT5enYfd>3Xm2%&l?`dkBxge<=wxOi$#BhqtDiD>H<~wR3*UrJ0(=K6g({gp+6X zWyq<6bV~*$)e61lQ~MsqJxSQmz{1cJe%`#y0dMX1$19MWG;B7QEuu&XdO`)Mi^R@= zF|6qdxEg}T$+8qQZM?-*v3U2*)U(jDzq~kW8d@dn4IbV<=_Y@z5>$rNe@H2jM+b9m zasEX_|Dg1&AzzjS<~F7Gz!}kNI~JE_QTq0}A!1NZist>cE(d3|e)CR92s9)}Q8Y>= zqm$g3QbVdD8c-n4nbw5EpsmoZxGT~Xn@#A5iS`GB*MV*vNR%Te&%UhCu|e{!9VWKwn5}B@Q!s z$d*8hUBBMqSy*ea0S?&awXhU1f^()y(~-H0d5!s^l3S-ne=8mwx1^ckz%Iwt@Zz7p z{^xtC4|X0t|A9DeUX-o_o67CoxB{!D*RYKx=gZ0BRq5QtZ-4U92V<8$JJ*5>O@FAr ztuGm`nq$uk%@k9_Fgs?Rm4ec}`X~s&L%L!$u@PW5W`Kn$(!6#O!-rZo?SNrPv;hvL z_GA}uNJmr*e?PH`!Xq)UB;sNYz=9FGwl7SxX8^l;A^v^-;Fm9iQ@WLYk1{-z&|AWURC_h|etBhNgqhD;MSEXY{zwE;`8Re7KUYQb|Dqa|Bs9#+3o zxBIIM>30`Ct<=&4?xOKaFAT3ojF(={j@%xtc+vUNVD>v|+<>QkPnE>TY-L~MJSga7 z+{lr!f28SGk&GRkUE%;hq~EkR0j)`E$)J&)hZGNH$uhZ&o}#vVHiodRoxe10e_b*9 zrzaup=g%%p1Q&x&$%bX4W?Kod9GW9NuZG)kgv076_}$4*E4D7=oIhVq&%2GS-@U$s zH&(nhPh6gYE=C;IHH)hmRDvz*ZR=*Y+$Ra%e*>y;_4wO~jCe583b^B4yTYwLQ0>>o z8?YjJHLD>1ViBSA4}8(_8g5&jgk(=FNt7k2;x(>;$=;dErrS^M4WE5+_`KA%*1U#U zQqIv97!JVK7i~bXGP{m+op~ymzWC$MKREaF$VW%9?^xJXIB|&TqL{vUA%D{_6S9n3 ze;DQ_~lQpH+ja$MG`5czl9nleHGvGzX%4LjSos4wgGI0H_h(qt+9AJp2Zl<7jOt{ z6le>eXr z8+o*m)dWMVQhu-xoO)V2p_$W7T_5@C>D}kgM=)>HbE*w+Uz${d*QT0r>@*UwE;~$@ zr${jk_%P*49+n-<57QWA7=u+b$Q{mZJ!oF*SRHncZV5K|>jP^8i^PoD#yR z58j_VFE~YGTt?B*hn!1Q(Us(Dap*F8nl}BLar~Qh{fEN~FRs6p&KQ@if9~pi8M2QE z%MEiMzf<{M-Fv0SU2JQ%Am>3Izi=>H6uGxZe445G=E=azmT}CK!g70I!qyLVgqg|h z6meF6x*SEr@Tq2IO`bDDOkhJuiTpHnYEw!r+KRl11POf^tPB;38(jcrr*>X7y@I}O zos(~x{Q{pJQSpbpH zc)&sMh+=YIrYcv<(ichi(RYi_bqG7SV)AY*u%`{)k2~S?XzOOge_Cs986E$&=z;xV zd|>U*|M4*LBgu?%^7mSiqv=t$t?c~Sx^tx!A5;)3|NZ?>F8=OsGU{CK0#t`rV>$Qo zOYM7)dw-0-mQNU_R2E=)!e!iEjL_pZ_O67lLq-sIY!$(SGDa5tj-U|*OIM;g4pcD_ z3M7Dpg;Xg)M}Xp_e}L9k<1+YfBWuX2^m;4_j*8w7>-?-8#a@?tV$~6lL4>GaqF}!* z>;WFe2Y2eXuweg&ddCi^Fsh8^tTv(=wHOly5nJl@pv$orL{6l%z$p+420^Q1tFs=# zEgtro!X?=7ZuReIL#lo60XJw04#BRb=#smW9Rw9wpDE0)f6g{#Do6v+D_gCr9nR4p zH)!6{Zb$tx+wC`JUwK|?rtU4#Y|0gbzX7Vo%QL0fNLJ&K)8!A&*iHL<&I&JlwkxRD&bV$ei=}*P5@MX{NFEij|?IE?29E z?_Kl@_Rk_Z)7ohys^u_`>`X#Q-@CsRe{xbmYCh1|vfq4ey!_^yw=|=F&a~+bwZ=-I zsAMD7e}RcW4}CIeD9w?fV1gX%(HgF{h?gZ!*TBo2SLb!F%f@&MY8zt3u}b4o9k-Z@U^1&YlKDRg1wpP!`s@yq}6J=z&@zIrrr z{c-AljyaPa1IPA-^l&TXSBP~m`nt2#&x^##VK z{-ZDP{y%lfm&?6U!ltWNuUJ@_;%OAb?`*)16onk&ax(0b&Pe`621 z*pjCu+{53k$xfXcof!{nHe|p!jFiD$Xuh#6UqEg^myfP#TK8In6 zVrKKvVnLVi{JSTrKK=0Y$=gZckSTl{2qlt`&9RQ%#%Kj(05Akgte97km+Ck8>3hpP zZdX)}Wo0yE$T0YIl*Qr#Jgs2Ue;R4Af7-fY@~Xm2$TtbKFmc+Q+=twEg|2hoN&Zmv zr23z#9-kK!Gf*uk9!`q-B&P6o&p#i(`eX9IzjnX8{qq0)eb?PT$A=DCYoXcAiKwuo zL)Sme>7WX8NF^@8y2O3ygP(r#-ua3f0tuHvlP5{{d%P{H@&)J;!zNode{P5ObOE*f zt7oa&iKlnREDH`dD-iUC_nk=`{B4{bXC)4#wxl+sJF**yG$awyl1NJJ#217*?Yzyp zJv;Iv+vz;1P%6={wy?u!ExPP5&( zAbor2opznawcQu0i%&rACGt~rX<$~MSX2zf2%=A8l3--r>73p00)J+pT z%c5qR8TBMdsDGD&e`v(%Ndj7H)&gD*R6*5*L$YLXm|j*NtDS;J+mWc05^N_XlBn`C zry739e$=b28p{0P)vKXbcfa>Nxjb>truNGdFsWdslG#->cQgxpI(~maR|4-e~<#^C)6=ZOIUe9B8Pf~ z7Cdwx14oV&7r5I1>BPCRyd}REn1sLM)nwJv#caVb$5CFc z2VLX2JV~2qwuV92rrzDX!JKcHlv$t_%AC}BE5t!p5%e($XxRYwphyHhNG!orB=p6b z;A(g;^eRw`e<&w3WQen_u}Mc&M<17;I7dIJNWpI?XYG@7AOdrw=8bSz7!?RByc)TQqT6i zw|MT~#s6@+hJ(#8V5RADN;Ilo#mx54w3t6POpJc6e=Ypa&HtSG^M?a3w1}5l3k_sM zZl_$y;&MMayZzJO*X7iG`YwZ8S*S0x77VhHML-4!6@-BO62xtIm#b>@?hnur`xM6^ z2+*M27$&Y05_U*ugv+Rnps#Nm4E6*YHtIL%yR6tH2nSgNiS7@^X;4yPGY-ZeaH7Yn z1*04df0>UHQicnoCrZzXP8jjt_1}zr{@1Uxw9$%L^D6$(@igl__NFyUp!vYN z0Bc=dO|T%^p4>+NM z$FO0jooagfmmk52{4OEp48T%N~;O0!A4J`j}!?e zsbaI15~I}|TMbeCRVogZ>?0^TtH zAR48{8XyaVrc5VZj8YL{4AkMpQ05IDft|P^CSN#T+?gRsYeAW|ug|OBV&<&w)6siL zS5d*BaPph)6CVxf?fN2JTrZv0tOr9Cf6zt0$W1?}O{u2`3j;^p+#0qa`wr*Z)2o%= z3coFXBftu$IoHv`y}pngI*`Z-{^d!=SCgG@dq*DMeGOe6b^|-gg9{J?@*9|9d)V(x zU=lc4vJ6?KiNVQ&kq0SN$iBen&Yk`Hk>P#8enHHd)If&i3W^H~Ybgj^ONu=ye*`yg zo}C^yvu!RP1ujL8hDe)|Ro&v%nW1I8yU$PEVz@2)3osN+fn;L3)2wt+Mh`lIm8CbO zFAz|KYoX5dE87Ubfu@nE)K#!fimwtpLzaF{93h8v#PR{nVx^YqkaA&dum~&*>45z zVf++SjxwVGtxlz7(~r~(;OG8t^_Jwxxeh@AtAf-=976EJuC0dIN23)lf4+Q0u{3S; z?NtUP%S@AUQaXLfd}&6t$^k{*hfyB3nQkn!WK2gm{%*fA#=*2?+{(pgEl>|zkiyB8 z94$EYnb3XQ!GTeGVU_#*AlD;avA#KY@}*un)#9LSFqXQFv{$ocjn%STyArmyxdRai z3QRZUnsRRC6cjuyE-f27e`+9iVr8TjGK*@VG-sdZxQ`bUAfw<+gOM|;9nUic?hcR&%*lYE!3RMZTu+X&Yf8h}f2O#6qsPVCdw9?s zFnW5NEp~8~?UehfBex-^L$z+R8@na-R_~6(EZEk}8`=CE{?Xrw9{%KXSwDgYR(b^c zDkvMSjJdpx8(2q$-LZ{9Ac&4bA2LSeTS5n5ZC|Z-kNTRodqCc*5~OZdZ*d$JThQAC zv?An*HxcGUD^AJ4e{u=J;`d$e6HZ>_NSMQ!h>UiuB&rG^Heu@v>)nB(1UsCzaq#F| z&x>z%hIC`sEj*iKWpT4R(0FL+2!e^xo+ZNTkUg+&v^PV*Rvm3F|DxPha;5Zd&)z@# zl-o|Mg-ypCvA}@|yfpXW%gCsC?Bh|)=z*BAS(ac3-Go%6F<3Q6BU2$P8k=mpk&+WR<4NVo==IbUA`dDjvJ)`xt(+pLJ;f-w<3B|f~ek< zAq*|06<&et!P=81R=?Jt9aT&R*El=3;@?27!rSpt1}&$J+MgNB;ZnbWw1&ic`aM{r zGl7)YpR$lbOT;G&(@OAHqE~jRgBlMCBn9<*Y=_uU1HX!}ciYqsn8Rvs^iIb# za5mI~G!uiYnzDa*_r!UecvPTe2I(zSE8d7hrQJ+n#JoO<7qua^j@TLNddnX*g}rA7 zmVXeBPt2)Zi#unb{i%mrz;4dzPoGG(Lgg@8A`LZ6j^@bo#tMyGZ*Fbc0!E8>rZLjG zC}_^w?_9mcD$Rj6W1SMzW;orb_#FP+Zyd7j@ot6-UXN?wLTM; zdn-qmf8*$V&b2(rk!F77iH_4xMPsK>#ldt-N~izJk+Sda>8~5aZ)LLsOOZMDJi@6C zRL2GJQNP-4_KDqL5cEj5*}w$4i5g%E7+iWce@#Vg#+IWIG%btG=qCx&S#%J`in8K2 zVQsrSr)E}eJUczH>{vrN+1AKX`D){)D=baYP$l__JO&N{uf;Z#x>GGFt?3df1J{ik z!IZMHvUS*kx#4 zf6R4&+U0mB*6Xbld-E1IDn%;LI%rSm{=O^5h>nJ5VKjU>5)73ub7pvUgr_pZ4^v~p zL=S?J#6hW&4Di}S3LZs&SYSL_z!fn1$pU&e1(88zVsm;Z6A<>wx$pk^AAk49O9RBG z@`+Asr%U9jbceSYyZl`tAVrQNg+w*ce@Nic*}1I3-Q$7s`&>)WD2I{Pin|qWL5DNV zSq3r#8Qy0EBzF0H$y?0W%~!P}L__cBqZc%z)U25l&(=8VebjghhM%oG@|5Sz@269X zOeem0_sxYroWs2rI2$OGG3v>%=|c-HhIb6h#!>co17_mprgf6-1^EUF*^ZNE-#?D8i4BAWA`RzBz7-cCYf0s# zCbSgJ!~`>}IZ9GpOdRTgH>ZXvu#86Rot=_J@i^^m$-H)6x}vj6*D3>}0mMerDzNF@ zsgH=^C3p_QSln@}qfo+VX0whqa~~YVo_uh|Rl-iG+~BN|_GG)VnG4?*fByR~zdrlz zH;*5UsLc%y$CfCnNeO0gOKd!25ue59)E5@8q`8)?AWKgTdoP#_(|}#zT@1+q4=jR0 zr3KT?8N&2PQcra7kR4#uQAUtxI>4{AF0q${hK8r{k>89{3=2Q}X_z;LU+(iuVO2yO zGl6G2^NSCD^@|^WmGrCgf7OKdABui<{^fZrJ+hMjtVo;vID7civ+HBbN%@=JXIH=f z`h{}_v7y*g1J@G=QbbrK289w~TdDm79%h1kEuV0VdPIAeKnK}NA1h>)7;;dF{TrGo z{{&^ZX0t93@j6|)wKmu7`S#aezaF<}on}8PQkATs(3!d{9li$bf5oyXVdiHg_e%-K zxdjWT2f+^iVxY#2n&%muFB)F8PWe|V-6TIMbQ#)=x8^jLe8gMKX~1*R>aythhU^|R zJ*wL7Sd~uDMyuY|So^n-k=6u$ye48!C`V0TT5(3K1hasz&TKBcSOR9YKn&gvyKYso zZeARjsh#|IeCQzMmUqBef(`-f3R=#F$|9z5iSN^V%KX?g;7< zYls3$KS_(1kX_6G&nB#^eE)<0^I@P;z`esZ5C9j-B3bEkisq}{F1+r1(ff)wTjSIP zu0=hGw~-}KK`gpG80b5gO{yWPa&(LbarTm8GP2}#HF~253rQ?efR4&hXUd4m^t#+p zHa%aN*Hyr!f18QT_<;Emw_=yg$1smM;Ua6;i8JtDTiRWo{-dg$O1p{iD=R^fb@gQ7?ZOK5g zK(@YU_XsUVnRpYX!zeLqXnmNoP1@}CId&?yQC{kHe+4X*B-p97H?H32o(AXg$&~qvK=ZiQc73PxH3OU$DCv^P`$@K&qcynI}2ihC8Cu0yb4{S1f6EG|4q7 zV3HafAD>~r=vWaDQhu{MD(CLQa0SXI%@YWR6=Ykhre;mjDdrq|O$_Qii~9gtP2&{b z68!FTb0H!fBq%VwXb{=s=WNOkp2H^~i~IdynZJCc!rJUE4OhV%uoJ{qYzc~q50k?g zf6cj4W<`2`T(NY);CZ81w5)4g-D{0b>xM8WO}Ls=m3SFyMoQ2^bOT;RYi1b8K=J@W zg_R*{{M3NJ$F_RRofd@)xx0`sj?`eo>5Ex}TvE{u-h(6jJUqRdtU{lTMh}Jq*2!0+ z-%OS-_AWb@hE@!dUp~P+H5lQbC+^OFPny$XNzUXu_ysh5S zJrbOPXAqSc{KC4E85O_1K>rE$n2y{|>C3A>G#XS+3tGKhAdjlzuRhM}$6`$Ob z6in-+i?gq>RNSr-2jzYg@OEu+e9cbUO#Io}hlyB{zU~p?)hK)u~+vbo{yo%juayzy-F#uvfoxc>~TD-%nT_@~Z0Qft+Wz3sn;s8o7kSzh^s|A&~l=X(V8vKXryV0XY?Xu9_GT;h1vOyvCm(8^>pJ!_cYe-up>6Kn}0HI{k}9= zND*aYNjKpm2^FYra)caAugPH)qmNl~VMGwB^Ywdrc6zoMLD_!gA*l@EB_w0g*gk## zHoW7In6n{Ws|&M{Maf3c0kyJi*dw6i7qLAQ(jDIF%B%_UKoN9|3THQL0TirUVt=T$vyw+T0HtuEa($%fG zYj53}9jCE18(Qs{2{W3INJbNkB%r7$C<+RSf`XttbGfhA`2)_=_w)I@&v~6g71FQf zl@*{egybTUBbiTWi0iRAwpe>PC*?>fL5_X^>5BwT+C6=qyI$*I&3{g(UGL_FhQpF* zKXe)=BRF8{6IDPLraJN4bvDd~V9jc>t4 zp|is|^0exx;-Kt=6CIAg-7YhGsc(U6XfrxC1eO-N!ZYkEK496#*GD!<&YqnP8_6pO z>Ejj2EG8kdGzCZ|Wq;n~O3tR!B~`Il$c$LLQh)qhG|cwOc&?#L}tYnOxK zRRrbHI}i~bOEkryJs*_v54U|4^(pT$m2?{~u2qT7rZy`EJMad25 za@ef|av~r0Jb$K!HODtWXHo{TB)PuKTPTgw>@Xa8f^sKd99_WcIp@i9rHrMRX_`!Vk`ZzPIttTZ zgsC((BY*#KRs*KkAy{FWhE{rY4;C5bqE+LfdAVc(v&P=*a|aGtE{2;Gz`*=ad9)&2 z5s*bkQ6uDGmLhkCCQiGVBR~6?N6Li}#GrxTSilsTi|Zrc(>hbs@otBIoo{vTgttn! zJDi4n(N@zo#cPjgj+vXWH+R&W74AmYy4%b+_}r1D`Ob4D{&Vi9+?jJZ z=Z0BSx`y6{!$X;nJ75fQCb+zOcJj{GmCBN-xmQW=j0+`8{Tt%LX26DlrAabGndPh| zPJ5w%%THnju+G*Ebwc91K9fI5CBjCZ#qd_kUr{`1+(?q$pJ72gkL>e-e2fkwdw7LZ+#( z@$%#HpNm-RK1i$GXmRZG9k9)SRpG4NH*VZ|o%q$So-98lPheg+-pSYMc56LNepP4! z)P)l;XlL$yQ2o90Ke}A|^U7CZ;!hT@pT8)lH9!X4R?Fbh=n{C*|K`rq-LaIvVt>AB z_;yr3V)ePDu`Uz`Ux$+?i8EBJHuCdm?FlDPxzoEjd2shcA29pd0x0k_T1}|IH6f)~ z2Caup%7?HS>}o;v<+m5$*(#C%IkF#q2YXeb@xS}!Y~CFEUD2HKHF##^O_O2Lu09sV zDNjAYMVT!4SRiI~BOxK_fqnmW0Dq5^kZC!yXLb1xv)oiU8BecgSLH}D4Ai!iBG{0x zezWN9ua(ZxZ=N(ieewrF#BPyAsvMlqve=NY-ciw+>61$rSX^i zT&v0o>{E8e5Bj1)1PTkr+7LB}cGBJKVZK3-z`x5HHGiI9UjEa6 z<;uSKkDm;k{oC~^{QUSvVAsB{IbwsEgh>XC_fVK${>4?^<+mUH{r4`3UlvzT?_iSv zNm%8_JH<}a5#wa!2)kRl=Fqi%i<$1zcW(E1azcWz5i&-?(&X62lj49RsPekJdUumU z<lhZJAbWjOXSak^mvq(`mNrrzN1H=4xA&sn)lHM36(#o zJ^9I2_3VY>d~xmo`zF1JR0LJVcOyEZRKx0DfAGcs^PfL`u==+i_;G|dju+%Z znvw`C)hV@qR=jm(?SF^3A5kt^X(pP6F_{tu0=uQAaYO6kpl)0TTXGteYn7WeyXT-Y zv>ZPOMOKuEDDXt|re)9#RZ+e1`94L9PXNtC1-qB(gi z=Zp7i`FM1vj~5sV(qc-80xcnSlKPTSR8*P}-C$jR5uWZhjDOh$yA`&X%;-KmXAmfAZhojQ#c-+iTcrk-f?VcV7*Jp?E?WrHML_F3&1t=j1feRj~;JM)~9w zV|irNuz__x41eE3!_r&0g%|H%ekr`lRc8;g_1Wz?IcICn(fFpbExFxr*}D79;rKWA za9#1;tN#^ybokewennT^(m^cuJl%0kiG%d}+?5OYr9b@6`O3f5-1~@AfXB(9N_-#V zlY(kqS!!2YU$`$M_PXt6%PA#oHLW+Vvdt0;VC-IQ-G5ZAm(SB@@ozDvDu>nYhYls( zWZo>?66O?%(_|-gyE(_s1S&b4%4ak(Q7li+SY{vgW-xGA<*Kk5)@`fxYi+yg6Ls7u zd>To`^^nU`CeXT|`k*Cn9m0m`L8z0ao$|Nj@#fJvWu*pV1RSW~I1)waWL?S~$|Z0g z7uLQHDt}G>LGVZa-}gT)YCtzSyEbp>N?w(!wBKHTwy(_qi zr`L4ltPf@jRQXrm7iY=hTC9GP%p}uy%wAJ0KY#h%tJYP6m1;!3`Q^;STkSgA)ft+G z*y3e={qY3CoWMs|kQLZrnjoK7{8{9moPF!K-5qcgfp-AAL5SH?ym5RsUGU zeQJEIUn1G~zPfmQ(&MbL!nZ}U0@}IRi(g-zum0bE5BmEvV%$~2`?qsd@ZY`r$)m6S z>+Hzy#ve@dKf_E>XSC}61>@$7ljRFU!hZ=cDwgeIw`J0@@8(@PcU)MX4nqyQ^$ys9 z)*@XEY>)W?WG}iG;CnUhmXHcAzz+~7Q2ihvz8Uf$9tI_Z$RHA!5FG{eK}TTy&<6+- zj1?3d>AWpIUw{(?j$4jz9tqv`epaCBMB&3)Im?bE{L-kU>}Vve2yaLq&L1co9y zt%+PXEhu+{=ic1U{ExK0iv#B#{(oT%^Z2atmvbmn{k|g1Mi)~b=KrSnvk!Tf?PZ@< zfAH~F_5V=+MO}{ohBE`5hdwKJjcsbR@*Rc)v5UFYv~X=2ul6r?n3RkB`H}UCJ(^eT z#fBKcmJkMsM?2v)hzFQnN>heDy^bo(xSx&9#L`J*Ji&})AbK$hG#4XFV1FaUL5{^} zo;KPR!X}bKbEQ?n33yvkVGOl^;wG>bi`hD}x4`sc2JdQ#k8FB4m9E zHp|6R6_Pm8tegVL`M+FDxJctn6D6^(or#S+4f&hh$G@B^(hY7l>}mF!oaQat+O!#E z57+@$PizF+MJ41w@@qM5xylS-mOfpC;UdO~(ll#wAcacgpeK+_M1OU(!g*(`q{L)+pjLL8VAf5o#Blk<9hSRjpLCDbMBo^&1V;bl3*6-l$Emq_F@6=??oX%$)*ljxG?+T2v zC6R61tMeC!xX5sdFMsP{KAcxpI8!uPe3RdvIgSz`P)UP~2&Xf*j=@jtb0A+&ef#UT zzf}KHvHNAwGrq>ZW^jnSsz4D)gA`!ekTrz5j9Q-k94D_geJII_VM46la<|FT?w}mh zfEZ{!$_A+f^CEbU(mA;g?2&v^@gukf@?=^hy_G7%D^DtR+kbp+kQ+P}@*IkHJGVsU zo^8UBA~qJ#?~2y2R_rku)|Y&nb$q5?;K;cJ_j!EBv{+S0W5aI?-1j1NCb*$}*K0j!U^|KM=+hVTB28 zfD!ab%xAGYpZLc6t#kIy99vy8ud%dwuE%i``E($k@ZP{#SMCg_BDa@nBo(Jn>DDYh zy&1|o)&%Tp*a#bJsih9?5avzHQUE?9|+tmw#@I9M~g62n~J|4W>ygE^iR73{$um{z#2CO)}J-@x^(&e!WmBgXlq806Y(!6{A zb8VN&?i@H`J36*>&LJQ6*yXt!s)=ull1{_{bNnd5or)#iLP#(b#K9Cussd{P8~`ez zA;p~DnSUn5%A%;#^=La31n!0#03#HDQ3C8Ox87)!x(s0_*zE1HVjYTOZQLlL5-vsc z;Y#9X0}sG`#4aj_(n7E2^4^Qk+Ye#d(l>Q;ql<&AuP-I)AkLjNlrK4<-*(IcxSF2F-9y;%Jf( zSBDzMvuNR@Jn$5(om`bJ#xlZVC$eZIAcK7ytg>xBjM`dZah6yCVJT5LNR zmc#@CPT^56KthnwdSp}l-7ptYmo!7h00LiGw9Q$*-eo3lu-60@xux8uI2`w=-NPYF zoIl=;W79t7NX}JXEWGp^{vfp6WZh_Vt73hyK{za~BKSK%m@tIvfZ+GltG{|jeSh<0 zUTX$U_h}7UM)px#(LDbgNP==A>JWDj9SLXk**qoHweF2dbKlCK3AJwx zI}_NHhLl_2N{BH*iq)i;=v0~nH;x>O*^dNAohSVeF1!l@iBz~HM~jgfxB=UnFd4Qi z)x4N^(`%4B2%%m`7<3)pnMlTW!GCx$TYODiRj2{XOdL+dr}r?eY(1OCHB+77#*ok6 zXDl_ktONEk*Fc0C?+8?E;a6%Fx#o7KCuoi%LxBWA`e$dWFF@6Px!uyTAmNt0TZo$#LLgHOM6`#YxdF6@Ny&O-T?;-KvKQh%tzqgrn= zGFDqP(=Vx-YfEl}XuW+$a6AYJ;78~X?%VhG1d_D!1Vzda`2k*;RL|>JH#X*MK5S1@;M86ciuffjWFwsw}ma z^JCGAK zkswDYVKTH5dn-<}$uvs#h3*k=OVo(~;P;~&;h9)n$m2Hd_Bx7>&&6rsW~3xpnpZ5$ z`Of(Z5X$rLY@{%9+oy3zte?+c|EBw^>ofh!!ku#ebyx=$j2=WP5`Q}xch5W)+Dq(b z1f<`^HN#Mdet;3A9N%<3n)}1woR52_nR@5SkV&=Ga`-q}jxM9-ZB4bg& zg*O>DdJl_3lAz=0YWN0fCWS@m#+Jeq2r&u;=f+FILhrp}L$m=5hK?fzaBP$pRU(BL zH3pBWfjEMwBiUiqNgK*QuRi<9Ia7`k)w5^Q?W$rb^E=yecz>Dt7Wu}u;&O}y04M|N zNU9)-l6-0MJV?>Oho62YA}SNyraN$a7&dVG1Qo9HaaS=f&Q1LG>(@`+QzNgt7ep4d zM-28QQmA%j4yX3~rx&m0cBK|mYSXdVg*lEKcVg4Fdud|+*~__!Up&p525bA)+nn-n z7+FU_<@OZa6n_bF4R|HKB1xRs3}%Hmha>B)+k}uGQ3O>5?uFzLpNng0-_@Noz&esi z8O7=2P}Tl`UGI>%cn8J)hc zHQ5u)38Q*>p>kPel5F!_1Yd3N8c2gtQzIPD8Ed{GPep4_9nNdK^u>plg_D_*Fz>*& zJn~%=AdF=dKDZDonWin?fH$ojgPK zk$;;AGxWQKx?*^yIbO2Y`_86zPEWta%o`2NHK|qS5FdKHz7woZekAe&{xAptGohV$ zEOj{Dlhb&1GQENz1(mrPJxzcRiAi8UUB^vF%9F<9vfyH*G1iUjM)yO?Rbct3~5$v1QTzbai)*?$=R zZa9@hrT5W&Nv+93`u!{+E07M*n^LvO4Tv%~YFFlvt#IF-)1Fr3x^`E6C_6ENP}p#C zeUg=+B)U_mv@u$1iV>CvDuKDt)>K1w1I}t0(K(h&t;LQiXQyu*m`1qc%A67_em`*J zIi8G!k&=XRuoEsyk!3N?-peQqv48f&-m4MuN#`!i1~`jDe!$@=wHQ|_%?4La^bVR$ zW~B~f^3KhCFechN51|>+B4jVT999t~9ilv_qapjFxq|V6|Nilqb`qwRFY|4_U6Ruk z=3r)Mg=|xrD#^~U^JXsKM3a{upTGJ3Y_XK3$C9zlXe~(NkvUE7awmD!wtvvPYB2X3 zt~~qWpPoIMn{dwhS2}hl{bty3k}J6-r9GpMLo0+A-Y;x9fA>5iZ;&Qq)MoOTR=nT{ zygZ^VdM914-)%gQo~Xf3;s#C_$GSjmbPDK(@R2pB#pq3!-Kjq^MW{z${m)+R&XAU* zTP9Bz=mEBZ2BQm!Sb{9AC4Wnn^YBdmrGNPD;)fdre8xbE6kiSwvx=G8tgS#55A4A z&eYS~L`H%YU5?Tp@%6V}U?!TUgj&u<*RFZL%7Iz)Es59b_Dn%3vL_i&H_%|oWHbuL zppGzLG)mDduTcaA^Tp=ScV$W;qV!6Ec{9X zetG2?^yyhe+BX+p?5dVE57yllm}SHv^JCy+$>QwAbJb-V)gRSAt$)$@cR&B9pGB?> zbEXp@M=ef>yDTF0%PmE3Et7wg|LaK7pP+xt{O_NB{bP0iN`H+*anN>zi7O>aQ#(ki zBs1C0!g3}2+dM{L%h`eK9(G;Ecrq)g4yQ)|iPOYpn0&u~@%n;tz0wBT1UAa8vRei?2~LD3AjC-J->DR4c$f>=+MB()`W zz-!=EOnssaMSqTS_+^1|zzOohClHKSeWV#)8-i_07c6S$>jzqtx$Qs_aYb4|T6h>W znAl1fB+2RWyy2X7iV^m4cqmi}(!?$WI$U9!=TPPyIchmpdO0?Yv17xrCl9tFdQ2+sYZ(bl0nr zncq%L&EieMHR}5C7G$@{YmbQ$Dij~|ar6Pa4nIjArj})2&HtG58^O!VGap7SDR^cE zk6|WM#(x$2+ngweWWVBwaZq>R8IK2{79P&i=qQ!ym?y#+4Pi|1ZZPNn_ zw`S?j|IahbSF3;PeyW{gu9qFCVuM&tI;5bdcz>hxKfW8eLivDK`lrgfmruJzejKVh zQaRyn%_(Il-+^C}m9b~frl;n)R?(3qPJ@HdB)Me;B+l&uL2~W!_(8F&_Gm0R0qX#Y zkMH{jd_bfXRt|RTV~p-~>YgM-f(<5U5=vl9oIF`XET+n+6@*?e+dF1sn|<3&?zV6P zh<_PRLIAJ_iM$L-7L{C?P=Qi{eXu^lZKdFk$V|M7bp<%^g0 zimQa3AG8z^F8;8XopvwOvRU%3be4IV@+(zWhX3*RKmE_&{@Jg1q;4___v^!VP$&vE z3(IA(9TX0Ym3EIc%a!xS3T85-`dHA$hUAZz~hqyUM24BF-igx0#v^wTp=5PV+;_Q{1R~}xOd7nzd zYcwc*RPq-R4#O_S22a3x`DVFDm!6N5&8&8je+aVN0i7|LZqG0 z=b@9YCu&|(*QyQ&fj%e`B|=q#3EuYY;XQ++Vw1U5d*F&#P>^JN3K_c$ssSn!IAmES zBddzZV3!q8&aYg83q0Arq-D_9KEpVzE16rKX;scCemx00O$?%K{^6vX?ZWSqjs@_x zWLHLjDNkomI+EN;f#e2KAAcT`Sc)%70#X!s2hxa^B#PsP5A6rTkq6kmG%H1%&;}BM zrvaT;V_bOpi-(DSJbZZT>vL-EYKKD?(8ApKt`tWKgI>>#T-duBFZtJ>zH52Y{JgrB zZE%*n=vG*s{PG!I{i`|u%+FqyO#kXFXKloJFCtACAfqycS@)S$41Wn_Fu5U#fs_Y^ z{NQ*$NOw4~Ww6ms)bUJI8?rn84shQ;a}){PK#h@F)9|!TvXn?g-aHbowk@hR>#ftq z1~Y7566^=rBNhJkm{j({JG>c(~B*d$rXVDd!b@8S$z z(vj{^wIkoD^|pfX2;r%|@d8d@Fy6J(ty!LRF7;YS))BkfK{}i~0fQdEdf`R{kX)9< zE4(CJ6m4AzR{iGs|66^bTth0~yfv>}=wBXx{R>5!JocCVuYdZV;$MXqBo@@+K!_b@ zj=KgQN*-fX^B;fk!|&2A7E|tE^!RBs)?2@=I}k+XpuGqsq7A|YXeXMzmi@6)7FVau zWCJV;MUbS6w7x0$@>i1&-aat!jhZcp)3!Uk?z7xIb%Bngmdx9E@;qzdY{`Wyk3YOB zRGo{ki=dUpq<>dob=`cgUb|+nTOAdSPM6HT5xpCrxUk0-=ulEGMNaHMOoLDmeEdT{ z+sfX(8D=1sMn(dmmPR)%aY4yAyDy6P&^8QGsoM# zJ+?b$o2_E6e%HLCaq3P~5gVX~*I~fm*@*5$Z&6#^&O(2if5xNR2b+dg!n>{jfRs|O z?CSi!Tz_6Zuki7OoRZp0H_xbOQsRui(xP3$Xzol`zPP3yF^pKXyFzEHUB5&%pd6P1 zazqQcDvOsplO?69@OV5Mushj@0WT?195sR%Fe#z~i%K@9V$<;CV)7uVH-QjU#=BC0 z3^l&f*Sn2*^ZL=Rzx@1_&%j;1vFMziTGVbSy?!cBJy5xi za}C-7u8UJ`cdr&%0uHeaSOyF*^8?EROWS6PS+S$>hvNrPbqG96fUF=^r4Et}^xCWd zuGS;6-8*>@kAh+l-Ka3C3GzHx9T9}ed@h%GOJp$|>H#gzn6!)#Ls0PBL5;m-ZzwXJ zP=5mLalx!*ZVX6>V57LmFhUG-!qrK|88@>h(|x!ih#4G4=7GYtzy`1*a=Ppg3uo8v zh5Ho;2+99~yvDt5>MBXDYpBTMk! zL*d6CKE1Yc{fCl|$|2blB0zOfQDD)ge;)ttb2WGBw=bT&%$~}7ZkZOoLzyTJPCyN_ zCDqb^jN0rLb|=%5`>;TmtoEq)YQr`RHN~1J!C)|4xEdIU1-#T9iBodY6RCsu5P!^M zGQl1i-$U&gY~7pGE#Qz6?(^uE`OCxGY%dj3PE=D}X%Ip=28HcUFeW&#cx*pR3md{u zBtDEuyn&+e+n23Q&s^BqKD_IiXIDe3;~{+A|Q6*i*STkevKAo!m+qLQ+9jV|&rZeo^#NL~~T-gdN}y;GW^|9b_H3mQkEG0lNdB z5PEC{flaPY786A&gX9`gXE1E1Y>n7hZe0i)tq-fbB75Jqaktnl4@tpA@ymeTJz^!B zwd;dBQXd-(fOzkE=jGiPxQIcZ=qy zR14qy?5k_f>C@qNgBG^Sb66W-g23@$6qAUj-^|}AvX_90AF{iWw9pPXig26ZNXJ71 z-nuP}wsMX>KcXkCNp=CZ{y1>#I@bFq!wrxcjFRk0AIKQW#%9)}Qh$i0&_TEm_W<@h zBJ?(GkY_3WC5TMUJPbn1STB#2PdJ8jh0UE8`ilYmhLWMFnGS9}gWi zhJl1qTvg2HGP~GYUE1Ec8twWt^;N&2-70WFqGY%nN=3`k1RO~5Z!X_1t1i1;Y|j#q z9k`0bL0o@AGqM~b2_j#CA3stS&9*JnnW!d(seH%ok~@p{^nVAlfl;V{2&1;AwWW1Z zVAu&*Wuk@}Cdv~fBu!EPs{}gsj7G&8dsh<3ewHlliAa_&Il(^?$U27c1EpDyJaDHj1XdY)Q9(vvC->r z8&OLR5LE;S0gPb7gxDdB8Qqa+!`7fZLH2z1WZoEe{mWKNolS(jN(myx<)bFiuy)7(7eeC~LsF_msl9u7nwK>DJjAQ{w* zWaImBGL#WU1*E>dBfPtJt$VZV5E8r_Yzb>nb$BWGe|Y>lM1w*lnW=CVFGrT8ruNYz zEEPkV7Jne{-Ntpi4e#vRhAmAj-!O3X%?sgGfxTw8bmiJoi*?9zH&PudfhtoTX8Uqm z@+a9o7QA3AS4|RwwO}#q7Pg^?n-kVQ8DL(^+v?;WXQYdo71bvsgF1th9NKCm>o} z4S#8zz{b|#c_bC7i6*DEywR!{-Mx5`dWe7!tV#=}(wQ zDyFv4tQn1Ym(J7{STmH^+cBzJxK1`g_5{HjP$cN~VPGGBh(ByPX2cs24quOTVo|B< zu_}Fp(D+fC%kHDZIN?tsrq~DoMyLq_N`GUzFI&VXoV&_ZWkXoQ92rl_5wpmcmXO(T zYZ3Wwbn(I5AD$;FLr;oy{*EzWf_uJ6#v62)9Qj9jz7brUVo5eL|fg%yKI-jCPRc2ag&Zf)4IA4mf7D1R+l7%_x9 zpwr1NG8=v0Zx1iV2vK`Pc~tMw1Z^ND+?80Iu3=;Ibe#JIgltaw5LHZuk?%5nnH3oQ z=I0vQ>)$?p|8IXBpPOK-Z!B^3pTC)&n=?putS3b<6se8L<3{)<-fjNP3kjma0t$^n zRidTP8&D~}HLWy>oajmn<9}_5MMzc%wXd>-SFfF7nO0rC;I@r`58M~@MNVDk zg!=a1M;`t4*I#})oc?*fkCW~=HTS;>UoRrJulAx;O2MItN(W$;>RES==a~B$$xmv)#KG& z>XEla`rYYozkmGM2>MUI_^WfGRej4)xAV~NgxrGmAuw1gR!UIOduc77hgRz-%4MLAP{emK8ALFhAVw;3CBU266mTW?vJHZs?`wgImpri~K>7#>%^ z2!z4%1V^f!E#sOPoJ25In5;#jyo&u6r`~%rTmxc21xP=tA2|wZLNYLFoCI?VMMZWe z0;lSGs(+=W|o7Q{qx_N<5ee4+gV z*L%8x-(URVQterDRzq4VNsI=Ao&W|Ei$q3X51snm7k_xZ@WS@Ga#>-s?zL_D=lsuw z?||hgopT<%*tuyxoQ;an1F1u~d+$Nc9}9yOpMU)5Sgfr6KCPrZ$B+v6 zEiclB-`!jLkDvDcVenrbtpBBCV(Qh6CE2#d+Y51E`|xcPLT=gF`fLhmBz`$wfR&a&DOCqPM3?sVv$ULr1r#RbcEcz&K&%ZY61cG5O8-FaP|9 zzkm2AnqOO%n5Ob|vAxOH1p$b{j4JNE^PdVYmz*j4x65}$_e$;wCmAMhhh1v5ZE`nN zJ7q4JdpIDCO~etR#rxA{(q_-z{lF-=8`SA-KcF76{8X?ZdL2>{ZvkJ67lrAdPP`*U zkOHKTA-%g3o1#5=peiyDfFCy!{hVjkl5ZT8{bgb;K&>L;lY%|EX&J$7dQ({_%hP znD+hi6&n{DvjD8(U_sS9G5sv=&sV;Hj_m&V$MRo%#Z^GRSx`B&oQ=MNoJa{w55JC_ zOz|;i@*??@=c)xW0@H^)5$jx};D1wI`(lj9ZevXOLQdCv)o1zF?g5xL1Pq|%8>;@_K zrk1-+a=Xx0>#RSWVR0fGD~q$ANc@#?9WW(IjFZJC4zl-h z>6eT}wcQ?UK=u&IDJ^tm<^WZlgeTu*_;QOm<(|%b;@^qio_qD%siIfx zh5Ak1;YJLD4WxQlce5t5e}Dg8{)ai=`+M=bp3pLwl_a20C}XUQ_dfn0C@L$9|IXj8 z{KMbve4Oxo9Zy5N1I9YFYtj|cO2g9V+(qS+uQ1>IcB1>MJKr?FmVYinw(y=gAdD%d z7%2=gJ7FA9q5G0-s5V$-f&i<<_G0c}0s8YiA6t-N$`EJvWxMhO90F5GVncMUF3ZH) zpsjwNe^BKZwm-1)-+3SZ`j4xR{$+AuiusbMWo}9j$skB#55vV9yR=vS>e}7XuS@^4 z?4Ib0%X{Cw|55dMBY&yv*yAcb9I;it`Q6hWKmXapU%!lfIr{9*TkD4Cu=WJ&h8^;P zesFo>2o=aB0ymCiV!}{J*l|<>02qDZ5Vjmi2fKm3*toBBr)C3Yd4FJ18X3E&fG*PF2Fx8x z9Y%`Hd@yw2@D;_A@cPwZfA~_4 znbgi2S9*7SCvI>Xyd2h@$jd0^K`v!fB-G^pbie*@l6dh)lKZ8@j3;p|?!dv!9)7pd z-m$X#>f#IT*QLOPEPsQ!lVoW%saV<_WUc>hY!Jtw zTj>oc-H0cE41|Fi65J#!YnJQF8z;>HeSVKm8mIwAyo2_MZTJ7&NFu~Y*8$4t)X+6- z19g?UCbaW?l@Jtm2<3_tN1Nf21RGk6U_fN3@f1F*KKF61y+CqSk=2>nfrFoPx>~%9 z@Ga0{SbuRax5!jkUR-(oUwHtEM=gx3h;|hxl~6YkpJB}%VpUPxR9E)Q+2rD~qVs});AXLa%O{lk zF(&oG9Rq3M#&pB;)|cJ0e9iTDrOS0o;y3+on}61=&d1?aq${N^`|8=-1w&LN-OdAj zaR18POJfXa0tPck6w>(V!^G#rNFJV?6Y$_a-U;|fthm3$*yi_aG!rZcZ+N09|8Qwr_%ve0*5&lIqP=KNgq{$g|S(5A?s`Zo*MPwxo z27e-iJSS!=W_j@CgyPn-Td$VquN%5n1SYc%sal@XuMZvc1LX)9aw18^f}E|o@YyBE z`>I?B_x#0R8KG?Pg6X}%jLJlLe4|&tc71W~?XO?{`Ni_HlE+1g>DS~{%3j+^h68tOcV^g zgRY_6%b29g6KeoH6octcG*fff!&E+@Dz%k#H)`86TiPA9en!x7(&IB7tNagR9e+p& zz6dULmK{6~iefgXG(iS4L@m&IOcz|~4Q!)!NgMsI{L|WH>z*%A9btl{Xa$ZJHJ=EP zJt-|Y8~op#?aLm>`GgxNn4y!9O|UK$fVc)`$14$}$mAYrZ^+TL1%5a6_-9}JOhJEI zGmAH1R=U>5ow}3f!Qucp-bipTTz_1i@aA`)UjOGG{zvuG>iG(52Fg{jD?9c<9$@<5 zd^dO%Sh8v6o-&_sUn!SKoAOQRCVxlZ)`iQFY)WA^kJ%JAd@Kfs;iX_rv=ZC^F{4mO zi5s&C?9B$qFdMOr(ZczJE6ux^L(7lkLRdf|9A1!nlQ3tnU!o(3uUrH0)9sv$2c10(CFdJF~9Y>Q$>cnwK zUw9PE#!leXP{FQZvv^;0(0_6~0zoB`5R*ac0sc@D#=xz_mb5w=BXfq;l?EfplHDm% z92HF2o>)|DI2@DvoPC26u%3H&=VkMY_1El`@UG}s5kZ3FNHLkk-gr+}n)A^|SFZBw zGZ~rVNe!@NNCTz`%L{d{tbc2J>3%b^pfzgjZO3!*P57RaB9fKJAb+&u`r)-9B`^@X z>8?L81h9VYO82wZFSzsaty*uVe^>2GK_~zPN(R|+Gt(A$bdhZ|vhANBAgh}x6#75d|F7FIB^A5}i zurYNhzLa9BI!nQkW`D?%9atYqh#gKYCw&ecvip}BmPhsDx>5bKxx?(x4Qj-T*0r%6 zzRwajfdfdgqR4dt++CXH+*$>!q-mfPV#JP9I#XO2J;=RvW7+xc)~syNYHG2UdmAHtA$d>;?!s2kJh_cL7PT$D z4^~fTOvh$b6mUIE368{OqDo)ezGB1wc4A&>rtY4m z&I3}Y-XpXJ4vXT7@GiP0+n#kb&w566){x&$X~F1;y(tcyIqqI865xA=j~YW{P}%+u zX1P=08Tm3}$L{X&8zOXI94L$p$F9LD35_%n`EG2?&3_1%1Ko%QB8S?6kZ%kv+qM}; zqM-IvE%C$(dP}}eFnsal`@8~4ia8W;_1Ic>U7mLDh)rP!_HWGnYy$kPPuI3YUg_GT zI?Dp6creC=Cy_Mthq*J^tQ;ltF3XVH#2GttsgQNnjqBZdGJ9*b*#O%#IeB48RO*Cn zNVfHd#ec!FFzUE5^l9u407j7r|MLc+h3NC#dPmjPn01F#pa@(7dXOL{1L={hyPTUj zSOPrI=v8@?4)cLMSQ6J1Cq%LnW=;mYvjKsZbRh9cqX3+b(-X{y`Y;U42H*2?Jg2nm z7VL1G=3^yz2vRqY3r;lw=~l`@BiW%K|w)L zP*fBYBL)+UBswt(8Er{JM>|ZH8$JRbf5wj4Fx3v3IHMV?WF)~z0udF3h>C)Mpgdg2 zGq=5u>kqh&eI??t#lcyt!-2y=IIjynNqXd*y7bVoVJMtoI9 zIcbd4oi5Jc<&o$Day}FvyPqV<1Zcg-I&$hQ{YvdKA(A z_eBvYx{*AYXU@M=TEf|24Huv&BTgbI*S#VT6w$rHD{$Ci+3VE@F<9$43zKBt;4->rR1;efzi`E;UXqQGd5I zZf>AFBnb=RcjAsiv7_4=3yvYx#4hUf;s;C~O`dH{{vbw$KZfDmfL-Tp^GRGv5Cah* z`N&Eb;F;VQS^iXWYpHif7BE9^A(S{&E|xJ`+(@rUwghRBR^&*E@`#}bnKV2rG4015 zP{7e}N08*fdb$t0L!CJ16+agE1OB1Y5no5l&-0nJmvrh!_ z;dj$C6k)n5Mg)ffli?;vmv6wLa<)aKSV5*J|IV?mxfjouoPeicfbO8$-w=w$nTXpF z)t=iWIT&z8H!@z@i|y0%7N@cT5usUp+HJ^6wZ`3R(}f0tBcx> z_H~BSR%nPSR<7wD>Snc5i&s{~Rw3vHM{TGb$DSNiM(#p1Nh3rVt|ZKNi-U8?L+K*O z(7wYh*~>kwLBQ}l0-rEN^x$AgU2(T_*eU?KP=u_;!nS-l?RH6X89>J&CwD;W#Gw&p zg@xi4kNgd=OrNj)?z!^uQ-7D%VIFYbiE1&L6f9w^z|9$`nJJ&cS;Cj0?a6~UQK})k zyI5LGB8U^QL*n6m2o=!-Wkh0NbhlL3z8KoR2@W0glWK`>Qyn!2bulegN;c(lNGL1; zr%95=-Jy|qN!$u)Oc_ohAO~S92sX?D^7f35cDKwYi|8Rzq!Ld{5q~1alA2QI@K=ym z5mu6{Sa6cT2xW98Gn2;PLTm7wZ$@&y$oTfki=MT1hcG-7C4nN}M3{>alZT3Km)khi z>@g~c7nASMrA&C15!ME(4=o97OckIUJ_MG+qJtq1=;7Hq)}`A7m(3#$w<2rN8eB&v zlXL~j@Ua4SVlde4kbll;*w8t8_M5iqSI5o0Zdzmt*@>5v)H&_UfwG~Be}4P@hChB^ zSk#5k1tcDlU46iTt24Bj;+WW6`fPZvNu$^NOnq&^{POVZ5Yi$+lzT=_HsC;2`+;yJ>t>N#J(Cdw?@hTT}>${N+yd>{*sB!Wk~ z+K#!8?@SYu8ngM?W273aA$})DfIUVUanv+g@UcGeeD+!WGnC5ls>iHxQ9L?NLs$~O z9=05~13f5K7Js(*9QQviHeZBXyvNg>l;>J9yOJlOB0JRrcX_>&n@#iY&JVxD>Es5$ z*6TMU^r*g+Mgo|o&*)&pSPhh=#N-~wYOxbTlgVQ_EhK#Oh|~6!_SOx{`qWmF4eM)+ z2T_+%rucohlH?&1vQ@dwxr6!o!igeNA)e&H2s0@8O@G;qQL(n~yL>HY38x=<)92`N zI`#!&&|};nnHCnSmIo~&?_-D*bp>fnL1mHhlzCkR1IHhnDL;SjtnB3NQ`4t-OjUjr z5%kHIzWnav=cpyzx@X6-Rb#lnR%;<0Z5m}qx~tyT916l$AlP(LzB0#?egi={wE1Pu z;T@IdgMYXKoce>@w2i26*4u&90Nzx)h`~B;8zkTOV zza2x4=Zu~m{@rNhmyiFdeN}6gxmof46o5Lwy7*T32M-#Y!vFn#@)gM0hGT>*F$tf? zVaRijl*v~YBzU>&TJSXm`P%y6gia= zqOnc}%9{wyzH*Pm!w1a(JB2~v(((C2l$unUOK1{owb-WvRyY|o6KfBR1iKCu0a9oS zRzn=1pfc(b1OB=&DPjpvL~*bNuX|Hwu3hih5;+I=TAd{z3d%~Z!UfS)h^CaT%$DrQ z?0->usJ!}g#fiDJDs(NR(cd1zAMmU_mZmoXqtfEo1N_8*)IW3}^>l|G!)W-%Y)27= ztvYVW$gQqZ6i!c|YF%hx7ky z`5)syId=(OJebOaNkjY~cGsx+>6a;E>wjaPJpB2?_0LnrKK!yr>3FT)YWKE6+^Ha0 zO#$d4`cUZyRqvm@a~95NF6I`6PK3^$j%a!M^ z?jXEU-pv9|+5d%}H@XA;B#V@N8j`ar0=tGe-`=Xw5X+y>S-^@_hZ zZf5LnBv`4WywRd*nkGj?QYOe*1OK zqqC0^Pd=HaEw!7vH$@Ixa11?}S$|Vha!PkG`$u`gn?HC|7R0td4n%O*Aw(&J7vSiYz>HfZJC0kMBKe z$-DlCn~9JA&;R=UJDkEQy_x4{!|XEJ#ssC1IU2zd=#5#N9t&Ejrg}9y=jts$$yc1duuA*POf#b zIf&l<$?!0e3587gJD81f1a3F%rrBP_y@~1VY1;6^K@4b7K6(u*zxPQmE8CVP#+Xakyx;=kW z5*nNlcRLzQv~|PIuuBq>pc*sq`Srxw&059!ci<{#*KK3j4K{^Y`9|)%6X^p4i8;hL znu8z6y;m|&Hh-LP>UOn(OQ20B7=A;{i0dZxQEAM9QWir*(j#iOKKtw2U!VML_Vv^f zbE(Hv`v%w^K7U|(8h6P$%&XQdK1hqsgjzy3qe7&RC@OgG#G`Xj??{c}H^ME>{l|N8akKYje=+?A!SZM_c#bENg=*Bvk5vQ90r z#YJ6(a&kNVF2rintPUGF+h#-i8gIAma0cbd3L-AOF7j zUoR<{qjAMTrK(3qU*oR0z9WBi^{a26eD=hns#>ny9&(Jjf#4j{O2QX!oFcw`^Lw`Q zj4}_52eP3Zxc($>f)4G2kfBmk4U&D7XLOX7Y)W2tmNL<@8{MEfDErhss;AaM)w2zg z+oK0E4}U)(i=Kq&`1 zVOTsx$~2U7%lgP8k#4(Yx7SteF$7WY$MA;4d}!Lat~&GCzx@8gFHp*{`MWPXdgE4? zR}7UBx(lXHB%lA`4-l9Cc>Z41_Jx^C&-f~CZ+{uFXbZx3gZ}AYvuDaOs~?^V&R$+1 ztl(bH&VT&Uu{PjvhpwOp()CmoRgvOI;t})+z(4HMhi)I@Hv3jZ7K3%#-f%dA5|Jhf zff7~e#K}k1=(qp$gQfS*{dnfx2esfQBqghKt>Byl0!&U5LpG%H}dL0se*G;j?hW5#Rq!j`UT_5OOJ(PiT7F!r!+u_u(6!cizS+2%|KsV9$LprW%% z^$d898qw>#yh>faevl8l;v{DS%bv+2**eD8UnP0EEaP2>`85e zHKD%!CE;1mbCEXx^^}ok?+5~jO5|vw3XmnivqtHR)m+74V94CDqxbaO}R=IkGJ_nvGOT z>k*sZHSrf#6f4gZE9OnAWnvc_m=16Q1i*-qqnlv&BC@D3X$*f0tpKpFu`~lsP`-b* zfd6-bWZo}1CB+>%xeNuZhIkbwIDhDTbzHvrr=S1n#w7dM<@v1z;|gKh;O6*;{F5Pf zd>E=u8c(<7@`~GYo6>G!Cb2zf<2Y2x-)<}gQT-_jyq2tDFxVw5M(!9+iee%i&?>+K zb;0XmBClc}e#j59cf_x&rh|_XDwLKpfB7kSetZ>fw;i%j6jFDAu1LmmSAU+qSa6YB z!7A6C;+`;P%hQahp0t6ip0t@T&n#UDZJ^xk{xKJ@DP6r{5UzIzEFp?M8zkZY=1UNe0n$RUVGj~nRted?XA3X zT6cn4$fS}owOAv@kUWeILe1_${X<>nqUUA4Myu+at$%h`Cte4)ySMo^>0S$X7r2!i zN(IweDDAYHMdD*^bbU@&v4C^##OTSAs+KdMGJWt*K2%Wa@ zd(rvGeRyq>5zSBU$RT8@@e4>Pb}&oNXk(9*iH_Ya4{;pD?0<~z_?Qv%s&T!}K4EJ& zEohj}Ki1q@>|ev%M}qfJWTGr%0o4{{9ZF!Lj3~7}i$>{8y_xVPNMVDs#ToLN{MCtm z3@=5Fg{8>xV}z~@eL9KYNS;F1V4Bc_2uX@LDRwA}T}dK9#R0=XlfA`^U1?u38U$w9 zj>FDyFr5l7aDRx8^d(8jwmcn;oBa?7d3xj5FfD1Jw2ri4k}#(&k5m|y%Xgp4V539HdO{V__rGBHmb$U>xK96 zte|>h>hiE*)P`oAyfU^px1?RZzbf5oJg|k#;SN{Go*N}#a4EwCW$H*8iRLJt z&g;WngMS->q{J0WA67$9Wr3v0WHN@Df=cD5_M|oE4CVJ@2rkKbl|l1n$~3q9zras5^@7YK^!|uyo`Kd4wgtxnTR)s86eB<*e1Dckp+Z2`38Cp zDn<4Y8}eET>WLVjG3Je6VPwK&`VCYp7;=|;ZGRwXPr7DaVy|ge-5UgJ$Toan4o)X% zNm$ZkK}%VAnX;%W+m%d5Vt`ms8PY>?gZlM;!;p;!wnF7taw%%qWMdI7+3b#5hTY1*^pR4jJe@AaF4h(D^8<~3){*j$Z;V@dw&qrY zi(6}g9leEMZ2%RBs*J%rQI0-YkH^!xj(<@7`?qJ#Hy&3~;N&6Zz;O|yAK$mnG!a&B zXg{4-zZAYUuFSpRY&KaXPO7Io!1drQOn-+mn46$O8gXh`Tah?RiIpTfhz1#7i@k1>NNzRn4F7p}76GJ?P*)ztG}X0++SArl+4gw`x1JTmSE* zN2`?rZowP`Qo%HPrs6*O#lSi}aleB0_rXpWTx8+N7u*|j- zkJuh+DQq;N1M9ryzG=7F#R8T7Q76;g9J_*P!2?8128kp?!nYM#nSsB@jpl}}yF9zc z{MoD4MYf){7TVPX?!pLoW|lJ7Tu3YPR=>s17JPmA!4KXN{IdY^mYiG-(to#ut7GaL z&u%t>TUlyJ^nR}`Hi?_di=l1#P3Qc)m`Y?0> zMuy%1`XK$#Dug7d63L4;`$U1>!~!6T4Er25%AP3H5uI>)43c%yx^!E$&-dv)S}SdH z(j|%2VnkW7;)+VfTZWTns(*ke`+v8QTk@h=;xNs6MgQT;h1c|@=o^{6Ed)zqk>DgN z+6u@}!zmpE3lUEm%#h;LC>(Ss&fM@Uth}JVj&AntcJ1l>s`y>VebiifF9Uw!`svsi z;8-7F1<8js28h9{sBWSx-m~`Zx1WAl|CFg4G)En1uq84GSwNdp@PEXXeA9_h-rxPu zDfmfUcSUbb4UUOlfX!_#yz)HnSAD4*pUisjyN9l6*9*Wzb)XOX0U=tBi&8pD@Tb1u z4!z}j=Tys&{@zqGK<+}*5wp;ZXrsUJU~HdcZ+QbOxeQm03p&Dl=S$|Q*fP1Rcl1VB zsZFHZIAM3#YlX200DoDN%15E#_3&YoAdQhXeay{r6xHPO3V|Xe!$ehQI&y^B*8uC{ z!zVdk<$S}Q17DLiS$i#BnybUox6x@sgE)8%0h_0z%k#x407Q{W%i|JXPF!|S&(@b+iqP@UHLX+D($P!$G#i; z{4x7^jbX%U@le9FgafWmLZyLum)HeWrs}10+utuZyM;EI^s9QS!atpGLG%zl6!7vl zSX;Ke(SvR`&wtJJa6x=XmY~DCP}Fp8mJG!T6Ju)3U>X(<9CidAg*sy1_%)yp+nqI* zPDnPS%5p~Yhsn}3BQ%sy0CoH7Rk?cnS@0!)wbLr}ivV|G$XjRkIK-a!V=kZjv5fB4I%U;Wo_AG+kQC$M?xn#JJ_Phn(~x?@kzeEq%GKYHuE0$xQ) zNl|wODStBRRv(N3BX}zXpVyApx$c`_ZC^8{tn%t7){j_TOODo9=C_cUBVy4(@k_UujAJeC@xW{qYs zZ<4mG_Qs>UG3*)hw+DIAhp;9BlV+sAl4Te*w13$%d>{<74o3p`U_%szZOl>?_7-;) zXj8nwk^n1ig{cEkyJim^SwUM;4Omii!dkn|UAwV5ZXVgx?C}FFN4Z)WYKgC4sM)b& zUvrTsP2z711EJQv11fAn%PaLL0h8OKtCje2Z?4sLDxBZa_;I&>k4mc!l5`o zhp)gUlcWefd<^y=Vu%|20xbBuwwfA0JfN#mYSN5oMFbl+2VaAhX z_;IuqO-kxROyN7y8q+C-j8Y4Yg%SD{`vc)EEQ-{VDulO(2E5|^_Pt3j*MZSqemS_@ zrvnzrx+V?V)aPsu-$K`Cj?&R3ZOj&S*_qLcC6_K<9;k89f;en!#5rv525#Zw$JCNEL7m+6i<;r=xWd&C&NMv;W*w0rp%rcMtBtL5o!?Q_pDL%m34WWQ5v}1J;(#PH5aAJG=YTI{xcy^Xx;&`+8NyzC<~;<@-ntR0+b0F_;Dl%JfPW88M3@jhOqs@{4w2c!_6!aUUw-ecn-^c6fzvJNHPv0 zickVIj;Mv_M1OpWZyRfpSj#~Yswz!{znjcU`V4jzp-2}Obd(O1 z@tG*9BlQ+s3U(hph6T}6DN2kPL&uAe?U7M0{(uz1!hiITL6>xC>^WUE_flXSw8KGs zV8Bk<onlu35`=mC7A@~}$ z!LW<0q7CWt$1m$Om9I#P;0j@@+Ewl8+rJYY!SrQWiY8ej$KhvA^IleoXr4?rk&Kh3 z$?+aMH-GIGS{j&;;JASsKRU^(2?sQ zuTSdd#>H3;xwn9muZ(~E@{{NFD`U2n!%J~qVlG)n9W71f{-(O4(ncFh3dL?mEsYtu7^2 zJAXODXf?{?e>`gFm)i0RHR9^ z1Xkdp3_Mv$QD*n1=`-sX-V@DdE>)s3M_pty+!ETKj9o^Jp{OZf28ArgD!_ZenaCvA zu|r}<1V7Un!<4cuC8CkJ1W$dtb_+~;KM}HNr z$Eg2ydlRM=NrjWKli78JygVS);hZ$9Ep4ufXf1TogMC9Yi+9A9xi#L_b^ld_F%6&P z&g(5HIhlFt+^Gh3CxsXTVxK{<2{E>Ys7&oi65{$(C}8l_ucsEj`R(k(mr@gBuOiqG zITxp5B^gwrBxV7dlI{{LDaI6cT7M~YA}od*5-p%9!ojpB_rMt8mc!;~Ke{8Mtr88yl6s2&^@*}e4#`G0?nT>WD0 z>-$ev7A`NTbyYf{?&|CIP1(V{L=Uc=TFr7-*iQAH`(^D<>K^>?KQ1X4?YLHg42Q$r zPcb4#+ucoZ^;szgi&v}U=v*<}bh<1{!iT)PP@ zUe!}g{4I%dB;bOHiLt`&lYd^W?aT*nLxjKl@zb|JGL<+^U}8{7AcS2$E@ZyoKcf0KCV~ncla6;e2hM& zCP@N?Csd&}?@>+)(4pffbi{mUhO=?BEL#DC3D35Ls%*kdiAAwvuzzBm>Rp?s7AD0A zgW?_Rt|BlUJ7TOI>VYQGinx!p;1o!m7w-jOY9h6O#&j^G1!jhU!DX6C@0FO!k~t%# z4kT}9YPDY1`XaF)er=s!A7B4(vYeojyslsG*u%%BuQd-{vNUU<>^W?=tPqJKN=cGh^V0en125zrr% zh;!VyzO>%Vv8+)_N2ZY?qY|j?*)no1@kUY=0*e3-v8MJF);7t*Kja-b^t9c$j@{LH zL9gr}=6gTUpDZLu31g{PVoRzA!-UGb>^FDU;5M396dpr#5CCMS4cO^Dyn-3dYAa}G zx|t6c-0Uc^FMms(k1d?cTD$yt*1d{+Y2!{})w z>QJ^aN0npAsV*iSzgJOFJ%2uz#l~Jmf=Oifq+hdlqyPW`)(?>3#0YJNx%}Y*`=xQQ zRLfevu|Bnf+DFIF#oO)eyB$GJk}^wORDQ}^Gr?`k7a!5yN9^lG97NYayBl;iIJpN( zzb?W~Qh%ms+!AFVKBuZ98iGV|_xWpbhF;Tfu*-+Az#URnB@=S;G;lkZ{%_`t@dxkg8Dz81V zkH7P%bcXqgwK42jfb^w}50x1u1tz(qJc= zl7HQuqfQ24qM+0&+0YxQo9g|R$PK76c{SJ1aGnzX@uSxI?`0?*$A zETUb5XCgGRZ#=5MATfv~6T~k2RC*L89dle>fSQ4odBq z`S0YPd;`bONZP~o{A%E<&vE0VubEV4ibF8}J>e4&q6%{cq1x}@Gtt6<&Yh{c46b1``EUdR#$p+QVHnVZ{O_@GqEBo$gI1JMB|-+wzk z3%`s6(6wl1f)QF7J29O`9ykL-&=*LELCd&q@ zRxjKwiM)N|%|pHR7nXfyb)R_#&EsR;|(m$0>ZyE$M9SnU#9$PI>R z=vtDku;V0;+systTc%U2ljly%z==z zv)O0)yL}DOEvz(qvwlN`YX&K?Sh@cWIN;#F8C#?57`(B4jeTJI)|<=vhfkkR z4?aaLPHpM`_MS4nA-9EQ$t!2pac23p&=d6|f)e(bbv(Jr>QL!Gfx__9#36xt{BLx<+Bx5+; zkUSq94VOnc;$4R~gFOf_iAynJTY_^|((Y~FXyi^@j4%`UdF8oP$<p&stVk@8NaxZW`D6K{Txs5Lp_c`eHy4kk zV^K9e*D|0Rdv*DR{*}h8cDB1m-Ac#E0TbZH9iFZOxknH+9xS1CYdc{&)mYk^IYjL$9Hn&U;PW}e-sp$}?r3l~>@~Pr_wH`c*6we#?{pufx*ixR z%}f>(*+50GB;FiU+O1~P8_s(Bw!$}(5CvHtS)da-mnz87=bLH0g%64a6%W3L_(}Mu ze|cxLT7Q;I+th0!-{$|-qyB}O`rQ@9$~TKMoR=iC$TsA-?ztBbgoA(!gUaIOPEaMs zoF}gz*KuSgAFvep(xcv+^CbC0RpCT zlYG^&!F3Cw4ipLF0K`EKcqw!lK1_gT@zeX#qlAvk?hIarEq5e?jXD<*xTU4H)CuiuuBPyK9`yudaI9Bl{9zKZZ1 zQj^i1Ct+~Qs;gdJn7D`#IQbRlLToW5ngsZIx9j%nVvO*ZeQ>q&dHz$>%c}Jj$H-oj zm1be>4!AweYH!Tv_0!;2k_1>9@=;I20%#=9W_ElkQNZP*?+Q4 zIUM$hwj}F(OZ%HCgJXT#E;_u1Y|0Q7%8pM~c30~z{N?+PF8%&{p;HtxKHB2yJrwOX zJ^SX%KRjV-q^n(99owvR^D<{;@D0z#@IQoh9dQ7_K39`j`}BMr7ky04$MD)3N{}meftVQ(RMQDjq1I1KhT4y4nHX`Xd(D;1Yo^12B_#CkH1mRm$1 zi$bj{)R&4S*Yd4Z{7$(?vj(FhZ*+-RsMoyo65_#;BBOl-Y z&b8>+>h*jEaPb0aJAZ>wI>UK-{`c?v{%61Xc~T2R(3vxW=^-j8D@lWn3@v7^R_}Pz zv<7?r@soF_ZhU?1ufv)uqt; zuDiJ5IJS(ChsABgZboJieaXyZZd~vNqqz2sU$wAISe2|?TYo_<6Z99Bo2=lW6+uYa zLQf&(*nzB;JXPLx8soV1H&0oJIPo(bBWq=wgJZXki96zmYCJ29~y!e}=4X7E~3dj&F%oc(azn%~!MKR~1*u9ROshw(P-+%seP=o}Mrb7;|abw{XUoWwU zJ(CAVKL%NcwNMnPxmZ%(e)M-w1}$4mHRrf8s9{z?xu_ zyzVf`clh2w9ETC(^axw59V&|S*c!KnosSYItbaZ^iaAOGK`n3<;031xZLyjpLPj$c zD2x>+pR|0fhHZhBr|O#N(8hoA=5SBT2RJTL2fuBk)MVv`L&Sy`6TmWVFo8w5G3M^hsc}W531CaSp#x zzkiml4eoY$MF#_JQD7!=GhPb7ph0LoMwnsEo~HEWG!(sm!p0dUjk(7ybc6rfj7KM@ z63^RpRGrn(xr6m9pvE*(-lHNV>pv@hb@9aIAN~;0Q1Q;4n&uN;HmP73%W&V&)oWH} zfA;Y0(Y=S4zk2m`@e|lQ`$*?otPQS;D1QlSAj=q&3=6}=zEeI>P(_qxmarMT`LoUR zyO;|Q0ob=MbE{pwzUtUi(j0-G?ns+U?L)8*+?Kgbsp;C%W!=>!`X+3{p|`FzxH}R- z1pZKOr@5&6j__C#FB46-uzQcU7j@7Z3fpsJc_wd227# z<<|de^FRFkvv+P62t%Vgxb+(=<1d~+S(v`7?$KU-x$-Kin|eLIY+h$Ll|ce}h%~@p zoPbxo$6@Bnvn2&XbOo-{Nzk*FyMK2qcHt(tPT67ELk@Jnfs_y%vrSYr?OxHj<3lGN z6lwB+LUGX$*@I`}=CHw}>;75Qr?S~U|KZDw$E|<;RLe7~T-XQ|-9Z?pj8HVG?J1pD zCZUr!PSj_Raf2yQJS@2%kEO~B>NC8Dco*Dni%Osl_E(3JkiTpD!RfOF4`p2PRLOPwE^o z-+v=|)3bPa!TOTD9DP%75$y6>)*ZqyhhX6<&5Gv=Y~EG*Z)>DqGGME*OGF~8c`c+im0$S_Nxyks*Jg@XqnjDaiT%s4L?Ru-`waJFY6i zXG`H68~er8Zy)}3eI`v&KMPY%%{_iPH}|nxzGSho4lDs9Y#j0#q?6E?*UKQ%HQ5|; zM?S5rtkO`~&3|eyp`7{Gi^*>_o~X_rK~2X{&WDShSFnY-bhu@K3 zYt57Uw-Z|YNG`Y3#vUkU61(6niL1~X5Jy;dNb`mEgn=lWkYY{|A&m$SJ`1Cxgc+=& zmdg2a`15y8j^y;ED4>IoSWJ1)X{R{MEB((GUQ|7wdVg~H%iu)m*L`!wCH1z*e+9-T z@(b>rs5raIE2*|s+^I}HwNZZiq?8832~&U+9OAYIaL~L|kIZS_*;>1`GPz#9=M4wp zH87Hwy3?~Ciub|l(L#&_g-!3F@Q9(v(7tC^xYe{NH%Zp1cC4G>v&6@s9+(<2i4vvr ziWtX7%YS1hhmPyGA6;lZgQYk^<@TCw_4de4r|bIuZ67PB_es5u!y~dZD)ddu3IoBY zHs5$Nxjl9Ox~sOtTOpqu3J`$&n`K09Z`B`9&%E`o=S|i4(;=pm+?`KiRcANG`Q~d2 zp!V^SWJ$Wp-&C(Y){H+7>cCBb*9AqT;mM4Q9)C1EF%zqTk&~5a?a9|e@&oQ+x4Y9k zxGFUDZnJzDP)RB&Z@z5ktzZ7&-+mfy`}YrCU#TveLyJN99_XCj<*(PS-C8z&oA|HD zNWScI*{5IqVs1A?>)e)Y47&z}@O{ZOUVk6Io6K->tC!tXJLmDMXNH4b8UVxRhEcztWF|Fz?_ z{K)l5i`?}dcU`nS$wC+;$q5}eEr0wLjF8fby@kc5yJ-VdF?J5uO`J*{%jPl5S+RU| z^51UHW*qiddv@DF8oUGFl1jsXA<$j7XE~_$nb#7}{nIP5McM3>R_!qK*&G1?*^`k= z=bogTeQ@!YZ{PgEo%-8vlgebJhBF&g%-ksIUa)(|ZE4+{dvW%0&R2`ys(%-7>qi6= znMgh@S58@5Bg?YiQuz&ENaeqGI!HBZJBelK9xqiI5pp!sLA`wL7PND!DwT&GJ zLV%;m$Tg2xcy5xf(ckI1Z@lrMb79!nvez3mBr~Y@n3q`HG+M?if`jPHZee0GP}Z@9 zb@kK=$2#g8hm7Du*>0MeQBji1QWp#J+o|1oJo;oIfzSsil3*!t(0{J{@PAxi-krHM z*Z;)zjZ39nuHSYaG=x6`=3ryVYKnz1SpqWJ=%nH=D*wVK{?Jmv$%#@1$i~#qpt}D{ z(c6cmd8T>)H*fML?}CD&qM&FWU_t^B6$M2>K|xTEn|I`A5B}xtKCkQg zem~zouJcR;!b3Zs^;iwzEg2xAE+c}K!s!SQHGR~#apvnge_fuPT)=P6 z?Gb{;Lq=f0uRa1uwEXFkC%pUTzOF6$aQ=hx(+u_%LEwU;5PubM?hLtm9pW{>xcs7S zad6ufaK#!!Q(K0`DIZB#XQ{&l+fBfACe;oVT`<%VPaxix}zOuuKAO#!+ zTFEyHYs;%eUw^(IeH&glL2?sYU~EUFk-6UM)9=B1{*2n|t6%iZNp(Ax09N_6>nt1o-`Jp?`D*WCE$k)N+!gto%V#?a^`O zcEb!Wr!X4LYucLFN#33Ia1Mb8Erj)7af{vc5jLis0dVyvl-&Aa3b&D0Uow&BBf8Nv zf`QUV)}qwWZb$bL+v0G!!&fof9CIWrlU^((zyHtww`1w&r=`<*ys*Sa@DJ{ct@kg_8m`aI%r?y8 zXUB9Vqrob59Ph?$rK8uwNr0HLELL89b|0xV%avy#U5mHx+&<`sDhObP1ZPgT!_Kr( znxk-oZ?5?2tuNon6i%O-B6kEWriNF@Hw|-dYkx7b!Z$2Cce{THKQ}cmHV?XPhr8i7 z&@}`>KJUzD?|5p*g;hlWY82{3+zvYessL9&sJ}yb^cIRnvXJZ2@d!E$p458!Hhp{Z z2>_)?_u(cHj6`i%;4brWp-Om5oab+FblX5D$1e%My+W@jB0~x?x>yQc`>CMxFI~{JR8}0@DfuJ(t3NxaYp+m?~Yy+7=?_sOU%in+Zqkw`{CH1=B-5kA&s?6|HTk(IlQzri%>$&I7IpIs2MQxk4&Fva? zCBC6uiIukH0}TjnCZV|MjHi75t(fHLwST&P)bO!rAfJo61}dU*P`@>}b$9Kq`PO>7 zO|mh%e#d&_RpmGKnR5oR&9vW}iXaUzSKN^rMZ2*TLzQbV)9(fxzV)Zer=e!tNmgI`E2%0|7)2+JpZ$~I)i%6=_!v} zFh&Mg+FSL><(;2EWF?nsS#)@Hf)cw7XCwR5Zebbm>EKX89#T5_D`Tdy1>btdell8} zj6gML8O9H}npR1b<||mE3^1ly@7(dbyY_!>$C1c3K<4QirWC(u} zrXdWYds5`IZq!`NxE~GlLFAM!CXd`30fGup=BwKUoCG_t!CIcCmT5zo}z~(W<$N#B0 z$lNFISHvwS3mKk?$01?&Lw%kqcdrNT8Q4b!te`5c-hBMsFOR>q!(JA+2<;$rWau)u zISHnKszmAFVssN0hN0n{csRM6JW7`3UMrwwi|HD&Bdj#nylHpne2T;Su}Ocp990pn zcRAd8k78evP^aXPYks7g7rY4l_^3Wm8%iE|q20$0dAp#6rKD6+)H!{OvfM`YD5H*u zgmL^*Tg$7l?*{cWo5|Vk6nJV6WQUw1cDgg`HY@k!^abL(kIs(JuEpV?DAEFILYy!s z;`Xa|+MG(e#>!l?nRTz57MOn%%28%zc4yj12?Q2- zJq=81_WAZZuZzFCtZQFZx<(EOamUevxHUWr5kO2KH`tL%U?hZY+$hu-Wrgm=qp@Xx zkMCqC3tjnbq;o(MtQ*yloIWTE_rog){Wvac0(c1^fk!brWR^Ubr_6s>5i7hkudnL4 z3!|0}7YJ4z`9R$Y=Cx+s?E_NvxK;)-uREJX1!!_cZ&n2XiBu77*@@hVyhL`CGDUOe zwq^~c8DReOI;g=lt9$I?D^m`o+sU@!c30zY??`|pSf1CU#2_25ei#5Z*zk%xumJ z@Ca2^)t^<}W|w~_hk`XwEnY?DR0DCEW#rL{+8Dmv7T!l^X>2T19=sXV9)Nb4Rd~z_rf_4pBi{6V_codm)dq7D zN0{x|{Ukn7k%`T^ml7;Jeu{r7Se5O-4|F~O7(J+QCU$?SeBuBNRQY>ADT18Ql3!g~ zecE{1b+Y9|Z>~GbRWMy3rZWkTlC^HrR&+yYcX^W`r|aCSP+L3wb{xnCv7NCpEm{Xa1O0aIA!4dlqk}%#oPfw zFs47^Lcf22nz6_nA-gfB59N;4+o$xvqITZcUGB!t$ zekB|YIg)+IN<5xuNWYG~h2s)@8FJG19fxX*#DxNiD%9y}+99ui%WQk&w#H`OQoF`? ztX^$!8k`PKrRk}I1rzM!ybQesv*1O9kwok6wV;0+?jTEZ`&dkrd9T)2f9MD+BJP8} z-9S(d5uoMRZsIue_6gJ(_$evP>SwtX2Z_B=e|;$G^e>OCfjeEnzMY3J@K4Ea#9N$T z4O~wKS=dvT%I}v~oT?;~VL~hqry`lMnYoJ0L81XugHoiaV^xRefPP#)Z15oJV6Dt9 z@Ron-ZFM_ti}Tgs8o}F~Y{Nw}qr^JYB*F&y6rzl&_N#(@(0=kDtM+8ixu@shg)KNc z_A1hjNoOjJ)%iwyyy>8d%3HV*93Un($nIR)i2Y5?$ z3%0cZe>Zdj(}d}xfjLcCCVVTQJ)6L;C>(!1Cht1hAbB)Hz!=I9rn^Cz%jYc%dDF1z zvXE^Zxg>l&_VnQE$!{iKDp$LAqhThpn;KBVU+5PfFt&eK zJAse|VTWnK2cfx0S)?U$7pNmRn5CCHsr0U?0`q1s3kto{C;T(~hI zhslWU96!Yib)_2P@&m()=?!Q5evl6z#hOq(QO5QS)70}iUmDB} zRV2W0$Bue`0vJR-Nw`5)c)&$lY%tDR$sSHrhwP+|7gTY9f-AYr1s|7%stamgy**Og zovoqKGF4e@avfR;THZwdyf^aCe+aAo`F~F6d}> zr}f(Y4PXM_MptIa2?EkEaSVUokYUbtkmUZUSAE|F=MzhbEseh-EZk#nGIuoF%C#=L zb-y1_lC-%ktj5BwqH%U3Th4Dhmno$A+j@Hw$&)U}n zZbk#CDYyh%pEb=^vhEOg@s^-3CBd6X!$+bu7r3w2 z)zGg#|DRvayH~XvW1F(wYatEXOzA23)#cDPpY!+F8?#K0~nZRpF@9}$- z-fmw-{1$ec){$A8?P7sNsFLx_IwUGJcsL!x!u(VktD@ML+XM;hOYPkjrbFzf996_^ zUb9``5bVz<@aTUju12Hg#Z)BLWSq0eA7G5up zSs)`R;@1wJ909PFH286rX~=5N7{ro&EsIUdEX(pTaz(Kn2rk3hFnBDO&P85^3`K9o z$gq3Sp&gTxc>s?A2|1)O+-i@yNC@tPbttfwNEH9{ibR~AV`u)rb9nG9r zJmM1D$%LqIyVH2_E9igCd{z9-7xN0U&{eUi@N18hjvG^XAN>) zLgQ6^pLu_97aNZN*pv`zK-|HPW*b@Exn=AjK184?l4LYcbj;?w(M&T#LU|Iq9ao_$ zDP7cAG$#^0R0k)5l3nt`*tgzk|I?Y*inYFtS$mmZl9*0RLZ@JaefZu`oQ}GSb5hL5 z{8d}|t4iwy`AK3^#GAJgXy^Ct{rtF>-h zN&Xkoq9mB3_g1sv;KXAWWS~CalRpXl}}S*b)&S zX^h^|%nPEkCB+pqHMW98&go0-A2@ zuF;Q*s<%7e$d=u9-T`nZ^_F=VAR(;YlQ?E=4O`^>u4Ek+$R4B%a8gohZf|KwpyKce zetZX$aH94Mr}DFRZ;S5n+3E0u!Cmq;d+C4NYv-caOnrU*$-jR)qeohX*H0KenELq? zUst(8-sMG>kyA8LQ8gdrHJ>KDT`m6d@|(-we0cxz$7k=eroA)adCJ%Wiu_lLk+KMXGSVNM%%%fSFNB3`LAsF*mCl-Skx_`k|(@8iESjksOaF5Tg`c0Z=yb7V$mn#V2noPdAoI&eV$j-v_;C@uXQN z|Jl_?Km58*^XcQu-_f65o-Tj>=KABv^t#se%CN@SdlF9o51|!A2dn3#mJ6_}imFdD zgkQh+=l9n>{Okw6In86&=6BN#L_E|O>^ng25%z#x|Kio}E>DkXypIp2ZhS+Xy|`f6 zQ0$A63as>)&ioWfK7o6W`+%<~yMGFDx=SF;6T{}B5eN-77vQfeO}c*-v17`9i1&Pf5l_>Gf4luq z8({=14n@&ncsGfWKT?7%p`3YI^{ex}Tvmn}*@Tg$3!s#w96AHE_;i-B*H?{5tJYH% zyN+^`d>M6_35*HC!byL#66waM$kT0;SZ-LlSElSYeJz`0yqeq{e{xtaee^mYb^cQni=a!#4O%l7pKa$emTXSklyG~7?LY=tJ zcH|D^iE`K&HbRxA#u#Yh1*np1+^)>)XcnRdDuDGvWw6e)3bYb+D=h-|10cxtk$qgN z<+XTzeddhj;p2b)xnYCUaO;g^z3F%#=r9iYI2Tn>QUm$$|J40R^5CrvzNZ{@cKp<% zl0h04;Rv_xo1Ax+^5=GE`k(%M&OhI+_Z}+?cg?qZGeSo4)9bLJEM9(FwtzKI$SJ;b z`lG5(s=D)@M6_n6u1?Q0H!Rv;4=<3{k$bjSAEtrIppt)?ief>YDZ4upAel2-=@Z8U zt3?aauA|%1C(sR$=;5>UA4KbqHGq zSoo3P!NvFMPBwUc@|HL%*f<4pvGi`D23jAzopganuW0|KuhTO1^iO~J;?MlYpX&Wq z#g==g`JjI`?nYv%+JdrDS{5%U^k^J?2gXCK+v<%TiUPMocVP*VkmWe_W!2Vus2@Ns zr~iO*nJ78`4y{CiyLR-8)HFEig&8qletQr7yZ`gM-~X<#Km2>rSE=dzmre_?CyPfg z<8(dut8>*gw=dnhlqda%AC-Uf|2}^4@vFc8>py=K{iMFA&Uy9ur{4*lYo6`SF`xhX z`Rw!EXNecx3*Hs&x_+(OY1(Po;f3a+*OK>B+PDzH#|<*NxXKe8ss_qO4>2ludcpXa zmJ$Z_CDM0vobs@vm`0))t%wPB`i=Y-;-xm1Ip|J^QkP*|tcY+6=G&E8WzMQFA9VtO zidKI|dIBwREK-Vc!^)E75&f>tQe)+~yApK-e@?W(U2H6KR26)%b@?-qvY-WWGgR*q zI6xPFv-?fM++UtLXD45i&9m#kE-f;4>;tR<75^6(ZdZBE%(38%7Ah@MfWH!J+svQ$ zs+S-AT9dDRJm)l;HgpFw0FNlj?I~pmHY$G#D!x4Ht3bV*{NUdEpIsD{i_QklHRc4O z-K(!3ecQkEpD#W?_0=E$YWc?U-7lXHzp|K-PD$`3R7dK|fiqpqE=E-m<4g;O!yIQ< zmo2^(di#9U#>rMv3j&Y!QyO!0*~fx|>rHex*p@rXlW$(?*sp90H=cYxe&*5C6N7)= zX^ncKF)ex`BbtHC(i5o=OBy+A`b2ew@j}np)-qJ-N4(F@DtO~LgZN2!Nks2(E|0A? zxT}&ptTP>t&_KOFYgp%R+H@|!%yx@zbz-U0*g5z7@xqhI7m`()TOAdn2eW#MKR);6 zdvAX9{@?!H$NzY}v}yC&FFq`I$H#x~&X#~pZ)U&!_lf5Z|MTG~)%N%wC;xdWUwiKL z)m7aFutNd)@H(<9PtTjafT~^j!N0sWQk5(taC~$+!r^RKN-PY&8hbOb0@}Kd-Kzn@ zhSN~$^bR7K(nnVm4sh#p@8BLn`{6Tb+L#K|fX)8V1F=WFDqL#WqJ+gLZ90D*-jnje zMv;mmR;22v9r`Gm*rWMWexZlF3j`>sdYmv@&xsZia>sM9R0|A9sZkb+jMrV&+%?EQaPzbx&@uC31>%>iN^c|GJL=k!I*ofKch{zFowbQ{5Vnw8 z375*-xvR2zmo*!VKsO9ez!DRbTIOgWleQT1MO0}L+#OUU9EpYD=qNg(E}cMkuOh{-;v94}yN6dL_^^^v z^P?a9%ZK~#jh`N6UIkR7X@w>Edo1WLrr)GXU`Ln5?KOcWum3yS&#rO?q0&B_| z;EV{$t9mMabp}ayD+V`VjyC9L*;{m;%?HNubkl^G9I#(h>VO!PLPB!Ndl* zQD=JiLblqyjoe{vj@sKcb@nokFY+YiO0oe1tc5s`-^#B)6FoI>%E5Ez>yGsTi|j_V zfR~B>Cetq3%UxJa9V)33oaO5@E5eg{4 zU;|j>1gSQ+w_u>4J3E5wBitqCLoomznMkV*R#;nBfh~oE^5n3m? zA4^YfC1`(fEQ*9GPbs&R_AC1>(Xz<#ZyfRtEpFy^bT2n<#tswtX>J%2K8)}a0Ga@O zGots2HkHejn_WQwp+;Us>4+?bygwzF8X4c4e$kr_RUc?x&@_9 zJ~;XUayd;*tfw=wxL6_lMj8#Tqt6wMpL}$}RM?VLlc6TG1F}Guvwvk~A^&y0p1CAl zeQ1B!eKBd8vbH(PKsS6gT|ku6e7VMaWv-8-=8qS(QRO%hr8!s2Y(u-fqg$Gt(LM0c z59voQrwyZ<(%r~q_$^c?qV>>ZuUOZuD3@ugVmtOg3rhC^zdBKaR#2ogIi-=LBh_W9 z3qoZjXKD*+G(4^W_R-P35V&Kqv@bkd;G2K_OGAq^TkBqR{5o1q4diwdT3Jm7 znG3K73I>h|dJt*enXq;)by_>U<{*6gmZAS8eFpj4p+cUN$^vGhv&|C0Cngt`pHQ+j_wJcd)Z9cC=eY&KCnLU`rq&Nw8 zFg=mcwaG=~nshtrHU{bs#9QCru#^R4$EvIf3~Uc?>h^91r3adDN3tocEK|f1Fnj3+ ziUDg!PN1>m_AD$@QB+&rESO;XNHl*mA6*9n!t6Es^S1B0pS2jA=F7`1rl}?5Ds4-A z_$eSq3ez1#B=gu!&qhz_xzUqDh3zyLnhlvw^87yUw4dQttu`#zY>2$_&>%2~ugz^e zQFUsBQwo|(5dKYIh#gmj@vvy5D9;8#0!X6T1RF(rXtLB0d~^{YeTWww{~L@*u3Vu5@-*V zM+Xii`(0qg5e?ptQV>iT%A89l%@^*M%SvlcHM1LtO;j5liDZSD&Y|UgvviZaCU|-I z6>{CWCk!@+7UP}hPFe+>g^31g17olX`~amdOH2AB2~XTb3?rP7`jCHav(Kv9WNfnz z=28NJHd|a2I_*0Dt21WqwLC|L05yKp3byanhb}{v3F%?wdf%+`vE}LHeB$MeH?#I@ zheDW^G(aDucjOp3&D@cEY3^K}nZU#fNv!m{crJsL@e-&AtK*Uc9-_wZ@K@2=Fv0$_ zm;E!|m$r4^j?Pa8>f?U{Aoi#qA;*nTEW}}y6u1R|7(v!hft#&kC+PK5a)t#0I9rxg z$5m}TO!|>K9RXtkb)-DbeEP@@*c2v`u0`2_2k{$7T26o~KcQmrGn`01wD+*dL*Aw> z+19YT`n|z}TCZrAcI?K!xByj207zpbG1ZpA#NC26LF!2L1zLZW`uGGGQ|F*GoC2i^ zwpiS++g@E>XtQ9qd;u7Ooza*hWH#n7b1gJF!A&xdE3o}!A!!hM1LKOdZF66>%}?k) zpZQ!Pcwx6V-B)6_(E2Pw(KWvB6soM`t$%yBwyIt*P&9;dLheU=QBiC@t_w=HE7yhV z(M{O8ZuyG^nYn*&P3hF_wz#XpEhs%+N>mcbX_t|1ED}%0;E@XS6uLXZ%v7^WibX|b zg&@brtte!ZB>o9Y!tAh#>`mKVYl|hZ?zG%ltTYZUcWz=2<`Xv%V<-!rz?v3RUF@k= zpSEV3NFri46!0*d$ELX36HFd5J<{DO|80M3_+^@s>dJqoa60q&cu8V3_#ko>@Taw9 z0QBpas;F=8jOPBNlEkI+Yo=T2QJRdIZ!1b$Tsz>;SwNh8!2 z@+`JHU6Ft2Ucb0_{5iu2UZJ{BU*ymFB$XSK z1Wp@fLg+SZ}mCw)HN-?!*BQQb$Kp zUqJ29iwGyGDWj{Pkxj_K;!S`m+`56EPt8kB7me&i_ExLEBgsc5a19h~ZuRNEdv~L5 zNBYTSN@Z0}?~x6p=HQyeS1^jO(Vd8i^a zcc_2#Nr|?sS~zmiED+}CGW7Y@0wm+u*TaKbLZ@>px}jMcG|-0r>u3MmqfsPP!(R6$rv^{Vw!b>O* zDqNb4sTJi)-FDBRF>x1i8PW$eAwb+ne#dFaxeC?PKYFZr*Nii|UOKQ&qsyw1k-f2B6Wh#mK0v_L$U$OD}4}bmrv){h=+sD7(R!x6R z%{;%ljC689Ib532&OYX{+KrDs`#9s{tt(qKYSqXCjW=vc~ zh%#u53Tg|&5p4{Pdo-Tr#1zT^Yu|s;uFzImjF*?EHd*`82qQ^L+TmpKbS9jHih=I3 z<7WbpT#N;&A&Hqb<}g~4phLY-Ub-0P#?sR1+o21S;)Q z4ozSn-0Q*{`t(x$%O&B4Vq3Y}x$lc!gtAaAL2J>e_T7IH7hL|g%U^%+FP8)F z*9v?jV;l$xops;s{^_FXU%z_q>$@}FxzzJ1gVxr*Z#;tGTbM1S`ZKNNkE(Nj_*CNH zwnUEe%>f}SPiv%U>HIW>XMBH$=~3-*f;xzTRLcOVLkJ+~bJgv(fRu<~`{iu^lgqD} zYZ~{Jkm_gxasxS@+0L0}-z8p!4-)G0z!EI4st`-WrZthK=}tUyU$sq$X;Blnc7!e3 z7?Q+9N3C(=A!kp%OFNuPJOG`WSIz8|zLk2XIc$yft^e#ff0^bS2y%a6bz~Ha!v96( zmlw<53)H?Z{zdI)@BiV0kt$S4SAmx5I`X@3EcZ|Ta!nxeCd;uFA?IfDOelm_30f`ONQ5vpH8V~ z)YrcQ7VEaaLn*w1s$qYBRQAak22XUdysVuWh}LgA*Rb~bbo7OqoShqCH z#WXXAc#i~&C*1|T`Hf6Qwm(NqdUB))M176Bj4hFC;+WGWe5`;nWD41W6_FNT7!$!^ zNen8B+JfaHbZOS8*d??Nx~*{~;yV0Nln}u~IuXmz2H1=XLZB2jK$!}5<>;LuNUo8E8b@bD(XP)bpJ6%ASj%=f8+2yA^Cr1nK75YjO z*)5P!FBsOMBp5H+gx3>gG&gNHy%SoAjAlM6ojxlOSPL0h4#K^Ncpn>U+;3Z5nEUm& zH=f;{`}7<7H&^vzD_2(|tHYbvZQ=m z&D%!Ka2gnz-ZO0|m+h7cx9sqC;3jx8CJx^N1+KT}?mX)Ju1|k`zDDnTov?s=1M$09 z4x@`ZCxE=wQ~k-ix8MJ)cJ6)arSe)OFM%oZs?5VHblWdqd!H0f{Nyin-~RMP`*On3 z6BvZhN!EY7o)aIP=AHidq=RSVgCznc8|_QX0%b{-Lt@2SXePW(y)H2DpRRvLeH~f9 z>Ej$B@e{e@{C|39?Zc1$*WZ13@9bcniO`KIIcnKg>?gcBuirZk_JVR>)t-J^YwNT5 z-A|6N6l{T!17r?Fxpw|$gY#zKQN(;uwqLU`VG)0B%XTP-$ zPAE2&1d6V(2H3j75)P_pE=!X`&KV`D(gg0iGq3;nA7B0C>rWrUbV^grBDm7()VUgV z0JnbE9gv1c5^gjSJ&Z$UIkS3-a?ii}{<9x{eRZ+!tBXEfPl1+8JN=t;(F=}JY;@8< zpRa%W=G4PK{qesBzUf=~{Jr~s|Az%N^%;G6!08B?(ke3LMOVtx-@ae{cNb5K(`yQZ zUsi94KDls-hhpn8dubB%{B9 z3iH$(+bYv^&S+YS+F%=f>!w}s!0M5>T3q99?O}UjBgu#BGL-q)Vj9QC8O#x8>IyV; zH|%z})dOyGc53%}162u1vISx$4$-tYb4;+;;qKb&3J}11@!C{w(vL9_+wqJnLVkZM z;|3;>dU@=7L*#)Bbta9`P3G+nnJP_#uj_Qbe$Lc?YV3S9wNmM7bt=7J62P_QG@jTv zzyA)S%FOLy<#LS0V4(Ya>ur^#bUIz3=Eht&0yuixUuo-{3$_y^PgUF(d(kiGD91JNL=6hUCRZLqLj-k*}S{nZKbbXUb3&Utl%2Q*BF`D|Mh?Chu=J( z!Ru9)PPYhbj%Z`5h!X5e6xTttC?!sb1GB16oUHulgHL|6_|f0g3^AN8q5i}o+u?t->y~F1b}u$!RxB~gFAqfC>}h$)xo3nH6kr+xd@YTf3DN50Pr&81$#Scz-isa4%8 zt(mi<3VRWqgeXCWP#h>6&HHzt6Zk326l5&jmaQmiJyllLdvbs~nm>`TjI26lZbq;= zc{?Tot3vkzG1V=4&E=yS_^pO zcES|C0z-w`A}|1tV`bD+hw*jr@nEY9xh?kI2ATdAPuD&nR28EFlBnJz_H+b>BCT<$ zPr1zq2%t=SSB8I_p(%iusEb+)6$Qqex%^rlp?sQWAo+G?z6(CazpPo4xMpqr%cFMj z4tZO>(YPf&Kt->FRWUbuBI`<#=p?+@oHd4}!JEU^LU+>?L8_i97UkzuHVJdsz;O|qu5 zdYO%!+a->ofgC}08C!9pg>gSV8U%nkoR(;dxi|W)O^%Ko*+HXMx%$f|fB)Cvr&3e> zmN+Pb@yM(^kZqt6qCg^oZ_k}OnJak2LzMTC{L(Ct~a@F4$uzG zq2AbtXV!n!3_eI`j|6}XtaIv|0C9#0d;F{Y(ZaUXB$0_n&2)-}%n`3v7Vj44#nLR=7V00C?=95vrM023U4G)Zi z3J>UE#bn3^qJ+RX;<;+~orPz(ehGU|zj`~V){?Bb162FsdlTe2(h`JDC@ ztYg4?#Sf1R1B2L6%5i<^u3RnoCBjLW&hOz=a9VP^GHi_7`8@Jynhth5(VkF8u6S5W zbX|Y{QmeDa-y5orP4Cl}U~eXt;Vxgqk6@u1(wz)dzJL{F@X2*J;OIf9D%A#S!;Ukq zaUb!^w!&%nljvj&U?gQgvv4q?gL#er@!3WWJT>6&ja>)WNDEQOP>={mQMZ3~ zOSLn1sEsEe*tCwA#B+1MIck8sM6iMG1OGB$G;LNLxBr2^uS`GNn;pSdpmnf^@J@dmh<}o>22=rctPM7Qc=LsB_|3hzpUB%LBS>X zIV`(9t2!kFeQ_kBJSp7J>GGfa{1IttR;OFIdt9k8yDcDtnn|p}IYIf`wWog)G#Ob- z=){jR6a_6Lnf=CsdrNXS2`I5DVm+Y`RuF} zbQ97Xr1@&YVB#S#1Jh!b(SaoIs4U?)Pz9`U^^p!XOztV3Hiol8i9CCM6GJH5V0eJ1_Tq&Odv-}NlU+!$lMk;~KL$f0WHCw9$QpF}MI3C6#5e@G^V?HFQwsQ^%yx1mF%- zt}y4Co{r5+EJ&{;DN0x4zko@SbCFSKlv2ehFS}M@zEDx9OMeJgBD|<}1TEeXmc~#~ z^+AVIv!(W1!}ote_mi&J09YT=hXXNvsvY4z=7`{64`Q;_i_FI*Mrhc*#GCaZMl z%zdtk3>>L<#ug{cCb#@ZiTCA_X{K<+;iDKG)`XD~StJReo=`~^;+$|f@+D#dxRg}+ zCAJ1Le_`xp-@@3Iz^z-tFWI&l17-2@6f&(N!^SoWTo-@;>C&SQ|Ly$&;XS^IeI;8( z=!eb)13uuOZ}0Nc{~0Dd#H)uj>(6Uekh{7_0x6|hvn9DgYAZ=do5-2S65%Isv(RC{ zgcfCq({IPPz!ZLfDo5KQT6f!~-Y)b%g!PdCq8CMnD^gX_x&7K;H*|<1Wa&>uv&cK3 z6?D4%t%rZpd!jucSbON$o^q%?s=WdKlcV8uA6-q;rAtvXOeK|8^yq|x#=_N;*!X)1 z1xsx=_R7YkF-uLSeCI%;KJzU+#we(qg=^m!n*gdp-E^zk;4$=w$M!Q zxv)8SJA6O%ak3wUByp%R>U7HHQSVIzs_=M2U_Eu%XtZ7Xc&6a*Tyy znjFhV)uoN$&DpKAmw@y@>+KDi-NM(u{Of;Cx4kee-dZJWQ@}}hC#9;O>V&qqxAfW> zR0ZLrFRLFr1;A6o>2i8|UV?EBS{8m3>DrmHHrafe*fswu!6gdV4tfvu;i0(Xh>&Ur zP$_>6d@$aM$3YmGqNLYgUPAp4bHp4G!`T!8dyYR}){*N>tBQUU zuR(MXsX&Xpej~cWahccP+l)h7>^fu=4o}S;%GT~KR4((aEv~);l|PUe#&_k)Pqy+J zv$4$Y=aEIv_zGE6Hj>b!JL>xgLjC<9GUdRbx;;<|{3Fy&ok`k4SRP8V=JiFc}3NZtN?y>{ZVQYWz z7pZPs7xPkS^Rb@R=BvmGTqkX$0A4hb*^`*tt=!V=st!BCea`k}|C)KDepBmaMd)ct zf|NSKkT8XKSxDp;97d!1nAq3m(SV8&A)pQ}L;V!6V6F&YN)d{n{6OI;+vmkwFvAo- zo=vb(O{|I{f5yG|wBHdH!_3%v+zfw|b1<=KTDoqQI#B*WKnXYQ>ue(X;Ff!jmF!OM zrY6vokle=$FQ?fEa>5`Po70hfhae<~vO2SybFUTNEQJWh%Lj4^!OA7YqI{EJ?^~I* zRBSO^Q+ECF+VzALsaF4}9l6=H$=RkI+yREtb%X|d1lP*Y^6tI$w3=0fOuK&t;bF)` zHwlRsz6R6Tzk$$UL|<~?L;e3PN*>C}1+EjG>$axWUV9pVP3lh=Q-_;gxI5*!LTj{5K&3`f2;Qw|XXjX`ZHfh%Lexwc$* zhLX}sbmP28Ct94Lqt-#D-GffrmdrZ5GG=q{3d3bdailry2AdDMf;JeJs%Fpe1Z)&Y zegj)IdRZZfU+H&+q%d9j7|BdwXWU5_9ht+nP)Te$B}IzJ#_WmA25NsDb%;{IG?x$x zI7xz&<%oLak)fzA0B(twF1~tbYO>z7PHi^&%93_;J4u-_K?kyES*Y0M$&6xNLf z=~V^Sa_X|2ggSq+EhoT==7^FSOZS@_tFsQ)uI&JfC*a+vb^lSzC6W< zN}{)858;ONZUlB`c42s>$~^=M0t0&{Z&~C9d>PY?3Z&YTiwOaA2$>sI9J(XY*esMw zATWT8c5EM!kX1?6q)*WrxuHtyI~{^)#!v#jt6ambI<|i-TdkX|9`c@Mt6@#K1pD^X zpMEyEFx$SwbuvPH1ee0d)H2{)bHzs=R9|{rm@QkhKdDjAy+?nk`_+$EB)2~xyyfC=oOTtA;akuNWH%0v@vZ&e2M7Q0Z$1Cem-EHUSX`5O zC11ySM-HL^RH6@ELjfporaa$~U&XI2|LVfiw_CXlL>roncVyI&9C$IIDWflEG?&bv zkt-2|s3KIgBi|WYMz9r;$7kX{~W!K zUt0OO@4NUV$P!Qx6ciK%MJ17lkwi0OLPlpu<5WAQvDFT`^j3l6_C@2aFf`Wj8p!_)Y{sZf~ete(L^M1e9 zdaZv)MPnsbB-Int2~$Z^1TYbg#lx-#x~$x#zIpko(s?_0698jHxJF#t@p>gxdR}dI zh%f~k-<5A8t*s7P&=?*+s`QH1oUaO=5nq_+Se9Dv1ki(NOZKJT&ayB(sVYKAvX9(C z7g7e%J=mexh7iv^u%mGI`gw=bA<9u#LtN*fEY6B&rlq?Q;c- zAj5vy%A)e@Bj}gEm42qEm>aOv?LC0zqj_j@LVap`u8nuU?EN3c{}A!R$#))>KDz`t zji<;_;e*C4z$}{Ms_Ktj$GX|OO$vV) zV%Vf`S}$FjTU~tpy^r2~BK*z!SKddIDNhgN2(yi}K1}bv%W~{z3!d*kk^XgPc>sF% z(Sz0RZoD2^)w`4j!C(i>LMTs@QhD^2?6NF49hrh8H!}w5V;FU)YH!rhv;}t?!vMC7 zO3M4?>4D;ZZkk_Q z=3A@0lHjH2ofv$ACYenvjq}AkMdpJIL4j4WA+&l{iwzWOpR>WI0*bMdDdT@x@-#7c zY{C#ZhMC$%QxR{Xx#&_tPyAvm9@Pzd5^V_3d?iswTp!8|$%B#t$G+)l+^_bj_ADNW zhh&p1Fm%P{Cfmej-3orLQ)gOh@$^7z@V;~(6JXVGmHdlub-leSynfkV@kLeAJMt90 zx76_K7lE(sUl%+HeE(8DrFeg&292%Tb%$UqK1sw7F?-^LfEB^Q@vsw!Dw|UaEJ-b% z4f>jTMQUkqOCsvy&Q+3EdG?nA|HX&z&cFY^s=g>6=2bEU8TCmc?xwYhP5j!_;{J=X zUl#oL|1Drq~VH!F9s|V+pr8vMb-KSpMn6Zy#&kG_Bq-wQlsgN#Plw z0ijN?5PXRsIYjJ_pGpKN%w#cvji)5HWYi_K9?=fl;*?Z2y&(yUfKJ+xlEy zPf73^0)PQgDx4fskDz~p4M?50=C%2oqQ@UhKhkhDKK-D@x7D@F3EhapQ*G??C2>Ok zmG5h&OCNHp^Xu4kCrKyn#9!ZIdAl5vdG{mx{jZMmq(j?k8TNV)9D62rzYmN`!0P02 z=Jh<~$xHbt`UJ-2uCZ17@kkNC+ALE3;*oQ5QDs<`I@E_PvEqN^+gWj^+XaOcf2)1> z`rGyAe`w0V?T;8e8)C=sws0N4h@Eem4NX6O_Qxl8l;pW%qH(uJ^WZs$3ZFJKfto^r z=(1povoNfQSEM$i^wTFn_x4>?EdY=_XQbLcm%v$_Sc z1#|^%KHdIH^bCJ_iEZx+iU3hSuD{@ZRAVL zmv8;?kNMvrL^1iiLBwYScD+vhzn`bAEjnKAEC z^*x(;A)OVh*<9Cu!))*dsE@Qp^J8pB|9t0*qbL}|L>3Gc9Yt0UMGQioBA1zk%c{Tl$Tr)dq`otA9J}K}AQfa$4&NLdov=^Mw`3 z445P^?wZ&HEkn!ZnGww$v&t6?^@c?;Ai+uzPzTe*>ER52QciFFlRRyvK69E)Iddte z6sL@|*?#eg{Pe$`7QaBhKudFnel`5nKgbHrtko>?wn13&le9_pK=G4z_db|@|C{q1 zzU$oiQ@-?GQYfw;SpifBN_P7DE3SYc8;iG@I5#7KhWg+qd3k%(tk_)Rj9cja$m2wpcZK5bGdM z(iMyx_V}5#cME^KcP;lr2%nX%#*0v>gHr3rX2lk$Vaf#9R2H5o zxQ4SU_EnG}oPY}E5zhRw^qb2-zT%jkEbeBHdUtXw=%gK*_GD}IOXM}4Qxducy2z@` zTPy{eUU>hl^QB%skUkZ&2)`3|2R^cS=lKVZg{m2C=``c}f@f1NK7CcA6In|3L4+i+ zJVTLxHJ-tuu@jLAd~z?dk|CgjjByr$H+-fv+2{whb(;WSw_vnj`4sn zR)pz@!^esdtzpi-{vdcbg}jr{gsSw5yr56-=B<44Mz~bB9S#p6WXODMd2)3E7k(Lj z2Qx@uVW;qNd;^|MDWf?k;#40MmspCtgQ$;xXD9b3S!478xVvrZ^3u)c7ry(irz6uB zlpjogrZp|9wi_-Ov)Zh3Jqt)wq07-T5Wb)9 z4Q|zMR4f-yElM{Ze(-cqD_w8cY4qZPHP8u+oUCTHGepEeJU(8C6+}vxAI*YGO*X-Q zVf9hit@J97%s>yk20NOHI+1klFJ;#SU8e;MIlez$jn@-8(Mmsfpz!oMl}^`6bmqP9 zfAL+x<4?Z3AkTX_HZR?f?KMD#Fk*Z^p_+1?E@rB-DQUHgu2Zg}UVi)eVUCYzh-HW2 z_Bu<+c3GeT+5xKvZXF?=^2JYQN?%KV4I|s54xL@^X?An=#-lfocvLyqL_m_O2|d_W zVplvBu0tZh3YgMwwHquFhcA$G7~CI(w8V7~)HD`d9lsXAg`DsvYx)$U{@A8SfA=9QiOP3hf#(z_)b zZdEpyev5%8j=T8lIu{}6IBGo{a7$MM3;j!2gK$mYq(prQ@-$ugSOO|kzSn!84IyF0 z@mP?wf8VbUi+6nM#mBq+@)FN@$JlQXxNDacHWOmL6-us;yA_Ak!p zrv0VF&GCOtO-A@NTw{5lU@J7)6xt!EHl&@od%7;5XaAs<`dS@Uw8FB(0U?Y)D>cg^PixWag z`H2(pnuH#7KB1LbLz#$k!f!&9!JJSL+#f05>)3U9=RYlsJX^%7_RQC*R8CF)Fh@%J1S;<_pv1gbs8|{O!zt7PgAee}LbRuQXca z)*JdB_05Hv)xPy!3vR2~-E|~Em6Q0?a(o+dK2m)s4ip}W_GIp6@93W8=t*GQUA^;8H{#Fl|w7@Lk_7$y?@s8FATmn|);9DRcy8K)1y% zB4kk^oEmo{E)N*lfp2h}m`POCeV=+Y4IX`sKy(w`mu&We?x(&FVx}26@Ls zQ8U}4zA+b7532C$wmH_^)V$6hTUD5mJ97V(XbnJ)=^``pewlwegGH^ScO+sFI-~+q zlYopbM)KkeSVe3#wj))V9*V<-a*ig0N*Cw>!%kR#`QhNspq0K9eOaVZ&FSV#b=^zi zP0QX06hL+&#^Oa3QMxy$`4r{kz=?Stli!?!MJgk~NbRm-v&tz5&OjOvH)5_rf(Kom zHkW93WKVY3exP%6+*FV5Km&9|kk+DwYr1PQjMo~Ye7o$B7dx0F${NiN7MwYAT~K)O z1aFdmQ+`63QAGmD+{6}Cxyw0+RToSZJ%6eA^+fh$=$ZMAb$M{p=N*Ao6I2=C32niA zVa`c7Z7_{;a*az(17jNCt-F0oH&#Y0^$xYW;h^;}7#Q$Y*}6Amjsc$)q5&20_3=1L z-O1{+;~7=HM*GAjb{)Pg_FW3L?%fWUkRhyp3O#|~AvGu+U<}|weTWJ;3uwdirqq$7 zzKX43o5)nUYFguLDI8_nti2FW6~hIt!KxCFR7F;Qf#P&ymKEC(UzgFFi^O!eal0z3 z-imZe_8R=)j>kB-BwI!rnpQ=2eehNk2wjDgg9_9XmXo2+2dEAE8Z&RvXP`QI4+8Li zL7Xr}$ZF?}zcpIeOdlrI6Q+_{se|-BvMLS_u>_<$BQKrfzxwkphTc22#>eADPxx<& zO@KQcn20Z->regU!XL_iUh$6~d{lbr?WD4gFa75`EQSz9byOKxtE3J1Zm+M!Q@VU? zUEkh$?wQrE>30Z+4XB1hLvkO!6IT&`KNcrEC|?6t9qYY2;=|!+`=Jk7nm9sl$Spac z&tYXMlY=-bmPIO0<5Tzv!i3UySFPeg%;uE z39EPflr1co04(ZokTZ=_nsA#7Ho_P>a**sN4=Y#NHlA3oHbG99KME zo+!pq@#VPd5$V$9Cl6+B8YNo}FDY^@wvRxil%?oXrQ|-mhg6p8p_b9TEK%NZfAHu6 z`Vi0Z;Ja+u&^Miru~VPDa?I&XVz&dJ#|u(>vkE!e=Ps3gd9myaq=<7SSbXB5wrn_0 zynR(Sq@&Kii!e#khyofDQ~ z##5TJ22Os#d%uLouEyZP9WhrC>_et=(9T*{El;dU%#KarW|vDGhN0y+c!CwHk88vZ z6I*EY6hn;f&;&Uju5~r8fhO6GZEw=A^|u}=58EJAa0tALybx1=aqQ;3#Bw^F4V(<8 z$?!6A8-W*9>}uA5rOw%WEq+$AM6!77bQj$@>Xh%O4upsRNQ&cP8}OH7bb$*{70l(U z+-vaPr^+_=V|F;b5&Cv~Ga5!?>R`7lV2 z+9D1}2_J*6t|dYbm+f_bFPdMOXMBqkD{Di#XntvU z@ko1lv2>ATa=B#33=$%P%u6`{Bb>?4*5{*2ctv4OKk@oOoyX#C*e`|1P;H3baCm>f zd-v!vJRc$sgaZVB_a=EAxlz6~?qzNFZXzwdWw_Pkv%-W41F3b4hgs8kW#?|cJ6^)1 z>VRAR_5-zlM`0f_IA`0I_=|yAww|jU(ZGxi+s$D*R+}oxzI`&x9XPXHNIL1_*xrI% zh~ts6Ng&{B3pRV+SL!J-tjpC+7CF~{@IzeOnf=Dp9~U%SA} zt0BYPPt_m30CeM9G=HU=s{3?e=)3yo$mi%69U75#Mk_I~c9_1~2h7Md=paysvyi4p z{LGJk3bg!7@2&j6f9VeuFRuLCkM5Uo=)7>Zn`y5;b}*TxXx8)n+~jY+E_z)596K5K zCP6XrX2MjtdplBvaZ$>c^xSZ6bphnee6jz0<0&CyJQGYdpau>a_M2UcI@rs4ZOsbB zCfXJGC6Q4yGFhJakk!E)PX=S_5e#HiyoOAFNgRUp89#Y}oo!P6QQoF%(${P<_wbNT ztdP{7ET+k*A&evx4oX2zn&L$NDISAFz(S3OBgks-{-JNfYSC@u9DUAqH`Cj^XA7vH zBy!U;v%kcQ9_xLmU-*`0Lb+&Q6t zJ1BlaIjNddO{h;ANm6EfT$ofepKHtFXQ?uP3^n6^UPmrFLlkFO|JB6VKb@95e%LgX zKX+~6lh>cTTvdEJMb)d#qz(Ocd$==Bk?PAc7XN42@5&!uesRfo>GnHGrG@8cxdc`@ z%aPs^$9H25L%Ip&ob>5~)USIU83CO5M7>uZ`3|JHjwXF(MGBPMgoad#aTb z_EfC~Et36?!;YW^#>Y2Oc`R*Sc{V%qR?arZkrj%^WA#abl>QWTQfHjlH)X*uH!K^L zFF%WweEYxO`OBS$9tB#fFaa(w)PiinTm$)dQ%0CGc^*}s^yBkC{5OH(G^Id)%N|Sw zq9sQ+5uq5ae`rm%vN3)3eV>NbVTO9aj5;WTL_ygLO5k8?Ma)S5v* zt}Pp*H)}lGf3oZhjdwrma!iAdregRI-JW>shMw^PrkYb-*0R^zcIgpD9Gk4jC*VJ*0cR|DW)4a1ikI;HPe^s-$-ZZ3kq}T zCRsoA{RiV_8FiYzOt%Jqt&J{Pl!WOc-=ZrsbC`uW@Khky3V9g49MhUuo<_-Vq*s#$ z5hADu`XsFI^*gF}JdlngWwt)AI=eST4%USLZ|@GvO5JR=kk%`V5`Ew7%jZv@YBUpT zy}P&l?Y>6<9;?AOlIS!hOOcPut{}HiY-zsS6TFA~)^jDNf@E-i@5a1TBU#k{^V>;l zg%Lk5(bcU8k2`pqL*eLfnEVqly@|b?7YI!m6+{M)^eUwnP+n{)MMmFEG_nxIeD=J--Z zG4v!oMM7$SNK_}9;s@iXP;Y2EjN7l@8L)#+?Oym$1hK@)l1+@>TwL}PDIMm+P}53S zqd5xl^r36LYN=|ebA`Ol)z`l<&r1v%WBJzgeM(^Rh>j58Zer+x5f8_&2y0?1658;J zL>%*a!7op#((2*2!ndM)0D0_DP6!@DP3lXrWR9kP)Oq?|%hfmMxmKQE7OL}5-IE8s zkxzk^un?k*8jpPbTOQJ$%Xd9G72l1&32U>f)StdCHI_No!XxNwAPLu((wi<$<>R}_ z%G~yIS1u=A{lgUs-;qoR%R&`UuX|>WrM~+7tM8qv50%b|4=1Rq8?)9|u%{oqsL&zJ zRh}t-z!l$-KF;ZV`)8GjwI5e~bn0Q&-9q@;uHy6OP#hJe0=9^DMf=>>J@w|$^X0F9 zJ3)L7Q+F;`If5Y_k`D*At5=2FoIRgk8RWu>A+%8Qk;4aixyR-;2)h;|i&c=uQ!CSJ zvu|^syp4MI(rJ8hKaO|oZndXqr)ycq31+K*SN>iW_|`r7tM91K+fgwuECwkz3IbXM~dS7sTvjNi=wo@uvlcfv|q z4ykT_`};>T@}}4M3x;{wvSI6dpaoikVW)m{^5OZcGRkRg5((XjB~eV-54p_3t`tk; zNl5G)4Gg06m=3tt$J?r2typDPkgn^0A!J+~=HXH6E_@g8&L6fOD&4K?ZL?y7%*L^g zZCcGPt9lde2|$}LHSryk_7ge$FW<>HQ&@2K%o84=p!(#klkJ%xs^LK4FqxYyH&?FC zwat~UsLd)1V*@Z(xtk!9k>b_<n6!mTziv-VWXh)Nj+bIiWhtKq@<%kY~$(7O?2~ z8O6VO_oK?cUHSY+U;L1Bh81rK!S}f?i$%U7pD};6Bl-XS`iqBuoOtg^=%s9tV;k_@ zj;J8`7!irYnlIWev@r##@MMr6j|m>hqT>O|R`)t*yDr>`kq|*5kaRtx?nHk<*QsD3 z?kxK>mpZ;5T3FPUF0?JPOi~knb++icqpxBng>M3@*3JISkbQjju1^F(;-&Qa$7hxy zkQGswoD@863SE^bNVlZnvGiC?f(kzYNBP*B^7Yo8hJD9@aR2T;Ggt&%L);CN+AQ0n zd)0yFK>4BVP-PZrq)P+VMn4}eimgJ>;asE`l*c-7tTY{~g@woH+$PU|{iqAmlsrkt zvE-z(@a=#j)Bve~%s~5~@UZxJuh1gY*hZW$PK;2yb*4LpK7G?{NSnXfb!=oIt!S3K zQnSf&84pEBc!Dp{M-pc?7XI?$&wljmXTSL=?b4+}Z3Z3}4wUVqfgwnrnK&Jqa;nf; zv94*ZNXI=ULuR-yrVYh^g-r(qF1)pP4QDGq;Ko=I)WjOxp!24|vI9VLI2NIs&_`8d zKRLnUe*D(mcegKn{B}vEm=HoLed6tsopyJQfA~-!M{lHGePdOPEYYoU zd##gxsPZ9DsEK7QEf;WP zbrH4^{o>}-y552swSYy@s!UyU#!P1bif1T?ti%!J3lKRs5%y6!N%PYE-EsHOX zgOl)yd^7;L3ZF`p((f|+VykzlR?E7`BD1P?_^xWN>rfprK#SvAP#=Z0kpP^2G;TGR zuR9w9IpHCg$9Z{w!Le%Ha(VtqAr)|Z+$gy+vzMW!PT_js3{*F9lGd2gm&VK*&!plP zA(M_V9e0K9RP1-{^xK-F+B)W*x{${4%qlR(;+I@np8@x_90hQ z^T^p5y~sX&NJl#o`$(qLhMdCeAl;HVz~E)uGVx>`iJu66##`g@@tgy|?%Sn!aJ$VO z-1ZGU`3-rYeuKBuWxl5kynOn)!Q`^L?4w>TT$ebQpS7R zRc0%Bc*2JVL!6@kjDc>7Gx~LNNR8A)v68HE-OYzH<74tc6;^#&J*FSuk{w)*vEu3Y z>O^FkHwTx0$IfIW35d3I^@+H`KNR|M@q`Wx3EzVgq3@t?#!#Vr$Y@A?z;{gOJKt#L z+svaoHkWj>-!^Q&vp%ubw>`EhT~M2SJL9{Kz%>+}NKex-;jHG2#td3^HPez+n0Gs$ z#SkQiXxgm%S@6t9h#r0P$(_mi7sU&$8@QdxEx;Uqvhl5IQ~i3Aqa}!s0pjs!%F##B ze$X0kN$yV`M0+qgiZb1H>>f;?aliPuPvT=qp<8={PK!4jm=2qvNQe|(hZ(^JVjnAuX2sG~T4*QQ9f_)prM}Pf)(=SHR-*IQGhF*J@Yrv!QJA9)dMy!b_ zPHV`dFwW=yvPgfb@$>)>a+<^`VRolea_J{csk}g)*=ND;;@z^94^@Aa?|K zG^}fEqP6-Zg{j{?9ljqJceU&-LaGwR(*>OO`JB=(i%fC!2nhqw?w+hZQ(dT}(vJ;) ztvvJy;fO`TTO6OLK9w7kjM@Apv2n`c@Qz0$he4k*@FX;RAhzp0gHU~fg4~rXNmY_b zL^i2Bz78iP){q=A4S~@>KC~wGNeFZ_tf@EXdsb*Go|86`*+uB`lsJ{ar$`+*eRyn* z8~QEzesf3?xgFJpr4FZ|c#XaL2%^S+kI>5L)Krk7BK0P>rh%zVP~;T8t8Z?I6kG3Nr2s}!OUO?W#>B-&=UwvxwV3mLaFe3{DR0N4q63THuEy_!wIR+r78B|jT^IkH%Nd{t6kb)dzY zZ;@|Q*h0>(s4#vCCqOBWYy2sHVj{LLwkEzYr8N-`iji&LK%$N|%nlY33dUJ=?D1SS zwFc3@-LiUhzC~02x!b7h6av*LJ%taGavvP zMAES?(m17#ECI`W<2wqc&NB!|i8K~3- zJNJ_xd{lY+^5+#RRp;JoKZDC^qv-K#A@=5smi*K%!;HO>{9x#R`QN{K=ze@*25+2n zn1W73F*1NDr!}YDqU&?p^DSrpz|SeFWQd3iObr4Ly%x(Si!w+l__#-~UcYbG=Iyd; z){$FPmQH=m0(Z7}xnZmBIM-;wl7M%Q>fmqr+@d2Es)lrzA;||gLMA7vJgz<-NT>lv ziMr$_LMKY*7;@^Y#2? z{KlwVu{G!}Je0x~W2X`uvs+94`v=n>e16%_8>LOePWk}*xLvm^2E`MH7@F%AN}Z0KZabo$j7IDap3_(6KXN0E&^Nq@Vn?& zo#X$0|AQ}KkNeaTBhzm4+JeDIJyJ$&$*g6lb9n_NoTYQ9cYbqWyZ}cGK(7J}h$}LA z!1NV{1QC4@9*P@cha8waX!hH%7p(oF4 zOx3&9VR39*A~PMIY=)P6M_uDl7IG2ZaR~Zy4t(Jj^eC~Gip!kNFS+n;#lQaeyGuC6 zFQZ&vf3U?fV#OLh(+sU3S9`wyE( z{f{5~>Y)BNmy9_EOb3RO)CrcmShH_EM^Bs`{neLOCm+n{j4H>t?{0_}^#ClG6Qw4R z7#&%aEH=|eQ;?gZ_!aA7!$yv;9$u5sM+wn*30MdjQI1t(7Xh)CLy~Q{;*Srn{720Xe*WEu8*kU8JJ2OZq)mp_{4)RXZ@)PD{N$g_|M+n7 zlc&Fa)v>I!-wl{!C`3x;L(Wh5UtB~LvgwV9)mS{D(bcj!>Cr&z3D?u_=W&_BSVE|O z0|JXR;oyWm%*1i;ei$$Yy#5iF&jPLv8OF5o=}%`q(@bd^X4R_$ZX)y!zMbC8={;FZ z6Q@b?&YZn|;qaYX=c+Qf5WcI-W7(%WO&gs??Cd>_&{*$i3=l%bgI>SNPYL8iTjJm; zIO0^y&Dc?7yPIXSnDq7%XRG&Cv$3&2LPSzW3ENMloe-RoXLO`B=Y3pKcR6VI3o*Xk5l>loELI3o2?DB#uECc3DBC654##yD=|CJA0zd>EH-+b6 z?uShKa%<0A^=jST7)%Opg7ybUu711TRUN6qjU-p&iqS#5gdWVhbjp7+%pOno5IaHR z_RtEj;n}WQADm^)_Gl)5rn}$VG1i;#R_;CvQJSdB=*_B6p_1y-)S1nhv@CK0AHj;P zh&8}u!77i@W!xS0&<-EK#j(|(0XG=m5pxq5ilvZhC?kpK5Z$&$HS>?p9{oZwqlUd1 z)M3|0cZVZlxERro5mFwqZu1Ju=0Et)4`0=#)P8(UnoN!*1^d^3g`2}$Hw}-U|Mk1e zQ}I zuBb1zCtjbVO1n-|U=(5H5iUS?;Z1@yy^U=!=-_7QF0fZ)8#4`C#r}Mxg%qSQlSH62 zrV~|zRV0O|-RU-edL^xuYE8lg6)R+Oowp>w+ZF5z4kghx06d~P9c!+QyZd7ZQCx9M zI+Tvm5L)mgtQ8Bub^AGoE$Aj}6J*dMwBxr%cGPb8!TqQT;lU~hFw77NiLazJ@)I=ZyC=%efil;_oBpByIZ~M-LD5U7*6UyuI23f+qd{@7qzABc|%Z? zmmSezN>M_WXboJKICOqav{V9rrjMD45GE02z022yi!KQ1gg zbDmpE=OZPD07OI35cOfp25Ys!B3bQUGA&dasapzvmuRzig}3T3kJyl|@k7tC-|?tI zx-qkiJ(+J~aOsrX$^s=73uU?6w#9Cf``BcC9KU7z+R{DMgXz(EmZi#51bA?@Y2g#< zlS-B;o0cm}=>YM_2AC5fbXF|LXD+|NFV$^wJ;2cnq!S5(MUcrrbA*JI;mD|NctzY$ z0)RVzHYgkmdpA01@7@r3*23)}LgW#IijpQE$*yE+Vh2H%T21PMfPrCuvzuYASb;6e zj5X`LjXEpa2_E~q$41|4LUiKlF&#J|!9qr5``DtKTe-npb$a8G%sRCWTkW#oozf;?KE)*9Y4e|FnHiUYAxh8*JG-sN)b`AV$&o(7O>rSmq5nf_C0kaErCkY7T9YcEG)^Lv7Rn;h_{5M+_(G z1gxTJy{&K%yY+@t$1MaIBUaxe3LVU9FiNF&jCsQ|VmwhyGna#7+qLtGxDIiTL8 z&hqEGEINnG(d%vxo8qLDx-3)f{cLKQgFJ<9-xvDYAorjwAP=ta+*#9`SO)B3sYzxk znsaJYi^!GIjo=<0F+se`Tr2$e+&5>p-`Y4o$>ZhWG8>Wr%n01;bNH?w>BE$N0NdAb z_|VVZFz6PwQ@W0&CWG7vu4vY4JspR}!zW=bygl3l1u%}-PAn-Ugg3xS!Lfw;Bzbx- zD<=m}QK1A8aIfF(2=UR~xW*(wW+kN<6T&)>0|#O!+tNQ5Rrl#M3mwPLzuv;N%Xh(p z-XM2h=w=_>kBq@WxQV#y;ch^G5hqFN$f(O1&ne?DdA}?AoO?f)n@&ybC4tb<06Qo= zxDt^=b^abx&GUc%%U_36A5A=Eyn3V&&Q-09Y!?RGVrt^)N!=8EW+eyYv}T`Yf%%er zJx6gmsZf`GoMQ2pf}n*oXHa3^+*tG&t4*3s!1oBwC8(&?bY^M=R*Lk0#c^Y|qcw28 zr(&VPXxgmWP^_?*NA#g3hDGNdjo{H5+-Q7xJT{?<0;ZSc;7We^&L2ty`92yqt|5jD z5kYnPRx8KTd>A}*g-Zh5P3P=~FYdjNYHk>7%>7n}ABGZQ;e;wuRV*FR2fGxV55dDa z0Ep3GRHzW71KmWVrWn(IhiP>bYkUV#8E%2qBSxSO$bdJrQyrv2wxj?2stOfuIkJSt z;7$Z7<}$2$&*f0NxjxHw%|^>+_ZDl7Z^SMs46<#UUlp(&RKcx@g3O1fn$JxN*4}C^ z0NI2SK(>fkPOC}?k%8RGEMB7PphJI6d2;O4|Nc{N?jNs>ee%73@J)}tb46zb4?twg zu|L&vl&4Wez32b!ol6(a7bqxJB#339$?*T9K{ zj(9Gyg~m?KhxEFr8;VuA#juQ=;m=lC!1b~DQXON7x;nKU+8zj%WB4g9rjYf7?SJd= zhqG6HSJi&0uH+Vf6Ay3Np0wc|e3#Uvb%}hwy&=n}VbCNvu2b=fWN~D^*W&U^!gRmS z+GNshckS^!VqXC6!Q0Z$=U*(oTT)oUGhNrtR!X#sE3D8sHk{LGpm|WEn3&> zOw#o(m+X*-9K`cT3e0#!d0+gtP}BnB;xb3t%en(uI4%HdA*Lb zso3v<;}d+z+Ehyx?{pIX%K0lLB}Eoan5AZkS$*UwC}x@WSJU^i=)#_#g3)uO4ucEJqj3qmF zj{>oh#Ev9>av76;YW`$(iuIUDq)AP&gE73gPE1uo9fh7@qSvP=aAMf40C#uNHN0nZ zI+vvj_;tSR+7ec&d$l_8$*D{Ns02b?0hu_a0CY?@BFUlrsn?n=k(51ONNCPrF!rLSaN4 zV%sVf_^T$D#jkS;*6WO28(ki8KpSzyz_2ik4y+?q)7sOWaR%f~^rfKCrQdG$)P>bx zcdWx*zQysh261~0>y2yrouD5V+K%uOS{UqqoO*0)a6Zx!xPPEMx(0A#^3hgw4{8iV zCRS4$@a0Fk03X$x9HbWGM+v$VJdqYK&vrh2KJxp&y!Wm7WxsyhMi1PHsm2GBdQ%nI z%{)%&eB~EEy3aGAC;ja33{rozI9v4WQ+d%d-J1rT#-Oma`UjC>a!$@&Zgn9$FPJ5N zIiY3AX`@7S;v}Oh2M^v+eKq>W@zlvNC3dP!Iq@?6l}Srl54vvvgE$)vV1Ha-EUGNF zl{`HApJiYF^fy1h^%c>CjMTY`jWz>datC3*AKP6ZP!u6$F= z64q3;(dZc8GXvE)A+;|1JiGY>jZ>K?V6dr3h{_?@0s{S5F;2Dn_PE>EuMJv7zc_QTwD1Q{_+@9W7uV8)?#GY6`ugS6%jfr=RD5TU zf1)ay)9C5u#$6&{jknO}Pth*?;r+ia;_pt;4}0`I-=F;Ae-8cr>rYiy zJ;`LU2wWWpV0Z#Dg%Oa4QwNEEBwRTb8>b-*X2{a`u*UrmfQ{{eT7vW8-eA8|ystsE zQEl0kG&0iU%-?9R4eo{mPeMpU1F?n3Jm@ws3?my|c8^2n7DptgAruVVAJ-oOwybu_ zAr@0Z;ilSBkyJiSmvcY6BM!f-Gmz#6msJkVAseM5wPxOBme8ol^>N#O5oV+{LfO$6 z+bnfXhg-ETb4r&C)B8%3ma$HC_4|CmMW6@lB`a9HMV0(Z=lTn76-@JY-x@C{J29DY z6FVLe?YnIKixcXC=f8LuGm<&{)!*EYYLtBoienEcjTt2hm>(B@eDPl^wtn)>PyJQ5 zgjddqvb^EG>C`WOD>Y1i`4+3zNM@2_K{2$WBq2GsdIJ0fHmfC^4#N51J0G+e(Ho^ zyCSQaaG6;+kT#GgA&#eTDK*g2b>s?vyUNUX^TGJpKSl39m3^qp*G?>$j3ledI|I<; zE7Q*BpXdLs{6Bwx^8Ua4-&K`ouCU7r?laAZQ5*kF>4MlQ_E6m+>(r{qfHaBBqibW! z6Dzo#VF`4dT@*Hfipn_>?O1l1K^43)K~B>$P#FT6gdmA2^MtGh`=qx#+#FGcMt13j3p&kjz-vM3VW6W50B$APGSa(}8z^yf2C0Y}LzV^LE~MKSyas9Y_L+tZ zyk(XFwgPUqcx1axPL6|R>o<_r`yH)YD31zoVI|ZCc23FX!nOBP%7%+d^7NTjk}K*8 z_aHlek=>{suoY)jMXYVN~e@2Jt$$E%W1HZ5Rz+9e)jphdxD+W98@ylJ@u+kHir6wA%*)-A`NKY0 z@H1#1rUe8J**owJhry(;vH=GjM+4Cg7$3R_!-d5MrLY_5DYT2gVGMA*Mg1p7(y!yc$V2-#he11IrNUVGOtXxV zq0#6l!h?`PS`J$SU9RFy?skqZ>@C}WzYM(-KR|}#fmkkxC-qW`6MF!CC=}O78_y4) z+rGd#0Z$y>_srQ}&Zw+27hZ8yp_$H=7KdUF4cx)9iFeTDKJAXe-vlj=AEu0_(v!i2 z(O3}0it|C*{muJ*P!Cq0+?-j>)KjpyLAdfz;lgh-_q?8gEz|ngrrKVzC9|-9%}h@o zjE!-`HRAPTJaGt|K};Z8Vl=S;ZV1w{X)%+0*cfC2pK?2cpE`;lSv`wwE7nb+nQZcH z14m-8KSh|$$?8g>CW^5=a4WnN6ejhNS;*1o1xVpht4rq^-WS^Ybew|#-yn?oS!LquALrQt?_n;tHBe{ zGDIu75^2UvrpmH-%rSZm!_H~mqsVb$8Fn0WH{jbU+!%BYZeIrUpvhPXvL4*xZd;gp zbN!7(Q#2P@s^>`WIJcAq&!_I@iqz1XVy%CUUX$s0O4R(u~ld3-)$IaWESu z#_8iOdeJNWHvTpzP!ntq^z0E@V{&Oam&@fV_X&vPsLV@qt9+k-12T9I(u0~pYBo9+ zJk~=0WK0s&87ft^uiK`jONAR31A6cS_z0*3Jck+~SFvO~bN-E^{*&e-%H)|{azNu9 zu(mA|R(0-1|G?(3z27~yZTE=ROC6;cOwH4Knxq-%+Uy64rrQ}3pb_PjDQ`k*dtaYU7jxBkU6Ss z#({E1J?7GGAG|TXiCl(n_6_O>m%42|w$}9?3u{g3@qlZ86YOa>*w$2Hs9?EPcYVQQ zSA?Yq32Fcty;F&Ge7iddUD_;^Q~vT%!pX*T9&yQwr=cvwrfXEQtorU5NM8# z?VG^q$T~KEJ-3)&vCor`4>QG85JpLTFz$+a;;G`-FNd_P2DF9dsoNFf6qI&CE1-ls z(EzMET$k$A&rDR z1tl001h}?1TwEEH3B@5bp#dAi)NAv)$2Y3i+HFmLwpMM~6mt=8H+Z-KbhJHMhAvE% zu+aygbOib`&=4ZP`jZ))F`giskp7P@thLZ~tIXmqMG=;rtuJv9Lz z9F6b5LXfp^HgW*%OKCsk70TGf?yH)i*F&?6#Xf^zq0iv58MaRZ@A~gXMc7hOC7~0S zLy)9@lCy6MR*z8&8?qyDtuQrdB&8sc32}MJ8)NQT>(l8H#i{Sk+&?w4J9b$qoUdHx z1bPsq6oBK;k#w2O7A+vp-FZ*$J0g>l7czXTK+YNrSuh})`wudc93(-pJ zWn4#CR)Z^uHG)mEi4ID4RPF|6nT2K@+o2$T?m>jk!DZDN&xTm9b6weEtg2KA*#ed$ zX;dETM)ry9&V7?<7g@4>!*oI-8qV{HTy?%tUxCxB(x}5oA(RVjW|MN%Z z&dt1^^xkhphW&ea9z5WZE~mfIPIb%)4B{oll1JaMC|jvr<=dlMQy_VQlF`DdPrSX$ z@U*(dJT4aaY&6sBr#~zjC0(KV;4#@KKjopXrUyvo=6~| z;}P+txLRn13vc&r^L^Uo55N2QpEv(^`fka?Ta%s{?wZ2a0jnSeu-BqZAPZhXN3wb{ zC7C?{T0o`0N!5fP9oTn~PNj@9cjW6V zXK8E#*FZKCTN0#X3EjnzXZa3%dAROqr{o_z{8U-5 z?VW8h0Op`=aGL<`i7!k;ADlV%f48&5lD{2oq!%R!ljR)FVQOv;fwrW4NqcM27p;ib z?5_KJ1R@}H#tw0Z5LxWQgDZmWkd6CI*AEugKda%6kCq*yCpOqXr_kSzyzOOqf zVX26A$k<*DFE?ZR)9VfMb$vCFlUz%Q@fCiWDxU4SIpw0ev_AfuX_0!)U{KJ2IfB9l~>aqQ`V5#5XbJN_# zK^a^?zRmni9=_mq;b&)l`;*!K^ZSeb4~8=kSOuY!tR|4L5i|~r4$^&q@xk+N9_5dn zQBYJ*XLEF?G-b15ONGA!4#6^_<$J0&h%@6phC^Tiq9MH{)04oB5X>m5j z_!xaW4UjuWy!Qh)BS!cji9ts*c?XJf@cRH7BK{OKA95AZPtsCpXepvEp#gUuq1~WN z;6-}ZF?S{UCgRXzItKOS}| zK7K1*=D9ngN=$8{nSe-+W)gEhIf?w>+)vy;K6kQ)RZRELis?EEG&*Pk7Eh@wpFVh2 z^s4FE@#hbwuKsXu^q;=}Xrk+F=}PNn0pLWpVHAmseYXXi(`S!f$)qN$QaiI`oSQl2 zg}f7ae+3NwcqSRHah0w}W?N^3D@MB2Pg{@)e+<=x+%y3Lg^MJz+srGt|Kf4(GBjchkfJ)Rpw zOcLG{y!A~-W=k~e*ZHrUN~3CzUaS;jM5i+He_Zy+0D6yvI6*;Uq4&s%f(u6;A1Ti* z<;)z&5VRb>a2}nw3d+N+D1d&O<-rezik%EA zW21LF81Ze%SMoJB<*(oL%&8UuQ}Kqvf1z{d05s%G_*$?DMW9HN8VP)2Kb6I%ALgCT zD1BM>vgoFuor!~8+Xnpdor#zrt)B9JH{TH+Bn3#x&6=e$!@zRHV%|c5`0@1=YSK_*K@yZor8QF}xTkO$LWXal0S7sGe{~1#Y&@eH z#IQ4#6V*?jbv^WqS578;KmFj|qfuq6Zon`GyjrR2(-X{cmo#)O zVs((s9wWgais3MLBAV1ee{Vm)Dm-!K{<$ZWTNVHIv)P}%F4FP);s@54>U?Fk@|TLh zk7?>ujsD_d#Rf6wV;2BxWHO|nLC zUW-aG=oEls&VT>(PfC~1Q1h?lOzyjqF;3R*3@-U}rAu{2p$V}jw~M!_;b060ksy?a zJ(2{QKt-Uda2hOv>q%-L_^`f^+(cMzTpd~ot_j!6?JYZKL^YuaLkwN{8+RFkA+_VSu@xQAVbt8%(? zZ*w)7L&S|;X{bANHgr3B9Vto#sHHeru*lq`X;q>1Ml0Sqe{MRj{ruH~7nQS&W&3ii zL8zy$UEDMWuSB@J2uwrjmHkOa&lP_r*}3rZU&W-qsQOa$n?v0^AH$3rb_T|`y8e7? z;m@XTQHn(6-0M3Uind^;c^WcTWU2O@f>sjHjACvbclf}S3_T%$>4l-gGofnOb(|tz zoG4}9$SLHve;;C{drpe_{$%kE55+3OmUGv2KAblhTu9qB#et7$977MqneKw z8f-kDFVL`a(K%>0`YccZK}CX+>QOmy*#Zp6j{ve+Q(;*Mk;x;ADN+eX%DF3I-z&e=!~NP^NQ<*_duxhcAG zT)eN79;CJ6iLqio)U+V~V=rnT|GSb`%?l&Tlg_iRe(-`>wEef;i*usLfSUgh9x zA3U;s-8J_4n;sKw-J|*L+tmA(am18T&$0`>fBjn(Q3}>Von#~V=MGYnpppI^Hkb?% zBYFvf^wNWQgs}uq9(fwm~b`*9vOhp?c^E^V|QB z-H1?FrmM79kL@V#Q~&Sc7Z8O+ucXgV^Jo53I}HU-9NBXeeG1Y7ub|-K?S}FJa0>9|>ncJoRQ~Fwn=edsFKYimkf1ax# zHhO5flIO=26Jz(}e;PaWec9uCPl_HBo}pg%=tpdZKoLSk9%EJIUl5%u_8k~ZFowmR zCQuW(Gs8}2rxa5S*FLE|CV0#C77MG4i_4gmy53Cw6Z~dVQsK+>&$FvS@G! zf>SU&K}Qr2tCNc2mB36$22~^tvRYVUX@jYC#6DOWH29-V)Ncq@DxnLPeO$t$I^RdYpw1g69 zg|A~n;PPyAf3Esg_grS%4h9m8giiPaAb==J=%?_q6r66BF1-n*uzs$(r9eClOeq(x zFKQQt-l|`ey)H9~JRgI#3FVB=oQ>n5cOIX+C^!1|QcLw)zMF z8;?$rCbuTAiR^^Npx)l#R&L(*_Xm{$yQ|L5aulqgEd+PxcJ)pNco5s3%%hePo8axS z4v+{_N@^!d$q{TBWO9@1sC8J(qsAr!!FtUn-5K;6{Br;o*^Fc(i*U76MMimgD@~Z# z9B;vNf8hm0F^NI&pb$`zUA3q%>sO@<1Jm`>gaxSeqE8Wf9AkodG5r)a!^)H;RbmEk zXk-DXVQ)310ebK{SdK2=QO*fxsjH2?Q3wv_N>rpb?kDcorI%5p1aX2r$(32n9>?GG zdX^zCYhOH_vCQ|(kFMw(Uf+OqK+~iy(91Ujf8nCIUV@m^O>U)I*`UKMJUsK_J}$dI zWh9Z1s7GmbtnT8F98rToBTe85*vnw2z1lpaZ(g{n7cR-xnC5%aS7-Z{`}bIe4Xur% zKxV>I00q~YTup6Hmvb-iRe9!I>wZSY5TwT?30dN3V8A!B>2b9C&ja{SyB%+n`#hi= ze{h2j;iz#`xpi*!x^l&5D-Vo-5%Cpijfu$Z`i(lfYn|=oMRgH#SO}?zZ%J#(KEb`o z9AS*5m8Zz#X*g)ocwz*36^@S7tTmfNwi?e3Z`pF<>&UZ@U$$yS7b$F-21}q?e?l{P5T!>p?$TB}7F}*SuKgGSl4MyG1wx`4$*zE3`Lyv|gTH3{ha^dkn{p z9{?gyMf_!Kf9ztgac4P(#x_wJQsv~vsz%nuXinKf2RxP zCX5Q3%-!I0IXfLq*1`2=d&M>y+>oG1k`c8eF=dkV#o_XT$-~O@nON1<#%>exI-&?v z9STOCg6+VG*kvR+UIvx;s9vwP(^KnkxhA)y&YZO(Yo~Q^rQ6l-A6Y%Gxjbc=qpk=2 zLvVnsWZvLiI+}69f1H~$LKPD{f3&e|RW|it9S-a z!wjsROe3ms2)r6;4f4EfTi2q{FtkuIQ~x6IIpQs0S>P6K-}YyN%y=5De>01>-VFiM1kA#EJ~akutI|Z88N)8Xz^}$K!$|E>lP@ z-5FT*Oh;yGjC=z@t=EWGN4zb&-d#x`7<9!nu>z=qz)Blq)}ZxNK>)6tlTV+WAjm;|W9>8VDlgbXF1u?QS4zJ_dI3G#SH z@!U3ejc3f)5(A=zf3B;uUp-C#+s>V@{%RVvy%6p_S-U+48N@`;Blre#e<~u)m0@I^ z&3RvRzx3Q`GP4w$gPcOPf$ia1+k-b>J%hZdUIDx(b|r|8xB^rcT8z*F?Lp1fl`sQZ z32%?y^qmd&#;P}am#UYP4%cp1JULN@Kn8G&{SVCl_}yX(gjo?tuEnlu-+kDkuNG& zTQ)kJl~%Etf4e5P4tr(0dISJrJA=#Bn?i&+zI_LwyQL{mL0&e@5Z3TpC17%bm#$*8 zGwQOcxIEtNL+1{=3ND@g`pj=X{Gs~Lk7^jjo6r@?l1V-FJ$&HUt+kt<-Z?%5f5d;K zoVToxZ*%>!U=A3Esz-|wjI6&MsXKO)Q^CUTZ=w=#eRP5i$ZDK#b#B zQ_2}iiWDYaA9~xQ8!?N_mtTDN?X9td?`)3=Z`uqkcCu&K>x!arrD-x&lyN1!i3X)x z)08Y8hj`@Xdp|4d=R(6!+n_-*hn~AW-7sfgyB1I)`Us7QwQ=~MC~`gykvM=QhK1`| zvvDu6e+_^M8;o^?g}qXwA9*{ct60An>WkA6^&|mNPqe1GIMzdh*_zbWq!9|h5$$6n zA{@qMP00N6i*SREch{7i1AbEh& zO+$11f?#1epPqA$tH`-4xNsbFdifpV@w(ia^z+D8Ex7NW|M=`rzx?vkzW=&g@<9Jg zfBkl7xz*Xc$@kp@LrDzkK(Z@UL17RrRNcW#NAaAian|Tqq#=g~)mod>SC#5F zqq9SMd?N7Q1CPd8;v|XJvc~o)P}VKw7SHDko1=w3PG}H5f&It19x8M_A_vPror27P zjEKDyhN?%A38e&cm}=MhWYFtq1ZpzE-soLdxP>0WhR@p`4({bqA*LvymIRP4e`72t zDY+(b#Qj3?%~;z+$IFf>%gpGiY^w*vjBlr+Q~4QiZf#rk0%f;v2KF&E& zojkHSG=Wgyp8Z+@d8VEsFO6^3g1XRhlwubeZGh8|lhMi8WprnpAao;$4vE)4o|V1^ zX6*VAy~;G;>WhxmZeBaDWuJGq(a4^zoN*b)+>=owj{a}0e=X>w`_05CP=Y4Y%7PP+z)=F|^ z)bZ$rzZIP;y7casCra7XOgi&pc&}+_D*d~!9(?-X;|I*gcV6`_)Y*muS~!BFq<8M~ z9{k%;y7*`3zBuPTU6pqw+nC7mOKh#HR~M`G>ZP`2%Zhppzb3H~e^zs5#mbLfDQC=U zimkg*baZ43>1~b?P#th_oC@8CC!{rI$e2|eG0V*LUd&szPjh-Pro@ocxUkF zSC58vzy45O@`5qvvy}R);dnAXD|*;lboShA4fdbD{g<`R)_?iKPoMu}x#aXQJeLhj zs88Mh>0ft;KKT0Ye_iO^y|eSx=l4H-_H>$UHhAs;N{p0Le@0M|xM^b<;w*sY$`DW+ zNX@WLbSsV#sn{$G6d{62C=PaqjRlh&ERSe6XLoEQW6){iU<-KXd0T4T8S{Pkxh-}iB+lhD&WG7rx>yr z?DDL^wDI)8f3(u135*a*3=De9y%9%&xn`-&=vff14Y~=AUQb=HE_xo8LmEjRVHs)K z_|CWl1{^O|w9agPsMf-?W-z&Nfcj#xg!*wUVoIo~UNN}uM$aSF zXk5GnUq)yoqit&3y&k-WWvkyf8#cx%l5R3T%Q=_(n?pAae8zL1z~|4Q8eFYz zf0+l^O9Qe%1gu1pai!=7knT`B`+W@yWZI)6k<{PBg1!pKMd-g6Q$dW6=HfxX$o(z>_FW*OJRXHNNp}SEK;jM6F1xqZSdBaI^!rf8w!Q zcUs|lIgmU+5};p(M^;M>DAlP)*`wzb!nxL!y4Cs(Mt}w%CA3pKiDY6?Qdy#mET)n7 zTl4XUrHnFsXJUlbkzPt^Ky-nc?9Fe_PrH_&8&Vfz!?@C+=NmiMe4Dy(0MvjqVwrIT zz#z;_Y)m01ixJE{e=H!f$pn%bf79v?EH>+Iy&YeKT3c)~PkWSs21wWOPl4h{38W2K zij$z)5L|*UEqEZ9|FGb~u`dge`xNNlcJ1t~mu+vAi*?Qhca0(c(K}y%_~_FK#4Ey^ zd+N?5k;@w)V|3JB_BsB`{Hna*arb*S-v9oLq4>*VS2ATJE?gDzM!jLFe^+W1&+1k8 z)J9#$O7%*cA!l*iSTu*z7A)}`<`529NtQA?X=TWEzucu-Rj(6+Gyn%@V+8R6>R48B z?v*1K`Hg83d{g{LGL>#m)ubv}Ra_NS=dZ9w914?Br&n!`Jp1#TyT`|V{aR`$Tf979 zKixK0xjwuzh#)5!v*h`he|H`i8S=)m<+;54PlQ$PTsYR7)12O)+@1(PTC9X6;T}b^ z-{@bRe{I)HOj8Wawqa+-!u98Rb(x8_H33`(v*8tq*33(XZXWyLDE?q;st9uxxEX-P z&ZBZjH7W8G1eqE^uRvE@Y|u4ejk+#fAMwnD#o$0(4zZrnmq13Uf8$JXxPRmpG(9TY z8H=?o*LE^Di+#m2Jpw@PCTajhsB(gSaT>o7)qF!?U4n0Jlm+9$~n(E0%O zYTXLMc4fx|pu-p4Y;U($_u<0 zo$RH^8^r?Dh1?y4e+>cJof^-@06iv#*%PD;QBK~mjiL+h5)bilDpWTKPZgzfCA93K zcW!P?n0wU!I{w{*lCchDq7wC_<HF@WelWy>AcM7ftR@&>it0R4n0x?g23yM0Wb{=pxAf|sv)4+R0b~W zb^)RY5K{Tgfhmv@T@PzmEqHuuJfbF>S-y%u^JcNLJZJ~HK&8HMcXO;1*O+SMOdh^3 z{LSfK6uHkle>^El@p;PKw`1I3uhVR)ThZw~rpUT+c}Vs2Y3rUx*H{_btY{Iq45cHx zGV$3yrZes`(3Mb|1Wg{Hm1gLY`w;hIR&SZXIoo0LZj(0)RvYxXMd?O$xCR4FrL$U+ z&O>vsrHOJ{A?H3%%M!&;An$?9Zt|*UeqdTQQ(=H^f2e|2LD0zUAOR==HM(UBh}E0h z!x1C69^FO2#fuVwL2^9dO_ae+zm6NQI<*QN(`?w5K?V^Q z1EO_cnXg4@^a~n$G%yD~v0Lct4wB)`Bx`D83Yu!z?Qx&o?Z84wD*OQ20?G?<{2m)^ z&lh^(e_Ub}t(w)npPW;Z8{}$Ing|lK)i-E18^zj=*F(xtm0sJVDN-gp>QLNz)3n&* z2!>^7Bek8=o&U+Hznr=D-psqdI|3x5;{v$qWEQK6H=f0eYj)=t_EuXhoMY>YW`3=@ z^U|q~7@OSD5C!Ut^B`P1=s-QPh}561VbaoFfAQqth#Toux_I7;Q5;wnSDWaiE2up< zTwEVkLR6x=gE}7#b{*S^C*bRF*-)7svNSa_r@3kv+%SZkAWl%U?F-VQ*oSAUOagzm&>Rp^RWO{OKMCULF)nt$LJc` za%H;}P(mx?$npIoG=2!uy(@vR;}po6P|zwf0e03lJ;2*4wMnP1zhG+xE4{AfT?Td> z(}ZcKNSXaCdj=z|g@RAkVlMh+TM?iZZ%7d{1^XqmA&4??(cQe{n{zJoukzi+e>;Ow z37`nrJvRddur}D0&1$>V+rJHL2LtCp6~Vq0!k%BsV`{9NGR$bm98aNA=uCOe@?Peg z;VQHEu;z`)?Hq^?V&55eL07&RJ=p)qr`-n3H?4=Rp^uHL+&2I8ndH6W*|D zL#H1yvE9&M1TK%Sz;xo9XyPm+6Pi2+@Ap?)CRQd^p{pI6U4R+ePAaEDf61&ssfoLw z)spr7PUvnRPJkatY)xRpASgW9hnInbJC?PGx%k(oEQ>tAQy-}m>Y4^7Guz0M&DjRU2-S9Z^X zk+A{5hh$?Zpbk(a=|-k<-xby*rP0wkH(~B{2|a+b!zy;(jgDd(sOT)lJ_d;b8;4Bb zMI<(nO0A}<;>RN89`lNHfnaK}wQN~kgSK{8zmFGg*eQ2bS_)QJe^%O71IQUy85bd5 z%e;9ARFEWW$$*BN);$K1dSMK7 zMYwaZVSdQW-9m#qF?ECq(ltgNpLOadh3w2`jKr&P-1kdeWs6gDT`N+Ta;x0kwLs7{ zSbaMb8df1j7D&Gf-!>s*H*){D^-8H6$zC)67&gE>($1i}2viH{ylJ#Kna zYE-)M|M>5l9HHTfQb-qIfeqn?i1mpziG12w4v-zpq*3tUx^#KsjG!;WxIwDBYO^##0~x_mOd~-^&?N~HS|SXe%U|wie{XZcH^RkR9?Qg9>q?K# zWo&hv2#ex8$+V1$3?0{hoc`WcIqMw(L1cow8k&*YD?)X9sT>&Z*uO^U2%M@Zs3h|Lu1{$Cu&oNmnZG9=g=VR>*eLJvsS z5Oa{ZqU8a*f5a_ZNuTc2ciRj7bx{*Yk7^-`lB5{Hj&}QF*hHe8afN}V_Yov;F%$sT zMZ2K+pr%#l>n7#(nF`CGZw@9TE3&E%Xc#`x>Q95sDl-mKzC3K^d@p`vTEPWBfL{mZYPB2P`UF#J*Wnl zIUEhTLc%q@a`XvdO05^!S%LGgYP=Tp6edFfWOTA$9&F6E zCw+`ye}t>o%T$nwU%we$rdcf3i~c^?Abtu-+%9w|HwFH}&=jZ_#m3cOBEaDG{m2l` zOuxeN(Q1+^()dgfiHwS%E73Wia{Fa9?#bnet8+#xF>oDLnt;YRLCw1sUD(*1gQ?vC^}2XNWgStsJ*s`$^x9|e*$qJ)8kMWoK>Gv&PgP$79GSrFKbfu=ZLynx`M z)-W`*>)3qo1WJ{xr2`BeLz&gcAI^6X^?K8U>AQp9QXbwK&HrKKt!zFpYgufy-w0Ze zVoEjV_R(|iy2}rg%^#!Y3?3@xsTlpFr$GOX%&uRYFxKkDGqtbpy`5ONx%2HQ1oSikKPzknVECjFUp=? z|IYLv_3?i{Df_|rx^=P8#oN7(Z>MSYT{)O{_%jjgy{e+NeBv% z#ya3StYW>4DZL`gr>{PI_^)3BoOf7}5D6UG>dLtmbJ z`#$KWi$4SX=*u7fZ`D}Qcse&AvGDB%SA)5BZc5dmoKQn%5!#_QWm>XX>>GkNlZ6=- z94Vun-oO+kGjX>-Rl!rha4@1TdXcWQ&j_uzx35L7gn^(c+yE)SDN~>vub}^U#<68# z@4?CxCbq&av#HhwfAn)RO^bk~bTzOj(QA!08-NcVyb{&I+OPmoM5dBFDaDjIW|LEh*1f= zE^(OI&pRu)An4~cGR!y>=yn7JoB|Jl$q}~GZs^qAnlyd?f6K?|PtJ^|f8RGTG0j~a z***{VC3!h51vBsd{{4*i@1CKb`J(jD2lHnzg_?XkGaKCC;x1f%F*=%hAN9>U_wUKo zPj0>HdOh^AWQwLUub&7FpoXbq9O{vWM>$8WJY70EwIvyX=?zzJjr;n;Lr6hFT|#Xf zJon{j%+Z=-8~JwTc@WfDU@CcaeC+e#mAjA!lnLf!-vr_16yD{Z&ApiBim$*zkohnQObqP~4(??`rTOWcWKL_S zHd@w(*7(bD|0h@LU+gNI$Zr_1allqyuf4omld?94%o}g?Qt?>A7LPqb@-*odnW$f--}qna|cG_ zeUbj)f6L&oLvBzmNf!(Ba)V{A5sSB8Vb%ghHTS$&ekqT^N1m zzNqj}Fm(b0iK_-f!*{@Xv>5Hd*OPnk0ICNfF*tg`zk9dy#s8k^`|0rR;|4WhMdo3H z0YWK5bwG63pLhSrZ$*dR&3Nz9kD?`KPu$%TrZweNg*R_5KycOqz zf8(R2F(2eSY8*v|-Hu2?GKe0B0P7b_>Zfx(IzZPq^I%$LFj{(T!p&lDIc^l^OKf1MlJ$_@UEc1w7#jQ(h(=to z9E6W3OdUrCohr{9xD)TeYSA>f$m5*Lc`I7%u%Wl`{(&vUcFpFAz=x$}B}u;r0X4Y* z@B#pug~0zm;`i=$_l5yBh$Y}oCwtRs61G-bU;k`Iv<7qhv-^Y4G9r(BBNKG+e?N1u z3_78WP(Xd0@tkv)bBD!A+aUGDUyA#8YxRqP$Kg@Fob_$(<6pf#xRm9r5C0T-40&W1 z9^*hYalPmmLCBcThUEYI;bG24q@xj9AOrb~L`8oQ{E=-z|94&0QkDJA&Rdus|L??W zWK8-IZlRzeKW=|@;tF!d*FJ@Le^l|qyz)m%ilXK5%U8hsfyI_(qH{9bfixtRWc)nm z8^PHE>G4mB0rCy#IP_0D_Ki=1kK(Wi--G^p^T(Ui&{HTjo3z!!dpja3y6h8hH z>Tk~KRlt`AbU7C$J0IvDe|+@xpWnH5$&!jvK1o+*jIoG^mUAn4(A*-j zVC$j%zuary-&j6ad%b>c{f!x7hOhtJS?^y2e-&R&`RCLU2AWfod!6TIRwmBvcoyEB z`@(qA+F_Nh`7FP(aW~pFB!TJBk2m{P|833d{TR56^-_SWiyUkgf0NtGZA+3O|8evM zXUDjHzy!6hH;W_H@J~?7m|4v4(bp1MlKzk4zaC|J(kt z?a$U!>)Z8g-w=2muSh+~xxoMZVMn$$Q%fO`{!IEk`Z2r$Xm#6`e!uk1+7k!U^{MCA zQ3vX~q(h9`8GpwAe`>4A{PUG5+Y>(@I*PwadOFZ^`(_REa}X7 zuHFz7`AOmy<22`!?Ad+JR3u4H`7Enz|A!fB+KtSW@#T*ioz8r;F8e+DXwpo2CCf3x{Ve>Qjq zwixbm=&k>{k>*uJO5=LTm#8Nx#B>64J}DFS{??JTpBt3gcFh;_>b0YufAf!R-|&F9 zNT3AF0sI~OD(-)id1>a9w6OCuM+BFwSmuhT6l zU&Viq7(_@&fB#8+5g!i2Z5Q;PX@99bZMb34IKJBe-0Oit&?nFbkawZKgFJ`)GrE@C zk=b$ZvcSw0#MgwngPiC;2Uq>m8y2(Q{MphA-A|05joP3Yu|c|;=4Li9qp6kg@4-I# ze-vD0R2xduj=L*S5(w^4pe;q~?(XjHw{rW|-Cb|p9;ufq(iSN04oL`ccbAXv&;Fb} zGduIhIlBuDN2MUQU^WA-K05!8Vsi|RvunWc+BTEy#&()UP0FOU+tjw(w@z)_OpTPO z(loZc;o3I7eDlnlf6tGD8`qpUV_Yuxw?}mY**<^&kD{~eYOCAAXxv?iK|*kMZ%bQB zOWobwUEex&cXxL;T1qKU+}$Ar;_jYY?hiO0&OU2BYtC`T-us1rbHKNl#MFqyd46j- ziL7#1kZG4FQD~E{lx4|Fw12FtwBH6+36ceC#Z;w6%I`1hN9f;zk78Wzr-q9*Uvrmj zGI)R1AdlV0ti$IJlD#NA2S3FR6&5|n@4~3O2yfq=tRc8#mXK~+VO~K`?(7`J?}nn< zn!PQHI}?S)YMdhv5{%5p1Tdxtm&bU=%nLOIlS8|rV4+))&vl9x@jqbwNWn#QnXM66 z4E=--Asi(Ru8f~KWP4CFiw0S)XqK5=>9~J$=#je8uE>h2{PN=D%CNdewUI5@f!(@h zHw&ZoTIh!!v_eljG9f#DK}31X*VHiyfz-XuU;2B}QSyl@f5n%+qQ1EP{euQSuJLHy zzQ*TW^@kpwQ!)arCJL%3e5`(W<10&F{NCFWkk3Hy5VI;M{A#oz7y0-s1Q za3TC`@Q1p?`9*&>6mO|t)0?64wm*M`reTHnI;cE$P7opd{3!DwMCg&s%2R(xH7qm>n);)1rV3%=t%1^I; z-q#RunA4xi2*o6!8we#{1Dt;&w3YCqrey>D?T$LipZ53H-cY~&EBIGU>{uX%>YJQ< zphOIvX!QE(-x8CW_IDU|_?rLDm&9_;jBpQQoY0#n0+lHL!`AMq-AM@X+f z!1o!pP{waN*}R}4xi~HVV&3(FmWm^71ESl8Wxys}3X{TP@@g1zQa&k_eJ%W2^1t}` z^aua}I>+AES654~g|&gYCiLM|NEaPbNZ-b)BM*o6x=+A{6KsE!8mfT`#O0e7Yp+0t zqas0LG`VdS9$80kIif-`n=IaY+@SY+vD|n%!N+ zvhC(f&~S7oK8(DFdpY*ah=NQ~^3Z6X*iyewv>*6D07&l;+-N%`>=r?F!`-fEXRkX2?8=h*=IayE1P`sn5Q>QhZ#I7hj=kxh2%7 z7?v0A?cnLiIiyNv6qCrI2fhpO3j;*c{3V>g03iPbH<$VsYyv+-I`M4$Zf8JWV&k0V z!uHhO|3rUx1~gKXsn+iAc~4|2yFY z@iaw-`mL_Ryh`iTUoy^@C#tg?l~6f$E?LBg4}5=_7&}Td7N2n{erdo>uQS-i=5gI0 zTer1yyYJQ`N@nKI{A&K8FIm*|yicHMb0ct5*)c&EqYlQeOL;sbGbudY9Yc=#5;2tb z8b3$=x_Vpt9l^~`Tic52_M)&7N#&GQi0F#m?#aY`>1dS-4@N1?N}*3P38+W6*0cr_n6euV$% z7yWBPFZy!{Yiu_aYX${L`xcwvKJz*iL+19RJrR>*C zv}&M#k7&>RaN&=GFw_n9KHW-Nifb5XCv*{@Q`O%iYOQWYHqI^X|BCv$wXnZtZr3PT zlw}q~PQ1fG1}qKm2{tCa8#Qz4>baZdGbWE5S{=;w3Fd#JyG>0kYb*DZMV83_^_O=x zgtvWdjcFEDFD@okK4^&_DAz7=Qb1{-&z`4$fT4t0J{SD-e!&r66W9SB0fQja2m`bqaMkut zzg#y=b5i@v91E6UfVjVidw`!HCF%vCj>Mrgd9UJVDB*-AvfJw^OF`*}zp=lwHkvkn zXw%G_+{+xnx^w+2n@%?p+I}{tRC|>isB7tcr$Re>kaGG#zwC(6Xur^ZA>J{{l;}+D z=;5hT7`x1}{uAw22Gg{-o!t=G@~wm0*4W(Nkta?ycDnpQH$49!^C)y*pNNa``xAN5 zLwWa!F4#iITPNLf#53P?RGu$7G3bAPPGyc9D2De=YPw#(t2aQk%U%UvM78iv2bj74 zzfoa<_ZZfB(k7_FdDL{z{RZv8g<&~_cJvs)M$2jgR+FxOX1@)11zrx$vA4^;#F>g# z1yBCB@22>UX%S#MybP*w?R9R2=0ffEe%oBo5XgM=0LhmO#9js5(lZQu0Bf;-%f0x_ zqa1GNzWDGIdcwQlgN!S9f#E6(;7!V9QSdQab(bl-$VKnS4Z87EQkU}f9Fs<_4)|S@&0pdz9oOZjeh&% zZQy5U?y0ie#;(ChMDKm1W;<7Zp!Ud2w zGW+N7UNZ|&20*-L6hMtwN14qcGfz?W1N(a#s;^agN^g`!ly59JJD3)4+9~Zr`hJQo z3yyTB_KWm6fO^~`c4x?v%D;GYL$h$YUgh}<3WEQkp5*V1I2*q=?o7NmAN-15_w5aAoZFuAG#*2+NdgO|eW*MLa{t=nuzM?wbkL-yQ zJN5C7MF10WCW#L@puDbsG8i9P`(cR$FWfl7BHCSwmT;alpN;dr#|rS-&$}2f&##ZX z0e}Ht61!tdQiHXG?ibH2wY#M24x9zoT z9h?OR8GgKK?@Z1^e|_*xekZ=bI$x8iJ#WuMyg(Nl`|5Z#zbm+9Ga5H`Zfo3A{k?OV z_?K#(^1Zs-@eY|oyX)5y{d}k}vo^D4m@L5)@`o@9{f2&jhh4=ULBpbTrXd!EbCL` zvN6opgs12txC_`1ypQ?f<;%H`@pZg_Cg7yFjku-I012nsQ^G9EEV*Cd-JIAqp$pd2 z+;dlncA&w3U!mFf^Xx5Ng|NjKA{!X|DDl-u)2QH-nPL836wfp>)G9KZHcoVnfc3); zdCqxOdfvH;KpF1K0(HT_udl!3%1T?v{kQw4OZt>rd9)!8a1C)EGZ(9+9ry2zZb*wA zwR`NcF>$F#?oOB#d>rBr8U=Xk$WZTVtE+rol3Trhpm|isCDA#J8q4eASC>b`C;%Ci)ix>hF@`H>vTUhMlg=wftDTxJA~yAdH& zJyyJs;lxaJyL}n3%Ct}jYn$A1R1m5?ZLc-b`VBpQ#UX|?kcEizof|PKYz*xn@;{6P z6N&+UQ7Tz8Nkd#ytlL3XVLJg6Z7S1DMV$1Mv`Lwuo2VadlX>2F5PGC)n!^EKMQ-E% z3LeQH5BKOYR7vs`DzgFSV0t3Ko8b<)2D$=DAf9HeWcwpdXw*uqI>uBDI)$P^e#-4UF z4T4AN3$73}h#?M;MZZjZnxOG7BF{pOMh&NWypuUW*bKuwNr9f@5d$&qOeYdrMz}$% z$C+&&iMfA^a*h3%Wk781c`h8SoMSv?2$iqu)U{mc-)G1KB@%vfW(Cg(J;a+%!Q*ex zj&mRSUk!+2yl|f|##yU8#}LFnnTN| zq4pd#P$Ac3TllVpdQDZ!`v+TE7MmgUzDjIMX=8eCI`m#J>rDI7R6t zT=NR`E%BYnd4wJ+9oqI)xJcb-T4*5~PRqwh*Q+1d*TArZA(SnQ=}au4-&RpCipc$|RSnar`J!?&{ z^obSXT|Vq&TBLR(Zu*3mgiKMSg}IQs3{5 z6m=O9U_8E)0r4FdaKUdAw~Y1*vDT5Q;i%8(PRp{y*(!hC5hL85?mRC)D=gH2JsgxT zE*4iov3hk8iV$oF8Cr{}#tp~6BAHIGOdyK@^a{HlvjzK$@{0TdJ%{w3dn#m;KZBt`-qkHoEYnO>TSOt<7-6V3+qD$s zpV491fN1_W@a-#v*GO5 z_~EE1)Jfa~>}x0twuWebXCaxPB)2JgV1`Vq$uu9aUePPWBL&lybo+PkJP6qK$hgVy z!e+KD&}s|~?qA5uxV<=E=MW{#u-;t@)1Y{02lgFxCod^%XVgO<5b6Q8kp7)Bo}T8| z*jHV@xmh)kZ?qYf_PlCos()8q)bd;8)Dr+3uzidPd>Qv8?Hi4M$)3wtjZCoY))gDE zz^4SCK{}e?ELQg#^{(eg3sFirk1;{+LH*%K09=cgO5{52Sj$GsV$*jA#`RMBL7U>* ztc{iQ8oqFJ1+dy#}i%Yuar`Cc@~;gV28Pxo*l>))Hm$e++C!-=Eu5|4gq{D z?moQGb`HSBPhr-w-xH4^U2d4M(8P6L0zG#vaAa8TS$Bcn!V&suf{ER`1TdM(NCHDh zx4bX&lZaVbv8+eA-Bb$sNe<#X!LJ95f&PC_AcX$RQQIqj?b_KBBUmD7G<}3Lk}|z- zur?ySL372C5TY?Tu_OlQB%^E0jYv==3o^o?esD$(i#evh7y@j)&Jp8@@FO*O{Z#y}Sl-Pl@pgVC*(h@1PNI+3d$xstdC z%?3NI1EO5@Wcv?v9;3qi!Z9dH{4h8X zqw~`Fz6jkFg9#}jb-53zk4e0Hcea&u=83=SvMr(Z#g2>a$L1HRXWH@hG%-uXC>oW>~NFDt%GBb4X9HnDpKIcA6OwQ(xsV?4l?S0CDSLv z0p&FLLw&dDqN+#{YPt{HjhjP5dzEAE0EHFs}c6-R}C$9n-{R zMmyj>a2QYvtc0vVpCHySPV((xZBggK!hP(()9NbI2#>?*?EvXjvaW%)2H%qT^y?6{mn$dI)Wp|lH#EW{kr9_l^nDB@h_tF9w? zcRywQx>|my-7LLpSpf;d+KH?2i=f9L9oU`dEJOopGGaf>X0=K-58M+L4-~3T+x9@; zlIrLauoU<>l$cn^o*5JzY~?@Y?m!+lTrrH$YBf~z5r76Ifop9j`KIoF^SwV6bo&9& zEC>?f0Vi79gl(;JTjmVV2N|qKPqHj_@L(v?OAgLk=+hd!H|})e^^mQ2jBCHm?g_*G zp(2?oHkKAjIt_%jy2?^()-@dNB#OQ$2m|SzbJ}CO77CxqXPTmc71$=P+e`v$htFfq zVlNSMQ|RxobD^t4N*V8etdj-%d#|)*HivW@<;(0W#Al2c)(RenViHHuma=woPt(-S zf0jTaRoo-Vk%uXp)leN;F+)0~>q9N6g(cciJUv}`eFm2!#M15aJT}&;xN8B%yu2Y>+eA65- zFSe5bhtL3eE9Z=V*9OdM=r_0!Uq<~zqi`m8Ws%y6WvFlh9~vp%-u$Mvsda?to}t-& z6lArOO1cJ!+D6A?#B{t9A4R$5J%gLgz~KM0?{Z{=54p2-kHz)MGHF)F#?Bf2%j7ls zJ#H4}9pe*sGJko{r)Yf2xwH*oKe#2Nm2jR%r4{$`YHpN&&!{=rmL$5Mce+j(Lwg|| z2Zd18YyEuFFDD;)k2;Kgz)M2^kIwZm(-uOkmXqdQn*t0&ZO0Cfhcn^6yF*@wR(NMR z?)IgLx9ST4%V3f4eULl$K4+05Pq@53sP0JFoBT~hIkiW+Z_3q{kFFb@gM(9MWx&bU z>|ygqk4)Ns>>JI-P}1nxK9|Wd7|ne~@urt0a_CMN6V?0FR7*KXirY`W!aR(5X^%5D z8(MXDvj9h>Pegn21bz}z1$u(~j=e~=ap#0jihdsXCxpq8T5DQwR_rJ_ zScos+mG7v3+DE2U2nMpvEipsM!;uTW}5cu7D{Yw$_8cQ+S)x0*Sp@! zblTPWW?LxCLORa6%KqTR82rj_eGl;C!(JviGG>l0i_b;7<$pV?%63GZ>`)`};TZksMU729n1UXEa!6k>5MNLikGVFaOC;jk{i=%p{ z+?-7sOCcc}KjkI-P5P($gZi_fIH~r3*r3iId&f%O<(Oii<(8=j-78W5sWV%SwJlIsbAeKQOqzn^?b?m5^BNGx@&?^ z5lFI1SL!mO5saX~#}W6UsLA5Yv}vu=?+%+DLg1G0i4A#N;^xhG(L%!edc0*?Qlh9!DjPRl;mICLdp8*vxu872&W3^J4`E+{W) z*IA+g!4O}>1f&mwjf*6`1s^xeQx&#vs4M6mrnzYAw0 zFn&xJo!v!?BMkL?v0QLHgWF*r9N&yB+EC+1%R%ckGhQ!Lt95A0b?b9y0Te}=N2r86 zMoc9!cZC(Jp}1R&f#qc4ELu79}g{vDojAf#)m})dHm+E&jDbv69fIdujt!~=kE>@l?ETC5{N+v0$Jm0J>W8Hr`IO?r zb=V%GqThBH?xghdUPXLO$;p&VoI4RdWNKJl#PRrgzh5|iB;cCk95fWO6S^2Eb6+xE zm$vn*+CS8WRIjW(-|XsnFC&`QI*_(-7XrbAO*Vhl)L1q_t>9SKCfhUf3&R-`&^ZS- z1XqpaPI(ZG;VAE zZ=g%F+$r#X+y)FLi|7A$n0Ps77%u2ijp6Q6Tt4Y8G8l1#$QUG`(SDSe{Rt=IT9c9^ z#En?qd8+2<3) z4kca!CO8K`he2k*SyzxL*(reIzyyttgsRwRnGL;vOfKfm4AVw`j6CIMXUBMTAYf1d zrT|sqxFlcMo>;b{RNp{seo-bbj;o=yE$!9|dsTlOgPiAeB;Zm^`H;?(dm(amG3$eu z1ilw}8vO(E12vK?M2&|fVcrnM&`qlUpT?gj_E)^suC^HMvkl9Yb9E*5;}D5slIfDk zYPsWop@P4IhXKDk?*K*+p?<~pmwTpwMzoOi@c0@O}NKm1uYF&=nsrQMURXd z9uk17(QjAGk-Oy;=Ibtk4QuN#T~?Gy&#EHDl8)x?=@Og?Wy%vCZ^Jh3Zb=vW=tr2! z?cc$^xEU--;Fh?|WJXHph@g?5(}1z&fJ5wmtE@k)hfqrI=&IRe;_|xYaozl`-yMHD zFAJ{9jizCsRX8dcf-ytmVO;kI^CSBcYm8$xMDD0Hp0&1Uq^dAWwNv8QVV!Qh+RZ*vZ zSw^kqV6%-gO+nHoKsaPmY zR_;({OLq4E=)T>4yt`GPZmDWNC;@BcTGAmPkIotbNNi6yn#fNz zCC7Rv$v@N$tJ_z4CRdq5&Jq58Rhij&Tl!MlWM+C~&?-0qS`I7*oDkFP&E& zg6e#YT8_h5KM$PmRCJl8&&+2bn@M2yF!md|n;yv8=yT0Gi{s1R;s1+~fnNnKvnGR1 zz!yR;>)v+$u7wou$r<^*An$$osn*Y;N(0xu6Lt#-W|UM3&bdGl`KhQQm)fQ7)NMv zrmuih7zXJ_Jj+ zlfh-s0OT>;2GV$J!Rchz+NH!xEJbo>GAgA||& zDBHa^1t$F++JvJ}J<-X;8hkBwK-u# zSnBnn6Wz@HI+)fGK~f-+tce~_N&eBSr7 z`Ant0R8ai!_q1<6e+?4NKV1c?`E1`K^<<|8`ICx*5169N~x00M0Y{W#-KlTdYkPR5arYhTv1qtB!Vf&-A-&~5nL zIDh!!!8FGEya-t3H3SKPCphgk2RI#fmvWp6pw-f*P>vz?!~TB;_YHd^=n-(Qd7|)7 z+xi~u0IM^;f>pb%W@eqT`;mOP+32|9R)B$6s#mPv?5G)OjP$5s)R9dobhbD4gV(lz zV7>=`T&V7B-BP@_3?4}%}h}j8|`Dp?1_1{3!!=7Wi&C!Nfy8+tLSFW4Laq9&VL>t2*SZ#mGJP^bGlEq8TZU%|KXpUp=G zuts0-Xj~KJ2h+j}3MvhThTKT-q-eu`uEJolg~I&yWgV9WZYm~eW@`JC50rVjnGPQO zFZuYOHQx_w4EpQcNocNz>^P|hBHJkc>yfsIx7o3ZM8ss=?F>iUq<>dRr8;3MUO^;j|xP^S* z6fE4?6VRtuvK&L9V$Us0k4~opnkTw$L)pk~Y?0Ry-bimBG7g>sWr4QY7KkdU#+FX6 zI^O78zoS07$*Yqon{E3FnFim6`9@3QuaDBCW~A>-i;wXRyBNap-%SaBLwtqC!$*SV z7_$_YXYMi=U_V>Ha8 zLBkWMBd1S7Pk%aoNb=u^teE56CCER33d?{NHjvc;==sv=YB%?PJQw4Iq3!28{6!yi zFYP12i_rDBbFfr^7yJYo2fFPRIQAG)3|FjP;D5Mh^bmY3vIBdLARxY=UiL=tH~TK} z9z$b5TC_Ux1o6Y}jJE$eMs{+fQoYpj)R?V$s#aTS0SU;lxHV`MF^iKjNIAKzbA;`n z2>VA@zG;z6qQFRhe8dZt&&)K43w?#Kf@-JFARLC5LA&8EG1=s8#3O)2L!_=+2{0~j zF42z{&2N&_@w=XhGSsUr+rhmAhL1Fa71J1VEn;5iYX9S`AnYnoDBOe?=cekO^)6`v zR@#f~wP~IEduH`PM0m->L9YD`dVqVvDD~SKwIum-5-oCnv9FDgf`sB{qlcr;V?NvW zs9tJEn)CEtieZWzb-ebCCQ*G|303)OEyg%wv0<$17&s4-g;+bXks4 z$V;HXoe#&6wlJFfmPVb3!37O)f=Cs}i|7oL%e}!-;M(OtgQeDZ!IY|H`IiflDufN| zy6crR>vfBN(&~cc6K_$D5=+Ti)-W#`>JLEWiL)UATM)U>Nf;Cz!ly;PjBe+hAl0Ie zAwx0isaLp%*najuJ@Ep(@KQUfc5}_4e{*wF@^HCP1t;sYJ=0Z<_IXGjuT244Vn?OT zPvfSBrtOOT9s~^;8a*zdHsCI0E#kB1m+PTnp{h`ST`$~ObD-pS*~z-i?H=JH^-0Gi zSOcmX*kF9GfoPG|G{TD28I6#->bkStx&4XV2fN?M_nZD$MV1ZrtMY`R*+?H75n;0T|;}) z1T#g~L^DNoI)_fal9AYJVrA<5~NYt zJ6O$GwaTLIe-|6~_LZupSU&;uNC)XKeH`I`DQq!tH~2SZfFxqZcjKGr+W??aF)Y*Ew)J{lKdJD|I4{-D(hb9#DOr`4)| zTUH4gq_33y@+qnr#ufT><#t_|V=iJP&BEL2@8asbVASQ_Z117y6!#TW-JoNv;5PZK z@>bDbk=MX7weY5(;zQ-5nyj6RdJgrR=&-g7Ynmyj*0x!N);NF$X~aCn5~w%0HU1C% z*nZo6pAzpA|6^Bs@AG-X($eJEMSvZDmUvGJ>H*@U#ns=`RokxY#z>Z^xT@3gRpRwh zr&OyBGk4j#+$SBwK&h}3o@d$s$r9ZU*FATVz1Sm$F2UDv)`TS_KN>+FeSDN-=z`?z z2o^mUkqLeX8Slx^FX+Vnsmw|GIrsbNR~w&?`SSfQv*u){pKO-75g3g8g7^=Avy@dA zv^w58Y)|HnjO|HZBDw>Agm6POA&0mWx`Z={KF*EqyVN|p?Nhs@<8br-8bc$xv%ZfZ z`5+I}r0WutX(B(_e9dqJ**4Z01b>H0#k@yvz#e2Ia!+~_i09DW^f|r2A`l)II4>?BAh1Z^3qQ1;w^YYP@HGu`(bcln!s3m#U>>sGWiwEJ`xiGJv}+4t~&h4VvaSUbCS z*W0SYTRTKA)Za9-lxx%n%%@yU&NaZJm<^=6UbXC#jEjVS`14p0WGvY1<`~yY;ewq# z>-vKGycH(PNALtJnp}YQ!ypj*?N1F)Z36gXFTGzN_dmGO`rYi~^n$yfnT`O9w`sNY zJBR>#=X$4Ktf(DWB4KKOE;$Ua+k_8v4RblU9eB!Bh5o_F@VEO0VT%p1l79Iyix?2+ zzHbzWR&~y3pVhLz!zyVogaCFUvFKczSeC61hcrhxcB@O!5Ja`{3`Yd-%tL& z{4qQ<`6wuTFcCLsI$AuX{<(&C<8p3R9BUPJFX)JEStbZnuW~GZL6%Vmyodi8U0!~j^MG;pQd{=d30ZZc{&`KMP8Wf6J+H=aE^bVo}5Xw=k8 zvro^mWpv*pDi`~Iabj2d)GI__cb{;zb(#RUHztmD=jgN1s4)C zxV8|b|9e`j_xSL|Nt@C~r2UE77vGjH8JRcqYS>g(Ke_>ss^+v!s)?%hG<@id);uz% ziz&smIkdw4wIh0uDwe3?wQ9!!&|5GQwi0s;=SRCtZi701;IViz{y)+WZdF)ZRJu2W zyos7mEF{L00-<(eqaBL;LNU@`;g;G?N!@}?{gZXO9H(3bDtxy@@I?5seC&5Zk+tqq z4_8%gnq#``)T5ZRD?U?sT&^kjbK-{~HN%AIo6_wuulSdIhx`Agrx;oW!jvJ>lY-{% zlm<`f;)>0Gwbqt_=3TWt^`zDtJ#3}j_8VS7$?`oLnU-`as+#l*cY)7}IhXxlHIRkTbaS0r>&-Lmx-wqEeu5 z6~e}E6<5p8){p5)lCLtK0r4>P_*0aZ>^Hpe7_+Q@PqI~?35L<4{Gif>qHYI79=asd6nO%RZ4lk}kUw+3by=}bVb#;?NVQioC}AO*mcur1&) zbEa;DeG%*nqRUonz#6l4c-4ZIj}5c>I+eAy>yWvKF#wcjEj$fTjVtFo2qK2x4n+rn z14jFQHwPf2mZtWnUGYCGPb?Z&R9K!;-CX8X!YITRNh)_&J*(5SF6o*vFiex~WT2A0 z<_G9vh3VBL%5c?h#RNsH@}2U$TqC)w z9AVcXmLovcwdNfbzJ8|ZDY4e^--N#Z^1bmFqX1Glv9((iXq;-F zuRbWDn1VoT+)*|#_-sg~_dX^s;A@mH{zd$=B;$w?qv>gPI3r+i>;|^pXC)CJ!xpiB z3wBhUZi?zU*40zLJ6H8#ORjf$b<4MbiTa@)1+t6qmR!t!5MG^pG;x+sD>&2q)^Q)U z7q^Ky&mS4E1^dCY)|~7(EY0 zUr{Oc&ytVQADGhGrh1{b*5rDR?qM{42G+-a9~m_{b=Ii)i{`(X@Nz_Q5-;Ezn@8uP zvL!Q$Zss>vYnx^^!E0Mf78Da|IBm5(`}$ugvg`_EJq3wh4`U!%q~DzKz@cINy!Ysd zkeS%E@Fty7sOSq&rdUw+GmcHJbZ`{@8V3@%j01pgvgNrRA`P^AK19wFq(}FERsq!R z9pum@%8#nkvOHmN&zHU)rPdBajHc+wkAUM0BaGu6qajYzTtum*YCzeK(&l)Sgd<#d z7$p3Dz!vXeob&WsgN%v7Bw-G@vBok(t~y2>I&fWbr}t(>Zke!khvbc^5fqH0lIPQp zc_#-IM`y&p2))78(r#M;y`x)ySGV2k9wIz6&?+$2sw>TH4l%}HbW8?gQ0u7;{`5q@ z(dVZPncFa{e|%7Eme&Qu7H7Ssz%W5k+b+uUd1L<~_(jgUT;N;sw0cCxHd&yp9kvR0 zhP;RMfS>GLPUKQse4UXkiR$E|F&oLBtV=A@%$a71Lk-%8FQ#3gj>2evfp?vYZ1Zhl zPLllwdZ$pQg6I`jVxChrhKU#>VAmQ(dT;qVO^zn zlNgMbzInmxqZ-nVjyM>#K45VmFW@u#C~+UE%$n6XrGego=*nz)()z8bs(f_mvE1rk zpNnTSrU|C23QZtMd~dLSGTS){GmrToXiq{w#<!b3n1;<}ykKUMcjGvoXmyIE9TtN< zg-Rs|KuNN}I&}O)(g;UM4YUuOAAYw&f+MQJ91+wAYw*R8s=#r7G&kt31tV=~UQ++L zw)z+2?W;GZzux*$me*8yrL9ObL_fpx2Yr}+hJJ_6<>rJM!^ee&N8U)lr>AEXjz>j5 z#PfjH9A@`lXRz*(X0hWq;1aADMz`)EQ@$sD@C|2h z5#D!kKP;mq?eZE`aeqetEJvHeOBQGn<`gQ&_`auqz0p*PF1cEJy61pmy0spB zkD#R;#+-xZA?k5oC~UF|76H2gWdb6An^3onu?>Qzf^K!6LAG6IHTQd*NDbu*^B83V zsgf#YZwyXO#tnI!%uIY1G#R%Mtafnv_ctZivs+3V$PLb}PGP0+j_8LluXSg8cHe5L zPRnse!qX9d$v7Epp^rQ$JfxAB3+Mn9;1gLdxF>iB{&9ab2gV{XE|5219wX3Bj#SZg zvEfBjl zBdA^l{<7$QAs)tTW(M~$Kf`}|$o}Zjaht>AXm%riNE#?xF4@vo(wQQ3^lhuzR)g*; z7bFd+dR^to|xo7T=kd?#%r&&IDL{)fpxMG!j~FL~I|ld;c}&%~VLb`MU^b>7Lio7&&a*xJg* z{q5`9^6D4VU9VbNQ(FJ623Z|b`>*S&Jkfd)dXAVy64Ok4aoDCPNl+pEDA7d_;uE~S z`Zva`Nj;MU@{7T~fq4z4$!qs`;B8yB{-b1nNyGNa&Z?%Cx1E@V)z!OO?+^Iv&fA&5 zWxx&ad`uH^83u~GgPDSYVBkbNJ_A1t`;B;mHiUVXu?|vUUhVpXl8_I3onVLi0C-cF zI?z2;wh-Je8|aa|QquJAtU7J0B1l`U#o8BI`Xr*Z&W1&8Zb6RP;dqP)!k&RIMW3U8 z`Eus7-q7~bM9jV*VaS|7T9h<7C+$>UR3jfor za@+!U!>iD*kbxeOGXV02s3g3DV1al@H|Urp+_1=4Z&?8;2iDr(m`E0wdjaSZ3Puxh zJA%^r3%onL4ctu5P_)$AWy~}~Ejz4#yUcS;w~e#JlRGi3o7$!h(vwM7qc1RInK->o2$phh0K5X1^ z*99HYRt0RfE>*|&CA1*w*Ee2&YCkNf zoz(ZR^|pJqqwsCCb3Buui+hZJEO>R?hNN}zPZPe!j^mbNQaxn#SD{gaSG`c>sAmjx zH;=6hgEJPFj&m|O z0Xrf$#(qv}NDYWf<7C30+CnvFbkCi>j&VKAB4{o>zvSQ2vgEo6UBi3AyKO?Jq(SOY zTI?XCjrzg2BRnYSc*4ZcOTH6X0!%LY5Me4IhU7=!VP2qo!TLeU+z&kD{%Ql5hG|(^ zv<_$fGiZ8BL$+luXuJb|s&CZbM66C&`_+L>hP`IIezt0>bh&c9F$NSwa{9aonH?1y zH#>eWe=JT&UBmuK|4la&{vr9$9&j(m^5CnOMpyL+J& zT3YJv?t1IJb$7k>TbEmRH=r$0+%#Ug(yi-jv)~ioR zAM5^h?gJ8F%iy8#Dq;aO6^^kL$O7d>79?aZAsxRJwgA2!{S#Vax9PjgCBP}D(ReQY zH?{zM386xtCSV}%J$JpgU1MEwcBf^b!CyO7yFj1nkU>798CW6~ge-NvH*IlOqN^}p zQHL-aoTp@iBJSXSK84Jnv)?x&q-s&JbfPTEa2ybcW?zraU;+TKwv8W}G zH-N9mDaZ%FSq6ao_CQwW^KQ2Ar~0`y$@$(^r) zRE@KJb>Z625kC>-ifVO3U;CrZ;erIUuVXm;5}Cza6>!P-w(l^Kg|LRbfU|>pIPe4e zB>6sd13S-m43Y0VU}b~Bgbo(hM}rf(_gk)6_v>z}z6y`EC$-hoRs9(#R{Ux$*3|6n z$dzb~p`e?8gjK%A;4cBg7@_Q?5#v+ejjYNc3`0izB1T|JFlz_|+HrgqRAaFZKIswk zofeU#1CmjS>8hF9)21EvG*^seq_DC3rD&p%p=4OXjVjq1!5qrfdiW%Qa0=lldjkjTf6l+tzbJZpVptfEG}n?SKWPm^uB2b|zt6o*)_P19BJe4? zfe=ENfCPd#CcJ8`k|N$K`zcH54Q-p>xvalPlBT?&Iytbq*H1Oo@fPubHj@_~^q!l@ zJspC7kKx48;~oXy@wq^G;fa(S9=IsZlW+!O1}@9qS`wiH*hOfIjjadRuK+FRMp8Ao z3t@Jjw7$1r2Rzi3c9*msZYFjcMRm%zx>UzU`rDD*HxDaY~o8Lzbr7Xv+hC-ADFf5ad68x1v6zT+N~k8y69Y<;Z;% zLd{ZHyz-SEp%0RvyKnV>QHk_#bxUP`i-UA2ZU+1gKAoD)Jjh8SY#SnS_ZU(dkjFQ1-dt%2;wTJU*YtrM^b40NipsQRVla7Nn?ay&LhN z^ljwJ5P!43XjA7@!A_x4;xgLT$^ccutqRm;q|t~bCX$aWet zXjsCO?7{J-sjTsxaVqY`kR5T*r1wF8Tc9QdqWiC!tkS~ow5Km`6hHj>{_kJewYxhn zNQ_1SfQpl`_J^)dzBe*?;+OoE(7li}*Ahq$JOgkJ0D<3x0ss_mhbIRZi5P>upVb*BW`fZ9g~zHUrj!o`d;+KrHqB z8U816{jl!gle0d@IWVuBLX?8@B=D@?X2xHLDs$ezoUW04S-Y&KdSJF}iTw8?)*?8;&JS-~;gEQ?Qc$ikQ#iQVa+GK!-0 z^m~ZA;<|$GpSPF1uZyl?l+{#!0P6Wo3;8)Bi%|jU!%t@g`!)NN5w@VX)NQ=}NLf-@ z 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�aE4*N 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 Date: Mon, 15 Aug 2022 21:46:36 -0500 Subject: [PATCH 385/580] PET: fix missing pitch macro --- src/engine/platform/pet.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/pet.cpp b/src/engine/platform/pet.cpp index 49343627..dc524e45 100644 --- a/src/engine/platform/pet.cpp +++ b/src/engine/platform/pet.cpp @@ -133,8 +133,14 @@ void DivPlatformPET::tick(bool sysTick) { } } if (chan.std.pitch.had) { - chan.freqChanged=true; + if (chan.std.pitch.mode) { + chan.pitch2+=chan.std.pitch.val; + CLAMP_VAR(chan.pitch2,-32768,32767); + } else { + chan.pitch2=chan.std.pitch.val; } + chan.freqChanged=true; + } if (chan.freqChanged || chan.keyOn || chan.keyOff) { chan.freq=parent->calcFreq(chan.baseFreq,chan.pitch,true,0,chan.pitch2,chipClock,CHIP_DIVIDER)-2; if (chan.freq>65535) chan.freq=65535; From 474dfa2587c7bfa178a7b3c9199d84cd05cec449 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 22:36:26 -0500 Subject: [PATCH 386/580] Game Boy: fix bug involving hw sweep and zombie --- src/engine/platform/gb.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index b6a00c0f..c29329b9 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -181,7 +181,6 @@ void DivPlatformGB::tick(bool sysTick) { chan[i].soundLen=64; if (!chan[i].keyOn) chan[i].killIt=true; - chan[i].freqChanged=true; } } } @@ -353,25 +352,24 @@ void DivPlatformGB::tick(bool sysTick) { if (chan[i].keyOn) chan[i].keyOn=false; if (chan[i].keyOff) chan[i].keyOff=false; chan[i].freqChanged=false; + } + if (chan[i].killIt) { + if (i!=2) { + //rWrite(16+i*5+2,8); + int killDelta=chan[i].lastKill-chan[i].outVol+1; + if (killDelta<0) killDelta+=16; + chan[i].lastKill=chan[i].outVol; - if (chan[i].killIt) { - if (i!=2) { - //rWrite(16+i*5+2,8); - int killDelta=chan[i].lastKill-chan[i].outVol+1; - if (killDelta<0) killDelta+=16; - chan[i].lastKill=chan[i].outVol; - - if (killDelta!=1) { - rWrite(16+i*5+2,((chan[i].envVol<<4))|8); - for (int j=0; j Date: Mon, 15 Aug 2022 22:40:04 -0500 Subject: [PATCH 387/580] allow rates down to 1Hz --- src/engine/playback.cpp | 6 +++--- src/gui/songInfo.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 3ba4f141..3dbc6b5f 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -604,7 +604,7 @@ void DivEngine::processRow(int i, bool afterDelay) { break; case 0xc0: case 0xc1: case 0xc2: case 0xc3: // set Hz divider=(double)(((effect&0x3)<<8)|effectVal); - if (divider<10) divider=10; + if (divider<1) divider=1; cycles=got.rate*pow(2,MASTER_CLOCK_PREC)/divider; clockDrift=0; subticks=0; @@ -695,7 +695,7 @@ void DivEngine::processRow(int i, bool afterDelay) { break; case 0xf0: // set Hz by tempo divider=(double)effectVal*2.0/5.0; - if (divider<10) divider=10; + if (divider<1) divider=1; cycles=got.rate*pow(2,MASTER_CLOCK_PREC)/divider; clockDrift=0; subticks=0; @@ -959,7 +959,7 @@ void DivEngine::nextRow() { bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { bool ret=false; - if (divider<10) divider=10; + if (divider<1) divider=1; if (lowLatency && !skipping && !inhibitLowLat) { tickMult=1000/divider; diff --git a/src/gui/songInfo.cpp b/src/gui/songInfo.cpp index 7f7e026e..44982aba 100644 --- a/src/gui/songInfo.cpp +++ b/src/gui/songInfo.cpp @@ -195,7 +195,7 @@ void FurnaceGUI::drawSongInfo() { float setHz=tempoView?e->curSubSong->hz*2.5:e->curSubSong->hz; if (ImGui::InputFloat("##Rate",&setHz,1.0f,1.0f,"%g")) { MARK_MODIFIED if (tempoView) setHz/=2.5; - if (setHz<10) setHz=10; + if (setHz<1) setHz=1; if (setHz>999) setHz=999; e->setSongRate(setHz,setHz<52); } From 51cc36532e223b4aefa82b8c74b1d21ac13d4e70 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 22:44:55 -0500 Subject: [PATCH 388/580] fix documentation regarding ZX beeper samples --- papers/doc/6-sample/README.md | 2 +- papers/doc/7-systems/zxbeep.md | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index 035a58cc..59613da2 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -48,7 +48,7 @@ due to limitations in some of those sound chips, some restrictions exist: - Neo Geo (ADPCM-B): no loop position supported (only entire sample), and the maximum frequency is ~55KHz. - YM2608: the maximum frequency is ~55KHz. - MSM6258/MSM6295: no arbitrary frequency. -- ZX Spectrum Beeper: your sample can't be longer than 2048. +- ZX Spectrum Beeper: your sample can't be longer than 2048, and it always plays at ~55KHz. - Seta/Allumer X1-010: frequency resolution is terrible in the lower end. your sample can't be longer than 131072. furthermore, many of these chips have a limited amount of sample memory. check memory usage in window > statistics. diff --git a/papers/doc/7-systems/zxbeep.md b/papers/doc/7-systems/zxbeep.md index 1c6cd74f..9e25284b 100644 --- a/papers/doc/7-systems/zxbeep.md +++ b/papers/doc/7-systems/zxbeep.md @@ -2,9 +2,12 @@ Rather than having a dedicated sound synthesizer, early ZX Spectrum models had one piezo beeper, controlled by Z80 CPU and ULA chip. It's capabilities should be on par with an IBM PC speaker... right? -Not really - very soon talented programmers found out ways to output much more than one square wave channel. A lot of ZX beeper routines do exist, as of 0.6pre1 Furnace supports only one - Follin-like engine with 6 channels of narrow pulse wave and click drums. +Not really - very soon talented programmers found out ways to output much more than one square wave channel. A lot of ZX beeper routines do exist, but as of 0.6pre1 Furnace supports only one - Follin-like engine with 6 channels of narrow pulse wave and click drums. # effects -- `12xx`: set pulse width -- `17xx`: trigger overlay drums. +- `12xx`: set pulse width. +- `17xx`: trigger overlay drum. + - `xx` is the sample number. + - overlay drums are 1-bit and always play at 55930Hz (NTSC) or 55420Hz (PAL). + - the maximum length is 2048! \ No newline at end of file From 77109c3832ab750f38ee088a8cb4768772e0eddf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 22:54:31 -0500 Subject: [PATCH 389/580] fix instrument move/del screwing up sub-songs --- src/engine/engine.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 4c51f367..68c49221 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2181,11 +2181,13 @@ void DivEngine::delInstrument(int index) { song.ins.erase(song.ins.begin()+index); song.insLen=song.ins.size(); for (int i=0; ipatLen; k++) { - if (curPat[i].data[j]->data[k][2]>index) { - curPat[i].data[j]->data[k][2]--; + for (size_t j=0; jpat[i].data[k]==NULL) continue; + for (int l=0; lpatLen; l++) { + if (song.subsong[j]->pat[i].data[k]->data[l][2]>index) { + song.subsong[j]->pat[i].data[k]->data[l][2]--; + } } } } @@ -2986,13 +2988,15 @@ void DivEngine::moveOrderDown() { void DivEngine::exchangeIns(int one, int two) { for (int i=0; ipatLen; k++) { - if (curPat[i].data[j]->data[k][2]==one) { - curPat[i].data[j]->data[k][2]=two; - } else if (curPat[i].data[j]->data[k][2]==two) { - curPat[i].data[j]->data[k][2]=one; + for (size_t j=0; jpat[i].data[k]==NULL) continue; + for (int l=0; lpatLen; l++) { + if (song.subsong[j]->pat[i].data[k]->data[l][2]==one) { + song.subsong[j]->pat[i].data[k]->data[l][2]=two; + } else if (song.subsong[j]->pat[i].data[k]->data[l][2]==two) { + song.subsong[j]->pat[i].data[k]->data[l][2]=one; + } } } } From 8734005b2302492c4e7a1e3b1b086578245ebbd6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 15 Aug 2022 23:20:26 -0500 Subject: [PATCH 390/580] SoundUnit: fix switch roles mode --- src/engine/platform/su.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index ef06e4bf..8cd6d3ab 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -26,7 +26,7 @@ #define rWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } #define chWrite(c,a,v) rWrite(((c)<<5)|(a),v); -#define CHIP_DIVIDER 8 +#define CHIP_DIVIDER 2 #define CHIP_FREQBASE 524288 const char** DivPlatformSoundUnit::getRegisterSheet() { From fcb8fba77be923856a47d94b807b8764893070ef Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 Aug 2022 02:07:57 -0500 Subject: [PATCH 391/580] GUI: fix particle commands --- src/gui/pattern.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 15394479..254c53be 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -701,6 +701,15 @@ void FurnaceGUI::drawPattern() { if (i.cmd==DIV_CMD_SAMPLE_BANK) continue; if (i.cmd==DIV_CMD_GET_VOLUME) continue; if (i.cmd==DIV_ALWAYS_SET_VOLUME) continue; + if (i.cmd==DIV_CMD_HINT_VOLUME || + i.cmd==DIV_CMD_HINT_PORTA || + i.cmd==DIV_CMD_HINT_LEGATO || + i.cmd==DIV_CMD_HINT_VOL_SLIDE || + i.cmd==DIV_CMD_HINT_ARPEGGIO || + i.cmd==DIV_CMD_HINT_PITCH || + i.cmd==DIV_CMD_HINT_VIBRATO || + i.cmd==DIV_CMD_HINT_VIBRATO_RANGE || + i.cmd==DIV_CMD_HINT_VIBRATO_SHAPE) continue; float width=patChanX[i.chan+1]-patChanX[i.chan]; float speedX=0.0f; From 976e1933091f078c73a333bacb0e97410cb9231d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 Aug 2022 02:08:10 -0500 Subject: [PATCH 392/580] SoundUnit: add 1-bit PDM rev emulation --- src/engine/platform/sound/su.cpp | 42 +++++++++++++++++++++++++++++--- src/engine/platform/sound/su.h | 4 ++- src/engine/platform/su.cpp | 2 +- src/gui/sysConf.cpp | 13 +++++++--- 4 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/sound/su.cpp b/src/engine/platform/sound/su.cpp index 6637bfa7..a8720545 100644 --- a/src/engine/platform/sound/su.cpp +++ b/src/engine/platform/sound/su.cpp @@ -300,12 +300,46 @@ void SoundUnit::NextSample(short* l, short* r) { } } - *l=minval(32767,maxval(-32767,tnsL)); - *r=minval(32767,maxval(-32767,tnsR)); + if (dsOut) { + tnsL=minval(32767,maxval(-32767,tnsL<<1)); + tnsR=minval(32767,maxval(-32767,tnsR<<1)); + + short accumL=0; + short accumR=0; + + for (int i=0; i<4; i++) { + if ((tnsL>>8)==0 && dsCounterL>0) dsCounterL=0; + dsCounterL+=tnsL>>8; + if (dsCounterL>=0) { + accumL+=4095; + dsCounterL-=127; + } else { + accumL+=-4095; + dsCounterL+=127; + } + + if ((tnsR>>8)==0 && dsCounterR>0) dsCounterR=0; + dsCounterR+=tnsR>>8; + if (dsCounterR>=0) { + accumR+=4095; + dsCounterR-=127; + } else { + accumR+=-4095; + dsCounterR+=127; + } + } + + *l=accumL; + *r=accumR; + } else { + *l=minval(32767,maxval(-32767,tnsL)); + *r=minval(32767,maxval(-32767,tnsR)); + } } -void SoundUnit::Init(int sampleMemSize) { +void SoundUnit::Init(int sampleMemSize, bool dsOutMode) { pcmSize=sampleMemSize; + dsOut=dsOutMode; Reset(); memset(pcm,0,pcmSize); for (int i=0; i<256; i++) { @@ -346,6 +380,8 @@ void SoundUnit::Reset() { oldflags[i]=0; pcmdec[i]=0; } + dsCounterL=0; + dsCounterR=0; tnsL=0; tnsR=0; ilBufPos=0; diff --git a/src/engine/platform/sound/su.h b/src/engine/platform/sound/su.h index 0ee84348..546acfc9 100644 --- a/src/engine/platform/sound/su.h +++ b/src/engine/platform/sound/su.h @@ -27,6 +27,8 @@ class SoundUnit { unsigned short oldfreq[8]; unsigned short oldflags[8]; unsigned int pcmSize; + bool dsOut; + short dsCounterL, dsCounterR; public: unsigned short resetfreq[8]; unsigned short voldcycles[8]; @@ -99,7 +101,7 @@ class SoundUnit { if (ret>32767) ret=32767; return ret; } - void Init(int sampleMemSize=8192); + void Init(int sampleMemSize=8192, bool dsOutMode=false); void Reset(); SoundUnit(); }; diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 8cd6d3ab..afcdba24 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -596,7 +596,7 @@ void DivPlatformSoundUnit::setFlags(unsigned int flags) { sampleMemSize=flags&16; - su->Init(sampleMemSize?65536:8192); + su->Init(sampleMemSize?65536:8192,flags&32); renderSamples(); } diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 48449034..a6bbcb92 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -135,13 +135,20 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("5.95MHz (PAL)",(flags&3)==1)) { copyOfFlags=(flags&(~3))|1; } - ImGui::Text("Chip revision (sample memory):"); - if (ImGui::RadioButton("A/B/E (8K)",(flags&16)==0)) { + ImGui::Text("Sample memory:"); + if (ImGui::RadioButton("8K (rev A/B/E)",(flags&16)==0)) { copyOfFlags=(flags&(~16))|0; } - if (ImGui::RadioButton("D/F (64K)",(flags&16)==16)) { + if (ImGui::RadioButton("64K (rev D/F)",(flags&16)==16)) { copyOfFlags=(flags&(~16))|16; } + ImGui::Text("DAC resolution"); + if (ImGui::RadioButton("16-bit (rev A/B/D/F)",(flags&32)==0)) { + copyOfFlags=(flags&(~32))|0; + } + if (ImGui::RadioButton("1-bit PDM (rev C/E)",(flags&32)==32)) { + copyOfFlags=(flags&(~32))|32; + } bool echo=flags&4; if (ImGui::Checkbox("Enable echo",&echo)) { copyOfFlags=(flags&(~4))|(echo<<2); From edddff8431b0d8254e36f9df4fccb6fddb0ac057 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 Aug 2022 03:19:16 -0500 Subject: [PATCH 393/580] prepare for pattern optimization --- src/engine/fileOps.cpp | 4 ++ src/engine/pattern.cpp | 114 ++++++++++++++--------------------------- src/engine/pattern.h | 23 ++++++--- src/engine/song.cpp | 29 +++++++++++ src/engine/song.h | 2 + 5 files changed, 89 insertions(+), 83 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 845ee98b..7cdcd5c8 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2916,6 +2916,10 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } ds.insLen=(int)ds.ins.size(); + // optimize + ds.subsong[0]->optimizePatterns(); + ds.subsong[0]->rearrangePatterns(); + if (active) quitDispatch(); BUSY_BEGIN_SOFT; saveLock.lock(); diff --git a/src/engine/pattern.cpp b/src/engine/pattern.cpp index 0a561376..77255e08 100644 --- a/src/engine/pattern.cpp +++ b/src/engine/pattern.cpp @@ -18,6 +18,7 @@ */ #include "engine.h" +#include "../ta-log.h" static DivPattern emptyPat; @@ -40,6 +41,44 @@ DivPattern* DivChannelData::getPattern(int index, bool create) { return data[index]; } +std::vector> DivChannelData::optimize() { + std::vector> ret; + for (int i=0; i<256; i++) { + if (data[i]!=NULL) { + // compare + for (int j=0; j<256; j++) { + if (j==i) continue; + if (data[j]==NULL) continue; + if (memcmp(data[i]->data,data[j]->data,256*32*sizeof(short))==0) { + delete data[j]; + data[j]=NULL; + logV("%d == %d",i,j); + ret.push_back(std::pair(j,i)); + } + } + } + } + return ret; +} + +std::vector> DivChannelData::rearrange() { + std::vector> ret; + for (int i=0; i<256; i++) { + if (data[i]==NULL) { + for (int j=i; j<256; j++) { + if (data[j]!=NULL) { + data[i]=data[j]; + data[j]=NULL; + logV("%d -> %d",j,i); + ret.push_back(std::pair(j,i)); + if (++i>=256) break; + } + } + } + } + return ret; +} + void DivChannelData::wipePatterns() { for (int i=0; i<256; i++) { if (data[i]!=NULL) { @@ -54,81 +93,6 @@ void DivPattern::copyOn(DivPattern* dest) { memcpy(dest->data,data,sizeof(data)); } -SafeReader* DivPattern::compile(int len, int fxRows) { - SafeWriter w; - w.init(); - short lastNote, lastOctave, lastInstr, lastVolume, lastEffect[8], lastEffectVal[8]; - unsigned char rows=0; - - lastNote=0; - lastOctave=0; - lastInstr=-1; - lastVolume=-1; - memset(lastEffect,-1,8*sizeof(short)); - memset(lastEffectVal,-1,8*sizeof(short)); - - for (int i=0; i struct DivPattern { String name; @@ -28,14 +29,6 @@ struct DivPattern { * @param dest the destination pattern. */ void copyOn(DivPattern* dest); - - /** - * don't use yet! - * @param len the pattern length - * @param fxRows number of effect ...columns - * @return a SafeReader. - */ - SafeReader* compile(int len=256, int fxRows=1); DivPattern(); }; @@ -59,6 +52,20 @@ struct DivChannelData { */ DivPattern* getPattern(int index, bool create); + /** + * optimize pattern data. + * not thread-safe! use a mutex! + * @return a list of From -> To pairs + */ + std::vector> optimize(); + + /** + * re-arrange NULLs. + * not thread-safe! use a mutex! + * @return a list of From -> To pairs + */ + std::vector> rearrange(); + /** * destroy all patterns on this DivChannelData. */ diff --git a/src/engine/song.cpp b/src/engine/song.cpp index 216a1bc4..1adb33eb 100644 --- a/src/engine/song.cpp +++ b/src/engine/song.cpp @@ -18,6 +18,7 @@ */ #include "song.h" +#include "../ta-log.h" void DivSubSong::clearData() { for (int i=0; i> clearOuts=pat[i].optimize(); + for (auto& j: clearOuts) { + for (int k=0; k<256; k++) { + if (orders.ord[i][k]==j.first) { + orders.ord[i][k]=j.second; + } + } + } + } +} + +void DivSubSong::rearrangePatterns() { + for (int i=0; i> clearOuts=pat[i].rearrange(); + for (auto& j: clearOuts) { + for (int k=0; k<256; k++) { + if (orders.ord[i][k]==j.first) { + orders.ord[i][k]=j.second; + } + } + } + } +} + void DivSong::clearSongData() { for (DivSubSong* i: subsong) { i->clearData(); diff --git a/src/engine/song.h b/src/engine/song.h index 8b7eaa59..de422a24 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -138,6 +138,8 @@ struct DivSubSong { String chanShortName[DIV_MAX_CHANS]; void clearData(); + void optimizePatterns(); + void rearrangePatterns(); DivSubSong(): hilightA(4), From d1c5a4725bbb5b919eed2fa32c94b859dd173fad Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 Aug 2022 03:42:17 -0500 Subject: [PATCH 394/580] add option to save unused patterns closes #106 also prepare for the pattern manager window --- CMakeLists.txt | 1 + src/engine/fileOps.cpp | 30 +++++++++++++++++++++--------- src/gui/doAction.cpp | 6 ++++++ src/gui/gui.cpp | 5 +++++ src/gui/gui.h | 7 ++++++- src/gui/guiConst.cpp | 1 + src/gui/patManager.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/gui/settings.cpp | 8 ++++++++ 8 files changed, 85 insertions(+), 10 deletions(-) create mode 100644 src/gui/patManager.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index e468d407..732cb623 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -531,6 +531,7 @@ src/gui/midiMap.cpp src/gui/newSong.cpp src/gui/orders.cpp src/gui/osc.cpp +src/gui/patManager.cpp src/gui/pattern.cpp src/gui/piano.cpp src/gui/presets.cpp diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 7cdcd5c8..589ca6a5 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -3515,15 +3515,27 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { // high short is channel // low short is pattern number std::vector patsToWrite; - bool alreadyAdded[256]; - for (int i=0; iordersLen; k++) { - if (alreadyAdded[subs->orders.ord[i][k]]) continue; - patsToWrite.push_back(PatToWrite(j,i,subs->orders.ord[i][k])); - alreadyAdded[subs->orders.ord[i][k]]=true; + if (getConfInt("saveUnusedPatterns",0)==1) { + for (int i=0; ipat[i].data[k]==NULL) continue; + patsToWrite.push_back(PatToWrite(j,i,k)); + } + } + } + } else { + bool alreadyAdded[256]; + for (int i=0; iordersLen; k++) { + if (alreadyAdded[subs->orders.ord[i][k]]) continue; + patsToWrite.push_back(PatToWrite(j,i,subs->orders.ord[i][k])); + alreadyAdded[subs->orders.ord[i][k]]=true; + } } } } diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 931de26d..5c840df4 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -238,6 +238,9 @@ void FurnaceGUI::doAction(int what) { case GUI_ACTION_WINDOW_CHANNELS: nextWindow=GUI_WINDOW_CHANNELS; break; + case GUI_ACTION_WINDOW_PAT_MANAGER: + nextWindow=GUI_WINDOW_PAT_MANAGER; + break; case GUI_ACTION_WINDOW_REGISTER_VIEW: nextWindow=GUI_WINDOW_REGISTER_VIEW; break; @@ -322,6 +325,9 @@ void FurnaceGUI::doAction(int what) { case GUI_WINDOW_CHANNELS: channelsOpen=false; break; + case GUI_WINDOW_PAT_MANAGER: + patManagerOpen=false; + break; case GUI_WINDOW_REGISTER_VIEW: regViewOpen=false; break; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 2b4367c9..4a6f3f39 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3107,6 +3107,7 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("pattern",BIND_FOR(GUI_ACTION_WINDOW_PATTERN),patternOpen)) patternOpen=!patternOpen; if (ImGui::MenuItem("mixer",BIND_FOR(GUI_ACTION_WINDOW_MIXER),mixerOpen)) mixerOpen=!mixerOpen; if (ImGui::MenuItem("channels",BIND_FOR(GUI_ACTION_WINDOW_CHANNELS),channelsOpen)) channelsOpen=!channelsOpen; + if (ImGui::MenuItem("pattern manager",BIND_FOR(GUI_ACTION_WINDOW_PAT_MANAGER),patManagerOpen)) patManagerOpen=!patManagerOpen; if (ImGui::MenuItem("compatibility flags",BIND_FOR(GUI_ACTION_WINDOW_COMPAT_FLAGS),compatFlagsOpen)) compatFlagsOpen=!compatFlagsOpen; if (ImGui::MenuItem("song comments",BIND_FOR(GUI_ACTION_WINDOW_NOTES),notesOpen)) notesOpen=!notesOpen; ImGui::Separator(); @@ -3241,6 +3242,7 @@ bool FurnaceGUI::loop() { drawPiano(); drawNotes(); drawChannels(); + drawPatManager(); drawRegView(); drawLog(); drawEffectList(); @@ -4361,6 +4363,7 @@ bool FurnaceGUI::init() { pianoOpen=e->getConfBool("pianoOpen",false); notesOpen=e->getConfBool("notesOpen",false); channelsOpen=e->getConfBool("channelsOpen",false); + patManagerOpen=e->getConfBool("patManagerOpen",false); regViewOpen=e->getConfBool("regViewOpen",false); logOpen=e->getConfBool("logOpen",false); effectListOpen=e->getConfBool("effectListOpen",false); @@ -4603,6 +4606,7 @@ bool FurnaceGUI::finish() { e->setConf("pianoOpen",pianoOpen); e->setConf("notesOpen",notesOpen); e->setConf("channelsOpen",channelsOpen); + e->setConf("patManagerOpen",patManagerOpen); e->setConf("regViewOpen",regViewOpen); e->setConf("logOpen",logOpen); e->setConf("effectListOpen",effectListOpen); @@ -4782,6 +4786,7 @@ FurnaceGUI::FurnaceGUI(): subSongsOpen(true), findOpen(false), spoilerOpen(false), + patManagerOpen(false), selecting(false), selectingFull(false), dragging(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 1c735506..785c63f9 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -242,6 +242,7 @@ enum FurnaceGUIWindows { GUI_WINDOW_PIANO, GUI_WINDOW_NOTES, GUI_WINDOW_CHANNELS, + GUI_WINDOW_PAT_MANAGER, GUI_WINDOW_REGISTER_VIEW, GUI_WINDOW_LOG, GUI_WINDOW_EFFECT_LIST, @@ -361,6 +362,7 @@ enum FurnaceGUIActions { GUI_ACTION_WINDOW_PIANO, GUI_ACTION_WINDOW_NOTES, GUI_ACTION_WINDOW_CHANNELS, + GUI_ACTION_WINDOW_PAT_MANAGER, GUI_ACTION_WINDOW_REGISTER_VIEW, GUI_ACTION_WINDOW_LOG, GUI_ACTION_WINDOW_EFFECT_LIST, @@ -1117,6 +1119,7 @@ class FurnaceGUI { int unsignedDetune; int noThreadedInput; int clampSamples; + int saveUnusedPatterns; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1228,6 +1231,7 @@ class FurnaceGUI { unsignedDetune(0), noThreadedInput(0), clampSamples(0), + saveUnusedPatterns(0), maxUndoSteps(100), mainFontPath(""), patFontPath(""), @@ -1257,7 +1261,7 @@ class FurnaceGUI { bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen; bool mixerOpen, debugOpen, inspectorOpen, oscOpen, volMeterOpen, statsOpen, compatFlagsOpen; bool pianoOpen, notesOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen; - bool subSongsOpen, findOpen, spoilerOpen; + bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen; SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; @@ -1566,6 +1570,7 @@ class FurnaceGUI { void drawPiano(); void drawNotes(); void drawChannels(); + void drawPatManager(); void drawRegView(); void drawAbout(); void drawSettings(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 5fabb1c7..ea2edf27 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -487,6 +487,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("WINDOW_PIANO", "Piano", 0), D("WINDOW_NOTES", "Song Comments", 0), D("WINDOW_CHANNELS", "Channels", 0), + D("WINDOW_PAT_MANAGER", "Pattern Manager", 0), D("WINDOW_REGISTER_VIEW", "Register View", 0), D("WINDOW_LOG", "Log Viewer", 0), D("EFFECT_LIST", "Effect List", 0), diff --git a/src/gui/patManager.cpp b/src/gui/patManager.cpp new file mode 100644 index 00000000..16fdc345 --- /dev/null +++ b/src/gui/patManager.cpp @@ -0,0 +1,37 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "gui.h" +#include "misc/cpp/imgui_stdlib.h" +#include "IconsFontAwesome4.h" +#include + +void FurnaceGUI::drawPatManager() { + if (nextWindow==GUI_WINDOW_PAT_MANAGER) { + patManagerOpen=true; + ImGui::SetNextWindowFocus(); + nextWindow=GUI_WINDOW_NOTHING; + } + if (!patManagerOpen) return; + if (ImGui::Begin("Pattern Manager",&patManagerOpen,globalWinFlags)) { + ImGui::Text("Hello World!"); + } + if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_PAT_MANAGER; + ImGui::End(); +} diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index ee35fd86..3134d9e3 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -514,6 +514,11 @@ void FurnaceGUI::drawSettings() { settings.blankIns=blankInsB; } + bool saveUnusedPatternsB=settings.saveUnusedPatterns; + if (ImGui::Checkbox("Save unused patterns",&saveUnusedPatternsB)) { + settings.saveUnusedPatterns=saveUnusedPatternsB; + } + ImGui::Text("Note preview behavior:"); if (ImGui::RadioButton("Never##npb0",settings.notePreviewBehavior==0)) { settings.notePreviewBehavior=0; @@ -2133,6 +2138,7 @@ void FurnaceGUI::syncSettings() { settings.macroRelLabel=e->getConfString("macroRelLabel","REL"); settings.emptyLabel=e->getConfString("emptyLabel","..."); settings.emptyLabel2=e->getConfString("emptyLabel2",".."); + settings.saveUnusedPatterns=e->getConfInt("saveUnusedPatterns",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2221,6 +2227,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.unsignedDetune,0,1); clampSetting(settings.noThreadedInput,0,1); clampSetting(settings.clampSamples,0,1); + clampSetting(settings.saveUnusedPatterns,0,1); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { @@ -2365,6 +2372,7 @@ void FurnaceGUI::commitSettings() { e->setConf("macroRelLabel",settings.macroRelLabel); e->setConf("emptyLabel",settings.emptyLabel); e->setConf("emptyLabel2",settings.emptyLabel2); + e->setConf("saveUnusedPatterns",settings.saveUnusedPatterns); // colors for (int i=0; i Date: Tue, 16 Aug 2022 04:19:00 -0500 Subject: [PATCH 395/580] GUI: pattern manager, part 1 --- src/gui/gui.h | 7 ++++ src/gui/guiConst.cpp | 7 ++++ src/gui/patManager.cpp | 74 +++++++++++++++++++++++++++++++++++++++++- src/gui/settings.cpp | 9 +++++ 4 files changed, 96 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 785c63f9..2162ae1e 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -200,6 +200,13 @@ enum FurnaceGUIColors { GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY, GUI_COLOR_PATTERN_EFFECT_MISC, + GUI_COLOR_PAT_MANAGER_NULL, + GUI_COLOR_PAT_MANAGER_USED, + GUI_COLOR_PAT_MANAGER_OVERUSED, + GUI_COLOR_PAT_MANAGER_EXTREMELY_OVERUSED, + GUI_COLOR_PAT_MANAGER_COMBO_BREAKER, + GUI_COLOR_PAT_MANAGER_UNUSED, + GUI_COLOR_PIANO_BACKGROUND, GUI_COLOR_PIANO_KEY_BOTTOM, GUI_COLOR_PIANO_KEY_TOP, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index ea2edf27..714e7770 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -812,6 +812,13 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY,"",ImVec4(0.0f,1.0f,0.5f,1.0f)), D(GUI_COLOR_PATTERN_EFFECT_MISC,"",ImVec4(0.3f,0.3f,1.0f,1.0f)), + D(GUI_COLOR_PAT_MANAGER_NULL,"",ImVec4(0.15f,0.15f,0.15f,1.0f)), + D(GUI_COLOR_PAT_MANAGER_USED,"",ImVec4(0.15f,1.0f,0.15f,1.0f)), + D(GUI_COLOR_PAT_MANAGER_OVERUSED,"",ImVec4(1.0f,1.0f,0.15f,1.0f)), + D(GUI_COLOR_PAT_MANAGER_EXTREMELY_OVERUSED,"",ImVec4(1.0f,0.5f,0.15f,1.0f)), + D(GUI_COLOR_PAT_MANAGER_COMBO_BREAKER,"",ImVec4(1.0f,0.15f,1.0f,1.0f)), + D(GUI_COLOR_PAT_MANAGER_UNUSED,"",ImVec4(1.0f,0.15f,0.15f,1.0f)), + D(GUI_COLOR_PIANO_BACKGROUND,"",ImVec4(0.0f,0.0f,0.0f,1.0f)), D(GUI_COLOR_PIANO_KEY_BOTTOM,"",ImVec4(1.0f,1.0f,1.0f,1.0f)), D(GUI_COLOR_PIANO_KEY_TOP,"",ImVec4(0.0f,0.0f,0.0f,1.0f)), diff --git a/src/gui/patManager.cpp b/src/gui/patManager.cpp index 16fdc345..d597bd9c 100644 --- a/src/gui/patManager.cpp +++ b/src/gui/patManager.cpp @@ -29,8 +29,80 @@ void FurnaceGUI::drawPatManager() { nextWindow=GUI_WINDOW_NOTHING; } if (!patManagerOpen) return; + char id[1024]; + unsigned char isUsed[256]; + bool isNull[256]; if (ImGui::Begin("Pattern Manager",&patManagerOpen,globalWinFlags)) { - ImGui::Text("Hello World!"); + ImGui::Text("Global Tasks"); + + if (ImGui::Button("De-duplicate patterns")) { + e->lockEngine([this]() { + e->curSubSong->optimizePatterns(); + }); + } + ImGui::SameLine(); + if (ImGui::Button("Re-arrange patterns")) { + e->lockEngine([this]() { + e->curSubSong->rearrangePatterns(); + }); + } + + for (int i=0; igetTotalChannelCount(); i++) { + memset(isUsed,0,256); + memset(isNull,0,256*sizeof(bool)); + for (int j=0; jcurSubSong->ordersLen; j++) { + isUsed[e->curSubSong->orders.ord[i][j]]++; + } + for (int j=0; j<256; j++) { + isNull[j]=(e->curSubSong->pat[i].data[j]==NULL); + } + ImGui::Text("%d. %s",i+1,e->getChannelName(i)); + ImGui::PushID(1000+i); + ImGui::PushFont(patFont); + if (ImGui::BeginTable("PatManTable",32)) { + for (int k=0; k<256; k++) { + if ((k&31)==0) ImGui::TableNextRow(); + ImGui::TableNextColumn(); + + snprintf(id,1023,"%.2X",k); + if (isNull[k]) { + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PAT_MANAGER_NULL]); + } else if (isUsed[k]>=e->curSubSong->ordersLen) { + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PAT_MANAGER_COMBO_BREAKER]); + } else if (isUsed[k]>=0.7*(double)e->curSubSong->ordersLen) { + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PAT_MANAGER_EXTREMELY_OVERUSED]); + } else if (isUsed[k]>=0.4*(double)e->curSubSong->ordersLen) { + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PAT_MANAGER_OVERUSED]); + } else if (isUsed[k]) { + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PAT_MANAGER_USED]); + } else { + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PAT_MANAGER_UNUSED]); + } + ImGui::Selectable(id,isUsed[k]); + if (ImGui::IsItemHovered()) { + ImGui::PushFont(mainFont); + ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_TEXT]); + if (isNull[k]) { + ImGui::SetTooltip("Pattern %.2X\n- not allocated",k); + } else { + ImGui::SetTooltip("Pattern %.2X\n- use count: %d (%.0f%%)\n\nright-click to erase",k,isUsed[k],100.0*(double)isUsed[k]/(double)e->curSubSong->ordersLen); + } + ImGui::PopStyleColor(); + ImGui::PopFont(); + } + if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { + e->lockEngine([this,i,k]() { + delete e->curSubSong->pat[i].data[k]; + e->curSubSong->pat[i].data[k]=NULL; + }); + } + ImGui::PopStyleColor(); + } + ImGui::EndTable(); + } + ImGui::PopFont(); + ImGui::PopID(); + } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_PAT_MANAGER; ImGui::End(); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 3134d9e3..f411dea5 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1583,6 +1583,15 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_EE_VALUE,"External command output"); ImGui::TreePop(); } + if (ImGui::TreeNode("Pattern Manager")) { + UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_NULL,"Unallocated"); + UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_UNUSED,"Unused"); + UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_USED,"Used"); + UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_OVERUSED,"Overused"); + UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_EXTREMELY_OVERUSED,"Really overused"); + UI_COLOR_CONFIG(GUI_COLOR_PAT_MANAGER_COMBO_BREAKER,"Combo Breaker"); + ImGui::TreePop(); + } if (ImGui::TreeNode("Piano")) { UI_COLOR_CONFIG(GUI_COLOR_PIANO_BACKGROUND,"Background"); UI_COLOR_CONFIG(GUI_COLOR_PIANO_KEY_TOP,"Upper key"); From a8a6d8bc4e2fd793b99b0160426b439968c8bea8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 Aug 2022 11:32:06 -0500 Subject: [PATCH 396/580] move --- ...usic 1.fur => Silver Surfer - Stage Music 1.fur} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename demos/{[TSU] Tim Follin - Silver Surfer - Stage Music 1.fur => Silver Surfer - Stage Music 1.fur} (100%) diff --git a/demos/[TSU] Tim Follin - Silver Surfer - Stage Music 1.fur b/demos/Silver Surfer - Stage Music 1.fur similarity index 100% rename from demos/[TSU] Tim Follin - Silver Surfer - Stage Music 1.fur rename to demos/Silver Surfer - Stage Music 1.fur From 159383aa40f1f5000ee144f8216520eeea7e39f9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 Aug 2022 11:40:28 -0500 Subject: [PATCH 397/580] workaround for account limit issue --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6d356bed..ec8ed890 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -130,7 +130,7 @@ jobs: zlib1g-dev \ libjack-jackd2-dev \ appstream - wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" + wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" || wget "https://tildearrow.org/storage/furnace/ci/appimagetool-x86_64.AppImage" chmod +x appimagetool-x86_64.AppImage - name: Install Dependencies [Linux armhf] @@ -151,8 +151,8 @@ jobs: libsndfile1-dev:armhf \ zlib1g-dev:armhf \ libjack-jackd2-dev:armhf - wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" - wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-armhf" + wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" || wget "https://tildearrow.org/storage/furnace/ci/appimagetool-x86_64.AppImage" + wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-armhf" || wget "https://tildearrow.org/storage/furnace/ci/runtime-armhf" chmod +x appimagetool-x86_64.AppImage ls /usr/arm-linux-gnueabihf/lib From 793dad89ad625dd3fd287ff64bd4fdfb873013b5 Mon Sep 17 00:00:00 2001 From: Eris Lund <38136789+0x5066@users.noreply.github.com> Date: Tue, 16 Aug 2022 19:52:17 +0200 Subject: [PATCH 398/580] Completed the module --- ...government funding breakcore-ish remix.fur | Bin 417079 -> 417129 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/demos/government funding breakcore-ish remix.fur b/demos/government funding breakcore-ish remix.fur index 5c3a47ce2df99d6c61cfe83503540c45567c0dbc..7acbabc49d88e3b43f27ef132f0edce99fbead61 100644 GIT binary patch delta 368330 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

  • ^rP(| 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
    cvK3wwR`EcWMzu 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 TiMT<3!aDxh`2+kf)3uWG%tS%U delta 368199 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[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 Z6CU$`gVrO0zV~95pJHBGO~-z`;XhYgN-qEa literal 0 HcmV?d00001 diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 39cb1192..47ae9e98 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -87,8 +87,9 @@ const char* aboutLine[]={ "Miker", "nicco1690", "NikonTeen", - "psdominator", + "psxdominator", "Raijin", + "SnugglyBun", "SuperJet Spade", "TheDuccinator", "theloredev", From 7d89708bf747455fdc0717ebe40247f7c11c254a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 21:25:58 -0500 Subject: [PATCH 548/580] Clang can you stop complaining --- src/gui/waveEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 37b8cc80..2b7e638b 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -608,7 +608,7 @@ void FurnaceGUI::drawWaveEdit() { if (ImGui::Button("Amplify")) { if (waveGenAmplify!=1.0f) e->lockEngine([this,wave]() { for (int i=0; ilen; i++) { - wave->data[i]=CLAMP(round((float)(wave->data[i]-((wave->max+1)/2))*waveGenAmplify),(int)(-((wave->max+1)/2)),(int)(wave->max/2))+((wave->max+1)/2); + wave->data[i]=CLAMP(round((float)(wave->data[i]-(int)( /* Clang can you stop complaining */ (int)(wave->max+1)/(int)2))*waveGenAmplify),(int)(-((wave->max+1)/2)),(int)(wave->max/2))+(int)((wave->max+1)/2); } MARK_MODIFIED; }); From 60e37714dacbd0f7942b1d4b5aa241742ebd36c6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 21:28:54 -0500 Subject: [PATCH 549/580] Vim mistakes *** for italic --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d2308dd7..7efe2c2a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ the biggest multi-system chiptune tracker ever made! [downloads](#downloads) | [discussion/help](#quick-references) | [developer info](#developer-info) | [unofficial packages](#unofficial-packages) | [FAQ](#frequently-asked-questions) -*** +--- ## downloads check out the [Releases](https://github.com/tildearrow/furnace/releases) page. available for Windows, macOS and Linux (AppImage). @@ -74,7 +74,7 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a - loads .dmf modules from all versions (beta 1 to 1.1.3) - saves .dmf modules - both modern and legacy - Furnace doubles as a module downgrader - - loads .dmp instruments and .dmw wavetables as well + - loads/saves .dmp instruments and .dmw wavetables as well - clean-room design (guesswork and ABX tests only, no decompilation involved) - bug/quirk implementation for increased playback accuracy through compatibility flags - VGM export @@ -103,7 +103,7 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a - built-in visualizer in pattern view - open-source under GPLv2 or later. -*** +--- # quick references - **discussion**: see the [Discussions](https://github.com/tildearrow/furnace/discussions) section, or (preferably) the [official Discord server](https://discord.gg/EfrwT2wq7z). @@ -119,7 +119,7 @@ some people have provided packages for Unix/Unix-like distributions. here's a li - **Nix**: [package](https://search.nixos.org/packages?channel=unstable&show=furnace&from=0&size=50&sort=relevance&type=packages&query=furnace) thanks to OPNA2608. - **openSUSE**: [a package](https://software.opensuse.org/package/furnace) is available, courtesy of fpesari. -*** +--- # developer info [![Build furnace](https://github.com/tildearrow/furnace/actions/workflows/build.yml/badge.svg)](https://github.com/tildearrow/furnace/actions/workflows/build.yml) @@ -228,7 +228,7 @@ this will play a compatible file and enable the commands view. **note that these commands only actually work in Linux environments. on other command lines, such as Windows' Command Prompt, or MacOS Terminal, it may not work correctly.** -*** +--- # frequently asked questions > woah! 50 sound chips?! I can't believe it! @@ -274,7 +274,7 @@ the DefleMask format has several limitations. save in Furnace song format instea right click on the channel name. -*** +--- # footnotes copyright (C) 2021-2022 tildearrow and contributors. From f0d3ad1c82d9b089101fd731e4704ed209e5ea07 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 21:33:35 -0500 Subject: [PATCH 550/580] GUI: don't care about clipboard data version --- src/gui/editing.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index 391a39f6..201c9be2 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -431,7 +431,7 @@ void FurnaceGUI::doPaste(PasteMode mode) { int startOff=-1; bool invalidData=false; if (data.size()<2) return; - if (data[0]!=fmt::sprintf("org.tildearrow.furnace - Pattern Data (%d)",DIV_ENGINE_VERSION)) return; + if (data[0].find("org.tildearrow.furnace - Pattern Data")!=0) return; if (sscanf(data[1].c_str(),"%d",&startOff)!=1) return; if (startOff<0) return; From 2a051900a77dcb2f1dd54aeece23b424d47dc5fd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 21:46:10 -0500 Subject: [PATCH 551/580] update Bullet_Hell.fur --- demos/Bullet_Hell.fur | Bin 60233 -> 60291 bytes src/gui/about.cpp | 1 + 2 files changed, 1 insertion(+) diff --git a/demos/Bullet_Hell.fur b/demos/Bullet_Hell.fur index 48c50f674d7d8a4c9cfbb2f632a1d1de602a617e..dfd2a04251e144596f21d8dd6aeaa3d2cc0a297b 100644 GIT binary patch literal 60291 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

      lfopXzJz@$ zNdYH|Mdw5=Eu1J1@9~*)o4udf4k{2?VrFa7pr@?+A%E&2SgaBLV~xqT{M;hS_Zg`} z*3z*?h|@9lj@;pt`DhXMKJw48;-cFTn^!;%<=hz42nMY1kbRb)5GRRR^O>50Q{8*IRdcKb68iq3>ZuMA4w^s@5`=G^sVE=3|D95}s$k%QqrfCrle(V&b|k zSwaR>&0ibQ4B*QG`T4T7EZdRs+t`|{-X!q{Qy2o5-6n0fmC7_=c?(9%0 z&?o>0f_hj`ttwSk(-DIDs1Z|2d;Z-#X?6h{{vq5WrSW8|XD$u&!X@6_>jGQqA2(G= z)2jS>h%Mr=fMkN}$`RE72KQhF!tVmHKhX71QCRB5K8O@&P=y{9J)MN`&q0RDd8Wjj zl%VeZk!-;z;GhBJuby7Q!3+ z^(57c;+k-U78blY>H<|Jd?C4DpQX(T7AIOSynGIvqO1K5Ox2=mLI0vcl8%FDcG;~mx=4cDI; z4ZeAlNT9JeFUMWgqGbQ+}xQvJ!4I`7&^mi1~ zNz%#A`YJ}8_cVu;<3lOJ>&d|t8)2PoQqyKFQ3?s{UJJtju0uT23?2@W9LdqpTq**~ z;?QszJf!lE^?1)xxbjwC;q#I3#kufBS%L)4Lj-XiXq_ec(dDEkpF*2SfmS+a>ZW21 z85VQ5yeEOMMa-jcO(_?CH=Tt|N-bugNM3EgJ{A50H2#}Ynniv2`FhLSKHb^F5Hn)= zNkKO+9rB>USBdYmEtbunC<`0TaM#iS`>K(J$x?l#C2bB`*YD1*8F_?ScRsnOyasI+ z0Q!;=PnA0$>Bwumrb`BK$BpQkT}o>k-&kNDnmPiQ3i5Q6<^op4fFX9k;<|4(NUTfT zQtPFp&d(~O3IM4lge-@^f+b<_tu1Kz#9CS+b4FpClj#y3mf3|rLqzy{?BwU-VWS|FbHz69jaIHtG7RpEql~byt}-%W{~_Wi5Ua1^>3=qDM` zT9I=;w`aW5f*1_tj_RJ29kk?Fnx2#i799?T;tT`SBV>K5U*YEZwD`(ST2ouy*vjp< z7E@x!x`cBpU1?OSY6`xWZ$F=EL(<@D(S0jr(-cLVaz@*zb`!HVHb>bcH3JToV$vlP zkm=tNo)q!M#@ZOSbEb9$0F9k>0_iFiRxMc!jrffyG|aIUI!Fd>{F=mKU;M)fi~!G$ z1OZYU4dKsXtixaWJegs*Y@dNrE&Mi+laKcgv92xh`qHuM*F51s_M zxU7?Uw1xl#JcPe{zxVrQ|>n*q^WJ36mR%oc)N z_<$|jf_7CeEx8Lf#rS1VyVi!uN?u8#dUKGElsUpmXYAsIyWZ4}fxMy!b1|MoR$Z$Y zJ;K=hWlCl<_qjyioLa6JBu`9>eptHI-MG4pG|h`pYeR`#7-4};zYaysY7*EE+3w>% zC2I=N*=1!DO%9RQ#7z@;^u+`nrzTVqoeSFY#py6iLf#U%6>Y+F%>(|+rRkJE(mP7Y?FnpN?d|nP z)WH%4p@%#?t3-6Cpc+SI7QMAf0@B%x-2E9I=0}hEPP;1Z>^CAs>6JZ!@myICDTa7z zhNA5*Awu|jYp?zAPKfLluyi++`R($11c#`*hETHVi_{wBnjoeV4L}_;y zwwkgO!uk97ggo(~9Rx8cYn-|XTY|0{af}}(=*YQeNi?u>GyO#W9ny11FpnWKLzwV( zzIV4l%*H&1nlQ?_L*cT8i3hK|^?1yWpgU8wzQ>EwdhE@7HU70I8+_$d9+bpGTn4pX zr`sL$!^s--g=uq@=TDF1o?5`XZK1qsyJd{?wCa~f>T)d$1*JAhRwMCvsZkM@ImMBN zKE)-)>BJS{aJ;2tm2iaO`fR#YUAuG%z$!Li*!IHu2rx z^@G3I7?$Z1fQnA@v=-oH?>q_CCvo4Bfeylf<;HkbL{C1Jkgd~dq3B^}#l&a)_flph z`NdAw1bTsU9;jCuD_(;-12y0tf=^WYwOqghm)blIP z%U=OS|0&J1&fx7waN~pCfw9CyhrwZf-V|PuU#3G3#YcRb;@X>WLguln_A6Yt=<+}{=T9E*V~r`rTavWk*aLdma$mDvO{ zenMCP8r23WqvXs6AQK~@UntEWnye(Whd~u3nw)jt`)$Q22TknXd&f8(#st}&_<4PV+{Er7-$I{qri?Hkr5QlF67-s5K_QsMJ=7kF61$HNJ%fPMu zaQ3L!lUVo2Nko#w;3QdR0v-fnZ+~8BJ-LR=N2Z(1qzGpUTH8z+>h$5FargqRtE_gk z+s!`$r9_Vu71u}3L^%R~=aHQGGnMjb%{5ib$+T?j7@msO6s}OtCG-RoJYmrlVSKLM zmT&a!^O5yAu$h4C2e+OEjRVbfS_YxFiBGv9)zxjnF_S!yg5t#W;vFvrKeWezYb3?L z%S%xyz$NTrJc=7dlNP5}N7Hw7BE6nFaGd5#%~hJwHN~pSScP$FrxwvIteWxG8LyCe zof>j7Gj3KSyP@uG(d<01nZSpCYw%TKUw&&W?cU8W zU4Ug_yp0~`bn8DH0KRGnB|D&lMnf4FxJ%%wNHz>W_WLE2qg#;SK$-iF11UVXK6#Y^{Z~Vssvm;9<~#6C-u_dWH;!KP?2+e7&2a0ohBc#rKk) zb>^s@i#*s3LEykh5+I};Lu*_h8y?t7{f^cLEW&s`t1?xkSBl%XgGm_^oCdl4S>a?_ z>*z_~K2t`?%I*#0g0KG_sE5_~>5c@xsV$uuTW8jX$x{kBGJ=u6GT)g0yL*xix_y$X zZfE{iAfGs*ktt)?9MO&&| z#%&;h8*Nd%J<(IhqlBTP=U&l*jzGcln9uG$KyVgv$sEc(-Klw#}#}BzWr`T{~0RH+=eEyyx@z%U!K?>c@-R9 z>GnwRIwxw*J8HnT&M1Tcycn;ope)a_4l~`Yc%*-ax(#2rU<5tE?$2iV4sXq38+$@i z_*hh)cO$UvF=dAi)ZxsVil+8zr$Zd*v%~TipZcHI5+#c*hX3`^2j>v#kMT0PO8V&6 zzsU|zN+G*q}$yfyl;N*NKe(NxPKYeU0NMogoQ56~Q|nK%+#3k9PxvuOO4q zBy$rEe$yI0voG?}Ccu#IavVq8cgggdl!J1}ed^N>Z=fnB3gcjO$CwEPBZ!)SIm7d~ z>*1(PHaQFtFtTAkj8oz{!H|f?45@iMWf03bqpfHzf}9^OYC2QSa5(+{e$rjEWBg{NOzjdc4V0&WXDPgR}*JcuM6t-8{D z7PQ5+a?^r#C*ci~Y8WX#82EVIt-d?&z>7E-J|tT`YOlR*4HA92n7_2ADECUk-U42Z zu;hKtl$K2whriZ>YO0x8b)X6DHmQeY%;*eRVD{+eLfXpWhCe*pGP??3>7R7;=Lem$@z@qF8}BjF)QW7H{fAO=$FDLO zfPac&6}gsrQ8^vOlaF=%2A1v_bp-}KRx)rr=DH@fNoU1}r>8O_fyPP!{3=-6A{qsjht~Lc&mOFO0K6Z7)31m4DbqR%2JRuL@}t zRQbj3Uq?_zJA6ZZxHj;dF$4D_T)Z<%)9@*7yAJG+XU|1p;frQ~S4+5_%U>UhND>?9 zoKr;2&}ru80!ohY3g%>~Q^6>}7w7;Jra_)E^*1`(saHD{yBoiCDS<|QQw(_Ks=7Wq zXUy6@F8)tOw`P;1<*y>5c-GPob87DA8ocG||cHH78~A(NDQev3kDHM%juZp>s#C3q$T*h6;4q+`-wo(ZfT z_=l{>^nXY*|5HQuwRZHTrY7f(hwrO)I~?t6C@7b+u2Lqcf*8kWPv}kM9UM5^D9mO~inQ|JwD-{2{Az5pODZ!- z>kXSGf-b(A(Yj1{n&MEE5w6SS=A(}id+)jOh842e{F6`~yjq}!!h2^HO`o8#G4~q~ z9ZSK+S@`)#6KhJrbS)d_MkJiVX; z_i*aiCJ{F$^H^}kaut7(`(CLyd@l?#K@VcX6gt18VfR~<8c9-SN$W{vYmp_glT*;Q z{PE7pwBmOkL*VA%_qDWWe1)P#A_-Y`-tm75&?%t$v8SNw_$z8XK*(L~MPaH7wcN99 zo3WWS2V`MZf=)!Neb70qX1p2iX;J7YoKp-~SaFWm+}g#?o@FVYM@=RJ%5r=>{&mvW3%i?u>3Y|)!%-aQ$#)+qfm4!1lqiWMHtnoEy<(`F|LOUVyS zT){^wlMlurI_~ipGtplb&VLESUrl44Kk0q>oZ`4`>c%DFuO&9DDgtLWg_Bft9@>~! zHnEg)>Bhpz*gSn8f9t7(I&-XM6Z$J zLxgnWF@49Th;CHvyx(UZj3 zBp6;aoN}jAK8dMI3;nL%N+06gh@{G zY+JK50G}H*Y6x5%a32FHU2VotsWxgmR$h4Q_L!o6(tUo*r>!?p|j|* zl>1jYWC3w(yAg9>xAEVv`3%>0zzkm=!52xMn&ioYt={Fp_hLCtFsZhKH2Y2d$ZgV{ zU5r!#vvS#lx#_|Lx74EbxZ_g`6Rgv>nTyq#$Ix?DZL+zBm)dHVC7h7zgrr;L(cx6`hY%vDL}Y00CY zC(M5wslQ9e7MCZ|{uwQ2lxN1iKGxTok;o=xM~%;YzJ!^T#ui z6h=wjlFqK#Z0f9>e~6yNlY&F;v3MfJJFy3DXc-S$%>ou^j$7TDL>K{B5+PuQp2dI~ z0=C7n6r!>d%N}$~Jd;F6X%B36vLYntIk93gQoe7S7jMMltYUsU^o+Ak=Yr#Y+-H1%N(iPagq}^eCfT^ZpKI` z*}2Gz-UMHYjGnxVV|N?fg-j#!_X;O?BUJ1Vzwg+JayBf_22eu+b6vbiWpTfI0iK;v1#o<-$y{kl{z zLMIVJ>AW{76v4@$SBO~SY+l2a4gkX+d8F0Jym5|QzFmIock0mlnx}k9b&b6Gk>cwCIeNFb z=m9)fho2I2DxN7Q_0`W`HX3zH<%a?U8O5o6zagN7JGn6>)MjiM6&_UOhD-O=t2v=g8`BP?}t^MThx`e|g0fn*c3iOy;A z02sK3*4V?;lk}&5*=YDGGzmECnrxuFkg1-GEbAU3V+aR}H*s>Xl(0!qdSb#V_e!;y zWi9DM!CRnRTKl3zL$$78#vmxRMh3E z2D_XJ3@}nyMzr&aplCn;pR-u0R*Z3*pRKl&9o^vBTai6Y;oM@9+;lPcFscC z7T5ve%xL+N$dn@#d{Uk(j$fE*rTv_yknqNCj6&BgUS0vGMm1jgtnKhe`XG;Q><24< za-38sqAEy#vq*61lSbiM3!4mN_k@fuz|H-{vH0uNW_lTFZAtB_454hR`wb6mm?%=7 zh8F=*@%wyN;ZO20M8j}+S1`E-<4%P2CW7R_%Lu(N>wlOFKWbx0denDl;c?IfjZ-!5 z;f4fsO1G8J0nd^mEe?TC!Z#?rh9xj)!cM7dn}t6Z;uOwfTwKCMEj67!g>56p)=jV-F9bGLkEY) zILN-dz>(E-Q3s!B1$%T(1q@Bduje$hEhGZ7o|ysY!v+E(1QiR28Qixhz}>x^q^pUN zz4$S?G27KOqpT;tdg)x>%HfwI(ovhWyllq6Vfy7z1hcTXU2)kw(phnn3@2f8^0kyr zbZhZ5JS8z~vyW1;Xf75ztySeQeGwGtHg*ic$*u8v5SeTg4Msg z0A%^dKg*J{dT$jkA6=-6I3^C!aE0MdkRu9+^eiCM?Q)hvnlc7*CkqL{SKIo8o#t)_ z++Wzlv*7!166tCP;<9am6sAJDb%z|uMscVhHe;TP_yWd!mW?*XIRk`1ii)fy0B5ZJ zQW2TXfW zOP5K?o)Jbz0uG_)N@(*#ylQUkwyILcMLz7ew1ti4==qTvS60nPWb?lWmQ3nQwl3OK zBn{0WSJbHaL1msfVH=)#k4n24NMHHe)Zu3m!r)0t`}%f-Ydtka&a& z$h!!yh;Z)0Dr(9Vay)1Y3S}j-4!Q$1G&FxlZ2b3-Hj>Y-0Ri5JQ7RzIgniG!7VSMu z9hn<$<;1Axr)HdxPV3N>+cq)q_(zxLJG~x5InY==+`$`k>jp`=L1`BX@6VODUy2n) zSxW1;?@?@nXhz|rsv|X6a`(N+o9%9AGKgylF=d@q9-fr~cC+nB02F;gD|%aQ1!ERnQd zoTejKLqbQvNqJ=ZBBH|+vEfKv3vUqmKZF7A2+j$8cX0GJpD!ff96oV~b6wDNJ#BrA zi=!5-795y3FYujoCw@N}@3F9028)G|slnGhwo0oW33@gU?`d5e!5~zxa9az83_0Sg zasBY0P`#r}j<8SV^2{fGHz7NY^Hl}o-a{$=Y-!{phy#Bocv5>#i}Vk5s4hx4hYiT* zJ_~AJ@<*KEs{r#}&7h!E!%{XdecOibw0ccN!`d|lcx8`G(tD%r3ZZbO74sf-BJwIZ7b73E_W7V62cDeGQd8L@m z)8Ce!zJT?-;gCmJ|MA0Yeibp8cZ1@)@U7?B<3*B>ur1U%wd4$pEkH4M>Hxpn+Gxr^ ze{rQfHPa{(E~j109PQLdNjNY6l;NH!>Y@0vmXD4~n4uqikqbB?4lwg=+&F+vCW~RV zfyJ(>ibtTlI7GSs-u23$%z!0lN*om?0vSw`M;2$5EE+R4`fYK6ikGu=2A*MJEde3b z;S7=IRiZRcW6}LjJkzGjQaeX~>5pHPiBJ`5U9_JjLT4PU5G~N(roWyK1?%cF9yZ?5 zu)8(X$~fdC8oHyVl-14uaM59XVvb7r?8PzPD`QQ<34C9@4R zRlr^yzFy7?S0d1a>;qeEt}A?~alK_YaUN1-2G@-l1i`s#CO50z+51BfR8{6&7oP zONye#-4oB*2NfpP(HJg>(S*=b|B2%Bc7;{MnO>hGKh=b!^_bC5*^ZJ738hn*Km`zI zQiR$vWEu?c#{dZ0^{E`D7uiF5Nd)=M#`A_O=^B0F6i^wA*N&UM)i+e~GtVq9LM@w= z8{zAB+iYJ_CxF|FWeTi||GU-M3t#%*2mG-)}H+Y16a=wPQ zi^RSSPZ=laAS0L|YgO@xjl4Fxs&q!x&ih);_NgLdji@4M(S5Z-bk=?AEv{|7YW3_e zei1CM`E)=U2d$D#7wFAY*&&xbHN2mt7vNi&JBOZt@THn7wt9VO?2((SNj zFwHbIcYDi&Z4#lxKH%&_P>cWSiccJKIYC)=gOV9VIwRJQQjJeCMmx`JH^!liT{rJ) z%8_=}z{*H;4tbS`LPR@{H!TM3#t;o&%=j(gF{+Zbr(mN_t(%-<1YFzqV;o3-wz74b z`$88s^T0>|Iy@S#nAOD$7GPjOnB_yYLlnS|JfZv_06Rd$zvv6gi{Hf0dI5(wFo4`c zhqe?JLv=U^<;X#p=MblN#GX6M-Na>7)W55roZs9v@zW=J+^?hh`T8FBN_uU*k={b@ zsQ1zb>tpnV`ba%OAEXbqChAH|X}2S$iZsy_L3?;MG_Ch>49*gATCGxOjOB5~$Kfq2 z>9r0w2o2v||5{j$@Z@r-av6(PzIb{Xo#uVw00+r6a+vHPTX7tgk@;jM8Apbb5!mOe zNp5Kaxo`hSj1~p?=maL^lNtb`bH)*YUF1r#tK3+ATClbE7HJRZj<`HgS|&}GCP*Ws z9@1zj2P&6}#-Y+|r!Lm>+5k34OVl=KzuJC1^3N-*KG)UHuoXgm8^ts6mr;dXpOABs z1N6Zwy+S%mH_0Tsd14o@!DE<=xSKP5{;|Yo^N*j_2&c_ZJwxB)D6(RdgZ@Y_k-9p2 zOL>rDubNeZ+D_e|WUy3JN);Pht7Ld|wMT_(7Z~Q1C!h; zEPp-2t$vKZ9@tJ|MvfMX_?~EIx7N@ARaPR&24N73{kz}p9Y)y|KFl`rwl002&&jXs z^U3vbpHCgz3V2uBzR8J*)M@)Bw}`#A-){QwdsJ^ks&Lg!dKNv89;g@6OX-#MIv7>0 z^v?PSy@P&I@2(fIX0gUbg}b~nMZ z8q?)ISA)3fsAjgbQm?4fRacqFbwW4SxDno=-r}&-GS%hzYRfz^P#b!ZDkL{4CB+&y zysOW4@pj0Ui!f)m{_V<)_p6*MkQIML+@hE@HFaTk1nQBEsPG3sA7~G4(tnkw;#byi z5=b=B$aC_5T*c=RGKt)_#ZD80Dx$=0el~d)86zDcz3|-uq#T?eF5XiE^7y-Z9v~;k z3uywmZLCU?Qnw&W??WfKkqu)j{?z^duB$sC_Rc}n-OXpC(z=~m2lA5^kQ0g`^O(U8 zioi|M01_lKc)Dba>c{KrC3t9(O8m$xR17bO5j9*Sd5UcYD#R6to)?|0*2d^YIO3l- z_S5h68(lwH@7am*?jk1gJK`Ka7h`gt3R}o^P+=3)LuXVRHhXN8oah-cjmDA%KBanEzUZ z*YCfvRWp5W&6gEcU#ls4U)5R#ak8q|CW6HrJxnZ)+vkyywt(Gq8`Lr-LkXX8LA}+@ z$}rVmF)A6e=OwFY4?~1lA$~)peiie213!d1iAL9Oy#}kuWtfk5+!Xy{JMZNMGpa(q zr>vBl$-}bEAW1Mrnob%fH|6<6Cd3U3=4(;gnnBI<-O>NIJ$LVOan>if_~~!Mx#{tu zx&BZTu@ZfA+%u0$)RpEp^`kL#KWeoaroxUJoORPucuISt-kwAU(Y~m^+t4Po9<5Hx zqxx29L7Ln4D}rv+o+hB$*MP%m)Le(rg|4N$;c%WZxtw9CX%)?tx0LFfwzF8Rube1S zu;$QkUS)Ej6@DqEPDCenrRwCRWI$$pAw8DvNN1&oh~d%F3F9-#!9|P8%Tf|A7_G+M z(ogvJm5A^YrNP(&q>WOjaj6vTP+5=H*0C@xGoPugj6Uw#PTFNWCYhzSQa`D)3+)$8XqPl*`@KOs+wTqL{8xMD|G2uenr}eNj7Qf-^)0-7f(N-s%D_y-pS6eu zD_|b_|26Jo(|>8xL2SoZxyc`)M@@72XL+dpfMZAoY@Ej zNw6eHAlZ9^ySpY3N^vOeP~6>J3KT8H-QA_QLvbm-cjj)~i2TlODNf(^eZT+b`9J&I zkUmW|cW2J|$elB1+id5 zIg;uwF1<*{WXRw2=?;1MHZbrtq?fH7yAP6T>Wt5^C)~$F&SBAY$r;}gIZ1)P5;rM3 zI>vN#_2c`&myf02*h8;vxDHp~LY#$@a5N6VzStGpVRPcdI#`unp;(c=%SQS;2fog= z*R;_TVR{oZtH@Jzzq+sHipUBPWh2uXEowBpa^K+N#=ZtmaI>o+0<`Pq?xZ>fn3vf0 zA#5`rG@l`5ec$}T9BocDJKLTZ1ikZ$AD-=w`H#!;W7ekqPMk%BgS3*ojbLcFb`(~6OOj}2e<{-_$eo`&5 zGy|TxQTnC3;}p0+ku#Xj#rj#iir6V8WkAScpAr;X=bhHQkVZ$UCxxeo&e$XXWaoI;wCkL4~Jg znDkuH)paGa79Wa>cx!%$H{@N7eff+mj|v}A3#q>=yVMp1Zg|z?Q8dS|aVEw1Je-E( za2T;scUu?1D7y3NSl-rQFDG&H3kV>OR0@FkB<~dWB}BJyiNK3&I%%i``oE)m;tRDj z)ieE;#{n1MT+->|AOc!LeNtEz>GxE~1tsA&YXmu12~gac$63r3ll(j{u;%2O#*TJ^Cc6hspb{hEc1TzR`YW6K3kq#`~M_QCfM?16~({_ zx_sp#@?5V)*|@>(SMU_L@@B+zL-OWPUzmc_ImB7*l%=NaVMns9hSx4DEF+17Z)x>O z`E(U8wYD-^>!0|@a~OU8EI6H_eFGe0d7*JyaZyHQC6!%_ zqPBD+k9$oXwEXH+g%BzqUxhF6CY~omJ4HJ4DRzOUc+N4mWx8xD{}5p^R%H9C!~1#{ zvyUB~br)}d-dlIqf3(!oqf=aXAa}@-O2Xz7>HfO4%Nx$Z)Qm<35)`ePov2$k?GtBARr z()3G&OhrjY*CVC)_ciZ-Cu251kUUImu$}0)CJfBnK*5p?)FHa-A5sN0i2mOr; zaDR>(ro+k&WxBdsX%fCvSy%RSqmhwoBPT@a5lb5KGFihsmF_u5vOb3_?!>MmD#U^1uL5AcG%SHZyzlp=ayy#&c^nD_UM{sE$)kD?cbj zl%9$fR!a#COvTrvzXQO+3W5(QG;li}lV2+<+{q(X)p~x^%Y3=5C@Dq{2WTEX6nD*k=a*{lS3(gwo$a7 z(rf8ynf-V;t~M(Ce!v?gQ(2_$Q%9)1)TU~bvRpY9+{{og-c2r$t4J&DCMNiHPyJf* zJ6qkzCeqg@_3z}w)Oj$86vkwJ4@VmxVM30zri)5dHAUH^TnydmR~5RWCH0AIXH+6Z z{56_~Pucjdo)3*kSA9=+TwdV}^dy0RgoXn5Qa2yoE(jL9y7RphwS-hiX4ssuTNxzh(-|U5(ylWL~X{wOJ4)5Xx z+un?`a0>RpHrN8IiG^=MB-|q>_$YgwP-Y4$?2u&z1mk3%U4=|xd2;;0cEC1vk8Nf1 z*e=5JUs$H$55p6WmkB?b?ZiTJPVGLSb;>85yz9_4Un{NoiTheU%LAt|z*t{+!HPk4 z@CF}pbQf7p*lXb6WM}P0GDWMU4WZxa{ZSX?ukYdcP>s@nt~nH4PBKMIwY+eei0;rE zpFkgq+}u1CnrD9&wl(j1(z{#W3i-(+tRmZ%a!e~EZ)wE^qj$>v54_@q&%ENdn0(Sl zOnz1#CQP(Q4?S7mt{=8r#3$fRK8(-gKa;B(&4-Y$D#YjWoH(Bkak^otK$tvNzLdWZ zQfJCtGOOjZ)ZR8G+-<_I@$&q(u_BM~@2fbdht&dVxVk#j*YBbA1P;&c^mRNb*xfjS zq9h0R@p34*rI4fdN<54X*b424-QDP`wXfK;LShv<$vyCVqFoKN({6_K9G}Tg1$i3dz%hhF_;hFLwS8Z%NWe3`9~?1aY_MA(_I)rIodZ!_a1KiH$vKeeP8_pWAsjRf2C+nNBU0bKck-msC zUo`9VN-;ZXp!sR}v{0?2?Fn~Nt?m0K+#itba}DYz@{+sE&d&T}3PgEwBJNB@=eyg)ltep=rEnl`_cGM~MpV$%FkHn_h;Yf>y5+lEXLA z@Y+x&DYsTr*b(X%qj75RjtBewBOd&CKgQoz8+ynzQCbEO-saMO(0ke=KMZbs7wMo^ z^ogALbV$by&Zg+Tlqs5MM4Czcq7G{?#oQEfsW-{-SoGD>C#@=}-(bo)16_A$d;(y8 zN>zD5?;syhzV48RzOfH3P%okv*DL5X^+x*ldV77e-az-VWYs4`uhvJseU?98QBa2z z`yo6})oD%Knp|qKr%BExE1L9+9NhR~rCQm6FXkNQB4QEDYU}QhPH}93R}{;4z>2^J z$sctA4f?VtkmTfUnIpdwSCUQa0*fGIt^vu`y)cN7+v`j|m#j|=PxvNQ&VOszo3Os7 zO{Or@EK&pu!tN9?W=l5Ah0}&btdHTeA2Q5j;oGID@E zR1Qn;Nh9$RtMZrF%9!7{E!W`cuOs_>pV52QfDOHOeV-IDHbRuSV(O`^4;vABCFdnO zT`tomXqjeJb0#0~|A%fv8$art@P;tkPA{yd$ZD1#eN1`^-Xlc6%scZ3#NeDKGnu?d z=CkaV<>+U!>yCOu-B(|&ztG1;7j~{@JcNOyu&;9;;{ZOz=*eGtSIBwUD=#l=4CGG6 z5Z=i+glEeVRoD>zL~#%AtZq@esz0irMyffLd&=yP?pbE1C+K$4C*iC|5>zI&eH6U# z4d`$W;)vH{NL|&3dY*d{_G!iCRjmy%twK8N%kIq^| zNVzT}tvW`;lgqrGu*I_qjn^(xV>59GHYAmo1YL{|y~^QtPEc>z} z#n&=5j;`wRoIu?uSI5P>|BkPSWk=&3+>RSbRZJq>9fX4@qUxomi8y(SK3Af!RzhY9 z_ji@BVU#Pi={4QD7NkqLA@LP9E7(Cjqij)IsT0)3sy8X`)utTkwLDAlJHzROf?}mC zOqkzGY?e1g`}7Oe=Lc8}AHa7w05-uEPrpQ8V%AV{%6-TU%>F;g*Sqo$sgb@CvN$39 z5E1|>79XcT<63kxF6LMG8GexO;am6`zKk#6)A@Klod3wXzdu8#%DerRg}EnJxgYt@ zU}FPpkhgBWZTQrXJ7Wc^ro z){V7dfvi8{hOVqrrcMa>!o13SixB>TZ4b}m_j`DJKHJ0d^*y;?TQ96i=+K#1dVrWJ zUklHS=imp~Fc)5eI@lDpLP^iA2`=K8G;31&i`1lZhFO&VrSLwK$CISen!r@(<#{0? zM(Zx!N$u33ck52NdJ?_kBg&J#a*i;@*YjwMb6`2eeIKlaRWO2-N)Tp3Ae4g}Z@Y?x zvMojGbjqhi|6xDamuKUQCM7` z@ebQ=kVjwir!PlpuroQ_DYCuZM89RHa0&IfD=)xH1ma$QkXBW+ATj5b1(x zg*@KQ5^v;E^8Huo^^~-DJgHDO(vzv8g^sfA+qK|K^L2-Gbq2X9h3^D~-}e}uw8=Sv z7liEGM0&D6_QmexvLorcwiM4bxDyW`)@*7zt2{DoHgyd>nYBI~@mL(cP@9(c(4#dR zXUid!Tv!A&g(}bz(pg97#$K?q?kD4lX>&vw($OPH)%^NSiT&w-|GWNy|D+c7SJKOx zTqz&wLbgnNZnzaVK}9uLjaRRzr@~8x+gIBYIi`F$)k)o}lrHGu6@&*p*2XmyWr@=l z5f^uTcL!f%n7{6T{cSzUx1U!2RgY4Ebk=CSsBUjb)gfl0Q&^U3g>n~dquviM5k4@y za(L-*-|!o1y1Gy~r0&UgpRhaukKh$tVC!fy0@o6kZ6v?bf(PV#s_Zo_SGJi7n;zw? z2km%y!&uLo&>t31+>eCmP=xXzJ9EZR`(c*Tj`5I-Z6_X%f-+FdRwtMba+0>;fDp?{ z!ddnV_Ol6DybE6}vc+!%n*}}De%6CcX4P3&=ElYw_Ikcf>S%tbjWG-J5%U>B>c5_F z|2JJUvyro^NjcD86r~YtYZrjm8R8RI4f!#Zor13J`Qu!KB4da{!YDpIRQJsgQ^jub zTy`|$b@Z|66|$ulnXg1Camrz3qViZ7Ze(2d019EVBAUE+49G>lu&`C-iB}N&h>{f;`$crK#5-q$ONKz0%mmxXR7z9!{K*F@ zS{Bj@U#^EQB|mtboIQw@qJd1XI|_{mxmr?wY^50g0YcpF$NZ|T6T>u5v4;@quR2uc zul5`K{AtoL;`6%{C86?wD5f73`;%e}_<}eqV#GB=C8!m<__`OGP{6uj^ z4ihL3k_z~;OMC@Vf!$?GIZw9G2kDjUtMcd2oj=9_{5F4J+#Z~&^i(z#{L$Ohdrg6i z@Ws`$G`Smbvhjlm)>y4|M4hf^gT#uX=>4qTSdKejJxGBPnSu0fOX&{QQO2(MthPi@mL-U~@}6j- zKN97WtFwmWQetQ}9@(BepTT|QVl#igTu1F6R)U50J0* zDe^_)9)pQr#$QQKkLKSICb#8f`2b#&l(&U@c~uQ|2=ArrQzO)D}W|5(1+B_Sgjy=!G?N0$4gL<-GOZ68#%V)=L1VCZNmJO zs$nxt#{(}zKlshXHM$I`pR4BDT9P@>KdMG~L7A9aXj)&2m{5IR`dHWcH_8zWjD@`gsEGJsh#y2`XkFor`6mahw%WOj)Qql zY`|x@wTfLpd{R@Mr^s4Kj%%KLBiG0pdQZJ+bVcXKya^uR<@qSylXoUB)s|P_`3Pe< z#-q&qU7oQtm)lcH!x&=g^2FNVwpwU^ehU401jSpjp;eMm@1cL67J*M;KjGk76r{H@ zaVuQHS?+`4Zpo|`vmNJc-~uVJSvZf-a?HDGj`r9B8%tkm>gD~r#oc(5Hwh&@9qnxUH%gp5CtRE@; zT>J_mfAd*I_owSOANPcKc4j*&13*Sy(8aZ%1fvGzPgSS3`d_?GJS@70Y*y1waGmd-`>AL9Ma* zH}gR9iYv^U%zMno$u0hM{_4l|P!;}lJ=A}ycK!1#-2{>GMUBO$C*-b_ljSSNT%G?(i2%mhge<3U#TnTv?HCx!dd5&K6InXSf1RVkhFoNu=zCQjB!_ zs0vfH?umj>+)w&iWyTbDab4yS{p3?IF1obS>YUDDHI#hH0j0e%Rf$k)C@QJJoQhXi zR+CfCjCcdFR6auUidt{2+yC^0dlOwcX_n@M;pZ&q{2W`taq?m1aXZ$4mAJ}fU33;X zNp2Q7^ae6Z=6Co5jH5Vci4zFpmXlr>gUK$@(bq*=Qa?J4>$%VN=6`qs^Z7IIF}5x{ z%WZqy|2(1RmVETpp39Z=+IpnkLhnG?IzS((Pts>oUi_l()0gWRbd9!Duq=t~?H1@& zj!*G^%#Y^@4ewR?cK4HmG6xhLe0M;lLE&BNHt~$|syn3E6t%T7P+1W2z-K+o!U(tq zT?lJ?K__Sp4WS)muyK%wHHSJb$1KspMGQ`~c+O`hSUnJ|5n*c?7|tfL=N{z~>S{e@ zH&N2g+UK_@++z;lNT?pq{;U?GSxm$mx4729NJW2lyL%$!wRGzV(-nuF$J zTh}S_Ze1tpqjept|Jrc2?!gAb6Cp~i=z9&973=P;mFgQn9a#8lL)v|~S z6!RbV5Bzq=x?QAv&yk-$DE##+BH(RDI0LOnyA35Ja|SDswrq*Ved-lDt^^mU?Kju> zOM&^yY|}i2o9>xf<=PFyu?w_-3Qzz7X;hY{UDOtf8QNxYfj^O7{`yLk^(kZ(5ki_m zrFgg{k}S)d2jW}S60KEO)$tao!OG4XEIUXosbVR8-r@gpCF<`_)R z=%w_^dX!$BVyUx!Opmf8SSC1jGiG8_V;s+E3^tzQRgE{Wn6Z{imKclv+HzN)Z@-Ce z=CzGQeQSo?53j7g41cI5hW8KOQM^^%9ZljRJ2Y7o`9tI1s^wNp>VcpgZ##>p(wkgI zr1TJPlC!a5qzGbR2S~#4OK%Khg0ItPeUdCC#;3Gmi&;bH4C9EQ zuY(188MXYS3eWT@1{y46<6)1XCM0A!!RSU`{ctCJ$La2FyZ;iGu9cJV+C;*s?`$gcuU=*=#3XW3vqWoh zPr0KvI^V)5ID+BCN}UK#n_z4D-rAo$H!KIQ^i5)koI#lOinM%pnJykgUw7GtwP7nF zTKA#mB_?~~`NXgUA3!;Dpx=8Ac61-vVH)d`>Mf2*d#TCt_F;I1<-+4Mjv9^Q1Gr_Y z6g&!hVH>O?g|?1RVy; za5*4$n_C@jfjN8@-si=5O`rOOcB+MyCF)Jn1%>6^4KsN|r;?T;(ov3}_nJzX^5K0Y zT}9+;F`LxRIm;EN{QM65fyek_e3EmNX|1x-6rpwtywBg_aP+|_8ifX!$UHICbyrM1 zkzX3gDOV$H@wJY|Ut`U$RpU_vDW=`G*)d(f<1VISfxyo9IewSiR2MQn!_ zJ_NGn?jM+mC5^x1Z@E?wZ*EhzD20{VN}y?&(y36mZ%J2E>{QKJb|Eymo-q)rvtfj1 zO`$#Ee?zDRm7p{fg~AX70l**!m`O`tXJ$iw=Jd9))=&(j96)hI^R%3GY64|h2;~(q zgI98abEdIji%qVk#IX8d1w+^RZ?#X8L0VyLHffok&4OE7iI>1z1nUdQbit*nan(I#} z4)T#kFGxz_-=6#Qp>sl4a*M-=^SjC$`XCwgR+6T0|2!>nhFnFlB}ti#)V+1b*bLV*ygeS}`S}FikQe9Q^DqQn!_KHL zv%HXj@!Q?cf7K2=BN}iQOyK z$l0WUqA6RN%3owI%SOky*dHF!-&<)r3)HHv2NN=N!M51UcH%-6Eb|W0{7GS1*W@z^ zmF@8);na2*MQGIA>A2fHz8^Z}Rg_aY<_+_V-VDU-t0Fv ziuEMVSc7#j%rKNr-DiHPZK24!XTD*6{a#mR`OMjM`Ak=Tswcm`&)`3uR7rkAbe3ij zu7}E3am73`$wLg_UD3>+;xb=LNISKR(n`Hxs;2DDIWUoYtrLD2qk0 z2nNx3TB~(jFcBQ_GP%+1aGS-jDQ|;BZRt<5oL>x-#l^(bb1aCEK9yX0CXMz}Qi#uC zB>DDL>^?klIS?I8QE*d>5{{&@tgEYa=~^y=h@l3HS+Re(Rm7su1@A!$nD81aii_;; zko($5JU)-q*!WLQb2$8s+QG75U^j@N9b(HvnF!TffC@Syh};Sh$4 ziH&C1>Hz!G9Q0r>;E;n+-$Em3N2+Roc$_{KHnL;H{A=JKtfsH)U_3m8Ix)lNL8^GG#L@4RQ*pqtps(Xu1>nICNsp$DS?VUd9=%lD5>`(>&kY)jXYE|LNS} ze_vty`Ch$`D~m4C>$&ii_k~H%6rO3PNrR2Wow$Rp@%#)n^Y>L+hwSk!iUHgMhoL?8 zLTTM|i)VZq6s}jWu~&I4hMgcC8nc5CVCOC`kjb#`PBCZd9JDs%pPo!t8&+hNOuO391BHBnzpdKL?#NKtw%HI$} zE}_4E1@GbkWPBLj{n1$VI{(XXz$=_3`pi#w45zPjC^< z+d5Kw{R68iITWSP0q?fx&pmMn1`~(3%~Q*?-PEu^lvfh8#O{O(17J1`BLwIP9c{Zg zz6TQoLm*^l8(ICdz1l)Cj(o_kG!7fT(Qhc2a&eeQ)7r^=qHX*LkB6l2%HtMz2|65N zry(Wd524Ctq-ffcPi_0vZis(>HpPdP{V_CdQ{*3{aNg+sqy%=&C?F8Ab@_3w<@L7d`d6V(43Mr;x{tdlIq@Ka{|lg`nt~uB()wy z`N?D_;@aQi(KCbGe;xiC%|#q0(_OvBCwK?1;#oXS*|q(B<>r+4&n?>#zjh*L)tZ#a zPcYc9BhgXbmsMgCT$^D*=!dt-V_Ds38oXq4VM6*U(NcD!5$!K#$j#z%+5(!#EQDzd z@Fke|Em)IvYLQ6gm}#YAuY?gxn8Q|^d~>fN1s=ofGdx6X(N7zst<$2kEn=b8@a+gz zhIv6gKu{qI_<;vxgZ-=&oHG=Molf~JleK!ntksahE&?taLg6$^X0hxAd(2+5nal&` z7+he!V*z~>MNYE0m6lbj{0$xSd3ITKP;Ox)cV3F{G?cVmqFp%NW+prgWl5`D#8D7?NI;`1mn7&CTbD&M|G|; z&onQ`XspQxc`k#q#6Le_4e}bC;$k2eaF|E4`0vT{Hxqtxh=`VJMV+^eVG5`eFXbp| zYQNiuUgF(8bU$=MZ;F5?l=pQjJmet2s$eTx2z8W-^0=-BXP9wgq10Fb@f#+zr&0_*bDtp30l%Gr|O)E`5 znLtTLrUPSuhLr>$xk9ryxdsh$D>Z6{(6~&-@kkIJI1C#mcQTU z^)&`4L)ReUfm@^s9$St&_2#djA-OUyZpV*c4!#+(@(T{P^;9`QR+n?h+fC9}NWYAq zXg1TWt0w5qEnlF>dh$s#u|LkkrZ5xlWGvF>$naz*)(m&TRqltavp9s*D7&Dcq4Ai= zSCO8PWgGobW;iPIhlB1n2N0UPOS`A>lOqVV?>VA42 zy^tQRm(?5TrS(~QEj?CemXMedE+>qaakbZKKF$A}5~r33pAyc(cZbI*V~d95FO-jm z=TaxB8`TEtK(!*}Evjzn&x(^e%=AF%p8vTqfU<9*ZOw58>kWC`8pKG7jc4(Jo*rH zrR*m{*D-7?>&q(AzafThYKZ>%Vs$$r9L3f$4`-4`R@sEl3&ZG8H%7kaAuHiYtU#gGPlWK2u zpITCxq51{oHHP!k0?_2+0V#P7N&4!b!FjR>%LG)WHimLR?G^WsW=^wg&uW@>04ew@qD5gZvMGD8(~LWUqx%Lb+Ya6`X^^J{k6toWvC&ZYF*4&`=}UC>G12#E&CwztvLAlzYUu*c)!cu`{e7 zT<(WKs9-kIW`kj5+8nV;j<)SMKSi4CnLJAVa}FUwC2~XILob=$<~f07@BxkUdFI4^N?D{i$!!`JuPE-{ezmrw{TFfn8)<7Uw~Iv- zIxc!UW6@KVmlf2gEdzkou|EMVaz>mysgGT0an9t(Q6V z+?G(sCj1VR=I4ovGKl$o_+k35R!;MytLsxTr=S@QU<^(~C*vTTnRBLToHA5tqyAtj zrM3*dz!O+V>KkpNbS6w`B)$`!KJo)UzxM-wbvlXr+jDn5?R0WXUYF-&qO{Xpb+k;@ zGc!l>g}8%H=kxhGKI@A!D(k;Hqq4~RGb)|A6Zzj5%)>`xUE?6=65tygY%F1{$S?XY zQ_Ut;!7H+CWR=E2kxL`z*FRjccA@4z9?5Mes;sA7tkddf2SroOE9I1-CljO-T%inP zC#3fS4({LpZ*41>PuU}Oi_K>`8*4DLUUrMbb;^t!S_$n3&0ec2N@_u|ecduy9#)?6 zh>^Y*><)`&%h?~SCdhn_Fo9Hm?5jxygq!^1gKjsx=RSDE58CNSTL( z&Ky<@)`J(hcXu2LIl-B|PQIaSlc%-WGK;7Y-^JsKwcZg|(a&rq4LO27L4FpIaz|?* z$CTtpH1oESbs-yl!DHIV`;#z*mDdAs$$={1ZvL5ARTPb8S``&1PHt0lJBMfuXIA@NBnHg3y`DGWBAg;T-ve7= zEv$frFqK}zh;0`_Fk1*c>|7~xI*KCcm7p5y3e^a2`a(LJ48>V}xb6}VeUN7L=h#U1 zY|xhtfLK@>vNMauoeV5wR*%C*9xGQC@p2+O<&hnNL+!v(kv zCv9uTd%^k?rX{-t6CKjzRMA8{)Cveq^Z6ghCH2> z{OTArP3@)b3m>X3s`wysLghXxR|hGcg`<6fA%s0hWTJ%BwN8WfFM31Irl?@eD4x&ad!5<81!O_%mg;&q*sAf^RtEH8P%EXZG zd``h1hN_7@#B5oIP=Ac=l-7S+IrbB2cC+j*_vl;Xu=sNxeMy;bQyK&g)_! zj7sYx_vt^%6?brF`Kt$_>*KrG_$1 ziB!rfC6#2;OVe@F;jq-OoB_AkbC|`h8R85tQ+jCkL`fOq;041C(X1QW!hT^b*fG|? zaEx8HTP0>|Wwg8I9NKfUr{=EtXaQOQEnF*4&OSnGNjkg>Mc+Ddf=7hCxR;i}>ai*i zLFhk({=#jx)WaNKTH7faX-_CKc2I`=-<~#5oo4e#V)Nw`D|7TQ_SJYQROYdyCjGc8 zw<9Kv!)@rvmylyT=5SemK;F#S!MnNMP3B6kkFgMkDfkAxjTQL*yd9O&N=C>a-%&Wh zI2VKRY*pr%(v`=ino9qW3tlcc1{Xe_B@h-Phci%{yi63-gBs*yN|L@QNST!lvcN^A z!Vv>0BKt}*jy`c^ZHm@F8}tvl0et94)!5eWw$CSh$#=c)Oa5tvRe>)mto}OjZ-ZPZ zFUou5Devp+^huecjHPg7wt8X1)M;vKwW9hubh6(8oJ;YS%z{!*iRJnhF-1=jClii) zZlH)a^2MY=PU3H*&M#tbynt~~1f2}+6GwhAlFLbfU!r@z|BY^mHEcVH+LLo`OUk<;dD=B{Zrn5X?z{!%fg^9m z!%1J4;QqWcH}S$eyKxaOk++-LPU)c5RyC!$T1DBUEGsfI>lrXmmZcFd4xtEqYcM4b z5nJRs%R^^hT+0mD7cRp}7zsO|8>y3=nY$^be8}5nv#rGeaZ{YuOQvXnN!1Mfpbv1| z3+eQ3pKG9{Fc%gRvLAqoY#&^9oU4}?4aH_Hi`Y-^6|YsIO#M#&VyDAw_6(-b-#biN z=_IM-^H2}BU`p;bN|n5CF%4EhdD08N=00jF7k0zcAgs12X8|YUNOsiyNbGs@Ic>h# zU%P0wyxVVYJt@}O$I80j-rC3Nhfg|r@6tAq0(wIFMAa}vS zq?9jWJzfH@Vm;5o34XGp?km^I#x&1^zBrTP8|0N(VZ{O z<{#E1e5E=*+@dxNKcZr|NiC(G4_)E6loapW)ONZihbGTwc`5cTkczuNDsB%xAts9T ztd%%SB+5A=kGy5O_h`{b-V`vR%Bs1+xg$vdI~>A(gFojiA; zKYH;6ggr;`H2q!cso86A8RgFm%A$`?&HnQYolBS8)uSp&Av}YMUbqMVyO-h-{H>YQ0u{ zOmjkfy(3tBW*=>Ww!l2lywu#wJeOWe&Fjp&%tvge%Kv%(YQ{&WWtaWtY1tpv_C7x? zyUKsrlk_hIYVDsio7~lWy}l*NajLN@pBi{u-KM-&o2rx4iOPA!kbk?OcYJYqT3#2~ z4nqBKI6zi$B8*vpb!Fe>|(@6Orq%m&Do8Z)}+d}6D z7cyR@pSJp?-&fHj@UN4*g&Tgu;CIg**PICAF7|y7wPVnVU|hJGo75gESTc;nitP$ubwLEQ1ejK^u}YO<}^OhWJa9_MT5hG ziqy_>7vJzwe6rCksHb|*lwaMfTvqlfiHpa#>Dn_ zf5B>y>)XwO-~@|hi^^U5j*FD9N+_tlzTdhW*KZb%LSVZ-q6QspFV_Cvm?D%el5}#)z(hlPR&E^)#?Z*VIY*sM|cjT2aem9 z!qY4ZTG=o!-e-^CdpFP60O2Jq+EC(wh98|c_)kt#{c`vGUng?>`VQa!>K^=YXPm<1 z)9UE$^ay=`Wvkvja~;pX3@-R%?oAFY$ao3kc~AH7xDvXP<$+vFk$6l`)E7nvI&U-% z$I)Jsc-L&dhj|z4U2{lO&c=D80vfk&Qn>craI-2x5`3m%7Vb!@#hdcC8eU}8ag*ao z{V92ZO630Ak|Wt9hKoeeLQc_7IjqFIFrL(NJ*+|~U~OBJ6D^P*?=UBPo@xDTr$u#f zo-%P?%52tw^gsxyp@Qi0MLqYG_x0Qxh~1aKJi-WTPx>A(26Dm*XvEq<3)i2cUlSsZ zP8jHUo!wyViJv<{d+;VK+Mlm==*g^CSvquJt>Ku#%+9%ti7u$w3uzvp<hgcW7nhO|6;8LNQyE08&7$ zzf?fge{^28^;}0+Qf->(pvQ_eNvVcG6vruqudlHTpUkfsBZJ$LI-5)SETo7-)_pLS zdl=dn>fj}CCO;|R1}Um5u!@ZV?~Iuum;BQQ1QVxLBNbd%Y#`>?Aj^vWiEllx(H(zB zqh21f5CZz3fpGHAlR;m>L%0SHNZF-Pro=+3Q)^2b;^3!RJ>f|1_V0GDeR}G&la!*W zOcNXBK^brHbFR*5#`si>;=_1`ac=My^}1=gy3O=fxfjHFG(K}J9kZEqMQL)Jt!bP- zRBoLh#U4%LHb*VfBU4pntCDG2qck!7VKNkn&AP?CP=d2&7Ui`+wCSW6tgCSs z$PeWeziJ>)X>H>>c?^aa!laIrMYD)mXTU@l1%pVBccC2l9_m0#NMXYukky8gE_W?O zX#`%%2*;t|Lm5*IwzDO;&yYXc!ysW?#V*4TRt$Esd+Y$a$$GID?3`f)>*5v~d(!+? z+heY+C6dPe?^R7z(TuK5q@DZAp&}`^rh8?q2mL9>>SHn>J_jRl#<;h2#TZ$Gu>VKO z$+6^am(ukIMPYN&&$*&EIX}XRkbr*VRg*D?my*AhI=~dHRyR#mx(0^QSWj{Zi*841 z;St4jx>n#bP1W@aP4(ZOx$ub4Iy*V#AIUX#iVkr`;{>$uetd`Rl+qb|4t?L6x97dF z5dYcE!E!D72dBfl91iEcye6-}2og2?2XM~3Pxf_>_R{&hT5zKcJrJQdkaUN7zf# zx%~Z%gJ2O`%U-%xh{>t>ir40$S^=%5Hd_nSmW%w_&BXnlbJ<2#2F$DoxPm8nZZFtO znkLK**$kh-Y0|DMaS+XGf706> zv6ZcZbPX&=j9VTbKr2jORdBY;oalujCvoi-!qf#6+2<%%3X{uhYH8+l0!zVa%uC*= z3H@$mdIxX%*OA;$ReWOa=+c>6SVO!Go1g%0VgBgvJl-;ua>0|BEQE69(=J@zn?aZD0@6Oz5 z^#079asS{f%RkT2Zu&{(=yKx!^&*2DyN5nUK(ae?K*ZIg0oP(EvDzsxgNtE!VwAWg zdkc5DOa#aU;&+)tu8x`Sdfsb6@J)(^AT?e&X3C-R{HKgV@H<=#sW6jufdT0qMQ)i> zgp&)%MSuU#HTKVUEUE zoARs;MbR?)`BVQmsy@}?x8xBSs2`Ds^j3O6T!cqHqnl5?kP_h~)$-w6)pcsLVy}4S z$?F^)eVBf>u8+YBkGmpY)JRKu>5w7rpJU92_oV#&5 ziZcs7p=&xaaxlrLyST(Oq~ComzLy4BhVHSfoFMbb#d-mGA*BF$*`1h=KgR4l0aNiM zrsD$AA;-amH*((*H%F#M8=c$oq2SE>5l5`SO*j!B(pY!lOYwqFdZ9ApCOfMU$^!MW z;$1v@-5iZ)MLdu6ig*%nyYkGiKFZy|!?2CHq~*|#ks`dEIgc^J0Or9;u*&SUp*=Hu z{=h0b_TXUXF;C&aL=;sLBtZGne>=#{U`V z%vU&*zVpT7p7Y@mVeV~;so#jZ>*d~U`ptB)@PsTkAeirik{APPARGR{&cZ3T5wS^H zTe()7EHkvLaVhTCAv@&36{NN=k!HUDCqFuMYXSM2pUJ`Og|=)Wc)9)_eNmeuCfUyO zd_gKNg|6DdmskBpBuc`CdY4&?%y^HhqkTd3k*`0j0}oUK=oOXQD~A5(1gTK5QfqxEre zRq7ttiC%=2#dr^1i+@Kf`7^26HpU>VlI2j)Io~*FWemjt<82J^Z4%N`&8M_g512YA zJ#&|U0sM%=K#J*8bnmN3mCgDl$AC;E?H41GWG{I&#_U>%-+>~02}a`;dVRa1`>#$E z)~?)zune)VA2FvFq_Q5VdqrMd==GdB<84+850b~Szz*=lm4s`J?3YtS4Hktd{uI&+ zf7VzIC(Uq()Ix3Y1{GtsK|+X!QbD<`G*jLvjZBA>y@5k0$1O0J+-y4-2u-0kc+h+| zB28W1Ejng^HeNI)&pCsT_arH0Pq9;*M1P@`C6{wnoX;Hj@6aW8ya{O{r0KBfv}wL+ zVpwL_ZGS&F#@4VW^j|LGVxU# zbjQKo_X^c3^wR4xc%TQI1}8QP%Gp;Z6_ZAq{xQAR)qin1&&RvwzJB6ICEJ=}%a6KI zSohUhJ16|Pul6SK`pd6$PN=BY(j)Zd`Vaaby}f=xZ>0ZhnX3Pmu)}kKm%>ZtdadLs z+CThcsXGk{M7?U9+N4Tj$0j8!-%xw2+e2FwH2LPhrd)?bjcn0pl8Q4iUGXxGo7(8Y@4N6jD(NV@)I=b9} z(d;2qBA)CHt)K@fle$nTqbcR@ri|{;oc#b5$s=|E6O4d@unexiHGVpO^MbpKEnol~ zX4&8nyTq=rWwz6xmKz=$PNrs>vk76&ulZ^QEuR+jMNi`~pDFRjEvAQni40t1G2Hd#>{BCu>|f5kso7jV!90^rLne zcphB&Q9|z+nk(RoArl+9{2bkZJex+G3gr1e@P044PLNlctk0AzzNJSbZ;cc9TWrJ& z5mV@aCf%@4tIBV*Tdc2T@Kfs?%BA@zjg^+u)F*G{@>TW7ELz0GgVK$pPB9|T@C&I zz?%8n2Q82%=u|047ol5Kpboi911zjXn&8Tf)D~nNsSV>G3N@e;bU{7n33f0ALP#6f zU^ggclhT&A!lN@C_27T){=6BF!+vflR`ERQT3#k~CHVxQsDBNy+Uw|Qx))q%bLT;c zUHKg`5M%8C9;hy_Z_98sSRIA6 zVyI{+`ib5-Q>o_V?1MM;#rl%3Mv)>cRVURIv(-b5RI92Z)GEf_M!i)J?NVC9WidP9 zxi++{{(!tpe^mZM|4x$h5dk&b8nF}XA`M~JvHsqsS5VP6(j?5W_AG|3cOB#3TmGnP zDz}jwWgAH+y$PP?UX>oF_1tO&RMK6}zX-ic1eAp!RP_)NM#9r2Ws9h$xW$J!Iza?! z3pa@cc)$YSrgk>w6OUq91ajo-cYJebChMr@q zXl3^g!AoUH?^|naaOMls_TlGS3O8UA+(#NYh`%3!Xm|vJ$pM&T*FDDC^gfgz{uJM@%{Mb;>*U;l z`Ct3#=k8)MORPZ#OA>>`6Lp!mpBU#H!FJKTtPnCoTNX%5ux=KO)m7>Raa7#I`g&PB z6n5%0;cbi&4w;9rz7J#zSr7InlEx7>iFRa@oysPx5vPz`%BshNq@Gk;8b4UwW?kt? z{JO#HDr?AswYOOjw{Zbfww34k*LCg7=CRY%o1LLga$S|1kE&jco}r^*6#e9|Ebchp zDW-D|aTY7rC#+l_c|GxlzroKkCw95L59WmrTZoZL@O?aF)2O${;b41xG2P_y2^D;$ zp7KatODU>QHTow#gv_@db#z?L^|+R(1@)l@dc;!Z`z*fZ`z)5oi~ETVoX90Iz+pvf zd2Y*_$A5HOi^S~(i-;YpAdg8mlCFtyev*92P?LW!G&M(H#hgwHKie~M@fWjUs$c}R z!ZW%T|GY!gL3L+g8alKyl<<_LZnBjY`C z`YlEMf0(*sz=tJjbTY4}<`Z5Sf59hMjptw=J%$uFkJd!BUG1{2cx$P!^vJ)w>v(i5 z$I#oIBn4=Fi+1ROW+7ut;q8zya`(J4b$##<>-c4)+YWJ?9d6K#V5GHaDpKEmR+skl zC>wGHDa}J3Ds7fVNCS0ubhCWCp+BwT=oY_MIgeUUfL}&J`f@KSZ?3hFjdQr#^qCf8 zw%)=V@f735di9Rgc^VE|u=4k#U1>`sgI3gTYc)tJg%L^nKU<1x3t-@9&s zN1+I2NeNL!{Zn{mZ>QJb4MyV$s?ed-imikfbhZ7&*dTF9+~>`aLF&G8+CA&WTB7LY}*q;=pYMSp%3tL7$Dm|yLj z{MFpSbz%cn%ozOD$#_t_N;gGx4K@KYb`tBvy5Uc4#u}NgVwPe$tdri%ol$1bvS~`r z)$b?t9^Fqpn4Sh|>qFywm;ENX)?yvlJkO^(EtdGe#-k&TM~;Zhin!6prhNIJ4<0+y z-=g}ARO%_wN+qR9uK8n&F}~j^W0c`YpO^@CXP^T)2_cwU9q`c_nm{9{g`{Jej247? zFC*iYhFWANdF7Z8Z=>|&T4lWwr3_YvDN~fm$h9{xR}B27QX_pU8Alpmg>C?Ypt<>~ zc}uJ&BY=>uP}8=v@tmUPE%58dBDI^c>oZrsz&v=bROeTf>f)hdn>5S07rvit7=T=} z2-Xl^*qo7%cM^9L2hoUo#kRG#pl1lsLGTQgBK<6bi6j)rv`Hz670M2VNNS`qxVR@2jDD z;Cb&aZipyx13C10aya>jsyl`y(dx{F`Jt;inYmo7Qb&kwVijunM&$M57#q&&Qt_wi zsAk2LaJo~b)`(hZ+fd(p!$QYM>rnxSqzzr~xsCLtN$Ios0MU_;=2OKQUOsab zIDjQh#^bA@@wu*Oo930w9Qc(2CJwiZHMYvl~zW_90yG>`l9I)tNN(hH!;q(U~De@ zX6o=$tdw!_rJN?x{cwer!HQak_C~)w6pDjm`ego6%t!UVh?U@xIR;JlSTcAc@rrj< zZ}QD4A;g<4roX${2K*^IN^_)C-JXIC=qM)9F8B_LP(SKnp4E^5KzBl3njhxDSf|km zuazpopo~IFsc*hk*oQaeCwX1oU+m^Au8G4SS`TK@Y>1{3)l(l-#u#v?`%oELlCi14 zCkTJ^6dmvw4FAuoyz5}3PDQs+RDCB(#;&t*D{wxvzU(Nc$VKD{dRZP`{!qmJnuYYX zvLuCs^z&#CH%hB^le3WD}(D(Gz+G%z9U8=l~d>nZz@>rA- z-a&s}rqZI|EL{nyx#XoQE7kL>ti1zAkgvzvzl-Ukg!3TfAS(8ZA9_9|VWkOH zv*frU1>NL4p^v14y4sRPO3@i~*L0(Gr*+|>i*Muxje zFGIRvkKwxEu6d?T%-5MZUr4+`E)t)fL*hrw(@gX5J&M0Lpy*OIXsn>Lc|Gb@s0N!z zd6JO2L(z!iiU*IwJhA<{x=+um@iM5a1^8SM%AY3AcfN@^Uyt5Hhkp~i=wz%mt2G~! zW0YaS6)8T_yuU5?Zh@otBw_)-h$?p^&e3r{T?LPjOjgt3bQJAQN7GWYGv?Q1=uN^? z8}OT=7k_SMg)=$K^a=ShotG7#c%+)dFQoNEw?B!xutC&KJCy44PuA6y4AL+uLdpnU zq1%oxwfzdMgfwzbd#C7g`ElqLd68cimoxM^R>`gOJ-kOQ^Kwlr{$A>>J1Tiet)yVd zO|p~T=vL}(>pF$b*1arr6zlwJ5~0~eu4SH6ZX*j=WvwI8nl+?3=|QHELS!>3t64&7 z*bGwB4egZahHS%L!*h(l4~AGnhQS^qFu!@KQ)Q*55{Zgl1y#77aw=t&rVqJC!r?Y4 zgKA!jw9)iV@m7}b^2%n6(6P#_f9W^)Ppg~v|3f`5XRhZ>zgykB#=M%rUY#Z`t4~Fq zgdR@o*>Xy?j6KlmSm*p7blv4>xwt+Vh9BD}hWjDrr*@61LA60(O z*Si=$pMhB)b$%}XOpW?lyoecOH=0?|ZtO4Wk94iUM<&grMc8$kUwfM7D_BwbUCNfK z%4Z}Wxwlk6S`eC%Zvj}dRqzte!eW?0e1K$h$0~hLBwMCJXL29fU_1SD@Z@1CiTujs=ijO(M4-ON41W<$Hxoyk)6~Q(cblaBNdc`e4lCkwS7E# zhn$p!6eC;74`o$1PhM0kzqTGkr#0X%Y7dOKgZS>R|3pLd81X$Y_Wr~ysBP?T-JKCy zf;njOuvXq@q@_|dxrZDtHI=7G-K6TF1@hg8RMV_#%<>TDo{2A%C=suW$DwzO&wh! zhKwd1Q~%)4L;>SV8;Ncso^%4n-XWy)%P@(&f@T)ARUg4J%fTTs6OJOc-=NDtS8%BA zTByC05IRVAE?}bTVshGfU6Q?0Grp{YGknx&U;=qe_K<^Q9XUq2lU;-oRg>ammo&}* ze51i%`DDmK{r}Z0%YW`C`_H>q{z>152nw{mQ#pB~c<#p0Zxu)Dz z9xC0JlKd-Z%Oy)lg(py7&f{x6{9$!-Nj%d-QE%Re529MkXxm=wJv3quXci4;$EjeP z7RcK!XpG!Pnud{7OeXSHDIP0mjBanp7?0<~AuC0RFm-D|owh~C>d(EAf}(gY-WIjf zB|8(0#0#r+Dmb8@GQvlEECpLSli1O0tA^@cJ_UKWDe`bt9*!*B8FQ-}Um^DK#EeZ4 zj4mt?NvjU+hn3{9bC;wn<&IF4Pw0?Rld5U~GOt`<`}k z@z=KSxDcAGUs}zx$sbWtlM_+hqYpP2RI0eFgck9fMwhT^bRTU(e>2}f`qC$}C`Ne- z^rkZ*kVV6RJQ@B~JqN>YEZs%;_mBc~Ev4(aySfKDEZe%3K>;2OGS>1}N?WAhl1c%5 zmO=vge)iK=RJeD_UZn(|!QYGeRxh9xIRgz~3KH!g=#SO;OQ(r&sEkLxDx{Ji_>)8s zAI*#8{K_m|7i;qvWgY*d9Lsn`bi@xz!Yk4S29hIWoYSp@g32OZLOG9Qvrt*~i?t=W zR{_>Xb?C{PqZ(A>3&m)@CEn;*mG*%N)QN`U@zBwsG?tcUVTG^gHiw=oxCNfmgQ(sL zv?I@&J&<9InSRe}S(Tlf}pE-)L#*i#{*{k99NJ z3OT$nYew(+$hv#F@S+cxA8m;*G#1V~@v^(mZnvpJ!o#S^J7(ZmFtE3qU zC_Xurzt-2vKjJ5AOI|C982$D5H6>IeD%ylFr#(Qyna)5`IgA8!4yGcnc7*k0D4Cyj zLD7oqN&%jwWGL`W%znQf>gSy^{@#yM5h=72p8MZLe>G6Gwg|yW+MdO;OeP9?#|i_fl=iLUsxLD7|o>VeBFH@Yl%Jua%-d*$HEc!P&@A*Z6#12!BGH zI?ehVtq2=w2>MD>&1^*L(5kd7m1zJiLi1zAEJ*KQ&71%w;FhL!$_J&laN=X}6`PoM zF@L|p?}T}xn`xGPuuw!1wSeUdIvQf>0(yh)Lf1Clx3s)dS5H2sJ1bT9FXduIjZW|4 z%X7W3M#U}7TYR0%Fb?129IX8J`3`OrANanE>o68tp*O38m7ZeFkA^6E* zN0M5CNA%}CDFTs8f{~0}#BeoC97sIl{E;@Nwb@Nth@~PEf20;{BmN$O8Qwv2JLwFs ztUlpgF&|6ecjmq$H33zAm)In3i*4!>m00#<6=`2qpV_i2tOAYJf^!K=PG+Oi9>Q+Z z0G3X_tmyvLRFScC80~MGL`M(PE3lL0g>3gnep}ooppGqYFBwuqx~+8tJ^%45!`nLLP zxscukiR_vGKo*$1O`T#qWZ9Hm0xeS3a$1mmg45L3=|OxpFQ~rdgU~gU!)$Jc^{S)V zP(5K$m?eXb8PPvzSr#>Qi8uA$GGxSRV8?-|ujWeMAi?jgNZh z#&q-uL_sh~Npa^(L`A*{b!#tX_{7@#tC~2KKz8CzGA6( zBcJ?gF6BPtg%8LV1@R2k6#Ff%L3eTzIv~GKM?M*fyxt8$@K2s(0F1H7!1KzL&B)W+ zl$-z4nxxIBYTK|zU*J{5dhtvxWSvA?K{{j(OwziDqh9aUR{!8f2@3n5pN*L$!?BH(Sqsqy1SVYsPx9X!D*O z)6|797L;@6NW=c_8}w!B!V$U~dAvKlME`(C)Y>*UCM;&2Ra}9L&`4>G6esPLK1$7{ zo2cI|k~XNTTX!g8xdlIg0d+J^xuAT?wc5iE$)O{X!x^5*|5W!|52IP67duAX3-^|* z%e%wzO;h@}EDh?C6i~a{!)?7D#}Tc&~(|PSxom zSWF2WNj;I3RcHfy2uZ8O4~lkp<|g5D4fnzG^H8mAeUVm$Rpx0Vt7&cMM{OLg#2(}Q zg{fEXJu!p#OLEb8(MPZX9nM(V6bYp^ZBH#}HzfXd@WAPALJ2-kR6=zgj_#}V;eqW$yLb+x)6i%^fxGi~Yh`-LEb-ez4x9ox(heI_RHB?)q)= z3HgA$P%bO)ms54O0HF6$gz!!S6HljD4z`i_pPv&u7XG?4zlyK#MS5q4=LeDVIHV!rYq9b zFn9X%c6=pojpu!WMNOJcs?h{6?X+}82Wv&sARfKyTO_jkSUvAz%x=XxcAQKkH2s{i zLk!>s^_8_19YL#}xXQ#?cG-DT`(A5S7)>F0}@d$3Jyl7RW%ps$)|G0!!!OVBYpjXh z;uRl;=eWPIJTk>hNTDO>G4tLwQ^)?D&RIU=5BHY z+GMFbL~ScdTe#D0#D;E%%kaX~n5Q`Q6HKoq(e(MN87@4j}akHLW}8=g4X0U5Y}yx zD;B&gPkjicr^rDNn%;22#@={c@!`=(@xzekf1ao8|LhKosdK{QubmSP{7dJANVTlG zTrH&r8PBL2;+8s$(WcXF+Jo$YcDQz;Td{z*`Vjf1{*_cuzpO|JZK^htSg<92H{{*Y zExC)_Np3D9l}N!-kAg0=2YW|CXyt5oRD#)jBEIk8NH{<4GDt%Ao=51>yVp_Mi>;YW zuwGq28aqrMVkDY6o$SojabzGJk2S0fx|A-c62;Pg=eMwKK1ISaO{2U1-R_iD7*p@W zJmDRiXjhT_1qIm~^pKNT88+Uvl>aW-PZ}h@m+nY@@_L=Eyv{GLOAXqIu7EgL40~ZE za_}g0q%~)N=fOnoK5;B#b2r zWx)$v(9vBcWzY>=Ai<7~C{8W71|3~}be=<%A?P++E06ha%B7?m&iBa+bc4Ro1u8=g zkf9!Yz<8=a(#b)GA#s(IUOZSig_JQ5AIp(1mSe1}R3`H3dYs{+Q;e*>O&?kE>d|FwYXTFVM!mtI%Ktl^eK}2d%6WZ?{ALU z_=o(7*vTu159pHrse|QgjKC%0inxlgcVC^WcD6XcWZF?XomI;-FtDcnzSKkCQl6rJ zFRv~+x?Vu^h{%+v_y``^v-+jb7g9O5BWi!)&(EOW*nmv+H&-#N4-N5i?LZ1YtS+&x zLr;@Hx)XiW3-spKP$%}mLR5)yq%V}r8i$|B4V`jfZjTvO^t<_ngD_5qqoTJ#&L74H zB>v{?NB6*d>WV6uhel&$j)qd?ZAxi=Ofslfn?XbL;qn~)Jh`dfQa&wL4*r<;8hyp)P#64~({$H&J$pV+VXcpv z?t$6#0$RW%qNF_Hzp1;7rR>Yom7W(upXusL>!iZc0?AkBFIDj^gWfk561B0#!vpuZ zhQbl}gS3aanqU}fwM?8qS6C2ZT95JEQt7R9LzUd3EL2W$qcSnWKpK%cPzf`l2~_;r ziOe)v-qhVMk1R{p!aYt#6AI*C7AaH+HjGLG!>EngLajrv0&E7D4(pKn6S}8zD1u504Vf zku3UR{QcM;_SbXe|5o@RNDdc~B6_Rm#ojoB!$ekt&SthOFYCY(pcnJCSzs)venJgC ziX^s0EE6#plj-U>;hdUHj5M3hWjZ#Gd9qP#7b@;2P4nc+;-cCZqwTmjC0?j`)azNm zy3kJO<|0^6e1@~OEQt3f5N#RP#)70XAfwvRue@B9}(KICQD_Bjs<}FctXWrWMH2aiC4p}BuC^fyo z)yR;@%aOezT13pPL_^#PT*|&C&MD)Ryyz8O(J|`q_ZsFMG@Z;n>c4bw_^fYtlv}8* z?)-zI7kT;EbQQIEA?(5`dJI;9si)X{BqLL|pdm=y?V%&oM`~#S&ZHDLXZJ;#IDxNq z3f21PH~oHWxT@6Q$;w%bt&v7c+w$}TDMpv!dAf;p`XqXVm9W6nO9hGNS;i~HS^c2w zi8DH^h7;rkG=RaTYh7do^s&gqh_^&?S;Ob6=dF{W4|$5*vjQeTUHqCdWGOtgki`tt z<_k&&>UE4_RIKqQhhY3QTC(dVGFGzlRfH(jFWdsw)&^KV*2|&*6!9J@1!6pS^7gaOgFZ` zB;vqcWY@twnapkYRKb;^sUai~rh$Onc$Uw@6*vP&k;k^f20UBeu2bs>tspw5Q)viP zgTIh2JV<_MXTLCJ6~10_g2s6z`2$({0+HY(VbGT}AZ?ucC%rNB;r7ZDr8crc=bSwY z(|_2B`+XO2H>$A>o;3%OV9QrnMt*8~b_j?N&JkXlI1B@dmGbhnTv^@GD?SNaKM z37>+@y#c-7?w@p<&)rEa3Ms@iZ(%R*CiaVK7Om08Hlfzkj|Nar%Fw%*#lPq_vlk3sT z@59fqFQ+@y6XbTuv;tdw#?L3jI4!2{AQshq9$jnd#Ypp7JVN(USDZ2mqrKc3=DfFrRi3MHp)-PYT7kxE2{o`q`+7_6GqJO zZ_h)eZ|>UuxO?tNt~EZtx?1^V2Kbho8Q}Nv_^HBOHHc87m-=UBDm{bzw1LfH``7}u zh|OdZ*=RP%oH?eej`ee{ItJr|uy*VQEvCInD|*xmv64SYouy#e#s8_xc{+>Mc6Nq+ z^gLvmI>opSE$%7r5A7ql1^0Ka3tMRzW==(DiJq_#8BR*3uT?Jc1 znzYm$Bp0%)@B>&MguzFNHRSolB&jLN608@o_~%!AmeMPslT#JU$GuPlI$#c$BL(3^ zW)QN&MO6N$SO=cv%0APIr9M1CkwpzYBJPF*q0Uf-t^-Do!)@3BH%Tm6o}QoA5R^CK zp1Gb7DHjS&ps{g z6+fI@Rx_J^0v}eCK4SG~PmiV{E2U`ZsB}ShBDAU3@8mq)k$IiVqAah6Y+nN3Rqp+E zGk(}_mz%{*)jt&7orH>8Ph1v$YA@p{>we4#k?b$(&a~_-)v-h94PRR~F}@btk?lue zz3BRr89jg30#pB4(|RaCHqWPaQZ3b?Mq71hS~k>Xvzfhi2dk`|$1GiDF^hcrLo?;6 zatr-Y`Gb5#UMLlm!waRuA@(TyuJBTQkrTr(`X%%F<@y-?1M#O$6SGyVTFK%Q9=8ds zoLl(-XZ=Fyn%qPqpOE>Mw~z+%D~D6pYg%YZk@}=4=}qD^LrG0dF;c}oKBlW-q*B}P)G*Po>+3z1 z$6xQUFpNKUWvG&27|4n8E@8IQcG8NJgl!~&+#`21eTY6|xYC$cRXQr|l=>K-rm0W= zWt!@@({X;jbMpH$nVaKG9qWc+wKjFETV?K_aMY|17e%1DO}H5^iyleCG^1G}ZLX!P zvMXgp0`@na6=@l1taM-UEfFJiDZiz0$*8lD9isFR&l-0Mo2ji!UuCF@tyqHZ_8PwP zdtX;^*>Zc#oJbD5mnhD6q}?QLa1azY2XSx*$>j!IfK$lZdteLl&jRGL30O%NLuoP@ zs#+wY@>%oC=u|GFU&-y6{r+*5)RAAzlKMP>yB_+_2(c4mW|=xlEKj~hDzSK%%Kq2o zdD3aQwDeJm@m@%8vbwO7Ua+_-4htLc1nKAj9@E_O;l6aGh|0NZFcFXJIgET?wT`Nb z$!mLrm8TQgZ!Cm)YR9k(Zg&H&%8#TS(p33OF|MtPUUxeB$@a7w9SN18Qu;#vUaZ8r zatq)4%UtKs8*5Ai{3d_1A&DPg7_a@}cAz7C;Bq-jzq zd8PDRnlG)>J<=U6cpGlgrFh)C!fL2ORzX&FB0nvr@w1uTpfULaA|VRK0)?eek_>|o zJNKB&N(bH-YtxFKc3%D2cS+YsS3RVshbK&h zc*o(SBC2g+ct_I6NAiZ;C-0E1>|mM3NL+1wjI}Ux-WXabL@8rl+t@&9sWiiks-zs{ zHIzX~3!G1plcWu#khbuF)Pjj*IWanoPt+<4cqlsL{>WhS{(np|`#bsss(Ui8FP`yc z>Py}-C7Lv#5j2wyqqpdItQ%)Q&Pe8=YCO6+AK{7I{j1)RtG=!QyoR~T(S?Pm&&3LL zuIdvz)UJSb3ANG=XJ^@VwwA4Ci&+Fa#{6j_>t)?GW|Jz%XF1$tZRvXC#;Tg)+W>HG?Ru@6Z7#;o75tr za_S;-g|(s8ye@_6r*CKB@o z%;_=2iKbaT7Ps*I=iyDbH-4h;@7u0K#ZZxpmWdDCF|L-wRyqW^FPQ#;XS_3J$#2O2 zp46ZDf-c{we1Y%~W9TW^(YfFR{YiT22W6MItBevl-Z_4kqj~O%c>>mcjD-cL4YNq+ zv^b@nu)v=hhL0NmhdZOT=1}#GpG=l5u9i~EsI}Gc=#5txqt&R4e5?RlrCp}=&2uDZ zy}o{>lTinw_D0)AzmKZccz@YQ)ajl1$I?m6w9=sp9zi|2rQCC(K0q?M{X4J=k~S6UHj11H@fNz)c)+Pqh< zDtUQB+w`_9DZcnPI39@>!cFxS3T>@j5( zAFt4yj%eSn?kbaM?6_@CnE`91C;u5%C7L$ppSPE)|>wlvU5t|P@tDY{VI zQ?Cb5mc0RM8jGIa6}*T~>MNy{$WnTk`@=T+MQ@hBuRq3OcKtXbwfT3uc-DR0#d8N^ z>Y*s99u^@;W8;!bkWS2Tl^dg-3b2st%4&^;UCp?0djh*Hz|VUfv)s8o>T&6>5S)Wz6wbQdpk zt!?^z|8h0fg!!0_+stc)>stM$PDG+Shg@>itQv2zy4~hlwV)Uff5DN{S5Ta7N3Zgd z*|1?gPo*%)Q_hw?NO95yX}`2cnk^NUW=OWWPLiG9Q0+#fzgW@ktKcfOi5$dIKhF}NyE44({% zKkV=Qd8eIg_{`6DC}+`c$Hx@2e*^1C477y_HqqSF+@kquKUxo~X*jJ&15qWC!JqDeM&M3vrw~3zgrb)9z}Oz2tCzUx%E~34 zPweIa>R!Ghr3+!SG(AT9&|P%0d7a?rKCz#tVAMkntw9qo=M1D1-E4hJwGjr4?0xvj zmZ85`iLdt(pQ#u*DH$=C3q$Az8j1D3D{WoSUplS(OX9lPl24Fl9u0((BFULbfOw%a z!Tk0|H~eKiis=qlKde2?_-)aOZ%Qdec3}0tP+dGN%Wmp#Cugzi)IJ0zH|s{hmRqwEo;RZvt}%t4rUoJoNch}5#y_7 ziACxS@gSog@`eqo!7kE8ECQ*iG~pH#oRgR}?Znp5EOeKBePvV}&DUoVf_n%sxCD0y z?(QzZ-GT)OI%x3V?(XjH?gWCn4(<$Y!_M>U{@>kw&z}9z=TvufUHR3O57m8dtJCgq zDY;=vp`i7mZ5ys^-RR%HcBO`b(S?8g6WyK}Yl`O#xOCeJ#_9EE&yXVjGBUL!B}{xT zjo4~T+`OC?KDu#vx)oY)fAk7!CSO=cE8%K1;!Pf_OEq4V@H*G6{OkIhvOeD$0ONr%6L4O2m!Q`x_laFUFYG7q z_Gml@{UzbIoQo?hT{WrQD0b&VIEr7E((e{o)1vZy*MeMpIobwVSy1&?q$y4?NqaFL zGT93%iF%*-mwJZz<^26!f?OnAlEvgco~-3d!vpfJ<~pRaENc#QQGf|9?c3>B_<2ge`Nef>D!N$o)q$H))a;_RKMfoaC$= z@9cli$V&_6&0$O>E~HQwo&VZAAI}`6CVeFm%j{y%K}?I}L9U;8`$cOI;+rMMx6 z9-c-{P%ehS_MMdN^^J{eX6}quS^l%SyvlW0_$cfM(r!Nnv?fwB)j`#bng>^L`7^P4 zZf42Qq7}Pdfr70Nz71LHrm*2-(t&1ssEjtzp(@LK;?oVj_s7B`Cd-h5#s^=%K}Hop z&(B0~mv3_+eg;b;Ziak9FNG7I32CK2E+ zDXnl9lU)p3;c{E~4EdX26+td;1ljd0wD9Fl*3Kj&u!J?;HPvM+LR|F7+LU~D^+NktL~%q^1TZrk}9Hh?N07^Ar{gWl0oJhcV-5oErS!! zW5$N3SQPi}CAlmOcDLaVhX%)uY7u?~^iQ~CLp~s18XpjM>S&kfsxkgP@NH?d9X2bU z@lgCER0w#zQc9Z6`qNJv@N`>NA!;nqVALJB1W7iAL{Ai#Jw{X!G`WCM+{P3gHZW3~H ziSB~3iMfZn2Y6*a2F}GDB2Ck`O%M_CkC-?F_}xEOhqqB#o+QC5{;X8=vZML5%P%Gl zW;p0byG`T%gBD4YnpaD{JgLUc3qRE&mF=Hcoc)B4gkOel4Zz3O0r28K0fGsJ2rLMa z@Hqjlcu{~!ydQX3fDOEeVD^B>5BrM!WIUO{>HEj*wkvxO(CZ)jXVitqqs;htt!f_C z5_(>Wd@W1IcN#X-`&J4bp;aLZ4Yg`nff_HdDgEKU)A_fl7kz{@rv>)~PdEnjT>KAH z9R^BSZ6xe#U!B|T=qh&}X$q3fzN|C1L|f}q)n4{_?=7|+gXKr%taDBh-gpm}HQYma zYTm88iP6j5@`3~T?EfHx+95M<)g(hZMi7MS!{Eby66zm6C&keFoFi6<8>}bABYr+K zr!^qNnNZ!DRXAu`byc%}FLS*?FR+2Ko*rU5K1N-_e=*=`HrW9qCLb z+iWqBBij^(FPWs-8rfQ7O)BPTu8N~-N#NumDf){)^&XdbyfN8-wvn!BVn@q7_`)ggDgIm{t^fK#rns9KH9ixjLVpa%&v>4`7)NXh zTl2F~>S7wts+ERF@xE7qG!0fJ5t=w*NTw6*hvmI{>L0Kou0G+&S=lc|Z~z&;<&(7* z-FbToERXYR4h->YiU(<4;_?UbXa$8}$?5bS=PD1PWThA&DoYu|cqETYBcK}-r=n}$ zwVPhh<37Mi>`YB~%PTkn0tf!$xHyn8M^+rzXh(LDL)3%%m7{dX4bAvYL$CYa>IbV! z0yJKg%qCj%1ejz0PLGD%`Mobu*q&SMh+l~OWF1~+b&N&5MR#bWU((|dr$l@Zrs41h zKE4E*-(R{SRg4s2rQe1vGhuE`p{h!6Ka-UY2h`f_&+dsff1+~t?YmNwFuik$udwe6 zv0AjUJMsRoiTSO%rbVjxr1CS4_0^`(+nmDrSNivp*I2o@q_J%OuD3)(ViXDbT-l(P2svFr%Kw?>(TA@|uN zQZH6KEsjOCzg1$!T#OwzSWuS6+ND$Peq4cGv->uy3`}S`PCVto=@Z@*^ zR+z0{`*od9C`hL%^|?&fB!YWKf((YE|scqJ9s;%O%Od zV-+U+fOYJzHk?XGm1`7_h3D^Ev-^~delq9sE`z1Am9P0MaEB%f-+_)zA zv#`Wm-uY=>bw7`hNch}1r#Ervw?y6NZp4(|E^}IX(HO0G0Fs8}=H_4Ysl;%O5a_=K zgLCsjfkf^~*B>h`+R?ms?`xRoya095ruow=;eVvYbcEqeb|s>U|E8Bw2ohZ-M35R z2J0mJksH}&vZ0#KdF5aw7fV=<)Kn)w3EBr{OJ@j+xJsu?@mu8~hib5aFt&me?0p{J z)r4UUaS*GjW;!`J~s5{uJUq9?CWS3D`d%tYY_)!EEKC{IhML4+R8*c zS>3(pYWhmFoPD0_)G-){GTvvm4P(kvs{34~wr$LPY=hTs?QLwh+bsd&v%G?LgtZr# ztCCie=6ek@Fs1w1dNyR&Yu(*$%~1mfv;~1I{6mWoly*vL_AMdVkJx*2W9BZkKc2?g z6cf4F(IO|Rfbwl*^S9NYI&^~=wcQ}Gd2X4|ovM^%%rRwitx4)fAnp}&`~j6cHtzJS9Vlqdv_mc~x`<<8MoOAa>d=;7$#fb%Q9`N#3;Y*p@)oNd zoNn^YddDYXOG+qJLHWaNXJAS&4^B7|G0yCgD}$UL&Y=#;EZnI;f{EH`@qi+x{B6IN zO(1qo{bSe=nhOHk6~853s_!Sc;`LM_`d(sFJqCXztGK0-1xZ1nC~Z%}Gdi?FyO7k9 zHq41k4x{%K81&IC%twCDyFPUuwos*sFi*ggreYwtD$J>2VJ(y6W{m z{T0$S<|JHhrLA-2E+3Gsi^)j!DoQ-`v;wrF!Yk-~6PM0R?8R^jjZG;E0C z0waTSq&ii*S{Y680}`frWsGYY-ve{~D5)x*ozy>U8EgZ9Nqj-TMtZUO zYI?N;?(;U%eYHg@516}9WrYrH$ChF6iiTX(nR<*142TR@3EmpvPVBO3eq1ygDVmSY0eLs$r&OJF2~ z3Wi8=WISuQQdCwl5EBjCWM0a$N1Y46awThtDa?(Il_!gAn+TUPI<3S=P@_ShH(X@1 zwiK5w@D?8(Ii8>UTP~|4RnWjJoT6WB_pSU(5@tF+=Vt$g{X-<9DpKMHSV*YE2ar33IGXDbsr96hgmsh-2iT$ni410sx zu6M56&jM)aGG72&T9iJy;Fu|8uglk=?Sr@KC!aBX%GXuCSdkIYfY{Nqc@7hCTl;4O zi(mMsC<031H3AqtH%)j$`Xh*s1IoF$l|Hr9*BPyzHPEtQfdHk@ax1usSJY*Lh0x3a z!0J?#awzs+cdAGnk~v6TlLx}6b)q%y*A=Ry+ni=?xuzHe2~Q(v#nFX!8?LL4-b3NLRI!I)j|)fPL+;+tk5i7`B{~cOX!)(3GWwh>};T zoEH4oO}Z>vMxbqkPS0F=jWK49?;4LMaZ9PoUpE}qOJHcdYsvCXv-WN+k3%JdYg)A? zgt)nhjT6h*gsWK?{1T{=*1LHHxAVSPlM?got{l+7 z5BdFqPSU>uZfr8&b&Wj4N~9}k>%79(_enfajAh>~$bZM1ui&Lh46PPhdVLPEbOmO{xrVPrDGfL zO6gwH^*R=9cDg@gXX=uomL%M=8}NX%jvVA2=M)iTppSmtWBh4bkEj7_PvJ3i6CZr3 zP=U5N-uLJ!Z)~cC-83)ww96&i=BkcY${DOJ)4{72uBn-=^*tM|z8mg^+M;4I?BK^Y zvE5osnMH0@qV%+lZ?{x;Eb6VywOtsV(RFC5)J>Bf-gn;$%hL)L)KARTad^@j28|)&Iv6TB%Ai zQgH^_YRUDChf&3_Li5itW~<0)B`-ZNWOj!z%_HAQ|JXOPv=Y9E==@dv$+WZB8IKBG zeuZHk_aexv;Oqkll8SCmy-Mi`CZz2^%;op+-HMA&@Pe9~l|A;$fUgBkZNP<}wJlmT z(?Z?s3zg0NY1YaQ(2FC0nKw(fRkh*mR9)zK3g_HI!`T-ibfeyxxnXEuK=Sv?O-h9r zFCVb23zU{@e!$T*$66|RP8|Cr)8AhkT8k`R)}o+}8JZWmG*FGr34xCepPaBNid?{U zY0s)4;@>lgd{}%z8Np*x|2?aw9B+0-GDs7vr{s#3_$7l;b#atnwOPh6vz8vzjw0~o ztGBi!wAH-MjU#)4O)-Pa@~XSRL__|M#XL~zG~XHhnLq)|-H#d9XO0<`=lZ+Bro%P= zFS7}0Rg3yC`f7U7Z5C}fFMAbZpemTE^D#8d3LUA`wAaep8s`Cn_&+fV($59MXYd7T zu%>f{xjv<3YXx(Gr}n2@DFz*zIahcQZ}WxbXD8=Ei;IjIZrJm_66-7NQ!X}<91ka? zQh|r{jm)|i6+Txx2pue zSQ1#OU$Ecjz9A8lv+QxZB9*iF<-v(@O28)Z;dWK%7vWmvdU09g8FI*Ybhn zhRCV0%b?AI#Ijp|2bW@csQ~nJFsYyB&T3=c_QTZf=nl)ACM>_a*_HGaTQwtEZS@1W z?nOph+G&@_^UbL=gyY%2IzW3;Gwb34418gkn-3pYf0?&#PtT0S+Vz;U0)GM)X6(BQ zXK7D8%(-Hx4^^2e)x*t@C*ds^TvQL1MDMvINXl~LM3wdh*Z0q4RunsbL#nsq^T-6p ztl$q7B94W#bkqBWxN&Kbsys`3!!}$SFEorOv%(*DlabzDX9SYSY0-J0vfK z$8U1P=+|4td+0={swP-nl~2-Osi@YduTgfiN`*I-jg#lQ_Sr-guFBN3VhQlMI%x=o zPFt-6`%UXT^*;0MLH4Fx()RUKwuC2Bkij1ouQ{UO=BCThcT?I^vr!q}rd4c9*nf92 zH=1lp17~Du;mGTBvaqdF#Z%B8L{tZJOA@l|8t~ssV@_4&r zx$td`=&5l-&k(uQh)f;1o(%W&?~oPzZRkq;BmEKqOMVw}6)_!eXq7USGnSNl8UTf3 zA>mL=3Z96-$Z%x%TD%s?Vr59MO%7-}4!?r$UG2KC&X5O*AM zsiP0}!`T<*>bpqd7`|^BTlPWP{^q<&!Q9_JUO%P-+jrK(BiG$2h)0o^5J4LrO(bPY z`nCkm5q3rwb&E?#O#nJDx;FKZ=|0L4GCqDG6aRW}WJ1v|%X@PtZPYv7lMjg}+aq*R z)HJ%$>$vLy3h`aWs|7MFBpK>wsTKi5I%8(TF$r#I_Eog2*_JYv2JoKQ4twq7M(0)< zUiSrU8y8vXLVfjBPlYBG`rV6m;agr^&Pe-i1Y}>Bf>sVFQ-mUn1C}t3JWG#`0>*q? zu;y@lMPWvB}< zs|o5#*(1hs!wx+^=YpA5tAJK4SxO<(CgBU($?FPz=K zR$qS0WyK-qw{NfK+S-k&-mo0|wwLGAGaoq5Po>JLmK)4rSC;`+Sndn)Tbg#p28;S0 z$)($wYc4r;x>W$T5Q6N~H^jzk<2|`sN0)9-ptutxS3P+u;9(i1_L^y~^16qbx|V0g zZDwC>IZR`HuQgyrGq_4d@o}O-Pa-ass`dyFIj7hb>4dq z^T;$b-;)n}0wpOQE-=sAH^CoV@U(=`eFSs=s4kLRd{^>M-PMip9m4kn)?a8(u;o8X8Fy^^Tu3R zVf9v9r{Yd zF&azF!#P&BrtpJC*PPKj#nkTXNO?8GXlmZ@n`dh$3<-UsnN#83Ddmwvqh_4ug3w@F z9eg2sDZ2a8^_>)0vrSMn%gGzGa;O9Ea=%z5pzLB(g;j+ySf#F3rJ6>|n5f9Id6JL9 z(B%m>2h891PdsPGz!V*R?el@2jaxT_JQg{ES1>qJGy-&JWj#{nk-SxGV0?IBUT%V} z6|ZT4Pv+Cs37+2H@*mD&T|d%Y+1^T?!QbM%Qa5gidzW&3-=**kJh%?kdtd!*I6-a8 zbuqsA&bzaR;2PVDVSFpVwwC95u5d-*Si7XuRg|M0eLtnuTCD`P?Z|RIv^c3R7D&%p}NL(0^uN%cFX10N%fS*hQQ-a#t0{^2fI6vV^ZwJ@-&}t4-hIk2bN#SGrFl}`&Y_WAG9|>z zb$q@=>E*812GFKAfDE-R^YFNIeHCa7aBA)tWfeIMYy0wpwq0)G!=Ek~d;>V_jC=Li zX~E(!XBt6`0qe@?ab@YWruAY5AAc>92!l4h!i6 zT%RMpIprKj1g+$8P9RKmGk5MDoKh~jmBgN-jW6xq_Q>ZA;%iB{%G@@aDMO>Pfln4P zUUYlLQVksotdp#yt;Q})h@7PMwRQ4D@3EhJ6AUsvi&u9T2BUK?8CrV!MKib^cLqYS zs1^Tfz|Y;%O!nD?)+6Ur%zvLW*fFjLd>mmlU=$zZZ48Ee~E`Dy5|fOjkL$H zMGK0=J%*3wU*c~1_$$)%n#A_5uZYB!Fuk+J5uDxAp)6$leaOxB7Vc5WNbw1Af>sEA zf9VAtI(-CBFl@nW%b#&0_G0pn1QuTT!OFB5pInU;5&2k#_l1^DgA|08xH&zILENwK zx-e89Qu*DFQ8OR`A@M#RoW`d7csSpBp){U)hiaFR35tU;uEKXVf|XmYBJo8F9b}jM zcqmVM2-Dw;>Tx+=jX+R>k)RtAYXsONc%@FiS>H>C8K_u~JpYZ`zXBd6)vEp@mhr!0 z5$g6BgO)zM{|i~d;(i93z)U0m_1d#zf&m+Ht%q%eVss_lJyzl<; z#z7oOY;@FMf5(iu{_^`+2-U6`^UfZK_4CC)BPYkYWNq$wA&Y;X?m}UouDwqF^8Q61 zzSI_+lBxEACHXC;^TmH^hZp~V(+b^VbSwArxL(GoIS#Spj|MiZ6%|*#oiIy+zTi&%@6%l}pnoE6)ny6Pra2WMplY|M;qjd`Zy&M#=V+quNE!9(&pOA4RER zsS$uGVl;EA4>_g>|A{w=k!r7E{|oeLXDH@KtW{TQ+&Hd3Mos2g61pX7UT4-CF$<$jUN8sLqvu!>~Xd{)7wvh^T8@ul9_4ZfNyuwF!It<|w zzhaQUKu;(4203pfD~5U^N$NmD{;%dVsJqVnlbZ3A|lm%n1Z0TG1OTO zbxZ*C;Uj1qdi=U~0Cvnr>nn!FHz>I)hXhE#umPvp zQ?18tZ$3!|L~KouFj~kIr2dxB*NK|z0K%6;kqt5i{YLp60m`V^sl}aq=*uVB@#9f^ z>m3@+rWHz#24%!-Pe&)-V8wuJX?CWSjKydsqJ3WM@CiU6v->pzq3NN+BCnXf=RYV= zz!-1H|AY{J$vSP(tztm9eI3&qL9o7aUlWkxnu}D=2WS#AiWMbKT>W;5beX*cl6Wdj z*)(*#3ZmX{JcbYF$4>X93p0G#)R?~7<9lq40~>*~Kv1(WpAb@iQ|FB0=%RU3A9_(! z$v7sdcc8C(s3RX25=70F2H{&HB=(h(B2D~r)uKJP?+_LH)QpJ1su(Fkum7wRyHzs( zFOt}Ur4Ux+Xb~Jk))8>DlGuo~9!y@4HaR22hn4YYVD$B9GrRMWqGoKUa%5+GKeqUE zQIpem$bxyteB1p6o*){*+PBNS9UASu++_q}-X6el9yPK5-h8}&@gE}E0l5F;V={#Q zY6mm{bpB2b0$q{dcYE`?Ys0-q5fueB0#3PUn8aWIcYgfWUg@I%nocE9?~0aAvQ& zzCsdcN}Dohxe53u`;BX6UHb}+g8m`6tzf!Dh~(7s2;TauBr$?D0p->T^@PU*QE<%L z$0X{MTQP`JDKve*4`256XBN^7^Rre70 z-*=PmB3iu0yy+>v<-RzP0Y`j4jQ>kM_XXrB@Q7~lcD2`=O9CbtgQ_0?W_0&2h*0ix N5YtCrb8Rn|{{f|H`MUrB literal 60233 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

      @Jkl=4Ns}LO9Yo9Q>HcR&Vv2yWz%NN& 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 Date: Sat, 10 Sep 2022 22:12:03 -0500 Subject: [PATCH 552/580] GUI: wave generator, part 9 it's complete! --- src/gui/waveEdit.cpp | 74 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 2b7e638b..69594f5d 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -593,7 +593,23 @@ void FurnaceGUI::drawWaveEdit() { if (waveGenSmooth<1) waveGenSmooth=1; } ImGui::TableNextColumn(); - ImGui::Button("Smooth"); + if (ImGui::Button("Smooth")) { + if (waveGenSmooth>0) e->lockEngine([this,wave]() { + int origData[256]; + memcpy(origData,wave->data,wave->len*sizeof(int)); + for (int i=0; ilen; i++) { + int dataSum=0; + for (int j=i; jlen; + dataSum+=origData[pos%wave->len]; + } + dataSum/=waveGenSmooth+1; + wave->data[i]=dataSum; + } + MARK_MODIFIED; + }); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -623,7 +639,39 @@ void FurnaceGUI::drawWaveEdit() { buttonSizeHalf.x-=ImGui::GetStyle().ItemSpacing.x; buttonSizeHalf.x*=0.5; - ImGui::Button("Normalize",buttonSize); + if (ImGui::Button("Normalize",buttonSize)) { + e->lockEngine([this,wave]() { + // find lowest point + int lowest=wave->max; + for (int i=0; ilen; i++) { + if (wave->data[i]data[i]; + } + + // find highest point + int highest=0; + for (int i=0; ilen; i++) { + if (wave->data[i]>highest) highest=wave->data[i]; + } + + // abort if lowest and highest points are equal + if (lowest==highest) return; + + // abort if lowest and highest points already span the entire height + if (lowest==wave->max && highest==0) return; + + // apply offset + for (int i=0; ilen; i++) { + wave->data[i]-=lowest; + } + highest-=lowest; + + // scale + for (int i=0; ilen; i++) { + wave->data[i]=(wave->data[i]*wave->max)/highest; + } + MARK_MODIFIED; + }); + } if (ImGui::Button("Invert",buttonSize)) { e->lockEngine([this,wave]() { for (int i=0; ilen; i++) { @@ -633,9 +681,25 @@ void FurnaceGUI::drawWaveEdit() { }); } - ImGui::Button("/2",buttonSizeHalf); + if (ImGui::Button("Half",buttonSizeHalf)) { + int origData[256]; + memcpy(origData,wave->data,wave->len*sizeof(int)); + + for (int i=0; ilen; i++) { + wave->data[i]=origData[i>>1]; + } + MARK_MODIFIED; + } ImGui::SameLine(); - ImGui::Button("Ɨ2",buttonSizeHalf); + if (ImGui::Button("Double",buttonSizeHalf)) { + int origData[256]; + memcpy(origData,wave->data,wave->len*sizeof(int)); + + for (int i=0; ilen; i++) { + wave->data[i]=origData[(i*2)%wave->len]; + } + MARK_MODIFIED; + } if (ImGui::Button("Convert Signed/Unsigned",buttonSize)) { if (wave->max>0) e->lockEngine([this,wave]() { @@ -643,7 +707,7 @@ void FurnaceGUI::drawWaveEdit() { if (wave->data[i]>(wave->max/2)) { wave->data[i]-=(wave->max+1)/2; } else { - wave->data[i]+=wave->max/2; + wave->data[i]+=(wave->max+1)/2; } } MARK_MODIFIED; From 09233b6de01faf39748192be53f8dbecff629214 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 22:35:21 -0500 Subject: [PATCH 553/580] GUI: add signed waveform view mode --- src/gui/gui.cpp | 13 ++++++++----- src/gui/gui.h | 4 ++-- src/gui/waveEdit.cpp | 32 ++++++++++++++++++++++++++++---- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 0d0635ec..66b562b6 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -228,7 +228,7 @@ void FurnaceGUI::encodeMMLStr(String& target, int* macro, int macroLen, int macr } } -void FurnaceGUI::decodeMMLStrW(String& source, int* macro, int& macroLen, int macroMax, bool hex) { +void FurnaceGUI::decodeMMLStrW(String& source, int* macro, int& macroLen, int macroMin, int macroMax, bool hex) { int buf=0; bool negaBuf=false; bool hasVal=false; @@ -264,9 +264,9 @@ void FurnaceGUI::decodeMMLStrW(String& source, int* macro, int& macroLen, int ma case ' ': if (hasVal) { hasVal=false; - negaBuf=false; macro[macroLen]=negaBuf?-buf:buf; - if (macro[macroLen]<0) macro[macroLen]=0; + negaBuf=false; + if (macro[macroLen]macroMax) macro[macroLen]=macroMax; macroLen++; buf=0; @@ -277,9 +277,9 @@ void FurnaceGUI::decodeMMLStrW(String& source, int* macro, int& macroLen, int ma } if (hasVal && macroLen<256) { hasVal=false; - negaBuf=false; macro[macroLen]=negaBuf?-buf:buf; - if (macro[macroLen]<0) macro[macroLen]=0; + negaBuf=false; + if (macro[macroLen]macroMax) macro[macroLen]=macroMax; macroLen++; buf=0; @@ -4621,6 +4621,7 @@ bool FurnaceGUI::init() { tempoView=e->getConfBool("tempoView",true); waveHex=e->getConfBool("waveHex",false); + waveSigned=e->getConfBool("waveSigned",false); waveGenVisible=e->getConfBool("waveGenVisible",false); waveEditStyle=e->getConfInt("waveEditStyle",0); lockLayout=e->getConfBool("lockLayout",false); @@ -4906,6 +4907,7 @@ bool FurnaceGUI::finish() { e->setConf("tempoView",tempoView); e->setConf("waveHex",waveHex); + e->setConf("waveSigned",waveSigned); e->setConf("waveGenVisible",waveGenVisible); e->setConf("waveEditStyle",waveEditStyle); e->setConf("lockLayout",lockLayout); @@ -5112,6 +5114,7 @@ FurnaceGUI::FurnaceGUI(): firstFrame(true), tempoView(true), waveHex(false), + waveSigned(false), waveGenVisible(false), lockLayout(false), editOptsVisible(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 0f52115d..2fb566d5 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1327,7 +1327,7 @@ class FurnaceGUI { SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; - bool collapseWindow, demandScrollX, fancyPattern, wantPatName, firstFrame, tempoView, waveHex, waveGenVisible, lockLayout, editOptsVisible, latchNibble, nonLatchNibble; + bool collapseWindow, demandScrollX, fancyPattern, wantPatName, firstFrame, tempoView, waveHex, waveSigned, waveGenVisible, lockLayout, editOptsVisible, latchNibble, nonLatchNibble; FurnaceGUIWindows curWindow, nextWindow, curWindowLast; float peak[2]; float patChanX[DIV_MAX_CHANS+1]; @@ -1741,7 +1741,7 @@ class FurnaceGUI { void encodeMMLStr(String& target, int* macro, int macroLen, int macroLoop, int macroRel, bool hex=false, bool bit30=false); void decodeMMLStr(String& source, int* macro, unsigned char& macroLen, unsigned char& macroLoop, int macroMin, int macroMax, unsigned char& macroRel, bool bit30=false); - void decodeMMLStrW(String& source, int* macro, int& macroLen, int macroMax, bool hex=false); + void decodeMMLStrW(String& source, int* macro, int& macroLen, int macroMin, int macroMax, bool hex=false); String encodeKeyMap(std::map& map); void decodeKeyMap(std::map& map, String source); diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 69594f5d..006ee430 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -255,6 +255,9 @@ void FurnaceGUI::drawWaveEdit() { for (int i=0; ilen; i++) { if (wave->data[i]>wave->max) wave->data[i]=wave->max; wavePreview[i]=wave->data[i]; + if (waveSigned && !waveHex) { + wavePreview[i]-=(int)((wave->max+1)/2); + } } if (wave->len>0) wavePreview[wave->len]=wave->data[wave->len-1]; @@ -269,9 +272,9 @@ void FurnaceGUI::drawWaveEdit() { ImVec2 contentRegion=ImGui::GetContentRegionAvail(); // wavetable graph size determined here contentRegion.y-=ImGui::GetFrameHeightWithSpacing()+ImGui::GetStyle().WindowPadding.y; if (waveEditStyle) { - PlotNoLerp("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion); + PlotNoLerp("##Waveform",wavePreview,wave->len+1,0,NULL,(waveSigned && !waveHex)?(-(int)((wave->max+1)/2)):0,(waveSigned && !waveHex)?((int)(wave->max/2)):wave->max,contentRegion); } else { - PlotCustom("##Waveform",wavePreview,wave->len,0,NULL,0,wave->max,contentRegion,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,NULL,true); + PlotCustom("##Waveform",wavePreview,wave->len,0,NULL,(waveSigned && !waveHex)?(-(int)((wave->max+1)/2)):0,(waveSigned && !waveHex)?((int)(wave->max/2)):wave->max,contentRegion,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,NULL,true); } if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { waveDragStart=ImGui::GetItemRectMin(); @@ -737,12 +740,33 @@ void FurnaceGUI::drawWaveEdit() { waveHex=true; } ImGui::SameLine(); + if (!waveHex) if (ImGui::Button(waveSigned?"Ā±##WaveSign":"+##WaveSign",ImVec2(ImGui::GetFrameHeight(),ImGui::GetFrameHeight()))) { + waveSigned=!waveSigned; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Signed/Unsigned"); + } + ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); // wavetable text input size found here if (ImGui::InputText("##MMLWave",&mmlStringW)) { - decodeMMLStrW(mmlStringW,wave->data,wave->len,wave->max,waveHex); + int actualData[256]; + decodeMMLStrW(mmlStringW,actualData,wave->len,(waveSigned && !waveHex)?(-((wave->max+1)/2)):0,(waveSigned && !waveHex)?(wave->max/2):wave->max,waveHex); + if (waveSigned && !waveHex) { + for (int i=0; ilen; i++) { + actualData[i]+=(wave->max+1)/2; + } + } + memcpy(wave->data,actualData,wave->len*sizeof(int)); } if (!ImGui::IsItemActive()) { - encodeMMLStr(mmlStringW,wave->data,wave->len,-1,-1,waveHex); + int actualData[256]; + memcpy(actualData,wave->data,256*sizeof(int)); + if (waveSigned && !waveHex) { + for (int i=0; ilen; i++) { + actualData[i]-=(wave->max+1)/2; + } + } + encodeMMLStr(mmlStringW,actualData,wave->len,-1,-1,waveHex); } } } From 2952baaa5409f3e2d3f9c0d32d9eaef64a062d5b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 22:40:25 -0500 Subject: [PATCH 554/580] update 6-sample --- papers/doc/6-sample/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index 59613da2..4fbb6c91 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -64,7 +64,3 @@ In there, you can modify certain data pertaining to your sample, such as the: - and many more. The changes you make will be applied as soon as you've committed them to your sample, but they can be undoed and redoed, just like text. - -# tips - -if you have a sample you wanna use that is about 44100 or anything over 32000Hz, downsample the sample to 32000Hz so that the pitch of the sample in Furnace stays like the original audio file, From 2f0e97f6d95a24ca718174cd826f69c769655941 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 23:20:22 -0500 Subject: [PATCH 555/580] GUI: FM operator swapping --- src/gui/gui.cpp | 1 + src/gui/gui.h | 2 +- src/gui/insEdit.cpp | 39 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 66b562b6..329c3e8e 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5217,6 +5217,7 @@ FurnaceGUI::FurnaceGUI(): chanToMove(-1), sysToMove(-1), sysToDelete(-1), + opToMove(-1), transposeAmount(0), randomizeMin(0), randomizeMax(255), diff --git a/src/gui/gui.h b/src/gui/gui.h index 2fb566d5..f91c4bee 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1471,7 +1471,7 @@ class FurnaceGUI { int renderTimeBegin, renderTimeEnd, renderTimeDelta; int eventTimeBegin, eventTimeEnd, eventTimeDelta; - int chanToMove, sysToMove, sysToDelete; + int chanToMove, sysToMove, sysToDelete, opToMove; ImVec2 patWindowPos, patWindowSize; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index ec9ba32b..c2c7a260 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1557,6 +1557,35 @@ void FurnaceGUI::drawMacros(std::vector& macros) { #define CENTER_TEXT_20(text) \ ImGui::SetCursorPosX(ImGui::GetCursorPosX()+0.5*(20.0f*dpiScale-ImGui::CalcTextSize(text).x)); +#define OP_DRAG_POINT \ + if (ImGui::Button(ICON_FA_ARROWS)) { \ + } \ + if (ImGui::BeginDragDropSource()) { \ + opToMove=i; \ + ImGui::SetDragDropPayload("FUR_OP",NULL,0,ImGuiCond_Once); \ + ImGui::Button(ICON_FA_ARROWS "##SysDrag"); \ + ImGui::EndDragDropSource(); \ + } else if (ImGui::IsItemHovered()) { \ + ImGui::SetTooltip("(drag to swap operators)"); \ + } \ + if (ImGui::BeginDragDropTarget()) { \ + const ImGuiPayload* dragItem=ImGui::AcceptDragDropPayload("FUR_OP"); \ + if (dragItem!=NULL) { \ + if (dragItem->IsDataType("FUR_OP")) { \ + if (opToMove!=i && opToMove>=0) { \ + e->lockEngine([this,ins,i]() { \ + DivInstrumentFM::Operator origOp=ins->fm.op[orderedOps[opToMove]]; \ + ins->fm.op[orderedOps[opToMove]]=ins->fm.op[orderedOps[i]]; \ + ins->fm.op[orderedOps[i]]=origOp; \ + }); \ + PARAMETER; \ + } \ + opToMove=-1; \ + } \ + } \ + ImGui::EndDragDropTarget(); \ + } + void FurnaceGUI::drawInsEdit() { if (nextWindow==GUI_WINDOW_INS_EDIT) { insEditOpen=true; @@ -2073,6 +2102,9 @@ void FurnaceGUI::drawInsEdit() { } else { ImGui::Text("OP%d",i+1); } + + // drag point + OP_DRAG_POINT; int maxTl=127; if (ins->type==DIV_INS_OPLL) { @@ -2356,7 +2388,10 @@ void FurnaceGUI::drawInsEdit() { } else { snprintf(tempID,1024,"Operator %d",i+1); } - CENTER_TEXT(tempID); + float nextCursorPosX=ImGui::GetCursorPosX()+0.5*(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(tempID).x); + OP_DRAG_POINT; + ImGui::SameLine(); + ImGui::SetCursorPosX(nextCursorPosX); ImGui::TextUnformatted(tempID); float sliderHeight=200.0f*dpiScale; @@ -2789,6 +2824,8 @@ void FurnaceGUI::drawInsEdit() { } ImGui::Dummy(ImVec2(dpiScale,dpiScale)); + OP_DRAG_POINT; + ImGui::SameLine(); if (ins->type==DIV_INS_OPL_DRUMS) { ImGui::Text("%s",oplDrumNames[i]); } else if (ins->type==DIV_INS_OPL && ins->fm.opllPreset==16) { From 29f1be3b3605afa599cf099115a3a8f6d9e0bfac Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 23:32:04 -0500 Subject: [PATCH 556/580] fix audio backend not changing on switchMaster --- src/engine/engine.cpp | 11 ++++++++--- src/engine/engine.h | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index f6fe659e..91764034 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3453,7 +3453,8 @@ void DivEngine::setConsoleMode(bool enable) { } bool DivEngine::switchMaster() { - deinitAudioBackend(); + logI("switching output..."); + deinitAudioBackend(true); quitDispatch(); initDispatch(); if (initAudioBackend()) { @@ -3599,6 +3600,7 @@ void DivEngine::quitDispatch() { bool DivEngine::initAudioBackend() { // load values + logI("initializing audio."); if (audioEngine==DIV_AUDIO_NULL) { if (getConfString("audioEngine","SDL")=="JACK") { audioEngine=DIV_AUDIO_JACK; @@ -3704,8 +3706,9 @@ bool DivEngine::initAudioBackend() { return true; } -bool DivEngine::deinitAudioBackend() { +bool DivEngine::deinitAudioBackend(bool dueToSwitchMaster) { if (output!=NULL) { + logI("closing audio output."); output->quit(); if (output->midiIn) { if (output->midiIn->isDeviceOpen()) { @@ -3722,7 +3725,9 @@ bool DivEngine::deinitAudioBackend() { output->quitMidi(); delete output; output=NULL; - //audioEngine=DIV_AUDIO_NULL; + if (dueToSwitchMaster) { + audioEngine=DIV_AUDIO_NULL; + } } return true; } diff --git a/src/engine/engine.h b/src/engine/engine.h index 7c700e00..869587a2 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -452,7 +452,7 @@ class DivEngine { int loadSampleROM(String path, ssize_t expectedSize, unsigned char*& ret); bool initAudioBackend(); - bool deinitAudioBackend(); + bool deinitAudioBackend(bool dueToSwitchMaster=false); void registerSystems(); void initSongWithDesc(const int* description); From 03e226e52b1854ffb939b2da1b5b7dc312920693 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 23:33:05 -0500 Subject: [PATCH 557/580] seamless switchMaster --- src/engine/engine.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 91764034..bb03eda1 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3455,8 +3455,6 @@ void DivEngine::setConsoleMode(bool enable) { bool DivEngine::switchMaster() { logI("switching output..."); deinitAudioBackend(true); - quitDispatch(); - initDispatch(); if (initAudioBackend()) { for (int i=0; i Date: Sat, 10 Sep 2022 23:50:53 -0500 Subject: [PATCH 558/580] GUI: fix toggles losing their colors on hover --- src/gui/editControls.cpp | 92 ++++++++++++++++++++-------------------- src/gui/gui.cpp | 29 +++++++++++++ src/gui/gui.h | 5 ++- src/gui/insEdit.cpp | 32 +++++++------- src/gui/sampleEdit.cpp | 16 +++---- 5 files changed, 102 insertions(+), 72 deletions(-) diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index 9d6c0d00..1d0e2a25 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -59,12 +59,12 @@ void FurnaceGUI::drawMobileControls() { if (!portrait) ImGui::Separator(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(e->isPlaying())); + pushToggleColors(e->isPlaying()); if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_PLAY "##Play",buttonSize)) { play(); } - ImGui::PopStyleColor(); + popToggleColors(); if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_STOP "##Stop",buttonSize)) { stop(); @@ -76,27 +76,27 @@ void FurnaceGUI::drawMobileControls() { } bool repeatPattern=e->getRepeatPattern(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(repeatPattern)); + pushToggleColors(repeatPattern); if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_REPEAT "##RepeatPattern",buttonSize)) { e->setRepeatPattern(!repeatPattern); } - ImGui::PopStyleColor(); + popToggleColors(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(edit)); + pushToggleColors(edit); if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_CIRCLE "##Edit",buttonSize)) { edit=!edit; } - ImGui::PopStyleColor(); + popToggleColors(); bool metro=e->getMetronome(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(metro)); + pushToggleColors(metro); if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_BELL_O "##Metronome",buttonSize)) { e->setMetronome(!metro); } - ImGui::PopStyleColor(); + popToggleColors(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_EDIT_CONTROLS; ImGui::End(); @@ -306,11 +306,11 @@ void FurnaceGUI::drawEditControls() { ImGui::EndTable(); } - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(e->isPlaying())); + pushToggleColors(e->isPlaying()); if (ImGui::Button(ICON_FA_PLAY "##Play")) { play(); } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); if (ImGui::Button(ICON_FA_STOP "##Stop")) { stop(); @@ -340,12 +340,12 @@ void FurnaceGUI::drawEditControls() { } ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(noteInputPoly)); + pushToggleColors(noteInputPoly); if (ImGui::Button(noteInputPoly?("Poly##PolyInput"):("Mono##PolyInput"))) { noteInputPoly=!noteInputPoly; e->setAutoNotePoly(noteInputPoly); } - ImGui::PopStyleColor(); + popToggleColors(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_EDIT_CONTROLS; ImGui::End(); @@ -356,11 +356,11 @@ void FurnaceGUI::drawEditControls() { stop(); } ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(e->isPlaying())); + pushToggleColors(e->isPlaying()); if (ImGui::Button(ICON_FA_PLAY "##Play")) { play(); } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); if (ImGui::Button(ICON_FA_ARROW_DOWN "##StepOne")) { e->stepOne(cursor.y); @@ -369,26 +369,26 @@ void FurnaceGUI::drawEditControls() { ImGui::SameLine(); bool repeatPattern=e->getRepeatPattern(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(repeatPattern)); + pushToggleColors(repeatPattern); if (ImGui::Button(ICON_FA_REPEAT "##RepeatPattern")) { e->setRepeatPattern(!repeatPattern); } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(edit)); + pushToggleColors(edit); if (ImGui::Button(ICON_FA_CIRCLE "##Edit")) { edit=!edit; } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); bool metro=e->getMetronome(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(metro)); + pushToggleColors(metro); if (ImGui::Button(ICON_FA_BELL_O "##Metronome")) { e->setMetronome(!metro); } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); ImGui::Text("Octave"); @@ -425,12 +425,12 @@ void FurnaceGUI::drawEditControls() { unimportant(ImGui::Checkbox("Pattern",&followPattern)); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(noteInputPoly)); + pushToggleColors(noteInputPoly); if (ImGui::Button(noteInputPoly?("Poly##PolyInput"):("Mono##PolyInput"))) { noteInputPoly=!noteInputPoly; e->setAutoNotePoly(noteInputPoly); } - ImGui::PopStyleColor(); + popToggleColors(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_EDIT_CONTROLS; ImGui::End(); @@ -438,11 +438,11 @@ void FurnaceGUI::drawEditControls() { case 2: // compact vertical if (ImGui::Begin("Play/Edit Controls",&editControlsOpen,ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { ImVec2 buttonSize=ImVec2(ImGui::GetContentRegionAvail().x,0.0f); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(e->isPlaying())); + pushToggleColors(e->isPlaying()); if (ImGui::Button(ICON_FA_PLAY "##Play",buttonSize)) { play(); } - ImGui::PopStyleColor(); + popToggleColors(); if (ImGui::Button(ICON_FA_STOP "##Stop",buttonSize)) { stop(); } @@ -452,24 +452,24 @@ void FurnaceGUI::drawEditControls() { } bool repeatPattern=e->getRepeatPattern(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(repeatPattern)); + pushToggleColors(repeatPattern); if (ImGui::Button(ICON_FA_REPEAT "##RepeatPattern",buttonSize)) { e->setRepeatPattern(!repeatPattern); } - ImGui::PopStyleColor(); + popToggleColors(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(edit)); + pushToggleColors(edit); if (ImGui::Button(ICON_FA_CIRCLE "##Edit",buttonSize)) { edit=!edit; } - ImGui::PopStyleColor(); + popToggleColors(); bool metro=e->getMetronome(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(metro)); + pushToggleColors(metro); if (ImGui::Button(ICON_FA_BELL_O "##Metronome",buttonSize)) { e->setMetronome(!metro); } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::Text("Oct."); float avail=ImGui::GetContentRegionAvail().x; @@ -496,23 +496,23 @@ void FurnaceGUI::drawEditControls() { } ImGui::Text("Foll."); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(followOrders)); + pushToggleColors(followOrders); if (ImGui::Button("Ord##FollowOrders",buttonSize)) { handleUnimportant followOrders=!followOrders; } - ImGui::PopStyleColor(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(followPattern)); + popToggleColors(); + pushToggleColors(followPattern); if (ImGui::Button("Pat##FollowPattern",buttonSize)) { handleUnimportant followPattern=!followPattern; } - ImGui::PopStyleColor(); + popToggleColors(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(noteInputPoly)); + pushToggleColors(noteInputPoly); if (ImGui::Button(noteInputPoly?("Poly##PolyInput"):("Mono##PolyInput"))) { noteInputPoly=!noteInputPoly; e->setAutoNotePoly(noteInputPoly); } - ImGui::PopStyleColor(); + popToggleColors(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_EDIT_CONTROLS; ImGui::End(); @@ -520,11 +520,11 @@ void FurnaceGUI::drawEditControls() { case 3: // split if (ImGui::Begin("Play Controls",&editControlsOpen,ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { if (e->isPlaying()) { - ImGui::PushStyleColor(ImGuiCol_Button,uiColors[GUI_COLOR_TOGGLE_ON]); + pushToggleColors(true); if (ImGui::Button(ICON_FA_STOP "##Stop")) { stop(); } - ImGui::PopStyleColor(); + popToggleColors(); } else { if (ImGui::Button(ICON_FA_PLAY "##Play")) { play(oldRow); @@ -547,35 +547,35 @@ void FurnaceGUI::drawEditControls() { } ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(edit)); + pushToggleColors(edit); if (ImGui::Button(ICON_FA_CIRCLE "##Edit")) { edit=!edit; } - ImGui::PopStyleColor(); + popToggleColors(); bool metro=e->getMetronome(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(metro)); + pushToggleColors(metro); if (ImGui::Button(ICON_FA_BELL_O "##Metronome")) { e->setMetronome(!metro); } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); bool repeatPattern=e->getRepeatPattern(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(repeatPattern)); + pushToggleColors(repeatPattern); if (ImGui::Button(ICON_FA_REPEAT "##RepeatPattern")) { e->setRepeatPattern(!repeatPattern); } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(noteInputPoly)); + pushToggleColors(noteInputPoly); if (ImGui::Button(noteInputPoly?("Poly##PolyInput"):("Mono##PolyInput"))) { noteInputPoly=!noteInputPoly; e->setAutoNotePoly(noteInputPoly); } - ImGui::PopStyleColor(); + popToggleColors(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_EDIT_CONTROLS; ImGui::End(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 329c3e8e..4785ee81 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2408,6 +2408,35 @@ void FurnaceGUI::toggleMobileUI(bool enable, bool force) { } } +void FurnaceGUI::pushToggleColors(bool status) { + ImVec4 toggleColor=status?uiColors[GUI_COLOR_TOGGLE_ON]:uiColors[GUI_COLOR_TOGGLE_OFF]; + ImGui::PushStyleColor(ImGuiCol_Button,toggleColor); + if (settings.guiColorsBase) { + toggleColor.x*=0.8f; + toggleColor.y*=0.8f; + toggleColor.z*=0.8f; + } else { + toggleColor.x=CLAMP(toggleColor.x*1.3f,0.0f,1.0f); + toggleColor.y=CLAMP(toggleColor.y*1.3f,0.0f,1.0f); + toggleColor.z=CLAMP(toggleColor.z*1.3f,0.0f,1.0f); + } + ImGui::PushStyleColor(ImGuiCol_ButtonHovered,toggleColor); + if (settings.guiColorsBase) { + toggleColor.x*=0.8f; + toggleColor.y*=0.8f; + toggleColor.z*=0.8f; + } else { + toggleColor.x=CLAMP(toggleColor.x*1.5f,0.0f,1.0f); + toggleColor.y=CLAMP(toggleColor.y*1.5f,0.0f,1.0f); + toggleColor.z=CLAMP(toggleColor.z*1.5f,0.0f,1.0f); + } + ImGui::PushStyleColor(ImGuiCol_ButtonActive,toggleColor); +} + +void FurnaceGUI::popToggleColors() { + ImGui::PopStyleColor(3); +} + int _processEvent(void* instance, SDL_Event* event) { return ((FurnaceGUI*)instance)->processEvent(event); } diff --git a/src/gui/gui.h b/src/gui/gui.h index f91c4bee..b71fe368 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -47,8 +47,6 @@ #define MARK_MODIFIED modified=true; #define WAKE_UP drawHalt=16; -#define TOGGLE_COLOR(x) ((x)?uiColors[GUI_COLOR_TOGGLE_ON]:uiColors[GUI_COLOR_TOGGLE_OFF]) - #define BIND_FOR(x) getKeyName(actionKeys[x],true).c_str() // TODO: @@ -1616,6 +1614,9 @@ class FurnaceGUI { void toggleMobileUI(bool enable, bool force=false); + void pushToggleColors(bool status); + void popToggleColors(); + void drawMobileControls(); void drawEditControls(); void drawSongInfo(); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index c2c7a260..563e0579 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3400,29 +3400,29 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_C64) if (ImGui::BeginTabItem("C64")) { ImGui::Text("Waveform"); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.triOn)); + pushToggleColors(ins->c64.triOn); if (ImGui::Button("tri")) { PARAMETER ins->c64.triOn=!ins->c64.triOn; } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.sawOn)); + pushToggleColors(ins->c64.sawOn); if (ImGui::Button("saw")) { PARAMETER ins->c64.sawOn=!ins->c64.sawOn; } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.pulseOn)); + pushToggleColors(ins->c64.pulseOn); if (ImGui::Button("pulse")) { PARAMETER ins->c64.pulseOn=!ins->c64.pulseOn; } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.noiseOn)); + pushToggleColors(ins->c64.noiseOn); if (ImGui::Button("noise")) { PARAMETER ins->c64.noiseOn=!ins->c64.noiseOn; } - ImGui::PopStyleColor(); + popToggleColors(); ImVec2 sliderSize=ImVec2(20.0f*dpiScale,128.0*dpiScale); @@ -3484,29 +3484,29 @@ void FurnaceGUI::drawInsEdit() { ImGui::Text("Filter Mode"); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.lp)); + pushToggleColors(ins->c64.lp); if (ImGui::Button("low")) { PARAMETER ins->c64.lp=!ins->c64.lp; } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.bp)); + pushToggleColors(ins->c64.bp); if (ImGui::Button("band")) { PARAMETER ins->c64.bp=!ins->c64.bp; } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.hp)); + pushToggleColors(ins->c64.hp); if (ImGui::Button("high")) { PARAMETER ins->c64.hp=!ins->c64.hp; } - ImGui::PopStyleColor(); + popToggleColors(); ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(ins->c64.ch3off)); + pushToggleColors(ins->c64.ch3off); if (ImGui::Button("ch3off")) { PARAMETER ins->c64.ch3off=!ins->c64.ch3off; } - ImGui::PopStyleColor(); + popToggleColors(); P(ImGui::Checkbox("Volume Macro is Cutoff Macro",&ins->c64.volIsCutoff)); P(ImGui::Checkbox("Absolute Cutoff Macro",&ins->c64.filterIsAbs)); diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 76f654c1..51411c43 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -152,20 +152,20 @@ void FurnaceGUI::drawSampleEdit() { ImGui::BeginDisabled(sample->depth!=DIV_SAMPLE_DEPTH_8BIT && sample->depth!=DIV_SAMPLE_DEPTH_16BIT); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(!sampleDragMode)); + pushToggleColors(!sampleDragMode); if (ImGui::Button(ICON_FA_I_CURSOR "##SSelect")) { sampleDragMode=false; } - ImGui::PopStyleColor(); + popToggleColors(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Edit mode: Select"); } ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(sampleDragMode)); + pushToggleColors(sampleDragMode); if (ImGui::Button(ICON_FA_PENCIL "##SDraw")) { sampleDragMode=true; } - ImGui::PopStyleColor(); + popToggleColors(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Edit mode: Draw"); } @@ -687,20 +687,20 @@ void FurnaceGUI::drawSampleEdit() { ImGui::BeginDisabled(sample->depth!=DIV_SAMPLE_DEPTH_8BIT && sample->depth!=DIV_SAMPLE_DEPTH_16BIT); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(!sampleDragMode)); + pushToggleColors(!sampleDragMode); if (ImGui::Button(ICON_FA_I_CURSOR "##SSelect")) { sampleDragMode=false; } - ImGui::PopStyleColor(); + popToggleColors(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Edit mode: Select"); } ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(sampleDragMode)); + pushToggleColors(sampleDragMode); if (ImGui::Button(ICON_FA_PENCIL "##SDraw")) { sampleDragMode=true; } - ImGui::PopStyleColor(); + popToggleColors(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Edit mode: Draw"); } From d4867c505039461cb98606eb813643cf78c27e62 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 11 Sep 2022 05:14:15 -0500 Subject: [PATCH 559/580] GUI: consistency in credits --- src/gui/about.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index fae8019c..b763ab97 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -104,7 +104,7 @@ const char* aboutLine[]={ "fd", "GENATARi", "host12prog", - "lunathir", + "Lunathir", "plane", "TheEssem", "", From 7b1713758bca595ddc86acda8b087bf844d1379a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 12 Sep 2022 00:37:25 -0500 Subject: [PATCH 560/580] dev114 - operator muting for OPN/OPM --- papers/format.md | 4 ++- src/engine/engine.h | 4 +-- src/engine/instrument.cpp | 12 ++++++-- src/engine/platform/arcade.cpp | 7 ++++- src/engine/platform/arcade.h | 5 ++-- src/engine/platform/genesis.cpp | 7 ++++- src/engine/platform/genesis.h | 3 +- src/engine/platform/ym2203.cpp | 7 ++++- src/engine/platform/ym2203.h | 3 +- src/engine/platform/ym2608.cpp | 7 ++++- src/engine/platform/ym2608.h | 3 +- src/engine/platform/ym2610.cpp | 7 ++++- src/engine/platform/ym2610.h | 5 ++-- src/engine/platform/ym2610b.cpp | 7 ++++- src/engine/platform/ym2610b.h | 5 ++-- src/gui/insEdit.cpp | 52 ++++++++++++++++++++++++++------- 16 files changed, 108 insertions(+), 30 deletions(-) diff --git a/papers/format.md b/papers/format.md index 14512fe1..da06488f 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 114: Furnace dev114 - 113: Furnace dev113 - 112: Furnace dev112 - 111: Furnace dev111 @@ -497,7 +498,8 @@ size | description 1 | vib 1 | ws 1 | ksr - 12 | reserved + 1 | operator enabled (>=114) or reserved + 11 | reserved --- | **Game Boy instrument data** 1 | volume 1 | direction diff --git a/src/engine/engine.h b/src/engine/engine.h index 869587a2..3047a8af 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -46,8 +46,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev113" -#define DIV_ENGINE_VERSION 113 +#define DIV_VERSION "dev114" +#define DIV_ENGINE_VERSION 114 // for imports #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 19cb1ba5..22cdddf4 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -71,8 +71,10 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeC(op.ws); w->writeC(op.ksr); + w->writeC(op.enable); + // reserved - for (int k=0; k<12; k++) { + for (int k=0; k<11; k++) { w->writeC(0); } } @@ -716,8 +718,14 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { op.ws=reader.readC(); op.ksr=reader.readC(); + if (version>=114) { + op.enable=reader.readC(); + } else { + reader.readC(); + } + // reserved - for (int k=0; k<12; k++) reader.readC(); + for (int k=0; k<11; k++) reader.readC(); } // GB diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 90de2387..7d44fe8a 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -348,7 +348,7 @@ void DivPlatformArcade::tick(bool sysTick) { chan[i].freqChanged=false; } if (chan[i].keyOn) { - immWrite(0x08,0x78|i); + immWrite(0x08,(chan[i].opMask<<3)|i); chan[i].keyOn=false; } } @@ -370,6 +370,11 @@ int DivPlatformArcade::dispatch(DivCommand c) { if (chan[c.chan].insChanged) { chan[c.chan].state=ins->fm; + chan[c.chan].opMask= + (chan[c.chan].state.op[0].enable?1:0)| + (chan[c.chan].state.op[2].enable?2:0)| + (chan[c.chan].state.op[1].enable?4:0)| + (chan[c.chan].state.op[3].enable?8:0); } chan[c.chan].macroInit(ins); diff --git a/src/engine/platform/arcade.h b/src/engine/platform/arcade.h index 93aa490d..683394e3 100644 --- a/src/engine/platform/arcade.h +++ b/src/engine/platform/arcade.h @@ -45,7 +45,7 @@ class DivPlatformArcade: public DivPlatformOPM { signed char konCycles; bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, portaPause, furnacePCM, hardReset; int vol, outVol; - unsigned char chVolL, chVolR; + unsigned char chVolL, chVolR, opMask; void macroInit(DivInstrument* which) { std.init(which); pitch2=0; @@ -71,7 +71,8 @@ class DivPlatformArcade: public DivPlatformOPM { vol(0), outVol(0), chVolL(127), - chVolR(127) {} + chVolR(127), + opMask(15) {} }; Channel chan[8]; DivDispatchOscBuffer* oscBuf[8]; diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index f499865e..5b4b535b 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -480,7 +480,7 @@ void DivPlatformGenesis::tick(bool sysTick) { chan[i].freqChanged=false; } if (chan[i].keyOn) { - if (i<6) immWrite(0x28,0xf0|konOffs[i]); + if (i<6) immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); chan[i].keyOn=false; } } @@ -591,6 +591,11 @@ int DivPlatformGenesis::dispatch(DivCommand c) { if (chan[c.chan].insChanged) { chan[c.chan].state=ins->fm; + chan[c.chan].opMask= + (chan[c.chan].state.op[0].enable?1:0)| + (chan[c.chan].state.op[2].enable?2:0)| + (chan[c.chan].state.op[1].enable?4:0)| + (chan[c.chan].state.op[3].enable?8:0); } chan[c.chan].macroInit(ins); diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index 5e61fe67..34a4d4f2 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -47,7 +47,7 @@ class DivPlatformGenesis: public DivPlatformOPN { int ins; bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, furnaceDac, inPorta, hardReset; int vol, outVol; - unsigned char pan; + unsigned char pan, opMask; bool dacMode; int dacPeriod; @@ -85,6 +85,7 @@ class DivPlatformGenesis: public DivPlatformOPN { vol(0), outVol(0), pan(3), + opMask(15), dacMode(false), dacPeriod(0), dacRate(0), diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index 178ef05b..46696b8a 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -386,7 +386,7 @@ void DivPlatformYM2203::tick(bool sysTick) { chan[i].freqChanged=false; } if (chan[i].keyOn) { - immWrite(0x28,0xf0|konOffs[i]); + immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); chan[i].keyOn=false; } } @@ -409,6 +409,11 @@ int DivPlatformYM2203::dispatch(DivCommand c) { if (chan[c.chan].insChanged) { chan[c.chan].state=ins->fm; + chan[c.chan].opMask= + (chan[c.chan].state.op[0].enable?1:0)| + (chan[c.chan].state.op[2].enable?2:0)| + (chan[c.chan].state.op[1].enable?4:0)| + (chan[c.chan].state.op[3].enable?8:0); } for (int i=0; i<4; i++) { diff --git a/src/engine/platform/ym2203.h b/src/engine/platform/ym2203.h index 0395c9d0..921c1d94 100644 --- a/src/engine/platform/ym2203.h +++ b/src/engine/platform/ym2203.h @@ -43,7 +43,7 @@ class DivPlatformYM2203: public DivPlatformOPN { DivInstrumentFM state; unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; - unsigned char psgMode, autoEnvNum, autoEnvDen; + unsigned char psgMode, autoEnvNum, autoEnvDen, opMask; signed char konCycles; bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; int vol, outVol; @@ -66,6 +66,7 @@ class DivPlatformYM2203: public DivPlatformOPN { psgMode(1), autoEnvNum(0), autoEnvDen(0), + opMask(15), active(false), insChanged(true), freqChanged(false), diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 244e4a16..801bab32 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -582,7 +582,7 @@ void DivPlatformYM2608::tick(bool sysTick) { chan[i].freqChanged=false; } if (chan[i].keyOn) { - immWrite(0x28,0xf0|konOffs[i]); + immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); chan[i].keyOn=false; } } @@ -683,6 +683,11 @@ int DivPlatformYM2608::dispatch(DivCommand c) { if (chan[c.chan].insChanged) { chan[c.chan].state=ins->fm; + chan[c.chan].opMask= + (chan[c.chan].state.op[0].enable?1:0)| + (chan[c.chan].state.op[2].enable?2:0)| + (chan[c.chan].state.op[1].enable?4:0)| + (chan[c.chan].state.op[3].enable?8:0); } for (int i=0; i<4; i++) { diff --git a/src/engine/platform/ym2608.h b/src/engine/platform/ym2608.h index 7a471b8b..1689436e 100644 --- a/src/engine/platform/ym2608.h +++ b/src/engine/platform/ym2608.h @@ -48,7 +48,7 @@ class DivPlatformYM2608: public DivPlatformOPN { DivInstrumentFM state; unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; - unsigned char psgMode, autoEnvNum, autoEnvDen; + unsigned char psgMode, autoEnvNum, autoEnvDen, opMask; signed char konCycles; bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; int vol, outVol; @@ -72,6 +72,7 @@ class DivPlatformYM2608: public DivPlatformOPN { psgMode(1), autoEnvNum(0), autoEnvDen(0), + opMask(15), active(false), insChanged(true), freqChanged(false), diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 064b49f2..63a6d72e 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -619,7 +619,7 @@ void DivPlatformYM2610::tick(bool sysTick) { chan[i].freqChanged=false; } if (chan[i].keyOn) { - immWrite(0x28,0xf0|konOffs[i]); + immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); chan[i].keyOn=false; } } @@ -727,6 +727,11 @@ int DivPlatformYM2610::dispatch(DivCommand c) { if (chan[c.chan].insChanged) { chan[c.chan].state=ins->fm; + chan[c.chan].opMask= + (chan[c.chan].state.op[0].enable?1:0)| + (chan[c.chan].state.op[2].enable?2:0)| + (chan[c.chan].state.op[1].enable?4:0)| + (chan[c.chan].state.op[3].enable?8:0); } for (int i=0; i<4; i++) { diff --git a/src/engine/platform/ym2610.h b/src/engine/platform/ym2610.h index 5e22ed2a..0e363329 100644 --- a/src/engine/platform/ym2610.h +++ b/src/engine/platform/ym2610.h @@ -76,7 +76,7 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; int vol, outVol; int sample; - unsigned char pan; + unsigned char pan, opMask; DivMacroInt std; void macroInit(DivInstrument* which) { std.init(which); @@ -107,7 +107,8 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { vol(0), outVol(15), sample(-1), - pan(3) {} + pan(3), + opMask(15) {} }; Channel chan[14]; DivDispatchOscBuffer* oscBuf[14]; diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 8d283374..f01f39b4 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -601,7 +601,7 @@ void DivPlatformYM2610B::tick(bool sysTick) { chan[i].freqChanged=false; } if (chan[i].keyOn) { - immWrite(0x28,0xf0|konOffs[i]); + immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); chan[i].keyOn=false; } } @@ -709,6 +709,11 @@ int DivPlatformYM2610B::dispatch(DivCommand c) { if (chan[c.chan].insChanged) { chan[c.chan].state=ins->fm; + chan[c.chan].opMask= + (chan[c.chan].state.op[0].enable?1:0)| + (chan[c.chan].state.op[2].enable?2:0)| + (chan[c.chan].state.op[1].enable?4:0)| + (chan[c.chan].state.op[3].enable?8:0); } for (int i=0; i<4; i++) { diff --git a/src/engine/platform/ym2610b.h b/src/engine/platform/ym2610b.h index 703f8dd4..87500e9b 100644 --- a/src/engine/platform/ym2610b.h +++ b/src/engine/platform/ym2610b.h @@ -43,7 +43,7 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; int vol, outVol; int sample; - unsigned char pan; + unsigned char pan, opMask; DivMacroInt std; void macroInit(DivInstrument* which) { std.init(which); @@ -74,7 +74,8 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { vol(0), outVol(15), sample(-1), - pan(3) {} + pan(3), + opMask(15) {} }; Channel chan[16]; DivDispatchOscBuffer* oscBuf[16]; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 563e0579..3ffc86a8 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1737,6 +1737,7 @@ void FurnaceGUI::drawInsEdit() { int opCount=4; if (ins->type==DIV_INS_OPLL) opCount=2; if (ins->type==DIV_INS_OPL) opCount=(ins->fm.ops==4)?4:2; + bool opsAreMutable=(ins->type==DIV_INS_FM); if (ImGui::BeginTabItem("FM")) { if (ImGui::BeginTable("fmDetails",3,ImGuiTableFlags_SizingStretchSame)) { @@ -2091,16 +2092,27 @@ void FurnaceGUI::drawInsEdit() { if (i==0) sliderHeight=(ImGui::GetContentRegionAvail().y/opCount)-ImGui::GetStyle().ItemSpacing.y; ImGui::PushID(fmt::sprintf("op%d",i).c_str()); + String opNameLabel; if (ins->type==DIV_INS_OPL_DRUMS) { - ImGui::Text("%s",oplDrumNames[i]); + opNameLabel=fmt::sprintf("%s",oplDrumNames[i]); } else if (ins->type==DIV_INS_OPL && ins->fm.opllPreset==16) { if (i==1) { - ImGui::Text("Kick"); + opNameLabel="Kick"; } else { - ImGui::Text("Env"); + opNameLabel="Env"; } } else { - ImGui::Text("OP%d",i+1); + opNameLabel=fmt::sprintf("OP%d",i+1); + } + if (opsAreMutable) { + pushToggleColors(op.enable); + if (ImGui::Button(opNameLabel.c_str())) { + op.enable=!op.enable; + PARAMETER; + } + popToggleColors(); + } else { + ImGui::TextUnformatted(opNameLabel.c_str()); } // drag point @@ -2388,11 +2400,20 @@ void FurnaceGUI::drawInsEdit() { } else { snprintf(tempID,1024,"Operator %d",i+1); } - float nextCursorPosX=ImGui::GetCursorPosX()+0.5*(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(tempID).x); + float nextCursorPosX=ImGui::GetCursorPosX()+0.5*(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(tempID).x-(opsAreMutable?(ImGui::GetStyle().FramePadding.x*2.0f):0.0f)); OP_DRAG_POINT; ImGui::SameLine(); ImGui::SetCursorPosX(nextCursorPosX); - ImGui::TextUnformatted(tempID); + if (opsAreMutable) { + pushToggleColors(op.enable); + if (ImGui::Button(tempID)) { + op.enable=!op.enable; + PARAMETER; + } + popToggleColors(); + } else { + ImGui::TextUnformatted(tempID); + } float sliderHeight=200.0f*dpiScale; float waveWidth=140.0*dpiScale; @@ -2824,18 +2845,29 @@ void FurnaceGUI::drawInsEdit() { } ImGui::Dummy(ImVec2(dpiScale,dpiScale)); + String opNameLabel; OP_DRAG_POINT; ImGui::SameLine(); if (ins->type==DIV_INS_OPL_DRUMS) { - ImGui::Text("%s",oplDrumNames[i]); + opNameLabel=fmt::sprintf("%s",oplDrumNames[i]); } else if (ins->type==DIV_INS_OPL && ins->fm.opllPreset==16) { if (i==1) { - ImGui::Text("Envelope 2 (kick only)"); + opNameLabel="Envelope 2 (kick only)"; } else { - ImGui::Text("Envelope"); + opNameLabel="Envelope"; } } else { - ImGui::Text("OP%d",i+1); + opNameLabel=fmt::sprintf("OP%d",i+1); + } + if (opsAreMutable) { + pushToggleColors(op.enable); + if (ImGui::Button(opNameLabel.c_str())) { + op.enable=!op.enable; + PARAMETER; + } + popToggleColors(); + } else { + ImGui::TextUnformatted(opNameLabel.c_str()); } ImGui::SameLine(); From d64e20e85958d12451b94a01173e01786a07fea0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 12 Sep 2022 00:51:09 -0500 Subject: [PATCH 561/580] implement operator muting for ExtCh mode --- src/engine/platform/genesisext.cpp | 9 ++++++--- src/engine/platform/genesisext.h | 3 ++- src/engine/platform/ym2203ext.cpp | 9 ++++++--- src/engine/platform/ym2203ext.h | 4 ++-- src/engine/platform/ym2608ext.cpp | 9 ++++++--- src/engine/platform/ym2608ext.h | 4 ++-- src/engine/platform/ym2610bext.cpp | 9 ++++++--- src/engine/platform/ym2610bext.h | 4 ++-- src/engine/platform/ym2610ext.cpp | 9 ++++++--- src/engine/platform/ym2610ext.h | 4 ++-- 10 files changed, 40 insertions(+), 24 deletions(-) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index dfd7d514..3f03e622 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -69,6 +69,7 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) { rWrite(baseAddr+0x70,op.d2r&31); rWrite(baseAddr+0x80,(op.rr&15)|(op.sl<<4)); rWrite(baseAddr+0x90,op.ssgEnv&15); + opChan[ch].mask=op.enable; } if (opChan[ch].insChanged) { // TODO how does this work? rWrite(chanOffs[2]+0xb0,(chan[2].state.alg&7)|(chan[2].state.fb<<3)); @@ -412,7 +413,7 @@ void DivPlatformGenesisExt::tick(bool sysTick) { bool writeSomething=false; unsigned char writeMask=2; for (int i=0; i<4; i++) { - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn || opChan[i].keyOff) { writeSomething=true; writeMask&=~(1<<(4+i)); @@ -459,10 +460,12 @@ void DivPlatformGenesisExt::tick(bool sysTick) { immWrite(opChanOffsH[i],opChan[i].freq>>8); immWrite(opChanOffsL[i],opChan[i].freq&0xff); } - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn) { writeNoteOn=true; - writeMask|=1<<(4+i); + if (opChan[i].mask) { + writeMask|=1<<(4+i); + } opChan[i].keyOn=false; } } diff --git a/src/engine/platform/genesisext.h b/src/engine/platform/genesisext.h index 07e0d5cc..d4dd93e7 100644 --- a/src/engine/platform/genesisext.h +++ b/src/engine/platform/genesisext.h @@ -27,7 +27,7 @@ class DivPlatformGenesisExt: public DivPlatformGenesis { unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, ins; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, mask; int vol; unsigned char pan; OpChannel(): @@ -46,6 +46,7 @@ class DivPlatformGenesisExt: public DivPlatformGenesis { keyOff(false), portaPause(false), inPorta(false), + mask(true), vol(0), pan(3) {} }; diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index 3ff24eb7..c7080d43 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -59,6 +59,7 @@ int DivPlatformYM2203Ext::dispatch(DivCommand c) { rWrite(baseAddr+0x70,op.d2r&31); rWrite(baseAddr+0x80,(op.rr&15)|(op.sl<<4)); rWrite(baseAddr+0x90,op.ssgEnv&15); + opChan[ch].mask=op.enable; } if (opChan[ch].insChanged) { // TODO how does this work? rWrite(chanOffs[2]+0xb0,(ins->fm.alg&7)|(ins->fm.fb<<3)); @@ -358,7 +359,7 @@ void DivPlatformYM2203Ext::tick(bool sysTick) { bool writeSomething=false; unsigned char writeMask=2; for (int i=0; i<4; i++) { - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn || opChan[i].keyOff) { writeSomething=true; writeMask&=~(1<<(4+i)); @@ -395,10 +396,12 @@ void DivPlatformYM2203Ext::tick(bool sysTick) { immWrite(opChanOffsH[i],opChan[i].freq>>8); immWrite(opChanOffsL[i],opChan[i].freq&0xff); } - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn) { writeNoteOn=true; - writeMask|=1<<(4+i); + if (opChan[i].mask) { + writeMask|=1<<(4+i); + } opChan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2203ext.h b/src/engine/platform/ym2203ext.h index 1a398d1a..d25ca45d 100644 --- a/src/engine/platform/ym2203ext.h +++ b/src/engine/platform/ym2203ext.h @@ -27,12 +27,12 @@ class DivPlatformYM2203Ext: public DivPlatformYM2203 { unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, ins; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, mask; int vol; unsigned char pan; // UGLY OpChannel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), pitch2(0), portaPauseFreq(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), portaPause(false), - inPorta(false), vol(0), pan(3) {} + inPorta(false), mask(true), vol(0), pan(3) {} }; OpChannel opChan[4]; bool isOpMuted[4]; diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index 63503ccc..c6d7e03b 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -59,6 +59,7 @@ int DivPlatformYM2608Ext::dispatch(DivCommand c) { rWrite(baseAddr+0x70,op.d2r&31); rWrite(baseAddr+0x80,(op.rr&15)|(op.sl<<4)); rWrite(baseAddr+0x90,op.ssgEnv&15); + opChan[ch].mask=op.enable; } if (opChan[ch].insChanged) { // TODO how does this work? rWrite(chanOffs[2]+0xb0,(ins->fm.alg&7)|(ins->fm.fb<<3)); @@ -358,7 +359,7 @@ void DivPlatformYM2608Ext::tick(bool sysTick) { bool writeSomething=false; unsigned char writeMask=2; for (int i=0; i<4; i++) { - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn || opChan[i].keyOff) { writeSomething=true; writeMask&=~(1<<(4+i)); @@ -395,10 +396,12 @@ void DivPlatformYM2608Ext::tick(bool sysTick) { immWrite(opChanOffsH[i],opChan[i].freq>>8); immWrite(opChanOffsL[i],opChan[i].freq&0xff); } - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn) { writeNoteOn=true; - writeMask|=1<<(4+i); + if (opChan[i].mask) { + writeMask|=1<<(4+i); + } opChan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2608ext.h b/src/engine/platform/ym2608ext.h index bc3d4f99..21c8a35c 100644 --- a/src/engine/platform/ym2608ext.h +++ b/src/engine/platform/ym2608ext.h @@ -27,12 +27,12 @@ class DivPlatformYM2608Ext: public DivPlatformYM2608 { unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, ins; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, mask; int vol; unsigned char pan; // UGLY OpChannel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), pitch2(0), portaPauseFreq(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), portaPause(false), - inPorta(false), vol(0), pan(3) {} + inPorta(false), mask(true), vol(0), pan(3) {} }; OpChannel opChan[4]; bool isOpMuted[4]; diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index 7c8247ff..f55e6561 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -59,6 +59,7 @@ int DivPlatformYM2610BExt::dispatch(DivCommand c) { rWrite(baseAddr+0x70,op.d2r&31); rWrite(baseAddr+0x80,(op.rr&15)|(op.sl<<4)); rWrite(baseAddr+0x90,op.ssgEnv&15); + opChan[ch].mask=op.enable; } if (opChan[ch].insChanged) { // TODO how does this work? rWrite(chanOffs[2]+0xb0,(ins->fm.alg&7)|(ins->fm.fb<<3)); @@ -358,7 +359,7 @@ void DivPlatformYM2610BExt::tick(bool sysTick) { bool writeSomething=false; unsigned char writeMask=2; for (int i=0; i<4; i++) { - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn || opChan[i].keyOff) { writeSomething=true; writeMask&=~(1<<(4+i)); @@ -395,10 +396,12 @@ void DivPlatformYM2610BExt::tick(bool sysTick) { immWrite(opChanOffsH[i],opChan[i].freq>>8); immWrite(opChanOffsL[i],opChan[i].freq&0xff); } - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn) { writeNoteOn=true; - writeMask|=1<<(4+i); + if (opChan[i].mask) { + writeMask|=1<<(4+i); + } opChan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2610bext.h b/src/engine/platform/ym2610bext.h index 732678fe..e60f9713 100644 --- a/src/engine/platform/ym2610bext.h +++ b/src/engine/platform/ym2610bext.h @@ -27,12 +27,12 @@ class DivPlatformYM2610BExt: public DivPlatformYM2610B { unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, ins; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, mask; int vol; unsigned char pan; // UGLY OpChannel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), pitch2(0), portaPauseFreq(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), portaPause(false), - inPorta(false), vol(0), pan(3) {} + inPorta(false), mask(true), vol(0), pan(3) {} }; OpChannel opChan[4]; bool isOpMuted[4]; diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index b2bd06a8..6cee242f 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -59,6 +59,7 @@ int DivPlatformYM2610Ext::dispatch(DivCommand c) { rWrite(baseAddr+0x70,op.d2r&31); rWrite(baseAddr+0x80,(op.rr&15)|(op.sl<<4)); rWrite(baseAddr+0x90,op.ssgEnv&15); + opChan[ch].mask=op.enable; } if (opChan[ch].insChanged) { // TODO how does this work? rWrite(chanOffs[1]+0xb0,(ins->fm.alg&7)|(ins->fm.fb<<3)); @@ -358,7 +359,7 @@ void DivPlatformYM2610Ext::tick(bool sysTick) { bool writeSomething=false; unsigned char writeMask=2; for (int i=0; i<4; i++) { - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn || opChan[i].keyOff) { writeSomething=true; writeMask&=~(1<<(4+i)); @@ -395,10 +396,12 @@ void DivPlatformYM2610Ext::tick(bool sysTick) { immWrite(opChanOffsH[i],opChan[i].freq>>8); immWrite(opChanOffsL[i],opChan[i].freq&0xff); } - writeMask|=opChan[i].active<<(4+i); + writeMask|=(unsigned char)(opChan[i].mask && opChan[i].active)<<(4+i); if (opChan[i].keyOn) { writeNoteOn=true; - writeMask|=1<<(4+i); + if (opChan[i].mask) { + writeMask|=1<<(4+i); + } opChan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2610ext.h b/src/engine/platform/ym2610ext.h index 119d6356..07d855c0 100644 --- a/src/engine/platform/ym2610ext.h +++ b/src/engine/platform/ym2610ext.h @@ -27,12 +27,12 @@ class DivPlatformYM2610Ext: public DivPlatformYM2610 { unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, ins; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, mask; int vol; unsigned char pan; // UGLY OpChannel(): freqH(0), freqL(0), freq(0), baseFreq(0), pitch(0), pitch2(0), portaPauseFreq(0), ins(-1), active(false), insChanged(true), freqChanged(false), keyOn(false), keyOff(false), portaPause(false), - inPorta(false), vol(0), pan(3) {} + inPorta(false), mask(true), vol(0), pan(3) {} }; OpChannel opChan[4]; bool isOpMuted[4]; From 6e1f54b77736d1040f7001c3b46f1b174c52e99a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 12 Sep 2022 01:50:27 -0500 Subject: [PATCH 562/580] YM2612: implement OpMask will be done for OPM and the rest of the OPN chips later --- src/engine/platform/genesis.cpp | 7 ++++++- src/engine/platform/genesis.h | 3 ++- src/gui/insEdit.cpp | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 5b4b535b..515f0c0a 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -347,6 +347,10 @@ void DivPlatformGenesis::tick(bool sysTick) { chan[i].state.ams=chan[i].std.ams.val; rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); } + if (chan[i].std.ex4.had && chan[i].active) { + chan[i].opMask=chan[i].std.ex4.val&15; + chan[i].opMaskChanged=true; + } for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; @@ -479,8 +483,9 @@ void DivPlatformGenesis::tick(bool sysTick) { } chan[i].freqChanged=false; } - if (chan[i].keyOn) { + if (chan[i].keyOn || chan[i].opMaskChanged) { if (i<6) immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); + chan[i].opMaskChanged=false; chan[i].keyOn=false; } } diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index 34a4d4f2..8588b21d 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -45,7 +45,7 @@ class DivPlatformGenesis: public DivPlatformOPN { unsigned char freqH, freqL; int freq, baseFreq, pitch, pitch2, portaPauseFreq, note; int ins; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, furnaceDac, inPorta, hardReset; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, furnaceDac, inPorta, hardReset, opMaskChanged; int vol, outVol; unsigned char pan, opMask; @@ -82,6 +82,7 @@ class DivPlatformGenesis: public DivPlatformOPN { furnaceDac(false), inPorta(false), hardReset(false), + opMaskChanged(false), vol(0), outVol(0), pan(3), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 3ffc86a8..1c49bf99 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3101,7 +3101,14 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("PM Depth",&ins->std.ex2Macro,0,127,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("LFO Speed",&ins->std.ex3Macro,0,255,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("LFO Shape",&ins->std.waveMacro,0,3,48,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,macroLFOWaves)); + } + if (ins->type==DIV_INS_FM) { macroList.push_back(FurnaceGUIMacroDesc("OpMask",&ins->std.ex4Macro,0,4,128,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,fmOperatorBits)); + } else if (ins->type==DIV_INS_OPZ) { + macroList.push_back(FurnaceGUIMacroDesc("AM Depth 2",&ins->std.ex5Macro,0,127,128,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("PM Depth 2",&ins->std.ex6Macro,0,127,128,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("LFO2 Speed",&ins->std.ex7Macro,0,255,128,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("LFO2 Shape",&ins->std.ex8Macro,0,3,48,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,macroLFOWaves)); } drawMacros(macroList); ImGui::EndTabItem(); From a08ae8cce7e0b8d41a79db90de61cb46020ef184 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 12 Sep 2022 02:26:00 -0500 Subject: [PATCH 563/580] implement OpMask for the rest of FM chips whether supported --- src/engine/platform/arcade.cpp | 7 ++++++- src/engine/platform/arcade.h | 3 ++- src/engine/platform/ym2203.cpp | 7 ++++++- src/engine/platform/ym2203.h | 3 ++- src/engine/platform/ym2608.cpp | 7 ++++++- src/engine/platform/ym2608.h | 3 ++- src/engine/platform/ym2610.cpp | 7 ++++++- src/engine/platform/ym2610.h | 3 ++- src/engine/platform/ym2610b.cpp | 7 ++++++- src/engine/platform/ym2610b.h | 3 ++- 10 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 7d44fe8a..6e925c9a 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -255,6 +255,10 @@ void DivPlatformArcade::tick(bool sysTick) { chan[i].state.ams=chan[i].std.ams.val; rWrite(chanOffs[i]+ADDR_FMS_AMS,((chan[i].state.fms&7)<<4)|(chan[i].state.ams&3)); } + if (chan[i].std.ex4.had && chan[i].active) { + chan[i].opMask=chan[i].std.ex4.val&15; + chan[i].opMaskChanged=true; + } for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; @@ -347,8 +351,9 @@ void DivPlatformArcade::tick(bool sysTick) { immWrite(i+0x30,chan[i].freq<<2); chan[i].freqChanged=false; } - if (chan[i].keyOn) { + if (chan[i].keyOn || chan[i].opMaskChanged) { immWrite(0x08,(chan[i].opMask<<3)|i); + chan[i].opMaskChanged=false; chan[i].keyOn=false; } } diff --git a/src/engine/platform/arcade.h b/src/engine/platform/arcade.h index 683394e3..2a9c2b40 100644 --- a/src/engine/platform/arcade.h +++ b/src/engine/platform/arcade.h @@ -43,7 +43,7 @@ class DivPlatformArcade: public DivPlatformOPM { int freq, baseFreq, pitch, pitch2, note; int ins; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, portaPause, furnacePCM, hardReset; + bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, portaPause, furnacePCM, hardReset, opMaskChanged; int vol, outVol; unsigned char chVolL, chVolR, opMask; void macroInit(DivInstrument* which) { @@ -68,6 +68,7 @@ class DivPlatformArcade: public DivPlatformOPM { portaPause(false), furnacePCM(false), hardReset(false), + opMaskChanged(false), vol(0), outVol(0), chVolL(127), diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index 46696b8a..1c348800 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -273,6 +273,10 @@ void DivPlatformYM2203::tick(bool sysTick) { chan[i].state.fb=chan[i].std.fb.val; rWrite(chanOffs[i]+ADDR_FB_ALG,(chan[i].state.alg&7)|(chan[i].state.fb<<3)); } + if (chan[i].std.ex4.had && chan[i].active) { + chan[i].opMask=chan[i].std.ex4.val&15; + chan[i].opMaskChanged=true; + } for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; @@ -385,8 +389,9 @@ void DivPlatformYM2203::tick(bool sysTick) { immWrite(chanOffs[i]+ADDR_FREQ,chan[i].freq&0xff); chan[i].freqChanged=false; } - if (chan[i].keyOn) { + if (chan[i].keyOn || chan[i].opMaskChanged) { immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); + chan[i].opMaskChanged=false; chan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2203.h b/src/engine/platform/ym2203.h index 921c1d94..75660365 100644 --- a/src/engine/platform/ym2203.h +++ b/src/engine/platform/ym2203.h @@ -45,7 +45,7 @@ class DivPlatformYM2203: public DivPlatformOPN { int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; unsigned char psgMode, autoEnvNum, autoEnvDen, opMask; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset, opMaskChanged; int vol, outVol; int sample; DivMacroInt std; @@ -76,6 +76,7 @@ class DivPlatformYM2203: public DivPlatformOPN { inPorta(false), furnacePCM(false), hardReset(false), + opMaskChanged(false), vol(0), outVol(15), sample(-1) {} diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 801bab32..ec90c1c6 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -441,6 +441,10 @@ void DivPlatformYM2608::tick(bool sysTick) { chan[i].state.ams=chan[i].std.ams.val; rWrite(chanOffs[i]+ADDR_LRAF,(isMuted[i]?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); } + if (chan[i].std.ex4.had && chan[i].active) { + chan[i].opMask=chan[i].std.ex4.val&15; + chan[i].opMaskChanged=true; + } for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; @@ -581,8 +585,9 @@ void DivPlatformYM2608::tick(bool sysTick) { immWrite(chanOffs[i]+ADDR_FREQ,chan[i].freq&0xff); chan[i].freqChanged=false; } - if (chan[i].keyOn) { + if (chan[i].keyOn || chan[i].opMaskChanged) { immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); + chan[i].opMaskChanged=false; chan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2608.h b/src/engine/platform/ym2608.h index 1689436e..ed850bf8 100644 --- a/src/engine/platform/ym2608.h +++ b/src/engine/platform/ym2608.h @@ -50,7 +50,7 @@ class DivPlatformYM2608: public DivPlatformOPN { int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; unsigned char psgMode, autoEnvNum, autoEnvDen, opMask; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset, opMaskChanged; int vol, outVol; int sample; unsigned char pan; @@ -82,6 +82,7 @@ class DivPlatformYM2608: public DivPlatformOPN { inPorta(false), furnacePCM(false), hardReset(false), + opMaskChanged(false), vol(0), outVol(15), sample(-1), diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 63a6d72e..6a8509d5 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -482,6 +482,10 @@ void DivPlatformYM2610::tick(bool sysTick) { chan[i].state.ams=chan[i].std.ams.val; rWrite(chanOffs[i]+ADDR_LRAF,(isMuted[i]?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); } + if (chan[i].std.ex4.had && chan[i].active) { + chan[i].opMask=chan[i].std.ex4.val&15; + chan[i].opMaskChanged=true; + } for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; @@ -618,8 +622,9 @@ void DivPlatformYM2610::tick(bool sysTick) { immWrite(chanOffs[i]+ADDR_FREQ,chan[i].freq&0xff); chan[i].freqChanged=false; } - if (chan[i].keyOn) { + if (chan[i].keyOn || chan[i].opMaskChanged) { immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); + chan[i].opMaskChanged=false; chan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2610.h b/src/engine/platform/ym2610.h index 0e363329..4f1a1664 100644 --- a/src/engine/platform/ym2610.h +++ b/src/engine/platform/ym2610.h @@ -73,7 +73,7 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; unsigned char psgMode, autoEnvNum, autoEnvDen; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset, opMaskChanged; int vol, outVol; int sample; unsigned char pan, opMask; @@ -104,6 +104,7 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { inPorta(false), furnacePCM(false), hardReset(false), + opMaskChanged(false), vol(0), outVol(15), sample(-1), diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index f01f39b4..31cd7b3f 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -465,6 +465,10 @@ void DivPlatformYM2610B::tick(bool sysTick) { chan[i].state.ams=chan[i].std.ams.val; rWrite(chanOffs[i]+ADDR_LRAF,(isMuted[i]?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); } + if (chan[i].std.ex4.had && chan[i].active) { + chan[i].opMask=chan[i].std.ex4.val&15; + chan[i].opMaskChanged=true; + } for (int j=0; j<4; j++) { unsigned short baseAddr=chanOffs[i]|opOffs[j]; DivInstrumentFM::Operator& op=chan[i].state.op[j]; @@ -600,8 +604,9 @@ void DivPlatformYM2610B::tick(bool sysTick) { immWrite(chanOffs[i]+ADDR_FREQ,chan[i].freq&0xff); chan[i].freqChanged=false; } - if (chan[i].keyOn) { + if (chan[i].keyOn || chan[i].opMaskChanged) { immWrite(0x28,(chan[i].opMask<<4)|konOffs[i]); + chan[i].opMaskChanged=false; chan[i].keyOn=false; } } diff --git a/src/engine/platform/ym2610b.h b/src/engine/platform/ym2610b.h index 87500e9b..1d5fc1f3 100644 --- a/src/engine/platform/ym2610b.h +++ b/src/engine/platform/ym2610b.h @@ -40,7 +40,7 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { int freq, baseFreq, pitch, pitch2, portaPauseFreq, note, ins; unsigned char psgMode, autoEnvNum, autoEnvDen; signed char konCycles; - bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset; + bool active, insChanged, freqChanged, keyOn, keyOff, portaPause, inPorta, furnacePCM, hardReset, opMaskChanged; int vol, outVol; int sample; unsigned char pan, opMask; @@ -71,6 +71,7 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { inPorta(false), furnacePCM(false), hardReset(false), + opMaskChanged(false), vol(0), outVol(15), sample(-1), From d19c6fc236ffe0e789a990e8dbbced41a4e26289 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 13 Sep 2022 03:29:28 -0500 Subject: [PATCH 564/580] GUI: add operator copy --- src/gui/insEdit.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 1c49bf99..a4b99d14 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1564,20 +1564,32 @@ void FurnaceGUI::drawMacros(std::vector& macros) { opToMove=i; \ ImGui::SetDragDropPayload("FUR_OP",NULL,0,ImGuiCond_Once); \ ImGui::Button(ICON_FA_ARROWS "##SysDrag"); \ + ImGui::SameLine(); \ + if (ImGui::IsKeyDown(ImGuiKey_LeftShift) || ImGui::IsKeyDown(ImGuiKey_RightShift)) { \ + ImGui::Text("(copying)"); \ + } else { \ + ImGui::Text("(swapping)"); \ + } \ ImGui::EndDragDropSource(); \ } else if (ImGui::IsItemHovered()) { \ - ImGui::SetTooltip("(drag to swap operators)"); \ + ImGui::SetTooltip("- drag to swap operator\n- shift-drag to copy operator"); \ } \ if (ImGui::BeginDragDropTarget()) { \ const ImGuiPayload* dragItem=ImGui::AcceptDragDropPayload("FUR_OP"); \ if (dragItem!=NULL) { \ if (dragItem->IsDataType("FUR_OP")) { \ if (opToMove!=i && opToMove>=0) { \ - e->lockEngine([this,ins,i]() { \ - DivInstrumentFM::Operator origOp=ins->fm.op[orderedOps[opToMove]]; \ - ins->fm.op[orderedOps[opToMove]]=ins->fm.op[orderedOps[i]]; \ - ins->fm.op[orderedOps[i]]=origOp; \ - }); \ + if (ImGui::IsKeyDown(ImGuiKey_LeftShift) || ImGui::IsKeyDown(ImGuiKey_RightShift)) { \ + e->lockEngine([this,ins,i]() { \ + ins->fm.op[orderedOps[i]]=ins->fm.op[orderedOps[opToMove]]; \ + }); \ + } else { \ + e->lockEngine([this,ins,i]() { \ + DivInstrumentFM::Operator origOp=ins->fm.op[orderedOps[opToMove]]; \ + ins->fm.op[orderedOps[opToMove]]=ins->fm.op[orderedOps[i]]; \ + ins->fm.op[orderedOps[i]]=origOp; \ + }); \ + } \ PARAMETER; \ } \ opToMove=-1; \ From 146255b08e03250486d165dab911cf24f61fd8f7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 13 Sep 2022 03:29:36 -0500 Subject: [PATCH 565/580] OPZ: SysEx fixes and notes --- src/engine/platform/sound/ymfm/ymfm_opz.cpp | 4 ++++ src/gui/sysEx.cpp | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/sound/ymfm/ymfm_opz.cpp b/src/engine/platform/sound/ymfm/ymfm_opz.cpp index 94123bf6..37c6a5fc 100644 --- a/src/engine/platform/sound/ymfm/ymfm_opz.cpp +++ b/src/engine/platform/sound/ymfm/ymfm_opz.cpp @@ -292,6 +292,10 @@ bool opz_registers::write(uint16_t index, uint8_t data, uint32_t &channel, uint3 // note from tildearrow: // - are you kidding? I have to write to this "load preset" register before keying on? + // another note from tildearrow: + // - see https://github.com/110-kenichi/ymfm/blob/main/src/ymfm_opz.cpp + // - is 0x08 the actual key on register just like OPM? + // - if so then what's bit 5? if ((index & 0xf8) == 0x20 /*&& bitfield(index, 0, 3) == bitfield(m_regdata[0x08], 0, 3)*/) { channel = bitfield(index, 0, 3); diff --git a/src/gui/sysEx.cpp b/src/gui/sysEx.cpp index 5b2b6657..f8849b56 100644 --- a/src/gui/sysEx.cpp +++ b/src/gui/sysEx.cpp @@ -1,6 +1,17 @@ #include "gui.h" #include "../ta-log.h" +// table taken from https://nornand.hatenablog.com/entry/2020/11/21/201911 +// Yamaha why didn't you just use 0-127 as it should be? +const unsigned char tlTable[100]={ + 127, 122, 118, 114, 110, 107, 104, 102, 100, 98, 96, 94, 92, 90, 88, 86, 85, 84, 82, 81, + // desde aquĆ­ la tabla consiste de valores que bajan de 1 en 1 + 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, + 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, + 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, + 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 +}; + bool FurnaceGUI::parseSysEx(unsigned char* data, size_t len) { SafeReader reader(data,len); @@ -137,7 +148,7 @@ bool FurnaceGUI::parseSysEx(unsigned char* data, size_t len) { op.sl=15-reader.readC(); reader.readC(); // LS - ignore op.am=(reader.readC()&0x40)?1:0; - op.tl=3+((99-reader.readC())*124)/99; + op.tl=tlTable[reader.readC()%100]; unsigned char freq=reader.readC(); logV("OP%d freq: %d",i,freq); op.mult=freq>>2; From 216acd5ec5a8130f9d9f04dea5623db3a7720a81 Mon Sep 17 00:00:00 2001 From: freq-mod <32672779+freq-mod@users.noreply.github.com> Date: Tue, 13 Sep 2022 09:21:16 +0000 Subject: [PATCH 566/580] fix n163 doc 256 bytes, not 128. https://www.nesdev.org/wiki/Namco_163_audio also some better wording --- papers/doc/7-systems/n163.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/7-systems/n163.md b/papers/doc/7-systems/n163.md index 3c2f389f..78aca3ae 100644 --- a/papers/doc/7-systems/n163.md +++ b/papers/doc/7-systems/n163.md @@ -1,6 +1,6 @@ # Namco 163 (also called N163, Namco C163, Namco 106 (sic), Namco 160 or Namco 129) -This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 128 byte of internal RAM, and both channel register and wavetables are stored here. Wavetables are variable size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. But waveform RAM area becomes smaller as more channels are activated; as channel registers consumes 8 bytes for each channel. You must avoid conflict with channel register area and waveform for avoid broken channel playback. +This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 256 bytes of internal RAM, and both channel register and wavetables are stored here. Wavetables are variable in size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. But waveform RAM area becomes smaller as more channels are activated; as channel registers consume 8 bytes for each channel. You must avoid conflict with channel register area and waveform to avoid broken channel playback. It outputs only a single channel at clock; so its sound quality gets more crunchy as more channels are activated. From f60e650a91070cdd7914150e7d1888c6bc1707d5 Mon Sep 17 00:00:00 2001 From: freq-mod <32672779+freq-mod@users.noreply.github.com> Date: Tue, 13 Sep 2022 19:18:08 +0000 Subject: [PATCH 567/580] correct doc no brainwashing --- papers/doc/7-systems/n163.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/papers/doc/7-systems/n163.md b/papers/doc/7-systems/n163.md index 78aca3ae..fb9502de 100644 --- a/papers/doc/7-systems/n163.md +++ b/papers/doc/7-systems/n163.md @@ -1,8 +1,8 @@ # Namco 163 (also called N163, Namco C163, Namco 106 (sic), Namco 160 or Namco 129) -This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 256 bytes of internal RAM, and both channel register and wavetables are stored here. Wavetables are variable in size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. But waveform RAM area becomes smaller as more channels are activated; as channel registers consume 8 bytes for each channel. You must avoid conflict with channel register area and waveform to avoid broken channel playback. +This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 256 nibbles (128 bytes) of internal RAM, and both channel registers and wavetables are stored here. Wavetables are variable in size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. At least 64 bytes can dedicated to waves, with more available if not all channels are used - waveform RAM area becomes smaller as more channels are activated, since channel registers consume 8 bytes for each channel. You must avoid conflict with channel register area and waveform to avoid broken channel playback. -It outputs only a single channel at clock; so its sound quality gets more crunchy as more channels are activated. +Namco 163 does not internally mix its channels. Instead, each channel is output one at a time, when multiple channels are used it will cycle between them; so its sound quality gets more crunchy as more channels are activated. Furnace supports loading waveforms into RAM and waveform playback simultaneously, and channel limit is dynamically changeable with effect commands. You must load waveform to RAM first for playback, as its load behavior auto-updates when every waveform changes. From 6a735ee3487068f4fface2ee4b38611f867472a2 Mon Sep 17 00:00:00 2001 From: freq-mod <32672779+freq-mod@users.noreply.github.com> Date: Tue, 13 Sep 2022 19:25:37 +0000 Subject: [PATCH 568/580] no noise for MMC5 --- papers/doc/7-systems/mmc5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/7-systems/mmc5.md b/papers/doc/7-systems/mmc5.md index faf305c6..5949dbb9 100644 --- a/papers/doc/7-systems/mmc5.md +++ b/papers/doc/7-systems/mmc5.md @@ -9,4 +9,4 @@ additionally, it offers an 8-bit DAC which can be used to play samples. only one # effects - `12xx`: set duty cycle or noise mode of channel. - - may be 0-3 for the pulse channels and 0-1 for the noise channel. + - may be 0-3 for the pulse channels From 70ca9033c76bef4d8624f09d11b1cb1f13209782 Mon Sep 17 00:00:00 2001 From: freq-mod <32672779+freq-mod@users.noreply.github.com> Date: Tue, 13 Sep 2022 19:58:43 +0000 Subject: [PATCH 569/580] Add Generic PCM DAC document --- papers/doc/7-systems/dac.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 papers/doc/7-systems/dac.md diff --git a/papers/doc/7-systems/dac.md b/papers/doc/7-systems/dac.md new file mode 100644 index 00000000..856db2cd --- /dev/null +++ b/papers/doc/7-systems/dac.md @@ -0,0 +1,7 @@ +# Generic PCM DAC + +Realtek HD Audio's predecessor. It's just a 1/8/16-bit sample channel, with freely selectable rate and mono/stereo settings. With it, you can emulate PCM DACs found in Williams arcade boards, Sound Blasters, MSX TurboR, Atari STE, NEC PC-9801-86 etc. + +# effects + +none yet. From c99ac948389b92a8414a02c0986541aa9421a25c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 14 Sep 2022 00:19:24 -0500 Subject: [PATCH 570/580] YM2612: fix clicks when muting with CSM on --- src/engine/platform/genesisext.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 3f03e622..d22f71ac 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -25,6 +25,7 @@ #define CHIP_DIVIDER fmDivBase #define IS_REALLY_MUTED(x) (isMuted[x] && (x<5 || !softPCM || (isMuted[5] && isMuted[6]))) +#define IS_EXTCH_MUTED (isOpMuted[0] && isOpMuted[1] && isOpMuted[2] && isOpMuted[3]) int DivPlatformGenesisExt::dispatch(DivCommand c) { if (c.chan<2) { @@ -73,7 +74,7 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) { } if (opChan[ch].insChanged) { // TODO how does this work? rWrite(chanOffs[2]+0xb0,(chan[2].state.alg&7)|(chan[2].state.fb<<3)); - rWrite(chanOffs[2]+0xb4,(opChan[ch].pan<<6)|(chan[2].state.fms&7)|((chan[2].state.ams&3)<<4)); + rWrite(chanOffs[2]+0xb4,(IS_EXTCH_MUTED?0:(opChan[ch].pan<<6))|(chan[2].state.fms&7)|((chan[2].state.ams&3)<<4)); } opChan[ch].insChanged=false; @@ -124,7 +125,7 @@ int DivPlatformGenesisExt::dispatch(DivCommand c) { opChan[i].pan=opChan[ch].pan; } } - rWrite(chanOffs[2]+0xb4,(opChan[ch].pan<<6)|(chan[2].state.fms&7)|((chan[2].state.ams&3)<<4)); + rWrite(chanOffs[2]+0xb4,(IS_EXTCH_MUTED?0:(opChan[ch].pan<<6))|(chan[2].state.fms&7)|((chan[2].state.ams&3)<<4)); break; } case DIV_CMD_PITCH: { @@ -398,6 +399,8 @@ void DivPlatformGenesisExt::muteChannel(int ch, bool mute) { rWrite(baseAddr+0x40,op.tl); immWrite(baseAddr+0x40,op.tl); } + + rWrite(chanOffs[2]+0xb4,(IS_EXTCH_MUTED?0:(opChan[ch-2].pan<<6))|(chan[2].state.fms&7)|((chan[2].state.ams&3)<<4)); } static int opChanOffsL[4]={ @@ -547,7 +550,11 @@ void DivPlatformGenesisExt::forceIns() { rWrite(baseAddr+ADDR_SSG,op.ssgEnv&15); } rWrite(chanOffs[i]+ADDR_FB_ALG,(chan[i].state.alg&7)|(chan[i].state.fb<<3)); - rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + if (i==2) { + rWrite(chanOffs[i]+ADDR_LRAF,(IS_EXTCH_MUTED?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + } else { + rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + } if (chan[i].active) { chan[i].keyOn=true; chan[i].freqChanged=true; From 480243b652d1dea8be853561a9c8b47321240095 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 14 Sep 2022 00:51:45 -0500 Subject: [PATCH 571/580] what? --- src/engine/platform/genesisext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index d22f71ac..a2df33c4 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -551,7 +551,7 @@ void DivPlatformGenesisExt::forceIns() { } rWrite(chanOffs[i]+ADDR_FB_ALG,(chan[i].state.alg&7)|(chan[i].state.fb<<3)); if (i==2) { - rWrite(chanOffs[i]+ADDR_LRAF,(IS_EXTCH_MUTED?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + rWrite(chanOffs[i]+ADDR_LRAF,(IS_EXTCH_MUTED?0:(opChan[0].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); } else { rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); } From 359fda701677d83f1d9c58a96da5e3ca2c34825b Mon Sep 17 00:00:00 2001 From: freq-mod <32672779+freq-mod@users.noreply.github.com> Date: Wed, 14 Sep 2022 11:04:28 +0000 Subject: [PATCH 572/580] addressing feedback --- papers/doc/7-systems/mmc5.md | 2 +- papers/doc/7-systems/n163.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/papers/doc/7-systems/mmc5.md b/papers/doc/7-systems/mmc5.md index 5949dbb9..d483bd57 100644 --- a/papers/doc/7-systems/mmc5.md +++ b/papers/doc/7-systems/mmc5.md @@ -9,4 +9,4 @@ additionally, it offers an 8-bit DAC which can be used to play samples. only one # effects - `12xx`: set duty cycle or noise mode of channel. - - may be 0-3 for the pulse channels + - may be 0-3 for the pulse channels. diff --git a/papers/doc/7-systems/n163.md b/papers/doc/7-systems/n163.md index fb9502de..90f43228 100644 --- a/papers/doc/7-systems/n163.md +++ b/papers/doc/7-systems/n163.md @@ -1,8 +1,8 @@ # Namco 163 (also called N163, Namco C163, Namco 106 (sic), Namco 160 or Namco 129) -This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 256 nibbles (128 bytes) of internal RAM, and both channel registers and wavetables are stored here. Wavetables are variable in size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. At least 64 bytes can dedicated to waves, with more available if not all channels are used - waveform RAM area becomes smaller as more channels are activated, since channel registers consume 8 bytes for each channel. You must avoid conflict with channel register area and waveform to avoid broken channel playback. +This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 256 nibbles (128 bytes) of internal RAM, and both channel registers and wavetables are stored here. Wavetables are variable in size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. At least 128 nibbles (64 bytes) can be dedicated to waves, with more available if not all channels are used - waveform RAM area becomes smaller as more channels are activated, since channel registers consume 8 bytes for each channel. You must avoid conflict with channel register area and waveform to avoid broken channel playback. -Namco 163 does not internally mix its channels. Instead, each channel is output one at a time, when multiple channels are used it will cycle between them; so its sound quality gets more crunchy as more channels are activated. +Namco 163 does not internally mix its channels. Because of that, only one channel can be output at the time, when multiple channels are used it will cycle between them, similarily to OPLL. Therefore, its sound quality gets more crunchy as more channels are activated. Furnace supports loading waveforms into RAM and waveform playback simultaneously, and channel limit is dynamically changeable with effect commands. You must load waveform to RAM first for playback, as its load behavior auto-updates when every waveform changes. From aa38292ca4e91aeedcefdc32701389c99deac521 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 16 Sep 2022 00:04:43 -0500 Subject: [PATCH 573/580] GUI: fix OPLL/OPL op swapping --- src/gui/insEdit.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index a4b99d14..df92dd52 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1579,15 +1579,17 @@ void FurnaceGUI::drawMacros(std::vector& macros) { if (dragItem!=NULL) { \ if (dragItem->IsDataType("FUR_OP")) { \ if (opToMove!=i && opToMove>=0) { \ + int destOp=(opCount==4 && ins->type!=DIV_INS_OPL_DRUMS)?opOrder[i]:i; \ + int sourceOp=(opCount==4 && ins->type!=DIV_INS_OPL_DRUMS)?opOrder[opToMove]:opToMove; \ if (ImGui::IsKeyDown(ImGuiKey_LeftShift) || ImGui::IsKeyDown(ImGuiKey_RightShift)) { \ - e->lockEngine([this,ins,i]() { \ - ins->fm.op[orderedOps[i]]=ins->fm.op[orderedOps[opToMove]]; \ + e->lockEngine([ins,destOp,sourceOp]() { \ + ins->fm.op[destOp]=ins->fm.op[sourceOp]; \ }); \ } else { \ - e->lockEngine([this,ins,i]() { \ - DivInstrumentFM::Operator origOp=ins->fm.op[orderedOps[opToMove]]; \ - ins->fm.op[orderedOps[opToMove]]=ins->fm.op[orderedOps[i]]; \ - ins->fm.op[orderedOps[i]]=origOp; \ + e->lockEngine([ins,destOp,sourceOp]() { \ + DivInstrumentFM::Operator origOp=ins->fm.op[sourceOp]; \ + ins->fm.op[sourceOp]=ins->fm.op[destOp]; \ + ins->fm.op[destOp]=origOp; \ }); \ } \ PARAMETER; \ From 587e066d4300578cc7701bb959399f18670143b2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 16 Sep 2022 00:18:14 -0500 Subject: [PATCH 574/580] GUI: randomize in macros under the right click --- src/gui/gui.cpp | 2 ++ src/gui/gui.h | 1 + src/gui/insEdit.cpp | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4785ee81..5153e1f6 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5216,6 +5216,8 @@ FurnaceGUI::FurnaceGUI(): macroOffY(0), macroScaleX(100.0f), macroScaleY(100.0f), + macroRandMin(0), + macroRandMax(0), macroLoopDragStart(0,0), macroLoopDragAreaSize(0,0), macroLoopDragTarget(NULL), diff --git a/src/gui/gui.h b/src/gui/gui.h index b71fe368..1c8ee713 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1446,6 +1446,7 @@ class FurnaceGUI { FurnaceGUIMacroDesc lastMacroDesc; int macroOffX, macroOffY; float macroScaleX, macroScaleY; + int macroRandMin, macroRandMax; ImVec2 macroLoopDragStart; ImVec2 macroLoopDragAreaSize; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index df92dd52..b5347cbe 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4556,6 +4556,28 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndMenu(); } + if (ImGui::BeginMenu("randomize...")) { + if (macroRandMinlastMacroDesc.max) macroRandMin=lastMacroDesc.max; + if (macroRandMaxlastMacroDesc.max) macroRandMax=lastMacroDesc.max; + ImGui::InputInt("Min",¯oRandMin,1,10); + ImGui::InputInt("Max",¯oRandMax,1,10); + if (ImGui::Button("randomize")) { + for (int i=0; ilen; i++) { + int val=0; + if (macroRandMax<=macroRandMin) { + val=macroRandMin; + } else { + val=macroRandMin+(rand()%(macroRandMax-macroRandMin+1)); + } + lastMacroDesc.macro->val[i]=val; + } + + ImGui::CloseCurrentPopup(); + } + ImGui::EndMenu(); + } ImGui::EndPopup(); } From 6b0aee8cf7cb6f6ea89fd02c42939b80f1fc02f4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 16 Sep 2022 02:00:42 -0500 Subject: [PATCH 575/580] OPL: "fix" stereo in OPL1/2 --- src/engine/platform/opl.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index eb49637e..2dd6d1dc 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -249,7 +249,9 @@ void DivPlatformOPL::acquire_nuked(short* bufL, short* bufR, size_t start, size_ if (os[1]>32767) os[1]=32767; bufL[h]=os[0]; - bufR[h]=os[1]; + if (oplType==3 || oplType==759) { + bufR[h]=os[1]; + } } } @@ -1520,7 +1522,7 @@ void DivPlatformOPL::reset() { } bool DivPlatformOPL::isStereo() { - return true; + return (oplType==3 || oplType==759); } bool DivPlatformOPL::keyOffAffectsArp(int ch) { From 3e311d94a208108b0c07aa8d3406b73b8593e2ac Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 16 Sep 2022 02:04:01 -0500 Subject: [PATCH 576/580] GUI: fix FM wave gen mult 16 --- src/gui/waveEdit.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 006ee430..87f5ad38 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -32,7 +32,7 @@ const char* waveGenBaseShapes[4]={ "Pulse" }; -const float multFactors[16]={ +const float multFactors[17]={ M_PI, 2*M_PI, 4*M_PI, @@ -49,6 +49,7 @@ const float multFactors[16]={ 26*M_PI, 28*M_PI, 30*M_PI, + 32*M_PI, }; void FurnaceGUI::doGenerateWave() { From 6bf6a854efc9d6d702699a48484e689396b3b993 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 17 Sep 2022 22:55:58 -0500 Subject: [PATCH 577/580] GUI: comfortable wave macro height --- src/gui/doAction.cpp | 3 +++ src/gui/gui.cpp | 1 + src/gui/gui.h | 6 ++++++ src/gui/insEdit.cpp | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 92e12a74..468b7e37 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -645,6 +645,7 @@ void FurnaceGUI::doAction(int what) { } else { wantScrollList=true; MARK_MODIFIED; + RESET_WAVE_MACRO_ZOOM; } break; case GUI_ACTION_WAVE_LIST_DUPLICATE: @@ -657,6 +658,7 @@ void FurnaceGUI::doAction(int what) { (*e->song.wave[curWave])=(*e->song.wave[prevWave]); wantScrollList=true; MARK_MODIFIED; + RESET_WAVE_MACRO_ZOOM; } } break; @@ -1326,6 +1328,7 @@ void FurnaceGUI::doAction(int what) { } nextWindow=GUI_WINDOW_WAVE_EDIT; MARK_MODIFIED; + RESET_WAVE_MACRO_ZOOM; } } break; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 5153e1f6..06fc65f0 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3884,6 +3884,7 @@ bool FurnaceGUI::loop() { showError("cannot load wavetable! ("+e->getLastError()+")"); } else { MARK_MODIFIED; + RESET_WAVE_MACRO_ZOOM; } } break; diff --git a/src/gui/gui.h b/src/gui/gui.h index 1c8ee713..6499c4d1 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -47,6 +47,12 @@ #define MARK_MODIFIED modified=true; #define WAKE_UP drawHalt=16; +#define RESET_WAVE_MACRO_ZOOM \ + for (DivInstrument* _wi: e->song.ins) { \ + _wi->std.waveMacro.vZoom=-1; \ + _wi->std.waveMacro.vScroll=-1; \ + } + #define BIND_FOR(x) getKeyName(actionKeys[x],true).c_str() // TODO: diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index b5347cbe..50fd286b 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4227,7 +4227,7 @@ void FurnaceGUI::drawInsEdit() { } const char* waveLabel="Waveform"; - int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_VERA)?3:255; + int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_VERA)?3:(MAX(1,e->song.waveLen-1)); bool bitMode=false; if (ins->type==DIV_INS_C64 || ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_SAA1099) { bitMode=true; From ca224632a1109a960c691b0186be6f4824f7212c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 18 Sep 2022 00:26:51 -0500 Subject: [PATCH 578/580] further polish Namco 163 doc --- papers/doc/7-systems/n163.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/7-systems/n163.md b/papers/doc/7-systems/n163.md index 90f43228..efdc3c50 100644 --- a/papers/doc/7-systems/n163.md +++ b/papers/doc/7-systems/n163.md @@ -2,7 +2,7 @@ This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 256 nibbles (128 bytes) of internal RAM, and both channel registers and wavetables are stored here. Wavetables are variable in size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. At least 128 nibbles (64 bytes) can be dedicated to waves, with more available if not all channels are used - waveform RAM area becomes smaller as more channels are activated, since channel registers consume 8 bytes for each channel. You must avoid conflict with channel register area and waveform to avoid broken channel playback. -Namco 163 does not internally mix its channels. Because of that, only one channel can be output at the time, when multiple channels are used it will cycle between them, similarily to OPLL. Therefore, its sound quality gets more crunchy as more channels are activated. +Namco 163 uses time-division multiplexing for its output. this means that only one channel is output per sample (like OPLL and OPN2). therefore, its sound quality gets worse as more channels are activated. Furnace supports loading waveforms into RAM and waveform playback simultaneously, and channel limit is dynamically changeable with effect commands. You must load waveform to RAM first for playback, as its load behavior auto-updates when every waveform changes. From 75bcad558aa9058fbc0a4a2e27a6d3ed315a7046 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 18 Sep 2022 03:51:10 -0500 Subject: [PATCH 579/580] GUI: channel customization, part 1 --- TODO.md | 4 ++-- src/gui/gui.cpp | 32 ++++++++++++++++++++++++++++++++ src/gui/gui.h | 4 ++++ src/gui/guiConst.cpp | 2 ++ src/gui/pattern.cpp | 39 ++++++++++++++++++++++++++++++++------- src/gui/settings.cpp | 14 ++++++++------ 6 files changed, 80 insertions(+), 15 deletions(-) diff --git a/TODO.md b/TODO.md index 859ad68c..a0da2bbd 100644 --- a/TODO.md +++ b/TODO.md @@ -2,6 +2,6 @@ - stereo separation control for AY - "paste with instrument" -- FM operator muting -- FM operator swap +- channel appearance settings +- auto-detect system - bug fixes diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 06fc65f0..40869c42 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -584,6 +584,38 @@ void FurnaceGUI::updateWindowTitle() { if (sdlWin!=NULL) SDL_SetWindowTitle(sdlWin,title.c_str()); } +ImVec4 FurnaceGUI::channelColor(int ch) { + switch (settings.channelColors) { + case 0: + return uiColors[GUI_COLOR_CHANNEL_BG]; + break; + case 1: + return uiColors[GUI_COLOR_CHANNEL_FM+e->getChannelType(ch)]; + break; + case 2: + return uiColors[GUI_COLOR_INSTR_STD+e->getPreferInsType(ch)]; + break; + } + // invalid + return uiColors[GUI_COLOR_TEXT]; +} + +ImVec4 FurnaceGUI::channelTextColor(int ch) { + switch (settings.channelTextColors) { + case 0: + return uiColors[GUI_COLOR_CHANNEL_FG]; + break; + case 1: + return uiColors[GUI_COLOR_CHANNEL_FM+e->getChannelType(ch)]; + break; + case 2: + return uiColors[GUI_COLOR_INSTR_STD+e->getPreferInsType(ch)]; + break; + } + // invalid + return uiColors[GUI_COLOR_TEXT]; +} + const char* defaultLayout="[Window][DockSpaceViewport_11111111]\n\ Pos=0,24\n\ Size=1280,731\n\ diff --git a/src/gui/gui.h b/src/gui/gui.h index 6499c4d1..b9784f3f 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -161,6 +161,8 @@ enum FurnaceGUIColors { GUI_COLOR_INSTR_OPL_DRUMS, GUI_COLOR_INSTR_UNKNOWN, + GUI_COLOR_CHANNEL_BG, + GUI_COLOR_CHANNEL_FG, GUI_COLOR_CHANNEL_FM, GUI_COLOR_CHANNEL_PULSE, GUI_COLOR_CHANNEL_NOISE, @@ -1604,6 +1606,8 @@ class FurnaceGUI { void updateWindowTitle(); void prepareLayout(); + ImVec4 channelColor(int ch); + ImVec4 channelTextColor(int ch); void readOsc(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index e79de410..7c987358 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -774,6 +774,8 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_INSTR_OPL_DRUMS,"",ImVec4(0.3f,1.0f,0.9f,1.0f)), D(GUI_COLOR_INSTR_UNKNOWN,"",ImVec4(0.3f,0.3f,0.3f,1.0f)), + D(GUI_COLOR_CHANNEL_BG,"",ImVec4(0.4f,0.6f,0.8f,1.0f)), + D(GUI_COLOR_CHANNEL_FG,"",ImVec4(1.0f,1.0f,1.0f,1.0f)), D(GUI_COLOR_CHANNEL_FM,"",ImVec4(0.2f,0.8f,1.0f,1.0f)), D(GUI_COLOR_CHANNEL_PULSE,"",ImVec4(0.4f,1.0f,0.2f,1.0f)), D(GUI_COLOR_CHANNEL_NOISE,"",ImVec4(0.8f,0.8f,0.8f,1.0f)), diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index ec65101d..e6bbc72f 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -468,20 +468,44 @@ void FurnaceGUI::drawPattern() { snprintf(chanID,2048," %s##_CH%d",chName,i); } } + bool muted=e->isChannelMuted(i); - ImVec4 chanHead=muted?uiColors[GUI_COLOR_CHANNEL_MUTED]:uiColors[GUI_COLOR_CHANNEL_FM+e->getChannelType(i)]; + ImVec4 chanHead=muted?uiColors[GUI_COLOR_CHANNEL_MUTED]:channelColor(i); ImVec4 chanHeadActive=chanHead; ImVec4 chanHeadHover=chanHead; + if (e->keyHit[i]) { - keyHit[i]=0.2; - if (!muted) { - int note=e->getChanState(i)->note+60; - if (note>=0 && note<180) { - pianoKeyHit[note]=1.0; + if (settings.channelFeedbackStyle==1) { + keyHit[i]=0.2; + if (!muted) { + int note=e->getChanState(i)->note+60; + if (note>=0 && note<180) { + pianoKeyHit[note]=1.0; + } } } e->keyHit[i]=false; } + if (settings.channelFeedbackStyle==2 && e->isRunning()) { + float amount=((float)(e->getChanState(i)->volume>>8)/(float)e->getMaxVolumeChan(i)); + if (!e->getChanState(i)->keyOn) amount=0.0f; + keyHit[i]=amount*0.2f; + if (!muted) { + int note=e->getChanState(i)->note+60; + if (note>=0 && note<180) { + pianoKeyHit[note]=amount; + } + } + } else if (settings.channelFeedbackStyle==3 && e->isRunning()) { + bool active=e->getChanState(i)->keyOn; + keyHit[i]=active?0.2f:0.0f; + if (!muted) { + int note=e->getChanState(i)->note+60; + if (note>=0 && note<180) { + pianoKeyHit[note]=active?1.0f:0.0f; + } + } + } if (settings.guiColorsBase) { chanHead.x*=1.0-keyHit[i]; chanHead.y*=1.0-keyHit[i]; chanHead.z*=1.0-keyHit[i]; chanHeadActive.x*=0.5; chanHeadActive.y*=0.5; chanHeadActive.z*=0.5; @@ -496,6 +520,7 @@ void FurnaceGUI::drawPattern() { ImGui::PushStyleColor(ImGuiCol_Header,chanHead); ImGui::PushStyleColor(ImGuiCol_HeaderActive,chanHeadActive); ImGui::PushStyleColor(ImGuiCol_HeaderHovered,chanHeadHover); + ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(channelTextColor(i))); ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg,ImGui::GetColorU32(chanHead)); if (muted) ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_CHANNEL_MUTED]); ImGui::Selectable(chanID,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,ImVec2(0.0f,lineHeight+1.0f*dpiScale)); @@ -513,7 +538,7 @@ void FurnaceGUI::drawPattern() { } } if (muted) ImGui::PopStyleColor(); - ImGui::PopStyleColor(3); + ImGui::PopStyleColor(4); if (settings.soloAction!=2) if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { inhibitMenu=true; e->toggleSolo(i); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 54da8e89..1bb94652 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1284,14 +1284,14 @@ void FurnaceGUI::drawSettings() { } ImGui::Text("Channel name colors:"); - if (ImGui::RadioButton("Single##CTC0",settings.channelColors==0)) { - settings.channelColors=0; + if (ImGui::RadioButton("Single##CTC0",settings.channelTextColors==0)) { + settings.channelTextColors=0; } - if (ImGui::RadioButton("Channel type##CTC1",settings.channelColors==1)) { - settings.channelColors=1; + if (ImGui::RadioButton("Channel type##CTC1",settings.channelTextColors==1)) { + settings.channelTextColors=1; } - if (ImGui::RadioButton("Instrument type##CTC2",settings.channelColors==2)) { - settings.channelColors=2; + if (ImGui::RadioButton("Instrument type##CTC2",settings.channelTextColors==2)) { + settings.channelTextColors=2; } ImGui::Text("Channel style:"); @@ -1659,6 +1659,8 @@ void FurnaceGUI::drawSettings() { ImGui::TreePop(); } if (ImGui::TreeNode("Channel")) { + UI_COLOR_CONFIG(GUI_COLOR_CHANNEL_BG,"Single color (background)"); + UI_COLOR_CONFIG(GUI_COLOR_CHANNEL_FG,"Single color (text)"); UI_COLOR_CONFIG(GUI_COLOR_CHANNEL_FM,"FM"); UI_COLOR_CONFIG(GUI_COLOR_CHANNEL_PULSE,"Pulse"); UI_COLOR_CONFIG(GUI_COLOR_CHANNEL_NOISE,"Noise"); From ebb939c1896d4f0c5f075b0e61920d806e1000b9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 18 Sep 2022 04:20:08 -0500 Subject: [PATCH 580/580] GUI: add channel font option --- src/gui/gui.h | 2 ++ src/gui/pattern.cpp | 5 +++++ src/gui/settings.cpp | 12 ++++++++++++ 3 files changed, 19 insertions(+) diff --git a/src/gui/gui.h b/src/gui/gui.h index b9784f3f..09155f9b 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1178,6 +1178,7 @@ class FurnaceGUI { int channelStyle; int channelVolStyle; int channelFeedbackStyle; + int channelFont; int maxRecentFile; unsigned int maxUndoSteps; String mainFontPath; @@ -1299,6 +1300,7 @@ class FurnaceGUI { channelStyle(0), channelVolStyle(0), channelFeedbackStyle(1), + channelFont(1), maxRecentFile(10), maxUndoSteps(100), mainFontPath(""), diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index e6bbc72f..4fbb9997 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -523,10 +523,15 @@ void FurnaceGUI::drawPattern() { ImGui::PushStyleColor(ImGuiCol_Text,ImGui::GetColorU32(channelTextColor(i))); ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg,ImGui::GetColorU32(chanHead)); if (muted) ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_CHANNEL_MUTED]); + if (settings.channelFont==0) ImGui::PushFont(mainFont); + + // TODO: appearance ImGui::Selectable(chanID,true,ImGuiSelectableFlags_NoPadWithHalfSpacing,ImVec2(0.0f,lineHeight+1.0f*dpiScale)); + if (displayTooltip && ImGui::IsItemHovered()) { ImGui::SetTooltip("%s",e->getChannelName(i)); } + if (settings.channelFont==0) ImGui::PopFont(); if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { if (settings.soloAction!=1 && soloTimeout>0 && soloChan==i) { e->toggleSolo(i); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 1bb94652..c771f6a1 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1343,6 +1343,15 @@ void FurnaceGUI::drawSettings() { settings.channelFeedbackStyle=3; } + ImGui::Text("Channel font:"); + + if (ImGui::RadioButton("Regular##CHFont0",settings.channelFont==0)) { + settings.channelFont=0; + } + if (ImGui::RadioButton("Monospace##CHFont1",settings.channelFont==1)) { + settings.channelFont=1; + } + ImGui::Separator(); bool insEditColorizeB=settings.insEditColorize; @@ -2282,6 +2291,7 @@ void FurnaceGUI::syncSettings() { settings.channelStyle=e->getConfInt("channelStyle",0); settings.channelVolStyle=e->getConfInt("channelVolStyle",0); settings.channelFeedbackStyle=e->getConfInt("channelFeedbackStyle",1); + settings.channelFont=e->getConfInt("channelFont",1); settings.maxRecentFile=e->getConfInt("maxRecentFile",10); clampSetting(settings.mainFontSize,2,96); @@ -2381,6 +2391,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.channelStyle,0,5); clampSetting(settings.channelVolStyle,0,3); clampSetting(settings.channelFeedbackStyle,0,3); + clampSetting(settings.channelFont,0,1); clampSetting(settings.maxRecentFile,0,30); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); @@ -2536,6 +2547,7 @@ void FurnaceGUI::commitSettings() { e->setConf("channelStyle",settings.channelStyle); e->setConf("channelVolStyle",settings.channelVolStyle); e->setConf("channelFeedbackStyle",settings.channelFeedbackStyle); + e->setConf("channelFont",settings.channelFont); e->setConf("maxRecentFile",settings.maxRecentFile); // colors

    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 m*w6ki*w6kK@ZSJ-JNn`-7iug3 From 89eace24725ff48639329dcf4be28504b5838e58 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 Aug 2022 13:53:51 -0500 Subject: [PATCH 399/580] GUI: prepare for channel header customization opti ons --- src/gui/gui.h | 10 +++++ src/gui/settings.cpp | 88 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/src/gui/gui.h b/src/gui/gui.h index 2162ae1e..3e340119 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1127,6 +1127,11 @@ class FurnaceGUI { int noThreadedInput; int clampSamples; int saveUnusedPatterns; + int channelColors; + int channelTextColors; + int channelStyle; + int channelVolStyle; + int channelFeedbackStyle; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1239,6 +1244,11 @@ class FurnaceGUI { noThreadedInput(0), clampSamples(0), saveUnusedPatterns(0), + channelColors(1), + channelTextColors(0), + channelStyle(0), + channelVolStyle(0), + channelFeedbackStyle(1), maxUndoSteps(100), mainFontPath(""), patFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index f411dea5..03c32e65 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1222,6 +1222,79 @@ void FurnaceGUI::drawSettings() { ImGui::Separator(); + ImGui::Text("Channel colors:"); + if (ImGui::RadioButton("Single##CHC0",settings.channelColors==0)) { + settings.channelColors=0; + } + if (ImGui::RadioButton("Channel type##CHC1",settings.channelColors==1)) { + settings.channelColors=1; + } + if (ImGui::RadioButton("Instrument type##CHC2",settings.channelColors==2)) { + settings.channelColors=2; + } + + ImGui::Text("Channel name colors:"); + if (ImGui::RadioButton("Single##CTC0",settings.channelColors==0)) { + settings.channelColors=0; + } + if (ImGui::RadioButton("Channel type##CTC1",settings.channelColors==1)) { + settings.channelColors=1; + } + if (ImGui::RadioButton("Instrument type##CTC2",settings.channelColors==2)) { + settings.channelColors=2; + } + + ImGui::Text("Channel style:"); + if (ImGui::RadioButton("Classic##CHS0",settings.channelStyle==0)) { + settings.channelStyle=0; + } + if (ImGui::RadioButton("Line##CHS1",settings.channelStyle==1)) { + settings.channelStyle=1; + } + if (ImGui::RadioButton("Round##CHS2",settings.channelStyle==2)) { + settings.channelStyle=2; + } + if (ImGui::RadioButton("Split button##CHS3",settings.channelStyle==3)) { + settings.channelStyle=3; + } + if (ImGui::RadioButton("Square border##CH42",settings.channelStyle==4)) { + settings.channelStyle=4; + } + if (ImGui::RadioButton("Round border##CHS5",settings.channelStyle==5)) { + settings.channelStyle=5; + } + + ImGui::Text("Channel volume bar:"); + if (ImGui::RadioButton("None##CHV0",settings.channelVolStyle==0)) { + settings.channelVolStyle=0; + } + if (ImGui::RadioButton("Simple##CHV1",settings.channelVolStyle==1)) { + settings.channelVolStyle=1; + } + if (ImGui::RadioButton("Stereo##CHV2",settings.channelVolStyle==2)) { + settings.channelVolStyle=2; + } + if (ImGui::RadioButton("Real##CHV3",settings.channelVolStyle==3)) { + settings.channelVolStyle=3; + } + + ImGui::Text("Channel feedback style:"); + + if (ImGui::RadioButton("Off##CHF0",settings.channelFeedbackStyle==0)) { + settings.channelFeedbackStyle=0; + } + if (ImGui::RadioButton("Note##CHF1",settings.channelFeedbackStyle==1)) { + settings.channelFeedbackStyle=1; + } + if (ImGui::RadioButton("Volume##CHF2",settings.channelFeedbackStyle==2)) { + settings.channelFeedbackStyle=2; + } + if (ImGui::RadioButton("Active##CHF3",settings.channelFeedbackStyle==3)) { + settings.channelFeedbackStyle=3; + } + + ImGui::Separator(); + bool insEditColorizeB=settings.insEditColorize; if (ImGui::Checkbox("Colorize instrument editor using instrument type",&insEditColorizeB)) { settings.insEditColorize=insEditColorizeB; @@ -2148,6 +2221,11 @@ void FurnaceGUI::syncSettings() { settings.emptyLabel=e->getConfString("emptyLabel","..."); settings.emptyLabel2=e->getConfString("emptyLabel2",".."); settings.saveUnusedPatterns=e->getConfInt("saveUnusedPatterns",0); + settings.channelColors=e->getConfInt("channelColors",1); + settings.channelTextColors=e->getConfInt("channelTextColors",0); + settings.channelStyle=e->getConfInt("channelStyle",0); + settings.channelVolStyle=e->getConfInt("channelVolStyle",0); + settings.channelFeedbackStyle=e->getConfInt("channelFeedbackStyle",1); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2237,6 +2315,11 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.noThreadedInput,0,1); clampSetting(settings.clampSamples,0,1); clampSetting(settings.saveUnusedPatterns,0,1); + clampSetting(settings.channelColors,0,2); + clampSetting(settings.channelTextColors,0,2); + clampSetting(settings.channelStyle,0,5); + clampSetting(settings.channelVolStyle,0,3); + clampSetting(settings.channelFeedbackStyle,0,3); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { @@ -2382,6 +2465,11 @@ void FurnaceGUI::commitSettings() { e->setConf("emptyLabel",settings.emptyLabel); e->setConf("emptyLabel2",settings.emptyLabel2); e->setConf("saveUnusedPatterns",settings.saveUnusedPatterns); + e->setConf("channelColors",settings.channelColors); + e->setConf("channelTextColors",settings.channelTextColors); + e->setConf("channelStyle",settings.channelStyle); + e->setConf("channelVolStyle",settings.channelVolStyle); + e->setConf("channelFeedbackStyle",settings.channelFeedbackStyle); // colors for (int i=0; i Date: Wed, 17 Aug 2022 18:29:40 -0500 Subject: [PATCH 400/580] GUI: finally re-organize the GB env UI --- src/gui/insEdit.cpp | 68 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 16 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index d4e76611..64e09890 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2969,24 +2969,60 @@ void FurnaceGUI::drawInsEdit() { P(ImGui::Checkbox("Initialize envelope on every note",&ins->gb.alwaysInit)); ImGui::BeginDisabled(ins->gb.softEnv); - P(CWSliderScalar("Volume",ImGuiDataType_U8,&ins->gb.envVol,&_ZERO,&_FIFTEEN)); rightClickable - P(CWSliderScalar("Envelope Length",ImGuiDataType_U8,&ins->gb.envLen,&_ZERO,&_SEVEN)); rightClickable - P(CWSliderScalar("Sound Length",ImGuiDataType_U8,&ins->gb.soundLen,&_ZERO,&_SIXTY_FOUR,ins->gb.soundLen>63?"Infinity":"%d")); rightClickable - ImGui::Text("Envelope Direction:"); + if (ImGui::BeginTable("GBParams",2)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch,0.6f); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.4f); - bool goesUp=ins->gb.envDir; - ImGui::SameLine(); - if (ImGui::RadioButton("Up",goesUp)) { PARAMETER - goesUp=true; - ins->gb.envDir=goesUp; - } - ImGui::SameLine(); - if (ImGui::RadioButton("Down",!goesUp)) { PARAMETER - goesUp=false; - ins->gb.envDir=goesUp; - } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::BeginTable("GBParamsI",2)) { + ImGui::TableSetupColumn("ci0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("ci1",ImGuiTableColumnFlags_WidthStretch); - drawGBEnv(ins->gb.envVol,ins->gb.envLen,ins->gb.soundLen,ins->gb.envDir,ImVec2(ImGui::GetContentRegionAvail().x,100.0f*dpiScale)); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Volume"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##GBVolume",ImGuiDataType_U8,&ins->gb.envVol,&_ZERO,&_FIFTEEN)); rightClickable + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Length"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##GBEnvLen",ImGuiDataType_U8,&ins->gb.envLen,&_ZERO,&_SEVEN)); rightClickable + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Sound Length"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + P(CWSliderScalar("##GBSoundLen",ImGuiDataType_U8,&ins->gb.soundLen,&_ZERO,&_SIXTY_FOUR,ins->gb.soundLen>63?"Infinity":"%d")); rightClickable + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Direction"); + ImGui::TableNextColumn(); + bool goesUp=ins->gb.envDir; + if (ImGui::RadioButton("Up",goesUp)) { PARAMETER + goesUp=true; + ins->gb.envDir=goesUp; + } + ImGui::SameLine(); + if (ImGui::RadioButton("Down",!goesUp)) { PARAMETER + goesUp=false; + ins->gb.envDir=goesUp; + } + + ImGui::EndTable(); + } + + ImGui::TableNextColumn(); + drawGBEnv(ins->gb.envVol,ins->gb.envLen,ins->gb.soundLen,ins->gb.envDir,ImVec2(ImGui::GetContentRegionAvail().x,100.0f*dpiScale)); + + ImGui::EndTable(); + } if (ImGui::BeginChild("HWSeq",ImGui::GetContentRegionAvail(),true,ImGuiWindowFlags_MenuBar)) { ImGui::BeginMenuBar(); From 4e7eb728db900693cbc545049af537e7420e5290 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 17 Aug 2022 18:37:16 -0500 Subject: [PATCH 401/580] GUI: fix moving GB HW seq step down --- src/gui/insEdit.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 64e09890..a306e366 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3178,13 +3178,13 @@ void FurnaceGUI::drawInsEdit() { if (ImGui::Button(ICON_FA_CHEVRON_DOWN "##HWCmdDown")) { if (igb.hwSeqLen-1) { e->lockEngine([ins,i]() { - ins->gb.hwSeq[i-1].cmd^=ins->gb.hwSeq[i].cmd; - ins->gb.hwSeq[i].cmd^=ins->gb.hwSeq[i-1].cmd; - ins->gb.hwSeq[i-1].cmd^=ins->gb.hwSeq[i].cmd; + ins->gb.hwSeq[i+1].cmd^=ins->gb.hwSeq[i].cmd; + ins->gb.hwSeq[i].cmd^=ins->gb.hwSeq[i+1].cmd; + ins->gb.hwSeq[i+1].cmd^=ins->gb.hwSeq[i].cmd; - ins->gb.hwSeq[i-1].data^=ins->gb.hwSeq[i].data; - ins->gb.hwSeq[i].data^=ins->gb.hwSeq[i-1].data; - ins->gb.hwSeq[i-1].data^=ins->gb.hwSeq[i].data; + ins->gb.hwSeq[i+1].data^=ins->gb.hwSeq[i].data; + ins->gb.hwSeq[i].data^=ins->gb.hwSeq[i+1].data; + ins->gb.hwSeq[i+1].data^=ins->gb.hwSeq[i].data; }); } MARK_MODIFIED; From 7c42453422c101bd2704bef0d697bbc0bbdaf632 Mon Sep 17 00:00:00 2001 From: Natt Akuma <77432377+akumanatt@users.noreply.github.com> Date: Thu, 18 Aug 2022 13:26:22 +0700 Subject: [PATCH 402/580] Rewrite per-system effect handling (#548) * Rewrite per-system effect handling * fix build * C64: fix fine cutoff regression * fix some more crashes Co-authored-by: tildearrow --- src/engine/dispatch.h | 7 - src/engine/engine.cpp | 11 +- src/engine/engine.h | 37 +- src/engine/platform/abstract.cpp | 4 - src/engine/platform/amiga.cpp | 15 - src/engine/platform/amiga.h | 1 - src/engine/platform/arcade.cpp | 105 --- src/engine/platform/arcade.h | 1 - src/engine/platform/ay.cpp | 36 - src/engine/platform/ay.h | 1 - src/engine/platform/ay8930.cpp | 48 -- src/engine/platform/ay8930.h | 1 - src/engine/platform/bubsyswsg.cpp | 9 - src/engine/platform/bubsyswsg.h | 1 - src/engine/platform/c64.cpp | 46 - src/engine/platform/c64.h | 1 - src/engine/platform/fds.cpp | 24 - src/engine/platform/fds.h | 1 - src/engine/platform/gb.cpp | 21 - src/engine/platform/gb.h | 1 - src/engine/platform/genesis.cpp | 102 --- src/engine/platform/genesis.h | 1 - src/engine/platform/lynx.cpp | 13 - src/engine/platform/lynx.h | 1 - src/engine/platform/mmc5.cpp | 9 - src/engine/platform/mmc5.h | 1 - src/engine/platform/msm6258.cpp | 12 - src/engine/platform/msm6258.h | 1 - src/engine/platform/msm6295.cpp | 9 - src/engine/platform/msm6295.h | 1 - src/engine/platform/n163.cpp | 45 - src/engine/platform/n163.h | 1 - src/engine/platform/namcowsg.cpp | 12 - src/engine/platform/namcowsg.h | 1 - src/engine/platform/nes.cpp | 21 - src/engine/platform/nes.h | 1 - src/engine/platform/opl.cpp | 92 -- src/engine/platform/opl.h | 1 - src/engine/platform/opll.cpp | 62 -- src/engine/platform/opll.h | 1 - src/engine/platform/pce.cpp | 21 - src/engine/platform/pce.h | 1 - src/engine/platform/pcspkr.cpp | 4 - src/engine/platform/pcspkr.h | 1 - src/engine/platform/pet.cpp | 9 - src/engine/platform/pet.h | 1 - src/engine/platform/qsound.cpp | 18 - src/engine/platform/qsound.h | 1 - src/engine/platform/rf5c68.cpp | 4 - src/engine/platform/rf5c68.h | 1 - src/engine/platform/saa.cpp | 15 - src/engine/platform/saa.h | 1 - src/engine/platform/scc.cpp | 9 - src/engine/platform/scc.h | 1 - src/engine/platform/segapcm.cpp | 9 - src/engine/platform/segapcm.h | 1 - src/engine/platform/sms.cpp | 9 - src/engine/platform/sms.h | 1 - src/engine/platform/su.cpp | 66 -- src/engine/platform/su.h | 1 - src/engine/platform/swan.cpp | 21 - src/engine/platform/swan.h | 1 - src/engine/platform/tia.cpp | 9 - src/engine/platform/tia.h | 1 - src/engine/platform/tx81z.cpp | 133 --- src/engine/platform/tx81z.h | 1 - src/engine/platform/vera.cpp | 12 - src/engine/platform/vera.h | 1 - src/engine/platform/vic20.cpp | 9 - src/engine/platform/vic20.h | 1 - src/engine/platform/vrc6.cpp | 12 - src/engine/platform/vrc6.h | 1 - src/engine/platform/x1_010.cpp | 33 - src/engine/platform/x1_010.h | 1 - src/engine/platform/ym2203.cpp | 117 --- src/engine/platform/ym2203.h | 1 - src/engine/platform/ym2608.cpp | 120 --- src/engine/platform/ym2608.h | 1 - src/engine/platform/ym2610.cpp | 120 --- src/engine/platform/ym2610.h | 1 - src/engine/platform/ym2610b.cpp | 120 --- src/engine/platform/ym2610b.h | 1 - src/engine/platform/ymz280b.cpp | 4 - src/engine/platform/ymz280b.h | 1 - src/engine/platform/zxbeeper.cpp | 12 - src/engine/platform/zxbeeper.h | 1 - src/engine/playback.cpp | 37 +- src/engine/sysDef.cpp | 1344 +++++++++-------------------- 88 files changed, 477 insertions(+), 2571 deletions(-) diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index fb9be580..2fde9add 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -417,13 +417,6 @@ class DivDispatch { */ virtual bool getWantPreNote(); - /** - * get a description of a dispatch-specific effect. - * @param effect the effect. - * @return the description, or NULL if effect is invalid. - */ - virtual const char* getEffectName(unsigned char effect); - /** * set the chip flags. * @param flags the flags. see song.h for possible values. diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 68c49221..5fe2db69 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -124,8 +124,15 @@ const char* DivEngine::getEffectDesc(unsigned char effect, int chan, bool notNul if ((effect&0xf0)==0x90) { return "9xxx: Set sample offset*256"; } else if (chan>=0 && changetEffectName(effect); - if (ret!=NULL) return ret; + DivSysDef* sysDef=sysDefs[sysOfChan[chan]]; + auto iter=sysDef->effectHandlers.find(effect); + if (iter!=sysDef->effectHandlers.end()) { + return iter->second.description; + } + iter=sysDef->postEffectHandlers.find(effect); + if (iter!=sysDef->postEffectHandlers.end()) { + return iter->second.description; + } } break; } diff --git a/src/engine/engine.h b/src/engine/engine.h index 3a73d7d2..191414f5 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #define addWarning(x) \ @@ -194,7 +195,29 @@ struct DivDispatchContainer { dcOffCompensation(false) {} }; -typedef std::function EffectProcess; +typedef int EffectValConversion(unsigned char,unsigned char); + +struct EffectHandler { + DivDispatchCmds dispatchCmd; + const char* description; + EffectValConversion* val; + EffectValConversion* val2; + EffectHandler( + DivDispatchCmds dispatchCmd_, + const char* description_, + EffectValConversion val_=NULL, + EffectValConversion val2_=NULL + ): + dispatchCmd(dispatchCmd_), + description(description_), + val(val_), + val2(val2_) {} +}; + +struct DivDoNotHandleEffect { +}; + +typedef std::unordered_map EffectHandlerMap; struct DivSysDef { const char* name; @@ -211,8 +234,8 @@ struct DivSysDef { // 0: primary // 1: alternate (usually PCM) DivInstrumentType chanInsType[DIV_MAX_CHANS][2]; - EffectProcess effectFunc; - EffectProcess postEffectFunc; + const EffectHandlerMap effectHandlers; + const EffectHandlerMap postEffectHandlers; DivSysDef( const char* sysName, const char* sysNameJ, unsigned char fileID, unsigned char fileID_DMF, int chans, bool isFMChip, bool isSTDChip, unsigned int vgmVer, bool compound, const char* desc, @@ -221,8 +244,8 @@ struct DivSysDef { std::initializer_list chTypes, std::initializer_list chInsType1, std::initializer_list chInsType2={}, - EffectProcess fxHandler=[](int,unsigned char,unsigned char) -> bool {return false;}, - EffectProcess postFxHandler=[](int,unsigned char,unsigned char) -> bool {return false;}): + const EffectHandlerMap fxHandlers_={}, + const EffectHandlerMap postFxHandlers_={}): name(sysName), nameJ(sysNameJ), description(desc), @@ -233,8 +256,8 @@ struct DivSysDef { isSTD(isSTDChip), isCompound(compound), vgmVersion(vgmVer), - effectFunc(fxHandler), - postEffectFunc(postFxHandler) { + effectHandlers(fxHandlers_), + postEffectHandlers(postFxHandlers_) { memset(chanNames,0,DIV_MAX_CHANS*sizeof(void*)); memset(chanShortNames,0,DIV_MAX_CHANS*sizeof(void*)); memset(chanTypes,0,DIV_MAX_CHANS*sizeof(int)); diff --git a/src/engine/platform/abstract.cpp b/src/engine/platform/abstract.cpp index 5b732e7e..358e54aa 100644 --- a/src/engine/platform/abstract.cpp +++ b/src/engine/platform/abstract.cpp @@ -94,10 +94,6 @@ bool DivDispatch::getWantPreNote() { return false; } -const char* DivDispatch::getEffectName(unsigned char effect) { - return NULL; -} - void DivDispatch::setFlags(unsigned int flags) { } diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index 1b007530..57c0e3e2 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -64,21 +64,6 @@ const char** DivPlatformAmiga::getRegisterSheet() { return regCheatSheetAmiga; } -const char* DivPlatformAmiga::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Toggle filter (0 disables; 1 enables)"; - break; - case 0x11: - return "11xx: Toggle AM with next channel"; - break; - case 0x12: - return "12xx: Toggle period modulation with next channel"; - break; - } - return NULL; -} - #define writeAudDat(x) \ chan[i].audDat=x; \ if (i<3 && chan[i].useV) { \ diff --git a/src/engine/platform/amiga.h b/src/engine/platform/amiga.h index e7372e63..59617ec3 100644 --- a/src/engine/platform/amiga.h +++ b/src/engine/platform/amiga.h @@ -105,7 +105,6 @@ class DivPlatformAmiga: public DivDispatch { void notifyWaveChange(int wave); void notifyInsDeletion(void* ins); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); }; diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 41042cd5..1f51dc9b 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -50,111 +50,6 @@ const char** DivPlatformArcade::getRegisterSheet() { return regCheatSheetOPM; } -const char* DivPlatformArcade::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Set noise frequency (xx: value; 0 disables noise)"; - break; - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 7F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 7F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 7F lowest)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 7F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x17: - return "17xx: Set LFO speed"; - break; - case 0x18: - return "18xx: Set LFO waveform (0 saw, 1 square, 2 triangle, 3 noise)"; - break; - case 0x19: - return "19xx: Set attack of all operators (0 to 1F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to 1F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to 1F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to 1F)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to 1F)"; - break; - case 0x1e: - return "1Exx: Set AM depth (0 to 7F)"; - break; - case 0x1f: - return "1Fxx: Set PM depth (0 to 7F)"; - break; - case 0x30: - return "30xx: Toggle hard envelope reset on new notes"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)"; - break; - case 0x54: - return "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)"; - break; - case 0x55: - return "55xy: Set detune 2 (x: operator from 1 to 4 (0 for all ops); y: detune from 0 to 3)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to 1F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to 1F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to 1F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to 1F)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to 1F)"; - break; - case 0x5b: - return "5Bxx: Set decay 2 of all operators (0 to 1F)"; - break; - case 0x5c: - return "5Cxx: Set decay 2 of operator 1 (0 to 1F)"; - break; - case 0x5d: - return "5Dxx: Set decay 2 of operator 2 (0 to 1F)"; - break; - case 0x5e: - return "5Exx: Set decay 2 of operator 3 (0 to 1F)"; - break; - case 0x5f: - return "5Fxx: Set decay 2 of operator 4 (0 to 1F)"; - break; - } - return NULL; -} - void DivPlatformArcade::acquire_nuked(short* bufL, short* bufR, size_t start, size_t len) { static int o[2]; diff --git a/src/engine/platform/arcade.h b/src/engine/platform/arcade.h index daa88362..93aa490d 100644 --- a/src/engine/platform/arcade.h +++ b/src/engine/platform/arcade.h @@ -115,7 +115,6 @@ class DivPlatformArcade: public DivPlatformOPM { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformArcade(); diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 8df5bd4c..1b24ac73 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -73,42 +73,6 @@ const char** DivPlatformAY8910::getRegisterSheet() { return intellivision?regCheatSheetAY8914:regCheatSheetAY; } -const char* DivPlatformAY8910::getEffectName(unsigned char effect) { - switch (effect) { - case 0x20: - return "20xx: Set channel mode (bit 0: square; bit 1: noise; bit 2: envelope)"; - break; - case 0x21: - return "21xx: Set noise frequency (0 to 1F)"; - break; - case 0x22: - return "22xy: Set envelope mode (x: shape, y: enable for this channel)"; - break; - case 0x23: - return "23xx: Set envelope period low byte"; - break; - case 0x24: - return "24xx: Set envelope period high byte"; - break; - case 0x25: - return "25xx: Envelope slide up"; - break; - case 0x26: - return "26xx: Envelope slide down"; - break; - case 0x29: - return "29xy: Set auto-envelope (x: numerator; y: denominator)"; - break; - case 0x2e: - return "2Exx: Write to I/O port A"; - break; - case 0x2f: - return "2Fxx: Write to I/O port B"; - break; - } - return NULL; -} - void DivPlatformAY8910::acquire(short* bufL, short* bufR, size_t start, size_t len) { if (ayBufLen& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformAY8910(bool useExtMode=false, unsigned int eclk=COLOR_NTSC, unsigned char ediv=8): diff --git a/src/engine/platform/ay8930.cpp b/src/engine/platform/ay8930.cpp index 581ebb9e..0fc9091f 100644 --- a/src/engine/platform/ay8930.cpp +++ b/src/engine/platform/ay8930.cpp @@ -77,54 +77,6 @@ const char** DivPlatformAY8930::getRegisterSheet() { return regCheatSheetAY8930; } -const char* DivPlatformAY8930::getEffectName(unsigned char effect) { - switch (effect) { - case 0x12: - return "12xx: Set duty cycle (0 to 8)"; - break; - case 0x20: - return "20xx: Set channel mode (bit 0: square; bit 1: noise; bit 2: envelope)"; - break; - case 0x21: - return "21xx: Set noise frequency (0 to 1F)"; - break; - case 0x22: - return "22xy: Set envelope mode (x: shape, y: enable for this channel)"; - break; - case 0x23: - return "23xx: Set envelope period low byte"; - break; - case 0x24: - return "24xx: Set envelope period high byte"; - break; - case 0x25: - return "25xx: Envelope slide up"; - break; - case 0x26: - return "26xx: Envelope slide down"; - break; - case 0x27: - return "27xx: Set noise AND mask"; - break; - case 0x28: - return "28xx: Set noise OR mask"; - break; - case 0x29: - return "29xy: Set auto-envelope (x: numerator; y: denominator)"; - break; - case 0x2d: - return "2Dxx: NOT TO BE EMPLOYED BY THE COMPOSER"; - break; - case 0x2e: - return "2Exx: Write to I/O port A"; - break; - case 0x2f: - return "2Fxx: Write to I/O port B"; - break; - } - return NULL; -} - void DivPlatformAY8930::acquire(short* bufL, short* bufR, size_t start, size_t len) { if (ayBufLen& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); }; diff --git a/src/engine/platform/bubsyswsg.cpp b/src/engine/platform/bubsyswsg.cpp index 5fe4462f..fd00ebee 100644 --- a/src/engine/platform/bubsyswsg.cpp +++ b/src/engine/platform/bubsyswsg.cpp @@ -39,15 +39,6 @@ const char** DivPlatformBubSysWSG::getRegisterSheet() { return regCheatSheetBubSysWSG; } -const char* DivPlatformBubSysWSG::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - } - return NULL; -} - void DivPlatformBubSysWSG::acquire(short* bufL, short* bufR, size_t start, size_t len) { int chanOut=0; for (size_t h=start; h& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformBubSysWSG(); diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index 9049ffec..dc0cd8a2 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -62,52 +62,6 @@ const char** DivPlatformC64::getRegisterSheet() { return regCheatSheetSID; } -const char* DivPlatformC64::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Set waveform (bit 0: triangle; bit 1: saw; bit 2: pulse; bit 3: noise)"; - break; - case 0x11: - return "11xx: Set coarse cutoff (not recommended; use 4xxx instead)"; - break; - case 0x12: - return "12xx: Set coarse pulse width (not recommended; use 3xxx instead)"; - break; - case 0x13: - return "13xx: Set resonance (0 to F)"; - break; - case 0x14: - return "14xx: Set filter mode (bit 0: low pass; bit 1: band pass; bit 2: high pass)"; - break; - case 0x15: - return "15xx: Set envelope reset time"; - break; - case 0x1a: - return "1Axx: Disable envelope reset for this channel (1 disables; 0 enables)"; - break; - case 0x1b: - return "1Bxy: Reset cutoff (x: on new note; y: now)"; - break; - case 0x1c: - return "1Cxy: Reset pulse width (x: on new note; y: now)"; - break; - case 0x1e: - return "1Exy: Change additional parameters"; - break; - case 0x30: case 0x31: case 0x32: case 0x33: - case 0x34: case 0x35: case 0x36: case 0x37: - case 0x38: case 0x39: case 0x3a: case 0x3b: - case 0x3c: case 0x3d: case 0x3e: case 0x3f: - return "3xxx: Set pulse width (0 to FFF)"; - break; - case 0x40: case 0x41: case 0x42: case 0x43: - case 0x44: case 0x45: case 0x46: case 0x47: - return "4xxx: Set cutoff (0 to 7FF)"; - break; - } - return NULL; -} - void DivPlatformC64::acquire(short* bufL, short* bufR, size_t start, size_t len) { int dcOff=sid.get_dc(0); for (size_t i=start; i& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void setChipModel(bool is6581); void quit(); diff --git a/src/engine/platform/fds.cpp b/src/engine/platform/fds.cpp index f9fc5b50..fc4d3e77 100644 --- a/src/engine/platform/fds.cpp +++ b/src/engine/platform/fds.cpp @@ -55,30 +55,6 @@ const char** DivPlatformFDS::getRegisterSheet() { return regCheatSheetFDS; } -const char* DivPlatformFDS::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - case 0x11: - return "11xx: Set modulation depth"; - break; - case 0x12: - return "12xy: Set modulation speed high byte (x: enable; y: value)"; - break; - case 0x13: - return "13xx: Set modulation speed low byte"; - break; - case 0x14: - return "14xx: Set modulator position"; - break; - case 0x15: - return "15xx: Set modulator table to waveform"; - break; - } - return NULL; -} - void DivPlatformFDS::acquire_puNES(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; i& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformFDS(); diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index c29329b9..ab603266 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -61,27 +61,6 @@ const char** DivPlatformGB::getRegisterSheet() { return regCheatSheetGB; } -const char* DivPlatformGB::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - case 0x11: - return "11xx: Set noise length (0: long; 1: short)"; - break; - case 0x12: - return "12xx: Set duty cycle (0 to 3)"; - break; - case 0x13: - return "13xy: Setup sweep (x: time; y: shift)"; - break; - case 0x14: - return "14xx: Set sweep direction (0: up; 1: down)"; - break; - } - return NULL; -} - void DivPlatformGB::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; i& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index b6dbb8d1..0260ea06 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -27,108 +27,6 @@ #define IS_REALLY_MUTED(x) (isMuted[x] && (x<5 || !softPCM || (isMuted[5] && isMuted[6]))) -const char* DivPlatformGenesis::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xy: Setup LFO (x: enable; y: speed)"; - break; - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 7F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 7F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 7F lowest)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 7F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x17: - return "17xx: Enable channel 6 DAC"; - break; - case 0x18: - return "18xx: Toggle extended channel 3 mode"; - break; - case 0x19: - return "19xx: Set attack of all operators (0 to 1F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to 1F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to 1F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to 1F)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to 1F)"; - break; - case 0x30: - return "30xx: Toggle hard envelope reset on new notes"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)"; - break; - case 0x54: - return "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)"; - break; - case 0x55: - return "55xy: Set SSG envelope (x: operator from 1 to 4 (0 for all ops); y: 0-7 on, 8 off)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to 1F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to 1F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to 1F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to 1F)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to 1F)"; - break; - case 0x5b: - return "5Bxx: Set decay 2 of all operators (0 to 1F)"; - break; - case 0x5c: - return "5Cxx: Set decay 2 of operator 1 (0 to 1F)"; - break; - case 0x5d: - return "5Dxx: Set decay 2 of operator 2 (0 to 1F)"; - break; - case 0x5e: - return "5Exx: Set decay 2 of operator 3 (0 to 1F)"; - break; - case 0x5f: - return "5Fxx: Set decay 2 of operator 4 (0 to 1F)"; - break; - case 0xdf: - return "DFxx: Set sample playback direction (0: normal; 1: reverse)"; - break; - } - return NULL; -} - void DivPlatformGenesis::processDAC() { if (softPCM) { softPCMTimer+=chipClock/576; diff --git a/src/engine/platform/genesis.h b/src/engine/platform/genesis.h index c46a992d..5e61fe67 100644 --- a/src/engine/platform/genesis.h +++ b/src/engine/platform/genesis.h @@ -144,7 +144,6 @@ class DivPlatformGenesis: public DivPlatformOPN { int getPortaFloor(int ch); void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformGenesis(): diff --git a/src/engine/platform/lynx.cpp b/src/engine/platform/lynx.cpp index 7c349e5a..ead20590 100644 --- a/src/engine/platform/lynx.cpp +++ b/src/engine/platform/lynx.cpp @@ -129,19 +129,6 @@ const char** DivPlatformLynx::getRegisterSheet() { return regCheatSheetLynx; } -const char* DivPlatformLynx::getEffectName(unsigned char effect) { - switch (effect) - { - case 0x30: case 0x31: case 0x32: case 0x33: - case 0x34: case 0x35: case 0x36: case 0x37: - case 0x38: case 0x39: case 0x3a: case 0x3b: - case 0x3c: case 0x3d: case 0x3e: case 0x3f: - return "3xxx: Load LFSR (0 to FFF)"; - break; - } - return NULL; -} - void DivPlatformLynx::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; h& wlist); const char** getRegisterSheet(); - const char* getEffectName( unsigned char effect ); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformLynx(); diff --git a/src/engine/platform/mmc5.cpp b/src/engine/platform/mmc5.cpp index 2154e855..b5bb5a9e 100644 --- a/src/engine/platform/mmc5.cpp +++ b/src/engine/platform/mmc5.cpp @@ -43,15 +43,6 @@ const char** DivPlatformMMC5::getRegisterSheet() { return regCheatSheetMMC5; } -const char* DivPlatformMMC5::getEffectName(unsigned char effect) { - switch (effect) { - case 0x12: - return "12xx: Set duty cycle/noise mode (pulse: 0 to 3; noise: 0 or 1)"; - break; - } - return NULL; -} - void DivPlatformMMC5::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; i& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformMMC5(); diff --git a/src/engine/platform/msm6258.cpp b/src/engine/platform/msm6258.cpp index dc81950e..0ba3ae0b 100644 --- a/src/engine/platform/msm6258.cpp +++ b/src/engine/platform/msm6258.cpp @@ -30,18 +30,6 @@ const char** DivPlatformMSM6258::getRegisterSheet() { return NULL; } -const char* DivPlatformMSM6258::getEffectName(unsigned char effect) { - switch (effect) { - case 0x20: - return "20xx: Set frequency divider (0-2)"; - break; - case 0x21: - return "21xx: Select clock rate (0: full; 1: half)"; - break; - } - return NULL; -} - void DivPlatformMSM6258::acquire(short* bufL, short* bufR, size_t start, size_t len) { short* outs[2]={ &msmOut, diff --git a/src/engine/platform/msm6258.h b/src/engine/platform/msm6258.h index cd975c8f..f6a351b5 100644 --- a/src/engine/platform/msm6258.h +++ b/src/engine/platform/msm6258.h @@ -109,7 +109,6 @@ class DivPlatformMSM6258: public DivDispatch { void poke(std::vector& wlist); void setFlags(unsigned int flags); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index); size_t getSampleMemCapacity(int index); size_t getSampleMemUsage(int index); diff --git a/src/engine/platform/msm6295.cpp b/src/engine/platform/msm6295.cpp index fc5f9ea3..0a76a2c9 100644 --- a/src/engine/platform/msm6295.cpp +++ b/src/engine/platform/msm6295.cpp @@ -30,15 +30,6 @@ const char** DivPlatformMSM6295::getRegisterSheet() { return NULL; } -const char* DivPlatformMSM6295::getEffectName(unsigned char effect) { - switch (effect) { - case 0x20: - return "20xx: Set chip output rate (0: clock/132; 1: clock/165)"; - break; - } - return NULL; -} - u8 DivPlatformMSM6295::read_byte(u32 address) { if (adpcmMem==NULL || address>=getSampleMemCapacity(0)) { return 0; diff --git a/src/engine/platform/msm6295.h b/src/engine/platform/msm6295.h index f01c1b23..0953bd33 100644 --- a/src/engine/platform/msm6295.h +++ b/src/engine/platform/msm6295.h @@ -97,7 +97,6 @@ class DivPlatformMSM6295: public DivDispatch, public vgsound_emu_mem_intf { virtual void poke(std::vector& wlist) override; virtual void setFlags(unsigned int flags) override; virtual const char** getRegisterSheet() override; - virtual const char* getEffectName(unsigned char effect) override; virtual const void* getSampleMem(int index) override; virtual size_t getSampleMemCapacity(int index) override; virtual size_t getSampleMemUsage(int index) override; diff --git a/src/engine/platform/n163.cpp b/src/engine/platform/n163.cpp index b20b460e..52352dc6 100644 --- a/src/engine/platform/n163.cpp +++ b/src/engine/platform/n163.cpp @@ -108,51 +108,6 @@ const char** DivPlatformN163::getRegisterSheet() { return regCheatSheetN163; } -const char* DivPlatformN163::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Select waveform"; - break; - case 0x11: - return "11xx: Set waveform position in RAM (single nibble unit)"; - break; - case 0x12: - return "12xx: Set waveform length in RAM (04 to FC, 4 nibble unit)"; - break; - case 0x13: - return "130x: Change waveform update mode (0: off, bit 0: update now, bit 1: update when every waveform changes)"; - break; - case 0x14: - return "14xx: Select waveform for load to RAM"; - break; - case 0x15: - return "15xx: Set waveform position for load to RAM (single nibble unit)"; - break; - case 0x16: - return "16xx: Set waveform length for load to RAM (04 to FC, 4 nibble unit)"; - break; - case 0x17: - return "170x: Change waveform load mode (0: off, bit 0: load now, bit 1: load when every waveform changes)"; - break; - case 0x18: - return "180x: Change channel limits (0 to 7, x + 1)"; - break; - case 0x20: - return "20xx: (Global) Select waveform for load to RAM"; - break; - case 0x21: - return "21xx: (Global) Set waveform position for load to RAM (single nibble unit)"; - break; - case 0x22: - return "22xx: (Global) Set waveform length for load to RAM (04 to FC, 4 nibble unit)"; - break; - case 0x23: - return "230x: (Global) Change waveform load mode (0: off, bit 0: load now, bit 1: load when every waveform changes)"; - break; - } - return NULL; -} - void DivPlatformN163::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; i& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformN163(); diff --git a/src/engine/platform/namcowsg.cpp b/src/engine/platform/namcowsg.cpp index 00b12793..e88bb0eb 100644 --- a/src/engine/platform/namcowsg.cpp +++ b/src/engine/platform/namcowsg.cpp @@ -151,18 +151,6 @@ const char** DivPlatformNamcoWSG::getRegisterSheet() { return regCheatSheetNamcoWSG; } -const char* DivPlatformNamcoWSG::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - case 0x11: - return "11xx: Toggle noise mode"; - break; - } - return NULL; -} - void DivPlatformNamcoWSG::acquire(short* bufL, short* bufR, size_t start, size_t len) { while (!writes.empty()) { QueuedWrite w=writes.front(); diff --git a/src/engine/platform/namcowsg.h b/src/engine/platform/namcowsg.h index 4ab81bdc..ede25e8e 100644 --- a/src/engine/platform/namcowsg.h +++ b/src/engine/platform/namcowsg.h @@ -96,7 +96,6 @@ class DivPlatformNamcoWSG: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformNamcoWSG(); diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index bd1be94a..a55199d1 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -62,27 +62,6 @@ const char** DivPlatformNES::getRegisterSheet() { return regCheatSheetNES; } -const char* DivPlatformNES::getEffectName(unsigned char effect) { - switch (effect) { - case 0x11: - return "11xx: Write to delta modulation counter (0 to 7F)"; - break; - case 0x12: - return "12xx: Set duty cycle/noise mode (pulse: 0 to 3; noise: 0 or 1)"; - break; - case 0x13: - return "13xy: Sweep up (x: time; y: shift)"; - break; - case 0x14: - return "14xy: Sweep down (x: time; y: shift)"; - break; - case 0x18: - return "18xx: Select PCM/DPCM mode (0: PCM; 1: DPCM)"; - break; - } - return NULL; -} - void DivPlatformNES::doWrite(unsigned short addr, unsigned char data) { if (useNP) { nes1_NP->Write(addr,data); diff --git a/src/engine/platform/nes.h b/src/engine/platform/nes.h index 35c51df7..c0000330 100644 --- a/src/engine/platform/nes.h +++ b/src/engine/platform/nes.h @@ -106,7 +106,6 @@ class DivPlatformNES: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index); size_t getSampleMemCapacity(int index); size_t getSampleMemUsage(int index); diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 8b76db21..784bd08f 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -152,98 +152,6 @@ const int orderedOpsL[4]={ #define ADDR_FREQH 0xb0 #define ADDR_LR_FB_ALG 0xc0 -const char* DivPlatformOPL::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Set global AM depth (0: 1dB, 1: 4.8dB)"; - break; - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 3F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 3F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 3F lowest; 4-op only)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 3F lowest; 4-op only)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x17: - return "17xx: Set global vibrato depth (0: normal, 1: double)"; - break; - case 0x18: - if (properDrumsSys) { - return "18xx: Toggle drums mode (1: enabled; 0: disabled)"; - } - break; - case 0x19: - return "19xx: Set attack of all operators (0 to F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to F; 4-op only)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to F; 4-op only)"; - break; - case 0x2a: - return "2Axy: Set waveform (x: operator from 1 to 4 (0 for all ops); y: waveform from 0 to 3 in OPL2 and 0 to 7 in OPL3)"; - break; - case 0x30: - return "30xx: Toggle hard envelope reset on new notes"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set vibrato (x: operator from 1 to 4 (0 for all ops); y: enabled)"; - break; - case 0x54: - return "54xy: Set key scale level (x: operator from 1 to 4 (0 for all ops); y: level from 0 to 3)"; - break; - case 0x55: - return "55xy: Set envelope sustain (x: operator from 1 to 4 (0 for all ops); y: enabled)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to F; 4-op only)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to F; 4-op only)"; - break; - case 0x5b: - return "5Bxy: Set whether key will scale envelope (x: operator from 1 to 4 (0 for all ops); y: enabled)"; - break; - } - return NULL; -} - void DivPlatformOPL::acquire_nuked(short* bufL, short* bufR, size_t start, size_t len) { static short o[2]; static int os[2]; diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index 3d649736..e3b16679 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -145,7 +145,6 @@ class DivPlatformOPL: public DivDispatch { int getPortaFloor(int ch); void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index); size_t getSampleMemCapacity(int index); size_t getSampleMemUsage(int index); diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index 5c9611b4..e29f6e62 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -27,68 +27,6 @@ #define CHIP_FREQBASE 1180068 -const char* DivPlatformOPLL::getEffectName(unsigned char effect) { - switch (effect) { - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 3F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 2; y: multiplier)"; - break; - case 0x18: - if (properDrumsSys) { - return "18xx: Toggle drums mode (1: enabled; 0: disabled)"; - } - break; - case 0x19: - return "19xx: Set attack of all operators (0 to F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to F)"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 2 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 2 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 2 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set vibrato (x: operator from 1 to 2 (0 for all ops); y: enabled)"; - break; - case 0x54: - return "54xy: Set key scale level (x: operator from 1 to 2 (0 for all ops); y: level from 0 to 3)"; - break; - case 0x55: - return "55xy: Set envelope sustain (x: operator from 1 to 2 (0 for all ops); y: enabled)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to F)"; - break; - case 0x5b: - return "5Bxy: Set whether key will scale envelope (x: operator from 1 to 2 (0 for all ops); y: enabled)"; - break; - } - return NULL; -} - const unsigned char cycleMapOPLL[18]={ 8, 7, 6, 7, 8, 7, 8, 6, 0, 1, 2, 7, 8, 9, 3, 4, 5, 9 }; diff --git a/src/engine/platform/opll.h b/src/engine/platform/opll.h index dad660de..21a77b4e 100644 --- a/src/engine/platform/opll.h +++ b/src/engine/platform/opll.h @@ -122,7 +122,6 @@ class DivPlatformOPLL: public DivDispatch { int getPortaFloor(int ch); void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformOPLL(); diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index 3fc7a05b..1dcf2451 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -53,27 +53,6 @@ const char** DivPlatformPCE::getRegisterSheet() { return regCheatSheetPCE; } -const char* DivPlatformPCE::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - case 0x11: - return "11xx: Toggle noise mode"; - break; - case 0x12: - return "12xx: Setup LFO (0: disabled; 1: 1x depth; 2: 16x depth; 3: 256x depth)"; - break; - case 0x13: - return "13xx: Set LFO speed"; - break; - case 0x17: - return "17xx: Toggle PCM mode"; - break; - } - return NULL; -} - void DivPlatformPCE::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; h& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformPCE(); diff --git a/src/engine/platform/pcspkr.cpp b/src/engine/platform/pcspkr.cpp index d40a297a..260f5bbd 100644 --- a/src/engine/platform/pcspkr.cpp +++ b/src/engine/platform/pcspkr.cpp @@ -190,10 +190,6 @@ const char** DivPlatformPCSpeaker::getRegisterSheet() { return regCheatSheetPCSpeaker; } -const char* DivPlatformPCSpeaker::getEffectName(unsigned char effect) { - return NULL; -} - const float cut=0.05; const float reso=0.06; diff --git a/src/engine/platform/pcspkr.h b/src/engine/platform/pcspkr.h index cb6f070f..ba6275c3 100644 --- a/src/engine/platform/pcspkr.h +++ b/src/engine/platform/pcspkr.h @@ -113,7 +113,6 @@ class DivPlatformPCSpeaker: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformPCSpeaker(); diff --git a/src/engine/platform/pet.cpp b/src/engine/platform/pet.cpp index dc524e45..4e1c39a9 100644 --- a/src/engine/platform/pet.cpp +++ b/src/engine/platform/pet.cpp @@ -37,15 +37,6 @@ const char** DivPlatformPET::getRegisterSheet() { return regCheatSheet6522; } -const char* DivPlatformPET::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - } - return NULL; -} - // high-level emulation of 6522 shift register and driver software for now void DivPlatformPET::rWrite(unsigned int addr, unsigned char val) { bool hwSROutput=((regPool[11]>>2)&7)==4; diff --git a/src/engine/platform/pet.h b/src/engine/platform/pet.h index 06c7e736..8de21779 100644 --- a/src/engine/platform/pet.h +++ b/src/engine/platform/pet.h @@ -80,7 +80,6 @@ class DivPlatformPET: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformPET(); diff --git a/src/engine/platform/qsound.cpp b/src/engine/platform/qsound.cpp index ca6a794c..863c0e1f 100644 --- a/src/engine/platform/qsound.cpp +++ b/src/engine/platform/qsound.cpp @@ -249,24 +249,6 @@ const char** DivPlatformQSound::getRegisterSheet() { return regCheatSheetQSound; } -const char* DivPlatformQSound::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Set echo feedback level (00 to FF)"; - break; - case 0x11: - return "11xx: Set channel echo level (00 to FF)"; - break; - case 0x12: - return "12xx: Toggle QSound algorithm (0: disabled; 1: enabled)"; - break; - default: - if ((effect & 0xf0) == 0x30) { - return "3xxx: Set echo delay buffer length (000 to AA5)"; - } - } - return NULL; -} void DivPlatformQSound::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; h& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index = 0); size_t getSampleMemCapacity(int index = 0); size_t getSampleMemUsage(int index = 0); diff --git a/src/engine/platform/rf5c68.cpp b/src/engine/platform/rf5c68.cpp index e4a39d44..e19b945b 100644 --- a/src/engine/platform/rf5c68.cpp +++ b/src/engine/platform/rf5c68.cpp @@ -43,10 +43,6 @@ const char** DivPlatformRF5C68::getRegisterSheet() { return regCheatSheetRF5C68; } -const char* DivPlatformRF5C68::getEffectName(unsigned char effect) { - return NULL; -} - void DivPlatformRF5C68::chWrite(unsigned char ch, unsigned int addr, unsigned char val) { if (!skipRegisterWrites) { if (curChan!=ch) { diff --git a/src/engine/platform/rf5c68.h b/src/engine/platform/rf5c68.h index 6946b490..d82c926e 100644 --- a/src/engine/platform/rf5c68.h +++ b/src/engine/platform/rf5c68.h @@ -92,7 +92,6 @@ class DivPlatformRF5C68: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index = 0); size_t getSampleMemCapacity(int index = 0); size_t getSampleMemUsage(int index = 0); diff --git a/src/engine/platform/saa.cpp b/src/engine/platform/saa.cpp index 103c3348..a05a61d4 100644 --- a/src/engine/platform/saa.cpp +++ b/src/engine/platform/saa.cpp @@ -56,21 +56,6 @@ const char** DivPlatformSAA1099::getRegisterSheet() { return regCheatSheetSAA; } -const char* DivPlatformSAA1099::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xy: Set channel mode (x: noise; y: tone)"; - break; - case 0x11: - return "11xx: Set noise frequency"; - break; - case 0x12: - return "12xx: Setup envelope (refer to docs for more information)"; - break; - } - return NULL; -} - void DivPlatformSAA1099::acquire_saaSound(short* bufL, short* bufR, size_t start, size_t len) { if (saaBufLen& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); }; diff --git a/src/engine/platform/scc.cpp b/src/engine/platform/scc.cpp index 485839bf..a7225762 100644 --- a/src/engine/platform/scc.cpp +++ b/src/engine/platform/scc.cpp @@ -80,15 +80,6 @@ const char** DivPlatformSCC::getRegisterSheet() { return isPlus ? regCheatSheetSCCPlus : regCheatSheetSCC; } -const char* DivPlatformSCC::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - } - return NULL; -} - void DivPlatformSCC::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; h& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void setChipModel(bool isPlus); diff --git a/src/engine/platform/segapcm.cpp b/src/engine/platform/segapcm.cpp index d66fcce0..e406e293 100644 --- a/src/engine/platform/segapcm.cpp +++ b/src/engine/platform/segapcm.cpp @@ -26,15 +26,6 @@ //#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;} //#define immWrite(a,v) if (!skipRegisterWrites) {writes.emplace(a,v); if (dumpWrites) {addWrite(a,v);} } -const char* DivPlatformSegaPCM::getEffectName(unsigned char effect) { - switch (effect) { - case 0x20: - return "20xx: Set PCM frequency"; - break; - } - return NULL; -} - void DivPlatformSegaPCM::acquire(short* bufL, short* bufR, size_t start, size_t len) { static int os[2]; diff --git a/src/engine/platform/segapcm.h b/src/engine/platform/segapcm.h index 6edc8530..0dd4b837 100644 --- a/src/engine/platform/segapcm.h +++ b/src/engine/platform/segapcm.h @@ -114,7 +114,6 @@ class DivPlatformSegaPCM: public DivDispatch { bool isStereo(); void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformSegaPCM(); diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 3d11a5ac..2988be2f 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -38,15 +38,6 @@ const char** DivPlatformSMS::getRegisterSheet() { return stereo?regCheatSheetGG:regCheatSheetSN; } -const char* DivPlatformSMS::getEffectName(unsigned char effect) { - switch (effect) { - case 0x20: - return "20xy: Set noise mode (x: preset freq/ch3 freq; y: thin pulse/noise)"; - break; - } - return NULL; -} - void DivPlatformSMS::acquire_nuked(short* bufL, short* bufR, size_t start, size_t len) { int oL=0; int oR=0; diff --git a/src/engine/platform/sms.h b/src/engine/platform/sms.h index 35bb44ba..eef54da1 100644 --- a/src/engine/platform/sms.h +++ b/src/engine/platform/sms.h @@ -101,7 +101,6 @@ class DivPlatformSMS: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); void setNuked(bool value); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index afcdba24..ca933650 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -33,72 +33,6 @@ const char** DivPlatformSoundUnit::getRegisterSheet() { return NULL; } -const char* DivPlatformSoundUnit::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Set waveform (0 to 7)"; - break; - case 0x12: - return "12xx: Set pulse width (0 to 7F)"; - break; - case 0x13: - return "13xx: Set resonance (0 to F)"; - break; - case 0x14: - return "14xx: Set filter mode (bit 0: ring mod; bit 1: low pass; bit 2: high pass; bit 3: band pass)"; - break; - case 0x15: - return "15xx: Set frequency sweep period low byte"; - break; - case 0x16: - return "16xx: Set frequency sweep period high byte"; - break; - case 0x17: - return "17xx: Set volume sweep period low byte"; - break; - case 0x18: - return "18xx: Set volume sweep period high byte"; - break; - case 0x19: - return "19xx: Set cutoff sweep period low byte"; - break; - case 0x1a: - return "1Axx: Set cutoff sweep period high byte"; - break; - case 0x1b: - return "1Bxx: Set frequency sweep boundary"; - break; - case 0x1c: - return "1Cxx: Set volume sweep boundary"; - break; - case 0x1d: - return "1Dxx: Set cutoff sweep boundary"; - break; - case 0x1e: - return "1Exx: Set phase reset period low byte"; - break; - case 0x1f: - return "1Fxx: Set phase reset period high byte"; - break; - case 0x20: - return "20xx: Toggle frequency sweep (bit 0-6: speed; bit 7: direction is up)"; - break; - case 0x21: - return "21xx: Toggle volume sweep (bit 0-4: speed; bit 5: direciton is up; bit 6: loop; bit 7: alternate)"; - break; - case 0x22: - return "22xx: Toggle cutoff sweep (bit 0-6: speed; bit 7: direction is up)"; - break; - case 0x40: case 0x41: case 0x42: case 0x43: - case 0x44: case 0x45: case 0x46: case 0x47: - case 0x48: case 0x49: case 0x4a: case 0x4b: - case 0x4c: case 0x4d: case 0x4e: case 0x4f: - return "4xxx: Set cutoff (0 to FFF)"; - break; - } - return NULL; -} - double DivPlatformSoundUnit::NOTE_SU(int ch, int note) { if (chan[ch].switchRoles) { return NOTE_PERIODIC(note); diff --git a/src/engine/platform/su.h b/src/engine/platform/su.h index 2392624f..d76d0722 100644 --- a/src/engine/platform/su.h +++ b/src/engine/platform/su.h @@ -133,7 +133,6 @@ class DivPlatformSoundUnit: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index); size_t getSampleMemCapacity(int index); size_t getSampleMemUsage(int index); diff --git a/src/engine/platform/swan.cpp b/src/engine/platform/swan.cpp index b6da2327..cdab93d5 100644 --- a/src/engine/platform/swan.cpp +++ b/src/engine/platform/swan.cpp @@ -50,27 +50,6 @@ const char** DivPlatformSwan::getRegisterSheet() { return regCheatSheetWS; } -const char* DivPlatformSwan::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - case 0x11: - return "11xx: Setup noise mode (0: disabled; 1-8: enabled/tap)"; - break; - case 0x12: - return "12xx: Setup sweep period (0: disabled; 1-20: enabled/period)"; - break; - case 0x13: - return "13xx: Set sweep amount"; - break; - case 0x17: - return "17xx: Toggle PCM mode"; - break; - } - return NULL; -} - void DivPlatformSwan::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; h& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformSwan(); diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index ddb38084..bebc1ff2 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -34,15 +34,6 @@ const char* regCheatSheetTIA[]={ NULL }; -const char* DivPlatformTIA::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Select shape (0 to F)"; - break; - } - return NULL; -} - const char** DivPlatformTIA::getRegisterSheet() { return regCheatSheetTIA; } diff --git a/src/engine/platform/tia.h b/src/engine/platform/tia.h index cabe9153..16817536 100644 --- a/src/engine/platform/tia.h +++ b/src/engine/platform/tia.h @@ -67,7 +67,6 @@ class DivPlatformTIA: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); }; diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index 9d24e4db..e6e38a12 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -55,139 +55,6 @@ const char** DivPlatformTX81Z::getRegisterSheet() { return regCheatSheetOPZ; } -const char* DivPlatformTX81Z::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Set noise frequency (xx: value; 0 disables noise)"; - break; - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 7F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 7F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 7F lowest)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 7F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x17: - return "17xx: Set LFO speed"; - break; - case 0x18: - return "18xx: Set LFO waveform (0 saw, 1 square, 2 triangle, 3 noise)"; - break; - case 0x19: - return "19xx: Set attack of all operators (0 to 1F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to 1F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to 1F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to 1F)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to 1F)"; - break; - case 0x1e: - return "1Exx: Set AM depth (0 to 7F)"; - break; - case 0x1f: - return "1Fxx: Set PM depth (0 to 7F)"; - break; - case 0x28: - return "28xy: Set reverb (x: operator from 1 to 4 (0 for all ops); y: reverb from 0 to 7)"; - break; - case 0x2a: - return "2Axy: Set waveform (x: operator from 1 to 4 (0 for all ops); y: waveform from 0 to 7)"; - break; - case 0x2b: - return "2Bxy: Set envelope generator shift (x: operator from 1 to 4 (0 for all ops); y: shift from 0 to 3)"; - break; - case 0x2c: - return "2Cxy: Set fine multiplier (x: operator from 1 to 4 (0 for all ops); y: fine)"; - break; - case 0x2f: - return "2Fxx: Toggle hard envelope reset on new notes"; - break; - case 0x30: case 0x31: case 0x32: case 0x33: - case 0x34: case 0x35: case 0x36: case 0x37: - return "3xyy: Set fixed frequency of operator 1 (x: octave from 0 to 7; y: frequency)"; - break; - case 0x38: case 0x39: case 0x3a: case 0x3b: - case 0x3c: case 0x3d: case 0x3e: case 0x3f: - return "3xyy: Set fixed frequency of operator 2 (x: octave from 8 to F; y: frequency)"; - break; - case 0x40: case 0x41: case 0x42: case 0x43: - case 0x44: case 0x45: case 0x46: case 0x47: - return "4xyy: Set fixed frequency of operator 3 (x: octave from 0 to 7; y: frequency)"; - break; - case 0x48: case 0x49: case 0x4a: case 0x4b: - case 0x4c: case 0x4d: case 0x4e: case 0x4f: - return "4xyy: Set fixed frequency of operator 4 (x: octave from 8 to F; y: frequency)"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)"; - break; - case 0x54: - return "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)"; - break; - case 0x55: - return "55xy: Set detune 2 (x: operator from 1 to 4 (0 for all ops); y: detune from 0 to 3)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to 1F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to 1F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to 1F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to 1F)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to 1F)"; - break; - case 0x5b: - return "5Bxx: Set decay 2 of all operators (0 to 1F)"; - break; - case 0x5c: - return "5Cxx: Set decay 2 of operator 1 (0 to 1F)"; - break; - case 0x5d: - return "5Dxx: Set decay 2 of operator 2 (0 to 1F)"; - break; - case 0x5e: - return "5Exx: Set decay 2 of operator 3 (0 to 1F)"; - break; - case 0x5f: - return "5Fxx: Set decay 2 of operator 4 (0 to 1F)"; - break; - } - return NULL; -} - void DivPlatformTX81Z::acquire(short* bufL, short* bufR, size_t start, size_t len) { static int os[2]; diff --git a/src/engine/platform/tx81z.h b/src/engine/platform/tx81z.h index e867416c..d1e42728 100644 --- a/src/engine/platform/tx81z.h +++ b/src/engine/platform/tx81z.h @@ -108,7 +108,6 @@ class DivPlatformTX81Z: public DivPlatformOPM { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformTX81Z(); diff --git a/src/engine/platform/vera.cpp b/src/engine/platform/vera.cpp index 6376cc19..e50bcd6e 100644 --- a/src/engine/platform/vera.cpp +++ b/src/engine/platform/vera.cpp @@ -51,18 +51,6 @@ const char** DivPlatformVERA::getRegisterSheet() { return regCheatSheetVERA; } -const char* DivPlatformVERA::getEffectName(unsigned char effect) { - switch (effect) { - case 0x20: - return "20xx: Change waveform"; - break; - case 0x22: - return "22xx: Set duty cycle (0 to 3F)"; - break; - } - return NULL; -} - void DivPlatformVERA::acquire(short* bufL, short* bufR, size_t start, size_t len) { // both PSG part and PCM part output a full 16-bit range, putting bufL/R // argument right into both could cause an overflow diff --git a/src/engine/platform/vera.h b/src/engine/platform/vera.h index 612b4354..53e766dc 100644 --- a/src/engine/platform/vera.h +++ b/src/engine/platform/vera.h @@ -79,7 +79,6 @@ class DivPlatformVERA: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformVERA(); diff --git a/src/engine/platform/vic20.cpp b/src/engine/platform/vic20.cpp index 771b87d1..5c0bdf46 100644 --- a/src/engine/platform/vic20.cpp +++ b/src/engine/platform/vic20.cpp @@ -39,15 +39,6 @@ const char** DivPlatformVIC20::getRegisterSheet() { return regCheatSheetVIC; } -const char* DivPlatformVIC20::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - } - return NULL; -} - void DivPlatformVIC20::acquire(short* bufL, short* bufR, size_t start, size_t len) { const unsigned char loadFreq[3] = {0x7e, 0x7d, 0x7b}; const unsigned char wavePatterns[16] = { diff --git a/src/engine/platform/vic20.h b/src/engine/platform/vic20.h index d23f27be..d4b56028 100644 --- a/src/engine/platform/vic20.h +++ b/src/engine/platform/vic20.h @@ -82,7 +82,6 @@ class DivPlatformVIC20: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformVIC20(); diff --git a/src/engine/platform/vrc6.cpp b/src/engine/platform/vrc6.cpp index 8a34d925..9a7bcef0 100644 --- a/src/engine/platform/vrc6.cpp +++ b/src/engine/platform/vrc6.cpp @@ -46,18 +46,6 @@ const char** DivPlatformVRC6::getRegisterSheet() { return regCheatSheetVRC6; } -const char* DivPlatformVRC6::getEffectName(unsigned char effect) { - switch (effect) { - case 0x12: - return "12xx: Set duty cycle (pulse: 0 to 7)"; - break; - case 0x17: - return "17xx: Toggle PCM mode (pulse channel)"; - break; - } - return NULL; -} - void DivPlatformVRC6::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t i=start; i& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); DivPlatformVRC6() : vrc6(intf) {}; diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index e2e360b1..f6aa1c65 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -205,39 +205,6 @@ const char** DivPlatformX1_010::getRegisterSheet() { return regCheatSheetX1_010; } -const char* DivPlatformX1_010::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xx: Change waveform"; - break; - case 0x11: - return "11xx: Change envelope shape"; - break; - case 0x17: - return "17xx: Toggle PCM mode"; - break; - case 0x20: - return "20xx: Set PCM frequency (1 to FF)"; - break; - case 0x22: - return "22xx: Set envelope mode (bit 0: enable, bit 1: one-shot, bit 2: split shape to L/R, bit 3/5: H.invert right/left, bit 4/6: V.invert right/left)"; - break; - case 0x23: - return "23xx: Set envelope period"; - break; - case 0x25: - return "25xx: Envelope slide up"; - break; - case 0x26: - return "26xx: Envelope slide down"; - break; - case 0x29: - return "29xy: Set auto-envelope (x: numerator; y: denominator)"; - break; - } - return NULL; -} - void DivPlatformX1_010::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; htick(); diff --git a/src/engine/platform/x1_010.h b/src/engine/platform/x1_010.h index 7a85b633..178a8938 100644 --- a/src/engine/platform/x1_010.h +++ b/src/engine/platform/x1_010.h @@ -149,7 +149,6 @@ class DivPlatformX1_010: public DivDispatch { size_t getSampleMemUsage(int index = 0); void renderSamples(); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformX1_010(); diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index 83c93c58..afb4f526 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -156,123 +156,6 @@ const char** DivPlatformYM2203::getRegisterSheet() { return regCheatSheetYM2203; } -const char* DivPlatformYM2203::getEffectName(unsigned char effect) { - switch (effect) { - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 7F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 7F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 7F lowest)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 7F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x18: - return "18xx: Toggle extended channel 3 mode"; - break; - case 0x19: - return "19xx: Set attack of all operators (0 to 1F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to 1F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to 1F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to 1F)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to 1F)"; - break; - case 0x20: - return "20xx: Set SSG channel mode (bit 0: square; bit 1: noise; bit 2: envelope)"; - break; - case 0x21: - return "21xx: Set SSG noise frequency (0 to 1F)"; - break; - case 0x22: - return "22xy: Set SSG envelope mode (x: shape, y: enable for this channel)"; - break; - case 0x23: - return "23xx: Set SSG envelope period low byte"; - break; - case 0x24: - return "24xx: Set SSG envelope period high byte"; - break; - case 0x25: - return "25xx: SSG envelope slide up"; - break; - case 0x26: - return "26xx: SSG envelope slide down"; - break; - case 0x29: - return "29xy: Set SSG auto-envelope (x: numerator; y: denominator)"; - break; - case 0x30: - return "30xx: Toggle hard envelope reset on new notes"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)"; - break; - case 0x54: - return "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)"; - break; - case 0x55: - return "55xy: Set SSG envelope (x: operator from 1 to 4 (0 for all ops); y: 0-7 on, 8 off)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to 1F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to 1F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to 1F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to 1F)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to 1F)"; - break; - case 0x5b: - return "5Bxx: Set decay 2 of all operators (0 to 1F)"; - break; - case 0x5c: - return "5Cxx: Set decay 2 of operator 1 (0 to 1F)"; - break; - case 0x5d: - return "5Dxx: Set decay 2 of operator 2 (0 to 1F)"; - break; - case 0x5e: - return "5Exx: Set decay 2 of operator 3 (0 to 1F)"; - break; - case 0x5f: - return "5Fxx: Set decay 2 of operator 4 (0 to 1F)"; - break; - } - return NULL; -} - void DivPlatformYM2203::acquire(short* bufL, short* bufR, size_t start, size_t len) { static int os; diff --git a/src/engine/platform/ym2203.h b/src/engine/platform/ym2203.h index d406e2f2..0395c9d0 100644 --- a/src/engine/platform/ym2203.h +++ b/src/engine/platform/ym2203.h @@ -114,7 +114,6 @@ class DivPlatformYM2203: public DivPlatformOPN { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index c3cf52a0..9e76e6e3 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -279,126 +279,6 @@ const char** DivPlatformYM2608::getRegisterSheet() { return regCheatSheetYM2608; } -const char* DivPlatformYM2608::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xy: Setup LFO (x: enable; y: speed)"; - break; - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 7F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 7F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 7F lowest)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 7F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x18: - return "18xx: Toggle extended channel 3 mode"; - break; - case 0x19: - return "19xx: Set attack of all operators (0 to 1F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to 1F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to 1F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to 1F)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to 1F)"; - break; - case 0x20: - return "20xx: Set SSG channel mode (bit 0: square; bit 1: noise; bit 2: envelope)"; - break; - case 0x21: - return "21xx: Set SSG noise frequency (0 to 1F)"; - break; - case 0x22: - return "22xy: Set SSG envelope mode (x: shape, y: enable for this channel)"; - break; - case 0x23: - return "23xx: Set SSG envelope period low byte"; - break; - case 0x24: - return "24xx: Set SSG envelope period high byte"; - break; - case 0x25: - return "25xx: SSG envelope slide up"; - break; - case 0x26: - return "26xx: SSG envelope slide down"; - break; - case 0x29: - return "29xy: Set SSG auto-envelope (x: numerator; y: denominator)"; - break; - case 0x30: - return "30xx: Toggle hard envelope reset on new notes"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)"; - break; - case 0x54: - return "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)"; - break; - case 0x55: - return "55xy: Set SSG envelope (x: operator from 1 to 4 (0 for all ops); y: 0-7 on, 8 off)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to 1F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to 1F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to 1F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to 1F)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to 1F)"; - break; - case 0x5b: - return "5Bxx: Set decay 2 of all operators (0 to 1F)"; - break; - case 0x5c: - return "5Cxx: Set decay 2 of operator 1 (0 to 1F)"; - break; - case 0x5d: - return "5Dxx: Set decay 2 of operator 2 (0 to 1F)"; - break; - case 0x5e: - return "5Exx: Set decay 2 of operator 3 (0 to 1F)"; - break; - case 0x5f: - return "5Fxx: Set decay 2 of operator 4 (0 to 1F)"; - break; - } - return NULL; -} - double DivPlatformYM2608::NOTE_OPNB(int ch, int note) { if (ch>8) { // ADPCM-B return NOTE_ADPCMB(note); diff --git a/src/engine/platform/ym2608.h b/src/engine/platform/ym2608.h index ac38a8c0..7a471b8b 100644 --- a/src/engine/platform/ym2608.h +++ b/src/engine/platform/ym2608.h @@ -127,7 +127,6 @@ class DivPlatformYM2608: public DivPlatformOPN { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index); size_t getSampleMemCapacity(int index); size_t getSampleMemUsage(int index); diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 4e01b005..920d9b14 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -318,126 +318,6 @@ const char** DivPlatformYM2610::getRegisterSheet() { return regCheatSheetYM2610; } -const char* DivPlatformYM2610::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xy: Setup LFO (x: enable; y: speed)"; - break; - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 7F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 7F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 7F lowest)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 7F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x18: - return "18xx: Toggle extended channel 3 mode"; - break; - case 0x19: - return "19xx: Set attack of all operators (0 to 1F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to 1F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to 1F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to 1F)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to 1F)"; - break; - case 0x20: - return "20xx: Set SSG channel mode (bit 0: square; bit 1: noise; bit 2: envelope)"; - break; - case 0x21: - return "21xx: Set SSG noise frequency (0 to 1F)"; - break; - case 0x22: - return "22xy: Set SSG envelope mode (x: shape, y: enable for this channel)"; - break; - case 0x23: - return "23xx: Set SSG envelope period low byte"; - break; - case 0x24: - return "24xx: Set SSG envelope period high byte"; - break; - case 0x25: - return "25xx: SSG envelope slide up"; - break; - case 0x26: - return "26xx: SSG envelope slide down"; - break; - case 0x29: - return "29xy: Set SSG auto-envelope (x: numerator; y: denominator)"; - break; - case 0x30: - return "30xx: Toggle hard envelope reset on new notes"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)"; - break; - case 0x54: - return "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)"; - break; - case 0x55: - return "55xy: Set SSG envelope (x: operator from 1 to 4 (0 for all ops); y: 0-7 on, 8 off)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to 1F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to 1F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to 1F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to 1F)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to 1F)"; - break; - case 0x5b: - return "5Bxx: Set decay 2 of all operators (0 to 1F)"; - break; - case 0x5c: - return "5Cxx: Set decay 2 of operator 1 (0 to 1F)"; - break; - case 0x5d: - return "5Dxx: Set decay 2 of operator 2 (0 to 1F)"; - break; - case 0x5e: - return "5Exx: Set decay 2 of operator 3 (0 to 1F)"; - break; - case 0x5f: - return "5Fxx: Set decay 2 of operator 4 (0 to 1F)"; - break; - } - return NULL; -} - double DivPlatformYM2610::NOTE_OPNB(int ch, int note) { if (ch>6) { // ADPCM return NOTE_ADPCMB(note); diff --git a/src/engine/platform/ym2610.h b/src/engine/platform/ym2610.h index dde7ed10..5e22ed2a 100644 --- a/src/engine/platform/ym2610.h +++ b/src/engine/platform/ym2610.h @@ -145,7 +145,6 @@ class DivPlatformYM2610: public DivPlatformYM2610Base { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 1a1f7f0a..039691e7 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -302,126 +302,6 @@ const char** DivPlatformYM2610B::getRegisterSheet() { return regCheatSheetYM2610B; } -const char* DivPlatformYM2610B::getEffectName(unsigned char effect) { - switch (effect) { - case 0x10: - return "10xy: Setup LFO (x: enable; y: speed)"; - break; - case 0x11: - return "11xx: Set feedback (0 to 7)"; - break; - case 0x12: - return "12xx: Set level of operator 1 (0 highest, 7F lowest)"; - break; - case 0x13: - return "13xx: Set level of operator 2 (0 highest, 7F lowest)"; - break; - case 0x14: - return "14xx: Set level of operator 3 (0 highest, 7F lowest)"; - break; - case 0x15: - return "15xx: Set level of operator 4 (0 highest, 7F lowest)"; - break; - case 0x16: - return "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)"; - break; - case 0x18: - return "18xx: Toggle extended channel 3 mode"; - break; - case 0x19: - return "19xx: Set attack of all operators (0 to 1F)"; - break; - case 0x1a: - return "1Axx: Set attack of operator 1 (0 to 1F)"; - break; - case 0x1b: - return "1Bxx: Set attack of operator 2 (0 to 1F)"; - break; - case 0x1c: - return "1Cxx: Set attack of operator 3 (0 to 1F)"; - break; - case 0x1d: - return "1Dxx: Set attack of operator 4 (0 to 1F)"; - break; - case 0x20: - return "20xx: Set SSG channel mode (bit 0: square; bit 1: noise; bit 2: envelope)"; - break; - case 0x21: - return "21xx: Set SSG noise frequency (0 to 1F)"; - break; - case 0x22: - return "22xy: Set SSG envelope mode (x: shape, y: enable for this channel)"; - break; - case 0x23: - return "23xx: Set SSG envelope period low byte"; - break; - case 0x24: - return "24xx: Set SSG envelope period high byte"; - break; - case 0x25: - return "25xx: SSG envelope slide up"; - break; - case 0x26: - return "26xx: SSG envelope slide down"; - break; - case 0x29: - return "29xy: Set SSG auto-envelope (x: numerator; y: denominator)"; - break; - case 0x30: - return "30xx: Toggle hard envelope reset on new notes"; - break; - case 0x50: - return "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)"; - break; - case 0x51: - return "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)"; - break; - case 0x52: - return "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)"; - break; - case 0x53: - return "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)"; - break; - case 0x54: - return "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)"; - break; - case 0x55: - return "55xy: Set SSG envelope (x: operator from 1 to 4 (0 for all ops); y: 0-7 on, 8 off)"; - break; - case 0x56: - return "56xx: Set decay of all operators (0 to 1F)"; - break; - case 0x57: - return "57xx: Set decay of operator 1 (0 to 1F)"; - break; - case 0x58: - return "58xx: Set decay of operator 2 (0 to 1F)"; - break; - case 0x59: - return "59xx: Set decay of operator 3 (0 to 1F)"; - break; - case 0x5a: - return "5Axx: Set decay of operator 4 (0 to 1F)"; - break; - case 0x5b: - return "5Bxx: Set decay 2 of all operators (0 to 1F)"; - break; - case 0x5c: - return "5Cxx: Set decay 2 of operator 1 (0 to 1F)"; - break; - case 0x5d: - return "5Dxx: Set decay 2 of operator 2 (0 to 1F)"; - break; - case 0x5e: - return "5Exx: Set decay 2 of operator 3 (0 to 1F)"; - break; - case 0x5f: - return "5Fxx: Set decay 2 of operator 4 (0 to 1F)"; - break; - } - return NULL; -} - double DivPlatformYM2610B::NOTE_OPNB(int ch, int note) { if (ch>8) { // ADPCM-B return NOTE_ADPCMB(note); diff --git a/src/engine/platform/ym2610b.h b/src/engine/platform/ym2610b.h index fefb0692..703f8dd4 100644 --- a/src/engine/platform/ym2610b.h +++ b/src/engine/platform/ym2610b.h @@ -113,7 +113,6 @@ class DivPlatformYM2610B: public DivPlatformYM2610Base { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); diff --git a/src/engine/platform/ymz280b.cpp b/src/engine/platform/ymz280b.cpp index 0543a815..ca1b225d 100644 --- a/src/engine/platform/ymz280b.cpp +++ b/src/engine/platform/ymz280b.cpp @@ -60,10 +60,6 @@ const char** DivPlatformYMZ280B::getRegisterSheet() { return regCheatSheetYMZ280B; } -const char* DivPlatformYMZ280B::getEffectName(unsigned char effect) { - return NULL; -} - void DivPlatformYMZ280B::acquire(short* bufL, short* bufR, size_t start, size_t len) { short buf[16][256]; short *bufPtrs[16]={ diff --git a/src/engine/platform/ymz280b.h b/src/engine/platform/ymz280b.h index 0d254c08..6dbe2623 100644 --- a/src/engine/platform/ymz280b.h +++ b/src/engine/platform/ymz280b.h @@ -91,7 +91,6 @@ class DivPlatformYMZ280B: public DivDispatch { void poke(unsigned int addr, unsigned short val); void poke(std::vector& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); const void* getSampleMem(int index = 0); size_t getSampleMemCapacity(int index = 0); size_t getSampleMemUsage(int index = 0); diff --git a/src/engine/platform/zxbeeper.cpp b/src/engine/platform/zxbeeper.cpp index 01702dc5..d8390309 100644 --- a/src/engine/platform/zxbeeper.cpp +++ b/src/engine/platform/zxbeeper.cpp @@ -27,18 +27,6 @@ const char** DivPlatformZXBeeper::getRegisterSheet() { return NULL; } -const char* DivPlatformZXBeeper::getEffectName(unsigned char effect) { - switch (effect) { - case 0x12: - return "12xx: Set pulse width"; - break; - case 0x17: - return "17xx: Trigger overlay drum"; - break; - } - return NULL; -} - void DivPlatformZXBeeper::acquire(short* bufL, short* bufR, size_t start, size_t len) { bool o=false; for (size_t h=start; h& wlist); const char** getRegisterSheet(); - const char* getEffectName(unsigned char effect); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformZXBeeper(); diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 3dbc6b5f..63203ab5 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -292,13 +292,39 @@ int DivEngine::dispatchCmd(DivCommand c) { } bool DivEngine::perSystemEffect(int ch, unsigned char effect, unsigned char effectVal) { - if (sysDefs[sysOfChan[ch]]==NULL) return false; - return sysDefs[sysOfChan[ch]]->effectFunc(ch,effect,effectVal); + DivSysDef* sysDef=sysDefs[sysOfChan[ch]]; + if (sysDef==NULL) return false; + auto iter=sysDef->effectHandlers.find(effect); + if (iter==sysDef->effectHandlers.end()) return false; + EffectHandler handler=iter->second; + int val=0; + int val2=0; + try { + val=handler.val?handler.val(effect,effectVal):effectVal; + val2=handler.val2?handler.val2(effect,effectVal):0; + } catch (DivDoNotHandleEffect& e) { + return false; + } + // wouldn't this cause problems if it were to return 0? + return dispatchCmd(DivCommand(handler.dispatchCmd,ch,val,val2)); } bool DivEngine::perSystemPostEffect(int ch, unsigned char effect, unsigned char effectVal) { - if (sysDefs[sysOfChan[ch]]==NULL) return false; - return sysDefs[sysOfChan[ch]]->postEffectFunc(ch,effect,effectVal); + DivSysDef* sysDef=sysDefs[sysOfChan[ch]]; + if (sysDef==NULL) return false; + auto iter=sysDef->postEffectHandlers.find(effect); + if (iter==sysDef->postEffectHandlers.end()) return false; + EffectHandler handler=iter->second; + int val=0; + int val2=0; + try { + val=handler.val?handler.val(effect,effectVal):effectVal; + val2=handler.val2?handler.val2(effect,effectVal):0; + } catch (DivDoNotHandleEffect& e) { + return true; + } + // wouldn't this cause problems if it were to return 0? + return dispatchCmd(DivCommand(handler.dispatchCmd,ch,val,val2)); } void DivEngine::processRow(int i, bool afterDelay) { @@ -609,9 +635,6 @@ void DivEngine::processRow(int i, bool afterDelay) { clockDrift=0; subticks=0; break; - case 0xdf: // set sample direction - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_DIR,i,effectVal)); - break; case 0xe0: // arp speed if (effectVal>0) { curSubSong->arpLen=effectVal; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index e3c356cf..63cb6fac 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -360,390 +360,222 @@ int DivEngine::minVGMVersion(DivSystem which) { // {chanTypes, ...}, // {chanPreferInsType, ...}, // {chanPreferInsType2, ...}, (optional) -// [this](int ch, unsigned char effect, unsigned char effectVal) -> bool {}, (effect handler, optional) -// [this](int ch, unsigned char effect, unsigned char effectVal) -> bool {} (post effect handler, optional) +// {{effect, {DIV_CMD_xx, "Description"}}, ...}, (effect handler, optional) +// {{effect, {DIV_CMD_xx, "Description"}}, ...} (post effect handler, optional) // ); +template int constVal(unsigned char, unsigned char) { + return val; +}; + +int effectVal(unsigned char, unsigned char val) { + return val; +}; + +int negEffectVal(unsigned char, unsigned char val) { + return -(int)val; +}; + +template int effectValAnd(unsigned char, unsigned char val) { + return val&mask; +}; + +template int effectOpVal(unsigned char, unsigned char val) { + if ((val>>4)>maxOp) throw DivDoNotHandleEffect(); + return (val>>4)-1; +}; + +template int effectOpValNoZero(unsigned char, unsigned char val) { + if ((val>>4)<1 || (val>>4)>maxOp) throw DivDoNotHandleEffect(); + return (val>>4)-1; +}; + +template int effectValLong(unsigned char cmd, unsigned char val) { + return ((((unsigned int)cmd)&((1<<(bits-8))-1))<<8)|((unsigned int)val); +}; + void DivEngine::registerSystems() { logD("registering systems..."); - auto fmPostEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // LFO or noise mode - if (IS_OPM_LIKE) { - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_FREQ,ch,effectVal)); - } else { - dispatchCmd(DivCommand(DIV_CMD_FM_LFO,ch,effectVal)); - } - break; - case 0x11: // FB - dispatchCmd(DivCommand(DIV_CMD_FM_FB,ch,effectVal&7)); - break; - case 0x12: // TL op1 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,0,effectVal&0x7f)); - break; - case 0x13: // TL op2 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,1,effectVal&0x7f)); - break; - case 0x14: // TL op3 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,2,effectVal&0x7f)); - break; - case 0x15: // TL op4 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,3,effectVal&0x7f)); - break; - case 0x16: // MULT - if ((effectVal>>4)>0 && (effectVal>>4)<5) { - dispatchCmd(DivCommand(DIV_CMD_FM_MULT,ch,(effectVal>>4)-1,effectVal&15)); - } - break; - case 0x17: // arcade LFO - if (IS_OPM_LIKE) { - dispatchCmd(DivCommand(DIV_CMD_FM_LFO,ch,effectVal)); - } - break; - case 0x18: // EXT or LFO waveform - if (IS_OPM_LIKE) { - dispatchCmd(DivCommand(DIV_CMD_FM_LFO_WAVE,ch,effectVal)); - } else { - dispatchCmd(DivCommand(DIV_CMD_FM_EXTCH,ch,effectVal)); - } - break; - case 0x19: // AR global - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,-1,effectVal&31)); - break; - case 0x1a: // AR op1 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,0,effectVal&31)); - break; - case 0x1b: // AR op2 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,1,effectVal&31)); - break; - case 0x1c: // AR op3 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,2,effectVal&31)); - break; - case 0x1d: // AR op4 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,3,effectVal&31)); - break; - case 0x1e: // UNOFFICIAL: Arcade AM depth - dispatchCmd(DivCommand(DIV_CMD_FM_AM_DEPTH,ch,effectVal&127)); - break; - case 0x1f: // UNOFFICIAL: Arcade PM depth - dispatchCmd(DivCommand(DIV_CMD_FM_PM_DEPTH,ch,effectVal&127)); - break; - case 0x20: // Neo Geo PSG mode - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - } - break; - case 0x21: // Neo Geo PSG noise freq - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_FREQ,ch,effectVal)); - } - break; - case 0x22: // UNOFFICIAL: Neo Geo PSG envelope enable - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_SET,ch,effectVal)); - } - break; - case 0x23: // UNOFFICIAL: Neo Geo PSG envelope period low - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_LOW,ch,effectVal)); - } - break; - case 0x24: // UNOFFICIAL: Neo Geo PSG envelope period high - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_HIGH,ch,effectVal)); - } - break; - case 0x25: // UNOFFICIAL: Neo Geo PSG envelope slide up - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_SLIDE,ch,-effectVal)); - } - break; - case 0x26: // UNOFFICIAL: Neo Geo PSG envelope slide down - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_SLIDE,ch,effectVal)); - } - break; - case 0x29: // auto-envelope - if (IS_YM2610) { - dispatchCmd(DivCommand(DIV_CMD_AY_AUTO_ENVELOPE,ch,effectVal)); - } - break; - // fixed frequency effects on OPZ - case 0x30: case 0x31: case 0x32: case 0x33: - case 0x34: case 0x35: case 0x36: case 0x37: - if (sysOfChan[ch]==DIV_SYSTEM_OPZ) { - dispatchCmd(DivCommand(DIV_CMD_FM_FIXFREQ,ch,0,((effect&7)<<8)|effectVal)); - } - break; - case 0x38: case 0x39: case 0x3a: case 0x3b: - case 0x3c: case 0x3d: case 0x3e: case 0x3f: - if (sysOfChan[ch]==DIV_SYSTEM_OPZ) { - dispatchCmd(DivCommand(DIV_CMD_FM_FIXFREQ,ch,1,((effect&7)<<8)|effectVal)); - } - break; - case 0x40: case 0x41: case 0x42: case 0x43: - case 0x44: case 0x45: case 0x46: case 0x47: - if (sysOfChan[ch]==DIV_SYSTEM_OPZ) { - dispatchCmd(DivCommand(DIV_CMD_FM_FIXFREQ,ch,2,((effect&7)<<8)|effectVal)); - } - break; - case 0x48: case 0x49: case 0x4a: case 0x4b: - case 0x4c: case 0x4d: case 0x4e: case 0x4f: - if (sysOfChan[ch]==DIV_SYSTEM_OPZ) { - dispatchCmd(DivCommand(DIV_CMD_FM_FIXFREQ,ch,3,((effect&7)<<8)|effectVal)); - } - break; - // extra FM effects here - OP_EFFECT_SINGLE(0x50,DIV_CMD_FM_AM,4,1); - OP_EFFECT_SINGLE(0x51,DIV_CMD_FM_SL,4,15); - OP_EFFECT_SINGLE(0x52,DIV_CMD_FM_RR,4,15); - OP_EFFECT_SINGLE(0x53,DIV_CMD_FM_DT,4,7); - OP_EFFECT_SINGLE(0x54,DIV_CMD_FM_RS,4,3); - OP_EFFECT_SINGLE(0x55,DIV_CMD_FM_SSG,4,(IS_OPM_LIKE?3:15)); + // Common effect handler maps - OP_EFFECT_MULTI(0x56,DIV_CMD_FM_DR,-1,31); - OP_EFFECT_MULTI(0x57,DIV_CMD_FM_DR,0,31); - OP_EFFECT_MULTI(0x58,DIV_CMD_FM_DR,1,31); - OP_EFFECT_MULTI(0x59,DIV_CMD_FM_DR,2,31); - OP_EFFECT_MULTI(0x5a,DIV_CMD_FM_DR,3,31); - - OP_EFFECT_MULTI(0x5b,DIV_CMD_FM_D2R,-1,31); - OP_EFFECT_MULTI(0x5c,DIV_CMD_FM_D2R,0,31); - OP_EFFECT_MULTI(0x5d,DIV_CMD_FM_D2R,1,31); - OP_EFFECT_MULTI(0x5e,DIV_CMD_FM_D2R,2,31); - OP_EFFECT_MULTI(0x5f,DIV_CMD_FM_D2R,3,31); - - OP_EFFECT_SINGLE(0x28,DIV_CMD_FM_REV,4,7); - OP_EFFECT_SINGLE(0x2a,DIV_CMD_FM_WS,4,7); - OP_EFFECT_SINGLE(0x2b,DIV_CMD_FM_EG_SHIFT,4,3); - OP_EFFECT_SINGLE(0x2c,DIV_CMD_FM_FINE,4,15); - default: - return false; - } - return true; + EffectHandlerMap ayPostEffectHandlerMap={ + {0x20, {DIV_CMD_STD_NOISE_MODE, "20xx: Set channel mode (bit 0: square; bit 1: noise; bit 2: envelope)"}}, + {0x21, {DIV_CMD_STD_NOISE_FREQ, "21xx: Set noise frequency (0 to 1F)"}}, + {0x22, {DIV_CMD_AY_ENVELOPE_SET, "22xy: Set envelope mode (x: shape, y: enable for this channel)"}}, + {0x23, {DIV_CMD_AY_ENVELOPE_LOW, "23xx: Set envelope period low byte"}}, + {0x24, {DIV_CMD_AY_ENVELOPE_HIGH, "24xx: Set envelope period high byte"}}, + {0x25, {DIV_CMD_AY_ENVELOPE_SLIDE, "25xx: Envelope slide up", negEffectVal}}, + {0x26, {DIV_CMD_AY_ENVELOPE_SLIDE, "26xx: Envelope slide down"}}, + {0x29, {DIV_CMD_AY_AUTO_ENVELOPE, "29xy: Set auto-envelope (x: numerator; y: denominator)"}}, + {0x2e, {DIV_CMD_AY_IO_WRITE, "2Exx: Write to I/O port A", constVal<0>, effectVal}}, + {0x2f, {DIV_CMD_AY_IO_WRITE, "2Fxx: Write to I/O port B", constVal<1>, effectVal}}, }; - auto fmOPLLPostEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x11: // FB - dispatchCmd(DivCommand(DIV_CMD_FM_FB,ch,effectVal&7)); - break; - case 0x12: // TL op1 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,0,effectVal&0x3f)); - break; - case 0x13: // TL op2 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,1,effectVal&0x0f)); - break; - case 0x16: // MULT - if ((effectVal>>4)>0 && (effectVal>>4)<3) { - dispatchCmd(DivCommand(DIV_CMD_FM_MULT,ch,(effectVal>>4)-1,effectVal&15)); - } - break; - case 0x19: // AR global - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,-1,effectVal&31)); - break; - case 0x1a: // AR op1 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,0,effectVal&31)); - break; - case 0x1b: // AR op2 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,1,effectVal&31)); - break; + EffectHandlerMap ay8930PostEffectHandlerMap(ayPostEffectHandlerMap); + ay8930PostEffectHandlerMap.insert({ + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set duty cycle (0 to 8)", + [](unsigned char, unsigned char val) -> int { return 0x10+(val&15); }}}, + {0x27, {DIV_CMD_AY_NOISE_MASK_AND, "27xx: Set noise AND mask"}}, + {0x28, {DIV_CMD_AY_NOISE_MASK_OR, "28xx: Set noise OR mask"}}, + {0x2d, {DIV_CMD_AY_IO_WRITE, "2Dxx: NOT TO BE EMPLOYED BY THE COMPOSER", constVal<255>, effectVal}}, + }); - // extra FM effects here - OP_EFFECT_SINGLE(0x50,DIV_CMD_FM_AM,2,1); - OP_EFFECT_SINGLE(0x51,DIV_CMD_FM_SL,2,15); - OP_EFFECT_SINGLE(0x52,DIV_CMD_FM_RR,2,15); - OP_EFFECT_SINGLE(0x53,DIV_CMD_FM_VIB,2,1); - OP_EFFECT_SINGLE(0x54,DIV_CMD_FM_RS,2,3); - OP_EFFECT_SINGLE(0x55,DIV_CMD_FM_SUS,2,1); - - OP_EFFECT_MULTI(0x56,DIV_CMD_FM_DR,-1,15); - OP_EFFECT_MULTI(0x57,DIV_CMD_FM_DR,0,15); - OP_EFFECT_MULTI(0x58,DIV_CMD_FM_DR,1,15); - - OP_EFFECT_SINGLE(0x5b,DIV_CMD_FM_KSR,2,1); - default: - return false; - } - return true; + EffectHandlerMap fmEffectHandlerMap={ + {0x30, {DIV_CMD_FM_HARD_RESET, "30xx: Toggle hard envelope reset on new notes"}}, }; - auto fmOPLPostEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // DAM - dispatchCmd(DivCommand(DIV_CMD_FM_LFO,ch,effectVal&1)); - break; - case 0x11: // FB - dispatchCmd(DivCommand(DIV_CMD_FM_FB,ch,effectVal&7)); - break; - case 0x12: // TL op1 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,0,effectVal&0x3f)); - break; - case 0x13: // TL op2 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,1,effectVal&0x3f)); - break; - case 0x14: // TL op3 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,2,effectVal&0x3f)); - break; - case 0x15: // TL op4 - dispatchCmd(DivCommand(DIV_CMD_FM_TL,ch,3,effectVal&0x3f)); - break; - case 0x16: // MULT - if ((effectVal>>4)>0 && (effectVal>>4)<5) { - dispatchCmd(DivCommand(DIV_CMD_FM_MULT,ch,(effectVal>>4)-1,effectVal&15)); - } - break; - case 0x17: // DVB - dispatchCmd(DivCommand(DIV_CMD_FM_LFO,ch,2+(effectVal&1))); - break; - case 0x19: // AR global - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,-1,effectVal&15)); - break; - case 0x1a: // AR op1 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,0,effectVal&15)); - break; - case 0x1b: // AR op2 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,1,effectVal&15)); - break; - case 0x1c: // AR op3 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,2,effectVal&15)); - break; - case 0x1d: // AR op4 - dispatchCmd(DivCommand(DIV_CMD_FM_AR,ch,3,effectVal&15)); - break; - - // extra FM effects here - OP_EFFECT_SINGLE(0x50,DIV_CMD_FM_AM,4,1); - OP_EFFECT_SINGLE(0x51,DIV_CMD_FM_SL,4,15); - OP_EFFECT_SINGLE(0x52,DIV_CMD_FM_RR,4,15); - OP_EFFECT_SINGLE(0x53,DIV_CMD_FM_VIB,4,1); - OP_EFFECT_SINGLE(0x54,DIV_CMD_FM_RS,4,3); - OP_EFFECT_SINGLE(0x55,DIV_CMD_FM_SUS,4,1); + EffectHandlerMap fmOPN2EffectHandlerMap(fmEffectHandlerMap); + fmOPN2EffectHandlerMap.insert({ + {0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode"}}, + {0xdf, {DIV_CMD_SAMPLE_DIR, "DFxx: Set sample playback direction (0: normal; 1: reverse)"}}, + }); - OP_EFFECT_MULTI(0x56,DIV_CMD_FM_DR,-1,15); - OP_EFFECT_MULTI(0x57,DIV_CMD_FM_DR,0,15); - OP_EFFECT_MULTI(0x58,DIV_CMD_FM_DR,1,15); - OP_EFFECT_MULTI(0x59,DIV_CMD_FM_DR,2,15); - OP_EFFECT_MULTI(0x5a,DIV_CMD_FM_DR,3,15); + EffectHandlerMap fmOPLDrumsEffectHandlerMap(fmEffectHandlerMap); + fmOPLDrumsEffectHandlerMap.insert({ + {0x18, {DIV_CMD_FM_EXTCH, "18xx: Toggle drums mode (1: enabled; 0: disabled)"}}, + }); - OP_EFFECT_SINGLE(0x5b,DIV_CMD_FM_KSR,4,1); - OP_EFFECT_SINGLE(0x2a,DIV_CMD_FM_WS,4,7); - - default: - return false; - } - return true; + EffectHandlerMap fmOPNPostEffectHandlerMap={ + {0x11, {DIV_CMD_FM_FB, "11xx: Set feedback (0 to 7)"}}, + {0x12, {DIV_CMD_FM_TL, "12xx: Set level of operator 1 (0 highest, 7F lowest)", constVal<0>, effectVal}}, + {0x13, {DIV_CMD_FM_TL, "13xx: Set level of operator 2 (0 highest, 7F lowest)", constVal<1>, effectVal}}, + {0x14, {DIV_CMD_FM_TL, "14xx: Set level of operator 3 (0 highest, 7F lowest)", constVal<2>, effectVal}}, + {0x15, {DIV_CMD_FM_TL, "15xx: Set level of operator 4 (0 highest, 7F lowest)", constVal<3>, effectVal}}, + {0x16, {DIV_CMD_FM_MULT, "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)", effectOpValNoZero<4>, effectValAnd<15>}}, + {0x19, {DIV_CMD_FM_AR, "19xx: Set attack of all operators (0 to 1F)", constVal<-1>, effectValAnd<31>}}, + {0x1a, {DIV_CMD_FM_AR, "1Axx: Set attack of operator 1 (0 to 1F)", constVal<0>, effectValAnd<31>}}, + {0x1b, {DIV_CMD_FM_AR, "1Bxx: Set attack of operator 2 (0 to 1F)", constVal<1>, effectValAnd<31>}}, + {0x1c, {DIV_CMD_FM_AR, "1Cxx: Set attack of operator 3 (0 to 1F)", constVal<2>, effectValAnd<31>}}, + {0x1d, {DIV_CMD_FM_AR, "1Dxx: Set attack of operator 4 (0 to 1F)", constVal<3>, effectValAnd<31>}}, + {0x50, {DIV_CMD_FM_AM, "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)", effectOpVal<4>, effectValAnd<1>}}, + {0x51, {DIV_CMD_FM_SL, "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)", effectOpVal<4>, effectValAnd<15>}}, + {0x52, {DIV_CMD_FM_RR, "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)", effectOpVal<4>, effectValAnd<15>}}, + {0x53, {DIV_CMD_FM_DT, "53xy: Set detune (x: operator from 1 to 4 (0 for all ops); y: detune where 3 is center)", effectOpVal<4>, effectValAnd<7>}}, + {0x54, {DIV_CMD_FM_RS, "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)", effectOpVal<4>, effectValAnd<3>}}, + {0x56, {DIV_CMD_FM_DR, "56xx: Set decay of all operators (0 to 1F)", constVal<-1>, effectValAnd<31>}}, + {0x57, {DIV_CMD_FM_DR, "57xx: Set decay of operator 1 (0 to 1F)", constVal<0>, effectValAnd<31>}}, + {0x58, {DIV_CMD_FM_DR, "58xx: Set decay of operator 2 (0 to 1F)", constVal<1>, effectValAnd<31>}}, + {0x59, {DIV_CMD_FM_DR, "59xx: Set decay of operator 3 (0 to 1F)", constVal<2>, effectValAnd<31>}}, + {0x5a, {DIV_CMD_FM_DR, "5Axx: Set decay of operator 4 (0 to 1F)", constVal<3>, effectValAnd<31>}}, + {0x5b, {DIV_CMD_FM_D2R, "5Bxx: Set decay 2 of all operators (0 to 1F)", constVal<-1>, effectValAnd<31>}}, + {0x5c, {DIV_CMD_FM_D2R, "5Cxx: Set decay 2 of operator 1 (0 to 1F)", constVal<0>, effectValAnd<31>}}, + {0x5d, {DIV_CMD_FM_D2R, "5Dxx: Set decay 2 of operator 2 (0 to 1F)", constVal<1>, effectValAnd<31>}}, + {0x5e, {DIV_CMD_FM_D2R, "5Exx: Set decay 2 of operator 3 (0 to 1F)", constVal<2>, effectValAnd<31>}}, + {0x5f, {DIV_CMD_FM_D2R, "5Fxx: Set decay 2 of operator 4 (0 to 1F)", constVal<3>, effectValAnd<31>}}, }; - auto c64PostEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: // cutoff - dispatchCmd(DivCommand(DIV_CMD_C64_CUTOFF,ch,effectVal)); - break; - case 0x12: // duty - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x13: // resonance - dispatchCmd(DivCommand(DIV_CMD_C64_RESONANCE,ch,effectVal)); - break; - case 0x14: // filter mode - dispatchCmd(DivCommand(DIV_CMD_C64_FILTER_MODE,ch,effectVal)); - break; - case 0x15: // reset time - dispatchCmd(DivCommand(DIV_CMD_C64_RESET_TIME,ch,effectVal)); - break; - case 0x1a: // reset mask - dispatchCmd(DivCommand(DIV_CMD_C64_RESET_MASK,ch,effectVal)); - break; - case 0x1b: // cutoff reset - dispatchCmd(DivCommand(DIV_CMD_C64_FILTER_RESET,ch,effectVal)); - break; - case 0x1c: // duty reset - dispatchCmd(DivCommand(DIV_CMD_C64_DUTY_RESET,ch,effectVal)); - break; - case 0x1e: // extended - dispatchCmd(DivCommand(DIV_CMD_C64_EXTENDED,ch,effectVal)); - break; - case 0x30: case 0x31: case 0x32: case 0x33: - case 0x34: case 0x35: case 0x36: case 0x37: - case 0x38: case 0x39: case 0x3a: case 0x3b: - case 0x3c: case 0x3d: case 0x3e: case 0x3f: // fine duty - dispatchCmd(DivCommand(DIV_CMD_C64_FINE_DUTY,ch,((effect&0x0f)<<8)|effectVal)); - break; - case 0x40: case 0x41: case 0x42: case 0x43: - case 0x44: case 0x45: case 0x46: case 0x47: // fine cutoff - dispatchCmd(DivCommand(DIV_CMD_C64_FINE_CUTOFF,ch,((effect&0x07)<<8)|effectVal)); - break; - default: - return false; - } - return true; + EffectHandlerMap fmOPMPostEffectHandlerMap(fmOPNPostEffectHandlerMap); + fmOPMPostEffectHandlerMap.insert({ + {0x10, {DIV_CMD_STD_NOISE_FREQ, "10xx: Set noise frequency (xx: value; 0 disables noise)"}}, + {0x17, {DIV_CMD_FM_LFO, "17xx: Set LFO speed"}}, + {0x18, {DIV_CMD_FM_LFO_WAVE, "18xx: Set LFO waveform (0 saw, 1 square, 2 triangle, 3 noise)"}}, + {0x1e, {DIV_CMD_FM_AM_DEPTH, "1Exx: Set AM depth (0 to 7F)", effectValAnd<127>}}, + {0x1f, {DIV_CMD_FM_PM_DEPTH, "1Fxx: Set PM depth (0 to 7F)", effectValAnd<127>}}, + {0x55, {DIV_CMD_FM_SSG, "55xy: Set detune 2 (x: operator from 1 to 4 (0 for all ops); y: detune from 0 to 3)", effectOpVal<4>, effectValAnd<3>}}, + }); + + EffectHandlerMap fmOPZPostEffectHandlerMap(fmOPMPostEffectHandlerMap); + fmOPZPostEffectHandlerMap.insert({ + {0x28, {DIV_CMD_FM_REV, "28xy: Set reverb (x: operator from 1 to 4 (0 for all ops); y: reverb from 0 to 7)", effectOpVal<4>, effectValAnd<7>}}, + {0x2a, {DIV_CMD_FM_WS, "2Axy: Set waveform (x: operator from 1 to 4 (0 for all ops); y: waveform from 0 to 7)", effectOpVal<4>, effectValAnd<7>}}, + {0x2b, {DIV_CMD_FM_EG_SHIFT, "2Bxy: Set envelope generator shift (x: operator from 1 to 4 (0 for all ops); y: shift from 0 to 3)", effectOpVal<4>, effectValAnd<3>}}, + {0x2c, {DIV_CMD_FM_FINE, "2Cxy: Set fine multiplier (x: operator from 1 to 4 (0 for all ops); y: fine)", effectOpVal<4>, effectValAnd<15>}}, + }); + const EffectHandler fmOPZFixFreqHandler[4]={ + {DIV_CMD_FM_FIXFREQ, "3xyy: Set fixed frequency of operator 1 (x: octave from 0 to 7; y: frequency)", constVal<0>, effectValLong<11>}, + {DIV_CMD_FM_FIXFREQ, "3xyy: Set fixed frequency of operator 2 (x: octave from 8 to F; y: frequency)", constVal<1>, effectValLong<11>}, + {DIV_CMD_FM_FIXFREQ, "4xyy: Set fixed frequency of operator 3 (x: octave from 0 to 7; y: frequency)", constVal<2>, effectValLong<11>}, + {DIV_CMD_FM_FIXFREQ, "4xyy: Set fixed frequency of operator 4 (x: octave from 8 to F; y: frequency)", constVal<3>, effectValLong<11>}, + }; + for (int i=0; i<32; i++) { + fmOPZPostEffectHandlerMap.emplace(0x30+i,fmOPZFixFreqHandler[i/8]); + } + + fmOPNPostEffectHandlerMap.insert({ + {0x10, {DIV_CMD_FM_LFO, "10xy: Setup LFO (x: enable; y: speed)"}}, + {0x18, {DIV_CMD_FM_EXTCH, "18xx: Toggle extended channel 3 mode"}}, + {0x55, {DIV_CMD_FM_SSG, "55xy: Set SSG envelope (x: operator from 1 to 4 (0 for all ops); y: 0-7 on, 8 off)", effectOpVal<4>, effectValAnd<15>}}, + }); + EffectHandlerMap fmOPN2PostEffectHandlerMap(fmOPNPostEffectHandlerMap); + + fmOPNPostEffectHandlerMap.insert(ayPostEffectHandlerMap.begin(), ayPostEffectHandlerMap.end()); + + EffectHandlerMap fmOPLLPostEffectHandlerMap={ + {0x11, {DIV_CMD_FM_FB, "11xx: Set feedback (0 to 7)"}}, + {0x12, {DIV_CMD_FM_TL, "12xx: Set level of operator 1 (0 highest, 3F lowest)", constVal<0>, effectVal}}, + {0x13, {DIV_CMD_FM_TL, "13xx: Set level of operator 2 (0 highest, 3F lowest)", constVal<1>, effectVal}}, + {0x16, {DIV_CMD_FM_MULT, "16xy: Set operator multiplier (x: operator from 1 to 2; y: multiplier)", effectOpValNoZero<2>, effectValAnd<15>}}, + {0x19, {DIV_CMD_FM_AR, "19xx: Set attack of all operators (0 to F)", constVal<-1>, effectValAnd<15>}}, + {0x1a, {DIV_CMD_FM_AR, "1Axx: Set attack of operator 1 (0 to F)", constVal<0>, effectValAnd<15>}}, + {0x1b, {DIV_CMD_FM_AR, "1Bxx: Set attack of operator 2 (0 to F)", constVal<1>, effectValAnd<15>}}, + {0x50, {DIV_CMD_FM_AM, "50xy: Set AM (x: operator from 1 to 2 (0 for all ops); y: AM)", effectOpVal<2>, effectValAnd<1>}}, + {0x51, {DIV_CMD_FM_SL, "51xy: Set sustain level (x: operator from 1 to 2 (0 for all ops); y: sustain)", effectOpVal<2>, effectValAnd<15>}}, + {0x52, {DIV_CMD_FM_RR, "52xy: Set release (x: operator from 1 to 2 (0 for all ops); y: release)", effectOpVal<2>, effectValAnd<15>}}, + {0x53, {DIV_CMD_FM_VIB, "53xy: Set vibrato (x: operator from 1 to 2 (0 for all ops); y: enabled)", effectOpVal<2>, effectValAnd<1>}}, + {0x54, {DIV_CMD_FM_RS, "54xy: Set envelope scale (x: operator from 1 to 2 (0 for all ops); y: scale from 0 to 3)", effectOpVal<2>, effectValAnd<3>}}, + {0x55, {DIV_CMD_FM_SUS, "55xy: Set envelope sustain (x: operator from 1 to 2 (0 for all ops); y: enabled)", effectOpVal<2>, effectValAnd<1>}}, + {0x56, {DIV_CMD_FM_DR, "56xx: Set decay of all operators (0 to F)", constVal<-1>, effectValAnd<15>}}, + {0x57, {DIV_CMD_FM_DR, "57xx: Set decay of operator 1 (0 to F)", constVal<0>, effectValAnd<15>}}, + {0x58, {DIV_CMD_FM_DR, "58xx: Set decay of operator 2 (0 to F)", constVal<1>, effectValAnd<15>}}, + {0x5b, {DIV_CMD_FM_KSR, "5Bxy: Set whether key will scale envelope (x: operator from 1 to 2 (0 for all ops); y: enabled)", effectOpVal<2>, effectValAnd<1>}}, }; - auto ayPostEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x12: // duty on 8930 - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,0x10+(effectVal&15))); - break; - case 0x20: // mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal&15)); - break; - case 0x21: // noise freq - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_FREQ,ch,effectVal)); - break; - case 0x22: // envelope enable - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_SET,ch,effectVal)); - break; - case 0x23: // envelope period low - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_LOW,ch,effectVal)); - break; - case 0x24: // envelope period high - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_HIGH,ch,effectVal)); - break; - case 0x25: // envelope slide up - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_SLIDE,ch,-effectVal)); - break; - case 0x26: // envelope slide down - dispatchCmd(DivCommand(DIV_CMD_AY_ENVELOPE_SLIDE,ch,effectVal)); - break; - case 0x27: // noise and mask - dispatchCmd(DivCommand(DIV_CMD_AY_NOISE_MASK_AND,ch,effectVal)); - break; - case 0x28: // noise or mask - dispatchCmd(DivCommand(DIV_CMD_AY_NOISE_MASK_OR,ch,effectVal)); - break; - case 0x29: // auto-envelope - dispatchCmd(DivCommand(DIV_CMD_AY_AUTO_ENVELOPE,ch,effectVal)); - break; - case 0x2d: // TEST - dispatchCmd(DivCommand(DIV_CMD_AY_IO_WRITE,ch,255,effectVal)); - break; - case 0x2e: // I/O port A - dispatchCmd(DivCommand(DIV_CMD_AY_IO_WRITE,ch,0,effectVal)); - break; - case 0x2f: // I/O port B - dispatchCmd(DivCommand(DIV_CMD_AY_IO_WRITE,ch,1,effectVal)); - break; - default: - return false; - } - return true; + EffectHandlerMap fmOPLPostEffectHandlerMap={ + {0x10, {DIV_CMD_FM_LFO, "10xx: Set global AM depth (0: 1dB, 1: 4.8dB)", effectValAnd<1>}}, + {0x11, {DIV_CMD_FM_FB, "11xx: Set feedback (0 to 7)"}}, + {0x12, {DIV_CMD_FM_TL, "12xx: Set level of operator 1 (0 highest, 3F lowest)", constVal<0>, effectVal}}, + {0x13, {DIV_CMD_FM_TL, "13xx: Set level of operator 2 (0 highest, 3F lowest)", constVal<1>, effectVal}}, + {0x14, {DIV_CMD_FM_TL, "14xx: Set level of operator 3 (0 highest, 3F lowest)", constVal<2>, effectVal}}, + {0x15, {DIV_CMD_FM_TL, "15xx: Set level of operator 4 (0 highest, 3F lowest)", constVal<3>, effectVal}}, + {0x16, {DIV_CMD_FM_MULT, "16xy: Set operator multiplier (x: operator from 1 to 4; y: multiplier)", effectOpValNoZero<4>, effectValAnd<15>}}, + {0x17, {DIV_CMD_FM_LFO, "17xx: Set global vibrato depth (0: normal, 1: double)", [](unsigned char, unsigned char val) -> int { return (val&1)+2; }}}, + {0x19, {DIV_CMD_FM_AR, "19xx: Set attack of all operators (0 to F)", constVal<-1>, effectValAnd<15>}}, + {0x1a, {DIV_CMD_FM_AR, "1Axx: Set attack of operator 1 (0 to F)", constVal<0>, effectValAnd<15>}}, + {0x1b, {DIV_CMD_FM_AR, "1Bxx: Set attack of operator 2 (0 to F)", constVal<1>, effectValAnd<15>}}, + {0x1c, {DIV_CMD_FM_AR, "1Cxx: Set attack of operator 3 (0 to F)", constVal<2>, effectValAnd<15>}}, + {0x1d, {DIV_CMD_FM_AR, "1Dxx: Set attack of operator 4 (0 to F)", constVal<3>, effectValAnd<15>}}, + {0x2a, {DIV_CMD_FM_WS, "2Axy: Set waveform (x: operator from 1 to 4 (0 for all ops); y: waveform from 0 to 3 in OPL2 and 0 to 7 in OPL3)", effectOpVal<4>, effectValAnd<7>}}, + {0x50, {DIV_CMD_FM_AM, "50xy: Set AM (x: operator from 1 to 4 (0 for all ops); y: AM)", effectOpVal<4>, effectValAnd<1>}}, + {0x51, {DIV_CMD_FM_SL, "51xy: Set sustain level (x: operator from 1 to 4 (0 for all ops); y: sustain)", effectOpVal<4>, effectValAnd<15>}}, + {0x52, {DIV_CMD_FM_RR, "52xy: Set release (x: operator from 1 to 4 (0 for all ops); y: release)", effectOpVal<4>, effectValAnd<15>}}, + {0x53, {DIV_CMD_FM_VIB, "53xy: Set vibrato (x: operator from 1 to 4 (0 for all ops); y: enabled)", effectOpVal<4>, effectValAnd<1>}}, + {0x54, {DIV_CMD_FM_RS, "54xy: Set envelope scale (x: operator from 1 to 4 (0 for all ops); y: scale from 0 to 3)", effectOpVal<4>, effectValAnd<3>}}, + {0x55, {DIV_CMD_FM_SUS, "55xy: Set envelope sustain (x: operator from 1 to 4 (0 for all ops); y: enabled)", effectOpVal<4>, effectValAnd<1>}}, + {0x56, {DIV_CMD_FM_DR, "56xx: Set decay of all operators (0 to F)", constVal<-1>, effectValAnd<15>}}, + {0x57, {DIV_CMD_FM_DR, "57xx: Set decay of operator 1 (0 to F)", constVal<0>, effectValAnd<15>}}, + {0x58, {DIV_CMD_FM_DR, "58xx: Set decay of operator 2 (0 to F)", constVal<1>, effectValAnd<15>}}, + {0x59, {DIV_CMD_FM_DR, "59xx: Set decay of operator 3 (0 to F)", constVal<2>, effectValAnd<15>}}, + {0x5a, {DIV_CMD_FM_DR, "5Axx: Set decay of operator 4 (0 to F)", constVal<3>, effectValAnd<15>}}, + {0x5b, {DIV_CMD_FM_KSR, "5Bxy: Set whether key will scale envelope (x: operator from 1 to 4 (0 for all ops); y: enabled)", effectOpVal<4>, effectValAnd<1>}}, }; - auto segaPCMPostEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x20: // PCM frequency - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_FREQ,ch,effectVal)); - break; - default: - return false; - } - return true; + EffectHandlerMap c64PostEffectHandlerMap={ + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform (bit 0: triangle; bit 1: saw; bit 2: pulse; bit 3: noise)"}}, + {0x11, {DIV_CMD_C64_CUTOFF, "11xx: Set coarse cutoff (not recommended; use 4xxx instead)"}}, + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set coarse pulse width (not recommended; use 3xxx instead)"}}, + {0x13, {DIV_CMD_C64_RESONANCE, "13xx: Set resonance (0 to F)"}}, + {0x14, {DIV_CMD_C64_FILTER_MODE, "14xx: Set filter mode (bit 0: low pass; bit 1: band pass; bit 2: high pass)"}}, + {0x15, {DIV_CMD_C64_RESET_TIME, "15xx: Set envelope reset time"}}, + {0x1a, {DIV_CMD_C64_RESET_MASK, "1Axx: Disable envelope reset for this channel (1 disables; 0 enables)"}}, + {0x1b, {DIV_CMD_C64_FILTER_RESET, "1Bxy: Reset cutoff (x: on new note; y: now)"}}, + {0x1c, {DIV_CMD_C64_DUTY_RESET, "1Cxy: Reset pulse width (x: on new note; y: now)"}}, + {0x1e, {DIV_CMD_C64_EXTENDED, "1Exy: Change additional parameters"}}, }; + const EffectHandler c64FineDutyHandler(DIV_CMD_C64_FINE_DUTY, "3xxx: Set pulse width (0 to FFF)", effectValLong<12>); + const EffectHandler c64FineCutoffHandler(DIV_CMD_C64_FINE_CUTOFF, "4xxx: Set cutoff (0 to 7FF)", effectValLong<11>); + for (int i=0; i<16; i++) c64PostEffectHandlerMap.emplace(0x30+i,c64FineDutyHandler); + for (int i=0; i<8; i++) c64PostEffectHandlerMap.emplace(0x40+i,c64FineCutoffHandler); + + EffectHandlerMap waveOnlyEffectHandlerMap={ + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform"}}, + }; + + EffectHandlerMap segaPCMPostEffectHandlerMap={ + {0x20, {DIV_CMD_SAMPLE_FREQ, "20xx: Set PCM frequency"}} + }; + + // SysDefs sysDefs[DIV_SYSTEM_YMU759]=new DivSysDef( "Yamaha YMU759 (MA-2)", NULL, 0x01, 0x01, 17, true, false, 0, false, @@ -774,15 +606,8 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE}, {DIV_INS_STD, DIV_INS_STD, DIV_INS_STD, DIV_INS_STD}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x20: // SN noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x20, {DIV_CMD_STD_NOISE_MODE, "20xy: Set noise mode (x: preset freq/ch3 freq; y: thin pulse/noise)"}} } ); @@ -800,24 +625,12 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_WAVE, DIV_CH_NOISE}, {DIV_INS_GB, DIV_INS_GB, DIV_INS_GB, DIV_INS_GB}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: case 0x12: // duty or noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x13: // sweep params - dispatchCmd(DivCommand(DIV_CMD_GB_SWEEP_TIME,ch,effectVal)); - break; - case 0x14: // sweep direction - dispatchCmd(DivCommand(DIV_CMD_GB_SWEEP_DIR,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform"}}, + {0x11, {DIV_CMD_STD_NOISE_MODE, "11xx: Set noise length (0: long; 1: short)"}}, + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set duty cycle (0 to 3)"}}, + {0x13, {DIV_CMD_GB_SWEEP_TIME, "13xy: Setup sweep (x: time; y: shift)"}}, + {0x14, {DIV_CMD_GB_SWEEP_DIR, "14xx: Set sweep direction (0: up; 1: down)"}} } ); @@ -829,27 +642,12 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_PCE, DIV_INS_PCE, DIV_INS_PCE, DIV_INS_PCE, DIV_INS_PCE, DIV_INS_PCE}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: // noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x12: // LFO mode - dispatchCmd(DivCommand(DIV_CMD_PCE_LFO_MODE,ch,effectVal)); - break; - case 0x13: // LFO speed - dispatchCmd(DivCommand(DIV_CMD_PCE_LFO_SPEED,ch,effectVal)); - break; - case 0x17: // PCM enable - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,(effectVal>0))); - break; - default: - return false; - } - return true; + { + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform"}}, + {0x11, {DIV_CMD_STD_NOISE_MODE, "11xx: Toggle noise mode"}}, + {0x12, {DIV_CMD_PCE_LFO_MODE, "12xx: Setup LFO (0: disabled; 1: 1x depth; 2: 16x depth; 3: 256x depth)"}}, + {0x13, {DIV_CMD_PCE_LFO_SPEED, "13xx: Set LFO speed"}}, + {0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode"}} } ); @@ -861,27 +659,12 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_WAVE, DIV_CH_NOISE, DIV_CH_PCM}, {DIV_INS_STD, DIV_INS_STD, DIV_INS_STD, DIV_INS_STD, DIV_INS_AMIGA}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x11: // DMC write - dispatchCmd(DivCommand(DIV_CMD_NES_DMC,ch,effectVal)); - break; - case 0x12: // duty or noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x13: // sweep up - dispatchCmd(DivCommand(DIV_CMD_NES_SWEEP,ch,0,effectVal)); - break; - case 0x14: // sweep down - dispatchCmd(DivCommand(DIV_CMD_NES_SWEEP,ch,1,effectVal)); - break; - case 0x18: // DPCM mode - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x11, {DIV_CMD_NES_DMC, "11xx: Write to delta modulation counter (0 to 7F)"}}, + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set duty cycle/noise mode (pulse: 0 to 3; noise: 0 or 1)"}}, + {0x13, {DIV_CMD_NES_SWEEP, "13xy: Sweep up (x: time; y: shift)",constVal<0>,effectVal}}, + {0x14, {DIV_CMD_NES_SWEEP, "14xy: Sweep down (x: time; y: shift)",constVal<1>,effectVal}}, + {0x18, {DIV_CMD_SAMPLE_MODE, "18xx: Select PCM/DPCM mode (0: PCM; 1: DPCM)"}} } ); @@ -905,8 +688,8 @@ void DivEngine::registerSystems() { {DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_C64, DIV_INS_C64, DIV_INS_C64}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - c64PostEffectHandler + {}, + c64PostEffectHandlerMap ); sysDefs[DIV_SYSTEM_C64_8580]=new DivSysDef( @@ -917,8 +700,8 @@ void DivEngine::registerSystems() { {DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_C64, DIV_INS_C64, DIV_INS_C64}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - c64PostEffectHandler + {}, + c64PostEffectHandlerMap ); sysDefs[DIV_SYSTEM_ARCADE]=new DivSysDef( @@ -927,17 +710,6 @@ void DivEngine::registerSystems() { {}, {}, {}, {} ); - auto fmHardResetEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x30: // toggle hard-reset - dispatchCmd(DivCommand(DIV_CMD_FM_HARD_RESET,ch,effectVal)); - break; - default: - return false; - } - return true; - }; - sysDefs[DIV_SYSTEM_YM2610]=new DivSysDef( "Neo Geo CD", NULL, 0x09, 0x09, 13, true, true, 0x151, false, "like Neo Geo, but lacking the ADPCM-B channel since they couldn't connect the pins.", @@ -946,8 +718,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_YM2610_EXT]=new DivSysDef( @@ -958,8 +730,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_AY8910]=new DivSysDef( @@ -970,8 +742,8 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, {DIV_INS_AY, DIV_INS_AY, DIV_INS_AY}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - ayPostEffectHandler + {}, + ayPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_AMIGA]=new DivSysDef( @@ -982,22 +754,11 @@ void DivEngine::registerSystems() { {DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // toggle filter - dispatchCmd(DivCommand(DIV_CMD_AMIGA_FILTER,ch,effectVal)); - break; - case 0x11: // toggle AM - dispatchCmd(DivCommand(DIV_CMD_AMIGA_AM,ch,effectVal)); - break; - case 0x12: // toggle PM - dispatchCmd(DivCommand(DIV_CMD_AMIGA_PM,ch,effectVal)); - break; - default: - return false; - } - return true; + {}, + { + {0x10, {DIV_CMD_AMIGA_FILTER, "10xx: Toggle filter (0 disables; 1 enables)"}}, + {0x11, {DIV_CMD_AMIGA_AM, "11xx: Toggle AM with next channel"}}, + {0x12, {DIV_CMD_AMIGA_PM, "12xx: Toggle period modulation with next channel"}}, } ); @@ -1009,24 +770,10 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPMPostEffectHandlerMap ); - auto opn2EffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x17: // DAC enable - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,(effectVal>0))); - break; - case 0x30: // toggle hard-reset - dispatchCmd(DivCommand(DIV_CMD_FM_HARD_RESET,ch,effectVal)); - break; - default: - return false; - } - return true; - }; - sysDefs[DIV_SYSTEM_YM2612]=new DivSysDef( "Yamaha YM2612 (OPN2)", NULL, 0x83, 0, 6, true, false, 0x150, false, "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).", @@ -1035,8 +782,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA}, - opn2EffectHandler, - fmPostEffectHandler + fmOPN2EffectHandlerMap, + fmOPN2PostEffectHandlerMap ); sysDefs[DIV_SYSTEM_TIA]=new DivSysDef( @@ -1047,17 +794,8 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_TIA, DIV_INS_TIA}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - default: - return false; - } - return true; - } + {}, + waveOnlyEffectHandlerMap ); sysDefs[DIV_SYSTEM_SAA1099]=new DivSysDef( @@ -1068,22 +806,11 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, {DIV_INS_SAA1099, DIV_INS_SAA1099, DIV_INS_SAA1099, DIV_INS_SAA1099, DIV_INS_SAA1099, DIV_INS_SAA1099}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select channel mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x11: // set noise freq - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_FREQ,ch,effectVal)); - break; - case 0x12: // setup envelope - dispatchCmd(DivCommand(DIV_CMD_SAA_ENVELOPE,ch,effectVal)); - break; - default: - return false; - } - return true; + {}, + { + {0x10, {DIV_CMD_STD_NOISE_MODE, "10xy: Set channel mode (x: noise; y: tone)"}}, + {0x11, {DIV_CMD_STD_NOISE_FREQ, "11xx: Set noise frequency"}}, + {0x12, {DIV_CMD_SAA_ENVELOPE, "12xx: Setup envelope (refer to docs for more information)"}}, } ); @@ -1095,21 +822,10 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, {DIV_INS_AY8930, DIV_INS_AY8930, DIV_INS_AY8930}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - ayPostEffectHandler + {}, + ay8930PostEffectHandlerMap ); - auto waveOnlyEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - default: - return false; - } - return true; - }; - sysDefs[DIV_SYSTEM_VIC20]=new DivSysDef( "Commodore VIC-20", NULL, 0x85, 0, 4, false, true, 0, false, "Commodore's successor to the PET.\nits square wave channels are more than just square...", @@ -1118,7 +834,7 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE}, {DIV_INS_VIC, DIV_INS_VIC, DIV_INS_VIC, DIV_INS_VIC}, {}, - waveOnlyEffectHandler + waveOnlyEffectHandlerMap ); sysDefs[DIV_SYSTEM_PET]=new DivSysDef( @@ -1129,7 +845,7 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE}, {DIV_INS_PET}, {}, - waveOnlyEffectHandler + waveOnlyEffectHandlerMap ); sysDefs[DIV_SYSTEM_SNES]=new DivSysDef( @@ -1149,32 +865,12 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_WAVE}, {DIV_INS_VRC6, DIV_INS_VRC6, DIV_INS_VRC6_SAW}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_NULL}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x12: // duty or noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x17: // PCM enable - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,(effectVal>0))); - break; - default: - return false; - } - return true; + { + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set duty cycle (pulse: 0 to 7)"}}, + {0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode (pulse channel)"}}, } ); - auto oplEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x30: // toggle hard-reset - dispatchCmd(DivCommand(DIV_CMD_FM_HARD_RESET,ch,effectVal)); - break; - default: - return false; - } - return true; - }; - sysDefs[DIV_SYSTEM_OPLL]=new DivSysDef( "Yamaha YM2413 (OPLL)", NULL, 0x89, 0, 9, true, false, 0x150, false, "cost-reduced version of the OPL with 16 patches and only one of them is user-configurable.", @@ -1183,8 +879,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL}, {}, - oplEffectHandler, - fmOPLLPostEffectHandler + fmEffectHandlerMap, + fmOPLLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_FDS]=new DivSysDef( @@ -1195,30 +891,13 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE}, {DIV_INS_FDS}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: // modulation depth - dispatchCmd(DivCommand(DIV_CMD_FDS_MOD_DEPTH,ch,effectVal)); - break; - case 0x12: // modulation enable/high - dispatchCmd(DivCommand(DIV_CMD_FDS_MOD_HIGH,ch,effectVal)); - break; - case 0x13: // modulation low - dispatchCmd(DivCommand(DIV_CMD_FDS_MOD_LOW,ch,effectVal)); - break; - case 0x14: // modulation pos - dispatchCmd(DivCommand(DIV_CMD_FDS_MOD_POS,ch,effectVal)); - break; - case 0x15: // modulation wave - dispatchCmd(DivCommand(DIV_CMD_FDS_MOD_WAVE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform"}}, + {0x11, {DIV_CMD_FDS_MOD_DEPTH, "11xx: Set modulation depth"}}, + {0x12, {DIV_CMD_FDS_MOD_HIGH, "12xy: Set modulation speed high byte (x: enable; y: value)"}}, + {0x13, {DIV_CMD_FDS_MOD_LOW, "13xx: Set modulation speed low byte"}}, + {0x14, {DIV_CMD_FDS_MOD_POS, "14xx: Set modulator position"}}, + {0x15, {DIV_CMD_FDS_MOD_WAVE, "15xx: Set modulator table to waveform"}}, } ); @@ -1230,18 +909,8 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM}, {DIV_INS_STD, DIV_INS_STD, DIV_INS_AMIGA}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x11: // DMC write - dispatchCmd(DivCommand(DIV_CMD_NES_DMC,ch,effectVal)); - break; - case 0x12: // duty or noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set duty cycle/noise mode (pulse: 0 to 3; noise: 0 or 1)"}}, } ); @@ -1253,51 +922,20 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_N163, DIV_INS_N163, DIV_INS_N163, DIV_INS_N163, DIV_INS_N163, DIV_INS_N163, DIV_INS_N163, DIV_INS_N163}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select instrument waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: // select instrument waveform position in RAM - dispatchCmd(DivCommand(DIV_CMD_N163_WAVE_POSITION,ch,effectVal)); - break; - case 0x12: // select instrument waveform length in RAM - dispatchCmd(DivCommand(DIV_CMD_N163_WAVE_LENGTH,ch,effectVal)); - break; - case 0x13: // change instrument waveform update mode - dispatchCmd(DivCommand(DIV_CMD_N163_WAVE_MODE,ch,effectVal)); - break; - case 0x14: // select waveform for load to RAM - dispatchCmd(DivCommand(DIV_CMD_N163_WAVE_LOAD,ch,effectVal)); - break; - case 0x15: // select waveform position for load to RAM - dispatchCmd(DivCommand(DIV_CMD_N163_WAVE_LOADPOS,ch,effectVal)); - break; - case 0x16: // select waveform length for load to RAM - dispatchCmd(DivCommand(DIV_CMD_N163_WAVE_LOADLEN,ch,effectVal)); - break; - case 0x17: // change waveform load mode - dispatchCmd(DivCommand(DIV_CMD_N163_WAVE_LOADMODE,ch,effectVal)); - break; - case 0x18: // change channel limits - dispatchCmd(DivCommand(DIV_CMD_N163_CHANNEL_LIMIT,ch,effectVal)); - break; - case 0x20: // (global) select waveform for load to RAM - dispatchCmd(DivCommand(DIV_CMD_N163_GLOBAL_WAVE_LOAD,ch,effectVal)); - break; - case 0x21: // (global) select waveform position for load to RAM - dispatchCmd(DivCommand(DIV_CMD_N163_GLOBAL_WAVE_LOADPOS,ch,effectVal)); - break; - case 0x22: // (global) select waveform length for load to RAM - dispatchCmd(DivCommand(DIV_CMD_N163_GLOBAL_WAVE_LOADLEN,ch,effectVal)); - break; - case 0x23: // (global) change waveform load mode - dispatchCmd(DivCommand(DIV_CMD_N163_GLOBAL_WAVE_LOADMODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x10, {DIV_CMD_WAVE, "10xx: Select waveform"}}, + {0x11, {DIV_CMD_N163_WAVE_POSITION, "11xx: Set waveform position in RAM (single nibble unit)"}}, + {0x12, {DIV_CMD_N163_WAVE_LENGTH, "12xx: Set waveform length in RAM (04 to FC, 4 nibble unit)"}}, + {0x13, {DIV_CMD_N163_WAVE_MODE, "130x: Change waveform update mode (0: off; bit 0: update now; bit 1: update when every waveform changes)"}}, + {0x14, {DIV_CMD_N163_WAVE_LOAD, "14xx: Select waveform for load to RAM"}}, + {0x15, {DIV_CMD_N163_WAVE_LOADPOS, "15xx: Set waveform position for load to RAM (single nibble unit)"}}, + {0x16, {DIV_CMD_N163_WAVE_LOADLEN, "16xx: Set waveform length for load to RAM (04 to FC, 4 nibble unit)"}}, + {0x17, {DIV_CMD_N163_WAVE_LOADMODE, "170x: Change waveform load mode (0: off; bit 0: load now; bit 1: load when every waveform changes)"}}, + {0x18, {DIV_CMD_N163_CHANNEL_LIMIT, "180x: Change channel limits (0 to 7, x + 1)"}}, + {0x20, {DIV_CMD_N163_GLOBAL_WAVE_LOAD, "20xx: (Global) Select waveform for load to RAM"}}, + {0x21, {DIV_CMD_N163_GLOBAL_WAVE_LOADPOS, "21xx: (Global) Set waveform position for load to RAM (single nibble unit)"}}, + {0x22, {DIV_CMD_N163_GLOBAL_WAVE_LOADLEN, "22xx: (Global) Set waveform length for load to RAM (04 to FC, 4 nibble unit)"}}, + {0x23, {DIV_CMD_N163_GLOBAL_WAVE_LOADMODE, "230x: (Global) Change waveform load mode (0: off; bit 0: load now; bit 1: load when every waveform changes)"}}, } ); @@ -1309,8 +947,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_OPN_EXT]=new DivSysDef( @@ -1321,8 +959,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_PC98]=new DivSysDef( @@ -1333,8 +971,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_PC98_EXT]=new DivSysDef( @@ -1345,8 +983,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_OPL]=new DivSysDef( @@ -1357,8 +995,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL}, {}, - oplEffectHandler, - fmOPLPostEffectHandler + fmEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_OPL2]=new DivSysDef( @@ -1369,8 +1007,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL}, {}, - oplEffectHandler, - fmOPLPostEffectHandler + fmEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_OPL3]=new DivSysDef( @@ -1381,8 +1019,8 @@ void DivEngine::registerSystems() { {DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL}, {}, - oplEffectHandler, - fmOPLPostEffectHandler + fmEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_MULTIPCM]=new DivSysDef( @@ -1429,27 +1067,12 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_PCM, DIV_CH_WAVE, DIV_CH_NOISE}, {DIV_INS_SWAN, DIV_INS_SWAN, DIV_INS_SWAN, DIV_INS_SWAN}, {DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_NULL, DIV_INS_NULL}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: // noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x12: // sweep period - dispatchCmd(DivCommand(DIV_CMD_WS_SWEEP_TIME,ch,effectVal)); - break; - case 0x13: // sweep amount - dispatchCmd(DivCommand(DIV_CMD_WS_SWEEP_AMOUNT,ch,effectVal)); - break; - case 0x17: // PCM enable - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,(effectVal>0))); - break; - default: - return false; - } - return true; + { + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform"}}, + {0x11, {DIV_CMD_STD_NOISE_MODE, "11xx: Setup noise mode (0: disabled; 1-8: enabled/tap)"}}, + {0x12, {DIV_CMD_WS_SWEEP_TIME, "12xx: Setup sweep period (0: disabled; 1-20: enabled/period)"}}, + {0x13, {DIV_CMD_WS_SWEEP_AMOUNT, "13xx: Set sweep amount"}}, + {0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode"}}, } ); @@ -1461,17 +1084,10 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_OPZ, DIV_INS_OPZ, DIV_INS_OPZ, DIV_INS_OPZ, DIV_INS_OPZ, DIV_INS_OPZ, DIV_INS_OPZ, DIV_INS_OPZ}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x2f: // toggle hard-reset - dispatchCmd(DivCommand(DIV_CMD_FM_HARD_RESET,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x2f, {DIV_CMD_FM_HARD_RESET, "2Fxx: Toggle hard envelope reset on new notes"}}, }, - fmPostEffectHandler + fmOPZPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_POKEMINI]=new DivSysDef( @@ -1491,8 +1107,8 @@ void DivEngine::registerSystems() { {DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - segaPCMPostEffectHandler + {}, + segaPCMPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_VBOY]=new DivSysDef( @@ -1512,8 +1128,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL}, {}, - oplEffectHandler, - fmOPLLPostEffectHandler + fmEffectHandlerMap, + fmOPLLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_YM2610B]=new DivSysDef( @@ -1524,8 +1140,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_SFX_BEEPER]=new DivSysDef( @@ -1536,18 +1152,9 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_BEEPER, DIV_INS_BEEPER, DIV_INS_BEEPER, DIV_INS_BEEPER, DIV_INS_BEEPER, DIV_INS_BEEPER}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x12: // pulse width - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x17: // overlay sample - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set pulse width"}}, + {0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Trigger overlay drum"}}, } ); @@ -1559,8 +1166,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA}, - opn2EffectHandler, - fmPostEffectHandler + fmOPN2EffectHandlerMap, + fmOPN2PostEffectHandlerMap ); sysDefs[DIV_SYSTEM_SCC]=new DivSysDef( @@ -1571,23 +1178,9 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_SCC, DIV_INS_SCC, DIV_INS_SCC, DIV_INS_SCC, DIV_INS_SCC}, {}, - waveOnlyEffectHandler + waveOnlyEffectHandlerMap ); - auto oplDrumsEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x18: // drum mode toggle - dispatchCmd(DivCommand(DIV_CMD_FM_EXTCH,ch,effectVal)); - break; - case 0x30: // toggle hard-reset - dispatchCmd(DivCommand(DIV_CMD_FM_HARD_RESET,ch,effectVal)); - break; - default: - return false; - } - return true; - }; - sysDefs[DIV_SYSTEM_OPL_DRUMS]=new DivSysDef( "Yamaha YM3526 (OPL) with drums", NULL, 0xa2, 0, 11, true, false, 0x151, false, "the OPL chip but with drums mode enabled.", @@ -1596,8 +1189,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL}, - oplDrumsEffectHandler, - fmOPLPostEffectHandler + fmOPLDrumsEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_OPL2_DRUMS]=new DivSysDef( @@ -1608,8 +1201,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL}, - oplDrumsEffectHandler, - fmOPLPostEffectHandler + fmOPLDrumsEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_OPL3_DRUMS]=new DivSysDef( @@ -1620,8 +1213,8 @@ void DivEngine::registerSystems() { {DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL}, - oplDrumsEffectHandler, - fmOPLPostEffectHandler + fmOPLDrumsEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_YM2610_FULL]=new DivSysDef( @@ -1632,8 +1225,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_YM2610_FULL_EXT]=new DivSysDef( @@ -1644,8 +1237,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_OPLL_DRUMS]=new DivSysDef( @@ -1656,10 +1249,16 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL, DIV_INS_OPLL}, {}, - oplDrumsEffectHandler, - fmOPLLPostEffectHandler + fmOPLDrumsEffectHandlerMap, + fmOPLLPostEffectHandlerMap ); + EffectHandlerMap lynxEffectHandlerMap; + const EffectHandler lynxLFSRHandler(DIV_CMD_LYNX_LFSR_LOAD, "3xxx: Load LFSR (0 to FFF)", effectValLong<12>); + for (int i=0; i<16; i++) { + lynxEffectHandlerMap.emplace(0x30+i, lynxLFSRHandler); + } + sysDefs[DIV_SYSTEM_LYNX]=new DivSysDef( "Atari Lynx", NULL, 0xa8, 0, 4, false, true, 0, false, "a portable console made by Atari. it has all of Atari's trademark waveforms.", @@ -1668,17 +1267,20 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_MIKEY, DIV_INS_MIKEY, DIV_INS_MIKEY, DIV_INS_MIKEY}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - if (effect>=0x30 && effect<0x40) { - int value=((int)(effect&0x0f)<<8)|effectVal; - dispatchCmd(DivCommand(DIV_CMD_LYNX_LFSR_LOAD,ch,value)); - return true; - } - return false; - } + {}, + lynxEffectHandlerMap ); + EffectHandlerMap qSoundEffectHandlerMap={ + {0x10, {DIV_CMD_QSOUND_ECHO_FEEDBACK, "10xx: Set echo feedback level (00 to FF)"}}, + {0x11, {DIV_CMD_QSOUND_ECHO_LEVEL, "11xx: Set channel echo level (00 to FF)"}}, + {0x12, {DIV_CMD_QSOUND_SURROUND, "12xx: Toggle QSound algorithm (0: disabled; 1: enabled)"}}, + }; + const EffectHandler qSoundEchoDelayHandler(DIV_CMD_QSOUND_ECHO_DELAY, "3xxx: Set echo delay buffer length (000 to AA5)", effectValLong<12>); + for (int i=0; i<16; i++) { + qSoundEffectHandlerMap.emplace(0x30+i, qSoundEchoDelayHandler); + } + sysDefs[DIV_SYSTEM_QSOUND]=new DivSysDef( "Capcom QSound", NULL, 0xe0, 0, 19, false, true, 0x161, false, "used in some of Capcom's arcade boards. surround-like sampled sound with echo.", @@ -1687,27 +1289,7 @@ void DivEngine::registerSystems() { {DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // echo feedback - dispatchCmd(DivCommand(DIV_CMD_QSOUND_ECHO_FEEDBACK,ch,effectVal)); - break; - case 0x11: // echo level - dispatchCmd(DivCommand(DIV_CMD_QSOUND_ECHO_LEVEL,ch,effectVal)); - break; - case 0x12: // surround - dispatchCmd(DivCommand(DIV_CMD_QSOUND_SURROUND,ch,effectVal)); - break; - default: - if ((effect&0xf0)==0x30) { - dispatchCmd(DivCommand(DIV_CMD_QSOUND_ECHO_DELAY,ch,((effect & 0x0f) << 8) | effectVal)); - } else { - return false; - } - break; - } - return true; - } + qSoundEffectHandlerMap ); sysDefs[DIV_SYSTEM_VERA]=new DivSysDef( @@ -1718,18 +1300,9 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM}, {DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_VERA, DIV_INS_AMIGA}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x20: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x22: // duty - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x20, {DIV_CMD_WAVE, "20xx: Set waveform"}}, + {0x22, {DIV_CMD_STD_NOISE_MODE, "22xx: Set duty cycle (0 to 3F)"}}, } ); @@ -1741,8 +1314,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - fmHardResetEffectHandler, - fmPostEffectHandler + fmEffectHandlerMap, + fmOPNPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_SEGAPCM_COMPAT]=new DivSysDef( @@ -1753,8 +1326,8 @@ void DivEngine::registerSystems() { {DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - segaPCMPostEffectHandler + {}, + segaPCMPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_X1_010]=new DivSysDef( @@ -1765,46 +1338,18 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010, DIV_INS_X1_010}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: // select envelope shape - dispatchCmd(DivCommand(DIV_CMD_X1_010_ENVELOPE_SHAPE,ch,effectVal)); - break; - case 0x17: // PCM enable - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,(effectVal>0))); - break; - default: - return false; - } - return true; + { + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform"}}, + {0x11, {DIV_CMD_X1_010_ENVELOPE_SHAPE, "11xx: Set envelope shape"}}, + {0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode"}}, }, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x20: // PCM frequency - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_FREQ,ch,effectVal)); - break; - case 0x22: // envelope mode - dispatchCmd(DivCommand(DIV_CMD_X1_010_ENVELOPE_MODE,ch,effectVal)); - break; - case 0x23: // envelope period - dispatchCmd(DivCommand(DIV_CMD_X1_010_ENVELOPE_PERIOD,ch,effectVal)); - break; - case 0x25: // envelope slide up - dispatchCmd(DivCommand(DIV_CMD_X1_010_ENVELOPE_SLIDE,ch,effectVal)); - break; - case 0x26: // envelope slide down - dispatchCmd(DivCommand(DIV_CMD_X1_010_ENVELOPE_SLIDE,ch,-effectVal)); - break; - case 0x29: // auto-envelope - dispatchCmd(DivCommand(DIV_CMD_X1_010_AUTO_ENVELOPE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x20, {DIV_CMD_SAMPLE_FREQ, "20xx: Set PCM frequency (1 to FF)"}}, + {0x22, {DIV_CMD_X1_010_ENVELOPE_MODE, "22xx: Set envelope mode (bit 0: enable; bit 1: one-shot; bit 2: split shape to L/R; bit 3/5: H.invert right/left; bit 4/6: V.invert right/left)"}}, + {0x23, {DIV_CMD_X1_010_ENVELOPE_PERIOD, "23xx: Set envelope period"}}, + {0x25, {DIV_CMD_X1_010_ENVELOPE_SLIDE, "25xx: Envelope slide up"}}, + {0x26, {DIV_CMD_X1_010_ENVELOPE_SLIDE, "26xx: Envelope slide down", negEffectVal}}, + {0x29, {DIV_CMD_X1_010_AUTO_ENVELOPE, "29xy: Set auto-envelope (x: numerator; y: denominator)"}}, } ); @@ -1816,7 +1361,7 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_SCC, DIV_INS_SCC}, {}, - waveOnlyEffectHandler + waveOnlyEffectHandlerMap ); // to Grauw: feel free to change this to 24 during development of OPL4's PCM part. @@ -1855,8 +1400,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PCM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_AMIGA}, {}, - oplEffectHandler, - fmOPLPostEffectHandler + fmEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_Y8950_DRUMS]=new DivSysDef( @@ -1867,8 +1412,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_AMIGA}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_NULL}, - oplEffectHandler, - fmOPLPostEffectHandler + fmEffectHandlerMap, + fmOPLPostEffectHandlerMap ); sysDefs[DIV_SYSTEM_SCC_PLUS]=new DivSysDef( @@ -1879,9 +1424,34 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_SCC, DIV_INS_SCC, DIV_INS_SCC, DIV_INS_SCC, DIV_INS_SCC}, {}, - waveOnlyEffectHandler + waveOnlyEffectHandlerMap ); + EffectHandlerMap suEffectHandlerMap={ + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform (0 to 7)"}}, + {0x12, {DIV_CMD_STD_NOISE_MODE, "22xx: Set envelope mode (bit 0: enable; bit 1: one-shot; bit 2: split shape to L/R; bit 3/5: H.invert right/left; bit 4/6: V.invert right/left)"}}, + {0x13, {DIV_CMD_C64_RESONANCE, "23xx: Set envelope period"}}, + {0x14, {DIV_CMD_C64_FILTER_MODE, "25xx: Envelope slide up"}}, + {0x15, {DIV_CMD_SU_SWEEP_PERIOD_LOW, "15xx: Set frequency sweep period low byte", constVal<0>, effectVal}}, + {0x16, {DIV_CMD_SU_SWEEP_PERIOD_HIGH, "16xx: Set frequency sweep period high byte", constVal<0>, effectVal}}, + {0x17, {DIV_CMD_SU_SWEEP_PERIOD_LOW, "17xx: Set volume sweep period low byte", constVal<1>, effectVal}}, + {0x18, {DIV_CMD_SU_SWEEP_PERIOD_HIGH, "18xx: Set volume sweep period high byte", constVal<1>, effectVal}}, + {0x19, {DIV_CMD_SU_SWEEP_PERIOD_LOW, "19xx: Set cutoff sweep period low byte", constVal<2>, effectVal}}, + {0x1a, {DIV_CMD_SU_SWEEP_PERIOD_HIGH, "1axx: Set cutoff sweep period high byte", constVal<2>, effectVal}}, + {0x1b, {DIV_CMD_SU_SWEEP_BOUND, "1Bxx: Set frequency sweep boundary", constVal<0>, effectVal}}, + {0x1c, {DIV_CMD_SU_SWEEP_BOUND, "1Cxx: Set volume sweep boundary", constVal<1>, effectVal}}, + {0x1d, {DIV_CMD_SU_SWEEP_BOUND, "1Dxx: Set cutoff sweep boundary", constVal<2>, effectVal}}, + {0x1e, {DIV_CMD_SU_SYNC_PERIOD_LOW, "1Exx: Set phase reset period low byte"}}, + {0x1f, {DIV_CMD_SU_SYNC_PERIOD_HIGH, "1Fxx: Set phase reset period high byte"}}, + {0x20, {DIV_CMD_SU_SWEEP_ENABLE, "20xx: Toggle frequency sweep (bit 0-6: speed; bit 7: direction is up)", constVal<0>, effectVal}}, + {0x21, {DIV_CMD_SU_SWEEP_ENABLE, "21xx: Toggle volume sweep (bit 0-4: speed; bit 5: direciton is up; bit 6: loop; bit 7: alternate)", constVal<1>, effectVal}}, + {0x22, {DIV_CMD_SU_SWEEP_ENABLE, "22xx: Toggle cutoff sweep (bit 0-6: speed; bit 7: direction is up)", constVal<2>, effectVal}}, + }; + const EffectHandler suCutoffHandler(DIV_CMD_C64_FINE_DUTY, "4xxx: Set cutoff (0 to FFF)", effectValLong<12>); + for (int i=0; i<16; i++) { + suEffectHandlerMap.emplace(0x40+i, suCutoffHandler); + } + sysDefs[DIV_SYSTEM_SOUND_UNIT]=new DivSysDef( "tildearrow Sound Unit", NULL, 0xb5, 0, 8, false, true, 0, false, "tildearrow's fantasy sound chip. put SID, AY and VERA in a blender, and you get this!", @@ -1890,74 +1460,8 @@ void DivEngine::registerSystems() { {DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE}, {DIV_INS_SU, DIV_INS_SU, DIV_INS_SU, DIV_INS_SU, DIV_INS_SU, DIV_INS_SU, DIV_INS_SU, DIV_INS_SU}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, - [](int,unsigned char,unsigned char) -> bool {return false;}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x12: // duty cycle - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - case 0x13: // resonance - dispatchCmd(DivCommand(DIV_CMD_C64_RESONANCE,ch,effectVal)); - break; - case 0x14: // filter mode - dispatchCmd(DivCommand(DIV_CMD_C64_FILTER_MODE,ch,effectVal)); - break; - case 0x15: // freq sweep - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_PERIOD_LOW,ch,0,effectVal)); - break; - case 0x16: // freq sweep - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_PERIOD_HIGH,ch,0,effectVal)); - break; - case 0x17: // vol sweep - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_PERIOD_LOW,ch,1,effectVal)); - break; - case 0x18: // vol sweep - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_PERIOD_HIGH,ch,1,effectVal)); - break; - case 0x19: // cut sweep - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_PERIOD_LOW,ch,2,effectVal)); - break; - case 0x1a: // cut sweep - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_PERIOD_HIGH,ch,2,effectVal)); - break; - case 0x1b: // freq sweep bound - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_BOUND,ch,0,effectVal)); - break; - case 0x1c: // vol sweep bound - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_BOUND,ch,1,effectVal)); - break; - case 0x1d: // cut sweep bound - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_BOUND,ch,2,effectVal)); - break; - case 0x1e: // sync low - dispatchCmd(DivCommand(DIV_CMD_SU_SYNC_PERIOD_LOW,ch,effectVal)); - break; - case 0x1f: // sync high - dispatchCmd(DivCommand(DIV_CMD_SU_SYNC_PERIOD_HIGH,ch,effectVal)); - break; - case 0x20: // freq sweep enable - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_ENABLE,ch,0,effectVal)); - break; - case 0x21: // vol sweep enable - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_ENABLE,ch,1,effectVal)); - break; - case 0x22: // cut sweep enable - dispatchCmd(DivCommand(DIV_CMD_SU_SWEEP_ENABLE,ch,2,effectVal)); - break; - case 0x40: case 0x41: case 0x42: case 0x43: - case 0x44: case 0x45: case 0x46: case 0x47: - case 0x48: case 0x49: case 0x4a: case 0x4b: - case 0x4c: case 0x4d: case 0x4e: case 0x4f: // cutoff - dispatchCmd(DivCommand(DIV_CMD_C64_FINE_CUTOFF,ch,(((effect&0x0f)<<8)|effectVal)*4)); - break; - default: - return false; - } - return true; - } + {}, + suEffectHandlerMap ); sysDefs[DIV_SYSTEM_MSM6295]=new DivSysDef( @@ -1968,15 +1472,8 @@ void DivEngine::registerSystems() { {DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x20: // select rate - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_FREQ,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x20, {DIV_CMD_SAMPLE_FREQ, "20xx: Set chip output rate (0: clock/132; 1: clock/165)"}}, } ); @@ -1988,18 +1485,9 @@ void DivEngine::registerSystems() { {DIV_CH_PCM}, {DIV_INS_AMIGA}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x20: // select rate - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_FREQ,ch,effectVal)); - break; - case 0x21: // select clock - dispatchCmd(DivCommand(DIV_CMD_SAMPLE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x20, {DIV_CMD_SAMPLE_FREQ, "20xx: Set frequency divider (0-2)"}}, + {0x21, {DIV_CMD_SAMPLE_MODE, "21xx: Select clock rate (0: full; 1: half)"}}, } ); @@ -2012,18 +1500,9 @@ void DivEngine::registerSystems() { {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA} ); - auto namcoEffectHandler=[this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x10: // select waveform - dispatchCmd(DivCommand(DIV_CMD_WAVE,ch,effectVal)); - break; - case 0x11: // noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + EffectHandlerMap namcoEffectHandlerMap={ + {0x10, {DIV_CMD_WAVE, "10xx: Set waveform"}}, + {0x11, {DIV_CMD_STD_NOISE_MODE, "11xx: Toggle noise mode"}}, }; sysDefs[DIV_SYSTEM_NAMCO]=new DivSysDef( @@ -2034,7 +1513,7 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO}, {}, - namcoEffectHandler + namcoEffectHandlerMap ); sysDefs[DIV_SYSTEM_NAMCO_15XX]=new DivSysDef( @@ -2045,7 +1524,7 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO}, {}, - namcoEffectHandler + namcoEffectHandlerMap ); sysDefs[DIV_SYSTEM_NAMCO_CUS30]=new DivSysDef( @@ -2056,7 +1535,7 @@ void DivEngine::registerSystems() { {DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE, DIV_CH_WAVE}, {DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO, DIV_INS_NAMCO}, {}, - namcoEffectHandler + namcoEffectHandlerMap ); // replace with an 8-channel chip in a future @@ -2077,8 +1556,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PCM, DIV_CH_PCM}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AMIGA}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_NULL}, - opn2EffectHandler, - fmPostEffectHandler + fmOPN2EffectHandlerMap, + fmOPN2PostEffectHandlerMap ); sysDefs[DIV_SYSTEM_YM2612_FRAC_EXT]=new DivSysDef( @@ -2089,8 +1568,8 @@ void DivEngine::registerSystems() { {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_NOISE}, {DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AMIGA, DIV_INS_FM}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_NULL, DIV_INS_NULL}, - opn2EffectHandler, - fmPostEffectHandler + fmOPN2EffectHandlerMap, + fmOPN2PostEffectHandlerMap ); sysDefs[DIV_SYSTEM_T6W28]=new DivSysDef( @@ -2101,15 +1580,8 @@ void DivEngine::registerSystems() { {DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE}, {DIV_INS_STD, DIV_INS_STD, DIV_INS_STD, DIV_INS_STD}, {}, - [this](int ch, unsigned char effect, unsigned char effectVal) -> bool { - switch (effect) { - case 0x20: // SN noise mode - dispatchCmd(DivCommand(DIV_CMD_STD_NOISE_MODE,ch,effectVal)); - break; - default: - return false; - } - return true; + { + {0x20, {DIV_CMD_STD_NOISE_MODE, "20xy: Set noise mode (x: preset/variable; y: thin pulse/noise)"}} } ); From 5190c6daabd36efa0e53b8b799c0366958dcd661 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 18 Aug 2022 21:20:10 +0900 Subject: [PATCH 403/580] Implement ES5506 instrument type ES5506 has these features: - 16 bit independent volume register per left/right output (Logarithmic, 4 LSB is for envelope) - Programmable filter per each channels, 4 pole, 4 filter mode and 2 16 bit coefficient register (4 LSB is for envelope) - Hardware envelope Add more than 2 macro type support "Delta" macro type: Use delta from previous value --- src/engine/instrument.h | 38 +++++++ src/gui/gui.h | 7 +- src/gui/insEdit.cpp | 217 +++++++++++++++++++++++++++++++--------- src/gui/intConst.cpp | 3 + src/gui/intConst.h | 3 + 5 files changed, 219 insertions(+), 49 deletions(-) diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 9f49a627..cfbed65a 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -465,6 +465,43 @@ struct DivInstrumentSoundUnit { switchRoles(false) {} }; +struct DivInstrumentES5506 { + struct Filter { + enum FilterMode: unsigned char { // filter mode for pole 4,3 + FILTER_MODE_HPK2_HPK2, + FILTER_MODE_HPK2_LPK1, + FILTER_MODE_LPK2_LPK2, + FILTER_MODE_LPK2_LPK1, + }; + FilterMode mode; + unsigned short k1, k2; + Filter(): + mode(FILTER_MODE_LPK2_LPK1), + k1(0xffff), + k2(0xffff) {} + }; + struct Envelope { + unsigned short ecount; + signed char lVRamp, rVRamp; + signed char k1Ramp, k2Ramp; + bool k1Slow, k2Slow; + Envelope(): + ecount(0), + lVRamp(0), + rVRamp(0), + k1Ramp(0), + k2Ramp(0), + k1Slow(false), + k2Slow(false) {} + }; + signed int lVol, rVol; + Filter filter; + Envelope envelope; + DivInstrumentES5506(): + lVol(0xffff), + rVol(0xffff) {} +}; + struct DivInstrument { String name; bool mode; @@ -479,6 +516,7 @@ struct DivInstrument { DivInstrumentMultiPCM multipcm; DivInstrumentWaveSynth ws; DivInstrumentSoundUnit su; + DivInstrumentES5506 es5506; /** * save the instrument to a SafeWriter. diff --git a/src/gui/gui.h b/src/gui/gui.h index 3e340119..3e70e121 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -864,13 +864,13 @@ struct FurnaceGUIMacroDesc { float height; const char* displayName; const char** bitfieldBits; - const char* modeName; + const char** modeName; ImVec4 color; unsigned int bitOffset; - bool isBitfield, blockMode; + bool isBitfield, blockMode, useMacroMode; String (*hoverFunc)(int,float); - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, const char* mName=NULL, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName={NULL}, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): macro(m), height(macroHeight), displayName(name), @@ -880,6 +880,7 @@ struct FurnaceGUIMacroDesc { bitOffset(bitOff), isBitfield(bitfield), blockMode(block), + useMacroMode(mMode), hoverFunc(hf) { // MSVC -> hell this->min=macroMin; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index a306e366..1b51e02a 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -250,6 +250,10 @@ const char* suControlBits[5]={ "ring mod", "low pass", "high pass", "band pass", NULL }; +const char* es5506FilterModes[4]={ + "HP/K2, HP/K2", "HP/K2, LP/K1", "LP/K2, LP/K2", "LP/K2, LP/K1", +}; + const char* panBits[3]={ "right", "left", NULL }; @@ -258,6 +262,14 @@ const char* oneBit[2]={ "on", NULL }; +const char* es5506EnvelopeModes[3]={ + "k1 slowdown", "k2 slowdown", NULL +}; + +const char* es5506ControlModes[2]={ + "pause", NULL +}; + const int orderedOps[4]={ 0, 2, 1, 3 }; @@ -293,11 +305,34 @@ const char* gbHWSeqCmdTypes[6]={ "Loop until Release" }; -const char* macroAbsoluteMode="Fixed"; -const char* macroRelativeMode="Relative"; -const char* macroQSoundMode="QSound"; +const char* macroAbsoluteMode[3]={ + "Relative", + "Absolute", + NULL +}; -const char* macroDummyMode="Bug"; +const char* macroRelativeMode[3]={ + "Absolute", + "Relative", + NULL +}; + +const char* macroQSoundMode[3]={ + "Independent", + "QSound", + NULL +}; + +const char* macroDummyMode[1]={ + NULL +}; + +const char* macroFilterMode[4]={ + "Relative", + "Absolute", + "Delta", + NULL +}; String macroHoverNote(int id, float val) { if (val<-60 || val>=120) return "???"; @@ -314,6 +349,27 @@ String macroHoverLoop(int id, float val) { return ""; } +String macroHoverES5506FilterMode(int id, float val) { + String mode="???"; + switch (((int)val)&3) { + case 0: + mode="HP/K2, HP/K2"; + break; + case 1: + mode="HP/K2, LP/K1"; + break; + case 2: + mode="LP/K2, LP/K2"; + break; + case 3: + mode="LP/K2, LP/K1"; + break; + default: + break; + } + return fmt::sprintf("%d: %s",id,mode); +} + String macroLFOWaves(int id, float val) { switch (((int)val)&3) { case 0: @@ -1203,11 +1259,12 @@ void FurnaceGUI::drawMacros(std::vector& macros) { if (ImGui::InputScalar("##IMacroLen",ImGuiDataType_U8,&i.macro->len,&_ONE,&_THREE)) { MARK_MODIFIED if (i.macro->len>128) i.macro->len=128; } - if (i.modeName!=NULL) { - bool modeVal=i.macro->mode; - String modeName=fmt::sprintf("%s##IMacroMode",i.modeName); - if (ImGui::Checkbox(modeName.c_str(),&modeVal)) { - i.macro->mode=modeVal; + if (i.useMacroMode && i.modeName[0]!=NULL) { + for (int m=0; i.modeName[m]!=NULL; m++) { + String modeName=fmt::sprintf("%s##IMacroMode%d",i.modeName[m],m); + if (ImGui::RadioButton(modeName.c_str(),(int)i.macro->mode==m)) { + i.macro->mode=m; + } } } } @@ -2862,10 +2919,10 @@ void FurnaceGUI::drawInsEdit() { } if (ImGui::BeginTabItem("FM Macros")) { if (ins->type==DIV_INS_OPLL) { - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.algMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.algMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_FB),&ins->std.fbMacro,0,7,96,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DC),&ins->std.fmsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DM),&ins->std.amsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DC),&ins->std.fmsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DM),&ins->std.amsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } else { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_ALG),&ins->std.algMacro,0,7,96,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_FB),&ins->std.fbMacro,0,7,96,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -2885,8 +2942,8 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("AM Depth",&ins->std.ex1Macro,0,127,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("PM Depth",&ins->std.ex2Macro,0,127,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("LFO Speed",&ins->std.ex3Macro,0,255,128,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc("LFO Shape",&ins->std.waveMacro,0,3,48,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,macroLFOWaves)); - macroList.push_back(FurnaceGUIMacroDesc("OpMask",&ins->std.ex4Macro,0,4,128,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,fmOperatorBits)); + macroList.push_back(FurnaceGUIMacroDesc("LFO Shape",&ins->std.waveMacro,0,3,48,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,macroLFOWaves)); + macroList.push_back(FurnaceGUIMacroDesc("OpMask",&ins->std.ex4Macro,0,4,128,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,fmOperatorBits)); } drawMacros(macroList); ImGui::EndTabItem(); @@ -2924,10 +2981,10 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_MULT),&ins->std.opMacros[ordi].multMacro,0,15,64,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_WS),&ins->std.opMacros[ordi].wsMacro,0,7,64,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.opMacros[ordi].susMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.opMacros[ordi].susMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } else if (ins->type==DIV_INS_OPLL) { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_TL),&ins->std.opMacros[ordi].tlMacro,0,maxTl,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AR),&ins->std.opMacros[ordi].arMacro,0,maxArDr,64,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -2937,10 +2994,10 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSL),&ins->std.opMacros[ordi].kslMacro,0,3,32,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_MULT),&ins->std.opMacros[ordi].multMacro,0,15,64,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_EGS),&ins->std.opMacros[ordi].egtMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_EGS),&ins->std.opMacros[ordi].egtMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } else { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_TL),&ins->std.opMacros[ordi].tlMacro,0,maxTl,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AR),&ins->std.opMacros[ordi].arMacro,0,maxArDr,64,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -2952,10 +3009,10 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_MULT),&ins->std.opMacros[ordi].multMacro,0,15,64,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DT),&ins->std.opMacros[ordi].dtMacro,0,7,64,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DT2),&ins->std.opMacros[ordi].dt2Macro,0,3,32,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); if (ins->type==DIV_INS_FM) { - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SSG),&ins->std.opMacros[ordi].ssgMacro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,ssgEnvBits)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SSG),&ins->std.opMacros[ordi].ssgMacro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,ssgEnvBits)); } } drawMacros(macroList); @@ -3331,7 +3388,9 @@ void FurnaceGUI::drawInsEdit() { P(ImGui::Checkbox("Don't test/gate before new note",&ins->c64.noTest)); ImGui::EndTabItem(); } - if (ins->type==DIV_INS_AMIGA || ins->type==DIV_INS_SU) if (ImGui::BeginTabItem((ins->type==DIV_INS_SU)?"Sound Unit":"Sample")) { + if (ins->type==DIV_INS_AMIGA || + ins->type==DIV_INS_SU || + ins->type==DIV_INS_ES5506) if (ImGui::BeginTabItem((ins->type==DIV_INS_SU)?"Sound Unit":"Sample")) { String sName; if (ins->amiga.initSample<0 || ins->amiga.initSample>=e->song.sampleLen) { sName="none selected"; @@ -3488,6 +3547,42 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndTabItem(); } + if (ins->type==DIV_INS_ES5506) if (ImGui::BeginTabItem("ES5506")) { + if (ImGui::BeginTable("ESParams",2,ImGuiTableFlags_SizingStretchSame)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch,0.0); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0); + // filter + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + P(CWSliderScalar("Filter 4,3 Mode",ImGuiDataType_U8,&ins->es5506.filter.mode,&_ZERO,&_THREE,es5506FilterModes[ins->es5506.filter.mode&3])); rightClickable + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + P(CWSliderScalar("Filter K1",ImGuiDataType_U16,&ins->es5506.filter.k1,&_ZERO,&_SIXTY_FIVE_THOUSAND_FIVE_HUNDRED_THIRTY_FIVE)); rightClickable + ImGui::TableNextColumn(); + P(CWSliderScalar("Filter K2",ImGuiDataType_U16,&ins->es5506.filter.k2,&_ZERO,&_SIXTY_FIVE_THOUSAND_FIVE_HUNDRED_THIRTY_FIVE)); rightClickable + // envelope + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + P(CWSliderScalar("Envelope count",ImGuiDataType_U16,&ins->es5506.envelope.ecount,&_ZERO,&_FIVE_HUNDRED_ELEVEN)); rightClickable + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + P(CWSliderScalar("Left Volume Ramp",ImGuiDataType_S8,&ins->es5506.envelope.lVRamp,&_MINUS_ONE_HUNDRED_TWENTY_EIGHT,&_ONE_HUNDRED_TWENTY_SEVEN)); rightClickable + ImGui::TableNextColumn(); + P(CWSliderScalar("Right Volume Ramp",ImGuiDataType_S8,&ins->es5506.envelope.rVRamp,&_MINUS_ONE_HUNDRED_TWENTY_EIGHT,&_ONE_HUNDRED_TWENTY_SEVEN)); rightClickable + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + P(CWSliderScalar("Filter K1 Ramp",ImGuiDataType_S8,&ins->es5506.envelope.k1Ramp,&_MINUS_ONE_HUNDRED_TWENTY_EIGHT,&_ONE_HUNDRED_TWENTY_SEVEN)); rightClickable + ImGui::TableNextColumn(); + P(CWSliderScalar("Filter K2 Ramp",ImGuiDataType_S8,&ins->es5506.envelope.k2Ramp,&_MINUS_ONE_HUNDRED_TWENTY_EIGHT,&_ONE_HUNDRED_TWENTY_SEVEN)); rightClickable + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Checkbox("K1 Ramp Slowdown",&ins->es5506.envelope.k1Slow); + ImGui::TableNextColumn(); + ImGui::Checkbox("K2 Ramp Slowdown",&ins->es5506.envelope.k2Slow); + ImGui::EndTable(); + } + ImGui::EndTabItem(); + } if (ins->type==DIV_INS_MULTIPCM) { if (ImGui::BeginTabItem("MultiPCM")) { String sName; @@ -3785,6 +3880,9 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_FDS) { volMax=32; } + if (ins->type==DIV_INS_ES5506) { + volMax=65535; + } const char* dutyLabel="Duty/Noise"; int dutyMin=0; @@ -3847,6 +3945,10 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_SU) { dutyMax=127; } + if (ins->type==DIV_INS_ES5506) { + dutyLabel="Filter Mode"; + dutyMax=3; + } const char* waveLabel="Waveform"; int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_VERA)?3:255; @@ -3902,6 +4004,10 @@ void FurnaceGUI::drawInsEdit() { ex2Max=255; } if (ins->type==DIV_INS_SAA1099) ex1Max=8; + if (ins->type==DIV_INS_ES5506) { + ex1Max=65535; + ex2Max=65535; + } int panMin=0; int panMax=0; @@ -3937,40 +4043,45 @@ void FurnaceGUI::drawInsEdit() { panMax=127; panSingleNoBit=true; } + if (ins->type==DIV_INS_ES5506) { + panMax=65535; + } if (volMax>0) { macroList.push_back(FurnaceGUIMacroDesc(volumeLabel,&ins->std.volMacro,volMin,volMax,160,uiColors[GUI_COLOR_MACRO_VOLUME])); } - macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,macroAbsoluteMode,ins->std.arpMacro.mode?(¯oHoverNote):NULL)); + macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,true,macroAbsoluteMode,ins->std.arpMacro.mode?(¯oHoverNote):NULL)); if (dutyMax>0) { if (ins->type==DIV_INS_MIKEY) { - macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,mikeyFeedbackBits)); + macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,mikeyFeedbackBits)); + } else if (ins->type==DIV_INS_ES5506) { + macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,dutyMin,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,NULL,¯oHoverES5506FilterMode)); } else { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,dutyMin,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER])); } } if (waveMax>0) { - macroList.push_back(FurnaceGUIMacroDesc(waveLabel,&ins->std.waveMacro,0,waveMax,(bitMode && ins->type!=DIV_INS_PET)?64:160,uiColors[GUI_COLOR_MACRO_WAVE],false,NULL,NULL,bitMode,waveNames,((ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?1:0))); + macroList.push_back(FurnaceGUIMacroDesc(waveLabel,&ins->std.waveMacro,0,waveMax,(bitMode && ins->type!=DIV_INS_PET)?64:160,uiColors[GUI_COLOR_MACRO_WAVE],false,false,macroDummyMode,NULL,bitMode,waveNames,((ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?1:0))); } if (panMax>0) { if (panSingle) { - macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,panBits)); + macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,panBits)); } else { if (panSingleNoBit || (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode)) { - macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); + macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); + macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); } if (!panSingleNoBit) { if (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode) { - macroList.push_back(FurnaceGUIMacroDesc("Surround",&ins->std.panRMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Surround",&ins->std.panRMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } else { macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER])); } } } } - macroList.push_back(FurnaceGUIMacroDesc("Pitch",&ins->std.pitchMacro,-2048,2047,160,uiColors[GUI_COLOR_MACRO_PITCH],true,macroRelativeMode)); + macroList.push_back(FurnaceGUIMacroDesc("Pitch",&ins->std.pitchMacro,-2048,2047,160,uiColors[GUI_COLOR_MACRO_PITCH],true,true,macroRelativeMode)); if (ins->type==DIV_INS_FM || ins->type==DIV_INS_STD || ins->type==DIV_INS_OPL || @@ -3985,22 +4096,25 @@ void FurnaceGUI::drawInsEdit() { ins->type==DIV_INS_SWAN || ins->type==DIV_INS_MULTIPCM || ins->type==DIV_INS_SU || - ins->type==DIV_INS_MIKEY) { - macroList.push_back(FurnaceGUIMacroDesc("Phase Reset",&ins->std.phaseResetMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + ins->type==DIV_INS_MIKEY || + ins->type==DIV_INS_ES5506) { + macroList.push_back(FurnaceGUIMacroDesc("Phase Reset",&ins->std.phaseResetMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } if (ex1Max>0) { if (ins->type==DIV_INS_C64) { - macroList.push_back(FurnaceGUIMacroDesc("Filter Mode",&ins->std.ex1Macro,0,ex1Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,filtModeBits)); + macroList.push_back(FurnaceGUIMacroDesc("Filter Mode",&ins->std.ex1Macro,0,ex1Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,filtModeBits)); } else if (ins->type==DIV_INS_SAA1099) { - macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,saaEnvBits)); + macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,saaEnvBits)); } else if (ins->type==DIV_INS_X1_010) { - macroList.push_back(FurnaceGUIMacroDesc("Envelope Mode",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,x1_010EnvBits)); + macroList.push_back(FurnaceGUIMacroDesc("Envelope Mode",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,x1_010EnvBits)); } else if (ins->type==DIV_INS_N163) { macroList.push_back(FurnaceGUIMacroDesc("Wave Length",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_FDS) { macroList.push_back(FurnaceGUIMacroDesc("Mod Depth",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Cutoff",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); + } else if (ins->type==DIV_INS_ES5506) { + macroList.push_back(FurnaceGUIMacroDesc("Filter K1",&ins->std.ex1Macro,((ins->std.ex1Macro.mode!=1)?(-ex1Max):0),ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,true,macroFilterMode)); } else { macroList.push_back(FurnaceGUIMacroDesc("Duty",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } @@ -4009,18 +4123,20 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_C64) { macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_N163) { - macroList.push_back(FurnaceGUIMacroDesc("Wave Update",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,n163UpdateBits)); + macroList.push_back(FurnaceGUIMacroDesc("Wave Update",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,n163UpdateBits)); } else if (ins->type==DIV_INS_FDS) { macroList.push_back(FurnaceGUIMacroDesc("Mod Speed",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); + } else if (ins->type==DIV_INS_ES5506) { + macroList.push_back(FurnaceGUIMacroDesc("Filter K2",&ins->std.ex2Macro,((ins->std.ex2Macro.mode!=1)?(-ex2Max):0),ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,true,macroFilterMode)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex2Macro,0,ex2Max,ex2Bit?64:160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,ex2Bit,ayEnvBits)); + macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex2Macro,0,ex2Max,ex2Bit?64:160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,ex2Bit,ayEnvBits)); } } if (ins->type==DIV_INS_C64) { - macroList.push_back(FurnaceGUIMacroDesc("Special",&ins->std.ex3Macro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,c64SpecialBits)); - macroList.push_back(FurnaceGUIMacroDesc("Test/Gate",&ins->std.ex4Macro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Special",&ins->std.ex3Macro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,c64SpecialBits)); + macroList.push_back(FurnaceGUIMacroDesc("Test/Gate",&ins->std.ex4Macro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } if (ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_X1_010) { macroList.push_back(FurnaceGUIMacroDesc("AutoEnv Num",&ins->std.ex3Macro,0,15,160,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -4028,22 +4144,31 @@ void FurnaceGUI::drawInsEdit() { } if (ins->type==DIV_INS_AY8930) { // oh my i am running out of macros - macroList.push_back(FurnaceGUIMacroDesc("Noise AND Mask",&ins->std.fbMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc("Noise OR Mask",&ins->std.fmsMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Noise AND Mask",&ins->std.fbMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Noise OR Mask",&ins->std.fmsMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } if (ins->type==DIV_INS_N163) { macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Wave",&ins->std.ex3Macro,0,255,160,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Pos",&ins->std.algMacro,0,255,160,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Len",&ins->std.fbMacro,0,252,160,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Trigger",&ins->std.fmsMacro,0,2,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,n163UpdateBits)); + macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Trigger",&ins->std.fmsMacro,0,2,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,n163UpdateBits)); } if (ins->type==DIV_INS_FDS) { macroList.push_back(FurnaceGUIMacroDesc("Mod Position",&ins->std.ex3Macro,0,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); } if (ins->type==DIV_INS_SU) { - macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.ex3Macro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,suControlBits)); + macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.ex3Macro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,suControlBits)); macroList.push_back(FurnaceGUIMacroDesc("Phase Reset Timer",&ins->std.ex4Macro,0,65535,160,uiColors[GUI_COLOR_MACRO_OTHER])); // again reuse code from resonance macro but use ex4 instead } + if (ins->type==DIV_INS_ES5506) { + macroList.push_back(FurnaceGUIMacroDesc("Envelope counter",&ins->std.ex3Macro,0,511,160,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Envelope left volume ramp",&ins->std.ex4Macro,-128,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Envelope right volume ramp",&ins->std.ex5Macro,-128,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Envelope K1 ramp",&ins->std.ex6Macro,-128,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Envelope K2 ramp",&ins->std.ex7Macro,-128,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Envelope mode",&ins->std.ex8Macro,0,2,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,NULL,NULL,true,es5506EnvelopeModes)); + macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.algMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,NULL,NULL,true,es5506ControlModes)); + } drawMacros(macroList); ImGui::EndTabItem(); diff --git a/src/gui/intConst.cpp b/src/gui/intConst.cpp index 8bee0f88..9a41486e 100644 --- a/src/gui/intConst.cpp +++ b/src/gui/intConst.cpp @@ -31,6 +31,9 @@ const int _SIXTY_FOUR=64; const int _ONE_HUNDRED=100; const int _ONE_HUNDRED_TWENTY_SEVEN=127; const int _TWO_HUNDRED_FIFTY_FIVE=255; +const int _FIVE_HUNDRED_ELEVEN=511; const int _TWO_THOUSAND_FORTY_SEVEN=2047; const int _FOUR_THOUSAND_NINETY_FIVE=4095; +const int _SIXTY_FIVE_THOUSAND_FIVE_HUNDRED_THIRTY_FIVE=65535; const int _MINUS_ONE_HUNDRED_TWENTY_SEVEN=-127; +const int _MINUS_ONE_HUNDRED_TWENTY_EIGHT=-128; diff --git a/src/gui/intConst.h b/src/gui/intConst.h index 98c6c34f..ff11a496 100644 --- a/src/gui/intConst.h +++ b/src/gui/intConst.h @@ -33,6 +33,9 @@ extern const int _SIXTY_FOUR; extern const int _ONE_HUNDRED; extern const int _ONE_HUNDRED_TWENTY_SEVEN; extern const int _TWO_HUNDRED_FIFTY_FIVE; +extern const int _FIVE_HUNDRED_ELEVEN; extern const int _TWO_THOUSAND_FORTY_SEVEN; extern const int _FOUR_THOUSAND_NINETY_FIVE; +extern const int _SIXTY_FIVE_THOUSAND_FIVE_HUNDRED_THIRTY_FIVE; extern const int _MINUS_ONE_HUNDRED_TWENTY_SEVEN; +extern const int _MINUS_ONE_HUNDRED_TWENTY_EIGHT; From 0b09408ee87cc3f2efa4b8908b6e8124ff1da33b Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 18 Aug 2022 21:28:25 +0900 Subject: [PATCH 404/580] Fix initializing --- src/gui/gui.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 3e70e121..9e10e464 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -858,6 +858,10 @@ struct FurnaceGUISysCategory { description(NULL) {} }; +static const char* dummyMode[1]={ + NULL +}; + struct FurnaceGUIMacroDesc { DivInstrumentMacro* macro; int min, max; @@ -870,7 +874,7 @@ struct FurnaceGUIMacroDesc { bool isBitfield, blockMode, useMacroMode; String (*hoverFunc)(int,float); - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName={NULL}, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName=dummyMode, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): macro(m), height(macroHeight), displayName(name), From 446e62c69fb3146f20689f30bcc8a0eda3b566f8 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 18 Aug 2022 21:29:48 +0900 Subject: [PATCH 405/580] Fix duplication --- src/gui/gui.h | 2 +- src/gui/insEdit.cpp | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 9e10e464..6dd78caa 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -858,7 +858,7 @@ struct FurnaceGUISysCategory { description(NULL) {} }; -static const char* dummyMode[1]={ +static const char* macroDummyMode[1]={ NULL }; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 1b51e02a..75f3c1f2 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -323,10 +323,6 @@ const char* macroQSoundMode[3]={ NULL }; -const char* macroDummyMode[1]={ - NULL -}; - const char* macroFilterMode[4]={ "Relative", "Absolute", From 1f65b104f2a811bfccd19935965fb6e9a78ee6d2 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 18 Aug 2022 21:30:08 +0900 Subject: [PATCH 406/580] oops --- src/gui/gui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 6dd78caa..98767d57 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -874,7 +874,7 @@ struct FurnaceGUIMacroDesc { bool isBitfield, blockMode, useMacroMode; String (*hoverFunc)(int,float); - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName=dummyMode, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName=macroDummyMode, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): macro(m), height(macroHeight), displayName(name), From 087ff27f06a6ad2ad77b9ecf211f152bfadd485c Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 19 Aug 2022 00:18:46 +0900 Subject: [PATCH 407/580] Fix panning macro height --- src/gui/insEdit.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 75f3c1f2..97b706a9 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4064,15 +4064,15 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,panBits)); } else { if (panSingleNoBit || (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode)) { - macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); + macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); + macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); } if (!panSingleNoBit) { if (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode) { macroList.push_back(FurnaceGUIMacroDesc("Surround",&ins->std.panRMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER])); } } } From fa6a61e49353756bebd3443208941a3a90f2034e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 18 Aug 2022 18:05:13 -0500 Subject: [PATCH 408/580] Revert "Fix panning macro height" This reverts commit 087ff27f06a6ad2ad77b9ecf211f152bfadd485c. --- src/gui/insEdit.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 97b706a9..75f3c1f2 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4064,15 +4064,15 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,panBits)); } else { if (panSingleNoBit || (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode)) { - macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); + macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); + macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); } if (!panSingleNoBit) { if (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode) { macroList.push_back(FurnaceGUIMacroDesc("Surround",&ins->std.panRMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER])); } } } From 90633b2cbceb9efcdc2b797fd3fdcc10c97d99ec Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 18 Aug 2022 18:05:31 -0500 Subject: [PATCH 409/580] Revert "oops" This reverts commit 1f65b104f2a811bfccd19935965fb6e9a78ee6d2. --- src/gui/gui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 98767d57..6dd78caa 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -874,7 +874,7 @@ struct FurnaceGUIMacroDesc { bool isBitfield, blockMode, useMacroMode; String (*hoverFunc)(int,float); - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName=macroDummyMode, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName=dummyMode, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): macro(m), height(macroHeight), displayName(name), From aa1e34ffd353ae14fd2b9249d761c091a08af0bc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 18 Aug 2022 18:05:34 -0500 Subject: [PATCH 410/580] Revert "Fix duplication" This reverts commit 446e62c69fb3146f20689f30bcc8a0eda3b566f8. --- src/gui/gui.h | 2 +- src/gui/insEdit.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 6dd78caa..9e10e464 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -858,7 +858,7 @@ struct FurnaceGUISysCategory { description(NULL) {} }; -static const char* macroDummyMode[1]={ +static const char* dummyMode[1]={ NULL }; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 75f3c1f2..1b51e02a 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -323,6 +323,10 @@ const char* macroQSoundMode[3]={ NULL }; +const char* macroDummyMode[1]={ + NULL +}; + const char* macroFilterMode[4]={ "Relative", "Absolute", From 3f14625361f2cc8e3bfae3e6e0095993fcc49da2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 18 Aug 2022 18:05:45 -0500 Subject: [PATCH 411/580] Revert "Fix initializing" This reverts commit 0b09408ee87cc3f2efa4b8908b6e8124ff1da33b. --- src/gui/gui.h | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 9e10e464..3e70e121 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -858,10 +858,6 @@ struct FurnaceGUISysCategory { description(NULL) {} }; -static const char* dummyMode[1]={ - NULL -}; - struct FurnaceGUIMacroDesc { DivInstrumentMacro* macro; int min, max; @@ -874,7 +870,7 @@ struct FurnaceGUIMacroDesc { bool isBitfield, blockMode, useMacroMode; String (*hoverFunc)(int,float); - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName=dummyMode, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName={NULL}, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): macro(m), height(macroHeight), displayName(name), From c473f94f0d6901d19017e6474ea7c8a4b0592f37 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 18 Aug 2022 18:21:51 -0500 Subject: [PATCH 412/580] remove delta mode it's unnecessary in my opinion unless I am missing something --- src/gui/gui.h | 7 +++---- src/gui/insEdit.cpp | 51 +++++++++++++++------------------------------ 2 files changed, 20 insertions(+), 38 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 3e70e121..3e340119 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -864,13 +864,13 @@ struct FurnaceGUIMacroDesc { float height; const char* displayName; const char** bitfieldBits; - const char** modeName; + const char* modeName; ImVec4 color; unsigned int bitOffset; - bool isBitfield, blockMode, useMacroMode; + bool isBitfield, blockMode; String (*hoverFunc)(int,float); - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, bool mMode=false, const char** mName={NULL}, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, const char* mName=NULL, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): macro(m), height(macroHeight), displayName(name), @@ -880,7 +880,6 @@ struct FurnaceGUIMacroDesc { bitOffset(bitOff), isBitfield(bitfield), blockMode(block), - useMacroMode(mMode), hoverFunc(hf) { // MSVC -> hell this->min=macroMin; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 1b51e02a..9287f180 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -305,34 +305,15 @@ const char* gbHWSeqCmdTypes[6]={ "Loop until Release" }; -const char* macroAbsoluteMode[3]={ - "Relative", - "Absolute", - NULL -}; - -const char* macroRelativeMode[3]={ - "Absolute", - "Relative", - NULL -}; - -const char* macroQSoundMode[3]={ - "Independent", - "QSound", - NULL -}; - -const char* macroDummyMode[1]={ - NULL -}; - -const char* macroFilterMode[4]={ - "Relative", - "Absolute", - "Delta", - NULL -}; +// do not change these! +// anything other than a checkbox will look ugly! +// +// if you really need to, and have a good rationale (and by good I mean a VERY +// good one), please tell me and we'll sort it out. +const char* macroAbsoluteMode="Fixed"; +const char* macroRelativeMode="Relative"; +const char* macroQSoundMode="QSound"; +const char* macroDummyMode="Bug"; String macroHoverNote(int id, float val) { if (val<-60 || val>=120) return "???"; @@ -1259,12 +1240,14 @@ void FurnaceGUI::drawMacros(std::vector& macros) { if (ImGui::InputScalar("##IMacroLen",ImGuiDataType_U8,&i.macro->len,&_ONE,&_THREE)) { MARK_MODIFIED if (i.macro->len>128) i.macro->len=128; } - if (i.useMacroMode && i.modeName[0]!=NULL) { - for (int m=0; i.modeName[m]!=NULL; m++) { - String modeName=fmt::sprintf("%s##IMacroMode%d",i.modeName[m],m); - if (ImGui::RadioButton(modeName.c_str(),(int)i.macro->mode==m)) { - i.macro->mode=m; - } + // do not change this! + // anything other than a checkbox will look ugly! + // if you really need more than two macro modes please tell me. + if (i.modeName!=NULL) { + bool modeVal=i.macro->mode; + String modeName=fmt::sprintf("%s##IMacroMode",i.modeName); + if (ImGui::Checkbox(modeName.c_str(),&modeVal)) { + i.macro->mode=modeVal; } } } From 9bd3f6c34bdd469a4e3204f90ea73c447b34eb05 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 18 Aug 2022 18:36:22 -0500 Subject: [PATCH 413/580] remove delta mode entirely so it was used on the filter but i'm not sure why couldn't it be done in absolute mode instead --- src/gui/insEdit.cpp | 80 ++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 9287f180..4db506d2 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -2902,10 +2902,10 @@ void FurnaceGUI::drawInsEdit() { } if (ImGui::BeginTabItem("FM Macros")) { if (ins->type==DIV_INS_OPLL) { - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.algMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.algMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_FB),&ins->std.fbMacro,0,7,96,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DC),&ins->std.fmsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DM),&ins->std.amsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DC),&ins->std.fmsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DM),&ins->std.amsMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } else { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_ALG),&ins->std.algMacro,0,7,96,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_FB),&ins->std.fbMacro,0,7,96,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -2925,8 +2925,8 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("AM Depth",&ins->std.ex1Macro,0,127,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("PM Depth",&ins->std.ex2Macro,0,127,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("LFO Speed",&ins->std.ex3Macro,0,255,128,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc("LFO Shape",&ins->std.waveMacro,0,3,48,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,macroLFOWaves)); - macroList.push_back(FurnaceGUIMacroDesc("OpMask",&ins->std.ex4Macro,0,4,128,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,fmOperatorBits)); + macroList.push_back(FurnaceGUIMacroDesc("LFO Shape",&ins->std.waveMacro,0,3,48,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,macroLFOWaves)); + macroList.push_back(FurnaceGUIMacroDesc("OpMask",&ins->std.ex4Macro,0,4,128,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,fmOperatorBits)); } drawMacros(macroList); ImGui::EndTabItem(); @@ -2964,10 +2964,10 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_MULT),&ins->std.opMacros[ordi].multMacro,0,15,64,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_WS),&ins->std.opMacros[ordi].wsMacro,0,7,64,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.opMacros[ordi].susMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SUS),&ins->std.opMacros[ordi].susMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } else if (ins->type==DIV_INS_OPLL) { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_TL),&ins->std.opMacros[ordi].tlMacro,0,maxTl,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AR),&ins->std.opMacros[ordi].arMacro,0,maxArDr,64,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -2977,10 +2977,10 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSL),&ins->std.opMacros[ordi].kslMacro,0,3,32,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_MULT),&ins->std.opMacros[ordi].multMacro,0,15,64,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_EGS),&ins->std.opMacros[ordi].egtMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_VIB),&ins->std.opMacros[ordi].vibMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_KSR),&ins->std.opMacros[ordi].ksrMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_EGS),&ins->std.opMacros[ordi].egtMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } else { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_TL),&ins->std.opMacros[ordi].tlMacro,0,maxTl,128,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AR),&ins->std.opMacros[ordi].arMacro,0,maxArDr,64,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -2992,10 +2992,10 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_MULT),&ins->std.opMacros[ordi].multMacro,0,15,64,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DT),&ins->std.opMacros[ordi].dtMacro,0,7,64,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_DT2),&ins->std.opMacros[ordi].dt2Macro,0,3,32,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_AM),&ins->std.opMacros[ordi].amMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); if (ins->type==DIV_INS_FM) { - macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SSG),&ins->std.opMacros[ordi].ssgMacro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,ssgEnvBits)); + macroList.push_back(FurnaceGUIMacroDesc(FM_NAME(FM_SSG),&ins->std.opMacros[ordi].ssgMacro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,ssgEnvBits)); } } drawMacros(macroList); @@ -4033,38 +4033,38 @@ void FurnaceGUI::drawInsEdit() { if (volMax>0) { macroList.push_back(FurnaceGUIMacroDesc(volumeLabel,&ins->std.volMacro,volMin,volMax,160,uiColors[GUI_COLOR_MACRO_VOLUME])); } - macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,true,macroAbsoluteMode,ins->std.arpMacro.mode?(¯oHoverNote):NULL)); + macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,macroAbsoluteMode,ins->std.arpMacro.mode?(¯oHoverNote):NULL)); if (dutyMax>0) { if (ins->type==DIV_INS_MIKEY) { - macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,mikeyFeedbackBits)); + macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,mikeyFeedbackBits)); } else if (ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,dutyMin,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,NULL,¯oHoverES5506FilterMode)); + macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,dutyMin,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,¯oHoverES5506FilterMode)); } else { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,dutyMin,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER])); } } if (waveMax>0) { - macroList.push_back(FurnaceGUIMacroDesc(waveLabel,&ins->std.waveMacro,0,waveMax,(bitMode && ins->type!=DIV_INS_PET)?64:160,uiColors[GUI_COLOR_MACRO_WAVE],false,false,macroDummyMode,NULL,bitMode,waveNames,((ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?1:0))); + macroList.push_back(FurnaceGUIMacroDesc(waveLabel,&ins->std.waveMacro,0,waveMax,(bitMode && ins->type!=DIV_INS_PET)?64:160,uiColors[GUI_COLOR_MACRO_WAVE],false,NULL,NULL,bitMode,waveNames,((ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930)?1:0))); } if (panMax>0) { if (panSingle) { - macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,panBits)); + macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,panBits)); } else { if (panSingleNoBit || (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode)) { - macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); + macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA),macroQSoundMode)); + macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); } if (!panSingleNoBit) { if (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode) { - macroList.push_back(FurnaceGUIMacroDesc("Surround",&ins->std.panRMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Surround",&ins->std.panRMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } else { macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER])); } } } } - macroList.push_back(FurnaceGUIMacroDesc("Pitch",&ins->std.pitchMacro,-2048,2047,160,uiColors[GUI_COLOR_MACRO_PITCH],true,true,macroRelativeMode)); + macroList.push_back(FurnaceGUIMacroDesc("Pitch",&ins->std.pitchMacro,-2048,2047,160,uiColors[GUI_COLOR_MACRO_PITCH],true,macroRelativeMode)); if (ins->type==DIV_INS_FM || ins->type==DIV_INS_STD || ins->type==DIV_INS_OPL || @@ -4081,15 +4081,15 @@ void FurnaceGUI::drawInsEdit() { ins->type==DIV_INS_SU || ins->type==DIV_INS_MIKEY || ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc("Phase Reset",&ins->std.phaseResetMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Phase Reset",&ins->std.phaseResetMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } if (ex1Max>0) { if (ins->type==DIV_INS_C64) { - macroList.push_back(FurnaceGUIMacroDesc("Filter Mode",&ins->std.ex1Macro,0,ex1Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,filtModeBits)); + macroList.push_back(FurnaceGUIMacroDesc("Filter Mode",&ins->std.ex1Macro,0,ex1Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,filtModeBits)); } else if (ins->type==DIV_INS_SAA1099) { - macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,saaEnvBits)); + macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,saaEnvBits)); } else if (ins->type==DIV_INS_X1_010) { - macroList.push_back(FurnaceGUIMacroDesc("Envelope Mode",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,x1_010EnvBits)); + macroList.push_back(FurnaceGUIMacroDesc("Envelope Mode",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,x1_010EnvBits)); } else if (ins->type==DIV_INS_N163) { macroList.push_back(FurnaceGUIMacroDesc("Wave Length",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_FDS) { @@ -4097,7 +4097,7 @@ void FurnaceGUI::drawInsEdit() { } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Cutoff",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc("Filter K1",&ins->std.ex1Macro,((ins->std.ex1Macro.mode!=1)?(-ex1Max):0),ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,true,macroFilterMode)); + macroList.push_back(FurnaceGUIMacroDesc("Filter K1",&ins->std.ex1Macro,((ins->std.ex1Macro.mode!=1)?(-ex1Max):0),ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroRelativeMode)); } else { macroList.push_back(FurnaceGUIMacroDesc("Duty",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } @@ -4106,20 +4106,20 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_C64) { macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_N163) { - macroList.push_back(FurnaceGUIMacroDesc("Wave Update",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,n163UpdateBits)); + macroList.push_back(FurnaceGUIMacroDesc("Wave Update",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,n163UpdateBits)); } else if (ins->type==DIV_INS_FDS) { macroList.push_back(FurnaceGUIMacroDesc("Mod Speed",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc("Filter K2",&ins->std.ex2Macro,((ins->std.ex2Macro.mode!=1)?(-ex2Max):0),ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,true,macroFilterMode)); + macroList.push_back(FurnaceGUIMacroDesc("Filter K2",&ins->std.ex2Macro,((ins->std.ex2Macro.mode!=1)?(-ex2Max):0),ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroRelativeMode)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex2Macro,0,ex2Max,ex2Bit?64:160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,ex2Bit,ayEnvBits)); + macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex2Macro,0,ex2Max,ex2Bit?64:160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,ex2Bit,ayEnvBits)); } } if (ins->type==DIV_INS_C64) { - macroList.push_back(FurnaceGUIMacroDesc("Special",&ins->std.ex3Macro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,c64SpecialBits)); - macroList.push_back(FurnaceGUIMacroDesc("Test/Gate",&ins->std.ex4Macro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Special",&ins->std.ex3Macro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,c64SpecialBits)); + macroList.push_back(FurnaceGUIMacroDesc("Test/Gate",&ins->std.ex4Macro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } if (ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_X1_010) { macroList.push_back(FurnaceGUIMacroDesc("AutoEnv Num",&ins->std.ex3Macro,0,15,160,uiColors[GUI_COLOR_MACRO_OTHER])); @@ -4127,20 +4127,20 @@ void FurnaceGUI::drawInsEdit() { } if (ins->type==DIV_INS_AY8930) { // oh my i am running out of macros - macroList.push_back(FurnaceGUIMacroDesc("Noise AND Mask",&ins->std.fbMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); - macroList.push_back(FurnaceGUIMacroDesc("Noise OR Mask",&ins->std.fmsMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Noise AND Mask",&ins->std.fbMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); + macroList.push_back(FurnaceGUIMacroDesc("Noise OR Mask",&ins->std.fmsMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } if (ins->type==DIV_INS_N163) { macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Wave",&ins->std.ex3Macro,0,255,160,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Pos",&ins->std.algMacro,0,255,160,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Len",&ins->std.fbMacro,0,252,160,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Trigger",&ins->std.fmsMacro,0,2,160,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,n163UpdateBits)); + macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Trigger",&ins->std.fmsMacro,0,2,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,n163UpdateBits)); } if (ins->type==DIV_INS_FDS) { macroList.push_back(FurnaceGUIMacroDesc("Mod Position",&ins->std.ex3Macro,0,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); } if (ins->type==DIV_INS_SU) { - macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.ex3Macro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,macroDummyMode,NULL,true,suControlBits)); + macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.ex3Macro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,suControlBits)); macroList.push_back(FurnaceGUIMacroDesc("Phase Reset Timer",&ins->std.ex4Macro,0,65535,160,uiColors[GUI_COLOR_MACRO_OTHER])); // again reuse code from resonance macro but use ex4 instead } if (ins->type==DIV_INS_ES5506) { @@ -4149,8 +4149,8 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("Envelope right volume ramp",&ins->std.ex5Macro,-128,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("Envelope K1 ramp",&ins->std.ex6Macro,-128,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); macroList.push_back(FurnaceGUIMacroDesc("Envelope K2 ramp",&ins->std.ex7Macro,-128,127,160,uiColors[GUI_COLOR_MACRO_OTHER])); - macroList.push_back(FurnaceGUIMacroDesc("Envelope mode",&ins->std.ex8Macro,0,2,64,uiColors[GUI_COLOR_MACRO_OTHER],false,false,NULL,NULL,true,es5506EnvelopeModes)); - macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.algMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,false,NULL,NULL,true,es5506ControlModes)); + macroList.push_back(FurnaceGUIMacroDesc("Envelope mode",&ins->std.ex8Macro,0,2,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,es5506EnvelopeModes)); + macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.algMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,es5506ControlModes)); } drawMacros(macroList); From 13158b86cf0e97374b1ff23017069448471488ce Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 19 Aug 2022 12:03:25 +0900 Subject: [PATCH 414/580] Clamp height of panning macro when higher than 128 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit so, current filter macro behavior is: "Fixed" option enabled: override current filter value to macro value "Fixed" option disabled: current filter value = filter value determined from ES5506 tab or command Ā± filter macro value --- src/gui/insEdit.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 4db506d2..bff4c015 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4051,15 +4051,15 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,0,2,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,panBits)); } else { if (panSingleNoBit || (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode)) { - macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); + macroList.push_back(FurnaceGUIMacroDesc("Panning",&ins->std.panLMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); + macroList.push_back(FurnaceGUIMacroDesc("Panning (left)",&ins->std.panLMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER],false,(ins->type==DIV_INS_AMIGA)?macroQSoundMode:NULL)); } if (!panSingleNoBit) { if (ins->type==DIV_INS_AMIGA && ins->std.panLMacro.mode) { macroList.push_back(FurnaceGUIMacroDesc("Surround",&ins->std.panRMacro,0,1,32,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true)); } else { - macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,(31+panMax-panMin),uiColors[GUI_COLOR_MACRO_OTHER])); + macroList.push_back(FurnaceGUIMacroDesc("Panning (right)",&ins->std.panRMacro,panMin,panMax,CLAMP(31+panMax-panMin,32,160),uiColors[GUI_COLOR_MACRO_OTHER])); } } } @@ -4097,7 +4097,7 @@ void FurnaceGUI::drawInsEdit() { } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Cutoff",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc("Filter K1",&ins->std.ex1Macro,((ins->std.ex1Macro.mode!=1)?(-ex1Max):0),ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroRelativeMode)); + macroList.push_back(FurnaceGUIMacroDesc("Filter K1",&ins->std.ex1Macro,((ins->std.ex1Macro.mode!=1)?(-ex1Max):0),ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroAbsoluteMode)); } else { macroList.push_back(FurnaceGUIMacroDesc("Duty",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } @@ -4112,7 +4112,7 @@ void FurnaceGUI::drawInsEdit() { } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc("Filter K2",&ins->std.ex2Macro,((ins->std.ex2Macro.mode!=1)?(-ex2Max):0),ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroRelativeMode)); + macroList.push_back(FurnaceGUIMacroDesc("Filter K2",&ins->std.ex2Macro,((ins->std.ex2Macro.mode!=1)?(-ex2Max):0),ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroAbsoluteMode)); } else { macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex2Macro,0,ex2Max,ex2Bit?64:160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,ex2Bit,ayEnvBits)); } From 952a2a66e87e3bedb0286f69200f73bd4b834734 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 18 Aug 2022 23:55:29 -0500 Subject: [PATCH 415/580] store ES5506 params in format --- papers/format.md | 16 ++++++++++++++++ src/engine/engine.h | 4 ++-- src/engine/instrument.cpp | 26 ++++++++++++++++++++++++++ src/engine/instrument.h | 7 ++----- 4 files changed, 46 insertions(+), 7 deletions(-) diff --git a/papers/format.md b/papers/format.md index 1a8cd721..5dd7d206 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 107: Furnace dev107 - 106: Furnace dev106 - 105: Furnace dev105 - 104: Furnace dev104 @@ -850,6 +851,21 @@ size | description --- | **Game Boy extra flags** (>=106) 1 | use software envelope 1 | always init hard env on new note + --- | **ES5506 data** (>=107) + 1 | filter mode + | - 0: HPK2_HPK2 + | - 1: HPK2_LPK1 + | - 2: LPK2_LPK2 + | - 3: LPK2_LPK1 + 2 | K1 + 2 | K2 + 2 | envelope count + 1 | left volume ramp + 1 | right volume ramp + 1 | K1 ramp + 1 | K2 ramp + 1 | K1 slow + 1 | K2 slow ``` # wavetable diff --git a/src/engine/engine.h b/src/engine/engine.h index 191414f5..8e2c094d 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -46,8 +46,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev106" -#define DIV_ENGINE_VERSION 106 +#define DIV_VERSION "dev107" +#define DIV_ENGINE_VERSION 107 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 2836e6f9..1720bf56 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -543,6 +543,18 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeC(gb.softEnv); w->writeC(gb.alwaysInit); + // ES5506 + w->writeC(es5506.filter.mode); + w->writeS(es5506.filter.k1); + w->writeS(es5506.filter.k2); + w->writeS(es5506.envelope.ecount); + w->writeC(es5506.envelope.lVRamp); + w->writeC(es5506.envelope.rVRamp); + w->writeC(es5506.envelope.k1Ramp); + w->writeC(es5506.envelope.k2Ramp); + w->writeC(es5506.envelope.k1Slow); + w->writeC(es5506.envelope.k2Slow); + blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); w->writeI(blockEndSeek-blockStartSeek-4); @@ -1111,6 +1123,20 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { gb.alwaysInit=reader.readC(); } + // ES5506 + if (version>=107) { + es5506.filter.mode=(DivInstrumentES5506::Filter::FilterMode)reader.readC(); + es5506.filter.k1=reader.readS(); + es5506.filter.k2=reader.readS(); + es5506.envelope.ecount=reader.readS(); + es5506.envelope.lVRamp=reader.readC(); + es5506.envelope.rVRamp=reader.readC(); + es5506.envelope.k1Ramp=reader.readC(); + es5506.envelope.k2Ramp=reader.readC(); + es5506.envelope.k1Slow=reader.readC(); + es5506.envelope.k2Slow=reader.readC(); + } + return DIV_DATA_SUCCESS; } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index cfbed65a..d3df4b63 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -468,7 +468,7 @@ struct DivInstrumentSoundUnit { struct DivInstrumentES5506 { struct Filter { enum FilterMode: unsigned char { // filter mode for pole 4,3 - FILTER_MODE_HPK2_HPK2, + FILTER_MODE_HPK2_HPK2=0, FILTER_MODE_HPK2_LPK1, FILTER_MODE_LPK2_LPK2, FILTER_MODE_LPK2_LPK1, @@ -494,12 +494,9 @@ struct DivInstrumentES5506 { k1Slow(false), k2Slow(false) {} }; - signed int lVol, rVol; Filter filter; Envelope envelope; - DivInstrumentES5506(): - lVol(0xffff), - rVol(0xffff) {} + DivInstrumentES5506() {} }; struct DivInstrument { From 9c80f91870ffbf5794acf6e481ab2088977d46c3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 00:00:10 -0500 Subject: [PATCH 416/580] relative --- src/gui/insEdit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index bff4c015..f928e1f8 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4097,7 +4097,7 @@ void FurnaceGUI::drawInsEdit() { } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Cutoff",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc("Filter K1",&ins->std.ex1Macro,((ins->std.ex1Macro.mode!=1)?(-ex1Max):0),ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroAbsoluteMode)); + macroList.push_back(FurnaceGUIMacroDesc("Filter K1",&ins->std.ex1Macro,((ins->std.ex1Macro.mode==1)?(-ex1Max):0),ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroRelativeMode)); } else { macroList.push_back(FurnaceGUIMacroDesc("Duty",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } @@ -4112,7 +4112,7 @@ void FurnaceGUI::drawInsEdit() { } else if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER])); } else if (ins->type==DIV_INS_ES5506) { - macroList.push_back(FurnaceGUIMacroDesc("Filter K2",&ins->std.ex2Macro,((ins->std.ex2Macro.mode!=1)?(-ex2Max):0),ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroAbsoluteMode)); + macroList.push_back(FurnaceGUIMacroDesc("Filter K2",&ins->std.ex2Macro,((ins->std.ex2Macro.mode==1)?(-ex2Max):0),ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER],false,macroRelativeMode)); } else { macroList.push_back(FurnaceGUIMacroDesc("Envelope",&ins->std.ex2Macro,0,ex2Max,ex2Bit?64:160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,ex2Bit,ayEnvBits)); } From 142c21e20b9f5889cea8798ea19d0f637e4da5a1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 00:23:45 -0500 Subject: [PATCH 417/580] partially fix big-endian build samples are the next thing to tackle --- CMakeLists.txt | 11 +++++- TODO.md | 2 +- src/engine/safeReader.cpp | 80 +++++++++++++++++++++++++++++++++++++++ src/engine/safeWriter.cpp | 78 ++++++++++++++++++++++++++++++++++---- 4 files changed, 160 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 732cb623..6b6b7788 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,7 @@ set(USE_SNDFILE_DEFAULT ON) set(SYSTEM_SDL2_DEFAULT OFF) include(CheckIncludeFile) +include(TestBigEndian) if (ANDROID) set(USE_RTMIDI_DEFAULT OFF) @@ -72,9 +73,15 @@ option(WITH_INSTRUMENTS "Install instruments" ON) set(DEPENDENCIES_INCLUDE_DIRS "") if (ANDROID AND NOT TERMUX) -set(DEPENDENCIES_DEFINES "IS_MOBILE") + set(DEPENDENCIES_DEFINES "IS_MOBILE") else() -set(DEPENDENCIES_DEFINES "") + set(DEPENDENCIES_DEFINES "") +endif() + +TEST_BIG_ENDIAN(IS_BIG_ENDIAN) + +if (IS_BIG_ENDIAN) + list(APPEND DEPENDENCIES_DEFINES "TA_BIG_ENDIAN") endif() set(DEPENDENCIES_COMPILE_OPTIONS "") diff --git a/TODO.md b/TODO.md index 13f31300..cba0b7c6 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,5 @@ # to-do for 0.6pre1.5-0.6pre2 - volume commands should work on Game Boy -- ability to customize `OFF`, `===` and `REL` - stereo separation control for AY +- "paste with instrument" \ No newline at end of file diff --git a/src/engine/safeReader.cpp b/src/engine/safeReader.cpp index 3cb1f4b1..a367bfb7 100644 --- a/src/engine/safeReader.cpp +++ b/src/engine/safeReader.cpp @@ -77,6 +77,85 @@ signed char SafeReader::readC() { return (signed char)buf[curSeek++]; } +#ifdef TA_BIG_ENDIAN +short SafeReader::readS_BE() { +#ifdef READ_DEBUG + logD("SR: reading short %x:",curSeek); +#endif + if (curSeek+2>len) throw EndOfFileException(this,len); + short ret; + memcpy(&ret,&buf[curSeek],2); +#ifdef READ_DEBUG + logD("SR: %.4x",ret); +#endif + curSeek+=2; + return ret; +} + +short SafeReader::readS() { + if (curSeek+2>len) throw EndOfFileException(this,len); + short ret; + memcpy(&ret,&buf[curSeek],2); + curSeek+=2; + return ((ret>>8)&0xff)|(ret<<8); +} + +int SafeReader::readI_BE() { +#ifdef READ_DEBUG + logD("SR: reading int %x:",curSeek); +#endif + if (curSeek+4>len) throw EndOfFileException(this,len); + int ret; + memcpy(&ret,&buf[curSeek],4); + curSeek+=4; +#ifdef READ_DEBUG + logD("SR: %.8x",ret); +#endif + return ret; +} + +int SafeReader::readI() { + if (curSeek+4>len) throw EndOfFileException(this,len); + unsigned int ret; + memcpy(&ret,&buf[curSeek],4); + curSeek+=4; + return (int)((ret>>24)|((ret&0xff0000)>>8)|((ret&0xff00)<<8)|((ret&0xff)<<24)); +} + +int64_t SafeReader::readL() { + if (curSeek+8>len) throw EndOfFileException(this,len); + unsigned char ret[8]; + memcpy(ret,&buf[curSeek],8); + curSeek+=8; + return (int64_t)(ret[0]|(ret[1]<<8)|(ret[2]<<16)|(ret[3]<<24)|(ret[4]<<32)|(ret[5]<<40)|(ret[6]<<48)|(ret[7]<<56)); +} + +float SafeReader::readF() { + if (curSeek+4>len) throw EndOfFileException(this,len); + unsigned int ret; + memcpy(&ret,&buf[curSeek],4); + curSeek+=4; + ret=((ret>>24)|((ret&0xff0000)>>8)|((ret&0xff00)<<8)|((ret&0xff)<<24)); + return *((float*)(&ret)); +} + +double SafeReader::readD() { + if (curSeek+8>len) throw EndOfFileException(this,len); + unsigned char ret[8]; + unsigned char retB[8]; + memcpy(ret,&buf[curSeek],8); + curSeek+=8; + retB[0]=ret[7]; + retB[1]=ret[6]; + retB[2]=ret[5]; + retB[3]=ret[4]; + retB[4]=ret[3]; + retB[5]=ret[2]; + retB[6]=ret[1]; + retB[7]=ret[0]; + return *((double*)retB); +} +#else short SafeReader::readS() { #ifdef READ_DEBUG logD("SR: reading short %x:",curSeek); @@ -144,6 +223,7 @@ double SafeReader::readD() { curSeek+=8; return ret; } +#endif String SafeReader::readString(size_t stlen) { String ret; diff --git a/src/engine/safeWriter.cpp b/src/engine/safeWriter.cpp index e6138093..a2a7315a 100644 --- a/src/engine/safeWriter.cpp +++ b/src/engine/safeWriter.cpp @@ -77,9 +77,64 @@ int SafeWriter::writeC(signed char val) { return write(&val,1); } +#ifdef TA_BIG_ENDIAN +int SafeWriter::writeS_BE(short val) { + return write(&val,2); +} + +int SafeWriter::writeS(short val) { + unsigned char bytes[2]{(unsigned char)((val>>8)&0xff), (unsigned char)(val&0xff)}; + return write(bytes,2); +} + +int SafeWriter::writeI(int val) { + unsigned char bytes[4]; + bytes[0]=((unsigned int)val)&0xff; + bytes[1]=(((unsigned int)val)>>8)&0xff; + bytes[2]=(((unsigned int)val)>>16)&0xff; + bytes[3]=(((unsigned int)val)>>24)&0xff; + return write(bytes,4); +} + +int SafeWriter::writeL(int64_t val) { + unsigned char bytes[8]; + bytes[0]=((uint64_t)val)&0xff; + bytes[1]=(((uint64_t)val)>>8)&0xff; + bytes[2]=(((uint64_t)val)>>16)&0xff; + bytes[3]=(((uint64_t)val)>>24)&0xff; + bytes[4]=(((uint64_t)val)>>32)&0xff; + bytes[5]=(((uint64_t)val)>>40)&0xff; + bytes[6]=(((uint64_t)val)>>48)&0xff; + bytes[7]=(((uint64_t)val)>>56)&0xff; + return write(bytes,8); +} + +int SafeWriter::writeF(float val) { + unsigned char bytes[4]; + bytes[0]=((unsigned char*)(&val))[3]; + bytes[1]=((unsigned char*)(&val))[2]; + bytes[2]=((unsigned char*)(&val))[1]; + bytes[3]=((unsigned char*)(&val))[0]; + return write(bytes,4); +} + +int SafeWriter::writeD(double val) { + unsigned char bytes[8]; + bytes[0]=((unsigned char*)(&val))[7]; + bytes[1]=((unsigned char*)(&val))[6]; + bytes[2]=((unsigned char*)(&val))[5]; + bytes[3]=((unsigned char*)(&val))[4]; + bytes[4]=((unsigned char*)(&val))[3]; + bytes[5]=((unsigned char*)(&val))[2]; + bytes[6]=((unsigned char*)(&val))[1]; + bytes[7]=((unsigned char*)(&val))[0]; + return write(bytes,8); +} +#else int SafeWriter::writeS(short val) { return write(&val,2); } + int SafeWriter::writeS_BE(short val) { unsigned char bytes[2]{(unsigned char)((val>>8)&0xff), (unsigned char)(val&0xff)}; return write(bytes,2); @@ -88,23 +143,20 @@ int SafeWriter::writeS_BE(short val) { int SafeWriter::writeI(int val) { return write(&val,4); } + int SafeWriter::writeL(int64_t val) { return write(&val,8); } + int SafeWriter::writeF(float val) { return write(&val,4); } + int SafeWriter::writeD(double val) { return write(&val,8); } -int SafeWriter::writeString(String val, bool pascal) { - if (pascal) { - writeC((unsigned char)val.size()); - return write(val.c_str(),val.size())+1; - } else { - return write(val.c_str(),val.size()+1); - } -} +#endif + int SafeWriter::writeWString(WString val, bool pascal) { if (pascal) { writeS((unsigned short)val.size()); @@ -120,10 +172,20 @@ int SafeWriter::writeWString(WString val, bool pascal) { return 2+val.size()*2; } } + int SafeWriter::writeText(String val) { return write(val.c_str(),val.size()); } +int SafeWriter::writeString(String val, bool pascal) { + if (pascal) { + writeC((unsigned char)val.size()); + return write(val.c_str(),val.size())+1; + } else { + return write(val.c_str(),val.size()+1); + } +} + void SafeWriter::init() { if (operative) return; buf=new unsigned char[WRITER_BUF_SIZE]; From 42006e338c5ba1bd579beebb7eb601643ce8ebfb Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 19 Aug 2022 14:49:10 +0900 Subject: [PATCH 418/580] Fix Initializer --- src/engine/instrument.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/instrument.h b/src/engine/instrument.h index d3df4b63..e45fd02f 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -496,7 +496,9 @@ struct DivInstrumentES5506 { }; Filter filter; Envelope envelope; - DivInstrumentES5506() {} + DivInstrumentES5506(): + filter(Filter()), + envelope(Envelope()) {} }; struct DivInstrument { From 5c7338930fde2e9688af79f32718a75d60b72de3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 01:26:11 -0500 Subject: [PATCH 419/580] fix big-endian build (i think) --- src/engine/fileOps.cpp | 98 +++++++++++++++++++++++++++++++++++---- src/engine/instrument.cpp | 43 +++++++++-------- 2 files changed, 113 insertions(+), 28 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 589ca6a5..05d93abe 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -825,6 +825,13 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { data=new short[length]; reader.read(data,length*2); } + +#ifdef TA_BIG_ENDIAN + // convert to big-endian + for (size_t pos=0; pos>8)); + } +#endif if (pitch!=5) { logD("%d: scaling from %d...",i,pitch); @@ -1323,9 +1330,15 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } // pointers - reader.read(insPtr,ds.insLen*4); - reader.read(wavePtr,ds.waveLen*4); - reader.read(samplePtr,ds.sampleLen*4); + for (int i=0; iordersLen); @@ -1703,11 +1716,36 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { if (ds.version>=58) { // modern sample sample->init(sample->samples); reader.read(sample->getCurBuf(),sample->getCurBufLen()); +#ifdef TA_BIG_ENDIAN + // convert 16-bit samples to big-endian + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { + unsigned char* sampleBuf=sample->getCurBuf(); + size_t sampleBufLen=sample->getCurBufLen(); + for (size_t pos=0; possamples; short* data=new short[length]; reader.read(data,2*length); +#ifdef TA_BIG_ENDIAN + // convert 16-bit samples to big-endian + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { + unsigned char* sampleBuf=sample->getCurBuf(); + size_t sampleBufLen=sample->getCurBufLen(); + for (size_t pos=0; poswriteI(0xffffffff); } +#ifdef TA_BIG_ENDIAN + // store 16-bit samples as little-endian + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { + unsigned char* sampleBuf=(unsigned char*)sample->getCurBuf(); + size_t bufLen=sample->getCurBufLen(); + for (size_t i=0; iwriteC(sampleBuf[i+1]); + w->writeC(sampleBuf[i]); + } + } else { + w->write(sample->getCurBuf(),sample->getCurBufLen()); + } +#else w->write(sample->getCurBuf(),sample->getCurBufLen()); +#endif blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); @@ -3834,7 +3886,13 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeS(pat->data[j][1]); // octave w->writeS(pat->data[j][2]); // instrument w->writeS(pat->data[j][3]); // volume +#ifdef TA_BIG_ENDIAN + for (int k=0; kpat[i.chan].effectCols*2; k++) { + w->writeS(pat->data[j][4+k]); + } +#else w->write(&pat->data[j][4],2*song.subsong[i.subsong]->pat[i.chan].effectCols*2); // effects +#endif } w->writeString(pat->name,false); @@ -4116,7 +4174,9 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { w->writeI(i->std.volMacro.val[j]+18); } } else { - w->write(i->std.volMacro.val,4*i->std.volMacro.len); + for (int j=0; jstd.volMacro.len; j++) { + w->writeI(i->std.volMacro.val[j]); + } } if (i->std.volMacro.len>0) { w->writeC(i->std.volMacro.loop); @@ -4125,7 +4185,9 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { w->writeC(i->std.arpMacro.len); if (i->std.arpMacro.mode) { - w->write(i->std.arpMacro.val,4*i->std.arpMacro.len); + for (int j=0; jstd.arpMacro.len; j++) { + w->writeI(i->std.arpMacro.val[j]); + } } else { for (int j=0; jstd.arpMacro.len; j++) { w->writeI(i->std.arpMacro.val[j]+12); @@ -4142,14 +4204,18 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { w->writeI(i->std.dutyMacro.val[j]+12); } } else { - w->write(i->std.dutyMacro.val,4*i->std.dutyMacro.len); + for (int j=0; jstd.dutyMacro.len; j++) { + w->writeI(i->std.dutyMacro.val[j]); + } } if (i->std.dutyMacro.len>0) { w->writeC(i->std.dutyMacro.loop); } w->writeC(i->std.waveMacro.len); - w->write(i->std.waveMacro.val,4*i->std.waveMacro.len); + for (int j=0; jstd.waveMacro.len; j++) { + w->writeI(i->std.waveMacro.val[j]); + } if (i->std.waveMacro.len>0) { w->writeC(i->std.waveMacro.loop); } @@ -4200,7 +4266,9 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { w->writeI(i->data[j]>>2); } } else { - w->write(i->data,4*i->len); + for (int j=0; jlen; j++) { + w->writeI(i->data[j]); + } } } @@ -4213,7 +4281,13 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { w->writeS(pat->data[k][0]); // note w->writeS(pat->data[k][1]); // octave w->writeS(pat->data[k][3]); // volume +#ifdef TA_BIG_ENDIAN + for (int l=0; lwriteS(pat->data[k][4+l]); + } +#else w->write(&pat->data[k][4],2*curPat[i].effectCols*2); // effects +#endif w->writeS(pat->data[k][2]); // instrument } } @@ -4232,7 +4306,15 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { w->writeC(50); // i'm too lazy to deal with .dmf's weird way of storing 8-bit samples w->writeC(16); + // well I can't be lazy if it's on a big-endian system +#ifdef TA_BIG_ENDIAN + for (unsigned int j=0; jlength16; j++) { + w->writeC(((unsigned short)i->data16[j])&0xff); + w->writeC(((unsigned short)i->data16[j])>>8); + } +#else w->write(i->data16,i->length16); +#endif } saveLock.unlock(); diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 2836e6f9..687ba53f 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -549,6 +549,9 @@ void DivInstrument::putInsData(SafeWriter* w) { w->seek(0,SEEK_END); } +#define READ_MACRO_VALS(x,y) \ + for (int macroValPos=0; macroValPos=17) { - reader.read(std.pitchMacro.val,4*std.pitchMacro.len); - reader.read(std.ex1Macro.val,4*std.ex1Macro.len); - reader.read(std.ex2Macro.val,4*std.ex2Macro.len); - reader.read(std.ex3Macro.val,4*std.ex3Macro.len); + READ_MACRO_VALS(std.pitchMacro.val,std.pitchMacro.len); + READ_MACRO_VALS(std.ex1Macro.val,std.ex1Macro.len); + READ_MACRO_VALS(std.ex2Macro.val,std.ex2Macro.len); + READ_MACRO_VALS(std.ex3Macro.val,std.ex3Macro.len); } else { if (type==DIV_INS_STD) { if (oldVolHeight==31) { @@ -730,10 +733,10 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { std.fmsMacro.open=reader.readC(); std.amsMacro.open=reader.readC(); - reader.read(std.algMacro.val,4*std.algMacro.len); - reader.read(std.fbMacro.val,4*std.fbMacro.len); - reader.read(std.fmsMacro.val,4*std.fmsMacro.len); - reader.read(std.amsMacro.val,4*std.amsMacro.len); + READ_MACRO_VALS(std.algMacro.val,std.algMacro.len); + READ_MACRO_VALS(std.fbMacro.val,std.fbMacro.len); + READ_MACRO_VALS(std.fmsMacro.val,std.fmsMacro.len); + READ_MACRO_VALS(std.amsMacro.val,std.amsMacro.len); for (int i=0; i<4; i++) { DivInstrumentSTD::OpMacro& op=std.opMacros[i]; @@ -1007,14 +1010,14 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { std.ex7Macro.open=reader.readC(); std.ex8Macro.open=reader.readC(); - reader.read(std.panLMacro.val,4*std.panLMacro.len); - reader.read(std.panRMacro.val,4*std.panRMacro.len); - reader.read(std.phaseResetMacro.val,4*std.phaseResetMacro.len); - reader.read(std.ex4Macro.val,4*std.ex4Macro.len); - reader.read(std.ex5Macro.val,4*std.ex5Macro.len); - reader.read(std.ex6Macro.val,4*std.ex6Macro.len); - reader.read(std.ex7Macro.val,4*std.ex7Macro.len); - reader.read(std.ex8Macro.val,4*std.ex8Macro.len); + READ_MACRO_VALS(std.panLMacro.val,std.panLMacro.len); + READ_MACRO_VALS(std.panRMacro.val,std.panRMacro.len); + READ_MACRO_VALS(std.phaseResetMacro.val,std.phaseResetMacro.len); + READ_MACRO_VALS(std.ex4Macro.val,std.ex4Macro.len); + READ_MACRO_VALS(std.ex5Macro.val,std.ex5Macro.len); + READ_MACRO_VALS(std.ex6Macro.val,std.ex6Macro.len); + READ_MACRO_VALS(std.ex7Macro.val,std.ex7Macro.len); + READ_MACRO_VALS(std.ex8Macro.val,std.ex8Macro.len); // FDS fds.modSpeed=reader.readI(); From 65278405564929b3c21bb88f164ffdc66a0e951d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 01:27:21 -0500 Subject: [PATCH 420/580] Fix Initializer Again --- src/engine/instrument.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/instrument.h b/src/engine/instrument.h index e45fd02f..32c03f45 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -497,8 +497,8 @@ struct DivInstrumentES5506 { Filter filter; Envelope envelope; DivInstrumentES5506(): - filter(Filter()), - envelope(Envelope()) {} + filter(Filter()), + envelope(Envelope()) {} }; struct DivInstrument { From 3787d2ae87171e3a81ee17516998599eb24eb750 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 04:41:32 -0500 Subject: [PATCH 421/580] one more big endian fix --- src/engine/safeReader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/safeReader.cpp b/src/engine/safeReader.cpp index a367bfb7..76e337a3 100644 --- a/src/engine/safeReader.cpp +++ b/src/engine/safeReader.cpp @@ -127,7 +127,7 @@ int64_t SafeReader::readL() { unsigned char ret[8]; memcpy(ret,&buf[curSeek],8); curSeek+=8; - return (int64_t)(ret[0]|(ret[1]<<8)|(ret[2]<<16)|(ret[3]<<24)|(ret[4]<<32)|(ret[5]<<40)|(ret[6]<<48)|(ret[7]<<56)); + return (int64_t)(ret[0]|(ret[1]<<8)|(ret[2]<<16)|(ret[3]<<24)|((uint64_t)ret[4]<<32)|((uint64_t)ret[5]<<40)|((uint64_t)ret[6]<<48)|((uint64_t)ret[7]<<56)); } float SafeReader::readF() { From 94cf589e924f56d510a4101eb47e40f2416fc123 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 04:41:45 -0500 Subject: [PATCH 422/580] GUI: prepare for chip manager window --- CMakeLists.txt | 1 + src/gui/doAction.cpp | 6 ++++++ src/gui/gui.cpp | 5 +++++ src/gui/gui.h | 5 ++++- src/gui/guiConst.cpp | 1 + src/gui/sysManager.cpp | 37 +++++++++++++++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/gui/sysManager.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b6b7788..7c8d3939 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -552,6 +552,7 @@ src/gui/stats.cpp src/gui/subSongs.cpp src/gui/sysConf.cpp src/gui/sysEx.cpp +src/gui/sysManager.cpp src/gui/util.cpp src/gui/waveEdit.cpp src/gui/volMeter.cpp diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 5c840df4..e0f0ca30 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -241,6 +241,9 @@ void FurnaceGUI::doAction(int what) { case GUI_ACTION_WINDOW_PAT_MANAGER: nextWindow=GUI_WINDOW_PAT_MANAGER; break; + case GUI_ACTION_WINDOW_SYS_MANAGER: + nextWindow=GUI_WINDOW_SYS_MANAGER; + break; case GUI_ACTION_WINDOW_REGISTER_VIEW: nextWindow=GUI_WINDOW_REGISTER_VIEW; break; @@ -328,6 +331,9 @@ void FurnaceGUI::doAction(int what) { case GUI_WINDOW_PAT_MANAGER: patManagerOpen=false; break; + case GUI_WINDOW_SYS_MANAGER: + sysManagerOpen=false; + break; case GUI_WINDOW_REGISTER_VIEW: regViewOpen=false; break; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4a6f3f39..9189618d 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3108,6 +3108,7 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("mixer",BIND_FOR(GUI_ACTION_WINDOW_MIXER),mixerOpen)) mixerOpen=!mixerOpen; if (ImGui::MenuItem("channels",BIND_FOR(GUI_ACTION_WINDOW_CHANNELS),channelsOpen)) channelsOpen=!channelsOpen; if (ImGui::MenuItem("pattern manager",BIND_FOR(GUI_ACTION_WINDOW_PAT_MANAGER),patManagerOpen)) patManagerOpen=!patManagerOpen; + if (ImGui::MenuItem("chip manager",BIND_FOR(GUI_ACTION_WINDOW_SYS_MANAGER),sysManagerOpen)) sysManagerOpen=!sysManagerOpen; if (ImGui::MenuItem("compatibility flags",BIND_FOR(GUI_ACTION_WINDOW_COMPAT_FLAGS),compatFlagsOpen)) compatFlagsOpen=!compatFlagsOpen; if (ImGui::MenuItem("song comments",BIND_FOR(GUI_ACTION_WINDOW_NOTES),notesOpen)) notesOpen=!notesOpen; ImGui::Separator(); @@ -3243,6 +3244,7 @@ bool FurnaceGUI::loop() { drawNotes(); drawChannels(); drawPatManager(); + drawSysManager(); drawRegView(); drawLog(); drawEffectList(); @@ -4364,6 +4366,7 @@ bool FurnaceGUI::init() { notesOpen=e->getConfBool("notesOpen",false); channelsOpen=e->getConfBool("channelsOpen",false); patManagerOpen=e->getConfBool("patManagerOpen",false); + sysManagerOpen=e->getConfBool("sysManagerOpen",false); regViewOpen=e->getConfBool("regViewOpen",false); logOpen=e->getConfBool("logOpen",false); effectListOpen=e->getConfBool("effectListOpen",false); @@ -4607,6 +4610,7 @@ bool FurnaceGUI::finish() { e->setConf("notesOpen",notesOpen); e->setConf("channelsOpen",channelsOpen); e->setConf("patManagerOpen",patManagerOpen); + e->setConf("sysManagerOpen",sysManagerOpen); e->setConf("regViewOpen",regViewOpen); e->setConf("logOpen",logOpen); e->setConf("effectListOpen",effectListOpen); @@ -4787,6 +4791,7 @@ FurnaceGUI::FurnaceGUI(): findOpen(false), spoilerOpen(false), patManagerOpen(false), + sysManagerOpen(false), selecting(false), selectingFull(false), dragging(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 3e340119..8a3548f2 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -250,6 +250,7 @@ enum FurnaceGUIWindows { GUI_WINDOW_NOTES, GUI_WINDOW_CHANNELS, GUI_WINDOW_PAT_MANAGER, + GUI_WINDOW_SYS_MANAGER, GUI_WINDOW_REGISTER_VIEW, GUI_WINDOW_LOG, GUI_WINDOW_EFFECT_LIST, @@ -370,6 +371,7 @@ enum FurnaceGUIActions { GUI_ACTION_WINDOW_NOTES, GUI_ACTION_WINDOW_CHANNELS, GUI_ACTION_WINDOW_PAT_MANAGER, + GUI_ACTION_WINDOW_SYS_MANAGER, GUI_ACTION_WINDOW_REGISTER_VIEW, GUI_ACTION_WINDOW_LOG, GUI_ACTION_WINDOW_EFFECT_LIST, @@ -1278,7 +1280,7 @@ class FurnaceGUI { bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen; bool mixerOpen, debugOpen, inspectorOpen, oscOpen, volMeterOpen, statsOpen, compatFlagsOpen; bool pianoOpen, notesOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen; - bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen; + bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen, sysManagerOpen; SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; @@ -1588,6 +1590,7 @@ class FurnaceGUI { void drawNotes(); void drawChannels(); void drawPatManager(); + void drawSysManager(); void drawRegView(); void drawAbout(); void drawSettings(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 714e7770..1940946d 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -488,6 +488,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("WINDOW_NOTES", "Song Comments", 0), D("WINDOW_CHANNELS", "Channels", 0), D("WINDOW_PAT_MANAGER", "Pattern Manager", 0), + D("WINDOW_SYS_MANAGER", "Chip Manager", 0), D("WINDOW_REGISTER_VIEW", "Register View", 0), D("WINDOW_LOG", "Log Viewer", 0), D("EFFECT_LIST", "Effect List", 0), diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp new file mode 100644 index 00000000..e43b4dfe --- /dev/null +++ b/src/gui/sysManager.cpp @@ -0,0 +1,37 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "gui.h" +#include "misc/cpp/imgui_stdlib.h" +#include "IconsFontAwesome4.h" +#include + +void FurnaceGUI::drawSysManager() { + if (nextWindow==GUI_WINDOW_SYS_MANAGER) { + sysManagerOpen=true; + ImGui::SetNextWindowFocus(); + nextWindow=GUI_WINDOW_NOTHING; + } + if (!sysManagerOpen) return; + if (ImGui::Begin("Chip Manager",&sysManagerOpen,globalWinFlags)) { + ImGui::Text("Stuff here..."); + } + if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SYS_MANAGER; + ImGui::End(); +} From 27555c3c0ae8fcdb7ef3654643cbf0600ef222f8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 04:45:59 -0500 Subject: [PATCH 423/580] aaaand more fixing --- src/engine/fileOps.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 05d93abe..196721af 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -828,7 +828,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { #ifdef TA_BIG_ENDIAN // convert to big-endian - for (size_t pos=0; pos>8)); } #endif @@ -1719,7 +1719,7 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { #ifdef TA_BIG_ENDIAN // convert 16-bit samples to big-endian if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { - unsigned char* sampleBuf=sample->getCurBuf(); + unsigned char* sampleBuf=(unsigned char*)sample->getCurBuf(); size_t sampleBufLen=sample->getCurBufLen(); for (size_t pos=0; posdepth==DIV_SAMPLE_DEPTH_16BIT) { - unsigned char* sampleBuf=sample->getCurBuf(); + unsigned char* sampleBuf=(unsigned char*)sample->getCurBuf(); size_t sampleBufLen=sample->getCurBufLen(); for (size_t pos=0; pos Date: Fri, 19 Aug 2022 14:36:22 -0500 Subject: [PATCH 424/580] one moreeee big-endian fix --- src/audio/sdlAudio.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/audio/sdlAudio.cpp b/src/audio/sdlAudio.cpp index 5c11a034..f1d0e1e9 100644 --- a/src/audio/sdlAudio.cpp +++ b/src/audio/sdlAudio.cpp @@ -110,7 +110,11 @@ bool TAAudioSDL::init(TAAudioDesc& request, TAAudioDesc& response) { desc.outFormat=TA_AUDIO_FORMAT_F32; ac.freq=desc.rate; +#ifdef TA_BIG_ENDIAN + ac.format=AUDIO_F32MSB; +#else ac.format=AUDIO_F32; +#endif ac.channels=desc.outChans; ac.samples=desc.bufsize; ac.callback=taSDLProcess; From 5fe3a3c35a99ca9ae300ecff583cbce574038f31 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 16:25:32 -0500 Subject: [PATCH 425/580] prepare for moving chips --- src/engine/engine.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++ src/engine/engine.h | 3 +++ 2 files changed, 54 insertions(+) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 5fe2db69..7bf184f0 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1386,6 +1386,57 @@ bool DivEngine::removeSystem(int index, bool preserveOrder) { return true; } +bool DivEngine::swapSystem(int src, int dest, bool preserveOrder) { + if (src==dest) { + lastError="source and destination are equal"; + return false; + } + if (src<0 || src>=song.systemLen) { + lastError="invalid source index"; + return false; + } + if (dest<0 || dest>=song.systemLen) { + lastError="invalid destination index"; + return false; + } + //int chanCount=chans; + quitDispatch(); + BUSY_BEGIN; + saveLock.lock(); + + if (!preserveOrder) { + // move channels + // TODO: a lot of work! + } + + DivSystem srcSystem=song.system[src]; + + song.system[src]=song.system[dest]; + song.system[dest]=srcSystem; + + song.systemVol[src]^=song.systemVol[dest]; + song.systemVol[dest]^=song.systemVol[src]; + song.systemVol[src]^=song.systemVol[dest]; + + song.systemPan[src]^=song.systemPan[dest]; + song.systemPan[dest]^=song.systemPan[src]; + song.systemPan[src]^=song.systemPan[dest]; + + song.systemFlags[src]^=song.systemFlags[dest]; + song.systemFlags[dest]^=song.systemFlags[src]; + song.systemFlags[src]^=song.systemFlags[dest]; + + recalcChans(); + saveLock.unlock(); + BUSY_END; + initDispatch(); + BUSY_BEGIN; + renderSamples(); + reset(); + BUSY_END; + return true; +} + void DivEngine::poke(int sys, unsigned int addr, unsigned short val) { if (sys<0 || sys>=song.systemLen) return; BUSY_BEGIN; diff --git a/src/engine/engine.h b/src/engine/engine.h index 8e2c094d..d86e532b 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -905,6 +905,9 @@ class DivEngine { // remove system bool removeSystem(int index, bool preserveOrder=true); + + // move system + bool swapSystem(int src, int dest, bool preserveOrder=true); // write to register on system void poke(int sys, unsigned int addr, unsigned short val); From c74d7fab3733c2c0dcfa71a2b269329e122c38a3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 18:46:19 -0500 Subject: [PATCH 426/580] dev108 - add SN period range compat flag there's room for possible improvement --- papers/format.md | 4 +++- src/engine/engine.h | 4 ++-- src/engine/fileOps.cpp | 14 ++++++++++++-- src/engine/platform/sms.cpp | 10 ++++++++-- src/engine/song.h | 4 +++- src/gui/compatFlags.cpp | 4 ++++ 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/papers/format.md b/papers/format.md index 5dd7d206..7bd3bba7 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 108: Furnace dev108 - 107: Furnace dev107 - 106: Furnace dev106 - 105: Furnace dev105 @@ -331,7 +332,8 @@ size | description 1 | broken outVol (>=99) or reserved 1 | E1xy and E2xy stop on same note (>=100) or reserved 1 | broken initial position of porta after arp (>=101) or reserved - 7 | reserved + 1 | SN periods under 8 are treated as 1 (>=108) or reserved + 6 | reserved --- | **virtual tempo data** 2 | virtual tempo numerator of first song (>=96) or reserved 2 | virtual tempo denominator of first song (>=96) or reserved diff --git a/src/engine/engine.h b/src/engine/engine.h index d86e532b..4f11e82e 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -46,8 +46,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev107" -#define DIV_ENGINE_VERSION 107 +#define DIV_VERSION "dev108" +#define DIV_ENGINE_VERSION 108 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 196721af..df32f055 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -175,6 +175,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.brokenOutVol=true; // ??? ds.e1e2StopOnSameNote=true; ds.brokenPortaArp=false; + ds.snNoLowPeriods=true; // 1.1 compat flags if (ds.version>24) { @@ -1063,6 +1064,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { if (ds.version<101) { ds.brokenPortaArp=true; } + if (ds.version<108) { + ds.snNoLowPeriods=true; + } ds.isDMF=false; reader.readS(); // reserved @@ -1475,7 +1479,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } else { reader.readC(); } - for (int i=0; i<7; i++) { + if (ds.version>=108) { + ds.snNoLowPeriods=reader.readC(); + } else { + reader.readC(); + } + for (int i=0; i<6; i++) { reader.readC(); } } @@ -3719,7 +3728,8 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeC(song.brokenOutVol); w->writeC(song.e1e2StopOnSameNote); w->writeC(song.brokenPortaArp); - for (int i=0; i<7; i++) { + w->writeC(song.snNoLowPeriods); + for (int i=0; i<6; i++) { w->writeC(0); } diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 2988be2f..40a8616e 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -188,7 +188,11 @@ void DivPlatformSMS::tick(bool sysTick) { if (chan[i].freqChanged) { chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,true,0,chan[i].pitch2,chipClock,toneDivider); if (chan[i].freq>1023) chan[i].freq=1023; - if (chan[i].freq<8) chan[i].freq=1; + if (parent->song.snNoLowPeriods) { + if (chan[i].freq<8) chan[i].freq=1; + } else { + if (chan[i].freq<0) chan[i].freq=0; + } //if (chan[i].actualNote>0x5d) chan[i].freq=0x01; rWrite(0,0x80|i<<5|(chan[i].freq&15)); rWrite(0,chan[i].freq>>4); @@ -203,7 +207,9 @@ void DivPlatformSMS::tick(bool sysTick) { if (chan[3].freqChanged || updateSNMode) { chan[3].freq=parent->calcFreq(chan[3].baseFreq,chan[3].pitch,true,0,chan[3].pitch2,chipClock,noiseDivider); if (chan[3].freq>1023) chan[3].freq=1023; - if (chan[3].actualNote>0x5d) chan[3].freq=0x01; + if (parent->song.snNoLowPeriods) { + if (chan[3].actualNote>0x5d) chan[3].freq=0x01; + } if (snNoiseMode&2) { // take period from channel 3 if (updateSNMode || resetPhase) { if (snNoiseMode&1) { diff --git a/src/engine/song.h b/src/engine/song.h index de422a24..30f5ef24 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -500,6 +500,7 @@ struct DivSong { bool brokenOutVol; bool e1e2StopOnSameNote; bool brokenPortaArp; + bool snNoLowPeriods; std::vector ins; std::vector wave; @@ -600,7 +601,8 @@ struct DivSong { volMacroLinger(true), brokenOutVol(false), e1e2StopOnSameNote(false), - brokenPortaArp(false) { + brokenPortaArp(false), + snNoLowPeriods(false) { for (int i=0; i<32; i++) { system[i]=DIV_SYSTEM_NULL; systemVol[i]=64; diff --git a/src/gui/compatFlags.cpp b/src/gui/compatFlags.cpp index 9024992e..e6d0aed8 100644 --- a/src/gui/compatFlags.cpp +++ b/src/gui/compatFlags.cpp @@ -139,6 +139,10 @@ void FurnaceGUI::drawCompatFlags() { if (ImGui::IsItemHovered()) { ImGui::SetTooltip("if enabled, no checks for the presence of a volume macro will be made.\nthis will cause the last macro value to linger unless a value in the volume column is present."); } + ImGui::Checkbox("Treat SN76489 periods under 8 as 1",&e->song.snNoLowPeriods); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("when enabled, any SN period under 8 will be written as 1 instead.\nthis replicates DefleMask behavior, but reduces available period range."); + } ImGui::Text("Pitch linearity:"); if (ImGui::RadioButton("None",e->song.linearPitch==0)) { From 4d057d3328b90452de702b045b6b864602b72eb8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 19:42:01 -0500 Subject: [PATCH 427/580] dev109 - define SNES instrument params --- src/engine/engine.h | 4 +- src/engine/instrument.cpp | 20 ++++++++ src/engine/instrument.h | 23 ++++++++++ src/gui/insEdit.cpp | 97 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 142 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 4f11e82e..c433def8 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -46,8 +46,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev108" -#define DIV_ENGINE_VERSION 108 +#define DIV_VERSION "dev109" +#define DIV_ENGINE_VERSION 109 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 838e1384..9f1f5fff 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -554,6 +554,15 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeC(es5506.envelope.k2Ramp); w->writeC(es5506.envelope.k1Slow); w->writeC(es5506.envelope.k2Slow); + + // SNES + w->writeC(snes.useEnv); + w->writeC(snes.gainMode); + w->writeC(snes.gain); + w->writeC(snes.a); + w->writeC(snes.d); + w->writeC(snes.s); + w->writeC(snes.r); blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); @@ -1140,6 +1149,17 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { es5506.envelope.k2Slow=reader.readC(); } + // SNES + if (version>=109) { + snes.useEnv=reader.readC(); + snes.gainMode=(DivInstrumentSNES::GainMode)reader.readC(); + snes.gain=reader.readC(); + snes.a=reader.readC(); + snes.d=reader.readC(); + snes.s=reader.readC(); + snes.r=reader.readC(); + } + return DIV_DATA_SUCCESS; } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 32c03f45..da6d0841 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -501,6 +501,28 @@ struct DivInstrumentES5506 { envelope(Envelope()) {} }; +struct DivInstrumentSNES { + enum GainMode: unsigned char { + GAIN_MODE_DIRECT=0, + GAIN_MODE_DEC_LINEAR=4, + GAIN_MODE_DEC_LOG=5, + GAIN_MODE_INC_LINEAR=6, + GAIN_MODE_INC_INVLOG=7 + }; + bool useEnv; + GainMode gainMode; + unsigned char gain; + unsigned char a, d, s, r; + DivInstrumentSNES(): + useEnv(true), + gainMode(GAIN_MODE_DIRECT), + gain(127), + a(15), + d(7), + s(7), + r(0) {} +}; + struct DivInstrument { String name; bool mode; @@ -516,6 +538,7 @@ struct DivInstrument { DivInstrumentWaveSynth ws; DivInstrumentSoundUnit su; DivInstrumentES5506 es5506; + DivInstrumentSNES snes; /** * save the instrument to a SafeWriter. diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index f928e1f8..d09c8e2e 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3373,6 +3373,7 @@ void FurnaceGUI::drawInsEdit() { } if (ins->type==DIV_INS_AMIGA || ins->type==DIV_INS_SU || + ins->type==DIV_INS_SNES || ins->type==DIV_INS_ES5506) if (ImGui::BeginTabItem((ins->type==DIV_INS_SU)?"Sound Unit":"Sample")) { String sName; if (ins->amiga.initSample<0 || ins->amiga.initSample>=e->song.sampleLen) { @@ -3668,6 +3669,101 @@ void FurnaceGUI::drawInsEdit() { ImGui::EndTabItem(); } } + if (ins->type==DIV_INS_SNES) if (ImGui::BeginTabItem("SNES")) { + P(ImGui::Checkbox("Use envelope",&ins->snes.useEnv)); + ImVec2 sliderSize=ImVec2(20.0f*dpiScale,128.0*dpiScale); + if (ins->snes.useEnv) { + if (ImGui::BeginTable("SNESEnvParams",5,ImGuiTableFlags_NoHostExtendX)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,sliderSize.x); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,sliderSize.x); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthFixed,sliderSize.x); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed,sliderSize.x); + ImGui::TableSetupColumn("c4",ImGuiTableColumnFlags_WidthStretch); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + CENTER_TEXT("A"); + ImGui::TextUnformatted("A"); + ImGui::TableNextColumn(); + CENTER_TEXT("D"); + ImGui::TextUnformatted("D"); + ImGui::TableNextColumn(); + CENTER_TEXT("S"); + ImGui::TextUnformatted("S"); + ImGui::TableNextColumn(); + CENTER_TEXT("R"); + ImGui::TextUnformatted("R"); + ImGui::TableNextColumn(); + CENTER_TEXT("Envelope"); + ImGui::TextUnformatted("Envelope"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + P(CWVSliderScalar("##Attack",sliderSize,ImGuiDataType_U8,&ins->snes.a,&_ZERO,&_FIFTEEN)); + ImGui::TableNextColumn(); + P(CWVSliderScalar("##Decay",sliderSize,ImGuiDataType_U8,&ins->snes.d,&_ZERO,&_SEVEN)); + ImGui::TableNextColumn(); + P(CWVSliderScalar("##Sustain",sliderSize,ImGuiDataType_U8,&ins->snes.s,&_ZERO,&_SEVEN)); + ImGui::TableNextColumn(); + P(CWVSliderScalar("##Release",sliderSize,ImGuiDataType_U8,&ins->snes.r,&_ZERO,&_THIRTY_ONE)); + ImGui::TableNextColumn(); + drawFMEnv(0,ins->snes.a+1,1+ins->snes.d*2,ins->snes.r,ins->snes.r,(14-ins->snes.s*2),(ins->snes.r==0),0,0,7,16,ImVec2(ImGui::GetContentRegionAvail().x,sliderSize.y),ins->type); + + ImGui::EndTable(); + } + } else { + if (ImGui::BeginTable("SNESGainParams",3,ImGuiTableFlags_NoHostExtendX)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,sliderSize.x); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + CENTER_TEXT("Gain Mode"); + ImGui::TextUnformatted("Gain Mode"); + ImGui::TableNextColumn(); + CENTER_TEXT("Gain"); + ImGui::TextUnformatted("Gain"); + ImGui::TableNextColumn(); + CENTER_TEXT("Envelope"); + ImGui::TextUnformatted("Envelope"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::RadioButton("Direct",ins->snes.gainMode==DivInstrumentSNES::GAIN_MODE_DIRECT)) { + ins->snes.gainMode=DivInstrumentSNES::GAIN_MODE_DIRECT; + PARAMETER; + } + if (ImGui::RadioButton("Decrease (linear)",ins->snes.gainMode==DivInstrumentSNES::GAIN_MODE_DEC_LINEAR)) { + ins->snes.gainMode=DivInstrumentSNES::GAIN_MODE_DEC_LINEAR; + PARAMETER; + } + if (ImGui::RadioButton("Decrease (logarithmic)",ins->snes.gainMode==DivInstrumentSNES::GAIN_MODE_DEC_LOG)) { + ins->snes.gainMode=DivInstrumentSNES::GAIN_MODE_DEC_LOG; + PARAMETER; + } + if (ImGui::RadioButton("Increase (linear)",ins->snes.gainMode==DivInstrumentSNES::GAIN_MODE_INC_LINEAR)) { + ins->snes.gainMode=DivInstrumentSNES::GAIN_MODE_INC_LINEAR; + PARAMETER; + } + if (ImGui::RadioButton("Increase (bent line)",ins->snes.gainMode==DivInstrumentSNES::GAIN_MODE_INC_INVLOG)) { + ins->snes.gainMode=DivInstrumentSNES::GAIN_MODE_INC_INVLOG; + PARAMETER; + } + + ImGui::TableNextColumn(); + unsigned char gainMax=(ins->snes.gainMode==DivInstrumentSNES::GAIN_MODE_DIRECT)?127:31; + if (ins->snes.gain>gainMax) ins->snes.gain=gainMax; + P(CWVSliderScalar("##Gain",sliderSize,ImGuiDataType_U8,&ins->snes.gain,&_ZERO,&gainMax)); + + ImGui::TableNextColumn(); + ImGui::Text("Envelope goes here..."); + + ImGui::EndTable(); + } + } + ImGui::EndTabItem(); + } if (ins->type==DIV_INS_GB || (ins->type==DIV_INS_AMIGA && ins->amiga.useWave) || ins->type==DIV_INS_X1_010 || @@ -3676,6 +3772,7 @@ void FurnaceGUI::drawInsEdit() { ins->type==DIV_INS_SWAN || ins->type==DIV_INS_PCE || ins->type==DIV_INS_SCC || + ins->type==DIV_INS_SNES || ins->type==DIV_INS_NAMCO) { if (ImGui::BeginTabItem("Wavetable")) { if (ImGui::Checkbox("Enable synthesizer",&ins->ws.enabled)) { From 24e3dec84f60e540e4210a5846271bfcc6f67930 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 22:37:54 -0500 Subject: [PATCH 428/580] another big-endian fix! --- src/engine/wavetable.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/wavetable.cpp b/src/engine/wavetable.cpp index 0b13497e..9de8544f 100644 --- a/src/engine/wavetable.cpp +++ b/src/engine/wavetable.cpp @@ -59,7 +59,9 @@ DivDataErrors DivWavetable::readWaveData(SafeReader& reader, short version) { if (len>256 || min!=0 || max>255) return DIV_DATA_INVALID_DATA; - reader.read(data,4*len); + for (int i=0; i Date: Sat, 20 Aug 2022 01:10:30 -0500 Subject: [PATCH 429/580] GUI: highlight current macro position not for op macros (yet) --- src/engine/macroInt.cpp | 108 ++++++++++++++++++++++++++++++++++++++++ src/engine/macroInt.h | 11 +++- src/gui/insEdit.cpp | 30 +++++++++-- src/gui/plot_nolerp.cpp | 24 ++++++--- src/gui/plot_nolerp.h | 4 +- 5 files changed, 162 insertions(+), 15 deletions(-) diff --git a/src/engine/macroInt.cpp b/src/engine/macroInt.cpp index 06f04682..83ad906f 100644 --- a/src/engine/macroInt.cpp +++ b/src/engine/macroInt.cpp @@ -41,6 +41,7 @@ void DivMacroStruct::doMacro(DivInstrumentMacro& source, bool released, bool tic actualHad=has; had=actualHad; if (has) { + lastPos=pos; val=source.val[pos++]; if (source.rel>=0 && pos>source.rel && !released) { if (source.loop=0 && source.loop>8)^hashTable[(unsigned char)*i]; + } + return nameHash; +} + +#define CONSIDER(x) case NAME_HASH(#x): return &x; break; + +DivMacroStruct* DivMacroInt::structByName(const String& name) { + unsigned int hash=NAME_HASH(name.c_str()); + + switch (hash) { + CONSIDER(vol) + CONSIDER(arp) + CONSIDER(duty) + CONSIDER(wave) + CONSIDER(pitch) + CONSIDER(ex1) + CONSIDER(ex2) + CONSIDER(ex3) + CONSIDER(alg) + CONSIDER(fb) + CONSIDER(fms) + CONSIDER(ams) + CONSIDER(panL) + CONSIDER(panR) + CONSIDER(phaseReset) + CONSIDER(ex4) + CONSIDER(ex5) + CONSIDER(ex6) + CONSIDER(ex7) + CONSIDER(ex8) + } + + return NULL; +} diff --git a/src/engine/macroInt.h b/src/engine/macroInt.h index 83962555..8569dce4 100644 --- a/src/engine/macroInt.h +++ b/src/engine/macroInt.h @@ -25,13 +25,13 @@ class DivEngine; struct DivMacroStruct { - int pos; + int pos, lastPos; int val; bool has, had, actualHad, finished, will, linger; unsigned int mode; void doMacro(DivInstrumentMacro& source, bool released, bool tick); void init() { - pos=mode=0; + pos=lastPos=mode=0; has=had=actualHad=will=false; linger=false; // TODO: test whether this breaks anything? @@ -127,6 +127,13 @@ class DivMacroInt { */ void notifyInsDeletion(DivInstrument* which); + /** + * get DivMacroStruct by macro name. + * @param which the macro name. + * @return a DivMacroStruct, or NULL if none found. + */ + DivMacroStruct* structByName(const String& name); + DivMacroInt(): e(NULL), ins(NULL), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index d09c8e2e..dc239fcd 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -19,6 +19,7 @@ #include "gui.h" #include "imgui_internal.h" +#include "../engine/macroInt.h" #include "IconsFontAwesome4.h" #include "misc/cpp/imgui_stdlib.h" #include "guiConst.h" @@ -1195,6 +1196,7 @@ void FurnaceGUI::drawMacros(std::vector& macros) { float asFloat[256]; int asInt[256]; float loopIndicator[256]; + bool doHighlight[256]; int index=0; float reservedSpace=(settings.oldMacroVSlider)?(20.0f*dpiScale+ImGui::GetStyle().ItemSpacing.x):ImGui::GetStyle().ScrollbarSize; @@ -1285,11 +1287,33 @@ void FurnaceGUI::drawMacros(std::vector& macros) { if (i.macro->vZoom>(i.max-i.min)) { i.macro->vZoom=i.max-i.min; } - + + memset(doHighlight,0,256*sizeof(bool)); + if (e->isRunning()) for (int j=0; jgetTotalChannelCount(); j++) { + DivChannelState* chanState=e->getChanState(j); + if (chanState==NULL) continue; + + if (chanState->keyOff) continue; + if (chanState->lastIns!=curIns) continue; + + DivMacroInt* macroInt=e->getMacroInt(j); + if (macroInt==NULL) continue; + + DivMacroStruct* macroStruct=macroInt->structByName(i.macro->name); + if (macroStruct==NULL) continue; + + if (macroStruct->lastPos>i.macro->len) continue; + if (macroStruct->lastPoslastPos>255) continue; + if (!macroStruct->actualHad) continue; + + doHighlight[macroStruct->lastPos-macroDragScroll]=true; + } + if (i.isBitfield) { - PlotBitfield("##IMacro",asInt,totalFit,0,i.bitfieldBits,i.max,ImVec2(availableWidth,(i.macro->open)?(i.height*dpiScale):(32.0f*dpiScale))); + PlotBitfield("##IMacro",asInt,totalFit,0,i.bitfieldBits,i.max,ImVec2(availableWidth,(i.macro->open)?(i.height*dpiScale):(32.0f*dpiScale)),sizeof(float),doHighlight); } else { - PlotCustom("##IMacro",asFloat,totalFit,macroDragScroll,NULL,i.min+i.macro->vScroll,i.min+i.macro->vScroll+i.macro->vZoom,ImVec2(availableWidth,(i.macro->open)?(i.height*dpiScale):(32.0f*dpiScale)),sizeof(float),i.color,i.macro->len-macroDragScroll,i.hoverFunc,i.blockMode,i.macro->open?genericGuide:NULL); + PlotCustom("##IMacro",asFloat,totalFit,macroDragScroll,NULL,i.min+i.macro->vScroll,i.min+i.macro->vScroll+i.macro->vZoom,ImVec2(availableWidth,(i.macro->open)?(i.height*dpiScale):(32.0f*dpiScale)),sizeof(float),i.color,i.macro->len-macroDragScroll,i.hoverFunc,i.blockMode,i.macro->open?genericGuide:NULL,doHighlight); } if (i.macro->open && (ImGui::IsItemClicked(ImGuiMouseButton_Left) || ImGui::IsItemClicked(ImGuiMouseButton_Right))) { macroDragStart=ImGui::GetItemRectMin(); diff --git a/src/gui/plot_nolerp.cpp b/src/gui/plot_nolerp.cpp index 64ffc410..d802cbc5 100644 --- a/src/gui/plot_nolerp.cpp +++ b/src/gui/plot_nolerp.cpp @@ -183,7 +183,7 @@ void PlotNoLerp(const char* label, const float* values, int values_count, int va PlotNoLerpEx(ImGuiPlotType_Lines, label, &Plot_ArrayGetter, (void*)&data, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size); } -int PlotBitfieldEx(const char* label, int (*values_getter)(void* data, int idx), void* data, int values_count, int values_offset, const char** overlay_text, int bits, ImVec2 frame_size) +int PlotBitfieldEx(const char* label, int (*values_getter)(void* data, int idx), void* data, int values_count, int values_offset, const char** overlay_text, int bits, ImVec2 frame_size, const bool* values_highlight, ImVec4 highlightColor) { ImGuiContext& g = *GImGui; ImGuiWindow* window = ImGui::GetCurrentWindow(); @@ -253,7 +253,11 @@ int PlotBitfieldEx(const char* label, int (*values_getter)(void* data, int idx), if (pos1.y <= pos0.y - 2.0f) pos1.y += 1.0f; if (v1&(1<DrawList->AddRectFilled(pos0, pos1, idx_hovered == v1_idx ? col_hovered : col_base); + ImU32 rCol=(idx_hovered == v1_idx ? col_hovered : col_base); + if (values_highlight!=NULL) { + if (values_highlight[v1_idx]) rCol=ImGui::GetColorU32(highlightColor); + } + window->DrawList->AddRectFilled(pos0, pos1, rCol); } } tp0 = tp1; @@ -283,13 +287,13 @@ int PlotBitfieldEx(const char* label, int (*values_getter)(void* data, int idx), return idx_hovered; } -void PlotBitfield(const char* label, const int* values, int values_count, int values_offset, const char** overlay_text, int bits, ImVec2 graph_size, int stride) +void PlotBitfield(const char* label, const int* values, int values_count, int values_offset, const char** overlay_text, int bits, ImVec2 graph_size, int stride, const bool* values_highlight, ImVec4 highlightColor) { FurnacePlotIntArrayGetterData data(values, stride); - PlotBitfieldEx(label, &Plot_IntArrayGetter, (void*)&data, values_count, values_offset, overlay_text, bits, graph_size); + PlotBitfieldEx(label, &Plot_IntArrayGetter, (void*)&data, values_count, values_offset, overlay_text, bits, graph_size, values_highlight, highlightColor); } -int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_getter)(void* data, int idx), void* data, int values_count, int values_display_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 frame_size, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float), bool blockMode, std::string (*guideFunc)(float)) +int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_getter)(void* data, int idx), void* data, int values_count, int values_display_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 frame_size, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float), bool blockMode, std::string (*guideFunc)(float), const bool* values_highlight, ImVec4 highlightColor) { ImGuiContext& g = *GImGui; ImGuiWindow* window = ImGui::GetCurrentWindow(); @@ -413,7 +417,11 @@ int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_gett pos0.y-=(inner_bb.Max.y-inner_bb.Min.y)*inv_scale; //pos1.y+=1.0f; } - window->DrawList->AddRectFilled(pos0, pos1, idx_hovered == v1_idx ? col_hovered : col_base); + ImU32 rCol=(idx_hovered == v1_idx ? col_hovered : col_base); + if (values_highlight!=NULL) { + if (values_highlight[v1_idx]) rCol=ImGui::GetColorU32(highlightColor); + } + window->DrawList->AddRectFilled(pos0, pos1, rCol); } t0 = t1; @@ -451,8 +459,8 @@ int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_gett return idx_hovered; } -void PlotCustom(const char* label, const float* values, int values_count, int values_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 graph_size, int stride, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float), bool blockMode, std::string (*guideFunc)(float)) +void PlotCustom(const char* label, const float* values, int values_count, int values_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 graph_size, int stride, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float), bool blockMode, std::string (*guideFunc)(float), const bool* values_highlight, ImVec4 highlightColor) { FurnacePlotArrayGetterData data(values, stride); - PlotCustomEx(ImGuiPlotType_Histogram, label, &Plot_ArrayGetter, (void*)&data, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size, color, highlight, hoverFunc, blockMode, guideFunc); + PlotCustomEx(ImGuiPlotType_Histogram, label, &Plot_ArrayGetter, (void*)&data, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size, color, highlight, hoverFunc, blockMode, guideFunc, values_highlight, highlightColor); } \ No newline at end of file diff --git a/src/gui/plot_nolerp.h b/src/gui/plot_nolerp.h index 5862dfad..b353e6f8 100644 --- a/src/gui/plot_nolerp.h +++ b/src/gui/plot_nolerp.h @@ -21,5 +21,5 @@ #include void PlotNoLerp(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float)); -void PlotBitfield(const char* label, const int* values, int values_count, int values_offset = 0, const char** overlay_text = NULL, int bits = 8, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float)); -void PlotCustom(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float), ImVec4 fgColor = ImVec4(1.0f,1.0f,1.0f,1.0f), int highlight = 0, std::string (*hoverFunc)(int,float) = NULL, bool blockMode=false, std::string (*guideFunc)(float) = NULL); \ No newline at end of file +void PlotBitfield(const char* label, const int* values, int values_count, int values_offset = 0, const char** overlay_text = NULL, int bits = 8, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float), const bool* values_highlight = NULL, ImVec4 highlightColor = ImVec4(1.0f,1.0f,1.0f,1.0f)); +void PlotCustom(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float), ImVec4 fgColor = ImVec4(1.0f,1.0f,1.0f,1.0f), int highlight = 0, std::string (*hoverFunc)(int,float) = NULL, bool blockMode=false, std::string (*guideFunc)(float) = NULL, const bool* values_highlight = NULL, ImVec4 highlightColor = ImVec4(1.0f,1.0f,1.0f,1.0f)); \ No newline at end of file From 0f92c4e35a51d1df3e8e8bc3305783b857d93b25 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 20 Aug 2022 04:46:45 -0500 Subject: [PATCH 430/580] GUI: fix change ins applying to off and release --- src/gui/editing.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index 21b1a72e..1ca3ff69 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -577,7 +577,7 @@ void FurnaceGUI::doChangeIns(int ins) { if (!e->curSubSong->chanShow[iCoarse]) continue; DivPattern* pat=e->curPat[iCoarse].getPattern(e->curOrders->ord[iCoarse][curOrder],true); for (int j=selStart.y; j<=selEnd.y; j++) { - if (pat->data[j][2]!=-1 || !(pat->data[j][0]==0 && pat->data[j][1]==0)) { + if (pat->data[j][2]!=-1 || !((pat->data[j][0]==0 || pat->data[j][0]==100 || pat->data[j][0]==101 || pat->data[j][0]==102) && pat->data[j][1]==0)) { pat->data[j][2]=ins; } } From 1b2d2fdb985733cfd18bb95e1a519129b8949d1e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 20 Aug 2022 17:04:57 -0500 Subject: [PATCH 431/580] system --- src/gui/effectList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/effectList.cpp b/src/gui/effectList.cpp index a71a2fec..488d4e79 100644 --- a/src/gui/effectList.cpp +++ b/src/gui/effectList.cpp @@ -10,7 +10,7 @@ void FurnaceGUI::drawEffectList() { } if (!effectListOpen) return; if (ImGui::Begin("Effect List",&effectListOpen,globalWinFlags)) { - ImGui::Text("System at cursor: %s",e->getSystemName(e->sysOfChan[cursor.xCoarse])); + ImGui::Text("Chip at cursor: %s",e->getSystemName(e->sysOfChan[cursor.xCoarse])); if (ImGui::BeginTable("effectList",2)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); From dfb663d8765b00016e81d50f0a3ef08e61d2419c Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 21 Aug 2022 12:46:56 +0900 Subject: [PATCH 432/580] Fix this for preparing OPL3-L and OPL4 --- src/engine/platform/opl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 784bd08f..88b1cbda 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1595,7 +1595,7 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { adpcmChan=drums?11:9; } break; - case 3: case 759: + case 3: case 4: case 759: slotsNonDrums=slotsOPL3; slotsDrums=slotsOPL3Drums; slots=drums?slotsDrums:slotsNonDrums; From 2863f1662f1e7f3eac658ec77685760c6d0ae903 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 21 Aug 2022 12:57:53 +0900 Subject: [PATCH 433/580] Fix pitch --- src/engine/platform/opl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 88b1cbda..78ef25a2 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1609,6 +1609,7 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { pretendYMU=true; adpcmChan=16; } else if (type==4) { + chipFreqBase=32768*684; downsample=true; } break; From 0b2f49199764bceeccb4f7be2dd34614de1160d7 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 21 Aug 2022 13:10:46 +0900 Subject: [PATCH 434/580] More preparing, Add OPL type docs --- src/engine/dispatchContainer.cpp | 27 +++++---------------------- src/engine/platform/opl.cpp | 15 ++++++++++++--- src/engine/platform/opl.h | 4 ++++ 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/engine/dispatchContainer.cpp b/src/engine/dispatchContainer.cpp index 8d8db5c5..f116b1ca 100644 --- a/src/engine/dispatchContainer.cpp +++ b/src/engine/dispatchContainer.cpp @@ -179,8 +179,7 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do switch (sys) { case DIV_SYSTEM_YMU759: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(759,false); + dispatch=new DivPlatformOPL(759,false); break; case DIV_SYSTEM_YM2612: dispatch=new DivPlatformGenesis; @@ -278,36 +277,20 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do ((DivPlatformOPLL*)dispatch)->setProperDrums(sys==DIV_SYSTEM_OPLL_DRUMS); break; case DIV_SYSTEM_OPL: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(1,false); - break; case DIV_SYSTEM_OPL_DRUMS: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(1,true); + dispatch=new DivPlatformOPL(1,sys==DIV_SYSTEM_OPL_DRUMS); break; case DIV_SYSTEM_OPL2: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(2,false); - break; case DIV_SYSTEM_OPL2_DRUMS: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(2,true); + dispatch=new DivPlatformOPL(2,sys==DIV_SYSTEM_OPL2_DRUMS); break; case DIV_SYSTEM_OPL3: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(3,false); - break; case DIV_SYSTEM_OPL3_DRUMS: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(3,true); + dispatch=new DivPlatformOPL(3,sys==DIV_SYSTEM_OPL3_DRUMS); break; case DIV_SYSTEM_Y8950: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(8950,false); - break; case DIV_SYSTEM_Y8950_DRUMS: - dispatch=new DivPlatformOPL; - ((DivPlatformOPL*)dispatch)->setOPLType(8950,true); + dispatch=new DivPlatformOPL(8950,sys==DIV_SYSTEM_Y8950_DRUMS); break; case DIV_SYSTEM_OPZ: dispatch=new DivPlatformTX81Z; diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 78ef25a2..a808ab62 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1580,6 +1580,14 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { pretendYMU=false; downsample=false; adpcmChan=-1; + // Vaild type value: + // 1 (YM3526) + // 2 (YM3812) + // 3 (YMF262) + // 4 (YMF278; Not implemented) + // 289 (YMF289; Not implemented) + // 759 (YMU759) + // 8950 (Y8950) switch (type) { case 1: case 2: case 8950: slotsNonDrums=slotsOPL2; @@ -1595,7 +1603,7 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { adpcmChan=drums?11:9; } break; - case 3: case 4: case 759: + case 3: case 4: case 289: case 759: slotsNonDrums=slotsOPL3; slotsDrums=slotsOPL3Drums; slots=drums?slotsDrums:slotsNonDrums; @@ -1608,14 +1616,14 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { if (type==759) { pretendYMU=true; adpcmChan=16; - } else if (type==4) { + } else if (type==4 || type==289) { chipFreqBase=32768*684; downsample=true; } break; } chipType=type; - if (type==759 || type==4) { + if (type==759 || type==289 || type==4) { oplType=3; } else if (type==8950) { oplType=1; @@ -1698,6 +1706,7 @@ void DivPlatformOPL::setFlags(unsigned int flags) { chipRateBase=rate; break; case 4: + case 289: switch (flags&0xff) { case 0x01: chipClock=COLOR_PAL*32.0/5.0; diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index e3b16679..a885814a 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -151,6 +151,10 @@ class DivPlatformOPL: public DivDispatch { void renderSamples(); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); + DivPlatformOPL(int type, bool drums): + DivDispatch() { + setOPLType(type,drums); + } ~DivPlatformOPL(); }; #endif From f2950fa1d69a0830152acd706422ac20cdb06728 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 20 Aug 2022 23:35:13 -0500 Subject: [PATCH 435/580] Revert "More preparing, Add OPL type docs" This reverts commit 0b2f49199764bceeccb4f7be2dd34614de1160d7. do not add a constructor to any of the DivPlatforms. it will break things. --- src/engine/dispatchContainer.cpp | 27 ++++++++++++++++++++++----- src/engine/platform/opl.cpp | 15 +++------------ src/engine/platform/opl.h | 4 ---- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/engine/dispatchContainer.cpp b/src/engine/dispatchContainer.cpp index f116b1ca..8d8db5c5 100644 --- a/src/engine/dispatchContainer.cpp +++ b/src/engine/dispatchContainer.cpp @@ -179,7 +179,8 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do switch (sys) { case DIV_SYSTEM_YMU759: - dispatch=new DivPlatformOPL(759,false); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(759,false); break; case DIV_SYSTEM_YM2612: dispatch=new DivPlatformGenesis; @@ -277,20 +278,36 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do ((DivPlatformOPLL*)dispatch)->setProperDrums(sys==DIV_SYSTEM_OPLL_DRUMS); break; case DIV_SYSTEM_OPL: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(1,false); + break; case DIV_SYSTEM_OPL_DRUMS: - dispatch=new DivPlatformOPL(1,sys==DIV_SYSTEM_OPL_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(1,true); break; case DIV_SYSTEM_OPL2: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(2,false); + break; case DIV_SYSTEM_OPL2_DRUMS: - dispatch=new DivPlatformOPL(2,sys==DIV_SYSTEM_OPL2_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(2,true); break; case DIV_SYSTEM_OPL3: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(3,false); + break; case DIV_SYSTEM_OPL3_DRUMS: - dispatch=new DivPlatformOPL(3,sys==DIV_SYSTEM_OPL3_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(3,true); break; case DIV_SYSTEM_Y8950: + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(8950,false); + break; case DIV_SYSTEM_Y8950_DRUMS: - dispatch=new DivPlatformOPL(8950,sys==DIV_SYSTEM_Y8950_DRUMS); + dispatch=new DivPlatformOPL; + ((DivPlatformOPL*)dispatch)->setOPLType(8950,true); break; case DIV_SYSTEM_OPZ: dispatch=new DivPlatformTX81Z; diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index a808ab62..78ef25a2 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -1580,14 +1580,6 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { pretendYMU=false; downsample=false; adpcmChan=-1; - // Vaild type value: - // 1 (YM3526) - // 2 (YM3812) - // 3 (YMF262) - // 4 (YMF278; Not implemented) - // 289 (YMF289; Not implemented) - // 759 (YMU759) - // 8950 (Y8950) switch (type) { case 1: case 2: case 8950: slotsNonDrums=slotsOPL2; @@ -1603,7 +1595,7 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { adpcmChan=drums?11:9; } break; - case 3: case 4: case 289: case 759: + case 3: case 4: case 759: slotsNonDrums=slotsOPL3; slotsDrums=slotsOPL3Drums; slots=drums?slotsDrums:slotsNonDrums; @@ -1616,14 +1608,14 @@ void DivPlatformOPL::setOPLType(int type, bool drums) { if (type==759) { pretendYMU=true; adpcmChan=16; - } else if (type==4 || type==289) { + } else if (type==4) { chipFreqBase=32768*684; downsample=true; } break; } chipType=type; - if (type==759 || type==289 || type==4) { + if (type==759 || type==4) { oplType=3; } else if (type==8950) { oplType=1; @@ -1706,7 +1698,6 @@ void DivPlatformOPL::setFlags(unsigned int flags) { chipRateBase=rate; break; case 4: - case 289: switch (flags&0xff) { case 0x01: chipClock=COLOR_PAL*32.0/5.0; diff --git a/src/engine/platform/opl.h b/src/engine/platform/opl.h index a885814a..e3b16679 100644 --- a/src/engine/platform/opl.h +++ b/src/engine/platform/opl.h @@ -151,10 +151,6 @@ class DivPlatformOPL: public DivDispatch { void renderSamples(); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); - DivPlatformOPL(int type, bool drums): - DivDispatch() { - setOPLType(type,drums); - } ~DivPlatformOPL(); }; #endif From ba126b820aade878b64df9df21b3ae2f1da7ca4d Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 21 Aug 2022 14:07:24 +0900 Subject: [PATCH 436/580] Add preset MSX + Neotron MSX sound expansion with YM2610 or YM2610B (optional), from Neo Geo and bunch of arcade boards - especially Taito's. MSX + SIMPL Covox speech thing-ish 8bit DAC for MSX. --- src/gui/presets.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 571cda44..18bcc509 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -854,6 +854,41 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "MSX + Neotron", { + DIV_SYSTEM_AY8910, 64, 0, 16, + DIV_SYSTEM_YM2610_FULL, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "MSX + Neotron (extended channel 2)", { + DIV_SYSTEM_AY8910, 64, 0, 16, + DIV_SYSTEM_YM2610_FULL_EXT, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "MSX + Neotron (with YM2610B)", { + DIV_SYSTEM_AY8910, 64, 0, 16, + DIV_SYSTEM_YM2610B, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "MSX + Neotron (with YM2610B; extended channel 3)", { + DIV_SYSTEM_AY8910, 64, 0, 16, + DIV_SYSTEM_YM2610B_EXT, 64, 0, 0, + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "MSX + SIMPL", { + DIV_SYSTEM_AY8910, 64, 0, 16, + DIV_SYSTEM_PCM_DAC, 64, 0, 55929|(7<<16), // variable rate, DAC + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "NEC PC-98 (with PC-9801-26/K)", { DIV_SYSTEM_OPN, 64, 0, 4, // 3.9936MHz but some compatible card has 4MHz From 16d7cd33202797868ef766fc212b3a71aaffec93 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 21 Aug 2022 14:08:14 +0900 Subject: [PATCH 437/580] More docs --- src/gui/presets.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 18bcc509..04049bdf 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -885,7 +885,7 @@ void FurnaceGUI::initSystemPresets() { cat.systems.push_back(FurnaceGUISysDef( "MSX + SIMPL", { DIV_SYSTEM_AY8910, 64, 0, 16, - DIV_SYSTEM_PCM_DAC, 64, 0, 55929|(7<<16), // variable rate, DAC + DIV_SYSTEM_PCM_DAC, 64, 0, 55929|(7<<16), // variable rate, Mono DAC 0 } )); From 96feeced869ee3823faa691ec706dfd75ee3b574 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Aug 2022 16:34:43 -0500 Subject: [PATCH 438/580] to-do --- CONTRIBUTING.md | 2 ++ src/engine/platform/tia.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 51903d8b..c6931ce8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,6 +33,7 @@ the coding style is described here: - indent switch cases - preprocessor directives not intended - if macro comprises more than one line, indent + - no new line after `template<>` - prefer built-in types: - `bool` - `signed char` or `unsigned char` are 8-bit @@ -81,6 +82,7 @@ just put your demo song in `demos/`! be noted there are some guidelines: - avoid Nintendo song covers. - avoid big label song covers. +- avoid poor quality songs. # Finishing diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index bebc1ff2..ed556e4f 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -118,6 +118,7 @@ void DivPlatformTIA::tick(bool sysTick) { } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { if (chan[i].insChanged) { + // TODO: fix 10xx bug here if (!chan[i].std.wave.will) { chan[i].shape=4; rWrite(0x15+i,chan[i].shape); From 808832864c505f54ea8079c126616b72417298ac Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Aug 2022 16:53:45 -0500 Subject: [PATCH 439/580] add another demo song by Raijin --- demos/Waterworld_-_Map.fur | Bin 0 -> 2795 bytes src/gui/about.cpp | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 demos/Waterworld_-_Map.fur diff --git a/demos/Waterworld_-_Map.fur b/demos/Waterworld_-_Map.fur new file mode 100644 index 0000000000000000000000000000000000000000..2bf8a7af78bf33271550a1a603323531e42269b6 GIT binary patch literal 2795 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 literal 0 HcmV?d00001 diff --git a/src/gui/about.cpp b/src/gui/about.cpp index ae0792ae..65baf4fd 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -49,6 +49,7 @@ const char* aboutLine[]={ "tildearrow", "BlastBrothers", "Mahbod Karamoozian", + "nicco1690", "Raijin", "", "-- documentation --", @@ -87,6 +88,7 @@ const char* aboutLine[]={ "nicco1690", "NikonTeen", "psdominator", + "Raijin", "SuperJet Spade", "TheDuccinator", "theloredev", From e226d09807d28edb5baefbed9e9c2f4c11345c0d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Aug 2022 17:15:05 -0500 Subject: [PATCH 440/580] TIA: fix 10xx not working when changing instrument --- src/engine/platform/tia.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index ed556e4f..18bdcb0c 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -117,14 +117,6 @@ void DivPlatformTIA::tick(bool sysTick) { chan[i].freqChanged=true; } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { - if (chan[i].insChanged) { - // TODO: fix 10xx bug here - if (!chan[i].std.wave.will) { - chan[i].shape=4; - rWrite(0x15+i,chan[i].shape); - } - chan[i].insChanged=false; - } chan[i].freq=dealWithFreq(chan[i].shape,chan[i].baseFreq,chan[i].pitch)+chan[i].pitch2; if ((chan[i].shape==4 || chan[i].shape==5) && !(chan[i].baseFreq&0x80000000 && ((chan[i].baseFreq&0x7fffffff)<32))) { if (chan[i].baseFreq<39*256) { @@ -165,6 +157,13 @@ int DivPlatformTIA::dispatch(DivCommand c) { if (!parent->song.brokenOutVol && !chan[c.chan].std.vol.will) { chan[c.chan].outVol=chan[c.chan].vol; } + if (chan[c.chan].insChanged) { + if (!chan[c.chan].std.wave.will) { + chan[c.chan].shape=4; + rWrite(0x15+c.chan,chan[c.chan].shape); + } + chan[c.chan].insChanged=false; + } if (isMuted[c.chan]) { rWrite(0x19+c.chan,0); } else { From 05b5265bbb0c90998f962ab20396484c9bf4949c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Aug 2022 19:46:48 -0500 Subject: [PATCH 441/580] YM2612: #632 --- src/engine/platform/genesis.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 0260ea06..143a90fe 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -279,10 +279,24 @@ void DivPlatformGenesis::tick(bool sysTick) { } } - if (chan[i].std.panL.had) { - chan[i].pan=chan[i].std.panL.val&3; - if (i<6) { - rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + if (i>=5 && chan[i].furnaceDac) { + if (chan[i].std.panL.had) { + chan[5].pan&=1; + chan[5].pan|=chan[i].std.panL.val?2:0; + } + if (chan[i].std.panR.had) { + chan[5].pan&=2; + chan[5].pan|=chan[i].std.panR.val?1:0; + } + if (chan[i].std.panL.had || chan[i].std.panR.had) { + rWrite(chanOffs[5]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[5].pan<<6))|(chan[5].state.fms&7)|((chan[5].state.ams&3)<<4)); + } + } else { + if (chan[i].std.panL.had) { + chan[i].pan=chan[i].std.panL.val&3; + if (i<6) { + rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + } } } From e88e0a4e4ef6ece61866480f7c9463f4905d700c Mon Sep 17 00:00:00 2001 From: aurora Date: Mon, 22 Aug 2022 03:47:00 +0300 Subject: [PATCH 442/580] GUI: Remember window x/y position and maximized state. Warning: This may cause issues when windows are re-ordered. Is there a way to fix windows spawning outside of screen boundaries? --- src/gui/gui.cpp | 61 +++++++++++++++++++++++++++++++++++++------------ src/gui/gui.h | 8 ++++--- 2 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 9189618d..20c3fc58 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -862,7 +862,7 @@ void FurnaceGUI::stopPreviewNote(SDL_Scancode scancode, bool autoNote) { void FurnaceGUI::noteInput(int num, int key, int vol) { DivPattern* pat=e->curPat[cursor.xCoarse].getPattern(e->curOrders->ord[cursor.xCoarse][curOrder],true); - + prepareUndo(GUI_UNDO_PATTERN_EDIT); if (key==100) { // note off @@ -2103,7 +2103,7 @@ void FurnaceGUI::editOptions(bool topMenu) { snprintf(id,63,"%.2x##LatchFX",data); ImGui::PushStyleColor(ImGuiCol_Text,uiColors[fxColors[data]]); } - + if (ImGui::Selectable(id,latchTarget==3,ImGuiSelectableFlags_DontClosePopups)) { latchTarget=3; latchNibble=false; @@ -2176,7 +2176,7 @@ void FurnaceGUI::editOptions(bool topMenu) { doTranspose(transposeAmount,opMaskTransposeValue); ImGui::CloseCurrentPopup(); } - + ImGui::Separator(); if (ImGui::MenuItem("interpolate",BIND_FOR(GUI_ACTION_PAT_INTERPOLATE))) doInterpolate(); if (ImGui::BeginMenu("change instrument...")) { @@ -2303,7 +2303,7 @@ void FurnaceGUI::toggleMobileUI(bool enable, bool force) { if (mobileUI!=enable || force) { if (!mobileUI && enable) { ImGui::SaveIniSettingsToDisk(finalLayoutPath); - } + } mobileUI=enable; if (mobileUI) { ImGui::GetIO().IniFilename=NULL; @@ -2311,7 +2311,7 @@ void FurnaceGUI::toggleMobileUI(bool enable, bool force) { ImGui::GetIO().IniFilename=finalLayoutPath; ImGui::LoadIniSettingsFromDisk(finalLayoutPath); } - } + } } int _processEvent(void* instance, SDL_Event* event) { @@ -2536,6 +2536,7 @@ bool FurnaceGUI::loop() { if (settings.powerSave) SDL_WaitEventTimeout(NULL,500); } eventTimeBegin=SDL_GetPerformanceCounter(); + bool updateWindow = false; while (SDL_PollEvent(&ev)) { WAKE_UP; ImGui_ImplSDL2_ProcessEvent(&ev); @@ -2642,6 +2643,20 @@ bool FurnaceGUI::loop() { scrW=ev.window.data1/dpiScale; scrH=ev.window.data2/dpiScale; #endif + updateWindow=true; + break; + case SDL_WINDOWEVENT_MOVED: + scrX=ev.window.data1; + scrY=ev.window.data2; + updateWindow=true; + break; + case SDL_WINDOWEVENT_MAXIMIZED: + scrMax=true; + updateWindow=true; + break; + case SDL_WINDOWEVENT_RESTORED: + scrMax=false; + updateWindow=true; break; } break; @@ -2697,6 +2712,18 @@ bool FurnaceGUI::loop() { } } + // update config x/y/w/h values based on scrMax state + if(updateWindow) { + if(scrMax) { + scrConfY=scrConfX = SDL_WINDOWPOS_CENTERED_DISPLAY(SDL_GetWindowDisplayIndex(sdlWin)); + } else { + scrConfX=scrX; + scrConfY=scrY; + scrConfW=scrW; + scrConfH=scrH; + } + } + wantCaptureKeyboard=ImGui::GetIO().WantTextInput; if (wantCaptureKeyboard!=oldWantCaptureKeyboard) { @@ -2714,7 +2741,7 @@ bool FurnaceGUI::loop() { if (ImGui::GetIO().MouseDown[0] || ImGui::GetIO().MouseDown[1] || ImGui::GetIO().MouseDown[2] || ImGui::GetIO().MouseDown[3] || ImGui::GetIO().MouseDown[4]) { WAKE_UP; } - + while (true) { midiLock.lock(); if (midiQueue.empty()) { @@ -2870,7 +2897,7 @@ bool FurnaceGUI::loop() { eventTimeEnd=SDL_GetPerformanceCounter(); layoutTimeBegin=SDL_GetPerformanceCounter(); - + ImGui_ImplSDLRenderer_NewFrame(); ImGui_ImplSDL2_NewFrame(sdlWin); ImGui::NewFrame(); @@ -3125,7 +3152,7 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("log viewer",BIND_FOR(GUI_ACTION_WINDOW_LOG),logOpen)) logOpen=!logOpen; if (ImGui::MenuItem("statistics",BIND_FOR(GUI_ACTION_WINDOW_STATS),statsOpen)) statsOpen=!statsOpen; if (spoilerOpen) if (ImGui::MenuItem("spoiler",NULL,spoilerOpen)) spoilerOpen=!spoilerOpen; - + ImGui::EndMenu(); } if (ImGui::BeginMenu("help")) { @@ -4263,7 +4290,7 @@ bool FurnaceGUI::loop() { } logD("saving backup..."); SafeWriter* w=e->saveFur(true); - + if (w!=NULL) { FILE* outFile=ps_fopen(backupPath.c_str(),"wb"); if (outFile!=NULL) { @@ -4436,8 +4463,11 @@ bool FurnaceGUI::init() { SDL_Surface* icon=SDL_CreateRGBSurfaceFrom(furIcon,256,256,32,256*4,0xff,0xff00,0xff0000,0xff000000); #endif - scrW=e->getConfInt("lastWindowWidth",1280); - scrH=e->getConfInt("lastWindowHeight",800); + scrW=scrConfW=e->getConfInt("lastWindowWidth",1280); + scrH=scrConfH=e->getConfInt("lastWindowHeight",800); + scrX=scrConfX=e->getConfInt("lastWindowX",SDL_WINDOWPOS_CENTERED); + scrY=scrConfY=e->getConfInt("lastWindowY",SDL_WINDOWPOS_CENTERED); + scrMax=e->getConfBool("lastWindowMax",false); #ifndef __APPLE__ SDL_Rect displaySize; @@ -4453,7 +4483,7 @@ bool FurnaceGUI::init() { SDL_Init(SDL_INIT_VIDEO); - sdlWin=SDL_CreateWindow("Furnace",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,scrW*dpiScale,scrH*dpiScale,SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI|(fullScreen?SDL_WINDOW_FULLSCREEN_DESKTOP:0)); + sdlWin=SDL_CreateWindow("Furnace",scrX,scrY,scrW*dpiScale,scrH*dpiScale,SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI|(scrMax?SDL_WINDOW_MAXIMIZED:0)|(fullScreen?SDL_WINDOW_FULLSCREEN_DESKTOP:0)); if (sdlWin==NULL) { logE("could not open window! %s",SDL_GetError()); return false; @@ -4619,8 +4649,11 @@ bool FurnaceGUI::finish() { e->setConf("spoilerOpen",spoilerOpen); // commit last window size - e->setConf("lastWindowWidth",scrW); - e->setConf("lastWindowHeight",scrH); + e->setConf("lastWindowWidth",scrConfW); + e->setConf("lastWindowHeight",scrConfH); + e->setConf("lastWindowX",scrConfX); + e->setConf("lastWindowY",scrConfY); + e->setConf("lastWindowMax",scrMax); e->setConf("tempoView",tempoView); e->setConf("waveHex",waveHex); diff --git a/src/gui/gui.h b/src/gui/gui.h index 8a3548f2..7d42eb84 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -996,7 +996,9 @@ class FurnaceGUI { FurnaceGUIFileDialog* fileDialog; - int scrW, scrH; + int scrW, scrH, scrConfW, scrConfH; + int scrX, scrY, scrConfX, scrConfY; + bool scrMax; double dpiScale; @@ -1429,7 +1431,7 @@ class FurnaceGUI { int chanToMove; ImVec2 patWindowPos, patWindowSize; - + // pattern view specific ImVec2 fourChars, threeChars, twoChars; ImVec2 noteCellSize, insCellSize, volCellSize, effectCellSize, effectValCellSize; @@ -1505,7 +1507,7 @@ class FurnaceGUI { // visualizer float keyHit[DIV_MAX_CHANS]; int lastIns[DIV_MAX_CHANS]; - + // log window bool followLog; From 10aaf7f0cb9dcddad32a444125cef56224e17abd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Aug 2022 19:57:01 -0500 Subject: [PATCH 443/580] YM2612: #580 --- src/engine/platform/genesisext.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index 1f320dd3..dfd7d514 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -561,6 +561,11 @@ void DivPlatformGenesisExt::forceIns() { opChan[i].freqChanged=true; } } + if (extMode && softPCM && chan[7].active) { // CSM + chan[7].insChanged=true; + chan[7].freqChanged=true; + chan[7].keyOn=true; + } } void* DivPlatformGenesisExt::getChanState(int ch) { From b223bc80de9f16fc137f033e7ed50d0037cebbe1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Aug 2022 20:06:01 -0500 Subject: [PATCH 444/580] YM2612: #581 --- src/engine/platform/genesis.cpp | 36 ++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 143a90fe..7dde9790 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -263,19 +263,37 @@ void DivPlatformGenesis::tick(bool sysTick) { } } - if (chan[i].std.arp.had) { - if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].std.arp.val,11); - } else { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note+(signed char)chan[i].std.arp.val,11); + if (i>=5 && chan[i].furnaceDac) { + if (chan[i].std.arp.had) { + if (!chan[i].inPorta) { + if (chan[i].std.arp.mode) { + chan[i].baseFreq=parent->calcBaseFreq(1,1,chan[i].std.arp.val,false); + } else { + chan[i].baseFreq=parent->calcBaseFreq(1,1,chan[i].note+(signed char)chan[i].std.arp.val,false); + } + } + chan[i].freqChanged=true; + } else { + if (chan[i].std.arp.mode && chan[i].std.arp.finished) { + chan[i].baseFreq=parent->calcBaseFreq(1,1,chan[i].note,false); + chan[i].freqChanged=true; } } - chan[i].freqChanged=true; } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note,11); + if (chan[i].std.arp.had) { + if (!chan[i].inPorta) { + if (chan[i].std.arp.mode) { + chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].std.arp.val,11); + } else { + chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note+(signed char)chan[i].std.arp.val,11); + } + } chan[i].freqChanged=true; + } else { + if (chan[i].std.arp.mode && chan[i].std.arp.finished) { + chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note,11); + chan[i].freqChanged=true; + } } } From 38afdd3378bcac8878c41d6442f6b54caf50c458 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 21 Aug 2022 23:56:58 -0500 Subject: [PATCH 445/580] dev110 - add cut/delay effect policy compat flag INCOMPLETE!!! --- src/engine/engine.h | 4 ++-- src/engine/fileOps.cpp | 15 +++++++++++++-- src/engine/playback.cpp | 5 ++++- src/engine/song.h | 6 ++++++ src/gui/compatFlags.cpp | 20 ++++++++++++++++++++ 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index c433def8..d379540c 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -46,8 +46,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev109" -#define DIV_ENGINE_VERSION 109 +#define DIV_VERSION "dev110" +#define DIV_ENGINE_VERSION 110 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index df32f055..e64e02a0 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -176,6 +176,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.e1e2StopOnSameNote=true; ds.brokenPortaArp=false; ds.snNoLowPeriods=true; + ds.delayBehavior=0; // 1.1 compat flags if (ds.version>24) { @@ -1067,6 +1068,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { if (ds.version<108) { ds.snNoLowPeriods=true; } + if (ds.version<110) { + ds.delayBehavior=1; + } ds.isDMF=false; reader.readS(); // reserved @@ -1484,7 +1488,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } else { reader.readC(); } - for (int i=0; i<6; i++) { + if (ds.version>=110) { + ds.delayBehavior=reader.readC(); + } else { + reader.readC(); + } + for (int i=0; i<5; i++) { reader.readC(); } } @@ -1917,6 +1926,7 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) { ds.noSlidesOnFirstTick=true; ds.rowResetsArpPos=true; ds.ignoreJumpAtEnd=false; + ds.delayBehavior=0; int insCount=31; bool bypassLimits=false; @@ -3729,7 +3739,8 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeC(song.e1e2StopOnSameNote); w->writeC(song.brokenPortaArp); w->writeC(song.snNoLowPeriods); - for (int i=0; i<6; i++) { + w->writeC(song.delayBehavior); + for (int i=0; i<5; i++) { w->writeC(0); } diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 63203ab5..fbd9e8db 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -361,7 +361,9 @@ void DivEngine::processRow(int i, bool afterDelay) { break; case 0xed: // delay if (effectVal!=0) { - if (effectVal<=nextSpeed) { + bool comparison=(song.delayBehavior==1)?(effectVal<=nextSpeed):(effectVal%d",effectVal,nextSpeed); chan[i].delayLocked=false; } } diff --git a/src/engine/song.h b/src/engine/song.h index 30f5ef24..83509efb 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -463,6 +463,11 @@ struct DivSong { // 1: fake reset on loop // 2: don't do anything on loop unsigned char loopModality; + // cut/delay effect behavior + // 0: strict (don't allow value higher than or equal to speed) + // 1: broken (don't allow value higher than speed) + // 2: lax (allow value higher than speed) + unsigned char delayBehavior; bool properNoiseLayout; bool waveDutyIsVol; bool resetMacroOnPorta; @@ -565,6 +570,7 @@ struct DivSong { linearPitch(2), pitchSlideSpeed(4), loopModality(0), + delayBehavior(2), properNoiseLayout(true), waveDutyIsVol(false), resetMacroOnPorta(false), diff --git a/src/gui/compatFlags.cpp b/src/gui/compatFlags.cpp index e6d0aed8..74d493e7 100644 --- a/src/gui/compatFlags.cpp +++ b/src/gui/compatFlags.cpp @@ -193,6 +193,26 @@ void FurnaceGUI::drawCompatFlags() { ImGui::SetTooltip("select to not reset channels on loop."); } + ImGui::Text("Cut/delay effect policy:"); + if (ImGui::RadioButton("Strict",e->song.delayBehavior==0)) { + e->song.delayBehavior=0; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("only when time is less than speed (like DefleMask/ProTracker)"); + } + if (ImGui::RadioButton("Strict (old)",e->song.delayBehavior==1)) { + e->song.delayBehavior=1; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("only when time is less than or equal to speed (original buggy behavior)"); + } + if (ImGui::RadioButton("Lax",e->song.delayBehavior==2)) { + e->song.delayBehavior=2; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("no checks (like FamiTracker)"); + } + ImGui::Separator(); ImGui::TextWrapped("the following flags are for compatibility with older Furnace versions."); From 629cca9df19560e34af4586337e9f1207fe1214e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 22 Aug 2022 00:01:21 -0500 Subject: [PATCH 446/580] ECxx --- src/engine/playback.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index fbd9e8db..8c8fa572 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -707,7 +707,7 @@ void DivEngine::processRow(int i, bool afterDelay) { dispatchCmd(DivCommand(DIV_CMD_SAMPLE_BANK,i,effectVal)); break; case 0xec: // delayed note cut - if (effectVal>0 && effectVal0 && (song.delayBehavior==2 || effectVal Date: Mon, 22 Aug 2022 00:20:40 -0500 Subject: [PATCH 447/580] allow it --- src/engine/playback.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 8c8fa572..f4c4968d 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -382,6 +382,8 @@ void DivEngine::processRow(int i, bool afterDelay) { } } if (returnAfterPre) return; + } else { + logV("honoring delay at position %d",whatRow); } if (chan[i].delayLocked) return; @@ -903,7 +905,9 @@ void DivEngine::nextRow() { prevRow=curRow; for (int i=0; i Date: Mon, 22 Aug 2022 13:11:29 +0700 Subject: [PATCH 448/580] new demo song.. --- demos/rule2.fur | Bin 0 -> 2179 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/rule2.fur diff --git a/demos/rule2.fur b/demos/rule2.fur new file mode 100644 index 0000000000000000000000000000000000000000..aa6375916934671667382ca2232272e3c6d3f3f8 GIT binary patch literal 2179 zcmV-}2z>W=ob6m)Y#h}UK6hqzcKuV9kUzI|vXhpdB;?m24L=Xw#lbjD;-5GM3@LQt zY{|lU*Ilm(RwdR7s#2;5@qiFQP}+yKLMlJv0U@MT8|8rqr1k-Vc;F$1_MuW~snk?e za6FtlbH{UcJ=Z(etRsfbalZAPGv|Ki-gEBknYruD_TH&d!5qsPQc{)Q18!_d99 z3SdVEz^fYpR^JHl$~J)RTL3QH0g&qf_}_kj@w))bUH}X6Odr6e9|F925TNHUzz6*R z*+GE+4gs7Q2Iv?;j(Y%ZzYpNOQGjC)0DN`~;E4wTl0OFcwF$6$%pHvbMdgpYmj6+$ zU}sg+VtPDI6vByb0B5>k!888T+>j`?`Z@e@WAwRtZ zj-JdKN3v!IDJnk*0+nPuZdae4gj0RSP8LfiLS25!0yEHqNviy;sMt-7O3Hw&!arPkl zSTR2}o(=WA#8-Kg{at{5(W7j5eaZF>yEHqNviy;sMt-9DW7nTktp5CTDwi$)-@rA^wi| zE8-&JW5h>@_Yr?VyoY!faUSs}#5;($5N{%0MZALeE#fzbmk`e*o<%%^IEy%gcoI=T z{0wmlQ39F-fJYENL70diAx04+h#|xwL?2>5BF*MYH+bnLF5RT18?khQm2RTaO;WlM zN~)bR*I)UG?#ZHW|a~OSW&=rP;BR<&XR{@)K2AyUISz9`eTW#fi{XS(-jg zz!fAh^rN_T*B0-&Cuf}+;P%MSELeXcOrJe)b-$9b3a%kreJu7+=Rps#dlI&mZAUvB;7ChGJb)OmmA$X)O`t;7Ez@Q2f$PpYf;`Du6O{P|g{dmi)LIZvwe@Eqx! z{}iiql^Qr}p<3Ik<|?ZVUQ&39KjZP)&d<+wcUI5MQs)HbaHZO#!WU>J_ z!#$g!bEf~t$AA;)Th+yZrn>q`lWDkAu><`EnIBG9dZruEO@$}`kUzq8QaOGt(v97m0KXcof4^rvD3!TT_x7J<+xHsK?$+GUf zFgFud*IXRT96j zj2lCcgw*Q&`FVSO%s~?3&m-m+B*f`(f?Ewdf!9_AdL@882-?l!S5}z+DvaMti1!vB z>IwPqQ}JtG4IBR}grB=o+jbM;mJ#|^LqP2O>)zHwK7KACZVd_dgjPBsswBVkc-(}z z+ktH%Pe^OX$Im5%L5r zCB(h$)$qqL3PPYW`+9vspl=oE#cvV*_H6=vyN`YrGQznKoVg#5D$vW?>yq|dLYy04 zKZmn$r>}mgz{mz(l)z>z1Ui1%l`6XsMD}sXd2tC**%d-_=T6#d^ZMF>c=|T3O^cbI zy~^o%8&zPh32ZchJ Date: Mon, 22 Aug 2022 02:13:33 -0500 Subject: [PATCH 449/580] dev111 - many macro changes - max macro length is now 255 - loop/rel pos is now unsigned (255 = no) - prepare for macro speed/delay --- papers/format.md | 96 ++++++++++++++++++- src/engine/engine.h | 4 +- src/engine/fileOps.cpp | 24 ++--- src/engine/instrument.cpp | 190 +++++++++++++++++++++++++++++++++++++- src/engine/instrument.h | 11 +-- src/engine/macroInt.cpp | 8 +- src/gui/gui.cpp | 14 +-- src/gui/gui.h | 4 +- src/gui/insEdit.cpp | 37 ++++---- 9 files changed, 333 insertions(+), 55 deletions(-) diff --git a/papers/format.md b/papers/format.md index 7bd3bba7..4d9c15a2 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,9 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 111: Furnace dev111 +- 110: Furnace dev110 +- 109: Furnace dev109 - 108: Furnace dev108 - 107: Furnace dev107 - 106: Furnace dev106 @@ -333,7 +336,8 @@ size | description 1 | E1xy and E2xy stop on same note (>=100) or reserved 1 | broken initial position of porta after arp (>=101) or reserved 1 | SN periods under 8 are treated as 1 (>=108) or reserved - 6 | reserved + 1 | cut/delay effect policy (>=110) or reserved + 5 | reserved --- | **virtual tempo data** 2 | virtual tempo numerator of first song (>=96) or reserved 2 | virtual tempo denominator of first song (>=96) or reserved @@ -868,6 +872,96 @@ size | description 1 | K2 ramp 1 | K1 slow 1 | K2 slow + --- | **SNES data** (>=109) + 1 | use envelope + 1 | gain mode + 1 | gain + 1 | attack + 1 | decay + 1 | sustain + 1 | release + --- | **macro speeds/delays** (>=111) + 1 | volume macro speed + 1 | arp macro speed + 1 | duty macro speed + 1 | wave macro speed + 1 | pitch macro speed + 1 | extra 1 macro speed + 1 | extra 2 macro speed + 1 | extra 3 macro speed + 1 | alg macro speed + 1 | fb macro speed + 1 | fms macro speed + 1 | ams macro speed + 1 | left panning macro speed + 1 | right panning macro speed + 1 | phase reset macro speed + 1 | extra 4 macro speed + 1 | extra 5 macro speed + 1 | extra 6 macro speed + 1 | extra 7 macro speed + 1 | extra 8 macro speed + 1 | volume macro delay + 1 | arp macro delay + 1 | duty macro delay + 1 | wave macro delay + 1 | pitch macro delay + 1 | extra 1 macro delay + 1 | extra 2 macro delay + 1 | extra 3 macro delay + 1 | alg macro delay + 1 | fb macro delay + 1 | fms macro delay + 1 | ams macro delay + 1 | left panning macro delay + 1 | right panning macro delay + 1 | phase reset macro delay + 1 | extra 4 macro delay + 1 | extra 5 macro delay + 1 | extra 6 macro delay + 1 | extra 7 macro delay + 1 | extra 8 macro delay + --- | **operator macro speeds/delay** Ɨ 4 (>=111) + 1 | AM macro speed + 1 | AR macro speed + 1 | DR macro speed + 1 | MULT macro speed + 1 | RR macro speed + 1 | SL macro speed + 1 | TL macro speed + 1 | DT2 macro speed + 1 | RS macro speed + 1 | DT macro speed + 1 | D2R macro speed + 1 | SSG-EG macro speed + 1 | DAM macro speed + 1 | DVB macro speed + 1 | EGT macro speed + 1 | KSL macro speed + 1 | SUS macro speed + 1 | VIB macro speed + 1 | WS macro speed + 1 | KSR macro speed + 1 | AM macro delay + 1 | AR macro delay + 1 | DR macro delay + 1 | MULT macro delay + 1 | RR macro delay + 1 | SL macro delay + 1 | TL macro delay + 1 | DT2 macro delay + 1 | RS macro delay + 1 | DT macro delay + 1 | D2R macro delay + 1 | SSG-EG macro delay + 1 | DAM macro delay + 1 | DVB macro delay + 1 | EGT macro delay + 1 | KSL macro delay + 1 | SUS macro delay + 1 | VIB macro delay + 1 | WS macro delay + 1 | KSR macro delay ``` # wavetable diff --git a/src/engine/engine.h b/src/engine/engine.h index d379540c..363210ab 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -46,8 +46,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev110" -#define DIV_ENGINE_VERSION 110 +#define DIV_VERSION "dev111" +#define DIV_ENGINE_VERSION 111 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index e64e02a0..32b98d2e 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2843,9 +2843,9 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { // TODO: <= or std.volMacro.val[ins->std.volMacro.len]=lastVal; - if (++ins->std.volMacro.len>=128) break; + if (++ins->std.volMacro.len>=255) break; } - if (ins->std.volMacro.len>=128) break; + if (ins->std.volMacro.len>=255) break; } else if (m.val[j]==0xe9 || m.val[j]==0xea) { // volume slide if (++j>=64) break; signed char slideStep=m.val[j]; @@ -2864,16 +2864,16 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } } ins->std.volMacro.val[ins->std.volMacro.len]=lastVal; - if (++ins->std.volMacro.len>=128) break; + if (++ins->std.volMacro.len>=255) break; } } else { // TODO: replace with upcoming macro speed for (int k=0; kstd.volMacro.val[ins->std.volMacro.len]=m.val[j]; lastVal=m.val[j]; - if (++ins->std.volMacro.len>=128) break; + if (++ins->std.volMacro.len>=255) break; } - if (ins->std.volMacro.len>=128) break; + if (ins->std.volMacro.len>=255) break; } } @@ -2902,7 +2902,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ins->std.waveMacro.val[ins->std.waveMacro.len]=wave-10; ins->std.waveMacro.open=true; lastVal=wave; - //if (++ins->std.arpMacro.len>=128) break; + //if (++ins->std.arpMacro.len>=255) break; } } else if (fm.val[j]==0xe0) { if (++j>=64) break; @@ -2932,8 +2932,8 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ins->std.waveMacro.val[ins->std.waveMacro.len]=lastVal-10; } ins->std.arpMacro.open=true; - if (++ins->std.arpMacro.len>=128) break; - if (++ins->std.waveMacro.len>=128) break; + if (++ins->std.arpMacro.len>=255) break; + if (++ins->std.waveMacro.len>=255) break; } } } @@ -2946,7 +2946,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { // vibrato for (int j=0; j<=vibDelay; j++) { ins->std.pitchMacro.val[ins->std.pitchMacro.len]=0; - if (++ins->std.pitchMacro.len>=128) break; + if (++ins->std.pitchMacro.len>=255) break; } int vibPos=0; ins->std.pitchMacro.loop=ins->std.pitchMacro.len; @@ -2954,19 +2954,19 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { vibPos+=vibSpeed; if (vibPos>vibDepth) vibPos=vibDepth; ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32; - if (++ins->std.pitchMacro.len>=128) break; + if (++ins->std.pitchMacro.len>=255) break; } while (vibPosstd.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32; - if (++ins->std.pitchMacro.len>=128) break; + if (++ins->std.pitchMacro.len>=255) break; } while (vibPos>-vibDepth); do { vibPos+=vibSpeed; if (vibPos>0) vibPos=0; ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32; - if (++ins->std.pitchMacro.len>=128) break; + if (++ins->std.pitchMacro.len>=255) break; } while (vibPos<0); ds.ins.push_back(ins); diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 9f1f5fff..b2203ebf 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -564,6 +564,96 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeC(snes.s); w->writeC(snes.r); + // macro speed/delay + w->writeC(std.volMacro.speed); + w->writeC(std.arpMacro.speed); + w->writeC(std.dutyMacro.speed); + w->writeC(std.waveMacro.speed); + w->writeC(std.pitchMacro.speed); + w->writeC(std.ex1Macro.speed); + w->writeC(std.ex2Macro.speed); + w->writeC(std.ex3Macro.speed); + w->writeC(std.algMacro.speed); + w->writeC(std.fbMacro.speed); + w->writeC(std.fmsMacro.speed); + w->writeC(std.amsMacro.speed); + w->writeC(std.panLMacro.speed); + w->writeC(std.panRMacro.speed); + w->writeC(std.phaseResetMacro.speed); + w->writeC(std.ex4Macro.speed); + w->writeC(std.ex5Macro.speed); + w->writeC(std.ex6Macro.speed); + w->writeC(std.ex7Macro.speed); + w->writeC(std.ex8Macro.speed); + + w->writeC(std.volMacro.delay); + w->writeC(std.arpMacro.delay); + w->writeC(std.dutyMacro.delay); + w->writeC(std.waveMacro.delay); + w->writeC(std.pitchMacro.delay); + w->writeC(std.ex1Macro.delay); + w->writeC(std.ex2Macro.delay); + w->writeC(std.ex3Macro.delay); + w->writeC(std.algMacro.delay); + w->writeC(std.fbMacro.delay); + w->writeC(std.fmsMacro.delay); + w->writeC(std.amsMacro.delay); + w->writeC(std.panLMacro.delay); + w->writeC(std.panRMacro.delay); + w->writeC(std.phaseResetMacro.delay); + w->writeC(std.ex4Macro.delay); + w->writeC(std.ex5Macro.delay); + w->writeC(std.ex6Macro.delay); + w->writeC(std.ex7Macro.delay); + w->writeC(std.ex8Macro.delay); + + // op macro speed/delay + for (int i=0; i<4; i++) { + DivInstrumentSTD::OpMacro& op=std.opMacros[i]; + + w->writeC(op.amMacro.speed); + w->writeC(op.arMacro.speed); + w->writeC(op.drMacro.speed); + w->writeC(op.multMacro.speed); + w->writeC(op.rrMacro.speed); + w->writeC(op.slMacro.speed); + w->writeC(op.tlMacro.speed); + w->writeC(op.dt2Macro.speed); + w->writeC(op.rsMacro.speed); + w->writeC(op.dtMacro.speed); + w->writeC(op.d2rMacro.speed); + w->writeC(op.ssgMacro.speed); + w->writeC(op.damMacro.speed); + w->writeC(op.dvbMacro.speed); + w->writeC(op.egtMacro.speed); + w->writeC(op.kslMacro.speed); + w->writeC(op.susMacro.speed); + w->writeC(op.vibMacro.speed); + w->writeC(op.wsMacro.speed); + w->writeC(op.ksrMacro.speed); + + w->writeC(op.amMacro.delay); + w->writeC(op.arMacro.delay); + w->writeC(op.drMacro.delay); + w->writeC(op.multMacro.delay); + w->writeC(op.rrMacro.delay); + w->writeC(op.slMacro.delay); + w->writeC(op.tlMacro.delay); + w->writeC(op.dt2Macro.delay); + w->writeC(op.rsMacro.delay); + w->writeC(op.dtMacro.delay); + w->writeC(op.d2rMacro.delay); + w->writeC(op.ssgMacro.delay); + w->writeC(op.damMacro.delay); + w->writeC(op.dvbMacro.delay); + w->writeC(op.egtMacro.delay); + w->writeC(op.kslMacro.delay); + w->writeC(op.susMacro.delay); + w->writeC(op.vibMacro.delay); + w->writeC(op.wsMacro.delay); + w->writeC(op.ksrMacro.delay); + } + blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); w->writeI(blockEndSeek-blockStartSeek-4); @@ -960,15 +1050,15 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { // clear noise macro if PCE instrument and version<63 if (version<63 && type==DIV_INS_PCE) { std.dutyMacro.len=0; - std.dutyMacro.loop=-1; - std.dutyMacro.rel=-1; + std.dutyMacro.loop=255; + std.dutyMacro.rel=255; } // clear wave macro if OPLL instrument and version<70 if (version<70 && type==DIV_INS_OPLL) { std.waveMacro.len=0; - std.waveMacro.loop=-1; - std.waveMacro.rel=-1; + std.waveMacro.loop=255; + std.waveMacro.rel=255; } // sample map @@ -1160,6 +1250,98 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { snes.r=reader.readC(); } + // macro speed/delay + if (version>=111) { + std.volMacro.speed=reader.readC(); + std.arpMacro.speed=reader.readC(); + std.dutyMacro.speed=reader.readC(); + std.waveMacro.speed=reader.readC(); + std.pitchMacro.speed=reader.readC(); + std.ex1Macro.speed=reader.readC(); + std.ex2Macro.speed=reader.readC(); + std.ex3Macro.speed=reader.readC(); + std.algMacro.speed=reader.readC(); + std.fbMacro.speed=reader.readC(); + std.fmsMacro.speed=reader.readC(); + std.amsMacro.speed=reader.readC(); + std.panLMacro.speed=reader.readC(); + std.panRMacro.speed=reader.readC(); + std.phaseResetMacro.speed=reader.readC(); + std.ex4Macro.speed=reader.readC(); + std.ex5Macro.speed=reader.readC(); + std.ex6Macro.speed=reader.readC(); + std.ex7Macro.speed=reader.readC(); + std.ex8Macro.speed=reader.readC(); + + std.volMacro.delay=reader.readC(); + std.arpMacro.delay=reader.readC(); + std.dutyMacro.delay=reader.readC(); + std.waveMacro.delay=reader.readC(); + std.pitchMacro.delay=reader.readC(); + std.ex1Macro.delay=reader.readC(); + std.ex2Macro.delay=reader.readC(); + std.ex3Macro.delay=reader.readC(); + std.algMacro.delay=reader.readC(); + std.fbMacro.delay=reader.readC(); + std.fmsMacro.delay=reader.readC(); + std.amsMacro.delay=reader.readC(); + std.panLMacro.delay=reader.readC(); + std.panRMacro.delay=reader.readC(); + std.phaseResetMacro.delay=reader.readC(); + std.ex4Macro.delay=reader.readC(); + std.ex5Macro.delay=reader.readC(); + std.ex6Macro.delay=reader.readC(); + std.ex7Macro.delay=reader.readC(); + std.ex8Macro.delay=reader.readC(); + + // op macro speed/delay + for (int i=0; i<4; i++) { + DivInstrumentSTD::OpMacro& op=std.opMacros[i]; + + op.amMacro.speed=reader.readC(); + op.arMacro.speed=reader.readC(); + op.drMacro.speed=reader.readC(); + op.multMacro.speed=reader.readC(); + op.rrMacro.speed=reader.readC(); + op.slMacro.speed=reader.readC(); + op.tlMacro.speed=reader.readC(); + op.dt2Macro.speed=reader.readC(); + op.rsMacro.speed=reader.readC(); + op.dtMacro.speed=reader.readC(); + op.d2rMacro.speed=reader.readC(); + op.ssgMacro.speed=reader.readC(); + op.damMacro.speed=reader.readC(); + op.dvbMacro.speed=reader.readC(); + op.egtMacro.speed=reader.readC(); + op.kslMacro.speed=reader.readC(); + op.susMacro.speed=reader.readC(); + op.vibMacro.speed=reader.readC(); + op.wsMacro.speed=reader.readC(); + op.ksrMacro.speed=reader.readC(); + + op.amMacro.delay=reader.readC(); + op.arMacro.delay=reader.readC(); + op.drMacro.delay=reader.readC(); + op.multMacro.delay=reader.readC(); + op.rrMacro.delay=reader.readC(); + op.slMacro.delay=reader.readC(); + op.tlMacro.delay=reader.readC(); + op.dt2Macro.delay=reader.readC(); + op.rsMacro.delay=reader.readC(); + op.dtMacro.delay=reader.readC(); + op.d2rMacro.delay=reader.readC(); + op.ssgMacro.delay=reader.readC(); + op.damMacro.delay=reader.readC(); + op.dvbMacro.delay=reader.readC(); + op.egtMacro.delay=reader.readC(); + op.kslMacro.delay=reader.readC(); + op.susMacro.delay=reader.readC(); + op.vibMacro.delay=reader.readC(); + op.wsMacro.delay=reader.readC(); + op.ksrMacro.delay=reader.readC(); + } + } + return DIV_DATA_SUCCESS; } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index da6d0841..e5372933 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -165,21 +165,20 @@ struct DivInstrumentMacro { int val[256]; unsigned int mode; bool open; - unsigned char len; - signed char loop; - signed char rel; + unsigned char len, delay, speed, loop, rel; // the following variables are used by the GUI and not saved in the file int vScroll, vZoom; - explicit DivInstrumentMacro(const String& n, bool initOpen=false): name(n), mode(0), open(initOpen), len(0), - loop(-1), - rel(-1), + delay(0), + speed(1), + loop(255), + rel(255), vScroll(0), vZoom(-1) { memset(val,0,256*sizeof(int)); diff --git a/src/engine/macroInt.cpp b/src/engine/macroInt.cpp index 83ad906f..1566b943 100644 --- a/src/engine/macroInt.cpp +++ b/src/engine/macroInt.cpp @@ -43,15 +43,15 @@ void DivMacroStruct::doMacro(DivInstrumentMacro& source, bool released, bool tic if (has) { lastPos=pos; val=source.val[pos++]; - if (source.rel>=0 && pos>source.rel && !released) { - if (source.loop=0 && source.loopsource.rel && !released) { + if (source.loop=source.len) { - if (source.loop=0 && (source.loop>=source.rel || source.rel>=source.len)) { + if (source.loop=source.rel || source.rel>=source.len)) { pos=source.loop; } else if (linger) { pos--; @@ -240,7 +240,7 @@ void DivMacroInt::init(DivInstrument* which) { for (size_t i=0; iprepare(*macroSource[i],e); - hasRelease=(macroSource[i]->rel>=0 && macroSource[i]->rellen); + hasRelease=(macroSource[i]->rellen); } else { hasRelease=false; } diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 9189618d..b5ccbd7b 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -276,13 +276,13 @@ void FurnaceGUI::decodeMMLStrW(String& source, int* macro, int& macroLen, int ma } } -void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLen, signed char& macroLoop, int macroMin, int macroMax, signed char& macroRel) { +void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLen, unsigned char& macroLoop, int macroMin, int macroMax, unsigned char& macroRel) { int buf=0; bool negaBuf=false; bool hasVal=false; macroLen=0; - macroLoop=-1; - macroRel=-1; + macroLoop=255; + macroRel=255; for (char& i: source) { switch (i) { case '0': case '1': case '2': case '3': case '4': @@ -318,7 +318,7 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe macroLen++; buf=0; } - if (macroLoop==-1) { + if (macroLoop==255) { macroLoop=macroLen; } break; @@ -332,14 +332,14 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe macroLen++; buf=0; } - if (macroRel==-1) { + if (macroRel==255) { macroRel=macroLen; } break; } - if (macroLen>=128) break; + if (macroLen>=255) break; } - if (hasVal && macroLen<128) { + if (hasVal && macroLen<255) { hasVal=false; macro[macroLen]=negaBuf?-buf:buf; negaBuf=false; diff --git a/src/gui/gui.h b/src/gui/gui.h index 8a3548f2..f7b13b07 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1406,7 +1406,7 @@ class FurnaceGUI { ImVec2 macroLoopDragStart; ImVec2 macroLoopDragAreaSize; - signed char* macroLoopDragTarget; + unsigned char* macroLoopDragTarget; int macroLoopDragLen; bool macroLoopDragActive; @@ -1687,7 +1687,7 @@ class FurnaceGUI { void initSystemPresets(); void encodeMMLStr(String& target, int* macro, int macroLen, int macroLoop, int macroRel, bool hex=false); - void decodeMMLStr(String& source, int* macro, unsigned char& macroLen, signed char& macroLoop, int macroMin, int macroMax, signed char& macroRel); + void decodeMMLStr(String& source, int* macro, unsigned char& macroLen, unsigned char& macroLoop, int macroMin, int macroMax, unsigned char& macroRel); void decodeMMLStrW(String& source, int* macro, int& macroLen, int macroMax, bool hex=false); String encodeKeyMap(std::map& map); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index dc239fcd..2a97744f 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1215,14 +1215,14 @@ void FurnaceGUI::drawMacros(std::vector& macros) { } ImGui::TableNextColumn(); float availableWidth=ImGui::GetContentRegionAvail().x-reservedSpace; - int totalFit=MIN(128,availableWidth/MAX(1,macroPointSize*dpiScale)); - if (macroDragScroll>128-totalFit) { - macroDragScroll=128-totalFit; + int totalFit=MIN(255,availableWidth/MAX(1,macroPointSize*dpiScale)); + if (macroDragScroll>255-totalFit) { + macroDragScroll=255-totalFit; } ImGui::SetNextItemWidth(availableWidth); - if (CWSliderInt("##MacroScroll",¯oDragScroll,0,128-totalFit,"")) { + if (CWSliderInt("##MacroScroll",¯oDragScroll,0,255-totalFit,"")) { if (macroDragScroll<0) macroDragScroll=0; - if (macroDragScroll>128-totalFit) macroDragScroll=128-totalFit; + if (macroDragScroll>255-totalFit) macroDragScroll=255-totalFit; } // draw macros @@ -1239,8 +1239,11 @@ void FurnaceGUI::drawMacros(std::vector& macros) { } if (i.macro->open) { ImGui::SetNextItemWidth(lenAvail); - if (ImGui::InputScalar("##IMacroLen",ImGuiDataType_U8,&i.macro->len,&_ONE,&_THREE)) { MARK_MODIFIED - if (i.macro->len>128) i.macro->len=128; + int macroLen=i.macro->len; + if (ImGui::InputScalar("##IMacroLen",ImGuiDataType_U8,¯oLen,&_ONE,&_THREE)) { MARK_MODIFIED + if (macroLen<0) macroLen=0; + if (macroLen>255) macroLen=255; + i.macro->len=macroLen; } // do not change this! // anything other than a checkbox will look ugly! @@ -1267,7 +1270,7 @@ void FurnaceGUI::drawMacros(std::vector& macros) { if (j+macroDragScroll>=i.macro->len || (j+macroDragScroll>i.macro->rel && i.macro->looprel)) { loopIndicator[j]=0; } else { - loopIndicator[j]=((i.macro->loop!=-1 && (j+macroDragScroll)>=i.macro->loop))|((i.macro->rel!=-1 && (j+macroDragScroll)==i.macro->rel)<<1); + loopIndicator[j]=((i.macro->loop!=255 && (j+macroDragScroll)>=i.macro->loop))|((i.macro->rel!=255 && (j+macroDragScroll)==i.macro->rel)<<1); } } ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,ImVec2(0.0f,0.0f)); @@ -1414,9 +1417,9 @@ void FurnaceGUI::drawMacros(std::vector& macros) { } if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { if (ImGui::IsKeyDown(ImGuiKey_LeftShift) || ImGui::IsKeyDown(ImGuiKey_RightShift)) { - i.macro->rel=-1; + i.macro->rel=255; } else { - i.macro->loop=-1; + i.macro->loop=255; } } ImGui::SetNextItemWidth(availableWidth); @@ -1437,9 +1440,9 @@ void FurnaceGUI::drawMacros(std::vector& macros) { ImGui::TableNextColumn(); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(availableWidth); - if (CWSliderInt("##MacroScroll",¯oDragScroll,0,128-totalFit,"")) { + if (CWSliderInt("##MacroScroll",¯oDragScroll,0,255-totalFit,"")) { if (macroDragScroll<0) macroDragScroll=0; - if (macroDragScroll>128-totalFit) macroDragScroll=128-totalFit; + if (macroDragScroll>255-totalFit) macroDragScroll=255-totalFit; } ImGui::EndTable(); } @@ -4311,8 +4314,8 @@ void FurnaceGUI::drawInsEdit() { ImGui::Separator(); if (ImGui::MenuItem("clear")) { lastMacroDesc.macro->len=0; - lastMacroDesc.macro->loop=-1; - lastMacroDesc.macro->rel=-1; + lastMacroDesc.macro->loop=255; + lastMacroDesc.macro->rel=255; for (int i=0; i<256; i++) { lastMacroDesc.macro->val[i]=0; } @@ -4341,15 +4344,15 @@ void FurnaceGUI::drawInsEdit() { lastMacroDesc.macro->val[i]=val; } - if (lastMacroDesc.macro->loop>=0 && lastMacroDesc.macro->looplen) { + if (lastMacroDesc.macro->looplen) { lastMacroDesc.macro->loop+=macroOffX; } else { - lastMacroDesc.macro->loop=-1; + lastMacroDesc.macro->loop=255; } if ((lastMacroDesc.macro->rel+macroOffX)>=0 && (lastMacroDesc.macro->rel+macroOffX)len) { lastMacroDesc.macro->rel+=macroOffX; } else { - lastMacroDesc.macro->rel=-1; + lastMacroDesc.macro->rel=255; } ImGui::CloseCurrentPopup(); From 3b6fa212b849aa83f5222cf5768f2d6286b384eb Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 22 Aug 2022 03:52:32 -0500 Subject: [PATCH 450/580] implement macro speed/delay --- src/engine/macroInt.cpp | 12 ++++++++++++ src/engine/macroInt.h | 10 +++++++--- src/gui/insEdit.cpp | 21 +++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/engine/macroInt.cpp b/src/engine/macroInt.cpp index 1566b943..36850818 100644 --- a/src/engine/macroInt.cpp +++ b/src/engine/macroInt.cpp @@ -32,6 +32,18 @@ void DivMacroStruct::doMacro(DivInstrumentMacro& source, bool released, bool tic had=false; return; } + if (delay>0) { + delay--; + return; + } + if (began && source.delay>0) { + delay=source.delay; + } else { + delay=source.speed-1; + } + if (began) { + began=false; + } if (finished) { finished=false; } diff --git a/src/engine/macroInt.h b/src/engine/macroInt.h index 8569dce4..ad761ba5 100644 --- a/src/engine/macroInt.h +++ b/src/engine/macroInt.h @@ -25,21 +25,24 @@ class DivEngine; struct DivMacroStruct { - int pos, lastPos; + int pos, lastPos, delay; int val; - bool has, had, actualHad, finished, will, linger; + bool has, had, actualHad, finished, will, linger, began; unsigned int mode; void doMacro(DivInstrumentMacro& source, bool released, bool tick); void init() { - pos=lastPos=mode=0; + pos=lastPos=mode=delay=0; has=had=actualHad=will=false; linger=false; + began=true; // TODO: test whether this breaks anything? val=0; } void prepare(DivInstrumentMacro& source, DivEngine* e); DivMacroStruct(): pos(0), + lastPos(0), + delay(0), val(0), has(false), had(false), @@ -47,6 +50,7 @@ struct DivMacroStruct { finished(false), will(false), linger(false), + began(false), mode(0) {} }; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 2a97744f..f7e80c53 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1245,6 +1245,27 @@ void FurnaceGUI::drawMacros(std::vector& macros) { if (macroLen>255) macroLen=255; i.macro->len=macroLen; } + if (ImGui::Button(ICON_FA_BAR_CHART "##IMacroType")) { + + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Coming soon!"); + } + ImGui::SameLine(); + ImGui::Button(ICON_FA_ELLIPSIS_H "##IMacroSet"); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Delay/Step Length"); + } + if (ImGui::BeginPopupContextItem("IMacroSetP",ImGuiPopupFlags_MouseButtonLeft)) { + if (ImGui::InputScalar("Step Length (ticks)##IMacroSpeed",ImGuiDataType_U8,&i.macro->speed,&_ONE,&_THREE)) { + if (i.macro->speed<1) i.macro->speed=1; + MARK_MODIFIED; + } + if (ImGui::InputScalar("Delay##IMacroDelay",ImGuiDataType_U8,&i.macro->delay,&_ONE,&_THREE)) { + MARK_MODIFIED; + } + ImGui::EndPopup(); + } // do not change this! // anything other than a checkbox will look ugly! // if you really need more than two macro modes please tell me. From 6e87bc5dd6c5ad3255e0c2662c6eec640309c338 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 22 Aug 2022 04:38:46 -0500 Subject: [PATCH 451/580] update format.md --- papers/format.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/papers/format.md b/papers/format.md index 4d9c15a2..cfe159ed 100644 --- a/papers/format.md +++ b/papers/format.md @@ -972,9 +972,9 @@ size | description 4 | "WAVE" block ID 4 | size of this block STR | wavetable name - 4 | wavetable size - 4 | wavetable min - 4 | wavetable max + 4 | wavetable width + 4 | reserved + 4 | wavetable height 4?? | wavetable data ``` From 8b3c4a84a81a3c9d72c3c1d3624e006be6136e09 Mon Sep 17 00:00:00 2001 From: aurora Date: Mon, 22 Aug 2022 22:05:16 +0300 Subject: [PATCH 452/580] implement bounds check for window spawning --- src/gui/gui.cpp | 40 +++++++++++++++++++++++++++++++++++++--- src/gui/gui.h | 1 + 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 20c3fc58..204be1af 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2517,6 +2517,35 @@ void FurnaceGUI::processPoint(SDL_Event& ev) { } } +// how many pixels should be visible at least at x/y dir +#define OOB_PIXELS_SAFETY 25 + +bool FurnaceGUI::detectOutOfBoundsWindow() { + int count = SDL_GetNumVideoDisplays(); + if(count < 1) { + logW("bounds check: error %s", SDL_GetError()); + return false; + } + + SDL_Rect rect; + for(int i = 0;i < count;i ++) { + if(SDL_GetDisplayUsableBounds(i, &rect) != 0) { + logW("bounds check: error %s", SDL_GetError()); + return false; + } + + bool xbound = (rect.x + OOB_PIXELS_SAFETY) <= (scrX + scrW) && (rect.x + rect.w - OOB_PIXELS_SAFETY) >= scrX; + bool ybound = (rect.y + OOB_PIXELS_SAFETY) <= (scrY + scrH) && (rect.y + rect.h - OOB_PIXELS_SAFETY) >= scrY; + logD("bounds check: display %d is at %dx%dx%dx%d: %s%s", i, rect.x + OOB_PIXELS_SAFETY, rect.y + OOB_PIXELS_SAFETY, rect.x + rect.w - OOB_PIXELS_SAFETY, rect.y + rect.h - OOB_PIXELS_SAFETY, xbound ? "x" : "", ybound ? "y" : ""); + + if(xbound && ybound) { + return true; + } + } + + return false; +} + bool FurnaceGUI::loop() { bool doThreadedInput=!settings.noThreadedInput; if (doThreadedInput) { @@ -2714,9 +2743,7 @@ bool FurnaceGUI::loop() { // update config x/y/w/h values based on scrMax state if(updateWindow) { - if(scrMax) { - scrConfY=scrConfX = SDL_WINDOWPOS_CENTERED_DISPLAY(SDL_GetWindowDisplayIndex(sdlWin)); - } else { + if(!scrMax) { scrConfX=scrX; scrConfY=scrY; scrConfW=scrW; @@ -4483,6 +4510,13 @@ bool FurnaceGUI::init() { SDL_Init(SDL_INIT_VIDEO); + // if window would spawn out of bounds, force it to be get default position + if(!detectOutOfBoundsWindow()) { + scrMax = false; + scrX=scrConfX=SDL_WINDOWPOS_CENTERED; + scrY=scrConfY=SDL_WINDOWPOS_CENTERED; + } + sdlWin=SDL_CreateWindow("Furnace",scrX,scrY,scrW*dpiScale,scrH*dpiScale,SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI|(scrMax?SDL_WINDOW_MAXIMIZED:0)|(fullScreen?SDL_WINDOW_FULLSCREEN_DESKTOP:0)); if (sdlWin==NULL) { logE("could not open window! %s",SDL_GetError()); diff --git a/src/gui/gui.h b/src/gui/gui.h index 7d42eb84..f4276f05 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1710,6 +1710,7 @@ class FurnaceGUI { void runBackupThread(); void pushPartBlend(); void popPartBlend(); + bool detectOutOfBoundsWindow(); int processEvent(SDL_Event* ev); bool loop(); bool finish(); From 0e847dc1aab974d8adf18ead6e73eda287f2919b Mon Sep 17 00:00:00 2001 From: aurora Date: Mon, 22 Aug 2022 22:17:19 +0300 Subject: [PATCH 453/580] add setting for choosing whether to save window position --- src/gui/gui.cpp | 4 ++-- src/gui/gui.h | 1 + src/gui/settings.cpp | 35 +++++++++++++++++++++++------------ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 204be1af..76e2b8a1 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4685,8 +4685,8 @@ bool FurnaceGUI::finish() { // commit last window size e->setConf("lastWindowWidth",scrConfW); e->setConf("lastWindowHeight",scrConfH); - e->setConf("lastWindowX",scrConfX); - e->setConf("lastWindowY",scrConfY); + e->setConf("lastWindowX",settings.saveWindowPos?scrConfX:(int)SDL_WINDOWPOS_CENTERED); + e->setConf("lastWindowY",settings.saveWindowPos?scrConfY:(int)SDL_WINDOWPOS_CENTERED); e->setConf("lastWindowMax",scrMax); e->setConf("tempoView",tempoView); diff --git a/src/gui/gui.h b/src/gui/gui.h index f4276f05..21e4ecf5 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1129,6 +1129,7 @@ class FurnaceGUI { int dragMovesSelection; int unsignedDetune; int noThreadedInput; + int saveWindowPos; int clampSamples; int saveUnusedPatterns; int channelColors; diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 03c32e65..cb720da4 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -259,7 +259,7 @@ void FurnaceGUI::drawSettings() { } ImGui::Separator(); - + ImGui::Text("Initial system:"); ImGui::SameLine(); if (ImGui::Button("Current system")) { @@ -369,7 +369,7 @@ void FurnaceGUI::drawSettings() { } rightClickable ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-(50.0f*dpiScale)); CWSliderScalar("Panning",ImGuiDataType_S8,&settings.initialSys[i+2],&_MINUS_ONE_HUNDRED_TWENTY_SEVEN,&_ONE_HUNDRED_TWENTY_SEVEN); rightClickable - + // oh please MSVC don't cry if (ImGui::TreeNode("Configure")) { drawSysConf(-1,(DivSystem)settings.initialSys[i],(unsigned int&)settings.initialSys[i+3],false); @@ -452,7 +452,7 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Double click selects entire column",&doubleClickColumnB)) { settings.doubleClickColumn=doubleClickColumnB; } - + bool allowEditDockingB=settings.allowEditDocking; if (ImGui::Checkbox("Allow docking editors",&allowEditDockingB)) { settings.allowEditDocking=allowEditDockingB; @@ -509,6 +509,14 @@ void FurnaceGUI::drawSettings() { ImGui::SetTooltip("threaded input processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.\nhowever, crashes have been reported when threaded input is on. enable this option if that is the case."); } + bool saveWindowPosB=settings.saveWindowPos; + if (ImGui::Checkbox("Remember window location",&saveWindowPosB)) { + settings.saveWindowPos=saveWindowPosB; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("remembers where window was last located on start-up. When disabled, window will start in a defaul location."); + } + bool blankInsB=settings.blankIns; if (ImGui::Checkbox("New instruments are blank",&blankInsB)) { settings.blankIns=blankInsB; @@ -639,7 +647,7 @@ void FurnaceGUI::drawSettings() { BUFFER_SIZE_SELECTABLE(2048); ImGui::EndCombo(); } - + ImGui::Text("Quality"); ImGui::SameLine(); ImGui::Combo("##Quality",&settings.audioQuality,audioQualities,2); @@ -697,7 +705,7 @@ void FurnaceGUI::drawSettings() { } if (hasToReloadMidi) { - midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg"); + midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg"); midiMap.compile(); } @@ -1344,7 +1352,7 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Unsigned FM detune values",&unsignedDetuneB)) { settings.unsignedDetune=unsignedDetuneB; } - + // sorry. temporarily disabled until ImGui has a way to add separators in tables arbitrarily. /*bool sysSeparatorsB=settings.sysSeparators; if (ImGui::Checkbox("Add separators between systems in Orders",&sysSeparatorsB)) { @@ -1553,12 +1561,12 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_FM_SECONDARY_MOD,"Mod. accent (secondary)"); UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_MOD,"Mod. border"); UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_SHADOW_MOD,"Mod. border shadow"); - + UI_COLOR_CONFIG(GUI_COLOR_FM_PRIMARY_CAR,"Car. accent (primary"); UI_COLOR_CONFIG(GUI_COLOR_FM_SECONDARY_CAR,"Car. accent (secondary)"); UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_CAR,"Car. border"); UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_SHADOW_CAR,"Car. border shadow"); - + ImGui::TreePop(); } if (ImGui::TreeNode("Macro Editor")) { @@ -1917,7 +1925,7 @@ void FurnaceGUI::drawSettings() { UI_KEYBIND_CONFIG(GUI_ACTION_PAT_COLLAPSE_ROWS); UI_KEYBIND_CONFIG(GUI_ACTION_PAT_EXPAND_ROWS); UI_KEYBIND_CONFIG(GUI_ACTION_PAT_LATCH); - + // TODO: collapse/expand pattern and song KEYBIND_CONFIG_END; @@ -2213,6 +2221,7 @@ void FurnaceGUI::syncSettings() { settings.dragMovesSelection=e->getConfInt("dragMovesSelection",2); settings.unsignedDetune=e->getConfInt("unsignedDetune",0); settings.noThreadedInput=e->getConfInt("noThreadedInput",0); + settings.saveWindowPos=e->getConfInt("saveWindowPos",1); settings.initialSysName=e->getConfString("initialSysName",""); settings.clampSamples=e->getConfInt("clampSamples",0); settings.noteOffLabel=e->getConfString("noteOffLabel","OFF"); @@ -2313,6 +2322,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.dragMovesSelection,0,2); clampSetting(settings.unsignedDetune,0,1); clampSetting(settings.noThreadedInput,0,1); + clampSetting(settings.saveWindowPos,0,1); clampSetting(settings.clampSamples,0,1); clampSetting(settings.saveUnusedPatterns,0,1); clampSetting(settings.channelColors,0,2); @@ -2344,7 +2354,7 @@ void FurnaceGUI::syncSettings() { parseKeybinds(); - midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg"); + midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg"); midiMap.compile(); e->setMidiDirect(midiMap.directChannel); @@ -2458,6 +2468,7 @@ void FurnaceGUI::commitSettings() { e->setConf("dragMovesSelection",settings.dragMovesSelection); e->setConf("unsignedDetune",settings.unsignedDetune); e->setConf("noThreadedInput",settings.noThreadedInput); + e->setConf("saveWindowPos",settings.saveWindowPos); e->setConf("clampSamples",settings.clampSamples); e->setConf("noteOffLabel",settings.noteOffLabel); e->setConf("noteRelLabel",settings.noteRelLabel); @@ -3130,7 +3141,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) { if ((iconFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(iconFont_compressed_data,iconFont_compressed_size,e->getConfInt("iconSize",16)*dpiScale,&fc,fontRangeIcon))==NULL) { logE("could not load icon font!"); } - + if (settings.mainFontSize==settings.patFontSize && settings.patFont<5 && builtinFontM[settings.patFont]==builtinFont[settings.mainFont]) { logD("using main font for pat font."); patFont=mainFont; @@ -3164,7 +3175,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) { } } } - + if ((bigFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(font_plexSans_compressed_data,font_plexSans_compressed_size,40*dpiScale))==NULL) { logE("could not load big UI font!"); } From d406380773f25d8ce7940c98e98280bb446c9113 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 22 Aug 2022 14:20:47 -0500 Subject: [PATCH 454/580] SoundUnit: fix some effect definitions --- src/engine/sysDef.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 63cb6fac..5ac6bf34 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1429,15 +1429,15 @@ void DivEngine::registerSystems() { EffectHandlerMap suEffectHandlerMap={ {0x10, {DIV_CMD_WAVE, "10xx: Set waveform (0 to 7)"}}, - {0x12, {DIV_CMD_STD_NOISE_MODE, "22xx: Set envelope mode (bit 0: enable; bit 1: one-shot; bit 2: split shape to L/R; bit 3/5: H.invert right/left; bit 4/6: V.invert right/left)"}}, - {0x13, {DIV_CMD_C64_RESONANCE, "23xx: Set envelope period"}}, - {0x14, {DIV_CMD_C64_FILTER_MODE, "25xx: Envelope slide up"}}, + {0x12, {DIV_CMD_STD_NOISE_MODE, "12xx: Set pulse width (0 to 7F)"}}, + {0x13, {DIV_CMD_C64_RESONANCE, "13xx: Set resonance (0 to FF)"}}, + {0x14, {DIV_CMD_C64_FILTER_MODE, "14xx: Set filter mode (bit 0: ring mod; bit 1: low pass; bit 2: high pass; bit 3: band pass)"}}, {0x15, {DIV_CMD_SU_SWEEP_PERIOD_LOW, "15xx: Set frequency sweep period low byte", constVal<0>, effectVal}}, {0x16, {DIV_CMD_SU_SWEEP_PERIOD_HIGH, "16xx: Set frequency sweep period high byte", constVal<0>, effectVal}}, {0x17, {DIV_CMD_SU_SWEEP_PERIOD_LOW, "17xx: Set volume sweep period low byte", constVal<1>, effectVal}}, {0x18, {DIV_CMD_SU_SWEEP_PERIOD_HIGH, "18xx: Set volume sweep period high byte", constVal<1>, effectVal}}, {0x19, {DIV_CMD_SU_SWEEP_PERIOD_LOW, "19xx: Set cutoff sweep period low byte", constVal<2>, effectVal}}, - {0x1a, {DIV_CMD_SU_SWEEP_PERIOD_HIGH, "1axx: Set cutoff sweep period high byte", constVal<2>, effectVal}}, + {0x1a, {DIV_CMD_SU_SWEEP_PERIOD_HIGH, "1Axx: Set cutoff sweep period high byte", constVal<2>, effectVal}}, {0x1b, {DIV_CMD_SU_SWEEP_BOUND, "1Bxx: Set frequency sweep boundary", constVal<0>, effectVal}}, {0x1c, {DIV_CMD_SU_SWEEP_BOUND, "1Cxx: Set volume sweep boundary", constVal<1>, effectVal}}, {0x1d, {DIV_CMD_SU_SWEEP_BOUND, "1Dxx: Set cutoff sweep boundary", constVal<2>, effectVal}}, From c009cb3536645a9f6bb1d15f0baf6e835cf04a76 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 22 Aug 2022 15:59:45 -0500 Subject: [PATCH 455/580] dev112 - prepare for advanced arp macro this new advanced arp macro offers more flexibility and reduces code duplication it allows you to set each step of the macro to either relative or fixed mode (instead of just one mode for the entire macro) the UI is still a work in progress and doesn't work well this change is big and may break things! further fixes incoming --- papers/format.md | 16 ++++++++++++- src/engine/engine.cpp | 5 ++++ src/engine/engine.h | 7 ++++-- src/engine/fileOps.cpp | 16 +++++++++---- src/engine/instrument.cpp | 15 +++++++++++- src/engine/platform/amiga.cpp | 14 ++--------- src/engine/platform/arcade.cpp | 11 +-------- src/engine/platform/ay.cpp | 11 +-------- src/engine/platform/ay8930.cpp | 11 +-------- src/engine/platform/bubsyswsg.cpp | 11 +-------- src/engine/platform/c64.cpp | 11 +-------- src/engine/platform/fds.cpp | 11 +-------- src/engine/platform/gb.cpp | 19 ++------------- src/engine/platform/genesis.cpp | 22 ++--------------- src/engine/platform/lynx.cpp | 19 +++------------ src/engine/platform/mmc5.cpp | 12 ++-------- src/engine/platform/n163.cpp | 11 +-------- src/engine/platform/namcowsg.cpp | 11 +-------- src/engine/platform/nes.cpp | 17 ++------------ src/engine/platform/opl.cpp | 22 ++--------------- src/engine/platform/opll.cpp | 11 +-------- src/engine/platform/pce.cpp | 22 +++-------------- src/engine/platform/pcmdac.cpp | 11 +-------- src/engine/platform/pcspkr.cpp | 11 +-------- src/engine/platform/pet.cpp | 11 +-------- src/engine/platform/qsound.cpp | 11 +-------- src/engine/platform/rf5c68.cpp | 11 +-------- src/engine/platform/saa.cpp | 11 +-------- src/engine/platform/scc.cpp | 11 +-------- src/engine/platform/segapcm.cpp | 11 +-------- src/engine/platform/sms.cpp | 22 +++++------------ src/engine/platform/su.cpp | 11 +-------- src/engine/platform/swan.cpp | 11 +-------- src/engine/platform/tia.cpp | 10 +++----- src/engine/platform/tx81z.cpp | 11 +-------- src/engine/platform/vera.cpp | 22 ++--------------- src/engine/platform/vic20.cpp | 11 +-------- src/engine/platform/vrc6.cpp | 11 +-------- src/engine/platform/x1_010.cpp | 11 +-------- src/engine/platform/ym2203.cpp | 11 +-------- src/engine/platform/ym2608.cpp | 22 ++--------------- src/engine/platform/ym2610.cpp | 22 ++--------------- src/engine/platform/ym2610b.cpp | 22 ++--------------- src/engine/platform/ymz280b.cpp | 11 +-------- src/engine/platform/zxbeeper.cpp | 11 +-------- src/gui/gui.cpp | 39 +++++++++++++++++++++++-------- src/gui/gui.h | 10 ++++---- src/gui/insEdit.cpp | 21 ++++++++++++++--- 48 files changed, 164 insertions(+), 518 deletions(-) diff --git a/papers/format.md b/papers/format.md index cfe159ed..def8cba1 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 112: Furnace dev112 - 111: Furnace dev111 - 110: Furnace dev110 - 109: Furnace dev109 @@ -454,6 +455,7 @@ size | description | - 29: SNES | - 30: Sound Unit | - 31: Namco WSG + | - 32: OPL (drums) 1 | reserved STR | instrument name --- | **FM instrument data** @@ -545,7 +547,18 @@ size | description 4 | extra 1 macro loop (>=17) 4 | extra 2 macro loop (>=17) 4 | extra 3 macro loop (>=17) - 1 | arp macro mode + 1 | arp macro mode (<112) or reserved + | - treat this value in a special way. + | - before version 112, this byte indicates whether the arp macro mode is fixed or not. + | - from that version onwards, the fixed mode is part of the macro values. + | - to convert a <112 macro mode to a modern one, do the following: + | - is the macro mode set to fixed? + | - if yes, then: + | - set bit 30 of all arp macro values (this is the fixed mode bit) + | - does the macro loop? + | - if yes, then do nothing else + | - if no, then add one to the macro length, and set the last macro value to 0 + | - if no, then do nothing 1 | reserved (>=17) or volume macro height (>=15) or reserved 1 | reserved (>=17) or duty macro height (>=15) or reserved 1 | reserved (>=17) or wave macro height (>=15) or reserved @@ -553,6 +566,7 @@ size | description | - before version 87, if this is the C64 relative cutoff macro, its values were stored offset by 18. 4?? | arp macro | - before version 31, this macro's values were stored offset by 12. + | - from version 112 onward, bit 30 of a value indicates fixed mode. 4?? | duty macro | - before version 87, if this is the C64 relative duty macro, its values were stored offset by 12. 4?? | wave macro diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 7bf184f0..4ee8e48b 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1712,6 +1712,11 @@ int DivEngine::calcFreq(int base, int pitch, bool period, int octave, int pitch2 base+((pitch*octave)>>1)+pitch2; } +int DivEngine::calcArp(int note, int arp, int offset) { + if (arp&0x40000000) return (arp&(~0x40000000))+offset; + return note+arp; +} + int DivEngine::convertPanSplitToLinear(unsigned int val, unsigned char bits, int range) { int panL=val>>bits; int panR=val&((1<std.arpMacro.len; j++) { ins->std.arpMacro.val[j]-=12; } + } else { + ins->std.arpMacro.mode=0; + for (int j=0; jstd.arpMacro.len; j++) { + ins->std.arpMacro.val[i]|=0x40000000; + } + if (ins->std.arpMacro.loopstd.arpMacro.len && ins->std.arpMacro.len<255) { + ins->std.arpMacro.val[ins->std.arpMacro.len++]=0; + } } ins->std.dutyMacro.len=reader.readC(); @@ -2886,9 +2894,6 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { loopMapFreq[j]=ins->std.arpMacro.len; loopMapWave[j]=ins->std.waveMacro.len; if (fm.val[j]==0xe1) { - if (ins->std.arpMacro.mode) { - ins->std.arpMacro.loop=(signed int)ins->std.arpMacro.len-1; - } break; } else if (fm.val[j]==0xe2 || fm.val[j]==0xe4) { if (++j>=64) break; @@ -2923,8 +2928,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { logV("unhandled pitch!"); } else { if (fm.val[j]>0x80) { - ins->std.arpMacro.val[ins->std.arpMacro.len]=fm.val[j]-0x80+24; - ins->std.arpMacro.mode=1; // TODO: variable fixed/relative mode + ins->std.arpMacro.val[ins->std.arpMacro.len]=(fm.val[j]-0x80+24)|0x40000000; } else { ins->std.arpMacro.val[ins->std.arpMacro.len]=fm.val[j]; } @@ -3293,6 +3297,7 @@ bool DivEngine::loadFTM(unsigned char* file, size_t len) { ins->std.arpMacro.len=reader.readC(); ins->std.arpMacro.loop=reader.readI(); ins->std.arpMacro.rel=reader.readI(); + // TODO: get rid ins->std.arpMacro.mode=reader.readI(); for (int j=0; jstd.arpMacro.len; j++) { ins->std.arpMacro.val[j]=reader.readC(); @@ -4204,6 +4209,7 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { } } + // TODO: take care of new arp macro format w->writeC(i->std.arpMacro.len); if (i->std.arpMacro.mode) { for (int j=0; jstd.arpMacro.len; j++) { diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index b2203ebf..bd28834c 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -132,7 +132,7 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeI(std.ex1Macro.loop); w->writeI(std.ex2Macro.loop); w->writeI(std.ex3Macro.loop); - w->writeC(std.arpMacro.mode); + w->writeC(0); // this was arp macro mode w->writeC(0); // reserved w->writeC(0); w->writeC(0); @@ -1342,6 +1342,19 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { } } + // old arp macro format + if (version<112) { + if (std.arpMacro.mode) { + std.arpMacro.mode=0; + for (int i=0; istd.arpMacro.loop && std.arpMacro.len<255) { + std.arpMacro.val[std.arpMacro.len++]=0; + } + } + } + return DIV_DATA_SUCCESS; } diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index 57c0e3e2..ed71d76a 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -163,19 +163,9 @@ void DivPlatformAmiga::tick(bool sysTick) { } } if (chan[i].std.arp.had) { - if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=round(off*NOTE_PERIODIC_NOROUND(chan[i].std.arp.val)); - } else { - chan[i].baseFreq=round(off*NOTE_PERIODIC_NOROUND(chan[i].note+chan[i].std.arp.val)); - } - } + // TODO: why the off mult? this may be a bug! + chan[i].baseFreq=round(off*NOTE_PERIODIC_NOROUND(parent->calcArp(chan[i].note,chan[i].std.arp.val))); chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=round(off*NOTE_PERIODIC_NOROUND(chan[i].note)); - chan[i].freqChanged=true; - } } if (chan[i].useWave && chan[i].std.wave.had) { if (chan[i].wave!=chan[i].std.wave.val || chan[i].ws.activeChanged()) { diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 1f51dc9b..cca54d28 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -161,18 +161,9 @@ void DivPlatformArcade::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_LINEAR(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_LINEAR(chan[i].note+(signed char)chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_LINEAR(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_LINEAR(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 1b24ac73..f45c51ea 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -159,18 +159,9 @@ void DivPlatformAY8910::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { rWrite(0x06,31-chan[i].std.duty.val); diff --git a/src/engine/platform/ay8930.cpp b/src/engine/platform/ay8930.cpp index 0fc9091f..d77457d6 100644 --- a/src/engine/platform/ay8930.cpp +++ b/src/engine/platform/ay8930.cpp @@ -167,18 +167,9 @@ void DivPlatformAY8930::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { rWrite(0x06,chan[i].std.duty.val); diff --git a/src/engine/platform/bubsyswsg.cpp b/src/engine/platform/bubsyswsg.cpp index fd00ebee..89503cce 100644 --- a/src/engine/platform/bubsyswsg.cpp +++ b/src/engine/platform/bubsyswsg.cpp @@ -92,18 +92,9 @@ void DivPlatformBubSysWSG::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.wave.had) { if (chan[i].wave!=chan[i].std.wave.val || chan[i].ws.activeChanged()) { diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index dc0cd8a2..9825f189 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -104,18 +104,9 @@ void DivPlatformC64::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+(signed char)chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_C64); diff --git a/src/engine/platform/fds.cpp b/src/engine/platform/fds.cpp index fc4d3e77..7622a099 100644 --- a/src/engine/platform/fds.cpp +++ b/src/engine/platform/fds.cpp @@ -121,18 +121,9 @@ void DivPlatformFDS::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } /* if (chan[i].std.duty.had) { diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index ab603266..afed615d 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -165,28 +165,13 @@ void DivPlatformGB::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (i==3) { // noise - if (chan[i].std.arp.mode) { - chan[i].baseFreq=chan[i].std.arp.val+24; - } else { - chan[i].baseFreq=chan[i].note+chan[i].std.arp.val; - } + chan[i].baseFreq=parent->calcArp(chan[i].note,chan[i].std.arp.val,24); if (chan[i].baseFreq>255) chan[i].baseFreq=255; if (chan[i].baseFreq<0) chan[i].baseFreq=0; } else { - if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val+24); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { chan[i].duty=chan[i].std.duty.val; diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index 7dde9790..f499865e 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -266,34 +266,16 @@ void DivPlatformGenesis::tick(bool sysTick) { if (i>=5 && chan[i].furnaceDac) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=parent->calcBaseFreq(1,1,chan[i].std.arp.val,false); - } else { - chan[i].baseFreq=parent->calcBaseFreq(1,1,chan[i].note+(signed char)chan[i].std.arp.val,false); - } + chan[i].baseFreq=parent->calcBaseFreq(1,1,parent->calcArp(chan[i].note,chan[i].std.arp.val),false); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=parent->calcBaseFreq(1,1,chan[i].note,false); - chan[i].freqChanged=true; - } } } else { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].std.arp.val,11); - } else { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note+(signed char)chan[i].std.arp.val,11); - } + chan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(chan[i].note,chan[i].std.arp.val),11); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note,11); - chan[i].freqChanged=true; - } } } diff --git a/src/engine/platform/lynx.cpp b/src/engine/platform/lynx.cpp index ead20590..f771be33 100644 --- a/src/engine/platform/lynx.cpp +++ b/src/engine/platform/lynx.cpp @@ -172,22 +172,9 @@ void DivPlatformLynx::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - if (chan[i].pcm) chan[i].sampleBaseFreq=parent->calcBaseFreq(1.0,1.0,chan[i].std.arp.val,false); - chan[i].actualNote=chan[i].std.arp.val; - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - if (chan[i].pcm) chan[i].sampleBaseFreq=parent->calcBaseFreq(1.0,1.0,chan[i].note+chan[i].std.arp.val,false); - chan[i].actualNote=chan[i].note+chan[i].std.arp.val; - } - chan[i].freqChanged=true; - } - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - if (chan[i].pcm) chan[i].sampleBaseFreq=parent->calcBaseFreq(1.0,1.0,chan[i].note,false); - chan[i].actualNote=chan[i].note; + chan[i].actualNote=parent->calcArp(chan[i].note,chan[i].std.arp.val); + chan[i].baseFreq=NOTE_PERIODIC(chan[i].actualNote); + if (chan[i].pcm) chan[i].sampleBaseFreq=parent->calcBaseFreq(1.0,1.0,chan[i].actualNote,false); chan[i].freqChanged=true; } } diff --git a/src/engine/platform/mmc5.cpp b/src/engine/platform/mmc5.cpp index b5bb5a9e..0a3bfb9e 100644 --- a/src/engine/platform/mmc5.cpp +++ b/src/engine/platform/mmc5.cpp @@ -101,20 +101,12 @@ void DivPlatformMMC5::tick(bool sysTick) { if (chan[i].outVol<0) chan[i].outVol=0; rWrite(0x5000+i*4,0x30|chan[i].outVol|((chan[i].duty&3)<<6)); } + // TODO: arp macros on NES PCM? if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { chan[i].duty=chan[i].std.duty.val; diff --git a/src/engine/platform/n163.cpp b/src/engine/platform/n163.cpp index 52352dc6..7da2e0a1 100644 --- a/src/engine/platform/n163.cpp +++ b/src/engine/platform/n163.cpp @@ -189,18 +189,9 @@ void DivPlatformN163::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+(signed char)chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { if (chan[i].wavePos!=chan[i].std.duty.val) { diff --git a/src/engine/platform/namcowsg.cpp b/src/engine/platform/namcowsg.cpp index e88bb0eb..236790e3 100644 --- a/src/engine/platform/namcowsg.cpp +++ b/src/engine/platform/namcowsg.cpp @@ -206,18 +206,9 @@ void DivPlatformNamcoWSG::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.wave.had) { if (chan[i].wave!=chan[i].std.wave.val || chan[i].ws.activeChanged()) { diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index a55199d1..ab466f1b 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -219,28 +219,15 @@ void DivPlatformNES::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (i==3) { // noise - if (chan[i].std.arp.mode) { - chan[i].baseFreq=chan[i].std.arp.val; - } else { - chan[i].baseFreq=chan[i].note+chan[i].std.arp.val; - } + chan[i].baseFreq=parent->calcArp(chan[i].note,chan[i].std.arp.val); if (chan[i].baseFreq>255) chan[i].baseFreq=255; if (chan[i].baseFreq<0) chan[i].baseFreq=0; } else { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { chan[i].duty=chan[i].std.duty.val; diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 78ef25a2..eb49637e 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -297,18 +297,9 @@ void DivPlatformOPL::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+(signed char)chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (oplType==3 && chan[i].std.panL.had) { @@ -491,18 +482,9 @@ void DivPlatformOPL::tick(bool sysTick) { if (chan[adpcmChan].std.arp.had) { if (!chan[adpcmChan].inPorta) { - if (chan[adpcmChan].std.arp.mode) { - chan[adpcmChan].baseFreq=NOTE_ADPCMB(chan[adpcmChan].std.arp.val); - } else { - chan[adpcmChan].baseFreq=NOTE_ADPCMB(chan[adpcmChan].note+(signed char)chan[adpcmChan].std.arp.val); - } + chan[adpcmChan].baseFreq=NOTE_ADPCMB(parent->calcArp(chan[adpcmChan].note,chan[adpcmChan].std.arp.val)); } chan[adpcmChan].freqChanged=true; - } else { - if (chan[adpcmChan].std.arp.mode && chan[adpcmChan].std.arp.finished) { - chan[adpcmChan].baseFreq=NOTE_ADPCMB(chan[adpcmChan].note); - chan[adpcmChan].freqChanged=true; - } } } if (chan[adpcmChan].freqChanged) { diff --git a/src/engine/platform/opll.cpp b/src/engine/platform/opll.cpp index e29f6e62..9485551a 100644 --- a/src/engine/platform/opll.cpp +++ b/src/engine/platform/opll.cpp @@ -107,18 +107,9 @@ void DivPlatformOPLL::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+(signed char)chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.wave.had && chan[i].state.opllPreset!=16) { diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index 1dcf2451..476b1ecc 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -162,28 +162,12 @@ void DivPlatformPCE::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - // noise - int noiseSeek=chan[i].std.arp.val; - if (noiseSeek<0) noiseSeek=0; - chWrite(i,0x07,chan[i].noise?(0x80|(parent->song.properNoiseLayout?(noiseSeek&31):noiseFreq[noiseSeek%12])):0); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - int noiseSeek=chan[i].note+chan[i].std.arp.val; - if (noiseSeek<0) noiseSeek=0; - chWrite(i,0x07,chan[i].noise?(0x80|(parent->song.properNoiseLayout?(noiseSeek&31):noiseFreq[noiseSeek%12])):0); - } - } - chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - int noiseSeek=chan[i].note; + int noiseSeek=parent->calcArp(chan[i].note,chan[i].std.arp.val); + chan[i].baseFreq=NOTE_PERIODIC(noiseSeek); if (noiseSeek<0) noiseSeek=0; chWrite(i,0x07,chan[i].noise?(0x80|(parent->song.properNoiseLayout?(noiseSeek&31):noiseFreq[noiseSeek%12])):0); - chan[i].freqChanged=true; } + chan[i].freqChanged=true; } if (chan[i].std.wave.had && !chan[i].pcm) { if (chan[i].wave!=chan[i].std.wave.val || chan[i].ws.activeChanged()) { diff --git a/src/engine/platform/pcmdac.cpp b/src/engine/platform/pcmdac.cpp index 213cb85a..026e989c 100644 --- a/src/engine/platform/pcmdac.cpp +++ b/src/engine/platform/pcmdac.cpp @@ -83,18 +83,9 @@ void DivPlatformPCMDAC::tick(bool sysTick) { } if (chan.std.arp.had) { if (!chan.inPorta) { - if (chan.std.arp.mode) { - chan.baseFreq=NOTE_FREQUENCY(chan.std.arp.val); - } else { - chan.baseFreq=NOTE_FREQUENCY(chan.note+chan.std.arp.val); - } + chan.baseFreq=NOTE_FREQUENCY(parent->calcArp(chan.note,chan.std.arp.val)); } chan.freqChanged=true; - } else { - if (chan.std.arp.mode && chan.std.arp.finished) { - chan.baseFreq=NOTE_FREQUENCY(chan.note); - chan.freqChanged=true; - } } if (chan.useWave && chan.std.wave.had) { if (chan.wave!=chan.std.wave.val || chan.ws.activeChanged()) { diff --git a/src/engine/platform/pcspkr.cpp b/src/engine/platform/pcspkr.cpp index 260f5bbd..ab3b8a7c 100644 --- a/src/engine/platform/pcspkr.cpp +++ b/src/engine/platform/pcspkr.cpp @@ -347,18 +347,9 @@ void DivPlatformPCSpeaker::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.pitch.had) { if (chan[i].std.pitch.mode) { diff --git a/src/engine/platform/pet.cpp b/src/engine/platform/pet.cpp index 4e1c39a9..c314edf6 100644 --- a/src/engine/platform/pet.cpp +++ b/src/engine/platform/pet.cpp @@ -104,18 +104,9 @@ void DivPlatformPET::tick(bool sysTick) { } if (chan.std.arp.had) { if (!chan.inPorta) { - if (chan.std.arp.mode) { - chan.baseFreq=NOTE_PERIODIC(chan.std.arp.val); - } else { - chan.baseFreq=NOTE_PERIODIC(chan.note+chan.std.arp.val); - } + chan.baseFreq=NOTE_PERIODIC(parent->calcArp(chan.note,chan.std.arp.val)); } chan.freqChanged=true; - } else { - if (chan.std.arp.mode && chan.std.arp.finished) { - chan.baseFreq=NOTE_PERIODIC(chan.note); - chan.freqChanged=true; - } } if (chan.std.wave.had) { if (chan.wave!=chan.std.wave.val) { diff --git a/src/engine/platform/qsound.cpp b/src/engine/platform/qsound.cpp index 863c0e1f..1339d70a 100644 --- a/src/engine/platform/qsound.cpp +++ b/src/engine/platform/qsound.cpp @@ -297,18 +297,9 @@ void DivPlatformQSound::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=QS_NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=QS_NOTE_FREQUENCY(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=QS_NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=QS_NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.pitch.had) { if (chan[i].std.pitch.mode) { diff --git a/src/engine/platform/rf5c68.cpp b/src/engine/platform/rf5c68.cpp index e19b945b..3aa922e4 100644 --- a/src/engine/platform/rf5c68.cpp +++ b/src/engine/platform/rf5c68.cpp @@ -84,18 +84,9 @@ void DivPlatformRF5C68::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.pitch.had) { if (chan[i].std.pitch.mode) { diff --git a/src/engine/platform/saa.cpp b/src/engine/platform/saa.cpp index a05a61d4..b7a77d96 100644 --- a/src/engine/platform/saa.cpp +++ b/src/engine/platform/saa.cpp @@ -99,18 +99,9 @@ void DivPlatformSAA1099::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { saaNoise[i/3]=chan[i].std.duty.val&3; diff --git a/src/engine/platform/scc.cpp b/src/engine/platform/scc.cpp index a7225762..d8859cff 100644 --- a/src/engine/platform/scc.cpp +++ b/src/engine/platform/scc.cpp @@ -115,18 +115,9 @@ void DivPlatformSCC::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.wave.had) { if (chan[i].wave!=chan[i].std.wave.val || chan[i].ws.activeChanged()) { diff --git a/src/engine/platform/segapcm.cpp b/src/engine/platform/segapcm.cpp index e406e293..329e3b82 100644 --- a/src/engine/platform/segapcm.cpp +++ b/src/engine/platform/segapcm.cpp @@ -88,18 +88,9 @@ void DivPlatformSegaPCM::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=(chan[i].std.arp.val<<6); - } else { - chan[i].baseFreq=((chan[i].note+(signed char)chan[i].std.arp.val)<<6); - } + chan[i].baseFreq=(parent->calcArp(chan[i].note,chan[i].std.arp.val)<<6); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=(chan[i].note<<6); - chan[i].freqChanged=true; - } } if (chan[i].std.panL.had) { diff --git a/src/engine/platform/sms.cpp b/src/engine/platform/sms.cpp index 40a8616e..497095c1 100644 --- a/src/engine/platform/sms.cpp +++ b/src/engine/platform/sms.cpp @@ -132,22 +132,12 @@ void DivPlatformSMS::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - chan[i].actualNote=chan[i].std.arp.val; - } else { - // TODO: check whether this weird octave boundary thing applies to other systems as well - int areYouSerious=chan[i].note+chan[i].std.arp.val; - while (areYouSerious>0x60) areYouSerious-=12; - chan[i].baseFreq=NOTE_PERIODIC(areYouSerious); - chan[i].actualNote=areYouSerious; - } - chan[i].freqChanged=true; - } - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].actualNote=chan[i].note; + // TODO: check whether this weird octave boundary thing applies to other systems as well + // TODO: add compatibility flag. this is horrible. + int areYouSerious=parent->calcArp(chan[i].note,chan[i].std.arp.val); + while (areYouSerious>0x60) areYouSerious-=12; + chan[i].baseFreq=NOTE_PERIODIC(areYouSerious); + chan[i].actualNote=areYouSerious; chan[i].freqChanged=true; } } diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index ca933650..a28ed304 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -78,18 +78,9 @@ void DivPlatformSoundUnit::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_SU(i,chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_SU(i,chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_SU(i,parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_SU(i,chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { chan[i].duty=chan[i].std.duty.val; diff --git a/src/engine/platform/swan.cpp b/src/engine/platform/swan.cpp index cdab93d5..7f1e10a0 100644 --- a/src/engine/platform/swan.cpp +++ b/src/engine/platform/swan.cpp @@ -134,18 +134,9 @@ void DivPlatformSwan::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.wave.had && !(i==1 && pcm)) { if (chan[i].wave!=chan[i].std.wave.val || chan[i].ws.activeChanged()) { diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index 18bdcb0c..fe7273a1 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -87,20 +87,16 @@ void DivPlatformTIA::tick(bool sysTick) { rWrite(0x19+i,chan[i].outVol&15); } } + // TODO: the way arps work on TIA is really weird if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=0x80000000|chan[i].std.arp.val; + if (chan[i].std.arp.val&0x40000000) { + chan[i].baseFreq=0x80000000|(chan[i].std.arp.val&(~0x40000000)); } else { chan[i].baseFreq=(chan[i].note+chan[i].std.arp.val)<<8; } } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=chan[i].note<<8; - chan[i].freqChanged=true; - } } if (chan[i].std.wave.had) { chan[i].shape=chan[i].std.wave.val&15; diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index e6e38a12..0fe0265e 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -123,18 +123,9 @@ void DivPlatformTX81Z::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_LINEAR(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_LINEAR(chan[i].note+(signed char)chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_LINEAR(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_LINEAR(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { diff --git a/src/engine/platform/vera.cpp b/src/engine/platform/vera.cpp index e50bcd6e..bf47df5a 100644 --- a/src/engine/platform/vera.cpp +++ b/src/engine/platform/vera.cpp @@ -159,18 +159,9 @@ void DivPlatformVERA::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=calcNoteFreq(0,chan[i].std.arp.val); - } else { - chan[i].baseFreq=calcNoteFreq(0,chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=calcNoteFreq(0,parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=calcNoteFreq(0,chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { rWriteLo(i,3,chan[i].std.duty.val); @@ -209,18 +200,9 @@ void DivPlatformVERA::tick(bool sysTick) { } if (chan[16].std.arp.had) { if (!chan[16].inPorta) { - if (chan[16].std.arp.mode) { - chan[16].baseFreq=calcNoteFreq(16,chan[16].std.arp.val); - } else { - chan[16].baseFreq=calcNoteFreq(16,chan[16].note+chan[16].std.arp.val); - } + chan[16].baseFreq=calcNoteFreq(16,parent->calcArp(chan[16].note,chan[16].std.arp.val)); } chan[16].freqChanged=true; - } else { - if (chan[16].std.arp.mode && chan[16].std.arp.finished) { - chan[16].baseFreq=calcNoteFreq(16,chan[16].note); - chan[16].freqChanged=true; - } } if (chan[16].freqChanged) { double off=65536.0; diff --git a/src/engine/platform/vic20.cpp b/src/engine/platform/vic20.cpp index 5c0bdf46..93c11948 100644 --- a/src/engine/platform/vic20.cpp +++ b/src/engine/platform/vic20.cpp @@ -94,18 +94,9 @@ void DivPlatformVIC20::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.wave.had) { if (chan[i].wave!=chan[i].std.wave.val) { diff --git a/src/engine/platform/vrc6.cpp b/src/engine/platform/vrc6.cpp index 9a7bcef0..2500ce19 100644 --- a/src/engine/platform/vrc6.cpp +++ b/src/engine/platform/vrc6.cpp @@ -153,18 +153,9 @@ void DivPlatformVRC6::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_PERIODIC(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.duty.had) { chan[i].duty=chan[i].std.duty.val; diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index f6aa1c65..0f989ac9 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -321,18 +321,9 @@ void DivPlatformX1_010::tick(bool sysTick) { if ((!chan[i].pcm) || chan[i].furnacePCM) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NoteX1_010(i,chan[i].std.arp.val); - } else { - chan[i].baseFreq=NoteX1_010(i,chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NoteX1_010(i,parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NoteX1_010(i,chan[i].note); - chan[i].freqChanged=true; - } } } if (chan[i].std.wave.had && !chan[i].pcm) { diff --git a/src/engine/platform/ym2203.cpp b/src/engine/platform/ym2203.cpp index afb4f526..178ef05b 100644 --- a/src/engine/platform/ym2203.cpp +++ b/src/engine/platform/ym2203.cpp @@ -231,18 +231,9 @@ void DivPlatformYM2203::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].std.arp.val,11); - } else { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note+(signed char)chan[i].std.arp.val,11); - } + chan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(chan[i].note,chan[i].std.arp.val),11); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note,11); - chan[i].freqChanged=true; - } } if (chan[i].std.pitch.had) { diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index 9e76e6e3..244e4a16 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -386,18 +386,9 @@ void DivPlatformYM2608::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].std.arp.val,11); - } else { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note+(signed char)chan[i].std.arp.val,11); - } + chan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(chan[i].note,chan[i].std.arp.val),11); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note,11); - chan[i].freqChanged=true; - } } if (chan[i].std.panL.had) { @@ -538,18 +529,9 @@ void DivPlatformYM2608::tick(bool sysTick) { if (chan[15].std.arp.had) { if (!chan[15].inPorta) { - if (chan[15].std.arp.mode) { - chan[15].baseFreq=NOTE_ADPCMB(chan[15].std.arp.val); - } else { - chan[15].baseFreq=NOTE_ADPCMB(chan[15].note+(signed char)chan[15].std.arp.val); - } + chan[15].baseFreq=NOTE_ADPCMB(parent->calcArp(chan[15].note,chan[15].std.arp.val)); } chan[15].freqChanged=true; - } else { - if (chan[15].std.arp.mode && chan[15].std.arp.finished) { - chan[15].baseFreq=NOTE_ADPCMB(chan[15].note); - chan[15].freqChanged=true; - } } } if (chan[15].freqChanged) { diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 920d9b14..064b49f2 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -427,18 +427,9 @@ void DivPlatformYM2610::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].std.arp.val,11); - } else { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note+(signed char)chan[i].std.arp.val,11); - } + chan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(chan[i].note,chan[i].std.arp.val),11); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note,11); - chan[i].freqChanged=true; - } } if (chan[i].std.panL.had) { @@ -580,18 +571,9 @@ void DivPlatformYM2610::tick(bool sysTick) { if (chan[13].std.arp.had) { if (!chan[13].inPorta) { - if (chan[13].std.arp.mode) { - chan[13].baseFreq=NOTE_ADPCMB(chan[13].std.arp.val); - } else { - chan[13].baseFreq=NOTE_ADPCMB(chan[13].note+(signed char)chan[13].std.arp.val); - } + chan[13].baseFreq=NOTE_ADPCMB(parent->calcArp(chan[13].note,chan[13].std.arp.val)); } chan[13].freqChanged=true; - } else { - if (chan[13].std.arp.mode && chan[13].std.arp.finished) { - chan[13].baseFreq=NOTE_ADPCMB(chan[13].note); - chan[13].freqChanged=true; - } } } if (chan[13].freqChanged) { diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 039691e7..8d283374 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -410,18 +410,9 @@ void DivPlatformYM2610B::tick(bool sysTick) { if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].std.arp.val,11); - } else { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note+(signed char)chan[i].std.arp.val,11); - } + chan[i].baseFreq=NOTE_FNUM_BLOCK(parent->calcArp(chan[i].note,chan[i].std.arp.val),11); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FNUM_BLOCK(chan[i].note,11); - chan[i].freqChanged=true; - } } if (chan[i].std.panL.had) { @@ -562,18 +553,9 @@ void DivPlatformYM2610B::tick(bool sysTick) { if (chan[15].std.arp.had) { if (!chan[15].inPorta) { - if (chan[15].std.arp.mode) { - chan[15].baseFreq=NOTE_ADPCMB(chan[15].std.arp.val); - } else { - chan[15].baseFreq=NOTE_ADPCMB(chan[15].note+(signed char)chan[15].std.arp.val); - } + chan[15].baseFreq=NOTE_ADPCMB(parent->calcArp(chan[15].note,chan[15].std.arp.val)); } chan[15].freqChanged=true; - } else { - if (chan[15].std.arp.mode && chan[15].std.arp.finished) { - chan[15].baseFreq=NOTE_ADPCMB(chan[15].note); - chan[15].freqChanged=true; - } } } if (chan[15].freqChanged) { diff --git a/src/engine/platform/ymz280b.cpp b/src/engine/platform/ymz280b.cpp index ca1b225d..eb65a7bd 100644 --- a/src/engine/platform/ymz280b.cpp +++ b/src/engine/platform/ymz280b.cpp @@ -95,18 +95,9 @@ void DivPlatformYMZ280B::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.pitch.had) { if (chan[i].std.pitch.mode) { diff --git a/src/engine/platform/zxbeeper.cpp b/src/engine/platform/zxbeeper.cpp index d8390309..5fa3840b 100644 --- a/src/engine/platform/zxbeeper.cpp +++ b/src/engine/platform/zxbeeper.cpp @@ -81,18 +81,9 @@ void DivPlatformZXBeeper::tick(bool sysTick) { } if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.mode) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].std.arp.val); - } else { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note+chan[i].std.arp.val); - } + chan[i].baseFreq=NOTE_FREQUENCY(parent->calcArp(chan[i].note,chan[i].std.arp.val)); } chan[i].freqChanged=true; - } else { - if (chan[i].std.arp.mode && chan[i].std.arp.finished) { - chan[i].baseFreq=NOTE_FREQUENCY(chan[i].note); - chan[i].freqChanged=true; - } } if (chan[i].std.pitch.had) { if (chan[i].std.pitch.mode) { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index b5ccbd7b..c044ae66 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -195,23 +195,25 @@ void FurnaceGUI::decodeKeyMap(std::map& map, String source) { } } -void FurnaceGUI::encodeMMLStr(String& target, int* macro, int macroLen, int macroLoop, int macroRel, bool hex) { +void FurnaceGUI::encodeMMLStr(String& target, int* macro, int macroLen, int macroLoop, int macroRel, bool hex, bool bit30) { target=""; char buf[32]; for (int i=0; imacroMax) macro[macroLen]=macroMax; + if (setBit30) macro[macroLen]|=0x40000000; + setBit30=false; macroLen++; buf=0; } @@ -315,6 +325,8 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe negaBuf=false; if (macro[macroLen]macroMax) macro[macroLen]=macroMax; + if (setBit30) macro[macroLen]|=0x40000000; + setBit30=false; macroLen++; buf=0; } @@ -329,6 +341,8 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe negaBuf=false; if (macro[macroLen]macroMax) macro[macroLen]=macroMax; + if (setBit30) macro[macroLen]|=0x40000000; + setBit30=false; macroLen++; buf=0; } @@ -345,6 +359,8 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe negaBuf=false; if (macro[macroLen]macroMax) macro[macroLen]=macroMax; + if (setBit30) macro[macroLen]|=0x40000000; + setBit30=false; macroLen++; buf=0; } @@ -1758,6 +1774,8 @@ void FurnaceGUI::showError(String what) { displayError=true; } +#define B30(tt) (macroDragBit30?((tt)&0x40000000):0) + #define MACRO_DRAG(t) \ if (macroDragBitMode) { \ if (macroDragLastX!=x || macroDragLastY!=y) { \ @@ -1790,25 +1808,25 @@ void FurnaceGUI::showError(String what) { } \ if (macroDragMouseMoved) { \ if ((int)round(x-macroDragLineInitial.x)==0) { \ - t[x]=macroDragLineInitial.y; \ + t[x]=B30(t[x])|(int)(macroDragLineInitial.y); \ } else { \ if ((int)round(x-macroDragLineInitial.x)<0) { \ for (int i=0; i<=(int)round(macroDragLineInitial.x-x); i++) { \ int index=(int)round(x+i); \ if (index<0) continue; \ - t[index]=y+(macroDragLineInitial.y-y)*((float)i/(float)(macroDragLineInitial.x-x)); \ + t[index]=B30(t[index])|(int)(y+(macroDragLineInitial.y-y)*((float)i/(float)(macroDragLineInitial.x-x))); \ } \ } else { \ for (int i=0; i<=(int)round(x-macroDragLineInitial.x); i++) { \ int index=(int)round(i+macroDragLineInitial.x); \ if (index<0) continue; \ - t[index]=macroDragLineInitial.y+(y-macroDragLineInitial.y)*((float)i/(x-macroDragLineInitial.x)); \ + t[index]=B30(t[index])|(int)(macroDragLineInitial.y+(y-macroDragLineInitial.y)*((float)i/(x-macroDragLineInitial.x))); \ } \ } \ } \ } \ } else { \ - t[x]=y; \ + t[x]=B30(t[x])|(y); \ } \ } @@ -4868,6 +4886,7 @@ FurnaceGUI::FurnaceGUI(): macroDragInitialValueSet(false), macroDragInitialValue(false), macroDragChar(false), + macroDragBit30(false), macroDragLineMode(false), macroDragMouseMoved(false), macroDragLineInitial(0,0), diff --git a/src/gui/gui.h b/src/gui/gui.h index f7b13b07..a7f906ae 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -869,10 +869,10 @@ struct FurnaceGUIMacroDesc { const char* modeName; ImVec4 color; unsigned int bitOffset; - bool isBitfield, blockMode; + bool isBitfield, blockMode, bit30; String (*hoverFunc)(int,float); - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, const char* mName=NULL, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, const char* mName=NULL, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0, bool bit30Special=false): macro(m), height(macroHeight), displayName(name), @@ -882,6 +882,7 @@ struct FurnaceGUIMacroDesc { bitOffset(bitOff), isBitfield(bitfield), blockMode(block), + bit30(bit30Special), hoverFunc(hf) { // MSVC -> hell this->min=macroMin; @@ -1395,6 +1396,7 @@ class FurnaceGUI { bool macroDragInitialValueSet; bool macroDragInitialValue; bool macroDragChar; + bool macroDragBit30; bool macroDragLineMode; bool macroDragMouseMoved; ImVec2 macroDragLineInitial; @@ -1686,8 +1688,8 @@ class FurnaceGUI { void applyUISettings(bool updateFonts=true); void initSystemPresets(); - void encodeMMLStr(String& target, int* macro, int macroLen, int macroLoop, int macroRel, bool hex=false); - void decodeMMLStr(String& source, int* macro, unsigned char& macroLen, unsigned char& macroLoop, int macroMin, int macroMax, unsigned char& macroRel); + void encodeMMLStr(String& target, int* macro, int macroLen, int macroLoop, int macroRel, bool hex=false, bool bit30=false); + void decodeMMLStr(String& source, int* macro, unsigned char& macroLen, unsigned char& macroLoop, int macroMin, int macroMax, unsigned char& macroRel, bool bit30=false); void decodeMMLStrW(String& source, int* macro, int& macroLen, int macroMax, bool hex=false); String encodeKeyMap(std::map& map); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index f7e80c53..ea071715 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -331,6 +331,11 @@ String macroHoverLoop(int id, float val) { return ""; } +String macroHoverBit30(int id, float val) { + if (val>0) return "Fixed"; + return "Relative"; +} + String macroHoverES5506FilterMode(int id, float val) { String mode="???"; switch (((int)val)&3) { @@ -1196,6 +1201,7 @@ void FurnaceGUI::drawMacros(std::vector& macros) { float asFloat[256]; int asInt[256]; float loopIndicator[256]; + float bit30Indicator[256]; bool doHighlight[256]; int index=0; @@ -1281,12 +1287,14 @@ void FurnaceGUI::drawMacros(std::vector& macros) { // macro area ImGui::TableNextColumn(); for (int j=0; j<256; j++) { + bit30Indicator[j]=0; if (j+macroDragScroll>=i.macro->len) { asFloat[j]=0; asInt[j]=0; } else { - asFloat[j]=i.macro->val[j+macroDragScroll]; - asInt[j]=i.macro->val[j+macroDragScroll]+i.bitOffset; + asFloat[j]=i.macro->val[j+macroDragScroll]&(i.bit30?(~0x40000000):0xffffffff); + asInt[j]=(i.macro->val[j+macroDragScroll]&(i.bit30?(~0x40000000):0xffffffff))+i.bitOffset; + if (i.bit30) bit30Indicator[j]=(i.macro->val[j+macroDragScroll]&0x40000000)?1:0; } if (j+macroDragScroll>=i.macro->len || (j+macroDragScroll>i.macro->rel && i.macro->looprel)) { loopIndicator[j]=0; @@ -1355,6 +1363,7 @@ void FurnaceGUI::drawMacros(std::vector& macros) { macroDragInitialValue=false; macroDragLen=totalFit; macroDragActive=true; + macroDragBit30=i.bit30; macroDragTarget=i.macro->val; macroDragChar=false; macroDragLineMode=(i.isBitfield)?false:ImGui::IsItemClicked(ImGuiMouseButton_Right); @@ -1422,6 +1431,12 @@ void FurnaceGUI::drawMacros(std::vector& macros) { } } + // bit 30 area + // TODO: ability to set it + if (i.bit30) { + PlotCustom("##IMacroBit30",bit30Indicator,totalFit,macroDragScroll,NULL,0,1,ImVec2(availableWidth,12.0f*dpiScale),sizeof(float),i.color,i.macro->len-macroDragScroll,¯oHoverBit30); + } + // loop area PlotCustom("##IMacroLoop",loopIndicator,totalFit,macroDragScroll,NULL,0,2,ImVec2(availableWidth,12.0f*dpiScale),sizeof(float),i.color,i.macro->len-macroDragScroll,¯oHoverLoop); if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { @@ -4178,7 +4193,7 @@ void FurnaceGUI::drawInsEdit() { if (volMax>0) { macroList.push_back(FurnaceGUIMacroDesc(volumeLabel,&ins->std.volMacro,volMin,volMax,160,uiColors[GUI_COLOR_MACRO_VOLUME])); } - macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,macroAbsoluteMode,ins->std.arpMacro.mode?(¯oHoverNote):NULL)); + macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,NULL,NULL,false,NULL,0,true)); if (dutyMax>0) { if (ins->type==DIV_INS_MIKEY) { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,mikeyFeedbackBits)); From 226f43fea38e50296e6e897f8ede985d39be45db Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 22 Aug 2022 19:09:08 -0500 Subject: [PATCH 456/580] several important bug fixes to advanced arp macro --- src/engine/engine.cpp | 6 +++++- src/engine/fileOps.cpp | 6 +++--- src/engine/instrument.cpp | 4 ++-- src/engine/platform/gb.cpp | 2 +- src/engine/platform/tia.cpp | 4 +++- src/gui/gui.cpp | 28 +++++++++++++++++----------- src/gui/insEdit.cpp | 20 +++++++++++++++----- 7 files changed, 46 insertions(+), 24 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 4ee8e48b..153a8db9 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1713,7 +1713,11 @@ int DivEngine::calcFreq(int base, int pitch, bool period, int octave, int pitch2 } int DivEngine::calcArp(int note, int arp, int offset) { - if (arp&0x40000000) return (arp&(~0x40000000))+offset; + if (arp<0) { + if (!(arp&0x40000000)) return (arp|0x40000000)+offset; + } else { + if (arp&0x40000000) return (arp&(~0x40000000))+offset; + } return note+arp; } diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index c2acd45d..506dfc6f 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -510,9 +510,9 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { } else { ins->std.arpMacro.mode=0; for (int j=0; jstd.arpMacro.len; j++) { - ins->std.arpMacro.val[i]|=0x40000000; + ins->std.arpMacro.val[j]^=0x40000000; } - if (ins->std.arpMacro.loopstd.arpMacro.len && ins->std.arpMacro.len<255) { + if (ins->std.arpMacro.loop>=ins->std.arpMacro.len && ins->std.arpMacro.len<255) { ins->std.arpMacro.val[ins->std.arpMacro.len++]=0; } } @@ -2928,7 +2928,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { logV("unhandled pitch!"); } else { if (fm.val[j]>0x80) { - ins->std.arpMacro.val[ins->std.arpMacro.len]=(fm.val[j]-0x80+24)|0x40000000; + ins->std.arpMacro.val[ins->std.arpMacro.len]=(fm.val[j]-0x80+24)^0x40000000; } else { ins->std.arpMacro.val[ins->std.arpMacro.len]=fm.val[j]; } diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index bd28834c..430e361a 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -1347,9 +1347,9 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { if (std.arpMacro.mode) { std.arpMacro.mode=0; for (int i=0; istd.arpMacro.loop && std.arpMacro.len<255) { + if ((std.arpMacro.loop>=std.arpMacro.len || std.arpMacro.rel>std.arpMacro.loop) && std.arpMacro.len<255) { std.arpMacro.val[std.arpMacro.len++]=0; } } diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index afed615d..fea89c71 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -169,7 +169,7 @@ void DivPlatformGB::tick(bool sysTick) { if (chan[i].baseFreq>255) chan[i].baseFreq=255; if (chan[i].baseFreq<0) chan[i].baseFreq=0; } else { - chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val)); + chan[i].baseFreq=NOTE_PERIODIC(parent->calcArp(chan[i].note,chan[i].std.arp.val,24)); } chan[i].freqChanged=true; } diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index fe7273a1..d55200f9 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -90,7 +90,9 @@ void DivPlatformTIA::tick(bool sysTick) { // TODO: the way arps work on TIA is really weird if (chan[i].std.arp.had) { if (!chan[i].inPorta) { - if (chan[i].std.arp.val&0x40000000) { + if (chan[i].std.arp.val<0 && (!(chan[i].std.arp.val&0x40000000))) { + chan[i].baseFreq=0x80000000|(chan[i].std.arp.val|0x40000000); + } else if (chan[i].std.arp.val&0x40000000) { chan[i].baseFreq=0x80000000|(chan[i].std.arp.val&(~0x40000000)); } else { chan[i].baseFreq=(chan[i].note+chan[i].std.arp.val)<<8; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index c044ae66..8ea22a14 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -201,8 +201,13 @@ void FurnaceGUI::encodeMMLStr(String& target, int* macro, int macroLen, int macr for (int i=0; imacroMax) macro[macroLen]=macroMax; - if (setBit30) macro[macroLen]|=0x40000000; + if (setBit30) macro[macroLen]^=0x40000000; setBit30=false; macroLen++; buf=0; @@ -325,7 +330,7 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe negaBuf=false; if (macro[macroLen]macroMax) macro[macroLen]=macroMax; - if (setBit30) macro[macroLen]|=0x40000000; + if (setBit30) macro[macroLen]^=0x40000000; setBit30=false; macroLen++; buf=0; @@ -341,7 +346,7 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe negaBuf=false; if (macro[macroLen]macroMax) macro[macroLen]=macroMax; - if (setBit30) macro[macroLen]|=0x40000000; + if (setBit30) macro[macroLen]^=0x40000000; setBit30=false; macroLen++; buf=0; @@ -359,7 +364,7 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe negaBuf=false; if (macro[macroLen]macroMax) macro[macroLen]=macroMax; - if (setBit30) macro[macroLen]|=0x40000000; + if (setBit30) macro[macroLen]^=0x40000000; setBit30=false; macroLen++; buf=0; @@ -1774,7 +1779,8 @@ void FurnaceGUI::showError(String what) { displayError=true; } -#define B30(tt) (macroDragBit30?((tt)&0x40000000):0) +// what monster did I just create here? +#define B30(tt) (macroDragBit30?((((tt)&0xc0000000)==0x40000000 || ((tt)&0xc0000000)==0x80000000)?0x40000000:0):0) #define MACRO_DRAG(t) \ if (macroDragBitMode) { \ @@ -1808,25 +1814,25 @@ void FurnaceGUI::showError(String what) { } \ if (macroDragMouseMoved) { \ if ((int)round(x-macroDragLineInitial.x)==0) { \ - t[x]=B30(t[x])|(int)(macroDragLineInitial.y); \ + t[x]=B30(t[x])^(int)(macroDragLineInitial.y); \ } else { \ if ((int)round(x-macroDragLineInitial.x)<0) { \ for (int i=0; i<=(int)round(macroDragLineInitial.x-x); i++) { \ int index=(int)round(x+i); \ if (index<0) continue; \ - t[index]=B30(t[index])|(int)(y+(macroDragLineInitial.y-y)*((float)i/(float)(macroDragLineInitial.x-x))); \ + t[index]=B30(t[index])^(int)(y+(macroDragLineInitial.y-y)*((float)i/(float)(macroDragLineInitial.x-x))); \ } \ } else { \ for (int i=0; i<=(int)round(x-macroDragLineInitial.x); i++) { \ int index=(int)round(i+macroDragLineInitial.x); \ if (index<0) continue; \ - t[index]=B30(t[index])|(int)(macroDragLineInitial.y+(y-macroDragLineInitial.y)*((float)i/(x-macroDragLineInitial.x))); \ + t[index]=B30(t[index])^(int)(macroDragLineInitial.y+(y-macroDragLineInitial.y)*((float)i/(x-macroDragLineInitial.x))); \ } \ } \ } \ } \ } else { \ - t[x]=B30(t[x])|(y); \ + t[x]=B30(t[x])^(y); \ } \ } diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index ea071715..2a2c8ecd 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1197,6 +1197,16 @@ String genericGuide(float value) { return fmt::sprintf("%d",(int)value); } +inline int deBit30(const int val) { + if ((val&0xc0000000)==0x40000000 || (val&0xc0000000)==0x80000000) return val^0x40000000; + return val; +} + +inline bool enBit30(const int val) { + if ((val&0xc0000000)==0x40000000 || (val&0xc0000000)==0x80000000) return true; + return false; +} + void FurnaceGUI::drawMacros(std::vector& macros) { float asFloat[256]; int asInt[256]; @@ -1292,9 +1302,9 @@ void FurnaceGUI::drawMacros(std::vector& macros) { asFloat[j]=0; asInt[j]=0; } else { - asFloat[j]=i.macro->val[j+macroDragScroll]&(i.bit30?(~0x40000000):0xffffffff); - asInt[j]=(i.macro->val[j+macroDragScroll]&(i.bit30?(~0x40000000):0xffffffff))+i.bitOffset; - if (i.bit30) bit30Indicator[j]=(i.macro->val[j+macroDragScroll]&0x40000000)?1:0; + asFloat[j]=deBit30(i.macro->val[j+macroDragScroll]); + asInt[j]=deBit30(i.macro->val[j+macroDragScroll])+i.bitOffset; + if (i.bit30) bit30Indicator[j]=enBit30(i.macro->val[j+macroDragScroll]); } if (j+macroDragScroll>=i.macro->len || (j+macroDragScroll>i.macro->rel && i.macro->looprel)) { loopIndicator[j]=0; @@ -1461,10 +1471,10 @@ void FurnaceGUI::drawMacros(std::vector& macros) { ImGui::SetNextItemWidth(availableWidth); String& mmlStr=mmlString[index]; if (ImGui::InputText("##IMacroMML",&mmlStr)) { - decodeMMLStr(mmlStr,i.macro->val,i.macro->len,i.macro->loop,i.min,(i.isBitfield)?((1<<(i.isBitfield?i.max:0))-1):i.max,i.macro->rel); + decodeMMLStr(mmlStr,i.macro->val,i.macro->len,i.macro->loop,i.min,(i.isBitfield)?((1<<(i.isBitfield?i.max:0))-1):i.max,i.macro->rel,i.bit30); } if (!ImGui::IsItemActive()) { - encodeMMLStr(mmlStr,i.macro->val,i.macro->len,i.macro->loop,i.macro->rel); + encodeMMLStr(mmlStr,i.macro->val,i.macro->len,i.macro->loop,i.macro->rel,false,i.bit30); } } ImGui::PopStyleVar(); From e158591ccbec487d1c9240dee4159cefb4fe81c8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 23 Aug 2022 02:31:39 -0500 Subject: [PATCH 457/580] even more fixes --- src/engine/fileOps.cpp | 6 ++++-- src/engine/instrument.cpp | 2 +- src/engine/platform/sms.cpp | 8 ++------ src/engine/platform/tia.cpp | 2 +- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 506dfc6f..fe220aae 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -145,7 +145,9 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.loopModality=0; ds.properNoiseLayout=false; ds.waveDutyIsVol=false; - ds.resetMacroOnPorta=true; + // TODO: WHAT?! geodude.dmf fails when this is true + // but isn't that how Defle behaves??? + ds.resetMacroOnPorta=false; ds.legacyVolumeSlides=true; ds.compatibleArpeggio=true; ds.noteOffResetsSlides=true; @@ -512,7 +514,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { for (int j=0; jstd.arpMacro.len; j++) { ins->std.arpMacro.val[j]^=0x40000000; } - if (ins->std.arpMacro.loop>=ins->std.arpMacro.len && ins->std.arpMacro.len<255) { + if (ins->std.arpMacro.loop==255 && ins->std.arpMacro.len<255) { ins->std.arpMacro.val[ins->std.arpMacro.len++]=0; } } diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 430e361a..19cb1ba5 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -1349,7 +1349,7 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { for (int i=0; i=std.arpMacro.len || std.arpMacro.rel>std.arpMacro.loop) && std.arpMacro.len<255) { + if ((std.arpMacro.loop>=std.arpMacro.len || (std.arpMacro.rel>std.arpMacro.loop && std.arpMacro.relcalcArp(chan[3].note,chan[3].std.arp.val)%12; + } else { // pardon? value=chan[3].note%12; } if (value<3) { diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index d55200f9..82d03270 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -92,7 +92,7 @@ void DivPlatformTIA::tick(bool sysTick) { if (!chan[i].inPorta) { if (chan[i].std.arp.val<0 && (!(chan[i].std.arp.val&0x40000000))) { chan[i].baseFreq=0x80000000|(chan[i].std.arp.val|0x40000000); - } else if (chan[i].std.arp.val&0x40000000) { + } else if (chan[i].std.arp.val>=0 && chan[i].std.arp.val&0x40000000) { chan[i].baseFreq=0x80000000|(chan[i].std.arp.val&(~0x40000000)); } else { chan[i].baseFreq=(chan[i].note+chan[i].std.arp.val)<<8; From 96b3ccab8ae245c6d0d92c9b7c2c64dbdd978275 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 23 Aug 2022 03:57:21 -0500 Subject: [PATCH 458/580] I see UI!!!! --- src/gui/gui.cpp | 27 ++++++++++++++++++++++++++- src/gui/gui.h | 1 + src/gui/insEdit.cpp | 18 +++++++++++++++++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 8ea22a14..0d53e97d 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1783,7 +1783,31 @@ void FurnaceGUI::showError(String what) { #define B30(tt) (macroDragBit30?((((tt)&0xc0000000)==0x40000000 || ((tt)&0xc0000000)==0x80000000)?0x40000000:0):0) #define MACRO_DRAG(t) \ - if (macroDragBitMode) { \ + if (macroDragSettingBit30) { \ + if (macroDragLastX!=x || macroDragLastY!=y) { \ + macroDragLastX=x; \ + macroDragLastY=y; \ + if (macroDragInitialValueSet) { \ + if (!macroDragInitialValue) { \ + if (t[x]&0x80000000) { \ + t[x]&=~0x40000000; \ + } else { \ + t[x]|=0x40000000; \ + } \ + } else { \ + if (t[x]&0x80000000) { \ + t[x]|=0x40000000; \ + } else { \ + t[x]&=~0x40000000; \ + } \ + } \ + } else { \ + macroDragInitialValue=(((t[x])&0xc0000000)==0x40000000 || ((t[x])&0xc0000000)==0x80000000); \ + macroDragInitialValueSet=true; \ + t[x]^=0x40000000; \ + } \ + } \ + } else if (macroDragBitMode) { \ if (macroDragLastX!=x || macroDragLastY!=y) { \ macroDragLastX=x; \ macroDragLastY=y; \ @@ -4893,6 +4917,7 @@ FurnaceGUI::FurnaceGUI(): macroDragInitialValue(false), macroDragChar(false), macroDragBit30(false), + macroDragSettingBit30(false), macroDragLineMode(false), macroDragMouseMoved(false), macroDragLineInitial(0,0), diff --git a/src/gui/gui.h b/src/gui/gui.h index a7f906ae..80aa087f 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1397,6 +1397,7 @@ class FurnaceGUI { bool macroDragInitialValue; bool macroDragChar; bool macroDragBit30; + bool macroDragSettingBit30; bool macroDragLineMode; bool macroDragMouseMoved; ImVec2 macroDragLineInitial; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 2a2c8ecd..c89652a3 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1374,6 +1374,7 @@ void FurnaceGUI::drawMacros(std::vector& macros) { macroDragLen=totalFit; macroDragActive=true; macroDragBit30=i.bit30; + macroDragSettingBit30=false; macroDragTarget=i.macro->val; macroDragChar=false; macroDragLineMode=(i.isBitfield)?false:ImGui::IsItemClicked(ImGuiMouseButton_Right); @@ -1442,9 +1443,24 @@ void FurnaceGUI::drawMacros(std::vector& macros) { } // bit 30 area - // TODO: ability to set it if (i.bit30) { PlotCustom("##IMacroBit30",bit30Indicator,totalFit,macroDragScroll,NULL,0,1,ImVec2(availableWidth,12.0f*dpiScale),sizeof(float),i.color,i.macro->len-macroDragScroll,¯oHoverBit30); + if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { + macroDragStart=ImGui::GetItemRectMin(); + macroDragAreaSize=ImVec2(availableWidth,12.0f*dpiScale); + macroDragInitialValueSet=false; + macroDragInitialValue=false; + macroDragLen=totalFit; + macroDragActive=true; + macroDragBit30=i.bit30; + macroDragSettingBit30=true; + macroDragTarget=i.macro->val; + macroDragChar=false; + macroDragLineMode=false; + macroDragLineInitial=ImVec2(0,0); + lastMacroDesc=i; + processDrags(ImGui::GetMousePos().x,ImGui::GetMousePos().y); + } } // loop area From 9c29b7e7cab951f25a76d9b8921872b353fb53db Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 25 Aug 2022 00:24:49 +0900 Subject: [PATCH 459/580] Fix RF5C68 panning macro --- src/engine/platform/rf5c68.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/rf5c68.cpp b/src/engine/platform/rf5c68.cpp index 3aa922e4..c032284f 100644 --- a/src/engine/platform/rf5c68.cpp +++ b/src/engine/platform/rf5c68.cpp @@ -107,7 +107,7 @@ void DivPlatformRF5C68::tick(bool sysTick) { chan[i].panning|=(chan[i].std.panR.val&15)<<4; } if (chan[i].std.panL.had || chan[i].std.panR.had) { - chWrite(i,0x05,isMuted[i]?0:chan[i].panning); + chWrite(i,1,isMuted[i]?0:chan[i].panning); } if (chan[i].setPos) { // force keyon From fc5b26c49a1d11ffc959abce7becc1ec67260017 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 25 Aug 2022 01:34:21 -0500 Subject: [PATCH 460/580] SoundUnit: fix 4xxx not working --- src/engine/platform/su.cpp | 2 +- src/engine/sysDef.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index a28ed304..13650345 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -357,7 +357,7 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { writeControlUpper(c.chan); break; case DIV_CMD_C64_FINE_CUTOFF: - chan[c.chan].baseCutoff=c.value; + chan[c.chan].baseCutoff=c.value*4; if (!chan[c.chan].std.ex1.has) { chan[c.chan].cutoff=chan[c.chan].baseCutoff; chWrite(c.chan,0x06,chan[c.chan].cutoff&0xff); diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 5ac6bf34..0487873b 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1447,7 +1447,7 @@ void DivEngine::registerSystems() { {0x21, {DIV_CMD_SU_SWEEP_ENABLE, "21xx: Toggle volume sweep (bit 0-4: speed; bit 5: direciton is up; bit 6: loop; bit 7: alternate)", constVal<1>, effectVal}}, {0x22, {DIV_CMD_SU_SWEEP_ENABLE, "22xx: Toggle cutoff sweep (bit 0-6: speed; bit 7: direction is up)", constVal<2>, effectVal}}, }; - const EffectHandler suCutoffHandler(DIV_CMD_C64_FINE_DUTY, "4xxx: Set cutoff (0 to FFF)", effectValLong<12>); + const EffectHandler suCutoffHandler(DIV_CMD_C64_FINE_CUTOFF, "4xxx: Set cutoff (0 to FFF)", effectValLong<12>); for (int i=0; i<16; i++) { suEffectHandlerMap.emplace(0x40+i, suCutoffHandler); } From bc0f696eb3743f233801bbd50a27d753fdb20fee Mon Sep 17 00:00:00 2001 From: freq-mod <32672779+freq-mod@users.noreply.github.com> Date: Thu, 25 Aug 2022 18:55:32 +0200 Subject: [PATCH 461/580] Update soundunit.md fix 12xx description --- papers/doc/7-systems/soundunit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md index 89e34655..8c3863b9 100644 --- a/papers/doc/7-systems/soundunit.md +++ b/papers/doc/7-systems/soundunit.md @@ -12,7 +12,7 @@ This is a fantasy sound chip, used in the specs2 fantasy computer designed by ti - 5: periodic noise - 6: XOR sine - 7: XOR triangle -- `12xx`: set waveform (0 to 7F) +- `12xx`: set pulse width (0 to 7F) - `13xx`: set resonance of filter (0 to FF) - despite what the internal effects list says (0 to F), you can use a resonance value from 0 to FF (255) - `14xx`: set filter mode and ringmod From 0b7592e031b0109d6906ded580df10ce7768d0fb Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 25 Aug 2022 16:06:10 -0500 Subject: [PATCH 462/580] new default loop modality --- src/engine/song.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/song.h b/src/engine/song.h index 83509efb..ac49832e 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -569,7 +569,7 @@ struct DivSong { limitSlides(false), linearPitch(2), pitchSlideSpeed(4), - loopModality(0), + loopModality(2), delayBehavior(2), properNoiseLayout(true), waveDutyIsVol(false), From a7d0949eacc2e7fc71e7bfd7657c15d32f47917f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 25 Aug 2022 18:13:46 -0500 Subject: [PATCH 463/580] GUI: different pattern manager layout --- src/gui/patManager.cpp | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/gui/patManager.cpp b/src/gui/patManager.cpp index d597bd9c..22d5b645 100644 --- a/src/gui/patManager.cpp +++ b/src/gui/patManager.cpp @@ -47,21 +47,24 @@ void FurnaceGUI::drawPatManager() { }); } - for (int i=0; igetTotalChannelCount(); i++) { - memset(isUsed,0,256); - memset(isNull,0,256*sizeof(bool)); - for (int j=0; jcurSubSong->ordersLen; j++) { - isUsed[e->curSubSong->orders.ord[i][j]]++; - } - for (int j=0; j<256; j++) { - isNull[j]=(e->curSubSong->pat[i].data[j]==NULL); - } - ImGui::Text("%d. %s",i+1,e->getChannelName(i)); - ImGui::PushID(1000+i); + if (ImGui::BeginTable("PatManTable",257,ImGuiTableFlags_ScrollX|ImGuiTableFlags_SizingFixedFit)) { ImGui::PushFont(patFont); - if (ImGui::BeginTable("PatManTable",32)) { + + for (int i=0; igetTotalChannelCount(); i++) { + ImGui::TableNextRow(); + memset(isUsed,0,256); + memset(isNull,0,256*sizeof(bool)); + for (int j=0; jcurSubSong->ordersLen; j++) { + isUsed[e->curSubSong->orders.ord[i][j]]++; + } + for (int j=0; j<256; j++) { + isNull[j]=(e->curSubSong->pat[i].data[j]==NULL); + } + ImGui::TableNextColumn(); + ImGui::Text("%s",e->getChannelShortName(i)); + + ImGui::PushID(1000+i); for (int k=0; k<256; k++) { - if ((k&31)==0) ImGui::TableNextRow(); ImGui::TableNextColumn(); snprintf(id,1023,"%.2X",k); @@ -98,10 +101,11 @@ void FurnaceGUI::drawPatManager() { } ImGui::PopStyleColor(); } - ImGui::EndTable(); + ImGui::PopID(); } ImGui::PopFont(); - ImGui::PopID(); + + ImGui::EndTable(); } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_PAT_MANAGER; From 3597e57bb2aeaae27ff362a763e98acd874dee1a Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 26 Aug 2022 08:49:08 +0900 Subject: [PATCH 464/580] Add Traditional Chinese and Korean support --- src/gui/gui.h | 8 +++++-- src/gui/settings.cpp | 52 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 80aa087f..92218276 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1085,7 +1085,9 @@ class FurnaceGUI { int roundedButtons; int roundedMenus; int loadJapanese; - int loadChinese; + int loadChineseSimplified; + int loadChineseTraditional; + int loadKorean; int fmLayout; int sampleLayout; int waveLayout; @@ -1202,7 +1204,9 @@ class FurnaceGUI { roundedButtons(1), roundedMenus(0), loadJapanese(0), - loadChinese(0), + loadChineseSimplified(0), + loadChineseTraditional(0), + loadKorean(0), fmLayout(0), sampleLayout(0), waveLayout(0), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 03c32e65..0e1ed389 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1072,9 +1072,9 @@ void FurnaceGUI::drawSettings() { ); } - bool loadChineseB=settings.loadChinese; - if (ImGui::Checkbox("Display Chinese (Simplified) characters",&loadChineseB)) { - settings.loadChinese=loadChineseB; + bool loadChineseSimplifiedB=settings.loadChineseSimplified; + if (ImGui::Checkbox("Display Chinese (Simplified) characters",&loadChineseSimplifiedB)) { + settings.loadChineseSimplified=loadChineseSimplifiedB; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip( @@ -1085,6 +1085,32 @@ void FurnaceGUI::drawSettings() { ); } + bool loadChineseTraditionalB=settings.loadChineseTraditional; + if (ImGui::Checkbox("Display Chinese (Traditional) characters",&loadChineseTraditionalB)) { + settings.loadChineseTraditional=loadChineseTraditionalB; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip( + "Only toggle this option if you have enough graphics memory.\n" + "This is a temporary solution until dynamic font atlas is implemented in Dear ImGui.\n\n" + "č«‹åœØē¢ŗäæä½ ęœ‰č¶³å¤ ēš„é”Æå­˜åŽå†å•Ÿå‹•ę­¤čح定\n" + "這ę˜Æäø€å€‹åœØImGuiåƦē¾å‹•ę…‹å­—é«”åŠ č¼‰ä¹‹å‰ēš„č‡Øę™‚č§£ę±ŗę–¹ę”ˆ" + ); + } + + bool loadKoreanB=settings.loadKorean; + if (ImGui::Checkbox("Display Korean characters",&loadKoreanB)) { + settings.loadKorean=loadKoreanB; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip( + "Only toggle this option if you have enough graphics memory.\n" + "This is a temporary solution until dynamic font atlas is implemented in Dear ImGui.\n\n" + "ź·øėž˜ķ”½ ė©”ėŖØė¦¬ź°€ ģ¶©ė¶„ķ•œ ź²½ģš°ģ—ė§Œ ģ“ ģ˜µģ…˜ģ„ ģ„ ķƒķ•˜ģ‹­ģ‹œģ˜¤.\n" + "ģ“ ģ˜µģ…˜ģ€ Dear ImGuiģ— ė™ģ  źø€ź¼“ ģ•„ķ‹€ė¼ģŠ¤ź°€ źµ¬ķ˜„ė  ė•Œź¹Œģ§€ ģž„ģ‹œ ģ†”ė£Øģ…˜ģž…ė‹ˆė‹¤." + ); + } + ImGui::Separator(); ImGui::Text("Pattern view labels:"); @@ -2170,7 +2196,9 @@ void FurnaceGUI::syncSettings() { settings.roundedButtons=e->getConfInt("roundedButtons",1); settings.roundedMenus=e->getConfInt("roundedMenus",0); settings.loadJapanese=e->getConfInt("loadJapanese",0); - settings.loadChinese=e->getConfInt("loadChinese",0); + settings.loadChineseSimplified=e->getConfInt("loadChineseSimplified",0); + settings.loadChineseTraditional=e->getConfInt("loadChineseTraditional",0); + settings.loadKorean=e->getConfInt("loadKorean",0); settings.fmLayout=e->getConfInt("fmLayout",0); settings.sampleLayout=e->getConfInt("sampleLayout",0); settings.waveLayout=e->getConfInt("waveLayout",0); @@ -2274,7 +2302,9 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.roundedButtons,0,1); clampSetting(settings.roundedMenus,0,1); clampSetting(settings.loadJapanese,0,1); - clampSetting(settings.loadChinese,0,1); + clampSetting(settings.loadChineseSimplified,0,1); + clampSetting(settings.loadChineseTraditional,0,1); + clampSetting(settings.loadKorean,0,1); clampSetting(settings.fmLayout,0,6); clampSetting(settings.susPosition,0,1); clampSetting(settings.effectCursorDir,0,2); @@ -2413,7 +2443,9 @@ void FurnaceGUI::commitSettings() { e->setConf("roundedButtons",settings.roundedButtons); e->setConf("roundedMenus",settings.roundedMenus); e->setConf("loadJapanese",settings.loadJapanese); - e->setConf("loadChinese",settings.loadChinese); + e->setConf("loadChineseSimplified",settings.loadChineseSimplified); + e->setConf("loadChineseTraditional",settings.loadChineseTraditional); + e->setConf("loadKorean",settings.loadKorean); e->setConf("fmLayout",settings.fmLayout); e->setConf("sampleLayout",settings.sampleLayout); e->setConf("waveLayout",settings.waveLayout); @@ -3061,9 +3093,15 @@ void FurnaceGUI::applyUISettings(bool updateFonts) { if (settings.loadJapanese) { range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesJapanese()); } - if (settings.loadChinese) { + if (settings.loadChineseSimplified) { range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseSimplifiedCommon()); } + if (settings.loadChineseTraditional) { + range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseFull()); + } + if (settings.loadKorean) { + range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesKorean()); + } // I'm terribly sorry range.UsedChars[0x80>>5]=0; From 24c5ba89e229bd9b42a29f021bd0c287b6e34149 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 25 Aug 2022 22:09:32 -0500 Subject: [PATCH 465/580] GUI: don't rename settings --- src/gui/gui.h | 4 ++-- src/gui/settings.cpp | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index 92218276..4654851d 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1085,7 +1085,7 @@ class FurnaceGUI { int roundedButtons; int roundedMenus; int loadJapanese; - int loadChineseSimplified; + int loadChinese; int loadChineseTraditional; int loadKorean; int fmLayout; @@ -1204,7 +1204,7 @@ class FurnaceGUI { roundedButtons(1), roundedMenus(0), loadJapanese(0), - loadChineseSimplified(0), + loadChinese(0), loadChineseTraditional(0), loadKorean(0), fmLayout(0), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 0e1ed389..1e9a1445 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1072,9 +1072,9 @@ void FurnaceGUI::drawSettings() { ); } - bool loadChineseSimplifiedB=settings.loadChineseSimplified; - if (ImGui::Checkbox("Display Chinese (Simplified) characters",&loadChineseSimplifiedB)) { - settings.loadChineseSimplified=loadChineseSimplifiedB; + bool loadChineseB=settings.loadChinese; + if (ImGui::Checkbox("Display Chinese (Simplified) characters",&loadChineseB)) { + settings.loadChinese=loadChineseB; } if (ImGui::IsItemHovered()) { ImGui::SetTooltip( @@ -2196,7 +2196,7 @@ void FurnaceGUI::syncSettings() { settings.roundedButtons=e->getConfInt("roundedButtons",1); settings.roundedMenus=e->getConfInt("roundedMenus",0); settings.loadJapanese=e->getConfInt("loadJapanese",0); - settings.loadChineseSimplified=e->getConfInt("loadChineseSimplified",0); + settings.loadChinese=e->getConfInt("loadChinese",0); settings.loadChineseTraditional=e->getConfInt("loadChineseTraditional",0); settings.loadKorean=e->getConfInt("loadKorean",0); settings.fmLayout=e->getConfInt("fmLayout",0); @@ -2302,7 +2302,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.roundedButtons,0,1); clampSetting(settings.roundedMenus,0,1); clampSetting(settings.loadJapanese,0,1); - clampSetting(settings.loadChineseSimplified,0,1); + clampSetting(settings.loadChinese,0,1); clampSetting(settings.loadChineseTraditional,0,1); clampSetting(settings.loadKorean,0,1); clampSetting(settings.fmLayout,0,6); @@ -2443,7 +2443,7 @@ void FurnaceGUI::commitSettings() { e->setConf("roundedButtons",settings.roundedButtons); e->setConf("roundedMenus",settings.roundedMenus); e->setConf("loadJapanese",settings.loadJapanese); - e->setConf("loadChineseSimplified",settings.loadChineseSimplified); + e->setConf("loadChinese",settings.loadChinese); e->setConf("loadChineseTraditional",settings.loadChineseTraditional); e->setConf("loadKorean",settings.loadKorean); e->setConf("fmLayout",settings.fmLayout); @@ -3093,7 +3093,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) { if (settings.loadJapanese) { range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesJapanese()); } - if (settings.loadChineseSimplified) { + if (settings.loadChinese) { range.AddRanges(ImGui::GetIO().Fonts->GetGlyphRangesChineseSimplifiedCommon()); } if (settings.loadChineseTraditional) { From 46d5a8759c64c51083386af0c03300c0fd666798 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 25 Aug 2022 23:39:55 -0500 Subject: [PATCH 466/580] GUI: fix some interpolate issues --- src/gui/editing.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index 1ca3ff69..391a39f6 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -616,9 +616,9 @@ void FurnaceGUI::doInterpolate() { } } else { for (int j=selStart.y; j<=selEnd.y; j++) { - if (pat->data[j][0]!=0 && pat->data[j][1]!=0) { + if (pat->data[j][0]!=0 || pat->data[j][1]!=0) { if (pat->data[j][0]!=100 && pat->data[j][0]!=101 && pat->data[j][0]!=102) { - points.emplace(points.end(),j,pat->data[j][0]+pat->data[j][1]*12); + points.emplace(points.end(),j,pat->data[j][0]+(signed char)pat->data[j][1]*12); } } } From c58f1daeb804d842fc2286b975db1cc9f62bd983 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 26 Aug 2022 03:00:37 -0500 Subject: [PATCH 467/580] QSound: disable key on log we already debugged the issue --- src/engine/platform/qsound.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/qsound.cpp b/src/engine/platform/qsound.cpp index 1339d70a..9120464e 100644 --- a/src/engine/platform/qsound.cpp +++ b/src/engine/platform/qsound.cpp @@ -338,7 +338,7 @@ void DivPlatformQSound::tick(bool sysTick) { rWrite(q1_reg_map[Q1V_LOOP][i], qsound_loop); rWrite(q1_reg_map[Q1V_START][i], qsound_addr); rWrite(q1_reg_map[Q1V_PHASE][i], 0x8000); - logV("ch %d bank=%04x, addr=%04x, end=%04x, loop=%04x!",i,qsound_bank,qsound_addr,qsound_end,qsound_loop); + //logV("ch %d bank=%04x, addr=%04x, end=%04x, loop=%04x!",i,qsound_bank,qsound_addr,qsound_end,qsound_loop); // Write sample address. Enable volume if (!chan[i].std.vol.had) { rWrite(q1_reg_map[Q1V_VOL][i], chan[i].vol << 4); From 1b80b9618924380871c710fa0367df0c81f9e384 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 26 Aug 2022 03:03:36 -0500 Subject: [PATCH 468/580] prepare for chip swapping --- src/engine/engine.cpp | 61 +++++++++++++++++++++++++++++++++++++++++- src/gui/sysManager.cpp | 13 ++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 153a8db9..c4e1346e 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -18,6 +18,7 @@ */ #include "dispatch.h" +#include "song.h" #define _USE_MATH_DEFINES #include "engine.h" #include "instrument.h" @@ -1406,7 +1407,65 @@ bool DivEngine::swapSystem(int src, int dest, bool preserveOrder) { if (!preserveOrder) { // move channels - // TODO: a lot of work! + unsigned char unswappedChannels[DIV_MAX_CHANS]; + unsigned char swappedChannels[DIV_MAX_CHANS]; + std::vector> swapList; + std::vector chanList; + + int tchans=0; + + for (int i=0; i& i: swapList) { + for (int& j: i) { + swappedChannels[index++]=j; + } + } + + logV("swap list:"); + for (int i=0; i %d",unswappedChannels[i],swappedChannels[i]); + } + + // swap channels + bool allComplete=false; + while (!allComplete) { + logD("doing swap..."); + allComplete=true; + for (int i=0; i %d -> %d",unswappedChannels[i],unswappedChannels[swappedChannels[i]]); + unswappedChannels[i]^=unswappedChannels[swappedChannels[i]]; + unswappedChannels[swappedChannels[i]]^=unswappedChannels[i]; + unswappedChannels[i]^=unswappedChannels[swappedChannels[i]]; + } + } + } } DivSystem srcSystem=song.system[src]; diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index e43b4dfe..2be87fc9 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -22,6 +22,9 @@ #include "IconsFontAwesome4.h" #include +static int _src, _dest; +static bool _preserveOrder; + void FurnaceGUI::drawSysManager() { if (nextWindow==GUI_WINDOW_SYS_MANAGER) { sysManagerOpen=true; @@ -30,7 +33,15 @@ void FurnaceGUI::drawSysManager() { } if (!sysManagerOpen) return; if (ImGui::Begin("Chip Manager",&sysManagerOpen,globalWinFlags)) { - ImGui::Text("Stuff here..."); + ImGui::Text("Call swapSystem() with arguments:"); + ImGui::InputInt("src",&_src); + ImGui::InputInt("dest",&_dest); + ImGui::Checkbox("preserveOrder",&_preserveOrder); + if (ImGui::Button("Call")) { + if (!e->swapSystem(_src,_dest,_preserveOrder)) { + showError(e->getLastError()); + } + } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SYS_MANAGER; ImGui::End(); From 897a61db85ccfc41fda22779dc2657f73a12bafb Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 26 Aug 2022 16:44:27 -0500 Subject: [PATCH 469/580] copy paste --- src/gui/sysManager.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 2be87fc9..81fcd8e9 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -42,6 +42,54 @@ void FurnaceGUI::drawSysManager() { showError(e->getLastError()); } } + + if (ImGui::BeginTable("SystemList",3)) { + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,0.0); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed,48.0f*dpiScale); + ImGui::TableNextRow(ImGuiTableRowFlags_Headers); + ImGui::TableNextColumn(); + ImGui::Text("Visible"); + ImGui::TableNextColumn(); + ImGui::Text("Name"); + for (int i=0; igetTotalChannelCount(); i++) { + ImGui::PushID(i); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Visible",&e->curSubSong->chanShow[i]); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_ARROWS)) { + } + if (ImGui::BeginDragDropSource()) { + chanToMove=i; + ImGui::SetDragDropPayload("FUR_CHAN",NULL,0,ImGuiCond_Once); + ImGui::Button(ICON_FA_ARROWS "##ChanDrag"); + ImGui::EndDragDropSource(); + } else if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("%s #%d\n(drag to swap channels)",e->getSystemName(e->sysOfChan[i]),e->dispatchChanOfChan[i]); + } + if (ImGui::BeginDragDropTarget()) { + const ImGuiPayload* dragItem=ImGui::AcceptDragDropPayload("FUR_CHAN"); + if (dragItem!=NULL) { + if (dragItem->IsDataType("FUR_CHAN")) { + if (chanToMove!=i && chanToMove>=0) { + e->swapChannelsP(chanToMove,i); + } + chanToMove=-1; + } + } + ImGui::EndDragDropTarget(); + } + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::InputTextWithHint("##ChanName",e->getChannelName(i),&e->curSubSong->chanName[i]); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::InputTextWithHint("##ChanShortName",e->getChannelShortName(i),&e->curSubSong->chanShortName[i]); + ImGui::PopID(); + } + ImGui::EndTable(); + } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SYS_MANAGER; ImGui::End(); From be9385f70139a5adeb2f4056a9a674b1d0c4c21b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 26 Aug 2022 18:51:17 -0500 Subject: [PATCH 470/580] GUI: work on chip manager --- src/gui/gui.cpp | 12 +++++++ src/gui/gui.h | 3 +- src/gui/sysManager.cpp | 74 +++++++++++++++++++++++------------------- 3 files changed, 55 insertions(+), 34 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 0d53e97d..fb127648 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4161,6 +4161,16 @@ bool FurnaceGUI::loop() { ImGui::CloseCurrentPopup(); } break; + case GUI_WARN_SYSTEM_DEL: + if (ImGui::Button("Yes")) { + e->removeSystem(sysToDelete,preserveChanPos); + ImGui::CloseCurrentPopup(); + } + ImGui::SameLine(); + if (ImGui::Button("No")) { + ImGui::CloseCurrentPopup(); + } + break; case GUI_WARN_GENERIC: if (ImGui::Button("OK")) { ImGui::CloseCurrentPopup(); @@ -4956,6 +4966,8 @@ FurnaceGUI::FurnaceGUI(): eventTimeEnd(0), eventTimeDelta(0), chanToMove(-1), + sysToMove(-1), + sysToDelete(-1), transposeAmount(0), randomizeMin(0), randomizeMax(255), diff --git a/src/gui/gui.h b/src/gui/gui.h index 4654851d..a93e59a9 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -310,6 +310,7 @@ enum FurnaceGUIWarnings { GUI_WARN_CLOSE_SETTINGS, GUI_WARN_CLEAR, GUI_WARN_SUBSONG_DEL, + GUI_WARN_SYSTEM_DEL, GUI_WARN_GENERIC }; @@ -1433,7 +1434,7 @@ class FurnaceGUI { int renderTimeBegin, renderTimeEnd, renderTimeDelta; int eventTimeBegin, eventTimeEnd, eventTimeDelta; - int chanToMove; + int chanToMove, sysToMove, sysToDelete; ImVec2 patWindowPos, patWindowSize; diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 81fcd8e9..619345ba 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -20,11 +20,9 @@ #include "gui.h" #include "misc/cpp/imgui_stdlib.h" #include "IconsFontAwesome4.h" +#include #include -static int _src, _dest; -static bool _preserveOrder; - void FurnaceGUI::drawSysManager() { if (nextWindow==GUI_WINDOW_SYS_MANAGER) { sysManagerOpen=true; @@ -33,61 +31,71 @@ void FurnaceGUI::drawSysManager() { } if (!sysManagerOpen) return; if (ImGui::Begin("Chip Manager",&sysManagerOpen,globalWinFlags)) { - ImGui::Text("Call swapSystem() with arguments:"); - ImGui::InputInt("src",&_src); - ImGui::InputInt("dest",&_dest); - ImGui::Checkbox("preserveOrder",&_preserveOrder); - if (ImGui::Button("Call")) { - if (!e->swapSystem(_src,_dest,_preserveOrder)) { - showError(e->getLastError()); - } - } - + ImGui::Checkbox("Preserve channel order",&preserveChanPos); if (ImGui::BeginTable("SystemList",3)) { - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,0.0); - ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0); - ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed,48.0f*dpiScale); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed); ImGui::TableNextRow(ImGuiTableRowFlags_Headers); ImGui::TableNextColumn(); - ImGui::Text("Visible"); ImGui::TableNextColumn(); ImGui::Text("Name"); - for (int i=0; igetTotalChannelCount(); i++) { + ImGui::TableNextColumn(); + ImGui::Text("Actions"); + for (unsigned char i=0; isong.systemLen; i++) { ImGui::PushID(i); ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::Checkbox("##Visible",&e->curSubSong->chanShow[i]); - ImGui::SameLine(); if (ImGui::Button(ICON_FA_ARROWS)) { } if (ImGui::BeginDragDropSource()) { - chanToMove=i; - ImGui::SetDragDropPayload("FUR_CHAN",NULL,0,ImGuiCond_Once); - ImGui::Button(ICON_FA_ARROWS "##ChanDrag"); + sysToMove=i; + ImGui::SetDragDropPayload("FUR_SYS",NULL,0,ImGuiCond_Once); + ImGui::Button(ICON_FA_ARROWS "##SysDrag"); ImGui::EndDragDropSource(); } else if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("%s #%d\n(drag to swap channels)",e->getSystemName(e->sysOfChan[i]),e->dispatchChanOfChan[i]); + ImGui::SetTooltip("(drag to swap chips)"); } if (ImGui::BeginDragDropTarget()) { - const ImGuiPayload* dragItem=ImGui::AcceptDragDropPayload("FUR_CHAN"); + const ImGuiPayload* dragItem=ImGui::AcceptDragDropPayload("FUR_SYS"); if (dragItem!=NULL) { - if (dragItem->IsDataType("FUR_CHAN")) { - if (chanToMove!=i && chanToMove>=0) { - e->swapChannelsP(chanToMove,i); + if (dragItem->IsDataType("FUR_SYS")) { + if (sysToMove!=i && sysToMove>=0) { + e->swapSystem(sysToMove,i,preserveChanPos); } - chanToMove=-1; + sysToMove=-1; } } ImGui::EndDragDropTarget(); } ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::InputTextWithHint("##ChanName",e->getChannelName(i),&e->curSubSong->chanName[i]); + if (ImGui::TreeNode(fmt::sprintf("%d. %s##_SYSM%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { + drawSysConf(i,e->song.system[i],e->song.systemFlags[i],true); + ImGui::TreePop(); + } ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - ImGui::InputTextWithHint("##ChanShortName",e->getChannelShortName(i),&e->curSubSong->chanShortName[i]); + ImGui::Button(ICON_FA_CHEVRON_DOWN "##SysChange"); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Change"); + } + ImGui::SameLine(); + ImGui::BeginDisabled(e->song.systemLen<=1); + if (ImGui::Button(ICON_FA_TIMES "##SysRemove")) { + sysToDelete=i; + showWarning("Are you sure you want to remove this chip?",GUI_WARN_SYSTEM_DEL); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Remove"); + } + ImGui::EndDisabled(); ImGui::PopID(); } + if (e->song.systemLen<32) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::TableNextColumn(); + ImGui::Button(ICON_FA_PLUS "##SysAdd"); + } ImGui::EndTable(); } } From daf176e197c35cd82b0b6208cc7ac3349c6eef65 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 26 Aug 2022 19:30:13 -0500 Subject: [PATCH 471/580] GUI: prepare for new chip picker --- CMakeLists.txt | 1 + src/engine/engine.h | 3 ++ src/engine/sysDef.cpp | 4 +++ src/gui/gui.cpp | 30 ++++++----------- src/gui/gui.h | 6 +++- src/gui/sysManager.cpp | 18 ++++++++++ src/gui/sysPicker.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 115 insertions(+), 21 deletions(-) create mode 100644 src/gui/sysPicker.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c8d3939..b47d2a74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -553,6 +553,7 @@ src/gui/subSongs.cpp src/gui/sysConf.cpp src/gui/sysEx.cpp src/gui/sysManager.cpp +src/gui/sysPicker.cpp src/gui/util.cpp src/gui/waveEdit.cpp src/gui/volMeter.cpp diff --git a/src/engine/engine.h b/src/engine/engine.h index 3e75bef6..ccfed7c3 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -627,6 +627,9 @@ class DivEngine { // get japanese system name const char* getSystemNameJ(DivSystem sys); + // get sys definition + const DivSysDef* getSystemDef(DivSystem sys); + // convert sample rate format int fileToDivRate(int frate); int divToFileRate(int drate); diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 0487873b..6dc3a8a4 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -284,6 +284,10 @@ const char* DivEngine::getSystemNameJ(DivSystem sys) { */ } +const DivSysDef* DivEngine::getSystemDef(DivSystem sys) { + return sysDefs[sys]; +} + bool DivEngine::isFMSystem(DivSystem sys) { if (sysDefs[sys]==NULL) return false; return sysDefs[sys]->isFM; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index fb127648..09ecad39 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1941,20 +1941,6 @@ void FurnaceGUI::processDrags(int dragX, int dragY) { } } -#define sysAddOption(x) \ - if (ImGui::MenuItem(getSystemName(x))) { \ - if (!e->addSystem(x)) { \ - showError("cannot add chip! ("+e->getLastError()+")"); \ - } \ - updateWindowTitle(); \ - } - -#define sysChangeOption(x,y) \ - if (ImGui::MenuItem(getSystemName(y),NULL,e->song.system[x]==y)) { \ - e->changeSystem(x,y,preserveChanPos); \ - updateWindowTitle(); \ - } - #define checkExtension(x) \ String lowerCase=fileName; \ for (char& i: lowerCase) { \ @@ -3051,9 +3037,12 @@ bool FurnaceGUI::loop() { } ImGui::Separator(); if (ImGui::BeginMenu("add chip...")) { - for (int j=0; availableSystems[j]; j++) { - if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY)) continue; - sysAddOption((DivSystem)availableSystems[j]); + DivSystem picked=systemPicker(); + if (picked!=DIV_SYSTEM_NULL) { + if (!e->addSystem(picked)) { + showError("cannot add chip! ("+e->getLastError()+")"); + } + updateWindowTitle(); } ImGui::EndMenu(); } @@ -3070,9 +3059,10 @@ bool FurnaceGUI::loop() { ImGui::Checkbox("Preserve channel positions",&preserveChanPos); for (int i=0; isong.systemLen; i++) { if (ImGui::BeginMenu(fmt::sprintf("%d. %s##_SYSC%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { - for (int j=0; availableSystems[j]; j++) { - if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY)) continue; - sysChangeOption(i,(DivSystem)availableSystems[j]); + DivSystem picked=systemPicker(); + if (picked!=DIV_SYSTEM_NULL) { + e->changeSystem(i,picked,preserveChanPos); + updateWindowTitle(); } ImGui::EndMenu(); } diff --git a/src/gui/gui.h b/src/gui/gui.h index a93e59a9..283edc82 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -969,13 +969,15 @@ class FurnaceGUI { int sampleTexW, sampleTexH; bool updateSampleTex; - String workingDir, fileName, clipboard, warnString, errorString, lastError, curFileName, nextFile; + String workingDir, fileName, clipboard, warnString, errorString, lastError, curFileName, nextFile, sysSearchQuery; String workingDirSong, workingDirIns, workingDirWave, workingDirSample, workingDirAudioExport; String workingDirVGMExport, workingDirROMExport, workingDirFont, workingDirColors, workingDirKeybinds; String workingDirLayout, workingDirROM, workingDirTest; String mmlString[32]; String mmlStringW; + std::vector sysSearchResults; + bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints; bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; bool displayNew, fullScreen, preserveChanPos, wantScrollList, noteInputPoly; @@ -1666,6 +1668,8 @@ class FurnaceGUI { void doReplace(); void doDrag(); void editOptions(bool topMenu); + DivSystem systemPicker(); + bool systemPickerOption(DivSystem sys); void noteInput(int num, int key, int vol=-1); void valueInput(int num, bool direct=false, int target=-1); diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 619345ba..bab348e3 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -78,6 +78,14 @@ void FurnaceGUI::drawSysManager() { if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Change"); } + if (ImGui::BeginPopupContextItem("SysPickerC",ImGuiPopupFlags_MouseButtonLeft)) { + DivSystem picked=systemPicker(); + if (picked!=DIV_SYSTEM_NULL) { + e->changeSystem(i,picked,preserveChanPos); + updateWindowTitle(); + } + ImGui::EndPopup(); + } ImGui::SameLine(); ImGui::BeginDisabled(e->song.systemLen<=1); if (ImGui::Button(ICON_FA_TIMES "##SysRemove")) { @@ -95,6 +103,16 @@ void FurnaceGUI::drawSysManager() { ImGui::TableNextColumn(); ImGui::TableNextColumn(); ImGui::Button(ICON_FA_PLUS "##SysAdd"); + if (ImGui::BeginPopupContextItem("SysPickerA",ImGuiPopupFlags_MouseButtonLeft)) { + DivSystem picked=systemPicker(); + if (picked!=DIV_SYSTEM_NULL) { + if (!e->addSystem(picked)) { + showError("cannot add chip! ("+e->getLastError()+")"); + } + updateWindowTitle(); + } + ImGui::EndPopup(); + } } ImGui::EndTable(); } diff --git a/src/gui/sysPicker.cpp b/src/gui/sysPicker.cpp new file mode 100644 index 00000000..bcfc95ae --- /dev/null +++ b/src/gui/sysPicker.cpp @@ -0,0 +1,74 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "gui.h" +#include "misc/cpp/imgui_stdlib.h" +#include "IconsFontAwesome4.h" +#include "guiConst.h" +#include + +bool FurnaceGUI::systemPickerOption(DivSystem sys) { + const DivSysDef* sysDef=e->getSystemDef(sys); + if (sysDef==NULL) return false; + bool ret=ImGui::Selectable(sysDef->name); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::TextUnformatted(sysDef->description); + ImGui::EndTooltip(); + } + return ret; +} + +DivSystem FurnaceGUI::systemPicker() { + DivSystem ret=DIV_SYSTEM_NULL; + /* + for (int j=0; availableSystems[j]; j++) { + if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY)) continue; + sysAddOption((DivSystem)availableSystems[j]); + } + */ + if (ImGui::InputTextWithHint("##SysSearch","Search...",&sysSearchQuery)) { + String lowerCase=sysSearchQuery; + for (char& i: lowerCase) { + if (i>='A' && i<='Z') i+='a'-'A'; + } + sysSearchResults.clear(); + for (int j=0; availableSystems[j]; j++) { + String lowerCase1=e->getSystemName((DivSystem)availableSystems[j]); + for (char& i: lowerCase1) { + if (i>='A' && i<='Z') i+='a'-'A'; + } + if (lowerCase1.find(lowerCase)!=String::npos) { + sysSearchResults.push_back((DivSystem)availableSystems[j]); + } + } + } + if (sysSearchQuery.empty()) { + // display chip list + for (int j=0; availableSystems[j]; j++) { + if (systemPickerOption((DivSystem)availableSystems[j])) ret=(DivSystem)availableSystems[j]; + } + } else { + // display search results + for (DivSystem i: sysSearchResults) { + if (systemPickerOption(i)) ret=i; + } + } + return ret; +} \ No newline at end of file From 73f88c7635836b9e9c5b8f2e69b311f471ef6e10 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 26 Aug 2022 23:35:16 -0500 Subject: [PATCH 472/580] GUI: and here is the new chip selector --- src/gui/gui.cpp | 3 ++ src/gui/gui.h | 2 +- src/gui/guiConst.cpp | 116 ++++++++++++++++++++++++++++++++++++++++- src/gui/guiConst.h | 7 +++ src/gui/sysManager.cpp | 2 + src/gui/sysPicker.cpp | 83 ++++++++++++++++++----------- 6 files changed, 181 insertions(+), 32 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 09ecad39..5cb4d520 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3042,6 +3042,7 @@ bool FurnaceGUI::loop() { if (!e->addSystem(picked)) { showError("cannot add chip! ("+e->getLastError()+")"); } + ImGui::CloseCurrentPopup(); updateWindowTitle(); } ImGui::EndMenu(); @@ -3063,6 +3064,7 @@ bool FurnaceGUI::loop() { if (picked!=DIV_SYSTEM_NULL) { e->changeSystem(i,picked,preserveChanPos); updateWindowTitle(); + ImGui::CloseCurrentPopup(); } ImGui::EndMenu(); } @@ -4756,6 +4758,7 @@ FurnaceGUI::FurnaceGUI(): drawHalt(10), macroPointSize(16), waveEditStyle(0), + curSysSection(NULL), pendingRawSampleDepth(8), pendingRawSampleChannels(1), pendingRawSampleUnsigned(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 283edc82..b47784d2 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -987,6 +987,7 @@ class FurnaceGUI { int drawHalt; int macroPointSize; int waveEditStyle; + const int* curSysSection; String pendingRawSample; int pendingRawSampleDepth, pendingRawSampleChannels; @@ -1669,7 +1670,6 @@ class FurnaceGUI { void doDrag(); void editOptions(bool topMenu); DivSystem systemPicker(); - bool systemPickerOption(DivSystem sys); void noteInput(int num, int key, int vol=-1); void valueInput(int num, bool direct=false, int target=-1); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 1940946d..d1ef835c 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -839,7 +839,9 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ }; #undef D -// define systems. +// define chips here + +// all chips const int availableSystems[]={ DIV_SYSTEM_YM2612, DIV_SYSTEM_YM2612_EXT, @@ -911,3 +913,115 @@ const int availableSystems[]={ 0 // don't remove this last one! }; +// FM +const int chipsFM[]={ + DIV_SYSTEM_YM2612, + DIV_SYSTEM_YM2612_EXT, + DIV_SYSTEM_YM2612_FRAC, + DIV_SYSTEM_YM2612_FRAC_EXT, + DIV_SYSTEM_YM2151, + DIV_SYSTEM_YM2610, + DIV_SYSTEM_YM2610_EXT, + DIV_SYSTEM_YM2610_FULL, + DIV_SYSTEM_YM2610_FULL_EXT, + DIV_SYSTEM_YM2610B, + DIV_SYSTEM_YM2610B_EXT, + DIV_SYSTEM_YMU759, + DIV_SYSTEM_OPN, + DIV_SYSTEM_OPN_EXT, + DIV_SYSTEM_PC98, + DIV_SYSTEM_PC98_EXT, + DIV_SYSTEM_OPLL, + DIV_SYSTEM_OPLL_DRUMS, + DIV_SYSTEM_VRC7, + DIV_SYSTEM_OPL, + DIV_SYSTEM_OPL_DRUMS, + DIV_SYSTEM_Y8950, + DIV_SYSTEM_Y8950_DRUMS, + DIV_SYSTEM_OPL2, + DIV_SYSTEM_OPL2_DRUMS, + DIV_SYSTEM_OPL3, + DIV_SYSTEM_OPL3_DRUMS, + DIV_SYSTEM_OPZ, + 0 // don't remove this last one! +}; + +// square +const int chipsSquare[]={ + DIV_SYSTEM_SMS, + DIV_SYSTEM_AY8910, + DIV_SYSTEM_PCSPKR, + DIV_SYSTEM_SAA1099, + DIV_SYSTEM_VIC20, + 0 // don't remove this last one! +}; + +// wavetable +const int chipsWave[]={ + DIV_SYSTEM_PCE, + DIV_SYSTEM_X1_010, + DIV_SYSTEM_SWAN, + DIV_SYSTEM_BUBSYS_WSG, + DIV_SYSTEM_N163, + DIV_SYSTEM_FDS, + DIV_SYSTEM_SCC, + DIV_SYSTEM_SCC_PLUS, + DIV_SYSTEM_NAMCO, + DIV_SYSTEM_NAMCO_15XX, + DIV_SYSTEM_NAMCO_CUS30, + 0 // don't remove this last one! +}; + +// specialized +const int chipsSpecial[]={ + DIV_SYSTEM_GB, + DIV_SYSTEM_NES, + DIV_SYSTEM_C64_8580, + DIV_SYSTEM_C64_6581, + DIV_SYSTEM_SFX_BEEPER, + DIV_SYSTEM_DUMMY, + DIV_SYSTEM_SOUND_UNIT, + DIV_SYSTEM_TIA, + DIV_SYSTEM_AY8930, + DIV_SYSTEM_LYNX, + DIV_SYSTEM_VERA, + DIV_SYSTEM_PET, + DIV_SYSTEM_VRC6, + DIV_SYSTEM_MMC5, + 0 // don't remove this last one! +}; + +// sample +const int chipsSample[]={ + DIV_SYSTEM_SEGAPCM, + DIV_SYSTEM_SEGAPCM_COMPAT, + DIV_SYSTEM_AMIGA, + DIV_SYSTEM_QSOUND, + DIV_SYSTEM_X1_010, + DIV_SYSTEM_YMZ280B, + DIV_SYSTEM_MSM6258, + DIV_SYSTEM_MSM6295, + DIV_SYSTEM_RF5C68, + DIV_SYSTEM_PCM_DAC, + 0 // don't remove this last one! +}; + +const int* chipCategories[]={ + availableSystems, + chipsFM, + chipsSquare, + chipsWave, + chipsSpecial, + chipsSample, + NULL +}; + +const char* chipCategoryNames[]={ + "All chips", + "FM", + "Square", + "Wavetable", + "Special", + "Sample", + NULL +}; \ No newline at end of file diff --git a/src/gui/guiConst.h b/src/gui/guiConst.h index a6df68f6..24bdac47 100644 --- a/src/gui/guiConst.h +++ b/src/gui/guiConst.h @@ -42,7 +42,14 @@ extern const char* pitchLabel[11]; extern const char* insTypes[]; extern const char* sampleDepths[]; extern const char* resampleStrats[]; +extern const char* chipCategoryNames[]; extern const int availableSystems[]; +extern const int chipsFM[]; +extern const int chipsSquare[]; +extern const int chipsWavetable[]; +extern const int chipsSpecial[]; +extern const int chipsSample[]; +extern const int* chipCategories[]; extern const FurnaceGUIActionDef guiActions[]; extern const FurnaceGUIColorDef guiColors[]; extern const int altValues[24]; diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index bab348e3..98f939d0 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -83,6 +83,7 @@ void FurnaceGUI::drawSysManager() { if (picked!=DIV_SYSTEM_NULL) { e->changeSystem(i,picked,preserveChanPos); updateWindowTitle(); + ImGui::CloseCurrentPopup(); } ImGui::EndPopup(); } @@ -110,6 +111,7 @@ void FurnaceGUI::drawSysManager() { showError("cannot add chip! ("+e->getLastError()+")"); } updateWindowTitle(); + ImGui::CloseCurrentPopup(); } ImGui::EndPopup(); } diff --git a/src/gui/sysPicker.cpp b/src/gui/sysPicker.cpp index bcfc95ae..f59e547a 100644 --- a/src/gui/sysPicker.cpp +++ b/src/gui/sysPicker.cpp @@ -23,52 +23,75 @@ #include "guiConst.h" #include -bool FurnaceGUI::systemPickerOption(DivSystem sys) { - const DivSysDef* sysDef=e->getSystemDef(sys); - if (sysDef==NULL) return false; - bool ret=ImGui::Selectable(sysDef->name); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::TextUnformatted(sysDef->description); - ImGui::EndTooltip(); - } - return ret; -} - DivSystem FurnaceGUI::systemPicker() { DivSystem ret=DIV_SYSTEM_NULL; - /* - for (int j=0; availableSystems[j]; j++) { - if (!settings.hiddenSystems && (availableSystems[j]==DIV_SYSTEM_YMU759 || availableSystems[j]==DIV_SYSTEM_DUMMY)) continue; - sysAddOption((DivSystem)availableSystems[j]); - } - */ - if (ImGui::InputTextWithHint("##SysSearch","Search...",&sysSearchQuery)) { + DivSystem hoveredSys=DIV_SYSTEM_NULL; + bool reissueSearch=false; + if (curSysSection==NULL) { + curSysSection=availableSystems; + } + + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputTextWithHint("##SysSearch","Search...",&sysSearchQuery)) reissueSearch=true; + if (ImGui::BeginTabBar("SysCats")) { + for (int i=0; chipCategories[i]; i++) { + if (ImGui::BeginTabItem(chipCategoryNames[i])) { + if (ImGui::IsItemActive()) { + reissueSearch=true; + } + curSysSection=chipCategories[i]; + ImGui::EndTabItem(); + } + } + ImGui::EndTabBar(); + } + if (reissueSearch) { String lowerCase=sysSearchQuery; for (char& i: lowerCase) { if (i>='A' && i<='Z') i+='a'-'A'; } sysSearchResults.clear(); - for (int j=0; availableSystems[j]; j++) { - String lowerCase1=e->getSystemName((DivSystem)availableSystems[j]); + for (int j=0; curSysSection[j]; j++) { + String lowerCase1=e->getSystemName((DivSystem)curSysSection[j]); for (char& i: lowerCase1) { if (i>='A' && i<='Z') i+='a'-'A'; } if (lowerCase1.find(lowerCase)!=String::npos) { - sysSearchResults.push_back((DivSystem)availableSystems[j]); + sysSearchResults.push_back((DivSystem)curSysSection[j]); } } } - if (sysSearchQuery.empty()) { - // display chip list - for (int j=0; availableSystems[j]; j++) { - if (systemPickerOption((DivSystem)availableSystems[j])) ret=(DivSystem)availableSystems[j]; + if (ImGui::BeginTable("SysList",1,ImGuiTableFlags_ScrollY,ImVec2(500.0f*dpiScale,200.0*dpiScale))) { + if (sysSearchQuery.empty()) { + // display chip list + for (int j=0; curSysSection[j]; j++) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::Selectable(e->getSystemName((DivSystem)curSysSection[j]),false,0,ImVec2(500.0f*dpiScale,0.0f))) ret=(DivSystem)curSysSection[j]; + if (ImGui::IsItemHovered()) { + hoveredSys=(DivSystem)curSysSection[j]; + } + } + } else { + // display search results + for (DivSystem i: sysSearchResults) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::Selectable(e->getSystemName(i),false,0,ImVec2(500.0f*dpiScale,0.0f))) ret=i; + if (ImGui::IsItemHovered()) { + hoveredSys=i; + } + } } - } else { - // display search results - for (DivSystem i: sysSearchResults) { - if (systemPickerOption(i)) ret=i; + ImGui::EndTable(); + } + ImGui::Separator(); + if (ImGui::BeginChild("SysDesc",ImVec2(0.0f,150.0f*dpiScale),false,ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse)) { + if (hoveredSys!=DIV_SYSTEM_NULL) { + const DivSysDef* sysDef=e->getSystemDef(hoveredSys); + ImGui::TextWrapped("%s",sysDef->description); } } + ImGui::EndChild(); return ret; } \ No newline at end of file From efd5cc0dacf050533bd826f829d1021260f0aa5e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 27 Aug 2022 00:14:17 -0500 Subject: [PATCH 473/580] GUI: implement search in "Choose a System!" --- src/gui/gui.h | 3 +- src/gui/newSong.cpp | 78 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 62 insertions(+), 19 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index b47784d2..48b8e12c 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -969,7 +969,7 @@ class FurnaceGUI { int sampleTexW, sampleTexH; bool updateSampleTex; - String workingDir, fileName, clipboard, warnString, errorString, lastError, curFileName, nextFile, sysSearchQuery; + String workingDir, fileName, clipboard, warnString, errorString, lastError, curFileName, nextFile, sysSearchQuery, newSongQuery; String workingDirSong, workingDirIns, workingDirWave, workingDirSample, workingDirAudioExport; String workingDirVGMExport, workingDirROMExport, workingDirFont, workingDirColors, workingDirKeybinds; String workingDirLayout, workingDirROM, workingDirTest; @@ -977,6 +977,7 @@ class FurnaceGUI { String mmlStringW; std::vector sysSearchResults; + std::vector newSongSearchResults; bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints; bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; diff --git a/src/gui/newSong.cpp b/src/gui/newSong.cpp index 26fddf9f..c819ffd3 100644 --- a/src/gui/newSong.cpp +++ b/src/gui/newSong.cpp @@ -18,7 +18,8 @@ */ #include "gui.h" -#include +#include "misc/cpp/imgui_stdlib.h" +#include void FurnaceGUI::drawNewSong() { bool accepted=false; @@ -32,35 +33,76 @@ void FurnaceGUI::drawNewSong() { avail.y-=ImGui::GetFrameHeightWithSpacing(); if (ImGui::BeginChild("sysPickerC",avail,false,ImGuiWindowFlags_NoScrollWithMouse|ImGuiWindowFlags_NoScrollbar)) { - if (ImGui::BeginTable("sysPicker",2,ImGuiTableFlags_BordersInnerV)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0f); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputTextWithHint("##SysSearch","Search...",&newSongQuery)) { + String lowerCase=newSongQuery; + for (char& i: lowerCase) { + if (i>='A' && i<='Z') i+='a'-'A'; + } + auto lastItem=std::remove_if(lowerCase.begin(),lowerCase.end(),[](char c) { + return (c==' ' || c=='_' || c=='-'); + }); + lowerCase.erase(lastItem,lowerCase.end()); + newSongSearchResults.clear(); + for (FurnaceGUISysCategory& i: sysCategories) { + for (FurnaceGUISysDef& j: i.systems) { + String lowerCase1=j.name; + for (char& i: lowerCase1) { + if (i>='A' && i<='Z') i+='a'-'A'; + } + auto lastItem=std::remove_if(lowerCase1.begin(),lowerCase1.end(),[](char c) { + return (c==' ' || c=='_' || c=='-'); + }); + lowerCase1.erase(lastItem,lowerCase1.end()); + if (lowerCase1.find(lowerCase)!=String::npos) { + newSongSearchResults.push_back(j); + } + } + std::sort(newSongSearchResults.begin(),newSongSearchResults.end(),[](const FurnaceGUISysDef& a, const FurnaceGUISysDef& b) { + return strcmp(a.name,b.name)<0; + }); + auto lastItem=std::unique(newSongSearchResults.begin(),newSongSearchResults.end(),[](const FurnaceGUISysDef& a, const FurnaceGUISysDef& b) { + return strcmp(a.name,b.name)==0; + }); + newSongSearchResults.erase(lastItem,newSongSearchResults.end()); + } + } + if (ImGui::BeginTable("sysPicker",newSongQuery.empty()?2:1,ImGuiTableFlags_BordersInnerV)) { + if (newSongQuery.empty()) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0f); + } ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0f); - ImGui::TableNextRow(ImGuiTableRowFlags_Headers); - ImGui::TableNextColumn(); - ImGui::Text("Categories"); - ImGui::TableNextColumn(); - ImGui::Text("Systems"); + if (newSongQuery.empty()) { + ImGui::TableNextRow(ImGuiTableRowFlags_Headers); + ImGui::TableNextColumn(); + ImGui::Text("Categories"); + ImGui::TableNextColumn(); + ImGui::Text("Systems"); + } ImGui::TableNextRow(); // CATEGORIES - ImGui::TableNextColumn(); - int index=0; - for (FurnaceGUISysCategory& i: sysCategories) { - if (ImGui::Selectable(i.name,newSongCategory==index,ImGuiSelectableFlags_DontClosePopups)) { \ - newSongCategory=index; + if (newSongQuery.empty()) { + ImGui::TableNextColumn(); + int index=0; + for (FurnaceGUISysCategory& i: sysCategories) { + if (ImGui::Selectable(i.name,newSongCategory==index,ImGuiSelectableFlags_DontClosePopups)) { \ + newSongCategory=index; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("%s",i.description); + } + index++; } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("%s",i.description); - } - index++; } // SYSTEMS ImGui::TableNextColumn(); if (ImGui::BeginTable("Systems",1,ImGuiTableFlags_BordersInnerV|ImGuiTableFlags_ScrollY)) { - for (FurnaceGUISysDef& i: sysCategories[newSongCategory].systems) { + std::vector& category=(newSongQuery.empty())?(sysCategories[newSongCategory].systems):(newSongSearchResults); + for (FurnaceGUISysDef& i: category) { ImGui::TableNextRow(); ImGui::TableNextColumn(); if (ImGui::Selectable(i.name,false,ImGuiSelectableFlags_DontClosePopups)) { From d577755035892fc082c13725d865d0a6e1ce9eea Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 27 Aug 2022 00:37:32 -0500 Subject: [PATCH 474/580] fix note on sometimes not working in jam mode --- src/engine/engine.cpp | 12 ++++++------ src/engine/engine.h | 4 ++-- src/engine/playback.cpp | 27 ++++++++++++++++++++++----- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index c4e1346e..1230cb59 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3210,7 +3210,7 @@ bool DivEngine::moveSampleDown(int which) { void DivEngine::noteOn(int chan, int ins, int note, int vol) { if (chan<0 || chan>=chans) return; BUSY_BEGIN; - pendingNotes.push(DivNoteEvent(chan,ins,note,vol,true)); + pendingNotes.push_back(DivNoteEvent(chan,ins,note,vol,true)); if (!playing) { reset(); freelance=true; @@ -3222,7 +3222,7 @@ void DivEngine::noteOn(int chan, int ins, int note, int vol) { void DivEngine::noteOff(int chan) { if (chan<0 || chan>=chans) return; BUSY_BEGIN; - pendingNotes.push(DivNoteEvent(chan,-1,-1,-1,false)); + pendingNotes.push_back(DivNoteEvent(chan,-1,-1,-1,false)); if (!playing) { reset(); freelance=true; @@ -3274,7 +3274,7 @@ void DivEngine::autoNoteOn(int ch, int ins, int note, int vol) { if ((!midiPoly) || (isViable[finalChan] && chan[finalChan].midiNote==-1 && (insInst->type==DIV_INS_OPL || getChannelType(finalChan)==finalChanType || notInViableChannel))) { chan[finalChan].midiNote=note; chan[finalChan].midiAge=midiAgeCounter++; - pendingNotes.push(DivNoteEvent(finalChan,ins,note,vol,true)); + pendingNotes.push_back(DivNoteEvent(finalChan,ins,note,vol,true)); return; } if (++finalChan>=chans) { @@ -3295,7 +3295,7 @@ void DivEngine::autoNoteOn(int ch, int ins, int note, int vol) { chan[candidate].midiNote=note; chan[candidate].midiAge=midiAgeCounter++; - pendingNotes.push(DivNoteEvent(candidate,ins,note,vol,true)); + pendingNotes.push_back(DivNoteEvent(candidate,ins,note,vol,true)); } void DivEngine::autoNoteOff(int ch, int note, int vol) { @@ -3307,7 +3307,7 @@ void DivEngine::autoNoteOff(int ch, int note, int vol) { //if (ch<0 || ch>=chans) return; for (int i=0; i #include #include -#include +#include #define addWarning(x) \ if (warnings.empty()) { \ @@ -357,7 +357,7 @@ class DivEngine { DivAudioExportModes exportMode; double exportFadeOut; std::map conf; - std::queue pendingNotes; + std::deque pendingNotes; bool isMuted[DIV_MAX_CHANS]; std::mutex isBusy, saveLock; String configPath; diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index f4c4968d..7fb9583d 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1010,10 +1010,27 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { //output->midiOut->send(TAMidiMessage(TA_MIDI_CLOCK,0,0)); } + if (!pendingNotes.empty()) { + bool isOn[DIV_MAX_CHANS]; + memset(isOn,0,DIV_MAX_CHANS*sizeof(bool)); + + for (int i=pendingNotes.size()-1; i>=0; i--) { + if (pendingNotes[i].channel<0 || pendingNotes[i].channel>=chans) continue; + if (pendingNotes[i].on) { + isOn[pendingNotes[i].channel]=true; + } else { + if (isOn[pendingNotes[i].channel]) { + logV("erasing off -> on sequence in %d",pendingNotes[i].channel); + pendingNotes.erase(pendingNotes.begin()+i); + } + } + } + } + while (!pendingNotes.empty()) { DivNoteEvent& note=pendingNotes.front(); if (note.channel<0 || note.channel>=chans) { - pendingNotes.pop(); + pendingNotes.pop_front(); continue; } if (note.on) { @@ -1033,7 +1050,7 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { dispatchCmd(DivCommand(DIV_CMD_NOTE_OFF,note.channel)); } } - pendingNotes.pop(); + pendingNotes.pop_front(); } if (!freelance) { @@ -1245,7 +1262,7 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi case TA_MIDI_NOTE_OFF: { if (chan<0 || chan>=chans) break; if (midiIsDirect) { - pendingNotes.push(DivNoteEvent(chan,-1,-1,-1,false)); + pendingNotes.push_back(DivNoteEvent(chan,-1,-1,-1,false)); } else { autoNoteOff(msg.type&15,msg.data[0]-12,msg.data[1]); } @@ -1260,13 +1277,13 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi if (chan<0 || chan>=chans) break; if (msg.data[1]==0) { if (midiIsDirect) { - pendingNotes.push(DivNoteEvent(chan,-1,-1,-1,false)); + pendingNotes.push_back(DivNoteEvent(chan,-1,-1,-1,false)); } else { autoNoteOff(msg.type&15,msg.data[0]-12,msg.data[1]); } } else { if (midiIsDirect) { - pendingNotes.push(DivNoteEvent(chan,ins,msg.data[0]-12,msg.data[1],true)); + pendingNotes.push_back(DivNoteEvent(chan,ins,msg.data[0]-12,msg.data[1],true)); } else { autoNoteOn(msg.type&15,ins,msg.data[0]-12,msg.data[1]); } From 58853ce5d54b0929fd7f7230ff4489784de37319 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 27 Aug 2022 16:12:00 -0500 Subject: [PATCH 475/580] OPNB-B -> OPNB2 --- src/engine/sysDef.cpp | 4 ++-- src/gui/presets.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 6dc3a8a4..abfdc3dc 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1137,7 +1137,7 @@ void DivEngine::registerSystems() { ); sysDefs[DIV_SYSTEM_YM2610B]=new DivSysDef( - "Yamaha YM2610B (OPNB-B)", NULL, 0x9e, 0, 16, true, false, 0x151, false, + "Yamaha YM2610B (OPNB2)", NULL, 0x9e, 0, 16, true, false, 0x151, false, "so Taito asked Yamaha if they could get the two missing FM channels back, and Yamaha gladly provided them with this chip.", {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6", "PSG 1", "PSG 2", "PSG 3", "ADPCM-A 1", "ADPCM-A 2", "ADPCM-A 3", "ADPCM-A 4", "ADPCM-A 5", "ADPCM-A 6", "ADPCM-B"}, {"F1", "F2", "F3", "F4", "F5", "F6", "S1", "S2", "S3", "P1", "P2", "P3", "P4", "P5", "P6", "B"}, @@ -1311,7 +1311,7 @@ void DivEngine::registerSystems() { ); sysDefs[DIV_SYSTEM_YM2610B_EXT]=new DivSysDef( - "Yamaha YM2610B (OPNB-B) Extended Channel 3", NULL, 0xde, 0, 19, true, false, 0x151, false, + "Yamaha YM2610B (OPNB2) Extended Channel 3", NULL, 0xde, 0, 19, true, false, 0x151, false, "so Taito asked Yamaha if they could get the two missing FM channels back, and Yamaha gladly provided them with this chip.\nthis one is in Extended Channel mode, which turns the second FM channel into four operators with independent notes/frequencies.", {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6", "PSG 1", "PSG 2", "PSG 3", "ADPCM-A 1", "ADPCM-A 2", "ADPCM-A 3", "ADPCM-A 4", "ADPCM-A 5", "ADPCM-A 6", "ADPCM-B"}, {"F1", "F2", "O1", "O2", "O3", "O4", "F4", "F5", "F6", "S1", "S2", "S3", "P1", "P2", "P3", "P4", "P5", "P6", "B"}, diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 04049bdf..1bd637a2 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -79,7 +79,7 @@ void FurnaceGUI::initSystemPresets() { } )); cat.systems.push_back(FurnaceGUISysDef( - "Yamaha YM2610B (OPNB-B)", { + "Yamaha YM2610B (OPNB2)", { DIV_SYSTEM_YM2610B, 64, 0, 0, 0 } From 1d5390c0e9b3e984680c9b591e83a2c8c2e11235 Mon Sep 17 00:00:00 2001 From: Lunathir <18320914+lunathir@users.noreply.github.com> Date: Sat, 27 Aug 2022 22:53:47 -0700 Subject: [PATCH 476/580] More in-program text corrections --- src/engine/sysDef.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index abfdc3dc..1c63431f 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -957,7 +957,7 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_OPN_EXT]=new DivSysDef( "Yamaha YM2203 (OPN) Extended Channel 3", NULL, 0xb6, 0, 9, true, true, 0x151, false, - "cost-reduced version of the OPM with a different register layout and no stereo...\n...but it has a built-in AY-3-8910! (actually an YM2149)\nthis one is in Extended Channel mode, which turns the second FM channel into four operators with independent notes/frequencies", + "cost-reduced version of the OPM with a different register layout and no stereo...\n...but it has a built-in AY-3-8910! (actually an YM2149)\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies", {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "PSG 1", "PSG 2", "PSG 3"}, {"F1", "F2", "O1", "O2", "O3", "O4", "S1", "S2", "S3"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE}, @@ -981,7 +981,7 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_PC98_EXT]=new DivSysDef( "Yamaha YM2608 (OPNA) Extended Channel 3", NULL, 0xb7, 0, 19, true, true, 0x151, false, - "OPN but twice the FM channels, stereo makes a come-back and has rhythm and ADPCM channels.\nthis one is in Extended Channel mode, which turns the second FM channel into four operators with independent notes/frequencies", + "OPN but twice the FM channels, stereo makes a come-back and has rhythm and ADPCM channels.\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies", {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6", "Square 1", "Square 2", "Square 3", "Kick", "Snare", "Top", "HiHat", "Tom", "Rim", "ADPCM"}, {"F1", "F2", "O1", "O2", "O3", "O4", "F4", "F5", "F6", "S1", "S2", "S3", "BD", "SD", "TP", "HH", "TM", "RM", "P"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, @@ -1164,7 +1164,7 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_YM2612_EXT]=new DivSysDef( "Yamaha YM2612 (OPN2) Extended Channel 3", NULL, 0xa0, 0, 9, true, false, 0x150, false, - "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis one is in Extended Channel mode, which turns the second FM channel into four operators with independent notes/frequencies.", + "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies.", {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6"}, {"F1", "F2", "O1", "O2", "O3", "O4", "F4", "F5", "F6"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM}, @@ -1312,7 +1312,7 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_YM2610B_EXT]=new DivSysDef( "Yamaha YM2610B (OPNB2) Extended Channel 3", NULL, 0xde, 0, 19, true, false, 0x151, false, - "so Taito asked Yamaha if they could get the two missing FM channels back, and Yamaha gladly provided them with this chip.\nthis one is in Extended Channel mode, which turns the second FM channel into four operators with independent notes/frequencies.", + "so Taito asked Yamaha if they could get the two missing FM channels back, and Yamaha gladly provided them with this chip.\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies.", {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6", "PSG 1", "PSG 2", "PSG 3", "ADPCM-A 1", "ADPCM-A 2", "ADPCM-A 3", "ADPCM-A 4", "ADPCM-A 5", "ADPCM-A 6", "ADPCM-B"}, {"F1", "F2", "O1", "O2", "O3", "O4", "F4", "F5", "F6", "S1", "S2", "S3", "P1", "P2", "P3", "P4", "P5", "P6", "B"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM}, @@ -1566,7 +1566,7 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_YM2612_FRAC_EXT]=new DivSysDef( "Yamaha YM2612 (OPN2) Extended Channel 3 with DualPCM and CSM", NULL, 0xbd, 0, 11, true, false, 0, false, - "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis system uses software mixing to provide two sample channels.\nthis one is in Extended Channel mode, which turns the second FM channel into four operators with independent notes/frequencies.", + "this chip is mostly known for being in the Sega Genesis (but it also was on the FM Towns computer).\nthis system uses software mixing to provide two sample channels.\nthis one is in Extended Channel mode, which turns the third FM channel into four operators with independent notes/frequencies.", {"FM 1", "FM 2", "FM 3 OP1", "FM 3 OP2", "FM 3 OP3", "FM 3 OP4", "FM 4", "FM 5", "FM 6/PCM 1", "PCM 2", "CSM Timer"}, {"F1", "F2", "O1", "O2", "O3", "O4", "F4", "F5", "P1", "P2", "CSM"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_NOISE}, From 3e8f248f778591847e67af3d6a31de360ee04044 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 28 Aug 2022 01:03:23 -0500 Subject: [PATCH 477/580] fix saving a pre-24 .dmf song --- src/gui/gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 5cb4d520..86c063e9 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1593,6 +1593,7 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { int FurnaceGUI::save(String path, int dmfVersion) { SafeWriter* w; if (dmfVersion) { + if (dmfVersion<24) dmfVersion=24; w=e->saveDMF(dmfVersion); } else { w=e->saveFur(); From 82703a165f4bdcf2ad2b8c062fb827d59fe84590 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 28 Aug 2022 01:12:57 -0500 Subject: [PATCH 478/580] fix non-STD instruments in C64/GB/PCE converting to the wrong type --- src/engine/fileOps.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index fe220aae..a5ce1d09 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -4155,7 +4155,25 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { // safety check if (!isFMSystem(sys) && i->type!=DIV_INS_STD && i->type!=DIV_INS_FDS) { - i->type=DIV_INS_STD; + switch (song.system[0]) { + case DIV_SYSTEM_GB: + i->type=DIV_INS_GB; + break; + case DIV_SYSTEM_C64_6581: + case DIV_SYSTEM_C64_8580: + i->type=DIV_INS_C64; + break; + case DIV_SYSTEM_PCE: + i->type=DIV_INS_PCE; + break; + case DIV_SYSTEM_YM2610: + case DIV_SYSTEM_YM2610_EXT: + i->type=DIV_INS_AY; + break; + default: + i->type=DIV_INS_STD; + break; + } } if (!isSTDSystem(sys) && i->type!=DIV_INS_FM) { i->type=DIV_INS_FM; From 645dcdf9a04dd5053606ac3acb48c30345e84328 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 28 Aug 2022 02:57:40 -0500 Subject: [PATCH 479/580] fix .dmf and arp macros --- src/engine/fileOps.cpp | 55 ++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index a5ce1d09..0e0ceb8b 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -4214,56 +4214,79 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { } } else { // STD if (sys!=DIV_SYSTEM_GB) { - w->writeC(i->std.volMacro.len); + int realVolMacroLen=i->std.volMacro.len; + if (realVolMacroLen>127) realVolMacroLen=127; + w->writeC(realVolMacroLen); if ((sys==DIV_SYSTEM_C64_6581 || sys==DIV_SYSTEM_C64_8580) && i->c64.volIsCutoff) { - for (int j=0; jstd.volMacro.len; j++) { + for (int j=0; jwriteI(i->std.volMacro.val[j]+18); } } else { - for (int j=0; jstd.volMacro.len; j++) { + for (int j=0; jwriteI(i->std.volMacro.val[j]); } } - if (i->std.volMacro.len>0) { + if (realVolMacroLen>0) { w->writeC(i->std.volMacro.loop); } } // TODO: take care of new arp macro format w->writeC(i->std.arpMacro.len); - if (i->std.arpMacro.mode) { - for (int j=0; jstd.arpMacro.len; j++) { + bool arpMacroMode=false; + int arpMacroHowManyFixed=0; + int realArpMacroLen=i->std.arpMacro.len; + for (int j=0; jstd.arpMacro.len; j++) { + if ((i->std.arpMacro.val[j]&0xc0000000)==0x40000000 || (i->std.arpMacro.val[j]&0xc0000000)==0x80000000) { + arpMacroHowManyFixed++; + } + } + if (arpMacroHowManyFixed>=i->std.arpMacro.len-1) { + arpMacroMode=true; + } + if (i->std.arpMacro.len>0) { + if (arpMacroMode && i->std.arpMacro.val[i->std.arpMacro.len-1]==0 && i->std.arpMacro.loop>=i->std.arpMacro.len) { + realArpMacroLen--; + } + } + + if (arpMacroMode) { + for (int j=0; jwriteI(i->std.arpMacro.val[j]); } } else { - for (int j=0; jstd.arpMacro.len; j++) { + for (int j=0; jwriteI(i->std.arpMacro.val[j]+12); } } - if (i->std.arpMacro.len>0) { + if (realArpMacroLen>0) { w->writeC(i->std.arpMacro.loop); } - w->writeC(i->std.arpMacro.mode); + w->writeC(arpMacroMode); - w->writeC(i->std.dutyMacro.len); + int realDutyMacroLen=i->std.dutyMacro.len; + if (realDutyMacroLen>127) realDutyMacroLen=127; + w->writeC(realDutyMacroLen); if (sys==DIV_SYSTEM_C64_6581 || sys==DIV_SYSTEM_C64_8580) { - for (int j=0; jstd.dutyMacro.len; j++) { + for (int j=0; jwriteI(i->std.dutyMacro.val[j]+12); } } else { - for (int j=0; jstd.dutyMacro.len; j++) { + for (int j=0; jwriteI(i->std.dutyMacro.val[j]); } } - if (i->std.dutyMacro.len>0) { + if (realDutyMacroLen>0) { w->writeC(i->std.dutyMacro.loop); } - w->writeC(i->std.waveMacro.len); - for (int j=0; jstd.waveMacro.len; j++) { + int realWaveMacroLen=i->std.waveMacro.len; + if (realWaveMacroLen>127) realWaveMacroLen=127; + w->writeC(realWaveMacroLen); + for (int j=0; jwriteI(i->std.waveMacro.val[j]); } - if (i->std.waveMacro.len>0) { + if (realWaveMacroLen>0) { w->writeC(i->std.waveMacro.loop); } From c3ced46fa3a3a4420a6a8f5d51ba3d1f2220d87a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 28 Aug 2022 15:10:16 -0500 Subject: [PATCH 480/580] coming soon: reSIDfp core --- CMakeLists.txt | 18 + src/engine/platform/sound/c64_fp/AUTHORS | 6 + src/engine/platform/sound/c64_fp/COPYING | 339 ++++++++++++ src/engine/platform/sound/c64_fp/Dac.cpp | 123 +++++ src/engine/platform/sound/c64_fp/Dac.h | 111 ++++ .../sound/c64_fp/EnvelopeGenerator.cpp | 155 ++++++ .../platform/sound/c64_fp/EnvelopeGenerator.h | 419 +++++++++++++++ .../platform/sound/c64_fp/ExternalFilter.cpp | 68 +++ .../platform/sound/c64_fp/ExternalFilter.h | 125 +++++ src/engine/platform/sound/c64_fp/Filter.cpp | 90 ++++ src/engine/platform/sound/c64_fp/Filter.h | 177 ++++++ .../platform/sound/c64_fp/Filter6581.cpp | 75 +++ src/engine/platform/sound/c64_fp/Filter6581.h | 425 +++++++++++++++ .../platform/sound/c64_fp/Filter8580.cpp | 101 ++++ src/engine/platform/sound/c64_fp/Filter8580.h | 383 +++++++++++++ .../sound/c64_fp/FilterModelConfig.cpp | 79 +++ .../platform/sound/c64_fp/FilterModelConfig.h | 166 ++++++ .../sound/c64_fp/FilterModelConfig6581.cpp | 263 +++++++++ .../sound/c64_fp/FilterModelConfig6581.h | 112 ++++ .../sound/c64_fp/FilterModelConfig8580.cpp | 222 ++++++++ .../sound/c64_fp/FilterModelConfig8580.h | 68 +++ .../platform/sound/c64_fp/Integrator6581.cpp | 25 + .../platform/sound/c64_fp/Integrator6581.h | 285 ++++++++++ .../platform/sound/c64_fp/Integrator8580.cpp | 25 + .../platform/sound/c64_fp/Integrator8580.h | 142 +++++ src/engine/platform/sound/c64_fp/OpAmp.cpp | 84 +++ src/engine/platform/sound/c64_fp/OpAmp.h | 113 ++++ .../platform/sound/c64_fp/Potentiometer.h | 50 ++ src/engine/platform/sound/c64_fp/README | 20 + src/engine/platform/sound/c64_fp/SID.cpp | 504 ++++++++++++++++++ src/engine/platform/sound/c64_fp/SID.h | 372 +++++++++++++ src/engine/platform/sound/c64_fp/Spline.cpp | 119 +++++ src/engine/platform/sound/c64_fp/Spline.h | 78 +++ src/engine/platform/sound/c64_fp/Voice.h | 130 +++++ .../sound/c64_fp/WaveformCalculator.cpp | 204 +++++++ .../sound/c64_fp/WaveformCalculator.h | 128 +++++ .../sound/c64_fp/WaveformGenerator.cpp | 357 +++++++++++++ .../platform/sound/c64_fp/WaveformGenerator.h | 396 ++++++++++++++ src/engine/platform/sound/c64_fp/array.h | 73 +++ .../sound/c64_fp/resample/Resampler.h | 86 +++ .../sound/c64_fp/resample/SincResampler.cpp | 393 ++++++++++++++ .../sound/c64_fp/resample/SincResampler.h | 114 ++++ .../c64_fp/resample/TwoPassSincResampler.h | 83 +++ .../c64_fp/resample/ZeroOrderResampler.h | 88 +++ .../platform/sound/c64_fp/resample/test.cpp | 87 +++ src/engine/platform/sound/c64_fp/sidcxx11.h | 29 + src/engine/platform/sound/c64_fp/sidcxx14.h | 29 + src/engine/platform/sound/c64_fp/siddefs-fp.h | 62 +++ src/engine/platform/sound/c64_fp/version.cc | 21 + src/gui/about.cpp | 2 + src/gui/gui.h | 2 + src/gui/settings.cpp | 12 + src/main.cpp | 1 + 53 files changed, 7639 insertions(+) create mode 100644 src/engine/platform/sound/c64_fp/AUTHORS create mode 100644 src/engine/platform/sound/c64_fp/COPYING create mode 100644 src/engine/platform/sound/c64_fp/Dac.cpp create mode 100644 src/engine/platform/sound/c64_fp/Dac.h create mode 100644 src/engine/platform/sound/c64_fp/EnvelopeGenerator.cpp create mode 100644 src/engine/platform/sound/c64_fp/EnvelopeGenerator.h create mode 100644 src/engine/platform/sound/c64_fp/ExternalFilter.cpp create mode 100644 src/engine/platform/sound/c64_fp/ExternalFilter.h create mode 100644 src/engine/platform/sound/c64_fp/Filter.cpp create mode 100644 src/engine/platform/sound/c64_fp/Filter.h create mode 100644 src/engine/platform/sound/c64_fp/Filter6581.cpp create mode 100644 src/engine/platform/sound/c64_fp/Filter6581.h create mode 100644 src/engine/platform/sound/c64_fp/Filter8580.cpp create mode 100644 src/engine/platform/sound/c64_fp/Filter8580.h create mode 100644 src/engine/platform/sound/c64_fp/FilterModelConfig.cpp create mode 100644 src/engine/platform/sound/c64_fp/FilterModelConfig.h create mode 100644 src/engine/platform/sound/c64_fp/FilterModelConfig6581.cpp create mode 100644 src/engine/platform/sound/c64_fp/FilterModelConfig6581.h create mode 100644 src/engine/platform/sound/c64_fp/FilterModelConfig8580.cpp create mode 100644 src/engine/platform/sound/c64_fp/FilterModelConfig8580.h create mode 100644 src/engine/platform/sound/c64_fp/Integrator6581.cpp create mode 100644 src/engine/platform/sound/c64_fp/Integrator6581.h create mode 100644 src/engine/platform/sound/c64_fp/Integrator8580.cpp create mode 100644 src/engine/platform/sound/c64_fp/Integrator8580.h create mode 100644 src/engine/platform/sound/c64_fp/OpAmp.cpp create mode 100644 src/engine/platform/sound/c64_fp/OpAmp.h create mode 100644 src/engine/platform/sound/c64_fp/Potentiometer.h create mode 100644 src/engine/platform/sound/c64_fp/README create mode 100644 src/engine/platform/sound/c64_fp/SID.cpp create mode 100644 src/engine/platform/sound/c64_fp/SID.h create mode 100644 src/engine/platform/sound/c64_fp/Spline.cpp create mode 100644 src/engine/platform/sound/c64_fp/Spline.h create mode 100644 src/engine/platform/sound/c64_fp/Voice.h create mode 100644 src/engine/platform/sound/c64_fp/WaveformCalculator.cpp create mode 100644 src/engine/platform/sound/c64_fp/WaveformCalculator.h create mode 100644 src/engine/platform/sound/c64_fp/WaveformGenerator.cpp create mode 100644 src/engine/platform/sound/c64_fp/WaveformGenerator.h create mode 100644 src/engine/platform/sound/c64_fp/array.h create mode 100644 src/engine/platform/sound/c64_fp/resample/Resampler.h create mode 100755 src/engine/platform/sound/c64_fp/resample/SincResampler.cpp create mode 100644 src/engine/platform/sound/c64_fp/resample/SincResampler.h create mode 100644 src/engine/platform/sound/c64_fp/resample/TwoPassSincResampler.h create mode 100644 src/engine/platform/sound/c64_fp/resample/ZeroOrderResampler.h create mode 100644 src/engine/platform/sound/c64_fp/resample/test.cpp create mode 100644 src/engine/platform/sound/c64_fp/sidcxx11.h create mode 100644 src/engine/platform/sound/c64_fp/sidcxx14.h create mode 100644 src/engine/platform/sound/c64_fp/siddefs-fp.h create mode 100644 src/engine/platform/sound/c64_fp/version.cc diff --git a/CMakeLists.txt b/CMakeLists.txt index b47d2a74..ff7db42e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -368,6 +368,24 @@ src/engine/platform/sound/c64/wave8580_PST.cc src/engine/platform/sound/c64/wave8580_P_T.cc src/engine/platform/sound/c64/wave8580__ST.cc +src/engine/platform/sound/c64_fp/Dac.cpp +src/engine/platform/sound/c64_fp/EnvelopeGenerator.cpp +src/engine/platform/sound/c64_fp/ExternalFilter.cpp +src/engine/platform/sound/c64_fp/Filter6581.cpp +src/engine/platform/sound/c64_fp/Filter8580.cpp +src/engine/platform/sound/c64_fp/Filter.cpp +src/engine/platform/sound/c64_fp/FilterModelConfig6581.cpp +src/engine/platform/sound/c64_fp/FilterModelConfig8580.cpp +src/engine/platform/sound/c64_fp/FilterModelConfig.cpp +src/engine/platform/sound/c64_fp/Integrator6581.cpp +src/engine/platform/sound/c64_fp/Integrator8580.cpp +src/engine/platform/sound/c64_fp/OpAmp.cpp +src/engine/platform/sound/c64_fp/SID.cpp +src/engine/platform/sound/c64_fp/Spline.cpp +src/engine/platform/sound/c64_fp/WaveformCalculator.cpp +src/engine/platform/sound/c64_fp/WaveformGenerator.cpp +src/engine/platform/sound/c64_fp/resample/SincResampler.cpp + src/engine/platform/sound/tia/TIASnd.cpp src/engine/platform/sound/ymfm/ymfm_adpcm.cpp diff --git a/src/engine/platform/sound/c64_fp/AUTHORS b/src/engine/platform/sound/c64_fp/AUTHORS new file mode 100644 index 00000000..b04ee0f0 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/AUTHORS @@ -0,0 +1,6 @@ +Authors of reSIDfp. + +Dag Lem: Designed and programmed complete emulation engine. +Antti S. Lankila: Distortion simulation and calculation of combined waveforms +Ken HƤndel: source code conversion to Java +Leandro Nini: port to c++, merge with reSID 1.0 diff --git a/src/engine/platform/sound/c64_fp/COPYING b/src/engine/platform/sound/c64_fp/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/src/engine/platform/sound/c64_fp/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/src/engine/platform/sound/c64_fp/Dac.cpp b/src/engine/platform/sound/c64_fp/Dac.cpp new file mode 100644 index 00000000..0665da81 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Dac.cpp @@ -0,0 +1,123 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2016 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "Dac.h" + +namespace reSIDfp +{ + +Dac::Dac(unsigned int bits) : + dac(new double[bits]), + dacLength(bits) +{} + +Dac::~Dac() +{ + delete [] dac; +} + +double Dac::getOutput(unsigned int input) const +{ + double dacValue = 0.; + + for (unsigned int i = 0; i < dacLength; i++) + { + if ((input & (1 << i)) != 0) + { + dacValue += dac[i]; + } + } + + return dacValue; +} + +void Dac::kinkedDac(ChipModel chipModel) +{ + const double R_INFINITY = 1e6; + + // Non-linearity parameter, 8580 DACs are perfectly linear + const double _2R_div_R = chipModel == MOS6581 ? 2.20 : 2.00; + + // 6581 DACs are not terminated by a 2R resistor + const bool term = chipModel == MOS8580; + + // Calculate voltage contribution by each individual bit in the R-2R ladder. + for (unsigned int set_bit = 0; set_bit < dacLength; set_bit++) + { + double Vn = 1.; // Normalized bit voltage. + double R = 1.; // Normalized R + const double _2R = _2R_div_R * R; // 2R + double Rn = term ? // Rn = 2R for correct termination, + _2R : R_INFINITY; // INFINITY for missing termination. + + unsigned int bit; + + // Calculate DAC "tail" resistance by repeated parallel substitution. + for (bit = 0; bit < set_bit; bit++) + { + Rn = (Rn == R_INFINITY) ? + R + _2R : + R + (_2R * Rn) / (_2R + Rn); // R + 2R || Rn + } + + // Source transformation for bit voltage. + if (Rn == R_INFINITY) + { + Rn = _2R; + } + else + { + Rn = (_2R * Rn) / (_2R + Rn); // 2R || Rn + Vn = Vn * Rn / _2R; + } + + // Calculate DAC output voltage by repeated source transformation from + // the "tail". + + for (++bit; bit < dacLength; bit++) + { + Rn += R; + const double I = Vn / Rn; + Rn = (_2R * Rn) / (_2R + Rn); // 2R || Rn + Vn = Rn * I; + } + + dac[set_bit] = Vn; + } + + // Normalize to integerish behavior + double Vsum = 0.; + + for (unsigned int i = 0; i < dacLength; i++) + { + Vsum += dac[i]; + } + + Vsum /= 1 << dacLength; + + for (unsigned int i = 0; i < dacLength; i++) + { + dac[i] /= Vsum; + } +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/Dac.h b/src/engine/platform/sound/c64_fp/Dac.h new file mode 100644 index 00000000..35bc0b2c --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Dac.h @@ -0,0 +1,111 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2016 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef DAC_H +#define DAC_H + +#include "siddefs-fp.h" + +namespace reSIDfp +{ + +/** + * Estimate DAC nonlinearity. + * The SID DACs are built up as R-2R ladder as follows: + * + * n n-1 2 1 0 VGND + * | | | | | | Termination + * 2R 2R 2R 2R 2R 2R only for + * | | | | | | MOS 8580 + * Vo -o-R-o-R-...-o-R-o-R-- --+ + * + * + * All MOS 6581 DACs are missing a termination resistor at bit 0. This causes + * pronounced errors for the lower 4 - 5 bits (e.g. the output for bit 0 is + * actually equal to the output for bit 1), resulting in DAC discontinuities + * for the lower bits. + * In addition to this, the 6581 DACs exhibit further severe discontinuities + * for higher bits, which may be explained by a less than perfect match between + * the R and 2R resistors, or by output impedance in the NMOS transistors + * providing the bit voltages. A good approximation of the actual DAC output is + * achieved for 2R/R ~ 2.20. + * + * The MOS 8580 DACs, on the other hand, do not exhibit any discontinuities. + * These DACs include the correct termination resistor, and also seem to have + * very accurately matched R and 2R resistors (2R/R = 2.00). + * + * On the 6581 the output of the waveform and envelope DACs go through + * a voltage follower built with two NMOS: + * + * Vdd + * + * | + * |-+ + * Vin -------| T1 (enhancement-mode) + * |-+ + * | + * o-------- Vout + * | + * |-+ + * +---| T2 (depletion-mode) + * | |-+ + * | | + * + * GND GND + */ +class Dac +{ +private: + /// analog values + double * const dac; + + /// the dac array length + const unsigned int dacLength; + +public: + /** + * Initialize DAC model. + * + * @param bits the number of input bits + */ + Dac(unsigned int bits); + ~Dac(); + + /** + * Build DAC model for specific chip. + * + * @param chipModel 6581 or 8580 + */ + void kinkedDac(ChipModel chipModel); + + /** + * Get the Vo output for a given combination of input bits. + * + * @param input the digital input + * @return the analog output value + */ + double getOutput(unsigned int input) const; +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/EnvelopeGenerator.cpp b/src/engine/platform/sound/c64_fp/EnvelopeGenerator.cpp new file mode 100644 index 00000000..af636ac7 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/EnvelopeGenerator.cpp @@ -0,0 +1,155 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2018 VICE Project + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define ENVELOPEGENERATOR_CPP + +#include "EnvelopeGenerator.h" + +namespace reSIDfp +{ + +/** + * Lookup table to convert from attack, decay, or release value to rate + * counter period. + * + * The rate counter is a 15 bit register which is left shifted each cycle. + * When the counter reaches a specific comparison value, + * the envelope counter is incremented (attack) or decremented + * (decay/release) and the rate counter is resetted. + * + * see [kevtris.org](http://blog.kevtris.org/?p=13) + */ +const unsigned int EnvelopeGenerator::adsrtable[16] = +{ + 0x007f, + 0x3000, + 0x1e00, + 0x0660, + 0x0182, + 0x5573, + 0x000e, + 0x3805, + 0x2424, + 0x2220, + 0x090c, + 0x0ecd, + 0x010e, + 0x23f7, + 0x5237, + 0x64a8 +}; + +void EnvelopeGenerator::reset() +{ + // counter is not changed on reset + envelope_pipeline = 0; + + state_pipeline = 0; + + attack = 0; + decay = 0; + sustain = 0; + release = 0; + + gate = false; + + resetLfsr = true; + + exponential_counter = 0; + exponential_counter_period = 1; + new_exponential_counter_period = 0; + + state = RELEASE; + counter_enabled = true; + rate = adsrtable[release]; +} + +void EnvelopeGenerator::writeCONTROL_REG(unsigned char control) +{ + const bool gate_next = (control & 0x01) != 0; + + if (gate_next != gate) + { + gate = gate_next; + + // The rate counter is never reset, thus there will be a delay before the + // envelope counter starts counting up (attack) or down (release). + + if (gate_next) + { + // Gate bit on: Start attack, decay, sustain. + next_state = ATTACK; + state_pipeline = 2; + + if (resetLfsr || (exponential_pipeline == 2)) + { + envelope_pipeline = (exponential_counter_period == 1) || (exponential_pipeline == 2) ? 2 : 4; + } + else if (exponential_pipeline == 1) + { + state_pipeline = 3; + } + } + else + { + // Gate bit off: Start release. + next_state = RELEASE; + state_pipeline = envelope_pipeline > 0 ? 3 : 2; + } + } +} + +void EnvelopeGenerator::writeATTACK_DECAY(unsigned char attack_decay) +{ + attack = (attack_decay >> 4) & 0x0f; + decay = attack_decay & 0x0f; + + if (state == ATTACK) + { + rate = adsrtable[attack]; + } + else if (state == DECAY_SUSTAIN) + { + rate = adsrtable[decay]; + } +} + +void EnvelopeGenerator::writeSUSTAIN_RELEASE(unsigned char sustain_release) +{ + // From the sustain levels it follows that both the low and high 4 bits + // of the envelope counter are compared to the 4-bit sustain value. + // This has been verified by sampling ENV3. + // + // For a detailed description see: + // http://ploguechipsounds.blogspot.it/2010/11/new-research-on-sid-adsr.html + sustain = (sustain_release & 0xf0) | ((sustain_release >> 4) & 0x0f); + + release = sustain_release & 0x0f; + + if (state == RELEASE) + { + rate = adsrtable[release]; + } +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/EnvelopeGenerator.h b/src/engine/platform/sound/c64_fp/EnvelopeGenerator.h new file mode 100644 index 00000000..f2aab387 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/EnvelopeGenerator.h @@ -0,0 +1,419 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2018 VICE Project + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef ENVELOPEGENERATOR_H +#define ENVELOPEGENERATOR_H + +#include "siddefs-fp.h" + +namespace reSIDfp +{ + +/** + * A 15 bit [LFSR] is used to implement the envelope rates, in effect dividing + * the clock to the envelope counter by the currently selected rate period. + * + * In addition, another 5 bit counter is used to implement the exponential envelope decay, + * in effect further dividing the clock to the envelope counter. + * The period of this counter is set to 1, 2, 4, 8, 16, 30 at the envelope counter + * values 255, 93, 54, 26, 14, 6, respectively. + * + * [LFSR]: https://en.wikipedia.org/wiki/Linear_feedback_shift_register + */ +class EnvelopeGenerator +{ +private: + /** + * The envelope state machine's distinct states. In addition to this, + * envelope has a hold mode, which freezes envelope counter to zero. + */ + enum State + { + ATTACK, DECAY_SUSTAIN, RELEASE + }; + +private: + /// XOR shift register for ADSR prescaling. + unsigned int lfsr; + + /// Comparison value (period) of the rate counter before next event. + unsigned int rate; + + /** + * During release mode, the SID approximates envelope decay via piecewise + * linear decay rate. + */ + unsigned int exponential_counter; + + /** + * Comparison value (period) of the exponential decay counter before next + * decrement. + */ + unsigned int exponential_counter_period; + unsigned int new_exponential_counter_period; + + unsigned int state_pipeline; + + /// + unsigned int envelope_pipeline; + + unsigned int exponential_pipeline; + + /// Current envelope state + State state; + State next_state; + + /// Whether counter is enabled. Only switching to ATTACK can release envelope. + bool counter_enabled; + + /// Gate bit + bool gate; + + /// + bool resetLfsr; + + /// The current digital value of envelope output. + unsigned char envelope_counter; + + /// Attack register + unsigned char attack; + + /// Decay register + unsigned char decay; + + /// Sustain register + unsigned char sustain; + + /// Release register + unsigned char release; + + /// The ENV3 value, sampled at the first phase of the clock + unsigned char env3; + +private: + static const unsigned int adsrtable[16]; + +private: + void set_exponential_counter(); + + void state_change(); + +public: + /** + * SID clocking. + */ + void clock(); + + /** + * Get the Envelope Generator digital output. + */ + unsigned int output() const { return envelope_counter; } + + /** + * Constructor. + */ + EnvelopeGenerator() : + lfsr(0x7fff), + rate(0), + exponential_counter(0), + exponential_counter_period(1), + new_exponential_counter_period(0), + state_pipeline(0), + envelope_pipeline(0), + exponential_pipeline(0), + state(RELEASE), + next_state(RELEASE), + counter_enabled(true), + gate(false), + resetLfsr(false), + envelope_counter(0xaa), + attack(0), + decay(0), + sustain(0), + release(0), + env3(0) + {} + + /** + * SID reset. + */ + void reset(); + + /** + * Write control register. + * + * @param control + * control register value + */ + void writeCONTROL_REG(unsigned char control); + + /** + * Write Attack/Decay register. + * + * @param attack_decay + * attack/decay value + */ + void writeATTACK_DECAY(unsigned char attack_decay); + + /** + * Write Sustain/Release register. + * + * @param sustain_release + * sustain/release value + */ + void writeSUSTAIN_RELEASE(unsigned char sustain_release); + + /** + * Return the envelope current value. + * + * @return envelope counter value + */ + unsigned char readENV() const { return env3; } +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(ENVELOPEGENERATOR_CPP) + +namespace reSIDfp +{ + +RESID_INLINE +void EnvelopeGenerator::clock() +{ + env3 = envelope_counter; + + if (unlikely(new_exponential_counter_period > 0)) + { + exponential_counter_period = new_exponential_counter_period; + new_exponential_counter_period = 0; + } + + if (unlikely(state_pipeline)) + { + state_change(); + } + + if (unlikely(envelope_pipeline != 0) && (--envelope_pipeline == 0)) + { + if (likely(counter_enabled)) + { + if (state == ATTACK) + { + if (++envelope_counter==0xff) + { + next_state = DECAY_SUSTAIN; + state_pipeline = 3; + } + } + else if ((state == DECAY_SUSTAIN) || (state == RELEASE)) + { + if (--envelope_counter==0x00) + { + counter_enabled = false; + } + } + + set_exponential_counter(); + } + } + else if (unlikely(exponential_pipeline != 0) && (--exponential_pipeline == 0)) + { + exponential_counter = 0; + + if (((state == DECAY_SUSTAIN) && (envelope_counter != sustain)) + || (state == RELEASE)) + { + // The envelope counter can flip from 0x00 to 0xff by changing state to + // attack, then to release. The envelope counter will then continue + // counting down in the release state. + // This has been verified by sampling ENV3. + + envelope_pipeline = 1; + } + } + else if (unlikely(resetLfsr)) + { + lfsr = 0x7fff; + resetLfsr = false; + + if (state == ATTACK) + { + // The first envelope step in the attack state also resets the exponential + // counter. This has been verified by sampling ENV3. + exponential_counter = 0; // NOTE this is actually delayed one cycle, not modeled + + // The envelope counter can flip from 0xff to 0x00 by changing state to + // release, then to attack. The envelope counter is then frozen at + // zero; to unlock this situation the state must be changed to release, + // then to attack. This has been verified by sampling ENV3. + + envelope_pipeline = 2; + } + else + { + if (counter_enabled && (++exponential_counter == exponential_counter_period)) + exponential_pipeline = exponential_counter_period != 1 ? 2 : 1; + } + } + + // ADSR delay bug. + // If the rate counter comparison value is set below the current value of the + // rate counter, the counter will continue counting up until it wraps around + // to zero at 2^15 = 0x8000, and then count rate_period - 1 before the + // envelope can constly be stepped. + // This has been verified by sampling ENV3. + + // check to see if LFSR matches table value + if (likely(lfsr != rate)) + { + // it wasn't a match, clock the LFSR once + // by performing XOR on last 2 bits + const unsigned int feedback = ((lfsr << 14) ^ (lfsr << 13)) & 0x4000; + lfsr = (lfsr >> 1) | feedback; + } + else + { + resetLfsr = true; + } +} + +/** + * This is what happens on chip during state switching, + * based on die reverse engineering and transistor level + * emulation. + * + * Attack + * + * 0 - Gate on + * 1 - Counting direction changes + * During this cycle the decay rate is "accidentally" activated + * 2 - Counter is being inverted + * Now the attack rate is correctly activated + * Counter is enabled + * 3 - Counter will be counting upward from now on + * + * Decay + * + * 0 - Counter == $ff + * 1 - Counting direction changes + * The attack state is still active + * 2 - Counter is being inverted + * During this cycle the decay state is activated + * 3 - Counter will be counting downward from now on + * + * Release + * + * 0 - Gate off + * 1 - During this cycle the release state is activated if coming from sustain/decay + * *2 - Counter is being inverted, the release state is activated + * *3 - Counter will be counting downward from now on + * + * (* only if coming directly from Attack state) + * + * Freeze + * + * 0 - Counter == $00 + * 1 - Nothing + * 2 - Counter is disabled + */ +RESID_INLINE +void EnvelopeGenerator::state_change() +{ + state_pipeline--; + + switch (next_state) + { + case ATTACK: + if (state_pipeline == 1) + { + // The decay rate is "accidentally" enabled during first cycle of attack phase + rate = adsrtable[decay]; + } + else if (state_pipeline == 0) + { + state = ATTACK; + // The attack rate is correctly enabled during second cycle of attack phase + rate = adsrtable[attack]; + counter_enabled = true; + } + break; + case DECAY_SUSTAIN: + if (state_pipeline == 0) + { + state = DECAY_SUSTAIN; + rate = adsrtable[decay]; + } + break; + case RELEASE: + if (((state == ATTACK) && (state_pipeline == 0)) + || ((state == DECAY_SUSTAIN) && (state_pipeline == 1))) + { + state = RELEASE; + rate = adsrtable[release]; + } + break; + } +} + +RESID_INLINE +void EnvelopeGenerator::set_exponential_counter() +{ + // Check for change of exponential counter period. + // + // For a detailed description see: + // http://ploguechipsounds.blogspot.it/2010/03/sid-6581r3-adsr-tables-up-close.html + switch (envelope_counter) + { + case 0xff: + case 0x00: + new_exponential_counter_period = 1; + break; + + case 0x5d: + new_exponential_counter_period = 2; + break; + + case 0x36: + new_exponential_counter_period = 4; + break; + + case 0x1a: + new_exponential_counter_period = 8; + break; + + case 0x0e: + new_exponential_counter_period = 16; + break; + + case 0x06: + new_exponential_counter_period = 30; + break; + } +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/ExternalFilter.cpp b/src/engine/platform/sound/c64_fp/ExternalFilter.cpp new file mode 100644 index 00000000..eac790b3 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/ExternalFilter.cpp @@ -0,0 +1,68 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define EXTERNALFILTER_CPP + +#include "ExternalFilter.h" + +namespace reSIDfp +{ + +/** + * Get the 3 dB attenuation point. + * + * @param res the resistance value in Ohms + * @param cap the capacitance value in Farads + */ +inline double getRC(double res, double cap) +{ + return res * cap; +} + +ExternalFilter::ExternalFilter() : + w0lp_1_s7(0), + w0hp_1_s17(0) +{ + reset(); +} + +void ExternalFilter::setClockFrequency(double frequency) +{ + const double dt = 1. / frequency; + + // Low-pass: R = 10kOhm, C = 1000pF; w0l = dt/(dt+RC) = 1e-6/(1e-6+1e4*1e-9) = 0.091 + // Cutoff 1/2*PI*RC = 1/2*PI*1e4*1e-9 = 15915.5 Hz + w0lp_1_s7 = static_cast((dt / (dt + getRC(10e3, 1000e-12))) * (1 << 7) + 0.5); + + // High-pass: R = 10kOhm, C = 10uF; w0h = dt/(dt+RC) = 1e-6/(1e-6+1e4*1e-5) = 0.00000999 + // Cutoff 1/2*PI*RC = 1/2*PI*1e4*1e-5 = 1.59155 Hz + w0hp_1_s17 = static_cast((dt / (dt + getRC(10e3, 10e-6))) * (1 << 17) + 0.5); +} + +void ExternalFilter::reset() +{ + // State of filter. + Vlp = 0; //1 << (15 + 11); + Vhp = 0; +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/ExternalFilter.h b/src/engine/platform/sound/c64_fp/ExternalFilter.h new file mode 100644 index 00000000..760ee5c2 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/ExternalFilter.h @@ -0,0 +1,125 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef EXTERNALFILTER_H +#define EXTERNALFILTER_H + +#include "siddefs-fp.h" + +namespace reSIDfp +{ + +/** + * The audio output stage in a Commodore 64 consists of two STC networks, a + * low-pass RC filter with 3 dB frequency 16kHz followed by a DC-blocker which + * acts as a high-pass filter with a cutoff dependent on the attached audio + * equipment impedance. Here we suppose an impedance of 10kOhm resulting + * in a 3 dB attenuation at 1.6Hz. + * To operate properly the 6581 audio output needs a pull-down resistor + *(1KOhm recommended, not needed on 8580) + * + * ~~~ + * 9/12V + * -----+ + * audio| 10k | + * +---o----R---o--------o-----(K) +----- + * out | | | | | |audio + * -----+ R 1k C 1000 | | 10 uF | + * | | pF +-C----o-----C-----+ 10k + * 470 | | + * GND GND pF R 1K | amp + * * * | +----- + * + * GND + * ~~~ + * + * The STC networks are connected with a [BJT] based [common collector] + * used as a voltage follower (featuring a 2SC1815 NPN transistor). + * * The C64c board additionally includes a [bootstrap] condenser to increase + * the input impedance of the common collector. + * + * [BJT]: https://en.wikipedia.org/wiki/Bipolar_junction_transistor + * [common collector]: https://en.wikipedia.org/wiki/Common_collector + * [bootstrap]: https://en.wikipedia.org/wiki/Bootstrapping_(electronics) + */ +class ExternalFilter +{ +private: + /// Lowpass filter voltage + int Vlp; + + /// Highpass filter voltage + int Vhp; + + int w0lp_1_s7; + + int w0hp_1_s17; + +public: + /** + * SID clocking. + * + * @param input + */ + int clock(unsigned short input); + + /** + * Constructor. + */ + ExternalFilter(); + + /** + * Setup of the external filter sampling parameters. + * + * @param frequency the main system clock frequency + */ + void setClockFrequency(double frequency); + + /** + * SID reset. + */ + void reset(); +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(EXTERNALFILTER_CPP) + +namespace reSIDfp +{ + +RESID_INLINE +int ExternalFilter::clock(unsigned short input) +{ + const int Vi = (static_cast(input)<<11) - (1 << (11+15)); + const int dVlp = (w0lp_1_s7 * (Vi - Vlp) >> 7); + const int dVhp = (w0hp_1_s17 * (Vlp - Vhp) >> 17); + Vlp += dVlp; + Vhp += dVhp; + return (Vlp - Vhp) >> 11; +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/Filter.cpp b/src/engine/platform/sound/c64_fp/Filter.cpp new file mode 100644 index 00000000..2a2dd24f --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Filter.cpp @@ -0,0 +1,90 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2013 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "Filter.h" + +namespace reSIDfp +{ + +void Filter::enable(bool enable) +{ + enabled = enable; + + if (enabled) + { + writeRES_FILT(filt); + } + else + { + filt1 = filt2 = filt3 = filtE = false; + } +} + +void Filter::reset() +{ + writeFC_LO(0); + writeFC_HI(0); + writeMODE_VOL(0); + writeRES_FILT(0); +} + +void Filter::writeFC_LO(unsigned char fc_lo) +{ + fc = (fc & 0x7f8) | (fc_lo & 0x007); + updatedCenterFrequency(); +} + +void Filter::writeFC_HI(unsigned char fc_hi) +{ + fc = (fc_hi << 3 & 0x7f8) | (fc & 0x007); + updatedCenterFrequency(); +} + +void Filter::writeRES_FILT(unsigned char res_filt) +{ + filt = res_filt; + + updateResonance((res_filt >> 4) & 0x0f); + + if (enabled) + { + filt1 = (filt & 0x01) != 0; + filt2 = (filt & 0x02) != 0; + filt3 = (filt & 0x04) != 0; + filtE = (filt & 0x08) != 0; + } + + updatedMixing(); +} + +void Filter::writeMODE_VOL(unsigned char mode_vol) +{ + vol = mode_vol & 0x0f; + lp = (mode_vol & 0x10) != 0; + bp = (mode_vol & 0x20) != 0; + hp = (mode_vol & 0x40) != 0; + voice3off = (mode_vol & 0x80) != 0; + + updatedMixing(); +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/Filter.h b/src/engine/platform/sound/c64_fp/Filter.h new file mode 100644 index 00000000..4b347336 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Filter.h @@ -0,0 +1,177 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2017 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef FILTER_H +#define FILTER_H + +namespace reSIDfp +{ + +/** + * SID filter base class + */ +class Filter +{ +protected: + /// Current volume amplifier setting. + unsigned short* currentGain; + + /// Current filter/voice mixer setting. + unsigned short* currentMixer; + + /// Filter input summer setting. + unsigned short* currentSummer; + + /// Filter resonance value. + unsigned short* currentResonance; + + /// Filter highpass state. + int Vhp; + + /// Filter bandpass state. + int Vbp; + + /// Filter lowpass state. + int Vlp; + + /// Filter external input. + int ve; + + /// Filter cutoff frequency. + unsigned int fc; + + /// Routing to filter or outside filter + bool filt1, filt2, filt3, filtE; + + /// Switch voice 3 off. + bool voice3off; + + /// Highpass, bandpass, and lowpass filter modes. + bool hp, bp, lp; + + /// Current volume. + unsigned char vol; + +private: + /// Filter enabled. + bool enabled; + + /// Selects which inputs to route through filter. + unsigned char filt; + +protected: + /** + * Set filter cutoff frequency. + */ + virtual void updatedCenterFrequency() = 0; + + /** + * Set filter resonance. + */ + virtual void updateResonance(unsigned char res) = 0; + + /** + * Mixing configuration modified (offsets change) + */ + virtual void updatedMixing() = 0; + +public: + Filter() : + currentGain(nullptr), + currentMixer(nullptr), + currentSummer(nullptr), + currentResonance(nullptr), + Vhp(0), + Vbp(0), + Vlp(0), + ve(0), + fc(0), + filt1(false), + filt2(false), + filt3(false), + filtE(false), + voice3off(false), + hp(false), + bp(false), + lp(false), + vol(0), + enabled(true), + filt(0) {} + + virtual ~Filter() {} + + /** + * SID clocking - 1 cycle + * + * @param v1 voice 1 in + * @param v2 voice 2 in + * @param v3 voice 3 in + * @return filtered output + */ + virtual unsigned short clock(int v1, int v2, int v3) = 0; + + /** + * Enable filter. + * + * @param enable + */ + void enable(bool enable); + + /** + * SID reset. + */ + void reset(); + + /** + * Write Frequency Cutoff Low register. + * + * @param fc_lo Frequency Cutoff Low-Byte + */ + void writeFC_LO(unsigned char fc_lo); + + /** + * Write Frequency Cutoff High register. + * + * @param fc_hi Frequency Cutoff High-Byte + */ + void writeFC_HI(unsigned char fc_hi); + + /** + * Write Resonance/Filter register. + * + * @param res_filt Resonance/Filter + */ + void writeRES_FILT(unsigned char res_filt); + + /** + * Write filter Mode/Volume register. + * + * @param mode_vol Filter Mode/Volume + */ + void writeMODE_VOL(unsigned char mode_vol); + + virtual void input(int input) = 0; +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/Filter6581.cpp b/src/engine/platform/sound/c64_fp/Filter6581.cpp new file mode 100644 index 00000000..c064a880 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Filter6581.cpp @@ -0,0 +1,75 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2015 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define FILTER6581_CPP + +#include "Filter6581.h" + +#include "Integrator6581.h" + +namespace reSIDfp +{ + +Filter6581::~Filter6581() +{ + delete [] f0_dac; +} + +void Filter6581::updatedCenterFrequency() +{ + const unsigned short Vw = f0_dac[fc]; + hpIntegrator->setVw(Vw); + bpIntegrator->setVw(Vw); +} + +void Filter6581::updatedMixing() +{ + currentGain = gain_vol[vol]; + + unsigned int ni = 0; + unsigned int no = 0; + + (filt1 ? ni : no)++; + (filt2 ? ni : no)++; + + if (filt3) ni++; + else if (!voice3off) no++; + + (filtE ? ni : no)++; + + currentSummer = summer[ni]; + + if (lp) no++; + if (bp) no++; + if (hp) no++; + + currentMixer = mixer[no]; +} + +void Filter6581::setFilterCurve(double curvePosition) +{ + delete [] f0_dac; + f0_dac = FilterModelConfig6581::getInstance()->getDAC(curvePosition); + updatedCenterFrequency(); +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/Filter6581.h b/src/engine/platform/sound/c64_fp/Filter6581.h new file mode 100644 index 00000000..7fca331a --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Filter6581.h @@ -0,0 +1,425 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef FILTER6581_H +#define FILTER6581_H + +#include "siddefs-fp.h" + +#include + +#include "Filter.h" +#include "FilterModelConfig6581.h" + +#include "sidcxx11.h" + +namespace reSIDfp +{ + +class Integrator6581; + +/** + * The SID filter is modeled with a two-integrator-loop biquadratic filter, + * which has been confirmed by Bob Yannes to be the actual circuit used in + * the SID chip. + * + * Measurements show that excellent emulation of the SID filter is achieved, + * except when high resonance is combined with high sustain levels. + * In this case the SID op-amps are performing less than ideally and are + * causing some peculiar behavior of the SID filter. This however seems to + * have more effect on the overall amplitude than on the color of the sound. + * + * The theory for the filter circuit can be found in "Microelectric Circuits" + * by Adel S. Sedra and Kenneth C. Smith. + * The circuit is modeled based on the explanation found there except that + * an additional inverter is used in the feedback from the bandpass output, + * allowing the summer op-amp to operate in single-ended mode. This yields + * filter outputs with levels independent of Q, which corresponds with the + * results obtained from a real SID. + * + * We have been able to model the summer and the two integrators of the circuit + * to form components of an IIR filter. + * Vhp is the output of the summer, Vbp is the output of the first integrator, + * and Vlp is the output of the second integrator in the filter circuit. + * + * According to Bob Yannes, the active stages of the SID filter are not really + * op-amps. Rather, simple NMOS inverters are used. By biasing an inverter + * into its region of quasi-linear operation using a feedback resistor from + * input to output, a MOS inverter can be made to act like an op-amp for + * small signals centered around the switching threshold. + * + * In 2008, Michael Huth facilitated closer investigation of the SID 6581 + * filter circuit by publishing high quality microscope photographs of the die. + * Tommi Lempinen has done an impressive work on re-vectorizing and annotating + * the die photographs, substantially simplifying further analysis of the + * filter circuit. + * + * The filter schematics below are reverse engineered from these re-vectorized + * and annotated die photographs. While the filter first depicted in reSID 0.9 + * is a correct model of the basic filter, the schematics are now completed + * with the audio mixer and output stage, including details on intended + * relative resistor values. Also included are schematics for the NMOS FET + * voltage controlled resistors (VCRs) used to control cutoff frequency, the + * DAC which controls the VCRs, the NMOS op-amps, and the output buffer. + * + * + * SID filter / mixer / output + * --------------------------- + * ~~~ + * +---------------------------------------------------+ + * | | + * | +--1R1-- \--+ D7 | + * | +---R1--+ | | | + * | | | o--2R1-- \--o D6 | + * | +---------o----o--Rw--o--[A>--o--Rw--o--[A>--o + * ve (EXT IN) | | | | + * D3 \ ---------------R8--o | | (CAP2A) | (CAP1A) + * | v3 | | vhp | vbp | vlp + * D2 | \ -----------R8--o +-----+ | | + * | | v2 | | | | + * D1 | | \ -------R8--o | +----------------+ | + * | | | v1 | | | | + * D0 | | | \ ---R8--+ | | +---------------------------+ + * | | | | | | | + * R6 R6 R6 R6 R6 R6 R6 + * | | | | $18 | | | $18 + * | \ | | D7: 1=open \ \ \ D6 - D4: 0=open + * | | | | | | | + * +---o---o---o-------------o---o---+ 12V + * | + * | D3 +--/ --1R2--+ | + * | +---R8--+ | | +---R2--+ | + * | | | D2 o--/ --2R2--o | | ||--+ + * +---o--[A>--o------o o--o--[A>--o--|| + * D1 o--/ --4R2--o (4.25R2) ||--+ + * $18 | | | + * 0=open D0 +--/ --8R2--+ (8.75R2) | + * + * vo (AUDIO + * OUT) + * + * + * v1 - voice 1 + * v2 - voice 2 + * v3 - voice 3 + * ve - ext in + * vhp - highpass output + * vbp - bandpass output + * vlp - lowpass output + * vo - audio out + * [A> - single ended inverting op-amp (self-biased NMOS inverter) + * Rn - "resistors", implemented with custom NMOS FETs + * Rw - cutoff frequency resistor (VCR) + * C - capacitor + * ~~~ + * Notes: + * + * R2 ~ 2.0*R1 + * R6 ~ 6.0*R1 + * R8 ~ 8.0*R1 + * R24 ~ 24.0*R1 + * + * The Rn "resistors" in the circuit are implemented with custom NMOS FETs, + * probably because of space constraints on the SID die. The silicon substrate + * is laid out in a narrow strip or "snake", with a strip length proportional + * to the intended resistance. The polysilicon gate electrode covers the entire + * silicon substrate and is fixed at 12V in order for the NMOS FET to operate + * in triode mode (a.k.a. linear mode or ohmic mode). + * + * Even in "linear mode", an NMOS FET is only an approximation of a resistor, + * as the apparant resistance increases with increasing drain-to-source + * voltage. If the drain-to-source voltage should approach the gate voltage + * of 12V, the NMOS FET will enter saturation mode (a.k.a. active mode), and + * the NMOS FET will not operate anywhere like a resistor. + * + * + * + * NMOS FET voltage controlled resistor (VCR) + * ------------------------------------------ + * ~~~ + * Vw + * + * | + * | + * R1 + * | + * +--R1--o + * | __|__ + * | ----- + * | | | + * vi -----o----+ +--o----- vo + * | | + * +----R24----+ + * + * + * vi - input + * vo - output + * Rn - "resistors", implemented with custom NMOS FETs + * Vw - voltage from 11-bit DAC (frequency cutoff control) + * ~~~ + * Notes: + * + * An approximate value for R24 can be found by using the formula for the + * filter cutoff frequency: + * + * FCmin = 1/(2*pi*Rmax*C) + * + * Assuming that a the setting for minimum cutoff frequency in combination with + * a low level input signal ensures that only negligible current will flow + * through the transistor in the schematics above, values for FCmin and C can + * be substituted in this formula to find Rmax. + * Using C = 470pF and FCmin = 220Hz (measured value), we get: + * + * FCmin = 1/(2*pi*Rmax*C) + * Rmax = 1/(2*pi*FCmin*C) = 1/(2*pi*220*470e-12) ~ 1.5MOhm + * + * From this it follows that: + * R24 = Rmax ~ 1.5MOhm + * R1 ~ R24/24 ~ 64kOhm + * R2 ~ 2.0*R1 ~ 128kOhm + * R6 ~ 6.0*R1 ~ 384kOhm + * R8 ~ 8.0*R1 ~ 512kOhm + * + * Note that these are only approximate values for one particular SID chip, + * due to process variations the values can be substantially different in + * other chips. + * + * + * + * Filter frequency cutoff DAC + * --------------------------- + * + * ~~~ + * 12V 10 9 8 7 6 5 4 3 2 1 0 VGND + * | | | | | | | | | | | | | Missing + * 2R 2R 2R 2R 2R 2R 2R 2R 2R 2R 2R 2R 2R termination + * | | | | | | | | | | | | | + * Vw --o-R-o-R-o-R-o-R-o-R-o-R-o-R-o-R-o-R-o-R-o-R-o- -+ + * + * + * Bit on: 12V + * Bit off: 5V (VGND) + * ~~~ + * As is the case with all MOS 6581 DACs, the termination to (virtual) ground + * at bit 0 is missing. + * + * Furthermore, the control of the two VCRs imposes a load on the DAC output + * which varies with the input signals to the VCRs. This can be seen from the + * VCR figure above. + * + * + * + * "Op-amp" (self-biased NMOS inverter) + * ------------------------------------ + * ~~~ + * + * 12V + * + * | + * +-----------o + * | | + * | +------o + * | | | + * | | ||--+ + * | +--|| + * | ||--+ + * ||--+ | + * vi -----|| o---o----- vo + * ||--+ | | + * | ||--+ | + * |-------|| | + * | ||--+ | + * ||--+ | | + * +--|| | | + * | ||--+ | | + * | | | | + * | +-----------o | + * | | | + * | | + * | GND | + * | | + * +----------------------+ + * + * + * vi - input + * vo - output + * ~~~ + * Notes: + * + * The schematics above are laid out to show that the "op-amp" logically + * consists of two building blocks; a saturated load NMOS inverter (on the + * right hand side of the schematics) with a buffer / bias input stage + * consisting of a variable saturated load NMOS inverter (on the left hand + * side of the schematics). + * + * Provided a reasonably high input impedance and a reasonably low output + * impedance, the "op-amp" can be modeled as a voltage transfer function + * mapping input voltage to output voltage. + * + * + * + * Output buffer (NMOS voltage follower) + * ------------------------------------- + * ~~~ + * + * 12V + * + * | + * | + * ||--+ + * vi -----|| + * ||--+ + * | + * o------ vo + * | (AUDIO + * Rext OUT) + * | + * | + * + * GND + * + * vi - input + * vo - output + * Rext - external resistor, 1kOhm + * ~~~ + * Notes: + * + * The external resistor Rext is needed to complete the NMOS voltage follower, + * this resistor has a recommended value of 1kOhm. + * + * Die photographs show that actually, two NMOS transistors are used in the + * voltage follower. However the two transistors are coupled in parallel (all + * terminals are pairwise common), which implies that we can model the two + * transistors as one. + */ +class Filter6581 final : public Filter +{ +private: + const unsigned short* f0_dac; + + unsigned short** mixer; + unsigned short** summer; + unsigned short** gain_res; + unsigned short** gain_vol; + + const int voiceScaleS11; + const int voiceDC; + + /// VCR + associated capacitor connected to highpass output. + std::unique_ptr const hpIntegrator; + + /// VCR + associated capacitor connected to bandpass output. + std::unique_ptr const bpIntegrator; + +protected: + /** + * Set filter cutoff frequency. + */ + void updatedCenterFrequency() override; + + /** + * Set filter resonance. + * + * In the MOS 6581, 1/Q is controlled linearly by res. + */ + void updateResonance(unsigned char res) override { currentResonance = gain_res[res]; } + + void updatedMixing() override; + +public: + Filter6581() : + f0_dac(FilterModelConfig6581::getInstance()->getDAC(0.5)), + mixer(FilterModelConfig6581::getInstance()->getMixer()), + summer(FilterModelConfig6581::getInstance()->getSummer()), + gain_res(FilterModelConfig6581::getInstance()->getGainRes()), + gain_vol(FilterModelConfig6581::getInstance()->getGainVol()), + voiceScaleS11(FilterModelConfig6581::getInstance()->getVoiceScaleS11()), + voiceDC(FilterModelConfig6581::getInstance()->getNormalizedVoiceDC()), + hpIntegrator(FilterModelConfig6581::getInstance()->buildIntegrator()), + bpIntegrator(FilterModelConfig6581::getInstance()->buildIntegrator()) + { + input(0); + } + + ~Filter6581(); + + unsigned short clock(int voice1, int voice2, int voice3) override; + + void input(int sample) override { ve = (sample * voiceScaleS11 * 3 >> 11) + mixer[0][0]; } + + /** + * Set filter curve type based on single parameter. + * + * @param curvePosition 0 .. 1, where 0 sets center frequency high ("light") and 1 sets it low ("dark"), default is 0.5 + */ + void setFilterCurve(double curvePosition); +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(FILTER6581_CPP) + +#include "Integrator6581.h" + +namespace reSIDfp +{ + +RESID_INLINE +unsigned short Filter6581::clock(int voice1, int voice2, int voice3) +{ + voice1 = (voice1 * voiceScaleS11 >> 15) + voiceDC; + voice2 = (voice2 * voiceScaleS11 >> 15) + voiceDC; + // Voice 3 is silenced by voice3off if it is not routed through the filter. + voice3 = (filt3 || !voice3off) ? (voice3 * voiceScaleS11 >> 15) + voiceDC : 0; + + int Vi = 0; + int Vo = 0; + + (filt1 ? Vi : Vo) += voice1; + (filt2 ? Vi : Vo) += voice2; + (filt3 ? Vi : Vo) += voice3; + (filtE ? Vi : Vo) += ve; + + Vhp = currentSummer[currentResonance[Vbp] + Vlp + Vi]; + Vbp = hpIntegrator->solve(Vhp); + Vlp = bpIntegrator->solve(Vbp); + + if (lp) Vo += Vlp; + if (bp) Vo += Vbp; + if (hp) Vo += Vhp; + + return currentGain[currentMixer[Vo]]; +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/Filter8580.cpp b/src/engine/platform/sound/c64_fp/Filter8580.cpp new file mode 100644 index 00000000..a70285a8 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Filter8580.cpp @@ -0,0 +1,101 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2019 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define FILTER8580_CPP + +#include "Filter8580.h" + +#include "Integrator8580.h" + +namespace reSIDfp +{ + +/** + * W/L ratio of frequency DAC bit 0, + * other bit are proportional. + * When no bit are selected a resistance with half + * W/L ratio is selected. + */ +const double DAC_WL0 = 0.00615; + +Filter8580::~Filter8580() {} + +void Filter8580::updatedCenterFrequency() +{ + double wl; + double dacWL = DAC_WL0; + if (fc) + { + wl = 0.; + for (unsigned int i = 0; i < 11; i++) + { + if (fc & (1 << i)) + { + wl += dacWL; + } + dacWL *= 2.; + } + } + else + { + wl = dacWL/2.; + } + + hpIntegrator->setFc(wl); + bpIntegrator->setFc(wl); +} + +void Filter8580::updatedMixing() +{ + currentGain = gain_vol[vol]; + + unsigned int ni = 0; + unsigned int no = 0; + + (filt1 ? ni : no)++; + (filt2 ? ni : no)++; + + if (filt3) ni++; + else if (!voice3off) no++; + + (filtE ? ni : no)++; + + currentSummer = summer[ni]; + + if (lp) no++; + if (bp) no++; + if (hp) no++; + + currentMixer = mixer[no]; +} + +void Filter8580::setFilterCurve(double curvePosition) +{ + // Adjust cp + // 1.2 <= cp <= 1.8 + cp = 1.8 - curvePosition * 3./5.; + + hpIntegrator->setV(cp); + bpIntegrator->setV(cp); +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/Filter8580.h b/src/engine/platform/sound/c64_fp/Filter8580.h new file mode 100644 index 00000000..2166ec0d --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Filter8580.h @@ -0,0 +1,383 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef FILTER8580_H +#define FILTER8580_H + +#include "siddefs-fp.h" + +#include + +#include "Filter.h" +#include "FilterModelConfig8580.h" +#include "Integrator8580.h" + +#include "sidcxx11.h" + +namespace reSIDfp +{ + +class Integrator8580; + +/** + * Filter for 8580 chip + * -------------------- + * The 8580 filter stage had been redesigned to be more linear and robust + * against temperature change. It also features real op-amps and a + * revisited resonance model. + * The filter schematics below are reverse engineered from re-vectorized + * and annotated die photographs. Credits to Michael Huth for the microscope + * photographs of the die, Tommi Lempinen for re-vectorizating and annotating + * the images and ttlworks from forum.6502.org for the circuit analysis. + * + * ~~~ + * + * +---------------------------------------------------+ + * | $17 +----Rf-+ | + * | | | | + * | D4&!D5 o- \-R3-o | + * | | | $17 | + * | !D4&!D5 o- \-R2-o | + * | | | +---R8-- \--+ !D6&D7 | + * | D4&!D5 o- \-R1-o | | | + * | | | o---RC-- \--o D6&D7 | + * | +---------o----o--Rfc-o--[A>--o--Rfc-o--[A>--o + * ve (EXT IN) | | | | + * D3 \ --------------R12--o | | (CAP2A) | (CAP1A) + * | v3 | | vhp | vbp | vlp + * D2 | \ -----------R7--o +-----+ | | + * | | v2 | | | | + * D1 | | \ -------R7--o | +----------------+ | + * | | | v1 | | | | + * D0 | | | \ ---R7--+ | | +---------------------------+ + * | | | | | | | + * R9 R5 R5 R5 R5 R5 R5 + * | | | | $18 | | | $18 + * | \ | | D7: 1=open \ \ \ D6 - D4: 0=open + * | | | | | | | + * +---o---o---o-------------o---o---+ + * | + * | D3 +--/ --1R4--+ + * | +---R8--+ | | +---R2--+ + * | | | D2 o--/ --2R4--o | | + * +---o--[A>--o------o o--o--[A>--o-- vo (AUDIO OUT) + * D1 o--/ --4R4--o + * $18 | | + * 0=open D0 +--/ --8R4--+ + * + * + * + * Resonance + * --------- + * For resonance, we have two tiny DACs that controls both the input + * and feedback resistances. + * + * The "resistors" are switched in as follows by bits in register $17: + * + * feedback: + * R1: bit4&!bit5 + * R2: !bit4&bit5 + * R3: bit4&bit5 + * Rf: always on + * + * input: + * R4: bit6&!bit7 + * R8: !bit6&bit7 + * RC: bit6&bit7 + * Ri: !(R4|R8|RC) = !(bit6|bit7) = !bit6&!bit7 + * + * + * The relative "resistor" values are approximately (using channel length): + * + * R1 = 15.3*Ri + * R2 = 7.3*Ri + * R3 = 4.7*Ri + * Rf = 1.4*Ri + * R4 = 1.4*Ri + * R8 = 2.0*Ri + * RC = 2.8*Ri + * + * + * Approximate values for 1/Q can now be found as follows (assuming an + * ideal op-amp): + * + * res feedback input -gain (1/Q) + * --- -------- ----- ---------- + * 0 Rf Ri Rf/Ri = 1/(Ri*(1/Rf)) = 1/0.71 + * 1 Rf|R1 Ri (Rf|R1)/Ri = 1/(Ri*(1/Rf+1/R1)) = 1/0.78 + * 2 Rf|R2 Ri (Rf|R2)/Ri = 1/(Ri*(1/Rf+1/R2)) = 1/0.85 + * 3 Rf|R3 Ri (Rf|R3)/Ri = 1/(Ri*(1/Rf+1/R3)) = 1/0.92 + * 4 Rf R4 Rf/R4 = 1/(R4*(1/Rf)) = 1/1.00 + * 5 Rf|R1 R4 (Rf|R1)/R4 = 1/(R4*(1/Rf+1/R1)) = 1/1.10 + * 6 Rf|R2 R4 (Rf|R2)/R4 = 1/(R4*(1/Rf+1/R2)) = 1/1.20 + * 7 Rf|R3 R4 (Rf|R3)/R4 = 1/(R4*(1/Rf+1/R3)) = 1/1.30 + * 8 Rf R8 Rf/R8 = 1/(R8*(1/Rf)) = 1/1.43 + * 9 Rf|R1 R8 (Rf|R1)/R8 = 1/(R8*(1/Rf+1/R1)) = 1/1.56 + * A Rf|R2 R8 (Rf|R2)/R8 = 1/(R8*(1/Rf+1/R2)) = 1/1.70 + * B Rf|R3 R8 (Rf|R3)/R8 = 1/(R8*(1/Rf+1/R3)) = 1/1.86 + * C Rf RC Rf/RC = 1/(RC*(1/Rf)) = 1/2.00 + * D Rf|R1 RC (Rf|R1)/RC = 1/(RC*(1/Rf+1/R1)) = 1/2.18 + * E Rf|R2 RC (Rf|R2)/RC = 1/(RC*(1/Rf+1/R2)) = 1/2.38 + * F Rf|R3 RC (Rf|R3)/RC = 1/(RC*(1/Rf+1/R3)) = 1/2.60 + * + * + * These data indicate that the following function for 1/Q has been + * modeled in the MOS 8580: + * + * 1/Q = 2^(1/2)*2^(-x/8) = 2^(1/2 - x/8) = 2^((4 - x)/8) + * + * + * + * Op-amps + * ------- + * Unlike the 6581, the 8580 has real OpAmps. + * + * Temperature compensated differential amplifier: + * + * 9V + * + * | + * +-------o-o-o-------+ + * | | | | + * | R R | + * +--|| | | ||--+ + * ||---o o---|| + * +--|| | | ||--+ + * | | | | + * o-----+ | | o--- Va + * | | | | | + * +--|| | | | ||--+ + * ||-o-+---+---|| + * +--|| | | ||--+ + * | | | | + * | | + * GND | | GND + * ||--+ +--|| + * in- -----|| ||------ in+ + * ||----o----|| + * | + * 8 Current sink + * | + * + * GND + * + * Inverter + non-inverting output amplifier: + * + * Va ---o---||-------------------o--------------------+ + * | | 9V | + * | +----------+----------+ | | + * | 9V | | 9V | ||--+ | + * | | | 9V | | +-|| | + * | R | | | ||--+ ||--+ | + * | | | ||--+ +--|| o---o--- Vout + * | o---o---|| ||--+ ||--+ + * | | ||--+ o-----|| + * | ||--+ | ||--+ ||--+ + * +-----|| o-----|| | + * ||--+ | ||--+ + * | R | GND + * | + * GND GND + * GND + * + * + * + * Virtual ground + * -------------- + * A PolySi resitive voltage divider provides the voltage + * for the positive input of the filter op-amps. + * + * 5V + * +----------+ + * | | |\ | + * R1 +---|-\ | + * 5V | |A >---o--- Vref + * o-------|+/ + * | | |/ + * R10 R4 + * | | + * o---+ + * | + * R10 + * | + * + * GND + * + * Rn = n*R1 + * + * + * + * Rfc - freq control DAC resistance ladder + * ---------------------------------------- + * The 8580 has 11 bits for frequency control, but 12 bit DACs. + * If those 11 bits would be '0', the impedance of the DACs would be "infinitely high". + * To get around this, there is an 11 input NOR gate below the DACs sensing those 11 bits. + * If all are 0, the NOR gate gives the gate control voltage to the 12 bit DAC LSB. + * + * ----o---o--...--o---o---o--- + * | | | | | + * Rb10 Rb9 ... Rb1 Rb0 R0 + * | | | | | + * ----o---o--...--o---o---o--- + * + * + * + * Crystal stabilized precision switched capacitor voltage divider + * --------------------------------------------------------------- + * There is a FET working as a temperature sensor close to the DACs which changes the gate voltage + * of the frequency control DACs according to the temperature of the DACs, + * to reduce the effects of temperature on the filter curve. + * An asynchronous 3 bit binary counter, running at the speed of PHI2, drives two big capacitors + * whose AC resistance is then used as a voltage divider. + * This implicates that frequency difference between PAL and NTSC might shift the filter curve by 4% or such. + * + * |\ OpAmp has a smaller capacitor than the other OPs + * Vref ---|+\ + * |A >---o--- Vdac + * +-------|-/ | + * | |/ | + * | | + * C1 | C2 | + * +---||---o---+ +---o-----||-------o + * | | | | | | + * o----+ | ----- | | + * | | | ----- +----+ +-----o + * | ----- | | | | + * | ----- | ----- | + * | | | ----- | + * | +-----------+ | | + * | /Q Q | +-------+ + * GND +-----------+ FET close to DAC + * | clk/8 | working as temperature sensor + * +-----------+ + */ +class Filter8580 final : public Filter +{ +private: + unsigned short** mixer; + unsigned short** summer; + unsigned short** gain_res; + unsigned short** gain_vol; + + const int voiceScaleS11; + const int voiceDC; + + double cp; + + /// VCR + associated capacitor connected to highpass output. + std::unique_ptr const hpIntegrator; + + /// VCR + associated capacitor connected to bandpass output. + std::unique_ptr const bpIntegrator; + +protected: + /** + * Set filter cutoff frequency. + */ + void updatedCenterFrequency() override; + + /** + * Set filter resonance. + * + * @param res the new resonance value + */ + void updateResonance(unsigned char res) override { currentResonance = gain_res[res]; } + + void updatedMixing() override; + +public: + Filter8580() : + mixer(FilterModelConfig8580::getInstance()->getMixer()), + summer(FilterModelConfig8580::getInstance()->getSummer()), + gain_res(FilterModelConfig8580::getInstance()->getGainRes()), + gain_vol(FilterModelConfig8580::getInstance()->getGainVol()), + voiceScaleS11(FilterModelConfig8580::getInstance()->getVoiceScaleS11()), + voiceDC(FilterModelConfig8580::getInstance()->getNormalizedVoiceDC()), + cp(0.5), + hpIntegrator(FilterModelConfig8580::getInstance()->buildIntegrator()), + bpIntegrator(FilterModelConfig8580::getInstance()->buildIntegrator()) + { + setFilterCurve(cp); + input(0); + } + + ~Filter8580(); + + unsigned short clock(int voice1, int voice2, int voice3) override; + + void input(int sample) override { ve = (sample * voiceScaleS11 * 3 >> 11) + mixer[0][0]; } + + /** + * Set filter curve type based on single parameter. + * + * @param curvePosition 0 .. 1, where 0 sets center frequency high ("light") and 1 sets it low ("dark"), default is 0.5 + */ + void setFilterCurve(double curvePosition); +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(FILTER8580_CPP) + +namespace reSIDfp +{ + +RESID_INLINE +unsigned short Filter8580::clock(int voice1, int voice2, int voice3) +{ + voice1 = (voice1 * voiceScaleS11 >> 15) + voiceDC; + voice2 = (voice2 * voiceScaleS11 >> 15) + voiceDC; + // Voice 3 is silenced by voice3off if it is not routed through the filter. + voice3 = (filt3 || !voice3off) ? (voice3 * voiceScaleS11 >> 15) + voiceDC : 0; + + int Vi = 0; + int Vo = 0; + + (filt1 ? Vi : Vo) += voice1; + (filt2 ? Vi : Vo) += voice2; + (filt3 ? Vi : Vo) += voice3; + (filtE ? Vi : Vo) += ve; + + Vhp = currentSummer[currentResonance[Vbp] + Vlp + Vi]; + Vbp = hpIntegrator->solve(Vhp); + Vlp = bpIntegrator->solve(Vbp); + + if (lp) Vo += Vlp; + if (bp) Vo += Vbp; + if (hp) Vo += Vhp; + + return currentGain[currentMixer[Vo]]; +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/FilterModelConfig.cpp b/src/engine/platform/sound/c64_fp/FilterModelConfig.cpp new file mode 100644 index 00000000..8fb76238 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/FilterModelConfig.cpp @@ -0,0 +1,79 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "FilterModelConfig.h" + +#include + +namespace reSIDfp +{ + +FilterModelConfig::FilterModelConfig( + double vvr, + double vdv, + double c, + double vdd, + double vth, + double ucox, + const Spline::Point *opamp_voltage, + int opamp_size +) : + voice_voltage_range(vvr), + voice_DC_voltage(vdv), + C(c), + Vdd(vdd), + Vth(vth), + Ut(26.0e-3), + uCox(ucox), + Vddt(Vdd - Vth), + vmin(opamp_voltage[0].x), + vmax(std::max(Vddt, opamp_voltage[0].y)), + denorm(vmax - vmin), + norm(1.0 / denorm), + N16(norm * ((1 << 16) - 1)), + currFactorCoeff(denorm * (uCox / 2. * 1.0e-6 / C)) +{ + // Convert op-amp voltage transfer to 16 bit values. + + std::vector scaled_voltage(opamp_size); + + for (int i = 0; i < opamp_size; i++) + { + scaled_voltage[i].x = N16 * (opamp_voltage[i].x - opamp_voltage[i].y + denorm) / 2.; + scaled_voltage[i].y = N16 * (opamp_voltage[i].x - vmin); + } + + // Create lookup table mapping capacitor voltage to op-amp input voltage: + + Spline s(scaled_voltage); + + for (int x = 0; x < (1 << 16); x++) + { + const Spline::Point out = s.evaluate(x); + // If Vmax > max opamp_voltage the first elements may be negative + double tmp = out.x > 0. ? out.x : 0.; + assert(tmp < 65535.5); + opamp_rev[x] = static_cast(tmp + 0.5); + } +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/FilterModelConfig.h b/src/engine/platform/sound/c64_fp/FilterModelConfig.h new file mode 100644 index 00000000..d8ae77ab --- /dev/null +++ b/src/engine/platform/sound/c64_fp/FilterModelConfig.h @@ -0,0 +1,166 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef FILTERMODELCONFIG_H +#define FILTERMODELCONFIG_H + +#include +#include + +#include "Spline.h" + +#include "sidcxx11.h" + +namespace reSIDfp +{ + +class FilterModelConfig +{ +protected: + const double voice_voltage_range; + const double voice_DC_voltage; + + /// Capacitor value. + const double C; + + /// Transistor parameters. + //@{ + const double Vdd; + const double Vth; ///< Threshold voltage + const double Ut; ///< Thermal voltage: Ut = kT/q = 8.61734315e-5*T ~ 26mV + const double uCox; ///< Transconductance coefficient: u*Cox + const double Vddt; ///< Vdd - Vth + //@} + + // Derived stuff + const double vmin, vmax; + const double denorm, norm; + + /// Fixed point scaling for 16 bit op-amp output. + const double N16; + + /// Current factor coefficient for op-amp integrators. + const double currFactorCoeff; + + /// Lookup tables for gain and summer op-amps in output stage / filter. + //@{ + unsigned short* mixer[8]; //-V730_NOINIT this is initialized in the derived class constructor + unsigned short* summer[5]; //-V730_NOINIT this is initialized in the derived class constructor + unsigned short* gain_vol[16]; //-V730_NOINIT this is initialized in the derived class constructor + unsigned short* gain_res[16]; //-V730_NOINIT this is initialized in the derived class constructor + //@} + + /// Reverse op-amp transfer function. + unsigned short opamp_rev[1 << 16]; //-V730_NOINIT this is initialized in the derived class constructor + +private: + FilterModelConfig (const FilterModelConfig&) DELETE; + FilterModelConfig& operator= (const FilterModelConfig&) DELETE; + +protected: + /** + * @param vvr voice voltage range + * @param vdv voice DC voltage + * @param c capacitor value + * @param vdd Vdd + * @param vth threshold voltage + * @param ucox u*Cox + * @param ominv opamp min voltage + * @param omaxv opamp max voltage + */ + FilterModelConfig( + double vvr, + double vdv, + double c, + double vdd, + double vth, + double ucox, + const Spline::Point *opamp_voltage, + int opamp_size + ); + + ~FilterModelConfig() + { + for (int i = 0; i < 8; i++) + { + delete [] mixer[i]; + } + + for (int i = 0; i < 5; i++) + { + delete [] summer[i]; + } + + for (int i = 0; i < 16; i++) + { + delete [] gain_vol[i]; + delete [] gain_res[i]; + } + } + +public: + unsigned short** getGainVol() { return gain_vol; } + unsigned short** getGainRes() { return gain_res; } + unsigned short** getSummer() { return summer; } + unsigned short** getMixer() { return mixer; } + + /** + * The digital range of one voice is 20 bits; create a scaling term + * for multiplication which fits in 11 bits. + */ + int getVoiceScaleS11() const { return static_cast((norm * ((1 << 11) - 1)) * voice_voltage_range); } + + /** + * The "zero" output level of the voices. + */ + int getNormalizedVoiceDC() const { return static_cast(N16 * (voice_DC_voltage - vmin)); } + + inline unsigned short getOpampRev(int i) const { return opamp_rev[i]; } + inline double getVddt() const { return Vddt; } + inline double getVth() const { return Vth; } + inline double getVoiceDCVoltage() const { return voice_DC_voltage; } + + // helper functions + inline unsigned short getNormalizedValue(double value) const + { + const double tmp = N16 * (value - vmin); + assert(tmp > -0.5 && tmp < 65535.5); + return static_cast(tmp + 0.5); + } + + inline unsigned short getNormalizedCurrentFactor(double wl) const + { + const double tmp = (1 << 13) * currFactorCoeff * wl; + assert(tmp > -0.5 && tmp < 65535.5); + return static_cast(tmp + 0.5); + } + + inline unsigned short getNVmin() const { + const double tmp = N16 * vmin; + assert(tmp > -0.5 && tmp < 65535.5); + return static_cast(tmp + 0.5); + } +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/FilterModelConfig6581.cpp b/src/engine/platform/sound/c64_fp/FilterModelConfig6581.cpp new file mode 100644 index 00000000..3d86bdcf --- /dev/null +++ b/src/engine/platform/sound/c64_fp/FilterModelConfig6581.cpp @@ -0,0 +1,263 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "FilterModelConfig6581.h" + +#include + +#include "Integrator6581.h" +#include "OpAmp.h" + +namespace reSIDfp +{ + +#ifndef HAVE_CXX11 +/** + * Compute log(1+x) without losing precision for small values of x + * + * @note when compiling with -ffastm-math the compiler will + * optimize the expression away leaving a plain log(1. + x) + */ +inline double log1p(double x) +{ + return log(1. + x) - (((1. + x) - 1.) - x) / (1. + x); +} +#endif + +const unsigned int OPAMP_SIZE = 33; + +/** + * This is the SID 6581 op-amp voltage transfer function, measured on + * CAP1B/CAP1A on a chip marked MOS 6581R4AR 0687 14. + * All measured chips have op-amps with output voltages (and thus input + * voltages) within the range of 0.81V - 10.31V. + */ +const Spline::Point opamp_voltage[OPAMP_SIZE] = +{ + { 0.81, 10.31 }, // Approximate start of actual range + { 2.40, 10.31 }, + { 2.60, 10.30 }, + { 2.70, 10.29 }, + { 2.80, 10.26 }, + { 2.90, 10.17 }, + { 3.00, 10.04 }, + { 3.10, 9.83 }, + { 3.20, 9.58 }, + { 3.30, 9.32 }, + { 3.50, 8.69 }, + { 3.70, 8.00 }, + { 4.00, 6.89 }, + { 4.40, 5.21 }, + { 4.54, 4.54 }, // Working point (vi = vo) + { 4.60, 4.19 }, + { 4.80, 3.00 }, + { 4.90, 2.30 }, // Change of curvature + { 4.95, 2.03 }, + { 5.00, 1.88 }, + { 5.05, 1.77 }, + { 5.10, 1.69 }, + { 5.20, 1.58 }, + { 5.40, 1.44 }, + { 5.60, 1.33 }, + { 5.80, 1.26 }, + { 6.00, 1.21 }, + { 6.40, 1.12 }, + { 7.00, 1.02 }, + { 7.50, 0.97 }, + { 8.50, 0.89 }, + { 10.00, 0.81 }, + { 10.31, 0.81 }, // Approximate end of actual range +}; + +std::unique_ptr FilterModelConfig6581::instance(nullptr); + +FilterModelConfig6581* FilterModelConfig6581::getInstance() +{ + if (!instance.get()) + { + instance.reset(new FilterModelConfig6581()); + } + + return instance.get(); +} + +FilterModelConfig6581::FilterModelConfig6581() : + FilterModelConfig( + 1.5, // voice voltage range + 5.075, // voice DC voltage + 470e-12, // capacitor value + 12.18, // Vdd + 1.31, // Vth + 20e-6, // uCox + opamp_voltage, + OPAMP_SIZE + ), + WL_vcr(9.0 / 1.0), + WL_snake(1.0 / 115.0), + dac_zero(6.65), + dac_scale(2.63), + dac(DAC_BITS) +{ + dac.kinkedDac(MOS6581); + + // Create lookup tables for gains / summers. + + OpAmp opampModel(std::vector(std::begin(opamp_voltage), std::end(opamp_voltage)), Vddt); + + // The filter summer operates at n ~ 1, and has 5 fundamentally different + // input configurations (2 - 6 input "resistors"). + // + // Note that all "on" transistors are modeled as one. This is not + // entirely accurate, since the input for each transistor is different, + // and transistors are not linear components. However modeling all + // transistors separately would be extremely costly. + for (int i = 0; i < 5; i++) + { + const int idiv = 2 + i; // 2 - 6 input "resistors". + const int size = idiv << 16; + const double n = idiv; + opampModel.reset(); + summer[i] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16 / idiv; /* vmin .. vmax */ + summer[i][vi] = getNormalizedValue(opampModel.solve(n, vin)); + } + } + + // The audio mixer operates at n ~ 8/6, and has 8 fundamentally different + // input configurations (0 - 7 input "resistors"). + // + // All "on", transistors are modeled as one - see comments above for + // the filter summer. + for (int i = 0; i < 8; i++) + { + const int idiv = (i == 0) ? 1 : i; + const int size = (i == 0) ? 1 : i << 16; + const double n = i * 8.0 / 6.0; + opampModel.reset(); + mixer[i] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16 / idiv; /* vmin .. vmax */ + mixer[i][vi] = getNormalizedValue(opampModel.solve(n, vin)); + } + } + + // 4 bit "resistor" ladders in the audio + // output gain necessitate 16 gain tables. + // From die photographs of the bandpass and volume "resistor" ladders + // it follows that gain ~ vol/12 (assuming ideal + // op-amps and ideal "resistors"). + for (int n8 = 0; n8 < 16; n8++) + { + const int size = 1 << 16; + const double n = n8 / 12.0; + opampModel.reset(); + gain_vol[n8] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16; /* vmin .. vmax */ + gain_vol[n8][vi] = getNormalizedValue(opampModel.solve(n, vin)); + } + } + + // 4 bit "resistor" ladders in the bandpass resonance gain + // necessitate 16 gain tables. + // From die photographs of the bandpass and volume "resistor" ladders + // it follows that 1/Q ~ ~res/8 (assuming ideal + // op-amps and ideal "resistors"). + for (int n8 = 0; n8 < 16; n8++) + { + const int size = 1 << 16; + const double n = (~n8 & 0xf) / 8.0; + opampModel.reset(); + gain_res[n8] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16; /* vmin .. vmax */ + gain_res[n8][vi] = getNormalizedValue(opampModel.solve(n, vin)); + } + } + + const double nVddt = N16 * (Vddt - vmin); + + for (unsigned int i = 0; i < (1 << 16); i++) + { + // The table index is right-shifted 16 times in order to fit in + // 16 bits; the argument to sqrt is thus multiplied by (1 << 16). + const double tmp = nVddt - sqrt(static_cast(i << 16)); + assert(tmp > -0.5 && tmp < 65535.5); + vcr_nVg[i] = static_cast(tmp + 0.5); + } + + // EKV model: + // + // Ids = Is * (if - ir) + // Is = (2 * u*Cox * Ut^2)/k * W/L + // if = ln^2(1 + e^((k*(Vg - Vt) - Vs)/(2*Ut)) + // ir = ln^2(1 + e^((k*(Vg - Vt) - Vd)/(2*Ut)) + + // moderate inversion characteristic current + const double Is = (2. * uCox * Ut * Ut) * WL_vcr; + + // Normalized current factor for 1 cycle at 1MHz. + const double N15 = norm * ((1 << 15) - 1); + const double n_Is = N15 * 1.0e-6 / C * Is; + + // kVgt_Vx = k*(Vg - Vt) - Vx + // I.e. if k != 1.0, Vg must be scaled accordingly. + for (int kVgt_Vx = 0; kVgt_Vx < (1 << 16); kVgt_Vx++) + { + const double log_term = log1p(exp((kVgt_Vx / N16) / (2. * Ut))); + // Scaled by m*2^15 + const double tmp = n_Is * log_term * log_term; + assert(tmp > -0.5 && tmp < 65535.5); + vcr_n_Ids_term[kVgt_Vx] = static_cast(tmp + 0.5); + } +} + +unsigned short* FilterModelConfig6581::getDAC(double adjustment) const +{ + const double dac_zero = getDacZero(adjustment); + + unsigned short* f0_dac = new unsigned short[1 << DAC_BITS]; + + for (unsigned int i = 0; i < (1 << DAC_BITS); i++) + { + const double fcd = dac.getOutput(i); + f0_dac[i] = getNormalizedValue(dac_zero + fcd * dac_scale / (1 << DAC_BITS)); + } + + return f0_dac; +} + +std::unique_ptr FilterModelConfig6581::buildIntegrator() +{ + return MAKE_UNIQUE(Integrator6581, this, WL_snake); +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/FilterModelConfig6581.h b/src/engine/platform/sound/c64_fp/FilterModelConfig6581.h new file mode 100644 index 00000000..85cbd43f --- /dev/null +++ b/src/engine/platform/sound/c64_fp/FilterModelConfig6581.h @@ -0,0 +1,112 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef FILTERMODELCONFIG6581_H +#define FILTERMODELCONFIG6581_H + +#include "FilterModelConfig.h" + +#include + +#include "Dac.h" + +#include "sidcxx14.h" + +namespace reSIDfp +{ + +class Integrator6581; + +/** + * Calculate parameters for 6581 filter emulation. + */ +class FilterModelConfig6581 final : public FilterModelConfig +{ +private: + static const unsigned int DAC_BITS = 11; + +private: + static std::unique_ptr instance; + // This allows access to the private constructor +#ifdef HAVE_CXX11 + friend std::unique_ptr::deleter_type; +#else + friend class std::auto_ptr; +#endif + + /// Transistor parameters. + //@{ + const double WL_vcr; ///< W/L for VCR + const double WL_snake; ///< W/L for "snake" + //@} + + /// DAC parameters. + //@{ + const double dac_zero; + const double dac_scale; + //@} + + /// DAC lookup table + Dac dac; + + /// VCR - 6581 only. + //@{ + unsigned short vcr_nVg[1 << 16]; + unsigned short vcr_n_Ids_term[1 << 16]; + //@} + +private: + double getDacZero(double adjustment) const { return dac_zero + (1. - adjustment); } + + FilterModelConfig6581(); + ~FilterModelConfig6581() DEFAULT; + +public: + static FilterModelConfig6581* getInstance(); + + /** + * Construct an 11 bit cutoff frequency DAC output voltage table. + * Ownership is transferred to the requester which becomes responsible + * of freeing the object when done. + * + * @param adjustment + * @return the DAC table + */ + unsigned short* getDAC(double adjustment) const; + + /** + * Construct an integrator solver. + * + * @return the integrator + */ + std::unique_ptr buildIntegrator(); + + inline unsigned short getVcr_nVg(int i) const { return vcr_nVg[i]; } + inline unsigned short getVcr_n_Ids_term(int i) const { return vcr_n_Ids_term[i]; } + // only used if SLOPE_FACTOR is defined + inline double getUt() const { return Ut; } + inline double getN16() const { return N16; } +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/FilterModelConfig8580.cpp b/src/engine/platform/sound/c64_fp/FilterModelConfig8580.cpp new file mode 100644 index 00000000..fd2a16fa --- /dev/null +++ b/src/engine/platform/sound/c64_fp/FilterModelConfig8580.cpp @@ -0,0 +1,222 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "FilterModelConfig8580.h" + +#include "Integrator8580.h" +#include "OpAmp.h" + +namespace reSIDfp +{ + +/* + * R1 = 15.3*Ri + * R2 = 7.3*Ri + * R3 = 4.7*Ri + * Rf = 1.4*Ri + * R4 = 1.4*Ri + * R8 = 2.0*Ri + * RC = 2.8*Ri + * + * res feedback input + * --- -------- ----- + * 0 Rf Ri + * 1 Rf|R1 Ri + * 2 Rf|R2 Ri + * 3 Rf|R3 Ri + * 4 Rf R4 + * 5 Rf|R1 R4 + * 6 Rf|R2 R4 + * 7 Rf|R3 R4 + * 8 Rf R8 + * 9 Rf|R1 R8 + * A Rf|R2 R8 + * B Rf|R3 R8 + * C Rf RC + * D Rf|R1 RC + * E Rf|R2 RC + * F Rf|R3 RC + */ +const double resGain[16] = +{ + 1.4/1.0, // Rf/Ri 1.4 + ((1.4*15.3)/(1.4+15.3))/1.0, // (Rf|R1)/Ri 1.28263 + ((1.4*7.3)/(1.4+7.3))/1.0, // (Rf|R2)/Ri 1.17471 + ((1.4*4.7)/(1.4+4.7))/1.0, // (Rf|R3)/Ri 1.07869 + 1.4/1.4, // Rf/R4 1 + ((1.4*15.3)/(1.4+15.3))/1.4, // (Rf|R1)/R4 0.916168 + ((1.4*7.3)/(1.4+7.3))/1.4, // (Rf|R2)/R4 0.83908 + ((1.4*4.7)/(1.4+4.7))/1.4, // (Rf|R3)/R4 0.770492 + 1.4/2.0, // Rf/R8 0.7 + ((1.4*15.3)/(1.4+15.3))/2.0, // (Rf|R1)/R8 0.641317 + ((1.4*7.3)/(1.4+7.3))/2.0, // (Rf|R2)/R8 0.587356 + ((1.4*4.7)/(1.4+4.7))/2.0, // (Rf|R3)/R8 0.539344 + 1.4/2.8, // Rf/RC 0.5 + ((1.4*15.3)/(1.4+15.3))/2.8, // (Rf|R1)/RC 0.458084 + ((1.4*7.3)/(1.4+7.3))/2.8, // (Rf|R2)/RC 0.41954 + ((1.4*4.7)/(1.4+4.7))/2.8, // (Rf|R3)/RC 0.385246 +}; + +const unsigned int OPAMP_SIZE = 21; + +/** + * This is the SID 8580 op-amp voltage transfer function, measured on + * CAP1B/CAP1A on a chip marked CSG 8580R5 1690 25. + */ +const Spline::Point opamp_voltage[OPAMP_SIZE] = +{ + { 1.30, 8.91 }, // Approximate start of actual range + { 4.76, 8.91 }, + { 4.77, 8.90 }, + { 4.78, 8.88 }, + { 4.785, 8.86 }, + { 4.79, 8.80 }, + { 4.795, 8.60 }, + { 4.80, 8.25 }, + { 4.805, 7.50 }, + { 4.81, 6.10 }, + { 4.815, 4.05 }, // Change of curvature + { 4.82, 2.27 }, + { 4.825, 1.65 }, + { 4.83, 1.55 }, + { 4.84, 1.47 }, + { 4.85, 1.43 }, + { 4.87, 1.37 }, + { 4.90, 1.34 }, + { 5.00, 1.30 }, + { 5.10, 1.30 }, + { 8.91, 1.30 }, // Approximate end of actual range +}; + +std::unique_ptr FilterModelConfig8580::instance(nullptr); + +FilterModelConfig8580* FilterModelConfig8580::getInstance() +{ + if (!instance.get()) + { + instance.reset(new FilterModelConfig8580()); + } + + return instance.get(); +} + +FilterModelConfig8580::FilterModelConfig8580() : + FilterModelConfig( + 0.25, // voice voltage range FIXME measure + 4.80, // voice DC voltage FIXME was 4.76 + 22e-9, // capacitor value + 9.09, // Vdd + 0.80, // Vth + 100e-6, // uCox + opamp_voltage, + OPAMP_SIZE + ) +{ + // Create lookup tables for gains / summers. + + OpAmp opampModel(std::vector(std::begin(opamp_voltage), std::end(opamp_voltage)), Vddt); + + // The filter summer operates at n ~ 1, and has 5 fundamentally different + // input configurations (2 - 6 input "resistors"). + // + // Note that all "on" transistors are modeled as one. This is not + // entirely accurate, since the input for each transistor is different, + // and transistors are not linear components. However modeling all + // transistors separately would be extremely costly. + for (int i = 0; i < 5; i++) + { + const int idiv = 2 + i; // 2 - 6 input "resistors". + const int size = idiv << 16; + const double n = idiv; + opampModel.reset(); + summer[i] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16 / idiv; /* vmin .. vmax */ + summer[i][vi] = getNormalizedValue(opampModel.solve(n, vin)); + } + } + + // The audio mixer operates at n ~ 8/5, and has 8 fundamentally different + // input configurations (0 - 7 input "resistors"). + // + // All "on", transistors are modeled as one - see comments above for + // the filter summer. + for (int i = 0; i < 8; i++) + { + const int idiv = (i == 0) ? 1 : i; + const int size = (i == 0) ? 1 : i << 16; + const double n = i * 8.0 / 5.0; + opampModel.reset(); + mixer[i] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16 / idiv; /* vmin .. vmax */ + mixer[i][vi] = getNormalizedValue(opampModel.solve(n, vin)); + } + } + + // 4 bit "resistor" ladders in the audio output gain + // necessitate 16 gain tables. + // From die photographs of the volume "resistor" ladders + // it follows that gain ~ vol/16 (assuming ideal op-amps + for (int n8 = 0; n8 < 16; n8++) + { + const int size = 1 << 16; + const double n = n8 / 16.0; + opampModel.reset(); + gain_vol[n8] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16; /* vmin .. vmax */ + gain_vol[n8][vi] = getNormalizedValue(opampModel.solve(n, vin)); + } + } + + // 4 bit "resistor" ladders in the bandpass resonance gain + // necessitate 16 gain tables. + // From die photographs of the bandpass and volume "resistor" ladders + // it follows that 1/Q ~ 2^((4 - res)/8) (assuming ideal + // op-amps and ideal "resistors"). + for (int n8 = 0; n8 < 16; n8++) + { + const int size = 1 << 16; + opampModel.reset(); + gain_res[n8] = new unsigned short[size]; + + for (int vi = 0; vi < size; vi++) + { + const double vin = vmin + vi / N16; /* vmin .. vmax */ + gain_res[n8][vi] = getNormalizedValue(opampModel.solve(resGain[n8], vin)); + } + } +} + +std::unique_ptr FilterModelConfig8580::buildIntegrator() +{ + return MAKE_UNIQUE(Integrator8580, this); +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/FilterModelConfig8580.h b/src/engine/platform/sound/c64_fp/FilterModelConfig8580.h new file mode 100644 index 00000000..ee2b4008 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/FilterModelConfig8580.h @@ -0,0 +1,68 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef FILTERMODELCONFIG8580_H +#define FILTERMODELCONFIG8580_H + +#include "FilterModelConfig.h" + +#include + +#include "sidcxx14.h" + +namespace reSIDfp +{ + +class Integrator8580; + +/** + * Calculate parameters for 8580 filter emulation. + */ +class FilterModelConfig8580 final : public FilterModelConfig +{ +private: + static std::unique_ptr instance; + // This allows access to the private constructor +#ifdef HAVE_CXX11 + friend std::unique_ptr::deleter_type; +#else + friend class std::auto_ptr; +#endif + +private: + FilterModelConfig8580(); + ~FilterModelConfig8580() DEFAULT; + +public: + static FilterModelConfig8580* getInstance(); + + /** + * Construct an integrator solver. + * + * @return the integrator + */ + std::unique_ptr buildIntegrator(); +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/Integrator6581.cpp b/src/engine/platform/sound/c64_fp/Integrator6581.cpp new file mode 100644 index 00000000..490be9b5 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Integrator6581.cpp @@ -0,0 +1,25 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2014 Leandro Nini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define INTEGRATOR_CPP + +#include "Integrator6581.h" + +// This is needed when compiling with --disable-inline diff --git a/src/engine/platform/sound/c64_fp/Integrator6581.h b/src/engine/platform/sound/c64_fp/Integrator6581.h new file mode 100644 index 00000000..99ac3bea --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Integrator6581.h @@ -0,0 +1,285 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004, 2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef INTEGRATOR6581_H +#define INTEGRATOR6581_H + +#include "FilterModelConfig6581.h" + +#include +#include + +// uncomment to enable use of the slope factor +// in the EKV model +// actually produces worse results, needs investigation +//#define SLOPE_FACTOR + +#ifdef SLOPE_FACTOR +# include +#endif + +#include "siddefs-fp.h" + +namespace reSIDfp +{ + +/** + * Find output voltage in inverting integrator SID op-amp circuits, using a + * single fixpoint iteration step. + * + * A circuit diagram of a MOS 6581 integrator is shown below. + * + * +---C---+ + * | | + * vi --o--Rw--o-o--[A>--o-- vo + * | | vx + * +--Rs--+ + * + * From Kirchoff's current law it follows that + * + * IRw + IRs + ICr = 0 + * + * Using the formula for current through a capacitor, i = C*dv/dt, we get + * + * IRw + IRs + C*(vc - vc0)/dt = 0 + * dt/C*(IRw + IRs) + vc - vc0 = 0 + * vc = vc0 - n*(IRw(vi,vx) + IRs(vi,vx)) + * + * which may be rewritten as the following iterative fixpoint function: + * + * vc = vc0 - n*(IRw(vi,g(vc)) + IRs(vi,g(vc))) + * + * To accurately calculate the currents through Rs and Rw, we need to use + * transistor models. Rs has a gate voltage of Vdd = 12V, and can be + * assumed to always be in triode mode. For Rw, the situation is rather + * more complex, as it turns out that this transistor will operate in + * both subthreshold, triode, and saturation modes. + * + * The Shichman-Hodges transistor model routinely used in textbooks may + * be written as follows: + * + * Ids = 0 , Vgst < 0 (subthreshold mode) + * Ids = K*W/L*(2*Vgst - Vds)*Vds , Vgst >= 0, Vds < Vgst (triode mode) + * Ids = K*W/L*Vgst^2 , Vgst >= 0, Vds >= Vgst (saturation mode) + * + * where + * K = u*Cox/2 (transconductance coefficient) + * W/L = ratio between substrate width and length + * Vgst = Vg - Vs - Vt (overdrive voltage) + * + * This transistor model is also called the quadratic model. + * + * Note that the equation for the triode mode can be reformulated as + * independent terms depending on Vgs and Vgd, respectively, by the + * following substitution: + * + * Vds = Vgst - (Vgst - Vds) = Vgst - Vgdt + * + * Ids = K*W/L*(2*Vgst - Vds)*Vds + * = K*W/L*(2*Vgst - (Vgst - Vgdt)*(Vgst - Vgdt) + * = K*W/L*(Vgst + Vgdt)*(Vgst - Vgdt) + * = K*W/L*(Vgst^2 - Vgdt^2) + * + * This turns out to be a general equation which covers both the triode + * and saturation modes (where the second term is 0 in saturation mode). + * The equation is also symmetrical, i.e. it can calculate negative + * currents without any change of parameters (since the terms for drain + * and source are identical except for the sign). + * + * FIXME: Subthreshold as function of Vgs, Vgd. + * + * Ids = I0*W/L*e^(Vgst/(Ut/k)) , Vgst < 0 (subthreshold mode) + * + * where + * I0 = (2 * uCox * Ut^2) / k + * + * The remaining problem with the textbook model is that the transition + * from subthreshold the triode/saturation is not continuous. + * + * Realizing that the subthreshold and triode/saturation modes may both + * be defined by independent (and equal) terms of Vgs and Vds, + * respectively, the corresponding terms can be blended into (equal) + * continuous functions suitable for table lookup. + * + * The EKV model (Enz, Krummenacher and Vittoz) essentially performs this + * blending using an elegant mathematical formulation: + * + * Ids = Is * (if - ir) + * Is = ((2 * u*Cox * Ut^2)/k) * W/L + * if = ln^2(1 + e^((k*(Vg - Vt) - Vs)/(2*Ut)) + * ir = ln^2(1 + e^((k*(Vg - Vt) - Vd)/(2*Ut)) + * + * For our purposes, the EKV model preserves two important properties + * discussed above: + * + * - It consists of two independent terms, which can be represented by + * the same lookup table. + * - It is symmetrical, i.e. it calculates current in both directions, + * facilitating a branch-free implementation. + * + * Rw in the circuit diagram above is a VCR (voltage controlled resistor), + * as shown in the circuit diagram below. + * + * + * Vdd + * | + * Vdd _|_ + * | +---+ +---- Vw + * _|_ | + * +--+ +---o Vg + * | __|__ + * | ----- Rw + * | | | + * vi -----o------+ +-------- vo + * + * + * In order to calculalate the current through the VCR, its gate voltage + * must be determined. + * + * Assuming triode mode and applying Kirchoff's current law, we get the + * following equation for Vg: + * + * u*Cox/2*W/L*((nVddt - Vg)^2 - (nVddt - vi)^2 + (nVddt - Vg)^2 - (nVddt - Vw)^2) = 0 + * 2*(nVddt - Vg)^2 - (nVddt - vi)^2 - (nVddt - Vw)^2 = 0 + * (nVddt - Vg) = sqrt(((nVddt - vi)^2 + (nVddt - Vw)^2)/2) + * + * Vg = nVddt - sqrt(((nVddt - vi)^2 + (nVddt - Vw)^2)/2) + */ +class Integrator6581 +{ +private: + unsigned int nVddt_Vw_2; + mutable int vx; + mutable int vc; + +#ifdef SLOPE_FACTOR + // Slope factor n = 1/k + // where k is the gate coupling coefficient + // k = Cox/(Cox+Cdep) ~ 0.7 (depends on gate voltage) + mutable double n; +#endif + const unsigned short nVddt; + const unsigned short nVt; + const unsigned short nVmin; + const unsigned short nSnake; + + const FilterModelConfig6581* fmc; + +public: + Integrator6581(const FilterModelConfig6581* fmc, + double WL_snake) : + nVddt_Vw_2(0), + vx(0), + vc(0), +#ifdef SLOPE_FACTOR + n(1.4), +#endif + nVddt(fmc->getNormalizedValue(fmc->getVddt())), + nVt(fmc->getNormalizedValue(fmc->getVth())), + nVmin(fmc->getNVmin()), + nSnake(fmc->getNormalizedCurrentFactor(WL_snake)), + fmc(fmc) {} + + void setVw(unsigned short Vw) { nVddt_Vw_2 = ((nVddt - Vw) * (nVddt - Vw)) >> 1; } + + int solve(int vi) const; +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(INTEGRATOR_CPP) + +namespace reSIDfp +{ + +RESID_INLINE +int Integrator6581::solve(int vi) const +{ + // Make sure Vgst>0 so we're not in subthreshold mode + assert(vx < nVddt); + + // Check that transistor is actually in triode mode + // Vds < Vgs - Vth + assert(vi < nVddt); + + // "Snake" voltages for triode mode calculation. + const unsigned int Vgst = nVddt - vx; + const unsigned int Vgdt = nVddt - vi; + + const unsigned int Vgst_2 = Vgst * Vgst; + const unsigned int Vgdt_2 = Vgdt * Vgdt; + + // "Snake" current, scaled by (1/m)*2^13*m*2^16*m*2^16*2^-15 = m*2^30 + const int n_I_snake = nSnake * (static_cast(Vgst_2 - Vgdt_2) >> 15); + + // VCR gate voltage. // Scaled by m*2^16 + // Vg = Vddt - sqrt(((Vddt - Vw)^2 + Vgdt^2)/2) + const int nVg = static_cast(fmc->getVcr_nVg((nVddt_Vw_2 + (Vgdt_2 >> 1)) >> 16)); +#ifdef SLOPE_FACTOR + const double nVp = static_cast(nVg - nVt) / n; // Pinch-off voltage + const int kVg = static_cast(nVp + 0.5) - nVmin; +#else + const int kVg = (nVg - nVt) - nVmin; +#endif + + // VCR voltages for EKV model table lookup. + const int kVgt_Vs = (vx < kVg) ? kVg - vx : 0; + assert(kVgt_Vs < (1 << 16)); + const int kVgt_Vd = (vi < kVg) ? kVg - vi : 0; + assert(kVgt_Vd < (1 << 16)); + + // VCR current, scaled by m*2^15*2^15 = m*2^30 + const unsigned int If = static_cast(fmc->getVcr_n_Ids_term(kVgt_Vs)) << 15; + const unsigned int Ir = static_cast(fmc->getVcr_n_Ids_term(kVgt_Vd)) << 15; +#ifdef SLOPE_FACTOR + const double iVcr = static_cast(If - Ir); + const int n_I_vcr = static_cast((iVcr * n) + 0.5); +#else + const int n_I_vcr = If - Ir; +#endif + +#ifdef SLOPE_FACTOR + // estimate new slope factor based on gate voltage + const double gamma = 1.0; // body effect factor + const double phi = 0.8; // bulk Fermi potential + const double Vp = nVp / fmc->getN16(); + n = 1. + (gamma / (2. * sqrt(Vp + phi + 4. * fmc->getUt()))); + assert((n > 1.2) && (n < 1.8)); +#endif + + // Change in capacitor charge. + vc += n_I_snake + n_I_vcr; + + // vx = g(vc) + const int tmp = (vc >> 15) + (1 << 15); + assert(tmp < (1 << 16)); + vx = fmc->getOpampRev(tmp); + + // Return vo. + return vx - (vc >> 14); +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/Integrator8580.cpp b/src/engine/platform/sound/c64_fp/Integrator8580.cpp new file mode 100644 index 00000000..6fba9521 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Integrator8580.cpp @@ -0,0 +1,25 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2014-2016 Leandro Nini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define INTEGRATOR8580_CPP + +#include "Integrator8580.h" + +// This is needed when compiling with --disable-inline diff --git a/src/engine/platform/sound/c64_fp/Integrator8580.h b/src/engine/platform/sound/c64_fp/Integrator8580.h new file mode 100644 index 00000000..7137e940 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Integrator8580.h @@ -0,0 +1,142 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004, 2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef INTEGRATOR8580_H +#define INTEGRATOR8580_H + +#include "FilterModelConfig8580.h" + +#include +#include + +#include "siddefs-fp.h" + +namespace reSIDfp +{ + +/** + * 8580 integrator + * + * +---C---+ + * | | + * vi -----Rfc---o--[A>--o-- vo + * vx + * + * IRfc + ICr = 0 + * IRfc + C*(vc - vc0)/dt = 0 + * dt/C*(IRfc) + vc - vc0 = 0 + * vc = vc0 - n*(IRfc(vi,vx)) + * vc = vc0 - n*(IRfc(vi,g(vc))) + * + * IRfc = K*W/L*(Vgst^2 - Vgdt^2) = n*((Vddt - vx)^2 - (Vddt - vi)^2) + * + * Rfc gate voltage is generated by an OP Amp and depends on chip temperature. + */ +class Integrator8580 +{ +private: + mutable int vx; + mutable int vc; + + unsigned short nVgt; + unsigned short n_dac; + + const FilterModelConfig8580* fmc; + +public: + Integrator8580(const FilterModelConfig8580* fmc) : + vx(0), + vc(0), + fmc(fmc) + { + setV(1.5); + } + + /** + * Set Filter Cutoff resistor ratio. + */ + void setFc(double wl) + { + // Normalized current factor, 1 cycle at 1MHz. + // Fit in 5 bits. + n_dac = fmc->getNormalizedCurrentFactor(wl); + } + + /** + * Set FC gate voltage multiplier. + */ + void setV(double v) + { + // Gate voltage is controlled by the switched capacitor voltage divider + // Ua = Ue * v = 4.76v 1 1.0 && v < 2.0); + const double Vg = fmc->getVoiceDCVoltage() * v; + const double Vgt = Vg - fmc->getVth(); + + // Vg - Vth, normalized so that translated values can be subtracted: + // Vgt - x = (Vgt - t) - (x - t) + nVgt = fmc->getNormalizedValue(Vgt); + } + + int solve(int vi) const; +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(INTEGRATOR8580_CPP) + +namespace reSIDfp +{ + +RESID_INLINE +int Integrator8580::solve(int vi) const +{ + // Make sure we're not in subthreshold mode + assert(vx < nVgt); + + // DAC voltages + const unsigned int Vgst = nVgt - vx; + const unsigned int Vgdt = (vi < nVgt) ? nVgt - vi : 0; // triode/saturation mode + + const unsigned int Vgst_2 = Vgst * Vgst; + const unsigned int Vgdt_2 = Vgdt * Vgdt; + + // DAC current, scaled by (1/m)*2^13*m*2^16*m*2^16*2^-15 = m*2^30 + const int n_I_dac = n_dac * (static_cast(Vgst_2 - Vgdt_2) >> 15); + + // Change in capacitor charge. + vc += n_I_dac; + + // vx = g(vc) + const int tmp = (vc >> 15) + (1 << 15); + assert(tmp < (1 << 16)); + vx = fmc->getOpampRev(tmp); + + // Return vo. + return vx - (vc >> 14); +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/OpAmp.cpp b/src/engine/platform/sound/c64_fp/OpAmp.cpp new file mode 100644 index 00000000..b26b2efc --- /dev/null +++ b/src/engine/platform/sound/c64_fp/OpAmp.cpp @@ -0,0 +1,84 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2015 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "OpAmp.h" + +#include + +#include "siddefs-fp.h" + +namespace reSIDfp +{ + +const double EPSILON = 1e-8; + +double OpAmp::solve(double n, double vi) const +{ + // Start off with an estimate of x and a root bracket [ak, bk]. + // f is decreasing, so that f(ak) > 0 and f(bk) < 0. + double ak = vmin; + double bk = vmax; + + const double a = n + 1.; + const double b = Vddt; + const double b_vi = (b > vi) ? (b - vi) : 0.; + const double c = n * (b_vi * b_vi); + + for (;;) + { + const double xk = x; + + // Calculate f and df. + + Spline::Point out = opamp->evaluate(x); + const double vo = out.x; + const double dvo = out.y; + + const double b_vx = (b > x) ? b - x : 0.; + const double b_vo = (b > vo) ? b - vo : 0.; + + // f = a*(b - vx)^2 - c - (b - vo)^2 + const double f = a * (b_vx * b_vx) - c - (b_vo * b_vo); + + // df = 2*((b - vo)*dvo - a*(b - vx)) + const double df = 2. * (b_vo * dvo - a * b_vx); + + // Newton-Raphson step: xk1 = xk - f(xk)/f'(xk) + x -= f / df; + + if (unlikely(fabs(x - xk) < EPSILON)) + { + out = opamp->evaluate(x); + return out.x; + } + + // Narrow down root bracket. + (f < 0. ? bk : ak) = xk; + + if (unlikely(x <= ak) || unlikely(x >= bk)) + { + // Bisection step (ala Dekker's method). + x = (ak + bk) * 0.5; + } + } +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/OpAmp.h b/src/engine/platform/sound/c64_fp/OpAmp.h new file mode 100644 index 00000000..9d2c8f16 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/OpAmp.h @@ -0,0 +1,113 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2015 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef OPAMP_H +#define OPAMP_H + +#include +#include + +#include "Spline.h" + +#include "sidcxx11.h" + +namespace reSIDfp +{ + +/** + * Find output voltage in inverting gain and inverting summer SID op-amp + * circuits, using a combination of Newton-Raphson and bisection. + * + * +---R2--+ + * | | + * vi ---R1--o--[A>--o-- vo + * vx + * + * From Kirchoff's current law it follows that + * + * IR1f + IR2r = 0 + * + * Substituting the triode mode transistor model K*W/L*(Vgst^2 - Vgdt^2) + * for the currents, we get: + * + * n*((Vddt - vx)^2 - (Vddt - vi)^2) + (Vddt - vx)^2 - (Vddt - vo)^2 = 0 + * + * Our root function f can thus be written as: + * + * f = (n + 1)*(Vddt - vx)^2 - n*(Vddt - vi)^2 - (Vddt - vo)^2 = 0 + * + * Using substitution constants + * + * a = n + 1 + * b = Vddt + * c = n*(Vddt - vi)^2 + * + * the equations for the root function and its derivative can be written as: + * + * f = a*(b - vx)^2 - c - (b - vo)^2 + * df = 2*((b - vo)*dvo - a*(b - vx)) + */ +class OpAmp +{ +private: + /// Current root position (cached as guess to speed up next iteration) + mutable double x; + + const double Vddt; + const double vmin; + const double vmax; + + std::unique_ptr const opamp; + +public: + /** + * Opamp input -> output voltage conversion + * + * @param opamp opamp mapping table as pairs of points (in -> out) + * @param opamplength length of the opamp array + * @param kVddt transistor dt parameter (in volts) + */ + OpAmp(const std::vector &opamp, double Vddt) : + x(0.), + Vddt(Vddt), + vmin(opamp.front().x), + vmax(opamp.back().x), + opamp(new Spline(opamp)) {} + + void reset() const + { + x = vmin; + } + + /** + * Solve the opamp equation for input vi in loading context n + * + * @param n the ratio of input/output loading + * @param vi input + * @return vo + */ + double solve(double n, double vi) const; +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/Potentiometer.h b/src/engine/platform/sound/c64_fp/Potentiometer.h new file mode 100644 index 00000000..8b63df13 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Potentiometer.h @@ -0,0 +1,50 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2013 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright (C) 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef POTENTIOMETER_H +#define POTENTIOMETER_H + +namespace reSIDfp +{ + +/** + * Potentiometer representation. + * + * This class will probably never be implemented in any real way. + * + * @author Ken HƤndel + * @author Dag Lem + */ +class Potentiometer +{ +public: + /** + * Read paddle value. Not modeled. + * + * @return paddle value (always 0xff) + */ + unsigned char readPOT() const { return 0xff; } +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/README b/src/engine/platform/sound/c64_fp/README new file mode 100644 index 00000000..45d4bfb9 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/README @@ -0,0 +1,20 @@ +reSIDfp is a fork of Dag Lem's reSID 0.16, a reverse engineered software emulation +of the MOS6581/8580 SID (Sound Interface Device). + +The project was started by Antti S. Lankila in order to improve SID emulation +with special focus on the 6581 filter. +The codebase has been later on ported to java by Ken HƤndel within the jsidplay2 project +and has seen further work by Antti Lankila. +It was then ported back to c++ and integrated with improvements from reSID 1.0 by Leandro Nini. + + +Main differences from reSID: + +* combined waveforms are emulated by a parametrized model based on samplings from Kevtris; +* envelope generator is implemented like in the real machine with a shift register; +* high quality resampling is done in two steps to allow computational savings using lower order filters; +* part of the calculations are done with floats instead of fixed point; +* interpolation is accomplished with Fritsch-Carlson method to preserve monotonicity. + + +reSIDfp is free software. See the file COPYING for copying permission. diff --git a/src/engine/platform/sound/c64_fp/SID.cpp b/src/engine/platform/sound/c64_fp/SID.cpp new file mode 100644 index 00000000..a996d223 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/SID.cpp @@ -0,0 +1,504 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2016 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define SID_CPP + +#include "SID.h" + +#include + +#include "array.h" +#include "Dac.h" +#include "Filter6581.h" +#include "Filter8580.h" +#include "Potentiometer.h" +#include "WaveformCalculator.h" +#include "resample/TwoPassSincResampler.h" +#include "resample/ZeroOrderResampler.h" + +namespace reSIDfp +{ + +const unsigned int ENV_DAC_BITS = 8; +const unsigned int OSC_DAC_BITS = 12; + +/** + * The waveform D/A converter introduces a DC offset in the signal + * to the envelope multiplying D/A converter. The "zero" level of + * the waveform D/A converter can be found as follows: + * + * Measure the "zero" voltage of voice 3 on the SID audio output + * pin, routing only voice 3 to the mixer ($d417 = $0b, $d418 = + * $0f, all other registers zeroed). + * + * Then set the sustain level for voice 3 to maximum and search for + * the waveform output value yielding the same voltage as found + * above. This is done by trying out different waveform output + * values until the correct value is found, e.g. with the following + * program: + * + * lda #$08 + * sta $d412 + * lda #$0b + * sta $d417 + * lda #$0f + * sta $d418 + * lda #$f0 + * sta $d414 + * lda #$21 + * sta $d412 + * lda #$01 + * sta $d40e + * + * ldx #$00 + * lda #$38 ; Tweak this to find the "zero" level + *l cmp $d41b + * bne l + * stx $d40e ; Stop frequency counter - freeze waveform output + * brk + * + * The waveform output range is 0x000 to 0xfff, so the "zero" + * level should ideally have been 0x800. In the measured chip, the + * waveform output "zero" level was found to be 0x380 (i.e. $d41b + * = 0x38) at an audio output voltage of 5.94V. + * + * With knowledge of the mixer op-amp characteristics, further estimates + * of waveform voltages can be obtained by sampling the EXT IN pin. + * From EXT IN samples, the corresponding waveform output can be found by + * using the model for the mixer. + * + * Such measurements have been done on a chip marked MOS 6581R4AR + * 0687 14, and the following results have been obtained: + * * The full range of one voice is approximately 1.5V. + * * The "zero" level rides at approximately 5.0V. + * + * + * zero-x did the measuring on the 8580 (https://sourceforge.net/p/vice-emu/bugs/1036/#c5b3): + * When it sits on basic from powerup it's at 4.72 + * Run 1.prg and check the output pin level. + * Then run 2.prg andadjust it until the output level is the same... + * 0x94-0xA8 gives me the same 4.72 1.prg shows. + * On another 8580 it's 0x90-0x9C + * Third chip 0x94-0xA8 + * Fourth chip 0x90-0xA4 + * On the 8580 that plays digis the output is 4.66 and 0x93 is the only value to reach that. + * To me that seems as regular 8580s have somewhat wide 0-level range, + * whereas that digi-compatible 8580 has it very narrow. + * On my 6581R4AR has 0x3A as the only value giving the same output level as 1.prg + */ +//@{ +unsigned int constexpr OFFSET_6581 = 0x380; +unsigned int constexpr OFFSET_8580 = 0x9c0; +//@} + +/** + * Bus value stays alive for some time after each operation. + * Values differs between chip models, the timings used here + * are taken from VICE [1]. + * See also the discussion "How do I reliably detect 6581/8580 sid?" on CSDb [2]. + * + * Results from real C64 (testprogs/SID/bitfade/delayfrq0.prg): + * + * (new SID) (250469/8580R5) (250469/8580R5) + * delayfrq0 ~7a000 ~108000 + * + * (old SID) (250407/6581) + * delayfrq0 ~01d00 + * + * [1]: http://sourceforge.net/p/vice-emu/patches/99/ + * [2]: http://noname.c64.org/csdb/forums/?roomid=11&topicid=29025&showallposts=1 + */ +//@{ +int constexpr BUS_TTL_6581 = 0x01d00; +int constexpr BUS_TTL_8580 = 0xa2000; +//@} + +SID::SID() : + filter6581(new Filter6581()), + filter8580(new Filter8580()), + externalFilter(new ExternalFilter()), + resampler(nullptr), + potX(new Potentiometer()), + potY(new Potentiometer()) +{ + voice[0].reset(new Voice()); + voice[1].reset(new Voice()); + voice[2].reset(new Voice()); + + muted[0] = muted[1] = muted[2] = false; + + reset(); + setChipModel(MOS8580); +} + +SID::~SID() +{ + // Needed to delete auto_ptr with complete type +} + +void SID::setFilter6581Curve(double filterCurve) +{ + filter6581->setFilterCurve(filterCurve); +} + +void SID::setFilter8580Curve(double filterCurve) +{ + filter8580->setFilterCurve(filterCurve); +} + +void SID::enableFilter(bool enable) +{ + filter6581->enable(enable); + filter8580->enable(enable); +} + +void SID::voiceSync(bool sync) +{ + if (sync) + { + // Synchronize the 3 waveform generators. + for (int i = 0; i < 3; i++) + { + voice[i]->wave()->synchronize(voice[(i + 1) % 3]->wave(), voice[(i + 2) % 3]->wave()); + } + } + + // Calculate the time to next voice sync + nextVoiceSync = std::numeric_limits::max(); + + for (int i = 0; i < 3; i++) + { + WaveformGenerator* const wave = voice[i]->wave(); + const unsigned int freq = wave->readFreq(); + + if (wave->readTest() || freq == 0 || !voice[(i + 1) % 3]->wave()->readSync()) + { + continue; + } + + const unsigned int accumulator = wave->readAccumulator(); + const unsigned int thisVoiceSync = ((0x7fffff - accumulator) & 0xffffff) / freq + 1; + + if (thisVoiceSync < nextVoiceSync) + { + nextVoiceSync = thisVoiceSync; + } + } +} + +void SID::setChipModel(ChipModel model) +{ + switch (model) + { + case MOS6581: + filter = filter6581.get(); + modelTTL = BUS_TTL_6581; + break; + + case MOS8580: + filter = filter8580.get(); + modelTTL = BUS_TTL_8580; + break; + + default: + throw SIDError("Unknown chip type"); + } + + this->model = model; + + // calculate waveform-related tables + matrix_t* tables = WaveformCalculator::getInstance()->buildTable(model); + + // calculate envelope DAC table + { + Dac dacBuilder(ENV_DAC_BITS); + dacBuilder.kinkedDac(model); + + for (unsigned int i = 0; i < (1 << ENV_DAC_BITS); i++) + { + envDAC[i] = static_cast(dacBuilder.getOutput(i)); + } + } + + // calculate oscillator DAC table + const bool is6581 = model == MOS6581; + + { + Dac dacBuilder(OSC_DAC_BITS); + dacBuilder.kinkedDac(model); + + const double offset = dacBuilder.getOutput(is6581 ? OFFSET_6581 : OFFSET_8580); + + for (unsigned int i = 0; i < (1 << OSC_DAC_BITS); i++) + { + const double dacValue = dacBuilder.getOutput(i); + oscDAC[i] = static_cast(dacValue - offset); + } + } + + // set voice tables + for (int i = 0; i < 3; i++) + { + voice[i]->setEnvDAC(envDAC); + voice[i]->setWavDAC(oscDAC); + voice[i]->wave()->setModel(is6581); + voice[i]->wave()->setWaveformModels(tables); + } +} + +void SID::reset() +{ + for (int i = 0; i < 3; i++) + { + voice[i]->reset(); + } + + filter6581->reset(); + filter8580->reset(); + externalFilter->reset(); + + if (resampler.get()) + { + resampler->reset(); + } + + busValue = 0; + busValueTtl = 0; + voiceSync(false); +} + +void SID::input(int value) +{ + filter6581->input(value); + filter8580->input(value); +} + +unsigned char SID::read(int offset) +{ + switch (offset) + { + case 0x19: // X value of paddle + busValue = potX->readPOT(); + busValueTtl = modelTTL; + break; + + case 0x1a: // Y value of paddle + busValue = potY->readPOT(); + busValueTtl = modelTTL; + break; + + case 0x1b: // Voice #3 waveform output + busValue = voice[2]->wave()->readOSC(); + busValueTtl = modelTTL; + break; + + case 0x1c: // Voice #3 ADSR output + busValue = voice[2]->envelope()->readENV(); + busValueTtl = modelTTL; + break; + + default: + // Reading from a write-only or non-existing register + // makes the bus discharge faster. + // Emulate this by halving the residual TTL. + busValueTtl /= 2; + break; + } + + return busValue; +} + +void SID::write(int offset, unsigned char value) +{ + busValue = value; + busValueTtl = modelTTL; + + switch (offset) + { + case 0x00: // Voice #1 frequency (Low-byte) + voice[0]->wave()->writeFREQ_LO(value); + break; + + case 0x01: // Voice #1 frequency (High-byte) + voice[0]->wave()->writeFREQ_HI(value); + break; + + case 0x02: // Voice #1 pulse width (Low-byte) + voice[0]->wave()->writePW_LO(value); + break; + + case 0x03: // Voice #1 pulse width (bits #8-#15) + voice[0]->wave()->writePW_HI(value); + break; + + case 0x04: // Voice #1 control register + voice[0]->writeCONTROL_REG(muted[0] ? 0 : value); + break; + + case 0x05: // Voice #1 Attack and Decay length + voice[0]->envelope()->writeATTACK_DECAY(value); + break; + + case 0x06: // Voice #1 Sustain volume and Release length + voice[0]->envelope()->writeSUSTAIN_RELEASE(value); + break; + + case 0x07: // Voice #2 frequency (Low-byte) + voice[1]->wave()->writeFREQ_LO(value); + break; + + case 0x08: // Voice #2 frequency (High-byte) + voice[1]->wave()->writeFREQ_HI(value); + break; + + case 0x09: // Voice #2 pulse width (Low-byte) + voice[1]->wave()->writePW_LO(value); + break; + + case 0x0a: // Voice #2 pulse width (bits #8-#15) + voice[1]->wave()->writePW_HI(value); + break; + + case 0x0b: // Voice #2 control register + voice[1]->writeCONTROL_REG(muted[1] ? 0 : value); + break; + + case 0x0c: // Voice #2 Attack and Decay length + voice[1]->envelope()->writeATTACK_DECAY(value); + break; + + case 0x0d: // Voice #2 Sustain volume and Release length + voice[1]->envelope()->writeSUSTAIN_RELEASE(value); + break; + + case 0x0e: // Voice #3 frequency (Low-byte) + voice[2]->wave()->writeFREQ_LO(value); + break; + + case 0x0f: // Voice #3 frequency (High-byte) + voice[2]->wave()->writeFREQ_HI(value); + break; + + case 0x10: // Voice #3 pulse width (Low-byte) + voice[2]->wave()->writePW_LO(value); + break; + + case 0x11: // Voice #3 pulse width (bits #8-#15) + voice[2]->wave()->writePW_HI(value); + break; + + case 0x12: // Voice #3 control register + voice[2]->writeCONTROL_REG(muted[2] ? 0 : value); + break; + + case 0x13: // Voice #3 Attack and Decay length + voice[2]->envelope()->writeATTACK_DECAY(value); + break; + + case 0x14: // Voice #3 Sustain volume and Release length + voice[2]->envelope()->writeSUSTAIN_RELEASE(value); + break; + + case 0x15: // Filter cut off frequency (bits #0-#2) + filter6581->writeFC_LO(value); + filter8580->writeFC_LO(value); + break; + + case 0x16: // Filter cut off frequency (bits #3-#10) + filter6581->writeFC_HI(value); + filter8580->writeFC_HI(value); + break; + + case 0x17: // Filter control + filter6581->writeRES_FILT(value); + filter8580->writeRES_FILT(value); + break; + + case 0x18: // Volume and filter modes + filter6581->writeMODE_VOL(value); + filter8580->writeMODE_VOL(value); + break; + + default: + break; + } + + // Update voicesync just in case. + voiceSync(false); +} + +void SID::setSamplingParameters(double clockFrequency, SamplingMethod method, double samplingFrequency, double highestAccurateFrequency) +{ + externalFilter->setClockFrequency(clockFrequency); + + switch (method) + { + case DECIMATE: + resampler.reset(new ZeroOrderResampler(clockFrequency, samplingFrequency)); + break; + + case RESAMPLE: + resampler.reset(TwoPassSincResampler::create(clockFrequency, samplingFrequency, highestAccurateFrequency)); + break; + + default: + throw SIDError("Unknown sampling method"); + } +} + +void SID::clockSilent(unsigned int cycles) +{ + ageBusValue(cycles); + + while (cycles != 0) + { + int delta_t = std::min(nextVoiceSync, cycles); + + if (delta_t > 0) + { + for (int i = 0; i < delta_t; i++) + { + // clock waveform generators (can affect OSC3) + voice[0]->wave()->clock(); + voice[1]->wave()->clock(); + voice[2]->wave()->clock(); + + voice[0]->wave()->output(voice[2]->wave()); + voice[1]->wave()->output(voice[0]->wave()); + voice[2]->wave()->output(voice[1]->wave()); + + // clock ENV3 only + voice[2]->envelope()->clock(); + } + + cycles -= delta_t; + nextVoiceSync -= delta_t; + } + + if (nextVoiceSync == 0) + { + voiceSync(true); + } + } +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/SID.h b/src/engine/platform/sound/c64_fp/SID.h new file mode 100644 index 00000000..05ad83c3 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/SID.h @@ -0,0 +1,372 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2016 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef SIDFP_H +#define SIDFP_H + +#include + +#include "siddefs-fp.h" + +#include "sidcxx11.h" + +namespace reSIDfp +{ + +class Filter; +class Filter6581; +class Filter8580; +class ExternalFilter; +class Potentiometer; +class Voice; +class Resampler; + +/** + * SID error exception. + */ +class SIDError +{ +private: + const char* message; + +public: + SIDError(const char* msg) : + message(msg) {} + const char* getMessage() const { return message; } +}; + +/** + * MOS6581/MOS8580 emulation. + */ +class SID +{ +private: + /// Currently active filter + Filter* filter; + + /// Filter used, if model is set to 6581 + std::unique_ptr const filter6581; + + /// Filter used, if model is set to 8580 + std::unique_ptr const filter8580; + + /** + * External filter that provides high-pass and low-pass filtering + * to adjust sound tone slightly. + */ + std::unique_ptr const externalFilter; + + /// Resampler used by audio generation code. + std::unique_ptr resampler; + + /// Paddle X register support + std::unique_ptr const potX; + + /// Paddle Y register support + std::unique_ptr const potY; + + /// SID voices + std::unique_ptr voice[3]; + + /// Time to live for the last written value + int busValueTtl; + + /// Current chip model's bus value TTL + int modelTTL; + + /// Time until #voiceSync must be run. + unsigned int nextVoiceSync; + + /// Currently active chip model. + ChipModel model; + + /// Last written value + unsigned char busValue; + + /// Flags for muted channels + bool muted[3]; + + /** + * Emulated nonlinearity of the envelope DAC. + * + * @See Dac + */ + float envDAC[256]; + + /** + * Emulated nonlinearity of the oscillator DAC. + * + * @See Dac + */ + float oscDAC[4096]; + +private: + /** + * Age the bus value and zero it if it's TTL has expired. + * + * @param n the number of cycles + */ + void ageBusValue(unsigned int n); + + /** + * Get output sample. + * + * @return the output sample + */ + int output() const; + + /** + * Calculate the numebr of cycles according to current parameters + * that it takes to reach sync. + * + * @param sync whether to do the actual voice synchronization + */ + void voiceSync(bool sync); + +public: + SID(); + ~SID(); + + /** + * Set chip model. + * + * @param model chip model to use + * @throw SIDError + */ + void setChipModel(ChipModel model); + + /** + * Get currently emulated chip model. + */ + ChipModel getChipModel() const { return model; } + + /** + * SID reset. + */ + void reset(); + + /** + * 16-bit input (EXT IN). Write 16-bit sample to audio input. NB! The caller + * is responsible for keeping the value within 16 bits. Note that to mix in + * an external audio signal, the signal should be resampled to 1MHz first to + * avoid sampling noise. + * + * @param value input level to set + */ + void input(int value); + + /** + * Read registers. + * + * Reading a write only register returns the last char written to any SID register. + * The individual bits in this value start to fade down towards zero after a few cycles. + * All bits reach zero within approximately $2000 - $4000 cycles. + * It has been claimed that this fading happens in an orderly fashion, + * however sampling of write only registers reveals that this is not the case. + * NOTE: This is not correctly modeled. + * The actual use of write only registers has largely been made + * in the belief that all SID registers are readable. + * To support this belief the read would have to be done immediately + * after a write to the same register (remember that an intermediate write + * to another register would yield that value instead). + * With this in mind we return the last value written to any SID register + * for $2000 cycles without modeling the bit fading. + * + * @param offset SID register to read + * @return value read from chip + */ + unsigned char read(int offset); + + /** + * Write registers. + * + * @param offset chip register to write + * @param value value to write + */ + void write(int offset, unsigned char value); + + /** + * SID voice muting. + * + * @param channel channel to modify + * @param enable is muted? + */ + void mute(int channel, bool enable) { muted[channel] = enable; } + + /** + * Setting of SID sampling parameters. + * + * Use a clock freqency of 985248Hz for PAL C64, 1022730Hz for NTSC C64. + * The default end of passband frequency is pass_freq = 0.9*sample_freq/2 + * for sample frequencies up to ~ 44.1kHz, and 20kHz for higher sample frequencies. + * + * For resampling, the ratio between the clock frequency and the sample frequency + * is limited as follows: 125*clock_freq/sample_freq < 16384 + * E.g. provided a clock frequency of ~ 1MHz, the sample frequency can not be set + * lower than ~ 8kHz. A lower sample frequency would make the resampling code + * overfill its 16k sample ring buffer. + * + * The end of passband frequency is also limited: pass_freq <= 0.9*sample_freq/2 + * + * E.g. for a 44.1kHz sampling rate the end of passband frequency + * is limited to slightly below 20kHz. + * This constraint ensures that the FIR table is not overfilled. + * + * @param clockFrequency System clock frequency at Hz + * @param method sampling method to use + * @param samplingFrequency Desired output sampling rate + * @param highestAccurateFrequency + * @throw SIDError + */ + void setSamplingParameters(double clockFrequency, SamplingMethod method, double samplingFrequency, double highestAccurateFrequency); + + /** + * Clock SID forward using chosen output sampling algorithm. + * + * @param cycles c64 clocks to clock + * @param buf audio output buffer + * @return number of samples produced + */ + int clock(unsigned int cycles, short* buf); + + /** + * Clock SID forward with no audio production. + * + * _Warning_: + * You can't mix this method of clocking with the audio-producing + * clock() because components that don't affect OSC3/ENV3 are not + * emulated. + * + * @param cycles c64 clocks to clock. + */ + void clockSilent(unsigned int cycles); + + /** + * Set filter curve parameter for 6581 model. + * + * @see Filter6581::setFilterCurve(double) + */ + void setFilter6581Curve(double filterCurve); + + /** + * Set filter curve parameter for 8580 model. + * + * @see Filter8580::setFilterCurve(double) + */ + void setFilter8580Curve(double filterCurve); + + /** + * Enable filter emulation. + * + * @param enable false to turn off filter emulation + */ + void enableFilter(bool enable); +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(SID_CPP) + +#include + +#include "Filter.h" +#include "ExternalFilter.h" +#include "Voice.h" +#include "resample/Resampler.h" + +namespace reSIDfp +{ + +RESID_INLINE +void SID::ageBusValue(unsigned int n) +{ + if (likely(busValueTtl != 0)) + { + busValueTtl -= n; + + if (unlikely(busValueTtl <= 0)) + { + busValue = 0; + busValueTtl = 0; + } + } +} + +RESID_INLINE +int SID::output() const +{ + const int v1 = voice[0]->output(voice[2]->wave()); + const int v2 = voice[1]->output(voice[0]->wave()); + const int v3 = voice[2]->output(voice[1]->wave()); + + return externalFilter->clock(filter->clock(v1, v2, v3)); +} + + +RESID_INLINE +int SID::clock(unsigned int cycles, short* buf) +{ + ageBusValue(cycles); + int s = 0; + + while (cycles != 0) + { + unsigned int delta_t = std::min(nextVoiceSync, cycles); + + if (likely(delta_t > 0)) + { + for (unsigned int i = 0; i < delta_t; i++) + { + // clock waveform generators + voice[0]->wave()->clock(); + voice[1]->wave()->clock(); + voice[2]->wave()->clock(); + + // clock envelope generators + voice[0]->envelope()->clock(); + voice[1]->envelope()->clock(); + voice[2]->envelope()->clock(); + + if (unlikely(resampler->input(output()))) + { + buf[s++] = resampler->getOutput(); + } + } + + cycles -= delta_t; + nextVoiceSync -= delta_t; + } + + if (unlikely(nextVoiceSync == 0)) + { + voiceSync(true); + } + } + + return s; +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/Spline.cpp b/src/engine/platform/sound/c64_fp/Spline.cpp new file mode 100644 index 00000000..50d55fef --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Spline.cpp @@ -0,0 +1,119 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2015 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "Spline.h" + +#include +#include + +namespace reSIDfp +{ + +Spline::Spline(const std::vector &input) : + params(input.size()), + c(¶ms[0]) +{ + assert(input.size() > 2); + + const size_t coeffLength = input.size() - 1; + + std::vector dxs(coeffLength); + std::vector ms(coeffLength); + + // Get consecutive differences and slopes + for (size_t i = 0; i < coeffLength; i++) + { + assert(input[i].x < input[i + 1].x); + + const double dx = input[i + 1].x - input[i].x; + const double dy = input[i + 1].y - input[i].y; + dxs[i] = dx; + ms[i] = dy/dx; + } + + // Get degree-1 coefficients + params[0].c = ms[0]; + for (size_t i = 1; i < coeffLength; i++) + { + const double m = ms[i - 1]; + const double mNext = ms[i]; + if (m * mNext <= 0) + { + params[i].c = 0.0; + } + else + { + const double dx = dxs[i - 1]; + const double dxNext = dxs[i]; + const double common = dx + dxNext; + params[i].c = 3.0 * common / ((common + dxNext) / m + (common + dx) / mNext); + } + } + params[coeffLength].c = ms[coeffLength - 1]; + + // Get degree-2 and degree-3 coefficients + for (size_t i = 0; i < coeffLength; i++) + { + params[i].x1 = input[i].x; + params[i].x2 = input[i + 1].x; + params[i].d = input[i].y; + + const double c1 = params[i].c; + const double m = ms[i]; + const double invDx = 1.0 / dxs[i]; + const double common = c1 + params[i + 1].c - m - m; + params[i].b = (m - c1 - common) * invDx; + params[i].a = common * invDx * invDx; + } + + // Fix the upper range, because we interpolate outside original bounds if necessary. + params[coeffLength - 1].x2 = std::numeric_limits::max(); +} + +Spline::Point Spline::evaluate(double x) const +{ + if ((x < c->x1) || (x > c->x2)) + { + for (size_t i = 0; i < params.size(); i++) + { + if (x <= params[i].x2) + { + c = ¶ms[i]; + break; + } + } + } + + // Interpolate + const double diff = x - c->x1; + + Point out; + + // y = a*x^3 + b*x^2 + c*x + d + out.x = ((c->a * diff + c->b) * diff + c->c) * diff + c->d; + + // dy = 3*a*x^2 + 2*b*x + c + out.y = (3.0 * c->a * diff + 2.0 * c->b) * diff + c->c; + + return out; +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/Spline.h b/src/engine/platform/sound/c64_fp/Spline.h new file mode 100644 index 00000000..6cc2b1ed --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Spline.h @@ -0,0 +1,78 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2015 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef SPLINE_H +#define SPLINE_H + +#include +#include + +namespace reSIDfp +{ + +/** + * Fritsch-Carlson monotone cubic spline interpolation. + * + * Based on the implementation from the [Monotone cubic interpolation] wikipedia page. + * + * [Monotone cubic interpolation]: https://en.wikipedia.org/wiki/Monotone_cubic_interpolation + */ +class Spline +{ +public: + typedef struct + { + double x; + double y; + } Point; + +private: + typedef struct + { + double x1; + double x2; + double a; + double b; + double c; + double d; + } Param; + + typedef std::vector ParamVector; + +private: + /// Interpolation parameters + ParamVector params; + + /// Last used parameters, cached for speed up + mutable ParamVector::const_pointer c; + +public: + Spline(const std::vector &input); + + /** + * Evaluate y and its derivative at given point x. + */ + Point evaluate(double x) const; +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/Voice.h b/src/engine/platform/sound/c64_fp/Voice.h new file mode 100644 index 00000000..fc7ed41b --- /dev/null +++ b/src/engine/platform/sound/c64_fp/Voice.h @@ -0,0 +1,130 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef VOICE_H +#define VOICE_H + +#include + +#include "siddefs-fp.h" +#include "WaveformGenerator.h" +#include "EnvelopeGenerator.h" + +#include "sidcxx11.h" + +namespace reSIDfp +{ + +/** + * Representation of SID voice block. + */ +class Voice +{ +private: + std::unique_ptr const waveformGenerator; + + std::unique_ptr const envelopeGenerator; + + /// The DAC LUT for analog waveform output + float* wavDAC; //-V730_NOINIT this is initialized in the SID constructor + + /// The DAC LUT for analog envelope output + float* envDAC; //-V730_NOINIT this is initialized in the SID constructor + +public: + /** + * Amplitude modulated waveform output. + * + * The waveform DAC generates a voltage between virtual ground and Vdd + * (5-12 V for the 6581 and 4.75-9 V for the 8580) + * corresponding to oscillator state 0 .. 4095. + * + * The envelope DAC generates a voltage between waveform gen output and + * the virtual ground level, corresponding to envelope state 0 .. 255. + * + * Ideal range [-2048*255, 2047*255]. + * + * @param ringModulator Ring-modulator for waveform + * @return the voice analog output + */ + RESID_INLINE + int output(const WaveformGenerator* ringModulator) const + { + unsigned int const wav = waveformGenerator->output(ringModulator); + unsigned int const env = envelopeGenerator->output(); + + // DAC imperfections are emulated by using the digital output + // as an index into a DAC lookup table. + return static_cast(wavDAC[wav] * envDAC[env]); + } + + /** + * Constructor. + */ + Voice() : + waveformGenerator(new WaveformGenerator()), + envelopeGenerator(new EnvelopeGenerator()) {} + + /** + * Set the analog DAC emulation for waveform generator. + * Must be called before any operation. + * + * @param dac + */ + void setWavDAC(float* dac) { wavDAC = dac; } + + /** + * Set the analog DAC emulation for envelope. + * Must be called before any operation. + * + * @param dac + */ + void setEnvDAC(float* dac) { envDAC = dac; } + + WaveformGenerator* wave() const { return waveformGenerator.get(); } + + EnvelopeGenerator* envelope() const { return envelopeGenerator.get(); } + + /** + * Write control register. + * + * @param control Control register value. + */ + void writeCONTROL_REG(unsigned char control) + { + waveformGenerator->writeCONTROL_REG(control); + envelopeGenerator->writeCONTROL_REG(control); + } + + /** + * SID reset. + */ + void reset() + { + waveformGenerator->reset(); + envelopeGenerator->reset(); + } +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/WaveformCalculator.cpp b/src/engine/platform/sound/c64_fp/WaveformCalculator.cpp new file mode 100644 index 00000000..fe5030fa --- /dev/null +++ b/src/engine/platform/sound/c64_fp/WaveformCalculator.cpp @@ -0,0 +1,204 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2016 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "WaveformCalculator.h" + +#include + +namespace reSIDfp +{ + +WaveformCalculator* WaveformCalculator::getInstance() +{ + static WaveformCalculator instance; + return &instance; +} + +/** + * Parameters derived with the Monte Carlo method based on + * samplings by kevtris. Code and data available in the project repository [1]. + * + * The score here reported is the acoustic error + * calculated XORing the estimated and the sampled values. + * In parentheses the number of mispredicted bits + * on a total of 32768. + * + * [1] https://github.com/libsidplayfp/combined-waveforms + */ +const CombinedWaveformConfig config[2][4] = +{ + { /* kevtris chip G (6581 R2) */ + {0.90251f, 0.f, 0.f, 1.9147f, 1.6747f, 0.62376f }, // error 1689 (280) + {0.93088f, 2.4843f, 0.f, 1.0353f, 1.1484f, 0.f }, // error 6128 (130) + {0.90988f, 2.26303f, 1.13126f, 1.0035f, 1.13801f, 0.f }, // error 14243 (632) + {0.91f, 1.192f, 0.f, 1.0169f, 1.2f, 0.637f }, // error 64 (2) + }, + { /* kevtris chip V (8580 R5) */ + {0.9632f, 0.f, 0.975f, 1.7467f, 2.36132f, 0.975395f}, // error 1380 (169) + {0.92886f, 1.67696f, 0.f, 1.1014f, 1.4352f, 0.f }, // error 8007 (218) + {0.94043f, 1.7937f, 0.981f, 1.1213f, 1.4259f, 0.f }, // error 11957 (362) + {0.96211f, 0.98695f, 1.00387f, 1.46499f, 1.98375f, 0.77777f }, // error 2369 (89) + }, +}; + +/** + * Generate bitstate based on emulation of combined waves. + * + * @param config model parameters matrix + * @param waveform the waveform to emulate, 1 .. 7 + * @param accumulator the high bits of the accumulator value + */ +short calculateCombinedWaveform(const CombinedWaveformConfig& config, int waveform, int accumulator) +{ + float o[12]; + + // Saw + for (unsigned int i = 0; i < 12; i++) + { + o[i] = (accumulator & (1 << i)) != 0 ? 1.f : 0.f; + } + + // convert to Triangle + if ((waveform & 3) == 1) + { + const bool top = (accumulator & 0x800) != 0; + + for (int i = 11; i > 0; i--) + { + o[i] = top ? 1.0f - o[i - 1] : o[i - 1]; + } + + o[0] = 0.f; + } + + // or to Saw+Triangle + else if ((waveform & 3) == 3) + { + // bottom bit is grounded via T waveform selector + o[0] *= config.stmix; + + for (int i = 1; i < 12; i++) + { + /* + * Enabling the S waveform pulls the XOR circuit selector transistor down + * (which would normally make the descending ramp of the triangle waveform), + * so ST does not actually have a sawtooth and triangle waveform combined, + * but merely combines two sawtooths, one rising double the speed the other. + * + * http://www.lemon64.com/forum/viewtopic.php?t=25442&postdays=0&postorder=asc&start=165 + */ + o[i] = o[i - 1] * (1.f - config.stmix) + o[i] * config.stmix; + } + } + + // topbit for Saw + if ((waveform & 2) == 2) + { + o[11] *= config.topbit; + } + + // ST, P* waveforms + if (waveform == 3 || waveform > 4) + { + float distancetable[12 * 2 + 1]; + distancetable[12] = 1.f; + for (int i = 12; i > 0; i--) + { + distancetable[12-i] = 1.0f / pow(config.distance1, i); + distancetable[12+i] = 1.0f / pow(config.distance2, i); + } + + float tmp[12]; + + for (int i = 0; i < 12; i++) + { + float avg = 0.f; + float n = 0.f; + + for (int j = 0; j < 12; j++) + { + const float weight = distancetable[i - j + 12]; + avg += o[j] * weight; + n += weight; + } + + // pulse control bit + if (waveform > 4) + { + const float weight = distancetable[i - 12 + 12]; + avg += config.pulsestrength * weight; + n += weight; + } + + tmp[i] = (o[i] + avg / n) * 0.5f; + } + + for (int i = 0; i < 12; i++) + { + o[i] = tmp[i]; + } + } + + short value = 0; + + for (unsigned int i = 0; i < 12; i++) + { + if (o[i] > config.bias) + { + value |= 1 << i; + } + } + + return value; +} + +matrix_t* WaveformCalculator::buildTable(ChipModel model) +{ + const CombinedWaveformConfig* cfgArray = config[model == MOS6581 ? 0 : 1]; + + cw_cache_t::iterator lb = CACHE.lower_bound(cfgArray); + + if (lb != CACHE.end() && !(CACHE.key_comp()(cfgArray, lb->first))) + { + return &(lb->second); + } + + matrix_t wftable(8, 4096); + + for (unsigned int idx = 0; idx < 1 << 12; idx++) + { + wftable[0][idx] = 0xfff; + wftable[1][idx] = static_cast((idx & 0x800) == 0 ? idx << 1 : (idx ^ 0xfff) << 1); + wftable[2][idx] = static_cast(idx); + wftable[3][idx] = calculateCombinedWaveform(cfgArray[0], 3, idx); + wftable[4][idx] = 0xfff; + wftable[5][idx] = calculateCombinedWaveform(cfgArray[1], 5, idx); + wftable[6][idx] = calculateCombinedWaveform(cfgArray[2], 6, idx); + wftable[7][idx] = calculateCombinedWaveform(cfgArray[3], 7, idx); + } +#ifdef HAVE_CXX11 + return &(CACHE.emplace_hint(lb, cw_cache_t::value_type(cfgArray, wftable))->second); +#else + return &(CACHE.insert(lb, cw_cache_t::value_type(cfgArray, wftable))->second); +#endif +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/WaveformCalculator.h b/src/engine/platform/sound/c64_fp/WaveformCalculator.h new file mode 100644 index 00000000..f9183c5d --- /dev/null +++ b/src/engine/platform/sound/c64_fp/WaveformCalculator.h @@ -0,0 +1,128 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2016 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef WAVEFORMCALCULATOR_h +#define WAVEFORMCALCULATOR_h + +#include + +#include "array.h" +#include "sidcxx11.h" +#include "siddefs-fp.h" + + +namespace reSIDfp +{ + +/** + * Combined waveform model parameters. + */ +typedef struct +{ + float bias; + float pulsestrength; + float topbit; + float distance1; + float distance2; + float stmix; +} CombinedWaveformConfig; + +/** + * Combined waveform calculator for WaveformGenerator. + * By combining waveforms, the bits of each waveform are effectively short + * circuited. A zero bit in one waveform will result in a zero output bit + * (thus the infamous claim that the waveforms are AND'ed). + * However, a zero bit in one waveform may also affect the neighboring bits + * in the output. + * + * Example: + * + * 1 1 + * Bit # 1 0 9 8 7 6 5 4 3 2 1 0 + * ----------------------- + * Sawtooth 0 0 0 1 1 1 1 1 1 0 0 0 + * + * Triangle 0 0 1 1 1 1 1 1 0 0 0 0 + * + * AND 0 0 0 1 1 1 1 1 0 0 0 0 + * + * Output 0 0 0 0 1 1 1 0 0 0 0 0 + * + * + * Re-vectorized die photographs reveal the mechanism behind this behavior. + * Each waveform selector bit acts as a switch, which directly connects + * internal outputs into the waveform DAC inputs as follows: + * + * - Noise outputs the shift register bits to DAC inputs as described above. + * Each output is also used as input to the next bit when the shift register + * is shifted. Lower four bits are grounded. + * - Pulse connects a single line to all DAC inputs. The line is connected to + * either 5V (pulse on) or 0V (pulse off) at bit 11, and ends at bit 0. + * - Triangle connects the upper 11 bits of the (MSB EOR'ed) accumulator to the + * DAC inputs, so that DAC bit 0 = 0, DAC bit n = accumulator bit n - 1. + * - Sawtooth connects the upper 12 bits of the accumulator to the DAC inputs, + * so that DAC bit n = accumulator bit n. Sawtooth blocks out the MSB from + * the EOR used to generate the triangle waveform. + * + * We can thus draw the following conclusions: + * + * - The shift register may be written to by combined waveforms. + * - The pulse waveform interconnects all bits in combined waveforms via the + * pulse line. + * - The combination of triangle and sawtooth interconnects neighboring bits + * of the sawtooth waveform. + * + * Also in the 6581 the MSB of the oscillator, used as input for the + * triangle xor logic and the pulse adder's last bit, is connected directly + * to the waveform selector, while in the 8580 it is latched at sid_clk2 + * before being forwarded to the selector. Thus in the 6581 if the sawtooth MSB + * is pulled down it might affect the oscillator's adder + * driving the top bit low. + * + */ +class WaveformCalculator +{ +private: + typedef std::map cw_cache_t; + +private: + cw_cache_t CACHE; + + WaveformCalculator() DEFAULT; + +public: + /** + * Get the singleton instance. + */ + static WaveformCalculator* getInstance(); + + /** + * Build waveform tables for use by WaveformGenerator. + * + * @param model Chip model to use + * @return Waveform table + */ + matrix_t* buildTable(ChipModel model); +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/WaveformGenerator.cpp b/src/engine/platform/sound/c64_fp/WaveformGenerator.cpp new file mode 100644 index 00000000..16a9eb6b --- /dev/null +++ b/src/engine/platform/sound/c64_fp/WaveformGenerator.cpp @@ -0,0 +1,357 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2021 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#define WAVEFORMGENERATOR_CPP + +#include "WaveformGenerator.h" + +/* + * This fixes tests + * SID/wb_testsuite/noise_writeback_check_8_to_C_old + * SID/wb_testsuite/noise_writeback_check_9_to_C_old + * SID/wb_testsuite/noise_writeback_check_A_to_C_old + * SID/wb_testsuite/noise_writeback_check_C_to_C_old + * + * but breaks SID/wf12nsr/wf12nsr + * + * needs more digging... + */ +//#define NO_WB_NOI_PUL + +namespace reSIDfp +{ + +/** + * Number of cycles after which the waveform output fades to 0 when setting + * the waveform register to 0. + * Values measured on warm chips (6581R3/R4 and 8580R5) + * checking OSC3. + * Times vary wildly with temperature and may differ + * from chip to chip so the numbers here represent + * only the big difference between the old and new models. + * + * See [VICE Bug #290](http://sourceforge.net/p/vice-emu/bugs/290/) + * and [VICE Bug #1128](http://sourceforge.net/p/vice-emu/bugs/1128/) + */ +// ~95ms +const unsigned int FLOATING_OUTPUT_TTL_6581R3 = 54000; +const unsigned int FLOATING_OUTPUT_FADE_6581R3 = 1400; +// ~1s +const unsigned int FLOATING_OUTPUT_TTL_6581R4 = 1000000; +// ~1s +const unsigned int FLOATING_OUTPUT_TTL_8580R5 = 800000; +const unsigned int FLOATING_OUTPUT_FADE_8580R5 = 50000; + +/** + * Number of cycles after which the shift register is reset + * when the test bit is set. + * Values measured on warm chips (6581R3/R4 and 8580R5) + * checking OSC3. + * Times vary wildly with temperature and may differ + * from chip to chip so the numbers here represent + * only the big difference between the old and new models. + */ +// ~210ms +const unsigned int SHIFT_REGISTER_RESET_6581R3 = 50000; +const unsigned int SHIFT_REGISTER_FADE_6581R3 = 15000; +// ~2.15s +const unsigned int SHIFT_REGISTER_RESET_6581R4 = 2150000; +// ~2.8s +const unsigned int SHIFT_REGISTER_RESET_8580R5 = 986000; +const unsigned int SHIFT_REGISTER_FADE_8580R5 = 314300; + +/* + * This is what happens when the lfsr is clocked: + * + * cycle 0: bit 19 of the accumulator goes from low to high, the noise register acts normally, + * the output may overwrite a bit; + * + * cycle 1: first phase of the shift, the bits are interconnected and the output of each bit + * is latched into the following. The output may overwrite the latched value. + * + * cycle 2: second phase of the shift, the latched value becomes active in the first + * half of the clock and from the second half the register returns to normal operation. + * + * When the test or reset lines are active the first phase is executed at every cyle + * until the signal is released triggering the second phase. + */ +void WaveformGenerator::clock_shift_register(unsigned int bit0) +{ + shift_register = (shift_register >> 1) | bit0; + + // New noise waveform output. + set_noise_output(); +} + +unsigned int WaveformGenerator::get_noise_writeback() +{ + return + ~( + (1 << 2) | // Bit 20 + (1 << 4) | // Bit 18 + (1 << 8) | // Bit 14 + (1 << 11) | // Bit 11 + (1 << 13) | // Bit 9 + (1 << 17) | // Bit 5 + (1 << 20) | // Bit 2 + (1 << 22) // Bit 0 + ) | + ((waveform_output & (1 << 11)) >> 9) | // Bit 11 -> bit 20 + ((waveform_output & (1 << 10)) >> 6) | // Bit 10 -> bit 18 + ((waveform_output & (1 << 9)) >> 1) | // Bit 9 -> bit 14 + ((waveform_output & (1 << 8)) << 3) | // Bit 8 -> bit 11 + ((waveform_output & (1 << 7)) << 6) | // Bit 7 -> bit 9 + ((waveform_output & (1 << 6)) << 11) | // Bit 6 -> bit 5 + ((waveform_output & (1 << 5)) << 15) | // Bit 5 -> bit 2 + ((waveform_output & (1 << 4)) << 18); // Bit 4 -> bit 0 +} + +void WaveformGenerator::write_shift_register() +{ + if (unlikely(waveform > 0x8) && likely(!test) && likely(shift_pipeline != 1)) + { + // Write changes to the shift register output caused by combined waveforms + // back into the shift register. This happens only when the register is clocked + // (see $D1+$81_wave_test [1]) or when the test bit is falling. + // A bit once set to zero cannot be changed, hence the and'ing. + // + // [1] ftp://ftp.untergrund.net/users/nata/sid_test/$D1+$81_wave_test.7z + // + // FIXME: Write test program to check the effect of 1 bits and whether + // neighboring bits are affected. + +#ifdef NO_WB_NOI_PUL + if (waveform == 0xc) + return; +#endif + shift_register &= get_noise_writeback(); + + noise_output &= waveform_output; + set_no_noise_or_noise_output(); + } +} + +void WaveformGenerator::set_noise_output() +{ + noise_output = + ((shift_register & (1 << 2)) << 9) | // Bit 20 -> bit 11 + ((shift_register & (1 << 4)) << 6) | // Bit 18 -> bit 10 + ((shift_register & (1 << 8)) << 1) | // Bit 14 -> bit 9 + ((shift_register & (1 << 11)) >> 3) | // Bit 11 -> bit 8 + ((shift_register & (1 << 13)) >> 6) | // Bit 9 -> bit 7 + ((shift_register & (1 << 17)) >> 11) | // Bit 5 -> bit 6 + ((shift_register & (1 << 20)) >> 15) | // Bit 2 -> bit 5 + ((shift_register & (1 << 22)) >> 18); // Bit 0 -> bit 4 + + set_no_noise_or_noise_output(); +} + +void WaveformGenerator::setWaveformModels(matrix_t* models) +{ + model_wave = models; +} + +void WaveformGenerator::synchronize(WaveformGenerator* syncDest, const WaveformGenerator* syncSource) const +{ + // A special case occurs when a sync source is synced itself on the same + // cycle as when its MSB is set high. In this case the destination will + // not be synced. This has been verified by sampling OSC3. + if (unlikely(msb_rising) && syncDest->sync && !(sync && syncSource->msb_rising)) + { + syncDest->accumulator = 0; + } +} + +bool do_pre_writeback(unsigned int waveform_prev, unsigned int waveform, bool is6581) +{ + // no writeback without combined waveforms + if (likely(waveform_prev <= 0x8)) + return false; + // no writeback when changing to noise + if (waveform == 8) + return false; + // What's happening here? + if (is6581 && + ((((waveform_prev & 0x3) == 0x1) && ((waveform & 0x3) == 0x2)) + || (((waveform_prev & 0x3) == 0x2) && ((waveform & 0x3) == 0x1)))) + return false; + if (waveform_prev == 0xc) + { + if (is6581) + return false; + else if ((waveform != 0x9) && (waveform != 0xe)) + return false; + } +#ifdef NO_WB_NOI_PUL + if (waveform == 0xc) + return false; +#endif + // ok do the writeback + return true; +} + +/* + * When noise and pulse are combined all the bits are + * connected and the four lower ones are grounded. + * This causes the adjacent bits to be pulled down, + * with different strength depending on model. + * + * This is just a rough attempt at modelling the effect. + */ + +static unsigned int noise_pulse6581(unsigned int noise) +{ + return (noise < 0xf00) ? 0x000 : noise & (noise << 1) & (noise << 2); +} + +static unsigned int noise_pulse8580(unsigned int noise) +{ + return (noise < 0xfc0) ? noise & (noise << 1) : 0xfc0; +} + +void WaveformGenerator::set_no_noise_or_noise_output() +{ + no_noise_or_noise_output = no_noise | noise_output; + + // pulse+noise + if (unlikely((waveform & 0xc) == 0xc)) + no_noise_or_noise_output = is6581 + ? noise_pulse6581(no_noise_or_noise_output) + : noise_pulse8580(no_noise_or_noise_output); + +} + +void WaveformGenerator::writeCONTROL_REG(unsigned char control) +{ + const unsigned int waveform_prev = waveform; + const bool test_prev = test; + + waveform = (control >> 4) & 0x0f; + test = (control & 0x08) != 0; + sync = (control & 0x02) != 0; + + // Substitution of accumulator MSB when sawtooth = 0, ring_mod = 1. + ring_msb_mask = ((~control >> 5) & (control >> 2) & 0x1) << 23; + + if (waveform != waveform_prev) + { + // Set up waveform table. + wave = (*model_wave)[waveform & 0x7]; + + // no_noise and no_pulse are used in set_waveform_output() as bitmasks to + // only let the noise or pulse influence the output when the noise or pulse + // waveforms are selected. + no_noise = (waveform & 0x8) != 0 ? 0x000 : 0xfff; + set_no_noise_or_noise_output(); + no_pulse = (waveform & 0x4) != 0 ? 0x000 : 0xfff; + + if (waveform == 0) + { + // Change to floating DAC input. + // Reset fading time for floating DAC input. + floating_output_ttl = is6581 ? FLOATING_OUTPUT_TTL_6581R3 : FLOATING_OUTPUT_TTL_8580R5; + } + } + + if (test != test_prev) + { + if (test) + { + // Reset accumulator. + accumulator = 0; + + // Flush shift pipeline. + shift_pipeline = 0; + + // Set reset time for shift register. + shift_register_reset = is6581 ? SHIFT_REGISTER_RESET_6581R3 : SHIFT_REGISTER_RESET_8580R5; + } + else + { + // When the test bit is falling, the second phase of the shift is + // completed by enabling SRAM write. + + // During first phase of the shift the bits are interconnected + // and the output of each bit is latched into the following. + // The output may overwrite the latched value. + if (do_pre_writeback(waveform_prev, waveform, is6581)) + { + shift_register &= get_noise_writeback(); + } + + // bit0 = (bit22 | test) ^ bit17 = 1 ^ bit17 = ~bit17 + clock_shift_register((~shift_register << 17) & (1 << 22)); + } + } +} + +void WaveformGenerator::waveBitfade() +{ + waveform_output &= waveform_output >> 1; + osc3 = waveform_output; + if (waveform_output != 0) + floating_output_ttl = is6581 ? FLOATING_OUTPUT_FADE_6581R3 : FLOATING_OUTPUT_FADE_8580R5; +} + +void WaveformGenerator::shiftregBitfade() +{ + shift_register |= shift_register >> 1; + shift_register |= 0x400000; + if (shift_register != 0x7fffff) + shift_register_reset = is6581 ? SHIFT_REGISTER_FADE_6581R3 : SHIFT_REGISTER_FADE_8580R5; +} + +void WaveformGenerator::reset() +{ + // accumulator is not changed on reset + freq = 0; + pw = 0; + + msb_rising = false; + + waveform = 0; + osc3 = 0; + + test = false; + sync = false; + + wave = model_wave ? (*model_wave)[0] : nullptr; + + ring_msb_mask = 0; + no_noise = 0xfff; + no_pulse = 0xfff; + pulse_output = 0xfff; + + shift_register_reset = 0; + shift_register = 0x7fffff; + // when reset is released the shift register is clocked once + // so the lower bit is zeroed out + // bit0 = (bit22 | test) ^ bit17 = 1 ^ 1 = 0 + clock_shift_register(0); + + shift_pipeline = 0; + + waveform_output = 0; + floating_output_ttl = 0; +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/WaveformGenerator.h b/src/engine/platform/sound/c64_fp/WaveformGenerator.h new file mode 100644 index 00000000..9fd617f6 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/WaveformGenerator.h @@ -0,0 +1,396 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2022 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004,2010 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef WAVEFORMGENERATOR_H +#define WAVEFORMGENERATOR_H + +#include "siddefs-fp.h" +#include "array.h" + +#include "sidcxx11.h" + +namespace reSIDfp +{ + +/** + * A 24 bit accumulator is the basis for waveform generation. + * FREQ is added to the lower 16 bits of the accumulator each cycle. + * The accumulator is set to zero when TEST is set, and starts counting + * when TEST is cleared. + * + * Waveforms are generated as follows: + * + * - No waveform: + * When no waveform is selected, the DAC input is floating. + * + * + * - Triangle: + * The upper 12 bits of the accumulator are used. + * The MSB is used to create the falling edge of the triangle by inverting + * the lower 11 bits. The MSB is thrown away and the lower 11 bits are + * left-shifted (half the resolution, full amplitude). + * Ring modulation substitutes the MSB with MSB EOR NOT sync_source MSB. + * + * + * - Sawtooth: + * The output is identical to the upper 12 bits of the accumulator. + * + * + * - Pulse: + * The upper 12 bits of the accumulator are used. + * These bits are compared to the pulse width register by a 12 bit digital + * comparator; output is either all one or all zero bits. + * The pulse setting is delayed one cycle after the compare. + * The test bit, when set to one, holds the pulse waveform output at 0xfff + * regardless of the pulse width setting. + * + * + * - Noise: + * The noise output is taken from intermediate bits of a 23-bit shift register + * which is clocked by bit 19 of the accumulator. + * The shift is delayed 2 cycles after bit 19 is set high. + * + * Operation: Calculate EOR result, shift register, set bit 0 = result. + * + * reset +--------------------------------------------+ + * | | | + * test--OR-->EOR<--+ | + * | | | + * 2 2 2 1 1 1 1 1 1 1 1 1 1 | + * Register bits: 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 <---+ + * | | | | | | | | + * Waveform bits: 1 1 9 8 7 6 5 4 + * 1 0 + * + * The low 4 waveform bits are zero (grounded). + */ +class WaveformGenerator +{ +private: + matrix_t* model_wave; + + short* wave; + + // PWout = (PWn/40.95)% + unsigned int pw; + + unsigned int shift_register; + + /// Emulation of pipeline causing bit 19 to clock the shift register. + int shift_pipeline; + + unsigned int ring_msb_mask; + unsigned int no_noise; + unsigned int noise_output; + unsigned int no_noise_or_noise_output; + unsigned int no_pulse; + unsigned int pulse_output; + + /// The control register right-shifted 4 bits; used for output function table lookup. + unsigned int waveform; + + unsigned int waveform_output; + + /// Current accumulator value. + unsigned int accumulator; + + // Fout = (Fn*Fclk/16777216)Hz + unsigned int freq; + + /// 8580 tri/saw pipeline + unsigned int tri_saw_pipeline; + + /// The OSC3 value + unsigned int osc3; + + /// Remaining time to fully reset shift register. + unsigned int shift_register_reset; + + // The wave signal TTL when no waveform is selected + unsigned int floating_output_ttl; + + /// The control register bits. Gate is handled by EnvelopeGenerator. + //@{ + bool test; + bool sync; + //@} + + /// Tell whether the accumulator MSB was set high on this cycle. + bool msb_rising; + + bool is6581; //-V730_NOINIT this is initialized in the SID constructor + +private: + void clock_shift_register(unsigned int bit0); + + unsigned int get_noise_writeback(); + + void write_shift_register(); + + void set_noise_output(); + + void set_no_noise_or_noise_output(); + + void waveBitfade(); + + void shiftregBitfade(); + +public: + void setWaveformModels(matrix_t* models); + + /** + * Set the chip model. + * Must be called before any operation. + * + * @param is6581 true if MOS6581, false if CSG8580 + */ + void setModel(bool is6581) { this->is6581 = is6581; } + + /** + * SID clocking. + */ + void clock(); + + /** + * Synchronize oscillators. + * This must be done after all the oscillators have been clock()'ed, + * so that they are in the same state. + * + * @param syncDest The oscillator that will be synced + * @param syncSource The sync source oscillator + */ + void synchronize(WaveformGenerator* syncDest, const WaveformGenerator* syncSource) const; + + /** + * Constructor. + */ + WaveformGenerator() : + model_wave(nullptr), + wave(nullptr), + pw(0), + shift_register(0), + shift_pipeline(0), + ring_msb_mask(0), + no_noise(0), + noise_output(0), + no_noise_or_noise_output(0), + no_pulse(0), + pulse_output(0), + waveform(0), + waveform_output(0), + accumulator(0x555555), // Accumulator's even bits are high on powerup + freq(0), + tri_saw_pipeline(0x555), + osc3(0), + shift_register_reset(0), + floating_output_ttl(0), + test(false), + sync(false), + msb_rising(false) {} + + /** + * Write FREQ LO register. + * + * @param freq_lo low 8 bits of frequency + */ + void writeFREQ_LO(unsigned char freq_lo) { freq = (freq & 0xff00) | (freq_lo & 0xff); } + + /** + * Write FREQ HI register. + * + * @param freq_hi high 8 bits of frequency + */ + void writeFREQ_HI(unsigned char freq_hi) { freq = (freq_hi << 8 & 0xff00) | (freq & 0xff); } + + /** + * Write PW LO register. + * + * @param pw_lo low 8 bits of pulse width + */ + void writePW_LO(unsigned char pw_lo) { pw = (pw & 0xf00) | (pw_lo & 0x0ff); } + + /** + * Write PW HI register. + * + * @param pw_hi high 8 bits of pulse width + */ + void writePW_HI(unsigned char pw_hi) { pw = (pw_hi << 8 & 0xf00) | (pw & 0x0ff); } + + /** + * Write CONTROL REGISTER register. + * + * @param control control register value + */ + void writeCONTROL_REG(unsigned char control); + + /** + * SID reset. + */ + void reset(); + + /** + * 12-bit waveform output. + * + * @param ringModulator The oscillator ring-modulating current one. + * @return the waveform generator digital output + */ + unsigned int output(const WaveformGenerator* ringModulator); + + /** + * Read OSC3 value. + */ + unsigned char readOSC() const { return static_cast(osc3 >> 4); } + + /** + * Read accumulator value. + */ + unsigned int readAccumulator() const { return accumulator; } + + /** + * Read freq value. + */ + unsigned int readFreq() const { return freq; } + + /** + * Read test value. + */ + bool readTest() const { return test; } + + /** + * Read sync value. + */ + bool readSync() const { return sync; } +}; + +} // namespace reSIDfp + +#if RESID_INLINING || defined(WAVEFORMGENERATOR_CPP) + +namespace reSIDfp +{ + +RESID_INLINE +void WaveformGenerator::clock() +{ + if (unlikely(test)) + { + if (unlikely(shift_register_reset != 0) && unlikely(--shift_register_reset == 0)) + { + shiftregBitfade(); + + // New noise waveform output. + set_noise_output(); + } + + // The test bit sets pulse high. + pulse_output = 0xfff; + } + else + { + // Calculate new accumulator value; + const unsigned int accumulator_old = accumulator; + accumulator = (accumulator + freq) & 0xffffff; + + // Check which bit have changed + const unsigned int accumulator_bits_set = ~accumulator_old & accumulator; + + // Check whether the MSB is set high. This is used for synchronization. + msb_rising = (accumulator_bits_set & 0x800000) != 0; + + // Shift noise register once for each time accumulator bit 19 is set high. + // The shift is delayed 2 cycles. + if (unlikely((accumulator_bits_set & 0x080000) != 0)) + { + // Pipeline: Detect rising bit, shift phase 1, shift phase 2. + shift_pipeline = 2; + } + else if (unlikely(shift_pipeline != 0) && --shift_pipeline == 0) + { + // bit0 = (bit22 | test) ^ bit17 + clock_shift_register(((shift_register << 22) ^ (shift_register << 17)) & (1 << 22)); + } + } +} + +RESID_INLINE +unsigned int WaveformGenerator::output(const WaveformGenerator* ringModulator) +{ + // Set output value. + if (likely(waveform != 0)) + { + const unsigned int ix = (accumulator ^ (~ringModulator->accumulator & ring_msb_mask)) >> 12; + + // The bit masks no_pulse and no_noise are used to achieve branch-free + // calculation of the output value. + waveform_output = wave[ix] & (no_pulse | pulse_output) & no_noise_or_noise_output; + + // Triangle/Sawtooth output is delayed half cycle on 8580. + // This will appear as a one cycle delay on OSC3 as it is latched first phase of the clock. + if ((waveform & 3) && !is6581) + { + osc3 = tri_saw_pipeline & (no_pulse | pulse_output) & no_noise_or_noise_output; + tri_saw_pipeline = wave[ix]; + } + else + { + osc3 = waveform_output; + } + + // In the 6581 the top bit of the accumulator may be driven low by combined waveforms + // when the sawtooth is selected + // FIXME doesn't seem to always happen + if ((waveform & 2) && unlikely(waveform & 0xd) && is6581) + accumulator &= (waveform_output << 12) | 0x7fffff; + + write_shift_register(); + } + else + { + // Age floating DAC input. + if (likely(floating_output_ttl != 0) && unlikely(--floating_output_ttl == 0)) + { + waveBitfade(); + } + } + + // The pulse level is defined as (accumulator >> 12) >= pw ? 0xfff : 0x000. + // The expression -((accumulator >> 12) >= pw) & 0xfff yields the same + // results without any branching (and thus without any pipeline stalls). + // NB! This expression relies on that the result of a boolean expression + // is either 0 or 1, and furthermore requires two's complement integer. + // A few more cycles may be saved by storing the pulse width left shifted + // 12 bits, and dropping the and with 0xfff (this is valid since pulse is + // used as a bit mask on 12 bit values), yielding the expression + // -(accumulator >= pw24). However this only results in negligible savings. + + // The result of the pulse width compare is delayed one cycle. + // Push next pulse level into pulse level pipeline. + pulse_output = ((accumulator >> 12) >= pw) ? 0xfff : 0x000; + + return waveform_output; +} + +} // namespace reSIDfp + +#endif + +#endif diff --git a/src/engine/platform/sound/c64_fp/array.h b/src/engine/platform/sound/c64_fp/array.h new file mode 100644 index 00000000..5291938c --- /dev/null +++ b/src/engine/platform/sound/c64_fp/array.h @@ -0,0 +1,73 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright (C) 2011-2014 Leandro Nini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef ARRAY_H +#define ARRAY_H + +/** + * Counter. + */ +class counter +{ +private: + unsigned int c; + +public: + counter() : c(1) {} + void increase() { ++c; } + unsigned int decrease() { return --c; } +}; + +/** + * Reference counted pointer to matrix wrapper, for use with standard containers. + */ +template +class matrix +{ +private: + T* data; + counter* count; + const unsigned int x, y; + +public: + matrix(unsigned int x, unsigned int y) : + data(new T[x * y]), + count(new counter()), + x(x), + y(y) {} + + matrix(const matrix& p) : + data(p.data), + count(p.count), + x(p.x), + y(p.y) { count->increase(); } + + ~matrix() { if (count->decrease() == 0) { delete count; delete [] data; } } + + unsigned int length() const { return x * y; } + + T* operator[](unsigned int a) { return &data[a * y]; } + + T const* operator[](unsigned int a) const { return &data[a * y]; } +}; + +typedef matrix matrix_t; + +#endif diff --git a/src/engine/platform/sound/c64_fp/resample/Resampler.h b/src/engine/platform/sound/c64_fp/resample/Resampler.h new file mode 100644 index 00000000..904f6545 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/resample/Resampler.h @@ -0,0 +1,86 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef RESAMPLER_H +#define RESAMPLER_H + +#include + +#include "../sidcxx11.h" + +#include "../siddefs-fp.h" + +namespace reSIDfp +{ + +/** + * Abstraction of a resampling process. Given enough input, produces output. + * Constructors take additional arguments that configure these objects. + */ +class Resampler +{ +protected: + inline short softClip(int x) const + { + constexpr int threshold = 28000; + if (likely(x < threshold)) + return x; + + constexpr double t = threshold / 32768.; + constexpr double a = 1. - t; + constexpr double b = 1. / a; + + double value = static_cast(x - threshold) / 32768.; + value = t + a * tanh(b * value); + return static_cast(value * 32768.); + } + + virtual int output() const = 0; + + Resampler() {} + +public: + virtual ~Resampler() {} + + /** + * Input a sample into resampler. Output "true" when resampler is ready with new sample. + * + * @param sample input sample + * @return true when a sample is ready + */ + virtual bool input(int sample) = 0; + + /** + * Output a sample from resampler. + * + * @return resampled sample + */ + short getOutput() const + { + return softClip(output()); + } + + virtual void reset() = 0; +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/resample/SincResampler.cpp b/src/engine/platform/sound/c64_fp/resample/SincResampler.cpp new file mode 100755 index 00000000..adb17f9e --- /dev/null +++ b/src/engine/platform/sound/c64_fp/resample/SincResampler.cpp @@ -0,0 +1,393 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2020 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "SincResampler.h" + +#include +#include +#include +#include +#include + +#include "../siddefs-fp.h" + +#ifdef HAVE_EMMINTRIN_H +# include +#elif defined HAVE_MMINTRIN_H +# include +#elif defined(HAVE_ARM_NEON_H) +# include +#endif + +namespace reSIDfp +{ + +typedef std::map fir_cache_t; + +/// Cache for the expensive FIR table computation results. +fir_cache_t FIR_CACHE; + +/// Maximum error acceptable in I0 is 1e-6, or ~96 dB. +const double I0E = 1e-6; + +const int BITS = 16; + +/** + * Compute the 0th order modified Bessel function of the first kind. + * This function is originally from resample-1.5/filterkit.c by J. O. Smith. + * It is used to build the Kaiser window for resampling. + * + * @param x evaluate I0 at x + * @return value of I0 at x. + */ +double I0(double x) +{ + double sum = 1.; + double u = 1.; + double n = 1.; + const double halfx = x / 2.; + + do + { + const double temp = halfx / n; + u *= temp * temp; + sum += u; + n += 1.; + } + while (u >= I0E * sum); + + return sum; +} + +/** + * Calculate convolution with sample and sinc. + * + * @param a sample buffer input + * @param b sinc buffer + * @param bLength length of the sinc buffer + * @return convolved result + */ +int convolve(const short* a, const short* b, int bLength) +{ +#ifdef HAVE_EMMINTRIN_H + int out = 0; + + const uintptr_t offset = (uintptr_t)(a) & 0x0f; + + // check for aligned accesses + if (offset == ((uintptr_t)(b) & 0x0f)) + { + if (offset) + { + const int l = (0x10 - offset)/2; + + for (int i = 0; i < l; i++) + { + out += *a++ * *b++; + } + + bLength -= offset; + } + + __m128i acc = _mm_setzero_si128(); + + const int n = bLength / 8; + + for (int i = 0; i < n; i++) + { + const __m128i tmp = _mm_madd_epi16(*(__m128i*)a, *(__m128i*)b); + acc = _mm_add_epi16(acc, tmp); + a += 8; + b += 8; + } + + __m128i vsum = _mm_add_epi32(acc, _mm_srli_si128(acc, 8)); + vsum = _mm_add_epi32(vsum, _mm_srli_si128(vsum, 4)); + out += _mm_cvtsi128_si32(vsum); + + bLength &= 7; + } +#elif defined HAVE_MMINTRIN_H + __m64 acc = _mm_setzero_si64(); + + const int n = bLength / 4; + + for (int i = 0; i < n; i++) + { + const __m64 tmp = _mm_madd_pi16(*(__m64*)a, *(__m64*)b); + acc = _mm_add_pi16(acc, tmp); + a += 4; + b += 4; + } + + int out = _mm_cvtsi64_si32(acc) + _mm_cvtsi64_si32(_mm_srli_si64(acc, 32)); + _mm_empty(); + + bLength &= 3; +#elif defined(HAVE_ARM_NEON_H) +#if (defined(__arm64__) && defined(__APPLE__)) || defined(__aarch64__) + int32x4_t acc1Low = vdupq_n_s32(0); + int32x4_t acc1High = vdupq_n_s32(0); + int32x4_t acc2Low = vdupq_n_s32(0); + int32x4_t acc2High = vdupq_n_s32(0); + + const int n = bLength / 16; + + for (int i = 0; i < n; i++) + { + int16x8_t v11 = vld1q_s16(a); + int16x8_t v12 = vld1q_s16(a + 8); + int16x8_t v21 = vld1q_s16(b); + int16x8_t v22 = vld1q_s16(b + 8); + + acc1Low = vmlal_s16(acc1Low, vget_low_s16(v11), vget_low_s16(v21)); + acc1High = vmlal_high_s16(acc1High, v11, v21); + acc2Low = vmlal_s16(acc2Low, vget_low_s16(v12), vget_low_s16(v22)); + acc2High = vmlal_high_s16(acc2High, v12, v22); + + a += 16; + b += 16; + } + + bLength &= 15; + + if (bLength >= 8) + { + int16x8_t v1 = vld1q_s16(a); + int16x8_t v2 = vld1q_s16(b); + + acc1Low = vmlal_s16(acc1Low, vget_low_s16(v1), vget_low_s16(v2)); + acc1High = vmlal_high_s16(acc1High, v1, v2); + + a += 8; + b += 8; + } + + bLength &= 7; + + if (bLength >= 4) + { + int16x4_t v1 = vld1_s16(a); + int16x4_t v2 = vld1_s16(b); + + acc1Low = vmlal_s16(acc1Low, v1, v2); + + a += 4; + b += 4; + } + + int32x4_t accSumsNeon = vaddq_s32(acc1Low, acc1High); + accSumsNeon = vaddq_s32(accSumsNeon, acc2Low); + accSumsNeon = vaddq_s32(accSumsNeon, acc2High); + + int out = vaddvq_s32(accSumsNeon); + + bLength &= 3; +#else + int32x4_t acc = vdupq_n_s32(0); + + const int n = bLength / 4; + + for (int i = 0; i < n; i++) + { + const int16x4_t h_vec = vld1_s16(a); + const int16x4_t x_vec = vld1_s16(b); + acc = vmlal_s16(acc, h_vec, x_vec); + a += 4; + b += 4; + } + + int out = vgetq_lane_s32(acc, 0) + + vgetq_lane_s32(acc, 1) + + vgetq_lane_s32(acc, 2) + + vgetq_lane_s32(acc, 3); + + bLength &= 3; +#endif +#else + int out = 0; +#endif + + for (int i = 0; i < bLength; i++) + { + out += *a++ * *b++; + } + + return (out + (1 << 14)) >> 15; +} + +int SincResampler::fir(int subcycle) +{ + // Find the first of the nearest fir tables close to the phase + int firTableFirst = (subcycle * firRES >> 10); + const int firTableOffset = (subcycle * firRES) & 0x3ff; + + // Find firN most recent samples, plus one extra in case the FIR wraps. + int sampleStart = sampleIndex - firN + RINGSIZE - 1; + + const int v1 = convolve(sample + sampleStart, (*firTable)[firTableFirst], firN); + + // Use next FIR table, wrap around to first FIR table using + // previous sample. + if (unlikely(++firTableFirst == firRES)) + { + firTableFirst = 0; + ++sampleStart; + } + + const int v2 = convolve(sample + sampleStart, (*firTable)[firTableFirst], firN); + + // Linear interpolation between the sinc tables yields good + // approximation for the exact value. + return v1 + (firTableOffset * (v2 - v1) >> 10); +} + +SincResampler::SincResampler(double clockFrequency, double samplingFrequency, double highestAccurateFrequency) : + sampleIndex(0), + cyclesPerSample(static_cast(clockFrequency / samplingFrequency * 1024.)), + sampleOffset(0), + outputValue(0) +{ + // 16 bits -> -96dB stopband attenuation. + const double A = -20. * log10(1.0 / (1 << BITS)); + // A fraction of the bandwidth is allocated to the transition band, which we double + // because we design the filter to transition halfway at nyquist. + const double dw = (1. - 2.*highestAccurateFrequency / samplingFrequency) * M_PI * 2.; + + // For calculation of beta and N see the reference for the kaiserord + // function in the MATLAB Signal Processing Toolbox: + // http://www.mathworks.com/help/signal/ref/kaiserord.html + const double beta = 0.1102 * (A - 8.7); + const double I0beta = I0(beta); + const double cyclesPerSampleD = clockFrequency / samplingFrequency; + + { + // The filter order will maximally be 124 with the current constraints. + // N >= (96.33 - 7.95)/(2 * pi * 2.285 * (maxfreq - passbandfreq) >= 123 + // The filter order is equal to the number of zero crossings, i.e. + // it should be an even number (sinc is symmetric with respect to x = 0). + int N = static_cast((A - 7.95) / (2.285 * dw) + 0.5); + N += N & 1; + + // The filter length is equal to the filter order + 1. + // The filter length must be an odd number (sinc is symmetric with respect to + // x = 0). + firN = static_cast(N * cyclesPerSampleD) + 1; + firN |= 1; + + // Check whether the sample ring buffer would overflow. + assert(firN < RINGSIZE); + + // Error is bounded by err < 1.234 / L^2, so L = sqrt(1.234 / (2^-16)) = sqrt(1.234 * 2^16). + firRES = static_cast(ceil(sqrt(1.234 * (1 << BITS)) / cyclesPerSampleD)); + + // firN*firRES represent the total resolution of the sinc sampling. JOS + // recommends a length of 2^BITS, but we don't quite use that good a filter. + // The filter test program indicates that the filter performs well, though. + } + + // Create the map key + std::ostringstream o; + o << firN << "," << firRES << "," << cyclesPerSampleD; + const std::string firKey = o.str(); + fir_cache_t::iterator lb = FIR_CACHE.lower_bound(firKey); + + // The FIR computation is expensive and we set sampling parameters often, but + // from a very small set of choices. Thus, caching is used to speed initialization. + if (lb != FIR_CACHE.end() && !(FIR_CACHE.key_comp()(firKey, lb->first))) + { + firTable = &(lb->second); + } + else + { + // Allocate memory for FIR tables. + matrix_t tempTable(firRES, firN); +#ifdef HAVE_CXX11 + firTable = &(FIR_CACHE.emplace_hint(lb, fir_cache_t::value_type(firKey, tempTable))->second); +#else + firTable = &(FIR_CACHE.insert(lb, fir_cache_t::value_type(firKey, tempTable))->second); +#endif + + // The cutoff frequency is midway through the transition band, in effect the same as nyquist. + const double wc = M_PI; + + // Calculate the sinc tables. + const double scale = 32768.0 * wc / cyclesPerSampleD / M_PI; + + // we're not interested in the fractional part + // so use int division before converting to double + const int tmp = firN / 2; + const double firN_2 = static_cast(tmp); + + for (int i = 0; i < firRES; i++) + { + const double jPhase = (double) i / firRES + firN_2; + + for (int j = 0; j < firN; j++) + { + const double x = j - jPhase; + + const double xt = x / firN_2; + const double kaiserXt = fabs(xt) < 1. ? I0(beta * sqrt(1. - xt * xt)) / I0beta : 0.; + + const double wt = wc * x / cyclesPerSampleD; + const double sincWt = fabs(wt) >= 1e-8 ? sin(wt) / wt : 1.; + + (*firTable)[i][j] = static_cast(scale * sincWt * kaiserXt); + } + } + } +} + +bool SincResampler::input(int input) +{ + bool ready = false; + + /* + * Clip the input as it may overflow the 16 bit range. + * + * Approximate measured input ranges: + * 6581: [-24262,+25080] (Kawasaki_Synthesizer_Demo) + * 8580: [-21514,+35232] (64_Forever, Drum_Fool) + */ + sample[sampleIndex] = sample[sampleIndex + RINGSIZE] = softClip(input); + sampleIndex = (sampleIndex + 1) & (RINGSIZE - 1); + + if (sampleOffset < 1024) + { + outputValue = fir(sampleOffset); + ready = true; + sampleOffset += cyclesPerSample; + } + + sampleOffset -= 1024; + + return ready; +} + +void SincResampler::reset() +{ + memset(sample, 0, sizeof(sample)); + sampleOffset = 0; +} + +} // namespace reSIDfp diff --git a/src/engine/platform/sound/c64_fp/resample/SincResampler.h b/src/engine/platform/sound/c64_fp/resample/SincResampler.h new file mode 100644 index 00000000..7502d96f --- /dev/null +++ b/src/engine/platform/sound/c64_fp/resample/SincResampler.h @@ -0,0 +1,114 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2013 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * Copyright 2004 Dag Lem + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef SINCRESAMPLER_H +#define SINCRESAMPLER_H + +#include "Resampler.h" + +#include +#include + +#include "../array.h" + +#include "../sidcxx11.h" + +namespace reSIDfp +{ + +/** + * This is the theoretically correct (and computationally intensive) audio sample generation. + * The samples are generated by resampling to the specified sampling frequency. + * The work rate is inversely proportional to the percentage of the bandwidth + * allocated to the filter transition band. + * + * This implementation is based on the paper "A Flexible Sampling-Rate Conversion Method", + * by J. O. Smith and P. Gosset, or rather on the expanded tutorial on the + * [Digital Audio Resampling Home Page](http://www-ccrma.stanford.edu/~jos/resample/). + * + * By building shifted FIR tables with samples according to the sampling frequency, + * this implementation dramatically reduces the computational effort in the + * filter convolutions, without any loss of accuracy. + * The filter convolutions are also vectorizable on current hardware. + */ +class SincResampler final : public Resampler +{ +private: + /// Size of the ring buffer, must be a power of 2 + static const int RINGSIZE = 2048; + +private: + /// Table of the fir filter coefficients + matrix_t* firTable; + + int sampleIndex; + + /// Filter resolution + int firRES; + + /// Filter length + int firN; + + const int cyclesPerSample; + + int sampleOffset; + + int outputValue; + + short sample[RINGSIZE * 2]; + +private: + int fir(int subcycle); + +public: + /** + * Use a clock freqency of 985248Hz for PAL C64, 1022730Hz for NTSC C64. + * The default end of passband frequency is pass_freq = 0.9*sample_freq/2 + * for sample frequencies up to ~ 44.1kHz, and 20kHz for higher sample frequencies. + * + * For resampling, the ratio between the clock frequency and the sample frequency + * is limited as follows: 125*clock_freq/sample_freq < 16384 + * E.g. provided a clock frequency of ~ 1MHz, the sample frequency + * can not be set lower than ~ 8kHz. + * A lower sample frequency would make the resampling code overfill its 16k sample ring buffer. + * + * The end of passband frequency is also limited: pass_freq <= 0.9*sample_freq/2 + * + * E.g. for a 44.1kHz sampling rate the end of passband frequency is limited + * to slightly below 20kHz. This constraint ensures that the FIR table is not overfilled. + * + * @param clockFrequency System clock frequency at Hz + * @param samplingFrequency Desired output sampling rate + * @param highestAccurateFrequency + */ + SincResampler(double clockFrequency, double samplingFrequency, double highestAccurateFrequency); + + bool input(int input) override; + + int output() const override { return outputValue; } + + void reset() override; +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/resample/TwoPassSincResampler.h b/src/engine/platform/sound/c64_fp/resample/TwoPassSincResampler.h new file mode 100644 index 00000000..81659193 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/resample/TwoPassSincResampler.h @@ -0,0 +1,83 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2015 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef TWOPASSSINCRESAMPLER_H +#define TWOPASSSINCRESAMPLER_H + +#include + +#include + +#include "Resampler.h" +#include "SincResampler.h" + +#include "../sidcxx11.h" + +namespace reSIDfp +{ + +/** + * Compose a more efficient SINC from chaining two other SINCs. + */ +class TwoPassSincResampler final : public Resampler +{ +private: + std::unique_ptr const s1; + std::unique_ptr const s2; + +private: + TwoPassSincResampler(double clockFrequency, double samplingFrequency, double highestAccurateFrequency, double intermediateFrequency) : + s1(new SincResampler(clockFrequency, intermediateFrequency, highestAccurateFrequency)), + s2(new SincResampler(intermediateFrequency, samplingFrequency, highestAccurateFrequency)) + {} + +public: + // Named constructor + static TwoPassSincResampler* create(double clockFrequency, double samplingFrequency, double highestAccurateFrequency) + { + // Calculation according to Laurent Ganier. It evaluates to about 120 kHz at typical settings. + // Some testing around the chosen value seems to confirm that this does work. + double const intermediateFrequency = 2. * highestAccurateFrequency + + sqrt(2. * highestAccurateFrequency * clockFrequency + * (samplingFrequency - 2. * highestAccurateFrequency) / samplingFrequency); + return new TwoPassSincResampler(clockFrequency, samplingFrequency, highestAccurateFrequency, intermediateFrequency); + } + + bool input(int sample) override + { + return s1->input(sample) && s2->input(s1->output()); + } + + int output() const override + { + return s2->output(); + } + + void reset() override + { + s1->reset(); + s2->reset(); + } +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/resample/ZeroOrderResampler.h b/src/engine/platform/sound/c64_fp/resample/ZeroOrderResampler.h new file mode 100644 index 00000000..2bc80cde --- /dev/null +++ b/src/engine/platform/sound/c64_fp/resample/ZeroOrderResampler.h @@ -0,0 +1,88 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2011-2013 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef ZEROORDER_RESAMPLER_H +#define ZEROORDER_RESAMPLER_H + +#include "Resampler.h" + +#include "../sidcxx11.h" + +namespace reSIDfp +{ + +/** + * Return sample with linear interpolation. + * + * @author Antti Lankila + */ +class ZeroOrderResampler final : public Resampler +{ + +private: + /// Last sample + int cachedSample; + + /// Number of cycles per sample + const int cyclesPerSample; + + int sampleOffset; + + /// Calculated sample + int outputValue; + +public: + ZeroOrderResampler(double clockFrequency, double samplingFrequency) : + cachedSample(0), + cyclesPerSample(static_cast(clockFrequency / samplingFrequency * 1024.)), + sampleOffset(0), + outputValue(0) {} + + bool input(int sample) override + { + bool ready = false; + + if (sampleOffset < 1024) + { + outputValue = cachedSample + (sampleOffset * (sample - cachedSample) >> 10); + ready = true; + sampleOffset += cyclesPerSample; + } + + sampleOffset -= 1024; + + cachedSample = sample; + + return ready; + } + + int output() const override { return outputValue; } + + void reset() override + { + sampleOffset = 0; + cachedSample = 0; + } +}; + +} // namespace reSIDfp + +#endif diff --git a/src/engine/platform/sound/c64_fp/resample/test.cpp b/src/engine/platform/sound/c64_fp/resample/test.cpp new file mode 100644 index 00000000..5e5026ff --- /dev/null +++ b/src/engine/platform/sound/c64_fp/resample/test.cpp @@ -0,0 +1,87 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2012-2013 Leandro Nini + * Copyright 2007-2010 Antti Lankila + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include + +#include "siddefs-fp.h" + +#include "Resampler.h" +#include "TwoPassSincResampler.h" + +/** + * Simple sin waveform in, power output measurement function. + * It would be far better to use FFT. + */ +int main(int argc, const char* argv[]) +{ + const double RATE = 985248.4; + const int RINGSIZE = 2048; + + std::auto_ptr r(reSIDfp::TwoPassSincResampler::create(RATE, 48000.0, 20000.0)); + + std::map results; + clock_t start = clock(); + + for (double freq = 1000.; freq < RATE / 2.; freq *= 1.01) + { + /* prefill resampler buffer */ + int k = 0; + double omega = 2 * M_PI * freq / RATE; + + for (int j = 0; j < RINGSIZE; j ++) + { + int signal = static_cast(32768.0 * sin(k++ * omega) * sqrt(2)); + r->input(signal); + } + + int n = 0; + float pwr = 0; + + /* Now, during measurement stage, put 100 cycles of waveform through filter. */ + for (int j = 0; j < 100000; j ++) + { + int signal = static_cast(32768.0 * sin(k++ * omega) * sqrt(2)); + + if (r->input(signal)) + { + float out = r->output(); + pwr += out * out; + n += 1; + } + } + + results.insert(std::make_pair(freq, 10 * log10(pwr / n))); + } + + clock_t end = clock(); + + for (std::map::iterator it = results.begin(); it != results.end(); ++it) + { + std::cout << std::fixed << std::setprecision(0) << std::setw(6) << (*it).first << " Hz " << (*it).second << " dB" << std::endl; + } + + std::cout << "Filtering time " << (end - start) * 1000. / CLOCKS_PER_SEC << " ms" << std::endl; +} diff --git a/src/engine/platform/sound/c64_fp/sidcxx11.h b/src/engine/platform/sound/c64_fp/sidcxx11.h new file mode 100644 index 00000000..18eadf4a --- /dev/null +++ b/src/engine/platform/sound/c64_fp/sidcxx11.h @@ -0,0 +1,29 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2014-2015 Leandro Nini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SIDCXX11_H +#define SIDCXX11_H + +#define DEFAULT = default +#define DELETE = delete + +#define HAVE_CXX11 + +#endif diff --git a/src/engine/platform/sound/c64_fp/sidcxx14.h b/src/engine/platform/sound/c64_fp/sidcxx14.h new file mode 100644 index 00000000..5078a0b1 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/sidcxx14.h @@ -0,0 +1,29 @@ +/* + * This file is part of libsidplayfp, a SID player engine. + * + * Copyright 2014-2015 Leandro Nini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SIDCXX14_H +#define SIDCXX14_H + +#include "sidcxx11.h" + +#define MAKE_UNIQUE(type, ...) std::make_unique(__VA_ARGS__) +#define HAVE_CXX14 + +#endif diff --git a/src/engine/platform/sound/c64_fp/siddefs-fp.h b/src/engine/platform/sound/c64_fp/siddefs-fp.h new file mode 100644 index 00000000..43900862 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/siddefs-fp.h @@ -0,0 +1,62 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 1999 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// --------------------------------------------------------------------------- + +#ifndef SIDDEFS_FP_H +#define SIDDEFS_FP_H + +// Compilation configuration. +#define RESID_BRANCH_HINTS 0 + +// Compiler specifics. +#define HAVE_BUILTIN_EXPECT 0 + +#ifndef M_PI +# define M_PI 3.14159265358979323846 +#endif + +// Branch prediction macros, lifted off the Linux kernel. +#if RESID_BRANCH_HINTS && HAVE_BUILTIN_EXPECT +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +#else +# define likely(x) (x) +# define unlikely(x) (x) +#endif + +namespace reSIDfp { + +typedef enum { MOS6581=1, MOS8580 } ChipModel; + +typedef enum { DECIMATE=1, RESAMPLE } SamplingMethod; +} + +extern "C" +{ +#ifndef __VERSION_CC__ +extern const char* residfp_version_string; +#else +const char* residfp_version_string = "furnace"; +#endif +} + +// Inlining on/off. +#define RESID_INLINING 1 +#define RESID_INLINE inline + +#endif // SIDDEFS_FP_H diff --git a/src/engine/platform/sound/c64_fp/version.cc b/src/engine/platform/sound/c64_fp/version.cc new file mode 100644 index 00000000..3ed8b449 --- /dev/null +++ b/src/engine/platform/sound/c64_fp/version.cc @@ -0,0 +1,21 @@ +// --------------------------------------------------------------------------- +// This file is part of reSID, a MOS6581 SID emulator engine. +// Copyright (C) 2004 Dag Lem +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// --------------------------------------------------------------------------- + +#define __VERSION_CC__ +#include "siddefs-fp.h" diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 65baf4fd..a79948b9 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -133,6 +133,8 @@ const char* aboutLine[]={ "puNES (NES, MMC5 and FDS) by FHorse", "NSFPlay (NES and FDS) by Brad Smith and Brezza", "reSID by Dag Lem", + "reSIDfp by Dag Lem, Antti Lankila", + "and Leandro Nini", "Stella by Stella Team", "QSound emulator by superctr and Valley Bell", "VICE VIC-20 sound core by Rami Rasanen and viznut", diff --git a/src/gui/gui.h b/src/gui/gui.h index 48b8e12c..2cd85020 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1049,6 +1049,7 @@ class FurnaceGUI { int snCore; int nesCore; int fdsCore; + int c64Core; int pcSpeakerOutMethod; String yrw801Path; String tg100Path; @@ -1168,6 +1169,7 @@ class FurnaceGUI { snCore(0), nesCore(0), fdsCore(0), + c64Core(1), pcSpeakerOutMethod(0), yrw801Path(""), tg100Path(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 1e9a1445..27720112 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -97,6 +97,11 @@ const char* nesCores[]={ "NSFplay" }; +const char* c64Cores[]={ + "reSID", + "reSIDfp" +}; + const char* pcspkrOutMethods[]={ "evdev SND_TONE", "KIOCSOUND on /dev/tty1", @@ -972,6 +977,10 @@ void FurnaceGUI::drawSettings() { ImGui::SameLine(); ImGui::Combo("##FDSCore",&settings.fdsCore,nesCores,2); + ImGui::Text("SID core"); + ImGui::SameLine(); + ImGui::Combo("##C64Core",&settings.c64Core,c64Cores,2); + ImGui::Separator(); ImGui::Text("PC Speaker strategy"); @@ -2155,6 +2164,7 @@ void FurnaceGUI::syncSettings() { settings.snCore=e->getConfInt("snCore",0); settings.nesCore=e->getConfInt("nesCore",0); settings.fdsCore=e->getConfInt("fdsCore",0); + settings.c64Core=e->getConfInt("c64Core",1); settings.pcSpeakerOutMethod=e->getConfInt("pcSpeakerOutMethod",0); settings.yrw801Path=e->getConfString("yrw801Path",""); settings.tg100Path=e->getConfString("tg100Path",""); @@ -2267,6 +2277,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.snCore,0,1); clampSetting(settings.nesCore,0,1); clampSetting(settings.fdsCore,0,1); + clampSetting(settings.c64Core,0,1); clampSetting(settings.pcSpeakerOutMethod,0,4); clampSetting(settings.mainFont,0,6); clampSetting(settings.patFont,0,6); @@ -2402,6 +2413,7 @@ void FurnaceGUI::commitSettings() { e->setConf("snCore",settings.snCore); e->setConf("nesCore",settings.nesCore); e->setConf("fdsCore",settings.fdsCore); + e->setConf("c64Core",settings.c64Core); e->setConf("pcSpeakerOutMethod",settings.pcSpeakerOutMethod); e->setConf("yrw801Path",settings.yrw801Path); e->setConf("tg100Path",settings.tg100Path); diff --git a/src/main.cpp b/src/main.cpp index 39c9e6ca..a1856092 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -181,6 +181,7 @@ TAParamResult pVersion(String) { printf("- puNES by FHorse (GPLv2)\n"); printf("- NSFPlay by Brad Smith and Brezza (unknown open-source license)\n"); printf("- reSID by Dag Lem (GPLv2)\n"); + printf("- reSIDfp by Dag Lem, Antti Lankila and Leandro Nini (GPLv2)\n"); printf("- Stella by Stella Team (GPLv2)\n"); printf("- vgsound_emu (first version) by cam900 (BSD 3-clause)\n"); return TA_PARAM_QUIT; From d485af439db9f71daf699dae2601a88965151355 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 28 Aug 2022 15:36:12 -0500 Subject: [PATCH 481/580] fix macOS build --- src/engine/platform/sound/c64_fp/WaveformGenerator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/sound/c64_fp/WaveformGenerator.cpp b/src/engine/platform/sound/c64_fp/WaveformGenerator.cpp index 16a9eb6b..e5e544e7 100644 --- a/src/engine/platform/sound/c64_fp/WaveformGenerator.cpp +++ b/src/engine/platform/sound/c64_fp/WaveformGenerator.cpp @@ -56,7 +56,7 @@ namespace reSIDfp const unsigned int FLOATING_OUTPUT_TTL_6581R3 = 54000; const unsigned int FLOATING_OUTPUT_FADE_6581R3 = 1400; // ~1s -const unsigned int FLOATING_OUTPUT_TTL_6581R4 = 1000000; +//const unsigned int FLOATING_OUTPUT_TTL_6581R4 = 1000000; // ~1s const unsigned int FLOATING_OUTPUT_TTL_8580R5 = 800000; const unsigned int FLOATING_OUTPUT_FADE_8580R5 = 50000; @@ -74,7 +74,7 @@ const unsigned int FLOATING_OUTPUT_FADE_8580R5 = 50000; const unsigned int SHIFT_REGISTER_RESET_6581R3 = 50000; const unsigned int SHIFT_REGISTER_FADE_6581R3 = 15000; // ~2.15s -const unsigned int SHIFT_REGISTER_RESET_6581R4 = 2150000; +//const unsigned int SHIFT_REGISTER_RESET_6581R4 = 2150000; // ~2.8s const unsigned int SHIFT_REGISTER_RESET_8580R5 = 986000; const unsigned int SHIFT_REGISTER_FADE_8580R5 = 314300; From 6041b8f14f366104a7f231086e81fb5025ecc266 Mon Sep 17 00:00:00 2001 From: Lunathir <18320914+lunathir@users.noreply.github.com> Date: Sun, 28 Aug 2022 13:54:05 -0700 Subject: [PATCH 482/580] Change references to some chips (#658) * Update sysDef.cpp * Update sysDef.cpp * Update sysDef.cpp * Update sysDef.cpp --- src/engine/sysDef.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 1c63431f..78af262a 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1370,7 +1370,7 @@ void DivEngine::registerSystems() { // to Grauw: feel free to change this to 24 during development of OPL4's PCM part. sysDefs[DIV_SYSTEM_OPL4]=new DivSysDef( - "Yamaha OPL4", NULL, 0xae, 0, 42, true, true, 0, false, + "Yamaha YMF278B (OPL4)", NULL, 0xae, 0, 42, true, true, 0, false, "like OPL3, but this time it also has a 24-channel version of MultiPCM.", {"4OP 1", "FM 2", "4OP 3", "FM 4", "4OP 5", "FM 6", "4OP 7", "FM 8", "4OP 9", "FM 10", "4OP 11", "FM 12", "FM 13", "FM 14", "FM 15", "FM 16", "FM 17", "FM 18", "PCM 1", "PCM 2", "PCM 3", "PCM 4", "PCM 5", "PCM 6", "PCM 7", "PCM 8", "PCM 9", "PCM 10", "PCM 11", "PCM 12", "PCM 13", "PCM 14", "PCM 15", "PCM 16", "PCM 17", "PCM 18", "PCM 19", "PCM 20", "PCM 21", "PCM 22", "PCM 23", "PCM 24"}, {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P8", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20", "P21", "P22", "P23", "P24"}, @@ -1379,7 +1379,7 @@ void DivEngine::registerSystems() { ); sysDefs[DIV_SYSTEM_OPL4_DRUMS]=new DivSysDef( - "Yamaha OPL4 with drums", NULL, 0xaf, 0, 44, true, true, 0, false, + "Yamaha YMF278B (OPL4) with drums", NULL, 0xaf, 0, 44, true, true, 0, false, "the OPL4 but with drums mode turned on.", {"4OP 1", "FM 2", "4OP 3", "FM 4", "4OP 5", "FM 6", "4OP 7", "FM 8", "4OP 9", "FM 10", "4OP 11", "FM 12", "FM 13", "FM 14", "FM 15", "Kick/FM 16", "Snare", "Tom", "Top", "HiHat", "PCM 1", "PCM 2", "PCM 3", "PCM 4", "PCM 5", "PCM 6", "PCM 7", "PCM 8", "PCM 9", "PCM 10", "PCM 11", "PCM 12", "PCM 13", "PCM 14", "PCM 15", "PCM 16", "PCM 17", "PCM 18", "PCM 19", "PCM 20", "PCM 21", "PCM 22", "PCM 23", "PCM 24"}, {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "BD", "SD", "TM", "TP", "HH", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P8", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20", "P21", "P22", "P23", "P24"}, From 32050a211ff17ac57c705825a886ac145f08c3c7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 28 Aug 2022 15:54:21 -0500 Subject: [PATCH 483/580] GUI: update credits --- src/gui/about.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index a79948b9..39cb1192 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -102,6 +102,7 @@ const char* aboutLine[]={ "fd", "GENATARi", "host12prog", + "lunathir", "plane", "TheEssem", "", From c2a7bdd19460ed8d91f932e1ba0a06e495479227 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 29 Aug 2022 11:45:18 +0900 Subject: [PATCH 484/580] Match this to actual channel count --- src/engine/platform/su.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 13650345..730f8d89 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -581,7 +581,7 @@ int DivPlatformSoundUnit::init(DivEngine* p, int channels, int sugRate, unsigned su=new SoundUnit(); setFlags(flags); reset(); - return 6; + return 8; } void DivPlatformSoundUnit::quit() { From 8d280fd9a32496bc53870a5142fbc7af714edc87 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 29 Aug 2022 03:26:49 -0500 Subject: [PATCH 485/580] C64: bind reSIDfp --- src/engine/dispatchContainer.cpp | 2 ++ src/engine/platform/c64.cpp | 59 +++++++++++++++++++++++++------- src/engine/platform/c64.h | 8 +++++ 3 files changed, 56 insertions(+), 13 deletions(-) diff --git a/src/engine/dispatchContainer.cpp b/src/engine/dispatchContainer.cpp index 8d8db5c5..158bce4e 100644 --- a/src/engine/dispatchContainer.cpp +++ b/src/engine/dispatchContainer.cpp @@ -218,10 +218,12 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do break; case DIV_SYSTEM_C64_6581: dispatch=new DivPlatformC64; + ((DivPlatformC64*)dispatch)->setFP(eng->getConfInt("c64Core",1)==1); ((DivPlatformC64*)dispatch)->setChipModel(true); break; case DIV_SYSTEM_C64_8580: dispatch=new DivPlatformC64; + ((DivPlatformC64*)dispatch)->setFP(eng->getConfInt("c64Core",1)==1); ((DivPlatformC64*)dispatch)->setChipModel(false); break; case DIV_SYSTEM_YM2151: diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index 9825f189..5d1eb53c 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -19,9 +19,10 @@ #include "c64.h" #include "../engine.h" +#include "sound/c64_fp/siddefs-fp.h" #include -#define rWrite(a,v) if (!skipRegisterWrites) {sid.write(a,v); regPool[(a)&0x1f]=v; if (dumpWrites) {addWrite(a,v);} } +#define rWrite(a,v) if (!skipRegisterWrites) {if (isFP) {sid_fp.write(a,v);} else {sid.write(a,v);}; regPool[(a)&0x1f]=v; if (dumpWrites) {addWrite(a,v);} } #define CHIP_FREQBASE 524288 @@ -63,15 +64,19 @@ const char** DivPlatformC64::getRegisterSheet() { } void DivPlatformC64::acquire(short* bufL, short* bufR, size_t start, size_t len) { - int dcOff=sid.get_dc(0); + int dcOff=isFP?0:sid.get_dc(0); for (size_t i=start; i=8) { - writeOscBuf=0; - oscBuf[0]->data[oscBuf[0]->needle++]=(sid.last_chan_out[0]-dcOff)>>5; - oscBuf[1]->data[oscBuf[1]->needle++]=(sid.last_chan_out[1]-dcOff)>>5; - oscBuf[2]->data[oscBuf[2]->needle++]=(sid.last_chan_out[2]-dcOff)>>5; + if (isFP) { + sid_fp.clock(4,&bufL[i]); + } else { + sid.clock(); + bufL[i]=sid.output(); + if (++writeOscBuf>=8) { + writeOscBuf=0; + oscBuf[0]->data[oscBuf[0]->needle++]=(sid.last_chan_out[0]-dcOff)>>5; + oscBuf[1]->data[oscBuf[1]->needle++]=(sid.last_chan_out[1]-dcOff)>>5; + oscBuf[2]->data[oscBuf[2]->needle++]=(sid.last_chan_out[2]-dcOff)>>5; + } } } } @@ -405,7 +410,11 @@ int DivPlatformC64::dispatch(DivCommand c) { void DivPlatformC64::muteChannel(int ch, bool mute) { isMuted[ch]=mute; - sid.set_is_muted(ch,mute); + if (isFP) { + sid_fp.mute(ch,mute); + } else { + sid.set_is_muted(ch,mute); + } } void DivPlatformC64::forceIns() { @@ -462,13 +471,21 @@ bool DivPlatformC64::getWantPreNote() { return true; } +float DivPlatformC64::getPostAmp() { + return isFP?3.0f:1.0f; +} + void DivPlatformC64::reset() { for (int i=0; i<3; i++) { chan[i]=DivPlatformC64::Channel(); chan[i].std.setEngine(parent); } - sid.reset(); + if (isFP) { + sid_fp.reset(); + } else { + sid.reset(); + } memset(regPool,0,32); rWrite(0x18,0x0f); @@ -490,12 +507,24 @@ void DivPlatformC64::poke(std::vector& wlist) { void DivPlatformC64::setChipModel(bool is6581) { if (is6581) { - sid.set_chip_model(MOS6581); + if (isFP) { + sid_fp.setChipModel(reSIDfp::MOS6581); + } else { + sid.set_chip_model(MOS6581); + } } else { - sid.set_chip_model(MOS8580); + if (isFP) { + sid_fp.setChipModel(reSIDfp::MOS8580); + } else { + sid.set_chip_model(MOS8580); + } } } +void DivPlatformC64::setFP(bool fp) { + isFP=fp; +} + void DivPlatformC64::setFlags(unsigned int flags) { switch (flags&0xf) { case 0x0: // NTSC C64 @@ -513,6 +542,10 @@ void DivPlatformC64::setFlags(unsigned int flags) { for (int i=0; i<3; i++) { oscBuf[i]->rate=rate/16; } + if (isFP) { + rate/=4; + sid_fp.setSamplingParameters(chipClock,reSIDfp::DECIMATE,rate,0); + } } int DivPlatformC64::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { diff --git a/src/engine/platform/c64.h b/src/engine/platform/c64.h index 79963597..7587730b 100644 --- a/src/engine/platform/c64.h +++ b/src/engine/platform/c64.h @@ -23,6 +23,7 @@ #include "../dispatch.h" #include "../macroInt.h" #include "sound/c64/sid.h" +#include "sound/c64_fp/SID.h" class DivPlatformC64: public DivDispatch { struct Channel { @@ -76,12 +77,17 @@ class DivPlatformC64: public DivDispatch { unsigned char filtControl, filtRes, vol; unsigned char writeOscBuf; int filtCut, resetTime; + bool isFP; SID sid; + reSIDfp::SID sid_fp; unsigned char regPool[32]; friend void putDispatchChan(void*,int,int); + void acquire_classic(short* bufL, short* bufR, size_t start, size_t len); + void acquire_fp(short* bufL, short* bufR, size_t start, size_t len); + void updateFilter(); public: void acquire(short* bufL, short* bufR, size_t start, size_t len); @@ -98,6 +104,7 @@ class DivPlatformC64: public DivDispatch { void notifyInsChange(int ins); bool getDCOffRequired(); bool getWantPreNote(); + float getPostAmp(); DivMacroInt* getChanMacroInt(int ch); void notifyInsDeletion(void* ins); void poke(unsigned int addr, unsigned short val); @@ -105,6 +112,7 @@ class DivPlatformC64: public DivDispatch { const char** getRegisterSheet(); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void setChipModel(bool is6581); + void setFP(bool fp); void quit(); ~DivPlatformC64(); }; From 4b4a2540646460ca0dd4777aff24344cc8233563 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 29 Aug 2022 03:54:55 -0500 Subject: [PATCH 486/580] C64: reSIDfp per-chan osc --- src/engine/platform/c64.cpp | 8 +++++++- src/engine/platform/sound/c64_fp/SID.h | 10 ++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index 5d1eb53c..ad111347 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -68,10 +68,16 @@ void DivPlatformC64::acquire(short* bufL, short* bufR, size_t start, size_t len) for (size_t i=start; i=4) { + writeOscBuf=0; + oscBuf[0]->data[oscBuf[0]->needle++]=(sid_fp.lastChanOut[0]-dcOff)>>5; + oscBuf[1]->data[oscBuf[1]->needle++]=(sid_fp.lastChanOut[1]-dcOff)>>5; + oscBuf[2]->data[oscBuf[2]->needle++]=(sid_fp.lastChanOut[2]-dcOff)>>5; + } } else { sid.clock(); bufL[i]=sid.output(); - if (++writeOscBuf>=8) { + if (++writeOscBuf>=16) { writeOscBuf=0; oscBuf[0]->data[oscBuf[0]->needle++]=(sid.last_chan_out[0]-dcOff)>>5; oscBuf[1]->data[oscBuf[1]->needle++]=(sid.last_chan_out[1]-dcOff)>>5; diff --git a/src/engine/platform/sound/c64_fp/SID.h b/src/engine/platform/sound/c64_fp/SID.h index 05ad83c3..85b6a4e4 100644 --- a/src/engine/platform/sound/c64_fp/SID.h +++ b/src/engine/platform/sound/c64_fp/SID.h @@ -132,7 +132,7 @@ private: * * @return the output sample */ - int output() const; + int output(); /** * Calculate the numebr of cycles according to current parameters @@ -146,6 +146,8 @@ public: SID(); ~SID(); + int lastChanOut[3]; + /** * Set chip model. * @@ -312,12 +314,16 @@ void SID::ageBusValue(unsigned int n) } RESID_INLINE -int SID::output() const +int SID::output() { const int v1 = voice[0]->output(voice[2]->wave()); const int v2 = voice[1]->output(voice[0]->wave()); const int v3 = voice[2]->output(voice[1]->wave()); + lastChanOut[0]=v1; + lastChanOut[1]=v2; + lastChanOut[2]=v3; + return externalFilter->clock(filter->clock(v1, v2, v3)); } From 3af287cf9de2bba751244954b303b324c6009b53 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 29 Aug 2022 04:15:53 -0500 Subject: [PATCH 487/580] AY: fix per-chan osc in Sunsoft 5B mode --- src/engine/platform/ay.cpp | 44 ++++++++++++++++++---------- src/engine/platform/sound/ay8910.cpp | 2 ++ src/engine/platform/sound/ay8910.h | 2 ++ 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index f45c51ea..23f20c2a 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -69,6 +69,14 @@ const char* regCheatSheetAY8914[]={ NULL }; +// taken from ay8910.cpp +const int sunsoftVolTable[32]={ + 103350, 73770, 52657, 37586, 32125, 27458, 24269, 21451, + 18447, 15864, 14009, 12371, 10506, 8922, 7787, 6796, + 5689, 4763, 4095, 3521, 2909, 2403, 2043, 1737, + 1397, 1123, 925, 762, 578, 438, 332, 251 +}; + const char** DivPlatformAY8910::getRegisterSheet() { return intellivision?regCheatSheetAY8914:regCheatSheetAY; } @@ -93,27 +101,33 @@ void DivPlatformAY8910::acquire(short* bufL, short* bufR, size_t start, size_t l regPool[w.addr&0x0f]=w.val; writes.pop(); } - ay->sound_stream_update(ayBuf,len); if (sunsoft) { for (size_t i=0; isound_stream_update(ayBuf,1); + bufL[i+start]=ayBuf[0][0]; bufR[i+start]=bufL[i+start]; - } - } else if (stereo) { - for (size_t i=0; idata[oscBuf[0]->needle++]=sunsoftVolTable[31-(ay->lastIndx&31)]>>3; + oscBuf[1]->data[oscBuf[1]->needle++]=sunsoftVolTable[31-((ay->lastIndx>>5)&31)]>>3; + oscBuf[2]->data[oscBuf[2]->needle++]=sunsoftVolTable[31-((ay->lastIndx>>10)&31)]>>3; } } else { - for (size_t i=0; isound_stream_update(ayBuf,len); + if (stereo) { + for (size_t i=0; idata[oscBuf[ch]->needle++]=ayBuf[ch][i]; + for (int ch=0; ch<3; ch++) { + for (size_t i=0; idata[oscBuf[ch]->needle++]=ayBuf[ch][i]; + } } } } diff --git a/src/engine/platform/sound/ay8910.cpp b/src/engine/platform/sound/ay8910.cpp index 2c11b6e3..c7be503e 100644 --- a/src/engine/platform/sound/ay8910.cpp +++ b/src/engine/platform/sound/ay8910.cpp @@ -924,6 +924,7 @@ float ay8910_device::mix_3D() indx |= tone_mask | (m_vol_enabled[chan] ? tone_volume(tone) << (chan*5) : 0); } } + lastIndx=indx; return m_vol3d_table[indx]; } @@ -1359,6 +1360,7 @@ unsigned char ay8910_device::ay8910_read_ym() void ay8910_device::device_reset() { + lastIndx=0; ay8910_reset_ym(); } diff --git a/src/engine/platform/sound/ay8910.h b/src/engine/platform/sound/ay8910.h index 314383f5..6f4c6f31 100644 --- a/src/engine/platform/sound/ay8910.h +++ b/src/engine/platform/sound/ay8910.h @@ -146,6 +146,8 @@ public: double m_Kn[32]; }; + int lastIndx; + // internal interface for PSG component of YM device // FIXME: these should be private, but vector06 accesses them directly From af1b684c08f87488b7971a6c5418516e701f8257 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 30 Aug 2022 15:47:12 -0500 Subject: [PATCH 488/580] NES: #655 --- src/engine/platform/nes.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index ab466f1b..50fcd5ca 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -115,11 +115,11 @@ void DivPlatformNES::acquire_puNES(short* bufL, short* bufR, size_t start, size_ bufL[i]=sample; if (++writeOscBuf>=32) { writeOscBuf=0; - oscBuf[0]->data[oscBuf[0]->needle++]=nes->S1.output<<11; - oscBuf[1]->data[oscBuf[1]->needle++]=nes->S2.output<<11; - oscBuf[2]->data[oscBuf[2]->needle++]=nes->TR.output<<11; - oscBuf[3]->data[oscBuf[3]->needle++]=nes->NS.output<<11; - oscBuf[4]->data[oscBuf[4]->needle++]=nes->DMC.output<<8; + oscBuf[0]->data[oscBuf[0]->needle++]=isMuted[0]?0:(nes->S1.output<<11); + oscBuf[1]->data[oscBuf[1]->needle++]=isMuted[1]?0:(nes->S2.output<<11); + oscBuf[2]->data[oscBuf[2]->needle++]=isMuted[2]?0:(nes->TR.output<<11); + oscBuf[3]->data[oscBuf[3]->needle++]=isMuted[3]?0:(nes->NS.output<<11); + oscBuf[4]->data[oscBuf[4]->needle++]=isMuted[4]?0:(nes->DMC.output<<8); } } } From 95db5624144503a7a8f38e38b7560868f2da8359 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 30 Aug 2022 16:28:05 -0500 Subject: [PATCH 489/580] fix Android build --- src/engine/config.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/engine/config.cpp b/src/engine/config.cpp index f404c0a4..862cd4c0 100644 --- a/src/engine/config.cpp +++ b/src/engine/config.cpp @@ -36,12 +36,20 @@ #define CONFIG_FILE "/furnace.cfg" #endif +#ifdef IS_MOBILE +#ifdef HAVE_SDL2 +#include +#else +#error "Furnace mobile requires SDL2!" +#endif +#endif + void DivEngine::initConfDir() { #ifdef _WIN32 // maybe move this function in here instead? configPath=getWinConfigPath(); -#elif defined (IS_MOBILE) - configPath=SDL_GetPrefPath(); +#elif defined(IS_MOBILE) + configPath=SDL_GetPrefPath("tildearrow","furnace"); #else #ifdef __HAIKU__ char userSettingsDir[PATH_MAX]; From 7f01eaec9d0b08966eaab2c3179d282c3c933f4b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 30 Aug 2022 23:59:38 -0500 Subject: [PATCH 490/580] convert note/macro rel to note off on .dmf save --- src/engine/fileOps.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 0e0ceb8b..66ca9d46 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -4342,14 +4342,25 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) { } } + bool relWarning=false; + for (int i=0; iwriteC(curPat[i].effectCols); for (int j=0; jordersLen; j++) { DivPattern* pat=curPat[i].getPattern(curOrders->ord[i][j],false); for (int k=0; kpatLen; k++) { - w->writeS(pat->data[k][0]); // note - w->writeS(pat->data[k][1]); // octave + if ((pat->data[k][0]==101 || pat->data[k][0]==102) && pat->data[k][1]==0) { + w->writeS(100); + w->writeS(0); + if (!relWarning) { + relWarning=true; + addWarning("note/macro release will be converted to note off!"); + } + } else { + w->writeS(pat->data[k][0]); // note + w->writeS(pat->data[k][1]); // octave + } w->writeS(pat->data[k][3]); // volume #ifdef TA_BIG_ENDIAN for (int l=0; l Date: Wed, 31 Aug 2022 00:51:08 -0500 Subject: [PATCH 491/580] WonderSwan: fix possible hang when seeking --- src/engine/platform/swan.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/swan.cpp b/src/engine/platform/swan.cpp index 7f1e10a0..7ac26629 100644 --- a/src/engine/platform/swan.cpp +++ b/src/engine/platform/swan.cpp @@ -59,7 +59,8 @@ void DivPlatformSwan::acquire(short* bufL, short* bufR, size_t start, size_t len DivSample* s=parent->getSample(dacSample); if (s->samples<=0) { dacSample=-1; - continue; + dacPeriod=0; + break; } rWrite(0x09,(unsigned char)s->data8[dacPos++]+0x80); if (s->isLoopable() && dacPos>=s->getEndPosition()) { From f3c3d82e4d8321684346c4f8ab92c591ec2305fe Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 31 Aug 2022 02:52:35 -0500 Subject: [PATCH 492/580] fix hang when swapping chips fixes #660 --- src/engine/engine.cpp | 47 ++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 1230cb59..bee07751 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1140,7 +1140,7 @@ void DivEngine::swapChannels(int src, int dest) { String prevChanName=curSubSong->chanName[src]; String prevChanShortName=curSubSong->chanShortName[src]; bool prevChanShow=curSubSong->chanShow[src]; - bool prevChanCollapse=curSubSong->chanCollapse[src]; + unsigned char prevChanCollapse=curSubSong->chanCollapse[src]; curSubSong->chanName[src]=curSubSong->chanName[dest]; curSubSong->chanShortName[src]=curSubSong->chanShortName[dest]; @@ -1445,25 +1445,44 @@ bool DivEngine::swapSystem(int src, int dest, bool preserveOrder) { } } + // swap channels logV("swap list:"); for (int i=0; i %d",unswappedChannels[i],swappedChannels[i]); } - // swap channels - bool allComplete=false; - while (!allComplete) { - logD("doing swap..."); - allComplete=true; - for (int i=0; i %d -> %d",unswappedChannels[i],unswappedChannels[swappedChannels[i]]); - unswappedChannels[i]^=unswappedChannels[swappedChannels[i]]; - unswappedChannels[swappedChannels[i]]^=unswappedChannels[i]; - unswappedChannels[i]^=unswappedChannels[swappedChannels[i]]; + for (size_t i=0; iorders; + DivPattern* prevPat[DIV_MAX_CHANS][256]; + unsigned char prevEffectCols[DIV_MAX_CHANS]; + String prevChanName[DIV_MAX_CHANS]; + String prevChanShortName[DIV_MAX_CHANS]; + bool prevChanShow[DIV_MAX_CHANS]; + unsigned char prevChanCollapse[DIV_MAX_CHANS]; + + for (int j=0; jpat[j].data[k]; } + prevEffectCols[j]=song.subsong[i]->pat[j].effectCols; + + prevChanName[j]=song.subsong[i]->chanName[j]; + prevChanShortName[j]=song.subsong[i]->chanShortName[j]; + prevChanShow[j]=song.subsong[i]->chanShow[j]; + prevChanCollapse[j]=song.subsong[i]->chanCollapse[j]; + } + + for (int j=0; jorders.ord[j][k]=prevOrders.ord[swappedChannels[j]][k]; + song.subsong[i]->pat[j].data[k]=prevPat[swappedChannels[j]][k]; + } + + song.subsong[i]->pat[j].effectCols=prevEffectCols[swappedChannels[j]]; + song.subsong[i]->chanName[j]=prevChanName[swappedChannels[j]]; + song.subsong[i]->chanShortName[j]=prevChanShortName[swappedChannels[j]]; + song.subsong[i]->chanShow[j]=prevChanShow[swappedChannels[j]]; + song.subsong[i]->chanCollapse[j]=prevChanCollapse[swappedChannels[j]]; } } } From 820b23ecdbb9f902f279a233a8efc1291e6722ea Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 31 Aug 2022 03:05:06 -0500 Subject: [PATCH 493/580] fix macros sometimes being out of sync when seekin --- src/engine/engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index bee07751..4a8b7f5b 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1666,7 +1666,7 @@ void DivEngine::playSub(bool preserveDrift, int goalRow) { } } int oldOrder=curOrder; - while (playing && curRow1)) { if (nextTick(preserveDrift)) { skipping=false; return; From 16eba9ec96fbbd29daaaa15dfddd64284bb61e8e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 31 Aug 2022 03:11:02 -0500 Subject: [PATCH 494/580] fix macro delay not working on first note --- src/engine/macroInt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/macroInt.h b/src/engine/macroInt.h index ad761ba5..5208dc54 100644 --- a/src/engine/macroInt.h +++ b/src/engine/macroInt.h @@ -50,7 +50,7 @@ struct DivMacroStruct { finished(false), will(false), linger(false), - began(false), + began(true), mode(0) {} }; From a33e6e3989f6cd12f3ca9b3ab39d42bd33f8c4d7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 31 Aug 2022 03:34:13 -0500 Subject: [PATCH 495/580] GUI: add "create wave from selection" option in sample editor --- src/gui/doAction.cpp | 26 ++++++++++++++++++++++++++ src/gui/gui.h | 1 + src/gui/guiConst.cpp | 1 + src/gui/sampleEdit.cpp | 3 +++ 4 files changed, 31 insertions(+) diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index e0f0ca30..91916669 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -1295,6 +1295,32 @@ void FurnaceGUI::doAction(int what) { MARK_MODIFIED; break; } + case GUI_ACTION_SAMPLE_CREATE_WAVE: { + if (curSample<0 || curSample>=(int)e->song.sample.size()) break; + DivSample* sample=e->song.sample[curSample]; + SAMPLE_OP_BEGIN; + if (end-start<1) { + showError("select at least one sample!"); + } else if (end-start>256) { + showError("maximum size is 256 samples!"); + } else { + curWave=e->addWave(); + if (curWave==-1) { + showError("too many wavetables!"); + } else { + DivWavetable* wave=e->song.wave[curWave]; + wave->min=0; + wave->max=255; + wave->len=end-start; + for (unsigned int i=start; idata[i-start]=(sample->data8[i]&0xff)^0x80; + } + nextWindow=GUI_WINDOW_WAVE_EDIT; + MARK_MODIFIED; + } + } + break; + } case GUI_ACTION_ORDERS_UP: if (curOrder>0) { diff --git a/src/gui/gui.h b/src/gui/gui.h index 2cd85020..9938e3cc 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -525,6 +525,7 @@ enum FurnaceGUIActions { GUI_ACTION_SAMPLE_ZOOM_AUTO, GUI_ACTION_SAMPLE_MAKE_INS, GUI_ACTION_SAMPLE_SET_LOOP, + GUI_ACTION_SAMPLE_CREATE_WAVE, GUI_ACTION_SAMPLE_MAX, GUI_ACTION_ORDERS_MIN, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index d1ef835c..bf075f2f 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -641,6 +641,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("SAMPLE_ZOOM_AUTO", "Toggle auto-zoom", FURKMOD_CMD|SDLK_0), D("SAMPLE_MAKE_INS", "Create instrument from sample", 0), D("SAMPLE_SET_LOOP", "Set loop to selection", FURKMOD_CMD|SDLK_l), + D("SAMPLE_CREATE_WAVE", "Create wavetable from selection", FURKMOD_CMD|SDLK_w), D("SAMPLE_MAX", "", NOT_AN_ACTION), D("ORDERS_MIN", "---Orders", NOT_AN_ACTION), diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index e9b5cfb3..0ce1500e 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -1293,6 +1293,9 @@ void FurnaceGUI::drawSampleEdit() { if (ImGui::MenuItem("set loop to selection",BIND_FOR(GUI_ACTION_SAMPLE_SET_LOOP))) { doAction(GUI_ACTION_SAMPLE_SET_LOOP); } + if (ImGui::MenuItem("create wavetable from selection",BIND_FOR(GUI_ACTION_SAMPLE_CREATE_WAVE))) { + doAction(GUI_ACTION_SAMPLE_CREATE_WAVE); + } ImGui::EndPopup(); } From b213368d034b5aa9bbf92248b570d4c7dadd1949 Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Wed, 31 Aug 2022 14:05:47 -0700 Subject: [PATCH 496/580] New instrument proposal --- instruments/FM/guitar/Banjo (Muted).opni | Bin 0 -> 83 bytes instruments/FM/guitar/Banjo.opni | Bin 0 -> 83 bytes instruments/FM/guitar/Koto.opni | Bin 0 -> 83 bytes instruments/FM/guitar/Oud.opni | Bin 0 -> 83 bytes .../FM/guitar/Shamisen (Regular Pluck).opni | Bin 0 -> 83 bytes instruments/FM/guitar/Shamisen (Tsugaru Slap).opni | Bin 0 -> 83 bytes instruments/FM/guitar/Sitar.opni | Bin 0 -> 83 bytes instruments/FM/guitar/Tamboura (Bass Sitar).opni | Bin 0 -> 83 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/FM/guitar/Banjo (Muted).opni create mode 100644 instruments/FM/guitar/Banjo.opni create mode 100644 instruments/FM/guitar/Koto.opni create mode 100644 instruments/FM/guitar/Oud.opni create mode 100644 instruments/FM/guitar/Shamisen (Regular Pluck).opni create mode 100644 instruments/FM/guitar/Shamisen (Tsugaru Slap).opni create mode 100644 instruments/FM/guitar/Sitar.opni create mode 100644 instruments/FM/guitar/Tamboura (Bass Sitar).opni diff --git a/instruments/FM/guitar/Banjo (Muted).opni b/instruments/FM/guitar/Banjo (Muted).opni new file mode 100644 index 0000000000000000000000000000000000000000..1bf6e88fb38b7fc55ccf6a4f4cb209884906fa1a GIT binary patch literal 83 zcmWId5AZY6_4G3eVPIll@GUJ#O;K=4%*)DWzyXvP0_El9h1eMaRpc2M*csfkQa`|Y E0fsCIE&u=k literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Shamisen (Regular Pluck).opni b/instruments/FM/guitar/Shamisen (Regular Pluck).opni new file mode 100644 index 0000000000000000000000000000000000000000..c25acca1e7b9529b36934355efc0f36d3a44d26a GIT binary patch literal 83 zcmWId5AZY6_4G3eVPIll2+l~%%`8sMQ}D|#%1z8+zyg>UQibEiI3pR1)Z{rCeli$o S$a67#XE0)r=jY1=s|Ns}I1Qfw literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Shamisen (Tsugaru Slap).opni b/instruments/FM/guitar/Shamisen (Tsugaru Slap).opni new file mode 100644 index 0000000000000000000000000000000000000000..ed9c9497dc5669a04da0d1ead6d9eb352ad2a91e GIT binary patch literal 83 zcmWId5AZY6_4G3eVPIll2+l~%%`8sMQwYvUEMUM2m>5!d;>9>C8I08AIT?O37-`6J QF??q*Vvy(O%LMBH0CS%V-v9sr literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Sitar.opni b/instruments/FM/guitar/Sitar.opni new file mode 100644 index 0000000000000000000000000000000000000000..3427fe2a7054ddeafd2eabe054e6806468dbd017 GIT binary patch literal 83 zcmWId5AZY6_4G3eVPIll2+k}?EMmY5m>8s#1bBF>7zE|y**OFmQdLB_d7>B$ndG^7 HG{HInm~02N literal 0 HcmV?d00001 diff --git a/instruments/FM/guitar/Tamboura (Bass Sitar).opni b/instruments/FM/guitar/Tamboura (Bass Sitar).opni new file mode 100644 index 0000000000000000000000000000000000000000..e6514b73c2bbbc08c049d16baf4959512c49ec8a GIT binary patch literal 83 zcmWId5AZY6_4G3eVPIll2uaLM$}cTSWWWuW8MM{7*f=a0L=?rDSTq Date: Wed, 31 Aug 2022 14:11:10 -0700 Subject: [PATCH 497/580] One last instrument proposal --- instruments/FM/percussion/Kalimba.fui | Bin 0 -> 1893 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/FM/percussion/Kalimba.fui diff --git a/instruments/FM/percussion/Kalimba.fui b/instruments/FM/percussion/Kalimba.fui new file mode 100644 index 0000000000000000000000000000000000000000..128deca3fd33b48c86e15a69a110d7b9bfeb23c2 GIT binary patch literal 1893 zcmdOOD=o@POioqE%quP_($g(qU|>)HVi@rB3l6bmXJ9B`U}W%4%*o76N@QRLN-}{I z$TKi8^D8od1z;MGX?b2YPJVaX^5SAlT>MHvL)egYA=vV4jGX*HyFeCV0sIV14nSuy zFmOOIkU|3TNNj@4|3DS^Fg63w)q|WuEc{UO<8(n@R*oE%r;m#+NPAT<2 zA@gDKqxPVdJFsv8mcpz7tOpnw{sRGn0*(?8p&D=DMNA+g8AS#YZ$ZQlEW<$ Date: Thu, 1 Sep 2022 10:49:49 -0700 Subject: [PATCH 498/580] Update brickblock369 Harpsichord I realized this one was outdated, I'm uploading a much better version --- instruments/FM/keys/brickblock369 Harpsichord.dmp | Bin 51 -> 51 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/instruments/FM/keys/brickblock369 Harpsichord.dmp b/instruments/FM/keys/brickblock369 Harpsichord.dmp index a2aba1f2d7b3b99cfa540071d1c49d4e34639f15..0f5ea587d338e30c838daa10db612ee6662f2bb8 100644 GIT binary patch literal 51 xcmd;PVq^dUZeDo_Hg*OEW(Ec}d3jbwpdgURDkd+($OdGxF)%X7bMkY7MFAzI0cHRI literal 51 xcmd;PVq{=vU|`acXW?gNU;rXcd3jbwMlh3AR9=RW1;}J$U}TWz Date: Sun, 4 Sep 2022 02:26:29 -0500 Subject: [PATCH 499/580] GUI: work around .dmf/.dmp saving issue --- src/gui/dataList.cpp | 32 ++++++++- src/gui/doAction.cpp | 9 +++ src/gui/gui.cpp | 158 ++++++++++++++++++++++++++----------------- src/gui/gui.h | 7 ++ src/gui/guiConst.cpp | 3 + 5 files changed, 144 insertions(+), 65 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 10dda6aa..0ef1f183 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -121,16 +121,30 @@ void FurnaceGUI::drawInsList() { if (ImGui::MenuItem("instrument")) { doAction(GUI_ACTION_INS_LIST_SAVE); } + if (ImGui::MenuItem("instrument (.dmp)")) { + doAction(GUI_ACTION_INS_LIST_SAVE_DMP); + } if (ImGui::MenuItem("wavetable")) { doAction(GUI_ACTION_WAVE_LIST_SAVE); } + if (ImGui::MenuItem("wavetable (.dmw)")) { + doAction(GUI_ACTION_WAVE_LIST_SAVE_DMW); + } + if (ImGui::MenuItem("wavetable (raw)")) { + doAction(GUI_ACTION_WAVE_LIST_SAVE_RAW); + } if (ImGui::MenuItem("sample")) { doAction(GUI_ACTION_SAMPLE_LIST_SAVE); } ImGui::EndPopup(); } - } - if (!settings.unifiedDataView) { + } else { + if (ImGui::BeginPopupContextItem("InsSaveFormats",ImGuiMouseButton_Right)) { + if (ImGui::MenuItem("save as .dmp...")) { + doAction(GUI_ACTION_INS_LIST_SAVE_DMP); + } + ImGui::EndPopup(); + } ImGui::SameLine(); if (ImGui::ArrowButton("InsUp",ImGuiDir_Up)) { doAction(GUI_ACTION_INS_LIST_MOVE_UP); @@ -359,6 +373,9 @@ void FurnaceGUI::drawInsList() { if (ImGui::MenuItem("save")) { doAction(GUI_ACTION_INS_LIST_SAVE); } + if (ImGui::MenuItem("save (.dmp)")) { + doAction(GUI_ACTION_INS_LIST_SAVE_DMP); + } if (ImGui::MenuItem("delete")) { doAction(GUI_ACTION_INS_LIST_DELETE); } @@ -430,6 +447,17 @@ void FurnaceGUI::drawWaveList() { if (ImGui::Button(ICON_FA_FLOPPY_O "##WaveSave")) { doAction(GUI_ACTION_WAVE_LIST_SAVE); } + if (!settings.unifiedDataView) { + if (ImGui::BeginPopupContextItem("WaveSaveFormats",ImGuiMouseButton_Right)) { + if (ImGui::MenuItem("save as .dmw...")) { + doAction(GUI_ACTION_WAVE_LIST_SAVE_DMW); + } + if (ImGui::MenuItem("save raw...")) { + doAction(GUI_ACTION_WAVE_LIST_SAVE_RAW); + } + ImGui::EndPopup(); + } + } ImGui::SameLine(); if (ImGui::ArrowButton("WaveUp",ImGuiDir_Up)) { doAction(GUI_ACTION_WAVE_LIST_MOVE_UP); diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 91916669..92e12a74 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -599,6 +599,9 @@ void FurnaceGUI::doAction(int what) { case GUI_ACTION_INS_LIST_SAVE: if (curIns>=0 && curIns<(int)e->song.ins.size()) openFileDialog(GUI_FILE_INS_SAVE); break; + case GUI_ACTION_INS_LIST_SAVE_DMP: + if (curIns>=0 && curIns<(int)e->song.ins.size()) openFileDialog(GUI_FILE_INS_SAVE_DMP); + break; case GUI_ACTION_INS_LIST_MOVE_UP: if (e->moveInsUp(curIns)) { curIns--; @@ -666,6 +669,12 @@ void FurnaceGUI::doAction(int what) { case GUI_ACTION_WAVE_LIST_SAVE: if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE); break; + case GUI_ACTION_WAVE_LIST_SAVE_DMW: + if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE_DMW); + break; + case GUI_ACTION_WAVE_LIST_SAVE_RAW: + if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE_RAW); + break; case GUI_ACTION_WAVE_LIST_MOVE_UP: if (e->moveWaveUp(curWave)) { curWave--; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 86c063e9..b0ccd3a3 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1258,9 +1258,18 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { if (!dirExists(workingDirSong)) workingDirSong=getHomeDir(); hasOpened=fileDialog->openSave( "Save File", - {"Furnace song", "*.fur", - "DefleMask 1.1.3 module", "*.dmf"}, - "Furnace song{.fur},DefleMask 1.1.3 module{.dmf}", + {"Furnace song", "*.fur"}, + "Furnace song{.fur}", + workingDirSong, + dpiScale + ); + break; + case GUI_FILE_SAVE_DMF: + if (!dirExists(workingDirSong)) workingDirSong=getHomeDir(); + hasOpened=fileDialog->openSave( + "Save File", + {"DefleMask 1.1.3 module", "*.dmf"}, + "DefleMask 1.1.3 module{.dmf}", workingDirSong, dpiScale ); @@ -1335,9 +1344,18 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { if (!dirExists(workingDirIns)) workingDirIns=getHomeDir(); hasOpened=fileDialog->openSave( "Save Instrument", - {"Furnace instrument", "*.fui", - "DefleMask preset", "*.dmp"}, - "Furnace instrument{.fui},DefleMask preset{.dmp}", + {"Furnace instrument", "*.fui"}, + "Furnace instrument{.fui}", + workingDirIns, + dpiScale + ); + break; + case GUI_FILE_INS_SAVE_DMP: + if (!dirExists(workingDirIns)) workingDirIns=getHomeDir(); + hasOpened=fileDialog->openSave( + "Save Instrument", + {"DefleMask preset", "*.dmp"}, + "DefleMask preset{.dmp}", workingDirIns, dpiScale ); @@ -1358,10 +1376,28 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { if (!dirExists(workingDirWave)) workingDirWave=getHomeDir(); hasOpened=fileDialog->openSave( "Save Wavetable", - {"Furnace wavetable", ".fuw", - "DefleMask wavetable", ".dmw", - "raw data", ".raw"}, - "Furnace wavetable{.fuw},DefleMask wavetable{.dmw},raw data{.raw}", + {"Furnace wavetable", ".fuw"}, + "Furnace wavetable{.fuw}", + workingDirWave, + dpiScale + ); + break; + case GUI_FILE_WAVE_SAVE_DMW: + if (!dirExists(workingDirWave)) workingDirWave=getHomeDir(); + hasOpened=fileDialog->openSave( + "Save Wavetable", + {"DefleMask wavetable", ".dmw"}, + "DefleMask wavetable{.dmw}", + workingDirWave, + dpiScale + ); + break; + case GUI_FILE_WAVE_SAVE_RAW: + if (!dirExists(workingDirWave)) workingDirWave=getHomeDir(); + hasOpened=fileDialog->openSave( + "Save Wavetable", + {"raw data", ".raw"}, + "raw data{.raw}", workingDirWave, dpiScale ); @@ -2944,6 +2980,9 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("save as...",BIND_FOR(GUI_ACTION_SAVE_AS))) { openFileDialog(GUI_FILE_SAVE); } + if (ImGui::MenuItem("save as .dmf (1.1.3+)...",BIND_FOR(GUI_ACTION_SAVE_AS))) { + openFileDialog(GUI_FILE_SAVE_DMF); + } if (ImGui::MenuItem("save as .dmf (1.0/legacy)...",BIND_FOR(GUI_ACTION_SAVE_AS))) { openFileDialog(GUI_FILE_SAVE_DMF_LEGACY); } @@ -3335,17 +3374,21 @@ bool FurnaceGUI::loop() { switch (curFileDialog) { case GUI_FILE_OPEN: case GUI_FILE_SAVE: + case GUI_FILE_SAVE_DMF: case GUI_FILE_SAVE_DMF_LEGACY: workingDirSong=fileDialog->getPath()+DIR_SEPARATOR_STR; break; case GUI_FILE_INS_OPEN: case GUI_FILE_INS_OPEN_REPLACE: case GUI_FILE_INS_SAVE: + case GUI_FILE_INS_SAVE_DMP: workingDirIns=fileDialog->getPath()+DIR_SEPARATOR_STR; break; case GUI_FILE_WAVE_OPEN: case GUI_FILE_WAVE_OPEN_REPLACE: case GUI_FILE_WAVE_SAVE: + case GUI_FILE_WAVE_SAVE_DMW: + case GUI_FILE_WAVE_SAVE_RAW: workingDirWave=fileDialog->getPath()+DIR_SEPARATOR_STR; break; case GUI_FILE_SAMPLE_OPEN: @@ -3409,9 +3452,10 @@ bool FurnaceGUI::loop() { } if (fileName!="") { if (curFileDialog==GUI_FILE_SAVE) { - // we can't tell whether the user chose .dmf or .fur in the system file picker - const char* fallbackExt=(settings.sysFileDialog || ImGuiFileDialog::Instance()->GetCurrentFilter()=="Furnace song")?".fur":".dmf"; - checkExtensionDual(".fur",".dmf",fallbackExt); + checkExtension(".fur"); + } + if (curFileDialog==GUI_FILE_SAVE_DMF) { + checkExtension(".dmf"); } if (curFileDialog==GUI_FILE_SAVE_DMF_LEGACY) { checkExtension(".dmf"); @@ -3423,21 +3467,19 @@ bool FurnaceGUI::loop() { checkExtension(".wav"); } if (curFileDialog==GUI_FILE_INS_SAVE) { - // we can't tell whether the user chose .fui or .dmp in the system file picker - const char* fallbackExt=(settings.sysFileDialog || ImGuiFileDialog::Instance()->GetCurrentFilter()=="Furnace instrument")?".fui":".dmp"; - checkExtensionDual(".fui",".dmp",fallbackExt); + checkExtension(".fui"); + } + if (curFileDialog==GUI_FILE_INS_SAVE_DMP) { + checkExtension(".dmp"); } if (curFileDialog==GUI_FILE_WAVE_SAVE) { - // same thing here - const char* fallbackExt=".fuw"; - if (!settings.sysFileDialog) { - if (ImGuiFileDialog::Instance()->GetCurrentFilter()=="raw data") { - fallbackExt=".raw"; - } else if (ImGuiFileDialog::Instance()->GetCurrentFilter()=="DefleMask wavetable") { - fallbackExt=".dmw"; - } - } - checkExtensionTriple(".fuw",".dmw",".raw",fallbackExt); + checkExtension(".fuw"); + } + if (curFileDialog==GUI_FILE_WAVE_SAVE_DMW) { + checkExtension(".dmw"); + } + if (curFileDialog==GUI_FILE_WAVE_SAVE_RAW) { + checkExtension(".raw"); } if (curFileDialog==GUI_FILE_EXPORT_VGM) { checkExtension(".vgm"); @@ -3465,21 +3507,10 @@ bool FurnaceGUI::loop() { break; case GUI_FILE_SAVE: { logD("saving: %s",copyOfName.c_str()); - String lowerCase=fileName; - for (char& i: lowerCase) { - if (i>='A' && i<='Z') i+='a'-'A'; - } bool saveWasSuccessful=true; - if ((lowerCase.size()<4 || lowerCase.rfind(".dmf")!=lowerCase.size()-4)) { - if (save(copyOfName,0)>0) { - showError(fmt::sprintf("Error while saving file! (%s)",lastError)); - saveWasSuccessful=false; - } - } else { - if (save(copyOfName,26)>0) { - showError(fmt::sprintf("Error while saving file! (%s)",lastError)); - saveWasSuccessful=false; - } + if (save(copyOfName,0)>0) { + showError(fmt::sprintf("Error while saving file! (%s)",lastError)); + saveWasSuccessful=false; } if (saveWasSuccessful && postWarnAction!=GUI_WARN_GENERIC) { switch (postWarnAction) { @@ -3512,6 +3543,12 @@ bool FurnaceGUI::loop() { } break; } + case GUI_FILE_SAVE_DMF: + logD("saving: %s",copyOfName.c_str()); + if (save(copyOfName,26)>0) { + showError(fmt::sprintf("Error while saving file! (%s)",lastError)); + } + break; case GUI_FILE_SAVE_DMF_LEGACY: logD("saving: %s",copyOfName.c_str()); if (save(copyOfName,24)>0) { @@ -3520,34 +3557,29 @@ bool FurnaceGUI::loop() { break; case GUI_FILE_INS_SAVE: if (curIns>=0 && curIns<(int)e->song.ins.size()) { - String lowerCase=fileName; - for (char& i: lowerCase) { - if (i>='A' && i<='Z') i+='a'-'A'; - } - if ((lowerCase.size()<4 || lowerCase.rfind(".dmp")!=lowerCase.size()-4)) { - e->song.ins[curIns]->save(copyOfName.c_str()); - } else { - if (!e->song.ins[curIns]->saveDMP(copyOfName.c_str())) { - showError("error while saving instrument! make sure your instrument is compatible."); - } + e->song.ins[curIns]->save(copyOfName.c_str()); + } + break; + case GUI_FILE_INS_SAVE_DMP: + if (curIns>=0 && curIns<(int)e->song.ins.size()) { + if (!e->song.ins[curIns]->saveDMP(copyOfName.c_str())) { + showError("error while saving instrument! make sure your instrument is compatible."); } } break; case GUI_FILE_WAVE_SAVE: if (curWave>=0 && curWave<(int)e->song.wave.size()) { - String lowerCase=fileName; - for (char& i: lowerCase) { - if (i>='A' && i<='Z') i+='a'-'A'; - } - if (lowerCase.size()<4) { - e->song.wave[curWave]->save(copyOfName.c_str()); - } else if (lowerCase.rfind(".dmw")==lowerCase.size()-4) { - e->song.wave[curWave]->saveDMW(copyOfName.c_str()); - } else if (lowerCase.rfind(".raw")==lowerCase.size()-4) { - e->song.wave[curWave]->saveRaw(copyOfName.c_str()); - } else { - e->song.wave[curWave]->save(copyOfName.c_str()); - } + e->song.wave[curWave]->save(copyOfName.c_str()); + } + break; + case GUI_FILE_WAVE_SAVE_DMW: + if (curWave>=0 && curWave<(int)e->song.wave.size()) { + e->song.wave[curWave]->saveDMW(copyOfName.c_str()); + } + break; + case GUI_FILE_WAVE_SAVE_RAW: + if (curWave>=0 && curWave<(int)e->song.wave.size()) { + e->song.wave[curWave]->saveRaw(copyOfName.c_str()); } break; case GUI_FILE_SAMPLE_OPEN: { diff --git a/src/gui/gui.h b/src/gui/gui.h index 9938e3cc..5950ab94 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -263,13 +263,17 @@ enum FurnaceGUIWindows { enum FurnaceGUIFileDialogs { GUI_FILE_OPEN, GUI_FILE_SAVE, + GUI_FILE_SAVE_DMF, GUI_FILE_SAVE_DMF_LEGACY, GUI_FILE_INS_OPEN, GUI_FILE_INS_OPEN_REPLACE, GUI_FILE_INS_SAVE, + GUI_FILE_INS_SAVE_DMP, GUI_FILE_WAVE_OPEN, GUI_FILE_WAVE_OPEN_REPLACE, GUI_FILE_WAVE_SAVE, + GUI_FILE_WAVE_SAVE_DMW, + GUI_FILE_WAVE_SAVE_RAW, GUI_FILE_SAMPLE_OPEN, GUI_FILE_SAMPLE_OPEN_RAW, GUI_FILE_SAMPLE_OPEN_REPLACE, @@ -455,6 +459,7 @@ enum FurnaceGUIActions { GUI_ACTION_INS_LIST_OPEN, GUI_ACTION_INS_LIST_OPEN_REPLACE, GUI_ACTION_INS_LIST_SAVE, + GUI_ACTION_INS_LIST_SAVE_DMP, GUI_ACTION_INS_LIST_MOVE_UP, GUI_ACTION_INS_LIST_MOVE_DOWN, GUI_ACTION_INS_LIST_DELETE, @@ -469,6 +474,8 @@ enum FurnaceGUIActions { GUI_ACTION_WAVE_LIST_OPEN, GUI_ACTION_WAVE_LIST_OPEN_REPLACE, GUI_ACTION_WAVE_LIST_SAVE, + GUI_ACTION_WAVE_LIST_SAVE_DMW, + GUI_ACTION_WAVE_LIST_SAVE_RAW, GUI_ACTION_WAVE_LIST_MOVE_UP, GUI_ACTION_WAVE_LIST_MOVE_DOWN, GUI_ACTION_WAVE_LIST_DELETE, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index bf075f2f..e79de410 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -571,6 +571,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("INS_LIST_OPEN", "Open", 0), D("INS_LIST_OPEN_REPLACE", "Open (replace current)", 0), D("INS_LIST_SAVE", "Save", 0), + D("INS_LIST_SAVE_DMP", "Save (.dmp)", 0), D("INS_LIST_MOVE_UP", "Move up", FURKMOD_SHIFT|SDLK_UP), D("INS_LIST_MOVE_DOWN", "Move down", FURKMOD_SHIFT|SDLK_DOWN), D("INS_LIST_DELETE", "Delete", 0), @@ -585,6 +586,8 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("WAVE_LIST_OPEN", "Open", 0), D("WAVE_LIST_OPEN_REPLACE", "Open (replace current)", 0), D("WAVE_LIST_SAVE", "Save", 0), + D("WAVE_LIST_SAVE_DMW", "Save (.dmw)", 0), + D("WAVE_LIST_SAVE_RAW", "Save (raw)", 0), D("WAVE_LIST_MOVE_UP", "Move up", FURKMOD_SHIFT|SDLK_UP), D("WAVE_LIST_MOVE_DOWN", "Move down", FURKMOD_SHIFT|SDLK_DOWN), D("WAVE_LIST_DELETE", "Delete", 0), From 90a0db06f8cb82c121f01b0037d4749f23a62fdc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 4 Sep 2022 02:27:00 -0500 Subject: [PATCH 500/580] GUI: one tiny fix --- src/gui/gui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index b0ccd3a3..f0e50142 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2980,10 +2980,10 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("save as...",BIND_FOR(GUI_ACTION_SAVE_AS))) { openFileDialog(GUI_FILE_SAVE); } - if (ImGui::MenuItem("save as .dmf (1.1.3+)...",BIND_FOR(GUI_ACTION_SAVE_AS))) { + if (ImGui::MenuItem("save as .dmf (1.1.3+)...")) { openFileDialog(GUI_FILE_SAVE_DMF); } - if (ImGui::MenuItem("save as .dmf (1.0/legacy)...",BIND_FOR(GUI_ACTION_SAVE_AS))) { + if (ImGui::MenuItem("save as .dmf (1.0/legacy)...")) { openFileDialog(GUI_FILE_SAVE_DMF_LEGACY); } ImGui::Separator(); From f7bca46a4a6969b9dca80ca20d8c827050436436 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 4 Sep 2022 02:37:43 -0500 Subject: [PATCH 501/580] GUI: implement save as format in editors as well --- src/gui/insEdit.cpp | 6 ++++++ src/gui/waveEdit.cpp | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index c89652a3..662448df 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1608,6 +1608,12 @@ void FurnaceGUI::drawInsEdit() { if (ImGui::Button(ICON_FA_FLOPPY_O "##IESave")) { doAction(GUI_ACTION_INS_LIST_SAVE); } + if (ImGui::BeginPopupContextItem("InsSaveFormats",ImGuiMouseButton_Right)) { + if (ImGui::MenuItem("save as .dmp...")) { + doAction(GUI_ACTION_INS_LIST_SAVE_DMP); + } + ImGui::EndPopup(); + } ImGui::TableNextColumn(); ImGui::Text("Type"); diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 7e453ef5..01f67862 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -138,6 +138,15 @@ void FurnaceGUI::drawWaveEdit() { if (ImGui::Button(ICON_FA_FLOPPY_O "##WESave")) { doAction(GUI_ACTION_WAVE_LIST_SAVE); } + if (ImGui::BeginPopupContextItem("WaveSaveFormats",ImGuiMouseButton_Right)) { + if (ImGui::MenuItem("save as .dmw...")) { + doAction(GUI_ACTION_WAVE_LIST_SAVE_DMW); + } + if (ImGui::MenuItem("save raw...")) { + doAction(GUI_ACTION_WAVE_LIST_SAVE_RAW); + } + ImGui::EndPopup(); + } ImGui::SameLine(); if (ImGui::RadioButton("Steps",waveEditStyle==0)) { From 9435ab12b0cb9c9d4d8443216561b45067db82ae Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 4 Sep 2022 04:00:56 -0500 Subject: [PATCH 502/580] GUI: wave generator, part 4 prepare FM --- src/gui/waveEdit.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 01f67862..9fea53c0 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -104,6 +104,9 @@ void FurnaceGUI::doGenerateWave() { } } +#define CENTER_TEXT(text) \ + ImGui::SetCursorPosX(ImGui::GetCursorPosX()+0.5*(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize(text).x)); + void FurnaceGUI::drawWaveEdit() { if (nextWindow==GUI_WINDOW_WAVE_EDIT) { waveEditOpen=true; @@ -321,7 +324,109 @@ void FurnaceGUI::drawWaveEdit() { if (ImGui::BeginTabItem("FM")) { waveGenFM=true; - ImGui::Text("FM stuff here"); + if (ImGui::BeginTable("WGFMProps",4)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,ImGui::CalcTextSize("Op").x); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.5); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.25); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthStretch,0.25); + + ImGui::TableNextRow(ImGuiTableRowFlags_Headers); + ImGui::TableNextColumn(); + ImGui::Text("Op"); + ImGui::TableNextColumn(); + ImGui::Text("Level"); + ImGui::TableNextColumn(); + ImGui::Text("Mult"); + ImGui::TableNextColumn(); + ImGui::Text("FB"); + + for (int i=0; i<4; i++) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("%d",i+1); + + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::PushID(i); + if (CWSliderFloat("##WGTL",&waveGenTL[i],0.0f,1.0f)) { + doGenerateWave(); + } + ImGui::PopID(); + + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::PushID(i); + if (CWSliderInt("##WGMULT",&waveGenMult[i],0,15)) { + doGenerateWave(); + } + ImGui::PopID(); + + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::PushID(i); + if (CWSliderFloat("##WGFB",&waveGenFB[i],0.0f,7.0f)) { + doGenerateWave(); + } + ImGui::PopID(); + } + + ImGui::EndTable(); + } + + CENTER_TEXT("Connection Diagram"); + ImGui::Text("Connection Diagram"); + + if (ImGui::BeginTable("WGFMCon",5)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text(">>"); + ImGui::TableNextColumn(); + ImGui::Text("2"); + ImGui::TableNextColumn(); + ImGui::Text("3"); + ImGui::TableNextColumn(); + ImGui::Text("4"); + ImGui::TableNextColumn(); + ImGui::Text("Out"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("1"); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con12",&waveGenFMCon1[0]); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con13",&waveGenFMCon1[1]); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con14",&waveGenFMCon1[2]); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con1O",&waveGenFMCon1[3]); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("2"); + ImGui::TableNextColumn(); + // blank + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con23",&waveGenFMCon2[0]); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con24",&waveGenFMCon2[1]); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con2O",&waveGenFMCon2[2]); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("3"); + ImGui::TableNextColumn(); + // blank + ImGui::TableNextColumn(); + // blank + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con34",&waveGenFMCon3[0]); + ImGui::TableNextColumn(); + ImGui::Checkbox("##Con3O",&waveGenFMCon3[1]); + + ImGui::EndTable(); + } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Mangle")) { From 17f7647ae7a3064d15f4b377f79b722219c4e438 Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Sun, 4 Sep 2022 13:47:27 -0700 Subject: [PATCH 503/580] Update soundunit.md Clarified that the Sound Unit is able to have 64 KB depending on the configuration. --- papers/doc/7-systems/soundunit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md index 8c3863b9..34cc16b4 100644 --- a/papers/doc/7-systems/soundunit.md +++ b/papers/doc/7-systems/soundunit.md @@ -1,5 +1,5 @@ # tildearrow Sound Unit -This is a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow. It includes native support for sample playback, but with only 8KB of sample data. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. +This is a fantasy sound chip, used in the specs2 fantasy computer designed by tildearrow. It includes native support for sample playback, but with only 8KB or 64KB of sample data, depending on the configuration used. Since 0.6pre1, this sound chip is no longer hidden by default and can be accessed through the module creation screen and can be added or removed. # effects From dc58043835ccbd0eec0009cfe099473384ad8151 Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Sun, 4 Sep 2022 13:50:14 -0700 Subject: [PATCH 504/580] Fixing the .dmp files as SMS/NES instead of FM These were oddly loaded as FM instruments while having data intended for SN7 - I've fixed them to load the correct type. --- instruments/other/(SMS) 2-Arp Chord High.dmp | Bin 30 -> 30 bytes instruments/other/(SMS) 2-Arp Major Low.dmp | Bin 30 -> 30 bytes instruments/other/(SMS) 2-Arp Minor Low.dmp | Bin 30 -> 30 bytes instruments/other/(SMS) 3-Arp High.dmp | Bin 26 -> 26 bytes instruments/other/(SMS) 3-Arp Major.dmp | Bin 26 -> 26 bytes instruments/other/(SMS) 3-Arp Minor.dmp | Bin 26 -> 26 bytes instruments/other/(SMS) Arp Snare.dmp | Bin 102 -> 102 bytes instruments/other/(SMS) Attack.dmp | Bin 25 -> 25 bytes instruments/other/(SMS) Buzz Noise.dmp | Bin 142 -> 142 bytes instruments/other/(SMS) Crash.dmp | Bin 306 -> 306 bytes instruments/other/(SMS) Decay Noise.dmp | Bin 158 -> 158 bytes instruments/other/(SMS) Decay.dmp | Bin 21 -> 21 bytes instruments/other/(SMS) Down Slider.dmp | Bin 162 -> 162 bytes instruments/other/(SMS) Hi-Hat & Note.dmp | Bin 39 -> 39 bytes instruments/other/(SMS) Hi-Hat Closed.dmp | Bin 29 -> 29 bytes instruments/other/(SMS) Hi-Hat Open.dmp | Bin 181 -> 181 bytes instruments/other/(SMS) Kick Noise.dmp | Bin 39 -> 39 bytes instruments/other/(SMS) Multi Slider.dmp | Bin 162 -> 162 bytes instruments/other/(SMS) Obvious Crash.dmp | Bin 383 -> 383 bytes instruments/other/(SMS) Record Scratch Down.dmp | Bin 94 -> 94 bytes instruments/other/(SMS) Record Scratch Up.dmp | Bin 94 -> 94 bytes instruments/other/(SMS) Retrig.dmp | Bin 49 -> 49 bytes instruments/other/(SMS) Ride.dmp | Bin 367 -> 367 bytes instruments/other/(SMS) Snare.dmp | Bin 86 -> 86 bytes instruments/other/(SMS) Splash.dmp | Bin 517 -> 517 bytes instruments/other/(SMS) Thump & Note.dmp | Bin 46 -> 46 bytes .../other/(SMS) Tim Follin 6-Arp Fast Major.dmp | Bin 38 -> 38 bytes .../other/(SMS) Tim Follin 6-Arp Fast Minor.dmp | Bin 38 -> 38 bytes .../other/(SMS) Tim Follin 6-Arp Slow Major.dmp | Bin 50 -> 50 bytes .../other/(SMS) Tim Follin 6-Arp Slow Minor.dmp | Bin 50 -> 50 bytes instruments/other/(SMS) Tim Follin Lead.dmp | Bin 26 -> 26 bytes instruments/other/(SMS) Tom A.dmp | Bin 62 -> 62 bytes instruments/other/(SMS) Tom B.dmp | Bin 98 -> 98 bytes instruments/other/(SMS) Up Slider.dmp | Bin 162 -> 162 bytes instruments/other/(SMS) Variable.dmp | Bin 13 -> 13 bytes instruments/other/(SMS) Whistle.dmp | Bin 22 -> 22 bytes 36 files changed, 0 insertions(+), 0 deletions(-) diff --git a/instruments/other/(SMS) 2-Arp Chord High.dmp b/instruments/other/(SMS) 2-Arp Chord High.dmp index 9340173621f7e3df55d0eedca9a936478cbbc9ab..845babb2e886dbbfe7dfe065fbe14b25f9c9638f 100644 GIT binary patch literal 30 acmd;PW?!Gj diff --git a/instruments/other/(SMS) 2-Arp Major Low.dmp b/instruments/other/(SMS) 2-Arp Major Low.dmp index 532c24565f97ed0028b999de53319f0a88748956..f65623f0de3f25178ae4232b3f3ff89c4cdb0965 100644 GIT binary patch literal 30 acmd;PW?Xl literal 30 acmd;PVqoNDU|{&q!UH5hSOAKF6axSpJpoq$ diff --git a/instruments/other/(SMS) 2-Arp Minor Low.dmp b/instruments/other/(SMS) 2-Arp Minor Low.dmp index 608e5483246b3a0aea887d7dd45f030bf9ffbfb8..5345dd459587d2fef6326c6a167011c3a45adfcf 100644 GIT binary patch literal 30 acmd;PW?-IP6axSpDFIag diff --git a/instruments/other/(SMS) 3-Arp High.dmp b/instruments/other/(SMS) 3-Arp High.dmp index a5ebf9759321339d37f27d0e167aa9747d651f19..d0fab8e515c705a17b95645caef854bd3a3b9ccd 100644 GIT binary patch literal 26 acmd;PW?z?5i2;iM literal 26 acmd;PVqoNDU|{&q%mXAPfLH~HK>z?3zyW3e diff --git a/instruments/other/(SMS) 3-Arp Major.dmp b/instruments/other/(SMS) 3-Arp Major.dmp index 3d284983e9765b93b28bdf09b9704b62a00c8fbd..d9f9e3a7d2184580ed42d601256280b53703374b 100644 GIT binary patch literal 26 acmd;PW?z?4p#gFL literal 26 acmd;PVqoNDU|{&q%mX9^fLIuaK>z?2*a1xd diff --git a/instruments/other/(SMS) 3-Arp Minor.dmp b/instruments/other/(SMS) 3-Arp Minor.dmp index a28275fb7769b55277b10f51232e1d7aa1a56c47..f36e80e97089ac614fbc2710e26ca4b3c4b2122f 100644 GIT binary patch literal 26 acmd;PW?z?4l>u=8 literal 26 acmd;PVqoNDU|{&q%mXC(fmj%bK>z?2%mGXQ diff --git a/instruments/other/(SMS) Arp Snare.dmp b/instruments/other/(SMS) Arp Snare.dmp index fa5734d4a977e64978bc583dff2cb0e9396be153..7135954297d16b18671a43bccb37fab9390d02a8 100644 GIT binary patch delta 25 acmYdGW8!9>$P^;L$H2fK2E-CT3<3Zu7y=Lg delta 25 acmYdGW8!9-$P^;L#K6G71;ji+3<3ZsQvvG$ diff --git a/instruments/other/(SMS) Attack.dmp b/instruments/other/(SMS) Attack.dmp index 0be930625decb07ad10b738d1b2fdc8325ef4fc8..ac5d24fffcce3acf2eab543fbc65b013f4c2c202 100644 GIT binary patch literal 25 acmd;PW?*4sU|`?|Vtydz1>*le%m4rhH~~KZ literal 25 acmd;PVqjroU|`?|Vtydz1>*le%m4rhAOSuA diff --git a/instruments/other/(SMS) Buzz Noise.dmp b/instruments/other/(SMS) Buzz Noise.dmp index 8b7dfd97dc9c98035b493acf4aa29439ef4a1f6d..d1bc39212d813f895bcd72ad77c2b0c58718a049 100644 GIT binary patch literal 142 Zcmd;PW>DZ~U|<+X{GWk=5oA9D0|2sy10DbX literal 142 acmd;PVo=~`U|<+X{GWk=ks0U)1_l7Ju>%nR diff --git a/instruments/other/(SMS) Crash.dmp b/instruments/other/(SMS) Crash.dmp index f9855bde354ec99718132f753200ae33c698db0e..6f05ff8020edf2094429d2a4f899eac176254203 100644 GIT binary patch delta 43 ncmdnQw26s@o0-9NqJY6f1)hlxw3?}CW=)XjeW_awqbSVpQ2qC;r&)!&ZVZn(R2PW(ovB8(EKidS` Z4z?|98`##ctzcWiwt#I8+YGkx_W^Km0}lWI diff --git a/instruments/other/(SMS) Hi-Hat & Note.dmp b/instruments/other/(SMS) Hi-Hat & Note.dmp index 3f92dc68e44f20be7565640baac423094d562952..cff02382ff3d2e1785f600462a0f97fecba79eb6 100644 GIT binary patch literal 39 icmd;PW?<%KU|?VaVtye0&y)ouLHIud6G(s$%me^ELc0R delta 10 RcmdnWxRsHKn`t7`W&jU~0>S_Q diff --git a/instruments/other/(SMS) Kick Noise.dmp b/instruments/other/(SMS) Kick Noise.dmp index 8f2d3cbf9a4afe32ff867b34df5da03d0dbe6934..b76fb88614620a661ef038fdb7d14724a36086e3 100644 GIT binary patch literal 39 hcmd;PW?<%LU|;}YJ|O|?3uN{tG`G?atIxT|Nox{NW<`d21aHe_df#wLs|;d diff --git a/instruments/other/(SMS) Record Scratch Down.dmp b/instruments/other/(SMS) Record Scratch Down.dmp index 8e28c41800ba5555b93ec5fbb67d7dc3aeb8f951..b3f4b07fa5820b2dd9592d89e33dad421e0326e1 100644 GIT binary patch literal 94 wcma*dxe)*$48*{jA;SSFn7{ubjY=R`MY1F-l76r$@}&nG3ljq!j)scB1BGM*)c^nh literal 94 wcma*fxe)*$34)c^nh literal 94 vcma*exe)*$3$mGGp&%nSS0mT1-7yu$90?GgY delta 21 ZcmWFwW8!9-$mGGp%)r3F1H}J<7yuz70fLI2IHGo(ih_!(j1OPA~0qg(( literal 38 hcmd;PVqoNDU|{&q#sefJfLH*CWq?>1h~fLI!c)qz+Zh_!(j1OPAm0qOt% literal 38 hcmd;PVqoNDU|{&q#sefJfS4bMrGZ!&h~0igf@ diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Slow Major.dmp b/instruments/other/(SMS) Tim Follin 6-Arp Slow Major.dmp index 9536150c65ce3590c7022fec86b4d24542fc3524..11eeafb4a40accc6ca5787c962c0f447befa57f7 100644 GIT binary patch literal 50 jcmd;PW?pjZP)%R{j?kOlz&N#g=S literal 50 jcmd;PVqoNDU|{&q$pa)oSOSOzpjZY-3q!FykOlz&Kav5} diff --git a/instruments/other/(SMS) Tim Follin 6-Arp Slow Minor.dmp b/instruments/other/(SMS) Tim Follin 6-Arp Slow Minor.dmp index 166a1cb3af789baa0b4d0323a05c5fe50ba2d2dd..3cbc3f380aec5cd7d58b1b968e46bd3f6538ddb4 100644 GIT binary patch literal 50 jcmd;PW?$Yj97!@$5G0mT1-7yumD0)GGi delta 21 XcmcDsW8!9-$Yj9700bc7KM(@|8`lD6 diff --git a/instruments/other/(SMS) Tom B.dmp b/instruments/other/(SMS) Tom B.dmp index 664021f6d7446ed81feb56bdf873736f4a45146c..e06cccb81e19cbb5be00da1fa17108d1f1d286a9 100644 GIT binary patch delta 57 vcmYdFV&Z0=$Yfxk#K6Fy2*e6NEDywTKr9QyGC(X1#8N;k3B(dW{2zz`huj1P delta 57 tcmWN=$qfJ?2mnFC*9*@&sELlOSa*_%(4<%0kBDq8P7Zb&8!HPlA3u3F1Azbl diff --git a/instruments/other/(SMS) Up Slider.dmp b/instruments/other/(SMS) Up Slider.dmp index 765f156e824e56bd8cd569c561fd8f997d44551b..b57cfffeaccb7921c8c89b6586aadec4e56bdca5 100644 GIT binary patch literal 162 zcmWm5Hx7VM5X8`rD9JfzasMNNUA!q)-XsoD7DD*mkxfya*xs;x5a9>1ngpl- literal 162 zcmWm8*A0L$3;wuCU!;yTkT??Fripwl{1a_>UhaIRfhd diff --git a/instruments/other/(SMS) Variable.dmp b/instruments/other/(SMS) Variable.dmp index 7ed3209f5ce5f3d2b5bd4fd152b26b8870ee7b00..16a5c0f76e0c3289edb3a860f03eebb5ddbaa915 100644 GIT binary patch literal 13 Scmd;PW?9 diff --git a/instruments/other/(SMS) Whistle.dmp b/instruments/other/(SMS) Whistle.dmp index 0fd9127c031a0eb3668ed18eaf435e5c45d32936..1ed679bb83c880eb1f94f6bcbdfd2993af8ecc12 100644 GIT binary patch literal 22 Xcmd;PW? Date: Sun, 4 Sep 2022 13:56:18 -0700 Subject: [PATCH 505/580] Adding additional PSG instruments --- instruments/other/2A03 Noise Hi-Hat Closed.fui | Bin 0 -> 1937 bytes instruments/other/2A03 Noise Hi-Hat Open.fui | Bin 0 -> 2019 bytes instruments/other/2A03 Noise Kick.fui | Bin 0 -> 1928 bytes instruments/other/2A03 Noise Snare.fui | Bin 0 -> 2013 bytes instruments/other/2A03 Triangle Kick+Bass.fui | Bin 0 -> 1926 bytes instruments/other/2A03 Triangle Kick.fui | Bin 0 -> 1951 bytes instruments/other/2A03 Triangle Snare+Bass.fui | Bin 0 -> 1931 bytes instruments/other/2A03 Triangle Snare.fui | Bin 0 -> 1944 bytes instruments/other/AY kick.fui | Bin 0 -> 1799 bytes instruments/other/AY snare.fui | Bin 0 -> 2056 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/other/2A03 Noise Hi-Hat Closed.fui create mode 100644 instruments/other/2A03 Noise Hi-Hat Open.fui create mode 100644 instruments/other/2A03 Noise Kick.fui create mode 100644 instruments/other/2A03 Noise Snare.fui create mode 100644 instruments/other/2A03 Triangle Kick+Bass.fui create mode 100644 instruments/other/2A03 Triangle Kick.fui create mode 100644 instruments/other/2A03 Triangle Snare+Bass.fui create mode 100644 instruments/other/2A03 Triangle Snare.fui create mode 100644 instruments/other/AY kick.fui create mode 100644 instruments/other/AY snare.fui diff --git a/instruments/other/2A03 Noise Hi-Hat Closed.fui b/instruments/other/2A03 Noise Hi-Hat Closed.fui new file mode 100644 index 0000000000000000000000000000000000000000..a24dff830d17e67e06962ae403631f671aca32af GIT binary patch literal 1937 zcmeHHU24KW5dOv_Mys&k1+vdViboI%MPEeF3rNjFK(rWr_G;eD&L&y1E=wXUC|C!+ z%>UmKCjLC`x2vy2rrYeWe~-TbNQS2AY_Uv3K-p)zG)v?pjVG&v{MhWWWDWR0O9e-r zz!O6t(3uvGe4^f{#{WjX7+6V$8g;2F@=k`a5(Qdg5bK>1%nXVQIUmt84VHXio!5fm zE~s$9XfxDAs;#0PFz%NqEY;VpLprGnxmmJnHR(m+-!*KiZTtU2FMH=_*PDLKzwX~u zU;AHuuJ4h47rxlRJUA0BOptY_tw_1oLskQtQtcrUd{`A~$;%flLkK4kh9C#Iia5fY I13fD42lAWZrT_o{ literal 0 HcmV?d00001 diff --git a/instruments/other/2A03 Noise Hi-Hat Open.fui b/instruments/other/2A03 Noise Hi-Hat Open.fui new file mode 100644 index 0000000000000000000000000000000000000000..26889b0ad7e2b9d8bb07187c9a9ccac4b9cedf44 GIT binary patch literal 2019 zcmeHI%}T>S5dNk~Ow+0hJ$lKWg@}*PlhjKU+7~D#hg@Q5>)8kM;+xf(Bumz1NkqYd z?ZDUh+4(0-vxnDhxmxGCD0lnqUA6(B8HOI`i{*O^h<*N2>~cLTve{~{pEh|3gup;t z(_s{-TOcxV4o^d(@qNeph(a}Sf-E&nC{a}<%h-wvgDHshVFP9srIw5vRs!4L$OqPW zEC}~O+*N~X=7OsRm(0hE5hGzpJG?wxFl03X$u0F=$aDrWiV)|Ta?T31rTuk#BNNoR zd|PsJ_33rupB3!O?Y^HvEqCVsuJ?VIzn#A?zj;5``Fi8bUid#CdX7E_2PWvQb6JP{ l)gs#lZK?ARDL&SMP710)8yCWxier$6d`UcR-iD6l_X*Jl;^Y7T literal 0 HcmV?d00001 diff --git a/instruments/other/2A03 Noise Kick.fui b/instruments/other/2A03 Noise Kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..7cf815e1a9eb2931b503248ae3ed8b909770a790 GIT binary patch literal 1928 zcmeHHOA5j;5Pj1RwTcA1K)V(y9>J9$f(Uv5MY<@0O4YSj^JY4!24e`VC@81{ubI!A znM^2?^!NE{zDVP2wcX{NWCI{(C>e|<(^&vW|7e|U(|DLImVgI1k`vW@SF{0NB^YPq z5jDCc@j7{;Wh7~46jCUPPMY(k3OGFw+qEnB&?M6I;)<^BF!U4KJQn0>gQN>a$dEkQ zRtnp_2BXO+9NNdMLn=w*JgS9idzhNr4SAx2tXFG6|vB)7y1cE$s*`1l4S;EY&pSyN>-&Cu1{nTB~9syLu%FTRn_nHH`KYv)Qn`+T6y9P*skvf&* zEHM{AW+S|{Ohu+wk@Jb9=FAIn%(9Te^fx)1d(~i6Luik8aB-w`bez*j+zn6P(2k+* zhMbZUa!jUVLJFcK@Tq!^xayNAe5xQ?i=y2r+J>US_?kIu=C1n<=i}EXHpub$tm@|) zvbTA^cHvNN|NJl9<@fyC?ViNoN)m7j7IY}TcN9b70ssI2 literal 0 HcmV?d00001 diff --git a/instruments/other/2A03 Triangle Kick+Bass.fui b/instruments/other/2A03 Triangle Kick+Bass.fui new file mode 100644 index 0000000000000000000000000000000000000000..9beaea86258dc329a57a0fbfeba950520da00370 GIT binary patch literal 1926 zcmdOOD=o@POioqE%quP_($g(qU|>)HVi@rB3l526XJ7z{hZJQd=B4MPDtKomXDetc zI3*SrGcd3)Fff5s%X6?Y^J_6Mu)?&W(ef;ejNArzYxh5ia;z2#2_(rfUcJj zg$uBlW({CHz{v0) z2pANY5#l&l^a@Dq*5fUR`1u(aKo~Dz2745$gpr}1pPik75evX(2o_~n9W+qt0KZt{ AWB>pF literal 0 HcmV?d00001 diff --git a/instruments/other/2A03 Triangle Kick.fui b/instruments/other/2A03 Triangle Kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..f226301058a8ca894539476d70fc0ae1f89aef2b GIT binary patch literal 1951 zcmdOOD=o@POioqE%quP_($g(qU|>)HVi@rB3l1q~XJ7z{hZJQd=B4MPDtKomXEQLc zFfcHIl*x0jGV^OOFtEb(pwaRyjEvj{c;vYlS@?y}G$C>2IT<bF!@n?P|GM-xB$y<)&SN6 zj12#QfI)#7A&!GZuYkmEJ>G(dA6VFeFkZk6_9#>dBSSquJ39j-7J$tVEXuGtXrR;q E0Al9ing9R* literal 0 HcmV?d00001 diff --git a/instruments/other/2A03 Triangle Snare+Bass.fui b/instruments/other/2A03 Triangle Snare+Bass.fui new file mode 100644 index 0000000000000000000000000000000000000000..e91831c8a49de1ffd4332efc1a9feee9edc53a99 GIT binary patch literal 1931 zcmdOOD=o@POioqE%quP_($g(qU|>)HVi@rB3l2$UXJ7z{hZJQd=B4MPDg@^x7Nsg^ zD>x+<7c(%hFfcHIl*@ClGV^OOFtEb(qS5j!jEvj{c;vYlS@?y}G$C>2IT<Et@=o1G$Al3n5psyX&ffyu?4$#eE z1i6t+fNmBcKExXGEF@$$y8KA63*FDdolhv4QtE#~=ELMi?LjS%VBrERt62kB4=^(P z2Lc8KW`sBn7QF%zyY+YrB7S}b1`x&zn86-}Dq&=(=VxbUV8jBj8G=O_RtF7~Isl16 B)HVi@rB3l1q@XJ7z{hZJQd=B4MPDg@^x7Ns&U zurM$%fz-)!url*&F)*;gG@;S*ER2lY26*JT7+Ls*&@>@&W5Xad{8%tZ9Oy#_Js{QrVqj=EXaF%t92uaS z$p~^cnE>4^LVSodCZdhdZB8GNsi2gv^J@kJ^J;Ho?LLSa7ojupVG! z_zwgO3d{&`94vYTBzEiZ7DW8OLKcMa0%ovBp-LDT>iOB(85pquY=&S_hSfm>r49hQ C(Bjzu literal 0 HcmV?d00001 diff --git a/instruments/other/AY kick.fui b/instruments/other/AY kick.fui new file mode 100644 index 0000000000000000000000000000000000000000..111f1da7eef5c11230b2bdd186367113a5042685 GIT binary patch literal 1799 zcmdOOD=o@POioqE%quP_($mdiU|>)HVi@rB3l6!@#=wxpz{ZeNl$o5Jl#`#FZER+# z;25cp4dgR0urM$%ft1U0url*&F)*;g^rF%7ER2lY26*JT7+Ls*&@>@&(x{!h(<>K0gxX1+qbA zasn~POi&Oo12IS)2xtQ_NDT-J1F;AYivzJF5X%BFy8S>Q6tLni#68G@$nF8L89@M9 z0SRn$vk37aMw4e7A+yotM}l4Geje_8LP?WS{}VDFCO>KqY6!r>1y~2L2CyDr1Q&V? g3ZSA4KR`8xbRK@w3CSWCM96HgK7L?94Z?T<00z7EGE?*P;W0bzFNsJ2W239_&1*=sq&7{nd9s+^-6xCF zvkP^3tH$Xhn-Td$EzXZSfhUiM0`sxsV_%5gNzHy&_;T0z$O_{~L{e9>URFy>2?HD1+k}dd6umO6Y3nIX}=$x*>EkT Date: Mon, 5 Sep 2022 05:48:20 -0500 Subject: [PATCH 506/580] GUI: wave generator, part 5 completely untested FM generation --- src/gui/waveEdit.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 9fea53c0..2767911a 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -32,6 +32,25 @@ const char* waveGenBaseShapes[4]={ "Pulse" }; +const float multFactors[16]={ + M_PI, + 2*M_PI, + 4*M_PI, + 6*M_PI, + 8*M_PI, + 10*M_PI, + 12*M_PI, + 14*M_PI, + 16*M_PI, + 18*M_PI, + 20*M_PI, + 22*M_PI, + 24*M_PI, + 26*M_PI, + 28*M_PI, + 30*M_PI, +}; + void FurnaceGUI::doGenerateWave() { float finalResult[256]; if (curWave<0 || curWave>=(int)e->song.wave.size()) return; @@ -42,7 +61,18 @@ void FurnaceGUI::doGenerateWave() { if (wave->len<2) return; if (waveGenFM) { + for (int i=0; ilen; i++) { + float pos=(float)i/(float)wave->len; + float s0=sin(pos*multFactors[waveGenMult[0]])*waveGenTL[0]; + float s1=sin((pos+(waveGenFMCon1[0]?s0:0.0f))*multFactors[waveGenMult[1]])*waveGenTL[1]; + float s2=sin((pos+(waveGenFMCon1[1]?s0:0.0f)+(waveGenFMCon2[0]?s1:0.0f))*multFactors[waveGenMult[2]])*waveGenTL[2]; + float s3=sin((pos+(waveGenFMCon1[2]?s0:0.0f)+(waveGenFMCon2[1]?s1:0.0f)+(waveGenFMCon3[0]?s2:0.0f))*multFactors[waveGenMult[3]])*waveGenTL[3]; + if (waveGenFMCon1[3]) finalResult[i]+=s0; + if (waveGenFMCon2[2]) finalResult[i]+=s1; + if (waveGenFMCon3[1]) finalResult[i]+=s2; + finalResult[i]+=s3; + } } else { switch (waveGenBaseShape) { case 0: // sine From a59ed84322577e8c25e5751c2a93f4f17f196c4e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 6 Sep 2022 14:28:57 -0500 Subject: [PATCH 507/580] GUI: fix wave gen FM con checkboxes doing nothing --- src/gui/waveEdit.cpp | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 2767911a..9842d808 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -423,13 +423,21 @@ void FurnaceGUI::drawWaveEdit() { ImGui::TableNextColumn(); ImGui::Text("1"); ImGui::TableNextColumn(); - ImGui::Checkbox("##Con12",&waveGenFMCon1[0]); + if (ImGui::Checkbox("##Con12",&waveGenFMCon1[0])) { + doGenerateWave(); + } ImGui::TableNextColumn(); - ImGui::Checkbox("##Con13",&waveGenFMCon1[1]); + if (ImGui::Checkbox("##Con13",&waveGenFMCon1[1])) { + doGenerateWave(); + } ImGui::TableNextColumn(); - ImGui::Checkbox("##Con14",&waveGenFMCon1[2]); + if (ImGui::Checkbox("##Con14",&waveGenFMCon1[2])) { + doGenerateWave(); + } ImGui::TableNextColumn(); - ImGui::Checkbox("##Con1O",&waveGenFMCon1[3]); + if (ImGui::Checkbox("##Con1O",&waveGenFMCon1[3])) { + doGenerateWave(); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -437,11 +445,17 @@ void FurnaceGUI::drawWaveEdit() { ImGui::TableNextColumn(); // blank ImGui::TableNextColumn(); - ImGui::Checkbox("##Con23",&waveGenFMCon2[0]); + if (ImGui::Checkbox("##Con23",&waveGenFMCon2[0])) { + doGenerateWave(); + } ImGui::TableNextColumn(); - ImGui::Checkbox("##Con24",&waveGenFMCon2[1]); + if (ImGui::Checkbox("##Con24",&waveGenFMCon2[1])) { + doGenerateWave(); + } ImGui::TableNextColumn(); - ImGui::Checkbox("##Con2O",&waveGenFMCon2[2]); + if (ImGui::Checkbox("##Con2O",&waveGenFMCon2[2])) { + doGenerateWave(); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -451,9 +465,13 @@ void FurnaceGUI::drawWaveEdit() { ImGui::TableNextColumn(); // blank ImGui::TableNextColumn(); - ImGui::Checkbox("##Con34",&waveGenFMCon3[0]); + if (ImGui::Checkbox("##Con34",&waveGenFMCon3[0])) { + doGenerateWave(); + } ImGui::TableNextColumn(); - ImGui::Checkbox("##Con3O",&waveGenFMCon3[1]); + if (ImGui::Checkbox("##Con3O",&waveGenFMCon3[1])) { + doGenerateWave(); + } ImGui::EndTable(); } From 56ba47408cc5a6682524531c0f860df40b2cd4b8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 01:37:16 -0500 Subject: [PATCH 508/580] GUI: initialize variables --- src/gui/gui.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 6dc86420..1911ceb1 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -17,6 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #define _USE_MATH_DEFINES #include "gui.h" #include "util.h" @@ -4870,6 +4871,13 @@ FurnaceGUI::FurnaceGUI(): fileDialog(NULL), scrW(1280), scrH(800), + scrConfW(1280), + scrConfH(800), + scrX(SDL_WINDOWPOS_CENTERED), + scrY(SDL_WINDOWPOS_CENTERED), + scrConfX(SDL_WINDOWPOS_CENTERED), + scrConfY(SDL_WINDOWPOS_CENTERED), + scrMax(false), dpiScale(1), aboutScroll(0), aboutSin(0), From 21baf2e27255b99b8e68fc3b8ced41663600766d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 01:45:05 -0500 Subject: [PATCH 509/580] GUI: typo fixing --- src/gui/settings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index ed0e66f9..53ce0cde 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -515,11 +515,11 @@ void FurnaceGUI::drawSettings() { } bool saveWindowPosB=settings.saveWindowPos; - if (ImGui::Checkbox("Remember window location",&saveWindowPosB)) { + if (ImGui::Checkbox("Remember window position",&saveWindowPosB)) { settings.saveWindowPos=saveWindowPosB; } if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("remembers where window was last located on start-up. When disabled, window will start in a defaul location."); + ImGui::SetTooltip("remembers the window's last position on startup."); } bool blankInsB=settings.blankIns; From 4ad324bfedd4e08a65f613debe91f95e80f233c1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 01:49:36 -0500 Subject: [PATCH 510/580] screw you clangd extension --- src/gui/gui.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 1911ceb1..fb197e31 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -17,7 +17,9 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include +// I hate you clangd extension! +// how about you DON'T insert random headers before this freaking important +// define!!!!!! #define _USE_MATH_DEFINES #include "gui.h" #include "util.h" From 7de165fd88057588ad807bb2f9cd78f7591c9888 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 03:01:22 -0500 Subject: [PATCH 511/580] N163: fix channel count change glitch, part 1 --- src/engine/platform/n163.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/engine/platform/n163.cpp b/src/engine/platform/n163.cpp index 7da2e0a1..bc985b42 100644 --- a/src/engine/platform/n163.cpp +++ b/src/engine/platform/n163.cpp @@ -642,6 +642,9 @@ void DivPlatformN163::setFlags(unsigned int flags) { for (int i=0; i<8; i++) { oscBuf[i]->rate=rate/(initChanMax+1); } + + // needed to make sure changing channel count won't trigger glitches + reset(); } int DivPlatformN163::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { From 773b63b8102f174292dae1f6963f0e8535e6a862 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 13:16:57 -0500 Subject: [PATCH 512/580] GUI: don't save layout periodically --- src/gui/gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index fb197e31..9bd20333 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2382,7 +2382,7 @@ void FurnaceGUI::toggleMobileUI(bool enable, bool force) { if (mobileUI) { ImGui::GetIO().IniFilename=NULL; } else { - ImGui::GetIO().IniFilename=finalLayoutPath; + ImGui::GetIO().IniFilename=NULL; ImGui::LoadIniSettingsFromDisk(finalLayoutPath); } } From ae6e956f06d328ec06e3f4885e305a814d95fb4f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 17:04:38 -0500 Subject: [PATCH 513/580] GUI: some mobile view work --- src/gui/editControls.cpp | 4 ++++ src/gui/gui.cpp | 32 ++++++++++++++++++-------------- src/gui/gui.h | 2 +- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index 912bd1c0..a2014a30 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -23,12 +23,16 @@ void FurnaceGUI::drawMobileControls() { if (ImGui::Begin("Mobile Controls",NULL,ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { + ImGui::SetWindowPos(ImVec2(0.0f,0.0f)); + ImGui::SetWindowSize(portrait?ImVec2(scrW*dpiScale,0.1*scrW*dpiScale):ImVec2(0.1*scrH*dpiScale,scrH*dpiScale)); float availX=ImGui::GetContentRegionAvail().x; ImVec2 buttonSize=ImVec2(availX,availX); if (ImGui::Button(ICON_FA_CHEVRON_RIGHT "##MobileMenu",buttonSize)) { } + ImGui::Text("I put here"); + ImGui::Separator(); ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(e->isPlaying())); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 9bd20333..c74f077f 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2595,24 +2595,24 @@ void FurnaceGUI::processPoint(SDL_Event& ev) { #define OOB_PIXELS_SAFETY 25 bool FurnaceGUI::detectOutOfBoundsWindow() { - int count = SDL_GetNumVideoDisplays(); - if(count < 1) { - logW("bounds check: error %s", SDL_GetError()); + int count=SDL_GetNumVideoDisplays(); + if (count<1) { + logW("bounds check: error %s",SDL_GetError()); return false; } SDL_Rect rect; - for(int i = 0;i < count;i ++) { - if(SDL_GetDisplayUsableBounds(i, &rect) != 0) { - logW("bounds check: error %s", SDL_GetError()); + for (int i=0; i= scrX; - bool ybound = (rect.y + OOB_PIXELS_SAFETY) <= (scrY + scrH) && (rect.y + rect.h - OOB_PIXELS_SAFETY) >= scrY; - logD("bounds check: display %d is at %dx%dx%dx%d: %s%s", i, rect.x + OOB_PIXELS_SAFETY, rect.y + OOB_PIXELS_SAFETY, rect.x + rect.w - OOB_PIXELS_SAFETY, rect.y + rect.h - OOB_PIXELS_SAFETY, xbound ? "x" : "", ybound ? "y" : ""); + bool xbound=((rect.x+OOB_PIXELS_SAFETY)<=(scrX+scrW)) && ((rect.x+rect.w-OOB_PIXELS_SAFETY)>=scrX); + bool ybound=((rect.y+OOB_PIXELS_SAFETY)<=(scrY+scrH)) && ((rect.y+rect.h-OOB_PIXELS_SAFETY)>=scrY); + logD("bounds check: display %d is at %dx%dx%dx%d: %s%s",i,rect.x+OOB_PIXELS_SAFETY,rect.y+OOB_PIXELS_SAFETY,rect.x+rect.w-OOB_PIXELS_SAFETY,rect.y+rect.h-OOB_PIXELS_SAFETY,xbound?"x":"",ybound?"y":""); - if(xbound && ybound) { + if (xbound && ybound) { return true; } } @@ -2746,6 +2746,7 @@ bool FurnaceGUI::loop() { scrW=ev.window.data1/dpiScale; scrH=ev.window.data2/dpiScale; #endif + portrait=(scrWgetConfInt("lastWindowX",SDL_WINDOWPOS_CENTERED); scrY=scrConfY=e->getConfInt("lastWindowY",SDL_WINDOWPOS_CENTERED); scrMax=e->getConfBool("lastWindowMax",false); + portrait=(scrWdisplaySize.w/dpiScale) scrW=(displaySize.w/dpiScale)-32; if (scrH>displaySize.h/dpiScale) scrH=(displaySize.h/dpiScale)-32; + portrait=(scrW sysSearchResults; std::vector newSongSearchResults; - bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints; + bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints, portrait; bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; bool displayNew, fullScreen, preserveChanPos, wantScrollList, noteInputPoly; bool displayPendingIns, pendingInsSingle, displayPendingRawSample; From 06845210925da94ae62096d942b140cc0492675e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 17:04:52 -0500 Subject: [PATCH 514/580] update Android ver num --- android/app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index cb4b3c59..f332e6f5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -15,8 +15,8 @@ android { } minSdkVersion 21 targetSdkVersion 26 - versionCode 93 - versionName "0.6pre1" + versionCode 112 + versionName "dev112" externalNativeBuild { cmake { arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static" From 2c18fe1051f7625109ab10d34c2703990d3e158f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 19:15:19 -0500 Subject: [PATCH 515/580] GUI: lots of mobile UI progress --- src/gui/editControls.cpp | 130 +++++++++++++++++++++++++++++++++++---- src/gui/gui.cpp | 10 ++- src/gui/gui.h | 4 +- src/gui/pattern.cpp | 13 +++- src/log.cpp | 4 ++ 5 files changed, 144 insertions(+), 17 deletions(-) diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index a2014a30..5307163e 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -22,27 +22,54 @@ #include void FurnaceGUI::drawMobileControls() { + float timeScale=1.0f/(60.0f*ImGui::GetIO().DeltaTime); + if (mobileMenuOpen) { + if (mobileMenuPos<0.999f) { + WAKE_UP; + mobileMenuPos+=MIN(0.1,(1.0-mobileMenuPos)*0.65)*timeScale; + } else { + mobileMenuPos=1.0f; + } + } else { + if (mobileMenuPos>0.001f) { + WAKE_UP; + mobileMenuPos-=MIN(0.1,mobileMenuPos*0.65)*timeScale; + } else { + mobileMenuPos=0.0f; + } + } + ImGui::SetNextWindowPos(portrait?ImVec2(0.0f,((1.0-mobileMenuPos*0.65)*scrH*dpiScale)-(0.16*scrW*dpiScale)):ImVec2(0.5*scrW*dpiScale*mobileMenuPos,0.0f)); + ImGui::SetNextWindowSize(portrait?ImVec2(scrW*dpiScale,0.16*scrW*dpiScale):ImVec2(0.16*scrH*dpiScale,scrH*dpiScale)); if (ImGui::Begin("Mobile Controls",NULL,ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { - ImGui::SetWindowPos(ImVec2(0.0f,0.0f)); - ImGui::SetWindowSize(portrait?ImVec2(scrW*dpiScale,0.1*scrW*dpiScale):ImVec2(0.1*scrH*dpiScale,scrH*dpiScale)); - float availX=ImGui::GetContentRegionAvail().x; - ImVec2 buttonSize=ImVec2(availX,availX); + float avail=portrait?ImGui::GetContentRegionAvail().y:ImGui::GetContentRegionAvail().x; + ImVec2 buttonSize=ImVec2(avail,avail); - if (ImGui::Button(ICON_FA_CHEVRON_RIGHT "##MobileMenu",buttonSize)) { + const char* mobButtonName=ICON_FA_CHEVRON_RIGHT "##MobileMenu"; + if (portrait) mobButtonName=ICON_FA_CHEVRON_UP "##MobileMenu"; + if (mobileMenuOpen) { + if (portrait) { + mobButtonName=ICON_FA_CHEVRON_DOWN "##MobileMenu"; + } else { + mobButtonName=ICON_FA_CHEVRON_LEFT "##MobileMenu"; + } + } + if (ImGui::Button(mobButtonName,buttonSize)) { + mobileMenuOpen=!mobileMenuOpen; } - ImGui::Text("I put here"); - - ImGui::Separator(); + if (!portrait) ImGui::Separator(); ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(e->isPlaying())); + if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_PLAY "##Play",buttonSize)) { play(); } ImGui::PopStyleColor(); + if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_STOP "##Stop",buttonSize)) { stop(); } + if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_ARROW_DOWN "##StepOne",buttonSize)) { e->stepOne(cursor.y); pendingStepUpdate=true; @@ -50,12 +77,14 @@ void FurnaceGUI::drawMobileControls() { bool repeatPattern=e->getRepeatPattern(); ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(repeatPattern)); + if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_REPEAT "##RepeatPattern",buttonSize)) { e->setRepeatPattern(!repeatPattern); } ImGui::PopStyleColor(); ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(edit)); + if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_CIRCLE "##Edit",buttonSize)) { edit=!edit; } @@ -63,17 +92,94 @@ void FurnaceGUI::drawMobileControls() { bool metro=e->getMetronome(); ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(metro)); + if (portrait) ImGui::SameLine(); if (ImGui::Button(ICON_FA_BELL_O "##Metronome",buttonSize)) { e->setMetronome(!metro); } ImGui::PopStyleColor(); - - if (ImGui::Button("Get me out of here")) { - toggleMobileUI(false); - } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_EDIT_CONTROLS; ImGui::End(); + + ImGui::SetNextWindowPos(portrait?ImVec2(0.0f,((1.0-mobileMenuPos*0.65)*scrH*dpiScale)):ImVec2(0.5*scrW*dpiScale*(mobileMenuPos-1.0),0.0f)); + ImGui::SetNextWindowSize(portrait?ImVec2(scrW*dpiScale,0.65*scrH*dpiScale):ImVec2(0.5*scrW*dpiScale,scrH*dpiScale)); + if (ImGui::Begin("Mobile Menu",NULL,ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { + ImGui::Button("Pattern"); + ImGui::SameLine(); + ImGui::Button("Ins"); + ImGui::SameLine(); + ImGui::Button("Wave"); + ImGui::SameLine(); + ImGui::Button("Sample"); + + ImGui::Text("Data list goes here..."); + + if (ImGui::Button("New")) { + mobileMenuOpen=false; + //doAction(GUI_ACTION_NEW); + if (modified) { + showWarning("Unsaved changes! Save changes before creating a new song?",GUI_WARN_NEW); + } else { + displayNew=true; + } + } + ImGui::SameLine(); + if (ImGui::Button("Open")) { + mobileMenuOpen=false; + doAction(GUI_ACTION_OPEN); + } + ImGui::SameLine(); + if (ImGui::Button("Save")) { + mobileMenuOpen=false; + doAction(GUI_ACTION_SAVE); + } + ImGui::SameLine(); + if (ImGui::Button("Save as...")) { + mobileMenuOpen=false; + doAction(GUI_ACTION_SAVE_AS); + } + + ImGui::Button("1.1+ .dmf"); + ImGui::SameLine(); + ImGui::Button("Legacy .dmf"); + ImGui::SameLine(); + ImGui::Button("Export Audio"); + ImGui::SameLine(); + ImGui::Button("Export VGM"); + + ImGui::Button("CmdStream"); + ImGui::SameLine(); + ImGui::Button("Panic"); + ImGui::SameLine(); + if (ImGui::Button("Settings")) { + mobileMenuOpen=false; + } + ImGui::SameLine(); + if (ImGui::Button("About")) { + mobileMenuOpen=false; + mobileMenuPos=0.0f; + aboutOpen=true; + } + + ImGui::Separator(); + + if (ImGui::Button("Osc")) { + oscOpen=!oscOpen; + } + ImGui::SameLine(); + if (ImGui::Button("ChanOsc")) { + chanOscOpen=!chanOscOpen; + } + ImGui::SameLine(); + if (ImGui::Button("RegView")) { + regViewOpen=!regViewOpen; + } + ImGui::SameLine(); + if (ImGui::Button("Stats")) { + statsOpen=!statsOpen; + } + } + ImGui::End(); } void FurnaceGUI::drawEditControls() { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index c74f077f..a353308e 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2581,7 +2581,7 @@ void FurnaceGUI::processPoint(SDL_Event& ev) { if (point.id==0) { ImGui::GetIO().AddMouseButtonEvent(ImGuiMouseButton_Left,false); - ImGui::GetIO().AddMousePosEvent(-FLT_MAX,-FLT_MAX); + //ImGui::GetIO().AddMousePosEvent(-FLT_MAX,-FLT_MAX); } break; } @@ -2747,6 +2747,7 @@ bool FurnaceGUI::loop() { scrH=ev.window.data2/dpiScale; #endif portrait=(scrWgetConfInt("lastWindowY",SDL_WINDOWPOS_CENTERED); scrMax=e->getConfBool("lastWindowMax",false); portrait=(scrWdisplaySize.w/dpiScale) scrW=(displaySize.w/dpiScale)-32; if (scrH>displaySize.h/dpiScale) scrH=(displaySize.h/dpiScale)-32; portrait=(scrW sysSearchResults; std::vector newSongSearchResults; - bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints, portrait; + bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints; + bool portrait, mobileMenuOpen; bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; bool displayNew, fullScreen, preserveChanPos, wantScrollList, noteInputPoly; bool displayPendingIns, pendingInsSingle, displayPendingRawSample; @@ -996,6 +997,7 @@ class FurnaceGUI { int drawHalt; int macroPointSize; int waveEditStyle; + float mobileMenuPos; const int* curSysSection; String pendingRawSample; diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 254c53be..5081d6ef 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -372,10 +372,17 @@ void FurnaceGUI::drawPattern() { sel2.xFine^=sel1.xFine; } ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,ImVec2(0.0f,0.0f)); + if (mobileUI) { + patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale)); + ImGui::SetNextWindowPos(patWindowPos); + ImGui::SetNextWindowSize(patWindowSize); + } if (ImGui::Begin("Pattern",&patternOpen,globalWinFlags|(settings.avoidRaisingPattern?ImGuiWindowFlags_NoBringToFrontOnFocus:0))) { - //ImGui::SetWindowSize(ImVec2(scrW*dpiScale,scrH*dpiScale)); - patWindowPos=ImGui::GetWindowPos(); - patWindowSize=ImGui::GetWindowSize(); + if (!mobileUI) { + patWindowPos=ImGui::GetWindowPos(); + patWindowSize=ImGui::GetWindowSize(); + } //char id[32]; ImGui::PushFont(patFont); int ord=oldOrder; diff --git a/src/log.cpp b/src/log.cpp index 89602b42..ef2750a2 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -19,7 +19,11 @@ #include "ta-log.h" +#ifdef IS_MOBILE +int logLevel=LOGLEVEL_TRACE; +#else int logLevel=LOGLEVEL_INFO; +#endif std::atomic logPosition; From 0fd72c53efe13c0cc3fff3222e82e0169f3ff69a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 23:20:33 -0500 Subject: [PATCH 516/580] GUI: and more mobile UI progress --- src/gui/gui.cpp | 3 +++ src/gui/gui.h | 9 +++++++++ src/gui/pattern.cpp | 2 +- src/gui/piano.cpp | 4 ++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index a353308e..d9e8ffa0 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3349,6 +3349,8 @@ bool FurnaceGUI::loop() { if (mobileUI) { globalWinFlags=ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoBringToFrontOnFocus; //globalWinFlags=ImGuiWindowFlags_NoTitleBar; + // scene handling goes here! + pianoOpen=true; drawMobileControls(); drawPattern(); drawPiano(); @@ -4882,6 +4884,7 @@ FurnaceGUI::FurnaceGUI(): curFileDialog(GUI_FILE_OPEN), warnAction(GUI_WARN_OPEN), postWarnAction(GUI_WARN_GENERIC), + mobScene(GUI_SCENE_PATTERN), fileDialog(NULL), scrW(1280), scrH(800), diff --git a/src/gui/gui.h b/src/gui/gui.h index 280ec76b..797f9fd7 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -260,6 +260,14 @@ enum FurnaceGUIWindows { GUI_WINDOW_SPOILER }; +enum FurnaceGUIMobileScenes { + GUI_SCENE_PATTERN, + GUI_SCENE_ORDERS, + GUI_SCENE_INSTRUMENT, + GUI_SCENE_WAVETABLE, + GUI_SCENE_SAMPLE +}; + enum FurnaceGUIFileDialogs { GUI_FILE_OPEN, GUI_FILE_SAVE, @@ -1009,6 +1017,7 @@ class FurnaceGUI { FurnaceGUIFileDialogs curFileDialog; FurnaceGUIWarnings warnAction; FurnaceGUIWarnings postWarnAction; + FurnaceGUIMobileScenes mobScene; FurnaceGUIFileDialog* fileDialog; diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 5081d6ef..002cabd9 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -374,7 +374,7 @@ void FurnaceGUI::drawPattern() { ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,ImVec2(0.0f,0.0f)); if (mobileUI) { patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); - patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale)); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.3*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); ImGui::SetNextWindowPos(patWindowPos); ImGui::SetNextWindowSize(patWindowSize); } diff --git a/src/gui/piano.cpp b/src/gui/piano.cpp index 0e0063bb..27d8bbed 100644 --- a/src/gui/piano.cpp +++ b/src/gui/piano.cpp @@ -52,6 +52,10 @@ void FurnaceGUI::drawPiano() { nextWindow=GUI_WINDOW_NOTHING; } if (!pianoOpen) return; + if (mobileUI) { + ImGui::SetNextWindowPos(ImVec2(patWindowPos.x,patWindowPos.y+patWindowSize.y)); + ImGui::SetNextWindowSize(portrait?ImVec2(scrW*dpiScale,0.5*scrW*dpiScale):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),0.3*scrH*dpiScale)); + } if (ImGui::Begin("Piano",&pianoOpen,((pianoOptions)?0:ImGuiWindowFlags_NoTitleBar)|ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { bool oldPianoKeyPressed[180]; memcpy(oldPianoKeyPressed,pianoKeyPressed,180*sizeof(bool)); From ffcef2ac735b7b4279f99b34b6a9ac7d33a90f9a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 8 Sep 2022 23:48:39 -0500 Subject: [PATCH 517/580] fix .opni TL loading --- src/engine/fileOpsIns.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index 62c3a1d8..c8dbb57f 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -805,7 +805,7 @@ void DivEngine::loadOPNI(SafeReader& reader, std::vector& ret, S op.mult = dtMul & 0xF; op.dt = ((dtMul >> 4) & 0x7); - op.tl = totalLevel & 0x3F; + op.tl = totalLevel & 0x7F; op.rs = ((arRateScale >> 6) & 0x3); op.ar = arRateScale & 0x1F; op.dr = drAmpEnable & 0x1F; @@ -1643,7 +1643,7 @@ void DivEngine::loadWOPN(SafeReader& reader, std::vector& ret, S total += (op.mult = dtMul & 0xF); total += (op.dt = ((dtMul >> 4) & 0x7)); - total += (op.tl = totalLevel & 0x3F); + total += (op.tl = totalLevel & 0x7F); total += (op.rs = ((arRateScale >> 6) & 0x3)); total += (op.ar = arRateScale & 0x1F); total += (op.dr = drAmpEnable & 0x1F); From 0c8cde9f85706bd46d5af43a6e16668486e75750 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 00:02:43 -0500 Subject: [PATCH 518/580] GUI: mark modified upon order val change --- src/gui/gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index d9e8ffa0..6ad37fff 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1154,6 +1154,7 @@ void FurnaceGUI::keyDown(SDL_Event& ev) { e->lockSave([this,num]() { e->curOrders->ord[orderCursor][curOrder]=((e->curOrders->ord[orderCursor][curOrder]<<4)|num); }); + MARK_MODIFIED; if (orderEditMode==2 || orderEditMode==3) { curNibble=!curNibble; if (!curNibble) { From 9a3c81d90ac04895a3d56f858f70b5083947f1ff Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 03:23:18 -0500 Subject: [PATCH 519/580] GUI: wave generator, part 6 FM now with feedback! --- src/gui/gui.cpp | 12 +++++++++--- src/gui/gui.h | 2 +- src/gui/waveEdit.cpp | 29 ++++++++++++++++++++++++----- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 6ad37fff..55569a62 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5235,9 +5235,15 @@ FurnaceGUI::FurnaceGUI(): memset(waveGenAmp,0,sizeof(float)*16); memset(waveGenPhase,0,sizeof(float)*16); - memset(waveGenTL,0,sizeof(float)*4); - memset(waveGenMult,0,sizeof(int)*4); - memset(waveGenFB,0,sizeof(float)*4); + waveGenTL[0]=0.0f; + waveGenTL[1]=0.0f; + waveGenTL[2]=0.0f; + waveGenTL[3]=1.0f; + waveGenMult[0]=1; + waveGenMult[1]=1; + waveGenMult[2]=1; + waveGenMult[3]=1; + memset(waveGenFB,0,sizeof(int)*4); memset(waveGenFMCon1,0,sizeof(bool)*4); memset(waveGenFMCon2,0,sizeof(bool)*3); memset(waveGenFMCon3,0,sizeof(bool)*2); diff --git a/src/gui/gui.h b/src/gui/gui.h index 797f9fd7..7a67ac37 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1566,7 +1566,7 @@ class FurnaceGUI { float waveGenPhase[16]; float waveGenTL[4]; int waveGenMult[4]; - float waveGenFB[4]; + int waveGenFB[4]; bool waveGenFMCon1[4]; bool waveGenFMCon2[3]; bool waveGenFMCon3[2]; diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 9842d808..80f3a341 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -61,12 +61,31 @@ void FurnaceGUI::doGenerateWave() { if (wave->len<2) return; if (waveGenFM) { + float s0fb0=0; + float s0fb1=0; + float s1fb0=0; + float s1fb1=0; + float s2fb0=0; + float s2fb1=0; + float s3fb0=0; + float s3fb1=0; for (int i=0; ilen; i++) { float pos=(float)i/(float)wave->len; - float s0=sin(pos*multFactors[waveGenMult[0]])*waveGenTL[0]; - float s1=sin((pos+(waveGenFMCon1[0]?s0:0.0f))*multFactors[waveGenMult[1]])*waveGenTL[1]; - float s2=sin((pos+(waveGenFMCon1[1]?s0:0.0f)+(waveGenFMCon2[0]?s1:0.0f))*multFactors[waveGenMult[2]])*waveGenTL[2]; - float s3=sin((pos+(waveGenFMCon1[2]?s0:0.0f)+(waveGenFMCon2[1]?s1:0.0f)+(waveGenFMCon3[0]?s2:0.0f))*multFactors[waveGenMult[3]])*waveGenTL[3]; + float s0=sin((pos+(waveGenFB[0]?((s0fb0+s0fb1)*pow(2.0f,waveGenFB[0]-8)):0.0f))*multFactors[waveGenMult[0]])*waveGenTL[0]; + s0fb0=s0fb1; + s0fb1=s0; + + float s1=sin((pos+(waveGenFB[1]?((s1fb0+s1fb1)*pow(2.0f,waveGenFB[1]-8)):0.0f)+(waveGenFMCon1[0]?s0:0.0f))*multFactors[waveGenMult[1]])*waveGenTL[1]; + s1fb0=s1fb1; + s1fb1=s1; + + float s2=sin((pos+(waveGenFB[2]?((s2fb0+s2fb1)*pow(2.0f,waveGenFB[2]-8)):0.0f)+(waveGenFMCon1[1]?s0:0.0f)+(waveGenFMCon2[0]?s1:0.0f))*multFactors[waveGenMult[2]])*waveGenTL[2]; + s2fb0=s2fb1; + s2fb1=s2; + + float s3=sin((pos+(waveGenFB[3]?((s3fb0+s3fb1)*pow(2.0f,waveGenFB[3]-8)):0.0f)+(waveGenFMCon1[2]?s0:0.0f)+(waveGenFMCon2[1]?s1:0.0f)+(waveGenFMCon3[0]?s2:0.0f))*multFactors[waveGenMult[3]])*waveGenTL[3]; + s3fb0=s3fb1; + s3fb1=s3; if (waveGenFMCon1[3]) finalResult[i]+=s0; if (waveGenFMCon2[2]) finalResult[i]+=s1; @@ -394,7 +413,7 @@ void FurnaceGUI::drawWaveEdit() { ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::PushID(i); - if (CWSliderFloat("##WGFB",&waveGenFB[i],0.0f,7.0f)) { + if (CWSliderInt("##WGFB",&waveGenFB[i],0,7)) { doGenerateWave(); } ImGui::PopID(); From 7e065e4cfea0ddfde34e2a49657cfdbc56080634 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 15:31:29 -0500 Subject: [PATCH 520/580] GUI: more mobile UI things --- src/gui/editControls.cpp | 40 ++++++++++++++++++++++++++++------ src/gui/gui.cpp | 46 ++++++++++++++++++++++++++++++++++++++-- src/gui/insEdit.cpp | 9 +++++++- src/gui/sampleEdit.cpp | 6 ++++++ src/gui/waveEdit.cpp | 9 +++++++- 5 files changed, 99 insertions(+), 11 deletions(-) diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index 5307163e..91db32f5 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -104,13 +104,39 @@ void FurnaceGUI::drawMobileControls() { ImGui::SetNextWindowPos(portrait?ImVec2(0.0f,((1.0-mobileMenuPos*0.65)*scrH*dpiScale)):ImVec2(0.5*scrW*dpiScale*(mobileMenuPos-1.0),0.0f)); ImGui::SetNextWindowSize(portrait?ImVec2(scrW*dpiScale,0.65*scrH*dpiScale):ImVec2(0.5*scrW*dpiScale,scrH*dpiScale)); if (ImGui::Begin("Mobile Menu",NULL,ImGuiWindowFlags_NoScrollbar|ImGuiWindowFlags_NoScrollWithMouse|globalWinFlags)) { - ImGui::Button("Pattern"); - ImGui::SameLine(); - ImGui::Button("Ins"); - ImGui::SameLine(); - ImGui::Button("Wave"); - ImGui::SameLine(); - ImGui::Button("Sample"); + if (ImGui::BeginTable("SceneSel",5)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch,1.0f); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,1.0f); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,1.0f); + ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthStretch,1.0f); + ImGui::TableSetupColumn("c4",ImGuiTableColumnFlags_WidthStretch,1.0f); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImVec2 buttonSize=ImGui::GetContentRegionAvail(); + buttonSize.y=30.0f*dpiScale; + + if (ImGui::Button("Pattern",buttonSize)) { + mobScene=GUI_SCENE_PATTERN; + } + ImGui::TableNextColumn(); + if (ImGui::Button("Orders",buttonSize)) { + mobScene=GUI_SCENE_ORDERS; + } + ImGui::TableNextColumn(); + if (ImGui::Button("Ins",buttonSize)) { + mobScene=GUI_SCENE_INSTRUMENT; + } + ImGui::TableNextColumn(); + if (ImGui::Button("Wave",buttonSize)) { + mobScene=GUI_SCENE_WAVETABLE; + } + ImGui::TableNextColumn(); + if (ImGui::Button("Sample",buttonSize)) { + mobScene=GUI_SCENE_SAMPLE; + } + ImGui::EndTable(); + } ImGui::Text("Data list goes here..."); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 55569a62..4aff3657 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3353,8 +3353,32 @@ bool FurnaceGUI::loop() { // scene handling goes here! pianoOpen=true; drawMobileControls(); - drawPattern(); - drawPiano(); + switch (mobScene) { + case GUI_SCENE_PATTERN: + patternOpen=true; + drawPattern(); + drawPiano(); + break; + case GUI_SCENE_ORDERS: + ordersOpen=true; + drawOrders(); + break; + case GUI_SCENE_INSTRUMENT: + insEditOpen=true; + drawInsEdit(); + drawPiano(); + break; + case GUI_SCENE_WAVETABLE: + waveEditOpen=true; + drawWaveEdit(); + drawPiano(); + break; + case GUI_SCENE_SAMPLE: + sampleEditOpen=true; + drawSampleEdit(); + drawPiano(); + break; + } } else { globalWinFlags=0; ImGui::DockSpaceOverViewport(NULL,lockLayout?(ImGuiDockNodeFlags_NoWindowMenuButton|ImGuiDockNodeFlags_NoMove|ImGuiDockNodeFlags_NoResize|ImGuiDockNodeFlags_NoCloseButton|ImGuiDockNodeFlags_NoDocking|ImGuiDockNodeFlags_NoDockingSplitMe|ImGuiDockNodeFlags_NoDockingSplitOther):0); @@ -3397,6 +3421,13 @@ bool FurnaceGUI::loop() { if (firstFrame) { firstFrame=false; +#ifdef IS_MOBILE + SDL_GetWindowSize(sdlWin,&scrW,&scrH); + scrW/=dpiScale; + scrH/=dpiScale; + portrait=(scrWgetConfInt("lastWindowWidth",1280); scrH=scrConfH=e->getConfInt("lastWindowHeight",800); scrX=scrConfX=e->getConfInt("lastWindowX",SDL_WINDOWPOS_CENTERED); scrY=scrConfY=e->getConfInt("lastWindowY",SDL_WINDOWPOS_CENTERED); scrMax=e->getConfBool("lastWindowMax",false); +#endif portrait=(scrW((displaySize.w/dpiScale)-48) && scrH>((displaySize.h/dpiScale)-64)) { diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 662448df..84b70d77 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1560,7 +1560,14 @@ void FurnaceGUI::drawInsEdit() { nextWindow=GUI_WINDOW_NOTHING; } if (!insEditOpen) return; - ImGui::SetNextWindowSizeConstraints(ImVec2(440.0f*dpiScale,400.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale)); + if (mobileUI) { + patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.3*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); + ImGui::SetNextWindowPos(patWindowPos); + ImGui::SetNextWindowSize(patWindowSize); + } else { + ImGui::SetNextWindowSizeConstraints(ImVec2(440.0f*dpiScale,400.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale)); + } if (ImGui::Begin("Instrument Editor",&insEditOpen,globalWinFlags|(settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking))) { if (curIns<0 || curIns>=(int)e->song.ins.size()) { ImGui::Text("no instrument selected"); diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 0ce1500e..18579e71 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -35,6 +35,12 @@ void FurnaceGUI::drawSampleEdit() { nextWindow=GUI_WINDOW_NOTHING; } if (!sampleEditOpen) return; + if (mobileUI) { + patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.3*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); + ImGui::SetNextWindowPos(patWindowPos); + ImGui::SetNextWindowSize(patWindowSize); + } if (ImGui::Begin("Sample Editor",&sampleEditOpen,globalWinFlags|(settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking))) { if (curSample<0 || curSample>=(int)e->song.sample.size()) { ImGui::Text("no sample selected"); diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 80f3a341..1132b9ea 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -164,7 +164,14 @@ void FurnaceGUI::drawWaveEdit() { } if (!waveEditOpen) return; float wavePreview[257]; - ImGui::SetNextWindowSizeConstraints(ImVec2(300.0f*dpiScale,300.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale)); + if (mobileUI) { + patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.3*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); + ImGui::SetNextWindowPos(patWindowPos); + ImGui::SetNextWindowSize(patWindowSize); + } else { + ImGui::SetNextWindowSizeConstraints(ImVec2(300.0f*dpiScale,300.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale)); + } if (ImGui::Begin("Wavetable Editor",&waveEditOpen,globalWinFlags|(settings.allowEditDocking?0:ImGuiWindowFlags_NoDocking))) { if (curWave<0 || curWave>=(int)e->song.wave.size()) { ImGui::Text("no wavetable selected"); From 84b0ffbac324899126a8240c2f1b44ba1883a7a4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 15:31:38 -0500 Subject: [PATCH 521/580] VRC6: possibly bring solution to #671 --- src/engine/platform/vrc6.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/vrc6.cpp b/src/engine/platform/vrc6.cpp index 2500ce19..6e5e0d73 100644 --- a/src/engine/platform/vrc6.cpp +++ b/src/engine/platform/vrc6.cpp @@ -195,7 +195,7 @@ void DivPlatformVRC6::tick(bool sysTick) { if (chan[i].freq<0) chan[i].freq=0; if (chan[i].keyOff) { chWrite(i,2,0); - } else { + } else if (chan[i].active) { chWrite(i,1,chan[i].freq&0xff); chWrite(i,2,0x80|((chan[i].freq>>8)&0xf)); } From d021005f26d518482418d63983bbc9d84bf4722a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 16:41:00 -0500 Subject: [PATCH 522/580] GUI: fix arp macro hover --- src/gui/editControls.cpp | 4 ++++ src/gui/gui.cpp | 2 +- src/gui/gui.h | 8 +++++--- src/gui/insEdit.cpp | 26 +++++++++++++++----------- src/gui/plot_nolerp.cpp | 10 +++++----- src/gui/plot_nolerp.h | 2 +- src/gui/waveEdit.cpp | 4 ++-- 7 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index 91db32f5..f7e40c39 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -138,6 +138,10 @@ void FurnaceGUI::drawMobileControls() { ImGui::EndTable(); } + if (ImGui::Button("Create Ins")) { + doAction(GUI_ACTION_INS_LIST_ADD); + } + ImGui::Text("Data list goes here..."); if (ImGui::Button("New")) { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4aff3657..9a49dd48 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4669,7 +4669,6 @@ bool FurnaceGUI::init() { SDL_SetWindowSize(sdlWin,scrW*dpiScale,scrH*dpiScale); } } -#endif if (SDL_GetDisplayUsableBounds(SDL_GetWindowDisplayIndex(sdlWin),&displaySize)==0) { if (scrW>((displaySize.w/dpiScale)-48) && scrH>((displaySize.h/dpiScale)-64)) { @@ -4684,6 +4683,7 @@ bool FurnaceGUI::init() { SDL_SetWindowSize(sdlWin,scrW*dpiScale,scrH*dpiScale); } } +#endif } #endif diff --git a/src/gui/gui.h b/src/gui/gui.h index 7a67ac37..c4a3e18c 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -887,9 +887,10 @@ struct FurnaceGUIMacroDesc { ImVec4 color; unsigned int bitOffset; bool isBitfield, blockMode, bit30; - String (*hoverFunc)(int,float); + String (*hoverFunc)(int,float,void*); + void* hoverFuncUser; - FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, const char* mName=NULL, String (*hf)(int,float)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0, bool bit30Special=false): + FurnaceGUIMacroDesc(const char* name, DivInstrumentMacro* m, int macroMin, int macroMax, float macroHeight, ImVec4 col=ImVec4(1.0f,1.0f,1.0f,1.0f), bool block=false, const char* mName=NULL, String (*hf)(int,float,void*)=NULL, bool bitfield=false, const char** bfVal=NULL, unsigned int bitOff=0, bool bit30Special=false, void* hfu=NULL): macro(m), height(macroHeight), displayName(name), @@ -900,7 +901,8 @@ struct FurnaceGUIMacroDesc { isBitfield(bitfield), blockMode(block), bit30(bit30Special), - hoverFunc(hf) { + hoverFunc(hf), + hoverFuncUser(hfu) { // MSVC -> hell this->min=macroMin; this->max=macroMax; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 84b70d77..b8427ee4 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -316,27 +316,31 @@ const char* macroRelativeMode="Relative"; const char* macroQSoundMode="QSound"; const char* macroDummyMode="Bug"; -String macroHoverNote(int id, float val) { - if (val<-60 || val>=120) return "???"; - return fmt::sprintf("%d: %s",id,noteNames[(int)val+60]); +String macroHoverNote(int id, float val, void* u) { + int* macroVal=(int*)u; + if ((macroVal[id]&0xc0000000)==0x40000000 || (macroVal[id]&0xc0000000)==0x80000000) { + if (val<-60 || val>=120) return "???"; + return fmt::sprintf("%d: %s",id,noteNames[(int)val+60]); + } + return fmt::sprintf("%d: %d",id,(int)val); } -String macroHover(int id, float val) { +String macroHover(int id, float val, void* u) { return fmt::sprintf("%d: %d",id,val); } -String macroHoverLoop(int id, float val) { +String macroHoverLoop(int id, float val, void* u) { if (val>1) return "Release"; if (val>0) return "Loop"; return ""; } -String macroHoverBit30(int id, float val) { +String macroHoverBit30(int id, float val, void* u) { if (val>0) return "Fixed"; return "Relative"; } -String macroHoverES5506FilterMode(int id, float val) { +String macroHoverES5506FilterMode(int id, float val, void* u) { String mode="???"; switch (((int)val)&3) { case 0: @@ -357,7 +361,7 @@ String macroHoverES5506FilterMode(int id, float val) { return fmt::sprintf("%d: %s",id,mode); } -String macroLFOWaves(int id, float val) { +String macroLFOWaves(int id, float val, void* u) { switch (((int)val)&3) { case 0: return "Saw"; @@ -1355,7 +1359,7 @@ void FurnaceGUI::drawMacros(std::vector& macros) { if (i.isBitfield) { PlotBitfield("##IMacro",asInt,totalFit,0,i.bitfieldBits,i.max,ImVec2(availableWidth,(i.macro->open)?(i.height*dpiScale):(32.0f*dpiScale)),sizeof(float),doHighlight); } else { - PlotCustom("##IMacro",asFloat,totalFit,macroDragScroll,NULL,i.min+i.macro->vScroll,i.min+i.macro->vScroll+i.macro->vZoom,ImVec2(availableWidth,(i.macro->open)?(i.height*dpiScale):(32.0f*dpiScale)),sizeof(float),i.color,i.macro->len-macroDragScroll,i.hoverFunc,i.blockMode,i.macro->open?genericGuide:NULL,doHighlight); + PlotCustom("##IMacro",asFloat,totalFit,macroDragScroll,NULL,i.min+i.macro->vScroll,i.min+i.macro->vScroll+i.macro->vZoom,ImVec2(availableWidth,(i.macro->open)?(i.height*dpiScale):(32.0f*dpiScale)),sizeof(float),i.color,i.macro->len-macroDragScroll,i.hoverFunc,i.hoverFuncUser,i.blockMode,i.macro->open?genericGuide:NULL,doHighlight); } if (i.macro->open && (ImGui::IsItemClicked(ImGuiMouseButton_Left) || ImGui::IsItemClicked(ImGuiMouseButton_Right))) { macroDragStart=ImGui::GetItemRectMin(); @@ -3613,7 +3617,7 @@ void FurnaceGUI::drawInsEdit() { modTable[i]=ins->fds.modTable[i]; } ImVec2 modTableSize=ImVec2(ImGui::GetContentRegionAvail().x,96.0f*dpiScale); - PlotCustom("ModTable",modTable,32,0,NULL,-4,3,modTableSize,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,true); + PlotCustom("ModTable",modTable,32,0,NULL,-4,3,modTableSize,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,NULL,true); if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { macroDragStart=ImGui::GetItemRectMin(); macroDragAreaSize=modTableSize; @@ -4232,7 +4236,7 @@ void FurnaceGUI::drawInsEdit() { if (volMax>0) { macroList.push_back(FurnaceGUIMacroDesc(volumeLabel,&ins->std.volMacro,volMin,volMax,160,uiColors[GUI_COLOR_MACRO_VOLUME])); } - macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,NULL,NULL,false,NULL,0,true)); + macroList.push_back(FurnaceGUIMacroDesc("Arpeggio",&ins->std.arpMacro,-120,120,160,uiColors[GUI_COLOR_MACRO_PITCH],true,NULL,macroHoverNote,false,NULL,0,true,ins->std.arpMacro.val)); if (dutyMax>0) { if (ins->type==DIV_INS_MIKEY) { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,mikeyFeedbackBits)); diff --git a/src/gui/plot_nolerp.cpp b/src/gui/plot_nolerp.cpp index d802cbc5..b75bda4f 100644 --- a/src/gui/plot_nolerp.cpp +++ b/src/gui/plot_nolerp.cpp @@ -293,7 +293,7 @@ void PlotBitfield(const char* label, const int* values, int values_count, int va PlotBitfieldEx(label, &Plot_IntArrayGetter, (void*)&data, values_count, values_offset, overlay_text, bits, graph_size, values_highlight, highlightColor); } -int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_getter)(void* data, int idx), void* data, int values_count, int values_display_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 frame_size, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float), bool blockMode, std::string (*guideFunc)(float), const bool* values_highlight, ImVec4 highlightColor) +int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_getter)(void* data, int idx), void* data, int values_count, int values_display_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 frame_size, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float,void*), void* hoverFuncUser, bool blockMode, std::string (*guideFunc)(float), const bool* values_highlight, ImVec4 highlightColor) { ImGuiContext& g = *GImGui; ImGuiWindow* window = ImGui::GetCurrentWindow(); @@ -359,7 +359,7 @@ int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_gett const float v0 = values_getter(data, (v_idx) % values_count); const float v1 = values_getter(data, (v_idx + 1) % values_count); if (hoverFunc) { - std::string hoverText=hoverFunc(v_idx+values_display_offset,v0); + std::string hoverText=hoverFunc(v_idx+values_display_offset,v0,hoverFuncUser); if (!hoverText.empty()) { ImGui::SetTooltip("%s",hoverText.c_str()); } @@ -459,8 +459,8 @@ int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_gett return idx_hovered; } -void PlotCustom(const char* label, const float* values, int values_count, int values_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 graph_size, int stride, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float), bool blockMode, std::string (*guideFunc)(float), const bool* values_highlight, ImVec4 highlightColor) +void PlotCustom(const char* label, const float* values, int values_count, int values_offset, const char* overlay_text, float scale_min, float scale_max, ImVec2 graph_size, int stride, ImVec4 color, int highlight, std::string (*hoverFunc)(int,float,void*), void* hoverFuncUser, bool blockMode, std::string (*guideFunc)(float), const bool* values_highlight, ImVec4 highlightColor) { FurnacePlotArrayGetterData data(values, stride); - PlotCustomEx(ImGuiPlotType_Histogram, label, &Plot_ArrayGetter, (void*)&data, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size, color, highlight, hoverFunc, blockMode, guideFunc, values_highlight, highlightColor); -} \ No newline at end of file + PlotCustomEx(ImGuiPlotType_Histogram, label, &Plot_ArrayGetter, (void*)&data, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size, color, highlight, hoverFunc, hoverFuncUser, blockMode, guideFunc, values_highlight, highlightColor); +} diff --git a/src/gui/plot_nolerp.h b/src/gui/plot_nolerp.h index b353e6f8..48332b33 100644 --- a/src/gui/plot_nolerp.h +++ b/src/gui/plot_nolerp.h @@ -22,4 +22,4 @@ void PlotNoLerp(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float)); void PlotBitfield(const char* label, const int* values, int values_count, int values_offset = 0, const char** overlay_text = NULL, int bits = 8, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float), const bool* values_highlight = NULL, ImVec4 highlightColor = ImVec4(1.0f,1.0f,1.0f,1.0f)); -void PlotCustom(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float), ImVec4 fgColor = ImVec4(1.0f,1.0f,1.0f,1.0f), int highlight = 0, std::string (*hoverFunc)(int,float) = NULL, bool blockMode=false, std::string (*guideFunc)(float) = NULL, const bool* values_highlight = NULL, ImVec4 highlightColor = ImVec4(1.0f,1.0f,1.0f,1.0f)); \ No newline at end of file +void PlotCustom(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float), ImVec4 fgColor = ImVec4(1.0f,1.0f,1.0f,1.0f), int highlight = 0, std::string (*hoverFunc)(int,float,void*) = NULL, void* hoverFuncUser=NULL, bool blockMode=false, std::string (*guideFunc)(float) = NULL, const bool* values_highlight = NULL, ImVec4 highlightColor = ImVec4(1.0f,1.0f,1.0f,1.0f)); diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 1132b9ea..f26f4583 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -271,7 +271,7 @@ void FurnaceGUI::drawWaveEdit() { if (waveEditStyle) { PlotNoLerp("##Waveform",wavePreview,wave->len+1,0,NULL,0,wave->max,contentRegion); } else { - PlotCustom("##Waveform",wavePreview,wave->len,0,NULL,0,wave->max,contentRegion,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,true); + PlotCustom("##Waveform",wavePreview,wave->len,0,NULL,0,wave->max,contentRegion,sizeof(float),ImVec4(1.0f,1.0f,1.0f,1.0f),0,NULL,NULL,true); } if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { waveDragStart=ImGui::GetItemRectMin(); @@ -412,7 +412,7 @@ void FurnaceGUI::drawWaveEdit() { ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::PushID(i); - if (CWSliderInt("##WGMULT",&waveGenMult[i],0,15)) { + if (CWSliderInt("##WGMULT",&waveGenMult[i],1,16)) { doGenerateWave(); } ImGui::PopID(); From 0ac92209d034e7209085cf52114b75e68cb3dd43 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 18:53:20 -0500 Subject: [PATCH 523/580] GUI: even more mobile work --- CONTRIBUTING.md | 2 +- android/app/src/main/AndroidManifest.xml | 14 +- src/gui/dataList.cpp | 60 +++- src/gui/editControls.cpp | 18 +- src/gui/gui.cpp | 171 ++++++----- src/gui/gui.h | 10 +- src/gui/insEdit.cpp | 2 +- src/gui/pattern.cpp | 2 +- src/gui/piano.cpp | 347 ++++++++++++----------- src/gui/sampleEdit.cpp | 2 +- src/gui/waveEdit.cpp | 2 +- 11 files changed, 353 insertions(+), 277 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c6931ce8..853020f9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ bug fixes, improvements and several other things accepted. the coding style is described here: -- indentation: two spaces +- indentation: two spaces. **strictly** spaces. do NOT use tabs. - modified 1TBS style: - no spaces in function calls - spaces between arguments in function declarations diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 5f7a06ef..e28b7fd1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ @@ -83,13 +83,17 @@ - diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 0ef1f183..0519fca3 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -29,14 +29,20 @@ const char* sampleNote[12]={ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" }; -void FurnaceGUI::drawInsList() { +void FurnaceGUI::drawInsList(bool asChild) { if (nextWindow==GUI_WINDOW_INS_LIST) { insListOpen=true; ImGui::SetNextWindowFocus(); nextWindow=GUI_WINDOW_NOTHING; } - if (!insListOpen) return; - if (ImGui::Begin("Instruments",&insListOpen,globalWinFlags)) { + if (!insListOpen && !asChild) return; + bool began=false; + if (asChild) { + began=ImGui::BeginChild("Instruments"); + } else { + began=ImGui::Begin("Instruments",&insListOpen,globalWinFlags); + } + if (began) { if (settings.unifiedDataView) settings.horizontalDataView=0; if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) { if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_ADD); @@ -409,11 +415,15 @@ void FurnaceGUI::drawInsList() { ImGui::EndTable(); } } - if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_INS_LIST; - ImGui::End(); + if (asChild) { + ImGui::EndChild(); + } else { + if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_INS_LIST; + ImGui::End(); + } } -void FurnaceGUI::drawWaveList() { +void FurnaceGUI::drawWaveList(bool asChild) { if (nextWindow==GUI_WINDOW_WAVE_LIST) { waveListOpen=true; if (settings.unifiedDataView) { @@ -424,8 +434,14 @@ void FurnaceGUI::drawWaveList() { nextWindow=GUI_WINDOW_NOTHING; } if (settings.unifiedDataView) return; - if (!waveListOpen) return; - if (ImGui::Begin("Wavetables",&waveListOpen,globalWinFlags)) { + if (!waveListOpen && !asChild) return; + bool began=false; + if (asChild) { + began=ImGui::BeginChild("Wavetables"); + } else { + began=ImGui::Begin("Wavetables",&waveListOpen,globalWinFlags); + } + if (began) { if (ImGui::Button(ICON_FA_PLUS "##WaveAdd")) { doAction(GUI_ACTION_WAVE_LIST_ADD); } @@ -476,11 +492,15 @@ void FurnaceGUI::drawWaveList() { ImGui::EndTable(); } } - if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_WAVE_LIST; - ImGui::End(); + if (asChild) { + ImGui::EndChild(); + } else { + if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_WAVE_LIST; + ImGui::End(); + } } -void FurnaceGUI::drawSampleList() { +void FurnaceGUI::drawSampleList(bool asChild) { if (nextWindow==GUI_WINDOW_SAMPLE_LIST) { sampleListOpen=true; if (settings.unifiedDataView) { @@ -491,8 +511,14 @@ void FurnaceGUI::drawSampleList() { nextWindow=GUI_WINDOW_NOTHING; } if (settings.unifiedDataView) return; - if (!sampleListOpen) return; - if (ImGui::Begin("Samples",&sampleListOpen,globalWinFlags)) { + if (!sampleListOpen && !asChild) return; + bool began=false; + if (asChild) { + began=ImGui::BeginChild("Samples"); + } else { + began=ImGui::Begin("Samples",&sampleListOpen,globalWinFlags); + } + if (began) { if (ImGui::Button(ICON_FA_FILE "##SampleAdd")) { doAction(GUI_ACTION_SAMPLE_LIST_ADD); } @@ -548,8 +574,12 @@ void FurnaceGUI::drawSampleList() { } ImGui::Unindent(); } - if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SAMPLE_LIST; - ImGui::End(); + if (asChild) { + ImGui::EndChild(); + } else { + if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SAMPLE_LIST; + ImGui::End(); + } } void FurnaceGUI::actualWaveList() { diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index f7e40c39..ab3cc688 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -138,12 +138,22 @@ void FurnaceGUI::drawMobileControls() { ImGui::EndTable(); } - if (ImGui::Button("Create Ins")) { - doAction(GUI_ACTION_INS_LIST_ADD); + if (settings.unifiedDataView) { + drawInsList(true); + } else { + switch (mobScene) { + case GUI_SCENE_WAVETABLE: + drawWaveList(true); + break; + case GUI_SCENE_SAMPLE: + drawSampleList(true); + break; + default: + drawInsList(true); + break; + } } - ImGui::Text("Data list goes here..."); - if (ImGui::Button("New")) { mobileMenuOpen=false; //doAction(GUI_ACTION_NEW); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 9a49dd48..4c1fc5c4 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2544,12 +2544,15 @@ void FurnaceGUI::processPoint(SDL_Event& ev) { TouchPoint* point=NULL; FIND_POINT(point,ev.tfinger.fingerId); if (point!=NULL) { + float prevX=point->x; + float prevY=point->y; point->x=ev.tfinger.x*scrW*dpiScale; point->y=ev.tfinger.y*scrH*dpiScale; point->z=ev.tfinger.pressure; if (point->id==0) { ImGui::GetIO().AddMousePosEvent(point->x,point->y); + pointMotion(point->x,point->y,point->x-prevX,point->y-prevY); } } break; @@ -2570,6 +2573,7 @@ void FurnaceGUI::processPoint(SDL_Event& ev) { if (newPoint.id==0) { ImGui::GetIO().AddMousePosEvent(newPoint.x,newPoint.y); ImGui::GetIO().AddMouseButtonEvent(ImGuiMouseButton_Left,true); + pointDown(newPoint.x,newPoint.y,0); } break; } @@ -2577,13 +2581,15 @@ void FurnaceGUI::processPoint(SDL_Event& ev) { for (size_t i=0; irenderSamplesP(); + } else { + if (sampleSelStart>sampleSelEnd) { + sampleSelStart^=sampleSelEnd; + sampleSelEnd^=sampleSelStart; + sampleSelStart^=sampleSelEnd; + } + } + } + sampleDragActive=false; + if (selecting) { + if (!selectingFull) cursor=selEnd; + finishSelection(); + demandScrollX=true; + if (cursor.xCoarse==selStart.xCoarse && cursor.xFine==selStart.xFine && cursor.y==selStart.y && + cursor.xCoarse==selEnd.xCoarse && cursor.xFine==selEnd.xFine && cursor.y==selEnd.y) { + if (!settings.cursorMoveNoScroll) { + updateScroll(cursor.y); + } + } + } +} + +void FurnaceGUI::pointMotion(int x, int y, int xrel, int yrel) { + if (selecting) { + // detect whether we have to scroll + if (ypatWindowPos.y+patWindowSize.y-2.0f*dpiScale) { + addScroll(1); + } + } + if (macroDragActive || macroLoopDragActive || waveDragActive || sampleDragActive) { + int distance=fabs((double)xrel); + if (distance<1) distance=1; + float start=x-xrel; + float end=x; + float startY=y-yrel; + float endY=y; + for (int i=0; i<=distance; i++) { + float fraction=(float)i/(float)distance; + float x=start+(end-start)*fraction; + float y=startY+(endY-startY)*fraction; + processDrags(x,y); + } + } +} + // how many pixels should be visible at least at x/y dir #define OOB_PIXELS_SAFETY 25 @@ -2640,7 +2724,7 @@ bool FurnaceGUI::loop() { if (settings.powerSave) SDL_WaitEventTimeout(NULL,500); } eventTimeBegin=SDL_GetPerformanceCounter(); - bool updateWindow = false; + bool updateWindow=false; while (SDL_PollEvent(&ev)) { WAKE_UP; ImGui_ImplSDL2_ProcessEvent(&ev); @@ -2658,80 +2742,14 @@ bool FurnaceGUI::loop() { motionXrel*=dpiScale; motionYrel*=dpiScale; #endif - if (selecting) { - // detect whether we have to scroll - if (motionYpatWindowPos.y+patWindowSize.y-2.0f*dpiScale) { - addScroll(1); - } - } - if (macroDragActive || macroLoopDragActive || waveDragActive || sampleDragActive) { - int distance=fabs((double)motionXrel); - if (distance<1) distance=1; - float start=motionX-motionXrel; - float end=motionX; - float startY=motionY-motionYrel; - float endY=motionY; - for (int i=0; i<=distance; i++) { - float fraction=(float)i/(float)distance; - float x=start+(end-start)*fraction; - float y=startY+(endY-startY)*fraction; - processDrags(x,y); - } - } + pointMotion(motionX,motionY,motionXrel,motionYrel); break; } case SDL_MOUSEBUTTONUP: - if (macroDragActive || macroLoopDragActive || waveDragActive || (sampleDragActive && sampleDragMode)) { - MARK_MODIFIED; - } - if (macroDragActive && macroDragLineMode && !macroDragMouseMoved) { - displayMacroMenu=true; - } - macroDragActive=false; - macroDragBitMode=false; - macroDragInitialValue=false; - macroDragInitialValueSet=false; - macroDragLastX=-1; - macroDragLastY=-1; - macroLoopDragActive=false; - waveDragActive=false; - if (sampleDragActive) { - logD("stopping sample drag"); - if (sampleDragMode) { - e->renderSamplesP(); - } else { - if (sampleSelStart>sampleSelEnd) { - sampleSelStart^=sampleSelEnd; - sampleSelEnd^=sampleSelStart; - sampleSelStart^=sampleSelEnd; - } - } - } - sampleDragActive=false; - if (selecting) { - if (!selectingFull) cursor=selEnd; - finishSelection(); - demandScrollX=true; - if (cursor.xCoarse==selStart.xCoarse && cursor.xFine==selStart.xFine && cursor.y==selStart.y && - cursor.xCoarse==selEnd.xCoarse && cursor.xFine==selEnd.xFine && cursor.y==selEnd.y) { - if (!settings.cursorMoveNoScroll) { - updateScroll(cursor.y); - } - } - } + pointUp(ev.button.x,ev.button.y,ev.button.button); break; case SDL_MOUSEBUTTONDOWN: - aboutOpen=false; - if (bindSetActive) { - bindSetActive=false; - bindSetPending=false; - actionKeys[bindSetTarget]=bindSetPrevValue; - bindSetTarget=0; - bindSetPrevValue=0; - } + pointDown(ev.button.x,ev.button.y,ev.button.button); break; case SDL_MOUSEWHEEL: wheelX+=ev.wheel.x; @@ -3356,25 +3374,30 @@ bool FurnaceGUI::loop() { switch (mobScene) { case GUI_SCENE_PATTERN: patternOpen=true; + curWindow=GUI_WINDOW_PATTERN; drawPattern(); drawPiano(); break; case GUI_SCENE_ORDERS: ordersOpen=true; + curWindow=GUI_WINDOW_ORDERS; drawOrders(); break; case GUI_SCENE_INSTRUMENT: insEditOpen=true; + curWindow=GUI_WINDOW_INS_EDIT; drawInsEdit(); drawPiano(); break; case GUI_SCENE_WAVETABLE: waveEditOpen=true; + curWindow=GUI_WINDOW_WAVE_EDIT; drawWaveEdit(); drawPiano(); break; case GUI_SCENE_SAMPLE: sampleEditOpen=true; + curWindow=GUI_WINDOW_SAMPLE_EDIT; drawSampleEdit(); drawPiano(); break; @@ -4628,7 +4651,7 @@ bool FurnaceGUI::init() { portrait=(scrW0)?1:0),ImGuiTableFlags_BordersInnerV)) { + if (ImGui::BeginTable("PianoLayout",((pianoOptions && (!mobileUI || !portrait))?2:1),ImGuiTableFlags_BordersInnerV)) { int& off=(e->isPlaying() || pianoSharePosition)?pianoOffset:pianoOffsetEdit; int& oct=(e->isPlaying() || pianoSharePosition)?pianoOctaves:pianoOctavesEdit; bool view=(pianoView==2)?(!e->isPlaying()):pianoView; - if (pianoOptions) { + if (pianoOptions && (!mobileUI || !portrait)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); } - if (pianoInputPadMode==1 && cursor.xFine>0) { - ImGui::TableSetupColumn("c0s",ImGuiTableColumnFlags_WidthStretch,2.0f); - } ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,1.0f); ImGui::TableNextRow(); if (pianoOptions) { ImGui::TableNextColumn(); - float optionSizeY=ImGui::GetContentRegionAvail().y*0.5-ImGui::GetStyle().ItemSpacing.y; - ImVec2 optionSize=ImVec2(1.2f*optionSizeY,optionSizeY); + float optionSizeY=ImGui::GetContentRegionAvail().y*((mobileUI && portrait)?0.3:0.5)-ImGui::GetStyle().ItemSpacing.y; + ImVec2 optionSize=ImVec2((mobileUI && portrait)?((ImGui::GetContentRegionAvail().x-ImGui::GetStyle().ItemSpacing.x*5.0f)/6.0f):(1.2f*optionSizeY),optionSizeY); if (pianoOptionsSet) { if (ImGui::Button("OFF##PianoNOff",optionSize)) { if (edit) noteInput(0,100); @@ -126,6 +123,10 @@ void FurnaceGUI::drawPiano() { ImGui::EndPopup(); } + if (mobileUI && portrait) { + ImGui::SameLine(); + } + if (pianoOptionsSet) { if (ImGui::Button("REL##PianoNMRel",optionSize)) { if (edit) noteInput(0,102); @@ -152,6 +153,10 @@ void FurnaceGUI::drawPiano() { } } + if (mobileUI && portrait) { + ImGui::TableNextRow(); + } + ImGui::TableNextColumn(); if (pianoInputPadMode==1 && cursor.xFine>0) { ImVec2 buttonSize=ImGui::GetContentRegionAvail(); @@ -199,192 +204,192 @@ void FurnaceGUI::drawPiano() { ImGui::EndTable(); } - ImGui::TableNextColumn(); - } - ImGuiWindow* window=ImGui::GetCurrentWindow(); - ImVec2 size=ImGui::GetContentRegionAvail(); - ImDrawList* dl=ImGui::GetWindowDrawList(); + } else { + ImGuiWindow* window=ImGui::GetCurrentWindow(); + ImVec2 size=ImGui::GetContentRegionAvail(); + ImDrawList* dl=ImGui::GetWindowDrawList(); - ImVec2 minArea=window->DC.CursorPos; - ImVec2 maxArea=ImVec2( - minArea.x+size.x, - minArea.y+size.y - ); - ImRect rect=ImRect(minArea,maxArea); + ImVec2 minArea=window->DC.CursorPos; + ImVec2 maxArea=ImVec2( + minArea.x+size.x, + minArea.y+size.y + ); + ImRect rect=ImRect(minArea,maxArea); - // render piano - //ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); - if (ImGui::ItemAdd(rect,ImGui::GetID("pianoDisplay"))) { - ImGui::ItemHoverable(rect,ImGui::GetID("pianoDisplay")); - if (view) { - int notes=oct*12; - // evaluate input - for (TouchPoint& i: activePoints) { - if (rect.Contains(ImVec2(i.x,i.y))) { - int note=(((i.x-rect.Min.x)/(rect.Max.x-rect.Min.x))*notes)+12*off; - if (note<0) continue; - if (note>=180) continue; - pianoKeyPressed[note]=true; - } - } - - for (int i=0; i=180) continue; - float pkh=pianoKeyHit[note]; - ImVec4 color=isTopKey[i%12]?uiColors[GUI_COLOR_PIANO_KEY_TOP]:uiColors[GUI_COLOR_PIANO_KEY_BOTTOM]; - if (pianoKeyPressed[note]) { - color=isTopKey[i%12]?uiColors[GUI_COLOR_PIANO_KEY_TOP_ACTIVE]:uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_ACTIVE]; - } else { - ImVec4 colorHit=isTopKey[i%12]?uiColors[GUI_COLOR_PIANO_KEY_TOP_HIT]:uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_HIT]; - color.x+=(colorHit.x-color.x)*pkh; - color.y+=(colorHit.y-color.y)*pkh; - color.z+=(colorHit.z-color.z)*pkh; - color.w+=(colorHit.w-color.w)*pkh; - } - ImVec2 p0=ImLerp(rect.Min,rect.Max,ImVec2((float)i/notes,0.0f)); - ImVec2 p1=ImLerp(rect.Min,rect.Max,ImVec2((float)(i+1)/notes,1.0f)); - p1.x-=dpiScale; - dl->AddRectFilled(p0,p1,ImGui::ColorConvertFloat4ToU32(color)); - if ((i%12)==0) { - String label=fmt::sprintf("%d",(note-60)/12); - ImVec2 pText=ImLerp(p0,p1,ImVec2(0.5f,1.0f)); - ImVec2 labelSize=ImGui::CalcTextSize(label.c_str()); - pText.x-=labelSize.x*0.5f; - pText.y-=labelSize.y+ImGui::GetStyle().ItemSpacing.y; - dl->AddText(pText,0xff404040,label.c_str()); - } - } - } else { - int bottomNotes=7*oct; - // evaluate input - for (TouchPoint& i: activePoints) { - if (rect.Contains(ImVec2(i.x,i.y))) { - // top - int o=((i.x-rect.Min.x)/(rect.Max.x-rect.Min.x))*oct; - ImVec2 op0=ImLerp(rect.Min,rect.Max,ImVec2((float)o/oct,0.0f)); - ImVec2 op1=ImLerp(rect.Min,rect.Max,ImVec2((float)(o+1)/oct,1.0f)); - bool foundTopKey=false; - - for (int j=0; j<5; j++) { - int note=topKeyNotes[j]+12*(o+off); + // render piano + //ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); + if (ImGui::ItemAdd(rect,ImGui::GetID("pianoDisplay"))) { + ImGui::ItemHoverable(rect,ImGui::GetID("pianoDisplay")); + if (view) { + int notes=oct*12; + // evaluate input + for (TouchPoint& i: activePoints) { + if (rect.Contains(ImVec2(i.x,i.y))) { + int note=(((i.x-rect.Min.x)/(rect.Max.x-rect.Min.x))*notes)+12*off; if (note<0) continue; if (note>=180) continue; - ImRect keyRect=ImRect( - ImLerp(op0,op1,ImVec2(topKeyStarts[j]-0.05f,0.0f)), - ImLerp(op0,op1,ImVec2(topKeyStarts[j]+0.05f,0.64f)) - ); - if (keyRect.Contains(ImVec2(i.x,i.y))) { - pianoKeyPressed[note]=true; - foundTopKey=true; - break; - } + pianoKeyPressed[note]=true; } - if (foundTopKey) continue; - - // bottom - int n=((i.x-rect.Min.x)/(rect.Max.x-rect.Min.x))*bottomNotes; - int note=bottomKeyNotes[n%7]+12*((n/7)+off); - if (note<0) continue; - if (note>=180) continue; - pianoKeyPressed[note]=true; - } - } - - for (int i=0; i=180) continue; - - float pkh=pianoKeyHit[note]; - ImVec4 color=uiColors[GUI_COLOR_PIANO_KEY_BOTTOM]; - if (pianoKeyPressed[note]) { - color=uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_ACTIVE]; - } else { - ImVec4 colorHit=uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_HIT]; - color.x+=(colorHit.x-color.x)*pkh; - color.y+=(colorHit.y-color.y)*pkh; - color.z+=(colorHit.z-color.z)*pkh; - color.w+=(colorHit.w-color.w)*pkh; } - ImVec2 p0=ImLerp(rect.Min,rect.Max,ImVec2((float)i/bottomNotes,0.0f)); - ImVec2 p1=ImLerp(rect.Min,rect.Max,ImVec2((float)(i+1)/bottomNotes,1.0f)); - p1.x-=dpiScale; - - dl->AddRectFilled(p0,p1,ImGui::ColorConvertFloat4ToU32(color)); - if ((i%7)==0) { - String label=fmt::sprintf("%d",(note-60)/12); - ImVec2 pText=ImLerp(p0,p1,ImVec2(0.5f,1.0f)); - ImVec2 labelSize=ImGui::CalcTextSize(label.c_str()); - pText.x-=labelSize.x*0.5f; - pText.y-=labelSize.y+ImGui::GetStyle().ItemSpacing.y; - dl->AddText(pText,0xff404040,label.c_str()); - } - } - - for (int i=0; i=180) continue; float pkh=pianoKeyHit[note]; - ImVec4 color=uiColors[GUI_COLOR_PIANO_KEY_TOP]; + ImVec4 color=isTopKey[i%12]?uiColors[GUI_COLOR_PIANO_KEY_TOP]:uiColors[GUI_COLOR_PIANO_KEY_BOTTOM]; if (pianoKeyPressed[note]) { - color=uiColors[GUI_COLOR_PIANO_KEY_TOP_ACTIVE]; + color=isTopKey[i%12]?uiColors[GUI_COLOR_PIANO_KEY_TOP_ACTIVE]:uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_ACTIVE]; } else { - ImVec4 colorHit=uiColors[GUI_COLOR_PIANO_KEY_TOP_HIT]; + ImVec4 colorHit=isTopKey[i%12]?uiColors[GUI_COLOR_PIANO_KEY_TOP_HIT]:uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_HIT]; color.x+=(colorHit.x-color.x)*pkh; color.y+=(colorHit.y-color.y)*pkh; color.z+=(colorHit.z-color.z)*pkh; color.w+=(colorHit.w-color.w)*pkh; } - ImVec2 p0=ImLerp(op0,op1,ImVec2(topKeyStarts[j]-0.05f,0.0f)); - ImVec2 p1=ImLerp(op0,op1,ImVec2(topKeyStarts[j]+0.05f,0.64f)); - dl->AddRectFilled(p0,p1,ImGui::GetColorU32(uiColors[GUI_COLOR_PIANO_BACKGROUND])); - p0.x+=dpiScale; + ImVec2 p0=ImLerp(rect.Min,rect.Max,ImVec2((float)i/notes,0.0f)); + ImVec2 p1=ImLerp(rect.Min,rect.Max,ImVec2((float)(i+1)/notes,1.0f)); p1.x-=dpiScale; - p1.y-=dpiScale; dl->AddRectFilled(p0,p1,ImGui::ColorConvertFloat4ToU32(color)); + if ((i%12)==0) { + String label=fmt::sprintf("%d",(note-60)/12); + ImVec2 pText=ImLerp(p0,p1,ImVec2(0.5f,1.0f)); + ImVec2 labelSize=ImGui::CalcTextSize(label.c_str()); + pText.x-=labelSize.x*0.5f; + pText.y-=labelSize.y+ImGui::GetStyle().ItemSpacing.y; + dl->AddText(pText,0xff404040,label.c_str()); + } + } + } else { + int bottomNotes=7*oct; + // evaluate input + for (TouchPoint& i: activePoints) { + if (rect.Contains(ImVec2(i.x,i.y))) { + // top + int o=((i.x-rect.Min.x)/(rect.Max.x-rect.Min.x))*oct; + ImVec2 op0=ImLerp(rect.Min,rect.Max,ImVec2((float)o/oct,0.0f)); + ImVec2 op1=ImLerp(rect.Min,rect.Max,ImVec2((float)(o+1)/oct,1.0f)); + bool foundTopKey=false; + + for (int j=0; j<5; j++) { + int note=topKeyNotes[j]+12*(o+off); + if (note<0) continue; + if (note>=180) continue; + ImRect keyRect=ImRect( + ImLerp(op0,op1,ImVec2(topKeyStarts[j]-0.05f,0.0f)), + ImLerp(op0,op1,ImVec2(topKeyStarts[j]+0.05f,0.64f)) + ); + if (keyRect.Contains(ImVec2(i.x,i.y))) { + pianoKeyPressed[note]=true; + foundTopKey=true; + break; + } + } + if (foundTopKey) continue; + + // bottom + int n=((i.x-rect.Min.x)/(rect.Max.x-rect.Min.x))*bottomNotes; + int note=bottomKeyNotes[n%7]+12*((n/7)+off); + if (note<0) continue; + if (note>=180) continue; + pianoKeyPressed[note]=true; + } + } + + for (int i=0; i=180) continue; + + float pkh=pianoKeyHit[note]; + ImVec4 color=uiColors[GUI_COLOR_PIANO_KEY_BOTTOM]; + if (pianoKeyPressed[note]) { + color=uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_ACTIVE]; + } else { + ImVec4 colorHit=uiColors[GUI_COLOR_PIANO_KEY_BOTTOM_HIT]; + color.x+=(colorHit.x-color.x)*pkh; + color.y+=(colorHit.y-color.y)*pkh; + color.z+=(colorHit.z-color.z)*pkh; + color.w+=(colorHit.w-color.w)*pkh; + } + + ImVec2 p0=ImLerp(rect.Min,rect.Max,ImVec2((float)i/bottomNotes,0.0f)); + ImVec2 p1=ImLerp(rect.Min,rect.Max,ImVec2((float)(i+1)/bottomNotes,1.0f)); + p1.x-=dpiScale; + + dl->AddRectFilled(p0,p1,ImGui::ColorConvertFloat4ToU32(color)); + if ((i%7)==0) { + String label=fmt::sprintf("%d",(note-60)/12); + ImVec2 pText=ImLerp(p0,p1,ImVec2(0.5f,1.0f)); + ImVec2 labelSize=ImGui::CalcTextSize(label.c_str()); + pText.x-=labelSize.x*0.5f; + pText.y-=labelSize.y+ImGui::GetStyle().ItemSpacing.y; + dl->AddText(pText,0xff404040,label.c_str()); + } + } + + for (int i=0; i=180) continue; + float pkh=pianoKeyHit[note]; + ImVec4 color=uiColors[GUI_COLOR_PIANO_KEY_TOP]; + if (pianoKeyPressed[note]) { + color=uiColors[GUI_COLOR_PIANO_KEY_TOP_ACTIVE]; + } else { + ImVec4 colorHit=uiColors[GUI_COLOR_PIANO_KEY_TOP_HIT]; + color.x+=(colorHit.x-color.x)*pkh; + color.y+=(colorHit.y-color.y)*pkh; + color.z+=(colorHit.z-color.z)*pkh; + color.w+=(colorHit.w-color.w)*pkh; + } + ImVec2 p0=ImLerp(op0,op1,ImVec2(topKeyStarts[j]-0.05f,0.0f)); + ImVec2 p1=ImLerp(op0,op1,ImVec2(topKeyStarts[j]+0.05f,0.64f)); + dl->AddRectFilled(p0,p1,ImGui::GetColorU32(uiColors[GUI_COLOR_PIANO_BACKGROUND])); + p0.x+=dpiScale; + p1.x-=dpiScale; + p1.y-=dpiScale; + dl->AddRectFilled(p0,p1,ImGui::ColorConvertFloat4ToU32(color)); + } + } + } + + const float reduction=ImGui::GetIO().DeltaTime*60.0f*0.12; + for (int i=0; i<180; i++) { + pianoKeyHit[i]-=reduction; + if (pianoKeyHit[i]<0) pianoKeyHit[i]=0; + } + } + + if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { + pianoOptions=!pianoOptions; + } + + // first check released keys + for (int i=0; i<180; i++) { + int note=i-60; + if (!pianoKeyPressed[i]) { + if (pianoKeyPressed[i]!=oldPianoKeyPressed[i]) { + e->synchronized([this,note]() { + e->autoNoteOff(-1,note); + }); } } } - - const float reduction=ImGui::GetIO().DeltaTime*60.0f*0.12; + // then pressed ones for (int i=0; i<180; i++) { - pianoKeyHit[i]-=reduction; - if (pianoKeyHit[i]<0) pianoKeyHit[i]=0; - } - } - - if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { - pianoOptions=!pianoOptions; - } - - // first check released keys - for (int i=0; i<180; i++) { - int note=i-60; - if (!pianoKeyPressed[i]) { - if (pianoKeyPressed[i]!=oldPianoKeyPressed[i]) { - e->synchronized([this,note]() { - e->autoNoteOff(-1,note); - }); - } - } - } - // then pressed ones - for (int i=0; i<180; i++) { - int note=i-60; - if (pianoKeyPressed[i]) { - if (pianoKeyPressed[i]!=oldPianoKeyPressed[i]) { - e->synchronized([this,note]() { - e->autoNoteOn(-1,curIns,note); - }); - if (edit) noteInput(note,0); + int note=i-60; + if (pianoKeyPressed[i]) { + if (pianoKeyPressed[i]!=oldPianoKeyPressed[i]) { + e->synchronized([this,note]() { + e->autoNoteOn(-1,curIns,note); + }); + if (edit) noteInput(note,0); + } } } } diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 18579e71..76f654c1 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -37,7 +37,7 @@ void FurnaceGUI::drawSampleEdit() { if (!sampleEditOpen) return; if (mobileUI) { patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); - patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.3*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.4*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); ImGui::SetNextWindowPos(patWindowPos); ImGui::SetNextWindowSize(patWindowSize); } diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index f26f4583..c46e2ec0 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -166,7 +166,7 @@ void FurnaceGUI::drawWaveEdit() { float wavePreview[257]; if (mobileUI) { patWindowPos=(portrait?ImVec2(0.0f,(mobileMenuPos*-0.65*scrH*dpiScale)):ImVec2((0.16*scrH*dpiScale)+0.5*scrW*dpiScale*mobileMenuPos,0.0f)); - patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.3*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); + patWindowSize=(portrait?ImVec2(scrW*dpiScale,scrH*dpiScale-(0.16*scrW*dpiScale)-(pianoOpen?(0.4*scrW*dpiScale):0.0f)):ImVec2(scrW*dpiScale-(0.16*scrH*dpiScale),scrH*dpiScale-(pianoOpen?(0.3*scrH*dpiScale):0.0f))); ImGui::SetNextWindowPos(patWindowPos); ImGui::SetNextWindowSize(patWindowSize); } else { From f2e519d71e80e8057ce6569d4874aef079c672a2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 19:23:53 -0500 Subject: [PATCH 524/580] GUI: add an option to exit mobile UI --- src/gui/editControls.cpp | 172 ++++++++++++++++++++++++--------------- src/gui/gui.cpp | 17 ++-- src/gui/gui.h | 6 +- 3 files changed, 121 insertions(+), 74 deletions(-) diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index ab3cc688..9d6c0d00 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -135,89 +135,127 @@ void FurnaceGUI::drawMobileControls() { if (ImGui::Button("Sample",buttonSize)) { mobScene=GUI_SCENE_SAMPLE; } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::Button("Song",buttonSize)) { + mobScene=GUI_SCENE_SONG; + } + ImGui::TableNextColumn(); + if (ImGui::Button("Channels",buttonSize)) { + mobScene=GUI_SCENE_CHANNELS; + } + ImGui::TableNextColumn(); + if (ImGui::Button("Chips",buttonSize)) { + mobScene=GUI_SCENE_CHIPS; + } + ImGui::TableNextColumn(); + if (ImGui::Button("Other",buttonSize)) { + mobScene=GUI_SCENE_OTHER; + } ImGui::EndTable(); } + ImGui::Separator(); + if (settings.unifiedDataView) { drawInsList(true); } else { switch (mobScene) { + case GUI_SCENE_PATTERN: + case GUI_SCENE_ORDERS: + case GUI_SCENE_INSTRUMENT: + drawInsList(true); + break; case GUI_SCENE_WAVETABLE: drawWaveList(true); break; case GUI_SCENE_SAMPLE: drawSampleList(true); break; - default: - drawInsList(true); + case GUI_SCENE_SONG: { + if (ImGui::Button("New")) { + mobileMenuOpen=false; + //doAction(GUI_ACTION_NEW); + if (modified) { + showWarning("Unsaved changes! Save changes before creating a new song?",GUI_WARN_NEW); + } else { + displayNew=true; + } + } + ImGui::SameLine(); + if (ImGui::Button("Open")) { + mobileMenuOpen=false; + doAction(GUI_ACTION_OPEN); + } + ImGui::SameLine(); + if (ImGui::Button("Save")) { + mobileMenuOpen=false; + doAction(GUI_ACTION_SAVE); + } + ImGui::SameLine(); + if (ImGui::Button("Save as...")) { + mobileMenuOpen=false; + doAction(GUI_ACTION_SAVE_AS); + } + + ImGui::Button("1.1+ .dmf"); + ImGui::SameLine(); + ImGui::Button("Legacy .dmf"); + ImGui::SameLine(); + ImGui::Button("Export Audio"); + ImGui::SameLine(); + ImGui::Button("Export VGM"); + + ImGui::Button("CmdStream"); + + ImGui::Separator(); + + ImGui::Text("Song info here..."); break; + } + case GUI_SCENE_CHANNELS: + ImGui::Text("Channels here..."); + break; + case GUI_SCENE_CHIPS: + ImGui::Text("Chips here..."); + break; + case GUI_SCENE_OTHER: { + if (ImGui::Button("Osc")) { + oscOpen=!oscOpen; + } + ImGui::SameLine(); + if (ImGui::Button("ChanOsc")) { + chanOscOpen=!chanOscOpen; + } + ImGui::SameLine(); + if (ImGui::Button("RegView")) { + regViewOpen=!regViewOpen; + } + ImGui::SameLine(); + if (ImGui::Button("Stats")) { + statsOpen=!statsOpen; + } + + ImGui::Separator(); + + ImGui::Button("Panic"); + ImGui::SameLine(); + if (ImGui::Button("Settings")) { + mobileMenuOpen=false; + } + ImGui::SameLine(); + if (ImGui::Button("About")) { + mobileMenuOpen=false; + mobileMenuPos=0.0f; + aboutOpen=true; + } + if (ImGui::Button("Switch to Desktop Mode")) { + toggleMobileUI(!mobileUI); + } + break; + } } } - - if (ImGui::Button("New")) { - mobileMenuOpen=false; - //doAction(GUI_ACTION_NEW); - if (modified) { - showWarning("Unsaved changes! Save changes before creating a new song?",GUI_WARN_NEW); - } else { - displayNew=true; - } - } - ImGui::SameLine(); - if (ImGui::Button("Open")) { - mobileMenuOpen=false; - doAction(GUI_ACTION_OPEN); - } - ImGui::SameLine(); - if (ImGui::Button("Save")) { - mobileMenuOpen=false; - doAction(GUI_ACTION_SAVE); - } - ImGui::SameLine(); - if (ImGui::Button("Save as...")) { - mobileMenuOpen=false; - doAction(GUI_ACTION_SAVE_AS); - } - - ImGui::Button("1.1+ .dmf"); - ImGui::SameLine(); - ImGui::Button("Legacy .dmf"); - ImGui::SameLine(); - ImGui::Button("Export Audio"); - ImGui::SameLine(); - ImGui::Button("Export VGM"); - - ImGui::Button("CmdStream"); - ImGui::SameLine(); - ImGui::Button("Panic"); - ImGui::SameLine(); - if (ImGui::Button("Settings")) { - mobileMenuOpen=false; - } - ImGui::SameLine(); - if (ImGui::Button("About")) { - mobileMenuOpen=false; - mobileMenuPos=0.0f; - aboutOpen=true; - } - - ImGui::Separator(); - - if (ImGui::Button("Osc")) { - oscOpen=!oscOpen; - } - ImGui::SameLine(); - if (ImGui::Button("ChanOsc")) { - chanOscOpen=!chanOscOpen; - } - ImGui::SameLine(); - if (ImGui::Button("RegView")) { - regViewOpen=!regViewOpen; - } - ImGui::SameLine(); - if (ImGui::Button("Stats")) { - statsOpen=!statsOpen; - } } ImGui::End(); } diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4c1fc5c4..65e982c7 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3245,6 +3245,11 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("reset layout")) { showWarning("Are you sure you want to reset the workspace layout?",GUI_WARN_RESET_LAYOUT); } +#ifdef IS_MOBILE + if (ImGui::MenuItem("switch to mobile view")) { + toggleMobileUI(!mobileUI); + } +#endif if (ImGui::MenuItem("settings...",BIND_FOR(GUI_ACTION_WINDOW_SETTINGS))) { syncSettings(); settingsOpen=true; @@ -3372,12 +3377,6 @@ bool FurnaceGUI::loop() { pianoOpen=true; drawMobileControls(); switch (mobScene) { - case GUI_SCENE_PATTERN: - patternOpen=true; - curWindow=GUI_WINDOW_PATTERN; - drawPattern(); - drawPiano(); - break; case GUI_SCENE_ORDERS: ordersOpen=true; curWindow=GUI_WINDOW_ORDERS; @@ -3401,6 +3400,12 @@ bool FurnaceGUI::loop() { drawSampleEdit(); drawPiano(); break; + default: + patternOpen=true; + curWindow=GUI_WINDOW_PATTERN; + drawPattern(); + drawPiano(); + break; } } else { globalWinFlags=0; diff --git a/src/gui/gui.h b/src/gui/gui.h index 380141e3..180013df 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -265,7 +265,11 @@ enum FurnaceGUIMobileScenes { GUI_SCENE_ORDERS, GUI_SCENE_INSTRUMENT, GUI_SCENE_WAVETABLE, - GUI_SCENE_SAMPLE + GUI_SCENE_SAMPLE, + GUI_SCENE_SONG, + GUI_SCENE_CHANNELS, + GUI_SCENE_CHIPS, + GUI_SCENE_OTHER, }; enum FurnaceGUIFileDialogs { From ce4c0b4291159ccd44640c8e188fc8e978b1d55a Mon Sep 17 00:00:00 2001 From: Waverider <33787286+liaminventions@users.noreply.github.com> Date: Fri, 9 Sep 2022 20:28:06 -0400 Subject: [PATCH 525/580] New Demo Music 010 Editor: https://youtu.be/l-7PsOxffYE her11 VERA edit: https://youtu.be/SDpDUQ2A6k0 chaostune: https://youtu.be/coJDJDpAG7M --- demos/Cafe - 010 Editor 2.0crk.fur | Bin 0 -> 13323 bytes demos/ChaosTune.fur | Bin 0 -> 3048 bytes demos/her11_veraedit.fur | Bin 0 -> 8604 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Cafe - 010 Editor 2.0crk.fur create mode 100644 demos/ChaosTune.fur create mode 100644 demos/her11_veraedit.fur diff --git a/demos/Cafe - 010 Editor 2.0crk.fur b/demos/Cafe - 010 Editor 2.0crk.fur new file mode 100644 index 0000000000000000000000000000000000000000..339e7238f3795d7ed3c013bed685eaf0d67b7ffe GIT binary patch literal 13323 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 sl9A&C*r;1yEP7+A7jTVP5=M^ literal 0 HcmV?d00001 diff --git a/demos/her11_veraedit.fur b/demos/her11_veraedit.fur new file mode 100644 index 0000000000000000000000000000000000000000..1cfabac199e79e68e92f72f3e175116dfc6c582e GIT binary patch literal 8604 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 Date: Fri, 9 Sep 2022 20:28:27 -0700 Subject: [PATCH 526/580] Demo song request (Equinox Intro) --- demos/GEN Equinox Intro.fur | Bin 0 -> 51233 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/GEN Equinox Intro.fur diff --git a/demos/GEN Equinox Intro.fur b/demos/GEN Equinox Intro.fur new file mode 100644 index 0000000000000000000000000000000000000000..04a5bb051a29944822656c90aabe18dc44b29caf GIT binary patch literal 51233 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 literal 0 HcmV?d00001 From fcefbb490916f5b5dda36a545d685fa3e36c7f07 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 23:21:45 -0500 Subject: [PATCH 527/580] TIA: update to latest Stella core --- CMakeLists.txt | 3 +- src/engine/platform/sound/tia/Audio.cpp | 137 +++++++ src/engine/platform/sound/tia/Audio.h | 71 ++++ .../platform/sound/tia/AudioChannel.cpp | 140 +++++++ src/engine/platform/sound/tia/AudioChannel.h | 61 +++ src/engine/platform/sound/tia/TIASnd.cpp | 377 ------------------ src/engine/platform/sound/tia/TIASnd.h | 186 --------- src/engine/platform/sound/tia/TIATables.h | 219 ---------- src/engine/platform/tia.cpp | 14 +- src/engine/platform/tia.h | 4 +- 10 files changed, 421 insertions(+), 791 deletions(-) create mode 100644 src/engine/platform/sound/tia/Audio.cpp create mode 100644 src/engine/platform/sound/tia/Audio.h create mode 100644 src/engine/platform/sound/tia/AudioChannel.cpp create mode 100644 src/engine/platform/sound/tia/AudioChannel.h delete mode 100644 src/engine/platform/sound/tia/TIASnd.cpp delete mode 100644 src/engine/platform/sound/tia/TIASnd.h delete mode 100644 src/engine/platform/sound/tia/TIATables.h diff --git a/CMakeLists.txt b/CMakeLists.txt index ff7db42e..6e213dcb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -386,7 +386,8 @@ src/engine/platform/sound/c64_fp/WaveformCalculator.cpp src/engine/platform/sound/c64_fp/WaveformGenerator.cpp src/engine/platform/sound/c64_fp/resample/SincResampler.cpp -src/engine/platform/sound/tia/TIASnd.cpp +src/engine/platform/sound/tia/AudioChannel.cpp +src/engine/platform/sound/tia/Audio.cpp src/engine/platform/sound/ymfm/ymfm_adpcm.cpp src/engine/platform/sound/ymfm/ymfm_opm.cpp diff --git a/src/engine/platform/sound/tia/Audio.cpp b/src/engine/platform/sound/tia/Audio.cpp new file mode 100644 index 00000000..a90aee5a --- /dev/null +++ b/src/engine/platform/sound/tia/Audio.cpp @@ -0,0 +1,137 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#define _USE_MATH_DEFINES +#include "Audio.h" + +#include + +namespace { + constexpr double R_MAX = 30.; + constexpr double R = 1.; + + short mixingTableEntry(unsigned char v, unsigned char vMax) + { + return static_cast( + floor(0x7fff * double(v) / double(vMax) * (R_MAX + R * double(vMax)) / (R_MAX + R * double(v))) + ); + } +} + +namespace TIA { + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Audio::Audio() +{ + for (unsigned char i = 0; i <= 0x1e; ++i) myMixingTableSum[i] = mixingTableEntry(i, 0x1e); + for (unsigned char i = 0; i <= 0x0f; ++i) myMixingTableIndividual[i] = mixingTableEntry(i, 0x0f); + + reset(false); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Audio::reset(bool st) +{ + myCounter = 0; + mySampleIndex = 0; + stereo = st; + + myCurrentSample[0]=0; + myCurrentSample[1]=0; + + myChannel0.reset(); + myChannel1.reset(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Audio::tick() +{ + switch (myCounter) { + case 9: + case 81: + myChannel0.phase0(); + myChannel1.phase0(); + + break; + + case 37: + case 149: + phase1(); + break; + } + + if (++myCounter == 228) myCounter = 0; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Audio::write(unsigned char addr, unsigned char val) { + switch (addr&0x3f) { + case 0x15: + myChannel0.audc(val); + break; + case 0x16: + myChannel1.audc(val); + break; + case 0x17: + myChannel0.audf(val); + break; + case 0x18: + myChannel1.audf(val); + break; + case 0x19: + myChannel0.audv(val); + break; + case 0x1a: + myChannel1.audv(val); + break; + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Audio::phase1() +{ + unsigned char sample0 = myChannel0.phase1(); + unsigned char sample1 = myChannel1.phase1(); + + addSample(sample0, sample1); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Audio::addSample(unsigned char sample0, unsigned char sample1) +{ + if(stereo) { + myCurrentSample[0] = myMixingTableIndividual[sample0]; + myCurrentSample[1] = myMixingTableIndividual[sample1]; + } + else { + myCurrentSample[0] = myMixingTableSum[sample0 + sample1]; + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +AudioChannel& Audio::channel0() +{ + return myChannel0; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +AudioChannel& Audio::channel1() +{ + return myChannel1; +} + +} \ No newline at end of file diff --git a/src/engine/platform/sound/tia/Audio.h b/src/engine/platform/sound/tia/Audio.h new file mode 100644 index 00000000..ff388807 --- /dev/null +++ b/src/engine/platform/sound/tia/Audio.h @@ -0,0 +1,71 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#ifndef TIA_AUDIO_HXX +#define TIA_AUDIO_HXX + +#include "AudioChannel.h" +#include + +namespace TIA { + class Audio + { + public: + Audio(); + + void reset(bool stereo); + + void tick(); + + void write(unsigned char addr, unsigned char val); + + AudioChannel& channel0(); + + AudioChannel& channel1(); + + short myCurrentSample[2]; + + private: + void phase1(); + void addSample(unsigned char sample0, unsigned char sample1); + + private: + unsigned char myCounter{0}; + + AudioChannel myChannel0; + AudioChannel myChannel1; + + bool stereo; + + std::array myMixingTableSum; + std::array myMixingTableIndividual; + + unsigned int mySampleIndex{0}; + #ifdef GUI_SUPPORT + bool myRewindMode{false}; + mutable ByteArray mySamples; + #endif + + private: + Audio(const Audio&) = delete; + Audio(Audio&&) = delete; + Audio& operator=(const Audio&) = delete; + Audio& operator=(Audio&&) = delete; + }; +} + +#endif // TIA_AUDIO_HXX diff --git a/src/engine/platform/sound/tia/AudioChannel.cpp b/src/engine/platform/sound/tia/AudioChannel.cpp new file mode 100644 index 00000000..c780c172 --- /dev/null +++ b/src/engine/platform/sound/tia/AudioChannel.cpp @@ -0,0 +1,140 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#include "AudioChannel.h" + +namespace TIA { + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void AudioChannel::reset() +{ + myAudc = myAudv = myAudf = 0; + myClockEnable = myNoiseFeedback = myNoiseCounterBit4 = myPulseCounterHold = false; + myDivCounter = myPulseCounter = myNoiseCounter = 0; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void AudioChannel::phase0() +{ + if (myClockEnable) { + myNoiseCounterBit4 = myNoiseCounter & 0x01; + + switch (myAudc & 0x03) { + case 0x00: + case 0x01: + myPulseCounterHold = false; + break; + + case 0x02: + myPulseCounterHold = (myNoiseCounter & 0x1e) != 0x02; + break; + + case 0x03: + myPulseCounterHold = !myNoiseCounterBit4; + break; + } + + switch (myAudc & 0x03) { + case 0x00: + myNoiseFeedback = + ((myPulseCounter ^ myNoiseCounter) & 0x01) || + !(myNoiseCounter || (myPulseCounter != 0x0a)) || + !(myAudc & 0x0c); + + break; + + default: + myNoiseFeedback = + (((myNoiseCounter & 0x04) ? 1 : 0) ^ (myNoiseCounter & 0x01)) || + myNoiseCounter == 0; + + break; + } + } + + myClockEnable = myDivCounter == myAudf; + + if (myDivCounter == myAudf || myDivCounter == 0x1f) { + myDivCounter = 0; + } else { + ++myDivCounter; + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +unsigned char AudioChannel::phase1() +{ + if (myClockEnable) { + bool pulseFeedback = false; + switch (myAudc >> 2) { + case 0x00: + pulseFeedback = + (((myPulseCounter & 0x02) ? 1 : 0) ^ (myPulseCounter & 0x01)) && + (myPulseCounter != 0x0a) && + (myAudc & 0x03); + + break; + + case 0x01: + pulseFeedback = !(myPulseCounter & 0x08); + break; + + case 0x02: + pulseFeedback = !myNoiseCounterBit4; + break; + + case 0x03: + pulseFeedback = !((myPulseCounter & 0x02) || !(myPulseCounter & 0x0e)); + break; + } + + myNoiseCounter >>= 1; + if (myNoiseFeedback) { + myNoiseCounter |= 0x10; + } + + if (!myPulseCounterHold) { + myPulseCounter = ~(myPulseCounter >> 1) & 0x07; + + if (pulseFeedback) { + myPulseCounter |= 0x08; + } + } + } + + return (myPulseCounter & 0x01) * myAudv; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void AudioChannel::audc(unsigned char value) +{ + myAudc = value & 0x0f; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void AudioChannel::audv(unsigned char value) +{ + myAudv = value & 0x0f; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void AudioChannel::audf(unsigned char value) +{ + myAudf = value & 0x1f; +} + +} \ No newline at end of file diff --git a/src/engine/platform/sound/tia/AudioChannel.h b/src/engine/platform/sound/tia/AudioChannel.h new file mode 100644 index 00000000..942e101a --- /dev/null +++ b/src/engine/platform/sound/tia/AudioChannel.h @@ -0,0 +1,61 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#ifndef TIA_AUDIO_CHANNEL_HXX +#define TIA_AUDIO_CHANNEL_HXX + +namespace TIA { + class AudioChannel + { + public: + AudioChannel() = default; + + void reset(); + + void phase0(); + + unsigned char phase1(); + + void audc(unsigned char value); + + void audf(unsigned char value); + + void audv(unsigned char value); + + private: + unsigned char myAudc{0}; + unsigned char myAudv{0}; + unsigned char myAudf{0}; + + bool myClockEnable{false}; + bool myNoiseFeedback{false}; + bool myNoiseCounterBit4{false}; + bool myPulseCounterHold{false}; + + unsigned char myDivCounter{0}; + unsigned char myPulseCounter{0}; + unsigned char myNoiseCounter{0}; + + private: + AudioChannel(const AudioChannel&) = delete; + AudioChannel(AudioChannel&&) = delete; + AudioChannel& operator=(const AudioChannel&) = delete; + AudioChannel& operator=(AudioChannel&&) = delete; + }; +} + +#endif // TIA_AUDIO_CHANNEL_HXX diff --git a/src/engine/platform/sound/tia/TIASnd.cpp b/src/engine/platform/sound/tia/TIASnd.cpp deleted file mode 100644 index e2d0568c..00000000 --- a/src/engine/platform/sound/tia/TIASnd.cpp +++ /dev/null @@ -1,377 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2016 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIASnd.cxx 3239 2015-12-29 19:22:46Z stephena $ -//============================================================================ - -#include "TIATables.h" -#include "TIASnd.h" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -TIASound::TIASound(int outputFrequency) - : myChannelMode(Hardware2Stereo), - myOutputFrequency(outputFrequency), - myVolumePercentage(100) -{ - reset(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::reset() -{ - // Fill the polynomials - polyInit(Bit4, 4, 4, 3); - polyInit(Bit5, 5, 5, 3); - polyInit(Bit9, 9, 9, 5); - - // Initialize instance variables - for(int chan = 0; chan <= 1; ++chan) - { - myVolume[chan] = 0; - myDivNCnt[chan] = 0; - myDivNMax[chan] = 0; - myDiv3Cnt[chan] = 3; - myAUDC[chan] = 0; - myAUDF[chan] = 0; - myAUDV[chan] = 0; - myP4[chan] = 0; - myP5[chan] = 0; - myP9[chan] = 0; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::outputFrequency(int freq) -{ - myOutputFrequency = freq; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -std::string TIASound::channels(unsigned int hardware, bool stereo) -{ - if(hardware == 1) - myChannelMode = Hardware1; - else - myChannelMode = stereo ? Hardware2Stereo : Hardware2Mono; - - switch(myChannelMode) - { - case Hardware1: return "Hardware1"; - case Hardware2Mono: return "Hardware2Mono"; - case Hardware2Stereo: return "Hardware2Stereo"; - default: return ""; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::set(unsigned short address, unsigned char value) -{ - int chan = ~address & 0x1; - switch(address) - { - case TIARegister::AUDC0: - case TIARegister::AUDC1: - myAUDC[chan] = value & 0x0f; - break; - - case TIARegister::AUDF0: - case TIARegister::AUDF1: - myAUDF[chan] = value & 0x1f; - break; - - case TIARegister::AUDV0: - case TIARegister::AUDV1: - myAUDV[chan] = (value & 0x0f) << AUDV_SHIFT; - break; - - default: - return; - } - - unsigned short newVal = 0; - - // An AUDC value of 0 is a special case - if (myAUDC[chan] == SET_TO_1 || myAUDC[chan] == POLY5_POLY5) - { - // Indicate the clock is zero so no processing will occur, - // and set the output to the selected volume - newVal = 0; - myVolume[chan] = (myAUDV[chan] * myVolumePercentage) / 100; - } - else - { - // Otherwise calculate the 'divide by N' value - newVal = myAUDF[chan] + 1; - - // If bits 2 & 3 are set, then multiply the 'div by n' count by 3 - if((myAUDC[chan] & DIV3_MASK) == DIV3_MASK && myAUDC[chan] != POLY5_DIV3) - newVal *= 3; - } - - // Only reset those channels that have changed - if(newVal != myDivNMax[chan]) - { - // Reset the divide by n counters - myDivNMax[chan] = newVal; - - // If the channel is now volume only or was volume only, - // reset the counter (otherwise let it complete the previous) - if ((myDivNCnt[chan] == 0) || (newVal == 0)) - myDivNCnt[chan] = newVal; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -unsigned char TIASound::get(unsigned short address) const -{ - switch(address) - { - case TIARegister::AUDC0: return myAUDC[0]; - case TIARegister::AUDC1: return myAUDC[1]; - case TIARegister::AUDF0: return myAUDF[0]; - case TIARegister::AUDF1: return myAUDF[1]; - case TIARegister::AUDV0: return myAUDV[0] >> AUDV_SHIFT; - case TIARegister::AUDV1: return myAUDV[1] >> AUDV_SHIFT; - default: return 0; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::volume(unsigned int percent) -{ - if(percent <= 100) - myVolumePercentage = percent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::process(short* buffer, unsigned int samples, DivDispatchOscBuffer** oscBuf) -{ - // Make temporary local copy - unsigned char audc0 = myAUDC[0], audc1 = myAUDC[1]; - unsigned char p5_0 = myP5[0], p5_1 = myP5[1]; - unsigned char div_n_cnt0 = myDivNCnt[0], div_n_cnt1 = myDivNCnt[1]; - short v0 = myVolume[0], v1 = myVolume[1]; - - // Take external volume into account - short audv0 = (myAUDV[0] * myVolumePercentage) / 100, - audv1 = (myAUDV[1] * myVolumePercentage) / 100; - - // Loop until the sample buffer is full - while(samples > 0) - { - // Process channel 0 - if (div_n_cnt0 > 1) - { - div_n_cnt0--; - } - else if (div_n_cnt0 == 1) - { - int prev_bit5 = Bit5[p5_0]; - div_n_cnt0 = myDivNMax[0]; - - // The P5 counter has multiple uses, so we increment it here - p5_0++; - if (p5_0 == POLY5_SIZE) - p5_0 = 0; - - // Check clock modifier for clock tick - if ((audc0 & 0x02) == 0 || - ((audc0 & 0x01) == 0 && Div31[p5_0]) || - ((audc0 & 0x01) == 1 && Bit5[p5_0]) || - ((audc0 & 0x0f) == POLY5_DIV3 && Bit5[p5_0] != prev_bit5)) - { - if (audc0 & 0x04) // Pure modified clock selected - { - if ((audc0 & 0x0f) == POLY5_DIV3) // POLY5 -> DIV3 mode - { - if ( Bit5[p5_0] != prev_bit5 ) - { - myDiv3Cnt[0]--; - if ( !myDiv3Cnt[0] ) - { - myDiv3Cnt[0] = 3; - v0 = v0 ? 0 : audv0; - } - } - } - else - { - // If the output was set turn it off, else turn it on - v0 = v0 ? 0 : audv0; - } - } - else if (audc0 & 0x08) // Check for p5/p9 - { - if (audc0 == POLY9) // Check for poly9 - { - // Increase the poly9 counter - myP9[0]++; - if (myP9[0] == POLY9_SIZE) - myP9[0] = 0; - - v0 = Bit9[myP9[0]] ? audv0 : 0; - } - else if ( audc0 & 0x02 ) - { - v0 = (v0 || audc0 & 0x01) ? 0 : audv0; - } - else // Must be poly5 - { - v0 = Bit5[p5_0] ? audv0 : 0; - } - } - else // Poly4 is the only remaining option - { - // Increase the poly4 counter - myP4[0]++; - if (myP4[0] == POLY4_SIZE) - myP4[0] = 0; - - v0 = Bit4[myP4[0]] ? audv0 : 0; - } - } - } - - // Process channel 1 - if (div_n_cnt1 > 1) - { - div_n_cnt1--; - } - else if (div_n_cnt1 == 1) - { - int prev_bit5 = Bit5[p5_1]; - - div_n_cnt1 = myDivNMax[1]; - - // The P5 counter has multiple uses, so we increment it here - p5_1++; - if (p5_1 == POLY5_SIZE) - p5_1 = 0; - - // Check clock modifier for clock tick - if ((audc1 & 0x02) == 0 || - ((audc1 & 0x01) == 0 && Div31[p5_1]) || - ((audc1 & 0x01) == 1 && Bit5[p5_1]) || - ((audc1 & 0x0f) == POLY5_DIV3 && Bit5[p5_1] != prev_bit5)) - { - if (audc1 & 0x04) // Pure modified clock selected - { - if ((audc1 & 0x0f) == POLY5_DIV3) // POLY5 -> DIV3 mode - { - if ( Bit5[p5_1] != prev_bit5 ) - { - myDiv3Cnt[1]--; - if ( ! myDiv3Cnt[1] ) - { - myDiv3Cnt[1] = 3; - v1 = v1 ? 0 : audv1; - } - } - } - else - { - // If the output was set turn it off, else turn it on - v1 = v1 ? 0 : audv1; - } - } - else if (audc1 & 0x08) // Check for p5/p9 - { - if (audc1 == POLY9) // Check for poly9 - { - // Increase the poly9 counter - myP9[1]++; - if (myP9[1] == POLY9_SIZE) - myP9[1] = 0; - - v1 = Bit9[myP9[1]] ? audv1 : 0; - } - else if ( audc1 & 0x02 ) - { - v1 = (v1 || audc1 & 0x01) ? 0 : audv1; - } - else // Must be poly5 - { - v1 = Bit5[p5_1] ? audv1 : 0; - } - } - else // Poly4 is the only remaining option - { - // Increase the poly4 counter - myP4[1]++; - if (myP4[1] == POLY4_SIZE) - myP4[1] = 0; - - v1 = Bit4[myP4[1]] ? audv1 : 0; - } - } - } - - short byte = v0 + v1; - switch(myChannelMode) - { - case Hardware2Mono: // mono sampling with 2 hardware channels - *(buffer++) = byte; - *(buffer++) = byte; - samples--; - break; - - case Hardware2Stereo: // stereo sampling with 2 hardware channels - *(buffer++) = v0; - *(buffer++) = v1; - samples--; - break; - - case Hardware1: // mono/stereo sampling with only 1 hardware channel - *(buffer++) = (v0 + v1) >> 1; - samples--; - break; - } - - if (oscBuf!=NULL) { - oscBuf[0]->data[oscBuf[0]->needle++]=v0; - oscBuf[1]->data[oscBuf[1]->needle++]=v1; - } - } - - // Save for next round - myP5[0] = p5_0; - myP5[1] = p5_1; - myVolume[0] = v0; - myVolume[1] = v1; - myDivNCnt[0] = div_n_cnt0; - myDivNCnt[1] = div_n_cnt1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIASound::polyInit(unsigned char* poly, int size, int f0, int f1) -{ - int mask = (1 << size) - 1, x = mask; - - for(int i = 0; i < mask; i++) - { - int bit0 = ( ( size - f0 ) ? ( x >> ( size - f0 ) ) : x ) & 0x01; - int bit1 = ( ( size - f1 ) ? ( x >> ( size - f1 ) ) : x ) & 0x01; - poly[i] = x & 1; - // calculate next bit - x = ( x >> 1 ) | ( ( bit0 ^ bit1 ) << ( size - 1) ); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const unsigned char TIASound::Div31[POLY5_SIZE] = { - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; diff --git a/src/engine/platform/sound/tia/TIASnd.h b/src/engine/platform/sound/tia/TIASnd.h deleted file mode 100644 index 78459426..00000000 --- a/src/engine/platform/sound/tia/TIASnd.h +++ /dev/null @@ -1,186 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2016 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIASnd.hxx 3239 2015-12-29 19:22:46Z stephena $ -//============================================================================ - -#ifndef TIASOUND_HXX -#define TIASOUND_HXX - -#include -#include "../../../dispatch.h" - -/** - This class implements a fairly accurate emulation of the TIA sound - hardware. This class uses code/ideas from z26 and MESS. - - Currently, the sound generation routines work at 31400Hz only. - Resampling can be done by passing in a different output frequency. - - @author Bradford W. Mott, Stephen Anthony, z26 and MESS teams - @version $Id: TIASnd.hxx 3239 2015-12-29 19:22:46Z stephena $ -*/ -class TIASound -{ - public: - /** - Create a new TIA Sound object using the specified output frequency - */ - TIASound(int outputFrequency = 31400); - - public: - /** - Reset the sound emulation to its power-on state - */ - void reset(); - - /** - Set the frequency output samples should be generated at - */ - void outputFrequency(int freq); - - /** - Selects the number of audio channels per sample. There are two factors - to consider: hardware capability and desired mixing. - - @param hardware The number of channels supported by the sound system - @param stereo Whether to output the internal sound signals into 1 - or 2 channels - - @return Status of the channel configuration used - */ - std::string channels(unsigned int hardware, bool stereo); - - public: - /** - Sets the specified sound register to the given value - - @param address Register address - @param value Value to store in the register - */ - void set(unsigned short address, unsigned char value); - - /** - Gets the specified sound register's value - - @param address Register address - */ - unsigned char get(unsigned short address) const; - - /** - Create sound samples based on the current sound register settings - in the specified buffer. NOTE: If channels is set to stereo then - the buffer will need to be twice as long as the number of samples. - - @param buffer The location to store generated samples - @param samples The number of samples to generate - */ - void process(short* buffer, unsigned int samples, DivDispatchOscBuffer** oscBuf=NULL); - - /** - Set the volume of the samples created (0-100) - */ - void volume(unsigned int percent); - - private: - void polyInit(unsigned char* poly, int size, int f0, int f1); - - private: - // Definitions for AUDCx (15, 16) - enum AUDCxRegister - { - SET_TO_1 = 0x00, // 0000 - POLY4 = 0x01, // 0001 - DIV31_POLY4 = 0x02, // 0010 - POLY5_POLY4 = 0x03, // 0011 - PURE1 = 0x04, // 0100 - PURE2 = 0x05, // 0101 - DIV31_PURE = 0x06, // 0110 - POLY5_2 = 0x07, // 0111 - POLY9 = 0x08, // 1000 - POLY5 = 0x09, // 1001 - DIV31_POLY5 = 0x0a, // 1010 - POLY5_POLY5 = 0x0b, // 1011 - DIV3_PURE = 0x0c, // 1100 - DIV3_PURE2 = 0x0d, // 1101 - DIV93_PURE = 0x0e, // 1110 - POLY5_DIV3 = 0x0f // 1111 - }; - - enum { - POLY4_SIZE = 0x000f, - POLY5_SIZE = 0x001f, - POLY9_SIZE = 0x01ff, - DIV3_MASK = 0x0c, - AUDV_SHIFT = 10 // shift 2 positions for AUDV, - // then another 8 for 16-bit sound - }; - - enum ChannelMode { - Hardware2Mono, // mono sampling with 2 hardware channels - Hardware2Stereo, // stereo sampling with 2 hardware channels - Hardware1 // mono/stereo sampling with only 1 hardware channel - }; - - private: - // Structures to hold the 6 tia sound control bytes - unsigned char myAUDC[2]; // AUDCx (15, 16) - unsigned char myAUDF[2]; // AUDFx (17, 18) - short myAUDV[2]; // AUDVx (19, 1A) - - short myVolume[2]; // Last output volume for each channel - - unsigned char myP4[2]; // Position pointer for the 4-bit POLY array - unsigned char myP5[2]; // Position pointer for the 5-bit POLY array - unsigned short myP9[2]; // Position pointer for the 9-bit POLY array - - unsigned char myDivNCnt[2]; // Divide by n counter. one for each channel - unsigned char myDivNMax[2]; // Divide by n maximum, one for each channel - unsigned char myDiv3Cnt[2]; // Div 3 counter, used for POLY5_DIV3 mode - - ChannelMode myChannelMode; - int myOutputFrequency; - unsigned int myVolumePercentage; - - /* - Initialize the bit patterns for the polynomials (at runtime). - - The 4bit and 5bit patterns are the identical ones used in the tia chip. - Though the patterns could be packed with 8 bits per byte, using only a - single bit per byte keeps the math simple, which is important for - efficient processing. - */ - unsigned char Bit4[POLY4_SIZE]; - unsigned char Bit5[POLY5_SIZE]; - unsigned char Bit9[POLY9_SIZE]; - - /* - The 'Div by 31' counter is treated as another polynomial because of - the way it operates. It does not have a 50% duty cycle, but instead - has a 13:18 ratio (of course, 13+18 = 31). This could also be - implemented by using counters. - */ - static const unsigned char Div31[POLY5_SIZE]; - - private: - // Following constructors and assignment operators not supported - TIASound(const TIASound&) = delete; - TIASound(TIASound&&) = delete; - TIASound& operator=(const TIASound&) = delete; - TIASound& operator=(TIASound&&) = delete; -}; - -#endif diff --git a/src/engine/platform/sound/tia/TIATables.h b/src/engine/platform/sound/tia/TIATables.h deleted file mode 100644 index 782a24de..00000000 --- a/src/engine/platform/sound/tia/TIATables.h +++ /dev/null @@ -1,219 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2016 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -// -// $Id: TIATables.hxx 3239 2015-12-29 19:22:46Z stephena $ -//============================================================================ - -#ifndef TIA_TABLES_HXX -#define TIA_TABLES_HXX - -enum TIABit { - P0Bit = 0x01, // Bit for Player 0 - M0Bit = 0x02, // Bit for Missle 0 - P1Bit = 0x04, // Bit for Player 1 - M1Bit = 0x08, // Bit for Missle 1 - BLBit = 0x10, // Bit for Ball - PFBit = 0x20, // Bit for Playfield - ScoreBit = 0x40, // Bit for Playfield score mode - PriorityBit = 0x80 // Bit for Playfield priority -}; - -enum TIAColor { - BKColor = 0, // Color index for Background - PFColor = 1, // Color index for Playfield - P0Color = 2, // Color index for Player 0 - P1Color = 3, // Color index for Player 1 - M0Color = 4, // Color index for Missle 0 - M1Color = 5, // Color index for Missle 1 - BLColor = 6, // Color index for Ball - HBLANKColor = 7 // Color index for HMove blank area -}; - -enum CollisionBit -{ - Cx_M0P1 = 1 << 0, // Missle0 - Player1 collision - Cx_M0P0 = 1 << 1, // Missle0 - Player0 collision - Cx_M1P0 = 1 << 2, // Missle1 - Player0 collision - Cx_M1P1 = 1 << 3, // Missle1 - Player1 collision - Cx_P0PF = 1 << 4, // Player0 - Playfield collision - Cx_P0BL = 1 << 5, // Player0 - Ball collision - Cx_P1PF = 1 << 6, // Player1 - Playfield collision - Cx_P1BL = 1 << 7, // Player1 - Ball collision - Cx_M0PF = 1 << 8, // Missle0 - Playfield collision - Cx_M0BL = 1 << 9, // Missle0 - Ball collision - Cx_M1PF = 1 << 10, // Missle1 - Playfield collision - Cx_M1BL = 1 << 11, // Missle1 - Ball collision - Cx_BLPF = 1 << 12, // Ball - Playfield collision - Cx_P0P1 = 1 << 13, // Player0 - Player1 collision - Cx_M0M1 = 1 << 14 // Missle0 - Missle1 collision -}; - -// TIA Write/Read register names -enum TIARegister { - VSYNC = 0x00, // Write: vertical sync set-clear (D1) - VBLANK = 0x01, // Write: vertical blank set-clear (D7-6,D1) - WSYNC = 0x02, // Write: wait for leading edge of hrz. blank (strobe) - RSYNC = 0x03, // Write: reset hrz. sync counter (strobe) - NUSIZ0 = 0x04, // Write: number-size player-missle 0 (D5-0) - NUSIZ1 = 0x05, // Write: number-size player-missle 1 (D5-0) - COLUP0 = 0x06, // Write: color-lum player 0 (D7-1) - COLUP1 = 0x07, // Write: color-lum player 1 (D7-1) - COLUPF = 0x08, // Write: color-lum playfield (D7-1) - COLUBK = 0x09, // Write: color-lum background (D7-1) - CTRLPF = 0x0a, // Write: cntrl playfield ballsize & coll. (D5-4,D2-0) - REFP0 = 0x0b, // Write: reflect player 0 (D3) - REFP1 = 0x0c, // Write: reflect player 1 (D3) - PF0 = 0x0d, // Write: playfield register byte 0 (D7-4) - PF1 = 0x0e, // Write: playfield register byte 1 (D7-0) - PF2 = 0x0f, // Write: playfield register byte 2 (D7-0) - RESP0 = 0x10, // Write: reset player 0 (strobe) - RESP1 = 0x11, // Write: reset player 1 (strobe) - RESM0 = 0x12, // Write: reset missle 0 (strobe) - RESM1 = 0x13, // Write: reset missle 1 (strobe) - RESBL = 0x14, // Write: reset ball (strobe) - AUDC0 = 0x15, // Write: audio control 0 (D3-0) - AUDC1 = 0x16, // Write: audio control 1 (D4-0) - AUDF0 = 0x17, // Write: audio frequency 0 (D4-0) - AUDF1 = 0x18, // Write: audio frequency 1 (D3-0) - AUDV0 = 0x19, // Write: audio volume 0 (D3-0) - AUDV1 = 0x1a, // Write: audio volume 1 (D3-0) - GRP0 = 0x1b, // Write: graphics player 0 (D7-0) - GRP1 = 0x1c, // Write: graphics player 1 (D7-0) - ENAM0 = 0x1d, // Write: graphics (enable) missle 0 (D1) - ENAM1 = 0x1e, // Write: graphics (enable) missle 1 (D1) - ENABL = 0x1f, // Write: graphics (enable) ball (D1) - HMP0 = 0x20, // Write: horizontal motion player 0 (D7-4) - HMP1 = 0x21, // Write: horizontal motion player 1 (D7-4) - HMM0 = 0x22, // Write: horizontal motion missle 0 (D7-4) - HMM1 = 0x23, // Write: horizontal motion missle 1 (D7-4) - HMBL = 0x24, // Write: horizontal motion ball (D7-4) - VDELP0 = 0x25, // Write: vertical delay player 0 (D0) - VDELP1 = 0x26, // Write: vertical delay player 1 (D0) - VDELBL = 0x27, // Write: vertical delay ball (D0) - RESMP0 = 0x28, // Write: reset missle 0 to player 0 (D1) - RESMP1 = 0x29, // Write: reset missle 1 to player 1 (D1) - HMOVE = 0x2a, // Write: apply horizontal motion (strobe) - HMCLR = 0x2b, // Write: clear horizontal motion registers (strobe) - CXCLR = 0x2c, // Write: clear collision latches (strobe) - - CXM0P = 0x00, // Read collision: D7=(M0,P1); D6=(M0,P0) - CXM1P = 0x01, // Read collision: D7=(M1,P0); D6=(M1,P1) - CXP0FB = 0x02, // Read collision: D7=(P0,PF); D6=(P0,BL) - CXP1FB = 0x03, // Read collision: D7=(P1,PF); D6=(P1,BL) - CXM0FB = 0x04, // Read collision: D7=(M0,PF); D6=(M0,BL) - CXM1FB = 0x05, // Read collision: D7=(M1,PF); D6=(M1,BL) - CXBLPF = 0x06, // Read collision: D7=(BL,PF); D6=(unused) - CXPPMM = 0x07, // Read collision: D7=(P0,P1); D6=(M0,M1) - INPT0 = 0x08, // Read pot port: D7 - INPT1 = 0x09, // Read pot port: D7 - INPT2 = 0x0a, // Read pot port: D7 - INPT3 = 0x0b, // Read pot port: D7 - INPT4 = 0x0c, // Read P1 joystick trigger: D7 - INPT5 = 0x0d // Read P2 joystick trigger: D7 -}; - -/** - The TIA class uses some static tables that aren't dependent on the actual - TIA state. For code organization, it's better to place that functionality - here. - - @author Stephen Anthony - @version $Id: TIATables.hxx 3239 2015-12-29 19:22:46Z stephena $ -*/ -class TIATables -{ - public: - /** - Compute all static tables used by the TIA - */ - static void computeAllTables(); - - // Player mask table - // [suppress mode][nusiz][pixel] - static unsigned char PxMask[2][8][320]; - - // Missle mask table (entries are true or false) - // [number][size][pixel] - // There are actually only 4 possible size combinations on a real system - // The fifth size is used for simulating the starfield effect in - // Cosmic Ark and Stay Frosty - static unsigned char MxMask[8][5][320]; - - // Ball mask table (entries are true or false) - // [size][pixel] - static unsigned char BLMask[4][320]; - - // Playfield mask table for reflected and non-reflected playfields - // [reflect, pixel] - static unsigned int PFMask[2][160]; - - // A mask table which can be used when an object is disabled - static unsigned char DisabledMask[640]; - - // Used to set the collision register to the correct value - static unsigned short CollisionMask[64]; - - // Indicates the update delay associated with poking at a TIA address - static const short PokeDelay[64]; - -#if 0 - // Used to convert value written in a motion register into - // its internal representation - static const int CompleteMotion[76][16]; -#endif - - // Indicates if HMOVE blanks should occur for the corresponding cycle - static const bool HMOVEBlankEnableCycles[76]; - - // Used to reflect a players graphics - static unsigned char GRPReflect[256]; - - // Indicates if player is being reset during delay, display or other times - // [nusiz][old pixel][new pixel] - static signed char PxPosResetWhen[8][160][160]; - - private: - // Compute the collision decode table - static void buildCollisionMaskTable(); - - // Compute the player mask table - static void buildPxMaskTable(); - - // Compute the missle mask table - static void buildMxMaskTable(); - - // Compute the ball mask table - static void buildBLMaskTable(); - - // Compute playfield mask table - static void buildPFMaskTable(); - - // Compute the player reflect table - static void buildGRPReflectTable(); - - // Compute the player position reset when table - static void buildPxPosResetWhenTable(); - - private: - // Following constructors and assignment operators not supported - TIATables() = delete; - TIATables(const TIATables&) = delete; - TIATables(TIATables&&) = delete; - TIATables& operator=(const TIATables&) = delete; - TIATables& operator=(TIATables&&) = delete; -}; - -#endif diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index 82d03270..54ef306f 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -22,7 +22,7 @@ #include #include -#define rWrite(a,v) if (!skipRegisterWrites) {tia.set(a,v); regPool[((a)-0x15)&0x0f]=v; if (dumpWrites) {addWrite(a,v);} } +#define rWrite(a,v) if (!skipRegisterWrites) {tia.write(a,v); regPool[((a)-0x15)&0x0f]=v; if (dumpWrites) {addWrite(a,v);} } const char* regCheatSheetTIA[]={ "AUDC0", "15", @@ -39,7 +39,10 @@ const char** DivPlatformTIA::getRegisterSheet() { } void DivPlatformTIA::acquire(short* bufL, short* bufR, size_t start, size_t len) { - tia.process(bufL+start,len,oscBuf); + for (size_t h=start; h& wlist) { void DivPlatformTIA::setFlags(unsigned int flags) { if (flags&1) { - rate=31250; + rate=COLOR_PAL*4.0/5.0; } else { - rate=31468; + rate=COLOR_NTSC; } chipClock=rate; for (int i=0; i<2; i++) { @@ -351,7 +354,6 @@ int DivPlatformTIA::init(DivEngine* p, int channels, int sugRate, unsigned int f isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - tia.channels(1,false); setFlags(flags); reset(); return 2; diff --git a/src/engine/platform/tia.h b/src/engine/platform/tia.h index 16817536..fe45c18b 100644 --- a/src/engine/platform/tia.h +++ b/src/engine/platform/tia.h @@ -22,7 +22,7 @@ #include "../dispatch.h" #include "../macroInt.h" #include -#include "sound/tia/TIASnd.h" +#include "sound/tia/Audio.h" class DivPlatformTIA: public DivDispatch { protected: @@ -42,7 +42,7 @@ class DivPlatformTIA: public DivDispatch { Channel chan[2]; DivDispatchOscBuffer* oscBuf[2]; bool isMuted[2]; - TIASound tia; + TIA::Audio tia; unsigned char regPool[16]; friend void putDispatchChan(void*,int,int); From 917a03eb070b8f195a4fcfa9828a0936c575f8bc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 23:40:21 -0500 Subject: [PATCH 528/580] TIA: fixes fixes fixes --- src/engine/platform/sound/tia/Audio.cpp | 6 ++++++ src/engine/platform/sound/tia/Audio.h | 1 + src/engine/platform/tia.cpp | 24 ++++++++++++++++++++---- src/engine/platform/tia.h | 2 ++ src/gui/sysConf.cpp | 18 ++++++++++++++++++ 5 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/sound/tia/Audio.cpp b/src/engine/platform/sound/tia/Audio.cpp index a90aee5a..662bd7fd 100644 --- a/src/engine/platform/sound/tia/Audio.cpp +++ b/src/engine/platform/sound/tia/Audio.cpp @@ -53,6 +53,9 @@ void Audio::reset(bool st) myCurrentSample[0]=0; myCurrentSample[1]=0; + myChannelOut[0]=0; + myChannelOut[1]=0; + myChannel0.reset(); myChannel1.reset(); } @@ -120,6 +123,9 @@ void Audio::addSample(unsigned char sample0, unsigned char sample1) else { myCurrentSample[0] = myMixingTableSum[sample0 + sample1]; } + + myChannelOut[0] = myMixingTableIndividual[sample0]; + myChannelOut[1] = myMixingTableIndividual[sample1]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/engine/platform/sound/tia/Audio.h b/src/engine/platform/sound/tia/Audio.h index ff388807..4a782bb3 100644 --- a/src/engine/platform/sound/tia/Audio.h +++ b/src/engine/platform/sound/tia/Audio.h @@ -38,6 +38,7 @@ namespace TIA { AudioChannel& channel1(); short myCurrentSample[2]; + short myChannelOut[2]; private: void phase1(); diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index 54ef306f..59c53491 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -41,7 +41,19 @@ const char** DivPlatformTIA::getRegisterSheet() { void DivPlatformTIA::acquire(short* bufL, short* bufR, size_t start, size_t len) { for (size_t h=start; h>1; + } else { + bufL[h]=tia.myCurrentSample[0]; + } + if (++chanOscCounter>=114) { + chanOscCounter=0; + oscBuf[0]->data[oscBuf[0]->needle++]=tia.myChannelOut[0]; + oscBuf[1]->data[oscBuf[1]->needle++]=tia.myChannelOut[1]; + } } } @@ -303,7 +315,7 @@ int DivPlatformTIA::getRegisterPoolSize() { } void DivPlatformTIA::reset() { - tia.reset(false); + tia.reset(mixingType); memset(regPool,0,16); for (int i=0; i<2; i++) { chan[i]=DivPlatformTIA::Channel(); @@ -313,7 +325,7 @@ void DivPlatformTIA::reset() { } bool DivPlatformTIA::isStereo() { - return false; + return (mixingType==2); } bool DivPlatformTIA::keyOffAffectsArp(int ch) { @@ -341,15 +353,19 @@ void DivPlatformTIA::setFlags(unsigned int flags) { rate=COLOR_NTSC; } chipClock=rate; + mixingType=(flags>>1)&3; for (int i=0; i<2; i++) { - oscBuf[i]->rate=rate; + oscBuf[i]->rate=rate/114; } + tia.reset(mixingType); } int DivPlatformTIA::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { parent=p; dumpWrites=false; skipRegisterWrites=false; + mixingType=0; + chanOscCounter=0; for (int i=0; i<2; i++) { isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; diff --git a/src/engine/platform/tia.h b/src/engine/platform/tia.h index fe45c18b..c6ea280d 100644 --- a/src/engine/platform/tia.h +++ b/src/engine/platform/tia.h @@ -42,6 +42,8 @@ class DivPlatformTIA: public DivDispatch { Channel chan[2]; DivDispatchOscBuffer* oscBuf[2]; bool isMuted[2]; + unsigned char mixingType; + unsigned char chanOscCounter; TIA::Audio tia; unsigned char regPool[16]; friend void putDispatchChan(void*,int,int); diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index a6bbcb92..ba3ded1a 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -402,6 +402,24 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } break; } + case DIV_SYSTEM_TIA: { + ImGui::Text("Mixing mode:"); + if (ImGui::RadioButton("Mono",(flags&6)==0)) { + copyOfFlags=(flags&(~6)); + } + if (ImGui::RadioButton("Mono (no distortion)",(flags&6)==2)) { + copyOfFlags=(flags&(~6))|2; + } + if (ImGui::RadioButton("Stereo",(flags&6)==4)) { + copyOfFlags=(flags&(~6))|4; + } + + sysPal=flags&1; + if (ImGui::Checkbox("PAL",&sysPal)) { + copyOfFlags=(flags&(~1))|(unsigned int)sysPal; + } + break; + } case DIV_SYSTEM_PCSPKR: { ImGui::Text("Speaker type:"); if (ImGui::RadioButton("Unfiltered",(flags&3)==0)) { From 2e49f9c8a0cd33808a5ec8b0f937b323c8e70253 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 23:42:48 -0500 Subject: [PATCH 529/580] TIA: volume --- src/engine/platform/tia.cpp | 4 ++++ src/engine/platform/tia.h | 1 + 2 files changed, 5 insertions(+) diff --git a/src/engine/platform/tia.cpp b/src/engine/platform/tia.cpp index 59c53491..796c9448 100644 --- a/src/engine/platform/tia.cpp +++ b/src/engine/platform/tia.cpp @@ -324,6 +324,10 @@ void DivPlatformTIA::reset() { } } +float DivPlatformTIA::getPostAmp() { + return 0.5f; +} + bool DivPlatformTIA::isStereo() { return (mixingType==2); } diff --git a/src/engine/platform/tia.h b/src/engine/platform/tia.h index c6ea280d..b838e068 100644 --- a/src/engine/platform/tia.h +++ b/src/engine/platform/tia.h @@ -63,6 +63,7 @@ class DivPlatformTIA: public DivDispatch { void tick(bool sysTick=true); void muteChannel(int ch, bool mute); void setFlags(unsigned int flags); + float getPostAmp(); bool isStereo(); bool keyOffAffectsArp(int ch); void notifyInsDeletion(void* ins); From 68587dab0dc005bf9173a46f5f17d99b525d763b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 23:44:08 -0500 Subject: [PATCH 530/580] update Nuked-OPN2 core --- extern/Nuked-OPN2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/Nuked-OPN2 b/extern/Nuked-OPN2 index 64704a44..b0e9de0f 160000 --- a/extern/Nuked-OPN2 +++ b/extern/Nuked-OPN2 @@ -1 +1 @@ -Subproject commit 64704a443f8f6c1906ba26297092ea70fa1d45d7 +Subproject commit b0e9de0f816943ad3820ddfefa0fff276d659250 From 183d78e2a137fd7268ef278db2a495ac1763c13d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 9 Sep 2022 23:47:22 -0500 Subject: [PATCH 531/580] update Nuked-OPM to latest version --- extern/opm/opm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extern/opm/opm.c b/extern/opm/opm.c index 79f6414c..aafce483 100644 --- a/extern/opm/opm.c +++ b/extern/opm/opm.c @@ -1,5 +1,5 @@ /* Nuked OPM - * Copyright (C) 2020 Nuke.YKT + * Copyright (C) 2022 Nuke.YKT * * This file is part of Nuked OPM. * @@ -21,7 +21,7 @@ * siliconpr0n.org(digshadow, John McMaster): * YM2151 and other FM chip decaps and die shots. * - * version: 0.9.2 beta + * version: 0.9.3 beta */ #include #include @@ -651,7 +651,7 @@ static inline void OPM_EnvelopePhase4(opm_t *chip) chip->eg_instantattack = chip->eg_ratemax[1] && (kon || !chip->eg_ratemax[1]); eg_off = (chip->eg_level[slot] & 0x3f0) == 0x3f0; - slreach = (chip->eg_level[slot] >> 5) == chip->eg_sl[1]; + slreach = (chip->eg_level[slot] >> 4) == (chip->eg_sl[1] << 1); eg_zero = chip->eg_level[slot] == 0; chip->eg_mute = eg_off && chip->eg_state[slot] != eg_num_attack && !kon; From 023d065fcc05c7b25aeef896907a623f93fce74a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 00:09:38 -0500 Subject: [PATCH 532/580] fix .dmp loading --- src/engine/fileOpsIns.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index c8dbb57f..7c2071de 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -171,9 +171,7 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St mode=reader.readC(); logD("instrument mode is %d",mode); if (mode==0) { - if (version<11) { - ins->type=DIV_INS_STD; - } + if (ins->type==DIV_INS_FM) ins->type=DIV_INS_STD; } else { ins->type=DIV_INS_FM; } From 3c5d71ce4ceb396713a512778f0b20c67ab4dbb6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 00:12:53 -0500 Subject: [PATCH 533/580] fix .dmp loading for Neo Geo presets --- src/engine/fileOpsIns.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index 7c2071de..842f29f7 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -150,6 +150,10 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St ins->type=DIV_INS_FM; logD("instrument type is Arcade"); break; + case 9: // Neo Geo + ins->type=DIV_INS_FM; + logD("instrument type is Neo Geo"); + break; default: logD("instrument type is unknown"); lastError="unknown instrument type!"; @@ -171,7 +175,13 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St mode=reader.readC(); logD("instrument mode is %d",mode); if (mode==0) { - if (ins->type==DIV_INS_FM) ins->type=DIV_INS_STD; + if (ins->type==DIV_INS_FM) { + if (sys==9) { + ins->type=DIV_INS_AY; + } else { + ins->type=DIV_INS_STD; + } + } } else { ins->type=DIV_INS_FM; } From 9ac9cfc9038370895452fbadb3f323323570f1e1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 00:28:21 -0500 Subject: [PATCH 534/580] more .dmp loading fixes this time for OPLL --- src/engine/fileOpsIns.cpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index 842f29f7..9668c8d9 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -156,7 +156,7 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St break; default: logD("instrument type is unknown"); - lastError="unknown instrument type!"; + lastError=fmt::sprintf("unknown instrument type %d!",sys); delete ins; return; break; @@ -183,7 +183,14 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St } } } else { - ins->type=DIV_INS_FM; + if (sys==3 || sys==6) { + ins->type=DIV_INS_OPLL; + } else if (sys==1) { + ins->type=DIV_INS_OPL; + } else { + ins->type=DIV_INS_FM; + } + } } else { ins->type=DIV_INS_FM; @@ -240,12 +247,23 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St ins->fm.op[j].dvb=reader.readC(); ins->fm.op[j].dam=reader.readC(); } else { - ins->fm.op[j].rs=reader.readC(); - ins->fm.op[j].dt=reader.readC(); - ins->fm.op[j].dt2=ins->fm.op[j].dt>>4; - ins->fm.op[j].dt&=15; - ins->fm.op[j].d2r=reader.readC(); - ins->fm.op[j].ssgEnv=reader.readC(); + if (sys==3 || sys==6) { // OPLL/VRC7 + ins->fm.op[j].ksr=reader.readC()?1:0; + ins->fm.op[j].vib=reader.readC(); + if (j==0) { + ins->fm.opllPreset=ins->fm.op[j].vib>>4; + } + ins->fm.op[j].vib=ins->fm.op[j].vib?1:0; + ins->fm.op[j].ksl=reader.readC()?1:0; + ins->fm.op[j].ssgEnv=reader.readC(); + } else { + ins->fm.op[j].rs=reader.readC(); + ins->fm.op[j].dt=reader.readC(); + ins->fm.op[j].dt2=ins->fm.op[j].dt>>4; + ins->fm.op[j].dt&=15; + ins->fm.op[j].d2r=reader.readC(); + ins->fm.op[j].ssgEnv=reader.readC(); + } } } } else { // STD From ac0decd01b2aca0e785c4dc979883a77b9b840b1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 00:31:17 -0500 Subject: [PATCH 535/580] .dmf FDS instrument detection --- src/engine/fileOpsIns.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index 9668c8d9..83361130 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -190,7 +190,6 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St } else { ins->type=DIV_INS_FM; } - } } else { ins->type=DIV_INS_FM; @@ -273,6 +272,9 @@ void DivEngine::loadDMP(SafeReader& reader, std::vector& ret, St if (version>5) { for (int i=0; istd.volMacro.len; i++) { ins->std.volMacro.val[i]=reader.readI(); + if (ins->std.volMacro.val[i]>15 && sys==6) { // FDS + ins->type=DIV_INS_FDS; + } } } else { for (int i=0; istd.volMacro.len; i++) { From 187653a70f13d23b1920e80fe5543a4a85aee60f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 01:39:42 -0500 Subject: [PATCH 536/580] dev113 - loop detection changes --- android/app/build.gradle | 4 +-- android/app/src/main/AndroidManifest.xml | 4 +-- papers/format.md | 4 ++- src/engine/engine.cpp | 1 + src/engine/engine.h | 8 +++-- src/engine/fileOps.cpp | 14 ++++++-- src/engine/playback.cpp | 42 ++++++++++++++++++++---- src/engine/song.h | 6 ++++ src/gui/compatFlags.cpp | 20 +++++++++++ 9 files changed, 87 insertions(+), 16 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index f332e6f5..92a79e4d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -15,8 +15,8 @@ android { } minSdkVersion 21 targetSdkVersion 26 - versionCode 112 - versionName "dev112" + versionCode 113 + versionName "dev113" externalNativeBuild { cmake { arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static" diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e28b7fd1..b77cf32e 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ diff --git a/papers/format.md b/papers/format.md index def8cba1..8528a7d6 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 113: Furnace dev113 - 112: Furnace dev112 - 111: Furnace dev111 - 110: Furnace dev110 @@ -338,7 +339,8 @@ size | description 1 | broken initial position of porta after arp (>=101) or reserved 1 | SN periods under 8 are treated as 1 (>=108) or reserved 1 | cut/delay effect policy (>=110) or reserved - 5 | reserved + 1 | 0B/0D effect treatment (>=113) or reserved + 4 | reserved --- | **virtual tempo data** 2 | virtual tempo numerator of first song (>=96) or reserved 2 | virtual tempo denominator of first song (>=96) or reserved diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 4a8b7f5b..a184b5b5 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1658,6 +1658,7 @@ void DivEngine::playSub(bool preserveDrift, int goalRow) { speedAB=false; playing=true; skipping=true; + memset(walked,0,8192); for (int i=0; isetSkipRegisterWrites(true); while (playing && curOrder conf; std::deque pendingNotes; + // bitfield + unsigned char walked[8192]; bool isMuted[DIV_MAX_CHANS]; std::mutex isBusy, saveLock; String configPath; @@ -1072,6 +1073,7 @@ class DivEngine { memset(reversePitchTable,0,4096*sizeof(int)); memset(pitchTable,0,4096*sizeof(int)); memset(sysDefs,0,256*sizeof(void*)); + memset(walked,0,8192); for (int i=0; i<256; i++) { sysFileMapFur[i]=DIV_SYSTEM_NULL; diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 66ca9d46..10a4bcce 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -179,6 +179,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.brokenPortaArp=false; ds.snNoLowPeriods=true; ds.delayBehavior=0; + ds.jumpTreatment=2; // 1.1 compat flags if (ds.version>24) { @@ -1081,6 +1082,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { if (ds.version<110) { ds.delayBehavior=1; } + if (ds.version<113) { + ds.jumpTreatment=1; + } ds.isDMF=false; reader.readS(); // reserved @@ -1503,7 +1507,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } else { reader.readC(); } - for (int i=0; i<5; i++) { + if (ds.version>=113) { + ds.jumpTreatment=reader.readC(); + } else { + reader.readC(); + } + for (int i=0; i<4; i++) { reader.readC(); } } @@ -3747,7 +3756,8 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeC(song.brokenPortaArp); w->writeC(song.snNoLowPeriods); w->writeC(song.delayBehavior); - for (int i=0; i<5; i++) { + w->writeC(song.jumpTreatment); + for (int i=0; i<4; i++) { w->writeC(0); } diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 7fb9583d..898bb2b0 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -31,7 +31,9 @@ void DivEngine::nextOrder() { curRow=0; if (repeatPattern) return; if (++curOrder>=curSubSong->ordersLen) { + logV("end of orders reached"); endOfSong=true; + memset(walked,0,8192); curOrder=0; } } @@ -348,15 +350,31 @@ void DivEngine::processRow(int i, bool afterDelay) { if (effectVal>0) speed2=effectVal; break; case 0x0b: // change order - if (changeOrd==-1) { + if (changeOrd==-1 || song.jumpTreatment==0) { changeOrd=effectVal; - changePos=0; + if (song.jumpTreatment==1 || song.jumpTreatment==2) { + changePos=0; + } } break; case 0x0d: // next order - if (changeOrd<0 && (curOrder<(curSubSong->ordersLen-1) || !song.ignoreJumpAtEnd)) { - changeOrd=-2; - changePos=effectVal; + if (song.jumpTreatment==2) { + if ((curOrder<(curSubSong->ordersLen-1) || !song.ignoreJumpAtEnd)) { + changeOrd=-2; + changePos=effectVal; + } + } else if (song.jumpTreatment==1) { + if (changeOrd<0 && (curOrder<(curSubSong->ordersLen-1) || !song.ignoreJumpAtEnd)) { + changeOrd=-2; + changePos=effectVal; + } + } else { + if (curOrder<(curSubSong->ordersLen-1) || !song.ignoreJumpAtEnd) { + if (changeOrd<0) { + changeOrd=-2; + } + changePos=effectVal; + } } break; case 0xed: // delay @@ -911,18 +929,23 @@ void DivEngine::nextRow() { processRow(i,false); } + walked[((curOrder<<5)+(curRow>>3))&8191]|=1<<(curRow&7); + if (changeOrd!=-1) { if (repeatPattern) { curRow=0; changeOrd=-1; } else { curRow=changePos; + changePos=0; if (changeOrd==-2) changeOrd=curOrder+1; - if (changeOrd<=curOrder) endOfSong=true; + // old loop detection routine + //if (changeOrd<=curOrder) endOfSong=true; curOrder=changeOrd; if (curOrder>=curSubSong->ordersLen) { curOrder=0; endOfSong=true; + memset(walked,0,8192); } changeOrd=-1; } @@ -932,6 +955,13 @@ void DivEngine::nextRow() { if (haltOn==DIV_HALT_PATTERN) halted=true; } + // new loop detection routine + if (!endOfSong && walked[((curOrder<<5)+(curRow>>3))&8191]&(1<<(curRow&7))) { + logV("loop reached"); + endOfSong=true; + memset(walked,0,8192); + } + if (song.brokenSpeedSel) { if ((curSubSong->patLen&1) && curOrder&1) { ticks=((curRow&1)?speed2:speed1)*(curSubSong->timeBase+1); diff --git a/src/engine/song.h b/src/engine/song.h index ac49832e..493fc412 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -468,6 +468,11 @@ struct DivSong { // 1: broken (don't allow value higher than speed) // 2: lax (allow value higher than speed) unsigned char delayBehavior; + // 0B/0D treatment + // 0: normal (0B/0D accepted) + // 1: old Furnace (first one accepted) + // 2: DefleMask (0D takes priority over 0B) + unsigned char jumpTreatment; bool properNoiseLayout; bool waveDutyIsVol; bool resetMacroOnPorta; @@ -571,6 +576,7 @@ struct DivSong { pitchSlideSpeed(4), loopModality(2), delayBehavior(2), + jumpTreatment(0), properNoiseLayout(true), waveDutyIsVol(false), resetMacroOnPorta(false), diff --git a/src/gui/compatFlags.cpp b/src/gui/compatFlags.cpp index 74d493e7..63571dca 100644 --- a/src/gui/compatFlags.cpp +++ b/src/gui/compatFlags.cpp @@ -213,6 +213,26 @@ void FurnaceGUI::drawCompatFlags() { ImGui::SetTooltip("no checks (like FamiTracker)"); } + ImGui::Text("Simultaneous jump (0B+0D) treatment:"); + if (ImGui::RadioButton("Normal",e->song.jumpTreatment==0)) { + e->song.jumpTreatment=0; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("accept 0B+0D to jump to a specific row of an order"); + } + if (ImGui::RadioButton("Old Furnace",e->song.jumpTreatment==1)) { + e->song.jumpTreatment=1; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("only accept the first jump effect"); + } + if (ImGui::RadioButton("DefleMask",e->song.jumpTreatment==2)) { + e->song.jumpTreatment=2; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("only accept 0Dxx"); + } + ImGui::Separator(); ImGui::TextWrapped("the following flags are for compatibility with older Furnace versions."); From a99f1bd8a070045170352ad2cbec1f2898e9bd12 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 02:34:47 -0500 Subject: [PATCH 537/580] fix walkSong --- src/engine/engine.cpp | 53 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index a184b5b5..f6fe659e 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -147,37 +147,68 @@ void DivEngine::walkSong(int& loopOrder, int& loopRow, int& loopEnd) { int nextOrder=-1; int nextRow=0; int effectVal=0; + int lastSuspectedLoopEnd=-1; DivPattern* pat[DIV_MAX_CHANS]; + unsigned char wsWalked[8192]; + memset(wsWalked,0,8192); for (int i=0; iordersLen; i++) { for (int j=0; jord[j][i],false); } + if (i>lastSuspectedLoopEnd) { + lastSuspectedLoopEnd=i; + } for (int j=nextRow; jpatLen; j++) { nextRow=0; + bool changingOrder=false; + bool jumpingOrder=false; + if (wsWalked[((i<<5)+(j>>3))&8191]&(1<<(j&7))) { + loopOrder=i; + loopRow=j; + loopEnd=lastSuspectedLoopEnd; + return; + } for (int k=0; kdata[j][5+(l<<1)]; if (effectVal<0) effectVal=0; if (pat[k]->data[j][4+(l<<1)]==0x0d) { - if (nextOrder==-1 && (iordersLen-1 || !song.ignoreJumpAtEnd)) { - nextOrder=i+1; - nextRow=effectVal; + if (song.jumpTreatment==2) { + if ((iordersLen-1 || !song.ignoreJumpAtEnd)) { + nextOrder=i+1; + nextRow=effectVal; + jumpingOrder=true; + } + } else if (song.jumpTreatment==1) { + if (nextOrder==-1 && (iordersLen-1 || !song.ignoreJumpAtEnd)) { + nextOrder=i+1; + nextRow=effectVal; + jumpingOrder=true; + } + } else { + if ((iordersLen-1 || !song.ignoreJumpAtEnd)) { + if (!changingOrder) { + nextOrder=i+1; + } + jumpingOrder=true; + nextRow=effectVal; + } } } else if (pat[k]->data[j][4+(l<<1)]==0x0b) { - if (nextOrder==-1) { + if (nextOrder==-1 || song.jumpTreatment==0) { nextOrder=effectVal; - nextRow=0; + if (song.jumpTreatment==1 || song.jumpTreatment==2 || !jumpingOrder) { + nextRow=0; + } + changingOrder=true; } } } } + + wsWalked[((i<<5)+(j>>3))&8191]|=1<<(j&7); + if (nextOrder!=-1) { - if (nextOrder<=i) { - loopOrder=nextOrder; - loopRow=nextRow; - loopEnd=i; - return; - } i=nextOrder-1; nextOrder=-1; break; From 99340234b8a3883b9eee985230ce54bcabf47583 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 16:01:22 -0500 Subject: [PATCH 538/580] GUI: wave generator, part 7 prepare for WaveTools (formerly Mangle) --- src/gui/gui.cpp | 6 ++++ src/gui/gui.h | 2 ++ src/gui/waveEdit.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 65e982c7..0b1d008b 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -5241,6 +5241,12 @@ FurnaceGUI::FurnaceGUI(): waveGenDuty(0.5f), waveGenPower(1), waveGenInvertPoint(1.0f), + waveGenScaleX(32), + waveGenScaleY(31), + waveGenOffsetX(0), + waveGenOffsetY(0), + waveGenSmooth(1), + waveGenAmplify(1.0f), waveGenFM(false) { // value keys valueKeys[SDLK_0]=0; diff --git a/src/gui/gui.h b/src/gui/gui.h index 180013df..79a39a1f 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1573,6 +1573,8 @@ class FurnaceGUI { float waveGenTL[4]; int waveGenMult[4]; int waveGenFB[4]; + int waveGenScaleX, waveGenScaleY, waveGenOffsetX, waveGenOffsetY, waveGenSmooth; + float waveGenAmplify; bool waveGenFMCon1[4]; bool waveGenFMCon2[3]; bool waveGenFMCon3[2]; diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index c46e2ec0..de106cb5 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -503,7 +503,91 @@ void FurnaceGUI::drawWaveEdit() { } ImGui::EndTabItem(); } - if (ImGui::BeginTabItem("Mangle")) { + if (ImGui::BeginTabItem("WaveTools")) { + if (ImGui::BeginTable("WGParamItems",2)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##WGScaleX",&waveGenScaleX,1,16)) { + if (waveGenScaleX<2) waveGenScaleX=2; + if (waveGenScaleX>256) waveGenScaleX=256; + } + ImGui::TableNextColumn(); + ImGui::Button("Scale X"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##WGScaleY",&waveGenScaleY,1,16)) { + if (waveGenScaleY<2) waveGenScaleY=2; + if (waveGenScaleY>256) waveGenScaleY=256; + } + ImGui::TableNextColumn(); + ImGui::Button("Scale Y"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##WGOffsetX",&waveGenOffsetX,1,16)) { + if (waveGenOffsetX<-wave->len+1) waveGenOffsetX=-wave->len+1; + if (waveGenOffsetX>wave->len-1) waveGenOffsetX=wave->len-1; + } + ImGui::TableNextColumn(); + ImGui::Button("Offset X"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##WGOffsetY",&waveGenOffsetY,1,16)) { + if (waveGenOffsetY<-wave->max) waveGenOffsetY=-wave->max; + if (waveGenOffsetY>wave->max) waveGenOffsetY=wave->max; + } + ImGui::TableNextColumn(); + ImGui::Button("Offset Y"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##WGSmooth",&waveGenSmooth,1,4)) { + if (waveGenSmooth>wave->len) waveGenSmooth=wave->len; + if (waveGenSmooth<1) waveGenSmooth=1; + } + ImGui::TableNextColumn(); + ImGui::Button("Smooth"); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + float amp=waveGenAmplify*100.0f; + if (ImGui::InputFloat("##WGAmplify",&,1.0f,10.0f)) { + waveGenAmplify=amp/100.0f; + if (waveGenAmplify<0.0f) waveGenAmplify=0.0f; + if (waveGenAmplify>100.0f) waveGenAmplify=100.0f; + } + ImGui::TableNextColumn(); + ImGui::Button("Amplify"); + + ImGui::EndTable(); + } + + ImVec2 buttonSize=ImGui::GetContentRegionAvail(); + buttonSize.y=0.0f; + ImVec2 buttonSizeHalf=buttonSize; + buttonSizeHalf.x-=ImGui::GetStyle().ItemSpacing.x; + buttonSizeHalf.x*=0.5; + + ImGui::Button("Normalize",buttonSize); + ImGui::Button("Invert",buttonSize); + + ImGui::Button("/2",buttonSizeHalf); + ImGui::SameLine(); + ImGui::Button("Ɨ2",buttonSizeHalf); + + ImGui::Button("Convert Signed/Unsigned",buttonSize); + ImGui::Button("Randomize",buttonSize); ImGui::EndTabItem(); } ImGui::EndTabBar(); From 8e256d4dd5c26b6b5b20870e95e1f070a0c0cd1e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 16:33:40 -0500 Subject: [PATCH 539/580] allocate ID for MSM5232 --- papers/format.md | 1 + 1 file changed, 1 insertion(+) diff --git a/papers/format.md b/papers/format.md index 8528a7d6..14512fe1 100644 --- a/papers/format.md +++ b/papers/format.md @@ -255,6 +255,7 @@ size | description | - 0xc3: OPN CSM - 10 channels | - 0xc4: PC-98 CSM - 20 channels | - 0xc5: YM2610B CSM - 20 channels + | - 0xc6: MSM5232 - 8 channels | - 0xde: YM2610B extended - 19 channels | - 0xe0: QSound - 19 channels | - 0xfd: Dummy System - 8 channels From 7c9384a63f16c4328acde310b4d5dd98241e52d1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 17:01:58 -0500 Subject: [PATCH 540/580] update test suite with new assert_delta --- .gitignore | 1 + test/assert_delta.c | 49 ++++++++++++++++++++++++++++++++++++++++++++ test/furnace-test.sh | 20 ++++++++++++++++-- 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 test/assert_delta.c diff --git a/.gitignore b/.gitignore index 566a3c3f..25bd6d0e 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ linuxbuild/ test/songs/ test/delta/ test/result/ +test/assert_delta android/.gradle/ android/app/build/ android/app/.cxx/ diff --git a/test/assert_delta.c b/test/assert_delta.c new file mode 100644 index 00000000..6dad6992 --- /dev/null +++ b/test/assert_delta.c @@ -0,0 +1,49 @@ +#include +#include +#include +#include + +#define BUF_SIZE 8192 + +// usage: assert_delta file +// return values: +// - 0: pass (file is silence) +// - 1: fail (noise found) +// - 2: command line error +// - 3: file open error +int main(int argc, char** argv) { + if (argc<2) return 2; + + SF_INFO si; + memset(&si,0,sizeof(SF_INFO)); + SNDFILE* sf=sf_open(argv[1],SFM_READ,&si); + if (sf==NULL) { + fprintf(stderr,"open: %s\n",sf_strerror(NULL)); + return 3; + } + + if (si.channels<1) { + fprintf(stderr,"invalid channel count\n"); + return 3; + } + + float* buf=malloc(BUF_SIZE*si.channels*sizeof(float)); + + sf_count_t totalRead=0; + size_t seekPos=0; + while ((totalRead=sf_readf_float(sf,buf,BUF_SIZE))!=0) { + for (int i=0; i Date: Sat, 10 Sep 2022 15:21:39 -0700 Subject: [PATCH 541/580] Kinda simple demo song --- demos/lunacommdemo.fur | Bin 0 -> 12875 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/lunacommdemo.fur diff --git a/demos/lunacommdemo.fur b/demos/lunacommdemo.fur new file mode 100644 index 0000000000000000000000000000000000000000..43531b8bc141cb1aa260b96f7e0bb9224dade1fc GIT binary patch literal 12875 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 literal 0 HcmV?d00001 From fd98ecee4f549d4ea623883a1e7fd0dc2225d465 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 17:57:14 -0500 Subject: [PATCH 542/580] also on OPZ --- src/engine/platform/tx81z.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index 0fe0265e..1c6470fc 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -906,6 +906,7 @@ void DivPlatformTX81Z::reset() { pmDepth=0x7f; //rWrite(0x18,0x10); + immWrite(0x18,0x00); // LFO Freq Off immWrite(0x19,amDepth); immWrite(0x19,0x80|pmDepth); //rWrite(0x1b,0x00); From 7b19c8afa273f3f2e8c25065e31d3e23be390bf3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 17:57:28 -0500 Subject: [PATCH 543/580] no verbose FFmpeg output in furnace-test.sh --- test/furnace-test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/furnace-test.sh b/test/furnace-test.sh index 0b1568a2..bb0ec375 100755 --- a/test/furnace-test.sh +++ b/test/furnace-test.sh @@ -29,7 +29,7 @@ if [ -z $lastTest ]; then echo "skipping since this apparently is your first run." else mkdir -p "test/delta/$testDir" || exit 1 - ls "test/result/$testDir/" | parallel --verbose -j4 ffmpeg -i "test/result/$lastTest/{0}" -i "test/result/$testDir/{0}" -filter_complex stereotools=phasel=1:phaser=1,amix=inputs=2:duration=longest -c:a pcm_s16le -y "test/delta/$testDir/{0}" + ls "test/result/$testDir/" | parallel --verbose -j4 ffmpeg -loglevel fatal -i "test/result/$lastTest/{0}" -i "test/result/$testDir/{0}" -filter_complex stereotools=phasel=1:phaser=1,amix=inputs=2:duration=longest -c:a pcm_s16le -y "test/delta/$testDir/{0}" fi echo "--- STEP 3: check deltas" if [ -z $lastTest ]; then From eb2c01097f865fbe02af71551991ef4a97cdc860 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 18:53:27 -0500 Subject: [PATCH 544/580] GUI: add recent file list --- src/engine/config.cpp | 4 +++ src/engine/engine.h | 1 + src/gui/gui.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++ src/gui/gui.h | 4 +++ src/gui/settings.cpp | 16 +++++++++++- 5 files changed, 81 insertions(+), 1 deletion(-) diff --git a/src/engine/config.cpp b/src/engine/config.cpp index 862cd4c0..38cb2b04 100644 --- a/src/engine/config.cpp +++ b/src/engine/config.cpp @@ -239,6 +239,10 @@ void DivEngine::setConf(String key, double value) { conf[key]=fmt::sprintf("%f",value); } +void DivEngine::setConf(String key, const char* value) { + conf[key]=String(value); +} + void DivEngine::setConf(String key, String value) { conf[key]=value; } diff --git a/src/engine/engine.h b/src/engine/engine.h index 4b78828e..7c700e00 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -544,6 +544,7 @@ class DivEngine { void setConf(String key, int value); void setConf(String key, float value); void setConf(String key, double value); + void setConf(String key, const char* value); void setConf(String key, String value); // calculate base frequency/period diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 0b1d008b..0d0635ec 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -536,6 +536,7 @@ void FurnaceGUI::setFileName(String name) { } #endif updateWindowTitle(); + pushRecentFile(curFileName); } void FurnaceGUI::updateWindowTitle() { @@ -1724,6 +1725,7 @@ int FurnaceGUI::save(String path, int dmfVersion) { if (!e->getWarnings().empty()) { showWarning(e->getWarnings(),GUI_WARN_GENERIC); } + pushRecentFile(path); return 0; } @@ -1801,9 +1803,26 @@ int FurnaceGUI::load(String path) { if (!e->getWarnings().empty()) { showWarning(e->getWarnings(),GUI_WARN_GENERIC); } + pushRecentFile(path); return 0; } +void FurnaceGUI::pushRecentFile(String path) { + if (path.empty()) return; + if (path==backupPath) return; + for (int i=0; i<(int)recentFile.size(); i++) { + if (recentFile[i]==path) { + recentFile.erase(recentFile.begin()+i); + i--; + } + } + recentFile.push_front(path); + + while (!recentFile.empty() && (int)recentFile.size()>settings.maxRecentFile) { + recentFile.pop_back(); + } +} + void FurnaceGUI::exportAudio(String path, DivAudioExportModes mode) { e->saveAudio(path.c_str(),exportLoops+1,mode,exportFadeOut); displayExporting=true; @@ -3045,6 +3064,27 @@ bool FurnaceGUI::loop() { openFileDialog(GUI_FILE_OPEN); } } + if (ImGui::BeginMenu("open recent")) { + for (int i=0; i<(int)recentFile.size(); i++) { + String item=recentFile[i]; + if (ImGui::MenuItem(item.c_str())) { + if (modified) { + nextFile=item; + showWarning("Unsaved changes! Save changes before opening file?",GUI_WARN_OPEN_DROP); + } else { + recentFile.erase(recentFile.begin()+i); + i--; + if (load(item)>0) { + showError(fmt::sprintf("Error while loading file! (%s)",lastError)); + } + } + } + } + if (recentFile.empty()) { + ImGui::Text("nothing here yet"); + } + ImGui::EndMenu(); + } ImGui::Separator(); if (ImGui::MenuItem("save",BIND_FOR(GUI_ACTION_SAVE))) { if (curFileName=="" || curFileName==backupPath || e->song.version>=0xff00) { @@ -4628,6 +4668,13 @@ bool FurnaceGUI::init() { syncSettings(); + for (int i=0; igetConfString(fmt::sprintf("recentFile%d",i),""); + if (!r.empty()) { + recentFile.push_back(r); + } + } + if (settings.dpiScale>=0.5f) { dpiScale=settings.dpiScale; } @@ -4900,6 +4947,16 @@ bool FurnaceGUI::finish() { e->setConf("chanOscUseGrad",chanOscUseGrad); e->setConf("chanOscGrad",chanOscGrad.toString()); + // commit recent files + for (int i=0; i<30; i++) { + String key=fmt::sprintf("recentFile%d",i); + if (i>=settings.maxRecentFile || i>=(int)recentFile.size()) { + e->setConf(key,""); + } else { + e->setConf(key,recentFile[i]); + } + } + for (int i=0; i sysSearchResults; std::vector newSongSearchResults; + std::deque recentFile; bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints; bool portrait, mobileMenuOpen; @@ -1171,6 +1172,7 @@ class FurnaceGUI { int channelStyle; int channelVolStyle; int channelFeedbackStyle; + int maxRecentFile; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1291,6 +1293,7 @@ class FurnaceGUI { channelStyle(0), channelVolStyle(0), channelFeedbackStyle(1), + maxRecentFile(10), maxUndoSteps(100), mainFontPath(""), patFontPath(""), @@ -1728,6 +1731,7 @@ class FurnaceGUI { void openFileDialog(FurnaceGUIFileDialogs type); int save(String path, int dmfVersion); int load(String path); + void pushRecentFile(String path); void exportAudio(String path, DivAudioExportModes mode); bool parseSysEx(unsigned char* data, size_t len); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 53ce0cde..54da8e89 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1130,6 +1130,13 @@ void FurnaceGUI::drawSettings() { ImGui::Separator(); + if (ImGui::InputInt("Number of recent files",&settings.maxRecentFile)) { + if (settings.maxRecentFile<0) settings.maxRecentFile=0; + if (settings.maxRecentFile>30) settings.maxRecentFile=30; + } + + ImGui::Separator(); + ImGui::Text("Pattern view labels:"); ImGui::InputTextWithHint("Note off (3-char)","OFF",&settings.noteOffLabel); ImGui::InputTextWithHint("Note release (3-char)","===",&settings.noteRelLabel); @@ -2273,6 +2280,7 @@ void FurnaceGUI::syncSettings() { settings.channelStyle=e->getConfInt("channelStyle",0); settings.channelVolStyle=e->getConfInt("channelVolStyle",0); settings.channelFeedbackStyle=e->getConfInt("channelFeedbackStyle",1); + settings.maxRecentFile=e->getConfInt("maxRecentFile",10); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2371,6 +2379,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.channelStyle,0,5); clampSetting(settings.channelVolStyle,0,3); clampSetting(settings.channelFeedbackStyle,0,3); + clampSetting(settings.maxRecentFile,0,30); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { @@ -2403,7 +2412,7 @@ void FurnaceGUI::syncSettings() { } void FurnaceGUI::commitSettings() { - bool sampleROMsChanged = settings.yrw801Path!=e->getConfString("yrw801Path","") || + bool sampleROMsChanged=settings.yrw801Path!=e->getConfString("yrw801Path","") || settings.tg100Path!=e->getConfString("tg100Path","") || settings.mu5Path!=e->getConfString("mu5Path",""); @@ -2525,6 +2534,7 @@ void FurnaceGUI::commitSettings() { e->setConf("channelStyle",settings.channelStyle); e->setConf("channelVolStyle",settings.channelVolStyle); e->setConf("channelFeedbackStyle",settings.channelFeedbackStyle); + e->setConf("maxRecentFile",settings.maxRecentFile); // colors for (int i=0; isaveConf(); + while (!recentFile.empty() && (int)recentFile.size()>settings.maxRecentFile) { + recentFile.pop_back(); + } + if (sampleROMsChanged) { if (e->loadSampleROMs()) { showError(e->getLastError()); From a46ef0c0be52cc4bb0fad78b8c02abb48f403f2f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 19:35:50 -0500 Subject: [PATCH 545/580] GUI: wave generator, part 8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to-do: - normalize - /2 - Ɨ2 - smooth --- src/gui/waveEdit.cpp | 85 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 8 deletions(-) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index de106cb5..37b8cc80 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -516,7 +516,17 @@ void FurnaceGUI::drawWaveEdit() { if (waveGenScaleX>256) waveGenScaleX=256; } ImGui::TableNextColumn(); - ImGui::Button("Scale X"); + if (ImGui::Button("Scale X")) { + if (waveGenScaleX>0 && wave->len!=waveGenScaleX) e->lockEngine([this,wave]() { + int origData[256]; + memcpy(origData,wave->data,wave->len*sizeof(int)); + for (int i=0; idata[i]=origData[i*wave->len/waveGenScaleX]; + } + wave->len=waveGenScaleX; + MARK_MODIFIED; + }); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -526,7 +536,15 @@ void FurnaceGUI::drawWaveEdit() { if (waveGenScaleY>256) waveGenScaleY=256; } ImGui::TableNextColumn(); - ImGui::Button("Scale Y"); + if (ImGui::Button("Scale Y")) { + if (waveGenScaleY>0 && wave->max!=waveGenScaleY) e->lockEngine([this,wave]() { + for (int i=0; ilen; i++) { + wave->data[i]=(wave->data[i]*(waveGenScaleY+1))/(wave->max+1); + } + wave->max=waveGenScaleY; + MARK_MODIFIED; + }); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -536,7 +554,19 @@ void FurnaceGUI::drawWaveEdit() { if (waveGenOffsetX>wave->len-1) waveGenOffsetX=wave->len-1; } ImGui::TableNextColumn(); - ImGui::Button("Offset X"); + if (ImGui::Button("Offset X")) { + if (waveGenOffsetX!=0 && wave->len>0) e->lockEngine([this,wave]() { + int origData[256]; + memcpy(origData,wave->data,wave->len*sizeof(int)); + int realOff=-waveGenOffsetX; + while (realOff<0) realOff+=wave->len; + + for (int i=0; ilen; i++) { + wave->data[i]=origData[(i+realOff)%wave->len]; + } + MARK_MODIFIED; + }); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -546,7 +576,14 @@ void FurnaceGUI::drawWaveEdit() { if (waveGenOffsetY>wave->max) waveGenOffsetY=wave->max; } ImGui::TableNextColumn(); - ImGui::Button("Offset Y"); + if (ImGui::Button("Offset Y")) { + if (waveGenOffsetY!=0) e->lockEngine([this,wave]() { + for (int i=0; ilen; i++) { + wave->data[i]=CLAMP(wave->data[i]+waveGenOffsetY,0,wave->max); + } + MARK_MODIFIED; + }); + } ImGui::TableNextRow(); ImGui::TableNextColumn(); @@ -568,7 +605,14 @@ void FurnaceGUI::drawWaveEdit() { if (waveGenAmplify>100.0f) waveGenAmplify=100.0f; } ImGui::TableNextColumn(); - ImGui::Button("Amplify"); + if (ImGui::Button("Amplify")) { + if (waveGenAmplify!=1.0f) e->lockEngine([this,wave]() { + for (int i=0; ilen; i++) { + wave->data[i]=CLAMP(round((float)(wave->data[i]-((wave->max+1)/2))*waveGenAmplify),(int)(-((wave->max+1)/2)),(int)(wave->max/2))+((wave->max+1)/2); + } + MARK_MODIFIED; + }); + } ImGui::EndTable(); } @@ -580,14 +624,39 @@ void FurnaceGUI::drawWaveEdit() { buttonSizeHalf.x*=0.5; ImGui::Button("Normalize",buttonSize); - ImGui::Button("Invert",buttonSize); + if (ImGui::Button("Invert",buttonSize)) { + e->lockEngine([this,wave]() { + for (int i=0; ilen; i++) { + wave->data[i]=wave->max-wave->data[i]; + } + MARK_MODIFIED; + }); + } ImGui::Button("/2",buttonSizeHalf); ImGui::SameLine(); ImGui::Button("Ɨ2",buttonSizeHalf); - ImGui::Button("Convert Signed/Unsigned",buttonSize); - ImGui::Button("Randomize",buttonSize); + if (ImGui::Button("Convert Signed/Unsigned",buttonSize)) { + if (wave->max>0) e->lockEngine([this,wave]() { + for (int i=0; ilen; i++) { + if (wave->data[i]>(wave->max/2)) { + wave->data[i]-=(wave->max+1)/2; + } else { + wave->data[i]+=wave->max/2; + } + } + MARK_MODIFIED; + }); + } + if (ImGui::Button("Randomize",buttonSize)) { + if (wave->max>0) e->lockEngine([this,wave]() { + for (int i=0; ilen; i++) { + wave->data[i]=rand()%wave->max; + } + MARK_MODIFIED; + }); + } ImGui::EndTabItem(); } ImGui::EndTabBar(); From 06fe2daa017757749a3dea6fa025595c4deda8ed Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 19:36:41 -0500 Subject: [PATCH 546/580] update to-do list --- TODO.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index cba0b7c6..859ad68c 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,7 @@ -# to-do for 0.6pre1.5-0.6pre2 +# to-do for 0.6pre1.5 -- volume commands should work on Game Boy - stereo separation control for AY -- "paste with instrument" \ No newline at end of file +- "paste with instrument" +- FM operator muting +- FM operator swap +- bug fixes From fc4aea3c916ca8cd40fdb66c72d038853b199a68 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Sep 2022 21:21:08 -0500 Subject: [PATCH 547/580] update demo songs (#661) --- demos/FEDMS.fur | Bin 0 -> 75333 bytes demos/hope_for_the_dream.fur | Bin 0 -> 3467 bytes demos/iji_tor.fur | Bin 0 -> 299701 bytes src/gui/about.cpp | 3 ++- 4 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 demos/FEDMS.fur create mode 100644 demos/hope_for_the_dream.fur create mode 100644 demos/iji_tor.fur diff --git a/demos/FEDMS.fur b/demos/FEDMS.fur new file mode 100644 index 0000000000000000000000000000000000000000..4c521dadaa23f90f934abdee9e692d25f2bac28f GIT binary patch literal 75333 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 B?h*h1 literal 0 HcmV?d00001 diff --git a/demos/iji_tor.fur b/demos/iji_tor.fur new file mode 100644 index 0000000000000000000000000000000000000000..84a6ac5b3575319834d026f47838a1e8147d5155 GIT binary patch literal 299701 zcmZsBV~{4%671NvZS2^#ZO@Kv>zkP!+qP}&*tTuk*4y{%#k=?Z>4-*jS7x59=&Dm5 zS(jaqS!zqo0^JG>t*z-iT^d-1r+KS_^}{%YQc(p)3~!d>55=7?3itE+8RBvUmg0$6 zI*WPYbVM-okRbtQT{D~d3T-c0JL@Og*hoUm&;kO0eY)dKx9M%`8?|oh?8X%?)~uJK zk83UWh4=Z6o36JB_iFpU_{6Fa2n*o3+&A+_6tBIEV8RBxC(KQFb8d*ALr0m*FxYRX*#t-s13)#Lep5v*lW83)X|Wd6pRy&0?3i=8RFCF+(T1u*hPruk zK4$VFY^e<9%c0{ntTo9p00rqbZLzj@~QEjm!Bv(@FR}z#T%2yj?Wy<6|nKXPY3gIdtk>_ z2n-a~>W>s&aokbeAP{Wbi4k<&p%bL{^c7xoPZeVN^^$&-^0r?p5%Aqv6Nr8H7A^ty z<^}*qbGNj-+V2#x-L1hAwi}+RD}#kUyrYGB*}OD(yK`H{yk0!Lq&is=9A&&-;Ydhh zu&2_M{y9#tR5=WJ5945ukvPE7Y)}?MM!;VV#s2*6A^yiXqkfbXzfa77^?Wn^t*%kxTx$K@HW~6px@q!wdMNT1eq;nw>|x7J zIzZkp5WydJ1dwNs5TVOHm4L+n zLH2{_%wl^-tf+^$z&BI$aj=7={l*u$ zdYhcYJuxgKQ|$4a7?}tNnauT-@LQgRbpXT>4}b=((lHckGXg7-KowC^zIBY+#1c+1 zXTzjZ#ojTs=kmA2t>XvSZ*~!kp8oIIqTPuApM38y=?1nf=W-mB19!rtS)-{{>yibe zsOcH$x{%DpqTR-C(dpSm_dnj>_4zq z%*JFaKT$Wg@(ZlsEPZ719H_zNTP1+JE#yIkD~y;ZSCy*utWDD^TM(z?V}!IgWh zA?_*_eG%*K?-*V;Q&pI4O*E z(55K;hz(Sq#n!uGVJziH_9OSmnS?+0ucY%vD2d$J&;@}eV22vness-)Wx^Vw(`@}& zwKS1_BK=ul;zZPk-|_Bv*`~8?|2cCdwZ?Dv8h2$&t=(%2Qz6_zWGW<6OP^(zZK0)< zJKIKUy6H!YpK|{p9G0WiWMJz2V|fd(q1wsCmSTIlX7Rt@K6eZ&-b6gRu3+G>w5CB6 z!J>$lZ`7JxvKdwoGf=cDK3kN=_lkAc5|4KF9`@A>vjT)KG2A!={Ifm!<9MH8xuKFR z-$G};{zI3GdiORcmVQxMFqvxqGvEG!fkR0tZbG$31b0Xj$cK=MlCTTKsl}y_MN^NA zm+bthl)?z605!55YBn(0!}AEp`fu#Nk4tRQxL#_WIFikbq8-H(+w4NH#*g2^E{wv6 zWC>mM;E^9CqVt1D{>HBI;aYun?fo1a{x=h9cyRcl?*31?07z6k!=GL5)Zs3&AZh^!9$z6^dnbgkEy1sa(POf6qYMM%1rpH&wk*P?V6$U(v^E{ z&v(Vg^4G}I8m;A_s;!_DbYADnYpg%jSYfp9Wc>j+&D|_i?HFFGFZ2|#T?_l}--EZ8 z7+^xm+VmE_r8AQWr;@LkdoJW$1>H`q)M$>A+K!v=4QU1)cb0-uPavLQB%R*(B2SR~ZylKa%7nETMDACden8(`TXZQP8rpdi&v zrtMy-<6dnPMiFoYh7+djG*vmXjB!aDH^PBlPwS^cx>Zs!?-ZH@lK($Ir#i@RdUwoyaqsHbl4Q8HG{wuN@Ip;17rd$i(=5JYHGnBs;2V(&#YVEg4P~4lB zp34GaKUvk^-jGGHi7Wq3dno>&i~4R_3Ih#{_0CLNYdcQ1RY<7ru#$}NL9o+JDIC+KG^Uk>1g>h^zGC<~Fl+GP$dS6!R;qiH^|_hYtsCMG~oQjjHOZQ9r&W$5E7$RTvTeO6X?Y+tX{c|JDFF9dw&d^i24zeO^KR>HmeU3vqYC2zG zS2le{qB->4CaQBgj#Dley7u33yKm1TYu+Z`PV~Iq$62O%elDG7^!6Tq(W_73PLR3f zWRH>dfB)q^i&a2i=U}_C-hO^Re%bN*s8!&9nas`k-YV?*-cs=UT+JnT>qG4R`MU9a z=@9VSFWvc`cJGFNr2o_Xbw%iN!n5<1d*gQlDe$>N_;YBE`286#0eD+I=y}^pRQS4^ z0eJci?C5Xbo?qB^K21L#cXeogcz+BRhHGZ9bl|C%mb!cgz7Ho)U{ve6J{N1~`8{FU zwR>(oaqPIAbQ!##1ALAGYJIOR3_gZAy5FXLxFh}@?fnjLcV6FDdcK=$zfJ)Bw@bA? zXWt*)9yeR=TaF*q7xwLrTTd&#-;FCi#|s+zerM#E*?@0P>uIeePV?&m)5znM)T4H1 zSQuSdZBpt8=@Ib{2yu$f?!M{g>*-^?8~dHMgDrZU9j~*t69d1eV)O6E5rLnxvC>@6 z_ZfvR;M4FCg14cAp0B4F!2K?R-_t4s!S|a8BH!a}VbA+gVJ!dq=#1aVu$y6 zwbpPx_UqkU;rouG=lzN>$LqY@{QLdWnc@2>7*qdqBSeFv`{{j$?;`a3T^o)oA7b7Px8x{Ql(x=FY6FEdK7GK1Q z#VwV9Mw({p)-iDA(x#X5S+HNwzuz!_KR$lG{{GJOa6FT{^S91%ZhvSZrB<`;zG*>0 z;Hzn2hV!DTaYn!Ec+*)U*ZJDhdZmW%=M$FUZIL{;{ZS=V-*3%SL-)-xZfPmE?Koq` z=h->86~)@fm?b<^phy0ylj=es0xd8f&4EBeCj z?;fmyzlgxg+Kj&Um3d9)X9R6+=i~eYgTD7Q*GZQ9cSfT+y-vgrebx$NYe_>zML`vs z_?asgA3?{^U}KSdf;LUD^q2=7P8MEn8Wujz<<;5M^`(uywXLPyc8|Nkf_&Uei#xlm zm-WGLGyvc_Fu}n855tVW$KwLv?LkF>?``k~@UgM;jdS>QO8QTs+Zn+3?u_620pZu_ z$Iee5V$Vz0%@<i$^2tKYUv~guqT$P3v>VaxU}MP-F{*J*Kg}x$FAoghUcdHW83>@ z=Idqare&E^$d-y?JlU9Y<#Ouf42EEbJygqX%U$G*=tS2i{DqhfL~a8IsZ4z!8A zz!n$O*rIsRL7#~S#seatzP?>sdib_i)sQ*}{!3RI9nK@qwm0_PH(k{?c5C<3$5WZ? zU0=(Y_P||l$C>uMJHsmm0OJGP+n3{Ej@=QCZ4cPRyX9j!`<^aK7XJ5adcoWKYj2%a zyN#BsFMOVso7HCP6}vn>@8`>{j#f+ih3*pHkAMsv1Uz1svgYRI>gMXM>aNPh!otdq z%F0UI#qEua6#+&lbpc*hUT$`FekOi)V0Nax7lrr0Z$VDH@S%b`QD*E|nFcbch6*Zb zIT`CPBFT*3STP6SLTKQLLss=`HV7R9M{eG{Il8qRJw!cuWo2bWP(DRfomB-DFg((7 za(cFUzItC-ZSeoxVy#){&=)v7JRA&*Nw41k_MJkfgV1C&G_FRgp3`DV_I57szbFifYG0? z*BW8bnx6i#ZwoBo;Z3SOc2V2)d|p}G_1@ZJyL#K2s_%1GocjH~f@$FK9c-TKd);Q9 z>%G@@lJhaqc>8jh`~8{P!wcVi59bpMnBo2DH!$$Id+X``oS&%eejX3$=>dMkD07(b z-uS0YoA=E(hN8TVhW$?O>gufrBVIT~LPC}>*ifcue5U)3!txa zh&JUH&sUS0Kg~(D`}P~AzQey*^xV#lH1r&omNWnmM0?IFzIzaY;kfqNfQNUTK98Hf zU(Y-@?HAV_*PW;>|GGOL)85@4E7`YhFI@(m2habmOmOZ$>(~t&Iv=#Vu7I`x1sQl> zvE_EZFK7Tq8Mw@eoz&`e9AC0%RBJaIl?Tv0;96B&SdGib$iQ?Fq)wPIN5Y8|x=71W zpwvsw-rz!}8%ds7@XT&*Ho4DCUv0E@e@vIOvUkCUe2qgO5rrI^`~5_Y03Iq0c;Bf6 z$Nr^>&)pfIRYJd82?5{RQpE2|bHuM#0HF`mHsHMx67Zau%l}vx@Gby&oipIQN9z6l zm-1h03B51f6+YkZcK$UM_QNT2eD22tc;8qhzthcgLF0Qq|1sUwa_8z$E~nFCyVc%k zIkWxsfzZ@SXmxXWeT|QWLxBDA_T_&Y&YEBBnozz(Dlce_hu0$z|$^f9Z5P4Z+y78@8C| zz(c?S%(J?VFPD%&mUBA1raUWWwBV6{Ph~tz2lp&l?_PLXYveW_>jI&3V&HyAGk%l9 z=AVe|5!RrRyNU!phTI| zWJQSu!3q)X^WTBA@%kbhzI)_p?SgM zh$K-2ojpA25E+|lOCd$9G!)#ub#!QlwIyk_fiDpWcxOQv=;?tzrs!Y0u-TzN=+h8> zTkxj|oh&blKYl&LV;N{}xk|v$chA#hf&l{R`ELF^OIZLo2USZ*z9PAg|Ny z@)l7X0?wcvX4&`Y`G5mdW?e~3OEVr385w!+%#^}iRX`OuPYtAuy)Vp*cMI7&>=1Qv zW)*6Q*Q+&Hv&GXY66XEySIfb}8IyRA)OF ztHl^ol>T45Kt`%Ny}d|jbg~>sFcQ5mWMXP;b?#xjh8~>9n$ae7kgB<0&{gL<$!eM@OYqso_LspIbx#S{dET7mWO#Eq+!!zoi;ATL8 zSu*1R1RLL3@<+I+&0&bzUc{b5uT3sNfM#z<*w{sD8iuavK(BlBno&NzRG-Fi(x z?&BP&u)ta~v#2+6=h5%8Jm&>Dh$y@|b7L8S)mBq@oYt_N$^ zUbZ^it~Z-U^13*?EY^26H+_I6JJ2(&CCtq=+}#n=&U=Y=X^T*I_xW$#MvF+}u}qNT z1gQKGEaeu6eTgh10zU%=sDmu}gR-;Bj46;f)9Cf+_p= z%KcrW4nkz)21@cks9$v5fJVC`d71s;XYnQV(F2jc6HzxsKvY<+>mrO=E2l$A|Qv#?^I#CI}ikblYcR9iZzrQ+%3Y6g5Kb6ArWJu zqpCKoVGEeUg77EhWCsZKmLgK9KoC@8!2*k1K|q-FE%j=ZTE96PUpQ;*p<$s zC87(rNFhnN-iZ<9uR}4l*8FhPqu+jXr|sX%YvCmHHEielb;!c z>oyCDDz+J2i(^Y^p_f^vGaWK-V#3~^7(^Gb!46Q;vNW|jlbwlAu21@6y<812IS9TvtDP8w{n#pDK<>aH0(+m zw1?$J=E(x~;Z(wepWDD)XLMV|^vfj4zb{}cLV)%i(Z7(}HXS=5hDa;pTPvLcbejoV zJO}*sKp#8jKE{%}>fFXblJJaP3&1sRDKB`Aob*mqTq^kiBv&tx@@D$t=U{P$2xl8n z?<31?BwIcZV>Sw`!@_rE7LtmsZj@qpQ*1dpD(Z6d$9b;NDtj3IGJBN|{&w{B6q5SE8$wh73=%tW z6v}&@pwTTYc=XbvROv3Pmj%6;A8&zQaN*9J=GEl4Gxw{Ba{55uh@^f@Wh)$z>Fh}u z5Nmd@yycw*w>nq`f{^+IG8T=zkOlj@3F(Z>b>dwGwMur&9AHpbz@&QQxfs!N;ZBM# zgMam6PPX`9A#}uTP_cwhOTZ>bMaYOo+5|41uOBIxE?gqsG9qT1X=zvTfDiAdu}=W^ zJG>ArA0PiUHfbn)=}ssbPX+a?P?87vi}b>Cq%>AHj8q=RmnWY zEYM5_NxJ@;mH;^Z9G<`t&M>UWG1%th5S(GqZdN9+xQRQis^+oAq(}Y znE92k?skbCiExraw(iBl%@*4MBqf$yY`uAKJq(UXM_a37gpp9+IF0tv{`?3lhwI+i zT^MG&x#E?too@}<2uml7?)cU@ztGn5eT25= zc-dTd^Spp@LwM2FpEzt+ zS6G$>vM6)-=4=s!lw=I;KM??HD6ssKFr>Nf;a^PG#wR}GX`wr_Dy^^k5Y7EcO$+N|Ee-i_=l`BH z?(z9}lHz7=pL&yg!N7dA4~U7^b&>5p$K2*TLI< z3wDmsSkb7}Z8Hfi%TV0sF^bi?5>Y-sh!DHWDzjs8rvwb@uLGbxz zpXao>^5Es`HAyyXbUBbn{UiCpPYUC-* zKwh@&kEoNOO%*)~BHZAis0r1vO_@+qzS0P?Aonj#_V^p%t#Ybrp4~m=3GuiSwnpwV_XEkFg;g4Km6N;iBr2uKwt& zVx94*`uQIE@)(Ai8hQ$oHc1np;3JyjU&>o}J}!B_{Zc zc};DT*0HEER6+)L?-dM0OU|=*343Cm6a^?JKsOQ)NDpg=>});mN9vFYH`OwTTj`@Y zwUJH5Yp7dD>!hL4-|Mo*z(ion$Fy8y!LULe9kVmf=RDROP@pOS#Q6?xRg*QUxovX{ z^%|VU3XFtm^wc##%9y#&W20?0wlFVMI$FBlhjac+2^q|`Pl^XkL~JelX+=eaR{v|z zUf*BgCW)9N(d6pvP3w5h?YHR{9XV{D&u8E?wyw6C7gc&rw6t93T<2d)kxz{}-&OKi4jbjqeMxx6*5QAQ2SlmR#4yFz1nE8G*mov#8tFV^0pxnnt^zYZHtW`iIUCt z^}*4zkr?)LV{5h34Pb?m((I;BHlWP+G0&i1mMtmUb<(oIIA-=xK0(As4~ zw&|B1QLgbBTbbM7U|!s2I)(*X1uC+&WW9e6P@Jd%OWZD4B0JDKYP5N9>+o5_vq?rY%HvNYp&kV2e{8D<`wE4O;(jm z7-i8H4@3+Nkfq^SM?ry)px02jJ8f#&(EMsrM^{f;N^3&n+m7yy^E5IyY_Kn){M9bX zji+v^9TluRomOjrjz1YBOu*wGP50o7{sYU7>A=I(-*nQetxU_L@41{{A!5tkOBXzM{ftNs&RZ9`jfm z9hV)?dWW~Uxna}D3VO2e#tZzb#DZzG+R%`ixn5mEP&GrtB3*^Mj?MYt=&0dG&eTSW zou~Q7^YV2GJ2g7&&?2WP2NziEhSAIn#{&7o$#mlpS}NK!HF}wga1Pd8G+Db2#0cAv zLKu4@S~L<}ZsH1OD-os~jgtq7)e~7DO}0@}UrxOXjg%AXOw@C0D;&IBjO-w4eEl4B zda($}7$*$&P-+=%X}fw+LqsQ>#&$S z_(yL!?KJA=_}5m}R$lJ*Kl!#@bMen9%Pop@^dzw_?HR9>r?k7EsJ&tGpo;c6p=lxm3p*y1a=xOc@CfOU3Rv2> z>F;p`gW17Y(x@YAJOZs!urL+hDkKUjD|Ps%NVh)(bjH9{JsMhFcv{*7ZT;)3q+lI4 zjOXC1F$M`g%|_WORb>g~K5@Uc;^iU8R^Kg^(owh=s^yTDID{|>twInq3Bd`BbZ3in zr3u@Z6hM@i%RD(*0w>fYc~-7mk~Q0ysZ=;AxtZ&#mjt<#PM!t_#$UYSb5D;4QiPdn zmY;hTQ%H&GnacPGm9XcF{=UfUiirrVVq2q!nXY6a?ti)s{$hs26&&b4K&+ zZjk^A%aZ!Kw3BVrz#zs3xJFI5F=fc-0jUzd5K3Q=II!C(os8wZreeVwm8g0x(IFSL zbgQ;BES8YDrkD{uJ4@y~(rPmeb;a0_7wlB0gadcikSUiNCCvb0f_W{Aszf@8(>*w!#onIsTxYK4b)bB6;h=}~n2(t)CYJIlEqp=0Z!4(ZHe zUR|BuLNW#tB%U?Fhws4eN0N%*K9~fWT3oBj^50E0C2ifTTn%Q--ema^DRmP|K1OC{ zW*5Vq@2@M;T^uQDUPiPz*-i_`d$a+hs-Zo0ohsISE@ipOrm^FO1WPq3>WI@8j6k=Xsa0#Yl5@drBX6nma-04XRNi`IO(#!=92&klKdt~6c(>84BqLoYHv?x-@cVmiF z1>(bf2&j9EkN9w}K6|2M`NMsMLy3QC5z6+x0kWnMT+V1hCcWNgX`6boZW zU`Sd@^U`#9@Ff;03#5+OCW>@$_|#zemQm@&dcU^!9S<=Nx%6Um?e!6`f~N{pst9u6 z#K@>Q*>N7_9zV`hS!;&HLE{~$;*}Su2kWWi7^}vtNaiIEq2rIVGBI_5rZJ`p@R^H} zBOKM@$dkfd#Wv`+@6{B&jZ8sl2r1h*L_Hp^j6O*+5F* zhv|+FkB+@I)nO-?I>+chtfE}p+}vIeW8~!_P%Np_lUzWmfJAK^x$p>TR}Svl)02MP zB0*v+8L}cdOQ$56FyrLhf-aA zKMhKu;GDC<(#mfnYyKuQs#|B6Y#*UvCPK8g%hP1k?5xuSExXf zT{9YAnSic>Sx-!KG!(KZ$EpE-I5;mZ!;7UjWbMY0CK6Salt6R4 z%EBw%x^7y_Ci#OjpbXcf%obtZ%ZU^uA*OV&d-;me6VwL|O~DEE+@Pwh#40CJR70x_ zQ;bfHJTj!6FR84KB8_7b2Z5|9rf;a_Y$x=)d+T>&S{^kh_pYQ*xrT}nv{cLokiv*a zyo2u2JS*ghcaXRcmebK+dR`N5GHYgNv;>sCaDN6Qh2n%cMNTw`5-^Yvf0YE22-9%Z zLH3aSNwb)vDR$IiYwj`NTvcsKtpG|gHI{SSLkm0u7B8M+d0k#ix#7Y)3o4omvZ$1~1v07Izl)=E z4N>3@@NlDM%xjy!fQSFoGZRRS_6o^SpeAG}@8=UWsV6uln;J%e176aYs_V}t zk}Hf)Q5STg6MOi}C(^*1ouJ$sS40&kDK(ZiLl`q$tjUNI8!WtA!Y!#BJz`28Y@yB= zUVy!Flqu&H3Mx+wEFdMPROG=~)AuN}h|}kk2PLV^g+t6oKXHp1uB(Ka*}xyi@wu`Ld2tecgVCEcyB512IT$dW*!gi6)N1xPFF$}7=j zLpY02cQPUjEaYjV!4(dpN{?%9#O>FE>6b|&!~G7D)9sK_6gO=hRr*VpQh>E=gG_V- zJh31+0pte53i=~wiQ@qeTzJ?^vQUpjhQ%%YCmtoqKXr+Y*8@{O*R)r_(UdwrpuSfM z#=}Y*gsCi}{=R?$g@{0EfK7rsxYD+6QL@eo!U-lrC|#KB)^Qh(dByPwD|})^Q`7G%;$L#{l9s`?R)R5E z2C@iQ06~MvbHdML%MzA^AStQyJ;nKT4*pv>i?mOizF^F#e)Up4D{T+l>JrqSGhdL1 z!nC5K4qKTu+{dFhO=F7UzHDWXKzK8l2WXO@v=R$@HY0Ju zI42lHQbCQ}_zKF&cYS|pv{)kS4aHfF!6g}C2ltoKKvMiMN&7ShP4BSa9?2DkNjaeH`u1W!Msb+O8-g5Ro&@0IU_m_T4~BI{qp! z8xls@UV%7_?g<$2QX@PjQ8}YxW8-|s(E${(+jz!)k^q&^$qW`ZDLFRv8I{!&A`;^= z_N@3IY)5}ck8r#O(MJD(fMZ8RaNI>lC}k5tMQBP5ECk2joc>h5wlMGZ;*_utf{S>A z`Dkrb1F=>Io0l)kJhuOCWm78v0}%_)>GuhC8)n8T3`Fe+R+^58>hgbF1*)IG8CWP8uWpKh z#Z?B;s}IrH-!~MQ5*@bw4S}TS(l01sV@36`Q*Hraj%ReYh-6}RX5)~K5q<~#2lrd{ zGz9jy4LhsVXUZH~zWJZP-)M$?>H1N)zbv>TH6=OBOzMU(ksHXBG_Ngfka5P1;8SXI zfbmW8LNn+~B#kS9(ancq-puw{#+i-b=}4QRl9+d^arl1MvB7vSuf|yK3c6A0wET{u z(HTqGGevX2LgkP~Lmoz<(_OzEg|o`H@kB=m;bb+72)+%8#`(jSj*Kwwz=}h}d{7&r z-HTg?_Ebe{dYGI@vzUq+5^WvA4JU+?S7X{7A~$*)mgHENT|bis6mJQ# z1Me)M@@CEJDK!=FS~i)^3TL1!3GNiA8)^GHb*}0087^5s9BT=aU{AHvW3c1lE05S7IFv%iOQFVd~&t|^ekhyY=?~{ zbUZaGyGgoZE%lWN-s&t>2qq0EA6Uk(_H+XE79xS{A?mCpoarR=o2G0N3VY6;9O~ei zbv1D-6{H08k@#Sr^oqW-5bUC93%v=7_|S`RX3hkr2vTW_hQdXDkKOnYEb@;9aFsQ$ zuc~4bn6jvq@^o`oQTa2@#7HbBNriC7ie75ikaTZgW~a%pUmG?VC&;eZDz+?6jGIxs z745$kdi?_rlG@JKA6HAWez(8HtMKbyB)u{6og*d~Jn zDzW%O$W&UW#=TVSclcch={d+CLFmAnfwB`{?6r+lylihfsZQ@O zEPggvL5t;vd}~-ih?)R+6*b=Mh32l^9%vx&zP}E4-S9n)FB9@v{#w2NOzAt$>74-F zN+of;OzzheSDCpk1#Z;zyj=6x_Z(a+7&y-S8wGP+$#(bM>kJ7=ct;N|5{wBEf9~Wd zdHi|jxViCq>oc(5{F+3qeR-95>3%y;WVrUSH9j#^ky*IThSb){K#UUqfDECaBoCH8 zPMXTr;rW?ldwQZ>`DNg_H& zd|{o4aOH7!)k@&ycyN=m_PqU}v$Jt~9OLfR*`PKgVa5nS=Yki!Q+Mv%t88M1_V`TK*vS)F!F~yUyv)1&m zmGT17$^jq6*4jEKKA>GHOH+6zYDsKwZXB_Tb4Iw3v>KL3Rdw)iueq(ynB%roWuxin z^=B!gmO)!pr`t=2UPEno!NjmZ0BL=*tHX1{+mg7qVc^avnmUfRBu!Jv2-VbyF7Mp{ zVEYn4zwzSkCSDZqEZN}fq1+fULe8N^5)!e=70#vP>}jlJI@e78Ff&<9bDwCc#^qe0 zM?xQjUc4x>arrFmOXlUEc*%!`b83Tac@4O^`tr`%tS|Qb(b+nyi5IDl;}!DY4ct$G zJsWSVt)1q&N+`aLSZ_@X8L~yR(de!v?J= zBY~WJ$kHNvLg^$|xlwQvxXuTqZTnbKR2r{I%x;BK{yd8YotC0OgHsMmk6>73O|n&# z>k(Dx^R=I4l55D6sy&%WDdd(m-|u`X4b(TDgqMPQDB|}x8xX;~tGM^7a5$1PtG8V&vrUc`nCgBx>u1$y z`lwGU4=0Pu-hKKM>xMB=d+u)eel2QB8`2rdoxOX0o|aNk7AFnSd&wj*gvW}3J|1p( zeZ&X~w0Td+04~p+xjv*Hi;BlHQ#I@|sI=9U#!~L0O`TsmaF~wPBv$Md2G2v{QIOT6;J}Ul=b#tg_*ok zX3}J=n?-bg>WmR4d5v�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%0D&UXZQbOXjDYI-E9L9W@bkL>(w!Gk9zuK2op%i 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

  • 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 Date: Mon, 15 Aug 2022 21:18:27 +0200 Subject: [PATCH 384/580] Use Amiga 1200 (AGA) instead for this module --- ...government funding breakcore-ish remix.fur | Bin 417084 -> 417079 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/demos/government funding breakcore-ish remix.fur b/demos/government funding breakcore-ish remix.fur index 5659ca1a1a930c347249e700da26b6bf5be42bfe..5c3a47ce2df99d6c61cfe83503540c45567c0dbc 100644 GIT binary patch delta 386179 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�(-fXxl{z2X?42? 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%0A$7ug4*A=9RALzN6Cw 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

    8oPtwaPQWwi4{DL+(V5#D@e}p)XmwMif`pxQ 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%0Dk$t<&$LQT6%0t}G#;&~ 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 M4Zc9H`O1j?AI$LVc>n+a diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 70e09e72..d3d1d9e4 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -83,7 +83,6 @@ const char* aboutLine[]={ "Miker", "nicco1690", "NikonTeen", - "SnugglyValeria", "SuperJet Spade", "TheDuccinator", "theloredev", From 5aa287eeceee9fe361038ba2749764e1dc8383bf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 21 Jul 2022 14:51:26 -0500 Subject: [PATCH 222/580] update format.md - CSM for all OPN chips soon --- papers/format.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/papers/format.md b/papers/format.md index 3e358346..6281293a 100644 --- a/papers/format.md +++ b/papers/format.md @@ -238,6 +238,10 @@ size | description | - 0xbe: YM2612 extra features - 7 channels | - 0xbf: T6W28 - 4 channels | - 0xc0: PCM DAC - 1 channel + | - 0xc1: YM2612 CSM - 10 channels + | - 0xc2: Neo Geo CSM (YM2610) - 18 channels + | - 0xc3: OPN CSM - 10 channels + | - 0xc4: PC-98 CSM - 20 channels | - 0xde: YM2610B extended - 19 channels | - 0xe0: QSound - 19 channels | - 0xfd: Dummy System - 8 channels From f6b45d3d9bee96d661fcfc5a19f63d21379bcbee Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 21 Jul 2022 15:21:29 -0500 Subject: [PATCH 223/580] GUI: add Namco C163 chip name option --- CONTRIBUTING.md | 5 +++++ src/engine/engine.h | 1 + src/engine/sysDef.cpp | 17 ++++++++++++++--- src/gui/gui.h | 4 +++- src/gui/insEdit.cpp | 2 +- src/gui/settings.cpp | 15 ++++++++++++++- 6 files changed, 38 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 97efdf8c..51903d8b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -53,6 +53,11 @@ the coding style is described here: - don't use `auto` unless needed. - use `String` for `std::string` (this is typedef'd in ta-utils.h). - prefer using operator for String (std::string) comparisons (a==""). +- if you have to work with C strings, only use safe C string operations: + - snprintf + - strncpy + - strncat + - any other operation which specifies a limit some files (particularly the ones in `src/engine/platform/sound` and `extern/`) don't follow this style. diff --git a/src/engine/engine.h b/src/engine/engine.h index 4bf4cb65..896c083a 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -355,6 +355,7 @@ class DivEngine { short vibTable[64]; int reversePitchTable[4096]; int pitchTable[4096]; + char c163NameCS[1024]; int midiBaseChan; bool midiPoly; size_t midiAgeCounter; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index a5b689b2..25e35227 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -54,7 +54,7 @@ std::vector& DivEngine::getPossibleInsTypes() { return possibleInsTypes; } -// TODO: rewrite this function (again). it's an unreliable mess. +// TODO: deprecate when I add "system name" field in the file. String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { switch (song.systemLen) { case 0: @@ -177,7 +177,9 @@ String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { return "Famicom Disk System"; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_N163) { - return "Famicom + Namco C163"; + String ret="Famicom + "; + ret+=getConfString("c163Name","Namco C163"); + return ret; } if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_MMC5) { return "Famicom + MMC5"; @@ -205,7 +207,11 @@ String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { String ret=""; for (int i=0; i0) ret+=" + "; - ret+=getSystemName(song.system[i]); + if (song.system[i]==DIV_SYSTEM_N163) { + ret+=getConfString("c163Name","Namco C163"); + } else { + ret+=getSystemName(song.system[i]); + } } return ret; @@ -213,6 +219,11 @@ String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { const char* DivEngine::getSystemName(DivSystem sys) { if (sysDefs[sys]==NULL) return "Unknown"; + if (sys==DIV_SYSTEM_N163) { + String c1=getConfString("c163Name","Namco C163"); + strncpy(c163NameCS,c1.c_str(),1023); + return c163NameCS; + } return sysDefs[sys]->name; } diff --git a/src/gui/gui.h b/src/gui/gui.h index 656b358e..851e10aa 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1099,6 +1099,7 @@ class FurnaceGUI { String audioDevice; String midiInDevice; String midiOutDevice; + String c163Name; std::vector initialSys; Settings(): @@ -1201,7 +1202,8 @@ class FurnaceGUI { patFontPath(""), audioDevice(""), midiInDevice(""), - midiOutDevice("") {} + midiOutDevice(""), + c163Name("") {} } settings; char finalLayoutPath[4096]; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 18e28680..81626b77 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3063,7 +3063,7 @@ void FurnaceGUI::drawInsEdit() { ImGui::EndDisabled(); ImGui::EndTabItem(); } - if (ins->type==DIV_INS_N163) if (ImGui::BeginTabItem("Namco 163")) { + if (ins->type==DIV_INS_N163) if (ImGui::BeginTabItem(settings.c163Name.c_str())) { if (ImGui::InputInt("Waveform##WAVE",&ins->n163.wave,1,10)) { PARAMETER if (ins->n163.wave<0) ins->n163.wave=0; if (ins->n163.wave>=e->song.waveLen) ins->n163.wave=e->song.waveLen-1; diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 9984e499..2d05ab5a 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1156,6 +1156,12 @@ void FurnaceGUI::drawSettings() { ImGui::Separator(); + ImGui::Text("N163/C163 chip name"); + ImGui::SameLine(); + ImGui::InputTextWithHint("##C163Name","Namco C163",&settings.c163Name); + + ImGui::Separator(); + bool insEditColorizeB=settings.insEditColorize; if (ImGui::Checkbox("Colorize instrument editor using instrument type",&insEditColorizeB)) { settings.insEditColorize=insEditColorizeB; @@ -1453,7 +1459,11 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_INSTR_OPL,"FM (OPL)"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_FDS,"FDS"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_VBOY,"Virtual Boy"); - UI_COLOR_CONFIG(GUI_COLOR_INSTR_N163,"Namco 163"); + // special case + String c163Label=fmt::sprintf("%s##CC_GUI_COLOR_INSTR_N163",settings.c163Name); + if (ImGui::ColorEdit4(c163Label.c_str(),(float*)&uiColors[GUI_COLOR_INSTR_N163])) { + applyUISettings(false); + } UI_COLOR_CONFIG(GUI_COLOR_INSTR_SCC,"Konami SCC"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_OPZ,"FM (OPZ)"); UI_COLOR_CONFIG(GUI_COLOR_INSTR_POKEY,"POKEY"); @@ -1972,6 +1982,8 @@ void FurnaceGUI::syncSettings() { settings.audioDevice=e->getConfString("audioDevice",""); settings.midiInDevice=e->getConfString("midiInDevice",""); settings.midiOutDevice=e->getConfString("midiOutDevice",""); + // I'm sorry, but the C163 education program has failed... + settings.c163Name=e->getConfString("c163Name","Namco C163"); settings.audioQuality=e->getConfInt("audioQuality",0); settings.audioBufSize=e->getConfInt("audioBufSize",1024); settings.audioRate=e->getConfInt("audioRate",44100); @@ -2194,6 +2206,7 @@ void FurnaceGUI::commitSettings() { e->setConf("audioDevice",settings.audioDevice); e->setConf("midiInDevice",settings.midiInDevice); e->setConf("midiOutDevice",settings.midiOutDevice); + e->setConf("c163Name",settings.c163Name); e->setConf("audioQuality",settings.audioQuality); e->setConf("audioBufSize",settings.audioBufSize); e->setConf("audioRate",settings.audioRate); From e295cea2384ec7e5c0b389d1e5d13b25d0617144 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 21 Jul 2022 15:28:24 -0500 Subject: [PATCH 224/580] whoops --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b75db0d0..1a2d88a7 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ check out the [Releases](https://github.com/tildearrow/furnace/releases) page. a - SID (6581/8580) used in Commodore 64 - Mikey used in Atari Lynx - ZX Spectrum beeper (SFX-like engine) + - Commodore PET - TIA used in Atari 2600 - Game Boy - modern/fantasy: From a137eefd209add604bf57986dfb8808b3d6ec6d1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 21 Jul 2022 19:00:32 -0500 Subject: [PATCH 225/580] GUI: refine the Namco [C]163 chip name option --- src/gui/dataList.cpp | 1 + src/gui/insEdit.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 62b93479..3a536951 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -184,6 +184,7 @@ void FurnaceGUI::drawInsList() { if (i>=0) { DivInstrument* ins=e->song.ins[i]; insType=(ins->type>DIV_INS_MAX)?"Unknown":insTypes[ins->type]; + if (ins->type==DIV_INS_N163) insType=settings.c163Name.c_str(); switch (ins->type) { case DIV_INS_FM: ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_INSTR_FM]); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 81626b77..25ee330b 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1416,7 +1416,7 @@ void FurnaceGUI::drawInsEdit() { ins->type=(DivInstrumentType)insType; } */ - if (ImGui::BeginCombo("##Type",insTypes[insType])) { + if (ImGui::BeginCombo("##Type",insType==DIV_INS_N163?settings.c163Name.c_str():insTypes[insType])) { std::vector insTypeList; if (settings.displayAllInsTypes) { for (int i=0; insTypes[i]; i++) { @@ -1426,7 +1426,7 @@ void FurnaceGUI::drawInsEdit() { insTypeList=e->getPossibleInsTypes(); } for (DivInstrumentType i: insTypeList) { - if (ImGui::Selectable(insTypes[i],insType==i)) { + if (ImGui::Selectable(i==DIV_INS_N163?settings.c163Name.c_str():insTypes[i],insType==i)) { ins->type=i; // reset macro zoom From 5127d5ef180aa53dc33df6fac9a7b6dba0c91c25 Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 22 Jul 2022 13:36:42 +0900 Subject: [PATCH 226/580] Implement sample loop end position, enum-ise sample depth (#557) TODO: new sample format --- src/engine/engine.cpp | 7 +- src/engine/fileOps.cpp | 34 ++-- src/engine/platform/amiga.cpp | 10 +- src/engine/platform/genesis.cpp | 30 ++-- src/engine/platform/lynx.cpp | 10 +- src/engine/platform/mmc5.cpp | 11 +- src/engine/platform/nes.cpp | 11 +- src/engine/platform/opl.cpp | 4 +- src/engine/platform/pce.cpp | 10 +- src/engine/platform/qsound.cpp | 2 +- src/engine/platform/rf5c68.cpp | 4 +- src/engine/platform/segapcm.cpp | 14 +- src/engine/platform/su.cpp | 4 +- src/engine/platform/swan.cpp | 10 +- src/engine/platform/vera.cpp | 16 +- src/engine/platform/vrc6.cpp | 12 +- src/engine/platform/ym2608.cpp | 4 +- src/engine/platform/ym2610.cpp | 4 +- src/engine/platform/ym2610b.cpp | 4 +- src/engine/platform/ymz280b.cpp | 44 ++--- src/engine/playback.cpp | 10 +- src/engine/sample.cpp | 287 ++++++++++++++++++++------------ src/engine/sample.h | 57 ++++++- src/engine/vgmOps.cpp | 14 +- src/gui/debugWindow.cpp | 13 +- src/gui/doAction.cpp | 37 ++-- src/gui/guiConst.cpp | 2 +- src/gui/guiConst.h | 2 +- src/gui/sampleEdit.cpp | 100 +++++++---- 29 files changed, 461 insertions(+), 306 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 9b3fa06f..659ea6b9 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2226,7 +2226,7 @@ int DivEngine::addSampleFromFile(const char* path) { sample->rate=33144; sample->centerRate=33144; - sample->depth=1; + sample->depth=DIV_SAMPLE_DEPTH_1BIT_DPCM; sample->init(len*8); if (fread(sample->dataDPCM,1,len,f)==0) { @@ -2301,9 +2301,9 @@ int DivEngine::addSampleFromFile(const char* path) { int index=0; if ((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_PCM_U8) { - sample->depth=8; + sample->depth=DIV_SAMPLE_DEPTH_8BIT; } else { - sample->depth=16; + sample->depth=DIV_SAMPLE_DEPTH_16BIT; } sample->init(si.frames); if ((si.format&SF_FORMAT_SUBMASK)==SF_FORMAT_PCM_U8) { @@ -2358,6 +2358,7 @@ int DivEngine::addSampleFromFile(const char* path) { if(inst.loop_count && inst.loops[0].mode == SF_LOOP_FORWARD) { sample->loopStart=inst.loops[0].start; + sample->loopEnd=inst.loops[0].end; if(inst.loops[0].end < (unsigned int)sampleCount) sampleCount=inst.loops[0].end; } diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 3aa432fd..40932a37 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -799,17 +799,17 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { sample->rate=ymuSampleRate*400; } if (ds.version>0x15) { - sample->depth=reader.readC(); - if (sample->depth!=8 && sample->depth!=16) { + sample->depth=(DivSampleDepth)reader.readC(); + if (sample->depth!=DIV_SAMPLE_DEPTH_8BIT && sample->depth!=DIV_SAMPLE_DEPTH_16BIT) { logW("%d: sample depth is wrong! (%d)",i,sample->depth); - sample->depth=16; + sample->depth=DIV_SAMPLE_DEPTH_16BIT; } } else { if (ds.version>0x08) { - sample->depth=16; + sample->depth=DIV_SAMPLE_DEPTH_16BIT; } else { // it appears samples were stored as ADPCM back then - sample->depth=3; + sample->depth=DIV_SAMPLE_DEPTH_YMZ_ADPCM; } } if (length>0) { @@ -838,7 +838,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { if (k>=sample->samples) { break; } - if (sample->depth==8) { + if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { float next=(float)(data[(unsigned int)j]-0x80)*mult; sample->data8[k++]=fmin(fmax(next,-128),127); } else { @@ -1631,7 +1631,7 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { logD("reading sample %d at %x...",i,samplePtr[i]); sample->name=reader.readString(); - sample->samples=reader.readI(); + sample->samples=sample->loopEnd=reader.readI(); sample->rate=reader.readI(); if (ds.version<58) { vol=reader.readS(); @@ -1639,7 +1639,7 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } else { reader.readI(); } - sample->depth=reader.readC(); + sample->depth=(DivSampleDepth)reader.readC(); // reserved reader.readC(); @@ -1657,6 +1657,13 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { reader.readI(); } +/* + if (ds.version>=100) { + sample->loopEnd=reader.readI(); + } else { + reader.readI(); + } +*/ if (ds.version>=58) { // modern sample sample->init(sample->samples); reader.read(sample->getCurBuf(),sample->getCurBufLen()); @@ -1670,9 +1677,9 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } // render data - if (sample->depth!=8 && sample->depth!=16) { + if (sample->depth!=DIV_SAMPLE_DEPTH_8BIT && sample->depth!=DIV_SAMPLE_DEPTH_16BIT) { logW("%d: sample depth is wrong! (%d)",i,sample->depth); - sample->depth=16; + sample->depth=DIV_SAMPLE_DEPTH_16BIT; } sample->samples=(double)sample->samples/samplePitches[pitch]; sample->init(sample->samples); @@ -1683,7 +1690,7 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { if (k>=sample->samples) { break; } - if (sample->depth==8) { + if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { float next=(float)(data[(unsigned int)j]-0x80)*mult; sample->data8[k++]=fmin(fmax(next,-128),127); } else { @@ -1877,7 +1884,7 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) { logD("reading samples... (%d)",insCount); for (int i=0; idepth=8; + sample->depth=DIV_SAMPLE_DEPTH_8BIT; sample->name=reader.readString(22); logD("%d: %s",i+1,sample->name); int slen=((unsigned short)reader.readS_BE())*2; @@ -1897,8 +1904,8 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) { loopLen=0; } if (loopLen>=2) { - if (loopEndloopStart=loopStart; + sample->loopEnd=loopEnd; } sample->init(slen); ds.sample.push_back(sample); @@ -3043,6 +3050,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeC(0); w->writeS(sample->centerRate); w->writeI(sample->loopStart); + //w->writeI(sample->loopEnd); w->write(sample->getCurBuf(),sample->getCurBufLen()); diff --git a/src/engine/platform/amiga.cpp b/src/engine/platform/amiga.cpp index 65b44136..1b007530 100644 --- a/src/engine/platform/amiga.cpp +++ b/src/engine/platform/amiga.cpp @@ -114,12 +114,10 @@ void DivPlatformAmiga::acquire(short* bufL, short* bufR, size_t start, size_t le if (chan[i].audPossamples) { writeAudDat(s->data8[chan[i].audPos++]); } - if (chan[i].audPos>=s->samples || chan[i].audPos>=131071) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - chan[i].audPos=s->loopStart; - } else { - chan[i].sample=-1; - } + if (s->isLoopable() && chan[i].audPos>=MIN(131071,s->getEndPosition())) { + chan[i].audPos=s->loopStart; + } else if (chan[i].audPos>=MIN(131071,s->samples)) { + chan[i].sample=-1; } } else { chan[i].sample=-1; diff --git a/src/engine/platform/genesis.cpp b/src/engine/platform/genesis.cpp index afd59b33..b6dbb8d1 100644 --- a/src/engine/platform/genesis.cpp +++ b/src/engine/platform/genesis.cpp @@ -153,14 +153,13 @@ void DivPlatformGenesis::processDAC() { if (chan[i].dacPeriod>=(chipClock/576)) { if (s->samples>0) { while (chan[i].dacPeriod>=(chipClock/576)) { - if (++chan[i].dacPos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples && !chan[i].dacDirection) { - chan[i].dacPos=s->loopStart; - } else { - chan[i].dacSample=-1; - chan[i].dacPeriod=0; - break; - } + ++chan[i].dacPos; + if (!chan[i].dacDirection && (s->isLoopable() && chan[i].dacPos>=s->getEndPosition())) { + chan[i].dacPos=s->loopStart; + } else if (chan[i].dacPos>=s->samples) { + chan[i].dacSample=-1; + chan[i].dacPeriod=0; + break; } chan[i].dacPeriod-=(chipClock/576); } @@ -200,14 +199,13 @@ void DivPlatformGenesis::processDAC() { chan[5].dacReady=false; } } - if (++chan[5].dacPos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples && !chan[5].dacDirection) { - chan[5].dacPos=s->loopStart; - } else { - chan[5].dacSample=-1; - if (parent->song.brokenDACMode) { - rWrite(0x2b,0); - } + chan[5].dacPos++; + if (!chan[5].dacDirection && (s->isLoopable() && chan[5].dacPos>=s->getEndPosition())) { + chan[5].dacPos=s->loopStart; + } else if (chan[5].dacPos>=s->samples) { + chan[5].dacSample=-1; + if (parent->song.brokenDACMode) { + rWrite(0x2b,0); } } while (chan[5].dacPeriod>=rate) chan[5].dacPeriod-=rate; diff --git a/src/engine/platform/lynx.cpp b/src/engine/platform/lynx.cpp index 3f5e92c0..7c349e5a 100644 --- a/src/engine/platform/lynx.cpp +++ b/src/engine/platform/lynx.cpp @@ -158,12 +158,10 @@ void DivPlatformLynx::acquire(short* bufL, short* bufR, size_t start, size_t len WRITE_OUTPUT(i,(s->data8[chan[i].samplePos++]*chan[i].outVol)>>7); } - if (chan[i].samplePos>=(int)s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - chan[i].samplePos=s->loopStart; - } else { - chan[i].sample=-1; - } + if (s->isLoopable() && chan[i].samplePos>=(int)s->getEndPosition()) { + chan[i].samplePos=s->loopStart; + } else if (chan[i].samplePos>=(int)s->samples) { + chan[i].sample=-1; } } } diff --git a/src/engine/platform/mmc5.cpp b/src/engine/platform/mmc5.cpp index dc9e5aba..bafbda3f 100644 --- a/src/engine/platform/mmc5.cpp +++ b/src/engine/platform/mmc5.cpp @@ -62,12 +62,11 @@ void DivPlatformMMC5::acquire(short* bufL, short* bufR, size_t start, size_t len if (!isMuted[2]) { rWrite(0x5011,((unsigned char)s->data8[dacPos]+0x80)); } - if (++dacPos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - dacPos=s->loopStart; - } else { - dacSample=-1; - } + dacPos++; + if (s->isLoopable() && dacPos>=s->getEndPosition()) { + dacPos=s->loopStart; + } else if (dacPos>=s->samples) { + dacSample=-1; } dacPeriod-=rate; } else { diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index d801fe66..bd1be94a 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -108,12 +108,11 @@ void DivPlatformNES::doWrite(unsigned short addr, unsigned char data) { rWrite(0x4011,next); \ } \ } \ - if (++dacPos>=s->samples) { \ - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { \ - dacPos=s->loopStart; \ - } else { \ - dacSample=-1; \ - } \ + dacPos++; \ + if (s->isLoopable() && dacPos>=s->getEndPosition()) { \ + dacPos=s->loopStart; \ + } else if (dacPos>=s->samples) { \ + dacSample=-1; \ } \ dacPeriod-=rate; \ } else { \ diff --git a/src/engine/platform/opl.cpp b/src/engine/platform/opl.cpp index 823e764b..36dd2c66 100644 --- a/src/engine/platform/opl.cpp +++ b/src/engine/platform/opl.cpp @@ -771,7 +771,7 @@ int DivPlatformOPL::dispatch(DivCommand c) { int end=s->offB+s->lengthB-1; immWrite(11,(end>>2)&0xff); immWrite(12,(end>>10)&0xff); - immWrite(7,(s->loopStart>=0)?0xb0:0xa0); // start/repeat + immWrite(7,(s->isLoopable())?0xb0:0xa0); // start/repeat if (c.value!=DIV_NOTE_NULL) { chan[c.chan].note=c.value; chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note); @@ -807,7 +807,7 @@ int DivPlatformOPL::dispatch(DivCommand c) { int end=s->offB+s->lengthB-1; immWrite(11,(end>>2)&0xff); immWrite(12,(end>>10)&0xff); - immWrite(7,(s->loopStart>=0)?0xb0:0xa0); // start/repeat + immWrite(7,(s->isLoopable())?0xb0:0xa0); // start/repeat int freq=(65536.0*(double)s->rate)/(double)chipRateBase; immWrite(16,freq&0xff); immWrite(17,(freq>>8)&0xff); diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index 9e1302a0..f1eb5a10 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -90,12 +90,10 @@ void DivPlatformPCE::acquire(short* bufL, short* bufR, size_t start, size_t len) chWrite(i,0x04,0xdf); chWrite(i,0x06,(((unsigned char)s->data8[chan[i].dacPos]+0x80)>>3)); chan[i].dacPos++; - if (chan[i].dacPos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - chan[i].dacPos=s->loopStart; - } else { - chan[i].dacSample=-1; - } + if (s->isLoopable() && chan[i].dacPos>=s->getEndPosition()) { + chan[i].dacPos=s->loopStart; + } else if (chan[i].dacPos>=s->samples) { + chan[i].dacSample=-1; } chan[i].dacPeriod-=rate; } diff --git a/src/engine/platform/qsound.cpp b/src/engine/platform/qsound.cpp index 6eb14be7..faeaf6a9 100644 --- a/src/engine/platform/qsound.cpp +++ b/src/engine/platform/qsound.cpp @@ -301,7 +301,7 @@ void DivPlatformQSound::tick(bool sysTick) { qsound_bank = 0x8000 | (s->offQSound >> 16); qsound_addr = s->offQSound & 0xffff; - int length = s->samples; + int length = s->getEndPosition(); if (length > 65536 - 16) { length = 65536 - 16; } diff --git a/src/engine/platform/rf5c68.cpp b/src/engine/platform/rf5c68.cpp index 176b6e7c..e4a39d44 100644 --- a/src/engine/platform/rf5c68.cpp +++ b/src/engine/platform/rf5c68.cpp @@ -142,7 +142,7 @@ void DivPlatformRF5C68::tick(bool sysTick) { if (chan[i].audPos>0) { start=start+MIN(chan[i].audPos,s->length8); } - if (s->loopStart>=0) { + if (s->isLoopable()) { loop=start+s->loopStart; } start=MIN(start,getSampleMemCapacity()-31); @@ -393,7 +393,7 @@ void DivPlatformRF5C68::renderSamples() { size_t memPos=0; for (int i=0; isong.sampleLen; i++) { DivSample* s=parent->song.sample[i]; - int length=s->length8; + int length=s->getEndPosition(DIV_SAMPLE_DEPTH_8BIT); int actualLength=MIN((int)(getSampleMemCapacity()-memPos)-31,length); if (actualLength>0) { s->offRF5C68=memPos; diff --git a/src/engine/platform/segapcm.cpp b/src/engine/platform/segapcm.cpp index 71d45298..d66fcce0 100644 --- a/src/engine/platform/segapcm.cpp +++ b/src/engine/platform/segapcm.cpp @@ -56,12 +56,10 @@ void DivPlatformSegaPCM::acquire(short* bufL, short* bufR, size_t start, size_t pcmR+=(s->data8[chan[i].pcm.pos>>8]*chan[i].chVolR); } chan[i].pcm.pos+=chan[i].pcm.freq; - if (chan[i].pcm.pos>=(s->samples<<8)) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - chan[i].pcm.pos=s->loopStart<<8; - } else { - chan[i].pcm.sample=-1; - } + if (s->isLoopable() && chan[i].pcm.pos>=(s->getEndPosition()<<8)) { + chan[i].pcm.pos=s->loopStart<<8; + } else if (chan[i].pcm.pos>=(s->samples<<8)) { + chan[i].pcm.sample=-1; } } else { oscBuf[i]->data[oscBuf[i]->needle++]=0; @@ -202,7 +200,7 @@ int DivPlatformSegaPCM::dispatch(DivCommand c) { chan[c.chan].macroInit(ins); if (dumpWrites) { // Sega PCM writes DivSample* s=parent->getSample(chan[c.chan].pcm.sample); - int actualLength=(int)s->length8; + int actualLength=(int)(s->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)); if (actualLength>0xfeff) actualLength=0xfeff; addWrite(0x10086+(c.chan<<3),3+((s->offSegaPCM>>16)<<3)); addWrite(0x10084+(c.chan<<3),(s->offSegaPCM)&0xff); @@ -235,7 +233,7 @@ int DivPlatformSegaPCM::dispatch(DivCommand c) { chan[c.chan].furnacePCM=false; if (dumpWrites) { // Sega PCM writes DivSample* s=parent->getSample(chan[c.chan].pcm.sample); - int actualLength=(int)s->length8; + int actualLength=(int)(s->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)); if (actualLength>65536) actualLength=65536; addWrite(0x10086+(c.chan<<3),3+((s->offSegaPCM>>16)<<3)); addWrite(0x10084+(c.chan<<3),(s->offSegaPCM)&0xff); diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index f3be01a7..48d0ba9a 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -213,7 +213,7 @@ void DivPlatformSoundUnit::tick(bool sysTick) { DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_SU); DivSample* sample=parent->getSample(ins->amiga.getSample(chan[i].note)); if (sample!=NULL) { - unsigned int sampleEnd=sample->offSU+sample->samples; + unsigned int sampleEnd=sample->offSU+(sample->getEndPosition()); unsigned int off=sample->offSU+chan[i].hasOffset; chan[i].hasOffset=0; if (sampleEnd>=getSampleMemCapacity(0)) sampleEnd=getSampleMemCapacity(0)-1; @@ -221,7 +221,7 @@ void DivPlatformSoundUnit::tick(bool sysTick) { chWrite(i,0x0b,off>>8); chWrite(i,0x0c,sampleEnd&0xff); chWrite(i,0x0d,sampleEnd>>8); - if (sample->loopStart>=0 && sample->loopStart<(int)sample->samples) { + if (sample->isLoopable()) { unsigned int sampleLoop=sample->offSU+sample->loopStart; if (sampleLoop>=getSampleMemCapacity(0)) sampleLoop=getSampleMemCapacity(0)-1; chWrite(i,0x0e,sampleLoop&0xff); diff --git a/src/engine/platform/swan.cpp b/src/engine/platform/swan.cpp index b3e83319..b6da2327 100644 --- a/src/engine/platform/swan.cpp +++ b/src/engine/platform/swan.cpp @@ -83,12 +83,10 @@ void DivPlatformSwan::acquire(short* bufL, short* bufR, size_t start, size_t len continue; } rWrite(0x09,(unsigned char)s->data8[dacPos++]+0x80); - if (dacPos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - dacPos=s->loopStart; - } else { - dacSample=-1; - } + if (s->isLoopable() && dacPos>=s->getEndPosition()) { + dacPos=s->loopStart; + } else if (dacPos>=s->samples) { + dacSample=-1; } dacPeriod-=rate; } diff --git a/src/engine/platform/vera.cpp b/src/engine/platform/vera.cpp index 092bbb6a..6376cc19 100644 --- a/src/engine/platform/vera.cpp +++ b/src/engine/platform/vera.cpp @@ -96,13 +96,11 @@ void DivPlatformVERA::acquire(short* bufL, short* bufR, size_t start, size_t len rWritePCMData(tmp_r&0xff); } chan[16].pcm.pos++; - if (chan[16].pcm.pos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - chan[16].pcm.pos=s->loopStart; - } else { - chan[16].pcm.sample=-1; - break; - } + if (s->isLoopable() && chan[16].pcm.pos>=s->getEndPosition()) { + chan[16].pcm.pos=s->loopStart; + } else if (chan[16].pcm.pos>=s->samples) { + chan[16].pcm.sample=-1; + break; } } } else { @@ -267,12 +265,12 @@ int DivPlatformVERA::dispatch(DivCommand c) { chan[16].pcm.pos=0; DivSample* s=parent->getSample(chan[16].pcm.sample); unsigned char ctrl=0x90|chan[16].vol; // always stereo - if (s->depth==16) { + if (s->depth==DIV_SAMPLE_DEPTH_16BIT) { chan[16].pcm.depth16=true; ctrl|=0x20; } else { chan[16].pcm.depth16=false; - if (s->depth!=8) chan[16].pcm.sample=-1; + if (s->depth!=DIV_SAMPLE_DEPTH_8BIT) chan[16].pcm.sample=-1; } rWritePCMCtrl(ctrl); } diff --git a/src/engine/platform/vrc6.cpp b/src/engine/platform/vrc6.cpp index 88fcb37b..8a34d925 100644 --- a/src/engine/platform/vrc6.cpp +++ b/src/engine/platform/vrc6.cpp @@ -77,13 +77,11 @@ void DivPlatformVRC6::acquire(short* bufL, short* bufR, size_t start, size_t len chWrite(i,0,0x80|chan[i].dacOut); } chan[i].dacPos++; - if (chan[i].dacPos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - chan[i].dacPos=s->loopStart; - } else { - chan[i].dacSample=-1; - chWrite(i,0,0); - } + if (s->isLoopable() && chan[i].dacPos>=s->getEndPosition()) { + chan[i].dacPos=s->loopStart; + } else if (chan[i].dacPos>=s->samples) { + chan[i].dacSample=-1; + chWrite(i,0,0); } chan[i].dacPeriod-=rate; } diff --git a/src/engine/platform/ym2608.cpp b/src/engine/platform/ym2608.cpp index b70efaf0..c3cf52a0 100644 --- a/src/engine/platform/ym2608.cpp +++ b/src/engine/platform/ym2608.cpp @@ -761,7 +761,7 @@ int DivPlatformYM2608::dispatch(DivCommand c) { immWrite(0x104,(end>>5)&0xff); immWrite(0x105,(end>>13)&0xff); immWrite(0x101,(isMuted[c.chan]?0:(chan[c.chan].pan<<6))|2); - immWrite(0x100,(s->loopStart>=0)?0xb0:0xa0); // start/repeat + immWrite(0x100,(s->isLoopable())?0xb0:0xa0); // start/repeat if (c.value!=DIV_NOTE_NULL) { chan[c.chan].note=c.value; chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note); @@ -796,7 +796,7 @@ int DivPlatformYM2608::dispatch(DivCommand c) { immWrite(0x104,(end>>5)&0xff); immWrite(0x105,(end>>13)&0xff); immWrite(0x101,(isMuted[c.chan]?0:(chan[c.chan].pan<<6))|2); - immWrite(0x100,(s->loopStart>=0)?0xb0:0xa0); // start/repeat + immWrite(0x100,(s->isLoopable())?0xb0:0xa0); // start/repeat int freq=(65536.0*(double)s->rate)/((double)chipClock/144.0); immWrite(0x109,freq&0xff); immWrite(0x10a,(freq>>8)&0xff); diff --git a/src/engine/platform/ym2610.cpp b/src/engine/platform/ym2610.cpp index 1a67c428..4e01b005 100644 --- a/src/engine/platform/ym2610.cpp +++ b/src/engine/platform/ym2610.cpp @@ -793,7 +793,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) { immWrite(0x14,(end>>8)&0xff); immWrite(0x15,end>>16); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); - immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat + immWrite(0x10,(s->isLoopable())?0x90:0x80); // start/repeat if (c.value!=DIV_NOTE_NULL) { chan[c.chan].note=c.value; chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note); @@ -828,7 +828,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) { immWrite(0x14,(end>>8)&0xff); immWrite(0x15,end>>16); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); - immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat + immWrite(0x10,(s->isLoopable())?0x90:0x80); // start/repeat int freq=(65536.0*(double)s->rate)/((double)chipClock/144.0); immWrite(0x19,freq&0xff); immWrite(0x1a,(freq>>8)&0xff); diff --git a/src/engine/platform/ym2610b.cpp b/src/engine/platform/ym2610b.cpp index 600c89fd..1a1f7f0a 100644 --- a/src/engine/platform/ym2610b.cpp +++ b/src/engine/platform/ym2610b.cpp @@ -775,7 +775,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) { immWrite(0x14,(end>>8)&0xff); immWrite(0x15,end>>16); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); - immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat + immWrite(0x10,(s->isLoopable())?0x90:0x80); // start/repeat if (c.value!=DIV_NOTE_NULL) { chan[c.chan].note=c.value; chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note); @@ -810,7 +810,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) { immWrite(0x14,(end>>8)&0xff); immWrite(0x15,end>>16); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); - immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat + immWrite(0x10,(s->isLoopable())?0x90:0x80); // start/repeat int freq=(65536.0*(double)s->rate)/((double)chipClock/144.0); immWrite(0x19,freq&0xff); immWrite(0x1a,(freq>>8)&0xff); diff --git a/src/engine/platform/ymz280b.cpp b/src/engine/platform/ymz280b.cpp index d8d98478..87193da5 100644 --- a/src/engine/platform/ymz280b.cpp +++ b/src/engine/platform/ymz280b.cpp @@ -136,9 +136,9 @@ void DivPlatformYMZ280B::tick(bool sysTick) { DivSample* s=parent->getSample(chan[i].sample); unsigned char ctrl; switch (s->depth) { - case 3: ctrl=0x20; break; - case 8: ctrl=0x40; break; - case 16: ctrl=0x60; break; + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: ctrl=0x20; break; + case DIV_SAMPLE_DEPTH_8BIT: ctrl=0x40; break; + case DIV_SAMPLE_DEPTH_16BIT: ctrl=0x60; break; default: ctrl=0; } double off=(s->centerRate>=1)?((double)s->centerRate/8363.0):1.0; @@ -146,40 +146,44 @@ void DivPlatformYMZ280B::tick(bool sysTick) { if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>511) chan[i].freq=511; // ADPCM has half the range - if (s->depth==3 && chan[i].freq>255) chan[i].freq=255; - ctrl|=(chan[i].active?0x80:0)|((s->loopStart>=0)?0x10:0)|(chan[i].freq>>8); + if (s->depth==DIV_SAMPLE_DEPTH_YMZ_ADPCM && chan[i].freq>255) chan[i].freq=255; + ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|(chan[i].freq>>8); if (chan[i].keyOn) { unsigned int start=s->offYMZ280B; - unsigned int loop=0; + unsigned int loopStart=0; + unsigned int loopEnd=0; unsigned int end=MIN(start+s->getCurBufLen(),getSampleMemCapacity()-1); if (chan[i].audPos>0) { switch (s->depth) { - case 3: start+=chan[i].audPos/2; break; - case 8: start+=chan[i].audPos; break; - case 16: start+=chan[i].audPos*2; break; + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: start+=chan[i].audPos/2; break; + case DIV_SAMPLE_DEPTH_8BIT: start+=chan[i].audPos; break; + case DIV_SAMPLE_DEPTH_16BIT: start+=chan[i].audPos*2; break; + default: break; } start=MIN(start,end); } - if (s->loopStart>=0) { + if (s->isLoopable()) { switch (s->depth) { - case 3: loop=start+s->loopStart/2; break; - case 8: loop=start+s->loopStart; break; - case 16: loop=start+s->loopStart*2; break; + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: loopStart=start+s->loopStart/2; loopEnd=start+s->loopEnd/2; break; + case DIV_SAMPLE_DEPTH_8BIT: loopStart=start+s->loopStart; loopEnd=start+s->loopEnd; break; + case DIV_SAMPLE_DEPTH_16BIT: loopStart=start+s->loopStart*2; loopEnd=start+s->loopEnd*2; break; + default: break; } - loop=MIN(loop,end); + loopEnd=MIN(loopEnd,end); + loopStart=MIN(loopStart,loopEnd); } rWrite(0x01+i*4,ctrl&~0x80); // force keyoff first rWrite(0x20+i*4,(start>>16)&0xff); - rWrite(0x21+i*4,(loop>>16)&0xff); - rWrite(0x22+i*4,(end>>16)&0xff); + rWrite(0x21+i*4,(loopStart>>16)&0xff); + rWrite(0x22+i*4,(loopEnd>>16)&0xff); rWrite(0x23+i*4,(end>>16)&0xff); rWrite(0x40+i*4,(start>>8)&0xff); - rWrite(0x41+i*4,(loop>>8)&0xff); - rWrite(0x42+i*4,(end>>8)&0xff); + rWrite(0x41+i*4,(loopStart>>8)&0xff); + rWrite(0x42+i*4,(loopEnd>>8)&0xff); rWrite(0x43+i*4,(end>>8)&0xff); rWrite(0x60+i*4,start&0xff); - rWrite(0x61+i*4,loop&0xff); - rWrite(0x62+i*4,end&0xff); + rWrite(0x61+i*4,loopStart&0xff); + rWrite(0x62+i*4,loopEnd&0xff); rWrite(0x63+i*4,end&0xff); if (!chan[i].std.vol.had) { chan[i].outVol=chan[i].vol; diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 329c5b54..bff0c3c3 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1204,17 +1204,17 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi blip_add_delta(samp_bb,i,samp_temp-samp_prevSample); samp_prevSample=samp_temp; - if (sPreview.pos>=s->samples || (sPreview.pEnd>=0 && (int)sPreview.pos>=sPreview.pEnd)) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples && (int)sPreview.pos>=s->loopStart) { + if (sPreview.pos>=s->getEndPosition() || (sPreview.pEnd>=0 && (int)sPreview.pos>=sPreview.pEnd)) { + if (s->isLoopable() && (int)sPreview.pos>=s->loopStart) { sPreview.pos=s->loopStart; } } } - if (sPreview.pos>=s->samples || (sPreview.pEnd>=0 && (int)sPreview.pos>=sPreview.pEnd)) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples && (int)sPreview.pos>=s->loopStart) { + if (sPreview.pos>=s->getEndPosition() || (sPreview.pEnd>=0 && (int)sPreview.pos>=sPreview.pEnd)) { + if (s->isLoopable() && (int)sPreview.pos>=s->loopStart) { sPreview.pos=s->loopStart; - } else { + } else if (sPreview.pos>=s->samples) { sPreview.sample=-1; } } diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index 908b9a0d..60eb35bb 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -38,6 +38,65 @@ DivSampleHistory::~DivSampleHistory() { if (data!=NULL) delete[] data; } +bool DivSample::isLoopable() { + return (loopStart>=0 && loopStartloopStart && loopEnd<=(int)samples); +} + +unsigned int DivSample::getEndPosition(DivSampleDepth depth) { + int end=loopEnd; + unsigned int len=samples; + switch (depth) { + case DIV_SAMPLE_DEPTH_1BIT: + end=(loopEnd+7)/8; + len=length1; + break; + case DIV_SAMPLE_DEPTH_1BIT_DPCM: + end=(loopEnd+7)/8; + len=lengthDPCM; + break; + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: + end=(loopEnd+1)/2; + len=lengthZ; + break; + case DIV_SAMPLE_DEPTH_QSOUND_ADPCM: + end=(loopEnd+1)/2; + len=lengthQSoundA; + break; + case DIV_SAMPLE_DEPTH_ADPCM_A: + end=(loopEnd+1)/2; + len=lengthA; + break; + case DIV_SAMPLE_DEPTH_ADPCM_B: + end=(loopEnd+1)/2; + len=lengthB; + break; + case DIV_SAMPLE_DEPTH_8BIT: + end=loopEnd; + len=length8; + break; + case DIV_SAMPLE_DEPTH_BRR: + end=9*((loopEnd+15)/16); + len=lengthBRR; + break; + case DIV_SAMPLE_DEPTH_VOX: + end=(loopEnd+1)/2; + len=lengthVOX; + break; + case DIV_SAMPLE_DEPTH_16BIT: + end=loopEnd*2; + len=length16; + break; + default: + break; + } + return isLoopable()?end:len; +} + +void DivSample::setSampleCount(unsigned int count) { + samples=count; + if ((!isLoopable()) || loopEnd<0 || loopEnd>(int)samples) loopEnd=samples; +} + bool DivSample::save(const char* path) { #ifndef HAVE_SNDFILE logE("Furnace was not compiled with libsndfile!"); @@ -53,7 +112,7 @@ bool DivSample::save(const char* path) { si.channels=1; si.samplerate=rate; switch (depth) { - case 8: // 8-bit + case DIV_SAMPLE_DEPTH_8BIT: // 8-bit si.format=SF_FORMAT_PCM_U8|SF_FORMAT_WAV; break; default: // 16-bit @@ -76,17 +135,17 @@ bool DivSample::save(const char* path) { inst.detune = 50 - (pitch % 100); inst.velocity_hi = 0x7f; inst.key_hi = 0x7f; - if(loopStart != -1) + if(isLoopable()) { inst.loop_count = 1; inst.loops[0].mode = SF_LOOP_FORWARD; inst.loops[0].start = loopStart; - inst.loops[0].end = samples; + inst.loops[0].end = loopEnd; } sf_command(f, SFC_SET_INSTRUMENT, &inst, sizeof(inst)); switch (depth) { - case 8: { + case DIV_SAMPLE_DEPTH_8BIT: { // convert from signed to unsigned unsigned char* buf=new unsigned char[length8]; for (size_t i=0; isamples) end=samples; int count=samples-(end-begin); if (count<=0) return resize(0); - if (depth==8) { + if (depth==DIV_SAMPLE_DEPTH_8BIT) { if (data8!=NULL) { signed char* oldData8=data8; data8=NULL; - initInternal(8,count); + initInternal(DIV_SAMPLE_DEPTH_8BIT,count); if (begin>0) { memcpy(data8,oldData8,begin); } @@ -234,13 +293,13 @@ bool DivSample::strip(unsigned int begin, unsigned int end) { // do nothing return true; } - samples=count; + setSampleCount(count); return true; - } else if (depth==16) { + } else if (depth==DIV_SAMPLE_DEPTH_16BIT) { if (data16!=NULL) { short* oldData16=data16; data16=NULL; - initInternal(16,count); + initInternal(DIV_SAMPLE_DEPTH_16BIT,count); if (begin>0) { memcpy(data16,oldData16,sizeof(short)*begin); } @@ -252,7 +311,7 @@ bool DivSample::strip(unsigned int begin, unsigned int end) { // do nothing return true; } - samples=count; + setSampleCount(count); return true; } return false; @@ -262,31 +321,31 @@ bool DivSample::trim(unsigned int begin, unsigned int end) { int count=end-begin; if (count==0) return true; if (begin==0 && end==samples) return true; - if (depth==8) { + if (depth==DIV_SAMPLE_DEPTH_8BIT) { if (data8!=NULL) { signed char* oldData8=data8; data8=NULL; - initInternal(8,count); + initInternal(DIV_SAMPLE_DEPTH_8BIT,count); memcpy(data8,oldData8+begin,count); delete[] oldData8; } else { // do nothing return true; } - samples=count; + setSampleCount(count); return true; - } else if (depth==16) { + } else if (depth==DIV_SAMPLE_DEPTH_16BIT) { if (data16!=NULL) { short* oldData16=data16; data16=NULL; - initInternal(16,count); + initInternal(DIV_SAMPLE_DEPTH_16BIT,count); memcpy(data16,&(oldData16[begin]),sizeof(short)*count); delete[] oldData16; } else { // do nothing return true; } - samples=count; + setSampleCount(count); return true; } return false; @@ -294,11 +353,11 @@ bool DivSample::trim(unsigned int begin, unsigned int end) { bool DivSample::insert(unsigned int pos, unsigned int length) { unsigned int count=samples+length; - if (depth==8) { + if (depth==DIV_SAMPLE_DEPTH_8BIT) { if (data8!=NULL) { signed char* oldData8=data8; data8=NULL; - initInternal(8,count); + initInternal(DIV_SAMPLE_DEPTH_8BIT,count); if (pos>0) { memcpy(data8,oldData8,pos); } @@ -307,15 +366,15 @@ bool DivSample::insert(unsigned int pos, unsigned int length) { } delete[] oldData8; } else { - initInternal(8,count); + initInternal(DIV_SAMPLE_DEPTH_8BIT,count); } - samples=count; + setSampleCount(count); return true; - } else if (depth==16) { + } else if (depth==DIV_SAMPLE_DEPTH_16BIT) { if (data16!=NULL) { short* oldData16=data16; data16=NULL; - initInternal(16,count); + initInternal(DIV_SAMPLE_DEPTH_16BIT,count); if (pos>0) { memcpy(data16,oldData16,sizeof(short)*pos); } @@ -324,9 +383,9 @@ bool DivSample::insert(unsigned int pos, unsigned int length) { } delete[] oldData16; } else { - initInternal(16,count); + initInternal(DIV_SAMPLE_DEPTH_16BIT,count); } - samples=count; + setSampleCount(count); return true; } return false; @@ -337,15 +396,15 @@ bool DivSample::insert(unsigned int pos, unsigned int length) { int finalCount=(double)samples*(r/(double)rate); \ signed char* oldData8=data8; \ short* oldData16=data16; \ - if (depth==16) { \ + if (depth==DIV_SAMPLE_DEPTH_16BIT) { \ if (data16!=NULL) { \ data16=NULL; \ - initInternal(16,finalCount); \ + initInternal(DIV_SAMPLE_DEPTH_16BIT,finalCount); \ } \ - } else if (depth==8) { \ + } else if (depth==DIV_SAMPLE_DEPTH_8BIT) { \ if (data8!=NULL) { \ data8=NULL; \ - initInternal(8,finalCount); \ + initInternal(DIV_SAMPLE_DEPTH_8BIT,finalCount); \ } \ } else { \ return false; \ @@ -353,19 +412,20 @@ bool DivSample::insert(unsigned int pos, unsigned int length) { #define RESAMPLE_END \ if (loopStart>=0) loopStart=(double)loopStart*(r/(double)rate); \ + if (loopEnd>=0) loopEnd=(double)loopEnd*(r/(double)rate); \ centerRate=(int)((double)centerRate*(r/(double)rate)); \ rate=r; \ samples=finalCount; \ - if (depth==16) { \ + if (depth==DIV_SAMPLE_DEPTH_16BIT) { \ delete[] oldData16; \ - } else if (depth==8) { \ + } else if (depth==DIV_SAMPLE_DEPTH_8BIT) { \ delete[] oldData8; \ } bool DivSample::resampleNone(double r) { RESAMPLE_BEGIN; - if (depth==16) { + if (depth==DIV_SAMPLE_DEPTH_16BIT) { for (int i=0; i=samples) { @@ -374,7 +434,7 @@ bool DivSample::resampleNone(double r) { data16[i]=oldData16[pos]; } } - } else if (depth==8) { + } else if (depth==DIV_SAMPLE_DEPTH_8BIT) { for (int i=0; i=samples) { @@ -396,7 +456,7 @@ bool DivSample::resampleLinear(double r) { unsigned int posInt=0; double factor=(double)rate/r; - if (depth==16) { + if (depth==DIV_SAMPLE_DEPTH_16BIT) { for (int i=0; i=samples)?0:oldData16[posInt]; short s2=(posInt+1>=samples)?((loopStart>=0 && loopStart<(int)samples)?oldData16[loopStart]:0):oldData16[posInt+1]; @@ -409,7 +469,7 @@ bool DivSample::resampleLinear(double r) { posInt++; } } - } else if (depth==8) { + } else if (depth==DIV_SAMPLE_DEPTH_8BIT) { for (int i=0; i=samples)?0:oldData8[posInt]; short s2=(posInt+1>=samples)?((loopStart>=0 && loopStart<(int)samples)?oldData8[loopStart]:0):oldData8[posInt+1]; @@ -436,7 +496,7 @@ bool DivSample::resampleCubic(double r) { double factor=(double)rate/r; float* cubicTable=DivFilterTables::getCubicTable(); - if (depth==16) { + if (depth==DIV_SAMPLE_DEPTH_16BIT) { for (int i=0; i=samples)?0:oldData16[posInt]; } } - } else if (depth==8) { + } else if (depth==DIV_SAMPLE_DEPTH_8BIT) { for (int i=0; i>3]>>(i&7))&1)?0x7fff:-0x7fff; } break; - case 1: { // DPCM + case DIV_SAMPLE_DEPTH_1BIT_DPCM: { // DPCM int accum=0; for (unsigned int i=0; i>3]>>(i&7))&1)?1:-1; @@ -687,27 +747,27 @@ void DivSample::render() { } break; } - case 3: // YMZ ADPCM + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: // YMZ ADPCM ymz_decode(dataZ,data16,samples); break; - case 4: // QSound ADPCM + case DIV_SAMPLE_DEPTH_QSOUND_ADPCM: // QSound ADPCM bs_decode(dataQSoundA,data16,samples); break; - case 5: // ADPCM-A + case DIV_SAMPLE_DEPTH_ADPCM_A: // ADPCM-A yma_decode(dataA,data16,samples); break; - case 6: // ADPCM-B + case DIV_SAMPLE_DEPTH_ADPCM_B: // ADPCM-B ymb_decode(dataB,data16,samples); break; - case 8: // 8-bit PCM + case DIV_SAMPLE_DEPTH_8BIT: // 8-bit PCM for (unsigned int i=0; i0) { data1[i>>3]|=1<<(i&7); } } } - if (depth!=1) { // DPCM - if (!initInternal(1,samples)) return; + if (depth!=DIV_SAMPLE_DEPTH_1BIT_DPCM) { // DPCM + if (!initInternal(DIV_SAMPLE_DEPTH_1BIT_DPCM,samples)) return; int accum=63; for (unsigned int i=0; i>9; @@ -739,84 +799,88 @@ void DivSample::render() { if (accum>127) accum=127; } } - if (depth!=3) { // YMZ ADPCM - if (!initInternal(3,samples)) return; + if (depth!=DIV_SAMPLE_DEPTH_YMZ_ADPCM) { // YMZ ADPCM + if (!initInternal(DIV_SAMPLE_DEPTH_YMZ_ADPCM,samples)) return; ymz_encode(data16,dataZ,(samples+7)&(~0x7)); } - if (depth!=4) { // QSound ADPCM - if (!initInternal(4,samples)) return; + if (depth!=DIV_SAMPLE_DEPTH_QSOUND_ADPCM) { // QSound ADPCM + if (!initInternal(DIV_SAMPLE_DEPTH_QSOUND_ADPCM,samples)) return; bs_encode(data16,dataQSoundA,samples); } // TODO: pad to 256. - if (depth!=5) { // ADPCM-A - if (!initInternal(5,samples)) return; + if (depth!=DIV_SAMPLE_DEPTH_ADPCM_A) { // ADPCM-A + if (!initInternal(DIV_SAMPLE_DEPTH_ADPCM_A,samples)) return; yma_encode(data16,dataA,(samples+511)&(~0x1ff)); } - if (depth!=6) { // ADPCM-B - if (!initInternal(6,samples)) return; + if (depth!=DIV_SAMPLE_DEPTH_ADPCM_B) { // ADPCM-B + if (!initInternal(DIV_SAMPLE_DEPTH_ADPCM_B,samples)) return; ymb_encode(data16,dataB,(samples+511)&(~0x1ff)); } - if (depth!=8) { // 8-bit PCM - if (!initInternal(8,samples)) return; + if (depth!=DIV_SAMPLE_DEPTH_8BIT) { // 8-bit PCM + if (!initInternal(DIV_SAMPLE_DEPTH_8BIT,samples)) return; for (unsigned int i=0; i>8; } } // TODO: BRR! - if (depth!=10) { // VOX - if (!initInternal(10,samples)) return; + if (depth!=DIV_SAMPLE_DEPTH_VOX) { // VOX + if (!initInternal(DIV_SAMPLE_DEPTH_VOX,samples)) return; oki_encode(data16,dataVOX,samples); } } void* DivSample::getCurBuf() { switch (depth) { - case 0: + case DIV_SAMPLE_DEPTH_1BIT: return data1; - case 1: + case DIV_SAMPLE_DEPTH_1BIT_DPCM: return dataDPCM; - case 3: + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: return dataZ; - case 4: + case DIV_SAMPLE_DEPTH_QSOUND_ADPCM: return dataQSoundA; - case 5: + case DIV_SAMPLE_DEPTH_ADPCM_A: return dataA; - case 6: + case DIV_SAMPLE_DEPTH_ADPCM_B: return dataB; - case 8: + case DIV_SAMPLE_DEPTH_8BIT: return data8; - case 9: + case DIV_SAMPLE_DEPTH_BRR: return dataBRR; - case 10: + case DIV_SAMPLE_DEPTH_VOX: return dataVOX; - case 16: + case DIV_SAMPLE_DEPTH_16BIT: return data16; + default: + return NULL; } return NULL; } unsigned int DivSample::getCurBufLen() { switch (depth) { - case 0: + case DIV_SAMPLE_DEPTH_1BIT: return length1; - case 1: + case DIV_SAMPLE_DEPTH_1BIT_DPCM: return lengthDPCM; - case 3: + case DIV_SAMPLE_DEPTH_YMZ_ADPCM: return lengthZ; - case 4: + case DIV_SAMPLE_DEPTH_QSOUND_ADPCM: return lengthQSoundA; - case 5: + case DIV_SAMPLE_DEPTH_ADPCM_A: return lengthA; - case 6: + case DIV_SAMPLE_DEPTH_ADPCM_B: return lengthB; - case 8: + case DIV_SAMPLE_DEPTH_8BIT: return length8; - case 9: + case DIV_SAMPLE_DEPTH_BRR: return lengthBRR; - case 10: + case DIV_SAMPLE_DEPTH_VOX: return lengthVOX; - case 16: + case DIV_SAMPLE_DEPTH_16BIT: return length16; + default: + return 0; } return 0; } @@ -831,9 +895,9 @@ DivSampleHistory* DivSample::prepareUndo(bool data, bool doNotPush) { duplicate=new unsigned char[getCurBufLen()]; memcpy(duplicate,getCurBuf(),getCurBufLen()); } - h=new DivSampleHistory(duplicate,getCurBufLen(),samples,depth,rate,centerRate,loopStart); + h=new DivSampleHistory(duplicate,getCurBufLen(),samples,depth,rate,centerRate,loopStart,loopEnd); } else { - h=new DivSampleHistory(depth,rate,centerRate,loopStart); + h=new DivSampleHistory(depth,rate,centerRate,loopStart,loopEnd); } if (!doNotPush) { while (!redoHist.empty()) { @@ -863,7 +927,8 @@ DivSampleHistory* DivSample::prepareUndo(bool data, bool doNotPush) { } \ rate=h->rate; \ centerRate=h->centerRate; \ - loopStart=h->loopStart; + loopStart=h->loopStart; \ + loopEnd=h->loopEnd; int DivSample::undo() { diff --git a/src/engine/sample.h b/src/engine/sample.h index 70f8418c..103bcaa2 100644 --- a/src/engine/sample.h +++ b/src/engine/sample.h @@ -17,9 +17,28 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#ifndef _SAMPLE_H +#define _SAMPLE_H + +#pragma once + #include "../ta-utils.h" #include +enum DivSampleDepth: unsigned char { + DIV_SAMPLE_DEPTH_1BIT=0, + DIV_SAMPLE_DEPTH_1BIT_DPCM=1, + DIV_SAMPLE_DEPTH_YMZ_ADPCM=3, + DIV_SAMPLE_DEPTH_QSOUND_ADPCM=4, + DIV_SAMPLE_DEPTH_ADPCM_A=5, + DIV_SAMPLE_DEPTH_ADPCM_B=6, + DIV_SAMPLE_DEPTH_8BIT=8, + DIV_SAMPLE_DEPTH_BRR=9, + DIV_SAMPLE_DEPTH_VOX=10, + DIV_SAMPLE_DEPTH_16BIT=16, + DIV_SAMPLE_DEPTH_MAX // boundary for sample depth +}; + enum DivResampleFilters { DIV_RESAMPLE_NONE=0, DIV_RESAMPLE_LINEAR, @@ -32,10 +51,10 @@ enum DivResampleFilters { struct DivSampleHistory { unsigned char* data; unsigned int length, samples; - unsigned char depth; - int rate, centerRate, loopStart; + DivSampleDepth depth; + int rate, centerRate, loopStart, loopEnd; bool hasSample; - DivSampleHistory(void* d, unsigned int l, unsigned int s, unsigned char de, int r, int cr, int ls): + DivSampleHistory(void* d, unsigned int l, unsigned int s, DivSampleDepth de, int r, int cr, int ls, int le): data((unsigned char*)d), length(l), samples(s), @@ -43,8 +62,9 @@ struct DivSampleHistory { rate(r), centerRate(cr), loopStart(ls), + loopEnd(le), hasSample(true) {} - DivSampleHistory(unsigned char de, int r, int cr, int ls): + DivSampleHistory(DivSampleDepth de, int r, int cr, int ls, int le): data(NULL), length(0), samples(0), @@ -52,13 +72,14 @@ struct DivSampleHistory { rate(r), centerRate(cr), loopStart(ls), + loopEnd(le), hasSample(false) {} ~DivSampleHistory(); }; struct DivSample { String name; - int rate, centerRate, loopStart, loopOffP; + int rate, centerRate, loopStart, loopEnd, loopOffP; // valid values are: // - 0: ZX Spectrum overlay drum (1-bit) // - 1: 1-bit NES DPCM (1-bit) @@ -70,7 +91,7 @@ struct DivSample { // - 9: BRR (SNES) // - 10: VOX ADPCM // - 16: 16-bit PCM - unsigned char depth; + DivSampleDepth depth; // these are the new data structures. signed char* data8; // 8 @@ -93,6 +114,23 @@ struct DivSample { std::deque undoHist; std::deque redoHist; + /** + * check if sample is loopable. + * @return whether it is loopable. + */ + bool isLoopable(); + + /** + * get sample end position + * @return the samples end position. + */ + unsigned int getEndPosition(DivSampleDepth depth=DIV_SAMPLE_DEPTH_MAX); + + /** + * @warning DO NOT USE - internal functions + */ + void setSampleCount(unsigned int count); + /** * @warning DO NOT USE - internal functions */ @@ -116,7 +154,7 @@ struct DivSample { * @param count number of samples. * @return whether it was successful. */ - bool initInternal(unsigned char d, int count); + bool initInternal(DivSampleDepth d, int count); /** * initialize sample data. make sure you have set `depth` before doing so. @@ -212,8 +250,9 @@ struct DivSample { rate(32000), centerRate(8363), loopStart(-1), + loopEnd(-1), loopOffP(0), - depth(16), + depth(DIV_SAMPLE_DEPTH_16BIT), data8(NULL), data16(NULL), data1(NULL), @@ -253,3 +292,5 @@ struct DivSample { samples(0) {} ~DivSample(); }; + +#endif diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index 0d1ad4f5..ef1c5dc3 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -512,7 +512,7 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write w->writeC(streamID); w->writeS(write.val); // sample number w->writeC((sample->loopStart==0)|(sampleDir[streamID]?0x10:0)); // flags - if (sample->loopStart>0 && !sampleDir[streamID]) { + if (sample->isLoopable() && !sampleDir[streamID]) { loopTimer[streamID]=sample->length8; loopSample[streamID]=write.val; } @@ -1549,7 +1549,7 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { size_t memPos=0; for (int i=0; ilength8+0xff)&(~0xff); + unsigned int alignedSize=(sample->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)+0xff)&(~0xff); if (alignedSize>65536) alignedSize=65536; if ((memPos&0xff0000)!=((memPos+alignedSize)&0xff0000)) { memPos=(memPos+0xffff)&0xff0000; @@ -1559,8 +1559,8 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { sample->offSegaPCM=memPos; unsigned int readPos=0; for (unsigned int j=0; j=sample->length8) { - if (sample->loopStart>=0 && sample->loopStart<(int)sample->length8) { + if (readPos>=sample->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)) { + if (sample->isLoopable()) { readPos=sample->loopStart; pcmMem[memPos++]=((unsigned char)sample->data8[readPos]+0x80); } else { @@ -1663,7 +1663,7 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { memcpy(sampleMem,writeZ280[i]->getSampleMem(),sampleMemLen); for (int i=0; idepth==16) { + if (s->depth==DIV_SAMPLE_DEPTH_16BIT) { unsigned int pos=s->offYMZ280B; for (unsigned int j=0; jsamples; j++) { unsigned char lo=sampleMem[pos+j*2]; @@ -1871,12 +1871,12 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { if (loopSample[nextToTouch]loopStart<(int)sample->length8) { + if (sample->loopStart<(int)sample->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)) { w->writeC(0x93); w->writeC(nextToTouch); w->writeI(sample->off8+sample->loopStart); w->writeC(0x81); - w->writeI(sample->length8-sample->loopStart); + w->writeI(sample->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)-sample->loopStart); } } loopSample[nextToTouch]=-1; diff --git a/src/gui/debugWindow.cpp b/src/gui/debugWindow.cpp index d9739f68..12e775b5 100644 --- a/src/gui/debugWindow.cpp +++ b/src/gui/debugWindow.cpp @@ -18,6 +18,7 @@ */ #include "gui.h" +#include "guiConst.h" #include "debug.h" #include "IconsFontAwesome4.h" #include @@ -154,12 +155,19 @@ void FurnaceGUI::drawDebug() { ImGui::Text("rate: %d",sample->rate); ImGui::Text("centerRate: %d",sample->centerRate); ImGui::Text("loopStart: %d",sample->loopStart); + ImGui::Text("loopEnd: %d", sample->loopEnd); ImGui::Text("loopOffP: %d",sample->loopOffP); - ImGui::Text("depth: %d",sample->depth); + if (sampleDepths[sample->depth]!=NULL) { + ImGui::Text("depth: %d (%s)",(unsigned char)sample->depth,sampleDepths[sample->depth]); + } else { + ImGui::Text("depth: %d ()",(unsigned char)sample->depth); + } + ImGui::Text("length8: %d",sample->length8); ImGui::Text("length16: %d",sample->length16); ImGui::Text("length1: %d",sample->length1); ImGui::Text("lengthDPCM: %d",sample->lengthDPCM); + ImGui::Text("lengthZ: %d",sample->lengthZ); ImGui::Text("lengthQSoundA: %d",sample->lengthQSoundA); ImGui::Text("lengthA: %d",sample->lengthA); ImGui::Text("lengthB: %d",sample->lengthB); @@ -170,6 +178,7 @@ void FurnaceGUI::drawDebug() { ImGui::Text("off16: %x",sample->off16); ImGui::Text("off1: %x",sample->off1); ImGui::Text("offDPCM: %x",sample->offDPCM); + ImGui::Text("offZ: %x",sample->offZ); ImGui::Text("offQSoundA: %x",sample->offQSoundA); ImGui::Text("offA: %x",sample->offA); ImGui::Text("offB: %x",sample->offB); @@ -179,6 +188,8 @@ void FurnaceGUI::drawDebug() { ImGui::Text("offQSound: %x",sample->offQSound); ImGui::Text("offX1_010: %x",sample->offX1_010); ImGui::Text("offSU: %x",sample->offSU); + ImGui::Text("offYMZ280B: %x",sample->offYMZ280B); + ImGui::Text("offRF5C68: %x",sample->offRF5C68); ImGui::Text("samples: %d",sample->samples); ImGui::TreePop(); diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 60c9d5c3..ca640d62 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -709,6 +709,7 @@ void FurnaceGUI::doAction(int what) { sample->centerRate=prevSample->centerRate; sample->name=prevSample->name; sample->loopStart=prevSample->loopStart; + sample->loopEnd=prevSample->loopEnd; sample->depth=prevSample->depth; if (sample->init(prevSample->samples)) { if (prevSample->getCurBuf()!=NULL) { @@ -838,7 +839,7 @@ void FurnaceGUI::doAction(int what) { if (!sample->insert(pos,sampleClipboardLen)) { showError("couldn't paste! make sure your sample is 8 or 16-bit."); } else { - if (sample->depth==8) { + if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (size_t i=0; idata8[pos+i]=sampleClipboard[i]>>8; } @@ -864,7 +865,7 @@ void FurnaceGUI::doAction(int what) { if (pos<0) pos=0; e->lockEngine([this,sample,pos]() { - if (sample->depth==8) { + if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (size_t i=0; i=sample->samples) break; sample->data8[pos+i]=sampleClipboard[i]>>8; @@ -894,7 +895,7 @@ void FurnaceGUI::doAction(int what) { if (pos<0) pos=0; e->lockEngine([this,sample,pos]() { - if (sample->depth==8) { + if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (size_t i=0; i=sample->samples) break; int val=sample->data8[pos+i]+(sampleClipboard[i]>>8); @@ -948,7 +949,7 @@ void FurnaceGUI::doAction(int what) { SAMPLE_OP_BEGIN; float maxVal=0.0f; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]/32767.0f); if (val>maxVal) maxVal=val; @@ -963,7 +964,7 @@ void FurnaceGUI::doAction(int what) { sample->data16[i]=val; } } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]/127.0f); if (val>maxVal) maxVal=val; @@ -994,14 +995,14 @@ void FurnaceGUI::doAction(int what) { e->lockEngine([this,sample]() { SAMPLE_OP_BEGIN; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]*float(i-start)/float(end-start); if (val<-32768) val=-32768; if (val>32767) val=32767; sample->data16[i]=val; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]*float(i-start)/float(end-start); if (val<-128) val=-128; @@ -1024,14 +1025,14 @@ void FurnaceGUI::doAction(int what) { e->lockEngine([this,sample]() { SAMPLE_OP_BEGIN; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]*float(end-i)/float(end-start); if (val<-32768) val=-32768; if (val>32767) val=32767; sample->data16[i]=val; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]*float(end-i)/float(end-start); if (val<-128) val=-128; @@ -1058,11 +1059,11 @@ void FurnaceGUI::doAction(int what) { e->lockEngine([this,sample]() { SAMPLE_OP_BEGIN; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]=0; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]=0; } @@ -1116,7 +1117,7 @@ void FurnaceGUI::doAction(int what) { e->lockEngine([this,sample]() { SAMPLE_OP_BEGIN; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[ri]^=sample->data16[i]; sample->data16[i]^=sample->data16[ri]; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; ilockEngine([this,sample]() { SAMPLE_OP_BEGIN; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]=-sample->data16[i]; if (sample->data16[i]==-32768) sample->data16[i]=32767; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]=-sample->data8[i]; if (sample->data16[i]==-128) sample->data16[i]=127; @@ -1174,11 +1175,11 @@ void FurnaceGUI::doAction(int what) { e->lockEngine([this,sample]() { SAMPLE_OP_BEGIN; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]^=0x8000; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]^=0x80; } @@ -1261,8 +1262,8 @@ void FurnaceGUI::doAction(int what) { e->lockEngine([this,sample]() { SAMPLE_OP_BEGIN; - sample->trim(0,end); sample->loopStart=start; + sample->loopEnd=end; updateSampleTex=true; e->renderSamples(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 80f9b5d8..64e7b18d 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -116,7 +116,7 @@ const char* insTypes[DIV_INS_MAX+1]={ NULL }; -const char* sampleDepths[17]={ +const char* sampleDepths[DIV_SAMPLE_DEPTH_MAX]={ "1-bit PCM", "1-bit DPCM", NULL, diff --git a/src/gui/guiConst.h b/src/gui/guiConst.h index 69085c32..a6df68f6 100644 --- a/src/gui/guiConst.h +++ b/src/gui/guiConst.h @@ -40,7 +40,7 @@ extern const char* noteNames[180]; extern const char* noteNamesG[180]; extern const char* pitchLabel[11]; extern const char* insTypes[]; -extern const char* sampleDepths[17]; +extern const char* sampleDepths[]; extern const char* resampleStrats[]; extern const int availableSystems[]; extern const FurnaceGUIActionDef guiActions[]; diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index b684a0c7..e9b5cfb3 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -41,7 +41,7 @@ void FurnaceGUI::drawSampleEdit() { } else { DivSample* sample=e->song.sample[curSample]; String sampleType="Invalid"; - if (sample->depth<17) { + if (sample->depthdepth]!=NULL) { sampleType=sampleDepths[sample->depth]; } @@ -61,11 +61,11 @@ void FurnaceGUI::drawSampleEdit() { ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); if (ImGui::BeginCombo("##SampleType",sampleType.c_str())) { - for (int i=0; i<17; i++) { + for (int i=0; iprepareUndo(true); - sample->depth=i; + sample->depth=(DivSampleDepth)i; e->renderSamplesP(); updateSampleTex=true; MARK_MODIFIED; @@ -93,22 +93,43 @@ void FurnaceGUI::drawSampleEdit() { } ImGui::TableNextColumn(); - bool doLoop=(sample->loopStart>=0); + bool doLoop=(sample->isLoopable()); if (ImGui::Checkbox("Loop",&doLoop)) { MARK_MODIFIED if (doLoop) { sample->loopStart=0; + sample->loopEnd=sample->samples; } else { sample->loopStart=-1; + sample->loopEnd=sample->samples; } updateSampleTex=true; } if (doLoop) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Loop Start"); ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputInt("##LoopPosition",&sample->loopStart,1,10)) { MARK_MODIFIED - if (sample->loopStart<0 || sample->loopStart>=(int)sample->samples) { + if (ImGui::InputInt("##LoopStartPosition",&sample->loopStart,1,10)) { MARK_MODIFIED + if (sample->loopStart<0) { sample->loopStart=0; } + if (sample->loopStart>sample->loopEnd) { + sample->loopStart=sample->loopEnd; + } + updateSampleTex=true; + } + ImGui::TableNextColumn(); + ImGui::Text("Loop End"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##LoopEndPosition",&sample->loopEnd,1,10)) { MARK_MODIFIED + if (sample->loopEndloopStart) { + sample->loopEnd=sample->loopStart; + } + if (sample->loopEnd>=(int)sample->samples) { + sample->loopEnd=sample->samples; + } updateSampleTex=true; } } @@ -123,7 +144,7 @@ void FurnaceGUI::drawSampleEdit() { */ ImGui::Separator(); - ImGui::BeginDisabled(sample->depth!=8 && sample->depth!=16); + ImGui::BeginDisabled(sample->depth!=DIV_SAMPLE_DEPTH_8BIT && sample->depth!=DIV_SAMPLE_DEPTH_16BIT); ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(!sampleDragMode)); if (ImGui::Button(ICON_FA_I_CURSOR "##SSelect")) { @@ -275,14 +296,14 @@ void FurnaceGUI::drawSampleEdit() { SAMPLE_OP_BEGIN; float vol=amplifyVol/100.0f; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]*vol; if (val<-32768) val=-32768; if (val>32767) val=32767; sample->data16[i]=val; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]*vol; if (val<-128) val=-128; @@ -466,7 +487,7 @@ void FurnaceGUI::drawSampleEdit() { double power=(sampleFilterCutStart>sampleFilterCutEnd)?0.5:2.0; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; irate))*M_PI); @@ -482,7 +503,7 @@ void FurnaceGUI::drawSampleEdit() { if (val>32767) val=32767; sample->data16[i]=val; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; irate))*M_PI); @@ -574,11 +595,11 @@ void FurnaceGUI::drawSampleEdit() { ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); if (ImGui::BeginCombo("##SampleType",sampleType.c_str())) { - for (int i=0; i<17; i++) { + for (int i=0; iprepareUndo(true); - sample->depth=i; + sample->depth=(DivSampleDepth)i; e->renderSamplesP(); updateSampleTex=true; MARK_MODIFIED; @@ -607,22 +628,43 @@ void FurnaceGUI::drawSampleEdit() { } ImGui::TableNextColumn(); - bool doLoop=(sample->loopStart>=0); + bool doLoop=(sample->isLoopable()); if (ImGui::Checkbox("Loop",&doLoop)) { MARK_MODIFIED if (doLoop) { sample->loopStart=0; + sample->loopEnd=sample->samples; } else { sample->loopStart=-1; + sample->loopEnd=sample->samples; } updateSampleTex=true; } if (doLoop) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Loop Start"); ImGui::SameLine(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputInt("##LoopPosition",&sample->loopStart,1,10)) { MARK_MODIFIED - if (sample->loopStart<0 || sample->loopStart>=(int)sample->samples) { + if (ImGui::InputInt("##LoopStartPosition",&sample->loopStart,1,10)) { MARK_MODIFIED + if (sample->loopStart<0) { sample->loopStart=0; } + if (sample->loopStart>sample->loopEnd) { + sample->loopStart=sample->loopEnd; + } + updateSampleTex=true; + } + ImGui::TableNextColumn(); + ImGui::Text("Loop End"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##LoopEndPosition",&sample->loopEnd,1,10)) { MARK_MODIFIED + if (sample->loopEndloopStart) { + sample->loopEnd=sample->loopStart; + } + if (sample->loopEnd>=(int)sample->samples) { + sample->loopEnd=sample->samples; + } updateSampleTex=true; } } @@ -637,7 +679,7 @@ void FurnaceGUI::drawSampleEdit() { */ ImGui::Separator(); - ImGui::BeginDisabled(sample->depth!=8 && sample->depth!=16); + ImGui::BeginDisabled(sample->depth!=DIV_SAMPLE_DEPTH_8BIT && sample->depth!=DIV_SAMPLE_DEPTH_16BIT); ImGui::PushStyleColor(ImGuiCol_Button,TOGGLE_COLOR(!sampleDragMode)); if (ImGui::Button(ICON_FA_I_CURSOR "##SSelect")) { @@ -820,7 +862,7 @@ void FurnaceGUI::drawSampleEdit() { double power=(sampleFilterCutStart>sampleFilterCutEnd)?0.5:2.0; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; irate))*M_PI); @@ -836,7 +878,7 @@ void FurnaceGUI::drawSampleEdit() { if (val>32767) val=32767; sample->data16[i]=val; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; irate))*M_PI); @@ -890,14 +932,14 @@ void FurnaceGUI::drawSampleEdit() { SAMPLE_OP_BEGIN; float vol=amplifyVol/100.0f; - if (sample->depth==16) { + if (sample->depth==DIV_SAMPLE_DEPTH_16BIT) { for (unsigned int i=start; idata16[i]*vol; if (val<-32768) val=-32768; if (val>32767) val=32767; sample->data16[i]=val; } - } else if (sample->depth==8) { + } else if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { for (unsigned int i=start; idata8[i]*vol; if (val<-128) val=-128; @@ -1138,7 +1180,7 @@ void FurnaceGUI::drawSampleEdit() { for (int i=0; iloopStart>=0 && sample->loopStart<(int)sample->samples && scaledPos>=sample->loopStart) { + if (sample->isLoopable() && (scaledPos>=sample->loopStart && scaledPos<=sample->loopEnd)) { data[i*availX+j]=bgColorLoop; } else { data[i*availX+j]=bgColor; @@ -1158,7 +1200,7 @@ void FurnaceGUI::drawSampleEdit() { if (xCoarse>=sample->samples) break; int y1, y2; int totalAdvance=0; - if (sample->depth==8) { + if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { y1=((unsigned char)sample->data8[xCoarse]^0x80)*availY/256; } else { y1=((unsigned short)sample->data16[xCoarse]^0x8000)*availY/65536; @@ -1171,7 +1213,7 @@ void FurnaceGUI::drawSampleEdit() { totalAdvance+=xAdvanceCoarse; if (xCoarse>=sample->samples) break; do { - if (sample->depth==8) { + if (sample->depth==DIV_SAMPLE_DEPTH_8BIT) { y2=((unsigned char)sample->data8[xCoarse]^0x80)*availY/256; } else { y2=((unsigned short)sample->data16[xCoarse]^0x8000)*availY/65536; @@ -1209,11 +1251,11 @@ void FurnaceGUI::drawSampleEdit() { sampleSelStart=0; sampleSelEnd=sample->samples; } else { - if (sample->samples>0 && (sample->depth==16 || sample->depth==8)) { + if (sample->samples>0 && (sample->depth==DIV_SAMPLE_DEPTH_16BIT || sample->depth==DIV_SAMPLE_DEPTH_8BIT)) { sampleDragStart=rectMin; sampleDragAreaSize=rectSize; - sampleDrag16=(sample->depth==16); - sampleDragTarget=(sample->depth==16)?((void*)sample->data16):((void*)sample->data8); + sampleDrag16=(sample->depth==DIV_SAMPLE_DEPTH_16BIT); + sampleDragTarget=(sample->depth==DIV_SAMPLE_DEPTH_16BIT)?((void*)sample->data16):((void*)sample->data8); sampleDragLen=sample->samples; sampleDragActive=true; sampleSelStart=-1; @@ -1312,7 +1354,7 @@ void FurnaceGUI::drawSampleEdit() { posX=samplePos+pos.x*sampleZoom; if (posX>(int)sample->samples) posX=-1; } - posY=(0.5-pos.y/rectSize.y)*((sample->depth==8)?255:32767); + posY=(0.5-pos.y/rectSize.y)*((sample->depth==DIV_SAMPLE_DEPTH_8BIT)?255:32767); if (posX>=0) { statusBar+=fmt::sprintf(" | (%d, %d)",posX,posY); } @@ -1362,7 +1404,7 @@ void FurnaceGUI::drawSampleEdit() { } } - if (sample->depth!=8 && sample->depth!=16) { + if (sample->depth!=DIV_SAMPLE_DEPTH_8BIT && sample->depth!=DIV_SAMPLE_DEPTH_16BIT) { statusBar="Non-8/16-bit samples cannot be edited without prior conversion."; } From 7bc3166ed5eac383364595541c966a6ca14fe337 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 22 Jul 2022 00:01:29 -0500 Subject: [PATCH 227/580] YMZ280B: frequency precision improvement frequency is now multiplied by 256 and then fed to the chip divided by 256 to increase freq precision --- src/engine/platform/ymz280b.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/ymz280b.cpp b/src/engine/platform/ymz280b.cpp index 87193da5..b690d30c 100644 --- a/src/engine/platform/ymz280b.cpp +++ b/src/engine/platform/ymz280b.cpp @@ -23,7 +23,7 @@ #include #include -#define CHIP_FREQBASE 98304 +#define CHIP_FREQBASE 25165824 #define rWrite(a,v) {if(!skipRegisterWrites) {ymz280b.write(0,a); ymz280b.write(1,v); regPool[a]=v; if(dumpWrites) addWrite(a,v); }} @@ -142,7 +142,7 @@ void DivPlatformYMZ280B::tick(bool sysTick) { default: ctrl=0; } double off=(s->centerRate>=1)?((double)s->centerRate/8363.0):1.0; - chan[i].freq=(int)(off*parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,2,chan[i].pitch2,chipClock,CHIP_FREQBASE))-1; + chan[i].freq=(int)round(off*parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,2,chan[i].pitch2,chipClock,CHIP_FREQBASE)/256.0)-1; if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>511) chan[i].freq=511; // ADPCM has half the range @@ -267,14 +267,15 @@ int DivPlatformYMZ280B::dispatch(DivCommand c) { case DIV_CMD_NOTE_PORTA: { int destFreq=NOTE_FREQUENCY(c.value2); bool return2=false; + int multiplier=(parent->song.linearPitch==2)?1:256; if (destFreq>chan[c.chan].baseFreq) { - chan[c.chan].baseFreq+=c.value; + chan[c.chan].baseFreq+=c.value*multiplier; if (chan[c.chan].baseFreq>=destFreq) { chan[c.chan].baseFreq=destFreq; return2=true; } } else { - chan[c.chan].baseFreq-=c.value; + chan[c.chan].baseFreq-=c.value*multiplier; if (chan[c.chan].baseFreq<=destFreq) { chan[c.chan].baseFreq=destFreq; return2=true; From d004629a58d750015fddad09ce3ac415267f6a45 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 22 Jul 2022 02:29:01 -0500 Subject: [PATCH 228/580] dev102 - new sample storage format --- papers/format.md | 44 +++++++++++++++++++++-- src/engine/engine.h | 4 +-- src/engine/fileOps.cpp | 81 ++++++++++++++++++++++++++---------------- 3 files changed, 95 insertions(+), 34 deletions(-) diff --git a/papers/format.md b/papers/format.md index 6281293a..080914c1 100644 --- a/papers/format.md +++ b/papers/format.md @@ -816,7 +816,47 @@ size | description 4?? | wavetable data ``` -# sample +# sample (>=102) + +this is the new sample storage format used in Furnace dev102 and higher. + +``` +size | description +-----|------------------------------------ + 4 | "SMP2" block ID + 4 | size of this block + STR | sample name + 4 | length + 4 | compatibility rate + 4 | C-4 rate + 1 | depth + | - 0: ZX Spectrum overlay drum (1-bit) + | - 1: 1-bit NES DPCM (1-bit) + | - 3: YMZ ADPCM + | - 4: QSound ADPCM + | - 5: ADPCM-A + | - 6: ADPCM-B + | - 8: 8-bit PCM + | - 9: BRR (SNES) + | - 10: VOX + | - 16: 16-bit PCM + 3 | reserved + 4 | loop start + | - -1 means no loop + 4 | loop end + | - -1 means no loop + 16 | sample presence bitfields + | - for future use. + | - indicates whether the sample should be present in the memory of a system. + | - read 4 32-bit numbers (for 4 memory banks per system, e.g. YM2610 + | does ADPCM-A and ADPCM-B on separate memory banks). + ??? | sample data + | - size is length +``` + +# old sample (<102) + +this format is present when saving using previous Furnace versions. ``` size | description @@ -825,7 +865,7 @@ size | description 4 | size of this block STR | sample name 4 | length - 4 | rate + 4 | compatibility rate 2 | volume (<58) or reserved 2 | pitch (<58) or reserved 1 | depth diff --git a/src/engine/engine.h b/src/engine/engine.h index 896c083a..21fde0a7 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -45,8 +45,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "0.6pre1 (dev101)" -#define DIV_ENGINE_VERSION 101 +#define DIV_VERSION "0.6pre1 (dev102)" +#define DIV_ENGINE_VERSION 102 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 40932a37..11025905 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -1619,51 +1619,67 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { } reader.read(magic,4); - if (strcmp(magic,"SMPL")!=0) { + if (strcmp(magic,"SMPL")!=0 && strcmp(magic,"SMP2")!=0) { logE("%d: invalid sample header!",i); lastError="invalid sample header!"; ds.unload(); delete[] file; return false; } + bool isNewSample=(strcmp(magic,"SMP2")==0); reader.readI(); DivSample* sample=new DivSample; logD("reading sample %d at %x...",i,samplePtr[i]); + if (!isNewSample) logV("(old sample)"); sample->name=reader.readString(); - sample->samples=sample->loopEnd=reader.readI(); + sample->samples=reader.readI(); + if (!isNewSample) { + sample->loopEnd=sample->samples; + } sample->rate=reader.readI(); - if (ds.version<58) { - vol=reader.readS(); - pitch=reader.readS(); - } else { - reader.readI(); - } - sample->depth=(DivSampleDepth)reader.readC(); - // reserved - reader.readC(); + if (isNewSample) { + sample->centerRate=reader.readI(); + sample->depth=(DivSampleDepth)reader.readC(); - // while version 32 stored this value, it was unused. - if (ds.version>=38) { - sample->centerRate=(unsigned short) reader.readS(); - } else { - reader.readS(); - } + // reserved + reader.readC(); + reader.readC(); + reader.readC(); - if (ds.version>=19) { sample->loopStart=reader.readI(); + sample->loopEnd=reader.readI(); + + for (int i=0; i<4; i++) { + reader.readI(); + } } else { - reader.readI(); + if (ds.version<58) { + vol=reader.readS(); + pitch=reader.readS(); + } else { + reader.readI(); + } + sample->depth=(DivSampleDepth)reader.readC(); + + // reserved + reader.readC(); + + // while version 32 stored this value, it was unused. + if (ds.version>=38) { + sample->centerRate=(unsigned short)reader.readS(); + } else { + reader.readS(); + } + + if (ds.version>=19) { + sample->loopStart=reader.readI(); + } else { + reader.readI(); + } } -/* - if (ds.version>=100) { - sample->loopEnd=reader.readI(); - } else { - reader.readI(); - } -*/ if (ds.version>=58) { // modern sample sample->init(sample->samples); reader.read(sample->getCurBuf(),sample->getCurBufLen()); @@ -3038,19 +3054,24 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { for (int i=0; itell()); - w->write("SMPL",4); + w->write("SMP2",4); blockStartSeek=w->tell(); w->writeI(0); w->writeString(sample->name,false); w->writeI(sample->samples); w->writeI(sample->rate); - w->writeI(0); // reserved (for now) + w->writeI(sample->centerRate); w->writeC(sample->depth); + w->writeC(0); // reserved + w->writeC(0); w->writeC(0); - w->writeS(sample->centerRate); w->writeI(sample->loopStart); - //w->writeI(sample->loopEnd); + w->writeI(sample->loopEnd); + + for (int i=0; i<4; i++) { + w->writeI(0xffffffff); + } w->write(sample->getCurBuf(),sample->getCurBufLen()); From 8d88ac766c109872114e7055988a819e9f62478e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 17:02:03 -0500 Subject: [PATCH 229/580] dev103 - store system name and other info in song --- TODO.md | 3 -- papers/format.md | 9 +++++ src/engine/engine.cpp | 13 ++++++- src/engine/engine.h | 8 ++-- src/engine/fileOps.cpp | 32 ++++++++++++++++ src/engine/song.h | 5 ++- src/engine/sysDef.cpp | 86 +++++++++++++++++++++--------------------- src/engine/vgmOps.cpp | 24 +++++------- src/gui/gui.cpp | 4 +- src/gui/gui.h | 1 + src/gui/newSong.cpp | 3 +- src/gui/songInfo.cpp | 27 +++++++++++++ 12 files changed, 146 insertions(+), 69 deletions(-) diff --git a/TODO.md b/TODO.md index 5032ea32..46773705 100644 --- a/TODO.md +++ b/TODO.md @@ -1,8 +1,5 @@ # to-do for 0.6pre1.5-0.6pre2 -- rewrite the system name detection function anyway - - this involves the addition of a new "system" field in the song (which solves the problem) - - songs made in older versions will go through old system name detection for compatibility - Game Boy envelope macro/sequence - volume commands should work on Game Boy - ability to customize `OFF`, `===` and `REL` diff --git a/papers/format.md b/papers/format.md index 080914c1..53715021 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,8 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 103: Furnace dev103 +- 102: Furnace 0.6pre1 (dev102) - 101: Furnace 0.6pre1 (dev101) - 100: Furnace 0.6pre1 - 99: Furnace dev99 @@ -334,6 +336,13 @@ size | description 1 | number of additional subsongs 3 | reserved 4?? | pointers to subsong data + --- | **additional metadata** (>=103) + STR | system name + STR | album/category/game name + STR | song name (Japanese) + STR | song author (Japanese) + STR | system name (Japanese) + STR | album/category/game name (Japanese) ``` # subsong diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 659ea6b9..f1e8dc04 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -842,7 +842,7 @@ void DivEngine::initSongWithDesc(const int* description) { } } -void DivEngine::createNew(const int* description) { +void DivEngine::createNew(const int* description, String sysName) { quitDispatch(); BUSY_BEGIN; saveLock.lock(); @@ -852,6 +852,11 @@ void DivEngine::createNew(const int* description) { if (description!=NULL) { initSongWithDesc(description); } + if (sysName=="") { + song.systemName=getSongSystemLegacyName(song,getConfInt("noMultiSystem",0)); + } else { + song.systemName=sysName; + } recalcChans(); saveLock.unlock(); BUSY_END; @@ -3197,6 +3202,12 @@ bool DivEngine::init() { preset.push_back(0); initSongWithDesc(preset.data()); } + String sysName=getConfString("initialSysName",""); + if (sysName=="") { + song.systemName=getSongSystemLegacyName(song,getConfInt("noMultiSystem",0)); + } else { + song.systemName=sysName; + } hasLoadedSomething=true; } diff --git a/src/engine/engine.h b/src/engine/engine.h index 21fde0a7..f6567dd3 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -45,8 +45,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "0.6pre1 (dev102)" -#define DIV_ENGINE_VERSION 102 +#define DIV_VERSION "dev103" +#define DIV_ENGINE_VERSION 103 // for imports #define DIV_VERSION_MOD 0xff01 @@ -454,7 +454,7 @@ class DivEngine { String encodeSysDesc(std::vector& desc); std::vector decodeSysDesc(String desc); // start fresh - void createNew(const int* description); + void createNew(const int* description, String sysName); // load a file. bool load(unsigned char* f, size_t length); // save as .dmf. @@ -576,7 +576,7 @@ class DivEngine { DivInstrumentType getPreferInsSecondType(int ch); // get song system name - String getSongSystemName(bool isMultiSystemAcceptable=true); + String getSongSystemLegacyName(DivSong& ds, bool isMultiSystemAcceptable=true); // get sys name const char* getSystemName(DivSystem sys); diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 11025905..e66e2c8d 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -907,6 +907,8 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.system[1]=DIV_SYSTEM_FDS; } + ds.systemName=getSongSystemLegacyName(ds,getConfInt("noMultiSystem",0)); + if (active) quitDispatch(); BUSY_BEGIN_SOFT; saveLock.lock(); @@ -1482,7 +1484,22 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { for (int i=0; i=103) { + ds.systemName=reader.readString(); + ds.category=reader.readString(); + ds.nameJ=reader.readString(); + ds.authorJ=reader.readString(); + ds.systemNameJ=reader.readString(); + ds.categoryJ=reader.readString(); + } else { + ds.systemName=getSongSystemLegacyName(ds,getConfInt("noMultiSystem",0)); + } + + // read subsongs + if (ds.version>=95) { for (int i=0; i='1' && magic[0]<='9') { logD("detected a FastTracker module"); + ds.systemName="PC"; chCount=magic[0]-'0'; } else if (memcmp(magic,"FLT",3)==0 && magic[3]>='1' && magic[3]<='9') { logD("detected a Fairlight module"); + ds.systemName="Amiga"; chCount=magic[3]-'0'; } else if (memcmp(magic,"TDZ",3)==0 && magic[3]>='1' && magic[3]<='9') { logD("detected a TakeTracker module"); + ds.systemName="PC"; chCount=magic[3]-'0'; } else if ((memcmp(magic+2,"CH",2)==0 || memcmp(magic+2,"CN",2)==0) && (magic[0]>='1' && magic[0]<='9' && magic[1]>='0' && magic[1]<='9')) { logD("detected a Fast/TakeTracker module"); + ds.systemName="PC"; chCount=((magic[0]-'0')*10)+(magic[1]-'0'); } else { insCount=15; logD("possibly a Soundtracker module"); + ds.systemName="Amiga"; chCount=4; } @@ -2976,6 +3000,14 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { w->writeI(0); } + // additional metadata + w->writeString(song.systemName,false); + w->writeString(song.category,false); + w->writeString(song.nameJ,false); + w->writeString(song.authorJ,false); + w->writeString(song.systemNameJ,false); + w->writeString(song.categoryJ,false); + blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); w->writeI(blockEndSeek-blockStartSeek-4); diff --git a/src/engine/song.h b/src/engine/song.h index 26640fdd..8375fc56 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -428,7 +428,7 @@ struct DivSong { unsigned int systemFlags[32]; // song information - String name, author; + String name, author, systemName; // legacy song information // those will be stored in .fur and mapped to VGM as: @@ -438,7 +438,7 @@ struct DivSong { String carrier, composer, vendor, category, writer, arranger, copyright, manGroup, manInfo, createdDate, revisionDate; // more VGM specific stuff - String nameJ, authorJ, categoryJ; + String nameJ, authorJ, categoryJ, systemNameJ; // other things String notes; @@ -541,6 +541,7 @@ struct DivSong { systemLen(2), name(""), author(""), + systemName(""), carrier(""), composer(""), vendor(""), diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 25e35227..813e409e 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -54,14 +54,14 @@ std::vector& DivEngine::getPossibleInsTypes() { return possibleInsTypes; } -// TODO: deprecate when I add "system name" field in the file. -String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { - switch (song.systemLen) { +// for pre-dev103 modules +String DivEngine::getSongSystemLegacyName(DivSong& ds, bool isMultiSystemAcceptable) { + switch (ds.systemLen) { case 0: return "help! what's going on!"; case 1: - if (song.system[0]==DIV_SYSTEM_AY8910) { - switch (song.systemFlags[0]&0x3f) { + if (ds.system[0]==DIV_SYSTEM_AY8910) { + switch (ds.systemFlags[0]&0x3f) { case 0: // AY-3-8910, 1.79MHz case 1: // AY-3-8910, 1.77MHz case 2: // AY-3-8910, 1.75MHz @@ -88,116 +88,116 @@ String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { return "Intellivision (PAL)"; default: - if ((song.systemFlags[0]&0x30)==0x00) { + if ((ds.systemFlags[0]&0x30)==0x00) { return "AY-3-8910"; - } else if ((song.systemFlags[0]&0x30)==0x10) { + } else if ((ds.systemFlags[0]&0x30)==0x10) { return "Yamaha YM2149"; - } else if ((song.systemFlags[0]&0x30)==0x20) { + } else if ((ds.systemFlags[0]&0x30)==0x20) { return "Overclocked Sunsoft 5B"; - } else if ((song.systemFlags[0]&0x30)==0x30) { + } else if ((ds.systemFlags[0]&0x30)==0x30) { return "Intellivision"; } } - } else if (song.system[0]==DIV_SYSTEM_SMS) { - switch (song.systemFlags[0]&0x0f) { + } else if (ds.system[0]==DIV_SYSTEM_SMS) { + switch (ds.systemFlags[0]&0x0f) { case 0: case 1: return "Sega Master System"; case 6: return "BBC Micro"; } - } else if (song.system[0]==DIV_SYSTEM_YM2612) { - switch (song.systemFlags[0]&3) { + } else if (ds.system[0]==DIV_SYSTEM_YM2612) { + switch (ds.systemFlags[0]&3) { case 2: return "FM Towns"; } - } else if (song.system[0]==DIV_SYSTEM_YM2151) { - switch (song.systemFlags[0]&3) { + } else if (ds.system[0]==DIV_SYSTEM_YM2151) { + switch (ds.systemFlags[0]&3) { case 2: return "Sharp X68000"; } - } else if (song.system[0]==DIV_SYSTEM_SAA1099) { - switch (song.systemFlags[0]&3) { + } else if (ds.system[0]==DIV_SYSTEM_SAA1099) { + switch (ds.systemFlags[0]&3) { case 0: return "SAM CoupĆ©"; } } - return getSystemName(song.system[0]); + return getSystemName(ds.system[0]); case 2: - if (song.system[0]==DIV_SYSTEM_YM2612 && song.system[1]==DIV_SYSTEM_SMS) { + if (ds.system[0]==DIV_SYSTEM_YM2612 && ds.system[1]==DIV_SYSTEM_SMS) { return "Sega Genesis/Mega Drive"; } - if (song.system[0]==DIV_SYSTEM_YM2612_EXT && song.system[1]==DIV_SYSTEM_SMS) { + if (ds.system[0]==DIV_SYSTEM_YM2612_EXT && ds.system[1]==DIV_SYSTEM_SMS) { return "Sega Genesis Extended Channel 3"; } - if (song.system[0]==DIV_SYSTEM_OPLL && song.system[1]==DIV_SYSTEM_SMS) { + if (ds.system[0]==DIV_SYSTEM_OPLL && ds.system[1]==DIV_SYSTEM_SMS) { return "NTSC-J Sega Master System"; } - if (song.system[0]==DIV_SYSTEM_OPLL_DRUMS && song.system[1]==DIV_SYSTEM_SMS) { + if (ds.system[0]==DIV_SYSTEM_OPLL_DRUMS && ds.system[1]==DIV_SYSTEM_SMS) { return "NTSC-J Sega Master System + drums"; } - if (song.system[0]==DIV_SYSTEM_OPLL && song.system[1]==DIV_SYSTEM_AY8910) { + if (ds.system[0]==DIV_SYSTEM_OPLL && ds.system[1]==DIV_SYSTEM_AY8910) { return "MSX-MUSIC"; } - if (song.system[0]==DIV_SYSTEM_OPLL_DRUMS && song.system[1]==DIV_SYSTEM_AY8910) { + if (ds.system[0]==DIV_SYSTEM_OPLL_DRUMS && ds.system[1]==DIV_SYSTEM_AY8910) { return "MSX-MUSIC + drums"; } - if (song.system[0]==DIV_SYSTEM_C64_6581 && song.system[1]==DIV_SYSTEM_C64_6581) { + if (ds.system[0]==DIV_SYSTEM_C64_6581 && ds.system[1]==DIV_SYSTEM_C64_6581) { return "Commodore 64 with dual 6581"; } - if (song.system[0]==DIV_SYSTEM_C64_8580 && song.system[1]==DIV_SYSTEM_C64_8580) { + if (ds.system[0]==DIV_SYSTEM_C64_8580 && ds.system[1]==DIV_SYSTEM_C64_8580) { return "Commodore 64 with dual 8580"; } - if (song.system[0]==DIV_SYSTEM_YM2151 && song.system[1]==DIV_SYSTEM_SEGAPCM_COMPAT) { + if (ds.system[0]==DIV_SYSTEM_YM2151 && ds.system[1]==DIV_SYSTEM_SEGAPCM_COMPAT) { return "YM2151 + SegaPCM Arcade (compatibility)"; } - if (song.system[0]==DIV_SYSTEM_YM2151 && song.system[1]==DIV_SYSTEM_SEGAPCM) { + if (ds.system[0]==DIV_SYSTEM_YM2151 && ds.system[1]==DIV_SYSTEM_SEGAPCM) { return "YM2151 + SegaPCM Arcade"; } - if (song.system[0]==DIV_SYSTEM_SAA1099 && song.system[1]==DIV_SYSTEM_SAA1099) { + if (ds.system[0]==DIV_SYSTEM_SAA1099 && ds.system[1]==DIV_SYSTEM_SAA1099) { return "Creative Music System"; } - if (song.system[0]==DIV_SYSTEM_GB && song.system[1]==DIV_SYSTEM_AY8910) { + if (ds.system[0]==DIV_SYSTEM_GB && ds.system[1]==DIV_SYSTEM_AY8910) { return "Game Boy with AY expansion"; } - if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_VRC6) { + if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_VRC6) { return "Famicom + Konami VRC6"; } - if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_VRC7) { + if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_VRC7) { return "Famicom + Konami VRC7"; } - if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_OPLL) { + if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_OPLL) { return "Family Noraebang"; } - if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_FDS) { + if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_FDS) { return "Famicom Disk System"; } - if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_N163) { + if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_N163) { String ret="Famicom + "; ret+=getConfString("c163Name","Namco C163"); return ret; } - if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_MMC5) { + if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_MMC5) { return "Famicom + MMC5"; } - if (song.system[0]==DIV_SYSTEM_NES && song.system[1]==DIV_SYSTEM_AY8910) { + if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_AY8910) { return "Famicom + Sunsoft 5B"; } - if (song.system[0]==DIV_SYSTEM_AY8910 && song.system[1]==DIV_SYSTEM_AY8910) { + if (ds.system[0]==DIV_SYSTEM_AY8910 && ds.system[1]==DIV_SYSTEM_AY8910) { return "Bally Midway MCR"; } - if (song.system[0]==DIV_SYSTEM_YM2151 && song.system[1]==DIV_SYSTEM_VERA) { + if (ds.system[0]==DIV_SYSTEM_YM2151 && ds.system[1]==DIV_SYSTEM_VERA) { return "Commander X16"; } break; case 3: - if (song.system[0]==DIV_SYSTEM_AY8910 && song.system[1]==DIV_SYSTEM_AY8910 && song.system[2]==DIV_SYSTEM_BUBSYS_WSG) { + if (ds.system[0]==DIV_SYSTEM_AY8910 && ds.system[1]==DIV_SYSTEM_AY8910 && ds.system[2]==DIV_SYSTEM_BUBSYS_WSG) { return "Konami Bubble System"; } break; @@ -205,12 +205,12 @@ String DivEngine::getSongSystemName(bool isMultiSystemAcceptable) { if (isMultiSystemAcceptable) return "multi-system"; String ret=""; - for (int i=0; i0) ret+=" + "; - if (song.system[i]==DIV_SYSTEM_N163) { + if (ds.system[i]==DIV_SYSTEM_N163) { ret+=getConfString("c163Name","Namco C163"); } else { - ret+=getSystemName(song.system[i]); + ret+=getSystemName(ds.system[i]); } } diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index ef1c5dc3..a500b484 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -1920,24 +1920,20 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { WString ws; ws=utf8To16(song.name.c_str()); w->writeWString(ws,false); // name - w->writeS(0); // japanese name - w->writeS(0); // game name - w->writeS(0); // japanese game name - if (song.systemLen>1) { - ws=L"Multiple Systems"; - } else { - ws=utf8To16(getSystemName(song.system[0])); - } + ws=utf8To16(song.nameJ.c_str()); + w->writeWString(ws,false); // japanese name + ws=utf8To16(song.category.c_str()); + w->writeWString(ws,false); // game name + ws=utf8To16(song.categoryJ.c_str()); + w->writeWString(ws,false); // japanese game name + ws=utf8To16(song.systemName.c_str()); w->writeWString(ws,false); // system name - if (song.systemLen>1) { - ws=L"č¤‡ę•°ć‚·ć‚¹ćƒ†ćƒ "; - } else { - ws=utf8To16(getSystemNameJ(song.system[0])); - } + ws=utf8To16(song.systemNameJ.c_str()); w->writeWString(ws,false); // japanese system name ws=utf8To16(song.author.c_str()); w->writeWString(ws,false); // author name - w->writeS(0); // japanese author name + ws=utf8To16(song.authorJ.c_str()); + w->writeWString(ws,false); // japanese author name w->writeS(0); // date w->writeWString(L"Furnace Tracker",false); // ripper w->writeS(0); // notes diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 90925b93..97c1d78e 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -551,7 +551,9 @@ void FurnaceGUI::updateWindowTitle() { } if (settings.titleBarSys) { - title+=fmt::sprintf(" (%s)",e->getSongSystemName(!settings.noMultiSystem)); + if (e->song.systemName!="") { + title+=fmt::sprintf(" (%s)",e->song.systemName); + } } if (sdlWin!=NULL) SDL_SetWindowTitle(sdlWin,title.c_str()); diff --git a/src/gui/gui.h b/src/gui/gui.h index 851e10aa..c267fcab 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1230,6 +1230,7 @@ class FurnaceGUI { float patChanX[DIV_MAX_CHANS+1]; float patChanSlideY[DIV_MAX_CHANS+1]; const int* nextDesc; + String nextDescName; OperationMask opMaskDelete, opMaskPullDelete, opMaskInsert, opMaskPaste, opMaskTransposeNote, opMaskTransposeValue; OperationMask opMaskInterpolate, opMaskFade, opMaskInvertVal, opMaskScale; diff --git a/src/gui/newSong.cpp b/src/gui/newSong.cpp index 0dea772b..26fddf9f 100644 --- a/src/gui/newSong.cpp +++ b/src/gui/newSong.cpp @@ -65,6 +65,7 @@ void FurnaceGUI::drawNewSong() { ImGui::TableNextColumn(); if (ImGui::Selectable(i.name,false,ImGuiSelectableFlags_DontClosePopups)) { nextDesc=i.definition.data(); + nextDescName=i.name; accepted=true; } } @@ -97,7 +98,7 @@ void FurnaceGUI::drawNewSong() { } if (accepted) { - e->createNew(nextDesc); + e->createNew(nextDesc,nextDescName); undoHist.clear(); redoHist.clear(); curFileName=""; diff --git a/src/gui/songInfo.cpp b/src/gui/songInfo.cpp index e90043b7..b823d085 100644 --- a/src/gui/songInfo.cpp +++ b/src/gui/songInfo.cpp @@ -207,6 +207,33 @@ void FurnaceGUI::drawSongInfo() { } ImGui::EndTable(); } + + if (ImGui::TreeNode("Additional Information")) { + if (ImGui::BeginTable("ExtraData",2,ImGuiTableFlags_SizingStretchProp)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Album"); + ImGui::TableNextColumn(); + float avail=ImGui::GetContentRegionAvail().x; + ImGui::SetNextItemWidth(avail); + if (ImGui::InputText("##Category",&e->song.category)) { + MARK_MODIFIED; + } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("System"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputText("##SystemName",&e->song.systemName)) { + MARK_MODIFIED; + updateWindowTitle(); + } + ImGui::EndTable(); + } + ImGui::TreePop(); + } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SONG_INFO; ImGui::End(); From 6051f92e684f031b790504b705cd601307a30a62 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 18:22:42 -0500 Subject: [PATCH 230/580] GUI: add setting to customize initial system name --- src/gui/gui.h | 4 +++- src/gui/settings.cpp | 39 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/gui/gui.h b/src/gui/gui.h index c267fcab..bd2a5494 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1100,6 +1100,7 @@ class FurnaceGUI { String midiInDevice; String midiOutDevice; String c163Name; + String initialSysName; std::vector initialSys; Settings(): @@ -1203,7 +1204,8 @@ class FurnaceGUI { audioDevice(""), midiInDevice(""), midiOutDevice(""), - c163Name("") {} + c163Name(""), + initialSysName("Sega Genesis/Mega Drive") {} } settings; char finalLayoutPath[4096]; diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 2d05ab5a..b9739083 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -252,9 +252,9 @@ void FurnaceGUI::drawSettings() { ImGui::Separator(); - ImGui::Text("Initial system/chips:"); + ImGui::Text("Initial system:"); ImGui::SameLine(); - if (ImGui::Button("Current systems")) { + if (ImGui::Button("Current system")) { settings.initialSys.clear(); for (int i=0; isong.systemLen; i++) { settings.initialSys.push_back(e->song.system[i]); @@ -262,6 +262,7 @@ void FurnaceGUI::drawSettings() { settings.initialSys.push_back(e->song.systemPan[i]); settings.initialSys.push_back(e->song.systemFlags[i]); } + settings.initialSysName=e->song.systemName; } ImGui::SameLine(); if (ImGui::Button("Randomize")) { @@ -282,6 +283,31 @@ void FurnaceGUI::drawSettings() { settings.initialSys.push_back(0); settings.initialSys.push_back(0); } + // randomize system name + std::vector wordPool[6]; + for (size_t i=0; igetSystemName((DivSystem)settings.initialSys[i*4]); + String nameWord; + sName+=" "; + for (char& i: sName) { + if (i==' ') { + if (nameWord!="") { + wordPool[wpPos++].push_back(nameWord); + if (wpPos>=6) break; + nameWord=""; + } + } else { + nameWord+=i; + } + } + } + settings.initialSysName=""; + for (int i=0; i<6; i++) { + if (wordPool[i].empty()) continue; + settings.initialSysName+=wordPool[i][rand()%wordPool[i].size()]; + settings.initialSysName+=" "; + } } ImGui::SameLine(); if (ImGui::Button("Reset to defaults")) { @@ -294,7 +320,14 @@ void FurnaceGUI::drawSettings() { settings.initialSys.push_back(32); settings.initialSys.push_back(0); settings.initialSys.push_back(0); + settings.initialSysName="Sega Genesis/Mega Drive"; } + + ImGui::Text("Name"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::InputText("##InitSysName",&settings.initialSysName); + for (size_t i=0; igetConfInt("dragMovesSelection",2); settings.unsignedDetune=e->getConfInt("unsignedDetune",0); settings.noThreadedInput=e->getConfInt("noThreadedInput",0); + settings.initialSysName=e->getConfString("initialSysName",""); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2286,6 +2320,7 @@ void FurnaceGUI::commitSettings() { e->setConf("moveWindowTitle",settings.moveWindowTitle); e->setConf("hiddenSystems",settings.hiddenSystems); e->setConf("initialSys",e->encodeSysDesc(settings.initialSys)); + e->setConf("initialSysName",settings.initialSysName); e->setConf("horizontalDataView",settings.horizontalDataView); e->setConf("noMultiSystem",settings.noMultiSystem); e->setConf("oldMacroVSlider",settings.oldMacroVSlider); From efa75a4480d44f21fe579e767c44978b0eeebb33 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 18:40:48 -0500 Subject: [PATCH 231/580] GUI: sub-song info experiment --- src/gui/songInfo.cpp | 49 +++++++--------- src/gui/subSongs.cpp | 133 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 154 insertions(+), 28 deletions(-) diff --git a/src/gui/songInfo.cpp b/src/gui/songInfo.cpp index b823d085..41ec082a 100644 --- a/src/gui/songInfo.cpp +++ b/src/gui/songInfo.cpp @@ -64,6 +64,25 @@ void FurnaceGUI::drawSongInfo() { if (ImGui::InputText("##Author",&e->song.author)) { MARK_MODIFIED; } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Album"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputText("##Category",&e->song.category)) { + MARK_MODIFIED; + } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("System"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputText("##SystemName",&e->song.systemName)) { + MARK_MODIFIED; + updateWindowTitle(); + } + ImGui::EndTable(); } @@ -72,6 +91,7 @@ void FurnaceGUI::drawSongInfo() { ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0); ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0); + /* ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Text("TimeBase"); @@ -193,12 +213,14 @@ void FurnaceGUI::drawSongInfo() { ImGui::Text("NTSC"); } } + */ ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Text("Tuning (A-4)"); ImGui::TableNextColumn(); float tune=e->song.tuning; + float avail=ImGui::GetContentRegionAvail().x; ImGui::SetNextItemWidth(avail); if (ImGui::InputFloat("##Tuning",&tune,1.0f,3.0f,"%g")) { MARK_MODIFIED if (tune<220.0f) tune=220.0f; @@ -207,33 +229,6 @@ void FurnaceGUI::drawSongInfo() { } ImGui::EndTable(); } - - if (ImGui::TreeNode("Additional Information")) { - if (ImGui::BeginTable("ExtraData",2,ImGuiTableFlags_SizingStretchProp)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0); - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0); - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Album"); - ImGui::TableNextColumn(); - float avail=ImGui::GetContentRegionAvail().x; - ImGui::SetNextItemWidth(avail); - if (ImGui::InputText("##Category",&e->song.category)) { - MARK_MODIFIED; - } - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("System"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - if (ImGui::InputText("##SystemName",&e->song.systemName)) { - MARK_MODIFIED; - updateWindowTitle(); - } - ImGui::EndTable(); - } - ImGui::TreePop(); - } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SONG_INFO; ImGui::End(); diff --git a/src/gui/subSongs.cpp b/src/gui/subSongs.cpp index b13b8420..c100600d 100644 --- a/src/gui/subSongs.cpp +++ b/src/gui/subSongs.cpp @@ -2,6 +2,7 @@ #include "imgui.h" #include "IconsFontAwesome4.h" #include "misc/cpp/imgui_stdlib.h" +#include "intConst.h" void FurnaceGUI::drawSubSongs() { if (nextWindow==GUI_WINDOW_SUBSONGS) { @@ -11,7 +12,7 @@ void FurnaceGUI::drawSubSongs() { } if (!subSongsOpen) return; ImGui::SetNextWindowSizeConstraints(ImVec2(64.0f*dpiScale,32.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale)); - if (ImGui::Begin("Subsongs",&subSongsOpen,ImGuiWindowFlags_NoScrollWithMouse|ImGuiWindowFlags_NoScrollbar|globalWinFlags)) { + if (ImGui::Begin("Subsongs",&subSongsOpen,globalWinFlags)) { char id[1024]; ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0f-ImGui::GetStyle().ItemSpacing.x); if (e->curSubSong->name.empty()) { @@ -93,6 +94,136 @@ void FurnaceGUI::drawSubSongs() { if (ImGui::InputText("##SubSongName",&e->curSubSong->name)) { MARK_MODIFIED; } + + if (ImGui::BeginTable("OtherSubProps",3,ImGuiTableFlags_SizingStretchProp)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("TimeBase"); + ImGui::TableNextColumn(); + float avail=ImGui::GetContentRegionAvail().x; + ImGui::SetNextItemWidth(avail); + unsigned char realTB=e->curSubSong->timeBase+1; + if (ImGui::InputScalar("##TimeBase",ImGuiDataType_U8,&realTB,&_ONE,&_THREE)) { MARK_MODIFIED + if (realTB<1) realTB=1; + if (realTB>16) realTB=16; + e->curSubSong->timeBase=realTB-1; + } + ImGui::TableNextColumn(); + ImGui::Text("%.2f BPM",calcBPM(e->curSubSong->speed1,e->curSubSong->speed2,e->curSubSong->hz,e->curSubSong->virtualTempoN,e->curSubSong->virtualTempoD)); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Speed"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputScalar("##Speed1",ImGuiDataType_U8,&e->curSubSong->speed1,&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->speed1<1) e->curSubSong->speed1=1; + if (e->isPlaying()) play(); + } + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputScalar("##Speed2",ImGuiDataType_U8,&e->curSubSong->speed2,&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->speed2<1) e->curSubSong->speed2=1; + if (e->isPlaying()) play(); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Virtual Tempo"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputScalar("##VTempoN",ImGuiDataType_S16,&e->curSubSong->virtualTempoN,&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->virtualTempoN<1) e->curSubSong->virtualTempoN=1; + if (e->curSubSong->virtualTempoN>255) e->curSubSong->virtualTempoN=255; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Numerator"); + } + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputScalar("##VTempoD",ImGuiDataType_S16,&e->curSubSong->virtualTempoD,&_ONE,&_THREE)) { MARK_MODIFIED + if (e->curSubSong->virtualTempoD<1) e->curSubSong->virtualTempoD=1; + if (e->curSubSong->virtualTempoD>255) e->curSubSong->virtualTempoD=255; + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Denominator (set to base tempo)"); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Highlight"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputScalar("##Highlight1",ImGuiDataType_U8,&e->curSubSong->hilightA,&_ONE,&_THREE)) { + MARK_MODIFIED; + } + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + if (ImGui::InputScalar("##Highlight2",ImGuiDataType_U8,&e->curSubSong->hilightB,&_ONE,&_THREE)) { + MARK_MODIFIED; + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Pattern Length"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + int patLen=e->curSubSong->patLen; + if (ImGui::InputInt("##PatLength",&patLen,1,3)) { MARK_MODIFIED + if (patLen<1) patLen=1; + if (patLen>256) patLen=256; + e->curSubSong->patLen=patLen; + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Song Length"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + int ordLen=e->curSubSong->ordersLen; + if (ImGui::InputInt("##OrdLength",&ordLen,1,3)) { MARK_MODIFIED + if (ordLen<1) ordLen=1; + if (ordLen>256) ordLen=256; + e->curSubSong->ordersLen=ordLen; + if (curOrder>=ordLen) { + setOrder(ordLen-1); + } + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (ImGui::Selectable(tempoView?"Base Tempo##TempoOrHz":"Tick Rate##TempoOrHz")) { + tempoView=!tempoView; + } + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(avail); + float setHz=tempoView?e->curSubSong->hz*2.5:e->curSubSong->hz; + if (ImGui::InputFloat("##Rate",&setHz,1.0f,1.0f,"%g")) { MARK_MODIFIED + if (tempoView) setHz/=2.5; + if (setHz<10) setHz=10; + if (setHz>999) setHz=999; + e->setSongRate(setHz,setHz<52); + } + if (tempoView) { + ImGui::TableNextColumn(); + ImGui::Text("= %gHz",e->curSubSong->hz); + } else { + if (e->curSubSong->hz>=49.98 && e->curSubSong->hz<=50.02) { + ImGui::TableNextColumn(); + ImGui::Text("PAL"); + } + if (e->curSubSong->hz>=59.9 && e->curSubSong->hz<=60.11) { + ImGui::TableNextColumn(); + ImGui::Text("NTSC"); + } + } + + ImGui::EndTable(); + } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SUBSONGS; ImGui::End(); From dfcb9551e7a371b70da3003ab8a07b46bb0de48e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 18:53:42 -0500 Subject: [PATCH 232/580] GUI: update credits --- src/gui/about.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index d3d1d9e4..210040c8 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -27,8 +27,8 @@ const char* aboutLine[]={ "", ("Furnace " DIV_VERSION), "", - "the free software multi-system chiptune tracker,", - "compatible with DefleMask modules.", + "the biggest multi-system chiptune tracker!", + "featuring DefleMask song compatibility.", "", "zero disassembly.", "just clean-room design,", @@ -78,6 +78,7 @@ const char* aboutLine[]={ "kleeder", "jaezu", "Laggy", + "LovelyA72", "LunaMoth", "Mahbod Karamoozian", "Miker", From 984d61d0818c8a1ab01f4cd1a83c0284a6b840a9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 18:53:49 -0500 Subject: [PATCH 233/580] GUI: update song information --- src/gui/songInfo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/songInfo.cpp b/src/gui/songInfo.cpp index 41ec082a..9cdf508a 100644 --- a/src/gui/songInfo.cpp +++ b/src/gui/songInfo.cpp @@ -229,6 +229,8 @@ void FurnaceGUI::drawSongInfo() { } ImGui::EndTable(); } + + ImGui::TextWrapped("if this feels incomplete, go to Subsongs.\nthe outcome of this Song Information window will be determined by a poll on the Furnace Discord."); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SONG_INFO; ImGui::End(); From 26d60dd1079c28d8d63a83246e38f15a0e0e39f3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 19:01:30 -0500 Subject: [PATCH 234/580] GUI: fix per-chan osc debug crash fixes #600 --- src/gui/debugWindow.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/gui/debugWindow.cpp b/src/gui/debugWindow.cpp index 12e775b5..6ad2dddd 100644 --- a/src/gui/debugWindow.cpp +++ b/src/gui/debugWindow.cpp @@ -220,24 +220,34 @@ void FurnaceGUI::drawDebug() { ImGui::Text("Data"); for (int j=0; jgetChannelCount(system); j++, c++) { + DivDispatchOscBuffer* oscBuf=e->getOscBuffer(c); + if (oscBuf==NULL) { + ImGui::TableNextRow(); + // channel + ImGui::TableNextColumn(); + ImGui::Text("%d",j); + ImGui::TableNextColumn(); + ImGui::Text(""); + continue; + } ImGui::TableNextRow(); // channel ImGui::TableNextColumn(); ImGui::Text("%d",j); // follow ImGui::TableNextColumn(); - ImGui::Checkbox(fmt::sprintf("##%d_OSCFollow_%d",i,c).c_str(),&e->getOscBuffer(c)->follow); + ImGui::Checkbox(fmt::sprintf("##%d_OSCFollow_%d",i,c).c_str(),&oscBuf->follow); // address ImGui::TableNextColumn(); - int needle=e->getOscBuffer(c)->follow?e->getOscBuffer(c)->needle:e->getOscBuffer(c)->followNeedle; - ImGui::BeginDisabled(e->getOscBuffer(c)->follow); + int needle=oscBuf->follow?oscBuf->needle:oscBuf->followNeedle; + ImGui::BeginDisabled(oscBuf->follow); if (ImGui::InputInt(fmt::sprintf("##%d_OSCFollowNeedle_%d",i,c).c_str(),&needle,1,100)) { - e->getOscBuffer(c)->followNeedle=MIN(MAX(needle,0),65535); + oscBuf->followNeedle=MIN(MAX(needle,0),65535); } ImGui::EndDisabled(); // data ImGui::TableNextColumn(); - ImGui::Text("%d",e->getOscBuffer(c)->data[needle]); + ImGui::Text("%d",oscBuf->data[needle]); } ImGui::EndTable(); } From 78b54190047667b6b8b1d4a906c58a31687f064c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 19:08:39 -0500 Subject: [PATCH 235/580] GUI: fix effect list hotkey --- src/gui/guiConst.cpp | 2 +- src/gui/settings.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 64e7b18d..9228d1c7 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -489,9 +489,9 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("WINDOW_CHANNELS", "Channels", 0), D("WINDOW_REGISTER_VIEW", "Register View", 0), D("WINDOW_LOG", "Log Viewer", 0), - D("WINDOW_SUBSONGS", "Subsongs", 0), D("EFFECT_LIST", "Effect List", 0), D("WINDOW_CHAN_OSC", "Oscilloscope (per-channel)", 0), + D("WINDOW_SUBSONGS", "Subsongs", 0), D("WINDOW_FIND", "Find/Replace", FURKMOD_CMD|SDLK_f), D("COLLAPSE_WINDOW", "Collapse/expand current window", 0), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index b9739083..3067eed8 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1653,6 +1653,7 @@ void FurnaceGUI::drawSettings() { UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_DEBUG); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_OSCILLOSCOPE); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_CHAN_OSC); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_EFFECT_LIST); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_VOL_METER); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_STATS); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_COMPAT_FLAGS); From 8011e7adc765632c3bed4614284b42c6744cae34 Mon Sep 17 00:00:00 2001 From: Aleksi Knutsi <53163105+host12prog@users.noreply.github.com> Date: Sun, 24 Jul 2022 07:13:30 +0700 Subject: [PATCH 236/580] Implement Phase Reset Timer macro for Sound Unit (#573) * Implement Phase Reset Timer Macro * And make the macro actually work * Delete ex4Max variable --- src/engine/platform/su.cpp | 7 +++++++ src/gui/insEdit.cpp | 1 + 2 files changed, 8 insertions(+) diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 48d0ba9a..c2cd6b25 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -187,6 +187,13 @@ void DivPlatformSoundUnit::tick(bool sysTick) { chan[i].control=chan[i].std.ex3.val&15; writeControl(i); } + if (chan[i].std.ex4.had) { + chan[i].syncTimer=chan[i].std.ex4.val&65535; + chan[i].timerSync=(chan[i].syncTimer>0); + chWrite(i,0x1e,chan[i].syncTimer&0xff); + chWrite(i,0x1f,chan[i].syncTimer>>8); + writeControlUpper(i); + } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { //DivInstrument* ins=parent->getIns(chan[i].ins,DIV_INS_SU); chan[i].freq=parent->calcFreq(chan[i].baseFreq,chan[i].pitch,false,2,chan[i].pitch2,chipClock,CHIP_FREQBASE); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 25ee330b..f0d6d3da 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3678,6 +3678,7 @@ void FurnaceGUI::drawInsEdit() { } if (ins->type==DIV_INS_SU) { macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.ex3Macro,0,4,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,suControlBits)); + macroList.push_back(FurnaceGUIMacroDesc("Phase Reset Timer",&ins->std.ex4Macro,0,65535,160,uiColors[GUI_COLOR_MACRO_OTHER])); // again reuse code from resonance macro but use ex4 instead } drawMacros(macroList); From de77d51d7af16116537dc8f70663fbb2d8bcb386 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 21:19:43 -0500 Subject: [PATCH 237/580] GUI: update credits --- src/gui/about.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 210040c8..00d899f8 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -96,6 +96,7 @@ const char* aboutLine[]={ "-- additional feedback/fixes --", "fd", "GENATARi", + "host12prog", "plane", "TheEssem", "", From e08399156a863cac9da2f4b60829c73f8fdda436 Mon Sep 17 00:00:00 2001 From: Christoph Neidahl Date: Sun, 24 Jul 2022 05:11:30 +0200 Subject: [PATCH 238/580] Haiku support (#596) * Don't apply Wayland videodriver workaround on Haiku * dirent.d_type-less type detecting in IGFD The Dumb Way(tm). `stat`'s `st_mode` should be nicer? * CMake check for dirent.d_type, stat-based fallback * Move config dir setup to separate function Nicer to work with than macro kerfuffle. * Default sysFileDialog to off on Haiku * Logging stuff * Honour CMAKE_INSTALL_BINDIR * Use find_directory on Haiku Includes forgotten configPath line when home==NULL. * Address PR review notes --- CMakeLists.txt | 14 +++++-- extern/igfd/ImGuiFileDialog.cpp | 69 +++++++++++++++++++++---------- src/check/check_dirent_type.c | 7 ++++ src/engine/config.cpp | 73 +++++++++++++++++++++++++++++++++ src/engine/engine.cpp | 72 +------------------------------- src/engine/engine.h | 3 ++ src/gui/settings.cpp | 9 +++- src/main.cpp | 2 +- 8 files changed, 152 insertions(+), 97 deletions(-) create mode 100644 src/check/check_dirent_type.c diff --git a/CMakeLists.txt b/CMakeLists.txt index e7190ece..5331d8bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -583,6 +583,13 @@ if (NOT WIN32 AND NOT APPLE) endif() endif() +if (NOT WIN32) + try_compile(HAVE_DIRENT_TYPE ${CMAKE_BINARY_DIR}/check SOURCES ${CMAKE_SOURCE_DIR}/src/check/check_dirent_type.c) + if (HAVE_DIRENT_TYPE) + list(APPEND DEPENDENCIES_DEFINES HAVE_DIRENT_TYPE) + endif() +endif() + set(USED_SOURCES ${ENGINE_SOURCES} ${AUDIO_SOURCES} src/main.cpp) if (USE_BACKWARD) @@ -692,10 +699,9 @@ if (PKG_CONFIG_FOUND AND (SYSTEM_FMT OR SYSTEM_LIBSNDFILE OR SYSTEM_ZLIB OR SYST endif() if (NOT ANDROID OR TERMUX) - install(TARGETS furnace RUNTIME DESTINATION bin) - if (NOT WIN32 AND NOT APPLE) include(GNUInstallDirs) + install(TARGETS furnace RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES res/furnace.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) install(FILES res/furnace.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) install(DIRECTORY papers DESTINATION ${CMAKE_INSTALL_DOCDIR}) @@ -708,8 +714,10 @@ if (NOT ANDROID OR TERMUX) install(FILES res/icon.iconset/icon_${res}@2x.png RENAME furnace.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/${res}@2/apps) endforeach() install(FILES res/logo.png RENAME furnace.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/1024x1024/apps) + else() + install(TARGETS furnace RUNTIME DESTINATION bin) endif() - + set(CPACK_PACKAGE_NAME "Furnace") set(CPACK_PACKAGE_VENDOR "tildearrow") set(CPACK_PACKAGE_DESCRIPTION "free and open-source chiptune tracker") diff --git a/extern/igfd/ImGuiFileDialog.cpp b/extern/igfd/ImGuiFileDialog.cpp index 776ad373..63ae3b87 100644 --- a/extern/igfd/ImGuiFileDialog.cpp +++ b/extern/igfd/ImGuiFileDialog.cpp @@ -58,13 +58,13 @@ SOFTWARE. #ifndef PATH_MAX #define PATH_MAX 260 #endif // PATH_MAX -#elif defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined (__EMSCRIPTEN__) +#elif defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined (__EMSCRIPTEN__) || defined(__HAIKU__) #define UNIX #define stricmp strcasecmp #include // this option need c++17 #ifndef USE_STD_FILESYSTEM - #include + #include #endif // USE_STD_FILESYSTEM #define PATH_SEP '/' #endif // defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) @@ -1547,28 +1547,53 @@ namespace IGFD for (i = 0; i < n; i++) { struct dirent* ent = files[i]; - + std::string where = path + std::string("/") + std::string(ent->d_name); char fileType = 0; - switch (ent->d_type) +#ifdef HAVE_DIRENT_TYPE + if (ent->d_type != DT_UNKNOWN) { - case DT_REG: - fileType = 'f'; break; - case DT_DIR: - fileType = 'd'; break; - case DT_LNK: - std::string where = path+std::string("/")+std::string(ent->d_name); - DIR* dirTest = opendir(where.c_str()); - if (dirTest==NULL) { - if (errno==ENOTDIR) { - fileType = 'f'; - } else { - fileType = 'l'; - } - } else { - fileType = 'd'; - closedir(dirTest); - } - break; + switch (ent->d_type) + { + case DT_REG: + fileType = 'f'; break; + case DT_DIR: + fileType = 'd'; break; + case DT_LNK: + DIR* dirTest = opendir(where.c_str()); + if (dirTest == NULL) + { + if (errno == ENOTDIR) + { + fileType = 'f'; + } + else + { + fileType = 'l'; + } + } + else + { + fileType = 'd'; + closedir(dirTest); + } + break; + } + } + else +#endif // HAVE_DIRENT_TYPE + { + struct stat filestat; + if (stat(where.c_str(), &filestat) == 0) + { + if (S_ISDIR(filestat.st_mode)) + { + fileType = 'd'; + } + else + { + fileType = 'f'; + } + } } auto fileNameExt = ent->d_name; diff --git a/src/check/check_dirent_type.c b/src/check/check_dirent_type.c new file mode 100644 index 00000000..e65a0d6b --- /dev/null +++ b/src/check/check_dirent_type.c @@ -0,0 +1,7 @@ +#include + +int main(int, char**) { + struct dirent deTest = { }; + unsigned char deType = deTest.d_type; + return 0; +} diff --git a/src/engine/config.cpp b/src/engine/config.cpp index 92866a9f..f404c0a4 100644 --- a/src/engine/config.cpp +++ b/src/engine/config.cpp @@ -23,11 +23,84 @@ #include #ifdef _WIN32 +#include "winStuff.h" #define CONFIG_FILE "\\furnace.cfg" #else +#ifdef __HAIKU__ +#include +#include +#endif +#include +#include +#include #define CONFIG_FILE "/furnace.cfg" #endif +void DivEngine::initConfDir() { +#ifdef _WIN32 + // maybe move this function in here instead? + configPath=getWinConfigPath(); +#elif defined (IS_MOBILE) + configPath=SDL_GetPrefPath(); +#else +#ifdef __HAIKU__ + char userSettingsDir[PATH_MAX]; + status_t findUserDir = find_directory(B_USER_SETTINGS_DIRECTORY,0,true,userSettingsDir,PATH_MAX); + if (findUserDir==B_OK) { + configPath=userSettingsDir; + } else { + logW("unable to find/create user settings directory (%s)!",strerror(findUserDir)); + configPath="."; + return; + } +#else + // TODO this should check XDG_CONFIG_HOME first + char* home=getenv("HOME"); + if (home==NULL) { + int uid=getuid(); + struct passwd* entry=getpwuid(uid); + if (entry==NULL) { + logW("unable to determine home directory (%s)!",strerror(errno)); + configPath="."; + return; + } else { + configPath=entry->pw_dir; + } + } else { + configPath=home; + } +#ifdef __APPLE__ + configPath+="/Library/Application Support"; +#else + // FIXME this doesn't honour XDG_CONFIG_HOME *at all* + configPath+="/.config"; +#endif // __APPLE__ +#endif // __HAIKU__ +#ifdef __APPLE__ + configPath+="/Furnace"; +#else + configPath+="/furnace"; +#endif // __APPLE__ + struct stat st; + std::string pathSep="/"; + configPath+=pathSep; + size_t sepPos=configPath.find(pathSep,1); + while (sepPos!=std::string::npos) { + std::string subpath=configPath.substr(0,sepPos++); + if (stat(subpath.c_str(),&st)!=0) { + logI("creating config path element %s ...",subpath.c_str()); + if (mkdir(subpath.c_str(),0755)!=0) { + logW("could not create config path element %s! (%s)",subpath.c_str(),strerror(errno)); + configPath="."; + return; + } + } + sepPos=configPath.find(pathSep,sepPos); + } + configPath.resize(configPath.length()-pathSep.length()); +#endif // _WIN32 +} + bool DivEngine::saveConf() { configFile=configPath+String(CONFIG_FILE); FILE* f=ps_fopen(configFile.c_str(),"wb"); diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index f1e8dc04..98947ead 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -27,11 +27,6 @@ #include "../audio/sdlAudio.h" #endif #include -#ifndef _WIN32 -#include -#include -#include -#endif #ifdef HAVE_JACK #include "../audio/jack.h" #endif @@ -2989,36 +2984,6 @@ void DivEngine::quitDispatch() { BUSY_END; } -#define CHECK_CONFIG_DIR_MAC() \ - configPath+="/Library/Application Support/Furnace"; \ - if (stat(configPath.c_str(),&st)<0) { \ - logI("creating config dir..."); \ - if (mkdir(configPath.c_str(),0755)<0) { \ - logW("could not make config dir! (%s)",strerror(errno)); \ - configPath="."; \ - } \ - } - -#define CHECK_CONFIG_DIR() \ - configPath+="/.config"; \ - if (stat(configPath.c_str(),&st)<0) { \ - logI("creating user config dir..."); \ - if (mkdir(configPath.c_str(),0755)<0) { \ - logW("could not make user config dir! (%s)",strerror(errno)); \ - configPath="."; \ - } \ - } \ - if (configPath!=".") { \ - configPath+="/furnace"; \ - if (stat(configPath.c_str(),&st)<0) { \ - logI("creating config dir..."); \ - if (mkdir(configPath.c_str(),0755)<0) { \ - logW("could not make config dir! (%s)",strerror(errno)); \ - configPath="."; \ - } \ - } \ - } - bool DivEngine::initAudioBackend() { // load values if (audioEngine==DIV_AUDIO_NULL) { @@ -3148,45 +3113,12 @@ bool DivEngine::deinitAudioBackend() { return true; } -#ifdef _WIN32 -#include "winStuff.h" -#endif - bool DivEngine::init() { // register systems if (!systemsRegistered) registerSystems(); - + // init config -#ifdef _WIN32 - configPath=getWinConfigPath(); -#elif defined(IS_MOBILE) - configPath=SDL_GetPrefPath("tildearrow","furnace"); -#else - struct stat st; - char* home=getenv("HOME"); - if (home==NULL) { - int uid=getuid(); - struct passwd* entry=getpwuid(uid); - if (entry==NULL) { - logW("unable to determine config directory! (%s)",strerror(errno)); - configPath="."; - } else { - configPath=entry->pw_dir; -#ifdef __APPLE__ - CHECK_CONFIG_DIR_MAC(); -#else - CHECK_CONFIG_DIR(); -#endif - } - } else { - configPath=home; -#ifdef __APPLE__ - CHECK_CONFIG_DIR_MAC(); -#else - CHECK_CONFIG_DIR(); -#endif - } -#endif + initConfDir(); logD("config path: %s",configPath.c_str()); loadConf(); diff --git a/src/engine/engine.h b/src/engine/engine.h index f6567dd3..0ec74eb5 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -485,6 +485,9 @@ class DivEngine { // returns the minimum VGM version which may carry the specified system, or 0 if none. int minVGMVersion(DivSystem which); + // determine and setup config dir + void initConfDir(); + // save config bool saveConf(); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 3067eed8..f6767119 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -39,6 +39,13 @@ #define POWER_SAVE_DEFAULT 0 #endif +#ifdef __HAIKU__ +// NFD doesn't support Haiku +#define SYS_FILE_DIALOG_DEFAULT 0 +#else +#define SYS_FILE_DIALOG_DEFAULT 1 +#endif + const char* mainFonts[]={ "IBM Plex Sans", "Liberation Sans", @@ -2062,7 +2069,7 @@ void FurnaceGUI::syncSettings() { settings.insFocusesPattern=e->getConfInt("insFocusesPattern",1); settings.stepOnInsert=e->getConfInt("stepOnInsert",0); settings.unifiedDataView=e->getConfInt("unifiedDataView",0); - settings.sysFileDialog=e->getConfInt("sysFileDialog",1); + settings.sysFileDialog=e->getConfInt("sysFileDialog",SYS_FILE_DIALOG_DEFAULT); settings.roundedWindows=e->getConfInt("roundedWindows",1); settings.roundedButtons=e->getConfInt("roundedButtons",1); settings.roundedMenus=e->getConfInt("roundedMenus",0); diff --git a/src/main.cpp b/src/main.cpp index 970bc784..2ef45c23 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -295,7 +295,7 @@ int main(int argc, char** argv) { logE("CoInitializeEx failed!"); } #endif -#if !(defined(__APPLE__) || defined(_WIN32) || defined(ANDROID)) +#if !(defined(__APPLE__) || defined(_WIN32) || defined(ANDROID) || defined(__HAIKU__)) // workaround for Wayland HiDPI issue if (getenv("SDL_VIDEODRIVER")==NULL) { setenv("SDL_VIDEODRIVER","x11",1); From 617569b6b8b92c95204fdd7f4e570238e1a582a0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 22:19:07 -0500 Subject: [PATCH 239/580] re-enable backward on Windows/macOS --- CMakeLists.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e7190ece..ab1f0f22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,12 +33,11 @@ if (ANDROID) endif() else() set(USE_RTMIDI_DEFAULT ON) - CHECK_INCLUDE_FILE(execinfo.h EXECINFO_FOUND) - if (EXECINFO_FOUND) + if (WIN32 OR APPLE) set(USE_BACKWARD_DEFAULT ON) else() - find_library(EXECINFO_IS_LIBRARY execinfo) - if (EXECINFO_IS_LIBRARY) + CHECK_INCLUDE_FILE(execinfo.h EXECINFO_FOUND) + if (EXECINFO_FOUND) set(USE_BACKWARD_DEFAULT ON) else() set(USE_BACKWARD_DEFAULT OFF) From 84c955058ba6fc89c6d89fb5152e04867ae77c94 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 23 Jul 2022 22:22:05 -0500 Subject: [PATCH 240/580] GUI: Z280 whoops issue #576 --- src/gui/sysConf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 2cb17798..e5407486 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -594,7 +594,7 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("14.32MHz (NTSC)",(flags&255)==1)) { copyOfFlags=(flags&(~255))|1; } - if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==3)) { + if (ImGui::RadioButton("14.19MHz (PAL)",(flags&255)==2)) { copyOfFlags=(flags&(~255))|2; } if (ImGui::RadioButton("16MHz",(flags&255)==3)) { From b48b7c8bc5979b140d4e4e713653c9e6f9d5446b Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 24 Jul 2022 12:23:38 +0900 Subject: [PATCH 241/580] Apply loop end position for generic DAC --- src/engine/platform/pcmdac.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/pcmdac.cpp b/src/engine/platform/pcmdac.cpp index 314ba7dd..213cb85a 100644 --- a/src/engine/platform/pcmdac.cpp +++ b/src/engine/platform/pcmdac.cpp @@ -50,12 +50,10 @@ void DivPlatformPCMDAC::acquire(short* bufL, short* bufR, size_t start, size_t l } else { DivSample* s=parent->getSample(chan.sample); if (s->samples>0) { - if (chan.audPos>=s->samples) { - if (s->loopStart>=0 && s->loopStart<(int)s->samples) { - chan.audPos=s->loopStart; - } else { - chan.sample=-1; - } + if (s->isLoopable() && chan.audPos>=s->getEndPosition()) { + chan.audPos=s->loopStart; + } else if (chan.audPos>=s->samples) { + chan.sample=-1; } if (chan.audPossamples) { output=s->data16[chan.audPos]; From 6697be4d9555fbef2433a6eb3d8cadc6cf1916d1 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 24 Jul 2022 13:28:26 +0900 Subject: [PATCH 242/580] Add/Update more presets Williams/Midway ADPCM Sound board Used for conjunction with their Y/T unit, it has ordinary de facto standard OPM+MSM6295 on this era with software controlled DAC from predecessors. Konami Battlantis Used at Battlantis arcade hardware, It is early SB Pro but mono configuration. Sega System 24 This Sega's early arcade system featured to floppy disk and high resolution graphics. Sound hardware is similar as their System 16, but ADPCM is replaced to software controlled DAC. Namco System 86 Predecessor of System 1(a.k.a. System 87), It features similar sound hardware and optional ROM and DAC expansion. Namco Thunder Ceptor Used at Thunder Ceptor, their Front view arcade machine. Namco system 86 and System 1 sound system is directly derived from this machine's sound system. Irem M72 Irem's first arcade system with FM sound system, All released game except R-Type is featured also LOUD software controlled DAC, inherited from their predecessors sound system. --- src/gui/presets.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 4 deletions(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 3774f232..ef223622 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1241,6 +1241,15 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Williams/Midway Y/T unit w/ADPCM sound board", { + // ADPCM sound board + DIV_SYSTEM_YM2151, 64, 0, 0, + DIV_SYSTEM_PCM_DAC, 64, 0, 15624|(7<<16), // variable via OPM timer? + DIV_SYSTEM_MSM6295, 64, 0, 0, + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Konami Gyruss", { DIV_SYSTEM_AY8910, 64, 0, 0, @@ -1261,6 +1270,34 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Konami Battlantis", { + DIV_SYSTEM_OPL2, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPL2, 64, 0, 3, // "" + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Konami Battlantis (drums mode on first OPL2)", { + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPL2, 64, 0, 3, // "" + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Konami Battlantis (drums mode on second OPL2)", { + DIV_SYSTEM_OPL2, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 3, // "" + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Konami Battlantis (drums mode on both OPL2s)", { + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 3, // 3MHz + DIV_SYSTEM_OPL2_DRUMS, 64, 0, 3, // "" + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Konami Hexion", { DIV_SYSTEM_SCC, 64, 0, 2, // 1.5MHz (3MHz input) @@ -1326,6 +1363,13 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Sega System 24", { + DIV_SYSTEM_YM2151, 64, 0, 2, // 4MHz + DIV_SYSTEM_PCM_DAC, 64, 0, 61499|(7<<16), // software controlled, variable rate via configurable timers + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Sega System 18", { DIV_SYSTEM_YM2612, 64, 0, 2, // discrete 8MHz YM3438 @@ -1863,7 +1907,7 @@ void FurnaceGUI::initSystemPresets() { "Alpha denshi Alpha-68K", { DIV_SYSTEM_OPN, 64, 0, 3, // 3MHz DIV_SYSTEM_OPLL, 64, 0, 0, // 3.58MHz - // software controlled 8 bit DAC + DIV_SYSTEM_PCM_DAC, 64, 0, 7613|(7<<16), // software controlled 8 bit DAC 0 } )); @@ -1871,7 +1915,7 @@ void FurnaceGUI::initSystemPresets() { "Alpha denshi Alpha-68K (extended channel 3)", { DIV_SYSTEM_OPN_EXT, 64, 0, 3, // 3MHz DIV_SYSTEM_OPLL, 64, 0, 0, // 3.58MHz - // software controlled 8 bit DAC + DIV_SYSTEM_PCM_DAC, 64, 0, 7613|(7<<16), // software controlled 8 bit DAC 0 } )); @@ -1879,7 +1923,7 @@ void FurnaceGUI::initSystemPresets() { "Alpha denshi Alpha-68K (drums mode)", { DIV_SYSTEM_OPN, 64, 0, 3, // 3MHz DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, // 3.58MHz - // software controlled 8 bit DAC + DIV_SYSTEM_PCM_DAC, 64, 0, 7613|(7<<16), // software controlled 8 bit DAC 0 } )); @@ -1887,7 +1931,7 @@ void FurnaceGUI::initSystemPresets() { "Alpha denshi Alpha-68K (extended channel 3; drums mode)", { DIV_SYSTEM_OPN_EXT, 64, 0, 3, // 3MHz DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, // 3.58MHz - // software controlled 8 bit DAC + DIV_SYSTEM_PCM_DAC, 64, 0, 7613|(7<<16), // software controlled 8 bit DAC 0 } )); @@ -1929,10 +1973,27 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Namco System 86", { // without expansion board case; Hopping Mappy, etc + DIV_SYSTEM_YM2151, 64, 0, 0, + DIV_SYSTEM_NAMCO_CUS30, 64, 0, 0 + 0 + } + )); + cat.systems.push_back(FurnaceGUISysDef( + "Namco Thunder Ceptor", { + DIV_SYSTEM_YM2151, 64, 0, 0, + DIV_SYSTEM_NAMCO_CUS30, 64, 0, 0, + DIV_SYSTEM_PCM_DAC, 64, 0, 7999|(7<<16), // M65C02 software driven, correct sample rate? + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Namco System 1", { DIV_SYSTEM_YM2151, 64, 0, 0, DIV_SYSTEM_NAMCO_CUS30, 64, 0, 0, + DIV_SYSTEM_PCM_DAC, 64, 0, 5999|(7<<16), // sample rate verified from https://github.com/mamedev/mame/blob/master/src/devices/sound/n63701x.cpp + DIV_SYSTEM_PCM_DAC, 64, 0, 5999|(7<<16), // "" 0 } )); @@ -2045,6 +2106,13 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Irem M72", { + DIV_SYSTEM_YM2151, 64, 0, 0, + DIV_SYSTEM_PCM_DAC, 64, 0, 7811|(7<<16), + 0 + } + )); sysCategories.push_back(cat); cat=FurnaceGUISysCategory("DefleMask-compatible","these configurations are compatible with DefleMask.\nselect this if you need to save as .dmf or work with that program."); From 588f3f737ca84f2d377e8feb774909da986377d9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 24 Jul 2022 01:57:10 -0500 Subject: [PATCH 243/580] preliminary Future Composer module loading only loads patterns and doesn't deduplicate conversion required to fit in the Furnace format (no transpose ins/note) even the pattern loader itself isn't complete due to how different the format is --- src/engine/engine.h | 2 + src/engine/fileOps.cpp | 230 +++++++++++++++++++++++++++++++++++++++++ src/gui/gui.cpp | 4 +- src/gui/songInfo.cpp | 3 - 4 files changed, 234 insertions(+), 5 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 0ec74eb5..b5c15805 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -50,6 +50,7 @@ // for imports #define DIV_VERSION_MOD 0xff01 +#define DIV_VERSION_FC 0xff02 enum DivStatusView { DIV_STATUS_NOTHING=0, @@ -397,6 +398,7 @@ class DivEngine { bool loadFur(unsigned char* file, size_t len); bool loadMod(unsigned char* file, size_t len); bool loadFTM(unsigned char* file, size_t len); + bool loadFC(unsigned char* file, size_t len); void loadDMP(SafeReader& reader, std::vector& ret, String& stripPath); void loadTFI(SafeReader& reader, std::vector& ret, String& stripPath); diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index e66e2c8d..aebff43b 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -28,6 +28,8 @@ #define DIV_DMF_MAGIC ".DelekDefleMask." #define DIV_FUR_MAGIC "-Furnace module-" #define DIV_FTM_MAGIC "FamiTracker Module" +#define DIV_FC13_MAGIC "SMOD" +#define DIV_FC14_MAGIC "FC14" struct InflateBlock { unsigned char* buf; @@ -2259,6 +2261,232 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) { return success; } +bool DivEngine::loadFC(unsigned char* file, size_t len) { + struct InvalidHeaderException {}; + bool success=false; + char magic[4]={0,0,0,0}; + SafeReader reader=SafeReader(file,len); + warnings=""; + bool isFC14=false; + unsigned int patPtr, freqMacroPtr, volMacroPtr, samplePtr; + unsigned int seqLen, patLen, freqMacroLen, volMacroLen, sampleLen; + + struct FCSequence { + unsigned char pat[4]; + signed char transpose[4]; + signed char offsetIns[4]; + unsigned char speed; + }; + std::vector seq; + struct FCPattern { + unsigned char note[32]; + unsigned char val[32]; + }; + std::vector pat; + + struct FCSample { + unsigned short loopLen, len, loopStart; + } sample[10]; + + try { + DivSong ds; + ds.tuning=436.0; + ds.version=DIV_VERSION_FC; + ds.linearPitch=0; + ds.noSlidesOnFirstTick=true; + ds.rowResetsArpPos=true; + ds.ignoreJumpAtEnd=false; + + // load here + if (!reader.seek(0,SEEK_SET)) { + logE("premature end of file!"); + lastError="incomplete file"; + delete[] file; + return false; + } + reader.read(magic,4); + + if (memcmp(magic,DIV_FC13_MAGIC,4)==0) { + isFC14=false; + } else if (memcmp(magic,DIV_FC14_MAGIC,4)==0) { + isFC14=true; + } else { + logW("the magic isn't complete"); + throw EndOfFileException(&reader,reader.tell()); + } + + ds.systemLen=1; + ds.system[0]=DIV_SYSTEM_DUMMY; + ds.systemVol[0]=64; + ds.systemPan[0]=0; + ds.systemFlags[0]=1|(80<<8); // PAL + ds.systemName="Amiga"; + + seqLen=reader.readI_BE(); + if (seqLen%13) { + logW("sequence length is not multiple of 13 (%d)",seqLen); + //throw EndOfFileException(&reader,reader.tell()); + } + patPtr=reader.readI_BE(); + patLen=reader.readI_BE(); + if (patLen%64) { + logW("pattern length is not multiple of 64 (%d)",patLen); + throw EndOfFileException(&reader,reader.tell()); + } + freqMacroPtr=reader.readI_BE(); + freqMacroLen=reader.readI_BE(); + volMacroPtr=reader.readI_BE(); + volMacroLen=reader.readI_BE(); + samplePtr=reader.readI_BE(); + if (isFC14) { + reader.readI_BE(); // wave len + } else { + sampleLen=reader.readI_BE(); + } + + logD("patPtr: %d",patPtr); + logD("patLen: %d",patLen); + logD("freqMacroPtr: %d",freqMacroPtr); + logD("freqMacroLen: %d",freqMacroLen); + logD("volMacroPtr: %d",volMacroPtr); + logD("volMacroLen: %d",volMacroLen); + logD("samplePtr: %d",samplePtr); + logD("sampleLen: %d",sampleLen); + + // sample info + logD("samples:"); + for (int i=0; i<10; i++) { + sample[i].loopLen=reader.readS_BE(); + sample[i].len=reader.readS_BE(); + sample[i].loopStart=reader.readS_BE(); + + logD("- %d: %d (%d, %d)",i,sample[i].len,sample[i].loopStart,sample[i].loopLen); + } + + // wavetable lengths + if (isFC14) for (int i=0; i<20; i++) { + reader.readS_BE(); + reader.readS_BE(); + } + + // sequences + seqLen/=13; + logD("reading sequences... (%d)",seqLen); + for (unsigned int i=0; iordersLen=seqLen; + ds.subsong[0]->patLen=32; + ds.subsong[0]->hz=50; + ds.subsong[0]->pal=true; + ds.subsong[0]->customTempo=true; + ds.subsong[0]->pat[3].effectCols=3; + ds.subsong[0]->speed1=3; + ds.subsong[0]->speed2=3; + + for (unsigned int i=0; iorders.ord[j][i]=i; + DivPattern* p=ds.subsong[0]->pat[j].getPattern(i,true); + if (j==3 && seq[i].speed) { + p->data[0][6]=0x09; + p->data[0][7]=seq[i].speed; + p->data[0][8]=0x0f; + p->data[0][9]=seq[i].speed; + } + + for (int k=0; k<32; k++) { + FCPattern& fp=pat[seq[i].pat[j]]; + if (fp.note[k]>0 && fp.note[k]<0x49) { + short note=(fp.note[k]+seq[i].transpose[j])%12; + short octave=2+((fp.note[k]+seq[i].transpose[j])/12); + if (fp.note[k]>=0x3d) octave-=6; + if (note==0) { + note=12; + octave--; + } + octave&=0xff; + p->data[k][0]=note; + p->data[k][1]=octave; + if (fp.val[k]) { + if (fp.val[k]&0xe0) { + + } else { + p->data[k][2]=fp.val[k]-1; + } + } + } + } + } + } + + if (active) quitDispatch(); + BUSY_BEGIN_SOFT; + saveLock.lock(); + song.unload(); + song=ds; + changeSong(0); + recalcChans(); + saveLock.unlock(); + BUSY_END; + if (active) { + initDispatch(); + BUSY_BEGIN; + renderSamples(); + reset(); + BUSY_END; + } + success=true; + } catch (EndOfFileException& e) { + //logE("premature end of file!"); + lastError="incomplete file"; + } catch (InvalidHeaderException& e) { + //logE("invalid header!"); + lastError="invalid header!"; + } + return success; +} + #define CHECK_BLOCK_VERSION(x) \ if (blockVersion>x) { \ logE("incompatible block version %d for %s!",blockVersion,blockName); \ @@ -2731,6 +2959,8 @@ bool DivEngine::load(unsigned char* f, size_t slen) { return loadFTM(file,len); } else if (memcmp(file,DIV_FUR_MAGIC,16)==0) { return loadFur(file,len); + } else if (memcmp(file,DIV_FC13_MAGIC,4)==0 || memcmp(file,DIV_FC14_MAGIC,4)==0) { + return loadFC(file,len); } // step 3: try loading as .mod diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 97c1d78e..2c80c5fb 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1226,9 +1226,9 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { if (!dirExists(workingDirSong)) workingDirSong=getHomeDir(); hasOpened=fileDialog->openLoad( "Open File", - {"compatible files", "*.fur *.dmf *.mod", + {"compatible files", "*.fur *.dmf *.mod *.fc13 *.fc14 *.smod", "all files", ".*"}, - "compatible files{.fur,.dmf,.mod},.*", + "compatible files{.fur,.dmf,.mod,.fc13,.fc14,.smod},.*", workingDirSong, dpiScale ); diff --git a/src/gui/songInfo.cpp b/src/gui/songInfo.cpp index 9cdf508a..f1428db5 100644 --- a/src/gui/songInfo.cpp +++ b/src/gui/songInfo.cpp @@ -91,7 +91,6 @@ void FurnaceGUI::drawSongInfo() { ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0); ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0); - /* ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Text("TimeBase"); @@ -213,14 +212,12 @@ void FurnaceGUI::drawSongInfo() { ImGui::Text("NTSC"); } } - */ ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Text("Tuning (A-4)"); ImGui::TableNextColumn(); float tune=e->song.tuning; - float avail=ImGui::GetContentRegionAvail().x; ImGui::SetNextItemWidth(avail); if (ImGui::InputFloat("##Tuning",&tune,1.0f,3.0f,"%g")) { MARK_MODIFIED if (tune<220.0f) tune=220.0f; From ffe06013d7a23f974b0af1001f9b8cabb6583957 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 24 Jul 2022 01:58:14 -0500 Subject: [PATCH 244/580] GUI: fix preset typo --- src/gui/presets.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index ef223622..f8e7a522 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1976,7 +1976,7 @@ void FurnaceGUI::initSystemPresets() { cat.systems.push_back(FurnaceGUISysDef( "Namco System 86", { // without expansion board case; Hopping Mappy, etc DIV_SYSTEM_YM2151, 64, 0, 0, - DIV_SYSTEM_NAMCO_CUS30, 64, 0, 0 + DIV_SYSTEM_NAMCO_CUS30, 64, 0, 0, 0 } )); From 9a0609ae1a6bc666449891cad9b956d4c9a1e8e9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 24 Jul 2022 02:24:57 -0500 Subject: [PATCH 245/580] fix build... --- src/engine/fileOps.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index aebff43b..71b8f90d 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2340,6 +2340,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { samplePtr=reader.readI_BE(); if (isFC14) { reader.readI_BE(); // wave len + sampleLen=0; } else { sampleLen=reader.readI_BE(); } From 1d777196408652036df388368b612ba579087247 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 24 Jul 2022 02:45:21 -0500 Subject: [PATCH 246/580] prevent exception in MIDI in/out from crashing --- src/audio/rtmidi.cpp | 49 +++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/src/audio/rtmidi.cpp b/src/audio/rtmidi.cpp index 31a3e66a..dd8a0a75 100644 --- a/src/audio/rtmidi.cpp +++ b/src/audio/rtmidi.cpp @@ -46,23 +46,28 @@ String sanitizePortName(const String& name) { bool TAMidiInRtMidi::gather() { std::vector msg; if (port==NULL) return false; - while (true) { - TAMidiMessage m; - double t=port->getMessage(&msg); - if (msg.empty()) break; + try { + while (true) { + TAMidiMessage m; + double t=port->getMessage(&msg); + if (msg.empty()) break; - // parse message - m.time=t; - m.type=msg[0]; - if (m.type!=TA_MIDI_SYSEX && msg.size()>1) { - memcpy(m.data,msg.data()+1,MIN(msg.size()-1,7)); - } else if (m.type==TA_MIDI_SYSEX) { - m.sysExData.reset(new unsigned char[msg.size()]); - m.sysExLen=msg.size(); - logD("got a SysEx of length %ld!",msg.size()); - memcpy(m.sysExData.get(),msg.data(),msg.size()); + // parse message + m.time=t; + m.type=msg[0]; + if (m.type!=TA_MIDI_SYSEX && msg.size()>1) { + memcpy(m.data,msg.data()+1,MIN(msg.size()-1,7)); + } else if (m.type==TA_MIDI_SYSEX) { + m.sysExData.reset(new unsigned char[msg.size()]); + m.sysExLen=msg.size(); + logD("got a SysEx of length %ld!",msg.size()); + memcpy(m.sysExData.get(),msg.data(),msg.size()); + } + queue.push(m); } - queue.push(m); + } catch (RtMidiError& e) { + logE("MIDI input error! %s",e.what()); + return false; } return true; } @@ -180,7 +185,12 @@ bool TAMidiOutRtMidi::send(const TAMidiMessage& what) { return false; } len=what.sysExLen; - port->sendMessage(what.sysExData.get(),len); + try { + port->sendMessage(what.sysExData.get(),len); + } catch (RtMidiError& e) { + logE("MIDI output error! %s",e.what()); + return false; + } return true; break; case TA_MIDI_MTC_FRAME: @@ -194,7 +204,12 @@ bool TAMidiOutRtMidi::send(const TAMidiMessage& what) { len=1; break; } - port->sendMessage((const unsigned char*)&what.type,len); + try { + port->sendMessage((const unsigned char*)&what.type,len); + } catch (RtMidiError& e) { + logE("MIDI output error! %s",e.what()); + return false; + } return true; } From b75787603aec96eff8896c4a5b560211eb1b9357 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 24 Jul 2022 02:52:39 -0500 Subject: [PATCH 247/580] I missed something --- papers/format.md | 1 + 1 file changed, 1 insertion(+) diff --git a/papers/format.md b/papers/format.md index 53715021..ca8092a5 100644 --- a/papers/format.md +++ b/papers/format.md @@ -244,6 +244,7 @@ size | description | - 0xc2: Neo Geo CSM (YM2610) - 18 channels | - 0xc3: OPN CSM - 10 channels | - 0xc4: PC-98 CSM - 20 channels + | - 0xc5: YM2610B CSM - 20 channels | - 0xde: YM2610B extended - 19 channels | - 0xe0: QSound - 19 channels | - 0xfd: Dummy System - 8 channels From 542a46e89b4a90fe73fb1b8e9870e5347c92f3bf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 24 Jul 2022 03:41:01 -0500 Subject: [PATCH 248/580] remove log spam (hopefully) --- src/audio/rtmidi.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/audio/rtmidi.cpp b/src/audio/rtmidi.cpp index dd8a0a75..258f6929 100644 --- a/src/audio/rtmidi.cpp +++ b/src/audio/rtmidi.cpp @@ -67,6 +67,7 @@ bool TAMidiInRtMidi::gather() { } } catch (RtMidiError& e) { logE("MIDI input error! %s",e.what()); + closeDevice(); return false; } return true; From 3183400019d6c822fa6d687b72d9ed74a8b49070 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 25 Jul 2022 16:21:39 -0500 Subject: [PATCH 249/580] it appears SDL2 takes over interrupt in console mode --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2ef45c23..9ff5b993 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,7 +20,7 @@ #include #include #include -#ifdef HAVE_GUI +#ifdef HAVE_SDL2 #include "SDL_events.h" #endif #include "ta-log.h" @@ -467,7 +467,7 @@ int main(int argc, char** argv) { if (consoleMode) { logI("playing..."); e.play(); -#ifdef HAVE_GUI +#ifdef HAVE_SDL2 SDL_Event ev; while (true) { SDL_WaitEvent(&ev); From 83386d082d1da5609fc4d7d9f2ba673750ca9020 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 25 Jul 2022 17:23:56 -0500 Subject: [PATCH 250/580] add a proper CLI featuring skip order (left/right) and pause (space)! currently available on macOS and Linux only. --- CMakeLists.txt | 6 +- src/cli/cli.cpp | 137 ++++++++++++++++++++++++++++++++++++++++ src/cli/cli.h | 55 ++++++++++++++++ src/engine/playback.cpp | 6 +- src/main.cpp | 40 ++++++++---- 5 files changed, 229 insertions(+), 15 deletions(-) create mode 100644 src/cli/cli.cpp create mode 100644 src/cli/cli.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 86139256..78792c98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -478,6 +478,10 @@ if (WIN32) list(APPEND ENGINE_SOURCES res/furnace.rc) endif() +set(CLI_SOURCES +src/cli/cli.cpp +) + set(GUI_SOURCES extern/imgui_patched/imgui.cpp extern/imgui_patched/imgui_draw.cpp @@ -589,7 +593,7 @@ if (NOT WIN32) endif() endif() -set(USED_SOURCES ${ENGINE_SOURCES} ${AUDIO_SOURCES} src/main.cpp) +set(USED_SOURCES ${ENGINE_SOURCES} ${AUDIO_SOURCES} ${CLI_SOURCES} src/main.cpp) if (USE_BACKWARD) list(APPEND USED_SOURCES src/backtrace.cpp) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp new file mode 100644 index 00000000..95679600 --- /dev/null +++ b/src/cli/cli.cpp @@ -0,0 +1,137 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "cli.h" +#include "../ta-log.h" + +bool cliQuit=false; + +static void handleTerm(int) { + cliQuit=true; +} + +void FurnaceCLI::bindEngine(DivEngine* eng) { + e=eng; +} + +bool FurnaceCLI::loop() { + bool escape=false; + bool escapeSecondStage=false; + while (!cliQuit) { + unsigned char c; + if (read(STDIN_FILENO,&c,1)<=0) continue; + if (escape) { + if (escapeSecondStage) { + switch (c) { + case 'C': // right + e->setOrder(e->getOrder()+1); + escape=false; + escapeSecondStage=false; + break; + case 'D': // left + e->setOrder(e->getOrder()-1); + escape=false; + escapeSecondStage=false; + break; + default: + escape=false; + escapeSecondStage=false; + break; + } + } else { + switch (c) { + case '[': case 'O': + escapeSecondStage=true; + break; + default: + escape=false; + break; + } + } + } else { + switch (c) { + case 0x1b: // + escape=true; + break; + case 'h': // left + e->setOrder(e->getOrder()-1); + break; + case 'l': // right + e->setOrder(e->getOrder()+1); + break; + case ' ': + if (e->isHalted()) { + e->resume(); + } else { + e->halt(); + } + break; + } + } + } + printf("\n"); + return true; +} + +bool FurnaceCLI::finish() { + if (tcsetattr(0,TCSAFLUSH,&termpropold)!=0) { + logE("could not set console attributes!"); + logE("you may have to run `reset` on your terminal."); + return false; + } + return true; +} + +// blatantly copied from tildearrow/tfmxplay +bool FurnaceCLI::init() { +#ifdef _WIN32 + winin=GetStdHandle(STD_INPUT_HANDLE); + winout=GetStdHandle(STD_OUTPUT_HANDLE); + int termprop=0; + int termpropi=0; + GetConsoleMode(winout,(LPDWORD)&termprop); + GetConsoleMode(winin,(LPDWORD)&termpropi); + termprop|=ENABLE_VIRTUAL_TERMINAL_PROCESSING; + termpropi&=~ENABLE_LINE_INPUT; + SetConsoleMode(winout,termprop); + SetConsoleMode(winin,termpropi); +#else + sigemptyset(&intsa.sa_mask); + intsa.sa_flags=0; + intsa.sa_handler=handleTerm; + sigaction(SIGINT,&intsa,NULL); + + if (tcgetattr(0,&termprop)!=0) { + logE("could not get console attributes!"); + return false; + } + memcpy(&termpropold,&termprop,sizeof(struct termios)); + termprop.c_lflag&=~ECHO; + termprop.c_lflag&=~ICANON; + if (tcsetattr(0,TCSAFLUSH,&termprop)!=0) { + logE("could not set console attributes!"); + return false; + } +#endif + return true; +} + +FurnaceCLI::FurnaceCLI(): + e(NULL) { +} diff --git a/src/cli/cli.h b/src/cli/cli.h new file mode 100644 index 00000000..0df6658e --- /dev/null +++ b/src/cli/cli.h @@ -0,0 +1,55 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef _FUR_CLI_H +#define _FUR_CLI_H + +#include +#ifdef _WIN32 +#include +#else +#include +#include +#include +#include +#endif + +#include "../engine/engine.h" + +class FurnaceCLI { + DivEngine* e; + +#ifdef _WIN32 + HANDLE winin; + HANDLE winout; +#else + struct sigaction intsa; + struct termios termprop; + struct termios termpropold; +#endif + + public: + void bindEngine(DivEngine* eng); + bool loop(); + bool finish(); + bool init(); + FurnaceCLI(); +}; + +#endif diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index bff0c3c3..e9d5aa95 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -201,7 +201,7 @@ const char* formatNote(unsigned char note, unsigned char octave) { int DivEngine::dispatchCmd(DivCommand c) { if (view==DIV_STATUS_COMMANDS) { - printf("%8d | %d: %s(%d, %d)\n",totalTicksR,c.chan,cmdName[c.cmd],c.value,c.value2); + if (!skipping) printf("%8d | %d: %s(%d, %d)\n",totalTicksR,c.chan,cmdName[c.cmd],c.value,c.value2); } totalCmds++; if (cmdStreamEnabled && cmdStream.size()<2000) { @@ -771,7 +771,7 @@ void DivEngine::nextRow() { static char pb1[4096]; static char pb2[4096]; static char pb3[4096]; - if (view==DIV_STATUS_PATTERN) { + if (view==DIV_STATUS_PATTERN && !skipping) { strcpy(pb1,""); strcpy(pb3,""); for (int i=0; i %d:%.2d:%.2d.%.2d %.2x/%.2x:%.3d/%.3d %4dcmd/s\x1b[G",totalSeconds/3600,(totalSeconds/60)%60,totalSeconds%60,totalTicks/10000,curOrder,curSubSong->ordersLen,curRow,curSubSong->patLen,cmdsPerSecond); + if (consoleMode && subticks<=1 && !skipping) fprintf(stderr,"\x1b[2K> %d:%.2d:%.2d.%.2d %.2x/%.2x:%.3d/%.3d %4dcmd/s\x1b[G",totalSeconds/3600,(totalSeconds/60)%60,totalSeconds%60,totalTicks/10000,curOrder,curSubSong->ordersLen,curRow,curSubSong->patLen,cmdsPerSecond); } if (haltOn==DIV_HALT_TICK) halted=true; diff --git a/src/main.cpp b/src/main.cpp index 9ff5b993..f25d08e7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -36,6 +36,8 @@ #include #endif +#include "cli/cli.h" + #ifdef HAVE_GUI #include "gui/gui.h" #endif @@ -46,6 +48,8 @@ DivEngine e; FurnaceGUI g; #endif +FurnaceCLI cli; + String outName; String vgmOutName; int loops=1; @@ -465,25 +469,39 @@ int main(int argc, char** argv) { } if (consoleMode) { + bool cliSuccess=false; + cli.bindEngine(&e); + if (!cli.init()) { + reportError("error while starting CLI!"); + } else { + cliSuccess=true; + } logI("playing..."); e.play(); + if (cliSuccess) { + cli.loop(); + cli.finish(); + e.quit(); + return 0; + } else { #ifdef HAVE_SDL2 - SDL_Event ev; - while (true) { - SDL_WaitEvent(&ev); - if (ev.type==SDL_QUIT) break; - } - e.quit(); - return 0; + SDL_Event ev; + while (true) { + SDL_WaitEvent(&ev); + if (ev.type==SDL_QUIT) break; + } + e.quit(); + return 0; #else - while (true) { + while (true) { #ifdef _WIN32 - Sleep(500); + Sleep(500); #else - usleep(500000); + usleep(500000); +#endif + } #endif } -#endif } #ifdef HAVE_GUI From b0c2b10135d4e8daa0b3462300e25666ccb85416 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 25 Jul 2022 18:32:26 -0500 Subject: [PATCH 251/580] GUI: add "scale" option to find/replace --- src/gui/findReplace.cpp | 62 ++++++++++++++++++++++++++++++++++++++++- src/gui/gui.h | 1 + 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index e982882d..559d7f7f 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -39,6 +39,7 @@ const char* queryReplaceModes[GUI_QUERY_REPLACE_MAX]={ "set", "add", "add (overflow)", + "scale", "clear" }; @@ -292,6 +293,8 @@ void FurnaceGUI::doReplace() { } } break; + case GUI_QUERY_REPLACE_SCALE: + break; case GUI_QUERY_REPLACE_CLEAR: p->data[i.y][0]=0; p->data[i.y][1]=0; @@ -314,6 +317,13 @@ void FurnaceGUI::doReplace() { case GUI_QUERY_REPLACE_ADD_OVERFLOW: if (p->data[i.y][2]>=0) p->data[i.y][2]=(p->data[i.y][2]+queryReplaceIns)&0xff; break; + case GUI_QUERY_REPLACE_SCALE: + if (p->data[i.y][2]>=0) { + p->data[i.y][2]=(p->data[i.y][2]*queryReplaceIns)/100; + if (p->data[i.y][2]<0) p->data[i.y][2]=0; + if (p->data[i.y][2]>255) p->data[i.y][2]=255; + } + break; case GUI_QUERY_REPLACE_CLEAR: p->data[i.y][2]=-1; break; @@ -335,6 +345,13 @@ void FurnaceGUI::doReplace() { case GUI_QUERY_REPLACE_ADD_OVERFLOW: if (p->data[i.y][3]>=0) p->data[i.y][3]=(p->data[i.y][3]+queryReplaceVol)&0xff; break; + case GUI_QUERY_REPLACE_SCALE: + if (p->data[i.y][3]>=0) { + p->data[i.y][3]=(p->data[i.y][3]*queryReplaceVol)/100; + if (p->data[i.y][3]<0) p->data[i.y][3]=0; + if (p->data[i.y][3]>255) p->data[i.y][3]=255; + } + break; case GUI_QUERY_REPLACE_CLEAR: p->data[i.y][3]=-1; break; @@ -402,6 +419,13 @@ void FurnaceGUI::doReplace() { case GUI_QUERY_REPLACE_ADD_OVERFLOW: if (p->data[i.y][4+pos*2]>=0) p->data[i.y][4+pos*2]=(p->data[i.y][4+pos*2]+queryReplaceEffect[j])&0xff; break; + case GUI_QUERY_REPLACE_SCALE: + if (p->data[i.y][4+pos*2]>=0) { + p->data[i.y][4+pos*2]=(p->data[i.y][4+pos*2]*queryReplaceEffect[j])/100; + if (p->data[i.y][4+pos*2]<0) p->data[i.y][4+pos*2]=0; + if (p->data[i.y][4+pos*2]>255) p->data[i.y][4+pos*2]=255; + } + break; case GUI_QUERY_REPLACE_CLEAR: p->data[i.y][4+pos*2]=-1; break; @@ -423,6 +447,13 @@ void FurnaceGUI::doReplace() { case GUI_QUERY_REPLACE_ADD_OVERFLOW: if (p->data[i.y][5+pos*2]>=0) p->data[i.y][5+pos*2]=(p->data[i.y][5+pos*2]+queryReplaceEffectVal[j])&0xff; break; + case GUI_QUERY_REPLACE_SCALE: + if (p->data[i.y][5+pos*2]>=0) { + p->data[i.y][5+pos*2]=(p->data[i.y][5+pos*2]*queryReplaceEffectVal[j])/100; + if (p->data[i.y][5+pos*2]<0) p->data[i.y][5+pos*2]=0; + if (p->data[i.y][5+pos*2]>255) p->data[i.y][5+pos*2]=255; + } + break; case GUI_QUERY_REPLACE_CLEAR: p->data[i.y][5+pos*2]=-1; break; @@ -919,6 +950,8 @@ void FurnaceGUI::drawFindReplace() { if (queryReplaceNote<-180) queryReplaceNote=-180; if (queryReplaceNote>180) queryReplaceNote=180; } + } else if (queryReplaceNoteMode==GUI_QUERY_REPLACE_SCALE) { + ImGui::Text("INVALID"); } ImGui::EndDisabled(); @@ -941,6 +974,13 @@ void FurnaceGUI::drawFindReplace() { if (queryReplaceIns<-255) queryReplaceIns=-255; if (queryReplaceIns>255) queryReplaceIns=255; } + } else if (queryReplaceInsMode==GUI_QUERY_REPLACE_SCALE) { + if (queryReplaceIns<0) queryReplaceIns=0; + if (queryReplaceIns>400) queryReplaceIns=400; + if (ImGui::InputInt("##IRValue",&queryReplaceIns,1,12)) { + if (queryReplaceIns<0) queryReplaceIns=0; + if (queryReplaceIns>400) queryReplaceIns=400; + } } ImGui::EndDisabled(); @@ -963,6 +1003,13 @@ void FurnaceGUI::drawFindReplace() { if (queryReplaceVol<-255) queryReplaceVol=-255; if (queryReplaceVol>255) queryReplaceVol=255; } + } else if (queryReplaceVolMode==GUI_QUERY_REPLACE_SCALE) { + if (queryReplaceVol<0) queryReplaceVol=0; + if (queryReplaceVol>400) queryReplaceVol=400; + if (ImGui::InputInt("##VRValue",&queryReplaceVol,1,12)) { + if (queryReplaceVol<0) queryReplaceVol=0; + if (queryReplaceVol>400) queryReplaceVol=400; + } } ImGui::EndDisabled(); @@ -987,6 +1034,13 @@ void FurnaceGUI::drawFindReplace() { if (queryReplaceEffect[i]<-255) queryReplaceEffect[i]=-255; if (queryReplaceEffect[i]>255) queryReplaceEffect[i]=255; } + } else if (queryReplaceEffectMode[i]==GUI_QUERY_REPLACE_SCALE) { + if (queryReplaceEffect[i]<0) queryReplaceEffect[i]=0; + if (queryReplaceEffect[i]>400) queryReplaceEffect[i]=400; + if (ImGui::InputInt("##ERValue",&queryReplaceEffect[i],1,12)) { + if (queryReplaceEffect[i]<0) queryReplaceEffect[i]=0; + if (queryReplaceEffect[i]>400) queryReplaceEffect[i]=400; + } } ImGui::EndDisabled(); @@ -1009,10 +1063,16 @@ void FurnaceGUI::drawFindReplace() { if (queryReplaceEffectVal[i]<-255) queryReplaceEffectVal[i]=-255; if (queryReplaceEffectVal[i]>255) queryReplaceEffectVal[i]=255; } + } else if (queryReplaceEffectValMode[i]==GUI_QUERY_REPLACE_SCALE) { + if (queryReplaceEffectVal[i]<0) queryReplaceEffectVal[i]=0; + if (queryReplaceEffectVal[i]>400) queryReplaceEffectVal[i]=400; + if (ImGui::InputInt("##ERValueV",&queryReplaceEffectVal[i],1,12)) { + if (queryReplaceEffectVal[i]<0) queryReplaceEffectVal[i]=0; + if (queryReplaceEffectVal[i]>400) queryReplaceEffectVal[i]=400; + } } ImGui::EndDisabled(); - ImGui::PopID(); } diff --git a/src/gui/gui.h b/src/gui/gui.h index bd2a5494..8fcf38b3 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -885,6 +885,7 @@ enum FurnaceGUIFindQueryReplaceModes { GUI_QUERY_REPLACE_SET=0, GUI_QUERY_REPLACE_ADD, GUI_QUERY_REPLACE_ADD_OVERFLOW, + GUI_QUERY_REPLACE_SCALE, GUI_QUERY_REPLACE_CLEAR, GUI_QUERY_REPLACE_MAX From 09e457003b31907a2e4047b3794cf3827420569c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 25 Jul 2022 18:41:47 -0500 Subject: [PATCH 252/580] add option for soft-clipping --- src/engine/engine.cpp | 1 + src/engine/engine.h | 1 + src/engine/playback.cpp | 8 ++++++++ src/gui/gui.h | 2 ++ src/gui/settings.cpp | 8 ++++++++ 5 files changed, 20 insertions(+) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 98947ead..40a51bdc 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2996,6 +2996,7 @@ bool DivEngine::initAudioBackend() { lowQuality=getConfInt("audioQuality",0); forceMono=getConfInt("forceMono",0); + clampSamples=getConfInt("clampSamples",0); lowLatency=getConfInt("lowLatency",0); metroVol=(float)(getConfInt("metroVol",100))/100.0f; if (metroVol<0.0f) metroVol=0.0f; diff --git a/src/engine/engine.h b/src/engine/engine.h index b5c15805..482b58dc 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -298,6 +298,7 @@ class DivEngine { bool stopExport; bool halted; bool forceMono; + bool clampSamples; bool cmdStreamEnabled; bool softLocked; bool firstTick; diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index e9d5aa95..662e2ddb 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1413,6 +1413,14 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi out[1][i]=out[0][i]; } } + if (clampSamples) { + for (size_t i=0; i1.0) out[0][i]=1.0; + if (out[1][i]<-1.0) out[1][i]=-1.0; + if (out[1][i]>1.0) out[1][i]=1.0; + } + } isBusy.unlock(); std::chrono::steady_clock::time_point ts_processEnd=std::chrono::steady_clock::now(); diff --git a/src/gui/gui.h b/src/gui/gui.h index 8fcf38b3..875501d2 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1094,6 +1094,7 @@ class FurnaceGUI { int dragMovesSelection; int unsignedDetune; int noThreadedInput; + int clampSamples; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1199,6 +1200,7 @@ class FurnaceGUI { dragMovesSelection(1), unsignedDetune(0), noThreadedInput(0), + clampSamples(0), maxUndoSteps(100), mainFontPath(""), patFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index f6767119..eae165d2 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -659,6 +659,11 @@ void FurnaceGUI::drawSettings() { settings.forceMono=forceMonoB; } + bool clampSamplesB=settings.clampSamples; + if (ImGui::Checkbox("Software clipping",&clampSamplesB)) { + settings.clampSamples=clampSamplesB; + } + TAAudioDesc& audioWant=e->getAudioDescWant(); TAAudioDesc& audioGot=e->getAudioDescGot(); @@ -2118,6 +2123,7 @@ void FurnaceGUI::syncSettings() { settings.unsignedDetune=e->getConfInt("unsignedDetune",0); settings.noThreadedInput=e->getConfInt("noThreadedInput",0); settings.initialSysName=e->getConfString("initialSysName",""); + settings.clampSamples=e->getConfInt("clampSamples",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2205,6 +2211,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.dragMovesSelection,0,2); clampSetting(settings.unsignedDetune,0,1); clampSetting(settings.noThreadedInput,0,1); + clampSetting(settings.clampSamples,0,1); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { @@ -2343,6 +2350,7 @@ void FurnaceGUI::commitSettings() { e->setConf("dragMovesSelection",settings.dragMovesSelection); e->setConf("unsignedDetune",settings.unsignedDetune); e->setConf("noThreadedInput",settings.noThreadedInput); + e->setConf("clampSamples",settings.clampSamples); // colors for (int i=0; i Date: Mon, 25 Jul 2022 19:09:42 -0500 Subject: [PATCH 253/580] FC loader: read slides --- src/engine/fileOps.cpp | 43 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 71b8f90d..30a9db94 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2292,10 +2292,10 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { DivSong ds; ds.tuning=436.0; ds.version=DIV_VERSION_FC; - ds.linearPitch=0; - ds.noSlidesOnFirstTick=true; - ds.rowResetsArpPos=true; - ds.ignoreJumpAtEnd=false; + //ds.linearPitch=0; + //ds.noSlidesOnFirstTick=true; + //ds.rowResetsArpPos=true; + //ds.ignoreJumpAtEnd=false; // load here if (!reader.seek(0,SEEK_SET)) { @@ -2436,6 +2436,9 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { p->data[0][9]=seq[i].speed; } + bool ignoreNext=false; + bool isSliding=false; + for (int k=0; k<32; k++) { FCPattern& fp=pat[seq[i].pat[j]]; if (fp.note[k]>0 && fp.note[k]<0x49) { @@ -2449,9 +2452,37 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { octave&=0xff; p->data[k][0]=note; p->data[k][1]=octave; - if (fp.val[k]) { + if (isSliding) { + isSliding=false; + p->data[k][4]=2; + p->data[k][5]=0; + } + } + if (fp.val[k]) { + if (ignoreNext) { + ignoreNext=false; + } else { if (fp.val[k]&0xe0) { - + if (fp.val[k]&0x40) { + p->data[k][4]=2; + p->data[k][5]=0; + isSliding=false; + } else if (fp.val[k]&0x80) { + isSliding=true; + if (k<31) { + if (fp.val[k+1]&0x20) { + p->data[k][4]=2; + p->data[k][5]=fp.val[k+1]&0x1f; + } else { + p->data[k][4]=1; + p->data[k][5]=fp.val[k+1]&0x1f; + } + ignoreNext=true; + } else { + p->data[k][4]=2; + p->data[k][5]=0; + } + } } else { p->data[k][2]=fp.val[k]-1; } From 8d17500315a1fb15de0b297e4975b27957e65f77 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 25 Jul 2022 19:45:49 -0500 Subject: [PATCH 254/580] jlhafasjkhdgkdhjasfd --- src/engine/fileOps.cpp | 164 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 157 insertions(+), 7 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 30a9db94..6a6685b2 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2268,9 +2268,12 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { SafeReader reader=SafeReader(file,len); warnings=""; bool isFC14=false; - unsigned int patPtr, freqMacroPtr, volMacroPtr, samplePtr; + unsigned int patPtr, freqMacroPtr, volMacroPtr, samplePtr, wavePtr; unsigned int seqLen, patLen, freqMacroLen, volMacroLen, sampleLen; + unsigned char waveLen[40]; + unsigned char waveLoopLen[40]; + struct FCSequence { unsigned char pat[4]; signed char transpose[4]; @@ -2283,6 +2286,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { unsigned char val[32]; }; std::vector pat; + struct FCMacro { + unsigned char val[64]; + }; + std::vector freqMacros; + std::vector volMacros; struct FCSample { unsigned short loopLen, len, loopStart; @@ -2335,14 +2343,23 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } freqMacroPtr=reader.readI_BE(); freqMacroLen=reader.readI_BE(); + if (freqMacroLen%64) { + logW("freq sequence length is not multiple of 64 (%d)",freqMacroLen); + //throw EndOfFileException(&reader,reader.tell()); + } volMacroPtr=reader.readI_BE(); volMacroLen=reader.readI_BE(); + if (volMacroLen%64) { + logW("vol sequence length is not multiple of 64 (%d)",volMacroLen); + //throw EndOfFileException(&reader,reader.tell()); + } samplePtr=reader.readI_BE(); if (isFC14) { - reader.readI_BE(); // wave len + wavePtr=reader.readI_BE(); // wave len sampleLen=0; } else { sampleLen=reader.readI_BE(); + wavePtr=0; } logD("patPtr: %d",patPtr); @@ -2352,7 +2369,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { logD("volMacroPtr: %d",volMacroPtr); logD("volMacroLen: %d",volMacroLen); logD("samplePtr: %d",samplePtr); - logD("sampleLen: %d",sampleLen); + if (isFC14) { + logD("wavePtr: %d",wavePtr); + } else { + logD("sampleLen: %d",sampleLen); + } // sample info logD("samples:"); @@ -2365,9 +2386,14 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } // wavetable lengths - if (isFC14) for (int i=0; i<20; i++) { - reader.readS_BE(); - reader.readS_BE(); + if (isFC14) { + logD("wavetables:"); + for (int i=0; i<40; i++) { + waveLen[i]=reader.readC(); + waveLoopLen[i]=reader.readC(); + + logD("- %d: %.4x (%.4x)",i,waveLen[i],waveLoopLen[i]); + } } // sequences @@ -2413,7 +2439,96 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { pat.push_back(p); } - // TODO: read the rest + // freq sequences + if (!reader.seek(freqMacroPtr,SEEK_SET)) { + logE("premature end of file!"); + lastError="incomplete file"; + delete[] file; + return false; + } + freqMacroLen/=64; + logD("reading freq sequences... (%d)",freqMacroLen); + for (unsigned int i=0; idepth=DIV_SAMPLE_DEPTH_8BIT; + if (sample[i].len>0) { + s->init(sample[i].len); + } + s->loopStart=sample[i].loopStart*2; + s->loopEnd=(sample[i].loopStart+sample[i].loopLen)*2; + reader.read(s->data8,sample[i].len); + ds.sample.push_back(s); + } + ds.sampleLen=(int)ds.sample.size(); + + // wavetables + if (isFC14) { + if (!reader.seek(wavePtr,SEEK_SET)) { + logE("premature end of file!"); + lastError="incomplete file"; + delete[] file; + return false; + } + logD("reading wavetables..."); + for (int i=0; i<40; i++) { + DivWavetable* w=new DivWavetable; + w->min=0; + w->max=255; + w->len=MIN(256,waveLoopLen[i]*2); + + for (int i=0; i<256; i++) { + w->data[i]=128; + } + + if (waveLen[i]>0) { + signed char* waveArray=new signed char[waveLen[i]*2]; + reader.read(waveArray,waveLen[i]*2); + int howMany=MIN(waveLen[i]*2,waveLoopLen[i]*2); + if (howMany>256) howMany=256; + for (int i=0; idata[i]=waveArray[i]; + } + delete[] waveArray; + } else { + w->len=32; + for (int i=0; i<32; i++) { + w->data[i]=(i*255)/31; + } + } + + ds.wave.push_back(w); + } + } + ds.waveLen=(int)ds.wave.size(); // convert ds.subsong[0]->ordersLen=seqLen; @@ -2492,6 +2607,41 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } } + // convert instruments + for (unsigned int i=0; itype=DIV_INS_AMIGA; + ins->name=fmt::sprintf("Instrument %d",i); + unsigned char seqSpeed=m.val[0]; + unsigned char freqMacro=m.val[1]; + unsigned char vibSpeed=m.val[2]; + unsigned char vibDepth=m.val[3]; + unsigned char vibDelay=m.val[4]; + + ins->std.volMacro.len=0; + for (int j=5; j<64; j++) { + unsigned char pos=ins->std.volMacro.len; + if (++ins->std.volMacro.len>=128) break; + if (m.val[j]==0xe1) { + + } else if (m.val[j]==0xe0) { + + } else if (m.val[j]==0xe8) { + + } else if (m.val[j]==0xe9) { + + } else { + ins->std.volMacro.val[ins->std.volMacro.len]=m.val[j]; + } + + } + + ds.ins.push_back(ins); + } + ds.insLen=(int)ds.ins.size(); + if (active) quitDispatch(); BUSY_BEGIN_SOFT; saveLock.lock(); From 280592cf333e28853657fa05e3992c193346bb76 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 26 Jul 2022 01:42:34 -0500 Subject: [PATCH 255/580] fix build --- src/engine/fileOps.cpp | 112 ++++++++++++++++++++++++++++++++++------- 1 file changed, 94 insertions(+), 18 deletions(-) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 6a6685b2..d480167e 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2324,7 +2324,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } ds.systemLen=1; - ds.system[0]=DIV_SYSTEM_DUMMY; + ds.system[0]=DIV_SYSTEM_AMIGA; ds.systemVol[0]=64; ds.systemPan[0]=0; ds.systemFlags[0]=1|(80<<8); // PAL @@ -2515,7 +2515,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { int howMany=MIN(waveLen[i]*2,waveLoopLen[i]*2); if (howMany>256) howMany=256; for (int i=0; idata[i]=waveArray[i]; + w->data[i]=waveArray[i]+128; } delete[] waveArray; } else { @@ -2599,7 +2599,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { } } } else { - p->data[k][2]=fp.val[k]-1; + p->data[k][2]=fp.val[k]&0x3f; } } } @@ -2614,28 +2614,104 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) { ins->type=DIV_INS_AMIGA; ins->name=fmt::sprintf("Instrument %d",i); - unsigned char seqSpeed=m.val[0]; + ins->amiga.useWave=true; + //unsigned char seqSpeed=m.val[0]; unsigned char freqMacro=m.val[1]; - unsigned char vibSpeed=m.val[2]; - unsigned char vibDepth=m.val[3]; - unsigned char vibDelay=m.val[4]; + //unsigned char vibSpeed=m.val[2]; + //unsigned char vibDepth=m.val[3]; + //unsigned char vibDelay=m.val[4]; + unsigned char lastVal=m.val[5]; + + signed char loopMap[64]; + memset(loopMap,-1,64); + + // volume sequence ins->std.volMacro.len=0; for (int j=5; j<64; j++) { - unsigned char pos=ins->std.volMacro.len; - if (++ins->std.volMacro.len>=128) break; - if (m.val[j]==0xe1) { - - } else if (m.val[j]==0xe0) { - - } else if (m.val[j]==0xe8) { - - } else if (m.val[j]==0xe9) { - + loopMap[j]=ins->std.volMacro.len; + if (m.val[j]==0xe1) { // end + break; + } else if (m.val[j]==0xe0) { // loop + if (++j>=64) break; + ins->std.volMacro.loop=loopMap[m.val[j]&63]; + break; + } else if (m.val[j]==0xe8) { // sustain + if (++j>=64) break; + unsigned char susTime=m.val[j]; + // TODO: <= or std.volMacro.val[ins->std.volMacro.len]=lastVal; + if (++ins->std.volMacro.len>=128) break; + } + } else if (m.val[j]==0xe9 || m.val[j]==0xea) { // volume slide + if (++j>=64) break; + signed char slideStep=m.val[j]; + if (++j>=64) break; + unsigned char slideTime=m.val[j]; + // TODO: <= or 0) { + lastVal+=slideStep; + if (lastVal>63) lastVal=63; + } else { + if (-slideStep>lastVal) { + lastVal=0; + } else { + lastVal-=slideStep; + } + } + ins->std.volMacro.val[ins->std.volMacro.len]=lastVal; + if (++ins->std.volMacro.len>=128) break; + } } else { ins->std.volMacro.val[ins->std.volMacro.len]=m.val[j]; + lastVal=m.val[j]; + if (++ins->std.volMacro.len>=128) break; + } + } + + // frequency sequence + lastVal=0; + ins->amiga.initSample=-1; + if (freqMacro=64) break; + unsigned char wave=fm.val[j]; + if (wave<10) { // sample + if (ins->amiga.initSample==-1) { + ins->amiga.initSample=wave; + ins->amiga.useWave=false; + } + } else { // waveform + ins->std.waveMacro.val[ins->std.waveMacro.len]=wave-10; + ins->std.waveMacro.open=true; + lastVal=wave; + if (++ins->std.waveMacro.len>=128) break; + if (++ins->std.arpMacro.len>=128) break; + } + } else if (fm.val[j]==0xe0) { + logV("unhandled loop!"); + } else if (fm.val[j]==0xe3) { + logV("unhandled vibrato!"); + } else if (fm.val[j]==0xe8) { + logV("unhandled sustain!"); + } else if (fm.val[j]==0xe7) { + logV("unhandled newseq!"); + } else if (fm.val[j]==0xe9) { + logV("unhandled pack!"); + } else if (fm.val[j]==0xea) { + logV("unhandled pitch!"); + } else { + ins->std.arpMacro.val[ins->std.arpMacro.len]=(signed char)fm.val[j]; + ins->std.arpMacro.open=true; + if (++ins->std.arpMacro.len>=128) break; + } } - } ds.ins.push_back(ins); From 26176f58eb65806a51d25b3726491549b10c5355 Mon Sep 17 00:00:00 2001 From: 20Enderdude20 Date: Tue, 26 Jul 2022 00:12:34 -0700 Subject: [PATCH 256/580] Use this effect in lower notes like c -1 to C-0 --- instruments/FM/effect/GEN_Wind.fui | Bin 0 -> 1763 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/FM/effect/GEN_Wind.fui diff --git a/instruments/FM/effect/GEN_Wind.fui b/instruments/FM/effect/GEN_Wind.fui new file mode 100644 index 0000000000000000000000000000000000000000..181d90d7f303bcc3d85f9de651f6d57d1b0d9e4d GIT binary patch literal 1763 zcmeHH%TB{E5S%*e7YLch2gFA>lyBeyh)ab85@!Uc>LrH)U&n<%gWalboG7UUhznwr z)lR(jjJ;7jy?9+V_YY5T(LBE_Pp5MLkt5-1c60k?fH@{OzC53u#JffF2ulDzKn)$t zK2W6vy<9_uaIme8;10LdcLI(^>jCPFcLun1aLQ0;yhuL^NCIM&AWMX&rLvV3mbu>N(~(Fg&M7{ezK5gm*G literal 0 HcmV?d00001 From a9bfe7f452de711168aef64ebf8868fbb20cc7ed Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 26 Jul 2022 02:13:19 -0500 Subject: [PATCH 257/580] fix build... again! --- src/cli/cli.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 95679600..55ac3a86 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -34,8 +34,14 @@ bool FurnaceCLI::loop() { bool escape=false; bool escapeSecondStage=false; while (!cliQuit) { +#ifdef _WIN32 + int c; + c=fgetc(stdin); + if (c==EOF) break; +#else unsigned char c; if (read(STDIN_FILENO,&c,1)<=0) continue; +#endif if (escape) { if (escapeSecondStage) { switch (c) { From e7938ccd11e36900fbbd9d52c93f0ca1796268a5 Mon Sep 17 00:00:00 2001 From: Aleksi Knutsi <53163105+host12prog@users.noreply.github.com> Date: Tue, 26 Jul 2022 14:16:24 +0700 Subject: [PATCH 258/580] Fix 1 typo and 2 capitalization errors --- papers/doc/7-systems/x1-010.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/papers/doc/7-systems/x1-010.md b/papers/doc/7-systems/x1-010.md index 411afb3e..80b5b41a 100644 --- a/papers/doc/7-systems/x1-010.md +++ b/papers/doc/7-systems/x1-010.md @@ -8,9 +8,9 @@ Allumer rebadged it for their own arcade hardware. It has 16 channels, which can all be switched between PCM sample or wavetable playback mode. Wavetable playback needs to paired with envelope, similar to AY PSG, but shapes are stored in RAM and as such are user-definable. -In furnace, this chip can be configured for original arcade mono output or stereo output - it simulates early 'incorrect' emulation on some mono hardware, but it is also based on the assumption that each channel is connected to each output. +In Furnace, this chip can be configured for original arcade mono output or stereo output - it simulates early 'incorrect' emulation on some mono hardware, but it is also based on the assumption that each channel is connected to each output. -# waveform types +# Waveform types This chip supports 2 types of waveforms, needs to be paired to external 8 KB RAM to access these features: @@ -44,4 +44,4 @@ In furnace, you can enable the envelope shape split mode. When it is set, its wa - `y` is the denominator. - if `x` or `y` are 0 this will disable auto-envelope mode. -* PCM frequency: 255 step, fomula: `step * (Chip clock / 8192)`; 1.95KHz to 498KHz if Chip clock is 16MHz. +* PCM frequency: 255 step, formula: `step * (Chip clock / 8192)`; 1.95KHz to 498KHz if Chip clock is 16MHz. From c6d5f55335125f9f618ef2c47d43d64c79bd421f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 26 Jul 2022 02:28:28 -0500 Subject: [PATCH 259/580] AND REALLY FIX IT THIS TIME --- src/cli/cli.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 55ac3a86..2ac4a492 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -96,11 +96,14 @@ bool FurnaceCLI::loop() { } bool FurnaceCLI::finish() { +#ifdef _WIN32 +#else if (tcsetattr(0,TCSAFLUSH,&termpropold)!=0) { logE("could not set console attributes!"); logE("you may have to run `reset` on your terminal."); return false; } +#endif return true; } From 606215ef9f33c7e11abf77cca2c018fd8024255b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 26 Jul 2022 02:54:35 -0500 Subject: [PATCH 260/580] OH MY --- src/cli/cli.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 2ac4a492..87bf76dd 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -22,9 +22,11 @@ bool cliQuit=false; +#ifndef _WIN32 static void handleTerm(int) { cliQuit=true; } +#endif void FurnaceCLI::bindEngine(DivEngine* eng) { e=eng; From 92c3e75bee907cc229432c4c1da143b79ad6d2ed Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 26 Jul 2022 03:11:46 -0500 Subject: [PATCH 261/580] why! --- src/cli/cli.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cli/cli.h b/src/cli/cli.h index 0df6658e..55ad36b3 100644 --- a/src/cli/cli.h +++ b/src/cli/cli.h @@ -20,6 +20,9 @@ #ifndef _FUR_CLI_H #define _FUR_CLI_H + +#include "../engine/engine.h" + #include #ifdef _WIN32 #include @@ -30,8 +33,6 @@ #include #endif -#include "../engine/engine.h" - class FurnaceCLI { DivEngine* e; From 47aba6186dee6bc453175911ee9f0b135b56a514 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 26 Jul 2022 03:34:41 -0500 Subject: [PATCH 262/580] GUI: fix possible crash in sample editing actions --- src/gui/sampleUtil.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/sampleUtil.h b/src/gui/sampleUtil.h index 981a5604..187f5ebf 100644 --- a/src/gui/sampleUtil.h +++ b/src/gui/sampleUtil.h @@ -20,6 +20,10 @@ #define SAMPLE_OP_BEGIN \ unsigned int start=0; \ unsigned int end=sample->samples; \ + if (sampleSelStart<0) sampleSelStart=0; \ + if (sampleSelStart>(int)sample->samples) sampleSelStart=sample->samples; \ + if (sampleSelEnd<0) sampleSelEnd=0; \ + if (sampleSelEnd>(int)sample->samples) sampleSelEnd=sample->samples; \ if (sampleSelStart!=-1 && sampleSelEnd!=-1 && sampleSelStart!=sampleSelEnd) { \ start=sampleSelStart; \ end=sampleSelEnd; \ From 173e9b0df9590536e25b3126c17663cd1b08ffe7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 26 Jul 2022 18:23:01 -0500 Subject: [PATCH 263/580] **Namco C163** --- papers/doc/7-systems/n163.md | 22 +++++++++++++++++++++- src/engine/engine.h | 3 +++ src/engine/sysDef.cpp | 8 ++++---- src/gui/gui.cpp | 6 +++++- src/gui/gui.h | 11 +++++++++++ src/gui/settings.cpp | 4 ++-- 6 files changed, 46 insertions(+), 8 deletions(-) diff --git a/papers/doc/7-systems/n163.md b/papers/doc/7-systems/n163.md index 6057fa3c..d3ece830 100644 --- a/papers/doc/7-systems/n163.md +++ b/papers/doc/7-systems/n163.md @@ -1,4 +1,24 @@ -# Namco C163 +# - ANNOUNCEMENT - + +Start calling it C163! The TRUE name of the chip! + +The line will be consistent with your help: +- Namco C15 +- Namco C30 +- Namco C140 +- **Namco C163** +- Namco C219 +- Namco C352 + +The C names are official as indicated by: + +- MAME +- VGMPlay +- Korg Ɨ Bandai Namco (from Kamata info page) + +C stands for Custom! Call it C163! + +# Namco 163 (also called Namco C163, 106, 160 or 129) This is one of Namco's NES mappers, with up to 8 wavetable channels. It has also 128 byte of internal RAM, and both channel register and wavetables are stored here. Wavetables are variable size and freely allocable anywhere in RAM, it means it can use part of or continuously pre-loaded waveform and its sequences in RAM. But waveform RAM area becomes smaller as more channels are activated; as channel registers consumes 8 bytes for each channel. You must avoid conflict with channel register area and waveform for avoid broken channel playback. diff --git a/src/engine/engine.h b/src/engine/engine.h index 482b58dc..3030cfad 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -52,6 +52,9 @@ #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 +// "Namco C163" +#define DIV_C163_DEFAULT_NAME "Namco 163" + enum DivStatusView { DIV_STATUS_NOTHING=0, DIV_STATUS_PATTERN, diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 813e409e..74085407 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -178,7 +178,7 @@ String DivEngine::getSongSystemLegacyName(DivSong& ds, bool isMultiSystemAccepta } if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_N163) { String ret="Famicom + "; - ret+=getConfString("c163Name","Namco C163"); + ret+=getConfString("c163Name",DIV_C163_DEFAULT_NAME); return ret; } if (ds.system[0]==DIV_SYSTEM_NES && ds.system[1]==DIV_SYSTEM_MMC5) { @@ -208,7 +208,7 @@ String DivEngine::getSongSystemLegacyName(DivSong& ds, bool isMultiSystemAccepta for (int i=0; i0) ret+=" + "; if (ds.system[i]==DIV_SYSTEM_N163) { - ret+=getConfString("c163Name","Namco C163"); + ret+=getConfString("c163Name",DIV_C163_DEFAULT_NAME); } else { ret+=getSystemName(ds.system[i]); } @@ -220,7 +220,7 @@ String DivEngine::getSongSystemLegacyName(DivSong& ds, bool isMultiSystemAccepta const char* DivEngine::getSystemName(DivSystem sys) { if (sysDefs[sys]==NULL) return "Unknown"; if (sys==DIV_SYSTEM_N163) { - String c1=getConfString("c163Name","Namco C163"); + String c1=getConfString("c163Name",DIV_C163_DEFAULT_NAME); strncpy(c163NameCS,c1.c_str(),1023); return c163NameCS; } @@ -1246,7 +1246,7 @@ void DivEngine::registerSystems() { ); sysDefs[DIV_SYSTEM_N163]=new DivSysDef( - "Namco C163", NULL, 0x8c, 0, 8, false, true, 0, false, + "Namco 163/C163/129/160/106/whatever", NULL, 0x8c, 0, 8, false, true, 0, false, "an expansion chip for the Famicom, with full wavetable.", {"Channel 1", "Channel 2", "Channel 3", "Channel 4", "Channel 5", "Channel 6", "Channel 7", "Channel 8"}, {"CH1", "CH2", "CH3", "CH4", "CH5", "CH6", "CH7", "CH8"}, diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 2c80c5fb..b883935e 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4716,7 +4716,11 @@ FurnaceGUI::FurnaceGUI(): pianoView(0), pianoInputPadMode(0), #endif - hasACED(false) { + hasACED(false), + waveGenBaseShape(0), + waveGenDuty(0.0f), + waveGenPower(0.0f), + waveGenInvertPoint(0.0f) { // value keys valueKeys[SDLK_0]=0; valueKeys[SDLK_1]=1; diff --git a/src/gui/gui.h b/src/gui/gui.h index 875501d2..3b98f77f 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1466,6 +1466,17 @@ class FurnaceGUI { bool hasACED; unsigned char acedData[23]; + // wave generator + int waveGenBaseShape; + float waveGenDuty, waveGenPower, waveGenInvertPoint; + float waveGenAmp[16]; + float waveGenPhase[16]; + float waveGenTL[4]; + float waveGenFB[4]; + bool waveGenFMCon1[4]; + bool waveGenFMCon2[3]; + bool waveGenFMCon3[2]; + void drawSSGEnv(unsigned char type, const ImVec2& size); void drawWaveform(unsigned char type, bool opz, const ImVec2& size); void drawAlgorithm(unsigned char alg, FurnaceGUIFMAlgs algType, const ImVec2& size); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index eae165d2..6582a4e2 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1203,7 +1203,7 @@ void FurnaceGUI::drawSettings() { ImGui::Text("N163/C163 chip name"); ImGui::SameLine(); - ImGui::InputTextWithHint("##C163Name","Namco C163",&settings.c163Name); + ImGui::InputTextWithHint("##C163Name",DIV_C163_DEFAULT_NAME,&settings.c163Name); ImGui::Separator(); @@ -2029,7 +2029,7 @@ void FurnaceGUI::syncSettings() { settings.midiInDevice=e->getConfString("midiInDevice",""); settings.midiOutDevice=e->getConfString("midiOutDevice",""); // I'm sorry, but the C163 education program has failed... - settings.c163Name=e->getConfString("c163Name","Namco C163"); + settings.c163Name=e->getConfString("c163Name",DIV_C163_DEFAULT_NAME); settings.audioQuality=e->getConfInt("audioQuality",0); settings.audioBufSize=e->getConfInt("audioBufSize",1024); settings.audioRate=e->getConfInt("audioRate",44100); From 7d5f5a91c67a9cf3abc4ee43f850479d00aa8202 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 27 Jul 2022 01:20:26 -0500 Subject: [PATCH 264/580] GUI: wave generator, part 1 --- src/gui/gui.cpp | 17 +++++++++++- src/gui/gui.h | 4 +++ src/gui/waveEdit.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 80 insertions(+), 2 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index b883935e..565ff7db 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4720,7 +4720,8 @@ FurnaceGUI::FurnaceGUI(): waveGenBaseShape(0), waveGenDuty(0.0f), waveGenPower(0.0f), - waveGenInvertPoint(0.0f) { + waveGenInvertPoint(0.0f), + waveGenFM(false) { // value keys valueKeys[SDLK_0]=0; valueKeys[SDLK_1]=1; @@ -4782,6 +4783,20 @@ FurnaceGUI::FurnaceGUI(): memset(acedData,0,23); + memset(waveGenAmp,0,sizeof(float)*16); + memset(waveGenPhase,0,sizeof(float)*16); + memset(waveGenTL,0,sizeof(float)*4); + memset(waveGenMult,0,sizeof(int)*4); + memset(waveGenFB,0,sizeof(float)*4); + memset(waveGenFMCon1,0,sizeof(bool)*4); + memset(waveGenFMCon2,0,sizeof(bool)*3); + memset(waveGenFMCon3,0,sizeof(bool)*2); + + waveGenAmp[0]=1.0f; + waveGenFMCon1[0]=true; + waveGenFMCon2[0]=true; + waveGenFMCon3[0]=true; + memset(pianoKeyHit,0,sizeof(float)*180); memset(pianoKeyPressed,0,sizeof(bool)*180); diff --git a/src/gui/gui.h b/src/gui/gui.h index 3b98f77f..df3dcd16 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1472,10 +1472,12 @@ class FurnaceGUI { float waveGenAmp[16]; float waveGenPhase[16]; float waveGenTL[4]; + int waveGenMult[4]; float waveGenFB[4]; bool waveGenFMCon1[4]; bool waveGenFMCon2[3]; bool waveGenFMCon3[2]; + bool waveGenFM; void drawSSGEnv(unsigned char type, const ImVec2& size); void drawWaveform(unsigned char type, bool opz, const ImVec2& size); @@ -1600,6 +1602,8 @@ class FurnaceGUI { void noteInput(int num, int key, int vol=-1); void valueInput(int num, bool direct=false, int target=-1); + void doGenerateWave(); + void doUndoSample(); void doRedoSample(); diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index f8c27b1f..0d65f5e6 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -17,12 +17,60 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#define _USE_MATH_DEFINES #include "gui.h" #include "plot_nolerp.h" #include "IconsFontAwesome4.h" #include "misc/cpp/imgui_stdlib.h" +#include #include +const char* waveGenBaseShapes[4]={ + "Sine", + "Triangle", + "Saw", + "Pulse" +}; + +void FurnaceGUI::doGenerateWave() { + float finalResult[256]; + if (curWave<0 || curWave>=(int)e->song.wave.size()) return; + + DivWavetable* wave=e->song.wave[curWave]; + memset(finalResult,0,sizeof(float)*256); + + if (waveGenFM) { + + } else { + switch (waveGenBaseShape) { + case 0: // sine + for (int i=0; ilen; i++) { + finalResult[i]=0.5*(1.0+sin(i*2.0*M_PI/(double)wave->len)); + } + break; + case 1: // triangle + for (int i=0; ilen; i++) { + finalResult[i]=2.0*(0.5-fabs(0.5-(i/(double)(wave->len-1)))); + } + break; + case 2: // saw + for (int i=0; ilen; i++) { + finalResult[i]=i/(double)(wave->len-1); + } + break; + case 3: // pulse + for (int i=0; ilen; i++) { + finalResult[i]=(i>=(wave->len/2))?1:0; + } + break; + } + } + + for (int i=0; ilen; i++) { + wave->data[i]=round(finalResult[i]*wave->max); + } +} + void FurnaceGUI::drawWaveEdit() { if (nextWindow==GUI_WINDOW_WAVE_EDIT) { waveEditOpen=true; @@ -144,10 +192,21 @@ void FurnaceGUI::drawWaveEdit() { if (ImGui::BeginTabBar("WaveGenOpt")) { if (ImGui::BeginTabItem("Shapes")) { - ImGui::Button("Square"); + waveGenFM=false; + + if (waveGenBaseShape<0) waveGenBaseShape=0; + if (waveGenBaseShape>3) waveGenBaseShape=3; + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderInt("##WGShape",&waveGenBaseShape,0,3,waveGenBaseShapes[waveGenBaseShape])) { + if (waveGenBaseShape<0) waveGenBaseShape=0; + if (waveGenBaseShape>3) waveGenBaseShape=3; + doGenerateWave(); + } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("FM")) { + waveGenFM=true; + ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Mangle")) { From 693d457fffb8447727503dd42dee58e2d672f22a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 27 Jul 2022 02:23:29 -0500 Subject: [PATCH 265/580] GUI: wave generator, part 2 --- src/gui/gui.cpp | 6 +-- src/gui/gui.h | 4 +- src/gui/waveEdit.cpp | 114 +++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 116 insertions(+), 8 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 565ff7db..ab4b3d63 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4718,9 +4718,9 @@ FurnaceGUI::FurnaceGUI(): #endif hasACED(false), waveGenBaseShape(0), - waveGenDuty(0.0f), - waveGenPower(0.0f), - waveGenInvertPoint(0.0f), + waveGenDuty(0.5f), + waveGenPower(1), + waveGenInvertPoint(1.0f), waveGenFM(false) { // value keys valueKeys[SDLK_0]=0; diff --git a/src/gui/gui.h b/src/gui/gui.h index df3dcd16..30113953 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1468,7 +1468,9 @@ class FurnaceGUI { // wave generator int waveGenBaseShape; - float waveGenDuty, waveGenPower, waveGenInvertPoint; + float waveGenDuty; + int waveGenPower; + float waveGenInvertPoint; float waveGenAmp[16]; float waveGenPhase[16]; float waveGenTL[4]; diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 0d65f5e6..5dd9b1cc 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -39,34 +39,67 @@ void FurnaceGUI::doGenerateWave() { DivWavetable* wave=e->song.wave[curWave]; memset(finalResult,0,sizeof(float)*256); + if (wave->len<2) return; + if (waveGenFM) { } else { switch (waveGenBaseShape) { case 0: // sine for (int i=0; ilen; i++) { - finalResult[i]=0.5*(1.0+sin(i*2.0*M_PI/(double)wave->len)); + for (int j=0; j<16; j++) { + float pos=fmod((waveGenPhase[j]*wave->len)+(i*(j+1)),wave->len); + float partial=sin((0.5+pos)*2.0*M_PI/(double)wave->len); + partial=pow(partial,waveGenPower); + partial*=waveGenAmp[j]; + finalResult[i]+=partial; + } } break; case 1: // triangle for (int i=0; ilen; i++) { - finalResult[i]=2.0*(0.5-fabs(0.5-(i/(double)(wave->len-1)))); + for (int j=0; j<16; j++) { + float pos=fmod((waveGenPhase[j]*wave->len)+(i*(j+1)),wave->len); + float partial=4.0*(0.5-fabs(0.5-(pos/(double)(wave->len-1))))-1.0; + partial=pow(partial,waveGenPower); + partial*=waveGenAmp[j]; + finalResult[i]+=partial; + } } break; case 2: // saw for (int i=0; ilen; i++) { - finalResult[i]=i/(double)(wave->len-1); + for (int j=0; j<16; j++) { + float pos=fmod((waveGenPhase[j]*wave->len)+(i*(j+1)),wave->len); + float partial=((2*pos)/(double)(wave->len-1))-1.0; + partial=pow(partial,waveGenPower); + partial*=waveGenAmp[j]; + finalResult[i]+=partial; + } } break; case 3: // pulse for (int i=0; ilen; i++) { - finalResult[i]=(i>=(wave->len/2))?1:0; + for (int j=0; j<16; j++) { + float pos=fmod((waveGenPhase[j]*wave->len)+(i*(j+1)),wave->len); + float partial=(pos>=(waveGenDuty*wave->len))?1:-1; + partial=pow(partial,waveGenPower); + partial*=waveGenAmp[j]; + finalResult[i]+=partial; + } } break; } } + for (int i=waveGenInvertPoint*wave->len; ilen; i++) { + finalResult[i]=-finalResult[i]; + } + for (int i=0; ilen; i++) { + finalResult[i]=(1.0+finalResult[i])*0.5; + if (finalResult[i]<0.0f) finalResult[i]=0.0f; + if (finalResult[i]>1.0f) finalResult[i]=1.0f; wave->data[i]=round(finalResult[i]*wave->max); } } @@ -202,6 +235,79 @@ void FurnaceGUI::drawWaveEdit() { if (waveGenBaseShape>3) waveGenBaseShape=3; doGenerateWave(); } + + if (ImGui::BeginTable("WGShapeProps",2)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Duty"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderFloat("##WGDuty",&waveGenDuty,0.0f,1.0f)) { + doGenerateWave(); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Exponent"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderInt("##WGExp",&waveGenPower,1,8)) { + doGenerateWave(); + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("XOR Point"); + ImGui::TableNextColumn(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderFloat("##WGXOR",&waveGenInvertPoint,0.0f,1.0f)) { + doGenerateWave(); + } + + ImGui::EndTable(); + } + + if (ImGui::TreeNode("Amplitude/Phase")) { + if (ImGui::BeginTable("WGShapeProps",3)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.6f); + ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.4f); + + for (int i=0; i<16; i++) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("%d",i+1); + ImGui::TableNextColumn(); + ImGui::PushID(140+i); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderFloat("##WGAmp",&waveGenAmp[i],-1.0f,1.0f)) { + doGenerateWave(); + } + if (ImGui::IsItemClicked(ImGuiMouseButton_Middle)) { + waveGenAmp[i]=0.0f; + doGenerateWave(); + } + ImGui::PopID(); + ImGui::TableNextColumn(); + ImGui::PushID(140+i); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (CWSliderFloat("##WGPhase",&waveGenPhase[i],0.0f,1.0f)) { + doGenerateWave(); + } + if (ImGui::IsItemClicked(ImGuiMouseButton_Middle)) { + waveGenPhase[i]=0.0f; + doGenerateWave(); + } + ImGui::PopID(); + } + + ImGui::EndTable(); + } + ImGui::TreePop(); + } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("FM")) { From 185b283ef661bc3d7d0be02b60f1b8e0e0e9240a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 27 Jul 2022 02:36:36 -0500 Subject: [PATCH 266/580] GUI: wave generator, part 3 --- src/gui/waveEdit.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 5dd9b1cc..4d8f197d 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -313,6 +313,7 @@ void FurnaceGUI::drawWaveEdit() { if (ImGui::BeginTabItem("FM")) { waveGenFM=true; + ImGui::Text("FM stuff here"); ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Mangle")) { From 2b4b320a74f53370c43c6473fe0c60baa8c7876a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 27 Jul 2022 02:36:48 -0500 Subject: [PATCH 267/580] fix noMultiSystem setting being inverted --- src/engine/engine.cpp | 4 ++-- src/engine/fileOps.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 40a51bdc..2a000476 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -848,7 +848,7 @@ void DivEngine::createNew(const int* description, String sysName) { initSongWithDesc(description); } if (sysName=="") { - song.systemName=getSongSystemLegacyName(song,getConfInt("noMultiSystem",0)); + song.systemName=getSongSystemLegacyName(song,!getConfInt("noMultiSystem",0)); } else { song.systemName=sysName; } @@ -3137,7 +3137,7 @@ bool DivEngine::init() { } String sysName=getConfString("initialSysName",""); if (sysName=="") { - song.systemName=getSongSystemLegacyName(song,getConfInt("noMultiSystem",0)); + song.systemName=getSongSystemLegacyName(song,!getConfInt("noMultiSystem",0)); } else { song.systemName=sysName; } diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index d480167e..8dcd55d2 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -909,7 +909,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) { ds.system[1]=DIV_SYSTEM_FDS; } - ds.systemName=getSongSystemLegacyName(ds,getConfInt("noMultiSystem",0)); + ds.systemName=getSongSystemLegacyName(ds,!getConfInt("noMultiSystem",0)); if (active) quitDispatch(); BUSY_BEGIN_SOFT; @@ -1497,7 +1497,7 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) { ds.systemNameJ=reader.readString(); ds.categoryJ=reader.readString(); } else { - ds.systemName=getSongSystemLegacyName(ds,getConfInt("noMultiSystem",0)); + ds.systemName=getSongSystemLegacyName(ds,!getConfInt("noMultiSystem",0)); } // read subsongs From 9447442fede8c999515a02a8521b3d042e8b286c Mon Sep 17 00:00:00 2001 From: freq-mod Date: Wed, 27 Jul 2022 16:09:36 +0200 Subject: [PATCH 268/580] Update waveform editor height/width guide --- src/gui/waveEdit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/waveEdit.cpp b/src/gui/waveEdit.cpp index 4d8f197d..ac06bcb7 100644 --- a/src/gui/waveEdit.cpp +++ b/src/gui/waveEdit.cpp @@ -152,7 +152,7 @@ void FurnaceGUI::drawWaveEdit() { ImGui::TableNextColumn(); ImGui::Text("Width"); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("use a width of:\n- any on Amiga/N163\n- 32 on Game Boy, PC Engine and WonderSwan\n- 64 on FDS\n- 128 on X1-010\nany other widths will be scaled during playback."); + ImGui::SetTooltip("use a width of:\n- any on Amiga/N163\n- 32 on Game Boy, PC Engine, SCC, Konami Bubble System, Namco WSG and WonderSwan\n- 64 on FDS\n- 128 on X1-010\nany other widths will be scaled during playback."); } ImGui::SameLine(); ImGui::SetNextItemWidth(96.0f*dpiScale); @@ -166,7 +166,7 @@ void FurnaceGUI::drawWaveEdit() { ImGui::SameLine(); ImGui::Text("Height"); if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("use a height of:\n- 15 for Game Boy, WonderSwan, X1-010 Envelope shape and N163\n- 31 for PC Engine\n- 63 for FDS\n- 255 for X1-010\nany other heights will be scaled during playback."); + ImGui::SetTooltip("use a height of:\n- 15 for Game Boy, WonderSwan, Namco WSG, Konami Bubble System, X1-010 Envelope shape and N163\n- 31 for PC Engine\n- 63 for FDS\n- 255 for X1-010 and SCC\nany other heights will be scaled during playback."); } ImGui::SameLine(); ImGui::SetNextItemWidth(96.0f*dpiScale); From b3e9f53ec47f30e1c520522c4728fd1f3288983d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 27 Jul 2022 17:57:36 -0500 Subject: [PATCH 269/580] GUI: the poll --- src/gui/songInfo.cpp | 2 - src/gui/subSongs.cpp | 130 ------------------------------------------- 2 files changed, 132 deletions(-) diff --git a/src/gui/songInfo.cpp b/src/gui/songInfo.cpp index f1428db5..7f7e026e 100644 --- a/src/gui/songInfo.cpp +++ b/src/gui/songInfo.cpp @@ -226,8 +226,6 @@ void FurnaceGUI::drawSongInfo() { } ImGui::EndTable(); } - - ImGui::TextWrapped("if this feels incomplete, go to Subsongs.\nthe outcome of this Song Information window will be determined by a poll on the Furnace Discord."); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SONG_INFO; ImGui::End(); diff --git a/src/gui/subSongs.cpp b/src/gui/subSongs.cpp index c100600d..c56bf640 100644 --- a/src/gui/subSongs.cpp +++ b/src/gui/subSongs.cpp @@ -94,136 +94,6 @@ void FurnaceGUI::drawSubSongs() { if (ImGui::InputText("##SubSongName",&e->curSubSong->name)) { MARK_MODIFIED; } - - if (ImGui::BeginTable("OtherSubProps",3,ImGuiTableFlags_SizingStretchProp)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0); - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0); - ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("TimeBase"); - ImGui::TableNextColumn(); - float avail=ImGui::GetContentRegionAvail().x; - ImGui::SetNextItemWidth(avail); - unsigned char realTB=e->curSubSong->timeBase+1; - if (ImGui::InputScalar("##TimeBase",ImGuiDataType_U8,&realTB,&_ONE,&_THREE)) { MARK_MODIFIED - if (realTB<1) realTB=1; - if (realTB>16) realTB=16; - e->curSubSong->timeBase=realTB-1; - } - ImGui::TableNextColumn(); - ImGui::Text("%.2f BPM",calcBPM(e->curSubSong->speed1,e->curSubSong->speed2,e->curSubSong->hz,e->curSubSong->virtualTempoN,e->curSubSong->virtualTempoD)); - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Speed"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - if (ImGui::InputScalar("##Speed1",ImGuiDataType_U8,&e->curSubSong->speed1,&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->speed1<1) e->curSubSong->speed1=1; - if (e->isPlaying()) play(); - } - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - if (ImGui::InputScalar("##Speed2",ImGuiDataType_U8,&e->curSubSong->speed2,&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->speed2<1) e->curSubSong->speed2=1; - if (e->isPlaying()) play(); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Virtual Tempo"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - if (ImGui::InputScalar("##VTempoN",ImGuiDataType_S16,&e->curSubSong->virtualTempoN,&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->virtualTempoN<1) e->curSubSong->virtualTempoN=1; - if (e->curSubSong->virtualTempoN>255) e->curSubSong->virtualTempoN=255; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Numerator"); - } - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - if (ImGui::InputScalar("##VTempoD",ImGuiDataType_S16,&e->curSubSong->virtualTempoD,&_ONE,&_THREE)) { MARK_MODIFIED - if (e->curSubSong->virtualTempoD<1) e->curSubSong->virtualTempoD=1; - if (e->curSubSong->virtualTempoD>255) e->curSubSong->virtualTempoD=255; - } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("Denominator (set to base tempo)"); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Highlight"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - if (ImGui::InputScalar("##Highlight1",ImGuiDataType_U8,&e->curSubSong->hilightA,&_ONE,&_THREE)) { - MARK_MODIFIED; - } - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - if (ImGui::InputScalar("##Highlight2",ImGuiDataType_U8,&e->curSubSong->hilightB,&_ONE,&_THREE)) { - MARK_MODIFIED; - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Pattern Length"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - int patLen=e->curSubSong->patLen; - if (ImGui::InputInt("##PatLength",&patLen,1,3)) { MARK_MODIFIED - if (patLen<1) patLen=1; - if (patLen>256) patLen=256; - e->curSubSong->patLen=patLen; - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Song Length"); - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - int ordLen=e->curSubSong->ordersLen; - if (ImGui::InputInt("##OrdLength",&ordLen,1,3)) { MARK_MODIFIED - if (ordLen<1) ordLen=1; - if (ordLen>256) ordLen=256; - e->curSubSong->ordersLen=ordLen; - if (curOrder>=ordLen) { - setOrder(ordLen-1); - } - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (ImGui::Selectable(tempoView?"Base Tempo##TempoOrHz":"Tick Rate##TempoOrHz")) { - tempoView=!tempoView; - } - ImGui::TableNextColumn(); - ImGui::SetNextItemWidth(avail); - float setHz=tempoView?e->curSubSong->hz*2.5:e->curSubSong->hz; - if (ImGui::InputFloat("##Rate",&setHz,1.0f,1.0f,"%g")) { MARK_MODIFIED - if (tempoView) setHz/=2.5; - if (setHz<10) setHz=10; - if (setHz>999) setHz=999; - e->setSongRate(setHz,setHz<52); - } - if (tempoView) { - ImGui::TableNextColumn(); - ImGui::Text("= %gHz",e->curSubSong->hz); - } else { - if (e->curSubSong->hz>=49.98 && e->curSubSong->hz<=50.02) { - ImGui::TableNextColumn(); - ImGui::Text("PAL"); - } - if (e->curSubSong->hz>=59.9 && e->curSubSong->hz<=60.11) { - ImGui::TableNextColumn(); - ImGui::Text("NTSC"); - } - } - - ImGui::EndTable(); - } } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SUBSONGS; ImGui::End(); From 4666a8d61494187a6192d28d25c0f425fafdb014 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 27 Jul 2022 17:57:45 -0500 Subject: [PATCH 270/580] update export-tech.md --- papers/export-tech.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/papers/export-tech.md b/papers/export-tech.md index 3bf71546..560aab32 100644 --- a/papers/export-tech.md +++ b/papers/export-tech.md @@ -4,6 +4,13 @@ TODO +## macro data + +read length, loop and then release (1 byte). +if it is a 2-byte macro, read a dummy byte. + +then read data. + ## pattern data read sequentially. From e7108c060ba3755d5d497a0223de06a98e0dfa4b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 28 Jul 2022 23:24:32 -0500 Subject: [PATCH 271/580] add Namco WSG section to doc/7-systems --- papers/doc/7-systems/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/papers/doc/7-systems/README.md b/papers/doc/7-systems/README.md index 6d428f3e..e4b6cf5b 100644 --- a/papers/doc/7-systems/README.md +++ b/papers/doc/7-systems/README.md @@ -26,7 +26,8 @@ this is a list of systems that Furnace supports, including each system's effects - [Seta/Allumer X1-010](x1-010.md) - [WonderSwan](wonderswan.md) - [Bubble System WSG](bubblesystem.md) -- [Namco 163](n163.md) +- [Namco C163](n163.md) +- [Namco WSG](namco.md) - [Yamaha OPL](opl.md) - [PC Speaker](pcspkr.md) - [Commodore PET](pet.md) From cd4af3c4babaa669992fbe13c94c99e46a06e4b0 Mon Sep 17 00:00:00 2001 From: Aleksi Knutsi <53163105+host12prog@users.noreply.github.com> Date: Fri, 29 Jul 2022 21:20:17 +0700 Subject: [PATCH 272/580] Update soundunit.md --- papers/doc/7-systems/soundunit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/7-systems/soundunit.md b/papers/doc/7-systems/soundunit.md index d9d0abd7..89e34655 100644 --- a/papers/doc/7-systems/soundunit.md +++ b/papers/doc/7-systems/soundunit.md @@ -25,7 +25,7 @@ This is a fantasy sound chip, used in the specs2 fantasy computer designed by ti - `17xx`: set volume sweep period low byte - `18xx`: set volume sweep period high byte - `19xx`: set cutoff sweep period low byte -- `1Axx`: set cutoff sweep period low byte +- `1Axx`: set cutoff sweep period high byte - `1Bxx`: set frequency sweep boundary - `1Cxx`: set volume sweep boundary - `1Dxx`: set cutoff sweep boundary From 1921fd17595efa7ce7ed8212c33417bd031919a6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 30 Jul 2022 01:00:51 -0500 Subject: [PATCH 273/580] PCE: implement anti-click technology --- src/engine/platform/pce.cpp | 12 +++++++++++- src/engine/platform/pce.h | 5 ++++- src/gui/sysConf.cpp | 19 ++++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index f1eb5a10..a61b6183 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -136,8 +136,9 @@ void DivPlatformPCE::updateWave(int ch) { chWrite(ch,0x04,0x5f); chWrite(ch,0x04,0x1f); for (int i=0; i<32; i++) { - chWrite(ch,0x06,chan[ch].ws.output[i]); + chWrite(ch,0x06,chan[ch].ws.output[(i+chan[ch].antiClickWavePos)&31]); } + chan[ch].antiClickWavePos&=31; if (chan[ch].active) { chWrite(ch,0x04,0x80|chan[ch].outVol); } @@ -150,6 +151,13 @@ static unsigned char noiseFreq[12]={ void DivPlatformPCE::tick(bool sysTick) { for (int i=0; i<6; i++) { + // anti-click + if (antiClickEnabled && sysTick && chan[i].freq>0) { + chan[i].antiClickPeriodCount+=(chipClock/MAX(parent->getCurHz(),1.0f)); + chan[i].antiClickWavePos+=chan[i].antiClickPeriodCount/chan[i].freq; + chan[i].antiClickPeriodCount%=chan[i].freq; + } + chan[i].std.next(); if (chan[i].std.vol.had) { chan[i].outVol=VOL_SCALE_LOG(chan[i].vol&31,MIN(31,chan[i].std.vol.val),31); @@ -555,6 +563,8 @@ void DivPlatformPCE::setFlags(unsigned int flags) { } else { chipClock=COLOR_NTSC; } + // flags&4 will be chip revision + antiClickEnabled=!(flags&8); rate=chipClock/12; for (int i=0; i<6; i++) { oscBuf[i]->rate=rate; diff --git a/src/engine/platform/pce.h b/src/engine/platform/pce.h index 870b5218..22a24ddf 100644 --- a/src/engine/platform/pce.h +++ b/src/engine/platform/pce.h @@ -28,7 +28,7 @@ class DivPlatformPCE: public DivDispatch { struct Channel { - int freq, baseFreq, pitch, pitch2, note; + int freq, baseFreq, pitch, pitch2, note, antiClickPeriodCount, antiClickWavePos; int dacPeriod, dacRate; unsigned int dacPos; int dacSample, ins; @@ -47,6 +47,8 @@ class DivPlatformPCE: public DivDispatch { pitch(0), pitch2(0), note(0), + antiClickPeriodCount(0), + antiClickWavePos(0), dacPeriod(0), dacRate(0), dacPos(0), @@ -69,6 +71,7 @@ class DivPlatformPCE: public DivDispatch { Channel chan[6]; DivDispatchOscBuffer* oscBuf[6]; bool isMuted[6]; + bool antiClickEnabled; struct QueuedWrite { unsigned char addr; unsigned char val; diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index e5407486..36531242 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -109,6 +109,24 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } break; } + case DIV_SYSTEM_PCE: { + sysPal=flags&1; + if (ImGui::Checkbox("Pseudo-PAL",&sysPal)) { + copyOfFlags=(flags&(~1))|(unsigned int)sysPal; + } + bool antiClick=flags&8; + if (ImGui::Checkbox("Disable anti-click",&antiClick)) { + copyOfFlags=(flags&(~8))|(antiClick<<3); + } + break; + } + case DIV_SYSTEM_GB: { + bool antiClick=flags&8; + if (ImGui::Checkbox("Disable anti-click",&antiClick)) { + copyOfFlags=(flags&(~8))|(antiClick<<3); + } + break; + } case DIV_SYSTEM_OPLL: case DIV_SYSTEM_OPLL_DRUMS: case DIV_SYSTEM_VRC7: { @@ -631,7 +649,6 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } break; } - case DIV_SYSTEM_GB: case DIV_SYSTEM_SWAN: case DIV_SYSTEM_VERA: case DIV_SYSTEM_BUBSYS_WSG: From 007024c86f1a9e1c7a34478004497bc0bccef725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Szpilowski?= Date: Sat, 30 Jul 2022 18:47:05 +0200 Subject: [PATCH 274/580] Create MetalSlug_BaseCamp_SMS_TIA.fur New cover - MetalSlug BaseCamp (form GB Advnace) --- demos/MetalSlug_BaseCamp_SMS_TIA.fur | Bin 0 -> 1917 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/MetalSlug_BaseCamp_SMS_TIA.fur diff --git a/demos/MetalSlug_BaseCamp_SMS_TIA.fur b/demos/MetalSlug_BaseCamp_SMS_TIA.fur new file mode 100644 index 0000000000000000000000000000000000000000..dd2fa6af3138b5913f10da46d4095af644d0518c GIT binary patch literal 1917 zcmV-@2ZH!`ob6p-iyTD|ubJuD+1=S>MZpI_ZoxMpkZ{I;AYO73Jk%uQ67WHg(<~A7 zPP{*gf)M{Cq98;B^~HDn2>Rrc5Bd?*Z=fGQ$sfD7cXn!br*^t_dv3RHyF=$HJ=MRe zuI^vg^vv$%#QB5Wovqipo$a@;9lX^&aUB3Uke7`M=Py1VN}*N@0G>Oy22BtT)O*)f zWQ{(BiDj*%OzyoH<5Cz0S4F9A;81~~h*@-YlT z5s6q%S_qM-i8z6v7SzHh6fqiFL0f=IVK{C)6KE~1DnS3UfAt&rN0-g+^{vi}TYLN6 z-OlFw^2fGr-?*@O<)a#aT520Rd;7Zw+ufc0jtrRqP)iL~>T%STVT{LY>#`z(AU!$Z zdNUC12k8l2X#|aSNM3G3xTXdL^?n`cjsKxsP)Nn00+0&;?oTM%9!OS6ij`nxWfX&& zD3dbDH_G2~54|l@Tim{`7u&Jq;(I$~b~^E;_?Msu2%TtQ23TAs61Lsel`2FcI^|>{ z8oxYTOy;4D>M>bcBee{3`ZVOuhJ93Rar?SnY{!y|@9mV?S*}F%*HKACD`S_3i^)8w zSRL=zV)M==O zYTU0TxWTl$sDY2gYv*Vuh{LqS?dy869ZN30w^L?kxsuWMlgUUWjR?u3#bh2- zKheig6?=9^>ijEfy{{ukw~FnlkFbyfEh*EjsiU1Z4$~I5uj|EjEV=mJPMMwMN>ZPX zC#ff$Oj61P(U+$^F{#IOY2Or1bob=-yR!Z#t1!U!3CUes+`g_C+p*;0dpl)zmMbA0 zj3=ZsP9`LrD5gzFqaRBzIuVWb^N;M@wZ-l0da)f#F21)@W@mYl&!w|hE;mL-h~4sX z^|FxJE|gjJ7%YZAOD*Sw(7bA>?@P+b5%4h_?xIk3$J-l3JEflx?N!Sm(;rHo8n2K4 zWSJZPl=3qtMCb|O31RFHSKk%?5h3(pH&)+LpTmIYffoA{677_}Ex9GbXam1N;85e5 zmrRYfNwnLF4~0*~jVmVInCNo}#MP%Z z7;59JdPAyQ&Iu7aMF{Q=#obxvMTm$=2wQT(T*ysAzp-G1NXa{ls4PS17tDfEbU;o= zo?3g^%WOF#1pdgx+?`r7SrIwxeUWX|$A8{(P6%D}GjXMKbuc-T1?$ujit^_=SX zBSPrMu6{zsCkOA~m>ju2Et|wA9E?%x+neyil=b4u9@}T-e!rMJ7FBB_lN(4*k=!EM zv3_FEE`~6XZ#g0KQzlP{$-9;L4y6}JI_OK2CLJP#%^lDaVg^F!_Yl}YtQZqUT10zH z7&O6G2m5L9ao`iemS6@cVd8Tq0ps8ob}^EhLpsHA!0k-}#{@r_0bl)^j-psm^G?NN zm?%8_*dXQ2eBn;LGX5xFvS!Dm%(#zK5j1c(CKXZ4=%U+(BoD(Ad_;+@B7GR8nWkKL` z?Na)QCI2xFmct70XNiN4|Lph#A!?ow3os$B$KQ4T5h3!MCa&Wl!;zG!-(u<~Onpj@ z2^?Vw-h*&N zk^eS~(oPFJAX|i(7g1a%1osYL;pChU`aMK_!3LBq@DLsWlXfqA*$N@D8>Uw8aIG(L zWei-_u3r9dWG=q<-}^s}{{uqcUmrHO=w&Z2o17COdk>*b6SD(j94re0pKF)WPb~S5 zaj+a#fImwdY{j1&H%j02_#;AO?;$)PMsb#b5Vqp)y8nm}`aML<1h%EGp57F-w}^HM zhtj8HTlywMG_loW#?zKQ9na!+3dh>QWa@K?Lg^zy=wr35)XCMSc3vv*6wbT|O)VU1 zLMWU?i$A4rixAwtln%AoaL0uRA*Lb(cXB)-ChJE`f2!7};!oj_J1-$ut)DX28zO{$ z4>7L+*=qN)muHeQLS+AOL`&W}#f3YsklDk$9phkG-I~={JM#2)z5m{Su3h*at^NA) D#hbI` literal 0 HcmV?d00001 From 6ff51ce8f340803a743e024b33251fdf3e04baa3 Mon Sep 17 00:00:00 2001 From: Waldemar Pawlaszek Date: Sun, 31 Jul 2022 11:33:38 +0200 Subject: [PATCH 275/580] #511 Added dynamic popcnt dispatcher --- src/engine/platform/sound/lynx/Mikey.cpp | 63 +++++++++++++++--------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/src/engine/platform/sound/lynx/Mikey.cpp b/src/engine/platform/sound/lynx/Mikey.cpp index 270e21bd..32612960 100644 --- a/src/engine/platform/sound/lynx/Mikey.cpp +++ b/src/engine/platform/sound/lynx/Mikey.cpp @@ -26,6 +26,24 @@ #include #include +#if defined ( _MSC_VER ) +#include + +static void cpuid( int info[4], int infoType ) +{ + __cpuidex( info, infoType, 0 ); +} + +#else +#include + +static void cpuid( int info[4], int infoType ) +{ + __cpuid_count( infoType, 0, info[0], info[1], info[2], info[3] ); +} + +#endif + namespace Lynx { @@ -34,29 +52,7 @@ namespace static constexpr int64_t CNT_MAX = std::numeric_limits::max() & ~15; -#if defined ( __cpp_lib_bitops ) - -#define popcnt(X) std::popcount(X) - -#elif defined( _MSC_VER ) - -# include - -uint32_t popcnt( uint32_t x ) -{ - return __popcnt( x ); -} - -#elif defined( __GNUC__ ) - -uint32_t popcnt( uint32_t x ) -{ - return __builtin_popcount( x ); -} - -#else - -uint32_t popcnt( uint32_t x ) +uint32_t popcnt_generic( uint32_t x ) { int v = 0; while ( x != 0 ) @@ -67,7 +63,16 @@ uint32_t popcnt( uint32_t x ) return v; } +uint32_t popcnt_intrinsic( uint32_t x ) +{ +#if defined ( _MSC_VER ) + return __popcnt( x ); +#else + return __builtin_popcount( x ); #endif +} + +static uint32_t( *popcnt )( uint32_t x ); int32_t clamp( int32_t v, int32_t lo, int32_t hi ) { @@ -514,6 +519,18 @@ private: Mikey::Mikey( uint32_t sampleRate ) : mMikey{ std::make_unique() }, mQueue{ std::make_unique() }, mTick{}, mNextTick{}, mSampleRate{ sampleRate }, mSamplesRemainder{}, mTicksPerSample{ 16000000 / mSampleRate, 16000000 % mSampleRate } { enqueueSampling(); + + //detecting popcnt availability + int info[4]; + cpuid( info, 1 ); + if ( ( info[2] & ( (int)1 << 23 ) ) != 0 ) + { + popcnt = &popcnt_intrinsic; + } + else + { + popcnt = &popcnt_generic; + } } Mikey::~Mikey() From a9afcf873c5cabc7da2a491035f35ae4ed8cf9ff Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 31 Jul 2022 14:05:23 -0500 Subject: [PATCH 276/580] fix ARM build --- src/engine/platform/sound/lynx/Mikey.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/engine/platform/sound/lynx/Mikey.cpp b/src/engine/platform/sound/lynx/Mikey.cpp index 32612960..71818003 100644 --- a/src/engine/platform/sound/lynx/Mikey.cpp +++ b/src/engine/platform/sound/lynx/Mikey.cpp @@ -26,6 +26,11 @@ #include #include +#if defined(i386) || defined(__i386__) || defined(__i386) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) +#define IS_INTEL +#endif + +#ifdef IS_INTEL #if defined ( _MSC_VER ) #include @@ -42,6 +47,7 @@ static void cpuid( int info[4], int infoType ) __cpuid_count( infoType, 0, info[0], info[1], info[2], info[3] ); } +#endif #endif namespace Lynx @@ -63,6 +69,7 @@ uint32_t popcnt_generic( uint32_t x ) return v; } +#ifdef IS_INTEL uint32_t popcnt_intrinsic( uint32_t x ) { #if defined ( _MSC_VER ) @@ -71,6 +78,7 @@ uint32_t popcnt_intrinsic( uint32_t x ) return __builtin_popcount( x ); #endif } +#endif static uint32_t( *popcnt )( uint32_t x ); @@ -521,6 +529,7 @@ Mikey::Mikey( uint32_t sampleRate ) : mMikey{ std::make_unique() }, enqueueSampling(); //detecting popcnt availability +#ifdef IS_INTEL int info[4]; cpuid( info, 1 ); if ( ( info[2] & ( (int)1 << 23 ) ) != 0 ) @@ -531,6 +540,9 @@ Mikey::Mikey( uint32_t sampleRate ) : mMikey{ std::make_unique() }, { popcnt = &popcnt_generic; } +#else + popcnt = &popcnt_generic; +#endif } Mikey::~Mikey() From 5feba3a7167b54bbebb1bba7159dcbda91b41663 Mon Sep 17 00:00:00 2001 From: Waldemar Pawlaszek Date: Sun, 31 Jul 2022 22:26:59 +0200 Subject: [PATCH 277/580] More robust popcnt --- src/engine/platform/sound/lynx/Mikey.cpp | 105 +++++++++++------------ 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/src/engine/platform/sound/lynx/Mikey.cpp b/src/engine/platform/sound/lynx/Mikey.cpp index 71818003..791336c1 100644 --- a/src/engine/platform/sound/lynx/Mikey.cpp +++ b/src/engine/platform/sound/lynx/Mikey.cpp @@ -26,39 +26,11 @@ #include #include -#if defined(i386) || defined(__i386__) || defined(__i386) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) -#define IS_INTEL -#endif +#if defined( _MSC_VER ) -#ifdef IS_INTEL -#if defined ( _MSC_VER ) #include -static void cpuid( int info[4], int infoType ) -{ - __cpuidex( info, infoType, 0 ); -} - -#else -#include - -static void cpuid( int info[4], int infoType ) -{ - __cpuid_count( infoType, 0, info[0], info[1], info[2], info[3] ); -} - -#endif -#endif - -namespace Lynx -{ - -namespace -{ - -static constexpr int64_t CNT_MAX = std::numeric_limits::max() & ~15; - -uint32_t popcnt_generic( uint32_t x ) +static uint32_t popcnt_generic( uint32_t x ) { int v = 0; while ( x != 0 ) @@ -69,18 +41,60 @@ uint32_t popcnt_generic( uint32_t x ) return v; } -#ifdef IS_INTEL -uint32_t popcnt_intrinsic( uint32_t x ) +#if defined( _M_IX86 ) || defined( _M_X64 ) + +static uint32_t popcnt_intrinsic( uint32_t x ) { -#if defined ( _MSC_VER ) return __popcnt( x ); -#else - return __builtin_popcount( x ); -#endif } + +static uint32_t( *popcnt )( uint32_t ); + +//detecting popcnt availability on msvc intel +static void selectPOPCNT() +{ + int info[4]; + __cpuid( info, 1 ); + if ( ( info[2] & ( (int)1 << 23 ) ) != 0 ) + { + popcnt = &popcnt_intrinsic; + } + else + { + popcnt = &popcnt_generic; + } +} + +#else //defined( _M_IX86 ) || defined( _M_X64 ) + +//MSVC non INTEL should use generic implementation +inline void selectPOPCNT() +{ +} + +#define popcnt popcnt_generic + #endif -static uint32_t( *popcnt )( uint32_t x ); +#else //defined( _MSC_VER ) + +//non MVSC should use builtin implementation + +inline void selectPOPCNT() +{ +} + +#define popcnt __builtin_popcount + +#endif + +namespace Lynx +{ + +namespace +{ + +static constexpr int64_t CNT_MAX = std::numeric_limits::max() & ~15; int32_t clamp( int32_t v, int32_t lo, int32_t hi ) { @@ -526,23 +540,8 @@ private: Mikey::Mikey( uint32_t sampleRate ) : mMikey{ std::make_unique() }, mQueue{ std::make_unique() }, mTick{}, mNextTick{}, mSampleRate{ sampleRate }, mSamplesRemainder{}, mTicksPerSample{ 16000000 / mSampleRate, 16000000 % mSampleRate } { + selectPOPCNT(); enqueueSampling(); - - //detecting popcnt availability -#ifdef IS_INTEL - int info[4]; - cpuid( info, 1 ); - if ( ( info[2] & ( (int)1 << 23 ) ) != 0 ) - { - popcnt = &popcnt_intrinsic; - } - else - { - popcnt = &popcnt_generic; - } -#else - popcnt = &popcnt_generic; -#endif } Mikey::~Mikey() From fe07051f8963827568c957d315dba3f26692f528 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 1 Aug 2022 22:51:13 -0500 Subject: [PATCH 278/580] rename Envelope release to Macro release --- src/gui/settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 6582a4e2..2ad3ef23 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1712,7 +1712,7 @@ void FurnaceGUI::drawSettings() { ImGui::Text("%s",SDL_GetScancodeName((SDL_Scancode)i.scan)); ImGui::TableNextColumn(); if (i.val==102) { - snprintf(id,4095,"Envelope release##SNType_%d",i.scan); + snprintf(id,4095,"Macro release##SNType_%d",i.scan); if (ImGui::Button(id)) { noteKeys[i.scan]=0; } From 1f57d09fbf0019f93b0e40acd39607d6747bc5af Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 2 Aug 2022 23:16:42 -0500 Subject: [PATCH 279/580] GUI: display correct OPLL patch names --- src/gui/insEdit.cpp | 162 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 140 insertions(+), 22 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index f0d6d3da..09d6f406 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -43,24 +43,93 @@ const char* fmParamShortNames[3][32]={ {"ALG", "FB", "FMS", "AMS", "A", "D", "D2", "R", "S", "TL", "RS", "ML", "DT", "DT2", "SSG", "AM", "DAM", "DVB", "EGT", "EGS", "KSL", "SUS", "VIB", "WS", "KSR", "DC", "DM", "EGS", "REV", "Fine", "FMS2", "AMS2"} }; -const char* opllInsNames[17]={ - "User", - "Violin", - "Guitar", - "Piano", - "Flute", - "Clarinet", - "Oboe", - "Trumpet", - "Organ", - "Horn", - "Synth", - "Harpsichord", - "Vibraphone", - "Synth Bass", - "Acoustic Bass", - "Electric Guitar", - "Drums" +const char* opllVariants[4]={ + "OPLL", + "YMF281", + "YM2423", + "VRC7" +}; + +const char* opllInsNames[4][17]={ + /* YM2413 */ { + "User", + "Violin", + "Guitar", + "Piano", + "Flute", + "Clarinet", + "Oboe", + "Trumpet", + "Organ", + "Horn", + "Synth", + "Harpsichord", + "Vibraphone", + "Synth Bass", + "Acoustic Bass", + "Electric Guitar", + "Drums" + }, + // help me get the names! + /* YMF281 */ { + "User", + "Name under Register-Wall #1", + "Name under Register-Wall #2", + "Piano", + "Flute", + "Clarinet", + "Name under Register-Wall #6", + "Trumpet", + "Name under Register-Wall #8", + "Name under Register-Wall #9", + "Name under Register-Wall #10", + "Name under Register-Wall #11", + "Name under Register-Wall #12", + "Name under Register-Wall #13", + "Name under Register-Wall #14", + "Name under Register-Wall #15", + "Drums" + }, + // help me get the names! + /* YM2423 */ { + "User", + "Violin", + "What is this", + "Some kind of space sound", + "Voice maybe", + "Clarinet", + "Slap something", + "Trumpet", + "AAAAAA", + "Wow!", + "Synth", + "Synth Key", + "Vibraphone", + "Space Bass", + "Synth Bass", + "Sound like the default Defle patch", + "Drums" + }, + // stolen from FamiTracker + /* VRC7 */ { + "User", + "Bell", + "Guitar", + "Piano", + "Flute", + "Clarinet", + "Rattling Bell", + "Trumpet", + "Reed Organ", + "Soft Bell", + "Xylophone", + "Vibraphone", + "Brass", + "Bass Guitar", + "Synth", + "Chorus", + "Drums" + } }; const char* oplWaveforms[8]={ @@ -1572,10 +1641,59 @@ void FurnaceGUI::drawInsEdit() { ImGui::TableNextColumn(); drawAlgorithm(0,FM_ALGS_2OP_OPL,ImVec2(ImGui::GetContentRegionAvail().x,24.0*dpiScale)); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::BeginCombo("##LLPreset",opllInsNames[ins->fm.opllPreset])) { - for (int i=0; i<17; i++) { - if (ImGui::Selectable(opllInsNames[i])) { - ins->fm.opllPreset=i; + + bool isPresent[4]; + int isPresentCount=0; + memset(isPresent,0,4*sizeof(bool)); + for (int i=0; isong.systemLen; i++) { + if (e->song.system[i]==DIV_SYSTEM_VRC7) { + isPresent[3]=true; + } else if (e->song.system[i]==DIV_SYSTEM_OPLL || e->song.system[i]==DIV_SYSTEM_OPLL_DRUMS) { + isPresent[(e->song.systemFlags[i]>>4)&3]=true; + } + } + if (!isPresent[0] && !isPresent[1] && !isPresent[2] && !isPresent[3]) { + isPresent[0]=true; + } + for (int i=0; i<4; i++) { + if (isPresent[i]) isPresentCount++; + } + int presentWhich=0; + for (int i=0; i<4; i++) { + if (isPresent[i]) { + presentWhich=i; + break; + } + } + + if (ImGui::BeginCombo("##LLPreset",opllInsNames[presentWhich][ins->fm.opllPreset])) { + if (isPresentCount>1) { + if (ImGui::BeginTable("LLPresetList",isPresentCount)) { + ImGui::TableNextRow(ImGuiTableRowFlags_Headers); + for (int i=0; i<4; i++) { + if (!isPresent[i]) continue; + ImGui::TableNextColumn(); + ImGui::Text("%s name",opllVariants[i]); + } + for (int i=0; i<17; i++) { + ImGui::TableNextRow(); + for (int j=0; j<4; j++) { + if (!isPresent[j]) continue; + ImGui::TableNextColumn(); + ImGui::PushID(j*17+i); + if (ImGui::Selectable(opllInsNames[j][i])) { + ins->fm.opllPreset=i; + } + ImGui::PopID(); + } + } + ImGui::EndTable(); + } + } else { + for (int i=0; i<17; i++) { + if (ImGui::Selectable(opllInsNames[presentWhich][i])) { + ins->fm.opllPreset=i; + } } } ImGui::EndCombo(); From d204ae868a66d288128ed80f76f5eeaabd8f496a Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Wed, 3 Aug 2022 14:03:08 +0900 Subject: [PATCH 280/580] Tweaked versions of the instruments These were originally made by me, but I tweaked them a little. --- instruments/FM/guitar/Acoustic Nylon Guitar.dmp | Bin 51 -> 51 bytes instruments/FM/guitar/Acoustic Steel Guitar.dmp | Bin 51 -> 51 bytes .../FM/guitar/Electric Guitar Harmonics.dmp | Bin 51 -> 51 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/instruments/FM/guitar/Acoustic Nylon Guitar.dmp b/instruments/FM/guitar/Acoustic Nylon Guitar.dmp index b79addcf1c60e804b0f268207fc6e4330fcb786e..35fac263c8a2cec190cd2aedd95271200427ca98 100644 GIT binary patch literal 51 wcmd;PVq{=oV&Kq~l;P)RU|<7s)a2Rufr3CLtA;!WKMR=2$RN+f&k1G%05H%2xBvhE literal 51 wcmd;PVq{=oV&E{6l;P)RU|fr3CLtA;!SKMR=2$RN+f&k1G%052T@pa1{> diff --git a/instruments/FM/guitar/Acoustic Steel Guitar.dmp b/instruments/FM/guitar/Acoustic Steel Guitar.dmp index 64e77b9c8b089a462abbbd0a8875b1406e6cfc0e..295a29d6e38c3e6a54124bdd7f23fb88bfe2b56b 100644 GIT binary patch literal 51 wcmd;PVq{=oV&G7hl;P)RU|?flVAPOjnamRM?EEYcQ3iP~eoinG04;O@m;e9( literal 51 wcmd;PVq{=oV&G7hl;P)RU|?ooVAPOjnamRMEc`4GQ3iP~eoinG04z}fi2wiq diff --git a/instruments/FM/guitar/Electric Guitar Harmonics.dmp b/instruments/FM/guitar/Electric Guitar Harmonics.dmp index 07f2103287a0c7b93f7bfbb4c403bf4c69ee084e..14a14b1184c4b47395c645ad75f3607714bbe17e 100644 GIT binary patch literal 51 ycmW;CF%AGA2mrAIi5eMT(vkT8Pnx)OsH-p(%{md#!FJ&S4dyMvK37%`|KR~B?g5Da literal 51 ycmd;PVq{=vVqg-G7w6|^U|?ooU=fpN;ARBU3=ABK@(lby8i<$} Date: Wed, 3 Aug 2022 00:05:58 -0500 Subject: [PATCH 281/580] SoundUnit: add 64K chip revision --- src/engine/platform/sound/su.cpp | 16 ++++++++-------- src/engine/platform/sound/su.h | 7 +++---- src/engine/platform/su.cpp | 11 ++++++++--- src/engine/platform/su.h | 1 + src/gui/sysConf.cpp | 17 +++++++++++++++++ 5 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/engine/platform/sound/su.cpp b/src/engine/platform/sound/su.cpp index b7fa731a..0dd6dcdc 100644 --- a/src/engine/platform/sound/su.cpp +++ b/src/engine/platform/sound/su.cpp @@ -54,7 +54,7 @@ void SoundUnit::NextSample(short* l, short* r) { chan[i].pcmpos=chan[i].pcmrst; } } - chan[i].pcmpos&=(SOUNDCHIP_PCM_SIZE-1); + chan[i].pcmpos&=(pcmSize-1); } else if (chan[i].flags.pcmloop) { chan[i].pcmpos=chan[i].pcmrst; } @@ -228,9 +228,10 @@ void SoundUnit::NextSample(short* l, short* r) { *r=minval(32767,maxval(-32767,tnsR)); } -void SoundUnit::Init() { +void SoundUnit::Init(int sampleMemSize) { + pcmSize=sampleMemSize; Reset(); - memset(pcm,0,SOUNDCHIP_PCM_SIZE); + memset(pcm,0,pcmSize); for (int i=0; i<256; i++) { SCsine[i]=sin((i/128.0f)*M_PI)*127; SCtriangle[i]=(i>127)?(255-i):(i); @@ -242,9 +243,6 @@ void SoundUnit::Init() { SCpantabR[128+i]=i-1; } SCpantabR[128]=0; - for (int i=0; i<8; i++) { - muted[i]=false; - } } void SoundUnit::Reset() { @@ -282,6 +280,8 @@ void SoundUnit::Write(unsigned char addr, unsigned char data) { } SoundUnit::SoundUnit() { - Init(); - memset(pcm,0,SOUNDCHIP_PCM_SIZE); + Init(65536); // default + for (int i=0; i<8; i++) { + muted[i]=false; + } } diff --git a/src/engine/platform/sound/su.h b/src/engine/platform/sound/su.h index 3152e856..3b125f03 100644 --- a/src/engine/platform/sound/su.h +++ b/src/engine/platform/sound/su.h @@ -3,8 +3,6 @@ #include #include -#define SOUNDCHIP_PCM_SIZE 8192 - class SoundUnit { signed char SCsine[256]; signed char SCtriangle[256]; @@ -24,6 +22,7 @@ class SoundUnit { int tnsL, tnsR; unsigned short oldfreq[8]; unsigned short oldflags[8]; + unsigned int pcmSize; public: unsigned short resetfreq[8]; unsigned short voldcycles[8]; @@ -84,7 +83,7 @@ class SoundUnit { unsigned short wc; unsigned short restimer; } chan[8]; - signed char pcm[SOUNDCHIP_PCM_SIZE]; + signed char pcm[65536]; bool muted[8]; void Write(unsigned char addr, unsigned char data); void NextSample(short* l, short* r); @@ -94,7 +93,7 @@ class SoundUnit { if (ret>32767) ret=32767; return ret; } - void Init(); + void Init(int sampleMemSize=8192); void Reset(); SoundUnit(); }; diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index c2cd6b25..2d1a3893 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -555,6 +555,11 @@ void DivPlatformSoundUnit::setFlags(unsigned int flags) { for (int i=0; i<8; i++) { oscBuf[i]->rate=rate; } + + sampleMemSize=flags&16; + + su->Init(sampleMemSize?65536:8192); + renderSamples(); } void DivPlatformSoundUnit::poke(unsigned int addr, unsigned short val) { @@ -570,7 +575,7 @@ const void* DivPlatformSoundUnit::getSampleMem(int index) { } size_t DivPlatformSoundUnit::getSampleMemCapacity(int index) { - return (index==0)?8192:0; + return (index==0)?(sampleMemSize?65536:8192):0; } size_t DivPlatformSoundUnit::getSampleMemUsage(int index) { @@ -583,6 +588,7 @@ void DivPlatformSoundUnit::renderSamples() { size_t memPos=0; for (int i=0; isong.sampleLen; i++) { DivSample* s=parent->song.sample[i]; + if (s->data8==NULL) continue; int paddedLen=s->samples; if (memPos>=getSampleMemCapacity(0)) { logW("out of PCM memory for sample %d!",i); @@ -609,9 +615,8 @@ int DivPlatformSoundUnit::init(DivEngine* p, int channels, int sugRate, unsigned isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } - setFlags(flags); su=new SoundUnit(); - su->Init(); + setFlags(flags); reset(); return 6; } diff --git a/src/engine/platform/su.h b/src/engine/platform/su.h index 1d39854f..e882c398 100644 --- a/src/engine/platform/su.h +++ b/src/engine/platform/su.h @@ -96,6 +96,7 @@ class DivPlatformSoundUnit: public DivDispatch { }; std::queue writes; unsigned char lastPan; + bool sampleMemSize; int cycles, curChan, delay; short tempL; diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 36531242..7c624f30 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -120,6 +120,23 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } break; } + case DIV_SYSTEM_SOUND_UNIT: { + ImGui::Text("CPU rate:"); + if (ImGui::RadioButton("6.18MHz (NTSC)",(flags&15)==0)) { + copyOfFlags=(flags&(~15))|0; + } + if (ImGui::RadioButton("5.95MHz (PAL)",(flags&15)==1)) { + copyOfFlags=(flags&(~15))|1; + } + ImGui::Text("Chip revision (sample memory):"); + if (ImGui::RadioButton("A/B/E (8K)",(flags&16)==0)) { + copyOfFlags=(flags&(~16))|0; + } + if (ImGui::RadioButton("D/F (64K)",(flags&16)==16)) { + copyOfFlags=(flags&(~16))|16; + } + break; + } case DIV_SYSTEM_GB: { bool antiClick=flags&8; if (ImGui::Checkbox("Disable anti-click",&antiClick)) { From 034b4fd4f607f96e08c849b296053bb6b7a9baf5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 00:10:32 -0500 Subject: [PATCH 282/580] GUI: YMF281 patch names thanks nicco1690! --- src/gui/insEdit.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 09d6f406..08b9fc57 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -70,24 +70,24 @@ const char* opllInsNames[4][17]={ "Electric Guitar", "Drums" }, - // help me get the names! + /* YMF281 */ { "User", - "Name under Register-Wall #1", - "Name under Register-Wall #2", - "Piano", - "Flute", + "Electric String", + "Bow wow", + "Electric Guitar", + "Organ", "Clarinet", - "Name under Register-Wall #6", + "Saxophone", "Trumpet", - "Name under Register-Wall #8", - "Name under Register-Wall #9", - "Name under Register-Wall #10", - "Name under Register-Wall #11", - "Name under Register-Wall #12", - "Name under Register-Wall #13", - "Name under Register-Wall #14", - "Name under Register-Wall #15", + "Street Organ", + "Synth Brass", + "Electric Piano", + "Bass", + "Vibraphone", + "Chime", + "Tom Tom II", + "Noise", "Drums" }, // help me get the names! From 717d99d65058495f38cf76ca7c754732bd9bc46d Mon Sep 17 00:00:00 2001 From: brickblock369 <59150779+brickblock369@users.noreply.github.com> Date: Wed, 3 Aug 2022 21:25:17 +0900 Subject: [PATCH 283/580] Two new OPL instruments --- .../OPL/Low Overdriven Guitar (Sine Carrier).fui | Bin 0 -> 1697 bytes .../Low Overdriven Guitar (Square Carrier).fui | Bin 0 -> 1699 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/OPL/Low Overdriven Guitar (Sine Carrier).fui create mode 100644 instruments/OPL/Low Overdriven Guitar (Square Carrier).fui diff --git a/instruments/OPL/Low Overdriven Guitar (Sine Carrier).fui b/instruments/OPL/Low Overdriven Guitar (Sine Carrier).fui new file mode 100644 index 0000000000000000000000000000000000000000..9fae9177ba4ca83fca5f3e3d7b3be6d46862832f GIT binary patch literal 1697 zcmdOOD=o@POioqE%quP_($h_6U|>)HVi@rB3l6DdV_-;U;A8N~FIVs{OD#$%$}CIG zQ*bZMEJ-X<&Z;Q zAg7QE(9I&mhuA}&jfBibmmdjsq5FBb^9iL>O8rmBe3<;GJ*Xi73l|0k2et)l4a^K6 fX$A#mgg6cssxhSVa2QLZFy4ZQpPzvNgmD1?J^VSR literal 0 HcmV?d00001 diff --git a/instruments/OPL/Low Overdriven Guitar (Square Carrier).fui b/instruments/OPL/Low Overdriven Guitar (Square Carrier).fui new file mode 100644 index 0000000000000000000000000000000000000000..dfb5eba1eb3bf90aa25522af55374d259e28f6d4 GIT binary patch literal 1699 zcmdOOD=o@POioqE%quP_($h_6U|>)HVi@rB3l6DfV_-;U;A8N~FIVs{OD#$%$}CIG zQ*bZMEJ-X<&8>8h~r?P8bdk{hp|Ko<1L8z`572M7#9El3xPU| literal 0 HcmV?d00001 From 89042f61eb57e14c6b1f966f47088e2dd0f7dc31 Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 3 Aug 2022 21:56:22 +0900 Subject: [PATCH 284/580] Fix link for vgsound_emu (moved into https://gitlab.com/cam900/vgsound_emu) --- src/engine/platform/sound/k005289/k005289.cpp | 2 +- src/engine/platform/sound/k005289/k005289.hpp | 2 +- src/engine/platform/sound/n163/n163.cpp | 2 +- src/engine/platform/sound/n163/n163.hpp | 2 +- src/engine/platform/sound/oki/msm6295.cpp | 2 +- src/engine/platform/sound/oki/msm6295.hpp | 2 +- src/engine/platform/sound/oki/util.hpp | 2 +- src/engine/platform/sound/oki/vox.hpp | 2 +- src/engine/platform/sound/scc/scc.cpp | 2 +- src/engine/platform/sound/scc/scc.hpp | 2 +- src/engine/platform/sound/vrcvi/vrcvi.cpp | 2 +- src/engine/platform/sound/vrcvi/vrcvi.hpp | 2 +- src/engine/platform/sound/x1_010/x1_010.cpp | 2 +- src/engine/platform/sound/x1_010/x1_010.hpp | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/engine/platform/sound/k005289/k005289.cpp b/src/engine/platform/sound/k005289/k005289.cpp index 8b21245a..c9bdf83a 100644 --- a/src/engine/platform/sound/k005289/k005289.cpp +++ b/src/engine/platform/sound/k005289/k005289.cpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900 diff --git a/src/engine/platform/sound/k005289/k005289.hpp b/src/engine/platform/sound/k005289/k005289.hpp index d042e1d1..575a98b8 100644 --- a/src/engine/platform/sound/k005289/k005289.hpp +++ b/src/engine/platform/sound/k005289/k005289.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900 diff --git a/src/engine/platform/sound/n163/n163.cpp b/src/engine/platform/sound/n163/n163.cpp index 5d9deab1..3fd30bc4 100644 --- a/src/engine/platform/sound/n163/n163.cpp +++ b/src/engine/platform/sound/n163/n163.cpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900, tildearrow diff --git a/src/engine/platform/sound/n163/n163.hpp b/src/engine/platform/sound/n163/n163.hpp index 800d1ea1..317a33b4 100644 --- a/src/engine/platform/sound/n163/n163.hpp +++ b/src/engine/platform/sound/n163/n163.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900, tildearrow diff --git a/src/engine/platform/sound/oki/msm6295.cpp b/src/engine/platform/sound/oki/msm6295.cpp index 1b7fe568..e7f39d27 100644 --- a/src/engine/platform/sound/oki/msm6295.cpp +++ b/src/engine/platform/sound/oki/msm6295.cpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: tildearrow diff --git a/src/engine/platform/sound/oki/msm6295.hpp b/src/engine/platform/sound/oki/msm6295.hpp index 5203f434..ca8b81d4 100644 --- a/src/engine/platform/sound/oki/msm6295.hpp +++ b/src/engine/platform/sound/oki/msm6295.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: tildearrow diff --git a/src/engine/platform/sound/oki/util.hpp b/src/engine/platform/sound/oki/util.hpp index 731772ac..b9c50d7b 100644 --- a/src/engine/platform/sound/oki/util.hpp +++ b/src/engine/platform/sound/oki/util.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: tildearrow diff --git a/src/engine/platform/sound/oki/vox.hpp b/src/engine/platform/sound/oki/vox.hpp index c085c0b7..23fbfd78 100644 --- a/src/engine/platform/sound/oki/vox.hpp +++ b/src/engine/platform/sound/oki/vox.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: tildearrow diff --git a/src/engine/platform/sound/scc/scc.cpp b/src/engine/platform/sound/scc/scc.cpp index 3e230447..e2ebcf20 100644 --- a/src/engine/platform/sound/scc/scc.cpp +++ b/src/engine/platform/sound/scc/scc.cpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Contributor(s): Natt Akuma, James Alan Nguyen, Laurens Holst diff --git a/src/engine/platform/sound/scc/scc.hpp b/src/engine/platform/sound/scc/scc.hpp index db99ec87..24a365cc 100644 --- a/src/engine/platform/sound/scc/scc.hpp +++ b/src/engine/platform/sound/scc/scc.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Contributor(s): Natt Akuma, James Alan Nguyen, Laurens Holst diff --git a/src/engine/platform/sound/vrcvi/vrcvi.cpp b/src/engine/platform/sound/vrcvi/vrcvi.cpp index 87ff05d7..a811c2f4 100644 --- a/src/engine/platform/sound/vrcvi/vrcvi.cpp +++ b/src/engine/platform/sound/vrcvi/vrcvi.cpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900, tildearrow diff --git a/src/engine/platform/sound/vrcvi/vrcvi.hpp b/src/engine/platform/sound/vrcvi/vrcvi.hpp index 790061c8..4a80f757 100644 --- a/src/engine/platform/sound/vrcvi/vrcvi.hpp +++ b/src/engine/platform/sound/vrcvi/vrcvi.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900, tildearrow diff --git a/src/engine/platform/sound/x1_010/x1_010.cpp b/src/engine/platform/sound/x1_010/x1_010.cpp index c047b854..6b0041ba 100644 --- a/src/engine/platform/sound/x1_010/x1_010.cpp +++ b/src/engine/platform/sound/x1_010/x1_010.cpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900, tildearrow diff --git a/src/engine/platform/sound/x1_010/x1_010.hpp b/src/engine/platform/sound/x1_010/x1_010.hpp index 3f5d9d4e..b533b66d 100644 --- a/src/engine/platform/sound/x1_010/x1_010.hpp +++ b/src/engine/platform/sound/x1_010/x1_010.hpp @@ -1,6 +1,6 @@ /* License: BSD-3-Clause - see https://github.com/cam900/vgsound_emu/blob/vgsound_emu_v1/LICENSE for more details + see https://gitlab.com/cam900/vgsound_emu/-/blob/V1/LICENSE for more details Copyright holder(s): cam900 Modifiers and Contributors for Furnace: cam900, tildearrow From 0183c5d9ff134700d65c68d4193986c0f36fe429 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 01:13:59 -0500 Subject: [PATCH 285/580] GUI: remove one new line --- src/gui/insEdit.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 08b9fc57..958f662d 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -70,7 +70,6 @@ const char* opllInsNames[4][17]={ "Electric Guitar", "Drums" }, - /* YMF281 */ { "User", "Electric String", From 46425655ad548ad6cfe2f31cfdaa455a8efad7c7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 14:38:39 -0500 Subject: [PATCH 286/580] YM2612: fix possible ExtCh DualPCM muting issue --- src/engine/platform/genesisext.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index bfe771a6..1f320dd3 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -24,6 +24,8 @@ #define CHIP_FREQBASE fmFreqBase #define CHIP_DIVIDER fmDivBase +#define IS_REALLY_MUTED(x) (isMuted[x] && (x<5 || !softPCM || (isMuted[5] && isMuted[6]))) + int DivPlatformGenesisExt::dispatch(DivCommand c) { if (c.chan<2) { return DivPlatformGenesis::dispatch(c); @@ -542,7 +544,7 @@ void DivPlatformGenesisExt::forceIns() { rWrite(baseAddr+ADDR_SSG,op.ssgEnv&15); } rWrite(chanOffs[i]+ADDR_FB_ALG,(chan[i].state.alg&7)|(chan[i].state.fb<<3)); - rWrite(chanOffs[i]+ADDR_LRAF,(isMuted[i]?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); + rWrite(chanOffs[i]+ADDR_LRAF,(IS_REALLY_MUTED(i)?0:(chan[i].pan<<6))|(chan[i].state.fms&7)|((chan[i].state.ams&3)<<4)); if (chan[i].active) { chan[i].keyOn=true; chan[i].freqChanged=true; From 53120edd9985a1a633b5b0e052cced711c254f89 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 14:41:23 -0500 Subject: [PATCH 287/580] disable MIDI clock --- src/engine/playback.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 662e2ddb..dd58b0d1 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -914,7 +914,7 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { // MIDI clock if (output) if (!skipping && output->midiOut!=NULL) { - output->midiOut->send(TAMidiMessage(TA_MIDI_CLOCK,0,0)); + //output->midiOut->send(TAMidiMessage(TA_MIDI_CLOCK,0,0)); } while (!pendingNotes.empty()) { From 52c3b1037392ea92ef55236f09fc73aae5697d0c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 16:21:30 -0500 Subject: [PATCH 288/580] add getWantPreNote() currently only C64 system requires this --- src/engine/dispatch.h | 6 ++++++ src/engine/platform/abstract.cpp | 4 ++++ src/engine/platform/c64.cpp | 4 ++++ src/engine/platform/c64.h | 1 + src/engine/playback.cpp | 4 +++- 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index 03bc23ca..f1418e48 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -399,6 +399,12 @@ class DivDispatch { */ virtual bool getDCOffRequired(); + /** + * check whether PRE_NOTE command is desired. + * @return truth. + */ + virtual bool getWantPreNote(); + /** * get a description of a dispatch-specific effect. * @param effect the effect. diff --git a/src/engine/platform/abstract.cpp b/src/engine/platform/abstract.cpp index 54366e1b..5b732e7e 100644 --- a/src/engine/platform/abstract.cpp +++ b/src/engine/platform/abstract.cpp @@ -90,6 +90,10 @@ bool DivDispatch::getDCOffRequired() { return false; } +bool DivDispatch::getWantPreNote() { + return false; +} + const char* DivDispatch::getEffectName(unsigned char effect) { return NULL; } diff --git a/src/engine/platform/c64.cpp b/src/engine/platform/c64.cpp index 640df54e..9049ffec 100644 --- a/src/engine/platform/c64.cpp +++ b/src/engine/platform/c64.cpp @@ -513,6 +513,10 @@ bool DivPlatformC64::getDCOffRequired() { return true; } +bool DivPlatformC64::getWantPreNote() { + return true; +} + void DivPlatformC64::reset() { for (int i=0; i<3; i++) { chan[i]=DivPlatformC64::Channel(); diff --git a/src/engine/platform/c64.h b/src/engine/platform/c64.h index d9dc0804..ae1034a8 100644 --- a/src/engine/platform/c64.h +++ b/src/engine/platform/c64.h @@ -97,6 +97,7 @@ class DivPlatformC64: public DivDispatch { void setFlags(unsigned int flags); void notifyInsChange(int ins); bool getDCOffRequired(); + bool getWantPreNote(); DivMacroInt* getChanMacroInt(int ch); void notifyInsDeletion(void* ins); void poke(unsigned int addr, unsigned short val); diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index dd58b0d1..6c437657 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -866,7 +866,9 @@ void DivEngine::nextRow() { if (!(pat->data[curRow][0]==0 && pat->data[curRow][1]==0)) { if (pat->data[curRow][0]!=100 && pat->data[curRow][0]!=101 && pat->data[curRow][0]!=102) { if (!chan[i].legato) { - dispatchCmd(DivCommand(DIV_CMD_PRE_NOTE,i,ticks)); + if (disCont[dispatchOfChan[i]].dispatch!=NULL) { + if (disCont[dispatchOfChan[i]].dispatch->getWantPreNote()) dispatchCmd(DivCommand(DIV_CMD_PRE_NOTE,i,ticks)); + } if (song.oneTickCut) { bool doPrepareCut=true; From fce03717563eaf4fced702c0684b8af810c47f3a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 17:21:47 -0500 Subject: [PATCH 289/580] add "hint" commands --- src/engine/dispatch.h | 8 ++++++++ src/engine/playback.cpp | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index f1418e48..86b2e229 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -55,6 +55,14 @@ enum DivDispatchCmds { DIV_CMD_PRE_PORTA, // (inPorta, isPortaOrSlide) DIV_CMD_PRE_NOTE, // used in C64 (note) + // these will be used in ROM export. + // do NOT implement! + DIV_CMD_HINT_VIBRATO, // (speed, depth) + DIV_CMD_HINT_VIBRATO_SHAPE, // (shape) + DIV_CMD_HINT_PITCH, // (pitch) + DIV_CMD_HINT_ARPEGGIO, // (note1, note2) + DIV_CMD_HINT_VOL_SLIDE, // (amount, oneTick) + DIV_CMD_SAMPLE_MODE, // (enabled) DIV_CMD_SAMPLE_FREQ, // (frequency) DIV_CMD_SAMPLE_BANK, // (bank) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 6c437657..b089b6f3 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -57,6 +57,12 @@ const char* cmdName[]={ "PRE_PORTA", "PRE_NOTE", + "HINT_VIBRATO", + "HINT_VIBRATO_SHAPE", + "HINT_PITCH", + "HINT_ARPEGGIO", + "HINT_VOL_SLIDE", + "SAMPLE_MODE", "SAMPLE_FREQ", "SAMPLE_BANK", From eafbf24290567d9ba3f0e0cd6da0c2a5fba112e3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 17:31:00 -0500 Subject: [PATCH 290/580] GUI: YM2423 patch names thanks freq-mod! --- src/gui/insEdit.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 958f662d..f991b9e2 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -89,24 +89,23 @@ const char* opllInsNames[4][17]={ "Noise", "Drums" }, - // help me get the names! /* YM2423 */ { "User", - "Violin", - "What is this", - "Some kind of space sound", - "Voice maybe", - "Clarinet", - "Slap something", + "Strings", + "Guitar", + "Electric Guitar", + "Electric Piano", + "Flute", + "Marimba", "Trumpet", - "AAAAAA", - "Wow!", - "Synth", - "Synth Key", + "Harmonica", + "Tuba", + "Synth Brass", + "Short Saw", "Vibraphone", - "Space Bass", + "Electric Guitar 2", "Synth Bass", - "Sound like the default Defle patch", + "Sitar", "Drums" }, // stolen from FamiTracker From 7ec4f7cb9e51c7016a753447d2b92ea7e9e8492a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 18:44:45 -0500 Subject: [PATCH 291/580] VGM export: add option to insert pattern change hi nts --- src/engine/engine.h | 4 +++- src/engine/vgmOps.cpp | 28 +++++++++++++++++++++++++++- src/gui/gui.cpp | 19 ++++++++++++++++++- src/gui/gui.h | 2 +- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 3030cfad..8fd56ff9 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -472,7 +472,9 @@ class DivEngine { // specify system to build ROM for. SafeWriter* buildROM(int sys); // dump to VGM. - SafeWriter* saveVGM(bool* sysToExport=NULL, bool loop=true, int version=0x171); + SafeWriter* saveVGM(bool* sysToExport=NULL, bool loop=true, int version=0x171, bool patternHints=false); + // dump command stream. + SafeWriter* saveCommand(bool binary=false); // export to an audio file bool saveAudio(const char* path, int loops, DivAudioExportModes mode, double fadeOutTime=0.0); // wait for audio export to finish diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index a500b484..15de0156 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -802,7 +802,7 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write } } -SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { +SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool patternHints) { if (version<0x150) { lastError="VGM version is too low"; return NULL; @@ -1795,6 +1795,12 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { playSub(false); size_t tickCount=0; bool writeLoop=false; + int ord=-1; + int exportChans=0; + for (int i=0; iwriteC(0x67); + w->writeC(0x66); + w->writeC(0xfe); + w->writeI(3+exportChans); + w->writeC(0x01); + w->writeC(prevOrder); + w->writeC(prevRow); + for (int i=0; iwriteC(curSubSong->orders.ord[i][prevOrder]); + } + } + } } // get register dumps for (int i=0; isong.systemLen; i++) { @@ -3468,7 +3484,7 @@ bool FurnaceGUI::loop() { } break; case GUI_FILE_EXPORT_VGM: { - SafeWriter* w=e->saveVGM(willExport,vgmExportLoop,vgmExportVersion); + SafeWriter* w=e->saveVGM(willExport,vgmExportLoop,vgmExportVersion,vgmExportPatternHints); if (w!=NULL) { FILE* f=ps_fopen(copyOfName.c_str(),"wb"); if (f!=NULL) { @@ -4431,6 +4447,7 @@ FurnaceGUI::FurnaceGUI(): displayError(false), displayExporting(false), vgmExportLoop(true), + vgmExportPatternHints(false), wantCaptureKeyboard(false), oldWantCaptureKeyboard(false), displayMacroMenu(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 30113953..cb61d48d 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -952,7 +952,7 @@ class FurnaceGUI { String mmlString[32]; String mmlStringW; - bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; + bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints, wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; bool displayNew, fullScreen, preserveChanPos, wantScrollList, noteInputPoly; bool displayPendingIns, pendingInsSingle; bool willExport[32]; From a0d10aa60be74a54c27e48ca7b3ed3d7027947c6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 3 Aug 2022 19:17:18 -0500 Subject: [PATCH 292/580] Game Boy: implement anti-click --- src/engine/platform/gb.cpp | 19 +++++++++++++++++-- src/engine/platform/gb.h | 4 ++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 2b7dcf6d..4d10d7d2 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -97,10 +97,11 @@ void DivPlatformGB::acquire(short* bufL, short* bufR, size_t start, size_t len) void DivPlatformGB::updateWave() { rWrite(0x1a,0); for (int i=0; i<16; i++) { - int nibble1=15-ws.output[i<<1]; - int nibble2=15-ws.output[1+(i<<1)]; + int nibble1=15-ws.output[((i<<1)+antiClickWavePos)&31]; + int nibble2=15-ws.output[((1+(i<<1))+antiClickWavePos)&31]; rWrite(0x30+i,(nibble1<<4)|nibble2); } + antiClickWavePos&=31; } static unsigned char chanMuteMask[4]={ @@ -151,6 +152,12 @@ static unsigned char noiseTable[256]={ }; void DivPlatformGB::tick(bool sysTick) { + if (antiClickEnabled && sysTick && chan[2].freq>0) { + antiClickPeriodCount+=((chipClock>>1)/MAX(parent->getCurHz(),1.0f)); + antiClickWavePos+=antiClickPeriodCount/chan[2].freq; + antiClickPeriodCount%=chan[2].freq; + } + for (int i=0; i<4; i++) { chan[i].std.next(); if (chan[i].std.arp.had) { @@ -471,6 +478,9 @@ void DivPlatformGB::reset() { lastPan=0xff; immWrite(0x25,procMute()); immWrite(0x24,0x77); + + antiClickPeriodCount=0; + antiClickWavePos=0; } bool DivPlatformGB::isStereo() { @@ -507,6 +517,10 @@ void DivPlatformGB::poke(std::vector& wlist) { for (DivRegWrite& i: wlist) immWrite(i.addr,i.val); } +void DivPlatformGB::setFlags(unsigned int flags) { + antiClickEnabled=!(flags&8); +} + int DivPlatformGB::init(DivEngine* p, int channels, int sugRate, unsigned int flags) { chipClock=4194304; rate=chipClock/16; @@ -519,6 +533,7 @@ int DivPlatformGB::init(DivEngine* p, int channels, int sugRate, unsigned int fl dumpWrites=false; skipRegisterWrites=false; gb=new GB_gameboy_t; + setFlags(flags); reset(); return 4; } diff --git a/src/engine/platform/gb.h b/src/engine/platform/gb.h index fe2f6e51..b00458c2 100644 --- a/src/engine/platform/gb.h +++ b/src/engine/platform/gb.h @@ -59,9 +59,12 @@ class DivPlatformGB: public DivDispatch { Channel chan[4]; DivDispatchOscBuffer* oscBuf[4]; bool isMuted[4]; + bool antiClickEnabled; unsigned char lastPan; DivWaveSynth ws; + int antiClickPeriodCount, antiClickWavePos; + GB_gameboy_t* gb; unsigned char regPool[128]; @@ -88,6 +91,7 @@ class DivPlatformGB: public DivDispatch { void poke(std::vector& wlist); const char** getRegisterSheet(); const char* getEffectName(unsigned char effect); + void setFlags(unsigned int flags); int init(DivEngine* parent, int channels, int sugRate, unsigned int flags); void quit(); ~DivPlatformGB(); From d54d853ff83c14994151619b41f696a777b909e5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 4 Aug 2022 00:51:47 -0500 Subject: [PATCH 293/580] add a command stream dump option --- src/engine/engine.cpp | 106 ++++++++++++++++++++++++++++++++++++++ src/engine/engine.h | 2 + src/engine/safeWriter.cpp | 3 ++ src/engine/safeWriter.h | 1 + src/gui/gui.cpp | 65 ++++++++++++++++++++++- src/gui/gui.h | 8 ++- 6 files changed, 182 insertions(+), 3 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 2a000476..9b532c0b 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -17,6 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "dispatch.h" #define _USE_MATH_DEFINES #include "engine.h" #include "instrument.h" @@ -234,6 +235,111 @@ double DivEngine::benchmarkSeek() { return tAvg; } +SafeWriter* DivEngine::saveCommand(bool binary) { + logI("implement! %d",binary); + stop(); + repeatPattern=false; + setOrder(0); + BUSY_BEGIN_SOFT; + // determine loop point + int loopOrder=0; + int loopRow=0; + int loopEnd=0; + walkSong(loopOrder,loopRow,loopEnd); + logI("loop point: %d %d",loopOrder,loopRow); + + SafeWriter* w=new SafeWriter; + w->init(); + + // write header + w->writeText("# Furnace Command Stream\n\n"); + + w->writeText("[Information]\n"); + w->writeText(fmt::sprintf("name: %s\n",song.name)); + w->writeText(fmt::sprintf("author: %s\n",song.author)); + w->writeText(fmt::sprintf("category: %s\n",song.category)); + w->writeText(fmt::sprintf("system: %s\n",song.systemName)); + + w->writeText("\n"); + + w->writeText("[SubSongInformation]\n"); + w->writeText(fmt::sprintf("name: %s\n",curSubSong->name)); + w->writeText(fmt::sprintf("tickRate: %f\n",curSubSong->hz)); + + w->writeText("\n"); + + w->writeText("[SysDefinition]\n"); + // TODO + + w->writeText("\n"); + + // play the song ourselves + bool done=false; + playSub(false); + + w->writeText("[Stream]\n"); + int tick=0; + bool oldCmdStreamEnabled=cmdStreamEnabled; + cmdStreamEnabled=true; + double curDivider=divider; + while (!done) { + if (nextTick(false,true) || !playing) { + done=true; + } + // get command stream + bool wroteTick=false; + if (curDivider!=divider) { + curDivider=divider; + if (!wroteTick) { + wroteTick=true; + w->writeText(fmt::sprintf(">> TICK %d\n",tick)); + } + w->writeText(fmt::sprintf(">> SET_RATE %f\n",curDivider)); + } + for (DivCommand& i: cmdStream) { + switch (i.cmd) { + // strip away hinted/useless commands + case DIV_ALWAYS_SET_VOLUME: + break; + case DIV_CMD_GET_VOLUME: + break; + case DIV_CMD_VOLUME: + break; + case DIV_CMD_NOTE_PORTA: + break; + case DIV_CMD_LEGATO: + break; + case DIV_CMD_PITCH: + break; + default: + if (!wroteTick) { + wroteTick=true; + w->writeText(fmt::sprintf(">> TICK %d\n",tick)); + } + w->writeText(fmt::sprintf(" %d: %s %d %d\n",i.chan,cmdName[i.cmd],i.value,i.value2)); + break; + } + } + cmdStream.clear(); + tick++; + } + cmdStreamEnabled=oldCmdStreamEnabled; + + if (!playing) { + w->writeText(">> END\n"); + } else { + w->writeText(">> LOOP 0\n"); + } + + remainingLoops=-1; + playing=false; + freelance=false; + extValuePresent=false; + BUSY_END; + + return w; +} + void _runExportThread(DivEngine* caller) { caller->runExportThread(); } diff --git a/src/engine/engine.h b/src/engine/engine.h index 8fd56ff9..6f969efc 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -280,6 +280,8 @@ enum DivChanTypes { DIV_CH_OP=5 }; +extern const char* cmdName[]; + class DivEngine { DivDispatchContainer disCont[32]; TAAudio* output; diff --git a/src/engine/safeWriter.cpp b/src/engine/safeWriter.cpp index f29800a4..e6138093 100644 --- a/src/engine/safeWriter.cpp +++ b/src/engine/safeWriter.cpp @@ -120,6 +120,9 @@ int SafeWriter::writeWString(WString val, bool pascal) { return 2+val.size()*2; } } +int SafeWriter::writeText(String val) { + return write(val.c_str(),val.size()); +} void SafeWriter::init() { if (operative) return; diff --git a/src/engine/safeWriter.h b/src/engine/safeWriter.h index 9072c61d..414417fd 100644 --- a/src/engine/safeWriter.h +++ b/src/engine/safeWriter.h @@ -57,6 +57,7 @@ class SafeWriter { int writeD_BE(double val); int writeWString(WString val, bool pascal); int writeString(String val, bool pascal); + int writeText(String val); void init(); SafeReader* toReader(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index c296ab2c..28edd9e3 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1401,6 +1401,17 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { dpiScale ); break; + case GUI_FILE_EXPORT_CMDSTREAM: + if (!dirExists(workingDirROMExport)) workingDirROMExport=getHomeDir(); + hasOpened=fileDialog->openSave( + "Export Command Stream", + {"text file", "*.txt", + "binary file", "*.bin"}, + "text file{.txt},binary file{.bin}", + workingDirROMExport, + dpiScale + ); + break; case GUI_FILE_EXPORT_ROM: showError("Coming soon!"); break; @@ -2947,6 +2958,19 @@ bool FurnaceGUI::loop() { } ImGui::EndMenu(); } + if (ImGui::BeginMenu("export command stream...")) { + ImGui::Text( + "this option exports a text or binary file which\n" + "contains a dump of the internal command stream\n" + "produced when playing the song.\n\n" + + "technical/development use only!" + ); + if (ImGui::Button("export")) { + openFileDialog(GUI_FILE_EXPORT_CMDSTREAM); + } + ImGui::EndMenu(); + } ImGui::Separator(); if (ImGui::BeginMenu("add system...")) { for (int j=0; availableSystems[j]; j++) { @@ -3258,9 +3282,12 @@ bool FurnaceGUI::loop() { workingDirAudioExport=fileDialog->getPath()+DIR_SEPARATOR_STR; break; case GUI_FILE_EXPORT_VGM: - case GUI_FILE_EXPORT_ROM: workingDirVGMExport=fileDialog->getPath()+DIR_SEPARATOR_STR; break; + case GUI_FILE_EXPORT_ROM: + case GUI_FILE_EXPORT_CMDSTREAM: + workingDirROMExport=fileDialog->getPath()+DIR_SEPARATOR_STR; + break; case GUI_FILE_LOAD_MAIN_FONT: case GUI_FILE_LOAD_PAT_FONT: workingDirFont=fileDialog->getPath()+DIR_SEPARATOR_STR; @@ -3325,6 +3352,11 @@ bool FurnaceGUI::loop() { if (curFileDialog==GUI_FILE_EXPORT_VGM) { checkExtension(".vgm"); } + if (curFileDialog==GUI_FILE_EXPORT_CMDSTREAM) { + // we can't tell whether the user chose .txt or .bin in the system file picker + const char* fallbackExt=(settings.sysFileDialog || ImGuiFileDialog::Instance()->GetCurrentFilter()=="text file")?".txt":".bin"; + checkExtensionDual(".txt",".bin",fallbackExt); + } if (curFileDialog==GUI_FILE_EXPORT_COLORS) { checkExtension(".cfgc"); } @@ -3506,6 +3538,35 @@ bool FurnaceGUI::loop() { case GUI_FILE_EXPORT_ROM: showError("Coming soon!"); break; + case GUI_FILE_EXPORT_CMDSTREAM: { + String lowerCase=fileName; + for (char& i: lowerCase) { + if (i>='A' && i<='Z') i+='a'-'A'; + } + bool isBinary=true; + if ((lowerCase.size()<4 || lowerCase.rfind(".txt")!=lowerCase.size()-4)) { + isBinary=false; + } + + SafeWriter* w=e->saveCommand(isBinary); + if (w!=NULL) { + FILE* f=ps_fopen(copyOfName.c_str(),"wb"); + if (f!=NULL) { + fwrite(w->getFinalBuf(),1,w->size(),f); + fclose(f); + } else { + showError("could not open file!"); + } + w->finish(); + delete w; + if (!e->getWarnings().empty()) { + showWarning(e->getWarnings(),GUI_WARN_GENERIC); + } + } else { + showError(fmt::sprintf("could not write command stream! (%s)",e->getLastError())); + } + break; + } case GUI_FILE_LOAD_MAIN_FONT: settings.mainFontPath=copyOfName; break; @@ -4099,6 +4160,7 @@ bool FurnaceGUI::init() { workingDirSample=e->getConfString("lastDirSample",workingDir); workingDirAudioExport=e->getConfString("lastDirAudioExport",workingDir); workingDirVGMExport=e->getConfString("lastDirVGMExport",workingDir); + workingDirROMExport=e->getConfString("lastDirROMExport",workingDir); workingDirFont=e->getConfString("lastDirFont",workingDir); workingDirColors=e->getConfString("lastDirColors",workingDir); workingDirKeybinds=e->getConfString("lastDirKeybinds",workingDir); @@ -4339,6 +4401,7 @@ bool FurnaceGUI::finish() { e->setConf("lastDirSample",workingDirSample); e->setConf("lastDirAudioExport",workingDirAudioExport); e->setConf("lastDirVGMExport",workingDirVGMExport); + e->setConf("lastDirROMExport",workingDirROMExport); e->setConf("lastDirFont",workingDirFont); e->setConf("lastDirColors",workingDirColors); e->setConf("lastDirKeybinds",workingDirKeybinds); diff --git a/src/gui/gui.h b/src/gui/gui.h index cb61d48d..0ce4afae 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -266,6 +266,7 @@ enum FurnaceGUIFileDialogs { GUI_FILE_EXPORT_AUDIO_PER_SYS, GUI_FILE_EXPORT_AUDIO_PER_CHANNEL, GUI_FILE_EXPORT_VGM, + GUI_FILE_EXPORT_CMDSTREAM, GUI_FILE_EXPORT_ROM, GUI_FILE_LOAD_MAIN_FONT, GUI_FILE_LOAD_PAT_FONT, @@ -948,11 +949,14 @@ class FurnaceGUI { bool updateSampleTex; String workingDir, fileName, clipboard, warnString, errorString, lastError, curFileName, nextFile; - String workingDirSong, workingDirIns, workingDirWave, workingDirSample, workingDirAudioExport, workingDirVGMExport, workingDirFont, workingDirColors, workingDirKeybinds, workingDirLayout, workingDirROM, workingDirTest; + String workingDirSong, workingDirIns, workingDirWave, workingDirSample, workingDirAudioExport; + String workingDirVGMExport, workingDirROMExport, workingDirFont, workingDirColors, workingDirKeybinds; + String workingDirLayout, workingDirROM, workingDirTest; String mmlString[32]; String mmlStringW; - bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints, wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; + bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, vgmExportPatternHints; + bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; bool displayNew, fullScreen, preserveChanPos, wantScrollList, noteInputPoly; bool displayPendingIns, pendingInsSingle; bool willExport[32]; From b030f8285d45c782c427b9ed8146fb47d6633d1e Mon Sep 17 00:00:00 2001 From: James Alan Nguyen Date: Thu, 4 Aug 2022 17:33:36 +1000 Subject: [PATCH 294/580] Bugfix for OPM file load - correctly handle AM-ENA where value is arbitrarily nonzero --- src/engine/fileOpsIns.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index b7ca22c1..369b1238 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -1262,7 +1262,7 @@ void DivEngine::loadOPM(SafeReader& reader, std::vector& ret, St patchNameRead = lfoRead = characteristicRead = m1Read = c1Read = m2Read = c2Read = false; newPatch = NULL; }; - auto readIntStrWithinRange = [](String&& input, int limitLow, int limitHigh) -> int { + auto readIntStrWithinRange = [](String&& input, int limitLow = INT_MIN, int limitHigh = INT_MAX) -> int { int x = std::stoi(input.c_str()); if (x > limitHigh || x < limitLow) { throw std::invalid_argument(fmt::sprintf("%s is out of bounds of range [%d..%d]", input, limitLow, limitHigh)); @@ -1280,7 +1280,7 @@ void DivEngine::loadOPM(SafeReader& reader, std::vector& ret, St op.mult = readIntStrWithinRange(reader.readStringToken(), 0, 15); op.dt = fmDtRegisterToFurnace(readIntStrWithinRange(reader.readStringToken(), 0, 7)); op.dt2 = readIntStrWithinRange(reader.readStringToken(), 0, 3); - op.am = readIntStrWithinRange(reader.readStringToken(), 0, 1); + op.am = readIntStrWithinRange(reader.readStringToken(), 0) > 0 ? 1 : 0; }; auto seekGroupValStart = [](SafeReader& reader, int pos) { // Seek to position then move to next ':' character From edb0f51131215cfb0b3b53b54c566e7a6b5ffef7 Mon Sep 17 00:00:00 2001 From: James Alan Nguyen Date: Thu, 4 Aug 2022 17:43:42 +1000 Subject: [PATCH 295/580] stdint required --- src/engine/fileOpsIns.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index 369b1238..e5ea58ab 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -21,6 +21,7 @@ #include "../ta-log.h" #include "../fileutils.h" #include +#include enum DivInsFormats { DIV_INSFORMAT_DMP, From 810eabca99851f6b769540c17169e0ee0bf79491 Mon Sep 17 00:00:00 2001 From: James Alan Nguyen Date: Thu, 4 Aug 2022 17:50:33 +1000 Subject: [PATCH 296/580] derp limits --- src/engine/fileOpsIns.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/fileOpsIns.cpp b/src/engine/fileOpsIns.cpp index e5ea58ab..54e0eefc 100644 --- a/src/engine/fileOpsIns.cpp +++ b/src/engine/fileOpsIns.cpp @@ -21,7 +21,7 @@ #include "../ta-log.h" #include "../fileutils.h" #include -#include +#include enum DivInsFormats { DIV_INSFORMAT_DMP, From 09e32c7050fba4ccd4c0b2a2dc82b66c28fb5d14 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 4 Aug 2022 15:14:29 -0500 Subject: [PATCH 297/580] finish command dump hints --- src/engine/dispatch.h | 4 ++++ src/engine/playback.cpp | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index 86b2e229..fb9be580 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -58,10 +58,14 @@ enum DivDispatchCmds { // these will be used in ROM export. // do NOT implement! DIV_CMD_HINT_VIBRATO, // (speed, depth) + DIV_CMD_HINT_VIBRATO_RANGE, // (range) DIV_CMD_HINT_VIBRATO_SHAPE, // (shape) DIV_CMD_HINT_PITCH, // (pitch) DIV_CMD_HINT_ARPEGGIO, // (note1, note2) + DIV_CMD_HINT_VOLUME, // (vol) DIV_CMD_HINT_VOL_SLIDE, // (amount, oneTick) + DIV_CMD_HINT_PORTA, // (target, speed) + DIV_CMD_HINT_LEGATO, // (note) DIV_CMD_SAMPLE_MODE, // (enabled) DIV_CMD_SAMPLE_FREQ, // (frequency) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index b089b6f3..8fd20d5f 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -58,10 +58,14 @@ const char* cmdName[]={ "PRE_NOTE", "HINT_VIBRATO", + "HINT_VIBRATO_RANGE", "HINT_VIBRATO_SHAPE", "HINT_PITCH", "HINT_ARPEGGIO", "HINT_VOL_SLIDE", + "HINT_VOLUME", + "HINT_PORTA", + "HINT_LEGATO", "SAMPLE_MODE", "SAMPLE_FREQ", @@ -344,6 +348,7 @@ void DivEngine::processRow(int i, bool afterDelay) { logV("forcing volume"); chan[i].volume=chan[i].volMax; dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); } } } @@ -356,11 +361,13 @@ void DivEngine::processRow(int i, bool afterDelay) { if (chan[i].stopOnOff) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].stopOnOff=false; } if (disCont[dispatchOfChan[i]].dispatch->keyOffAffectsPorta(dispatchChanOfChan[i])) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); /*if (i==2 && sysOfChan[i]==DIV_SYSTEM_SMS) { chan[i+1].portaNote=-1; chan[i+1].portaSpeed=-1; @@ -377,11 +384,13 @@ void DivEngine::processRow(int i, bool afterDelay) { if (chan[i].stopOnOff) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].stopOnOff=false; } if (disCont[dispatchOfChan[i]].dispatch->keyOffAffectsPorta(dispatchChanOfChan[i])) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); /*if (i==2 && sysOfChan[i]==DIV_SYSTEM_SMS) { chan[i+1].portaNote=-1; chan[i+1].portaSpeed=-1; @@ -398,6 +407,7 @@ void DivEngine::processRow(int i, bool afterDelay) { if (!chan[i].keyOn) { if (disCont[dispatchOfChan[i]].dispatch->keyOffAffectsArp(dispatchChanOfChan[i])) { chan[i].arp=0; + dispatchCmd(DivCommand(DIV_CMD_HINT_ARPEGGIO,i,chan[i].arp)); } } chan[i].doNote=true; @@ -414,6 +424,7 @@ void DivEngine::processRow(int i, bool afterDelay) { } chan[i].volume=pat->data[whatRow][3]<<8; dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); } } @@ -458,11 +469,13 @@ void DivEngine::processRow(int i, bool afterDelay) { if (effectVal==0) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].inPorta=false; if (!song.arpNonPorta) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,false,0)); } else { chan[i].portaNote=song.limitSlides?0x60:255; chan[i].portaSpeed=effectVal; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].portaStop=true; chan[i].nowYouCanStop=false; chan[i].stopOnOff=false; @@ -478,11 +491,13 @@ void DivEngine::processRow(int i, bool afterDelay) { if (effectVal==0) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].inPorta=false; if (!song.arpNonPorta) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,false,0)); } else { chan[i].portaNote=song.limitSlides?disCont[dispatchOfChan[i]].dispatch->getPortaFloor(dispatchChanOfChan[i]):-60; chan[i].portaSpeed=effectVal; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].portaStop=true; chan[i].nowYouCanStop=false; chan[i].stopOnOff=false; @@ -496,6 +511,7 @@ void DivEngine::processRow(int i, bool afterDelay) { if (effectVal==0) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].inPorta=false; dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,false,0)); } else { @@ -509,6 +525,7 @@ void DivEngine::processRow(int i, bool afterDelay) { chan[i].inPorta=true; chan[i].wasShorthandPorta=false; } + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].portaStop=true; if (chan[i].keyOn) chan[i].doNote=false; chan[i].stopOnOff=song.stopPortaOnNoteOff; // what?! @@ -520,6 +537,7 @@ void DivEngine::processRow(int i, bool afterDelay) { case 0x04: // vibrato chan[i].vibratoDepth=effectVal&15; chan[i].vibratoRate=effectVal>>4; + dispatchCmd(DivCommand(DIV_CMD_HINT_VIBRATO,i,chan[i].vibratoDepth,chan[i].vibratoRate)); dispatchCmd(DivCommand(DIV_CMD_PITCH,i,chan[i].pitch+(((chan[i].vibratoDepth*vibTable[chan[i].vibratoPos]*chan[i].vibratoFine)>>4)/15))); break; case 0x07: // tremolo @@ -543,12 +561,14 @@ void DivEngine::processRow(int i, bool afterDelay) { } else { chan[i].volSpeed=0; } + dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,chan[i].volSpeed)); break; case 0x00: // arpeggio chan[i].arp=effectVal; if (chan[i].arp==0 && song.arp0Reset) { chan[i].resetArp=true; } + dispatchCmd(DivCommand(DIV_CMD_HINT_ARPEGGIO,i,chan[i].arp)); break; case 0x0c: // retrigger if (effectVal!=0) { @@ -580,6 +600,7 @@ void DivEngine::processRow(int i, bool afterDelay) { case 0xe1: // portamento up chan[i].portaNote=chan[i].note+(effectVal&15); chan[i].portaSpeed=(effectVal>>4)*4; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].portaStop=true; chan[i].nowYouCanStop=false; chan[i].stopOnOff=song.stopPortaOnNoteOff; // what?! @@ -598,6 +619,7 @@ void DivEngine::processRow(int i, bool afterDelay) { case 0xe2: // portamento down chan[i].portaNote=chan[i].note-(effectVal&15); chan[i].portaSpeed=(effectVal>>4)*4; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].portaStop=true; chan[i].nowYouCanStop=false; chan[i].stopOnOff=song.stopPortaOnNoteOff; // what?! @@ -615,9 +637,11 @@ void DivEngine::processRow(int i, bool afterDelay) { break; case 0xe3: // vibrato direction chan[i].vibratoDir=effectVal; + dispatchCmd(DivCommand(DIV_CMD_HINT_VIBRATO_SHAPE,i,chan[i].vibratoDir)); break; case 0xe4: // vibrato fine chan[i].vibratoFine=effectVal; + dispatchCmd(DivCommand(DIV_CMD_HINT_VIBRATO_RANGE,i,chan[i].vibratoFine)); break; case 0xe5: // pitch chan[i].pitch=effectVal-0x80; @@ -628,6 +652,7 @@ void DivEngine::processRow(int i, bool afterDelay) { } //chan[i].pitch+=globalPitch; dispatchCmd(DivCommand(DIV_CMD_PITCH,i,chan[i].pitch+(((chan[i].vibratoDepth*vibTable[chan[i].vibratoPos]*chan[i].vibratoFine)>>4)/15))); + dispatchCmd(DivCommand(DIV_CMD_HINT_PITCH,i,chan[i].pitch)); break; case 0xea: // legato mode chan[i].legato=effectVal; @@ -677,17 +702,21 @@ void DivEngine::processRow(int i, bool afterDelay) { break; case 0xf3: // fine volume ramp up chan[i].volSpeed=effectVal; + dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,chan[i].volSpeed)); break; case 0xf4: // fine volume ramp down chan[i].volSpeed=-effectVal; + dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,chan[i].volSpeed)); break; case 0xf8: // single volume ramp up chan[i].volume=MIN(chan[i].volume+effectVal*256,chan[i].volMax); dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); break; case 0xf9: // single volume ramp down chan[i].volume=MAX(chan[i].volume-effectVal*256,0); dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); break; case 0xfa: // fast volume ramp if (effectVal!=0) { @@ -699,6 +728,7 @@ void DivEngine::processRow(int i, bool afterDelay) { } else { chan[i].volSpeed=0; } + dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,chan[i].volSpeed)); break; case 0xff: // stop song @@ -729,15 +759,18 @@ void DivEngine::processRow(int i, bool afterDelay) { dispatchCmd(DivCommand(DIV_CMD_PITCH,i,chan[i].pitch+(((chan[i].vibratoDepth*vibTable[chan[i].vibratoPos]*chan[i].vibratoFine)>>4)/15))); if (chan[i].legato) { dispatchCmd(DivCommand(DIV_CMD_LEGATO,i,chan[i].note)); + dispatchCmd(DivCommand(DIV_CMD_HINT_LEGATO,i,chan[i].note)); } else { if (chan[i].inPorta && chan[i].keyOn && !chan[i].shorthandPorta) { if (song.e1e2StopOnSameNote && chan[i].wasShorthandPorta) { chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); if (!song.brokenShortcutSlides) dispatchCmd(DivCommand(DIV_CMD_PRE_PORTA,i,false,0)); chan[i].wasShorthandPorta=false; chan[i].inPorta=false; } else { chan[i].portaNote=chan[i].note; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); } } else if (!chan[i].noteOnInhibit) { dispatchCmd(DivCommand(DIV_CMD_NOTE_ON,i,chan[i].note,chan[i].volume>>8)); @@ -748,12 +781,14 @@ void DivEngine::processRow(int i, bool afterDelay) { if (!chan[i].keyOn && chan[i].scheduledSlideReset) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].scheduledSlideReset=false; chan[i].inPorta=false; } if (!chan[i].keyOn && chan[i].volume>chan[i].volMax) { chan[i].volume=chan[i].volMax; dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); } chan[i].keyOn=true; chan[i].keyOff=false; @@ -993,15 +1028,19 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { if (chan[i].volume>chan[i].volMax) { chan[i].volume=chan[i].volMax; chan[i].volSpeed=0; + dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,0)); } else if (chan[i].volume<0) { chan[i].volSpeed=0; + dispatchCmd(DivCommand(DIV_CMD_HINT_VOL_SLIDE,i,0)); if (song.legacyVolumeSlides) { chan[i].volume=chan[i].volMax+1; } else { chan[i].volume=0; } dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); + dispatchCmd(DivCommand(DIV_CMD_HINT_VOLUME,i,chan[i].volume>>8)); } else { dispatchCmd(DivCommand(DIV_CMD_VOLUME,i,chan[i].volume>>8)); } @@ -1030,10 +1069,12 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { if ((chan[i].keyOn || chan[i].keyOff) && chan[i].portaSpeed>0) { if (dispatchCmd(DivCommand(DIV_CMD_NOTE_PORTA,i,chan[i].portaSpeed*(song.linearPitch==2?song.pitchSlideSpeed:1),chan[i].portaNote))==2 && chan[i].portaStop && song.targetResetsSlides) { chan[i].portaSpeed=0; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].oldNote=chan[i].note; chan[i].note=chan[i].portaNote; chan[i].inPorta=false; dispatchCmd(DivCommand(DIV_CMD_LEGATO,i,chan[i].note)); + dispatchCmd(DivCommand(DIV_CMD_HINT_LEGATO,i,chan[i].note)); } } } @@ -1047,11 +1088,13 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { if (chan[i].stopOnOff) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); chan[i].stopOnOff=false; } if (disCont[dispatchOfChan[i]].dispatch->keyOffAffectsPorta(dispatchChanOfChan[i])) { chan[i].portaNote=-1; chan[i].portaSpeed=-1; + dispatchCmd(DivCommand(DIV_CMD_HINT_PORTA,i,chan[i].portaNote,chan[i].portaSpeed)); /*if (i==2 && sysOfChan[i]==DIV_SYSTEM_SMS) { chan[i+1].portaNote=-1; chan[i+1].portaSpeed=-1; @@ -1065,6 +1108,7 @@ bool DivEngine::nextTick(bool noAccum, bool inhibitLowLat) { } if (chan[i].resetArp) { dispatchCmd(DivCommand(DIV_CMD_LEGATO,i,chan[i].note)); + dispatchCmd(DivCommand(DIV_CMD_HINT_LEGATO,i,chan[i].note)); chan[i].resetArp=false; } if (song.rowResetsArpPos && firstTick) { From 67e7e07048c30f781e3dce4433aa9d9e1bc985a4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 4 Aug 2022 15:18:48 -0500 Subject: [PATCH 298/580] add -cmdout option --- src/main.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index f25d08e7..6e0173ab 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -52,6 +52,7 @@ FurnaceCLI cli; String outName; String vgmOutName; +String cmdOutName; int loops=1; int benchMode=0; DivAudioExportModes outMode=DIV_EXPORT_MODE_ONE; @@ -250,6 +251,12 @@ TAParamResult pVGMOut(String val) { return TA_PARAM_SUCCESS; } +TAParamResult pCmdOut(String val) { + cmdOutName=val; + e.setAudio(DIV_AUDIO_DUMMY); + return TA_PARAM_SUCCESS; +} + bool needsValue(String param) { for (size_t i=0; i","output audio to file")); params.push_back(TAParam("O","vgmout",true,pVGMOut,"","output .vgm data")); + params.push_back(TAParam("C","cmdout",true,pCmdOut,"","output command stream")); params.push_back(TAParam("L","loglevel",true,pLogLevel,"debug|info|warning|error","set the log level (info by default)")); params.push_back(TAParam("v","view",true,pView,"pattern|commands|nothing","set visualization (pattern by default)")); params.push_back(TAParam("c","console",false,pConsole,"","enable console mode")); @@ -307,6 +315,7 @@ int main(int argc, char** argv) { #endif outName=""; vgmOutName=""; + cmdOutName=""; initParams(); @@ -443,7 +452,23 @@ int main(int argc, char** argv) { } return 0; } - if (outName!="" || vgmOutName!="") { + if (outName!="" || vgmOutName!="" || cmdOutName!="") { + if (cmdOutName!="") { + SafeWriter* w=e.saveCommand(false); + if (w!=NULL) { + FILE* f=fopen(cmdOutName.c_str(),"wb"); + if (f!=NULL) { + fwrite(w->getFinalBuf(),1,w->size(),f); + fclose(f); + } else { + reportError(fmt::sprintf("could not open file! (%s)",e.getLastError())); + } + w->finish(); + delete w; + } else { + reportError("could not write command stream!"); + } + } if (vgmOutName!="") { SafeWriter* w=e.saveVGM(); if (w!=NULL) { From 2e41d117d7b259ccb45c89a50602bdfdef368a67 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 4 Aug 2022 17:47:59 -0500 Subject: [PATCH 299/580] fix some of these command hints --- src/engine/engine.cpp | 2 ++ src/engine/playback.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 9b532c0b..5d922400 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -311,6 +311,8 @@ SafeWriter* DivEngine::saveCommand(bool binary) { break; case DIV_CMD_PITCH: break; + case DIV_CMD_PRE_NOTE: + break; default: if (!wroteTick) { wroteTick=true; diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 8fd20d5f..ee9115fd 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -62,8 +62,8 @@ const char* cmdName[]={ "HINT_VIBRATO_SHAPE", "HINT_PITCH", "HINT_ARPEGGIO", - "HINT_VOL_SLIDE", "HINT_VOLUME", + "HINT_VOL_SLIDE", "HINT_PORTA", "HINT_LEGATO", @@ -340,8 +340,8 @@ void DivEngine::processRow(int i, bool afterDelay) { // instrument bool insChanged=false; if (pat->data[whatRow][2]!=-1) { - dispatchCmd(DivCommand(DIV_CMD_INSTRUMENT,i,pat->data[whatRow][2])); if (chan[i].lastIns!=pat->data[whatRow][2]) { + dispatchCmd(DivCommand(DIV_CMD_INSTRUMENT,i,pat->data[whatRow][2])); chan[i].lastIns=pat->data[whatRow][2]; insChanged=true; if (song.legacyVolumeSlides && chan[i].volume==chan[i].volMax+1) { From f2b6f854a99e12d6a8f026890f85d93d55c7dc7b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 4 Aug 2022 17:48:10 -0500 Subject: [PATCH 300/580] add options to not install demo songs/ins --- CMakeLists.txt | 10 ++++++++-- README.md | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78792c98..e468d407 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,8 @@ option(SYSTEM_RTMIDI "Use a system-installed version of RtMidi instead of the ve option(SYSTEM_ZLIB "Use a system-installed version of zlib instead of the vendored one" OFF) option(SYSTEM_SDL2 "Use a system-installed version of SDL2 instead of the vendored one" ${SYSTEM_SDL2_DEFAULT}) option(WARNINGS_ARE_ERRORS "Whether warnings in furnace's C++ code should be treated as errors" OFF) +option(WITH_DEMOS "Install demo songs" ON) +option(WITH_INSTRUMENTS "Install instruments" ON) set(DEPENDENCIES_INCLUDE_DIRS "") @@ -709,8 +711,12 @@ if (NOT ANDROID OR TERMUX) install(FILES res/furnace.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) install(DIRECTORY papers DESTINATION ${CMAKE_INSTALL_DOCDIR}) install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/furnace) - install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace) - install(DIRECTORY instruments DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace) + if (WITH_DEMOS) + install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace) + endif() + if (WITH_INSTRUMENTS) + install(DIRECTORY instruments DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace) + endif() foreach(num 16 32 64 128 256 512) set(res ${num}x${num}) install(FILES res/icon.iconset/icon_${res}.png RENAME furnace.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/${res}/apps) diff --git a/README.md b/README.md index 1a2d88a7..d2308dd7 100644 --- a/README.md +++ b/README.md @@ -203,6 +203,8 @@ Available options: | `SYSTEM_ZLIB` | `OFF` | Use a system-installed version of zlib instead of the vendored one | | `SYSTEM_SDL2` | `OFF` | Use a system-installed version of SDL2 instead of the vendored one | | `WARNINGS_ARE_ERRORS` | `OFF` (but consider enabling this & reporting any errors that arise from it!) | Whether warnings in furnace's C++ code should be treated as errors | +| `WITH_DEMOS` | `ON` | Install demo songs on `make install` | +| `WITH_INSTRUMENTS` | `ON` | Install demo instruments on `make install` | ## console usage From 3a18e1e6fc4ef101b65a9d3ff5bc874fad430016 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 4 Aug 2022 18:50:52 -0500 Subject: [PATCH 301/580] partially implement command stream binary mode --- papers/export-tech.md | 28 ++---- src/engine/engine.cpp | 192 ++++++++++++++++++++++++++++++++++++------ src/main.cpp | 9 +- 3 files changed, 181 insertions(+), 48 deletions(-) diff --git a/papers/export-tech.md b/papers/export-tech.md index 560aab32..dbfadece 100644 --- a/papers/export-tech.md +++ b/papers/export-tech.md @@ -11,28 +11,16 @@ if it is a 2-byte macro, read a dummy byte. then read data. -## pattern data +## binary command stream -read sequentially. +read channel, command and values. -first byte determines what to read next: +if channel is 80 or higher, then it is a special command: ``` -NVI..EEE - -N: note -V: volume -I: instrument - -EEE: effect count (0-7) +fb xx xx xx xx: set tick rate +fc xx xx: wait xxxx ticks +fd xx: wait xx ticks +fe: wait one tick +ff: stop ``` - -if you read 0, end of pattern. -otherwise read in following order: - -1. note -2. volume -3. instrument -4. effect and effect value - -then read number of rows until next value, minus 1. diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 5d922400..fd94e521 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -235,8 +235,131 @@ double DivEngine::benchmarkSeek() { return tAvg; } +#define WRITE_TICK \ + if (!wroteTick) { \ + wroteTick=true; \ + if (binary) { \ + if (tick-lastTick>255) { \ + w->writeC(0xfc); \ + w->writeS(tick-lastTick); \ + } else if (tick-lastTick>1) { \ + w->writeC(0xfd); \ + w->writeC(tick-lastTick); \ + } else { \ + w->writeC(0xfe); \ + } \ + } else { \ + w->writeText(fmt::sprintf(">> TICK %d\n",tick)); \ + } \ + lastTick=tick; \ + } + +void writePackedCommandValues(SafeWriter* w, const DivCommand& c) { + w->writeC(c.cmd); + switch (c.cmd) { + case DIV_CMD_NOTE_ON: + case DIV_CMD_HINT_LEGATO: + if (c.value==DIV_NOTE_NULL) { + w->writeC(0xff); + } else { + w->writeC(c.value+60); + } + break; + case DIV_CMD_NOTE_OFF: + case DIV_CMD_NOTE_OFF_ENV: + case DIV_CMD_ENV_RELEASE: + break; + case DIV_CMD_INSTRUMENT: + case DIV_CMD_HINT_VIBRATO_RANGE: + case DIV_CMD_HINT_VIBRATO_SHAPE: + case DIV_CMD_HINT_PITCH: + case DIV_CMD_HINT_VOLUME: + case DIV_CMD_SAMPLE_MODE: + case DIV_CMD_SAMPLE_FREQ: + case DIV_CMD_SAMPLE_BANK: + case DIV_CMD_SAMPLE_POS: + case DIV_CMD_SAMPLE_DIR: + case DIV_CMD_FM_HARD_RESET: + case DIV_CMD_FM_LFO: + case DIV_CMD_FM_LFO_WAVE: + case DIV_CMD_FM_FB: + case DIV_CMD_FM_EXTCH: + case DIV_CMD_FM_AM_DEPTH: + case DIV_CMD_FM_PM_DEPTH: + case DIV_CMD_STD_NOISE_FREQ: + case DIV_CMD_STD_NOISE_MODE: + case DIV_CMD_WAVE: + case DIV_CMD_GB_SWEEP_TIME: + case DIV_CMD_GB_SWEEP_DIR: + case DIV_CMD_PCE_LFO_MODE: + case DIV_CMD_PCE_LFO_SPEED: + case DIV_CMD_NES_DMC: + case DIV_CMD_C64_CUTOFF: + case DIV_CMD_C64_RESONANCE: + case DIV_CMD_C64_FILTER_MODE: + case DIV_CMD_C64_RESET_TIME: + case DIV_CMD_C64_RESET_MASK: + case DIV_CMD_C64_FILTER_RESET: + case DIV_CMD_C64_DUTY_RESET: + case DIV_CMD_C64_EXTENDED: + case DIV_CMD_AY_ENVELOPE_SET: + case DIV_CMD_AY_ENVELOPE_LOW: + case DIV_CMD_AY_ENVELOPE_HIGH: + case DIV_CMD_AY_ENVELOPE_SLIDE: + case DIV_CMD_AY_NOISE_MASK_AND: + case DIV_CMD_AY_NOISE_MASK_OR: + case DIV_CMD_AY_AUTO_ENVELOPE: + w->writeC(c.value); + break; + case DIV_CMD_PANNING: + case DIV_CMD_HINT_VIBRATO: + case DIV_CMD_HINT_ARPEGGIO: + case DIV_CMD_HINT_PORTA: + case DIV_CMD_FM_TL: + case DIV_CMD_FM_AM: + case DIV_CMD_FM_AR: + case DIV_CMD_FM_DR: + case DIV_CMD_FM_SL: + case DIV_CMD_FM_D2R: + case DIV_CMD_FM_RR: + case DIV_CMD_FM_DT: + case DIV_CMD_FM_DT2: + case DIV_CMD_FM_RS: + case DIV_CMD_FM_KSR: + case DIV_CMD_FM_VIB: + case DIV_CMD_FM_SUS: + case DIV_CMD_FM_WS: + case DIV_CMD_FM_SSG: + case DIV_CMD_FM_REV: + case DIV_CMD_FM_EG_SHIFT: + case DIV_CMD_FM_MULT: + case DIV_CMD_FM_FINE: + case DIV_CMD_AY_IO_WRITE: + case DIV_CMD_AY_AUTO_PWM: + w->writeC(c.value); + w->writeC(c.value2); + break; + case DIV_CMD_PRE_PORTA: + w->writeC((c.value?0x80:0)|(c.value2?0x40:0)); + break; + case DIV_CMD_HINT_VOL_SLIDE: + case DIV_CMD_C64_FINE_DUTY: + case DIV_CMD_C64_FINE_CUTOFF: + w->writeS(c.value); + break; + case DIV_CMD_FM_FIXFREQ: + w->writeS((c.value<<12)|(c.value2&0x7ff)); + break; + case DIV_CMD_NES_SWEEP: + w->writeC((c.value?8:0)|(c.value2&0x77)); + break; + default: + logW("unimplemented command %s!",cmdName[c.cmd]); + break; + } +} + SafeWriter* DivEngine::saveCommand(bool binary) { - logI("implement! %d",binary); stop(); repeatPattern=false; setOrder(0); @@ -252,36 +375,43 @@ SafeWriter* DivEngine::saveCommand(bool binary) { w->init(); // write header - w->writeText("# Furnace Command Stream\n\n"); + if (binary) { + w->write("FCS",4); + } else { + w->writeText("# Furnace Command Stream\n\n"); - w->writeText("[Information]\n"); - w->writeText(fmt::sprintf("name: %s\n",song.name)); - w->writeText(fmt::sprintf("author: %s\n",song.author)); - w->writeText(fmt::sprintf("category: %s\n",song.category)); - w->writeText(fmt::sprintf("system: %s\n",song.systemName)); + w->writeText("[Information]\n"); + w->writeText(fmt::sprintf("name: %s\n",song.name)); + w->writeText(fmt::sprintf("author: %s\n",song.author)); + w->writeText(fmt::sprintf("category: %s\n",song.category)); + w->writeText(fmt::sprintf("system: %s\n",song.systemName)); - w->writeText("\n"); + w->writeText("\n"); - w->writeText("[SubSongInformation]\n"); - w->writeText(fmt::sprintf("name: %s\n",curSubSong->name)); - w->writeText(fmt::sprintf("tickRate: %f\n",curSubSong->hz)); + w->writeText("[SubSongInformation]\n"); + w->writeText(fmt::sprintf("name: %s\n",curSubSong->name)); + w->writeText(fmt::sprintf("tickRate: %f\n",curSubSong->hz)); - w->writeText("\n"); + w->writeText("\n"); - w->writeText("[SysDefinition]\n"); - // TODO + w->writeText("[SysDefinition]\n"); + // TODO - w->writeText("\n"); + w->writeText("\n"); + } // play the song ourselves bool done=false; playSub(false); - w->writeText("[Stream]\n"); + if (!binary) { + w->writeText("[Stream]\n"); + } int tick=0; bool oldCmdStreamEnabled=cmdStreamEnabled; cmdStreamEnabled=true; double curDivider=divider; + int lastTick=0; while (!done) { if (nextTick(false,true) || !playing) { done=true; @@ -290,11 +420,13 @@ SafeWriter* DivEngine::saveCommand(bool binary) { bool wroteTick=false; if (curDivider!=divider) { curDivider=divider; - if (!wroteTick) { - wroteTick=true; - w->writeText(fmt::sprintf(">> TICK %d\n",tick)); + WRITE_TICK; + if (binary) { + w->writeC(0xfb); + w->writeI((int)(curDivider*65536)); + } else { + w->writeText(fmt::sprintf(">> SET_RATE %f\n",curDivider)); } - w->writeText(fmt::sprintf(">> SET_RATE %f\n",curDivider)); } for (DivCommand& i: cmdStream) { switch (i.cmd) { @@ -314,11 +446,13 @@ SafeWriter* DivEngine::saveCommand(bool binary) { case DIV_CMD_PRE_NOTE: break; default: - if (!wroteTick) { - wroteTick=true; - w->writeText(fmt::sprintf(">> TICK %d\n",tick)); + WRITE_TICK; + if (binary) { + w->writeC(i.chan); + writePackedCommandValues(w,i); + } else { + w->writeText(fmt::sprintf(" %d: %s %d %d\n",i.chan,cmdName[i.cmd],i.value,i.value2)); } - w->writeText(fmt::sprintf(" %d: %s %d %d\n",i.chan,cmdName[i.cmd],i.value,i.value2)); break; } } @@ -327,10 +461,14 @@ SafeWriter* DivEngine::saveCommand(bool binary) { } cmdStreamEnabled=oldCmdStreamEnabled; - if (!playing) { - w->writeText(">> END\n"); + if (binary) { + w->writeC(0xff); } else { - w->writeText(">> LOOP 0\n"); + if (!playing) { + w->writeText(">> END\n"); + } else { + w->writeText(">> LOOP 0\n"); + } } remainingLoops=-1; diff --git a/src/main.cpp b/src/main.cpp index 6e0173ab..39c9e6ca 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -64,6 +64,7 @@ bool consoleMode=true; #endif bool displayEngineFailError=false; +bool cmdOutBinary=false; std::vector params; @@ -115,6 +116,11 @@ TAParamResult pConsole(String val) { return TA_PARAM_SUCCESS; } +TAParamResult pBinary(String val) { + cmdOutBinary=true; + return TA_PARAM_SUCCESS; +} + TAParamResult pLogLevel(String val) { if (val=="trace") { logLevel=LOGLEVEL_TRACE; @@ -273,6 +279,7 @@ void initParams() { params.push_back(TAParam("o","output",true,pOutput,"","output audio to file")); params.push_back(TAParam("O","vgmout",true,pVGMOut,"","output .vgm data")); params.push_back(TAParam("C","cmdout",true,pCmdOut,"","output command stream")); + params.push_back(TAParam("b","binary",false,pBinary,"","set command stream output format to binary")); params.push_back(TAParam("L","loglevel",true,pLogLevel,"debug|info|warning|error","set the log level (info by default)")); params.push_back(TAParam("v","view",true,pView,"pattern|commands|nothing","set visualization (pattern by default)")); params.push_back(TAParam("c","console",false,pConsole,"","enable console mode")); @@ -454,7 +461,7 @@ int main(int argc, char** argv) { } if (outName!="" || vgmOutName!="" || cmdOutName!="") { if (cmdOutName!="") { - SafeWriter* w=e.saveCommand(false); + SafeWriter* w=e.saveCommand(cmdOutBinary); if (w!=NULL) { FILE* f=fopen(cmdOutName.c_str(),"wb"); if (f!=NULL) { From 049ab065449d4237734ff6fb2214fe09482d255f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 4 Aug 2022 23:37:28 -0500 Subject: [PATCH 302/580] PCE: add option to pick A/non-A revision of chip --- src/engine/platform/pce.cpp | 13 +++++++++++-- src/gui/sysConf.cpp | 7 +++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index a61b6183..d46e012c 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -569,6 +569,12 @@ void DivPlatformPCE::setFlags(unsigned int flags) { for (int i=0; i<6; i++) { oscBuf[i]->rate=rate; } + + if (pce!=NULL) { + delete pce; + pce=NULL; + } + pce=new PCE_PSG(tempL,tempR,(flags&4)?PCE_PSG::REVISION_HUC6280A:PCE_PSG::REVISION_HUC6280); } void DivPlatformPCE::poke(unsigned int addr, unsigned short val) { @@ -587,8 +593,8 @@ int DivPlatformPCE::init(DivEngine* p, int channels, int sugRate, unsigned int f isMuted[i]=false; oscBuf[i]=new DivDispatchOscBuffer; } + pce=NULL; setFlags(flags); - pce=new PCE_PSG(tempL,tempR,PCE_PSG::REVISION_HUC6280A); reset(); return 6; } @@ -597,7 +603,10 @@ void DivPlatformPCE::quit() { for (int i=0; i<6; i++) { delete oscBuf[i]; } - delete pce; + if (pce!=NULL) { + delete pce; + pce=NULL; + } } DivPlatformPCE::~DivPlatformPCE() { diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 7c624f30..4cc1784a 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -118,6 +118,13 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::Checkbox("Disable anti-click",&antiClick)) { copyOfFlags=(flags&(~8))|(antiClick<<3); } + ImGui::Text("Chip revision:"); + if (ImGui::RadioButton("HuC6280 (original)",(flags&4)==0)) { + copyOfFlags=(flags&(~4))|0; + } + if (ImGui::RadioButton("HuC6280A (SuperGrafx)",(flags&4)==4)) { + copyOfFlags=(flags&(~4))|4; + } break; } case DIV_SYSTEM_SOUND_UNIT: { From 827904d46e1999d421fd0b9917ce0266bef07fcf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 5 Aug 2022 00:05:36 -0500 Subject: [PATCH 303/580] what happens if I force arm64 on macOS CI? --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7e060924..ed471087 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -201,7 +201,7 @@ jobs: elif [ '${{ matrix.config.compiler }}' == 'mingw' ]; then CMAKE_EXTRA_ARGS+=('-DCMAKE_TOOLCHAIN_FILE=scripts/Cross-MinGW-${{ steps.windows-identify.outputs.mingw-target }}.cmake') elif [ '${{ runner.os }}' == 'macOS' ]; then - CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"') + CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"' '-DCMAKE_OSX_ARCHITECTURES=arm64') fi cmake \ From a0968aed0719a032c131b24ce583abaaa2e25e00 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 5 Aug 2022 03:27:35 -0500 Subject: [PATCH 304/580] GUI: fix text/binary command stream outs being swa --- src/gui/gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 28edd9e3..c1cd7f07 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3544,7 +3544,7 @@ bool FurnaceGUI::loop() { if (i>='A' && i<='Z') i+='a'-'A'; } bool isBinary=true; - if ((lowerCase.size()<4 || lowerCase.rfind(".txt")!=lowerCase.size()-4)) { + if ((lowerCase.size()<4 || lowerCase.rfind(".bin")!=lowerCase.size()-4)) { isBinary=false; } From 1d30febff8497b2bfdc99c81591914de3480b2af Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 5 Aug 2022 15:39:13 -0500 Subject: [PATCH 305/580] oh yeah --- .github/workflows/build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed471087..5ee82f0d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,8 @@ jobs: - { name: 'Windows MSVC x86_64', os: windows-latest, compiler: msvc, arch: x86_64 } - { name: 'Windows MinGW x86', os: ubuntu-20.04, compiler: mingw, arch: x86 } - { name: 'Windows MinGW x86_64', os: ubuntu-20.04, compiler: mingw, arch: x86_64 } - - { name: 'macOS', os: macos-latest } + - { name: 'macOS x86_64', os: macos-latest, arch: x86_64 } + - { name: 'macOS ARM', os: macos-latest, arch: arm64 } - { name: 'Ubuntu', os: ubuntu-18.04 } fail-fast: false @@ -201,7 +202,11 @@ jobs: elif [ '${{ matrix.config.compiler }}' == 'mingw' ]; then CMAKE_EXTRA_ARGS+=('-DCMAKE_TOOLCHAIN_FILE=scripts/Cross-MinGW-${{ steps.windows-identify.outputs.mingw-target }}.cmake') elif [ '${{ runner.os }}' == 'macOS' ]; then - CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"' '-DCMAKE_OSX_ARCHITECTURES=arm64') + if [ '${{ matrix.config.arch }}' == 'arm64' ]; then + CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="11.0"' '-DCMAKE_OSX_ARCHITECTURES=arm64') + else + CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"') + fi fi cmake \ From 3e70ed6d3eb22d42c51e030f367c5321796124bd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 5 Aug 2022 17:22:07 -0500 Subject: [PATCH 306/580] CI: fix artifact conflict --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5ee82f0d..da0cfbfa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -77,7 +77,7 @@ jobs: package_name="${package_name}-${{ matrix.config.arch }}" package_ext="" # Directory, uploading will automatically zip it elif [ '${{ runner.os }}' == 'macOS' ]; then - package_name="${package_name}-macOS" + package_name="${package_name}-macOS-${{ matrix.config.arch }}" package_ext=".dmg" else package_name="${package_name}-Linux" From 6ec9cceb091dbd70966f099510f72d4be0db662e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 00:34:28 -0500 Subject: [PATCH 307/580] PCE: remove some sample playback clicking --- src/engine/platform/pce.cpp | 9 ++++++++- src/engine/platform/pce.h | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index d46e012c..757cff15 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -133,6 +133,10 @@ void DivPlatformPCE::acquire(short* bufL, short* bufR, size_t start, size_t len) } void DivPlatformPCE::updateWave(int ch) { + if (chan[ch].pcm) { + chan[ch].deferredWaveUpdate=true; + return; + } chWrite(ch,0x04,0x5f); chWrite(ch,0x04,0x1f); for (int i=0; i<32; i++) { @@ -142,6 +146,9 @@ void DivPlatformPCE::updateWave(int ch) { if (chan[ch].active) { chWrite(ch,0x04,0x80|chan[ch].outVol); } + if (chan[ch].deferredWaveUpdate) { + chan[ch].deferredWaveUpdate=false; + } } // TODO: in octave 6 the noise table changes to a tonal one @@ -227,7 +234,7 @@ void DivPlatformPCE::tick(bool sysTick) { chan[i].freqChanged=true; } if (chan[i].active) { - if (chan[i].ws.tick() || (chan[i].std.phaseReset.had && chan[i].std.phaseReset.val==1)) { + if (chan[i].ws.tick() || (chan[i].std.phaseReset.had && chan[i].std.phaseReset.val==1) || chan[i].deferredWaveUpdate) { updateWave(i); } } diff --git a/src/engine/platform/pce.h b/src/engine/platform/pce.h index 22a24ddf..17e191d4 100644 --- a/src/engine/platform/pce.h +++ b/src/engine/platform/pce.h @@ -33,7 +33,7 @@ class DivPlatformPCE: public DivDispatch { unsigned int dacPos; int dacSample, ins; unsigned char pan; - bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, noise, pcm, furnaceDac; + bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, noise, pcm, furnaceDac, deferredWaveUpdate; signed char vol, outVol, wave; DivMacroInt std; DivWaveSynth ws; @@ -64,6 +64,7 @@ class DivPlatformPCE: public DivDispatch { noise(false), pcm(false), furnaceDac(false), + deferredWaveUpdate(false), vol(31), outVol(31), wave(-1) {} From 8a7d352ec6071c3d7f150953ba81f23c3b249f1d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 00:38:24 -0500 Subject: [PATCH 308/580] PCE: fix phase reset macro when anti-click is on --- src/engine/platform/pce.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/engine/platform/pce.cpp b/src/engine/platform/pce.cpp index 757cff15..5d9a0de8 100644 --- a/src/engine/platform/pce.cpp +++ b/src/engine/platform/pce.cpp @@ -233,6 +233,10 @@ void DivPlatformPCE::tick(bool sysTick) { } chan[i].freqChanged=true; } + if (chan[i].std.phaseReset.had && chan[i].std.phaseReset.val==1) { + chan[i].antiClickWavePos=0; + chan[i].antiClickPeriodCount=0; + } if (chan[i].active) { if (chan[i].ws.tick() || (chan[i].std.phaseReset.had && chan[i].std.phaseReset.val==1) || chan[i].deferredWaveUpdate) { updateWave(i); From 0946d2388301cd59407d448a1e16686fe76a72e9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 00:39:09 -0500 Subject: [PATCH 309/580] Game Boy: fix phase reset macro when anti-click is --- src/engine/platform/gb.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/engine/platform/gb.cpp b/src/engine/platform/gb.cpp index 4d10d7d2..4067e9f1 100644 --- a/src/engine/platform/gb.cpp +++ b/src/engine/platform/gb.cpp @@ -220,6 +220,10 @@ void DivPlatformGB::tick(bool sysTick) { if (chan[i].std.phaseReset.had) { if (chan[i].std.phaseReset.val==1) { chan[i].keyOn=true; + if (i==2) { + antiClickWavePos=0; + antiClickPeriodCount=0; + } } } if (i==2) { From 5534f55f7aabb7814c65693972558a5062de61cc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 04:04:18 -0500 Subject: [PATCH 310/580] dev104 - add "is sample" flag to Sound Unit ins --- papers/format.md | 3 +++ src/engine/engine.h | 4 ++-- src/engine/instrument.cpp | 10 ++++++++++ src/engine/instrument.h | 9 +++++++++ src/engine/platform/su.cpp | 6 +++--- src/gui/insEdit.cpp | 24 +++++++++++++++--------- 6 files changed, 42 insertions(+), 14 deletions(-) diff --git a/papers/format.md b/papers/format.md index ca8092a5..97e22a4e 100644 --- a/papers/format.md +++ b/papers/format.md @@ -810,6 +810,9 @@ size | description 1 | vib depth 1 | am depth 23 | reserved + --- | **Sound Unit data** (>=104) + 1 | use sample + 1 | switch roles of phase reset timer and frequency ``` # wavetable diff --git a/src/engine/engine.h b/src/engine/engine.h index 6f969efc..256b0c96 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -45,8 +45,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev103" -#define DIV_ENGINE_VERSION 103 +#define DIV_VERSION "dev104" +#define DIV_ENGINE_VERSION 104 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index a7658856..4d274e18 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -528,6 +528,10 @@ void DivInstrument::putInsData(SafeWriter* w) { w->writeC(0); } + // Sound Unit + w->writeC(su.useSample); + w->writeC(su.switchRoles); + blockEndSeek=w->tell(); w->seek(blockStartSeek,SEEK_SET); w->writeI(blockEndSeek-blockStartSeek-4); @@ -1075,6 +1079,12 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) { for (int k=0; k<23; k++) reader.readC(); } + // Sound Unit + if (version>=104) { + su.useSample=reader.readC(); + su.switchRoles=reader.readC(); + } + return DIV_DATA_SUCCESS; } diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 18bf2c5f..1c25988e 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -437,6 +437,14 @@ struct DivInstrumentWaveSynth { param4(0) {} }; +struct DivInstrumentSoundUnit { + bool useSample; + bool switchRoles; + DivInstrumentSoundUnit(): + useSample(false), + switchRoles(false) {} +}; + struct DivInstrument { String name; bool mode; @@ -450,6 +458,7 @@ struct DivInstrument { DivInstrumentFDS fds; DivInstrumentMultiPCM multipcm; DivInstrumentWaveSynth ws; + DivInstrumentSoundUnit su; /** * save the instrument to a SafeWriter. diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 2d1a3893..4320798a 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -256,12 +256,12 @@ int DivPlatformSoundUnit::dispatch(DivCommand c) { switch (c.cmd) { case DIV_CMD_NOTE_ON: { DivInstrument* ins=parent->getIns(chan[c.chan].ins,DIV_INS_SU); - if (chan[c.chan].pcm && ins->type!=DIV_INS_AMIGA) { - chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA); + if (chan[c.chan].pcm && !(ins->type==DIV_INS_AMIGA || ins->su.useSample)) { + chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA || ins->su.useSample); writeControl(c.chan); writeControlUpper(c.chan); } - chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA); + chan[c.chan].pcm=(ins->type==DIV_INS_AMIGA || ins->su.useSample); if (c.value!=DIV_NOTE_NULL) { chan[c.chan].baseFreq=NOTE_FREQUENCY(c.value); chan[c.chan].freqChanged=true; diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index f991b9e2..8e405251 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3093,13 +3093,17 @@ void FurnaceGUI::drawInsEdit() { P(ImGui::Checkbox("Don't test/gate before new note",&ins->c64.noTest)); ImGui::EndTabItem(); } - if (ins->type==DIV_INS_AMIGA) if (ImGui::BeginTabItem("Sample")) { + if (ins->type==DIV_INS_AMIGA || ins->type==DIV_INS_SU) if (ImGui::BeginTabItem((ins->type==DIV_INS_SU)?"Sound Unit":"Sample")) { String sName; if (ins->amiga.initSample<0 || ins->amiga.initSample>=e->song.sampleLen) { sName="none selected"; } else { sName=e->song.sample[ins->amiga.initSample]->name; } + if (ins->type==DIV_INS_SU) { + P(ImGui::Checkbox("Use sample",&ins->su.useSample)); + P(ImGui::Checkbox("Switch roles of frequency and phase reset timer",&ins->su.switchRoles)); + } if (ImGui::BeginCombo("Initial Sample",sName.c_str())) { String id; for (int i=0; isong.sampleLen; i++) { @@ -3110,14 +3114,16 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndCombo(); } - P(ImGui::Checkbox("Use wavetable (Amiga only)",&ins->amiga.useWave)); - if (ins->amiga.useWave) { - int len=ins->amiga.waveLen+1; - if (ImGui::InputInt("Width",&len,2,16)) { - if (len<2) len=2; - if (len>256) len=256; - ins->amiga.waveLen=(len&(~1))-1; - PARAMETER + if (ins->type==DIV_INS_AMIGA) { + P(ImGui::Checkbox("Use wavetable (Amiga only)",&ins->amiga.useWave)); + if (ins->amiga.useWave) { + int len=ins->amiga.waveLen+1; + if (ImGui::InputInt("Width",&len,2,16)) { + if (len<2) len=2; + if (len>256) len=256; + ins->amiga.waveLen=(len&(~1))-1; + PARAMETER + } } } ImGui::BeginDisabled(ins->amiga.useWave); From a84129621937389d444cf09fe61544df8194a627 Mon Sep 17 00:00:00 2001 From: freq-mod <32672779+freq-mod@users.noreply.github.com> Date: Sat, 6 Aug 2022 17:50:15 +0200 Subject: [PATCH 311/580] Y8950: PCM -> ADPCM also where the f is my write access --- src/engine/sysDef.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 74085407..c5541baa 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1850,8 +1850,8 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_Y8950]=new DivSysDef( "Yamaha Y8950", NULL, 0xb2, 0, 10, true, false, 0x151, false, "like OPL but with an ADPCM channel.", - {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6", "FM 7", "FM 8", "FM 9", "PCM"}, - {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "PCM"}, + {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6", "FM 7", "FM 8", "FM 9", "ADPCM"}, + {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "P"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PCM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_AMIGA}, {}, @@ -1862,8 +1862,8 @@ void DivEngine::registerSystems() { sysDefs[DIV_SYSTEM_Y8950_DRUMS]=new DivSysDef( "Yamaha Y8950 with drums", NULL, 0xb3, 0, 12, true, false, 0x151, false, "the Y8950 chip, in drums mode.", - {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6", "Kick/FM 7", "Snare", "Tom", "Top", "HiHat", "PCM"}, - {"F1", "F2", "F3", "F4", "F5", "F6", "BD", "SD", "TM", "TP", "HH", "PCM"}, + {"FM 1", "FM 2", "FM 3", "FM 4", "FM 5", "FM 6", "Kick/FM 7", "Snare", "Tom", "Top", "HiHat", "ADPCM"}, + {"F1", "F2", "F3", "F4", "F5", "F6", "BD", "SD", "TM", "TP", "HH", "P"}, {DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM}, {DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_OPL_DRUMS, DIV_INS_AMIGA}, {DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_OPL, DIV_INS_NULL}, From f03123fd75a0543efc5d6af3c9709eeea342748f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 16:22:57 -0500 Subject: [PATCH 312/580] SoundUnit: implement missing input line emulation --- src/engine/platform/sound/su.cpp | 65 ++++++++++++++++++++++++++++++-- src/engine/platform/sound/su.h | 8 +++- 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/sound/su.cpp b/src/engine/platform/sound/su.cpp index 0dd6dcdc..a2fd7653 100644 --- a/src/engine/platform/sound/su.cpp +++ b/src/engine/platform/sound/su.cpp @@ -5,9 +5,22 @@ #define minval(a,b) (((a)<(b))?(a):(b)) #define maxval(a,b) (((a)>(b))?(a):(b)) +#define FILVOL chan[4].special1C +#define ILCTRL chan[4].special1D +#define ILSIZE chan[5].special1C +#define FIL1 chan[5].special1D +#define IL1 chan[6].special1C +#define IL2 chan[6].special1D +#define IL0 chan[7].special1C +#define MVOL chan[7].special1D + void SoundUnit::NextSample(short* l, short* r) { + // run channels for (int i=0; i<8; i++) { - if (chan[i].vol==0 && !chan[i].flags.swvol) {fns[i]=0; continue;} + if (chan[i].vol==0 && !chan[i].flags.swvol) { + fns[i]=0; + continue; + } if (chan[i].flags.pcm) { ns[i]=pcm[chan[i].pcmpos]; } else switch (chan[i].flags.shape) { @@ -48,7 +61,6 @@ void SoundUnit::NextSample(short* l, short* r) { pcmdec[i]-=32768; if (chan[i].pcmpos>2; tnsR=(nsR[0]+nsR[1]+nsR[2]+nsR[3]+nsR[4]+nsR[5]+nsR[6]+nsR[7])>>2; - + + // write input lines to sample memory + if (ILSIZE&64) { + if (++ilBufPeriod>=((1+(FIL1>>4))<<2)) { + ilBufPeriod=0; + unsigned short ilLowerBound=pcmSize-((1+(ILSIZE&63))<<7); + if (ilBufPos>4); + if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; + break; + case 1: + ilFeedback0=ilFeedback1=pcm[ilBufPos]; + pcm[ilBufPos]=IL1+((pcm[ilBufPos]*(FIL1&15))>>4); + if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; + break; + case 2: + ilFeedback0=ilFeedback1=pcm[ilBufPos]; + pcm[ilBufPos]=IL2+((pcm[ilBufPos]*(FIL1&15))>>4); + if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; + break; + case 3: + ilFeedback0=pcm[ilBufPos]; + pcm[ilBufPos]=IL1+((pcm[ilBufPos]*(FIL1&15))>>4); + if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; + ilFeedback1=pcm[ilBufPos]; + pcm[ilBufPos]=IL2+((pcm[ilBufPos]*(FIL1&15))>>4); + if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; + break; + } + } + if (ILSIZE&128) { + tnsL+=ilFeedback1*(signed char)FILVOL; + tnsR+=ilFeedback0*(signed char)FILVOL; + } else { + tnsL+=ilFeedback0*(signed char)FILVOL; + tnsR+=ilFeedback1*(signed char)FILVOL; + } + } + *l=minval(32767,maxval(-32767,tnsL)); *r=minval(32767,maxval(-32767,tnsR)); } @@ -272,6 +327,10 @@ void SoundUnit::Reset() { } tnsL=0; tnsR=0; + ilBufPos=0; + ilBufPeriod=0; + ilFeedback0=0; + ilFeedback1=0; memset(chan,0,sizeof(SUChannel)*8); } diff --git a/src/engine/platform/sound/su.h b/src/engine/platform/sound/su.h index 3b125f03..0ee84348 100644 --- a/src/engine/platform/sound/su.h +++ b/src/engine/platform/sound/su.h @@ -20,6 +20,10 @@ class SoundUnit { int nshigh[8]; int nsband[8]; int tnsL, tnsR; + unsigned char ilBufPeriod; + unsigned short ilBufPos; + signed char ilFeedback0; + signed char ilFeedback1; unsigned short oldfreq[8]; unsigned short oldflags[8]; unsigned int pcmSize; @@ -80,11 +84,13 @@ class SoundUnit { unsigned char dir: 1; unsigned char bound; } swcut; - unsigned short wc; + unsigned char special1C; + unsigned char special1D; unsigned short restimer; } chan[8]; signed char pcm[65536]; bool muted[8]; + void SetIL0(unsigned char addr); void Write(unsigned char addr, unsigned char data); void NextSample(short* l, short* r); inline int GetSample(int ch) { From 6934a499c10da650bf8cb67c70dc98d38f71194d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 18:23:11 -0500 Subject: [PATCH 313/580] SoundUnit: actually finish it --- src/engine/platform/sound/su.cpp | 43 +++++++++++++++++++++++-------- src/engine/platform/su.cpp | 16 +++++++++++- src/engine/platform/su.h | 3 +++ src/gui/sysConf.cpp | 44 +++++++++++++++++++++++++++++--- 4 files changed, 90 insertions(+), 16 deletions(-) diff --git a/src/engine/platform/sound/su.cpp b/src/engine/platform/sound/su.cpp index a2fd7653..6637bfa7 100644 --- a/src/engine/platform/sound/su.cpp +++ b/src/engine/platform/sound/su.cpp @@ -238,44 +238,65 @@ void SoundUnit::NextSample(short* l, short* r) { tnsL=(nsL[0]+nsL[1]+nsL[2]+nsL[3]+nsL[4]+nsL[5]+nsL[6]+nsL[7])>>2; tnsR=(nsR[0]+nsR[1]+nsR[2]+nsR[3]+nsR[4]+nsR[5]+nsR[6]+nsR[7])>>2; + IL1=minval(32767,maxval(-32767,tnsL))>>8; + IL2=minval(32767,maxval(-32767,tnsR))>>8; + // write input lines to sample memory if (ILSIZE&64) { if (++ilBufPeriod>=((1+(FIL1>>4))<<2)) { ilBufPeriod=0; unsigned short ilLowerBound=pcmSize-((1+(ILSIZE&63))<<7); + short next; if (ilBufPos>4); + next=((signed char)IL0)+((pcm[ilBufPos]*(FIL1&15))>>4); + if (next<-128) next=-128; + if (next>127) next=127; + pcm[ilBufPos]=next; if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; break; case 1: ilFeedback0=ilFeedback1=pcm[ilBufPos]; - pcm[ilBufPos]=IL1+((pcm[ilBufPos]*(FIL1&15))>>4); + next=((signed char)IL1)+((pcm[ilBufPos]*(FIL1&15))>>4); + if (next<-128) next=-128; + if (next>127) next=127; + pcm[ilBufPos]=next; if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; break; case 2: ilFeedback0=ilFeedback1=pcm[ilBufPos]; - pcm[ilBufPos]=IL2+((pcm[ilBufPos]*(FIL1&15))>>4); + next=((signed char)IL2)+((pcm[ilBufPos]*(FIL1&15))>>4); + if (next<-128) next=-128; + if (next>127) next=127; + pcm[ilBufPos]=next; if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; break; case 3: ilFeedback0=pcm[ilBufPos]; - pcm[ilBufPos]=IL1+((pcm[ilBufPos]*(FIL1&15))>>4); + next=((signed char)IL1)+((pcm[ilBufPos]*(FIL1&15))>>4); + if (next<-128) next=-128; + if (next>127) next=127; + pcm[ilBufPos]=next; if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; ilFeedback1=pcm[ilBufPos]; - pcm[ilBufPos]=IL2+((pcm[ilBufPos]*(FIL1&15))>>4); + next=((signed char)IL2)+((pcm[ilBufPos]*(FIL1&15))>>4); + if (next<-128) next=-128; + if (next>127) next=127; + pcm[ilBufPos]=next; if (++ilBufPos>=pcmSize) ilBufPos=ilLowerBound; break; } } - if (ILSIZE&128) { - tnsL+=ilFeedback1*(signed char)FILVOL; - tnsR+=ilFeedback0*(signed char)FILVOL; - } else { - tnsL+=ilFeedback0*(signed char)FILVOL; - tnsR+=ilFeedback1*(signed char)FILVOL; + if (ILCTRL&4) { + if (ILSIZE&128) { + tnsL+=ilFeedback1*(signed char)FILVOL; + tnsR+=ilFeedback0*(signed char)FILVOL; + } else { + tnsL+=ilFeedback0*(signed char)FILVOL; + tnsR+=ilFeedback1*(signed char)FILVOL; + } } } diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 4320798a..6c6b0b32 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -529,6 +529,16 @@ void DivPlatformSoundUnit::reset() { lfoMode=0; lfoSpeed=255; delay=500; + + // set initial IL status + ilCtrl=initIlCtrl; + ilSize=initIlSize; + fil1=initFil1; + echoVol=initEchoVol; + rWrite(0x9c,echoVol); + rWrite(0x9d,ilCtrl); + rWrite(0xbc,ilSize); + rWrite(0xbd,fil1); } bool DivPlatformSoundUnit::isStereo() { @@ -555,6 +565,10 @@ void DivPlatformSoundUnit::setFlags(unsigned int flags) { for (int i=0; i<8; i++) { oscBuf[i]->rate=rate; } + initIlCtrl=3|(flags&4); + initIlSize=((flags>>8)&63)|((flags&4)?0x40:0)|((flags&8)?0x80:0); + initFil1=flags>>16; + initEchoVol=flags>>24; sampleMemSize=flags&16; @@ -575,7 +589,7 @@ const void* DivPlatformSoundUnit::getSampleMem(int index) { } size_t DivPlatformSoundUnit::getSampleMemCapacity(int index) { - return (index==0)?(sampleMemSize?65536:8192):0; + return (index==0)?((sampleMemSize?65536:8192)-((initIlSize&64)?((1+(initIlSize&63))<<7):0)):0; } size_t DivPlatformSoundUnit::getSampleMemUsage(int index) { diff --git a/src/engine/platform/su.h b/src/engine/platform/su.h index e882c398..9972599d 100644 --- a/src/engine/platform/su.h +++ b/src/engine/platform/su.h @@ -97,6 +97,9 @@ class DivPlatformSoundUnit: public DivDispatch { std::queue writes; unsigned char lastPan; bool sampleMemSize; + unsigned char ilCtrl, ilSize, fil1; + unsigned char initIlCtrl, initIlSize, initFil1; + signed char echoVol, initEchoVol; int cycles, curChan, delay; short tempL; diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 4cc1784a..3259f00c 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -129,11 +129,11 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool } case DIV_SYSTEM_SOUND_UNIT: { ImGui::Text("CPU rate:"); - if (ImGui::RadioButton("6.18MHz (NTSC)",(flags&15)==0)) { - copyOfFlags=(flags&(~15))|0; + if (ImGui::RadioButton("6.18MHz (NTSC)",(flags&3)==0)) { + copyOfFlags=(flags&(~3))|0; } - if (ImGui::RadioButton("5.95MHz (PAL)",(flags&15)==1)) { - copyOfFlags=(flags&(~15))|1; + if (ImGui::RadioButton("5.95MHz (PAL)",(flags&3)==1)) { + copyOfFlags=(flags&(~3))|1; } ImGui::Text("Chip revision (sample memory):"); if (ImGui::RadioButton("A/B/E (8K)",(flags&16)==0)) { @@ -142,6 +142,42 @@ void FurnaceGUI::drawSysConf(int chan, DivSystem type, unsigned int& flags, bool if (ImGui::RadioButton("D/F (64K)",(flags&16)==16)) { copyOfFlags=(flags&(~16))|16; } + bool echo=flags&4; + if (ImGui::Checkbox("Enable echo",&echo)) { + copyOfFlags=(flags&(~4))|(echo<<2); + } + bool flipEcho=flags&8; + if (ImGui::Checkbox("Swap echo channels",&flipEcho)) { + copyOfFlags=(flags&(~8))|(flipEcho<<3); + } + ImGui::Text("Echo delay:"); + int echoBufSize=(flags&0x3f00)>>8; + if (CWSliderInt("##EchoBufSize",&echoBufSize,0,63)) { + if (echoBufSize<0) echoBufSize=0; + if (echoBufSize>63) echoBufSize=63; + copyOfFlags=(flags&~0x3f00)|(echoBufSize<<8); + } rightClickable + ImGui::Text("Echo resolution:"); + int echoResolution=(flags&0xf00000)>>20; + if (CWSliderInt("##EchoResolution",&echoResolution,0,15)) { + if (echoResolution<0) echoResolution=0; + if (echoResolution>15) echoResolution=15; + copyOfFlags=(flags&(~0xf00000))|(echoResolution<<20); + } rightClickable + ImGui::Text("Echo feedback:"); + int echoFeedback=(flags&0xf0000)>>16; + if (CWSliderInt("##EchoFeedback",&echoFeedback,0,15)) { + if (echoFeedback<0) echoFeedback=0; + if (echoFeedback>15) echoFeedback=15; + copyOfFlags=(flags&(~0xf0000))|(echoFeedback<<16); + } rightClickable + ImGui::Text("Echo volume:"); + int echoVolume=(signed char)((flags&0xff000000)>>24); + if (CWSliderInt("##EchoVolume",&echoVolume,-128,127)) { + if (echoVolume<-128) echoVolume=-128; + if (echoVolume>127) echoVolume=127; + copyOfFlags=(flags&(~0xff000000))|(((unsigned char)echoVolume)<<24); + } rightClickable break; } case DIV_SYSTEM_GB: { From f439bd2234b2d02de7b961bbbe31e01eb4c7ccf3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 19:22:00 -0500 Subject: [PATCH 314/580] CI: Cross-Linux-armhf trial, part 1 --- .github/workflows/build.yml | 48 ++++++++++++++++++++++++++------- scripts/Cross-Linux-armhf.cmake | 15 +++++++++++ 2 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 scripts/Cross-Linux-armhf.cmake diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index da0cfbfa..f3132f1d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,8 @@ jobs: - { name: 'Windows MinGW x86_64', os: ubuntu-20.04, compiler: mingw, arch: x86_64 } - { name: 'macOS x86_64', os: macos-latest, arch: x86_64 } - { name: 'macOS ARM', os: macos-latest, arch: arm64 } - - { name: 'Ubuntu', os: ubuntu-18.04 } + - { name: 'Linux x86_64', os: ubuntu-18.04, arch: x86_64 } + - { name: 'Linux ARM', os: ubuntu-18.04, arch: armhf } fail-fast: false name: ${{ matrix.config.name }} @@ -80,7 +81,7 @@ jobs: package_name="${package_name}-macOS-${{ matrix.config.arch }}" package_ext=".dmg" else - package_name="${package_name}-Linux" + package_name="${package_name}-Linux-${{ matrix.config.arch }}" package_ext=".AppImage" fi @@ -117,8 +118,8 @@ jobs: mingw-w64 \ mingw-w64-tools - - name: Install Dependencies [Ubuntu] - if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' }} + - name: Install Dependencies [Linux x86_64] + if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }} run: | sudo apt update sudo apt install \ @@ -132,8 +133,29 @@ jobs: wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" chmod +x appimagetool-x86_64.AppImage + - name: Install Dependencies [Linux armhf] + if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'armhf' }} + run: | + sudo sed -ri "s/^deb /deb [arch=amd64] /" /etc/apt/sources.list + echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ bionic main universe" | sudo tee -a /etc/apt/sources.list + echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main universe" | sudo tee -a /etc/apt/sources.list + sudo apt update + sudo dpkg --add-architecture armhf + sudo apt install \ + crossbuild-essential-armhf \ + libsdl2-dev:armhf \ + libfmt-dev:armhf \ + librtmidi-dev:armhf \ + libsndfile1-dev:armhf \ + zlib1g-dev:armhf \ + libjack-jackd2-dev:armhf \ + appstream + wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" + wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-armhf" + chmod +x appimagetool-x86_64.AppImage + - name: Configure (System Libraries) - if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' }} + if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }} run: | export USE_WAE=ON export CMAKE_EXTRA_ARGS=() @@ -164,7 +186,7 @@ jobs: "${CMAKE_EXTRA_ARGS[@]}" - name: Build (System Libraries) - if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' }} + if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }} run: | cmake \ --build ${PWD}/build \ @@ -172,14 +194,14 @@ jobs: --parallel ${{ steps.build-cores.outputs.amount }} - name: Install (System Libraries) - if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' }} + if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }} run: | cmake \ --install ${PWD}/build \ --config ${{ env.BUILD_TYPE }} - name: Cleanup (System Libraries) - if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' }} + if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }} run: | rm -rf build/ target/ @@ -207,6 +229,8 @@ jobs: else CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"') fi + elif [ '${{ runner.os }}' == 'Linux' && '${{ matrix.config.arch }}' == 'armhf' ]; then + CMAKE_EXTRA_ARGS+=('-DCMAKE_TOOLCHAIN_FILE=scripts/Cross-Linux-armhf.cmake') fi cmake \ @@ -260,7 +284,7 @@ jobs: mv Furnace-*-Darwin.dmg ../${{ steps.package-identify.outputs.filename }} popd - - name: Package [Ubuntu] + - name: Package [Linux] if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' }} run: | #if [ '${{ env.BUILD_TYPE }}' == 'Release' ]; then @@ -278,7 +302,11 @@ jobs: cp -v ../../res/AppRun ./ popd - ../appimagetool-x86_64.AppImage furnace.AppDir + if [ '${{ matrix.config.arch }}' == 'armhf' ]; then + ../appimagetool-x86_64.AppImage --runtime-file=../runtime-armhf furnace.AppDir + else + ../appimagetool-x86_64.AppImage furnace.AppDir + fi mv Furnace-*.AppImage ../${{ steps.package-identify.outputs.filename }} popd diff --git a/scripts/Cross-Linux-armhf.cmake b/scripts/Cross-Linux-armhf.cmake new file mode 100644 index 00000000..969be4da --- /dev/null +++ b/scripts/Cross-Linux-armhf.cmake @@ -0,0 +1,15 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) + +set(TARGET_PREFIX arm-linux-gnueabihf) + +set(CMAKE_C_COMPILER ${TARGET_PREFIX}-gcc) +set(CMAKE_CXX_COMPILER ${TARGET_PREFIX}-g++) +set(PKG_CONFIG_EXECUTABLE ${TARGET_PREFIX}-pkg-config) + +set(CMAKE_FIND_ROOT_PATH /usr/${TARGET_PREFIX}) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) From dc5fd54544e468630f8b22aff0a5050024b77fc2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 19:35:06 -0500 Subject: [PATCH 315/580] CI: Cross-Linux-armhf trial, part 2 --- .github/workflows/build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f3132f1d..04216253 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -139,17 +139,18 @@ jobs: sudo sed -ri "s/^deb /deb [arch=amd64] /" /etc/apt/sources.list echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ bionic main universe" | sudo tee -a /etc/apt/sources.list echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main universe" | sudo tee -a /etc/apt/sources.list - sudo apt update sudo dpkg --add-architecture armhf + sudo apt update sudo apt install \ crossbuild-essential-armhf \ + appstream + sudo apt install \ libsdl2-dev:armhf \ libfmt-dev:armhf \ librtmidi-dev:armhf \ libsndfile1-dev:armhf \ zlib1g-dev:armhf \ - libjack-jackd2-dev:armhf \ - appstream + libjack-jackd2-dev:armhf wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-armhf" chmod +x appimagetool-x86_64.AppImage From 6594fe41237099ef139a47bad6907737844891fe Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 19:39:07 -0500 Subject: [PATCH 316/580] CI: Cross-Linux-armhf trial, part 3 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 04216253..6994383d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -230,7 +230,7 @@ jobs: else CMAKE_EXTRA_ARGS+=('-DCMAKE_OSX_DEPLOYMENT_TARGET="10.9"') fi - elif [ '${{ runner.os }}' == 'Linux' && '${{ matrix.config.arch }}' == 'armhf' ]; then + elif [ '${{ runner.os }}' == 'Linux' ] && [ '${{ matrix.config.arch }}' == 'armhf' ]; then CMAKE_EXTRA_ARGS+=('-DCMAKE_TOOLCHAIN_FILE=scripts/Cross-Linux-armhf.cmake') fi From 8f03763107c1c9ad1baf01099a9c1572c5574256 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 19:53:29 -0500 Subject: [PATCH 317/580] CI: Cross-Linux-armhf trial, part 4 --- scripts/Cross-Linux-armhf.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Cross-Linux-armhf.cmake b/scripts/Cross-Linux-armhf.cmake index 969be4da..0134be4a 100644 --- a/scripts/Cross-Linux-armhf.cmake +++ b/scripts/Cross-Linux-armhf.cmake @@ -12,4 +12,4 @@ set(CMAKE_FIND_ROOT_PATH /usr/${TARGET_PREFIX}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) From 3c82e0abd4db40c7ff498e8518e86b40e192e7f1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 19:59:38 -0500 Subject: [PATCH 318/580] CI: Cross-Linux-armhf trial, part 5 --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6994383d..3bccc91f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,10 +150,12 @@ jobs: librtmidi-dev:armhf \ libsndfile1-dev:armhf \ zlib1g-dev:armhf \ + cmake:armhf \ libjack-jackd2-dev:armhf wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-armhf" chmod +x appimagetool-x86_64.AppImage + ls /usr/arm-linux-gnueabihf/lib - name: Configure (System Libraries) if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }} From 2c1390c0a11f75d01f126b7bbd748e9c474f97f5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 21:29:33 -0500 Subject: [PATCH 319/580] CI: Cross-Linux-armhf trial, part 6 --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3bccc91f..6d356bed 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,7 +150,6 @@ jobs: librtmidi-dev:armhf \ libsndfile1-dev:armhf \ zlib1g-dev:armhf \ - cmake:armhf \ libjack-jackd2-dev:armhf wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-armhf" From c4db8d514143f8aa13c9abdfe68209d0b7b52924 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 21:47:26 -0500 Subject: [PATCH 320/580] CI: Cross-Linux-armhf trial, part 7 --- scripts/Cross-Linux-armhf.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/Cross-Linux-armhf.cmake b/scripts/Cross-Linux-armhf.cmake index 0134be4a..fb494efc 100644 --- a/scripts/Cross-Linux-armhf.cmake +++ b/scripts/Cross-Linux-armhf.cmake @@ -13,3 +13,5 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) + +set(CMAKE_SYSTEM_LIBRARY_PATH "/usr/lib/${TARGET_PREFIX};/usr/${TARGET_PREFIX}/lib") From 29d84f0affe7897a29f2f6b87cf8b262caf6efff Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 22:01:14 -0500 Subject: [PATCH 321/580] CI: Cross-Linux-armhf trial, part 8 --- scripts/Cross-Linux-armhf.cmake | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/Cross-Linux-armhf.cmake b/scripts/Cross-Linux-armhf.cmake index fb494efc..122e2c26 100644 --- a/scripts/Cross-Linux-armhf.cmake +++ b/scripts/Cross-Linux-armhf.cmake @@ -7,11 +7,9 @@ set(CMAKE_C_COMPILER ${TARGET_PREFIX}-gcc) set(CMAKE_CXX_COMPILER ${TARGET_PREFIX}-g++) set(PKG_CONFIG_EXECUTABLE ${TARGET_PREFIX}-pkg-config) -set(CMAKE_FIND_ROOT_PATH /usr/${TARGET_PREFIX}) +set(CMAKE_FIND_ROOT_PATH /usr/${TARGET_PREFIX} /usr/lib/${TARGET_PREFIX}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) - -set(CMAKE_SYSTEM_LIBRARY_PATH "/usr/lib/${TARGET_PREFIX};/usr/${TARGET_PREFIX}/lib") From e2e0fd62a8610b73696f343901acaa88f05f4273 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 22:05:16 -0500 Subject: [PATCH 322/580] CI: Cross-Linux-armhf trial, part 9 --- scripts/Cross-Linux-armhf.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Cross-Linux-armhf.cmake b/scripts/Cross-Linux-armhf.cmake index 122e2c26..3e490ae1 100644 --- a/scripts/Cross-Linux-armhf.cmake +++ b/scripts/Cross-Linux-armhf.cmake @@ -11,5 +11,5 @@ set(CMAKE_FIND_ROOT_PATH /usr/${TARGET_PREFIX} /usr/lib/${TARGET_PREFIX}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) From 42a0ee13b87f37028d5b5b44a4ba22b7546d0f16 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 6 Aug 2022 22:26:18 -0500 Subject: [PATCH 323/580] add two demo songs by psdominator and LVintageNerd --- demos/Bullet_Hell.fur | Bin 0 -> 60233 bytes demos/home_wfl_opl3.fur | Bin 0 -> 6367 bytes src/gui/about.cpp | 2 ++ 3 files changed, 2 insertions(+) create mode 100644 demos/Bullet_Hell.fur create mode 100644 demos/home_wfl_opl3.fur diff --git a/demos/Bullet_Hell.fur b/demos/Bullet_Hell.fur new file mode 100644 index 0000000000000000000000000000000000000000..48c50f674d7d8a4c9cfbb2f632a1d1de602a617e GIT binary patch literal 60233 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

    fwKT9VfO-l=?T2)ADbrRsgN;_>)4XxB^Te~QP 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 diff --git a/demos/ecolove.fur b/demos/ecolove.fur index 9f287ec6111aa5ab1cc09ec19b6382ab8818163c..4fe641c9e29228d90502eae208785ca0f0105550 100644 GIT binary patch literal 57812 zcmZ^pRZtvUu&r@|2MBJ#-JReBcZY#6KyY_=cL^Q__uwAfb#QkG?lQQ}{h!Y{_kCA) z?OtD1@72A%K-BJW>vRU%bgsJ3Sat1&FZkZo zF&F4F8{!RQBh&U7j=${@dOWlxm}Jj!9SCXT&q&A;_J4`~sW?4|7;BLl;L}%qTLWD? zaCHRrSoLkpanh>@-3->_I#0%z za!8XQlF8uSGRs6c{L-Sg6ar9Ls(UfqwwGlp%bG9xPI_jusYx56>@+vOlh7wo!Pf8t8eFt2 zxKmh)tE?s!K+^Q8+OU%C9}Hx+e$XIXV`%eN-a zx3MPP`)PHZcL2R5HZ1U^wn@bgvh+C5{<+7^y11<`>6$GO2ODH2&*wFD8*2FJj_HvH z3GXJ)n%a8gHJISoW)uDS&*?uVO$15N6nVZRixOcIrQs%9BVr4dF;MB=MUQ5@$nKMb zQbAG*u%Guvql9_*sK5z{qw6WukS%%aiY)TvQETiIk#AJgN8k7NU8!6ip0S@N=&2ia zcBA~>=c3+@%BUfc(=z*g)6)Clwp0y1M&CUGIH?xVsBpR&sk$7ZN27+Y1y7i(8ELZnv9HvSv_DaAbwX4<)$ybL7}(w|f>f2J*sFBv6*1pwlZn!D z+ti5wpVM%CWez5c)Z3aIwGJN>$1g^t50Iq_A=xJCZJuUYxkR{WX?sNt?xtFpN(l;n zHd?5v(F!LcgVp3~)dk-Z)!Uw?%KiRbma}~LYIXZMY6U!tYkhn; zY32H`FgdbBkC&FHuRhvo0gR#)KEUckchluce$-5jIx+`^t%Y2k%32_DnZh+LE^e;I zYp(5(>aN>6cbX$I>p=Ud6g52q1bS(1Dz6*i_jIEATJmra)b-qq=nQD}h4-a2`W@ou z23MC`2wJ-bxxMbSu;XChyKr;FCEhS|>fOuoG@5LGzPpY^`6T$;v@scNy8fX--MiSg zM0OGO4NkugZ~JTBqws-~#Nu2_E602_qw-F-h{%+vhv{3O!llQ%E5y6tt|wyUKDmVfY7nB#$NdcsSI`)_zg?%)bo~lBa=3pP>$4 zUHvDA(zAz$DUZsETJ-N+uD16kbvbE6t*P#>zg*;gm<#H9nPWkiD*gWILyn94D_N^Q zt&lg_7_YT}-@>pe)^rb_>7$Rt$d~$hWE|fseIgE$~qwC;oQUjr(ZJ@2oJqgkU1iw_2Yc z_v{PARWey=d$EbAR!wr1s0e;UlR+ml{>-0HvO>g6nwEOUTEh{}z2i4l>ofH0|Edp# zvM#spWhY6ELDO|hb}ehyzAgW@k4P#1wZN%^9Y9=$hML)FUCex^--_XPGR3t3V@k$l zQxG+|n20ci1N*f^!s4QB;{Eb$sk!d!6?s{svuF%CJ<}0;rl(XxC?n}|->DwYm+|a{ zj~i$tCf&k?ar?+=zuu3o2faWtdw@qX^wL>~vYhFZ$VEBJZ zNuiF#{a9-7Uz@bAD1|4*O`zMju=@W*vzjvWx^;I|oCdh9E009vMZ3LbUDmgA=;+pp zECFS+(|=s__=2W}pRHc91aI-vr*Z@L;zz<#qCLL--{%;FvOF{<6;zcVg8wGSgUuQj z?hdRNh*9aXOP&%hzwycn2l#l2ZUp?Fc=%6AqaAK_CNWM@ZiB;Ih2*WLrbdrdtVL1x z%KpDB%!0q0PsQIJZMIwen?yTIQ~7;9Z5iR#5W%+(-6jUew3eNaSEBuNzhC?L?%rg* zy7#<|NKN zo&0-tdJV>M`JV}IXYT|vCf-l`4Qha1w|=)XK~+0a@ILO4nIID~(&b2`J9~8^Gz-JywukvsF4UD?1J1mGi}A|9HRJrr5+f013!8D{4N>RCE0A;+oeM(WqQnWUw|lfZxNy|7^f4y1x%K`ekZq1lAXOuf&B7Q{ZKX< zU=K`s-G}uClBe+R=Yy#E!B(rxz%UY_A2kE5t*~G)m;CrXB@yxpfaB8h`qk46UzD|< zSNA6<5bh7Lp=Y~r&^{^b(%#Rc~=ho`|O@t952FM7L}q|f}iFvxS9)>XB+|Va-h5tcAG4}&+~?n z(i5)7Mf_Fjt_6=8^B28%LF;Fq>EaZ;<7QVI5A-Ea2oxnVH@I6 zA`AvSY{msd+ixvF&y>;Xi6*})RV>7YeVp<5fUP2f2x7U)T04#fBOy{QtkE6jyd`<< zM7zZ=Pd;djUL&H~03+1~g2mJU%kON6XJK{{_b$Hg_~%xQG^?6`{#N~ZoPpd_kb=fi zfuS)5Gb1p5J~~LDzq@X_#6BK^&Fqp?_o^%eak+RkFkv1vdy_@DNDYP1+u0>miJp3p zdcN#+Vg$8{d+c`J?;N@rd*W=R1qC2K-SGQ$P{?i#>C@&PZNvUkiYralgnh}1JrkuR z2!*)s*ooGypgei*jpOB?x<4K0%s|!&PiWNm;Cs;OUTW<6-MJh*pfih zwr9_4et4nP5Yd_t(g5r?VIw+mIIMyU=_g^__gr|dZulB9By(~JU~S0DeJ@*rVEHwEAWM2P26zBB+S5chJ_-W|MjrQ9$M>KMp3iHu)> zFWiRu#Q|vxIrxCd$?H>bBaui~Os=o^p@Gx6o!o-gT?1AVMbs5_-+Vz(F_F*;?ok(_ z_ZiAZSYPd8uRC(ps3RqHTb*&%aXm#1GXgLVUO57$Qa!12HtFAeQW?R1&+NcV^%)SG9^o^pkN?3MHsY*c zg>`l#wf{-|fr9x1&tpjzzckyjIl62wGpgHw}J{H`T*=J-Ha{Ma7VJvjrVBBS~Fw540@9qY6ko(?~W>8 z)t*tDu6(=!{L5unNs1=FhA)oImf=6q|ibBnmWlEUbuv+RHCWHfXFJ98| zAm5bKZ4|BtJhM#av`Zx}g#R8cK2QeJhk9&D%46IAD75p8^wmLp+E+Xnw%3|sN)TON zLxFw<$oG{3u6yb`7V^xv)e&*fHqDGHzSGb-np4{Dt()Ik;#T$!vqxx#qa+Sc8afU0 z5zxzno2eARqJ&fuVVsI2r;jL5k2iM*!`qH}6rTT1oB!jJ4lTh^ddPZSsCH(ktpbd< zYFr)Way4w&!H&uo4*X#FP-hn0FEzbUj-iLne&a~#hz;m7W_!N}n)+-hvqpkz^>-W{ zK}G4$Fjl!i4m^^fQ*d;MnX-IAe6Jk4PBWdTvLnI2yPV7eor;Nd&%;!-_T+GVDkKAG zgYpTeL%EJGiEX?HtBL2D2|#SUzJzrZ@Vr~ph%YcmX%_dioQ7G*s49I7-<(ybhZ+0R zz6HtS8Iy`lWjsvrn ztO@+^!=#4qq6{7}6A@*?n2=Oikj}q}M@|R$>PN<21y%)-9S0=DW%xtHDm@qrNJe0fI0< zEsVg*Srs-pFy@LFAfrUi%BcIK>^%WI&rp*;*Hq(CkUqjBE$Od zM*CkS$0IH5U>#98)|AAdEKYN_n8qOZAf2Ew>-{B(H~-IX32>*HoRTQriSRT+L4@Kn1 z@1RG8nIh5^%mSr51kCV#Z)P9x@(OWgq|+9xS}9Hs+G_&*DPh8w5aOLvh7v>R;$%;}&S=gY+cKp7^DZftNi zgSX3&k$ER9s5p;9Ao!367i;)^URi=I6+TuKeIbOAQ-M#!-SH>-N`%ZX4r7f`^GsH* z_i1!dk^yfjXbA(!{2@P4!7Gvyj3=ke@ttgiGVNb0@F-L|jSLf?s=3hiQGdV9I#dRPz z=?L+ef~sfMsf_i%#}i}4Ov0G+_YR1`J)^*X1P1|pvm&4(^3MW3wxt&~!T7>h!hf7( zaAj=6XhlfeDiBMUzjB5WAwD9}u;x3^c4Htfyql5i!G@KNfUWGRnGb zIBv{oH5UhL);+KZ6kj3e(lI_~iYwy0r|Z?hB(_R5QnbyB7bUr=K>ir+l|Fd;K4Zd= zuvpZ}<>!b{>YgtPZ|4NxRDk6}CLcYHgpUD|ji8LICNyVf5X5%7iqAcDYJTbRCv3w% z!h=aMTx;lSx^Yi!@Kd9OUDMe;-|Q72>1l==A0RYm7(NZXb+3^8`62T34MvZ57qlfH zC8CSfn+)G}5#5OS?*&!di7=^rWGtUd?GHa}3|S#~7_W(!@(zGN$V^D_kY8fcugyyc zWGqjXMr>=z;uFDj`r~+v=sho269vZA?)4?vKh_4VqmwR<+nBB43U3TRS*=R)pX6RT zV2?{8u-83?1OHG93OMpu@sUzT&L|QA;J;2Ct_}&v+OJb;+b}A(tS-Fq<>rq&S zG^`iGiL|39`n3iTp}M%*#+Xl+XQBU3+GsBn0O5|f@eL-hAXk?|<=cB?I@N_cs*wIu zitI@92pHpS9(yjfh=LT5Tfmfaf9_mC1vEh(H?7v?iwb&GIVTZQonPf^C%+Dz%>;g- zrs!>MzT<`ut_K9MfOMtobs0awKcK3W{hBMR9~3w?2A^y#=I$+|9h@E?c-}ocK`!JxsOJa>msHN2(RQKKL38` zQ7Enx`Aslv%fN|6MOh2HiR;Bc+9iQ;?>}Czvx9qx-jv1ZjZ`BLbklHMk)Upr7M z!rJmdgW?sDe-8F*8L+}Ta>=E=a`8zgZ8=HEKFeUlctWlPR zbwQv+Et8K$qLQrC%wop0g6>G-S5aIhms5AHXH<)zn@^h#k1wQgp@gUD(`+pn^&f)OtUd$HM078?MYgLnu>Vi&Dk z5Bk}*+c}*Joy_E=GN`Bt6I(-*S6sxEECBoy%2fSMn043Gw2qPKF$+ITi1#2htuH_w z*}@PeDzy&{cw^nM0kW?Iq4(-e-&9IyA4IK5F764d*}#aD+4ynOip9EtVH4m9`57a4 z@6_BEoSLZ|hUXQw=OdXJu!p-NS@0IJ7xr37WuhpjW($ku$u9y}n+x?Nn{ZLqYK4r7 z?zDg7yEd1lb!vQ5mld=xDN&y3N4c*LPnHxNaXg@3JVG}t@|!9QwA(+gNP`s5<`3t( z-<8ELSstjjLrzSH8UGQNEzHG4T2*StxQxl>5H-2jar6JTCy-Zrz%Zkn6Hp*iBeo4o znp{1Gl~FtZDORLLFrG0{+w?8ep1kF!7;+tMb+ll*z-6ks^IM>VdA!GY7-Kc{9)TK!;2e+JsPlkJ4Xa^!ThvXL-?K;{PgMl97B>z@vPzVX_JAsq0j>$JEBan77Pjl&qd^5S zQip|t2J_F@ux9Saaz$(zlG6&3@;=GTKl0%^ke)1$ssz%?qDz#L^4U{!wl4WFVxoWd z7$6|w>KMeXBVki+8jr3;-BwvLmBoKi4RAVEf>6Q_2Gm+qikK+aF}Ee>Z<*;SHF_Ii zRs%EBw!R;CXVoXxK67V}l~{7yZemyFQ0C5()=Bp_f@H^v z<0@&Zj#zq0EBBPja+~Jx{=(G&59+pkrpPcqe<;~h0A}%r$tZVo^4*#N)#K*-a|1Ht zlj*U}GRTwHBgk@PhQqb1Ndu;9-2bYIV{Ew=_Pcu~e(bDEV`<3doY zCS#n_-9G6qC&5L0(8b`)H4Q1~MG5PnYj$3+dw zuvadq&WUo| zptRZl`Fu>ynyk4yn$t0}vD$BKPX{uoPn%YsoBM;`mXvjA>eF5?9b|4$Q+;lJuvaAO z0*96jqX~+w;1ZQLG@fOR8)ZSK}rzVB65b&dg=YhDEaF;Ai!HIURMs-kE^2ViKD3 zH?dK=uE7^^+*X>=3=R|STt<~og$vsAip;O7YC1T=)88#Qr;;YlnG~#kE|m?+OXE(5 zSy%5aQ4bToo4JN5Dfm;@CSaG9cQIK|Ls(>dI6Hn*Ke$qx3tH?6m1yIe@DoOyk1NAl z7CHN5=zvkU*~eR!c(Yl}MEv2s*OlTVn>_VXQ_#nAqw8__9-`Ks^P(#N-Xl!emc)S; zO_Prj78mR$KTYbnXQE0HR`e=XN$8cjM!(9auMu$bbIhu)teK>A;5Bzfryyg0;Lr^z zZ=~5D!Lz2bv+A(p?2D(q%d!M2A>bc2J2MMTiG8mg;={phP1Y`ruK<)ga>{V8rjrnP zBw+7FamMPW`VUt1*p+tik#mfXZVpNxdQHp~hF_!JaH-p3T9%FXZb{8eTP zcS&@JbtDed1YpHioJaTVE~w0oBqEDn)!Uxr8%nS~PyXRAni>l9JMw zxfoR59D@xW!5>$dkeSI^nwCEA9GYF75FtUyNFl)OXm8VBnZHZQ^j6+DHLd*ntg_OG zPU(mVs^d;BAKCoeB~y9NgG9_9%C$z&{4p@*5h4;UT#e!D7ax^vP3%RLE>msT$GNq9 z&4nXyYT;B*N?(MdykLKX@jT1oaI-xZFu!k z!EyJMZ~S&9cdSZ-^P6GeY!2_{6OEtLeG==^yy|cKao^kY&<_2g z6M-8q2~qdfME?mxJ*h(?nO;N0*Py7UjH2%!t7m&C+}6lsD)M7x?W!(kK)Q-eu;Y*= zEwuN*Ad-dEbSdKL#oTJgjNgQIescL|F0!lbZyBZ>J7QFt^Hr6fLoPxNM<^!iq5A69 zw5*^vV(%y*LD4hwmSP}MZe1YtU;*I{~b;?hd;(wprg%LSX`ut z6_fd<=AmTx2N{7_`_uLULO{7uFjXE2{zOMGuV}Op+0s)vAFp$GUllix!4(_d!}x(h z%;6wH2Q?v7mEAd$fwbOG+5Qzr|(IEV2_-&vI-Ja@Bxy#FCOX z)-%RU=$OUQSIa&M&_`w=A1nb zfBnsz_e*h~IE(RU)UQoklyy59tY7aI%ks- z3Q0eF+8jb2U=T^Iux)eq##ZN#we3-_QA#|r^*!*)6y)i&Z{MVC1wP<)I-phC*VkuK zHLZ%Az0B}EaJ2F)e8;|cgnWB$ev|nKf{LZ&LEgn6XwNBcIv*r~SHpt8y}k2<2Rp}) zW~Mcqel(735Baj+ZsX)zFxF8p(sOD;%+zjh+K5v-jk*y~1GKvtw=L`^q22z9-BiGI zlD@vm1BJFPox-vf;E_zhZ}`7>(E&*#ge9L?nVQr4BlX}L(Y5pwug<#ouJm3b?U8?bnUrKX{OV(MeQ4X9% zqUPv2=th@eax_e5vGlqj;+3e=rBOPGFoU;_Uo-btzpmzUrI9vAs2_W=3G#6l=Fggg zl}eZquHIWzV*?~ic6cPkPq)-n1ar{DkZr7g(4ST@vp;)xh??k~4_*IWnj5|gz35{` ztG|0Aubji-`*NI$);x_6S(-x}{ISpAWF>)%4NAfLc}$ie4@VNNY@sTK7#CT#f&sV! zZX{24ywB}^@T7_(?~cCE9`kKrBxobXBbFtVWCjd({Y3m+Wf=Uyj+8e&V&%$lihlj_ zT`$2osPv1ENYHN`<16bHr{;EIpYFWXtUv16eHHf$@vZsH%vOs=1Fv{Zx&_qiw<#?d zV`sX~!%UzXrtY2yW*yD4twM)tX~#cZ>v~v?@L$%EE88e8V0iw0zC{6?uLWlnWp*4$ zHwg?)G?T)d`I4Tm8+S%Znnn&V{q6zGa)jX#(*gZBroLewQH-o%rsxAktA;_nOlr8d zG`5*P^;s!GFpWHxd`-}NO8u3_9>D3TsJ@(%)o$e!@lrVDPxQoile zL-HWh&#>!{cCQW!^V{8tdt&`+R)( zM3Dz~?fZ|N9%3yo43F<3e@@S-XJ%jbukx3FKrEZYW~iVz3t9$#$mNw6BM>QYGDXPg zc5CNz_edy3(IzD{oH;eJr&t*(V)vL+XB-$R-I3Vo1-Hjqa#?xUgQ?e)YfsI*=rJdI z@!wnikX$W_k0~*WR(eO3LZNU;03)(EA-IbS>y5WR6HWny-~)pD zSz(NqCFe+uk?c9?pDbrh)_bYSQ>HBIM&zeIAD1u>26`udvH46z&hr6!_Kx*kV=Xa4 zO>iv`jBec-m*3Mb%WwRaRo@MyMSG%KPwZJ~1B*(U0a%m4IwA~~;ihNp8l0sbh7Pg{H^(i)%uWC zo@qyvbKSX#S{u zJOi%VWba241wZhxOyZ3H?OuGXVAoQ7geiswG$B8AC+1NMLSOYNKfdx@OMsqXrg*y{ zoO*KAZ9if}^Q3&q@y}^(;$LEyVS-(JXy5yYds`AjCC&s};USw%4!*(hkmd;9TRN<| z#TpmFJRnT_U9k>PqFM|eXtra%5?6fFI{yY;&5zFQC*S(&&PdzN!J7kum;SkSj{u{c4Ei%RGXyFcey~zacB)hvm1_-i@L28aEA) zXX{a5v-P{>p$d8K%&Bv)Ps&hYfV^<1%`tc1a3s7ku_H3x_nEi;@awknAP0NZTq87!pY8u{}h%zeH>c)K5lLo)A z-5V7RvVthOknJAD_Z~UR-al`-#}Q3_V6CEEqDUY~C!uUru0N-Y~xVdbjkV|HP*F}VSd7O@CP>X?;0so9f zl?mt(-)o1ZB@4y+t!Ng)H5HRv1ofX%Sk&;-L2F3Gc_>b6qiN5_2Pyk)lE_WMKXQFX?q zH@=Q*-OAF#Nfr60Et8e)L*rrZgz%}I9UfX$$M5D4KW2lWxYifV?g)-GQj{JWzZV3# zWg4p%pKa^Zdd-uZ994D3Z;9lR2j`M{(Xo9eiYJN-I6ow!J3?Hp_2stGp8RNO_7nm- zVlEn+xL+Q*|H_mcxI8#`CWP+19cMBFq^A-ZW7 zQJgiSW@)B?^?EmR?3%r^+?PJi=_i@KN`I^FS?zD@M;eADhOK(=>$wrEogwc+C-Mmv z_DjIIKxuo@>lHgZKEkmwf@7f!^-tanA7SiZl9|pKK!|W>M6L zoKNjPJBveY1#hMUQss*|=cUH`NWYVgutlY=>OAI#dP^*e=>slb=7Fs|9#0N{Jt<(? z&x0VA+?WT@Cm29lOzWB0Kfj^&3Vt#^<4> z+8PkdHG$T2LGyS%HkW6K!>xj`ndwrV!&y^2fcLrdpGWg%l|UKgP(lpm)(Isagf^ky zh7^{%%n7Zt3pAsN3Q5T?!>b^eJG|WYfh0=9*HsGPmxtYldc(8A(>I>49#^ zlH56h!jT?xvdl-^KH?ECZ58lLn(<7>o6GEkr*b<%--6x9C*JXWZsRf!h34@N71% zm}|-}4%Eir%gnk>$84>#v{gTsZnOoOs79AFQiFRxq#1Xttn#aFxUFo3(>UC>V>P$` zL88w+XJMhfzCN10*472mzG&t0oY84rP&+&osj!uA$0EeekjhaW0~hV%6{m@CV{ums zgc9ap)I*MFoQj({ryd9eLB{sQ$wTrw4`Z|6XV@f_kC+iHM@U#N*lS6`S+G;qnI^c`GCWOlujRJUtas-X&{&f z=NN3<@Wp{Hk$(=0MBnggtjN~Z-e7NXY2DTq{({W5D^9Drv7vcue7S>kb}X~eT4u^{ zqB&(!e*Lv+)we3XGCvJ%txak|TNI>oX}U$mYkA8hTzPc<-xrXW6fyeXF)pj(YXLxC zU#e8v_n&ByDbv)|dE5}I-^t_7I$Sw!FBeZ9YY5-w`R)CB!3mAzOY*B$(~Svrxr>jL zQlHMg+U_BFaVPMj_$ob+<+ z@RO?KJKwl3^7<&B{rCLm>9Lbb^Nzq47(OuF4!EiWj>k1{w;K!)iEKMEXE&M>8;a|bya$+_=T9!Q9$2UyjGH747jD)!6ycCI4GLg}Qg9fBf z-2x5bVHZiBS^Br3Dde*I29Rscd?3=+C2Q3_vJ}*ZPZ0~r^E7w`f$nHs@($eE=repp zPTZ=iLLUN4-*NCq1o3Db_h+ z^3l`f&=S8L-|zX^xes5_rkb(3Bxh;kU}^WJWp9b88-Y|mwt0Q`qGb@f`Er@_&P6{2 znAzdQsfl14fuM=NF81Gy=YW&0n{+oqTG{YpnWmw7L(a9a(*dnsSv?)!^|X3K7=Kho z4@rN}e4A>Ec!uT=99zy2)hH2TBgYU)gsY+#ZaWruxS6p3OBJt6$_g#vPuBSYqrP&V zpOVVYzvL{ zBrzz5W`g>qd#`d1cfR;y6w??lO(4EVx&xRDCm)yFY8UV1;7eGCe(ms^3^3Og(o%5? zaBO;?-z9N_b~`O^XFd<+B5&WsJ8ewN@gJ0U=Z+7T42WdW0aMLb7T3RX(qut5yu7~Y z<7)l|7dH0urv#WuH|EO6gGWfi8GIA1W!GfIOWm+wFaaP7#~x{`=;LBaB{t=g}b5*a|*Gf)Qo z<$HiA-h@;{bIcY2Z>!AoO;(igHn^|arP1#m*#BP171^3|dxH6MAqrlJ*$ZpN0p2kW zW^udk)!O(^t1YjI3t5WWQpls@&I(_tRyW!kud_97#(rANt35-}iT`V+T1!GodG$un z%~wr+U^;NT2X~udZ2AE6nU&@eR_%#4?oHV3zywsU+s~r0JgGJkdd7Vq?8|)7*dX2w zd%4XJo4K=~4%w%AR+xLN-CI*F5M!0~q%A#^QAOkDD>ptpLF*kWPVH7c-#(ap`4Am-+NW3;rC9bYLz`9t2@IF+ z=ET5a`;=R3fxq~#GhkzU0J*s{TlFq~K(>wyMl^Zpw!w?`N!tbowq&~jxQuQjf2%G1 z(ei3DD!+;pNoV$274v3D_gna~D*xF))my%`=#>Aw(Pu{5{Hu~Oo}DWPf>D}fRk$S9 z6_%*o>5$XK_{3G`6|}T1ad&u**=DOT=!-U;GBNpo2TzVx4j`cp0?5}B6c`BhygVP zH6%0Eb@cK7u-HCkB{(l8wS#d02cN|%VHr3$`nKPdrYV^LEFEKN%pfNzO3B`sZeF2B z-4SQ${S9x}ot`U!svjhL*AAnh@?yTIE0y7^NTOkX+x7|d?&iHybZ>gJY7nj*;U0iz zG|i5j0)gBg0Yh||0f;==SYv`{zkt1SH%Of8<6-vR84m8nBsMiacQ0FdA!8P$YCV{j zB98SyW%5^kULN;Z7T%ult3Q2*7Eo>_`-S!X-(jx^UT?Ca9gZiLNkB~qh1uHOEuqBw zxQ+vNE^-?MW6I8e3i9JL;zPtEe{kdWG0l$`zEX3-F(|PU5J5i^`CN<**ChETsBmGu z!AkcDIE`W2>NMut_`_jic<_dIKX>2*V=KxV+)?oN7r*s}B%J%R=&}Z%j|! zE4v@OYPQ&B{{V6yf-}V*I0fkxhdMCT9#k_EspqIpzSQ&16Td3y;;VlCnYC3ynMHV9 z9<>$w=NRsJW`l?;Z)CA{@5&dvM{7WQ^QAD_xA!$~pzNg~5ZMiy2+{pck~j;t>OZj1 zoAx<2<1`I(4)TluNjR3ROotzIBW}D|M6LvqS^9;)+$eYUC{PGeknagw&3*2;cfsIS za8CJ>l2n7WxH3#@S@bM%u1wsfICp>Z=t$M0LUD~VZ<&sLn~{}y50|1xAxTrP0{zT& zWd4QjvRg0ojpSu{N9e@ghljeRSb4R7wid33ndmMKjhn4#(vm_o7y&Re`*be zE|;SK5iZz*$m4@*RqNtP(r;?B!uYv(+kaVyub;C@l?))!?bXz+^vIp-w)A~q&;@kL zkOhvlWZ3tsa6R+{ZNBD4z9;6R^iVxsQ9lArQ|nT)rB7vCrA}_dkXFSK$0qZT@%d-B z-AR}Iz9k7jG14Us+4Dl*Cc>~T23YM*?IEfuKQMV#u1vRiPTr?y+I|A`H^0{bD*@RlnSCup9|!D>*?Iqqz_+TEWqr-K)@IKe26#7!(t!-^U$KVzPCR%`Hfg_-R0~kzH3`y zZ29kq+&wePnch(Lbfx{S9@nMl5wOLj7SQuW=Uu}1i9oLn8oaqoW3N2_ff8#K0DrkX zgp)!qQNho#>$?+x#?LZ0G6?!w)(go)y9EBT{z#^83`F}?D5_TdA$V-f(<$GbSv|6W zfzmkk4lAlRu(`W-viinvPZU-Psy1^T0Avfbj;{$(yb{3M6V2!Htm=S2T}m0gTJAs< zS6-l|C%t4!l2BSVsH)COp0uiC=;;AS>=<8K>T5N< z^kXq9Yf2nA(AE}M8U{DUcfWC2@$2b~6)*mym21+V9(ZX|d!p&M&J)>c7gFEoG2M85 zpm^e2MHTso zE#g3@_VK{O9GZQ14J>HY%!aZKe*?mIITS8`!*T<`#5}aDzdSR_(wWSa_4=ki+S;Q( z3Z<;*ayi>!fMd4q&i}b80Srx3{xe1{zvZJmP8^V+udE+E$WuKQt9_2xh#M#sf3ak> zA;6zaZLwHksLlgA{@;`SebDc_IL+vF*S7WnFV?GPZlv!XfPF;UO+%7C`}j|>m7n=R z3Eg+jC|!RsDm&CI`JAjuKXjdaeL|shE>Kq6e>z^~B9+z{z@v>LqS)-xa9fwB0i{jf zemb{yGcn~=?h+DDc%U-Z(%?U_P~yO!ot4L)2K@CO0VG0=Y{peggv8r=Cgf-W>3M zzvZCJVeK7j@@*MRhUAF^iSr+V52SSCF1`({bx%vZ_6+XtO53$^ba}y+L!^0>xtC1y z4CE;YZVAC<;hC0SBLv7rFz+==U)D{NBx@Xqh%@Jw{97_zQk1XVDrhQCP>d|JYHg_j zRNnlWqrA_rwS%Xk*>~?ztV~`}6-ST%4D(bT8{>AIr_j>-JlNIwSceL z^z*XCFUA>T5ecHbplYLrWgikmYb_{`abVQS_CZMxbf~DeizU}>A8sq(IE=+U6(rh%Q}b zFOs77X8{kCV^5*KVkpTAR_tWP0=U7*H_2!Ta2B}nLI6qs)NQt5xOF*1T;!AABd#pN z8vfnj)5dg+Oq`&ewL7S<{mrPq{6zpDT6XNYOc1PjuG=`HrJIfE;ySM60tDx)8t-#Q z+LC2(@&a)Sc?Dm%l|q)9p21&<6tcXNqDZV@@uiUPLvi>&zbZQ4+Z}&=v4RR@J8`ek zd15>=sKs$k;(Iz9;Oh^i9(65I9B+7vEO#440O$3loS@T97NuWyRa^3}YFRWo=qomD z8Fz1umR0_md&8Oi?ll1#3Mb2dp)6BRVndQCVAd^yM)VWO^yYFiKk_GL zC_%p%TfZ-5eGl=7XrG3fzg-F4d&2#1MobbL%|72ogdsb8t0fpL*G5}SgqBDw-<3~t zx*oKI^0PC~w!<#qy=UkgqKR)+4g9JvO@ z#4dj6C5$aBJ?5vRcyvRY9{I(<+@~Iy_vJ-1|Ahqn6MhXi)W0`AjAq89J2`fmn`Nta zdx`%KF+k40*%FI$fd8jh%=LK|Y+c88EjWJ_sB#hLW3WHTODJ|JpU1bszc25m6eOjj zn{9~={^gL+t&{+_2J{SLo5yVV_=8E!;B360!+QziqNlm8`2y$B|6~D_;lGc+*|5JS zAku=9;Vd>8XVbGaB~}Yar$ZuU6aP!V=d0)!t_20I#eXfpb>;puJ?w+c=)yQYx@MTg zzl1ix6@!>NL`D~y_*jezmhEq(7g+9Xb@7ZX;PK<%$Gm2uVS~4e2u*p$GK>8icD?jn zZalGv_&0DnF7s#uQ}B13P1n?7+L3^HJm5cxcH!f&07n0>W^vv%-0I+R$o=`S8K<)V zev0Mz30@Mh(F4VQwDkdlnb2F}B~|vcbjY^b{?>CvxQwg${+#GluIQNpm*?!v=V@CS z<+rEF@nB)fOI!){=TqxI)opz2U?sP$Fn71IxbbUYAfZ|lS&y?iF$tKN^}tWsqQ)y& zOmr!v{(R8obZ+!;BJmvWCHGGZ=>Is%zvAylLoV^JpOuCJZod%citquzx6958w8ZpH zyV94u^6`>aIu>j%+7&>v9`sMIcuQv#TK2bvTLhF7|2pqsBauL&Wv;#Fs)f}f%#CF;se3Nz-cKeS9%z2z^C-py!&#)? zj}H#Zu_gNEez}_+o3)`WECqK3H)e*ATmaFwx$+pjNAfO9ueP!1YA>-r#K%-Lcq@`F zAKSLS6kZE$wbc3~;yxM}7@OA5CXl%T1ea(VO#SwYV2o6ZWV!qR zJ_s$3>m;TauG-Fy_t@eiza+#Jglr6?;jc?c!w)9Zujf6)O)LX4#qH&Ml*S>i@FLh6 zSe_W?-GAp5hO(f25{tx4Nsh5|1eO)Vw{bLv?RT+ zr~L`LI#O*50V^yGTxpCej!8}f_Y=U|rhA(r-yOCnv)pb7Qf<@!>jKG`wYK=lY=NA~ zEv*gyqgdWM$(D0WVr)N(kK{A4Y>z-vl}U&-l;~qiIS1L|ydd^tJ?zakDLHoAkY-zm zeTWoDEzt-j$G4vz@7i`-gk#E4P2syK^KuDtbxFy8hwc4|xaSl5vH*SrV}c1@BsY=; z<^AkTF54#mN4#Y99P3TY<_H5=o;bpbEXD_70W%wN*vIYKaB`8~MgQPCK07US$yu6@XWS=)8n0*1L+y4n7# zHy?>N#BzU(Hy3hNPapc@&jVWcFq2@Rj-Q6vHWf3NAY74>7+h{ktty%MP@QDyTso*< z^k~vPlewQq>*shk(pqcZTIF*F?>3BZg$%8BJH#w*9aC&eR1Nn>TR%9Qnxk_7GYibL z8#*>yi2Ndv#F_rp`OvNuB}v8kw%uv`NxUO&ND7 zvkvn*`uFC5e~;Osu=cPw51T0D!>o?u1_!Q)L%p1_RVGez^Y&^hJwe?u@pOM{`5gU* z(%w0#&#_yW#;n|@CM3Ib-sBdfL@;$eSn%MNu{H-bkWF~ym`zsm+sD2aw|E$Ay|&r% zX#o9Hev+3yXcLp&oo#11ds^&=B=v9{A8cR5d0(dZo2fUZU>{6lZrjqQY*$+g<|NTX zb-`^WCFLH>;ege1dhf6=A@-#JbU7cK>*tXTDX{j^_rhYr?Znk1{TfO=lZ^l!wudzB};{@ zPcS~Mwrf@Utxv7xhT0+9gW2@)I9rTz9OpR6xVt++%}ELQeiYVG3(_G-sfM&%4;BW* zl01ylk|uA{O0(TpUt7REBx%*U2OlC3#NKVLrW;$BoF?Nnw1@t-;AUW8u5VU*%%%@< zF&o`G>>JWx-I%5&(;%4Q?@Bm>+u#PbTn(X_IF+{Vj~d!#>X|c}m^} zBPfNgC^vl(P}iiQZMkYP=i6?*(dc1sVgrYLrk$(y@CvhfTD{Flic*~PGz2uqJWe6o zEB*3|L$j>Z`&)wti}E@uhU$nKelb#V!CETzPTHK63EImb_6~ZtorW*Hxz={~db4b%ig;8^ zf4yIl>dNMVrRc#;?2iP0AIFX`_pM#9P%)e&Yd-eP0o+@}e+WawJ_O4zqs{vh&9q#T?LGIC(ez{<3A$0H++&uqC=+L(GE?t>svd*`~K6zc&$3AsikD%seB>AhD z2Su`v^@~D-CE$K(F`f}fWnc{A+?yYJ={}$Oly+V2BU;z-nnw#Oiy=HZFbv2%~XqXB$&5HgZ7I@ z+m?}b#(6)&h^6RHYJ}u(>kw@1+b!u}>~!tO@$ZZV>5F93kCooTrt_4pq&wJBi|9Lh z{VTY)M}e*t2&W$@NXek)w3VE22l{)YIHadYS6)ZAFgm>~wJ*IL>F)>oI$DL`M@qqe zU30r%-LLMKeYuSQ<}JMWy1Cp5;9yAy4+~P89Ofg-HQ#bLvm;BLLB`_dR)09*{rE59I%(ZTHD?*~?X%p>ncZF1MzsQMg$ylUX=AlbZuilhJ(8&on+D zXE0!?;JST{yw7Z7lQr@jM%CQ;2jmsmBxTG|-zux*8D`r*$sGJ8vJ6+$VeApi3^^U+ z+#t8H=IsW#5l!nJufnhA$s9s3K?Whl*bA7Kpyx;M*W@JXqf%DNdRAeWb$C-5T_@$d zv#q-WG)Rd1A@sEmE7C_2^$>j+b-Chw7 zY~Hu410)*(%ZqliX;WdSwMJ{vW0jaa6im|xSk~}9heBu`dTrJ^dojzQFW8+OI9reR zByVT1hVDYSL@vVrGeL#X+`qv*zPARry(9kw9Uf!8{$28G`57N7@!#P3y|NVWY{IDe z@ach;&eMR|H0EJU2UWE;`9ix5{2X91(OW6{oi1lX#^%YFZ6(|{S>br2Tmv4@0ZbFP=Rh{b zsgmvJ;}t%%=UzUj=y$9<`8&p1ir-h`cqOY2GPr8k!>%bqIPY7VTtWqFSic8?OyvMY8jhsflS zzQdg}UgQSn%OG=aQL}4AALv^EDIUz)5497f>hm*pOZqFR!KVW*eNb2t9|7M0JtzYn z>+PdBOr?t3a&{H*+{%3^R9{?np;>3iWv+-1aTLE5L1Kpz`)L?|HXlE7y4BlBe2hzw z$7Rslm8@ugjFS5g%I;&V=~+(M)y(c%ioz*o?7HpXY&ES%HmeFu?$8A0f==NhITWMOHWS`tg7={0 z8ymBi8GqYZ3#@WtXxJ?7;l;tV#ytA~2a_{Y$2w|PMY0vW=+#EPG{fJ}SRY(*GMi6Z zcW1k&m0rz0tg?`7wVPq8J*co2+C7Nbr%c>iYjJB#{u$9gE=*tMSdX%~WX_gp=Hzg4 zxIpyr??#U|(jUFZjNhfqY1M~(tpt^~05kOoVtsmvNoRfmoJn8q!{r*Rwn$*gZHrN33Y8qx1wKDKBhGcQf9?RJ}K zebB4?Pu()i-Jfc(-o{ZhoA+Z&i2d+@e2=oR;vlQFd7ihgv2@*BxY zv)bq$8Rc@D`q@0psHIm+fX89WWAg|Cvk9HkEN6$zPA-+qM0-CV>AUFjoMnwA;Wxm` z4|UtaI(g}7tHi|KeRFs18$FNgR`4CC4csjrmwi3nYWG(#+^CU8ONSy-VFWW=kM|;t zakg@C0Oib4MEk9#m3CRl=5ZhIGq1GLWaD*T?MDv-}r(zRr<3`Vh7`n#o*nPd+w`AKqIKW+B(t`PTE^p1(hH%n)rLp1eo@}*! z?2KuZjH;ZJWdtOBIJ0<74(n*{4mOb9H(OjCVvUUef?JL08Z}-svDGS8L9e!ZT)l5SaEsL*cgMc3XQzYSt{`9o zgUzk)y5rMUtkw1NCaS%xE8iYE z3+~g@=}U6PN6;Q+*qoKVHdoKskm0tbVvwDi<=XjHU6StZpyuvM@xI|ejOABmIohP^ zZ?d-d+;GitBhN;?#xm6~Du18RRa-CY$IRItZUfj%G}E5eI&0|btar^pGW$SI< z_j09o1#DP)-7ya@o?z>k{HW2N^B9|3m86FzGc0B!>EN9@6Eikgn_lBtc9)Hn;o)zr zi0`Ld4P{AS#$`N2t@S-+0pH^=t73d(cx?31d9h?38EX^^=y2FZ6?u$roagheb2Bbu zK@M8)S7tZue&3E?;rR!XWg1S3m`VbhQ5Pja)4tqg*t>VW?+XWfaFyqSgZ!;Z@(;f5 zxJR{=20TPMNSY-%Yq&a)L7AL$nQB%1+&$l_XLvp;)lURtyr6VB+LqZzl^QFZY@uCb zknQP$+Ys0JvY-WwdiMeyHS@e&0C%?0T{rWq@M0ThL*Dml$=poMWrMY~2Ssh>B9amt zGzWZ0JjvUn#*202gUQCLw4SQQ&e76ESbl8f>TMimzW4R>B3-sjbHJ;$xAASz4*B<3 zqMk)E-mfI^U?3-DF1iZZMklwfdZWs6*J)1Fi~5o`GIsvWZ$ZzOmvnZv1Rn(zl5RXvxS!7$oLLwMioBVyZ=-vq z_>6c!CmqjHqZ?_Xy~&yW{^+5A$LZm17v9U-k96x9&bQa3(AIdJ>Le})>6MkF1ECZ> z4hOhgke0K-@soXni}l+2hjg)u;c}{t_TfslEBpUoePE!+&rSw{C@ znIfCv==z_<08x9wz0XJCHW6K2+oy~XO&I^g84gbvl{#i zmvs3)zBIVi9w%kNs3O@@xacY`fKji2UGgoyKb!NZ*B(FH&Z1Li)WMiMT~r>N1*fyl zzNFL!EOcs>kWa%ose+{l}rMJ|{@HmT@Jikw` zFEw7PO|c(t7255C;QOGSma?hQtC^>#&QX%*eChJ>gE3~16G6Y@dk8;@FG#V@Zax|G zz{y@%Qn;4h{v^w2a-8EwImzRvo6XjwNLkx8p^Ov`r;AC0(kJ3eX=>(a&_4xN(SqD< zOeadAhnacT_P_D)agoX?kwwmkM@_<}U@RnUgFseUxrr|)}1X(<$(=cTugZM|P! z8x2l3`#loPbu*GI&r16PG^Vw2s1lH+A~t5ELCp(d2RB%z_-uY;@<^ro1NL# z3nyo?C-WgSzGzF?RO{Ton4bEVQptysk{wJSZebnF7@7sw1KH3 zJDtutCi|#V+n8)c+ETYAz}1$d9y^Dq{g&)2JELuI=9?M?q~=zq+UcPG?Hs1IR#GI{ zmZkEzt@ft(z-@g-*LmCa)e&7gi}EB8E2Ub5V0@L{b979@^jt{gL%Mh^J#|BYK9eJ> ze=VkIPiNZB{ep2tdb^a}Msky_Tda+ROQuyaH0i8*`q(mg9V%U9(bi6g6e128Vkkv9#-o~-* zGC=ktCTJGD`<^k@wrJ7d`e(GuFS!=ezFa}?vmc=n=(tDl=DHIk+P0dI~AX&0qz1|J{unRC8CRGQ5 zf&&2Oeo#cK|MNw65*vtK`jL*gcpnBnTNu4nVI2Kl$X!87(O(}{UKaq{J;XFZ%4nAB z9^l&yx(z39Lbxh~v$x=^-QbR9%xDigF;+c!pnDJ$OC{?Tt9fmLPZVm#uZQtY0J1Dr zd*%XC)uT#Y6(dZoICc=sguXMR+Wi=T`G9ts&0B zSlUa(%19P_)LngYNcSwttnP%QS04nmoA_HU=$H?<22pYkgASFzq#n>~PGUX2tJEdL z+{1~Hi&~edy+r^|A3i5DMl6cS!D>QX49X7%mwR*ntq>)kH|r*HF>)rpS8z9mTJ{j5 zl&hRn;=96I%y@P%sT;wyC8WbZ^129p_aXmOj;nBP6GkY6T$R z1bHl_K4o&>h<@PeaGaywqY0P~#PPx0J0u5C>?gPy=aM&1dUW$rxD$i|{rmSw+69&W@EAFm@TAK2(n*4WQ;sc?qzr0@P|NGO5u@ znF*j|KDDWeMJDX+pSS7Hrx`T)&6#^u~3|ebCq|)WVkw_{YT zlTfcSfz~VrYASaVwD|o1?M(C|8Xo($-QagX-i)SU4cdkkpYhp|=@-$wJR zaQzMx@OIXjHC)5X2(!Q!J769^6PlHX}sazqCfPWismQa?| z%f60x1^vq~eAm4Ux5+i~JGn$&!+6c~zk?y05%N~O{{)O>NMUT5ki`AfIEn~OdIC3(e$N?5hVJ%)~ zoOG%@2)%t0V`xk?2fvKPd6S_7=YtAoq1Rf#yBqNAl&b;dbih1{&pGamJ}UsjRA7Ir z{1x_MH?W!@`t0Un?r%Ir9)|^5MekGwK5N{ecJu|g2-bQ6C2tq?Uw5h647>a$s8@(y za%pR}1M5}L;FmD!n~={koS|N4IL=iG$zrslenG9UQtS%Cv4Ou7Q+5y2KJR9nRVYog zD@w7A(9`>A;|4Q^FuImc%1#A+F2Z{xe%}r_)`JtP0ZTQ0*$AvQf~P8T6L8KYau2Aq zk=hlaH7N$1!*RYwank`yly_zZ0=n6t>TLYdhgCx=`TL1MGdQvYu&m?Wj(eynIXp)x z_9nQplwM!}_xKwFY>J6V6UJGO_jW+7m6c<0?x~>cIe5<@X8NR0^?+&z20%(ClHE z0{*BDDRP&oJ7g|}Klv)7?;7B~oWIT^BeE#isG(WCBozMnB{7UuvP7`sgYhWh06 zb)1Qw3OSwyN@{%D8<1)Ysxq%L#YY&UMEQGfaCZuN7=!CVj4^hB4(c8I;Oa|o?o_~I z_6g7AuB;98lYMaB1YD!BNIlMZ4d=dqUSgbU4hMFlI7gU3yR8z`ir*u&?MtCy_XCq{ zIJ%pDWHKO7ax4p_%6;OMi!Uhtj(OiwF1VC;Nn`YKI8z7eze6Q9G?Lhm;x*Y)1K@C zod@BUiFi-Kb%i)%0&p&6Ev3#y#)7iL=`+e9iPe+?mBoXc+l`@A7h{A$kjL?$@N8Pc z^}t?Zy>iaCsyQ1jurs2=j8A6(n=2JhXkoPMH*(A;| z6MU-ET3XvdqSerwF`^;L{^1_9UC;ZdH3Z0U-{YJ7i$7B|9?GHuK{l5@@+=!W{e@wAy+z}vfE)peby zj4Mm6j3+f-H|rE80#!MF8`S+Tc(}W0D>ZT%0Ltn*o6Z{=7&{-vxw>-kCVcl2aAz6h zc@<~3rHp2U@%}c_b~4`O`1UrrH;Iem?XNLQ_EzK0t{s+8gPZ8D8}RKVdP7|m zQ){{l5SDSBu{Z7SYFtyrT2_skD>%~-u34yM9ma@YGycEMIjhcKRlYQ4)-@sB7gH@y zDlt9ZLh9rR5C_8$hqToyW*fTo-*3NBKE6M`b27(t_kScYb`yQ&hHPS zPqn;jaegINTQhN132o6NKrkEU?&QpNB>1lDJ*PrLuSOhp9yD_lejm)}s2Dse;_92R zJvw8n=3M17h%)9u`^{=v6K6^hoWF}}v-$K<&Gg2*5D(l18QX)=6>?p5(pm68t_SMc zMFY;Q1zh!zpxL11Alhc#nf_@;OS<#^DvY`TR4L|cvxu}9#d&c9BSnp-)%qwGb*)1q zu4b;p<#P4Ytc|Gk*~a;u?gy%|!0WtH=UDx?R<@n+2Ebqd5JQjz0g~V*krqwMq$Sx7 zIV3Bj2uC==AN|SU4|X^#*wdcfCqfd{*zxul|JSZ5;SfP}LS%sLd!0 zO)v9V3oSB>PxhpqejLqWx}~8p=a6gTn~TU)3%u_H(qkCm8v6ANn!f?hUenV%a8v*R z9fub@;ys7A@M`ouc9HmLaAX^m#jA#+-o-XO2qJbDYCkQB9tR=p=t)E1Rpyawp{sgm z+euKFKNml~ig#>Uy+Fp`ey*(`qrIpPF3ZRJXS(((zO6-V15|MjV1KNq*VXEp?mwgF zKPP+rI6l7ZmT0u?fO=k5KQ5uiPG~I4^rHeTibOwCP{SzsxNM(cTNjvPL(aj;4-xR0CCabaxq4;&F}RM?{+s z<5!xua}nQaPotZ~ewgJRLozM1bV_YMt#+S4My|l8M~Q_`5FzKtwAg$*zHHI{XEeGB zS&;_3dlS6OF!yJrK|jTe_Tbemw2Wmm0zTVV^u-=i51-L>hWeaWudb-?*Wg+6W*-9& zw5-7q>FE!H2F)T})7bqZQI6N}V;8t~1Jv+YyuS`H&NSB9&Nn!rUKo#`Rcj9;!83Z| z0GQM`a%y?C8g}j+voS+-VV=bj)PDk-dI@dvc|~iV7q6X-^qEmVj$p4k5mWbUgCY6H z=}BNNe}_DjVS47-{W9L4S@f@xhiHRHo9{Onvo~ABjux?Az+)}OTu}~sU)Q@eG6^R@ z0&WK1E$MM=Kv0|J0W3vq@YR?-IZsxq&J!%>bdxCXEPQEJ;3}w$`AlubFb%hqd6pqM zYxof7)#p!x$lL`To>tGzvvR-6w4Cw75VpvC&~@+a!M#Y9h%8MLg`^YS7-s_#CmPjb}IzM<=E9Lq@9 zGI8XO$bkj8Xy&gW6Y5OmVu9IL8&xn65Gj7`7X5*XU z{sQy#DpvbB{cEe0vPS=5Wa%oLbxO~=gmycJo~p%o#H{EN_QE`tU81}pU9+Hfv&3$u z={(EVMwZ%qT48QRVkJR~Z%yyLr296A2y4XavqX58$kt7gok)-Xi-*_9Etm&o9+Fi( znE$!}AKetqO)3|#a&Xh`!s&Z>pm%t?na+>dWN z11f(}cUncl0<|4e*gQi;zDd?|gSeoMck?6QCl>W=p{471)l zo@SYoEwat_V-fNKb})eboJD>-*0xW~`@W8yHoG!{H@Az$>%ke%gT7duOIdv3$bFHh z)uNFzL@!r4r)-W2jv4+ktlE!I8EiqpTte3i+2oC34o#@jSsWRh5E0Ds4_ z)US$H%#K{=M4%$M^)2kSQ_HIt8lZr8HB%Qs3LnG*k3o+P-eCc0TPE(A0XMbywi)I+M;BRSu{DcNXzqD7FQa=c2@5!cl2d6+Y%K8 zrcHZ9A4kdZo(F}ojFIKDYM_)oP9%0b*R1s}epDNOwN2K*Ev#YVhNa%t^Ya?Qn zPEBWD(>D)7(Q9OXj-Ve~$YFuJ)|TE6fQG*cMRP>kUb8VkMsAOM=y#$&+S082lE!lu z3YoPyfws90zG67<1yRCy=1Eb)a`bl=9PGf;DzyyjW_{RMq<1>fOGq9{XlhS1J6u+?dDnz!L9J1gf3bNNKH_^)A6r>R&O zKsOk=c^*Gwmc2M$rFR#|+03BBw>UMa2kO5ND+ewUdG*xNHEIUEvS|jon%8?CTh+rt zy#``xo`s!W^crV($Pxa{!tYnm`xdK|Bvk1>L-HruoWZvS%{(ZhPSU28iHe^WFZQ=dN@ zt%3Q7m+*P6Aqzh%-nt7HSq05!!(V9ZRsppKH=ogS&wwl+Av<%K8MCUti|Wsp_1z27 z^(JTL@mY*~9lL!^Bd|)J6W~h~UGZZ0MfLU-@Su5p>zZL2sj+-$4gd8jc+Lp%a*lEJ z^o%#4_BayiTFR;yFVPdr3w|9mV}x3!7vZP{yiRNN41QTLt)00{1>Ov`e#SF~xmu0E zWokkvL6|Iae4hCDntFAP*gZ!ycnW03Z0c7vXLmV=>^ex9*Zn#EzXo1Zq?U68I(=B5 zPhpd+TH`T%y*6n27%iLU5UAobTyTMJ*QoUQ1W#(fpH`i67i_tXU)I9fSU#(Vr?NzR zxWLNPdAzG3`jMk9s|C02a_>cb_6m{pgKD#*>yLA~&_$?SL+kX^+9&Xbyz|Ao(iOPIF)jUK#9luFKe`9QL}+-mC%S<|xteO?@8NO~IqTj^ucr`Y=P>PvD7} z4c!Kh>{08~0kdCI?~mf4cGS-Ss#(sEFE|SK8RoTwXJ&Le3U+MSB>VSO___>IX;rO{ zP!Y0#wHzT6JO+YvK1K$XVOxTq-JV}Siy8uEc4CqoKn~mRJU-iXtc&T@9`?H%v1>4F+u4Zp(#zCvs1Y_~kNt0-0v7NtV~JKug%Z8Kn0FoM69K zsRR3c@o$Hy#OnI4f^v)#lk5@!pP+u$G5QAmy-h^_xMz!GIJbDZ2Wvbc-j{Fd<{ve;K$e)tRGg%H;+F$gs(Is4LbzZv5S3efGeF5XVi#e z%IMg6B+B&lBjouE&0mgw*$Jd_GNNTidGZ!DZ$s2l+>I#bB+_?`^Stg|2Fw2p$l$JedXA{-DpjGAR58tv*P0<~(I9KFOYLEi zeDOA!rW|=nt9mouI|q`tM=bxRWUkH-=kCG{UWZ;}M23r4m2m^RbqRT1QeWq>N#j)O z^>sZF#PU+e+=;u2AmQlda=%d(XlM{<( z8f1113w}a6aELiRMNWSi3$lT&^SZJ7$;;ZD8TOHjIFv=ftK>f0WLCGSmoT}%P2IfJ z2_6+qE67)o>S9BA>Tp>ARq3J2&k#LM;}v&euExB;C*gXl1F(Kq(6(L+eO9w~7G9~K zZ7)*4JOb)f0hv9EmUxk>-~q;Z98J2bYb{26kl5xb=;aaWQ?8LGnpSJCVzJNS@9&X) zT8MSt_k&2aqUJXQ=^7sUIN75zD90 zN1^2|Hm^$sPwg^a4Xn&I z@sgpEli=Cc@BpmsFNVLS@s_ax1tf0(%V!pHMpvEEoXxN@=Qwqg|3=z!5`MVJ`SCVi ze?tDDh2AkNy@36xgITmembO8VI@s<3u;3nbnC6qb7X3Cy$F`w%1&cCC^~+KGjXf&Y zUt!J6(TF$BlUdv%>tPtW;VQf8XHC>J&iXXfK@G;eK?T|tv?!26DS#FmE*Iju2D6Ue zVFn+=W-pLQ^LVL)9E?-TeVH27Gsx)@vF81FQ6u<1&c_9`_Yi$55KHcYVzxBif+Va$ zwy4f$4X~3fvW+!7m6xb5Jc2d}SimD1@mqL2mVq6j*U9>%2dQ7RwM|yrwM|@Fq#k*i z%!OH%IZzn0#m29vz+i5IAuW@u8eu(y)n~jw``4MP1(45$SaCIupR$XeSi={18o%Fk zaWVSS74%gRE*r-}EZ`Z~ih=K7jULq9ukz#>(4?E>qbzGRPMz0f^iGX@OpTQ@55sx$ z;AsVNI5i?j^W~odXZN)?H_>k6NaJxbP%SE+1F_c>RmE1Vus|d?!}_f{UYo7I+Eb5q zgRkLfkh46;Nb1K#Mo6x@VplEmK9gjJ6-Z^3Rg_ z>{033h&(b0>b!;LGNdQGO#Z?Cx(<%jp=#+kTzi&U`J1ukc#arunjXwitI=cUydJsP zCu4Pn%PJw~KE!YY;7U@OCFARk^w zYx$~q{OmH==tbi9b5L`Q=x!Fw-|XlSq-__UW`_J-9i6%ghEa%!$s5>4#}#L(iW#HI z(5ejD#8EXo-+;eXr>`x%a(h~lIBJiTN)<8zR{wFHtLtiegLMn$yH0`J&P2ZM@a_Gq zVJVAKP5x|!%T?+Nt-fgtE*cT1iIb}Ss8kC-*t}%c=`f2SJH$4XD%oF)HsPUL1*LFX-^@oW!jk7O{nrEQZBzm-s zt-6hNnIq!40Gil=LyLHoOW69r^XuHd5q6`GZ2UO`Qa*_`x(WWWC#k$nq`Vukh=7lM zO+6dOr!`OOEOW3%+%e6FR;6dI$?|Q1$*$sqH1J%lierR4?l^w-(TF5Xfx}I6eF3@` zh#7bB!cB|bjx}Bld`a_jhp5zA2BEA`JLLHGOsrCyC-&bUH$H%Nv))&z&nY4Ulf;U3 zp53O}V+@(~x%G9UJtA4FM!14D=|p68j!4?-p!U#DlT;pU;49WxXSas0eU7TMJ)*sZ z=otij*ns~MVx%wvzStq2v*)(SUkuT!Z7LGaQ!VV3SC3F*GR5Cz{LRZmE@yP_P5ks# zsvkD+J%+G3UltV%Rhp4r9|Fre4lT`tc^ICUM2BtT%dDXp_ozo~GujGX$Qt(3YMa&= zahvKU^Omk5vqki43)wFc>AI~yf-YFYZyX}y+@?+^M^Ea+#p5y8yGGvs4C6Jfc`%}F z-xM{C3%-slnNEC!Ov+tQf;l{(0l4N2ndmYcyGv!+ws?6KDQOe;%}_(R3Kv)(&VU_T z+@zV>7059@OP1XBvOXfI9$+8JbF8cg zCD=ZdEhKSWpG@ldLG|Vx-94=D*F~4N!?7?Lyv{7>jv;c$!{NKS?}ON& zW+<^IoaGTu>YjB`cab(n!{LzE?|1b5F|}>7Gac;ohCz7&59!lVFlmjKHX)fVFb|rMg4y-dWYqVgx z&UU3-S1(Ig+5iUsmU>{Z_CB_v$TE$sa_g1N^ zGV4DW_e|K)wMMOVjjYPMYtSU{WV3zi(n9NMp$Qf5Df+slE9Q7wLGKQ$%|mF{9kpuq zewb)^Q{Psxr-#9_0__Y^?Z2pgjiT{wcRo86XfoW;(YUPo^?d62lB90DBFmAEihYojVdsA)ff+z z;Xw1=c4(o1_jZ9u!A3Tzdpi2|O;N$5$|UL()ee*4j#|16Pn7T@ZNKz=efFa6zoYku zu!FWw{wO_gZ)}AO$LZjEmNiAQVfmI5>cb&yNTs``Fi^V3AWtmOy=CuEHOu2?rG?^ z*#gsux1fmWjw+E-J@|yR0Jj3+QI#{S@+bt)MXBE^G^SjUJr$Bsc z-IBjwC+_dc7P!UPQr}AC0&DPanVrg}HNz$7yiZ1DG|r9HYi!{sTkl8d?XK>&Iq#DD zYO3XVBJ~M4b%lPJ9-54G-Gk_%4Y0vZoTVmuaw>9UmFt$_qAGnT!_NyKt2K1x09<|- zPiO~=whx6zq-FM@TY$sz`qt=d`O~KQYP37TY8gAXy9&bC#G4Ojrwu%+5_4cWe~SOj zQVdGJ1$y7X8$JT11G72DDS3(&;qafAMssFbk%fbS4*THe)Wsj3#Lp6$j>JBxfbt=}&XcfzC+#_DE zQsry4(hJy!CjN_g5~sm z=M*tk6U({>N3Fpbhp3D^ zf;0!@VwH7#)i8;dKLBl3WpnO=KQDqskL$@>%($ItYJQu|(h2O6_1fmgT3$qIk5XNB zIDAc7zk;kKp4nk}A7{}omM5<2dh_@15jFd&nFlyS(9nZC9)``!IYwXLDYMbn-bE5k zZ;oK;D`~8}M*vwsroS{?)qMlVXTX|TBx6Vvg>!5+8OT8C%2hf!h_>$EYUo;Af&YjEEX-g%d5 zg?*%TpB`K0eFLpwwIur>!vXx>GGe0|`wjh{*El!1dLQraBsrx$_4^DK*Cf(rutfiE z==%Y5ndIH zG<`j0g*?Oq*wJC#F@ff_=k0+Z9Eqr=*`nR(ADNatiHC04nhAUrkK5K+$2vy;SMWpK zFPo5d7{+3C@%uZx>*_h1_*X;RznjJ><|7(HFv`lOP3)MRlD$PNI}T2i$AYdBwdL^z zy2SlWvI4%kyomNRDy@Lj+x*{TJx~_}$euqMirl}(_(#?9N+{tk*3#Y#Xhd}os4D2~ z8Z>G1n}Mif>wLctcWUU`*BD(FP8!D&`O2R{ zoOi=Z_G0azX$gyz_V{cNn?H*cDd6vR=%eqm;cG?RPVF)i75KRu^Tz9Np`Gq~Por$Z zFBT)Zr)61+Zt&HiZh-=pq)rqRnDu#a-YxDJ#~z>N+5qaahRhFwSq7f&dA&fq5Xe0g z$ir_ykt2+D3oF0FdXY9%3TUcTo;L!u*U>t=pp#zPUPt!?ys|BH>lU9mDzFoZ%-JZ~ zb&qfI@IwWDv|Psy*st58RVvp?a7UTB@yP!;IhHwm!4CNBSj^S8!EJ9+@#MG>AXq-lRouWn#R5=J$1|zB^k7EaQIq-N8>N(a##XKETlbP^YOKJaBiI=8?eDO5brRg5 zL~Dy=rwxHBF+)W>ks4Y4C2;y>u(%`SvRgz?hREdM9IwtUg6)s#DnpK@BZt=`qSgh| z^IfUTU)y8E=7Ckg%kAnls&Dt;X1AUr_;C#)?j7dD+S|ZCDH0(ZVs?hmIvZHn7FN?E zu_7qS9zD3np0dW1W6~+!FVloeaG+)Hs__K5MdsS}%0I+&%kWH>cDm4K0bZ@)hlLnl zG_cAg^<{<1i#j;U0uf*xZ_#Ve_dtjOH9BkH+g+q2PxR(~Z4n!?gf~`3pIGbV_*cO9 zGW=^D{al7#O?adRr{&4QwTZw2IrDY=vk)~yKKi72Xlhn`7~g9E9^Q*qzQ_!f;Qf2S z>yOr{1I^QtS(-fKata?oW?Imw#JR*?qcRGz=aKd*`e2E*aU=A`?y<g@6$xSt7zLceo=_Clc(pK#3}*lngGMuj#@p??kW|E`&jQiJ~QvZ z=G_o)!*Ci@;`o!A$iMBJyN}LuoojREctRWRCosZQ=6(X*V>y8$`*{a=V;Gy;MdR2U z4TGb5mes!7LlmsO$)rai)ZLQ zsnci)52DCDH8ez%{8kZLzDtC24BIkFPrJd_TIOlZ^ur*tJA}p#pn_$tu+`r+M&v7= zjGtHO_c+{k2tThF9JB6n%Z-*WS{Hs6)xe+TGT4=Q8NZUXg#sSvPCcN3Cy5$~}Iz*&Yr}EHk zbAaki;<_Dt(!t=ToR5-u9p=8koR(v~!C-8;h<`Vpj(&suc0jtj#5G2*3C3AQcW)#8 zn_Te#E3mpqX_xt0qvfGEqk~A4@pPM!t)q3i@LHZ#j~nE=0^aWqHY*Qb-6Pjn<$hnC zunuRMuByUuZLTPSt4>o_*F}1}#E@G^P8T{)M*pXUUbc8=H+nCF_)CE-L5T0mG2`l0 ztSxkF6why7aq@mMSvBA~vfUy#z-y_TyOFSiAzeQ#E+kj?&=!c{bwO zeLpj55Lq)nYY7^ZKyQ2uRV-qiYLXlnLYr8uf_*4s8|}(LY=0N&=-`PQBIBp+ZVlrZ7m1Kn@d#n`i_Jn5tH2kGYC+j z4YjsF`hC=mXm`rgIklKWkC2+6k5#NdfoskBSK*Lh{JReGTw){x%;E@s^gh+HuAdsr zb0PZi&TUrNx`;39rww}rSBTcU8#%KLjeAr#wZQlNd4qWBzOrEiZrug3uHb{^xYu}T z8_Eo!1@_4+mC;KeSwJXhw)#+8tp9MP+zs>{fzV`gpqv}x)&a#)!?_@F{t?h6dCf@T}U&h8jM zKNW)SN9vrt!Ke(2oB?ZE4;~G#!rcvc&@gdZJ+K#jj{yJro*4x^(gMBRKwhTcY?szD zGrfnL7x5OG#0QRb+K4^#Tp>c=g06TFtmM z$9F4aIu1cad+hEAV$U_+A{Ph~tb#oS_4^l;BFwdK7}64qgD)-ie5P1+1up1QvpyGZ3J_9&P7o zbss&_qu+IKpB4PHF7vgiZ#<@}#q65rfoov%o`LCLm4$J&1FGAHpJndv3p#sR*7Ox)K7wb5rK z{@-H0^2EdDDO)A{HqmE`TtkTKgp1KCyAQn$SGR~ois+ZXi1Ng5A?ofB{X_3nD`s9g zP|>Yc8yi}{rnZ^GGV#Pdbm#>?Yb76ftrK;Gc_h2YLksz-p;y{)iSLz{i@e`uzB=@O zFVcAzDirZHeP5GKl=u=HRz=HuG*%$Oam|p6o_Q{!Lc5G`AMH|(xzapw$S#&8m+Hd; zlro<0QT-_2Ukpob_iM9w)GJ4=ZUVWdB{IiGFD@O|Scw!Z8o+n=wkdh8Dm{%0%$+bA2 zY~k@WqAuBw-nB=G#yN*st+N~DHIM!2K*=qTrwZ}G7?rQiQFg^WcD37Otx7p&2iB;+ zNRaL&_F8FyVvoXch2Sd-{rn5d+!~fU7~KEZVSU*aF}CMe$0FuZ#nuhrZEjLUy@7S! zj(T?!t=9wfsUTIu(N=HcWscCk@4&VY=~Y7a_mHqAG0v3Qv@C?>V>g3)aU*cXAbzK1 z1vWLR!=S{wc$tPf^oXo?sKp;JXMoID6I^;neV+w|yg|mj0kuYnfVbeEUFN5y z>+Xb;!B>75hPI1GZ**A){q0f>I||BI!4onxejV;@2j8i@N@TScZBh;`WZKkp`62Mw zapWV1C$|-Ou?NoQE9V+<_Cg3T0`(KPOiowubDPj}RNpkCU1~*tZUoP?M+N&9_-!vr zoyRA6qTV5}_(|%|JX)&a5%^v+xrprrt{Wmg+e1os@hmF%B2{#ouPbX1fA7OLqrtQ9 zC1$WkU%a-mO)RxeRbv^Nb%SFGj(zRm_m%KzTA%^@@Px0C@|}TwB|`%#$f5DN_~s#2 z3G|?A4lUG((SMoN9Fy2ZNA~DlInt&{6w^h+RIyumc(qL|w~5~OedwyuDm3srTpJ9c z9~fL>_zKgl^<&{I}yMMJulE^etYOrkGl5p zjvFzKabK`Vk4yNarI^R<;0e2jTVf7(@fn)PXeHYI0$go(cknp;bC0bZFKWww25|0Y6#rp@`{#R977{UnQb`8V}Ulj)5G8EF~=>QUcjom{N?cX zdl4ORZ!Mr(o3z-aefPm~P}4_Z^V)#NoyxgLd!x-De*P-aM=x5NDmro>+{-LTkM_)h z?*y-n9AiEvz*lXpk5!f$M1`Fy#mhC1IcnEv5P%-uV^P$HacqPI}7fB z-*=IU9?y5X?O1t-_9}449y6GWIgvdy^HxNlhM@R1e6a~t9U~k=^Dn)1*$(hF6+|UeDsdm^gkE;Oqd>&^)n1NgP+`1 zgm3nk>mItGgZy{V%jHzs@)4hKt>pg0IIG%f!OvK8UtN_DjdER@N$7c9xk9lmRBV4_7j3ut?#J@vo@e7gn zI}wL!bAK;#R)QRaIQn+Xe}$CxK2Q6xZ%&IIJf1_JyPw>Ncw&w|bcw2a(Lxuamr)2I z`hhL_5+a2{#4K|>H_0CqA`N}U_n2${+i6xr+FbK@;-~p&UD{FZdPuKV{W%ZiBhJ)` z^3_Y_xfeO07bT<+WhfU>34cl+gt3FRDu-O0nHsv^pIeO4dMBRKJuXx|k1%O(@4chLC8kT-0Sg zZlBX`oUd-AS|RPdd!MDqX(9UPy^vHYcH&(jYR(Y3JDJB$ktd1*0n&hHX_tO64Q>h9em-aEy>xC$Txs+xhwvdb@ z7d2^y+h(nHVjul!y{M1EyPlG?7NP}7<|FyNpK7UG>{af-T`n2^+gs_S9F@pL=$o^I zipfte{Xd`5F!@O=SBNu~PkF>!O!P=0rDreFz8g8s=dcqg+)MkDps$JTcFD^}d+04W zH|Nvq^L_O9wi92Wkba*0&a|_)p2=7t&RL>Ie4HUZJ47qnLjru%xxQ9IN~2Op&K%F? zFW+~4V!N|X5-D;07~)uSJgJbjl2O~A(~k0{BjsX+kk;uN+%R zxFe)|&_Bn?%ys+hscRj_6$+6;y*}yooOda`w$LZBxzxh+_obWCGZ(#=TpXcOB(cd! zY@KM&WMmm{Bw97&4##~usm*u3FB4ORl;)Wx$VYEGlh1s#%WhBH3VF{$ib^IVDt2qEUMT9Fco_f|+} zGW5~HWwjHZmyh)Cw@mre(sg4$`ze+1O+u+m%N6@R$uyKdBcxoD>6%1;CRERS!(<*4 z?GsW?2%%q^`>kq5nQlnI5bdD1mt33ZhRp7|&JO7l6N{8+ie!8l zZ}yKVxuc78v{Rj%NMOGvOQ_a+&nNyq(M$=|@&|g*OM94bPD1mH!wyon7y5mMT;KQI zzRxqwn#G6j{>g>@`8_yiy#r6pc<7)lOP-V2)6Ca=?@vFK5}V^Zk$;y|C9`u-1N$9? zbRR54j>#;1)>5XEGww;+NI0~c_Biw16W%Qxn8kx!*Xg51M$LS@Bcnw2 zyu`j_cO;)@*B+edjGCD|_3Qcfa&gw5etN%m-ri60-aDF1MtkqN_TaPL|C8{(y?eKn zI{4i0*RO-^AG|ZyNB8f?r|)g&FZ1($^n35PlfMqO+yC6}Kd$$?yT6@-*L}aX-aFR6 z%+tU3weRMq?fzPvf{ob_s{yli_C*PZ@-sNVJTlV0zjQzyRKu@Jz^Fui;?`DUMzx)x~_cdLt} ziOUqjJ6vPSQunxKKZcMMmcCX2zB-hRZ?Z{ogG5=8O;d;1gvpZat6@Ie)oY1TLSNW= zUpOC*k=kAk*TZY!#qd(Nq<6DyjP!}{i{YpA`y=7Q;Sm;Pu7`W!op4$Id=bzX8%IpC zy-<%$#Qg~ylww&a`2gE{RRNnC>fahiP;9VR$ibT;uTl(yTXBT@2WZucwCu(^N^xmg zo#&71_b{7mRVWBdQkVtGq$-pIdp`#Cf0YujQlxJg`WE6n{WF$;y2;DFwNy)ka_$D@ zBp&p6Uk0Id4WP}IQZy;3vuy`Sh` zCflCcvXRr_+3-W*X|_$et9km9@SEYEhkvQxza9QUv+_Xrq^@{0JQIF8{O#~7;WOch zaGa%!^>8?x3`beeV}U`FCwy10w>6hma#0R;sKViJLa)PY9A%sJ-O*KV>6+_$-b!5X zP+=j&2%DT%)A`zEYbe{^c$4z_CL{CXViU^O;gt!tF(0Jh$kT=y%ut}frpl|v9F^gT zT$G1GzSP zUcOL#UDUK=pM0MDID@m2sgso4t%O_Qb;;D%MD1&AIm*&6jN$Y%+CC zGIf<=@ZnUZe3Q9dHh7xT?@h|`3oO~Jvk99)tb1%_y~Z-)ow#_e82P(I+PRy`(mo?? zrv)zwue(&av{chMuEWjcC>>7GUV3FIN>)ET3-OzS64kHix*-$<#&3)K?{0SM}aDPWe#y`S5vW>qD9^TX5zw z^``XKLa>F=qfp8ZNOGB)lU`fYb-N@fD)3q&Q?@vGgRL$%*%r!2Q9K}1nVo9Ak5z9+ zXuV&m5?-!Ar+fsIItQ*SrL;`;soFsTozFU{Of``!Pw!WesZNxs>*DuBrWT`}I;k1>l;*)aqI>%OFJzy7E&Pk{ z82gZMV@Z>KU3%(qhCL$3DHv1Yca6TPi`YGo4NGLfjn+H|7k=|vwfk*V4N znaboUn~Qv(7VOt;iC5V}Dq2ydyzOfAvip6%CK9y+r@2*YNBg(mCsV%FRTVyS`q(^N zmR`Fk&+C?Sl$C%EXr7*tOnp>yWm|o|8NMu8`ZZaqUk|@4KX6u-=y|<9C`N7eRe$>AZ&sqJvb8`7=spk3D~PA{?j z;OGIF%6z{~mhU9KUyJA?pL*C8dXngzLMlsbsL?v$p=GwD7=6TkxyfwPL7B?Dj$$f# z-S@~;Vh8(Wsu5?xwSaS!@l!GM;^;QmQnDGnyMY)(SaRMrN_CmqNM-7zWa0EeR67}=phc%ZU2~V3 zs7ka;g}zo2OVuw`?=MsCo$f_Xt{0=bB%T_eC%%Be<;l5io9Jslm8n)7V>8NBg&FK3 zQ+626+ma}YcW$v2ixqvJlC-=KKBoBBHdJ^^-o(F_MEwi-e*Y@`sb=noBM7Kl-T6!6{eN#x?9z5>FkGM4b^o9A+7?9mhB;*}I|N3w^#{ z9b3~cQ;8X));fLKFQHKl{ohLwguT?0_QOdte?9T>dg&{qGIj8;ewiw#Qk74= zzy5eCvs11gzn4r6pydJ>!1lXPib{N$XJI;UQM6hOyD{1tmzaX_Mco7c&}Y- zqX@Tfq*i1WmJpSV2+x#Z_6hcLt^>2!dW~h7b2~NnmK4-29ChDga#Tv}qypN*dfD#R zw(56LLNhDF|62Hl+>p7bdjQX&9sLO zPguA)L|ZmPEmY>Z=zdAT)ORpd=Ahlt%-SAHgPNts&hAJRz8t<7 zeqT=Dw{*{|;p;MS6*=qA>*_~z&xfQIKcSiXgjC}>_V69hT%Q5NFr_{Or}*xSW+)dp z|IHxW8=BKQoPXu#Ur*}3V^XeXb@vHYi05!VEL6XR@w?veW!yR3BQM2_LyO1{6 z1HmBMPb<87Qm)1G`hAj>QGN>i4P6?Hr8|ah_Pt(C(Pf4CkpFJ$8dQh)Zth1Yw1ic~$@DKFw72We4>A|0@9njpImUPtNw*g#u-`QY`l*>I)-Sp~p=~dfLc|U@F6Pn3my7N9smC4j#bm&c{ zZtAIT;!@74g%x)9?7l~)+^O<_svDCeS!mRa&}j1VK&a9Oag0WdHV|bhps`vpTxdk# zr<=B#$W-oqWvY-StP0VsH?CWS>oS@0G=c>>c5=^TbbW0taB_?JGJtuOfAK+t)TfDp`Bh`k5~J?nw_ZU8w4qt zmCC}L1ZdBvPJSX&2^^TrQ34|*+@GxJ^3;V(zxT5o<+(byIVF0ffUF-lp%; zIue6Tm%A;|#=@zK06|y8)%V!f%k~gGEeHHr*`CKFPY>&LmL1+rrd|zyCYkzUNz+B_ z)Ej!{BjMwcp-1%kkfiAaNtM~H`#9UNqPa28WB?6Pfm?0;mr2JGFw>l#ds{PVaMdy^ z0jui4xMcBr%hX$X?wi0G7E*5j7TO-jmYABv77j-{m4Or)_h$i65)eC;Jk8}YHJZv) zHTo3YJ|NX+zm;mTB%C`426y|uO@h3{c6vy=E^bTsZVj2rM~z}u;!sSo8GNvY?9EH> z-2fon0L-?N+GZphmKHq1Kijo?1v_<9Gg4UAfl7uBbuFO<@G%+f8s-;tnbU# zM5fH{F97Qq09-|y#-L~-Q+otliv(l~(WmpBQWNjbQ`E)2(Je+xwTc9`(lluTv^kK} z>$5Ehh?IDViBu)PY?5>;#?(;a`z2s`26D8b|CS{Kha#LjoO&_&2uW;5=0`CqoT#vNVxYWQ=> z)EB}_^3-4DcSqNJOtWP6>?ujt3-bLwCePwNPC+UGN*p2;wU75#2O74W6AmQtlsuKA(3zV~n zCy^+Z5KmboGg(i)zagOPe!tH_tp--Am(Fq_wL%G)(O=(OjH#HxnB;XJ&@I(coepIsMpldfm;Wf5}5kEGL`6^{j^kN z_kdJoNx*tU3Eu6gCo+}o1yGDIU*@4?WieS2WH7Z=J{phX7h{C78Ej7zv(h&9W9XuB z(&=4z*{GGtl!J3s5`ISENe~6wCwCJ$HQd2w_a=7S(1dZ#q|NF5nyJU+Rh(ciOS7t; z?p@%@7WQut|I=t8))A zgE0$zeuwkR4}Sg~{2TxWp8y)^We{*40k>1m{LdVo2aT)f)~$8 zx}vf0^f(n^6A?@>LA67)Z&O+EnqHTs*skNSY!e1gVW_8c*BLns$JN4U@C~F2FmQ*U zr5lQ=JKK+?H^`SZVxT(`oyciiR5QR{IhGigR#a{~X^owmw1d?qiA%YRJGl--*~3f@ zqz4?TPpm|9x)yVv+w@>RW;GK>#@Z`Vg*S%zp5`?bgAIo~ z+tHQWilM1*z*LPi7>xjlWf1ll?G8QIighWu2;w9_N)0fj7q8unF32)4YBPdKhfpkI zQTYu%om3NLZMlTfK}z*O|e`*`R!%j>Qb z_(D{eo50yi1at;`Ign_^x{P@}C2l%HetHHIKS-!!RgGtHO78=HITS`?7?HRhiHdf( zd@WYSzV2jH$| z-niqA+Mg#`u!JGrfKn^G-zF1o$LP$61MXw~&xl8k<0ee>)tB}=saeJ{tD;KkMSO$_ z%s-gAR{a5gyASMYM+e!%`38C@sh;W&U53f!Pej0OBFewX(qS^l<^YYQ)NV!1k|Yy$ z-jz&9DvvTpJI7qC07Ku@>z4k%i_5qIwU!9y%=LVmO1XLJ6iOt1PD^&~1I#~+Oc{qv z0<@jOC4NBPoSnZZ72B&jXfPoaMY zJ!*Xknk<1+My7_NCY?#0r$nZ_YSO_G59JmBKb(^m`P5&_1Xr$WJ;Vu7!dt1!oXA_^ z{8sz=kyOcMGBwpFQ_e#}@waFAhokQ7q^^3hEvf@_yXw!p=I9+ll{sXp1D8)mpwwk* zA4%_qd<>53gvG_Q0?bG6I%K&|rtZKQPKU%z-Ae1R+~!oGOr0exF@1ZCq{C=h3zwyC zlDWz%Nc)4rB-lGxdsXgB+wAvg(rg8UOOspKoxVD~M6=am2sFmaWojB}Iwtu)8Pl1Q zv69y7IFtG$x6fJaOD0qOwajj1H-M{d^O}tzwrk{NQSdJFl+;I=OqF8|)qPQ>W?}-i zj-5KCkmRB8u%zmKy?1%*mnnxbeD+-9AGA~5KE6z3s)|fa0k#cC9>_xOy*?Y4h28xj zOj1u;jDT2DpYPl}4&3lXB9i(t_LQnr}dthFdpiPcDa(f$e_=ljHJW;Mx$ z*pE@h<(|@^Gz1##dkv)(({-Tu{s1_sWy-|>beWLy8a0ipKrbaUU1q1;|ME%@=dY1y zLqeWZ!ASrkn?mVXX_psM(VJ}KcvOcI2 zfvkS})CrmA(Mhdwe+^Yum)-B5?5D|`W`v)2qo13E_YSJoV|7esrDh1wPpHSI>G#p- zU6rB9PB^&Qqm@!Wv8I_+x!$zo!8QpV(?)l&@9zDrN9rb)>YZq(_OVk(BJ6mUI;sgc z-8^a2Qs+oAJVXua5oEp=6D>(1V=ty?l2U?=RG;j}Ai9z2nEl|@b)&I-VmSJe31wTc zuBnxRPYFDq)s>b*R?S+9KDleFanek~(Tn$V^G4*VewmtspBAD-WdL}y4+JZO{)A2T zdFepSoO`XgbcRP`ES1C`<3xc&v6}JVT7pcb`qz8-##Ekiz8huA?9?{Em%$l_h%3Ct z$}2m&G1ci5aLBujM%j3mOfAA2nM`HHA3M=kT*GE>#`tiA6&S}!2p&nTR00t9+m*zJ zJ-Ci5^XvL+yvi{SDy6<(1~+z6smcP&YH^x-XI|*pD87=!NHq7dH%}bx-cy&8kdK$0!zCM{6B<7i> z&hDY`2r2QiqOSMPy_Qz={#+j}M^G>GqY`VA0JuJiE^%xF=x(HCq=@NqM5zr#Hvo zdh_Y0@zKU({4~@jRl{*riEE}LO_lIlF_vd|L}fB{mlX9Lr39nV!Vg7n#?h0ce84TW zeV2HDYcY;oj2`ejDLs$27o!gJl8OYySY-xxNZNR1>v62qQS6jQC*_#TO4hezWd_;W zpiH7VDUGs%~!4@MOgt%M=pS)RSXW`rL!EHm#Pk#zCD~0QagllP4 zcY+mWYaI%G#c`FC(>oEz+KsPdJ=$hm8MQ`_SFzz6aXnruBsI$Yobi5I_y<2f`1$|P z&jDcnNr3&v_XGAjDI}gOZ%!8U`O?9BG)aZDlEA^n9A>VKLucmz?M6Vm2)J+i&989k zfk6dZR1o-?a8~bECa_)Ntbjp4>0ykN0d%|MkjtE9ZPkZMYV&;fu$=2U4!M4F3Y3x^x3L~Hp#aS1>YCCL*IX&8cf+z&6$QZ*jh{Ila47ckj!@{BZaPd3AH+4BWG` z{N4^Phl`;{Jz|B$6vt((KA>x6g4NR9z+l`B-_Y}C!pAf!Gj`|n?krhxtMH!Ze2#Us z^&R!Ug1J2vN-P$$Af|*na)&C{4fX1*URGti%gM=B8IdQqyBYk9j2w4#arKAAOO{+{ z;kb2hsB*aZmZ-5X&`naF>a&~TwkI^7Ez##j=n%3`GKZGRnqyOgBJ(rK=(Y&x0%wjK zQyZ^QFCD})KO#4HUEE@`byVXWR=?K75ym%m`jw>@0?yPS(dwL9ycND4{zz0BqF&x) zbe9u3joLYV`z95eJyGX^#&bD*P1HG~_m68Pdg||2G(w|%g@wu6)K?Wb3+D!lXm^mq zCL46v>C=|_C{Yc1SEH~>?uXTvMb1gL4IB1YENEv{KA@+};D(K`2=^Je9bGvpZ>m2# zxP+!7W`I3T;@*vjB38X+A>2HtU`+)-F<^odyZm&D4!QG1!toI(XlIkyGWP+^%P8~Y zr*$rI`ly}m`HuSA5xqX378h9-RaIXf(4E_&>~_q7`;tP>tsiB^ZSiA4{XQFPFIodg z?ohL9r(ixS2`XytzNGf*fYZ~Q&t-KIZJgu~>(|$DH#VTdnc(NCR;ZVsXZhpH;j5x% z(EU$`=k%-su2zn)bx~6FlDOkGCwM;-ej)t0sIg3qn`_J+IQ&Mi^IV?}KPq`UCr*3^ zSv4)arso)Sx*E|V>h+VF!#%ZY4&y!!+dkUQD)DOKlW}BuDfn5YR)udToXn6stx~nP z8T>pXt9Q69iW{$ukk%|A5x00+o_gms&WJs%o?SrVR!9lVlS*qKJDZaJPl)#))m1t5 z^=sje(HwbQW%bTGqMB8WeNa6Z34Vsg4t3O5^eoeoF3-XXtAxySM~a~Xl08bPlTtS z-=l=9NA#qd;`UcW{cq@+o9c^g(C~BNXVjMp`tK&-`E6?0=G5i~!l%{8W9q{O^Kwb| z-QawvQMN^~YPpYy-|T$3D^$_V64Kh~Pc!1TC-m=>c*{olkdO)cL5WXw|s3fzPbw_$67- z@4~}%af8*qA0lyPr~Pflsn zFiV!3y5e3;aoF}AIVxN&fiaCNSzu--@7!RP-_lh(Tr(Y0h-cJJ9dK$L`Lzv>OedN) zwRJBuJY^5fyh0VLol#YfOE;~`cvn4G0NC7!i#4mF=@GSmLSykWkqY#{YAbi6&sL&r z;uu$WfL#DQva?wnR@q_cZvlYDwmj(Kuh{}qPY7)=<~4%l9ek9k#`36U{2W!EJEF=Z zNsUR>g4!R|)9w>DJgR>WsDDMx>NRP+uZSz&;GFxzaWVLDJ+TgdJ8c)KNzKP(Q(#TX zXvjzKYKg4{+5k9yVuMw~9iq0a9Ro&R|FsTvtO(?gdh(#2V<+&f0i!R+>Z>iJYz8pG zm#_D@W&xP+7G9^Fig#Mt@Pht5p#GYtb3-%thIsq3=Aozd&6j$X6>G;r2|IY3f|bjn z$vf)zVR@J4J3he16J@-yi_(d&>VD&oLwf#MeS1!vY?ke2no3;{cH+sjzI{x3;xVet zcJ%x=MCY4&#@keT*44L--BVail2Mkt zXa(QUYYd*Aq9VSjcB~5jHYcf$L+?YR!|ePlqlWo1Yxv+}(9>$Y?KHw=q-7bOeKYvE ziMH7GXxv((OY&q980j{vk#_NEPa+K?u_A4s$iNCVR)DEZYfb8k2k|}!qqe#U%@VL= z49Rq;#7>aB!Hm73am=g56QY%^b33l^%m`Z6!S9@Cs>@hrC~e)6*}{hY%xg&SVKJi)1^JH$M*tRHgD^hEi? z`oAQuyo^`ziblGxJMNPOct~R~fYm&tEjHg+h{@+Q5{APO%9^4C$0XTTX=IDHJ>qjd zaL8u>UEBzM+Pa@`m5XpzQf}b@Oeq#XIeg?$&JLQ?xBuv0oLr$S%ydqh^!XBNaLfa4 z#yF`Qd@Bz-kH#f^C2n`+I~!Zt#Lk~t=krcX!1;=aHh@$+CM{ojen?`(sYA+Am~*h|ijNs`h&!eUH~W_yfh8@1$P(zFxaz2Y_j zdy|zI`4ra5psgftFYoi+q`FLXiN48BFM#Mud=TRF;h;0}_)R*^?(Eg;_~oOKCDE#Nrv3h6IF9(yW~* zZ&_-szm;rLgnUT0s`1UZ@+qA|+Lv}{r<6!e?@UIJC7llPn?tR%7s>-#(7^DK?fi75Ut?I@es zxe>icfkf)_=?Joo6*C@7$|6GF%=B-0l<1A5c;f%bJ68YT=LbLkFZel-6nKiHz{}&` zCn?|x-t*#qK$0DYYZ7bEU=MfQ!hr!jZ#ei;<~FXqZ(6YqIOxuBmoW{JW47a}Z3+DlyOHgN*TS2+ z_v!EnwQ^Ho%8EXHT34=x*A>!?hsPDJ^w^uKKqYmczx$fEGaSb~4=gzfV70-vAinCL z&I0XS7FOl>b~hUJA;1)0I&bSftRf{)5m6xc+=BXrxJsb|2iOtK>+Jbi1Q;?vz#!8p zR-Uu~1#C%og9T6al=#0_%URfuE{IPb(zUBB|IKS2?o+$_1gBND=<#&MUKpg_Z8&nc^SI5q zRa5O##W+s=;x_9(2IEpxTL4)E)N^gqV6JRUj|K1z>L5IgvH_4}AVW)``Jah<#>1x+ z?9PTi(qH@G`S26E@=wBVi099Q!w^!e**;e!f`SH)r9QQP;&l@lJV~aJ#~?L49MMNOQR|^gDVaSN-Fb*a$sW~IUBJZx?d*}7>ZR3^LwaIee_hg8Y`4G? zfOD7H69btW8qbKXy$e6&qBP~$oTtZjBL=W-0Qt39U}-$Li6pJ-TZ0n!03+vE)ZGGb z-hngsB^4i5ukVGggnz3~4gmu0Ykn^2xle?j7LDh_zYc#W%70WdIj(tsNl$)Ovwfdt z>Z^LP?c9`Y8`_jj^)&2Qhs1bcIBhjKo z?_m&iMjv&|n0K82bDsBkKD@v8>u&41*Shvv>%RBB_dZflCcH5{vAJerGAEa|!#R1{ z_(LtpL%WTrcC=}+1O?cP5yWE2$6WiYU z%2yj_!*R7ivySsMlvjhrgUz0^mQ>Y!(X(KS8CUk_#)xB9^H$0AhTuP`q;Sxiiy?Mu$P$x8_8 z91nGF{~7mW?@9g*oF8&a>^Uk#0r^PjUrHQ8j;$+w2l@lD6SN%Yw7Zj>}3s-042tyAuw@gA)hJUZZ2@Yb3lygoG=#6LNe#=X!ycn!8ZmOR>O z+8}z@zmBRb6ej)mcGMDd@eb}5vtTCJSopx|IXxOZujl$3yS%Q}aG!005n1V(ILk?e z9;B!@D%5bN?q@T~rXq6Krz~o1p(_wI&($KXj(XH%eQ?r35O2fZ7llo3qWH1B7S|&~ zw*6SxKIPy`9o%BcM79zQ@mp=H%b#WGBV56CG z?y;%P*ji>O+~zX2eqUYJ79yQFsJzyqvAstaWpIkRcp8w{Yy4@F*`zat;!3SwgQ?51 z^O}IC3nnYYZJ_#H1BX*by$He20$DP>x06_U;y2S`@gUIiP28(5ZPdK9C93;khD`VW z3emiYC`B$zmJDsq=|C=cpQ$;(;a`MeB+@%VdyU7M$W@_+D4pf{35SQX@v6du7dlSE z4Yq-%cOD6uZ{?{JOY~Kjt>#>?ji1kDW&5P9FdVxq{7CuBx##KJ(=WV&N_kR2JnDmd zpOiDqaKXj_rtpm>emB2-$BYsY*S`(-PZH9MklAd{-q2juYiAhc7L5#WoxfLm~<%-d28U@&_z%tiw`CXN+-& z`?V#X{85XvW)`(;wG$l`IJtbj>i9Gf1%+xi59mtL9?ep99909E>M*l|>r6wqspI*3 zBZc$uwTGGxM6x%8+%Z;Btyx473`)A>1cQ^7kY;X}%g#`5Dl-_`cv5S1Zu&s`%(CFh zcmFZbvJ}+BE+?H*!Q@V<)gPipXA14$O1UeMa-V20cp;a?ja?L;aEAw{7*cd=vb+!H zTz+|NsB8rd8W|=XrL1rUQs{j`>wd#;vm{0fn`tE1eTz$4t;S?xfpIx7q6V$GRsdg< zF6y!-ZQGTIpn1;_EQQZlGC3TCGG3JLq2fhT;;dOT8Sc>MW;ns`dSGp0h}I%iu|M>l zsKdf=7Oy)RCWoKRo$z0MqaUTk zYe^x@mF?tbY4y2SC+PH@L$n zwSF=v*d>8E6GVFsBhL?;Kgk~GpYmEY^U&gz(7(v)56F_XCAAJSeX%GSs%LmM%dZt7 z!KNs^&V!o?8h^8GDlzL=yw>Wd;F}(q{*@qD%#6(6pW8}7XDf~897#MB3khNmtoznr zru7F%sm&eKJvEUKUby0umB-TI8D~u&h2&0Iud8~awQV(OnUis>R30*zm+&j@q}XrW zsABGcfqj(xign3edH@Ts6M-+2gNEO`w`PPJ~z0<5) z4*#-FFEM9fMoX@CnNW?%UhhbWPw&s4mOEWHp04@6=1>bixmu)Y_?f4_=KlSmAQ^3c zseKm>NfTrR!=Ni&h~XW(BGxHhkrUsOlCJHPFiloyu!{K~ZP)WAb^Ift`k~m{9M6eJ zp7Jxw5vQ<&?3fo0xh#6d6WwY@qZQw$B##+hMh(TWO?F_GO)PXgN*r57VUH@!a107U zVr7IXeEXC{(A-#10(lel>jk$Z=q=RzxHvIdI6zmi!&9^1IX~a@XrsyDOu=h=3~q-r z#>V74Wpft!WhiTzU%R#X8K6dBC+Mj|$ddw_RrlW6MMN=0V!ngRk8_rVwO2d)>q>iqJ*I{3QYN>;ygb@ejEf(F&Czv&QB^cdZ%* zEz}Bv)emu@L3Obw2T~&tirq=7F}f zMAhrb+P>Qkk#${qq?y6Ix-ime7HrGl^NE?WN3FT1)B8|Ik6+e8(+;2G2Qoh1%vf3-JPI3Koiqw5|qo|H+yu)qJR+99>E=&a}Pxi+<@ zL9AT3&NtO_gTYB^Kecv?7M=@uo}LHij@}nf?#>!%i44@OPafGybB|8>EqE%?hC&iG zth;7y$qaw!^s}&54Hgft-?@2I5$a*iR7>97!t|pewA4)AZDIJ&U0!Xb_mJ#^R>$kP zO8h%SfqhHm!!wV;ncZ@zO#RWHtV$o(Ie($AR|nuP7MX=l0B%ovlojD#>CBX^+~^Qx zWJ#BFid(t|#OQ+uzfh1fZ+^gdIk}sB_fqe}(%%o|xFo*U#xGV-CJ_?NJ!08VkuAw_ z91T%_b6~y}HXwvI>znpHV;Pky6s>OZR@nY{apE`lo3K1$^R|oaDp|A2%VDqIBB7BcohQ|y&OEMmwML8 zu$%GoD~HeeCo4L{)Y84o;4;n$7pHwN9DY!?)*gJ=qxOe$5_>$8iKV*@vmSNRA)E(p zo^TrOipARyH6>gaXcVKRX9~aWr<*@2&>L{VsplV`N%NSPOhj8eTa<=N3w6k2j)pGZLvhfAA70E!!*kwL15Wl#5rLy*W|1JGtk!EcciorL0 zyUH8D^!pUA4JS4%K;Meb>6TVcbtP1zYo!!FFa6Q^Rc{6~(v7`{aECY3W!?V_3(>lR zrK5by$vBuh+-j3{9K>uBOdXsj5RY%F_+@rvcgx~PB*+6W&!<`|-{pJHEhbLaSs*!> z2D%;CyI+9L-F*jDVOv8zaZC3_iD_lu85=-UaY$!E3Jel%zM12~DSD%05ztiDQk^eD zc9YDov6f=kzN7)X_t;qGs4mtiM~eYRn-5Kk z)tH@ltsg(!ea6+Q+?(i0X}NquYR-I@%nHd5!Nz3e2?Y^Bn?G_%?}cn1KKY)e2YE(y zYjpAIZO9l`5UKds<|oAIB5aepmT41gcDOzSS`qnqZHz}fR)0uK6f-2P3bg5Np7X}* zLq65!g;OxyP$=cgF;3ZaDMk#K$#oSq=uXmwmSSb@-Teue^*9s(8byr zdB|6-uRXpH;j6orVmx#2z;3TjXHqvnres7vETyYyc>N2V^KDlnH96DVoiXwBiHq|5 z5vtVnzh<_F;^pYei8jpJNU*z~buJ+X@z=dSb!wZF(h?Th`Nw)Lunw1iu_g{&Sgnq1vByp-A=dKVA#!Ltni()iN++Hj;1}&lO`c6-@WFyz4=}8aAGIa$H5!_?4eHw6L(V zz0FSW4`?(0;*qDuZ_mJQqI*47fb}*PsIxOOGxLy-NG^GAxjOnZVWiV0Q5kxFpBl;g z`L6QK)ckS#R4#tgIyLj_hqq_VpFq|=LUupS%?AXmLw4ssHlO(L9E!JKe<@-If?*#6 zU>^fR)UdxGt>3&@UOx7$TF@i5wPO}>;qB#T;0w>L3UNrxWF zEMN5SaRi~cmrNJJAN<4B2{u3t8?H)>WXxP_Ou)0ip4b95NccdCWtRoiAe$KVNmud`MjsVNwG`pK)~ zAjy5d2j;4dZiV@cJ1G6&h;-<{t|H;C1Nh4h{HmD78TCFZQ z+aANLyBF&Wrrh9v5oEZ*gG`kN!?TOW?=2L!gb&3_X=Ov#gbY(skDcRWaDsdEZ`Ch; zOoed1v?4egzxIFU57iSt;e1BSTp5hZz!E4hn&GIC*oKt9tN)z((k_HTa@L=XwW=Au z`EYn=lk<1A)Hl9o$TLiYe)ZRC*9t#Q-J~|D^1#GVp-c-GJUq>04#p#rQ!=`K#zpMc zs+tN^DVAB3?7(`@Q(UNxZgFpWaDNOq5X@aeT@&;cKl(m@c%~+}?OnF?;5f!|(1OXi znI5wt(R0R8BIv33X-TqEaP#nfZ&eDdNAdcgAe@dnPdaGIqL$NVq~6*pD9ar0*Dxqs zwoJ(pxA2@LuuGTpLCd1#!yxa;EOurkz@e?`f~wlJReOkYS@QFCaO%kuw71^Zp4A(k zN!DF%Z!t5T!O3o~-=Z2N3(|+=9wK14Wfqrp{E!SLcYeSS?Fj2-V`TA;GF1l1?jsf9+;@6OkBRJ={&v29xsL(HGnl%MeSz61 znRooj-N-NNOGF->iV`zyi5Ai*S?!eR!yac}fwLfvHL0ei+TfhC5HYgYY?8DR{LuvL zxtgw^tzfII{bCQ$E)FJp#+%qmT5kt@m2HC@ z2I&*L6Pzeri)r*wSgtH7X)vHs)FC`Sw`jnU!C16L>*e$3!IFxd4rgR#Q%3Socv=eG zz&GULT~68Hh>*cM{L}56iO)a03Nf!{fb4A2I!eoJlRB@9}q zFq<3w27MbXH(tF^g4-$1+Acg0+l$Sg^6}e6zCg+)v;}6w4OLCOS?>e!acsb4R zf?&ss+UL1C5;wO#e>*ZyNroJ;z5LUG#}sS{=~W#`mt5%Rv-?o52p|mhnY4=OXJJc5 zAB}!Ld3TtNYg>JQR;C>d-)R=#lALrS6JvyO@?yLx2hj*s*}w7{f+N>$odc7t@~r(B z_tCo6ABh5HMd**+vdM|9QHq{>>8FOzcLX_T^bXuz z(@wkw4yg9M5jyHa{V=Y6uN)IhfI+`|o~K?NU13(j5_3wGTo4Q0Mc!Ui0Wk8>{ z;cv)b*evoL1d`|*luQtp>kUct@kkL~X!6_T+d&TLVphLj_d9*jI9W8wdEYB>dh3z@ zYh!?2!?g%tdr>zy))hkx*6V4f-15VJk9Rn$I%u*tIZNmsCXOyg%XCPd)`DXVE}&yI zSEjBvU*8ba+oB~Wyy*r57;%m0($IX7EFn>I4if^CmEs|?^N1Ndt{i)Xt&J5YjS7yEiGx7YoM(;yEYoi8(TCqpvapGQRGy| zQBgpr8A(81Xc)u}6lvy93+A`AwJ`Hhudl?j-TDWMVL!X)d&?$t4gh#EG+6#$5-! zXcS`OfgLzZLCr7fhO%2r?Dv9-Ryp;~esigQoAZmTHsz=T=Lt+R$4I?UA;P@DfSF#V zQ2q9H#8)7Bi&a>d2-vn!=>AtVz?MHHRRbVwzN)?b7U=67GwU?hRsR-p3Nav8V8s2Y z&s+N60jx6qNaNz^gzur}wjk2@^_G#POu<8GZf7-&`8)hbw-6Hue65jm5DhpK*z7$L z>D3l5j-9V65K&U~s`9m6w6h0A1}2m~ghLh?eyr@`Thk8$6;`nlzkLT#UIV*=dgg7G zNAIHNr70$JX3Gt8TPmE_MdW*4hhv9|R%&wDEu-a|ydp#*H5;H2z&0mQHS!vA58E+F-3=D^Xq z9NbA=7GDQ}w56=4Cd-RZfn>l5bg6t+ynyS^90o1gTx@xxM1YU%LjlpT?TI3R;up-a9Aywn@nzX&;?<7tfo3|RcgZ?$kvBXVBpe& zJ6vCL*T*OC1v;}L#HKXSofr6D#AJ)igQUEUfZgPbZ ztZs9^BKPRF61z8n4_6U(Xwiu!^ch$z+SKzAC6qMG-^7geY43!3pF#TXJ{81zHeXAX zW+xqEyUQST?7QWrnXcTFNDE$|+noD+dav+=%BUAG3XR-6Zu5+&v-}Oy8sME;KM|Ej zwLz}yB`DutU&6wz%7Vo(x{@vz!=ru}>lxt6U;c2CnS=t*EvW2xZ~S!D=mng8Wk4)yi_a#mrdZ!gCNa^7Tp z9R^&EdMh?3&P`%VKZ$I4Sb5EK@}sy~1IZx^-dcH^_4Qg}2=6*}B4>zi)4Ji(U3rAwfUW2@8N;b0g5nNPc`=C^H_#uf_vGj2gqeUbQ zKMvL`OcjM(ayPK)75&|i7r$BJxIzk1zI*%JBznWBw~ntYYph9X#&Z7UBYP~_fS|Iv zZ2a>T{VAeMfn?MG;yD7X;5i#`KVxys9w<8$;s55!J~y_AL20y6`7!<{j3n^Wx?PJx z=xOSzRA?;crU^8vCxt0uIFO^M@v#6U6-*tkc|ynP)B5w*u?qg@)qo^UflFoiHga~d zffpFKb^=UM-0oYOi&JkqFG1}dhwh%n)i92pnTwG=^n z*=rUM3Um{cH(Kf2V;=kY#y%^t1Cl=gEc-sUx=q2_#AFKiAEqL?kY$xiPexM6r3;Cr zzjjHNeb6N*?ke(JQm8ZL>ZPmxzxMtAcG@Ecy+{)H*MIU7 zH|VFKlx5AY*D-hXmP`Q*YubL5?zA^qMMXfJdhGv(46%tzPVGITC4u4^$Z)k?%(Dln zW?mMnbX^0bwN<@Q`8PslxUxt1g(EnO@HJ2}?PwtpLJXJQ=2zg4*5`cOs()+03n0bF zn7AllQ#1Xg>wL9CL3%8^S3BjS<1dqDtKdkL-=Ewr&sf2 z0c4g=IY2I%$86_0Y^;w+IR}GiFyn`9%N(! zXYTkMwNHM+)W}71ReQP|tlU+V>apa#501Py^p(^OQZR)Ca%DS+N>E1L(;I2pz(pH} zENu%#-cN46e#fWXk(5ULA?;Hk11&yu07ZHa7%gT}h>DYxL zj=}bH8OA`WK~BpERcqAnO0ROPdvde6Z6rVkX2-zw9;aRn1zn*uQi6{gz=NB&%kDg9!u zUoIObAF-AKQLUgd{x88Hv9A9J&i8hq`f@W<{+B5rb&#IHochK;qS?Q?K;V5gk4Pz- zlb9hz2;je-9uyAr`ceZVPnNM=qy$$OuZbPYNZ$7n6^_)T1AM1nVw7Ht*-MB5&ftOV z?futjK)238;S505*O{i5WMD`PZEx@BB&jq8@Q)XM1nOkth5mO=8Od6Zfho>1_zp0A z`1=JRhWnrCAl#xm+V5xOaXS-ukGQB*icOJO3lKmt)2m!?ky1i2j|)ohQ-L!J^b-mS zjff~oA_X%-H2(+Iz4DLF&DleJuD@6buk|EE|Q=);lg3`SYajTRCQ(5}2QpeV*P|eI@@z z#~@S0_|tvqLdZf(+npDT;P+z>q|--Jd(wa2Y?g)fMJI589x~di_vX@fU7?^3BiUd9 zba*E?3SQOm13hH&h2D=4Tm&!pgSB1_5Gpab=!gHTeZLw|?pcj5e~D+8P&&*d-Hb%K zo{RlZEb`|uT^QA7E@$Lk3DMhxz!zy+zEZubLb53{4XCeq>-vpW0Fm=GBCGxX02VCM A0ssI2 literal 57851 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 NbXMy3|3B-z$LQA7Jc$4R delta 19020 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 From ea082b255c914e1ac1127f404c2b58baea2f16bb Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 18 Jun 2022 03:52:03 -0500 Subject: [PATCH 058/580] GUI: prepare for drag selection to move --- src/gui/cursor.cpp | 59 ++++++++++++++++++++++++++++++++++++++------ src/gui/editing.cpp | 26 +++++++++++++++++++ src/gui/gui.cpp | 5 ++++ src/gui/gui.h | 10 +++++--- src/gui/settings.cpp | 9 +++++++ 5 files changed, 98 insertions(+), 11 deletions(-) diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index e47dfd62..4b75a26a 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -42,6 +42,22 @@ void FurnaceGUI::startSelection(int xCoarse, int xFine, int y, bool fullRow) { return; } } + + if (settings.dragMovesSelection && !fullRow) { + if (xCoarse>=selStart.xCoarse && (xFine>=selStart.xFine || xCoarse>selStart.xCoarse) && y>=selStart.y && + xCoarse<=selEnd.xCoarse && (xFine<=selEnd.xFine || xCoarsecurPat[selEnd.xCoarse].effectCols*2; - selEnd.y=y; + if (dragging) { + dragDestinationX=xCoarse; + dragDestinationY=y; + cursorDrag.xCoarse=xCoarse; + cursorDrag.xFine=xFine; + cursorDrag.y=y; + + selStart.xCoarse=dragStart.xCoarse+(dragDestinationX-dragSourceX); + selStart.xFine=dragStart.xFine; + selStart.y=dragStart.y+(dragDestinationY-dragSourceY); + selEnd.xCoarse=dragEnd.xCoarse+(dragDestinationX-dragSourceX); + selEnd.xFine=dragEnd.xFine; + selEnd.y=dragEnd.y+(dragDestinationY-dragSourceY); } else { - selEnd.xCoarse=xCoarse; - selEnd.xFine=xFine; - selEnd.y=y; + if (selectingFull) { + DETERMINE_LAST; + selEnd.xCoarse=lastChannel-1; + selEnd.xFine=2+e->curPat[selEnd.xCoarse].effectCols*2; + selEnd.y=y; + } else { + selEnd.xCoarse=xCoarse; + selEnd.xFine=xFine; + selEnd.y=y; + } } } @@ -103,6 +134,18 @@ void FurnaceGUI::finishSelection() { selecting=false; selectingFull=false; + if (dragging) { + if (dragSourceX==dragDestinationX && dragSourceY==dragDestinationY) { + cursor=cursorDrag; + selStart=cursorDrag; + selEnd=cursorDrag; + } else { // perform drag + doDrag(); + } + + dragging=false; + } + // boundary check int chanCount=e->getTotalChannelCount(); diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index ef63ab26..2f2757c2 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -918,6 +918,32 @@ void FurnaceGUI::doExpand(int multiplier) { makeUndo(GUI_UNDO_PATTERN_EXPAND); } +// 1. COPY +// 2. CLEAR +// 3. PASTE +void FurnaceGUI::doDrag() { + int iCoarse=selStart.xCoarse; + int iFine=selStart.xFine; + for (; iCoarse<=selEnd.xCoarse; iCoarse++) { + if (!e->curSubSong->chanShow[iCoarse]) continue; + DivPattern* pat=e->curPat[iCoarse].getPattern(e->curOrders->ord[iCoarse][curOrder],true); + for (; iFine<3+e->curPat[iCoarse].effectCols*2 && (iCoarsedata[j][iFine]=0; + if (selStart.y==selEnd.y) pat->data[j][2]=-1; + } + pat->data[j][iFine+1]=(iFine<1)?0:-1; + + if (selStart.y==selEnd.y && iFine>2 && iFine&1 && settings.effectDeletionAltersValue) { + pat->data[j][iFine+2]=-1; + } + } + } + iFine=0; + } +} + void FurnaceGUI::doUndo() { if (undoHist.empty()) return; UndoStep& us=undoHist.back(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index fd904649..5717f391 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4372,6 +4372,10 @@ FurnaceGUI::FurnaceGUI(): latchTarget(0), wheelX(0), wheelY(0), + dragSourceX(0), + dragSourceY(0), + dragDestinationX(0), + dragDestinationY(0), exportFadeOut(5.0), editControlsOpen(true), ordersOpen(true), @@ -4403,6 +4407,7 @@ FurnaceGUI::FurnaceGUI(): findOpen(false), selecting(false), selectingFull(false), + dragging(false), curNibble(false), orderNibble(false), followOrders(true), diff --git a/src/gui/gui.h b/src/gui/gui.h index 9381bab0..b9a550ed 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1024,6 +1024,7 @@ class FurnaceGUI { int effectValCellSpacing; int doubleClickColumn; int blankIns; + int dragMovesSelection; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -1124,6 +1125,7 @@ class FurnaceGUI { effectValCellSpacing(0), doubleClickColumn(1), blankIns(0), + dragMovesSelection(1), maxUndoSteps(100), mainFontPath(""), patFontPath(""), @@ -1138,7 +1140,7 @@ class FurnaceGUI { int curIns, curWave, curSample, curOctave, curOrder, prevIns, oldRow, oldOrder, oldOrder1, editStep, exportLoops, soloChan, soloTimeout, orderEditMode, orderCursor; int loopOrder, loopRow, loopEnd, isClipping, extraChannelButtons, patNameTarget, newSongCategory, latchTarget; - int wheelX, wheelY; + int wheelX, wheelY, dragSourceX, dragSourceY, dragDestinationX, dragDestinationY; double exportFadeOut; @@ -1148,8 +1150,8 @@ class FurnaceGUI { bool pianoOpen, notesOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen; bool subSongsOpen, findOpen; - SelectionPoint selStart, selEnd, cursor; - bool selecting, selectingFull, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; + SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; + bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; bool collapseWindow, demandScrollX, fancyPattern, wantPatName, firstFrame, tempoView, waveHex, lockLayout, editOptsVisible, latchNibble, nonLatchNibble; FurnaceGUIWindows curWindow, nextWindow, curWindowLast; float peak[2]; @@ -1465,6 +1467,7 @@ class FurnaceGUI { void startSelection(int xCoarse, int xFine, int y, bool fullRow=false); void updateSelection(int xCoarse, int xFine, int y, bool fullRow=false); void finishSelection(); + void finishDrag(); void moveCursor(int x, int y, bool select); void moveCursorPrevChannel(bool overflow); @@ -1494,6 +1497,7 @@ class FurnaceGUI { void doRedo(); void doFind(); void doReplace(); + void doDrag(); void editOptions(bool topMenu); void noteInput(int num, int key, int vol=-1); void valueInput(int num, bool direct=false, int target=-1); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index da3b0f27..cae24ec0 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -411,6 +411,11 @@ void FurnaceGUI::drawSettings() { if (ImGui::Checkbox("Double click selects entire column",&doubleClickColumnB)) { settings.doubleClickColumn=doubleClickColumnB; } + + bool dragMovesSelectionB=settings.dragMovesSelection; + if (ImGui::Checkbox("Allow dragging selection",&dragMovesSelectionB)) { + settings.dragMovesSelection=dragMovesSelectionB; + } bool allowEditDockingB=settings.allowEditDocking; if (ImGui::Checkbox("Allow docking editors",&allowEditDockingB)) { @@ -2037,6 +2042,8 @@ void FurnaceGUI::syncSettings() { settings.effectValCellSpacing=e->getConfInt("effectValCellSpacing",0); settings.doubleClickColumn=e->getConfInt("doubleClickColumn",1); settings.blankIns=e->getConfInt("blankIns",0); + // SET TO 1 AFTER YOU ARE DONE + settings.dragMovesSelection=e->getConfInt("dragMovesSelection",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2121,6 +2128,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.effectValCellSpacing,0,32); clampSetting(settings.doubleClickColumn,0,1); clampSetting(settings.blankIns,0,1); + clampSetting(settings.dragMovesSelection,0,1); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { @@ -2254,6 +2262,7 @@ void FurnaceGUI::commitSettings() { e->setConf("effectValCellSpacing",settings.effectValCellSpacing); e->setConf("doubleClickColumn",settings.doubleClickColumn); e->setConf("blankIns",settings.blankIns); + e->setConf("dragMovesSelection",settings.dragMovesSelection); // colors for (int i=0; i Date: Sat, 18 Jun 2022 23:18:34 -0500 Subject: [PATCH 059/580] GUI: add ability to move selection by dragging --- TODO.md | 1 - src/gui/editing.cpp | 84 ++++++++++++++++++++++++++++++++++---------- src/gui/gui.h | 1 + src/gui/settings.cpp | 3 +- 4 files changed, 68 insertions(+), 21 deletions(-) diff --git a/TODO.md b/TODO.md index b0fc02d3..cca5ffdb 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,5 @@ # to-do for 0.6pre1 -- add ability to move selection by dragging - implement Defle slide bug when using E1xy/E2xy and repeating origin note (requires format change) # to-do for 0.6pre2 (as this requires new data structures) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index 2f2757c2..9bd82795 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -62,6 +62,7 @@ void FurnaceGUI::prepareUndo(ActionType action) { case GUI_UNDO_PATTERN_FLIP: case GUI_UNDO_PATTERN_COLLAPSE: case GUI_UNDO_PATTERN_EXPAND: + case GUI_UNDO_PATTERN_DRAG: for (int i=0; igetTotalChannelCount(); i++) { e->curPat[i].getPattern(e->curOrders->ord[i][curOrder],false)->copyOn(oldPat[i]); } @@ -114,6 +115,7 @@ void FurnaceGUI::makeUndo(ActionType action) { case GUI_UNDO_PATTERN_FLIP: case GUI_UNDO_PATTERN_COLLAPSE: case GUI_UNDO_PATTERN_EXPAND: + case GUI_UNDO_PATTERN_DRAG: for (int i=0; igetTotalChannelCount(); i++) { DivPattern* p=e->curPat[i].getPattern(e->curOrders->ord[i][curOrder],false); for (int j=0; jcurSubSong->patLen; j++) { @@ -918,30 +920,74 @@ void FurnaceGUI::doExpand(int multiplier) { makeUndo(GUI_UNDO_PATTERN_EXPAND); } -// 1. COPY -// 2. CLEAR -// 3. PASTE void FurnaceGUI::doDrag() { - int iCoarse=selStart.xCoarse; - int iFine=selStart.xFine; - for (; iCoarse<=selEnd.xCoarse; iCoarse++) { - if (!e->curSubSong->chanShow[iCoarse]) continue; - DivPattern* pat=e->curPat[iCoarse].getPattern(e->curOrders->ord[iCoarse][curOrder],true); - for (; iFine<3+e->curPat[iCoarse].effectCols*2 && (iCoarsedata[j][iFine]=0; - if (selStart.y==selEnd.y) pat->data[j][2]=-1; - } - pat->data[j][iFine+1]=(iFine<1)?0:-1; + DivPattern* patBuffer=NULL; + int len=dragEnd.xCoarse-dragStart.xCoarse+1; - if (selStart.y==selEnd.y && iFine>2 && iFine&1 && settings.effectDeletionAltersValue) { - pat->data[j][iFine+2]=-1; + DETERMINE_FIRST_LAST; + + if (len<1) return; + + patBuffer=new DivPattern[len]; + prepareUndo(GUI_UNDO_PATTERN_DRAG); + + // copy and clear + { + int iCoarse=dragStart.xCoarse; + int iFine=dragStart.xFine; + int iCoarseP=0; + for (; iCoarse<=dragEnd.xCoarse; iCoarse++) { + if (!e->curSubSong->chanShow[iCoarse]) continue; + DivPattern* pat=e->curPat[iCoarse].getPattern(e->curOrders->ord[iCoarse][curOrder],true); + for (; iFine<3+e->curPat[iCoarse].effectCols*2 && (iCoarsedata[j][iFine]; + pat->data[j][iFine]=0; + if (dragStart.y==dragEnd.y) pat->data[j][2]=-1; + } + patBuffer[iCoarseP].data[row][iFine+1]=pat->data[j][iFine+1]; + pat->data[j][iFine+1]=(iFine<1)?0:-1; + + if (dragStart.y==dragEnd.y && iFine>2 && iFine&1 && settings.effectDeletionAltersValue) { + pat->data[j][iFine+2]=-1; + } + row++; } } + iFine=0; + iCoarseP++; } - iFine=0; } + + // replace + { + int iCoarse=selStart.xCoarse; + int iFine=selStart.xFine; + int iCoarseP=0; + for (; iCoarse<=selEnd.xCoarse && iCoarsePlastChannel) continue; + if (!e->curSubSong->chanShow[iCoarse]) continue; + DivPattern* pat=e->curPat[iCoarse].getPattern(e->curOrders->ord[iCoarse][curOrder],true); + for (; iFine<3+e->curPat[iCoarse].effectCols*2 && (iCoarse=e->curSubSong->patLen) continue; + if (iFine==0) { + pat->data[j][iFine]=patBuffer[iCoarseP].data[row][iFine]; + } + pat->data[j][iFine+1]=patBuffer[iCoarseP].data[row][iFine+1]; + } + } + iFine=0; + iCoarseP++; + } + } + + delete[] patBuffer; + makeUndo(GUI_UNDO_PATTERN_DRAG); } void FurnaceGUI::doUndo() { @@ -973,6 +1019,7 @@ void FurnaceGUI::doUndo() { case GUI_UNDO_PATTERN_FLIP: case GUI_UNDO_PATTERN_COLLAPSE: case GUI_UNDO_PATTERN_EXPAND: + case GUI_UNDO_PATTERN_DRAG: case GUI_UNDO_REPLACE: for (UndoPatternData& i: us.pat) { e->changeSongP(i.subSong); @@ -1024,6 +1071,7 @@ void FurnaceGUI::doRedo() { case GUI_UNDO_PATTERN_FLIP: case GUI_UNDO_PATTERN_COLLAPSE: case GUI_UNDO_PATTERN_EXPAND: + case GUI_UNDO_PATTERN_DRAG: case GUI_UNDO_REPLACE: for (UndoPatternData& i: us.pat) { e->changeSongP(i.subSong); diff --git a/src/gui/gui.h b/src/gui/gui.h index b9a550ed..ac15d5a8 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -567,6 +567,7 @@ enum ActionType { GUI_UNDO_PATTERN_FLIP, GUI_UNDO_PATTERN_COLLAPSE, GUI_UNDO_PATTERN_EXPAND, + GUI_UNDO_PATTERN_DRAG, GUI_UNDO_REPLACE }; diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index cae24ec0..a6f45e20 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -2042,8 +2042,7 @@ void FurnaceGUI::syncSettings() { settings.effectValCellSpacing=e->getConfInt("effectValCellSpacing",0); settings.doubleClickColumn=e->getConfInt("doubleClickColumn",1); settings.blankIns=e->getConfInt("blankIns",0); - // SET TO 1 AFTER YOU ARE DONE - settings.dragMovesSelection=e->getConfInt("dragMovesSelection",0); + settings.dragMovesSelection=e->getConfInt("dragMovesSelection",1); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); From 03e31c441e990142702f7fafdb612d435e2b8cf2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 19 Jun 2022 00:11:18 -0500 Subject: [PATCH 060/580] prepare for ins preview in system file picker --- CMakeLists.txt | 4 +- extern/nfd-modified/src/include/nfd.h | 9 ---- .../src/{nfd_cocoa.m => nfd_cocoa.mm} | 6 +++ .../src/{nfd_common.c => nfd_common.cpp} | 0 extern/nfd-modified/src/nfd_common.h | 8 --- .../src/{nfd_gtk.c => nfd_gtk.cpp} | 0 extern/nfd-modified/src/nfd_win.cpp | 1 + .../src/{nfd_zenity.c => nfd_zenity.cpp} | 0 papers/newIns.md | 49 +++++++++++++++++++ 9 files changed, 58 insertions(+), 19 deletions(-) rename extern/nfd-modified/src/{nfd_cocoa.m => nfd_cocoa.mm} (97%) rename extern/nfd-modified/src/{nfd_common.c => nfd_common.cpp} (100%) rename extern/nfd-modified/src/{nfd_gtk.c => nfd_gtk.cpp} (100%) rename extern/nfd-modified/src/{nfd_zenity.c => nfd_zenity.cpp} (100%) create mode 100644 papers/newIns.md diff --git a/CMakeLists.txt b/CMakeLists.txt index 25c3c904..c7c076a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -521,7 +521,7 @@ src/gui/gui.cpp ) if (WIN32 OR APPLE) - list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_common.c) + list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_common.cpp) endif() if (WIN32) @@ -530,7 +530,7 @@ endif() if (APPLE) list(APPEND GUI_SOURCES src/gui/macstuff.m) - list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_cocoa.m) + list(APPEND GUI_SOURCES extern/nfd-modified/src/nfd_cocoa.mm) endif() if (NOT WIN32 AND NOT APPLE) diff --git a/extern/nfd-modified/src/include/nfd.h b/extern/nfd-modified/src/include/nfd.h index 74c92743..c88e4c85 100644 --- a/extern/nfd-modified/src/include/nfd.h +++ b/extern/nfd-modified/src/include/nfd.h @@ -10,10 +10,6 @@ #ifndef _NFD_H #define _NFD_H -#ifdef __cplusplus -extern "C" { -#endif - #include /* denotes UTF-8 char */ @@ -66,9 +62,4 @@ nfdchar_t *NFD_PathSet_GetPath( const nfdpathset_t *pathSet, size_t index ); /* Free the pathSet */ void NFD_PathSet_Free( nfdpathset_t *pathSet ); - -#ifdef __cplusplus -} -#endif - #endif diff --git a/extern/nfd-modified/src/nfd_cocoa.m b/extern/nfd-modified/src/nfd_cocoa.mm similarity index 97% rename from extern/nfd-modified/src/nfd_cocoa.m rename to extern/nfd-modified/src/nfd_cocoa.mm index 776152d4..45beab90 100644 --- a/extern/nfd-modified/src/nfd_cocoa.m +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -8,6 +8,12 @@ #include "nfd.h" #include "nfd_common.h" +// this language is a mess! +// who thought it was a good idea to combine Objective-C and C++ together +// when you could just have used C++ and call it a day!!! +// +// might as well make Objective-Ruswift++... + static NSArray *BuildAllowedFileTypes( const char *filterList ) { // Commas and semicolons are the same thing on this platform diff --git a/extern/nfd-modified/src/nfd_common.c b/extern/nfd-modified/src/nfd_common.cpp similarity index 100% rename from extern/nfd-modified/src/nfd_common.c rename to extern/nfd-modified/src/nfd_common.cpp diff --git a/extern/nfd-modified/src/nfd_common.h b/extern/nfd-modified/src/nfd_common.h index 1a9ab162..a1dd74b5 100644 --- a/extern/nfd-modified/src/nfd_common.h +++ b/extern/nfd-modified/src/nfd_common.h @@ -14,10 +14,6 @@ #include -#ifdef __cplusplus -extern "C" { -#endif - #define NFD_MAX_STRLEN 256 #define _NFD_UNUSED(x) ((void)x) @@ -30,10 +26,6 @@ void NFDi_SetError( const char *msg ); int NFDi_SafeStrncpy( char *dst, const char *src, size_t maxCopy ); int32_t NFDi_UTF8_Strlen( const nfdchar_t *str ); int NFDi_IsFilterSegmentChar( char ch ); - -#ifdef __cplusplus -} -#endif #endif diff --git a/extern/nfd-modified/src/nfd_gtk.c b/extern/nfd-modified/src/nfd_gtk.cpp similarity index 100% rename from extern/nfd-modified/src/nfd_gtk.c rename to extern/nfd-modified/src/nfd_gtk.cpp diff --git a/extern/nfd-modified/src/nfd_win.cpp b/extern/nfd-modified/src/nfd_win.cpp index 949da2b5..9ef6446b 100644 --- a/extern/nfd-modified/src/nfd_win.cpp +++ b/extern/nfd-modified/src/nfd_win.cpp @@ -423,6 +423,7 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, } // Show the dialog. + // TODO: pass the Furnace window here result = fileOpenDialog->Show(NULL); if ( SUCCEEDED(result) ) { diff --git a/extern/nfd-modified/src/nfd_zenity.c b/extern/nfd-modified/src/nfd_zenity.cpp similarity index 100% rename from extern/nfd-modified/src/nfd_zenity.c rename to extern/nfd-modified/src/nfd_zenity.cpp diff --git a/papers/newIns.md b/papers/newIns.md new file mode 100644 index 00000000..fcc5f966 --- /dev/null +++ b/papers/newIns.md @@ -0,0 +1,49 @@ +# possible new Furnace instrument format + +the main issue with Furnace instrument files is that they are too big, even if the instrument is nothing more than the FM setup... + +the aim of this new format is to greatly reduce the size of a resulting instrument. + +``` +size | description +-----|------------------------------------ + 6 | "FURINS" format magic + 2 | format version + 1 | instrument type + ??? | feature bits + 4 | instrument length (if wave/sample bits are on) +``` + +the "feature bits" field is a variable length bitfield. bit 7 in a byte indicates "read one more byte". + +the feature bits are: + +- 0: has wavetables +- 1: has samples +- 2: has name +- 3: FM data +- 4: FM data size (1: 2-op, 0: 4-op) +- 5: FM data includes OPL/OPZ data + - if off, only read an op until ssgEnv. + - if on, read everything else. +- 6: Game Boy data +- 7: (continue in next byte) +- 8: C64 data +- 9: Amiga data +- 10: standard data (macros) +- 11: operator macros +- 12: release points +- 13: op release points +- 14: extended op macros +- 15: (continue in next byte) +- 16: OPL drums mode data +- 17: Amiga sample map data +- 18: Namco 163 data +- 19: extra macros +- 20: FDS data +- 21: OPZ data +- 22: wavetable synth data +- 23: (continue in next byte) +- 24: additional macro modes +- 25: extra C64 data +- 26: MultiPCM data From 52328df8c3a9464b5a041fbb8f56606202de0385 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 19 Jun 2022 01:36:36 -0500 Subject: [PATCH 061/580] GUI: system file picker ins preview! (Windows) --- extern/nfd-modified/src/include/nfd.h | 12 +++- extern/nfd-modified/src/nfd_cocoa.mm | 9 ++- extern/nfd-modified/src/nfd_win.cpp | 97 +++++++++++++++++++++++++-- src/gui/fileDialog.cpp | 4 +- 4 files changed, 108 insertions(+), 14 deletions(-) diff --git a/extern/nfd-modified/src/include/nfd.h b/extern/nfd-modified/src/include/nfd.h index c88e4c85..4e4ddcf7 100644 --- a/extern/nfd-modified/src/include/nfd.h +++ b/extern/nfd-modified/src/include/nfd.h @@ -11,10 +11,13 @@ #define _NFD_H #include +#include /* denotes UTF-8 char */ typedef char nfdchar_t; +typedef std::function nfdselcallback_t; + /* opaque data structure -- see NFD_PathSet_* */ typedef struct { nfdchar_t *buf; @@ -34,17 +37,20 @@ typedef enum { /* single file open dialog */ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdchar_t **outPath ); + nfdchar_t **outPath, + nfdselcallback_t selCallback = NULL ); /* multiple file open dialog */ nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdpathset_t *outPaths ); + nfdpathset_t *outPaths, + nfdselcallback_t selCallback = NULL ); /* save dialog */ nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdchar_t **outPath ); + nfdchar_t **outPath, + nfdselcallback_t selCallback = NULL ); /* select folder dialog */ diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index 45beab90..ff952260 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -127,7 +127,8 @@ static nfdresult_t AllocPathSet( NSArray *urls, nfdpathset_t *pathset ) nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdchar_t **outPath ) + nfdchar_t **outPath, + nfdselcallback_t selCallback ) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -169,7 +170,8 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdpathset_t *outPaths ) + nfdpathset_t *outPaths, + nfdselcallback_t selCallback ) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow]; @@ -213,7 +215,8 @@ nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdchar_t **outPath ) + nfdchar_t **outPath, + nfdselcallback_t selCallback ) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *keyWindow = [[NSApplication sharedApplication] keyWindow]; diff --git a/extern/nfd-modified/src/nfd_win.cpp b/extern/nfd-modified/src/nfd_win.cpp index 9ef6446b..ea18d72b 100644 --- a/extern/nfd-modified/src/nfd_win.cpp +++ b/extern/nfd-modified/src/nfd_win.cpp @@ -27,6 +27,72 @@ #include #include "nfd_common.h" +// hack I know +#include "../../../src/utfutils.h" + +class NFDWinEvents: public IFileDialogEvents { + nfdselcallback_t selCallback; + size_t refCount; + + virtual ~NFDWinEvents() { + } + public: + IFACEMETHODIMP QueryInterface(REFIID riid, void** ppv) { + printf("QueryInterface called DAMN IT\n"); + *ppv=NULL; + return E_NOTIMPL; + } + + IFACEMETHODIMP_(ULONG) AddRef() { + printf("AddRef() called\n"); + return InterlockedIncrement(&refCount); + } + + IFACEMETHODIMP_(ULONG) Release() { + printf("Release() called\n"); + LONG ret=InterlockedDecrement(&refCount); + if (ret==0) { + printf("Destroying the final object.\n"); + delete this; + } + return ret; + } + + IFACEMETHODIMP OnFileOk(IFileDialog*) { return E_NOTIMPL; } + IFACEMETHODIMP OnFolderChange(IFileDialog*) { return E_NOTIMPL; } + IFACEMETHODIMP OnFolderChanging(IFileDialog*, IShellItem*) { return E_NOTIMPL; } + IFACEMETHODIMP OnOverwrite(IFileDialog*, IShellItem*, FDE_OVERWRITE_RESPONSE*) { return E_NOTIMPL; } + IFACEMETHODIMP OnShareViolation(IFileDialog*, IShellItem*, FDE_SHAREVIOLATION_RESPONSE*) { return E_NOTIMPL; } + IFACEMETHODIMP OnTypeChange(IFileDialog*) { return E_NOTIMPL; } + + IFACEMETHODIMP OnSelectionChange(IFileDialog* dialog) { + // Get the file name + ::IShellItem *shellItem(NULL); + HRESULT result = dialog->GetCurrentSelection(&shellItem); + if ( !SUCCEEDED(result) ) + { + printf("failure!\n"); + return S_OK; + } + wchar_t *filePath(NULL); + result = shellItem->GetDisplayName(::SIGDN_FILESYSPATH, &filePath); + if ( !SUCCEEDED(result) ) + { + printf("GDN failure!\n"); + shellItem->Release(); + return S_OK; + } + std::string utf8FilePath=utf16To8(filePath); + if (selCallback!=NULL) selCallback(utf8FilePath.c_str()); + printf("I got you for a value of %s\n",utf8FilePath.c_str()); + shellItem->Release(); + return S_OK; + } + NFDWinEvents(nfdselcallback_t callback): + selCallback(callback), + refCount(1) { + } +}; #define COM_INITFLAGS ::COINIT_APARTMENTTHREADED | ::COINIT_DISABLE_OLE1DDE @@ -386,10 +452,13 @@ static nfdresult_t SetDefaultPath( IFileDialog *dialog, const char *defaultPath nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdchar_t **outPath ) + nfdchar_t **outPath, + nfdselcallback_t selCallback ) { nfdresult_t nfdResult = NFD_ERROR; - + NFDWinEvents* winEvents; + bool hasEvents=true; + DWORD eventID=0; HRESULT coResult = COMInit(); if (!COMIsInitialized(coResult)) @@ -420,7 +489,17 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, if ( !SetDefaultPath( fileOpenDialog, defaultPath ) ) { goto end; - } + } + + // Pass the callback + winEvents=new NFDWinEvents(selCallback); + if ( !SUCCEEDED(fileOpenDialog->Advise(winEvents,&eventID)) ) { + // error... ignore + hasEvents=false; + winEvents->Release(); + } else { + winEvents->Release(); + } // Show the dialog. // TODO: pass the Furnace window here @@ -467,8 +546,12 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, } end: - if (fileOpenDialog) + if (fileOpenDialog) { + if (hasEvents) { + fileOpenDialog->Unadvise(eventID); + } fileOpenDialog->Release(); + } COMUninit(coResult); @@ -477,7 +560,8 @@ end: nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdpathset_t *outPaths ) + nfdpathset_t *outPaths, + nfdselcallback_t selCallback ) { nfdresult_t nfdResult = NFD_ERROR; @@ -571,7 +655,8 @@ end: nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, const nfdchar_t *defaultPath, - nfdchar_t **outPath ) + nfdchar_t **outPath, + nfdselcallback_t selCallback ) { nfdresult_t nfdResult = NFD_ERROR; diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index c88a0427..5be3bdb1 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -30,9 +30,9 @@ void _nfdThread(const NFDState state, std::atomic* ok, String* result) { nfdresult_t ret=NFD_CANCEL; if (state.isSave) { - ret=NFD_SaveDialog(NULL,state.path.c_str(),&out); + ret=NFD_SaveDialog(NULL,state.path.c_str(),&out,state.clickCallback); } else { - ret=NFD_OpenDialog(NULL,state.path.c_str(),&out); + ret=NFD_OpenDialog(NULL,state.path.c_str(),&out,state.clickCallback); } switch (ret) { From 9b71dae4d92652371438ff503d816bd11f195a9a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 19 Jun 2022 01:39:07 -0500 Subject: [PATCH 062/580] fix macOS build (hopefully) --- extern/nfd-modified/src/nfd_cocoa.mm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index ff952260..ac5fa36c 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -81,7 +81,7 @@ static nfdresult_t AllocPathSet( NSArray *urls, nfdpathset_t *pathset ) assert([urls count]); pathset->count = (size_t)[urls count]; - pathset->indices = NFDi_Malloc( sizeof(size_t)*pathset->count ); + pathset->indices = (size_t*)NFDi_Malloc( sizeof(size_t)*pathset->count ); if ( !pathset->indices ) { return NFD_ERROR; @@ -95,7 +95,7 @@ static nfdresult_t AllocPathSet( NSArray *urls, nfdpathset_t *pathset ) bufsize += [path lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1; } - pathset->buf = NFDi_Malloc( sizeof(nfdchar_t) * bufsize ); + pathset->buf = (nfdchar_t*)NFDi_Malloc( sizeof(nfdchar_t) * bufsize ); if ( !pathset->buf ) { return NFD_ERROR; @@ -151,7 +151,7 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList, // byte count, not char count size_t len = strlen(utf8Path);//NFDi_UTF8_Strlen(utf8Path); - *outPath = NFDi_Malloc( len+1 ); + *outPath = (nfdchar_t*)NFDi_Malloc( len+1 ); if ( !*outPath ) { [pool release]; @@ -238,7 +238,7 @@ nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList, size_t byteLen = [url.path lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1; - *outPath = NFDi_Malloc( byteLen ); + *outPath = (nfdchar_t*)NFDi_Malloc( byteLen ); if ( !*outPath ) { [pool release]; @@ -278,7 +278,7 @@ nfdresult_t NFD_PickFolder(const nfdchar_t *defaultPath, // byte count, not char count size_t len = strlen(utf8Path);//NFDi_UTF8_Strlen(utf8Path); - *outPath = NFDi_Malloc( len+1 ); + *outPath = (nfdchar_t*)NFDi_Malloc( len+1 ); if ( !*outPath ) { [pool release]; From 2313e4fcc358fcf087dbb0279e6c97b9d033aa15 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 19 Jun 2022 14:03:36 -0500 Subject: [PATCH 063/580] GUI: temporarily remove freqs in sample map --- src/gui/insEdit.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 8199767c..df62a87e 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3006,7 +3006,8 @@ void FurnaceGUI::drawInsEdit() { ImGui::BeginDisabled(ins->amiga.useWave); P(ImGui::Checkbox("Use sample map (does not work yet!)",&ins->amiga.useNoteMap)); if (ins->amiga.useNoteMap) { - if (ImGui::BeginTable("NoteMap",3,ImGuiTableFlags_ScrollY|ImGuiTableFlags_Borders|ImGuiTableFlags_SizingStretchSame)) { + // TODO: frequency map? + if (ImGui::BeginTable("NoteMap",2,ImGuiTableFlags_ScrollY|ImGuiTableFlags_Borders|ImGuiTableFlags_SizingStretchSame)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch); @@ -3017,8 +3018,8 @@ void FurnaceGUI::drawInsEdit() { ImGui::TableNextColumn(); ImGui::TableNextColumn(); ImGui::Text("Sample"); - ImGui::TableNextColumn(); - ImGui::Text("Frequency"); + /*ImGui::TableNextColumn(); + ImGui::Text("Frequency");*/ for (int i=0; i<120; i++) { ImGui::TableNextRow(); ImGui::PushID(fmt::sprintf("NM_%d",i).c_str()); @@ -3046,12 +3047,12 @@ void FurnaceGUI::drawInsEdit() { } ImGui::EndCombo(); } - ImGui::TableNextColumn(); + /*ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); if (ImGui::InputInt("##SF",&ins->amiga.noteFreq[i],50,500)) { PARAMETER if (ins->amiga.noteFreq[i]<0) ins->amiga.noteFreq[i]=0; if (ins->amiga.noteFreq[i]>262144) ins->amiga.noteFreq[i]=262144; - } + }*/ ImGui::PopID(); } ImGui::EndTable(); From d47c50edaf4182e3cbee1c2d0516d254f9ea2cdb Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 19 Jun 2022 18:23:44 -0500 Subject: [PATCH 064/580] GUI: fix drag to move --- src/gui/cursor.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index 4b75a26a..ee681c77 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -91,6 +91,19 @@ void FurnaceGUI::updateSelection(int xCoarse, int xFine, int y, bool fullRow) { cursorDrag.xFine=xFine; cursorDrag.y=y; + int len=dragEnd.xCoarse-dragStart.xCoarse+1; + if (len<0) len=0; + + DETERMINE_FIRST_LAST; + + if (dragStart.xCoarse+(dragDestinationX-dragSourceX)lastChannel) { + + } + selStart.xCoarse=dragStart.xCoarse+(dragDestinationX-dragSourceX); selStart.xFine=dragStart.xFine; selStart.y=dragStart.y+(dragDestinationY-dragSourceY); From 35bc757adfe693c0d8c356fe675bce91203905cc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 19 Jun 2022 18:51:51 -0500 Subject: [PATCH 065/580] GUI: fix macOS system file picker crash --- extern/nfd-modified/src/nfd_cocoa.mm | 5 +++++ src/gui/fileDialog.cpp | 8 ++++++++ src/gui/fileDialog.h | 5 +++++ src/gui/gui.cpp | 2 ++ 4 files changed, 20 insertions(+) diff --git a/extern/nfd-modified/src/nfd_cocoa.mm b/extern/nfd-modified/src/nfd_cocoa.mm index ac5fa36c..8eac6f79 100644 --- a/extern/nfd-modified/src/nfd_cocoa.mm +++ b/extern/nfd-modified/src/nfd_cocoa.mm @@ -18,6 +18,8 @@ static NSArray *BuildAllowedFileTypes( const char *filterList ) { // Commas and semicolons are the same thing on this platform + // like what about THIS INSTEAD! + // NSMutableArray *buildFilterList = NSMutableArray::alloc()->init(); NSMutableArray *buildFilterList = [[NSMutableArray alloc] init]; char typebuf[NFD_MAX_STRLEN] = {0}; @@ -32,6 +34,9 @@ static NSArray *BuildAllowedFileTypes( const char *filterList ) ++p_typebuf; *p_typebuf = '\0'; + // or this: NSString::stringWithUTF8String(typebuf); + // buildFilterList->addObject(thisType); + // really? did you have to make this mess?! NSString *thisType = [NSString stringWithUTF8String: typebuf]; [buildFilterList addObject:thisType]; p_typebuf = typebuf; diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index 5be3bdb1..64f9e989 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -67,7 +67,11 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, c if (sysDialog) { #ifdef USE_NFD dialogOK=false; +#ifdef NFD_NON_THREADED + _nfdThread(NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult); +#else dialogO=new std::thread(_nfdThread,NFDState(false,header,filter,path,clickCallback),&dialogOK,&nfdResult); +#endif #else dialogO=new pfd::open_file(header,path,filter); #endif @@ -87,7 +91,11 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, c if (sysDialog) { #ifdef USE_NFD dialogOK=false; +#ifdef NFD_NON_THREADED + _nfdThread(NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult); +#else dialogS=new std::thread(_nfdThread,NFDState(true,header,filter,path,NULL),&dialogOK,&nfdResult); +#endif #else dialogS=new pfd::save_file(header,path,filter); #endif diff --git a/src/gui/fileDialog.h b/src/gui/fileDialog.h index 6131f56b..6724eb95 100644 --- a/src/gui/fileDialog.h +++ b/src/gui/fileDialog.h @@ -10,6 +10,11 @@ #ifdef USE_NFD #include #include + +#ifdef __APPLE__ +#define NFD_NON_THREADED +#endif + #else namespace pfd { class open_file; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 5717f391..dc45acf4 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3138,6 +3138,7 @@ bool FurnaceGUI::loop() { #endif } +#ifndef NFD_NON_THREADED if (fileDialog->isOpen() && settings.sysFileDialog) { ImGui::OpenPopup("System File Dialog Pending"); } @@ -3150,6 +3151,7 @@ bool FurnaceGUI::loop() { dl->AddRectFilled(ImVec2(0.0f,0.0f),ImVec2(scrW*dpiScale,scrH*dpiScale),ImGui::ColorConvertFloat4ToU32(uiColors[GUI_COLOR_MODAL_BACKDROP])); ImGui::EndPopup(); } +#endif if (fileDialog->render(ImVec2(600.0f*dpiScale,400.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale))) { bool openOpen=false; From d66ff353bae0109162b0fe5af0ec50c1cf855d95 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 19 Jun 2022 19:07:38 -0500 Subject: [PATCH 066/580] GUI: more fixes to drag to move --- src/gui/cursor.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index ee681c77..19526268 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -100,8 +100,16 @@ void FurnaceGUI::updateSelection(int xCoarse, int xFine, int y, bool fullRow) { dragDestinationX=dragSourceX-dragStart.xCoarse; } - if (dragEnd.xCoarse+(dragDestinationX-dragSourceX)>lastChannel) { - + if (dragEnd.xCoarse+(dragDestinationX-dragSourceX)>=lastChannel) { + dragDestinationX=lastChannel-(dragEnd.xCoarse-dragSourceX)-1; + } + + if (dragStart.y+(dragDestinationY-dragSourceY)<0) { + dragDestinationY=dragSourceY-dragStart.y; + } + + if (dragEnd.y+(dragDestinationY-dragSourceY)>=e->curSubSong->patLen) { + dragDestinationY=e->curSubSong->patLen-(dragEnd.y-dragSourceY)-1; } selStart.xCoarse=dragStart.xCoarse+(dragDestinationX-dragSourceX); From 337e2183cd38794d300d91e27b1fd09ac4927448 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 04:55:28 -0500 Subject: [PATCH 067/580] fix build on GCC < 8 --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7c076a2..3d064ac0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -584,7 +584,11 @@ endif() if (NOT MSVC) set(WARNING_FLAGS -Wall -Wextra -Wno-unused-parameter) if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND WARNING_FLAGS -Wno-cast-function-type) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0.0) + # nothing + else() + list(APPEND WARNING_FLAGS -Wno-cast-function-type) + endif() endif() if (WARNINGS_ARE_ERRORS) list(APPEND WARNING_FLAGS -Werror) From 6772159d5f4ffed3f013cc2b89e5a445dec15258 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 04:58:03 -0500 Subject: [PATCH 068/580] one more GCC < 8 fix --- src/engine/platform/sound/ymfm/ymfm_opn.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/sound/ymfm/ymfm_opn.h b/src/engine/platform/sound/ymfm/ymfm_opn.h index 34dc065d..00fd61ad 100644 --- a/src/engine/platform/sound/ymfm/ymfm_opn.h +++ b/src/engine/platform/sound/ymfm/ymfm_opn.h @@ -784,7 +784,7 @@ public: protected: // simulate the DAC discontinuity - constexpr int32_t dac_discontinuity(int32_t value) const { return (value < 0) ? (value - 2) : (value + 3); } + int32_t dac_discontinuity(int32_t value) const { return (value < 0) ? (value - 2) : (value + 3); } // internal state uint16_t m_address; // address register From 60334fb03cfbe47bfe2e278daaa89200a7b5fcf6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 15:20:02 -0500 Subject: [PATCH 069/580] GUI: add spoiler window --- CMakeLists.txt | 1 + src/gui/debugWindow.cpp | 3 +++ src/gui/findReplace.cpp | 19 +++++++++++++++++++ src/gui/gui.cpp | 4 ++++ src/gui/gui.h | 6 ++++-- src/gui/spoiler.cpp | 37 +++++++++++++++++++++++++++++++++++++ 6 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 src/gui/spoiler.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d064ac0..74d622be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -510,6 +510,7 @@ src/gui/sampleEdit.cpp src/gui/settings.cpp src/gui/songInfo.cpp src/gui/songNotes.cpp +src/gui/spoiler.cpp src/gui/stats.cpp src/gui/subSongs.cpp src/gui/sysConf.cpp diff --git a/src/gui/debugWindow.cpp b/src/gui/debugWindow.cpp index 7d6d057f..22527a7b 100644 --- a/src/gui/debugWindow.cpp +++ b/src/gui/debugWindow.cpp @@ -369,6 +369,9 @@ void FurnaceGUI::drawDebug() { if (ImGui::Button("Inspect")) { inspectorOpen=!inspectorOpen; } + if (ImGui::Button("Spoiler")) { + spoilerOpen=!spoilerOpen; + } ImGui::TreePop(); } if (ImGui::TreeNode("Performance")) { diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index f16ccd7a..78abce7c 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -1,3 +1,22 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + #include "gui.h" #include "imgui.h" #include "IconsFontAwesome4.h" diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index dc45acf4..9b37f987 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3006,6 +3006,7 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("register view",BIND_FOR(GUI_ACTION_WINDOW_REGISTER_VIEW),regViewOpen)) regViewOpen=!regViewOpen; if (ImGui::MenuItem("log viewer",BIND_FOR(GUI_ACTION_WINDOW_LOG),logOpen)) logOpen=!logOpen; if (ImGui::MenuItem("statistics",BIND_FOR(GUI_ACTION_WINDOW_STATS),statsOpen)) statsOpen=!statsOpen; + if (spoilerOpen) if (ImGui::MenuItem("spoiler",NULL,spoilerOpen)) spoilerOpen=!spoilerOpen; ImGui::EndMenu(); } @@ -4035,6 +4036,7 @@ bool FurnaceGUI::init() { effectListOpen=e->getConfBool("effectListOpen",false); subSongsOpen=e->getConfBool("subSongsOpen",true); findOpen=e->getConfBool("findOpen",false); + spoilerOpen=e->getConfBool("spoilerOpen",false); tempoView=e->getConfBool("tempoView",true); waveHex=e->getConfBool("waveHex",false); @@ -4258,6 +4260,7 @@ bool FurnaceGUI::finish() { e->setConf("effectListOpen",effectListOpen); e->setConf("subSongsOpen",subSongsOpen); e->setConf("findOpen",findOpen); + e->setConf("spoilerOpen",spoilerOpen); // commit last window size e->setConf("lastWindowWidth",scrW); @@ -4407,6 +4410,7 @@ FurnaceGUI::FurnaceGUI(): chanOscOpen(false), subSongsOpen(true), findOpen(false), + spoilerOpen(false), selecting(false), selectingFull(false), dragging(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index ac15d5a8..271b8eaa 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -246,7 +246,8 @@ enum FurnaceGUIWindows { GUI_WINDOW_EFFECT_LIST, GUI_WINDOW_CHAN_OSC, GUI_WINDOW_SUBSONGS, - GUI_WINDOW_FIND + GUI_WINDOW_FIND, + GUI_WINDOW_SPOILER }; enum FurnaceGUIFileDialogs { @@ -1149,7 +1150,7 @@ class FurnaceGUI { bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen; bool mixerOpen, debugOpen, inspectorOpen, oscOpen, volMeterOpen, statsOpen, compatFlagsOpen; bool pianoOpen, notesOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen; - bool subSongsOpen, findOpen; + bool subSongsOpen, findOpen, spoilerOpen; SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; @@ -1445,6 +1446,7 @@ class FurnaceGUI { void drawEffectList(); void drawSubSongs(); void drawFindReplace(); + void drawSpoiler(); void parseKeybinds(); void promptKey(int which); diff --git a/src/gui/spoiler.cpp b/src/gui/spoiler.cpp new file mode 100644 index 00000000..dc64b14c --- /dev/null +++ b/src/gui/spoiler.cpp @@ -0,0 +1,37 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "gui.h" +#include "imgui.h" + +void FurnaceGUI::drawSpoiler() { + if (nextWindow==GUI_WINDOW_SPOILER) { + spoilerOpen=true; + ImGui::SetNextWindowFocus(); + nextWindow=GUI_WINDOW_NOTHING; + } + if (!spoilerOpen) return; + if (ImGui::Begin("Spoiler",&spoilerOpen,globalWinFlags|ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_AlwaysAutoResize)) { + ImGui::PushFont(bigFont); + ImGui::Text("SPOILER"); + ImGui::PopFont(); + } + if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SPOILER; + ImGui::End(); +} From 57fab1626966c8de64ab6d29f1f7e5ee1593297b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 16:24:14 -0500 Subject: [PATCH 070/580] GUI: add ability to drag to move when holding Ctrl --- src/gui/cursor.cpp | 2 +- src/gui/settings.cpp | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index 19526268..5a98a78c 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -43,7 +43,7 @@ void FurnaceGUI::startSelection(int xCoarse, int xFine, int y, bool fullRow) { } } - if (settings.dragMovesSelection && !fullRow) { + if ((settings.dragMovesSelection==1 || (settings.dragMovesSelection==2 && (ImGui::IsKeyDown(ImGuiKey_LeftCtrl) || ImGui::IsKeyDown(ImGuiKey_RightCtrl)))) && !fullRow) { if (xCoarse>=selStart.xCoarse && (xFine>=selStart.xFine || xCoarse>selStart.xCoarse) && y>=selStart.y && xCoarse<=selEnd.xCoarse && (xFine<=selEnd.xFine || xCoarsegetConfInt("effectValCellSpacing",0); settings.doubleClickColumn=e->getConfInt("doubleClickColumn",1); settings.blankIns=e->getConfInt("blankIns",0); - settings.dragMovesSelection=e->getConfInt("dragMovesSelection",1); + settings.dragMovesSelection=e->getConfInt("dragMovesSelection",2); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -2127,7 +2133,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.effectValCellSpacing,0,32); clampSetting(settings.doubleClickColumn,0,1); clampSetting(settings.blankIns,0,1); - clampSetting(settings.dragMovesSelection,0,1); + clampSetting(settings.dragMovesSelection,0,2); settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys","")); if (settings.initialSys.size()<4) { From 41135f4a954646f7dfa3e18ac39b0f6443f11bb0 Mon Sep 17 00:00:00 2001 From: cam900 Date: Tue, 21 Jun 2022 06:35:11 +0900 Subject: [PATCH 071/580] Add extended channel 3 preset for here --- src/gui/presets.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 46335227..5fa4d75e 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1910,6 +1910,13 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Seta 1 + FM addon (extended channel 3)", { + DIV_SYSTEM_X1_010, 64, 0, 0, + DIV_SYSTEM_YM2612_EXT, 64, 0, 2, // Discrete YM3438 + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Seta 2", { DIV_SYSTEM_X1_010, 64, 0, 1, From df21621ce7b5b74054e6c4a8bb349e257f7990f5 Mon Sep 17 00:00:00 2001 From: cam900 Date: Tue, 21 Jun 2022 06:36:41 +0900 Subject: [PATCH 072/580] Add drums mode in here, too --- src/gui/presets.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 5fa4d75e..d85865f7 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1972,6 +1972,14 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Dynax/Nakanihon 3rd generation hardware (drums mode)", { + DIV_SYSTEM_AY8910, 64, 0, 0, // AY or YM, optional - 1.79MHz or 3.58MHz; various per game + DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, + DIV_SYSTEM_MSM6295, 64, 0, 6, // 1.023MHz mostly + 0 + } + )); cat.systems.push_back(FurnaceGUISysDef( "Dynax/Nakanihon Real Break", { DIV_SYSTEM_OPLL, 64, 0, 0, @@ -1979,6 +1987,13 @@ void FurnaceGUI::initSystemPresets() { 0 } )); + cat.systems.push_back(FurnaceGUISysDef( + "Dynax/Nakanihon Real Break (drums mode)", { + DIV_SYSTEM_OPLL_DRUMS, 64, 0, 0, + DIV_SYSTEM_YMZ280B, 64, 0, 0, + 0 + } + )); sysCategories.push_back(cat); cat=FurnaceGUISysCategory("DefleMask-compatible","these configurations are compatible with DefleMask.\nselect this if you need to save as .dmf or work with that program."); From b3201853bc5256605d6f1e932df4f36cddd96dcf Mon Sep 17 00:00:00 2001 From: cam900 Date: Tue, 21 Jun 2022 06:54:18 +0900 Subject: [PATCH 073/580] Fix YM2151 clock in CPS-1 --- src/gui/presets.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index d85865f7..67acca82 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -1405,7 +1405,7 @@ void FurnaceGUI::initSystemPresets() { )); cat.systems.push_back(FurnaceGUISysDef( "Capcom CPS-1", { - DIV_SYSTEM_YM2151, 64, 0, 2, + DIV_SYSTEM_YM2151, 64, 0, 0, // 3.58MHz DIV_SYSTEM_MSM6295, 64, 0, 0, 0 } From ee709b85c2bbdc7b7e3aedb41c19426852df565b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 18:20:49 -0500 Subject: [PATCH 074/580] Namco WSG: per-channel oscilloscope --- src/engine/platform/namcowsg.cpp | 13 +++++++++---- src/engine/platform/sound/namco.cpp | 9 +++++---- src/engine/platform/sound/namco.h | 3 ++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/engine/platform/namcowsg.cpp b/src/engine/platform/namcowsg.cpp index 1e8ff46d..43136d91 100644 --- a/src/engine/platform/namcowsg.cpp +++ b/src/engine/platform/namcowsg.cpp @@ -164,9 +164,6 @@ const char* DivPlatformNamcoWSG::getEffectName(unsigned char effect) { } void DivPlatformNamcoWSG::acquire(short* bufL, short* bufR, size_t start, size_t len) { - short* buf[2]={ - bufL+start, bufR+start - }; while (!writes.empty()) { QueuedWrite w=writes.front(); switch (devType) { @@ -186,7 +183,15 @@ void DivPlatformNamcoWSG::acquire(short* bufL, short* bufR, size_t start, size_t regPool[w.addr&0x3f]=w.val; writes.pop(); } - namco->sound_stream_update(buf,len); + for (size_t h=start; hsound_stream_update(buf,1); + for (int i=0; idata[oscBuf[i]->needle++]=namco->m_channel_list[i].last_out*chans; + } + } } void DivPlatformNamcoWSG::updateWave(int ch) { diff --git a/src/engine/platform/sound/namco.cpp b/src/engine/platform/sound/namco.cpp index 82141301..811c34ab 100644 --- a/src/engine/platform/sound/namco.cpp +++ b/src/engine/platform/sound/namco.cpp @@ -172,10 +172,11 @@ void namco_audio_device::build_decoded_waveform(uint8_t *rgnbase) /* generate sound by oversampling */ -uint32_t namco_audio_device::namco_update_one(short* buffer, int size, const int16_t *wave, uint32_t counter, uint32_t freq) +uint32_t namco_audio_device::namco_update_one(short* buffer, int size, const int16_t *wave, uint32_t counter, uint32_t freq, int16_t& last_out) { for (int sampindex = 0; sampindex < size; sampindex++) { + last_out=wave[WAVEFORM_POSITION(counter)]; buffer[sampindex]+=wave[WAVEFORM_POSITION(counter)]; counter += freq; } @@ -700,7 +701,7 @@ void namco_audio_device::sound_stream_update(short** outputs, int len) const int16_t *lw = &m_waveform[lv][voice->waveform_select * 32]; /* generate sound into the buffer */ - c = namco_update_one(lmix, len, lw, voice->counter, voice->frequency); + c = namco_update_one(lmix, len, lw, voice->counter, voice->frequency, voice->last_out); } /* only update if we have non-zero right volume */ @@ -709,7 +710,7 @@ void namco_audio_device::sound_stream_update(short** outputs, int len) const int16_t *rw = &m_waveform[rv][voice->waveform_select * 32]; /* generate sound into the buffer */ - c = namco_update_one(rmix, len, rw, voice->counter, voice->frequency); + c = namco_update_one(rmix, len, rw, voice->counter, voice->frequency, voice->last_out); } /* update the counter for this voice */ @@ -789,7 +790,7 @@ void namco_audio_device::sound_stream_update(short** outputs, int len) const int16_t *w = &m_waveform[v][voice->waveform_select * 32]; /* generate sound into buffer and update the counter for this voice */ - voice->counter = namco_update_one(buffer, len, w, voice->counter, voice->frequency); + voice->counter = namco_update_one(buffer, len, w, voice->counter, voice->frequency, voice->last_out); } } } diff --git a/src/engine/platform/sound/namco.h b/src/engine/platform/sound/namco.h index 507eaed2..d3844abc 100644 --- a/src/engine/platform/sound/namco.h +++ b/src/engine/platform/sound/namco.h @@ -31,6 +31,7 @@ public: uint32_t noise_counter; int32_t noise_hold; int32_t waveform_select; + int16_t last_out; }; namco_audio_device(uint32_t clock); @@ -43,7 +44,7 @@ public: void build_decoded_waveform( uint8_t *rgnbase ); void update_namco_waveform(int offset, uint8_t data); - uint32_t namco_update_one(short* buffer, int size, const int16_t *wave, uint32_t counter, uint32_t freq); + uint32_t namco_update_one(short* buffer, int size, const int16_t *wave, uint32_t counter, uint32_t freq, int16_t& last_out); /* waveform region */ uint8_t* m_wave_ptr; From b697694c0d37decee804dd7727213d6fec10b1ed Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 18:41:23 -0500 Subject: [PATCH 075/580] GUI: per-channel osc DC offset centering --- src/gui/chanOsc.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 5bd945f1..964af6f1 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -135,6 +135,9 @@ void FurnaceGUI::drawChanOsc() { waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f)); } } else { + float minLevel=1.0f; + float maxLevel=-1.0f; + float dcOff=0.0f; unsigned short needlePos=buf->needle; if (chanOscWaveCorr) { /* @@ -195,20 +198,32 @@ void FurnaceGUI::drawChanOsc() { needlePos-=displaySize; for (unsigned short i=0; i<512; i++) { - float x=(float)i/512.0f; float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; - if (y<-0.5f) y=-0.5f; - if (y>0.5f) y=0.5f; - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + if (minLevel>y) minLevel=y; + if (maxLeveldata[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; if (y<-0.5f) y=-0.5f; if (y>0.5f) y=0.5f; - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-(y-dcOff))); + } + } else { + needlePos-=displaySize; + for (unsigned short i=0; i<512; i++) { + float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; + if (minLevel>y) minLevel=y; + if (maxLeveldata[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; + if (y<-0.5f) y=-0.5f; + if (y>0.5f) y=0.5f; + waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-(y-dcOff))); } } } From fd61e0e9f8ccafc55b0d0e25e34101cac6343cd2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 18:48:10 -0500 Subject: [PATCH 076/580] ZX beeper: per-"channel" osc there's only one --- src/engine/platform/zxbeeper.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/zxbeeper.cpp b/src/engine/platform/zxbeeper.cpp index 34265f8a..524d3c11 100644 --- a/src/engine/platform/zxbeeper.cpp +++ b/src/engine/platform/zxbeeper.cpp @@ -59,6 +59,7 @@ void DivPlatformZXBeeper::acquire(short* bufL, short* bufR, size_t start, size_t } o=sampleOut; bufL[h]=o?16384:0; + oscBuf[0]->data[oscBuf[0]->needle++]=o?16384:-16384; continue; } @@ -76,6 +77,7 @@ void DivPlatformZXBeeper::acquire(short* bufL, short* bufR, size_t start, size_t if (++curChan>=6) curChan=0; bufL[h]=o?16384:0; + oscBuf[0]->data[oscBuf[0]->needle++]=o?16384:-16384; } } @@ -256,7 +258,7 @@ DivMacroInt* DivPlatformZXBeeper::getChanMacroInt(int ch) { } DivDispatchOscBuffer* DivPlatformZXBeeper::getOscBuffer(int ch) { - return oscBuf[ch]; + return (ch<1)?oscBuf[ch]:NULL; } unsigned char* DivPlatformZXBeeper::getRegisterPool() { From 5a1a583ab02c5540754667212faded79e6d7e192 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 18:53:39 -0500 Subject: [PATCH 077/580] AY: finally fix unmuting --- src/engine/platform/ay.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 52ac6e57..07377610 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -489,9 +489,9 @@ void DivPlatformAY8910::muteChannel(int ch, bool mute) { isMuted[ch]=mute; if (isMuted[ch]) { rWrite(0x08+ch,0); - } else if (intellivision && (chan[ch].psgMode&4)) { + } else if (intellivision && (chan[ch].psgMode&4) && chan[ch].active) { rWrite(0x08+ch,(chan[ch].vol&0xc)<<2); - } else { + } else if (chan[ch].active) { rWrite(0x08+ch,(chan[ch].outVol&15)|((chan[ch].psgMode&4)<<2)); } } From 4ca64cc66c46bc78652b778146e0e7ef1e15811f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 18:56:20 -0500 Subject: [PATCH 078/580] GUI: hide hidden channels in per-chan osc --- src/gui/chanOsc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 964af6f1..0626c355 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -81,7 +81,7 @@ void FurnaceGUI::drawChanOsc() { for (int i=0; igetOscBuffer(i); - if (buf!=NULL) { + if (buf!=NULL && e->curSubSong->chanShow[i]) { oscBufs.push_back(buf); oscFFTs.push_back(&chanOscChan[i]); oscChans.push_back(i); From 69ea1d02276aa64b0dd753c3106c2361a96560bd Mon Sep 17 00:00:00 2001 From: cam900 Date: Tue, 21 Jun 2022 11:06:26 +0900 Subject: [PATCH 079/580] Fix AY8930 unmuting --- src/engine/platform/ay8930.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/ay8930.cpp b/src/engine/platform/ay8930.cpp index a92f185c..0fad4025 100644 --- a/src/engine/platform/ay8930.cpp +++ b/src/engine/platform/ay8930.cpp @@ -521,7 +521,7 @@ void DivPlatformAY8930::muteChannel(int ch, bool mute) { isMuted[ch]=mute; if (isMuted[ch]) { rWrite(0x08+ch,0); - } else { + } else if (chan[ch].active) { rWrite(0x08+ch,(chan[ch].outVol&31)|((chan[ch].psgMode&4)<<3)); } } From af4a3598016f44214b10d40967478298552aaa4e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 21:11:03 -0500 Subject: [PATCH 080/580] GUI: make spoiler actually visible --- src/gui/gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 9b37f987..bb33073a 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3100,6 +3100,7 @@ bool FurnaceGUI::loop() { drawSubSongs(); drawFindReplace(); + drawSpoiler(); drawPattern(); drawEditControls(); drawSongInfo(); From e3686c2e3437589f7e4b0a26b2d525a9f1f16bf0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 22:14:16 -0500 Subject: [PATCH 081/580] fix song playing from begin if stopped on last row --- src/engine/engine.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 8ce31a60..e8a766b3 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1431,7 +1431,10 @@ void DivEngine::stop() { freelance=false; playing=false; extValuePresent=false; + endOfSong=false; // what? stepPlay=0; + curOrder=prevOrder; + curRow=prevRow; remainingLoops=-1; sPreview.sample=-1; sPreview.wave=-1; From 6372f279fa1f1c5816c8460d966ed22ec96d9461 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 20 Jun 2022 22:35:34 -0500 Subject: [PATCH 082/580] update to-do list --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index cca5ffdb..da090151 100644 --- a/TODO.md +++ b/TODO.md @@ -10,3 +10,4 @@ - Game Boy envelope macro/sequence - volume commands should work on Game Boy - ability to customize `OFF`, `===` and `REL` +- stereo separation control for AY From e0bccc8c14137cbc4d2d1567a9000b3dd906dbbd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 21 Jun 2022 18:01:53 -0500 Subject: [PATCH 083/580] GUI: prepare for colors in the per-chan osc --- CMakeLists.txt | 1 + src/gui/chanOsc.cpp | 107 +++++++++++++++++++++++++++++++++---------- src/gui/gradient.cpp | 70 ++++++++++++++++++++++++++++ src/gui/gui.cpp | 6 +++ src/gui/gui.h | 44 +++++++++++++++++- 5 files changed, 204 insertions(+), 24 deletions(-) create mode 100644 src/gui/gradient.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 74d622be..82094ce0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -495,6 +495,7 @@ src/gui/editing.cpp src/gui/editControls.cpp src/gui/effectList.cpp src/gui/findReplace.cpp +src/gui/gradient.cpp src/gui/insEdit.cpp src/gui/log.cpp src/gui/mixer.cpp diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 0626c355..d9d3ddd4 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -34,36 +34,93 @@ void FurnaceGUI::drawChanOsc() { } if (!chanOscOpen) return; ImGui::SetNextWindowSizeConstraints(ImVec2(64.0f*dpiScale,32.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale)); - if (ImGui::Begin("Oscilloscope (per-channel)",&chanOscOpen,globalWinFlags)) { + if (ImGui::Begin("Oscilloscope (per-channel)",&chanOscOpen,globalWinFlags|((chanOscOptions)?0:ImGuiWindowFlags_NoTitleBar))) { bool centerSettingReset=false; - if (ImGui::BeginTable("ChanOscSettings",3)) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::Text("Columns"); - ImGui::SameLine(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputInt("##COSColumns",&chanOscCols,1,1)) { - if (chanOscCols<1) chanOscCols=1; - if (chanOscCols>64) chanOscCols=64; + if (chanOscOptions) { + if (ImGui::BeginTable("ChanOscSettings",3)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::Text("Columns"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputInt("##COSColumns",&chanOscCols,1,1)) { + if (chanOscCols<1) chanOscCols=1; + if (chanOscCols>64) chanOscCols=64; + } + + ImGui::TableNextColumn(); + ImGui::Text("Size (ms)"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + if (ImGui::InputFloat("##COSWinSize",&chanOscWindowSize,1.0f,1.0f)) { + if (chanOscWindowSize<1.0f) chanOscWindowSize=1.0f; + if (chanOscWindowSize>50.0f) chanOscWindowSize=50.0f; + } + + ImGui::TableNextColumn(); + if (ImGui::Checkbox("Center waveform",&chanOscWaveCorr)) { + centerSettingReset=true; + } + + ImGui::EndTable(); } - ImGui::TableNextColumn(); - ImGui::Text("Size (ms)"); - ImGui::SameLine(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - if (ImGui::InputFloat("##COSWinSize",&chanOscWindowSize,1.0f,1.0f)) { - if (chanOscWindowSize<1.0f) chanOscWindowSize=1.0f; - if (chanOscWindowSize>50.0f) chanOscWindowSize=50.0f; + ImGui::Text("Gradient"); + + if (chanOscGradTex==NULL) { + chanOscGradTex=SDL_CreateTexture(sdlRend,SDL_PIXELFORMAT_ABGR8888,SDL_TEXTUREACCESS_STREAMING,chanOscGrad.width,chanOscGrad.height); + + if (chanOscGradTex==NULL) { + logE("error while creating gradient texture! %s",SDL_GetError()); + } else { + updateChanOscGradTex=true; + } } - ImGui::TableNextColumn(); - if (ImGui::Checkbox("Center waveform",&chanOscWaveCorr)) { - centerSettingReset=true; - } + if (ImGui::BeginTable("ChanOscGradSet",2)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); - ImGui::EndTable(); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (chanOscGradTex!=NULL) { + if (updateChanOscGradTex) { + chanOscGrad.render(); + if (SDL_UpdateTexture(chanOscGradTex,NULL,chanOscGrad.grad.get(),chanOscGrad.width*4)==0) { + updateChanOscGradTex=false; + } else { + logE("error while updating gradient texture! %s",SDL_GetError()); + } + } + + ImGui::ImageButton(chanOscGradTex,ImVec2(400.0f*dpiScale,400.0f*dpiScale)); + ImVec2 gradLeft=ImGui::GetItemRectMin(); + ImVec2 gradSize=ImGui::GetItemRectSize(); + if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { + chanOscGrad.points.push_back(Gradient2DPoint( + (ImGui::GetMousePos().x-gradLeft.x)/gradSize.x, + (ImGui::GetMousePos().y-gradLeft.y)/gradSize.y + )); + updateChanOscGradTex=true; + logI("a point inserted"); + } + + ImVec2 oldCurPos=ImGui::GetCursorPos(); + for (Gradient2DPoint& i: chanOscGrad.points) { + ImGui::SetCursorPos(ImVec2(gradLeft.x+i.x*gradSize.x,gradLeft.y+i.y*gradSize.y)); + ImGui::Text("Here"); + } + ImGui::SetCursorPos(oldCurPos); + } + + ImGui::TableNextColumn(); + if (ImGui::ColorEdit4("Background",(float*)&chanOscGrad.bgColor)) { + updateChanOscGradTex=true; + } + + ImGui::EndTable(); + } } - ImGui::PushStyleVar(ImGuiStyleVar_CellPadding,ImVec2(0.0f,0.0f)); float availY=ImGui::GetContentRegionAvail().y; @@ -232,6 +289,10 @@ void FurnaceGUI::drawChanOsc() { } } ImGui::EndTable(); + + if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { + chanOscOptions=!chanOscOptions; + } } ImGui::PopStyleVar(); } diff --git a/src/gui/gradient.cpp b/src/gui/gradient.cpp new file mode 100644 index 00000000..c9b26fb8 --- /dev/null +++ b/src/gui/gradient.cpp @@ -0,0 +1,70 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "gui.h" +#include "imgui.h" +#include + +void Gradient2D::render() { + ImU32* g=grad.get(); + ImU32 bgColorU=ImGui::ColorConvertFloat4ToU32(bgColor); + + // 1. fill with background color + for (size_t i=0; i=pDistSquared) continue; + + float dist=(1.0-(sqrt(distSquared)/i.distance))-i.spread; + if (dist<0) dist=0; + if (dist>1) dist=1; + + ImU32 shadeColor=ImGui::ColorConvertFloat4ToU32( + ImVec4( + i.color.x*i.color.w*dist, + i.color.y*i.color.w*dist, + i.color.z*i.color.w*dist, + 1.0f + ) + ); + + ImU32 origColor=g[j*width+k]; + g[j*width+k]=( + (MIN( 0xff, (origColor&0xff) + (shadeColor&0xff) )) | // R + (MIN( 0xff00, (origColor&0xff00) + (shadeColor&0xff00) )) | // G + (MIN(0xff0000,(origColor&0xff0000)+(shadeColor&0xff0000))) | // B + (origColor&0xff000000) // A + ); + } + } + } +} \ No newline at end of file diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index bb33073a..fbfc2b4d 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4575,6 +4575,10 @@ FurnaceGUI::FurnaceGUI(): chanOscCols(3), chanOscWindowSize(20.0f), chanOscWaveCorr(true), + chanOscOptions(false), + updateChanOscGradTex(true), + chanOscGrad(64,64), + chanOscGradTex(NULL), followLog(true), #ifdef IS_MOBILE pianoOctaves(7), @@ -4664,4 +4668,6 @@ FurnaceGUI::FurnaceGUI(): memset(queryReplaceEffectVal,0,sizeof(int)*8); memset(queryReplaceEffectDo,0,sizeof(bool)*8); memset(queryReplaceEffectValDo,0,sizeof(bool)*8); + + chanOscGrad.bgColor=ImVec4(0.0f,0.0f,0.0f,1.0f); } diff --git a/src/gui/gui.h b/src/gui/gui.h index 271b8eaa..a538c5ba 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -757,6 +758,45 @@ struct TouchPoint { z(pressure) {} }; +struct Gradient2DPoint { + ImVec4 color; + float x, y; + float spread, distance; + bool selected, grab; + Gradient2DPoint(float xPos, float yPos): + color(1,1,1,1), + x(xPos), + y(yPos), + spread(0.0f), + distance(0.5f), + selected(false), + grab(false) {} + Gradient2DPoint(): + color(1,1,1,1), + x(0.0f), + y(0.0f), + spread(0.0f), + distance(0.5f), + selected(false), + grab(false) {} +}; + +struct Gradient2D { + ImVec4 bgColor; + std::vector points; + std::unique_ptr grad; + size_t width, height; + + void render(); + ImU32 get(float x, float y); + Gradient2D(size_t w, size_t h): + bgColor(0.0f,0.0f,0.0f,0.0f), + width(w), + height(h) { + grad=std::make_unique(width*height); + } +}; + struct FurnaceGUISysDef { const char* name; std::vector definition; @@ -1344,7 +1384,9 @@ class FurnaceGUI { // per-channel oscilloscope int chanOscCols; float chanOscWindowSize; - bool chanOscWaveCorr; + bool chanOscWaveCorr, chanOscOptions, updateChanOscGradTex; + Gradient2D chanOscGrad; + SDL_Texture* chanOscGradTex; float chanOscLP0[DIV_MAX_CHANS]; float chanOscLP1[DIV_MAX_CHANS]; unsigned short lastNeedlePos[DIV_MAX_CHANS]; From 22dd22ca3303a4f8369436b1a7fabb920663c785 Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Wed, 22 Jun 2022 19:38:29 +0700 Subject: [PATCH 084/580] Allow accessing all 256 waves in macros --- src/gui/insEdit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index df62a87e..275a34f9 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -3483,7 +3483,7 @@ void FurnaceGUI::drawInsEdit() { } const char* waveLabel="Waveform"; - int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_VERA)?3:63; + int waveMax=(ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_VERA)?3:255; bool bitMode=false; if (ins->type==DIV_INS_C64 || ins->type==DIV_INS_AY || ins->type==DIV_INS_AY8930 || ins->type==DIV_INS_SAA1099) { bitMode=true; @@ -3520,7 +3520,7 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_X1_010) { dutyMax=0; ex1Max=7; - ex2Max=63; + ex2Max=255; ex2Bit=false; } if (ins->type==DIV_INS_N163) { From 4bf4be1ea26c3da3cc914e29f667a99fc35bdadd Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Wed, 22 Jun 2022 21:55:31 +0700 Subject: [PATCH 085/580] Fix 16-bit samples in YMZ280B VGM export --- src/engine/sample.h | 1 + src/engine/vgmOps.cpp | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/engine/sample.h b/src/engine/sample.h index d9ad633c..70f8418c 100644 --- a/src/engine/sample.h +++ b/src/engine/sample.h @@ -248,6 +248,7 @@ struct DivSample { offQSound(0), offX1_010(0), offSU(0), + offYMZ280B(0), offRF5C68(0), samples(0) {} ~DivSample(); diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index 6e2bc82c..0d1ad4f5 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -1653,13 +1653,34 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version) { w->write(writeX1010[i]->getSampleMem(),writeX1010[i]->getSampleMemUsage()); } if (writeZ280[i]!=NULL && writeZ280[i]->getSampleMemUsage()>0) { + // In VGM, YMZ280B's 16-bit PCM has an endianness swapped + // which have been fixed in the upstream MAME since 2013 + // in order to get Konami FireBeat working + // The reason given for VGM not applying this change was + // "It matches OPL4 and MAME probably did an endianness optimization" + size_t sampleMemLen=writeZ280[i]->getSampleMemUsage(); + unsigned char* sampleMem=new unsigned char[sampleMemLen]; + memcpy(sampleMem,writeZ280[i]->getSampleMem(),sampleMemLen); + for (int i=0; idepth==16) { + unsigned int pos=s->offYMZ280B; + for (unsigned int j=0; jsamples; j++) { + unsigned char lo=sampleMem[pos+j*2]; + unsigned char hi=sampleMem[pos+j*2+1]; + sampleMem[pos+j*2]=hi; + sampleMem[pos+j*2+1]=lo; + } + } + } w->writeC(0x67); w->writeC(0x66); w->writeC(0x86); w->writeI((writeZ280[i]->getSampleMemUsage()+8)|(i*0x80000000)); w->writeI(writeZ280[i]->getSampleMemCapacity()); w->writeI(0); - w->write(writeZ280[i]->getSampleMem(),writeZ280[i]->getSampleMemUsage()); + w->write(sampleMem,sampleMemLen); + delete[] sampleMem; } } From 8dc143af7b774eedefc4daec0532a02fc0484f64 Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Thu, 23 Jun 2022 02:42:11 +0700 Subject: [PATCH 086/580] PET: Support full 16-bit period range Fix #500 --- src/engine/platform/pet.cpp | 69 +++++++++++++++++++++++-------------- src/engine/platform/pet.h | 4 ++- 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/src/engine/platform/pet.cpp b/src/engine/platform/pet.cpp index 0decd909..9b3c9988 100644 --- a/src/engine/platform/pet.cpp +++ b/src/engine/platform/pet.cpp @@ -21,15 +21,15 @@ #include "../engine.h" #include -#define rWrite(a,v) {regPool[(a)]=(v)&0xff; if((a)==10) {chan.sreg=(v); chan.cnt=2;}} - #define CHIP_DIVIDER 16 #define SAMP_DIVIDER 4 const char* regCheatSheet6522[]={ "T2L", "08", + "T2H", "09", "SR", "0A", "ACR", "0B", + "PCR", "0C", NULL }; @@ -46,26 +46,45 @@ const char* DivPlatformPET::getEffectName(unsigned char effect) { return NULL; } +// high-level emulation of 6522 shift register and driver software for now +void DivPlatformPET::rWrite(unsigned int addr, unsigned char val) { + bool hwSROutput=((regPool[11]>>2)&7)==4; + switch (addr) { + case 9: + // simulate phase reset from switching between hw/sw shift registers + if ((regPool[9]==0)^(val==0)) { + chan.sreg=chan.wave; + } + break; + case 10: + chan.sreg=val; + if (hwSROutput) chan.cnt=2; + break; + } + regPool[addr]=val; +} + void DivPlatformPET::acquire(short* bufL, short* bufR, size_t start, size_t len) { - // high-level emulation of 6522 shift register for now - int t2=regPool[8]*2+4; - if (((regPool[11]>>2)&7)==4) { + bool hwSROutput=((regPool[11]>>2)&7)==4; + if (chan.enable) { + int reload=regPool[8]*2+4; + if (!hwSROutput) { + reload+=regPool[9]*512; + } for (size_t h=start; h0) { - int adv=MIN(cycs,chan.cnt); - chan.cnt-=adv; - cycs-=adv; - if (chan.cnt==0) { - chan.out=(chan.sreg&1)*32767; - chan.sreg=(chan.sreg>>1)|((chan.sreg&1)<<7); - chan.cnt=t2; - } + if (SAMP_DIVIDER>chan.cnt) { + chan.out=(chan.sreg&1)*32767; + chan.sreg=(chan.sreg>>1)|((chan.sreg&1)<<7); + chan.cnt+=reload-SAMP_DIVIDER; + } else { + chan.cnt-=SAMP_DIVIDER; } bufL[h]=chan.out; bufR[h]=chan.out; oscBuf->data[oscBuf->needle++]=chan.out; } + // emulate driver writes to PCR + if (!hwSROutput) regPool[12]=chan.out?0xe0:0xc0; } else { chan.out=0; for (size_t h=start; h0) { - if (regPool[11]!=16) { - rWrite(11,16); - rWrite(10,chan.wave); - } + chan.enable=true; + rWrite(11,regPool[9]==0?16:0); } else { + chan.enable=false; rWrite(11,0); } } @@ -118,21 +136,22 @@ void DivPlatformPET::tick(bool sysTick) { chan.freqChanged=true; } if (chan.freqChanged || chan.keyOn || chan.keyOff) { - chan.freq=parent->calcFreq(chan.baseFreq,chan.pitch,true,0,chan.pitch2,chipClock,CHIP_DIVIDER); - if (chan.freq>257) chan.freq=257; - if (chan.freq<2) chan.freq=2; - rWrite(8,chan.freq-2); + chan.freq=parent->calcFreq(chan.baseFreq,chan.pitch,true,0,chan.pitch2,chipClock,CHIP_DIVIDER)-2; + if (chan.freq>65535) chan.freq=65535; + if (chan.freq<0) chan.freq=0; + rWrite(8,chan.freq&0xff); + rWrite(9,chan.freq>>8); if (chan.keyOn) { if (!chan.std.vol.will) { chan.outVol=chan.vol; - writeOutVol(); } chan.keyOn=false; } if (chan.keyOff) { - rWrite(11,0); chan.keyOff=false; } + // update mode setting and channel enable + writeOutVol(); chan.freqChanged=false; } } diff --git a/src/engine/platform/pet.h b/src/engine/platform/pet.h index a5037045..06c7e736 100644 --- a/src/engine/platform/pet.h +++ b/src/engine/platform/pet.h @@ -26,7 +26,7 @@ class DivPlatformPET: public DivDispatch { struct Channel { int freq, baseFreq, pitch, pitch2, note, ins; - bool active, insChanged, freqChanged, keyOn, keyOff, inPorta; + bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, enable; int vol, outVol, wave; unsigned char sreg; int cnt; @@ -49,6 +49,7 @@ class DivPlatformPET: public DivDispatch { keyOn(false), keyOff(false), inPorta(false), + enable(false), vol(1), outVol(1), wave(0b00001111), @@ -85,6 +86,7 @@ class DivPlatformPET: public DivDispatch { ~DivPlatformPET(); private: void writeOutVol(); + void rWrite(unsigned int addr, unsigned char val); }; #endif From 4731dad9170250dac50de1725f8057b6549b53fc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 22 Jun 2022 15:10:53 -0500 Subject: [PATCH 087/580] GUI: colors --- src/gui/chanOsc.cpp | 350 +++++++++++++++++++++++++++---------------- src/gui/gradient.cpp | 16 +- src/gui/gui.cpp | 7 + src/gui/gui.h | 29 +++- 4 files changed, 268 insertions(+), 134 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index d9d3ddd4..57fa99da 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -26,6 +26,49 @@ #define FURNACE_FFT_RATE 80.0 #define FURNACE_FFT_CUTOFF 0.1 +const char* chanOscRefs[]={ + "None (0%)", + "None (50%)", + "None (100%)", + + "Frequency", + "Volume", + "Channel", + "Brightness", + + "Note Trigger" +}; + +float FurnaceGUI::computeGradPos(int type, int chan) { + switch (type) { + case GUI_OSCREF_NONE: + return 0.0f; + break; + case GUI_OSCREF_CENTER: + return 0.5f; + break; + case GUI_OSCREF_MAX: + return 1.0f; + break; + case GUI_OSCREF_FREQUENCY: + return chanOscPitch[chan]; + break; + case GUI_OSCREF_VOLUME: + return chanOscVol[chan]; + break; + case GUI_OSCREF_CHANNEL: + return (float)chan/(float)(e->getTotalChannelCount()-1); + break; + case GUI_OSCREF_BRIGHT: + return chanOscBright[chan]; + break; + case GUI_OSCREF_NOTE_TRIGGER: + return keyHit[chan]*5.0f; + break; + } + return 0.0f; +} + void FurnaceGUI::drawChanOsc() { if (nextWindow==GUI_WINDOW_CHAN_OSC) { chanOscOpen=true; @@ -36,6 +79,7 @@ void FurnaceGUI::drawChanOsc() { ImGui::SetNextWindowSizeConstraints(ImVec2(64.0f*dpiScale,32.0f*dpiScale),ImVec2(scrW*dpiScale,scrH*dpiScale)); if (ImGui::Begin("Oscilloscope (per-channel)",&chanOscOpen,globalWinFlags|((chanOscOptions)?0:ImGuiWindowFlags_NoTitleBar))) { bool centerSettingReset=false; + ImDrawList* dl=ImGui::GetWindowDrawList(); if (chanOscOptions) { if (ImGui::BeginTable("ChanOscSettings",3)) { ImGui::TableNextRow(); @@ -65,60 +109,142 @@ void FurnaceGUI::drawChanOsc() { ImGui::EndTable(); } - ImGui::Text("Gradient"); - - if (chanOscGradTex==NULL) { - chanOscGradTex=SDL_CreateTexture(sdlRend,SDL_PIXELFORMAT_ABGR8888,SDL_TEXTUREACCESS_STREAMING,chanOscGrad.width,chanOscGrad.height); + ImGui::Checkbox("Gradient",&chanOscUseGrad); + if (chanOscUseGrad) { if (chanOscGradTex==NULL) { - logE("error while creating gradient texture! %s",SDL_GetError()); - } else { - updateChanOscGradTex=true; + chanOscGradTex=SDL_CreateTexture(sdlRend,SDL_PIXELFORMAT_ABGR8888,SDL_TEXTUREACCESS_STREAMING,chanOscGrad.width,chanOscGrad.height); + + if (chanOscGradTex==NULL) { + logE("error while creating gradient texture! %s",SDL_GetError()); + } else { + updateChanOscGradTex=true; + } } - } - if (ImGui::BeginTable("ChanOscGradSet",2)) { - ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); - ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); + if (ImGui::BeginTable("ChanOscGradSet",2)) { + ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (chanOscGradTex!=NULL) { - if (updateChanOscGradTex) { - chanOscGrad.render(); - if (SDL_UpdateTexture(chanOscGradTex,NULL,chanOscGrad.grad.get(),chanOscGrad.width*4)==0) { - updateChanOscGradTex=false; - } else { - logE("error while updating gradient texture! %s",SDL_GetError()); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (chanOscGradTex!=NULL) { + if (updateChanOscGradTex) { + chanOscGrad.render(); + if (SDL_UpdateTexture(chanOscGradTex,NULL,chanOscGrad.grad.get(),chanOscGrad.width*4)==0) { + updateChanOscGradTex=false; + } else { + logE("error while updating gradient texture! %s",SDL_GetError()); + } + } + + ImVec2 gradLeft=ImGui::GetCursorPos(); + ImVec2 gradSize=ImVec2(400.0f*dpiScale,400.0f*dpiScale); + ImGui::Image(chanOscGradTex,gradSize); + ImVec2 gradLeftAbs=ImGui::GetItemRectMin(); + if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { + chanOscGrad.points.push_back(Gradient2DPoint( + (ImGui::GetMousePos().x-gradLeftAbs.x)/gradSize.x, + (ImGui::GetMousePos().y-gradLeftAbs.y)/gradSize.y + )); + updateChanOscGradTex=true; + } + + ImVec2 oldCurPos=ImGui::GetCursorPos(); + int index=0; + int removePoint=-1; + for (Gradient2DPoint& i: chanOscGrad.points) { + ImGui::PushID(index+16); + ImGui::SetCursorPos(ImVec2(gradLeft.x+i.x*gradSize.x-8.0*dpiScale,gradLeft.y+i.y*gradSize.y-8.0*dpiScale)); + if (ImGui::InvisibleButton("gradPoint",ImVec2(16.0*dpiScale,16.0*dpiScale))) { + if (!i.grab) { + ImGui::OpenPopup("gradPointSettings"); + } + } + if (ImGui::IsItemHovered() || ImGui::IsItemActive()) { + ImGui::SetTooltip("(%.1f, %.1f)",i.x*100.0f,(1.0f-i.y)*100.0f); + } + if (ImGui::IsItemClicked(ImGuiMouseButton_Middle)) { + removePoint=index; + } + if (ImGui::IsItemActive()) { + float mX=(ImGui::GetMousePos().x-gradLeftAbs.x)/gradSize.x; + float mY=(ImGui::GetMousePos().y-gradLeftAbs.y)/gradSize.y; + + if (i.grab || (fabs(i.x-mX)>0.015 || fabs(i.y-mY)>0.015)) { + i.x=mX; + i.y=mY; + i.grab=true; + + if (i.x<0) i.x=0; + if (i.x>1) i.x=1; + if (i.y<0) i.y=0; + if (i.y>1) i.y=1; + updateChanOscGradTex=true; + } + } else { + i.grab=false; + i.prevX=i.x; + i.prevY=i.y; + } + if (ImGui::BeginPopup("gradPointSettings",ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_AlwaysAutoResize)) { + if (ImGui::ColorPicker4("Color",(float*)&i.color)) { + updateChanOscGradTex=true; + } + ImGui::Text("Distance"); + ImGui::SameLine(); + float pDist=i.distance*100.0f; + if (ImGui::SliderFloat("##PDistance",&pDist,0.0f,150.0f,"%.1f%%")) { + i.distance=pDist/100.0f; + updateChanOscGradTex=true; + } + + ImGui::Text("Spread"); + ImGui::SameLine(); + float pSpread=i.spread*100.0f; + if (ImGui::SliderFloat("##PSpread",&pSpread,0.0f,150.0f,"%.1f%%")) { + i.spread=pSpread/100.0f; + updateChanOscGradTex=true; + } + + if (ImGui::Button("Remove")) { + removePoint=index; + ImGui::CloseCurrentPopup(); + } + + ImGui::EndPopup(); + } + + dl->AddCircle(ImVec2(gradLeftAbs.x+i.x*gradSize.x,gradLeftAbs.y+i.y*gradSize.y),8.0*dpiScale,ImGui::ColorConvertFloat4ToU32(ImVec4(0.5,0.5,0.5,1.0)),6,2.0f*dpiScale); + dl->AddCircle(ImVec2(gradLeftAbs.x+i.x*gradSize.x,gradLeftAbs.y+i.y*gradSize.y),5.0*dpiScale,ImGui::ColorConvertFloat4ToU32(ImVec4(0.1,0.1,0.1,1.0)),6,2.0f*dpiScale); + + ImGui::PopID(); + index++; + } + ImGui::SetCursorPos(oldCurPos); + + if (removePoint>=0) { + chanOscGrad.points.erase(chanOscGrad.points.begin()+removePoint); + updateChanOscGradTex=true; } } - ImGui::ImageButton(chanOscGradTex,ImVec2(400.0f*dpiScale,400.0f*dpiScale)); - ImVec2 gradLeft=ImGui::GetItemRectMin(); - ImVec2 gradSize=ImGui::GetItemRectSize(); - if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { - chanOscGrad.points.push_back(Gradient2DPoint( - (ImGui::GetMousePos().x-gradLeft.x)/gradSize.x, - (ImGui::GetMousePos().y-gradLeft.y)/gradSize.y - )); + ImGui::TableNextColumn(); + if (ImGui::ColorEdit4("Background",(float*)&chanOscGrad.bgColor)) { updateChanOscGradTex=true; - logI("a point inserted"); } + ImGui::Combo("X Axis##AxisX",&chanOscColorX,chanOscRefs,GUI_OSCREF_MAX); + ImGui::Combo("Y Axis##AxisY",&chanOscColorY,chanOscRefs,GUI_OSCREF_MAX); - ImVec2 oldCurPos=ImGui::GetCursorPos(); - for (Gradient2DPoint& i: chanOscGrad.points) { - ImGui::SetCursorPos(ImVec2(gradLeft.x+i.x*gradSize.x,gradLeft.y+i.y*gradSize.y)); - ImGui::Text("Here"); - } - ImGui::SetCursorPos(oldCurPos); + ImGui::EndTable(); } + } else { + ImGui::SetNextItemWidth(400.0f*dpiScale); + ImGui::ColorPicker4("Color",(float*)&chanOscColor); + } - ImGui::TableNextColumn(); - if (ImGui::ColorEdit4("Background",(float*)&chanOscGrad.bgColor)) { - updateChanOscGradTex=true; - } - - ImGui::EndTable(); + if (ImGui::Button("OK")) { + chanOscOptions=false; } } @@ -129,12 +255,10 @@ void FurnaceGUI::drawChanOsc() { std::vector oscFFTs; std::vector oscChans; int chans=e->getTotalChannelCount(); - ImDrawList* dl=ImGui::GetWindowDrawList(); ImGuiWindow* window=ImGui::GetCurrentWindow(); ImVec2 waveform[512]; ImGuiStyle& style=ImGui::GetStyle(); - ImU32 color=ImGui::GetColorU32(uiColors[GUI_COLOR_OSC_WAVE]); for (int i=0; igetOscBuffer(i); @@ -196,93 +320,63 @@ void FurnaceGUI::drawChanOsc() { float maxLevel=-1.0f; float dcOff=0.0f; unsigned short needlePos=buf->needle; - if (chanOscWaveCorr) { - /* - double fftDataRate=(FURNACE_FFT_SIZE*FURNACE_FFT_RATE)/((double)buf->rate); - while (buf->readNeedle!=needlePos) { - fft->inBufPosFrac+=fftDataRate; - while (fft->inBufPosFrac>=1.0) { - chanOscLP0[ch]+=FURNACE_FFT_CUTOFF*((float)buf->data[buf->readNeedle]-chanOscLP0[ch]); - chanOscLP1[ch]+=FURNACE_FFT_CUTOFF*(chanOscLP0[ch]-chanOscLP1[ch]); - fft->inBuf[fft->inBufPos]=(double)chanOscLP1[ch]/32768.0; - if (++fft->inBufPos>=FURNACE_FFT_SIZE) { - fftw_execute(fft->plan); - fft->inBufPos=0; - fft->needle=buf->readNeedle; - } - fft->inBufPosFrac-=1.0; - } - buf->readNeedle++; - }*/ - - for (int i=0; iinBuf[i]=(double)buf->data[(unsigned short)(needlePos-displaySize*2+((i*displaySize*2)/FURNACE_FFT_SIZE))]/32768.0; - } - fftw_execute(fft->plan); - - // find origin frequency - int point=1; - double candAmp=0.0; - for (unsigned short i=1; i<512; i++) { - fftw_complex& f=fft->outBuf[i]; - // AMPLITUDE - double amp=sqrt(pow(f[0],2.0)+pow(f[1],2.0))/pow((double)i,0.8); - if (amp>candAmp) { - point=i; - candAmp=amp; - } - } - - // PHASE - fftw_complex& candPoint=fft->outBuf[point]; - double phase=((double)(displaySize*2)/(double)point)*(0.5+(atan2(candPoint[1],candPoint[0])/(M_PI*2))); - - //needlePos=fft->needle; - needlePos-=phase; - - /* - int alignment=0; - for (unsigned short i=0; idata[(unsigned short)(needlePos-i)])>fabs(buf->data[(unsigned short)(needlePos-alignment)])) { - alignment=i; - } - } - needlePos-=alignment; - */ - - //String cPhase=fmt::sprintf("%d cphase: %f",point,phase); - //dl->AddText(inRect.Min,0xffffffff,cPhase.c_str()); - - needlePos-=displaySize; - for (unsigned short i=0; i<512; i++) { - float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; - if (minLevel>y) minLevel=y; - if (maxLeveldata[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; - if (y<-0.5f) y=-0.5f; - if (y>0.5f) y=0.5f; - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-(y-dcOff))); - } - } else { - needlePos-=displaySize; - for (unsigned short i=0; i<512; i++) { - float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; - if (minLevel>y) minLevel=y; - if (maxLeveldata[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; - if (y<-0.5f) y=-0.5f; - if (y>0.5f) y=0.5f; - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-(y-dcOff))); + for (int i=0; iinBuf[i]=(double)buf->data[(unsigned short)(needlePos-displaySize*2+((i*displaySize*2)/FURNACE_FFT_SIZE))]/32768.0; + } + fftw_execute(fft->plan); + + // find origin frequency + int point=1; + double candAmp=0.0; + for (unsigned short i=1; i<512; i++) { + fftw_complex& f=fft->outBuf[i]; + // AMPLITUDE + double amp=sqrt(pow(f[0],2.0)+pow(f[1],2.0))/pow((double)i,0.8); + if (amp>candAmp) { + point=i; + candAmp=amp; } } + + // PHASE + fftw_complex& candPoint=fft->outBuf[point]; + double phase=((double)(displaySize*2)/(double)point)*(0.5+(atan2(candPoint[1],candPoint[0])/(M_PI*2))); + + if (chanOscWaveCorr) { + needlePos-=phase; + } + chanOscPitch[ch]=(float)point/32.0f; + + /* + String cPhase=fmt::sprintf("%d cphase: %f vol: %f",point,phase,chanOscVol[ch]); + dl->AddText(inRect.Min,0xffffffff,cPhase.c_str()); + */ + + needlePos-=displaySize; + for (unsigned short i=0; i<512; i++) { + float y=(float)buf->data[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; + if (minLevel>y) minLevel=y; + if (maxLeveldata[(unsigned short)(needlePos+(i*displaySize/512))]/65536.0f; + if (y<-0.5f) y=-0.5f; + if (y>0.5f) y=0.5f; + waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-(y-dcOff))); + } + } + ImU32 color=ImGui::GetColorU32(chanOscColor); + if (chanOscUseGrad) { + float xVal=computeGradPos(chanOscColorX,ch); + float yVal=computeGradPos(chanOscColorY,ch); + + xVal=CLAMP(xVal,0.0f,1.0f); + yVal=CLAMP(yVal,0.0f,1.0f); + + color=chanOscGrad.get(xVal,1.0f-yVal); } dl->AddPolyline(waveform,512,color,ImDrawFlags_None,dpiScale); } diff --git a/src/gui/gradient.cpp b/src/gui/gradient.cpp index c9b26fb8..510f2ad5 100644 --- a/src/gui/gradient.cpp +++ b/src/gui/gradient.cpp @@ -21,6 +21,16 @@ #include "imgui.h" #include +ImU32 Gradient2D::get(float x, float y) { + int xi=round(x*width); + int yi=round(y*height); + if (xi<0) xi=0; + if (xi>=(int)width) xi=width-1; + if (yi<0) yi=0; + if (yi>=(int)height) yi=height-1; + return grad[yi*width+xi]; +} + void Gradient2D::render() { ImU32* g=grad.get(); ImU32 bgColorU=ImGui::ColorConvertFloat4ToU32(bgColor); @@ -33,18 +43,18 @@ void Gradient2D::render() { // 2. insert points for (Gradient2DPoint& i: points) { float pDistSquared=i.distance*i.distance; - printf("shading this point %f %f\n",i.x,i.y); for (size_t j=0; j=pDistSquared) continue; - float dist=(1.0-(sqrt(distSquared)/i.distance))-i.spread; + float dist=(1.0-(sqrt(distSquared)/i.distance)); if (dist<0) dist=0; if (dist>1) dist=1; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index fbfc2b4d..f3f246cd 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4573,10 +4573,14 @@ FurnaceGUI::FurnaceGUI(): oscWindowSize(20.0f), oscZoomSlider(false), chanOscCols(3), + chanOscColorX(GUI_OSCREF_CENTER), + chanOscColorY(GUI_OSCREF_CENTER), chanOscWindowSize(20.0f), chanOscWaveCorr(true), chanOscOptions(false), updateChanOscGradTex(true), + chanOscUseGrad(false), + chanOscColor(1.0f,1.0f,1.0f,1.0f), chanOscGrad(64,64), chanOscGradTex(NULL), followLog(true), @@ -4655,6 +4659,9 @@ FurnaceGUI::FurnaceGUI(): memset(chanOscLP0,0,sizeof(float)*DIV_MAX_CHANS); memset(chanOscLP1,0,sizeof(float)*DIV_MAX_CHANS); + memset(chanOscVol,0,sizeof(float)*DIV_MAX_CHANS); + memset(chanOscPitch,0,sizeof(float)*DIV_MAX_CHANS); + memset(chanOscBright,0,sizeof(float)*DIV_MAX_CHANS); memset(lastCorrPos,0,sizeof(short)*DIV_MAX_CHANS); memset(acedData,0,23); diff --git a/src/gui/gui.h b/src/gui/gui.h index a538c5ba..ddda9d53 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -525,6 +525,21 @@ enum FurnaceGUIActions { GUI_ACTION_MAX }; +enum FurnaceGUIChanOscRef { + GUI_OSCREF_NONE=0, + GUI_OSCREF_CENTER, + GUI_OSCREF_FULL, + + GUI_OSCREF_FREQUENCY, + GUI_OSCREF_VOLUME, + GUI_OSCREF_CHANNEL, + GUI_OSCREF_BRIGHT, + + GUI_OSCREF_NOTE_TRIGGER, + + GUI_OSCREF_MAX +}; + enum PasteMode { GUI_PASTE_MODE_NORMAL=0, GUI_PASTE_MODE_MIX_FG, @@ -760,13 +775,15 @@ struct TouchPoint { struct Gradient2DPoint { ImVec4 color; - float x, y; + float x, y, prevX, prevY; float spread, distance; bool selected, grab; Gradient2DPoint(float xPos, float yPos): color(1,1,1,1), x(xPos), y(yPos), + prevX(0.0f), + prevY(0.0f), spread(0.0f), distance(0.5f), selected(false), @@ -1382,13 +1399,17 @@ class FurnaceGUI { bool oscZoomSlider; // per-channel oscilloscope - int chanOscCols; + int chanOscCols, chanOscColorX, chanOscColorY; float chanOscWindowSize; - bool chanOscWaveCorr, chanOscOptions, updateChanOscGradTex; + bool chanOscWaveCorr, chanOscOptions, updateChanOscGradTex, chanOscUseGrad; + ImVec4 chanOscColor; Gradient2D chanOscGrad; SDL_Texture* chanOscGradTex; float chanOscLP0[DIV_MAX_CHANS]; float chanOscLP1[DIV_MAX_CHANS]; + float chanOscVol[DIV_MAX_CHANS]; + float chanOscPitch[DIV_MAX_CHANS]; + float chanOscBright[DIV_MAX_CHANS]; unsigned short lastNeedlePos[DIV_MAX_CHANS]; unsigned short lastCorrPos[DIV_MAX_CHANS]; struct ChanOscStatus { @@ -1501,6 +1522,8 @@ class FurnaceGUI { bool importLayout(String path); bool exportLayout(String path); + float computeGradPos(int type, int chan); + void resetColors(); void resetKeybinds(); From a65b4ded00fe708a1de443d8b283bfd8bb9ea2b1 Mon Sep 17 00:00:00 2001 From: 20Enderdude20 Date: Wed, 22 Jun 2022 13:14:23 -0700 Subject: [PATCH 088/580] Added "c" in "channel" typo and added a TI-99 bit (#551) --- papers/doc/7-systems/sms.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/papers/doc/7-systems/sms.md b/papers/doc/7-systems/sms.md index 53560a97..882085f1 100644 --- a/papers/doc/7-systems/sms.md +++ b/papers/doc/7-systems/sms.md @@ -6,10 +6,13 @@ surely had better graphics than NES, but its sound (fairly weak, 4ch PSG with A- this console is powered by a derivative of the Texas Instruments SN76489. +the original iteration of the SN76489 used in the TI-99/4A computers was clocked much lower at 447 kHz, being able to play as low as 13.670 Hz (A -1). consequentially, pitch accuracy for higher notes is compromised. + + # effects - `20xy`: set noise mode. - - `x` controls whether to inherit frequency from hannel 3. + - `x` controls whether to inherit frequency from channel 3. - 0: use one of 3 preset frequencies (C: A-2; C#: A-3; D: A-4). - 1: use frequency of channel 3. - `y` controls whether to select noise or thin pulse. From 2ffec02e26561ebaf2d0390983c7e64095473bf8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 22 Jun 2022 15:15:24 -0500 Subject: [PATCH 089/580] Revert "Added "c" in "channel" typo and added a TI-99 bit (#551)" This reverts commit a65b4ded00fe708a1de443d8b283bfd8bb9ea2b1. --- papers/doc/7-systems/sms.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/papers/doc/7-systems/sms.md b/papers/doc/7-systems/sms.md index 882085f1..53560a97 100644 --- a/papers/doc/7-systems/sms.md +++ b/papers/doc/7-systems/sms.md @@ -6,13 +6,10 @@ surely had better graphics than NES, but its sound (fairly weak, 4ch PSG with A- this console is powered by a derivative of the Texas Instruments SN76489. -the original iteration of the SN76489 used in the TI-99/4A computers was clocked much lower at 447 kHz, being able to play as low as 13.670 Hz (A -1). consequentially, pitch accuracy for higher notes is compromised. - - # effects - `20xy`: set noise mode. - - `x` controls whether to inherit frequency from channel 3. + - `x` controls whether to inherit frequency from hannel 3. - 0: use one of 3 preset frequencies (C: A-2; C#: A-3; D: A-4). - 1: use frequency of channel 3. - `y` controls whether to select noise or thin pulse. From c7ea30dda1688ecfd44164760139b27f9536aa1b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 22 Jun 2022 15:16:19 -0500 Subject: [PATCH 090/580] Revert "Revert "Added "c" in "channel" typo and added a TI-99 bit (#551)"" This reverts commit 2ffec02e26561ebaf2d0390983c7e64095473bf8. --- papers/doc/7-systems/sms.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/papers/doc/7-systems/sms.md b/papers/doc/7-systems/sms.md index 53560a97..882085f1 100644 --- a/papers/doc/7-systems/sms.md +++ b/papers/doc/7-systems/sms.md @@ -6,10 +6,13 @@ surely had better graphics than NES, but its sound (fairly weak, 4ch PSG with A- this console is powered by a derivative of the Texas Instruments SN76489. +the original iteration of the SN76489 used in the TI-99/4A computers was clocked much lower at 447 kHz, being able to play as low as 13.670 Hz (A -1). consequentially, pitch accuracy for higher notes is compromised. + + # effects - `20xy`: set noise mode. - - `x` controls whether to inherit frequency from hannel 3. + - `x` controls whether to inherit frequency from channel 3. - 0: use one of 3 preset frequencies (C: A-2; C#: A-3; D: A-4). - 1: use frequency of channel 3. - `y` controls whether to select noise or thin pulse. From 142b8b2bb0839ce1a07e3cdc076c1cffe43b644e Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Thu, 23 Jun 2022 09:03:20 +0700 Subject: [PATCH 091/580] safeReader: Copy a value instead of direct casting This fix crashes on architectures with forced alignments such as ARM --- src/engine/safeReader.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/engine/safeReader.cpp b/src/engine/safeReader.cpp index 173ffd23..3cb1f4b1 100644 --- a/src/engine/safeReader.cpp +++ b/src/engine/safeReader.cpp @@ -82,7 +82,8 @@ short SafeReader::readS() { logD("SR: reading short %x:",curSeek); #endif if (curSeek+2>len) throw EndOfFileException(this,len); - short ret=*(short*)(&buf[curSeek]); + short ret; + memcpy(&ret,&buf[curSeek],2); #ifdef READ_DEBUG logD("SR: %.4x",ret); #endif @@ -92,7 +93,8 @@ short SafeReader::readS() { short SafeReader::readS_BE() { if (curSeek+2>len) throw EndOfFileException(this,len); - short ret=*(short*)(&buf[curSeek]); + short ret; + memcpy(&ret,&buf[curSeek],2); curSeek+=2; return ((ret>>8)&0xff)|(ret<<8); } @@ -102,7 +104,8 @@ int SafeReader::readI() { logD("SR: reading int %x:",curSeek); #endif if (curSeek+4>len) throw EndOfFileException(this,len); - int ret=*(int*)(&buf[curSeek]); + int ret; + memcpy(&ret,&buf[curSeek],4); curSeek+=4; #ifdef READ_DEBUG logD("SR: %.8x",ret); @@ -112,28 +115,32 @@ int SafeReader::readI() { int SafeReader::readI_BE() { if (curSeek+4>len) throw EndOfFileException(this,len); - unsigned int ret=*(unsigned int*)(&buf[curSeek]); + unsigned int ret; + memcpy(&ret,&buf[curSeek],4); curSeek+=4; return (int)((ret>>24)|((ret&0xff0000)>>8)|((ret&0xff00)<<8)|((ret&0xff)<<24)); } int64_t SafeReader::readL() { if (curSeek+8>len) throw EndOfFileException(this,len); - int64_t ret=*(int64_t*)(&buf[curSeek]); + int64_t ret; + memcpy(&ret,&buf[curSeek],8); curSeek+=8; return ret; } float SafeReader::readF() { if (curSeek+4>len) throw EndOfFileException(this,len); - float ret=*(float*)(&buf[curSeek]); + float ret; + memcpy(&ret,&buf[curSeek],4); curSeek+=4; return ret; } double SafeReader::readD() { if (curSeek+8>len) throw EndOfFileException(this,len); - double ret=*(double*)(&buf[curSeek]); + double ret; + memcpy(&ret,&buf[curSeek],8); curSeek+=8; return ret; } From abbd6e7274821e6ab036035514f6ed8e63d7a101 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 02:48:28 -0500 Subject: [PATCH 092/580] potentially fix #550 --- extern/imgui_patched/imgui_widgets.cpp | 65 ++++++++++++++++++-------- 1 file changed, 45 insertions(+), 20 deletions(-) diff --git a/extern/imgui_patched/imgui_widgets.cpp b/extern/imgui_patched/imgui_widgets.cpp index c6fec68b..93dfd534 100644 --- a/extern/imgui_patched/imgui_widgets.cpp +++ b/extern/imgui_patched/imgui_widgets.cpp @@ -4545,27 +4545,52 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ // We cannot test for 'backup_current_text_length != apply_new_text_length' here because we have no guarantee that the size // of our owned buffer matches the size of the string object held by the user, and by design we allow InputText() to be used // without any storage on user's side. - IM_ASSERT(apply_new_text_length >= 0); - if (is_resizable) - { - ImGuiInputTextCallbackData callback_data; - callback_data.EventFlag = ImGuiInputTextFlags_CallbackResize; - callback_data.Flags = flags; - callback_data.Buf = buf; - callback_data.BufTextLen = apply_new_text_length; - callback_data.BufSize = ImMax(buf_size, apply_new_text_length + 1); - callback_data.UserData = callback_user_data; - callback(&callback_data); - buf = callback_data.Buf; - buf_size = callback_data.BufSize; - apply_new_text_length = ImMin(callback_data.BufTextLen, buf_size - 1); - IM_ASSERT(apply_new_text_length <= buf_size); - } - //IMGUI_DEBUG_LOG("InputText(\"%s\"): apply_new_text length %d\n", label, apply_new_text_length); - // If the underlying buffer resize was denied or not carried to the next frame, apply_new_text_length+1 may be >= buf_size. - ImStrncpy(buf, apply_new_text, ImMin(apply_new_text_length + 1, buf_size)); - value_changed = true; + // don't assert because maybe the user passes an invalid UTF-8 string... + if (apply_new_text_length >= 0) { + if (is_resizable) + { + ImGuiInputTextCallbackData callback_data; + callback_data.EventFlag = ImGuiInputTextFlags_CallbackResize; + callback_data.Flags = flags; + callback_data.Buf = buf; + callback_data.BufTextLen = apply_new_text_length; + callback_data.BufSize = ImMax(buf_size, apply_new_text_length + 1); + callback_data.UserData = callback_user_data; + callback(&callback_data); + buf = callback_data.Buf; + buf_size = callback_data.BufSize; + apply_new_text_length = ImMin(callback_data.BufTextLen, buf_size - 1); + IM_ASSERT(apply_new_text_length <= buf_size); + } + //IMGUI_DEBUG_LOG("InputText(\"%s\"): apply_new_text length %d\n", label, apply_new_text_length); + + // If the underlying buffer resize was denied or not carried to the next frame, apply_new_text_length+1 may be >= buf_size. + ImStrncpy(buf, apply_new_text, ImMin(apply_new_text_length + 1, buf_size)); + value_changed = true; + } else { + printf("invalid buffer!\n"); + if (is_resizable) + { + ImGuiInputTextCallbackData callback_data; + callback_data.EventFlag = ImGuiInputTextFlags_CallbackResize; + callback_data.Flags = flags; + callback_data.Buf = buf; + callback_data.BufTextLen = 0; + callback_data.BufSize = ImMax(buf_size, 1); + callback_data.UserData = callback_user_data; + callback(&callback_data); + buf = callback_data.Buf; + buf_size = callback_data.BufSize; + apply_new_text_length = 0; + IM_ASSERT(apply_new_text_length <= buf_size); + } + //IMGUI_DEBUG_LOG("InputText(\"%s\"): apply_new_text length %d\n", label, apply_new_text_length); + + // clear the buffer + ImStrncpy(buf, "", 1); + value_changed = true; + } } // Release active ID at the end of the function (so e.g. pressing Return still does a final application of the value) From 1b5396e814b6c3f9dfb971474267f9e55796abf8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 04:02:41 -0500 Subject: [PATCH 093/580] GUI: save per-chan osc state --- src/gui/chanOsc.cpp | 12 +++++++----- src/gui/gradient.cpp | 14 ++++++++++++++ src/gui/gui.cpp | 27 +++++++++++++++++++++++++++ src/gui/gui.h | 2 ++ 4 files changed, 50 insertions(+), 5 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 57fa99da..da82de27 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -143,11 +143,13 @@ void FurnaceGUI::drawChanOsc() { ImGui::Image(chanOscGradTex,gradSize); ImVec2 gradLeftAbs=ImGui::GetItemRectMin(); if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { - chanOscGrad.points.push_back(Gradient2DPoint( - (ImGui::GetMousePos().x-gradLeftAbs.x)/gradSize.x, - (ImGui::GetMousePos().y-gradLeftAbs.y)/gradSize.y - )); - updateChanOscGradTex=true; + if (chanOscGrad.points.size()<32) { + chanOscGrad.points.push_back(Gradient2DPoint( + (ImGui::GetMousePos().x-gradLeftAbs.x)/gradSize.x, + (ImGui::GetMousePos().y-gradLeftAbs.y)/gradSize.y + )); + updateChanOscGradTex=true; + } } ImVec2 oldCurPos=ImGui::GetCursorPos(); diff --git a/src/gui/gradient.cpp b/src/gui/gradient.cpp index 510f2ad5..ac69bf86 100644 --- a/src/gui/gradient.cpp +++ b/src/gui/gradient.cpp @@ -19,6 +19,7 @@ #include "gui.h" #include "imgui.h" +#include #include ImU32 Gradient2D::get(float x, float y) { @@ -31,6 +32,19 @@ ImU32 Gradient2D::get(float x, float y) { return grad[yi*width+xi]; } +String Gradient2D::toString() { + String ret=fmt::sprintf("GRAD #%.2X%.2X%.2X%.2X",(unsigned char)(bgColor.x*255.0f),(unsigned char)(bgColor.y*255.0f),(unsigned char)(bgColor.z*255.0f),(unsigned char)(bgColor.w*255.0f)); + for (Gradient2DPoint& i: points) { + ret+=fmt::sprintf(" %f,%f:%f,%f:#%.2X%.2X%.2X%.2X",i.x,i.y,i.distance,i.spread,(unsigned char)(i.color.x*255.0f),(unsigned char)(i.color.y*255.0f),(unsigned char)(i.color.z*255.0f),(unsigned char)(i.color.w*255.0f)); + } + return ret; +} + +// TODO: this one please +bool Gradient2D::fromString(String val) { + return false; +} + void Gradient2D::render() { ImU32* g=grad.get(); ImU32 bgColorU=ImGui::ColorConvertFloat4ToU32(bgColor); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index f3f246cd..3de09f8e 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4070,6 +4070,19 @@ bool FurnaceGUI::init() { pianoView=e->getConfInt("pianoView",pianoView); pianoInputPadMode=e->getConfInt("pianoInputPadMode",pianoInputPadMode); + chanOscCols=e->getConfInt("chanOscCols",3); + chanOscColorX=e->getConfInt("chanOscColorX",GUI_OSCREF_CENTER); + chanOscColorY=e->getConfInt("chanOscColorY",GUI_OSCREF_CENTER); + chanOscWindowSize=e->getConfFloat("chanOscWindowSize",20.0f); + chanOscWaveCorr=e->getConfBool("chanOscWaveCorr",true); + chanOscOptions=e->getConfBool("chanOscOptions",false); + chanOscColor.x=e->getConfFloat("chanOscColorR",1.0f); + chanOscColor.y=e->getConfFloat("chanOscColorG",1.0f); + chanOscColor.z=e->getConfFloat("chanOscColorB",1.0f); + chanOscColor.w=e->getConfFloat("chanOscColorA",1.0f); + chanOscUseGrad=e->getConfBool("chanOscUseGrad",false); + chanOscGrad.fromString(e->getConfString("chanOscGrad","")); + syncSettings(); if (settings.dpiScale>=0.5f) { @@ -4294,6 +4307,20 @@ bool FurnaceGUI::finish() { e->setConf("pianoView",pianoView); e->setConf("pianoInputPadMode",pianoInputPadMode); + // commit per-chan osc state + e->setConf("chanOscCols",chanOscCols); + e->setConf("chanOscColorX",chanOscColorX); + e->setConf("chanOscColorY",chanOscColorY); + e->setConf("chanOscWindowSize",chanOscWindowSize); + e->setConf("chanOscWaveCorr",chanOscWaveCorr); + e->setConf("chanOscOptions",chanOscOptions); + e->setConf("chanOscColorR",chanOscColor.x); + e->setConf("chanOscColorG",chanOscColor.y); + e->setConf("chanOscColorB",chanOscColor.z); + e->setConf("chanOscColorA",chanOscColor.w); + e->setConf("chanOscUseGrad",chanOscUseGrad); + e->setConf("chanOscGrad",chanOscGrad.toString()); + for (int i=0; i grad; size_t width, height; + String toString(); + bool fromString(String val); void render(); ImU32 get(float x, float y); Gradient2D(size_t w, size_t h): From b90552dfb1a3c4b36ec8028b3dba8103925c1203 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 16:23:46 -0500 Subject: [PATCH 094/580] fix Termux build --- CMakeLists.txt | 18 ++++++++++++++++++ src/engine/platform/pcspkr.cpp | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 82094ce0..4c00b62f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -537,6 +537,24 @@ endif() if (NOT WIN32 AND NOT APPLE) list(APPEND GUI_SOURCES src/gui/icon.c) + + include(CheckIncludeFile) + + CHECK_INCLUDE_FILE(sys/io.h SYS_IO_FOUND) + CHECK_INCLUDE_FILE(linux/input.h LINUX_INPUT_FOUND) + CHECK_INCLUDE_FILE(linux/kd.h LINUX_KD_FOUND) + if (SYS_IO_FOUND) + list(APPEND DEPENDENCIES_DEFINES HAVE_SYS_IO) + message(STATUS "PC speaker output: outb()") + endif() + if (LINUX_INPUT_FOUND) + list(APPEND DEPENDENCIES_DEFINES HAVE_LINUX_INPUT) + message(STATUS "PC speaker output: evdev") + endif() + if (LINUX_KD_FOUND) + list(APPEND DEPENDENCIES_DEFINES HAVE_LINUX_KD) + message(STATUS "PC speaker output: KIOCSOUND") + endif() endif() set(USED_SOURCES ${ENGINE_SOURCES} ${AUDIO_SOURCES} src/main.cpp) diff --git a/src/engine/platform/pcspkr.cpp b/src/engine/platform/pcspkr.cpp index d977690f..57c72b67 100644 --- a/src/engine/platform/pcspkr.cpp +++ b/src/engine/platform/pcspkr.cpp @@ -27,11 +27,17 @@ #include #include #include +#ifdef HAVE_LINUX_INPUT #include +#endif +#ifdef HAVE_LINUX_KD #include +#endif #include +#ifdef HAVE_SYS_IO #include #endif +#endif #define PCSPKR_DIVIDER 4 #define CHIP_DIVIDER 1 @@ -80,6 +86,7 @@ void DivPlatformPCSpeaker::pcSpeakerThread() { } if (beepFD>=0) { switch (realOutMethod) { +#ifdef HAVE_LINUX_INPUT case 0: { // evdev static struct input_event ie; ie.time.tv_sec=r.tv_sec; @@ -98,11 +105,14 @@ void DivPlatformPCSpeaker::pcSpeakerThread() { } break; } +#endif +#ifdef HAVE_LINUX_KD case 1: // KIOCSOUND (on tty) if (ioctl(beepFD,KIOCSOUND,r.val)<0) { logW("ioctl error! %s",strerror(errno)); } break; +#endif case 2: { // /dev/port unsigned char bOut; bOut=0; @@ -144,11 +154,14 @@ void DivPlatformPCSpeaker::pcSpeakerThread() { } break; } +#ifdef HAVE_LINUX_KD case 3: // KIOCSOUND (on stdout) if (ioctl(beepFD,KIOCSOUND,r.val)<0) { logW("ioctl error! %s",strerror(errno)); } break; +#endif +#ifdef HAVE_SYS_IO case 4: // outb() if (r.val==0) { outb(inb(0x61)&(~3),0x61); @@ -163,6 +176,7 @@ void DivPlatformPCSpeaker::pcSpeakerThread() { } } break; +#endif } } else { //logV("not writing because fd is less than 0"); @@ -544,6 +558,7 @@ void DivPlatformPCSpeaker::reset() { break; case 4: // outb() beepFD=-1; +#ifdef HAVE_SYS_IO if (ioperm(0x61,8,1)<0) { logW("ioperm 0x61: %s",strerror(errno)); break; @@ -557,6 +572,9 @@ void DivPlatformPCSpeaker::reset() { break; } beepFD=STDOUT_FILENO; +#else + errno=ENOSYS; +#endif break; } if (beepFD<0) { From 7586db9a1bd262e18753df518af1574de43888ce Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 16:25:51 -0500 Subject: [PATCH 095/580] fix Termux build again --- CMakeLists.txt | 2 +- src/audio/{sdl.cpp => sdlAudio.cpp} | 3 +-- src/audio/{sdl.h => sdlAudio.h} | 0 src/engine/engine.cpp | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) rename src/audio/{sdl.cpp => sdlAudio.cpp} (98%) rename src/audio/{sdl.h => sdlAudio.h} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c00b62f..0ef3a508 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -252,7 +252,7 @@ src/audio/midi.cpp ) if (USE_SDL2) - list(APPEND AUDIO_SOURCES src/audio/sdl.cpp) + list(APPEND AUDIO_SOURCES src/audio/sdlAudio.cpp) endif() if (WITH_JACK) diff --git a/src/audio/sdl.cpp b/src/audio/sdlAudio.cpp similarity index 98% rename from src/audio/sdl.cpp rename to src/audio/sdlAudio.cpp index 3ef38d4f..5c11a034 100644 --- a/src/audio/sdl.cpp +++ b/src/audio/sdlAudio.cpp @@ -17,11 +17,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include #include #include #include "../ta-log.h" -#include "sdl.h" +#include "sdlAudio.h" void taSDLProcess(void* inst, unsigned char* buf, int nframes) { TAAudioSDL* in=(TAAudioSDL*)inst; diff --git a/src/audio/sdl.h b/src/audio/sdlAudio.h similarity index 100% rename from src/audio/sdl.h rename to src/audio/sdlAudio.h diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index e8a766b3..12ee7a06 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -24,7 +24,7 @@ #include "../ta-log.h" #include "../fileutils.h" #ifdef HAVE_SDL2 -#include "../audio/sdl.h" +#include "../audio/sdlAudio.h" #endif #include #ifndef _WIN32 From aa511d27183268fced347922d36fb85aa034a4e3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 18:16:12 -0500 Subject: [PATCH 096/580] GUI: implement Gradient2D::fromString() WE ARE CLOSE --- src/gui/gradient.cpp | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/gui/gradient.cpp b/src/gui/gradient.cpp index ac69bf86..774f7a10 100644 --- a/src/gui/gradient.cpp +++ b/src/gui/gradient.cpp @@ -40,9 +40,39 @@ String Gradient2D::toString() { return ret; } -// TODO: this one please bool Gradient2D::fromString(String val) { - return false; + std::vector split; + String cur; + for (char i: val) { + if (i==' ') { + if (!cur.empty()) { + split.push_back(cur); + cur=""; + } + } else { + cur+=i; + } + } + + if (split.size()<2) return false; + + if (split[0]!="GRAD") return false; + + ImU32 bgColorH=0; + if (sscanf(split[1].c_str(),"#%X",&bgColorH)!=1) return false; + + bgColor=ImGui::ColorConvertU32ToFloat4(bgColorH); + + for (size_t i=2; i Date: Thu, 23 Jun 2022 20:58:48 -0500 Subject: [PATCH 097/580] GUI: fix gradient color byte order --- src/gui/gradient.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gui/gradient.cpp b/src/gui/gradient.cpp index 774f7a10..e4af10b5 100644 --- a/src/gui/gradient.cpp +++ b/src/gui/gradient.cpp @@ -53,6 +53,9 @@ bool Gradient2D::fromString(String val) { cur+=i; } } + if (!cur.empty()) { + split.push_back(cur); + } if (split.size()<2) return false; @@ -60,6 +63,7 @@ bool Gradient2D::fromString(String val) { ImU32 bgColorH=0; if (sscanf(split[1].c_str(),"#%X",&bgColorH)!=1) return false; + bgColorH=(bgColorH>>24)|((bgColorH>>8)&0xff00)|((bgColorH<<8)&0xff0000)|(bgColorH<<24); bgColor=ImGui::ColorConvertU32ToFloat4(bgColorH); @@ -69,6 +73,8 @@ bool Gradient2D::fromString(String val) { if (sscanf(split[i].c_str(),"%f,%f:%f,%f:#%X",&point.x,&point.y,&point.distance,&point.spread,&colorH)!=5) { return false; } + colorH=(colorH>>24)|((colorH>>8)&0xff00)|((colorH<<8)&0xff0000)|(colorH<<24); + point.color=ImGui::ColorConvertU32ToFloat4(colorH); points.push_back(point); } From e34de2262b47a5283ee89b96b16e63fb715cdee2 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 23 Jun 2022 22:21:41 -0500 Subject: [PATCH 098/580] update demo songs --- demos/Melody_of_Certain_Feelings.fur | Bin 0 -> 17076 bytes demos/UNATCOPCM.fur | Bin 205943 -> 205943 bytes demos/ecolove.fur | Bin 57812 -> 57810 bytes demos/neon_night_riders_TFMX.fur | Bin 0 -> 160437 bytes demos/wolf3d.fur | Bin 0 -> 29910 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 demos/Melody_of_Certain_Feelings.fur create mode 100644 demos/neon_night_riders_TFMX.fur create mode 100644 demos/wolf3d.fur diff --git a/demos/Melody_of_Certain_Feelings.fur b/demos/Melody_of_Certain_Feelings.fur new file mode 100644 index 0000000000000000000000000000000000000000..6ccf4e13cb18a3104f26a94ef12f2314b34d2046 GIT binary patch literal 17076 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