Lior Halphon
7de6194e28
Redo channel 4's timing accurately, emulate NR43 write quirks
2020-12-12 16:02:25 +02:00
Lior Halphon
1baa0446a9
More sweep improvements
2020-12-01 22:37:13 +02:00
Lior Halphon
13bc8679f9
Correct preservation of NRx1's state on pre-CGB models
2020-12-01 14:18:19 +02:00
Lior Halphon
74cf452a48
Further accuracy improvements to sweep; passes Blargg's APU tests again, this time for real
2020-12-01 14:17:35 +02:00
Lior Halphon
0485124076
Redo channel 1 sweep based on DMG schematics; emulates two newly discovered behaviors and also fixes #309
2020-11-28 19:31:25 +02:00
Lior Halphon
cd2310f0a7
Wave RAM reads 0xFF while active on AGBs
2020-11-20 19:39:54 +02:00
Lior Halphon
3cba3e8e27
Emulate CGB-C PCM read glitch, fix a potential noise volume envelope bug
2020-05-10 00:37:52 +03:00
Lior Halphon
6448a692e2
Add smart rumble to games without a rumblepak
2020-04-29 16:06:11 +03:00
Lior Halphon
0cf168f32b
Fixing inconsistent style
2020-04-24 20:37:57 +03:00
Lior Halphon
a6567d9ee1
Update old coding style
2020-04-09 14:32:52 +03:00
Jakub Kądziołka
67d5a53503
Spell "length" properly
2020-02-27 18:11:10 +01:00
Lior Halphon
b806ae4e82
Fix #228
2020-02-01 23:36:16 +02:00
Lior Halphon
143e1f88a8
There’s not reason it must be an integer
2019-11-03 22:02:33 +02:00
Lior Halphon
dee29c118c
Added GB_set_sample_rate_by_clocks API, split SGB_NO_SFC into PAL and NTSC; now they report the correct clock rate.
2019-10-08 15:10:24 +03:00
Lior Halphon
ca370eee7e
A bit more accurate AGB audio rendering
2019-10-01 18:50:59 +03:00
Lior Halphon
ac418b9de1
Pass channel_1_freq_change_timing
2019-09-30 00:09:25 +03:00
Lior Halphon
4541efe86a
Fixed a bug that prevented writing to the wave RAM, as well as a bug where the wave RAM was treated as zeros despite not being zero’d out
2019-06-29 14:03:42 +03:00
Lior Halphon
e268efefef
Redesign and reimplement the audio API, let the frontends handle more stuff. Probably affects #161
2019-06-15 23:22:27 +03:00
Lior Halphon
9d8adbb581
This is not correct, this bug only affects the PCM registers and not actual output. Currently not emulated at all.
2019-06-07 18:37:19 +03:00
Lior Halphon
64879f5b02
Accurate emulation of (most aspects of) stop mode
2019-06-07 13:53:50 +03:00
Lior Halphon
4c34e0a6e0
Turns out the AGB inverts Channel 3’s output
2019-06-01 18:22:58 +03:00
Lior Halphon
85c43fa81f
Fixed Channel 3’s first sample behavior, update analog characteristic to more realistic values. Fixes #177
2019-05-25 19:12:09 +03:00
Lior Halphon
280467ad38
Merge branch 'master' into master
2019-05-17 20:31:52 +03:00
Lior Halphon
91eeb4d9d5
Emulate AGB audio mixing
2019-05-17 00:08:34 +03:00
ISSOtm
40f83c8f25
Add APU-related debugger commands
...
This change includes making one of the APU functions public
2019-05-15 12:45:51 +02:00
Lior Halphon
ddc4e7484b
Fix and restore optimization
2019-05-10 22:29:30 +03:00
Lior Halphon
06670fc970
Fix #172 . Allow unroll optimizations when compiling with GCC.
2019-05-10 21:51:11 +03:00
orbea
2bded45397
Disable pragmas for gcc.
2019-05-09 10:55:31 -07:00
Lior Halphon
dde06e7cae
Work around a crashing race condition, proper fix needed
2019-01-28 20:56:37 +02:00
Lior Halphon
7b36ee10a4
Merge branch 'master' into sgb
2019-01-05 19:00:22 +02:00
Lior Halphon
4051f190a5
Cache cycles_per_sample to avoid FP arithmetic
2019-01-01 00:42:40 +02:00
Lior Halphon
9d947c7ce6
Unroll some APU loops
2018-12-31 23:09:56 +02:00
Lior Halphon
2d6d1e6325
SGB boot animation
2018-11-24 13:21:00 +02:00
Lior Halphon
a39b314378
Fixed silly APU regression (Noise volume envelope ran too fast) Fixes #121
2018-11-03 14:37:19 +02:00
Lior Halphon
64922fff4b
Fixed a bug where channels 1 and 2 would start playing earlier than they should have if NRx4 was written to twice. Fixes #86 .
2018-10-29 00:44:43 +02:00
Lior Halphon
3035f43428
Emulation of DAC charging, Fixes #46 , #85 , #88 and #89
2018-10-19 23:53:01 +03:00
Lior Halphon
4276549acd
Research notes TODOs
2018-10-19 01:02:27 +03:00
Lior Halphon
324201f336
Correct emulation of switching the DACs on and off. Fixes #100 and #87
2018-10-17 20:35:29 +03:00
Lior Halphon
ec0a879a93
Correct emulation of enabling and disabling the volume envelope. Correct emulation of a glitch where the volume envelope ticks when it usually wouldn’t.
2018-09-10 16:59:59 +03:00
Lior Halphon
3151821e6d
Fixed minor APU regression (Channels 1 and 2 were given no delay under certain circumstances)
2018-09-09 12:50:55 +03:00
Lior Halphon
b1cc55b786
Turns out Left/Right audio channels were flipped
2018-07-19 20:38:11 +03:00
Lior Halphon
c66b6fbafc
Fixed an edge case with DAC discharge emulation
2018-07-16 23:08:25 +03:00
Lior Halphon
2e9e3424ec
Document some revision differences
2018-07-14 21:52:54 +03:00
Lior Halphon
0145b790a3
Merge branch 'v0.11.x'
2018-07-11 20:08:33 +03:00
Lior Halphon
5f58323c01
Attempt to improve audio quality on frontend with big audio buffers
2018-07-10 21:33:03 +03:00
Lior Halphon
dc5cb71c22
Emulate CGB-C’s quirky LFSR function
2018-07-04 21:55:12 +03:00
Lior Halphon
45c73e0175
Replaced the is_cgb bool with a more future compatible model enum. Removed the GB_init_cgb API and replaced it with an extended GB_init and GB_switch_model_and_reset APIs that now receive a model parameter. Increased the struct version.
2018-06-16 13:59:33 +03:00
Lior Halphon
38c0cb3323
Typo
2018-06-09 15:12:42 +03:00
Lior Halphon
f64da1864f
APU glitch: When turning the APU on while DIV's bit 4 (or 5 in double speed mode), the first DIV/APU event is skipped.
2018-06-09 15:11:20 +03:00
Lior Halphon
562b43a7c5
Notes about the DMG wave-ram glitch
2018-05-15 23:02:07 +03:00
Kyle Swanson
7bfe5de9c7
chmod -x
2018-03-28 21:37:34 -07:00
Lior Halphon
0912a30bb9
Fixed a regression in dmg_sound-2
2018-03-27 21:04:55 +03:00
Lior Halphon
c48097a484
Convert div counter to the SM mechanism
2018-02-23 13:16:05 +02:00
Lior Halphon
9802ca41dd
Components not affected by CGB’s double speed mode now operate in 8MHz mode to theoretically make advance_cycles(gb, 1) safe.
2018-02-20 21:17:12 +02:00
Lior Halphon
f79af39ea2
More accurate emulation of the APU’s analog characteristics
2018-02-16 18:01:50 +02:00
Lior Halphon
fc35111ae7
Corrected the emulated DAC’s range
2018-02-16 01:26:37 +02:00
Lior Halphon
0c231db9e7
This is probably not correct (and makes no sense from an hardware design perspective), but this correctly emulates my analog test cases and fixes the pops introduced by the last commit.
2018-02-13 23:13:15 +02:00
Lior Halphon
bfb37884e1
Inactive channels are not equivalent to channels with 0 volume.
2018-02-11 22:50:15 +02:00
Lior Halphon
afcc66fb3c
Added CPU under/over-clocking support in Core, add under-clocking hotkey in the Cocoa port, allow modifier keys to be configured as input keys in Cocoa.
2018-02-10 23:30:30 +02:00
Lior Halphon
09dd47c6de
Fixed unintentional delay in NR50 and NR51’s effects
2018-01-19 19:56:39 +02:00
Lior Halphon
37906bcd1f
Fixed sound pops in Super Mario Land 2.
2018-01-19 00:47:46 +02:00
Lior Halphon
0a76881eb6
Correctly emulating NRx4 effects on the sound envelop of the previously playing sound. Closes #19
2018-01-06 12:37:45 +02:00
Lior Halphon
a20e8a8220
Fixed bug in NR42 write that also caused memory corruption
2018-01-06 12:17:06 +02:00
Lior Halphon
a1af4c59ca
Fixed NR51 volume levels (They’re 1-8, not 0-7)
2018-01-06 11:58:49 +02:00
Lior Halphon
61f9dbd95d
Use SDL’s key mapping when available
2017-12-28 20:22:54 +02:00
Lior Halphon
c1f27d7b27
Spacing
2017-10-02 22:59:03 +03:00
Lior Halphon
d9b0576351
Emulation of NRX2-write glitches. Fixes Prehistorik Man audio.
2017-10-02 22:56:24 +03:00
Lior Halphon
67f1566b5e
Minor refinement to sweep
2017-09-23 00:23:02 +03:00
Lior Halphon
e0a6edac35
Setting sweep period to 0 cancels pending calculate event
2017-09-22 14:53:24 +03:00
Lior Halphon
2ffce49e16
Minor bugfixes related to sweeping
2017-09-22 14:39:39 +03:00
Lior Halphon
75db33559a
Current sample index (Channel 1 and 2) is only reset after turning the APU off
2017-09-22 02:25:06 +03:00
Lior Halphon
8f4cd5c412
Corrected behavior for channel 1 and 2 restart
2017-09-22 02:04:29 +03:00
Lior Halphon
882b141478
Fixed dmg_sound-1
2017-09-21 18:32:21 +03:00
Lior Halphon
2ca550273a
Fixed dmg_sound-5
2017-09-21 18:18:10 +03:00
Lior Halphon
d3c15ef6ca
Fixing APU bugs, one at a time: Blargg’s dmg_sound 8.2
2017-09-21 14:52:09 +03:00
Lior Halphon
62878fdc7a
More accurate div-event handling
2017-08-15 22:27:15 +03:00
Lior Halphon
8d011ca4b9
Accuracy improvements (Sweep)
2017-08-15 22:05:20 +03:00
Lior Halphon
d04aaddcbd
Added highpass filter
2017-08-15 21:59:11 +03:00
Lior Halphon
ca59aca4a6
Fixed a bug where writing to NR52 affected channels 1 and 2’s duty pattern in DMG mode. Fixed NR43 being written to NR44 as well.
2017-08-13 20:26:35 +03:00
Lior Halphon
36943866e2
Better click prevention
2017-08-12 23:35:18 +03:00
Lior Halphon
dba7370d6d
Turns out APU signal is inverted. This fixes Perfect Dark’s audio.
2017-08-12 20:47:55 +03:00
Lior Halphon
688991f57f
The volume envelopes and length controls are handled in different phases of the div-divider
2017-08-12 20:17:20 +03:00
Lior Halphon
4b8be255ce
Fixed some channel 4 delays, documented a not currently emulated timing quirk.
2017-08-12 19:50:39 +03:00
Lior Halphon
066efab985
In DMG mode, the length registers are not affected by turning the APU on and off. Why? Why not!
2017-08-11 22:23:03 +03:00
Lior Halphon
0e22ad8eb1
Noise channel support
2017-08-11 17:57:08 +03:00
Lior Halphon
1a8bcd314d
Accuracy improvements to sweeping (Still not complete though, more research needed)
2017-08-10 19:42:23 +03:00
Lior Halphon
ab5611119a
Accuracy improvements, especially to the length control
2017-08-02 21:14:23 +03:00
Lior Halphon
d65c2247e5
Added channel 1 and 2, fixed accuracy issues with channel 3
2017-07-27 23:11:33 +03:00
Lior Halphon
2936f7fa57
Fixed channel 3 counter behavior, verified with new tests. The DIV register ticks the APU at 512Hz.
2017-07-22 19:51:11 +03:00
Lior Halphon
a19ee1e5e0
2MHz audio downscaling support. Implemented NR50 and NR51.
2017-07-21 23:17:48 +03:00
Lior Halphon
baccf336d7
Complete rewrite of the APU. Channel 3 is complete and passes all the relevant tests from blargg’s suite, as well as PCM34-based tests. Actual sound output is basic and limited, though.
2017-07-21 19:06:55 +03:00
Lior Halphon
c59272d46d
Misc minor fixes, fixes several Mooneye-GB tests
2017-06-21 20:39:23 +03:00
Lior Halphon
6dd24e0733
Fixed hung note issue. Closes #7
2017-05-13 17:04:05 +03:00
Lior Halphon
00623d4eea
- Added audio supersampling support to greatly improve audio quality.
...
- Fixed a bug where low sampling rate or disabled sound resulted in wrong APU behavior.
- Added API to get the current number of pending samples.
- This change broke save state compatibility with v0.8 and older
Closes #8 .
2017-05-12 17:11:55 +03:00
Lior Halphon
a925ef130d
Stabilizing API: New joypad, debugger and reset APIs; internal APIs and direct struct access are no longer available without defining GB_INTERNAL. The SDL port uses the new “public” APIs, as well as most of the non-debug Cocoa code.
2017-04-17 20:16:17 +03:00
Lior Halphon
252439c1af
Fixed a deadlocking race condition that might happen when reading APU memory in the hex viewer
2016-09-21 01:59:43 +03:00
Lior Halphon
37e895352f
Volumes no longer doubles
2016-09-20 19:58:30 +03:00
Lior Halphon
4beb946468
Slight APU optimization
2016-09-14 22:49:35 +03:00
Lior Halphon
f274cbc2ec
Read wave form while playing
2016-09-13 17:40:10 +03:00
Lior Halphon
594aea2d5a
APU is now being run lazily
2016-09-13 17:33:48 +03:00