Commit graph

137 commits

Author SHA1 Message Date
tildearrow
c682c921a1 fix compatible-style retrigger 2022-02-03 15:43:41 -05:00
tildearrow
5086bc1097 implement the linear pitch flag 2022-02-03 02:24:11 -05:00
tildearrow
ccfe3bdd97 Genesis: add ability to use ymfm instead of Nuked 2022-02-02 23:08:45 -05:00
tildearrow
545f3ffdf4 Genesis: add DAC distortion flag 2022-02-02 03:06:30 -05:00
tildearrow
d691ec6d76 add a chip playground
in debug menu
2022-02-01 18:08:19 -05:00
tildearrow
f29d4bce1b implement 11xx effect on FM platforms
please no ch 3
2022-02-01 15:12:06 -05:00
tildearrow
4f5d37d415 VGM export: fix Genesis samples wrongly pitched 2022-02-01 03:23:29 -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
822d542350 limit volume macro to system maximum
fixes #71
2022-01-30 12:31:50 -05:00
tildearrow
b6da7871d4 make the flags option actually work 2022-01-29 00:20:27 -05:00
tildearrow
bfed0b3209 change setPAL to setFlags 2022-01-28 12:59:53 -05:00
tildearrow
ec66b7a21b add song tuning
soon: system clock settings
2022-01-28 00:55:51 -05:00
tildearrow
5eb974456d Arcade: implement FM macros 2022-01-27 02:17:09 -05:00
tildearrow
0e633ea69b GUI: add a debug window 2022-01-27 00:29:16 -05:00
tildearrow
1347d16da4 Genesis: fully implement volume macro 2022-01-26 18:03:08 -05:00
tildearrow
f86838df99 no longer shift arpeggio macro by 12 2022-01-26 15:53:52 -05:00
tildearrow
8bcab6e139 VGM export: write resets and GD3 tag
may be non-standard compliant (yet)
also it crashes foobar2000 for some reason but this will be fixed
2022-01-25 18:46:27 -05:00
tildearrow
d945e5299a Merge commit 'bd8c06bbb786df086d478e1574c6fe11ee6651b6' 2022-01-24 15:53:02 -05:00
tildearrow
bd8c06bbb7 prevent crash when playing empty sample
fixes #62
2022-01-24 15:47:39 -05:00
tildearrow
858d5343b8 earliest VGM export!
only supports single-chip Genesis for now
the other systems will be added shortly
2022-01-24 01:01:08 -05:00
tildearrow
524f8c312e Genesis: implement arp macros 2022-01-23 15:55:12 -05:00
tildearrow
45d9bef2a8 Genesis: restore LFO value when changing order 2022-01-23 15:15:46 -05:00
tildearrow
cd2854d027 it works 2022-01-23 15:12:00 -05:00
tildearrow
b39b1c0a25 Genesis: implement FM macros (partial, untested) 2022-01-23 13:19:19 -05:00
tildearrow
d62b111c78 Genesis: separate channel state from instrument
paves way for FM macros
with this change, extended channel 3 mode breaks! do not use
until I diagnose the problem.
2022-01-22 17:43:57 -05:00
tildearrow
371c23a7ee Genesis: fix sample desync when muting DAC channel 2022-01-22 02:36:58 -05:00
tildearrow
05bbfaced2 get rid of a debug message 2022-01-20 16:41:18 -05:00
tildearrow
917c9cf2e3 Genesis: allow sample preview 2022-01-20 16:40:18 -05:00
tildearrow
0f28ae0fee implement Furnace-style PCM on Arcade/Gen/NES/PCE 2022-01-20 16:09:05 -05:00
tildearrow
4ee17d35cd implement sample loop on the rest of systems 2022-01-20 02:46:28 -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
6d9f5db6a4 add notifyInsChange
see issue #8
2022-01-17 23:59:52 -05:00
tildearrow
ce027d99f6 force insChanged on note input
partially solves issue #8
2022-01-17 18:01:40 -05:00
tildearrow
12236248dd prepare for eventual export 2022-01-16 23:21:27 -05:00
tildearrow
91e8ff01cf add notifyInsDeletion
prevent invalid memory access when deleting instruments
2022-01-13 19:36:02 -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
d766c4aaf0 finally do EFxx right
took a while to figure out...
2021-12-28 00:51:38 -05:00
tildearrow
65444d4a99 el diego 2 finally plays back correctly
ALMOST
2021-12-27 16:31:16 -05:00
tildearrow
7ba8607270 changes to sample rate storage
as of now we store and use the actual sample rate as opposed to an index
fo a fixed rate table.

this allows for more flexibility in a future file format...
2021-12-23 18:04:44 -05:00
tildearrow
726b457ae7 another uninitialized variable 2021-12-21 16:02:31 -05:00
tildearrow
997c460fc1 greatly improved playback resume
no more song weirding out when changing orders
2021-12-21 01:29:07 -05:00
tildearrow
3a0e94df5e genesis: fix muting the PCM channel 2021-12-19 00:51:10 -05:00
tildearrow
efd5e844ce genesis: fix massive bug when muting SN 2021-12-19 00:49:47 -05:00
tildearrow
b3b66ecbdb channel mute/solo! 2021-12-18 03:25:42 -05:00
tildearrow
c54df74df1 GUI: rate change and new window title 2021-12-15 17:32:08 -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
2f813c55e0 GUI: instrument selector 2021-12-11 16:44:02 -05:00
tildearrow
a17e91955a add reset() for every platform 2021-12-11 13:14:38 -05:00
tildearrow
248cc6d37a properly handle note off in PCM 2021-12-09 03:25:00 -05:00
tildearrow
e2a41974ff PCM sample bank support 2021-12-09 03:13:37 -05:00
tildearrow
6a02754996 add PAL flag to dispatch
now platforms run at their correct clock speed when in PAL mode

also fix clipping in Genesis
2021-12-08 01:56:40 -05:00
tildearrow
65ab3a2b5d keyOffAffectsArp is now per-channel 2021-12-08 00:33:00 -05:00
tildearrow
145403e7dd Merge branch 'master' of github.com:tildearrow/furnace 2021-12-06 16:52:03 -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
ce4b6c7044 genesis: comment out two debug messages 2021-12-06 03:26:33 -05:00
tildearrow
055b4f9c26 genesis: fix delay bug 2021-12-06 03:07:29 -05:00
tildearrow
8478481466 hmmm 2021-12-06 02:59:12 -05:00
tildearrow
b30c5679ae genesis: reduce CPU usage
the chip uses TDM to output the channels one by one
so we just run the chip 6 times and output at 1/6th the rate, which
means less work for blip_buf and less C++ overhead
2021-06-09 01:57:12 -05:00
tildearrow
0b8fcc6e8d genesis: implement 10xx command 2021-06-05 23:27:02 -05:00
tildearrow
83ce4f0ebe game boy progress, part 5
now with almost accurate arpeggios.
2021-05-28 00:36:40 -05:00
tildearrow
892ea33e77 game boy progress, part 3 2021-05-27 23:03:10 -05:00
tildearrow
26463fd8d9 better pitch slides
now digital warmth doesn't choke at the toms
2021-05-19 14:39:39 -05:00
tildearrow
09ed99f0b0 genesis extended channel 3 support.
as of today Furnace is able to play most Genesis songs without trouble.
bugs are expected, and fixes will arrive.

are you ready?
2021-05-18 16:02:49 -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
b2908413fe FM: better pitch slide accuracy
so... it appears that pitch slides in Genesis system aren't truly linear
instead, they are "kind of linear". the frequency isn't linear, and when
it overflows the range of an octave, the high bit changes and the
frequency is shifted right
2021-05-18 01:20:38 -05:00
tildearrow
b34321b556 fix a tiny TL misbehavior 2021-05-18 00:43:00 -05:00
tildearrow
cf7aa9139c TL change on out op fix 2021-05-17 16:32:56 -05:00
tildearrow
98180c3d23 now fix the volume slides in FM as well 2021-05-17 15:51:12 -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
bbd175e8f6 a 2021-05-16 20:49:56 -05:00
tildearrow
3a1019a08c more fixes and tweaks
memory management party
2021-05-16 20:49:54 -05:00
tildearrow
2532401265 prepare for ch3 mode 2021-05-16 17:43:10 -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
f2c70df4a8 bind SMS platform to Genesis one 2021-05-15 16:59:57 -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
d57a30e717 optimize by 0% 2021-05-13 13:22:44 -05:00
tildearrow
c5fa0a3d6d it doesn't... 2021-05-13 03:18:54 -05:00
tildearrow
cb1c96ff1d add a register write cache
improves quality and... wait!
2021-05-13 03:09:56 -05:00
tildearrow
45a6d70479 massive improvements to genesis playback 2021-05-13 02:39:26 -05:00
tildearrow
ea5c28829e or 2021-05-12 19:18:48 -05:00
tildearrow
062a9837c0 G E N E S I S
without SN
2021-05-12 17:19:18 -05:00