Commit graph

102 commits

Author SHA1 Message Date
Connor McLaughlin b7fbde31a7 Move utility classes from common to own static lib 2022-07-21 17:29:58 +10:00
Connor McLaughlin fd76f437b3 Core: Purge WITH_IMGUI define 2022-03-27 16:59:02 +10:00
Connor McLaughlin c346dfe8a4 SPU: Drop OOB register warnings to dev level 2021-11-26 11:31:59 +10:00
Connor McLaughlin 8769a55298 SPU: Add a couple more reverb registers to debug window 2021-09-01 15:05:05 +10:00
Connor McLaughlin 4fac032ff6 SPU: Add a macro to enable per-voice dumping 2021-08-07 13:21:53 +10:00
Connor McLaughlin c6c67b7b27 ImGui: Remove close button from debug windows
They can be closed by unchecking the setting instead, and it stays in
sync with the config this way.
2021-02-12 01:01:30 +10:00
Connor McLaughlin e01d66d18e System: Implement runahead 2021-01-25 01:15:46 +10:00
Connor McLaughlin 4e802e90ca SPU: Move voice key off/on outside sample loop
Should be a very tiny performance boost with no difference in behaviour.
2021-01-20 12:32:37 +10:00
Connor McLaughlin 3c012ec6ef SPU: Consider partial ticks when generating pending samples
Fixes hitches in opening FMV in Soul Blade (Europe).
2021-01-20 12:05:06 +10:00
Connor McLaughlin 914b9bf738 SPU: Drain transfer FIFO when cancelling transfer
The busy bit got stuck on otherwise, which broke the Spanish translation
of Vagrant Story.
2021-01-18 20:43:10 +10:00
Connor McLaughlin 11992bde4e TimingEvents: Use function pointers instead of std::function 2021-01-10 01:45:07 +10:00
Connor McLaughlin 15652b4c1f SPU: Fix a few cases where SPU interrupts weren't firing 2021-01-10 01:39:21 +10:00
Connor McLaughlin 73f6521452 SPU: Check voice addresses on IRQ re-enable
NASCAR 2001 music depends on the IRQ firing multiple times, when the
voice address is still set to the IRQ address.
2021-01-05 00:46:41 +10:00
Connor McLaughlin a90c25d0e7 SPU: Ignore manually set loop address only on first block
Fixes occasional missing dialogue in Valkyrie Profile.
2020-12-06 00:35:54 +10:00
Connor McLaughlin 917fa5dd0e SPU: Only ignore loop address for not-pending-on voices
Fixes softlocks during dialog in The Misadventures of Tron Bonne.
2020-11-25 22:45:03 +10:00
Connor McLaughlin 65be904d15 SPU: Only log warning about FIFO lost on writes 2020-11-14 23:20:28 +10:00
Connor McLaughlin 3f937a2a39 SPU: Port reverb algorithm changes from Mednafen 2020-11-14 23:20:28 +10:00
Connor McLaughlin 34a808c258 SPU: Zero previous block ADPCM samples on key on
Fixes clicking in background in Breath of Fire III.
2020-10-29 01:30:40 +10:00
Connor McLaughlin 1b618b8c46 SPU: Don't block ADPCM loop flag when setting/keying on in same slice
Fixes repeated sounds in Re-Loaded: The Hardcore Sequel.
2020-10-24 20:27:06 +10:00
Connor McLaughlin 98987643b3 SPU: Always reset address on loop end regardless of repeat
Fixes menu music in Madden NFL 99.
2020-10-24 19:42:23 +10:00
Connor McLaughlin 325f83065c SPU: Always inline SPU::ExecuteVoice 2020-10-18 14:54:38 +10:00
Connor McLaughlin 245edd94d7 SPU: Eliminiate conditional in interpolation 2020-10-18 14:54:38 +10:00
Connor McLaughlin 6a4a47fbdf SPU: Set block counter to zero on key on
Fixes clicking in Final Fantasy VIII intro FMV.
2020-10-08 00:41:50 +10:00
Connor McLaughlin 27697d0508 System: Implement CPU overclocking [SAVEVERSION+]
Partial credit to @CookiePLMonster as well.
2020-09-30 23:48:34 +10:00
Connor McLaughlin 13e3095801 Core: Don't link to imgui for libretro core 2020-09-01 12:22:32 +10:00
Connor McLaughlin 223074b78f SPU: Fix activating transfer event with a downcount of 0
Happened when loading states.
2020-08-09 04:29:43 +10:00
Connor McLaughlin b6f871d2b9
JIT optimizations and refactoring (#675)
* CPU/Recompiler: Use rel32 call where possible for no-args

* JitCodeBuffer: Support using preallocated buffer

* CPU/Recompiler/AArch64: Use bl instead of blr for short branches

* CPU/CodeCache: Allocate recompiler buffer in program space

This means we don't need 64-bit moves for every call out of the
recompiler.

* GTE: Don't store as u16 and load as u32

* CPU/Recompiler: Add methods to emit global load/stores

* GTE: Convert class to namespace

* CPU/Recompiler: Call GTE functions directly

* Settings: Turn into a global variable

* GPU: Replace local pointers with global

* InterruptController: Turn into a global pointer

* System: Replace local pointers with global

* Timers: Turn into a global instance

* DMA: Turn into a global instance

* SPU: Turn into a global instance

* CDROM: Turn into a global instance

* MDEC: Turn into a global instance

* Pad: Turn into a global instance

* SIO: Turn into a global instance

* CDROM: Move audio FIFO to the heap

* CPU/Recompiler: Drop ASMFunctions

No longer needed since we have code in the same 4GB window.

* CPUCodeCache: Turn class into namespace

* Bus: Local pointer -> global pointers

* CPU: Turn class into namespace

* Bus: Turn into namespace

* GTE: Store registers in CPU state struct

Allows relative addressing on ARM.

* CPU/Recompiler: Align code storage to page size

* CPU/Recompiler: Fix relative branches on A64

* HostInterface: Local references to global

* System: Turn into a namespace, move events out

* Add guard pages

* Android: Fix build
2020-07-31 17:09:18 +10:00
Connor McLaughlin f28ef01d24 CDROM: Move audio FIFO to CDROM class and skip sectors when unempty
Fixes cutscene audio in Nickelodeon Rugrats - Search for Reptar.
2020-07-22 00:05:52 +10:00
Connor McLaughlin a5fe740e30 Fix a bunch of compiler warnings 2020-07-09 13:30:16 +10:00
Connor McLaughlin 614ea632a5 SPU: Log warning when data is lost due to reg clear 2020-06-29 14:45:03 +10:00
Connor McLaughlin 531c3ad5fa AudioStream: Replace buffer queue with ring buffer
Should achieve a decent overall minimum latency reduction.
2020-06-07 01:22:03 +10:00
Connor McLaughlin 8eb3ac69b2 SPU: Update ADSR envelope when register changes
Fixes menu sounds in Final Fantasy 7 staying audible for too long.
2020-06-02 01:59:49 +10:00
Connor McLaughlin 1eecd50f3d SPU: Run SPU when changing regs on voice pending key-on
Fixes menu/cursor sounds with different frequencies in Final Fantasy 7.
2020-05-18 00:59:13 +10:00
Connor McLaughlin 03080351c8 SPU: Reset ADPCM decoder last samples on key on 2020-05-18 00:50:55 +10:00
Connor McLaughlin d461d7c87a SPU: Fix reverb write regression from e07d3c9d 2020-05-13 13:47:33 +10:00
Connor McLaughlin e07d3c9db2 SPU: Fix array bounds overflow in register reads 2020-05-13 12:37:13 +10:00
Connor McLaughlin 634880b5e3 SPU: Clamp before applying main volume not after
Fixes popping in Monkey Magic.
2020-05-12 02:15:18 +10:00
Connor McLaughlin 9959440a3a SPU: Align starting addresses to two words
Fixes interrupts firing early and occasional broken speech in Valkyrie
Profile.
2020-05-08 21:36:47 +10:00
Connor McLaughlin 226459b60f SPU: Add missing register read for ENDX 2020-04-30 01:12:17 +10:00
Connor McLaughlin a5ff904b33 SPU: Clear ENDX flag on key on 2020-04-28 20:30:16 +10:00
Connor McLaughlin be9033b6c0 SPU: Add missing clamp in ADPCM decoder 2020-04-28 17:55:43 +10:00
Connor McLaughlin b16ecd7a86 SPU: ENDX register should get set when looping as well as muting 2020-04-28 16:57:14 +10:00
Connor McLaughlin 8605620c24 SPU: Force all voices off when SPUCNT.15=0 2020-04-27 23:33:24 +10:00
Connor McLaughlin 191c3450cc SPU: Port reverb algorithm from Mednafen-PSX 2020-04-25 00:37:02 +10:00
Connor McLaughlin e34b78ab80 SPU: Fix pitch modulation 2020-04-24 15:50:35 +10:00
Connor McLaughlin 045c4d1745 SPU: Fix adsr_volume read for pending key-on voice
Fixes cutscene audio in Spyro 2, probably others.
2020-04-19 18:19:55 +10:00
Connor McLaughlin fc3efebb38 Revert "SPU: Use reverb formula from Mednafen-PSX"
This reverts commit 809b9f89ca.
2020-04-11 15:04:04 +10:00
Connor McLaughlin 809b9f89ca SPU: Use reverb formula from Mednafen-PSX 2020-04-11 00:40:28 +10:00
Connor McLaughlin 0006052728 SPU: Fix some registers not being saved to state 2020-04-08 20:33:39 +10:00
Connor McLaughlin 1d948a53e0 SPU: Reinitialize transfer event on loading state 2020-04-02 00:17:15 +10:00