Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
This commit is contained in:
commit
ab46b8e080
|
@ -20,13 +20,13 @@ jobs:
|
||||||
config:
|
config:
|
||||||
- { name: 'Windows MSVC x86', os: windows-latest, compiler: msvc, arch: x86 }
|
- { name: 'Windows MSVC x86', os: windows-latest, compiler: msvc, arch: x86 }
|
||||||
- { name: 'Windows MSVC x86_64', os: windows-latest, compiler: msvc, arch: x86_64 }
|
- { 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', os: ubuntu-20.04, compiler: mingw, arch: x86 }
|
||||||
- { name: 'Windows MinGW x86_64', os: ubuntu-20.04, compiler: mingw, arch: x86_64 }
|
##- { 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 x86_64', os: macos-latest, arch: x86_64 }
|
||||||
- { name: 'macOS ARM', os: macos-latest, arch: arm64 }
|
- { name: 'macOS ARM', os: macos-latest, arch: arm64 }
|
||||||
- { name: 'Linux x86_64', os: ubuntu-18.04, arch: x86_64 }
|
##- { name: 'Linux x86_64', os: ubuntu-18.04, arch: x86_64 }
|
||||||
#- { name: 'Linux ARM', os: ubuntu-18.04, arch: armhf }
|
#- { name: 'Linux ARM', os: ubuntu-18.04, arch: armhf }
|
||||||
fail-fast: true
|
fail-fast: false
|
||||||
|
|
||||||
name: ${{ matrix.config.name }}
|
name: ${{ matrix.config.name }}
|
||||||
runs-on: ${{ matrix.config.os }}
|
runs-on: ${{ matrix.config.os }}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include "arcade.h"
|
#include "arcade.h"
|
||||||
#include "../engine.h"
|
#include "../engine.h"
|
||||||
|
#include "../../ta-log.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
@ -868,17 +869,18 @@ void DivPlatformArcade::setFlags(const DivConfig& flags) {
|
||||||
switch (flags.getInt("clockSel",0)) {
|
switch (flags.getInt("clockSel",0)) {
|
||||||
case 1:
|
case 1:
|
||||||
chipClock=COLOR_PAL*4.0/5.0;
|
chipClock=COLOR_PAL*4.0/5.0;
|
||||||
baseFreqOff=12;
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
chipClock=4000000.0;
|
chipClock=4000000.0;
|
||||||
baseFreqOff=-122;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
chipClock=COLOR_NTSC;
|
chipClock=COLOR_NTSC;
|
||||||
baseFreqOff=0;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
CHECK_CUSTOM_CLOCK;
|
||||||
|
|
||||||
|
baseFreqOff=round(768.0*(log((COLOR_NTSC/(double)chipClock))/log(2.0)));
|
||||||
|
|
||||||
rate=chipClock/64;
|
rate=chipClock/64;
|
||||||
for (int i=0; i<8; i++) {
|
for (int i=0; i<8; i++) {
|
||||||
oscBuf[i]->rate=rate;
|
oscBuf[i]->rate=rate;
|
||||||
|
|
|
@ -809,6 +809,12 @@ void DivPlatformAY8930::setFlags(const DivConfig& flags) {
|
||||||
case 12:
|
case 12:
|
||||||
chipClock=3600000;
|
chipClock=3600000;
|
||||||
break;
|
break;
|
||||||
|
case 13:
|
||||||
|
chipClock=20000000/16;
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
chipClock=1536000;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
chipClock=COLOR_NTSC/2.0;
|
chipClock=COLOR_NTSC/2.0;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -68,7 +68,7 @@ void DivPlatformBubSysWSG::acquire(short** buf, size_t len) {
|
||||||
if (out>32767) out=32767;
|
if (out>32767) out=32767;
|
||||||
|
|
||||||
//printf("out: %d\n",out);
|
//printf("out: %d\n",out);
|
||||||
buf[0][h]=buf[1][h]=out;
|
buf[0][h]=out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ void DivPlatformN163::acquire(short** buf, size_t len) {
|
||||||
int out=(n163.out()<<6)*2; // scale to 16 bit
|
int out=(n163.out()<<6)*2; // scale to 16 bit
|
||||||
if (out>32767) out=32767;
|
if (out>32767) out=32767;
|
||||||
if (out<-32768) out=-32768;
|
if (out<-32768) out=-32768;
|
||||||
buf[0][i]=buf[1][i]=out;
|
buf[0][i]=out;
|
||||||
|
|
||||||
if (n163.voice_cycle()==0x78) for (int i=0; i<8; i++) {
|
if (n163.voice_cycle()==0x78) for (int i=0; i<8; i++) {
|
||||||
oscBuf[i]->data[oscBuf[i]->needle++]=n163.voice_out(i)<<7;
|
oscBuf[i]->data[oscBuf[i]->needle++]=n163.voice_out(i)<<7;
|
||||||
|
|
|
@ -343,7 +343,7 @@ void DivPlatformOPL::tick(bool sysTick) {
|
||||||
if (chan[i].std.pitch.had) {
|
if (chan[i].std.pitch.had) {
|
||||||
if (chan[i].std.pitch.mode) {
|
if (chan[i].std.pitch.mode) {
|
||||||
chan[i].pitch2+=chan[i].std.pitch.val;
|
chan[i].pitch2+=chan[i].std.pitch.val;
|
||||||
CLAMP_VAR(chan[i].pitch2,-32768,32767);
|
CLAMP_VAR(chan[i].pitch2,-131071,131071);
|
||||||
} else {
|
} else {
|
||||||
chan[i].pitch2=chan[i].std.pitch.val;
|
chan[i].pitch2=chan[i].std.pitch.val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,7 @@ void DivPlatformOPLL::tick(bool sysTick) {
|
||||||
if (chan[i].std.pitch.had) {
|
if (chan[i].std.pitch.had) {
|
||||||
if (chan[i].std.pitch.mode) {
|
if (chan[i].std.pitch.mode) {
|
||||||
chan[i].pitch2+=chan[i].std.pitch.val;
|
chan[i].pitch2+=chan[i].std.pitch.val;
|
||||||
CLAMP_VAR(chan[i].pitch2,-32768,32767);
|
CLAMP_VAR(chan[i].pitch2,-65535,65535);
|
||||||
} else {
|
} else {
|
||||||
chan[i].pitch2=chan[i].std.pitch.val;
|
chan[i].pitch2=chan[i].std.pitch.val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,6 +289,7 @@ void DivPlatformT6W28::forceIns() {
|
||||||
chan[i].insChanged=true;
|
chan[i].insChanged=true;
|
||||||
chan[i].freqChanged=true;
|
chan[i].freqChanged=true;
|
||||||
}
|
}
|
||||||
|
rWrite(1,0xe0+chan[3].duty);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* DivPlatformT6W28::getChanState(int ch) {
|
void* DivPlatformT6W28::getChanState(int ch) {
|
||||||
|
|
|
@ -941,14 +941,15 @@ void DivPlatformTX81Z::setFlags(const DivConfig& flags) {
|
||||||
int clockSel=flags.getInt("clockSel",0);
|
int clockSel=flags.getInt("clockSel",0);
|
||||||
if (clockSel==2) {
|
if (clockSel==2) {
|
||||||
chipClock=4000000.0;
|
chipClock=4000000.0;
|
||||||
baseFreqOff=-122;
|
|
||||||
} else if (clockSel==1) {
|
} else if (clockSel==1) {
|
||||||
chipClock=COLOR_PAL*4.0/5.0;
|
chipClock=COLOR_PAL*4.0/5.0;
|
||||||
baseFreqOff=12;
|
|
||||||
} else {
|
} else {
|
||||||
chipClock=COLOR_NTSC;
|
chipClock=COLOR_NTSC;
|
||||||
baseFreqOff=0;
|
|
||||||
}
|
}
|
||||||
|
CHECK_CUSTOM_CLOCK;
|
||||||
|
|
||||||
|
baseFreqOff=round(768.0*(log((COLOR_NTSC/(double)chipClock))/log(2.0)));
|
||||||
|
|
||||||
rate=chipClock/64;
|
rate=chipClock/64;
|
||||||
for (int i=0; i<8; i++) {
|
for (int i=0; i<8; i++) {
|
||||||
oscBuf[i]->rate=rate;
|
oscBuf[i]->rate=rate;
|
||||||
|
|
|
@ -81,7 +81,7 @@ void DivPlatformVRC6::acquire(short** buf, size_t len) {
|
||||||
int sample=vrc6.out()<<9; // scale to 16 bit
|
int sample=vrc6.out()<<9; // scale to 16 bit
|
||||||
if (sample>32767) sample=32767;
|
if (sample>32767) sample=32767;
|
||||||
if (sample<-32768) sample=-32768;
|
if (sample<-32768) sample=-32768;
|
||||||
buf[0][i]=buf[1][i]=sample;
|
buf[0][i]=sample;
|
||||||
|
|
||||||
// Oscilloscope buffer part
|
// Oscilloscope buffer part
|
||||||
if (++writeOscBuf>=32) {
|
if (++writeOscBuf>=32) {
|
||||||
|
|
|
@ -29,13 +29,14 @@ int logLevel=LOGLEVEL_INFO;
|
||||||
|
|
||||||
FILE* logFile;
|
FILE* logFile;
|
||||||
char* logFileBuf;
|
char* logFileBuf;
|
||||||
|
char* logFileWriteBuf;
|
||||||
unsigned int logFilePosI;
|
unsigned int logFilePosI;
|
||||||
unsigned int logFilePosO;
|
unsigned int logFilePosO;
|
||||||
std::thread* logFileThread;
|
std::thread* logFileThread;
|
||||||
std::mutex logFileLock;
|
std::mutex logFileLock;
|
||||||
std::mutex logFileLockI;
|
std::mutex logFileLockI;
|
||||||
std::condition_variable logFileNotify;
|
std::condition_variable logFileNotify;
|
||||||
bool logFileAvail=false;
|
std::atomic<bool> logFileAvail(false);
|
||||||
|
|
||||||
std::atomic<unsigned short> logPosition;
|
std::atomic<unsigned short> logPosition;
|
||||||
|
|
||||||
|
@ -157,8 +158,8 @@ void _logFileThread() {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// wait
|
// wait
|
||||||
if (!logFileAvail) break;
|
|
||||||
fflush(logFile);
|
fflush(logFile);
|
||||||
|
if (!logFileAvail) break;
|
||||||
logFileNotify.wait(lock);
|
logFileNotify.wait(lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -177,6 +178,7 @@ bool startLogFile(const char* path) {
|
||||||
}
|
}
|
||||||
|
|
||||||
logFileBuf=new char[TA_LOGFILE_BUF_SIZE];
|
logFileBuf=new char[TA_LOGFILE_BUF_SIZE];
|
||||||
|
logFileWriteBuf=new char[TA_LOGFILE_BUF_SIZE];
|
||||||
logFilePosI=0;
|
logFilePosI=0;
|
||||||
logFilePosO=0;
|
logFilePosO=0;
|
||||||
logFileAvail=true;
|
logFileAvail=true;
|
||||||
|
|
Loading…
Reference in New Issue