Commit graph

438 commits

Author SHA1 Message Date
tildearrow
177c409e19 add more notes when working with new systems 2022-03-06 22:36:32 -05:00
cam900
6c897722db Compile fix Take 3 2022-03-07 04:03:45 +09:00
cam900
d0c32a56be Fix panning 2022-03-07 03:06:01 +09:00
cam900
4a83c7c5a7 Add Seta/Allumer X1-010 Support
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.
2022-03-07 02:31:03 +09:00
tildearrow
6ce2a6743c lynx: fix 3xxx effect not working 2022-03-05 04:59:05 -05:00
Natt Akuma
9abf872ff3 Add VERA support for Commander X16 2022-03-04 18:20:38 +07:00
tildearrow
8e5b3abab8 add two more compatibility flags
issue #167 and #249:
- stop porta on note off
- continuous vibrato
2022-03-03 23:14:38 -05:00
tildearrow
742e813e98 E1xx and E2xx should not stop when Key OFF comes
in

indeed
2022-03-03 23:05:07 -05:00
tildearrow
acc9b0aa57
Merge pull request #225 from cam900/ym2610b
Prepare to experimental support YM2610B and with Extended channel 3 mode, Some additions
2022-03-01 23:21:46 -05:00
tildearrow
ceb1cd0181 OPLL: more drum fixes! 2022-03-01 22:10:03 -05:00
cam900
1631af8f8e Merge branch 'master' of https://github.com/tildearrow/furnace into ym2610b 2022-03-02 01:18:36 +09:00
tildearrow
68db27bdb8 VRC7 as well 2022-02-28 04:59:25 -05:00
tildearrow
98c04e4dfd OPLL: actually care about effects 2022-02-28 04:58:44 -05:00
cam900
cd4c876c5e Merge branch 'master' of https://github.com/tildearrow/furnace into ym2610b
# Conflicts:
#	src/engine/engine.cpp
#	src/engine/playback.cpp
2022-02-25 23:47:28 +09:00
tildearrow
bd96bf484b fix 8-bit samples not loading correctly 2022-02-25 00:31:09 -05:00
tildearrow
35e459d9e5 Neo Geo: implement ADPCM-B 2022-02-25 00:11:27 -05:00
cam900
d831a522a4 Merge branch 'master' of https://github.com/tildearrow/furnace into ym2610b
# Conflicts:
#	src/engine/engine.cpp
#	src/engine/platform/ym2610Interface.cpp
2022-02-25 12:20:00 +09:00
tildearrow
4b6d9adcb9 volume changes
as of now the master volume is 1.0x (it was 2.0x before)
NES has also been amplified.
these changes should not affect older songs.
2022-02-24 17:56:19 -05:00
cam900
1e2d5694b9 Prepare to support YM2610B and with Extended channel 3 mode
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
2022-02-25 01:02:35 +09:00
tildearrow
1e98f0c4a1 sample system rewrite! **PLEASE READ**
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...
2022-02-24 03:57:45 -05:00
tildearrow
e4b9a6d1d9 compound system flattening, part 1
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!
2022-02-23 02:52:30 -05:00
tildearrow
a5561f1899 tabs to spaces 2022-02-22 22:13:17 -05:00
tildearrow
e6ee28ce0d Merge branch 'cps2' of https://github.com/superctr/furnace into superctr-cps2 2022-02-22 18:21:57 -05:00
tildearrow
278536489f lynx micro-fix 2022-02-22 17:40:29 -05:00
Ian Karlsson
e32ef2d881 Add 3xxx effect to set echo delay buffer length. Add documentation 2022-02-22 21:16:46 +01:00
Ian Karlsson
b3908216f8 Implement QSound support 2022-02-22 11:36:12 +01:00
Waldemar Pawlaszek
6e79e84e53 Added panning and load LFSR commands. 2022-02-21 19:59:09 +01:00
tildearrow
339959fc23 :< 2022-02-18 02:21:01 -05:00
tildearrow
ce2af4303e yay for more compatibility flags
ignore duplicate slides on .dmf
2022-02-18 02:03:31 -05:00
tildearrow
86e5b77981 fix E000 being treated too literally 2022-02-18 01:53:46 -05:00
tildearrow
fbed03dd0c fix E1xy/E2xy behaving wrong with arps 2022-02-18 01:27:26 -05:00
tildearrow
79fe54d4b6 fix some glitches 2022-02-17 03:20:08 -05:00
tildearrow
bacf57bb65 add stop song effect! finally! 2022-02-17 03:15:51 -05:00
tildearrow
810ee33d11 GUI: prepare for drawing prev/next pat content 2022-02-16 16:11:15 -05:00
tildearrow
b9832abbeb license clarification, part 3 2022-02-14 22:12:20 -05:00
tildearrow
6dfd1e4d17 don't tick metronome if step playing/freelance
issue #162
2022-02-12 23:15:06 -05:00
tildearrow
d1e166a34e add a little visual to channel names 2022-02-10 03:15:39 -05:00
tildearrow
62f2f67b9d add two more compatibility flags
for songs that relied upon pre-0.5.5 broken behavior
2022-02-09 22:07:32 -05:00
tildearrow
70a993aacb treat slide up as well 2022-02-08 23:01:39 -05:00
tildearrow
5b7240bb4f and fix it again 2022-02-08 22:49:52 -05:00
tildearrow
4756599df0 fix timer ticking during row play 2022-02-08 17:43:26 -05:00
tildearrow
a64f8f7a29 implement target resets slides flag 2022-02-08 17:24:24 -05:00
tildearrow
e0b0da2072 implement note off resets slides flag 2022-02-08 17:17:01 -05:00
tildearrow
43c9c58034 implement legacy volume slides flag 2022-02-08 17:05:18 -05:00
tildearrow
6fb5ca0f78 implement compatible arpeggio flag 2022-02-08 16:48:19 -05:00
tildearrow
dea79c2adb inhibit note on if user has edited pattern
issue #82
untested
2022-02-08 13:31:57 -05:00
tildearrow
4ce116ca0a prepare for macro release points
issue #142
2022-02-08 03:50:42 -05:00
tildearrow
632f17862e better blip_buf excess strategy
fixes #133
2022-02-07 21:31:58 -05:00
tildearrow
e25f5b229c fix arpeggio not happening during slide on SMS 2022-02-07 00:30:15 -05:00
tildearrow
8772439d3e add ability to play by one row 2022-02-06 00:42:07 -05:00
tildearrow
6000d702aa fix urgent bug regarding note slides 2022-02-05 16:33:06 -05:00
tildearrow
a93a9c19f3 add "force mono audio" option and fix flags not be
ing set after a dispatch reset
2022-02-04 17:04:36 -05:00
tildearrow
b57e85134e prepare for end of song effect 2022-02-04 14:43:57 -05:00
tildearrow
584b8426ff GUI: improve debug menu 2022-02-03 18:38:57 -05:00
tildearrow
c8f57afda4 consider loop in sample preview
fixes #120
2022-02-03 16:52:27 -05:00
tildearrow
5086bc1097 implement the linear pitch flag 2022-02-03 02:24:11 -05:00
tildearrow
d638af2017 fix E1xx and E2xx effects 2022-02-03 01:30:03 -05:00
tildearrow
2a15673610 implement loop modality and pitch control flags
issue #113
2022-02-03 00:52:50 -05:00
tildearrow
f03ed7c833 NES: add hardware sweep effect 2022-02-01 18:28:48 -05:00
tildearrow
bf9eb8b0a4 fix two possible pitch slide regressions
now let's fix blue crow
2022-01-30 15:55:31 -05:00
tildearrow
ec66b7a21b add song tuning
soon: system clock settings
2022-01-28 00:55:51 -05:00
tildearrow
0071894471 GUI: add a preliminary oscilloscope 2022-01-27 17:49:00 -05:00
tildearrow
8edcbc8d39 fix 0Bxx and 0Dxx commands
now wiz lab and sixeight-v2 play correctly
TODO: fix walkSong
2022-01-27 00:29:37 -05:00
tildearrow
35ee06d6cf fix ECxx effect
fixes #57
2022-01-23 22:00:46 -05:00
tildearrow
bc32809ecb fix #46 2022-01-21 04:27:00 -05:00
tildearrow
730561d3a3 arcade: add effects to control AMD/PMD 2022-01-20 17:54:11 -05:00
tildearrow
75ce5f4e2a add auto-envelope mode (29xy effect)
this closes #32
2022-01-20 03:23:03 -05:00
tildearrow
85dd6c3579 add ability to preview wavetables
issue #16
2022-01-20 00:07:53 -05:00
tildearrow
85bb081f3b prevent clock drift when previewing samples 2022-01-19 23:23:47 -05:00
tildearrow
51a89adb3d more headache 2022-01-19 22:05:39 -05:00
tildearrow
fee174a65a fix ECxx accuracy 2022-01-19 21:53:09 -05:00
tildearrow
efee5c3d7a now remove debug messages 2022-01-19 01:36:47 -05:00
tildearrow
aa1a3f8aab oh yes more fixes 2022-01-19 01:36:20 -05:00
tildearrow
f98662d329 slide accuracy fixes 2022-01-19 01:27:32 -05:00
tildearrow
e87239f8ce fix retrigger implementation
no longer broken
2022-01-19 00:01:34 -05:00
tildearrow
5a7cf57aa2 AY8930: implement noise and/or mask
cannot confirm whether this behavior is accurate to hardware though...
thanks Eulous for details on this!
2022-01-18 18:21:27 -05:00
tildearrow
64745648a0 allow negative octaves 2022-01-18 16:55:32 -05:00
tildearrow
a148a04e2c disable delay locking bug emulation entirely
so it appears the bug emulation caused an actual bug
2022-01-18 15:24:42 -05:00
tildearrow
0356cf2c7a TIA: add 10xx effect for selecting shape 2022-01-18 15:12:36 -05:00
tildearrow
8d4d47950c rewrite audio export
now it is possible to export audio from the GUI!
multiple export coming soon
2022-01-17 23:34:29 -05:00
tildearrow
df3ae12278 fix furnace for 32-bit 2022-01-17 21:08:14 -05:00
tildearrow
a0896f949c and againnnnn 2022-01-17 18:18:28 -05:00
tildearrow
cba4385607 ignore speed change if speed is 0
fixes #9
2022-01-17 18:05:29 -05:00
tildearrow
ce027d99f6 force insChanged on note input
partially solves issue #8
2022-01-17 18:01:40 -05:00
tildearrow
2f1cdab36b fix mixing being done wrongly 2022-01-15 00:24:06 -05:00
tildearrow
0e2230d036 hopefully finish the SAA1099 platform 2022-01-14 23:26:22 -05:00
tildearrow
1d3429d568 C64: don't gate on legato 2022-01-14 13:55:19 -05:00
tildearrow
ad145a13e4 fix the desync 2022-01-14 04:41:32 -05:00
tildearrow
573ce69dc7 add TIA platform
currently there is a desync bug which remains to be fixed...
2022-01-14 03:37:36 -05:00
tildearrow
dce06d8ec4 add AY8930 platform 2022-01-14 00:02:10 -05:00
tildearrow
b26208f2c1 fix changing order if 0Bxx is present 2022-01-13 20:54:34 -05:00
tildearrow
0b352ecd9a add AY-3-8910 platform!
this paves the way for eventual AY-3-8930 platform...
2022-01-13 02:52:19 -05:00
tildearrow
2fcb474544 stuff
implement two systems and system vol/pan
2022-01-13 01:03:57 -05:00
tildearrow
cd739f5fde change master clock to sampleRate*256
this hopefully fixes the hang by doing all clock ops on a master clock
rather than one clock per system
2022-01-12 17:45:07 -05:00
tildearrow
fa5b99b46a add stuff for diagnosis of hang problem 2022-01-12 17:02:48 -05:00
tildearrow
6245b3af31 add Cxxx effect for mid-song Hz change
also add hang detection as I ran into one of them while test multi-chip
2022-01-12 02:45:26 -05:00
tildearrow
651db5784e implement more effects
- C64: set fine duty and filter
- Neo Geo: slide SSG envelope
2022-01-11 18:38:26 -05:00
tildearrow
7568f1a1b9 better YMU759 support
time base now loaded as rate and timer no longer bugs out

also you can save YMU759 songs as .fur now, even if it is pointless
2022-01-09 17:08:14 -05:00
tildearrow
06c7ac92a2 earliest multi-chip support
no saving, no adding chips yet...
only the beginning
2022-01-08 17:15:12 -05:00
tildearrow
7080434ed4 this does not compile 2022-01-08 16:03:32 -05:00
tildearrow
f47543ab98 prepare for multiple chip support, part 2 2022-01-08 03:02:04 -05:00
tildearrow
e8dc1e3c8b turn the metronome into a sine 2022-01-04 00:29:59 -05:00
tildearrow
530a9bafc7 add a metronome 2022-01-04 00:02:41 -05:00
tildearrow
dc5990a37e a lot of master system fixes!
fixes forest frolick, professional tracker, YZYX, Monday (kinda),
MasterTracker and Ice Fields
2021-12-29 02:08:50 -05:00
tildearrow
be3b4da834 add note preview feature 2021-12-28 18:23:57 -05:00
tildearrow
d766c4aaf0 finally do EFxx right
took a while to figure out...
2021-12-28 00:51:38 -05:00
tildearrow
eb28f7f7f1 whaaaaaaaaa 2021-12-27 17:05:03 -05:00
tildearrow
0001af3f35 hmm... 2021-12-27 16:37:33 -05:00
tildearrow
65444d4a99 el diego 2 finally plays back correctly
ALMOST
2021-12-27 16:31:16 -05:00
tildearrow
1605f4f3c0 better global pitch effect
still work in progress
2021-12-27 16:15:11 -05:00
tildearrow
f32c2fa06b early implementation of global pitch
apparently this requires a rewrite of the pitch logic...
2021-12-27 15:22:01 -05:00
tildearrow
c2669f208e fix wiz lab AGAIN and implement repeat pat
0x0b + 0x0d = broken
2021-12-21 17:42:27 -05:00
tildearrow
c6ae198283 fix export crash :< 2021-12-21 16:05:21 -05:00
tildearrow
726b457ae7 another uninitialized variable 2021-12-21 16:02:31 -05:00
tildearrow
48f4f5835b add a sample preview button (hopefully)
the next commit will be about normalizing sample rate
2021-12-21 13:06:14 -05:00
tildearrow
6ee4e33b89 GUI: add status bar 2021-12-21 02:30:09 -05:00
tildearrow
5523a43804 better loop tracking 2021-12-21 02:02:25 -05:00
tildearrow
7f3885d2b1 GUI: ability to add/del effect cols and EExx value 2021-12-20 19:46:49 -05:00
tildearrow
e35f48b7a0 and MORE bug emulation
this time the volume DOES reset back to normal if you issue an off after
a 0Axx.
fixes pads.dmf
2021-12-19 00:42:20 -05:00
tildearrow
667526e414 further improve the accuracy of 03xx 2021-12-19 00:27:04 -05:00
tildearrow
97a00c7efd improve 03xx accuracy
portamento stops if same note
2021-12-19 00:02:48 -05:00
tildearrow
beceefd34b only output playback status in console mode 2021-12-18 04:26:17 -05:00
tildearrow
8de60fe2a6 arcade pitch oddity 2021-12-15 00:50:32 -05:00
tildearrow
52087edceb lots of changes
- GUI: ability to load files
- GUI: arrow key navigation
- fix sample volumes
2021-12-15 00:37:27 -05:00
tildearrow
004e8341c2 reset on end of song 2021-12-14 13:16:35 -05:00
tildearrow
28a9d2c4a3 now the GUI 2021-12-14 12:40:26 -05:00
tildearrow
bde8a7f79d warning-free compilation 2021-12-14 12:33:26 -05:00
tildearrow
285cc9b766 allow running GUI without loaded module 2021-12-13 14:40:03 -05:00
tildearrow
f39e2ea112 GUI: play/stop/change order 2021-12-11 03:34:43 -05:00
tildearrow
dec100b8aa YMU759: interpret time base correctly 2021-12-11 00:37:22 -05:00
tildearrow
6858742d7b fix sombras 2021-12-11 00:08:44 -05:00
tildearrow
442180956c neo geo: more work 2021-12-09 17:06:28 -05:00
tildearrow
e2a41974ff PCM sample bank support 2021-12-09 03:13:37 -05:00
tildearrow
d395abe47f actually obey the orders 2021-12-09 01:44:40 -05:00
tildearrow
defaf7397a arcade: finish it up
0.12 feature parityyyyyyyy!
2021-12-09 00:46:48 -05:00
tildearrow
7ac225e839 arcade: even more work
PCM tonight
2021-12-08 18:29:50 -05:00
tildearrow
9362cfa481 add clock drift for exact tempo 2021-12-08 02:57:41 -05:00
tildearrow
db2bfb8aa3 don't eat the last row in audio file out 2021-12-08 02:22:19 -05:00
tildearrow
0ca761d7fd aaaaagain 2021-12-08 00:37:23 -05:00
tildearrow
65ab3a2b5d keyOffAffectsArp is now per-channel 2021-12-08 00:33:00 -05:00
tildearrow
5fbaf71105 one thing is fixing bugs
another is bugging fixes
2021-12-08 00:27:20 -05:00
tildearrow
50f6bb536f treat ED00 correctly 2021-12-07 16:58:23 -05:00
tildearrow
1d390b705b fix rael again
only count the first pattern jump command
2021-12-07 16:32:20 -05:00
tildearrow
f71ee6b45d preliminary audio file output 2021-12-07 12:21:23 -05:00
tildearrow
7490ed89a1 Revert "Revert "prepare to add file out - does not compile!""
This reverts commit ada8e71884.
2021-12-07 04:22:36 -05:00
tildearrow
ada8e71884 Revert "prepare to add file out - does not compile!"
This reverts commit 45b202b85b.
2021-12-07 04:20:11 -05:00
tildearrow
45b202b85b prepare to add file out - does not compile! 2021-12-07 03:52:41 -05:00
tildearrow
3ee761fc87 C64: finish it all
all modules play correctly, bar:
- motherfunksignal (almost)
- filters are a bit weird
2021-12-07 01:23:57 -05:00
tildearrow
d6fb6b0bb3 more optimization
as of now non-stereo sound chips are only processed once
2021-12-06 16:51:18 -05:00
tildearrow
6efcfc2e8a prepare for possible major optimization
by just forwarding an output buffer to the dispatch and begin/length,
the number of calls may be reduced which improves performance.
2021-12-06 05:21:42 -05:00
tildearrow
480b26c95c more C64 work 2021-12-05 16:45:29 -05:00
tildearrow
0f3f173b6e rework some of the playback logic
paving the way for C64
2021-12-05 16:11:12 -05:00
tildearrow
6599eb4f7e many fixes to NES system playback 2021-12-04 02:19:14 -05:00
tildearrow
99e59278ad PCE: kind of implement LFO 2021-06-09 01:08:42 -05:00
tildearrow
451c35f41b PCE: sample playback 2021-06-08 23:16:29 -05:00
tildearrow
cd1851606e PCE: the adventures of arp fail 2021-06-08 21:49:24 -05:00
tildearrow
8b9da366e4 PCE: implement noise, wave and pan commands
TODO: actually implement noise mode very well
2021-06-08 20:45:38 -05:00
tildearrow
0b8fcc6e8d genesis: implement 10xx command 2021-06-05 23:27:02 -05:00
tildearrow
09371f9205 more game boy playback fixes
including fixing the arp+slide thing
2021-05-28 02:30:09 -05:00
tildearrow
fc87899aa8 implement the final game boy bits 2021-05-28 01:26:57 -05:00
tildearrow
83ce4f0ebe game boy progress, part 5
now with almost accurate arpeggios.
2021-05-28 00:36:40 -05:00
tildearrow
30692985dc more slide fixes
we are closer and closer
2021-05-26 02:34:40 -05:00
tildearrow
6c7383f39b fix mastertracker again
arpeggio broke
2021-05-26 02:06:40 -05:00
tildearrow
79f15fcbd8 fix a silly bug
TODO: apparently this song requires accurate porta...
2021-05-19 03:09:51 -05:00
tildearrow
f26307f11b more slide headache 2021-05-19 02:22:26 -05:00
tildearrow
ba2c4f46c6 oh come on OFF stops arpeggio?! 2021-05-19 02:06:13 -05:00
tildearrow
471cd2d68d add some view modes and fix a slide bug 2021-05-19 02:05:24 -05:00
tildearrow
d9c02531e8 implement E4 effect 2021-05-18 03:02:47 -05:00
tildearrow
c766f98719 implement arp speed and arp tick 2021-05-18 02:53:59 -05:00
tildearrow
c0f7f12c89 misc fixes and new effects
- fix 8-bit samples
- 0C effect
- E3 effect
2021-05-18 02:29:17 -05:00
tildearrow
ccd5acf1e4 even. more. volume. slide. fixes.
so it happens on >volMax too
amazing
2021-05-18 01:52:03 -05:00
tildearrow
38b16fe5ae fix porta up/down 2021-05-18 01:37:14 -05:00
tildearrow
ba8c6d8169 it builds on GCC again 2021-05-17 19:18:59 -05:00
tildearrow
ceda9a8058 the final volume fix i think
all 5 test cases pass
2021-05-17 15:36:14 -05:00
tildearrow
9736b77401 better volume slide accuracy
volume slide seems to be kind of quirky:
- sliding all the way down and then up suddenly sets the vol to max
- apparently there is an overflow and the slide stops when it reaches
  its boundaries (instead of continuing)
2021-05-17 15:06:11 -05:00
tildearrow
67847d79cf attempt to fix the volume slide mess
also a fix to noise arps in basic mode in SMS

the volume slides will be an adventure as the behavior seems to be hard
to determine
2021-05-17 03:06:45 -05:00
tildearrow
53975349e5 more. SMS. fixes. 2021-05-17 01:51:14 -05:00
tildearrow
2532401265 prepare for ch3 mode 2021-05-16 17:43:10 -05:00
tildearrow
4662e567c2 fix delayed note cut 2021-05-16 03:20:32 -05:00
tildearrow
dbc2e6285f a lot of work
- round to nearest instead of round to zero in SMS period calc
- implement arpeggio
- implement arp macro (kinda)
- polish the SMS platform
- correct the DIV_CMD_PITCH range to 1 semitone
- fix PSG volume in Genesis
- use a better register write strat in Genesis
- fix a bug caused by legacy code
- implement ECxx command
- implement EDxx command
- implement SN noise mode command
- vibrato table is now 64 positions long (instead of 60)
2021-05-16 03:03:23 -05:00
tildearrow
d9f076ef64 prepare to add SMS platform
plays but no macro yet
2021-05-15 14:18:16 -05:00
tildearrow
9a97c38cc6 implement more effects and bugfixes
enough to play time trax intro near flawless
2021-05-15 03:13:21 -05:00
tildearrow
eb692ca9a9 implement several effects
volume slides, vibrato, slides and portamento
2021-05-14 14:16:48 -05:00
tildearrow
775b88dae2 more playback work 2021-05-14 03:23:40 -05:00
tildearrow
45a6d70479 massive improvements to genesis playback 2021-05-13 02:39:26 -05:00
tildearrow
062a9837c0 G E N E S I S
without SN
2021-05-12 17:19:18 -05:00
tildearrow
a68f8d0dec add some basic playback code!
here it begins
2021-05-12 05:22:01 -05:00
tildearrow
f810fc0c3c earliest playback
no sound, just terminal output
2021-05-12 03:58:55 -05:00