Commit graph

236 commits

Author SHA1 Message Date
cam900 0c5a6d9760 Just resample rather than reset 2023-05-13 18:54:05 +09:00
tildearrow 25eb720631 Merge branch 'master' into ymf289b 2023-05-11 16:59:38 -05:00
tildearrow af64f9c141 Y8950: fix missing ADPCM chan osc 2023-04-16 02:10:22 -05:00
tildearrow 99d2199db6 dev152 - sample map notes, part 1 2023-04-07 16:54:05 -05:00
cam900 e694687fff Merge branch 'master' of https://github.com/tildearrow/furnace into ymf289b 2023-02-23 21:15:49 +09:00
tildearrow 47293decd3 OPL: fix missing ADPCM channel in per-chan osc 2023-01-28 18:10:25 -05:00
tildearrow 7bdda990e1 OPL: partially implement new hard reset
it's so late
2023-01-20 04:52:27 -05:00
tildearrow 45faadd4c8 update copyright year 2023-01-19 19:18:40 -05:00
tildearrow 9bbc1e2c82 OPLL/OPL: Seamless Legato Ins Change 2023-01-19 02:45:02 -05:00
tildearrow c1e26ee749 fix more possible crashes when deleting ins
and added a fatal error if implementation is missing
2023-01-19 00:37:37 -05:00
cam900 9ae12241a4 Fix downsampled rate accuracy 2023-01-16 10:25:59 +09:00
cam900 371c82338f Merge branch 'master' of https://github.com/tildearrow/furnace into ymf289b 2023-01-16 10:17:19 +09:00
tildearrow 6c5f9886fb OPL: fix t/hh per-chan osc not being visib in OPL3 2023-01-15 02:10:24 -05:00
cam900 3d345af1b8 Merge branch 'master' of https://github.com/tildearrow/furnace into ymf289b 2023-01-14 12:11:26 +09:00
tildearrow e560838025 OPL/OPLL: expand relative pitch range...
poor Z80
2023-01-13 00:15:37 -05:00
tildearrow 707bbb54ea add effects for rear panning 2023-01-05 03:08:57 -05:00
tildearrow abf2461573 OPL: increase range of pan macro 2023-01-04 19:16:37 -05:00
cam900 68964e384f Spacing 2023-01-05 08:51:44 +09:00
cam900 74e429fae2 Fix pitch 2023-01-05 08:51:25 +09:00
cam900 e5d81bd694 Prepare to YMF289B OPL3-L support 2023-01-05 08:40:44 +09:00
tildearrow fd9b1dd0f5 OPL: quad output
now that we have this new dispatch output method
2023-01-04 18:30:29 -05:00
tildearrow a29f36a5df new dispatch, part 1 2023-01-03 01:09:46 -05:00
tildearrow 3e0dcbb0ae aaaaaaaa 2023-01-02 04:53:37 -05:00
tildearrow 08d2f12dbd prepare new dispatch
will allow for more than 2 outputs
2023-01-01 19:46:08 -05:00
tildearrow 7fa5fecd38 possibly fix retrigger with sample map 2022-12-29 03:12:00 -05:00
tildearrow 2600d4c576 new arp strategy, part 2 2022-12-17 02:10:20 -05:00
tildearrow 6f22ade69a new arp strategy, part 1 2022-12-17 02:07:24 -05:00
tildearrow 3eb3d8a6f1 prepare for new arp strategy 2022-12-17 01:21:08 -05:00
tildearrow 9da46ee8ba implement macro masking 2022-12-17 00:09:56 -05:00
tildearrow c6604ff581 add ability to select custom clock rates 2022-12-04 02:04:42 -05:00
tildearrow cf38680072 chip sample selection, part 4
partially works
2022-11-26 23:50:20 -05:00
tildearrow 3a9349d49a chip sample selection, part 3 2022-11-26 22:11:49 -05:00
tildearrow 85cb64b227 chip sample selection, part 2
add functions to retrieve whether a sample was loaded in chip memory
eventually I'll put warning feedback on the sample list
2022-11-26 18:44:04 -05:00
cam900 90ed617cf6 Prepare for split volume scaling macro to 'log volume only' macro and 'log volume if compatibility flag set' macro 2022-10-28 22:36:50 +09:00
tildearrow 48db9a1d0c chip flags rewrite, part 4 - DO NOT USE
the next part is to drop systemFlagsOld completely
and then to fix the GUI
2022-09-29 20:13:40 -05:00
tildearrow a6e4345863 PLENTY OF TODO WHEN I COME BACK
CRASHES EVERYWHERE
2022-09-25 20:07:21 -05:00
tildearrow 67fc945992 Y8950 regression fix 2022-09-23 23:03:07 -05:00
tildearrow b9a4b568b6 i honestly don't agree with this compat flag 2022-09-23 13:28:57 -05:00
cam900 b05dafe297 Add compatible flag for Y8950 ADPCM Frequency 2022-09-24 00:24:30 +09:00
cam900 e00758d67c Merge branch 'master' of https://github.com/tildearrow/furnace into sample_macro 2022-09-22 23:02:01 +09:00
tildearrow b053d31a6d implement KVS on the rest of FM chips 2022-09-22 01:30:51 -05:00
tildearrow 32cdd81919 OPL: fix chan osc in 4-op mode 2022-09-22 00:01:23 -05:00
cam900 0f5a400b29 Merge branch 'master' of https://github.com/tildearrow/furnace into sample_macro 2022-09-18 00:11:53 +09:00
tildearrow 6b0aee8cf7 OPL: "fix" stereo in OPL1/2 2022-09-16 02:00:42 -05:00
cam900 54dbd0690c Merge branch 'master' of https://github.com/tildearrow/furnace into sample_macro
# Conflicts:
#	src/engine/fileOps.cpp
#	src/engine/platform/lynx.cpp
#	src/engine/platform/rf5c68.cpp
#	src/engine/platform/su.cpp
#	src/engine/platform/x1_010.h
#	src/engine/platform/ym2610.cpp
#	src/engine/platform/ym2610.h
#	src/engine/platform/ym2610b.cpp
#	src/engine/platform/ym2610b.h
#	src/engine/sysDef.cpp
#	src/gui/insEdit.cpp

Add effect command for ADPCM-A global volume, X1-010 Sample bank slot
2022-08-27 17:25:48 +09:00
cam900 4cc79fb49d Prepare for split sample chip instrument
(MSM6258, MSM6295, QSound, Sega PCM, ADPCM-A, ADPCM-B, YMZ280B, RF5C68)
Instrument color and icons are placeholder.

different volume range, hard panned/soft panned and/or independent volume per output, chip-dependent features (global volume, echo, etc)
Allow use sample in instrument tab for chip with sample support
Prepare to support X1-010 Seta 2 style bankswitch behavior
Prepare to support AY89x0 PCM DAC
Support volume for PCE sample (DAC)
Fix Lynx, Y8950 sample pitch matches to sample preview
Support PCM DAC with backward and pingpong loop mode
Reduce some codes
Add Sega PCM, AY89x0, QSound, PCM DAC, Lynx per-channel debug support
2022-08-27 16:27:36 +09:00
tildearrow c009cb3536 dev112 - prepare for advanced arp macro
this new advanced arp macro offers more flexibility and reduces code duplication
it allows you to set each step of the macro to either relative or fixed mode
(instead of just one mode for the entire macro)

the UI is still a work in progress and doesn't work well

this change is big and may break things! further fixes incoming
2022-08-22 15:59:45 -05:00
tildearrow f2950fa1d6 Revert "More preparing, Add OPL type docs"
This reverts commit 0b2f491997.

do not add a constructor to any of the DivPlatforms.
it will break things.
2022-08-20 23:35:13 -05:00
cam900 0b2f491997 More preparing, Add OPL type docs 2022-08-21 13:10:46 +09:00
cam900 2863f1662f Fix pitch 2022-08-21 12:57:53 +09:00
cam900 dfb663d876 Fix this for preparing OPL3-L and OPL4 2022-08-21 12:46:56 +09:00
Natt Akuma 7c42453422
Rewrite per-system effect handling (#548)
* Rewrite per-system effect handling

* fix build

* C64: fix fine cutoff regression

* fix some more crashes

Co-authored-by: tildearrow <tildearrow@protonmail.com>
2022-08-18 01:26:22 -05:00
tildearrow 9b6730607e OPL: finally fix the carnival night zone bug
TODO: RUN TEST SUITE!
2022-08-14 19:17:03 -05:00
tildearrow 829db187df Y8950: fix ADPCM per-chan osc I think 2022-08-07 06:24:48 -05:00
cam900 5127d5ef18
Implement sample loop end position, enum-ise sample depth (#557)
TODO: new sample format
2022-07-21 23:36:42 -05:00
tildearrow f4a85bebff dev101 - fix SMSFM_intro.dmf 2022-07-04 01:43:59 -05:00
Natt Akuma 59bcd9599f OPL: Missed changes from last commit 2022-07-01 17:55:33 +07:00
Natt Akuma 02b28e6e7d OPL: Correct CHIP_FREQBASE to match clock ratio
This changes from 9440540 to 9437184
2022-07-01 17:33:33 +07:00
tildearrow 0a055ff85b OPL: fix crash 2022-06-29 02:11:25 -05:00
tildearrow 90481cc460 OPL: fix drums mode per-channel osc 2022-06-29 01:06:31 -05:00
tildearrow 3ea0ad1e0a OPL: fix pitch macro
fixes #535
2022-06-28 23:32:36 -05:00
cam900 0c1a8bc001 Merge branch 'master' into preset1 2022-06-17 09:19:17 +09:00
tildearrow da756bef7f OPL: fix 4-op channel muting 2022-06-12 23:22:45 -05:00
cam900 3e953f57b3 Prepare for TI-99/4A support
only works on MAME core only for now.
2022-06-07 12:57:09 +09:00
cam900 35caab6f82 Merge branch 'master' into preset1 2022-06-06 19:09:12 +09:00
cam900 e0e6a45000 Prepare for reducing duplicates for 4op FM related codes, Add and correct bunch of presets, Add various clock, type options for chips
Prepare for reducing duplicates for 4op FM related codes

Add and correct bunch of presets
- mostly based on MAME source.
- Neo Geo AES uses slightly difference clock for NTSC, PAL colorbust frequency.
- Turbosound FM + SAA: Some Turbosound FM has additional SAA1099, for additional sound channel and Plays SAM coupe tune?
- PC-98:
 - Sound Orchestra: OPN with hardpanned stereo, some model has with OPL family FM addons.
   V variation has Y8950 and supports ADPCM.
 - Sound Blaster 16 for PC-9800: This famous PC sound card is also exists for PC-98, with optional OPN PC-9801-26(K) compatibility on some models.
- IBM PCjr: PC with SN PSG sound, but less popular than previous models, and compatible Tandy 1000.
- Tandy 1000: PCjr and previous IBM PC compatible, also has SN PSG (later embedded in their ASIC, like Sega).
- Hexion: One of konami's budget arcade hardware with SCC + MSM6295 sound system, like their amusement hardware in this era.
- DJ Boy, Atari JSA IIIs, Skimaxx: How to panning sound or plays stereo sound on MSM6295 - just use MSM6295s per each output!
- Air Buster: One of arcade hardware with OPN + MSM6295 sound system, Used this configuration is also some hardwares.
- Tecmo system: One of arcade hardware with pretty unique sound system: OPL3, YMZ280B, MSM6295; first 2 entry is mostly used in music, last entry is mostly used in sound effect.
- Sunsoft Shanghai 3: Predecessor of Sunsoft Arcade is using YM2149 rather than FM, MSM6295 is still there.
- Atari Klax: example of arcade hardware sound system with single MSM6295 only.
- Ikari warriors: This early SNK Triple-Z80 hardware uses 2 OPL1s and no ADPCM supports.
- Coreland Cyber Tank: This rare arcade machine's stereo sound is like SB Pro, but it's actually produced in 2 Y8950s.
- Data East MLC: Latest arcade hardware from Data East, with single YMZ280B for sound.
- Kaneko Jackie Chan: Predecessor of Super Kaneko Nova System hardware, also with YMZ280B.
- Super Kaneko Nova System: Latest arcade hardware from Kaneko, with single YMZ280B for sound. this announced 3D acceleration addon, but finally cancelled.
- Toaplan 1: Home of Late 80-Early 90s Good ol' stuffs, Example of arcade sound system with single OPL2
- Namco Pac-Land: and this era, Namco start to change Custom 15 WSG to their Custom 30 WSG with featured RAM based waveform, and mailbox feature.
- Namco System 1: One of latest usage of Custom 30 WSG, with OPM FM hardware and 8 bit DAC and Stereo output.

Add various clock, type options for chips
- SN7: Prepare to add 17 bit noise variation, Game gear stereo extentsion, NCR PSG variation (MAME core only for now)
- OPN, OPNA: Add placeholder for prescaler option
- OPL: Prepare for OPL3L, OPL4 downscaled output rate option
2022-06-06 19:04:52 +09:00
tildearrow 2932a7281d implement getChanMacroInt() on supported systems 2022-06-05 18:17:00 -05:00
tildearrow ad1ed7fe35 newVolumeScaling, part 3 2022-06-01 18:10:50 -05:00
tildearrow 9d10b5bf2b OPL: complete the drum instrument type
#310
2022-05-31 17:44:52 -05:00
Laurens Holst 4b4bc98417 Stop / reset Y8950 ADPCM before restarting.
The emulation core treats every write to register 7 with start bit set as
a retrigger. This is not how the real hardware behaves.
2022-05-26 03:48:49 +02:00
Laurens Holst fc7b94876d Fix Y8950 ADPCM samples.
Reverting back to before 70ead337f3, and setting register 8 to 256Kbit RAM mode.
This is what MSX has natively, and allows for the most compact sample storage with
only 4 byte alignment.

Additionally, setting register 8 before writing the start / stop addresses.

Back story:

VGMPlay MSX only supports Y8950 256K DRAM mode and ROM mode (for the latter
it makes sure address writes are shifted). 64K DRAM mode is not supported because
it’s not used by anything and the addresses are specified weirdly with some middle
bits having to be masked out.

The original code in Furnace before the change 70ead337f3 was almost correct except
it needed to set register 8 to 0 to select the 256K DRAM mode. It was set to ROM mode
so the address shift did not match up.

After 70ead337f3 (address shift change) it was also more or less correct except in
“furnacePCM” direct-sample mode the shift was not updated accordingly.

In 1a446c1cdd it selected 64K RAM mode, but for this the addresses need to be specified
differently (see Y8950 manual page 18), and it’s not really the best choice anyway.
2022-05-24 00:51:13 +02:00
tildearrow 133b213998 OPL: new forceIns strategy 2022-05-23 00:18:50 -05:00
tildearrow 519bf244b9 OPL: fix kick volume in drums mode 2022-05-23 00:07:32 -05:00
tildearrow 1a446c1cdd Y8950: let's see 2022-05-22 23:54:33 -05:00
tildearrow 82eaa45f5d increase range of relative pitch macro
-32768 to 32767 should be enough
2022-05-22 22:47:40 -05:00
tildearrow b40c95013a fix phase reset in FM chips after note off 2022-05-22 04:30:56 -05:00
tildearrow 70ead337f3 Y8950: fix ADPCM VGM export 2022-05-21 03:34:39 -05:00
tildearrow 58dc628a40 OPL: damn it 2022-05-19 23:06:11 -05:00
tildearrow 2c51234213 Y8950: ADPCM is quieter 2022-05-19 18:13:11 -05:00
tildearrow 34d0925569 OPL: fix fixed frequency drums 2022-05-16 21:06:49 -05:00
tildearrow 0a0ddfa661 partially bring up sample map 2022-05-13 23:04:40 -05:00
tildearrow 9936c66184 OPL: remove printf 2022-05-13 17:41:13 -05:00
tildearrow 1ffbfe17d4 Y8950/YMU759: ADPCM muting 2022-05-13 17:40:05 -05:00
tildearrow 315018ff24 YMU759: ADPCM 2022-05-13 17:22:00 -05:00
tildearrow 7218710268 add Y8950 system 2022-05-13 16:52:44 -05:00
tildearrow 4a563a416e prepare for Y8950/YMU759 ADPCM 2022-05-13 14:59:36 -05:00
tildearrow 1c6e9c2cca add a full linear pitch mode, part 7
fix full linear pitch on OPL, OPLL, SAA1099 and Sound Unit
2022-05-11 00:26:28 -05:00
tildearrow 8784fe5664 dev94 - add a full linear pitch mode, part 1 2022-05-10 03:51:18 -05:00
tildearrow 38b4d1d39e OPL: drum volume 2022-05-07 21:58:17 -05:00
tildearrow 6fe58a3965 OPL: implement hard reset
fixes #437
2022-05-07 21:48:29 -05:00
tildearrow b2953e00fe OPL: fix 4-op muting (I think)
fixes #435
2022-05-06 23:52:14 -05:00
tildearrow b75336bcb6 OPL: fix channel muting - PLEASE READ!
**SUBMODULES UPDATED** - Nuked-OPL3 is no longer a submodule as I
had to directly modify the core for this
if you mess up while removing Nuked-OPL3 from your repo, delete
everything and clone again

fixes #414
2022-05-04 18:06:32 -05:00
tildearrow 6e7b4d7e7f the final part of extra FM effects 2022-05-04 17:39:22 -05:00
tildearrow 897bf323f2 implement extra FM effects (OPLL and OPL) 2022-05-04 16:56:45 -05:00
tildearrow 978b0798e5 OPL: fix possible crash 2022-05-03 14:04:38 -05:00
tildearrow 6380876b9a OPL: fix panning 2022-05-02 00:41:58 -05:00
tildearrow e1fd16637c per-channel oscilloscope, part 4
OPM, OPN2, OPLL and SN
plus hide unimplemented channels
2022-04-30 22:59:26 -05:00
tildearrow 2e8634626d new panning effects (80/81/82) 2022-04-29 23:41:14 -05:00
tildearrow d211170e86 implement relative pitch macro mode 2022-04-28 01:31:16 -05:00
tildearrow 66f5b2117f dev90 - linear pitch macro option 2022-04-28 00:26:21 -05:00
tildearrow 3e1c2197eb OPL: fix #369 2022-04-25 18:04:13 -05:00
tildearrow 79fa8f1d02 better default instrument for OPL/OPLL
no longer silence
2022-04-21 02:24:06 -05:00
tildearrow fc8a130c71 implement panning macro
except for QSound
2022-04-17 14:15:57 -05:00
tildearrow b4ac5c7e6a implement pitch macro 2022-04-16 01:39:40 -05:00
tildearrow fd3d57b1cb even more improvements to low-latency mode 2022-04-15 15:01:11 -05:00
tildearrow 96715ed88c add experimental low-latency mode
do not use (yet)!
2022-04-15 05:37:23 -05:00
tildearrow d47a59f5f0 implement pitch macro
TODO: test!
2022-04-15 03:37:16 -05:00
tildearrow c743a9e96a implement phase reset macro on supported systems 2022-04-15 03:16:14 -05:00
tildearrow 39784bc7c2 YMU759 samples at 48KHz 2022-04-11 01:58:41 -05:00
cam900 ae4f005d67 Merge remote-tracking branch 'upstream/master' into macro
# Conflicts:
#	src/engine/platform/c64.cpp
#	src/gui/insEdit.cpp
2022-04-10 14:47:10 +09:00
cam900 d3e5efe834 Prepare for macro refactoring 2022-04-10 14:01:55 +09:00
OPNA2608 4c19a973ef Fix for C4805: '|': unsafe mix of type 'unsigned char' and type 'bool' in operation 2022-04-09 10:54:06 +02:00
tildearrow 0c1e2ddcb0 OPL: fix OPL2 not having waveforms 2022-04-07 20:48:34 -05:00
tildearrow bfadb3b5cf OPL: oopsie. 20xx effect doesn't exist 2022-03-22 01:06:26 -05:00
tildearrow d6dfe2636a OPL: implement fixed frequency mode 2022-03-17 02:40:10 -05:00
tildearrow dce68749d6 GUI: work on the drum UI 2022-03-17 02:07:46 -05:00
tildearrow 5579ef2bc1 OPL: even more drums mode work 2022-03-17 01:50:42 -05:00
tildearrow e7f6290012 OPL: possibly implement drums mode
we need a good UI for it
2022-03-17 01:40:03 -05:00
tildearrow 966d133bf4 OPL: FM macros 2022-03-16 03:44:22 -05:00
tildearrow 9322e9467c GUI: prepare macro editor for OPL op macros 2022-03-16 02:01:44 -05:00
tildearrow 592cbb56aa OPL: implement effects 2022-03-16 01:53:46 -05:00
tildearrow 83e7d966b9 OPL: more 4-op mode fixes 2022-03-15 18:01:24 -05:00
tildearrow 4c5c4a647b OPL: some fixes 2022-03-15 15:28:45 -05:00
tildearrow a65df5cdab OPL: pretend to be YMU and enable SOME emulation? 2022-03-15 00:33:57 -05:00
tildearrow 714d189b57 OPL: more work and channel muting 2022-03-14 02:47:04 -05:00
tildearrow d2ad74206a fix 4-op mode for real 2022-03-14 02:39:10 -05:00
tildearrow 42df8255fc OPL: kind of fix 4-op mode 2022-03-14 02:30:25 -05:00
tildearrow 32581bb228 OPL: volume 2022-03-14 01:57:46 -05:00
tildearrow df5c1ae859 OPL: finally fix that order issue (kind of) 2022-03-14 01:54:31 -05:00
tildearrow 1bc8bc8746 OPL: proper frequency on OPL1/2 2022-03-07 23:23:18 -05:00
tildearrow bd00165ded OPL: it's coming together 2022-03-07 22:52:32 -05:00
tildearrow 36db137e8f OPL: absolute mess up
now it kinda works
2022-03-07 22:28:33 -05:00
tildearrow ec007b4443 OPL: more work - still not there yet 2022-03-07 18:19:25 -05:00
tildearrow 03d2f87804 OPL: some work - still does not work 2022-03-07 17:07:29 -05:00
tildearrow 2f9d1e8c0f i'll finish this later 2022-03-06 18:10:12 -05:00
tildearrow c34b8325c9 more OPL preparation
DOES NOT WORK YET - JUST A PLACEHOLDER
2022-03-05 18:18:08 -05:00