Commit graph

3293 commits

Author SHA1 Message Date
tildearrow
ebb28d912b untested saving code and memory leak fix 2021-12-15 14:15:44 -05:00
tildearrow
2879b5e4d0 arcade: add ymfm-based core
less CPU usage at the cost of some quality
2021-12-15 01:23:58 -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
29d7be032a neo geo: remove debug spam 2021-12-14 21:47:44 -05:00
tildearrow
f145f8c7d4 GUI: note and value input!! 2021-12-14 17:45:37 -05:00
tildearrow
95e3a098d0 add Neo Geo extended channel 2 support 2021-12-14 14:31:57 -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
9da9ed3cd7 GUI: make it dockable 2021-12-14 04:45:44 -05:00
tildearrow
7a70ccfe2e use docking branch 2021-12-13 20:55:40 -05:00
tildearrow
3af0a9feda set default time base of song to 0 2021-12-13 20:31:27 -05:00
tildearrow
9e2e02a12e GUI: colored pattern view 2021-12-13 17:09:46 -05:00
tildearrow
60f06d2908 fix build... 2021-12-13 14:51:35 -05:00
tildearrow
285cc9b766 allow running GUI without loaded module 2021-12-13 14:40:03 -05:00
tildearrow
6b499fbc79 GUI: channel namws 2021-12-13 13:10:56 -05:00
tildearrow
efde2c5798 earliest pattern view 2021-12-13 02:03:36 -05:00
tildearrow
9a1683bb45 GUI: C64 and game boy ins edit UI 2021-12-12 18:19:43 -05:00
tildearrow
63fe2e2c95 fix output to audio file 2021-12-12 15:22:27 -05:00
tildearrow
4b32599237 GUI: macro editor (kind of) and order view 2021-12-12 04:21:09 -05:00
tildearrow
926178414c GUI: prepare for standard ins editor 2021-12-11 17:49:55 -05:00
tildearrow
1d2c129c01 GUI: a rough FM ins editor 2021-12-11 17:41:32 -05:00
tildearrow
93c88a093f fix volume regression 2021-12-11 16:51:34 -05:00
tildearrow
2f813c55e0 GUI: instrument selector 2021-12-11 16:44:02 -05:00
tildearrow
1bf64c4f4f NES; don't crash 2021-12-11 13:34:29 -05:00
tildearrow
5ffccc5019 GUI: compile with no GUI 2021-12-11 13:34:11 -05:00
tildearrow
a17e91955a add reset() for every platform 2021-12-11 13:14:38 -05:00
tildearrow
f39e2ea112 GUI: play/stop/change order 2021-12-11 03:34:43 -05:00
tildearrow
9b850c1763 GUI: earliest ever GUI 2021-12-11 03:11:40 -05:00
tildearrow
e8ac2947ab prepare for the GUI! 2021-12-11 02:10:09 -05:00
tildearrow
d4fb9bac83 dev10 2021-12-11 01:56:25 -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
20a9282efe neo geo: finish it up 2021-12-10 23:41:00 -05:00
tildearrow
fbd94bbce9 neo geo: ADPCM!! 2021-12-10 22:51:50 -05:00
tildearrow
a95ee7b7ba neo geo: found the problem 2021-12-10 15:16:58 -05:00
tildearrow
e365aa4bdb more neo geo stuff 2021-12-10 04:22:13 -05:00
tildearrow
442180956c neo geo: more work 2021-12-09 17:06:28 -05:00
tildearrow
d789ae759e neo geo let's goooooo 2021-12-09 13:25:02 -05:00
tildearrow
6cc0d58624 get things ready for neo geo 2021-12-09 03:37:31 -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
e3f14f3850 1-byte offset should be safe 2021-12-09 02:58:53 -05:00
tildearrow
2dcf5f890e PCE: note off disables PCM mode 2021-12-09 02:54:14 -05:00
tildearrow
daed339e07 add a save function
and it loads on DefleMask!
2021-12-09 02:38:55 -05:00
tildearrow
d395abe47f actually obey the orders 2021-12-09 01:44:40 -05:00
tildearrow
13c6362edb dev9 2021-12-09 01:24:33 -05:00
tildearrow
b358338613 arcade: minor optimization 2021-12-09 01:03:05 -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
6dcc3416ee arcade: a bit of extra work 2021-12-08 17:54:14 -05:00
tildearrow
aff0afa7d1 prepare for arcade platform! 2021-12-08 17:40:35 -05:00
tildearrow
f5a22c9d42 macroInt: reset will vars 2021-12-08 03:17:17 -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
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
fe5f8afa05 uninitialized variables? oh my! 2021-12-08 01:31:35 -05:00
tildearrow
4eec990ec1 when the fix breaks something 2021-12-08 01:16:29 -05:00
tildearrow
db46dd79d2 honor arpeggio macro during legato 2021-12-08 00:56:46 -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
3f5b0019dc C64: fix rael 2021-12-07 16:25:42 -05:00
tildearrow
655ad5139d PCE: remove clip clicks 2021-12-07 14:29:48 -05:00
tildearrow
d0ce05c8d4 acknowledgements 2021-12-07 13:01:59 -05:00
tildearrow
b689d51ec9 audio file output stereo support 2021-12-07 12:33:55 -05:00
tildearrow
f71ee6b45d preliminary audio file output 2021-12-07 12:21:23 -05:00
tildearrow
7649b845aa prepare for file output 2021-12-07 04:39:52 -05:00
tildearrow
4cba677c04 i know a better way 2021-12-07 04:32:42 -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
7d24b10da4 dev8 2021-12-07 01:26:50 -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
c26bb511d7 dispatch: fix small mistake 2021-12-06 21:12:16 -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
18fb2a4b9f C64: more work! 2021-12-06 03:26:39 -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
1ac45e27a2 delete several unneeded files 2021-12-05 17:16:30 -05:00
tildearrow
480b26c95c more C64 work 2021-12-05 16:45:29 -05:00
tildearrow
24956e8177 Merge branch 'master' of github.com:tildearrow/furnace 2021-12-05 16:21:28 -05:00
tildearrow
0f3f173b6e rework some of the playback logic
paving the way for C64
2021-12-05 16:11:12 -05:00
tildearrow
e52f5c9147 wow 2021-12-05 01:30:33 -05:00
tildearrow
ff07a19405 kind of C64 2021-12-04 23:55:28 -05:00
tildearrow
2f7001681c prepare for C64 platform! 2021-12-04 02:42:22 -05:00
tildearrow
760fa43a4f fill in a blank line 2021-12-04 02:34:13 -05:00
tildearrow
796f9b0cf5 one more fix! 2021-12-04 02:28:15 -05:00
tildearrow
6599eb4f7e many fixes to NES system playback 2021-12-04 02:19:14 -05:00
tildearrow
3286c3c0c5 NES system! almost 2021-12-04 01:19:54 -05:00
tildearrow
c543553b0f prepare for NES platform 2021-12-03 16:04:07 -05:00
tildearrow
86131bf05e add a log level flag 2021-06-09 12:28:46 -05:00
tildearrow
2be720540f dev7 2021-06-09 03:33:44 -05:00
tildearrow
f7080bb2c1 add parameter parsing 2021-06-09 03:33:03 -05:00
tildearrow
fa445d8614 GB: reduce CPU usage
SameBoy works faster if you do multiple runs in the acquire function
2021-06-09 02:17:04 -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
cf6b213d2c even more ancient version compatibility 2021-06-09 01:52:00 -05:00
tildearrow
5b707eeeec better ancient version sample support 2021-06-09 01:16:26 -05:00
tildearrow
99e59278ad PCE: kind of implement LFO 2021-06-09 01:08:42 -05:00
tildearrow
480ddf489a dummy: more work 2021-06-09 00:10:23 -05:00
tildearrow
1edd633422 PCE: now for 8-bit samples aaaaa 2021-06-08 23:17:38 -05:00
tildearrow
451c35f41b PCE: sample playback 2021-06-08 23:16:29 -05:00
tildearrow
5b2684b5e1 PCE: the adventures of missing wavetables 2021-06-08 22:21:05 -05:00
tildearrow
cd1851606e PCE: the adventures of arp fail 2021-06-08 21:49:24 -05:00
tildearrow
8f3b9e03da PCE: make the noise actually work 2021-06-08 21:25:07 -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
8dffdca25a PCE: more work 2021-06-08 16:46:27 -05:00
tildearrow
1379b4c935 PCE: now prepare for volume 2021-06-07 03:42:18 -05:00
tildearrow
c0e4e20b3e finally, episode 2
now we really output the wave
2021-06-07 03:05:42 -05:00
tildearrow
9e72d4580f FINALLY SOUND 2021-06-07 02:49:43 -05:00
tildearrow
d74fa698af prepare for PC Engine platform
using Mednafen core
2021-06-06 14:02:38 -05:00
tildearrow
0b8fcc6e8d genesis: implement 10xx command 2021-06-05 23:27:02 -05:00
tildearrow
2bff8ae753 what the?
panning 00 mutes channel in GB?
2021-05-28 19:59:42 -05:00
tildearrow
5b9a0c3ee9 win32 lean and mean 2021-05-28 15:57:07 -05:00
tildearrow
2d3580a05c fix windows build for once 2021-05-28 15:25:55 -05:00
tildearrow
2a379f3adc dev6 2021-05-28 03:05:37 -05:00
tildearrow
acfd9fabd0 lower the game boy volume 2021-05-28 02:53:28 -05:00
tildearrow
fedb8cdd94 out of bounds 2021-05-28 02:49:01 -05:00
tildearrow
09371f9205 more game boy playback fixes
including fixing the arp+slide thing
2021-05-28 02:30:09 -05:00
tildearrow
23dc645ced out of bounds and non-determinism fixes
the soldiers play properly now
2021-05-28 02:02:54 -05:00
tildearrow
485c4bbadc micro fix 2021-05-28 01:30:18 -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
c6e42739fc game boy: tune to 440Hz 2021-05-27 23:41:35 -05:00
tildearrow
f2af1c9a07 remove some debug messages 2021-05-27 23:34:54 -05:00
tildearrow
831d2c99fb game boy progress, part 4
waves are proper now
2021-05-27 23:33:04 -05:00
tildearrow
892ea33e77 game boy progress, part 3 2021-05-27 23:03:10 -05:00
tildearrow
d6398ac10e game boy progress, part 2 2021-05-27 16:47:09 -05:00
tildearrow
a1ab7c5d57 game boy progress, part 1
noise and wave channels don't play correctly yet
2021-05-27 13:30:37 -05:00
tildearrow
c78cc8c676 finally output envelopes
apparently emulating the timers was necessary after all...
2021-05-27 05:06:43 -05:00
tildearrow
fff64acf09 prepare for fix 2021-05-27 04:36:56 -05:00
tildearrow
a2e64606c0 wire up early GB support
TODO: check why are envelopes not working
2021-05-26 17:43:14 -05:00
tildearrow
c2b3d85f77 bind the game boy
TODO: sound
2021-05-26 03:17:12 -05:00
tildearrow
30692985dc more slide fixes
we are closer and closer
2021-05-26 02:34:40 -05:00
tildearrow
42cd300b46 remove unused things in gb.h 2021-05-26 02:09:31 -05:00
tildearrow
b499878c24 add a define for SN noise start value
some SN chips have the start value set to an Atari-like one
2021-05-26 02:09:18 -05:00
tildearrow
6c7383f39b fix mastertracker again
arpeggio broke
2021-05-26 02:06:40 -05:00
tildearrow
3c20bffd46 prepare for game boy platform
using SameBoy code (MIT License)
2021-05-22 21:10:25 -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
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
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
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
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
ba8c6d8169 it builds on GCC again 2021-05-17 19:18:59 -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
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
0caaa1629c are you kidding me? 2021-05-17 00:36:09 -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
fbc29e1106 A#7 SMS oddity 2021-05-16 20:10:52 -05:00
tildearrow
2532401265 prepare for ch3 mode 2021-05-16 17:43:10 -05:00
tildearrow
5a8e20fcd1 arp fixed mode 2021-05-16 12:47:05 -05:00
tildearrow
4662e567c2 fix delayed note cut 2021-05-16 03:20:32 -05:00
tildearrow
577c2dbb2f bump the version number 2021-05-16 03:04:06 -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
3172fd37ed more SMS work
it is able to play some modules... the next step is to bind this to the
Genesis platform
2021-05-15 16:42:48 -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
5b002ca1d5 add SN chip ported from MAME 2021-05-14 03:23:12 -05:00
tildearrow
d57a30e717 optimize by 0% 2021-05-13 13:22:44 -05:00
tildearrow
76a345ef25 rebranding 2021-05-13 03:22:57 -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
2f8a7c3dab dev1 2021-05-12 17:27:48 -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
tildearrow
9d17655836 engine audio fixes 2021-05-11 18:23:35 -05:00
tildearrow
8c014802c9 convert chars to signed/unsigned 2021-05-11 15:26:38 -05:00
tildearrow
783d56c72a initial commit
took me a day to make the base...
...and ~12 hours to write a reader that reads 100% of all demo songs in
1.0
2021-05-11 15:08:08 -05:00