Commit graph

19 commits

Author SHA1 Message Date
Sour
929d4dcc20 GB: Fixed APU emulation issues
-Super Mario Land 2 - Pops in menu are fixed by immediately updating APU output after a write
-Perfect Dark - Low voice volume is fixed by having the correct output when the channels are disabled (but DAC is still enabled)
-Daiku no Gen - Low voice volume is fixed by keeping square channel output to digital 0 (= analog 1) until its first tick after being enabled (the game does not let the channel tick at all while the voice sample is playing)
2025-03-21 23:03:01 +09:00
Sour
cd7e277088 GB: Refactor apu envelope code to reduce duplicated code 2024-02-01 22:53:08 +09:00
Sour
e7ac876694 GB: APU - Improved zombie mode glitch behavior
Fixes channel_1_nrx2_glitch, channel_1_restart_nrx2_glitch and channel_1_volume (+ the ch2 equivalents)
2024-02-01 22:53:08 +09:00
Sour
7a83827f6f GB: APU - Improved square 1 sweep behavior
Passes channel_1_sweep test
2024-01-31 23:25:38 +09:00
Sour
dbae841079 GB: Implemented DAC fade in/out behavior
Fixes sound issues in 3D Pocket Pool, Ready 2 Rumble Boxing and Cannon Fodder
2024-01-28 20:47:08 +09:00
Sour
190fb48b5f GB: Fixed missing values in APU save state
Caused some audio issues when loading a state in some scenarios
2023-04-12 21:05:14 -04:00
Sour
ee287e9cad GB: Fixed/improved APU mixing/DAC logic
Fixes missing sound effects/voices in Warlocked and Alone in the Dark
2023-04-08 17:18:25 -04:00
Sour
7c51e23d25 GB: Fixed envelopes being clocked when period is 0
Based on Megaman 2 and Taiyou no Yuusha the envelopes shouldn't be ticking when period is set to 0 (otherwise the sound in these games breaks - especially the noise channel)
This seems to contradict old documentation that says a period of 0 is treated as a period of 8, but test roms don't seem to validate either behavior and this fixes the audio for both games.
2023-04-05 20:49:02 -04:00
Sour
0881814157 GB: Length counter hitting 0 on square channel should also update output
Fixes channel_1_stop_div, channel_2_stop_div
2023-03-10 22:37:11 -05:00
Sour
52220c8a1e GB: Wave channel output should update when writing to NR32
Fixes channel_3_shift_delay test
2023-03-10 21:06:14 -05:00
Sour
965a2088e0 GB: Stop clocking channels when disabled (fixes square_1_volume_div)
+ Align square/noise channels to 1mhz clock (which allows the channel_1_align, etc. tests to work even if the channels aren't clocked while disabled)
2023-03-10 01:04:51 -05:00
Sour
52f8a4a5f7 GB: Fixed typo/bug in square envelope clock code
Fixes channel_2_volume_div
2023-03-10 00:23:56 -05:00
Sour
b954db45b7 GB: APU improvements (passes div_* tests) 2023-03-09 22:10:20 -05:00
Sour
629dfca2fc GB: Apply similar tweaks to noise/wave channels
Passes more of SameSuite's tests
2023-03-08 21:56:27 -05:00
Sour
a13b07b49c GB: Square channel improvements
Fixes some of the SameSuite square tests (unsure if the code is correct or not)
2023-03-08 20:25:53 -05:00
Sour
35bcc56e7d GB: APU - Improved CGB behavior, fixes blargg's CGB tests 2023-02-27 23:08:15 -05:00
Sour
1fbcba999e GB: Improve square channel sweep behavior
Fixes based on alyosha's work on GBHawk
Passes "sweep details" test
2023-02-27 20:46:35 -05:00
Sour
6a0eef7e05 GB: Sweep - Improved behavior (e.g when shift value is set to 0, etc.)
Fixes "04-sweep" test
2023-01-28 11:44:28 -05:00
Sour
c90181c1a2 Refactoring - Moved some GB/PCE files into subfolders 2022-09-08 22:23:30 -04:00
Renamed from Core/Gameboy/GbSquareChannel.cpp (Browse further)