* 'master' of https://github.com/tildearrow/furnace:
maybe uninitialized
GUI: prepare for a per-channel oscilloscope?
GUI: add backdrop if system file picker is open
GUI: add ability to customize startup system
GUI: finally implement "don't scroll when moving c ursor" setting
new panning effects (80/81/82)
GUI: fix sample paste crash
GUI: implement sample scroll with mouse wheel
sysDef oopsie
# Conflicts:
# src/gui/guiConst.cpp
* 'master' of https://github.com/tildearrow/furnace:
fix MSVC oh my
improvements to sysDef and UX changes
# Conflicts:
# src/engine/dispatchContainer.cpp
# src/gui/insEdit.cpp
* 'master' of https://github.com/tildearrow/furnace: (77 commits)
GUI: use pattern font for input latch
GUI: partially implement note input latch UI
GUI: transpose value does not transpose effect ID
GUI: prepare for note input latch UI
GUI: min ins selector width fix
GUI: separate operation masks
GUI: add missing FDS preset
GUI: prepare for separate operation mask
GUI: "none" instrument should not remove inscolumn
GUI: fix ins 0 being inserted on blank song
GUI: add a "none" option to instrument list
update to-do list
GUI: add "absorb" instrument input mode
use good default instrument when adding ins
better default instrument for OPL/OPLL
GUI: fix selection being visible in dummy row area
Further fix looped sample preview
GUI: fix about screen in power saving mode
VRC6: saw volume 63
GUI: add an effect list window
...
# Conflicts:
# src/engine/platform/amiga.cpp
# src/engine/vgmOps.cpp
# src/gui/dataList.cpp
# src/gui/guiConst.cpp
# src/gui/insEdit.cpp
# src/gui/sampleEdit.cpp
as of now I have added the Date library as a submodule in order to have
log messages in the correct time zone
please update your submodules by doing:
```
git submodule update --init --recursive
```
2 Pulse channels:
- 8 level pulse duty cycle, DAC mode(just ignores duty cycle)/pulse wave mode, 4 bit volume.
- Furnace support PCM playback in pulse channels with duty cycle ignore mode.
Sawtooth:
- nothing but 6 bit volume (8 bit accumulator in technically) and 12 bit frequency (periodic).
VRC6 instrument:
- 6 bit Volume macro for finer sawtooth volume handling, also 3 bit Duty cycle macro for pulse channels.
Duty, PCM mode command and Duty macro affects for pulse channel only.
It means Custom wavetable sound generator logic on Bubble System.
It's wavetable select and volume is controlled by single AY-3-8910 IO for both channels, Another AY-3-8910 IO is used for reading sound status.
Schematics: http://pdf.textfiles.com/manuals/ARCADE/K-R/Nemesis%20[Schematics]%20[English].pdf (Nemesis, derivative of Bubble system)
Bubble System 2 channel Wavetable sound generator logic is configuration with K005289, 4 bit PROM and DAC.
K005289 controls pitch and 5 bit address generator per channel, Waveform select and Volume control is tied to AY-3-8910 ports. (each port for per channels)
these configuration is better known as K005289, the part of logic.
furnace emulates this configurations as single system, waveform format is 15 level and 32 width.
its 16 channel wavetable/PCM chip, with (optional) stereo support.
Its also has envelope, this feature has similar as AY PSG's one but its shape is also stored at RAM, and each nibble in envelope data is for each output: so i decided to added some feature for more stereo-ish envelope.
Split: Envelope shape will be splitted to Left and Right half for each output.
HInv, Vinv: Envelope shape will be Horizontally/Vertically mirrored the left one.
Max sample length is sample bank size of Seta 2 arcade hardware (currently not emulated yet, nor it doesn't support on VGM).
Chip id is temporary, it can be changed with to suggestions.
Allow 8 bit volume for YM2610 ADPCM-B
Remove sample mode macro in YM2610, it's always enabled and seperated channels.
TODO: ADPCM-B is still not implemented, FM Channel 2 is silenced in extended channel 3 configuration
this commit mostly rewrites the sample system.
as of now samples can be ADPCM, 8-bit, BRR or 16-bit
or something...
consider this VERY EXPERIMENTAL.
if you find any issues REPORT THEM immediately.
it's nearly 4am...
as of now compound systems (Genesis and Arcade) are translated to
separate chips.
this improves audio quality and makes things easier.
it also allows you to change the volume of each chip on a Genesis.
also adds SegaPCM system with 16 channels!
On some locales (e.g. Japanese) MSVC will fail to build Furnace
because it makes an incorrect assumption about the encoding of
source files. In particular, string literals in engine.cpp cause
compile errors. This probably doesn't show up in CI because of
the difference in locale.
This patch adds the `/source-charset:utf-8` compiler flag for MSVC,
which tells it the encoding of the source files.
With this change, MSVC appears to build Furnace properly. Tested
with Visual Studio Professional 2022.
* Improve devendoring
* Add warning flags for own C++ code
For https://github.com/tildearrow/furnace/pull/12#issuecomment-1017330467.
* Document new CMake options
* pkg-config stuff
* Warnings stuff for MSVC yay
* Use more specific linking vars & functions
* Fix Linux icon location
* DEPENDENCIES_LEGACY_LDFLAGS for JACK too
partially related to an issue when displaying non-Latin characters
however a true fix isn't coming yet as I haven't figured out a way
to load glyphs during run-time as needed
- added `25xx` and `26xx` effects in Neo Geo platform for
envelope period slides
- added `3xxx` and `4xxx` effects in C64 for fine duty/cutoff control
- made home/end keys work
- deleting a single note will delete related instrument value as well
- fix instrument value input when there are less than 16 instruments
- added `Cxxx` effect for mid-song Hz change
- possibly fix a hang when using multiple sound chips
- reduce PC Engine CPU usage
- all-new Furnace file format
- ability to add multiple sound chips in a single song!
- made more buttons work
- revamped instrument editor
- revamped wavetable editor with custom width/height
- C64 duty/filter macros may now be absolute
- finally! an icon!
after this release, the focus will be on adding features, fixing bugs
and adding new platforms. enjoy!