Commit graph

4510 commits

Author SHA1 Message Date
tildearrow 0e7df18ab3 NES and MMC5: heuristic oopsie 2025-03-07 05:11:18 -05:00
tildearrow c5492f2f2c PCE: oh man a typo 2025-03-07 04:34:27 -05:00
tildearrow 8ee01d15f7 TIA: acquireDirect()
# TIA Benchmark

twin.fur

acquire(): 11.324s
acquireDirect(): 1.267s

Balmeranda.fur

acquire(): 11.923s
acquireDirect(): 1.093s

# MMC5 (Goofy Asses per second)

unoptimized: 9.22/s
optimized: 108.96/s
2025-03-07 03:58:13 -05:00
tildearrow 9730988cef MMC5: reset write queue... 2025-03-07 03:21:04 -05:00
tildearrow 47f176b0f0 MMC5: acquireDirect(), part 2
PCM now works
2025-03-07 03:12:18 -05:00
tildearrow 1070fb5d10 MMC5: acquireDirect(), part 1
no samples
also fixed chan osc
2025-03-07 03:07:52 -05:00
tildearrow 86fb92595a NES: fix a little accuracy problem 2025-03-07 02:31:38 -05:00
tildearrow 007ef91e84 NES: puNES acquireDirect(), part 3
reduce CPU usage a bit
2025-03-07 02:10:08 -05:00
tildearrow 08e7112d85 NES: fix unused variable 2025-03-07 02:02:55 -05:00
tildearrow 29849972dd NES: puNES acquireDirect(), part 2
per-chan osc
2025-03-07 02:02:04 -05:00
tildearrow 5df3e1f030 NES: make it C++
so we can submit to chan osc buffer
2025-03-07 01:57:52 -05:00
tildearrow 1d60bb03cc NES: reduce CPU usage when no channels active 2025-03-07 01:48:10 -05:00
tildearrow dde97171ab NES: puNES acquireDirect(), part 1
no per-chan osc
2025-03-07 01:29:40 -05:00
tildearrow ad8437e5ae this is why I don't use tabs
in one editor it's 8 spaces, in another it's 2...
spaces on the other hand are the same regardless of editor
2025-03-06 23:23:46 -05:00
tildearrow f43715775c no to-do 2025-03-06 20:23:10 -05:00
tildearrow 645e97ef93 NES: puNES macro expansion
preparations for acquireDirect()
2025-03-06 20:21:26 -05:00
tildearrow c2228cd74b SCC: acquireDirect() 2025-03-06 19:06:45 -05:00
tildearrow 7a6f6a6745 PCE: remove core quality 2025-03-06 12:18:10 -05:00
tildearrow 4c166b9b5a move blip_buf to extern
so it can be used by other cores
2025-03-06 12:07:28 -05:00
tildearrow 2078949093 Amiga: tweak the filters once again 2025-03-06 02:00:07 -05:00
tildearrow 43891b8d79 PCE: optimize 5ms 2025-03-05 19:07:10 -05:00
tildearrow 68a550a419 update the acquireDirect API
size_t offset is no more - it is always 0
2025-03-05 18:57:17 -05:00
tildearrow ec451cd80e Amiga: acquireDirect, part 3 2025-03-05 15:26:17 -05:00
tildearrow 69a43a70fc Amiga: improve filter calc 2025-03-05 05:40:39 -05:00
tildearrow e941dfb174 Amiga: acquireDirect, part 2
the filter is back!
2025-03-05 04:49:22 -05:00
tildearrow e116f2e523 PCE: fix anti-click 2025-03-05 00:17:09 -05:00
tildearrow 655b3621f6 Merge branch 'master' into amigaOpt 2025-03-04 13:18:07 -05:00
tildearrow 6e40a6980b PCE: fix chan osc!
ready to merge...
2025-03-04 12:57:59 -05:00
tildearrow ac8df480ab PCE: half working channel osc
it doesn't look right
2025-03-04 12:37:31 -05:00
tildearrow 11c99f9f96 PCE: push it even further!
now a bit faster
2025-03-04 12:21:56 -05:00
tildearrow ec5aafb9ad PCE: PCM works
CPU usage increases though when it's in use :<
2025-03-04 12:19:46 -05:00
tildearrow 5d3a22a502 PCE: PCM might work again 2025-03-04 11:57:41 -05:00
tildearrow f0a3e3f590 PCE: Mednafen is wonderful
the PSG emulator already comes with heuristics... I stripped them off
for Furnace but now that we have acquireDirect() we can give it our
blip_buf and handle everything there

from 40-70% to 10% CPU usage on my phone, and highest quality!

TODO:
- PCM
- chan osc (should be very easy)
2025-03-03 20:29:34 -05:00
tildearrow 95b1085aed I have no idea what's going on 2025-03-03 17:18:52 -05:00
tildearrow acdce2c795 Amiga: acquireDirect, part 1
filter no longer works... I'll think of a possible approach
2025-03-03 04:11:01 -05:00
tildearrow f5589d0084 Amiga: increase DMA off delay 2025-03-03 02:32:11 -05:00
tildearrow 71ac185cbf FDS: lower CPU usage 2025-03-03 02:27:00 -05:00
tildearrow b3b50bdb66 ESFM: optimize osc buf 2025-03-03 01:45:42 -05:00
tildearrow cf4807b5d0 optimize putSample a bit
use 16-bit precision even on 64-bit....
this allows some code optimizations
2025-03-03 00:51:47 -05:00
tildearrow 2926fad77e ASHA SDGFHJKLADG F;LHKJ 2025-03-02 23:18:02 -05:00
tildearrow 6f8da93714 size_t 2025-03-02 23:04:48 -05:00
tildearrow 8dcbd0fe1c Merge branch 'ga20opt' 2025-03-02 20:53:53 -05:00
tildearrow f39039766e possibly fix build. 2025-03-02 20:49:10 -05:00
tildearrow 6d55c8088c GA20: yaaaay I fixed chan osc 2025-03-02 20:41:34 -05:00
tildearrow 8f54445625 GA20: acquireDirect optimizations, part 1
buggy, slow and glitchy
output is good but chan osc is now broken

from 1.5 to 0.4 seconds
2025-03-02 20:29:28 -05:00
tildearrow 2c75555fae GA20: excellent... 2025-03-02 19:34:52 -05:00
tildearrow 6813c30e3a new chan osc, part 8
fix remaining bugs
2025-03-02 18:02:38 -05:00
tildearrow 49a8693dcb new chan osc, part 7
i am done
2025-03-02 16:14:49 -05:00
tildearrow 6265d2cd39 new chan osc, part 6
more adaptations

how can I get you out of my head... I want to go back to work!
2025-03-02 04:11:10 -05:00
tildearrow fe00ee805d new chan osc, part 5
fix C64 rate
2025-03-01 19:57:16 -05:00
tildearrow a16d20e190 new chan osc, part 4
adapt dispatch code to it
2025-03-01 19:49:56 -05:00
tildearrow 10e60ec8c1 new chan osc, part 2
why is it jerky?
2025-03-01 17:22:34 -05:00
tildearrow dd7e1def3d new chan osc work in progress 2025-03-01 05:05:50 -05:00
tildearrow 0eea0ec139 a new method for setting chan osc rate... 2025-03-01 00:33:15 -05:00
tildearrow c83ecfe993 prepare new chan osc code
chan osc output will be 65536Hz - always
new functions for initializing the osc buffer and all
2025-02-26 20:29:13 -05:00
tildearrow e94d99d79e PC Speaker: fix it 2025-02-26 15:45:26 -05:00
tildearrow d935d3c6d1 acquireDirect proof of concept
extremely low CPU usage in PC Speaker

WARNING! no per-chan osc yet!
2025-02-25 19:58:25 -05:00
tildearrow 4502fa6912 FIX BUILD FAILURE 2025-02-25 18:56:04 -05:00
tildearrow 4b1e883d1b PC speaker: prepare for acquireDirect 2025-02-25 18:53:02 -05:00
tildearrow 231819da2e Revert "Revert "prepare acquireDirect API" - stupid crap"
thought of an idea for optimization. let's try again.

This reverts commit 4ca7033dec.
2025-02-25 18:45:28 -05:00
tildearrow 8d8e51d36a disable 32-bit float audio export in per-chip mode
issue #2389
2025-02-25 15:34:36 -05:00
techmetx11 18c5d80a09 Use more .getPattern() 2025-02-22 15:18:23 -05:00
techmetx11 27a1914924 Use .getPattern() 2025-02-22 15:18:23 -05:00
techmetx11 56937d8f05 Fix naming 2025-02-22 15:18:23 -05:00
techmetx11 308aacc1e6 Implement looping in TFM import 2025-02-22 15:18:23 -05:00
LTVA1 c58a7cba20 Update sid3.c 2025-02-22 14:45:09 -05:00
tildearrow a80cdbb1dd ES5506: increase precision in Amiga pitch mode
issue #2120
2025-02-22 01:32:31 -05:00
tildearrow c5576ebcd2 PCE: fix sample linger in VGM export
issue #2322
2025-02-21 19:41:48 -05:00
tildearrow 9af53cac73 PCE: fix sample volume in VGM export
issue #2319
2025-02-21 19:35:29 -05:00
tildearrow 41d3dcde66 Virtual Boy: handle phase reset first 2025-02-21 18:58:58 -05:00
tildearrow 0b1e90b908 Virtual Boy: disable channel 5 when changing mod t
able
2025-02-21 18:50:00 -05:00
tildearrow cfb962236a WaveSynth: add change detection
don't update wave if it is intact
issue #2298
2025-02-21 17:25:05 -05:00
tildearrow 040ceb788d .ftm import: improvements
- cut/delay policy is now lax (why was it set to strict?)
- macro release mode is now Active (issue #2376)
2025-02-21 16:23:21 -05:00
tildearrow 4ca7033dec Revert "prepare acquireDirect API" - stupid crap
the most POINTLESS plan of all time... acquireDirect.
why? because you gotta fill in the oscBufs anyway, which will take
precious CPU time, so you can't just pass the blip_bufs to dispatch
and hope it'll help by not processing when nothing's happening.

"so disable it when the per-chan osc is up!" NO! we need this for
volume calculation....

"how about rewrite per-chan osc logic?" you know what? I don't have
either the time or the will for that.
now back to Something Else......

This reverts commit 08177d839a.
2025-02-21 01:27:04 -05:00
tildearrow cf89a4ff44 GA20: yet another optimization 2025-02-20 04:44:19 -05:00
Natt Akuma c6bb7acfad Merge branch 'master' of https://github.com/tildearrow/furnace 2025-02-20 05:33:31 +07:00
Natt Akuma b084b5f977 Add a missing chrono include
This fixes MSVC v143 build failure
2025-02-20 05:33:06 +07:00
tildearrow 08177d839a prepare acquireDirect API
provide direct access to blip_buf to dispatch code, which may allow for some serious optimizations
2025-02-19 15:46:10 -05:00
tildearrow a2bd669792 Virtual Boy: where did the noise channel go? 2025-02-19 04:29:54 -05:00
tildearrow 0e0aab88de GA20: another optimization 2025-02-18 05:53:54 -05:00
tildearrow f55f92975a GA20: tiny optimization 2025-02-18 05:32:09 -05:00
tildearrow 556b268d80 Virtual Boy: we cannot take a fast path... 2025-02-18 03:11:52 -05:00
tildearrow e1b7618348 Virtual Boy: make it work on hardware
issue #2373
2025-02-18 02:30:14 -05:00
tildearrow 63ee7cf5d8 Virtual Boy: write waveforms before init channels 2025-02-18 00:36:20 -05:00
tildearrow 91ca79587b SNES: oh I can't believe I did not commit this yet 2025-02-15 22:21:39 -05:00
ExecThTs 63c98baf8e fix playback head when partially previewing a sample 2025-02-11 04:59:48 -05:00
tildearrow d073d17318 Low Quality tildearrow Code: Part III 2025-02-09 04:10:16 -05:00
tildearrow 845c5245c3 Time Is Fixed 2025-02-07 04:20:18 -05:00
tildearrow f09fd02971 MultiPCM: only set new params on ins change
fixes an issue regarding level direct effect
2025-02-07 04:15:20 -05:00
tildearrow cb616ae594 MultiPCM: I present to you a fix 2025-02-07 04:05:53 -05:00
tildearrow 9dee51851f prepare for proper center rate
the correct rate is 8372Hz rather than 8363Hz
sadly this will require a compat flag so I am not making this change
effective until 0.7

issue #2347
2025-02-06 02:14:21 -05:00
tildearrow 659a16a489 C64: PCM chan osc, part 2
issue #2349
2025-02-05 04:10:16 -05:00
tildearrow dbe30c0d43 C64: PCM chan osc, part 1
it leaks into other channels
2025-02-05 04:01:22 -05:00
tildearrow 8c59d4bf8b remove two unused defines 2025-02-01 21:27:28 -05:00
tildearrow b64c06dd4d GUI: add more options for selection drag
ability to copy by dragging selection
2025-01-31 17:29:51 -05:00
tildearrow e22d46e619 C64: implement 6581 bias on dSID
for PCM
2025-01-31 14:59:38 -05:00
tildearrow 1ceffc659c I will do this later 2025-01-30 16:24:33 -05:00
tildearrow b17b0e3f40 fix build... 2025-01-30 15:27:55 -05:00
tildearrow 6e63669501 add a bunch more TODOs 2025-01-29 04:38:12 -05:00
tildearrow 1e891e5e5f aaaaaaaaaaa 2025-01-29 04:12:01 -05:00