mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-20 19:55:46 +00:00
DSP: Create backing memory for entire DSP RAM
Also move address space mapping out of video_core.
This commit is contained in:
parent
2af0a2a4b7
commit
03ad0ec0e5
5 changed files with 42 additions and 32 deletions
|
@ -16,31 +16,33 @@ namespace HLE {
|
|||
|
||||
// Region management
|
||||
|
||||
std::array<SharedMemory, 2> g_regions;
|
||||
DspMemory g_dsp_memory;
|
||||
|
||||
static size_t CurrentRegionIndex() {
|
||||
// The region with the higher frame counter is chosen unless there is wraparound.
|
||||
// This function only returns a 0 or 1.
|
||||
u16 frame_counter_0 = g_dsp_memory.region_0.frame_counter;
|
||||
u16 frame_counter_1 = g_dsp_memory.region_1.frame_counter;
|
||||
|
||||
if (g_regions[0].frame_counter == 0xFFFFu && g_regions[1].frame_counter != 0xFFFEu) {
|
||||
if (frame_counter_0 == 0xFFFFu && frame_counter_1 != 0xFFFEu) {
|
||||
// Wraparound has occurred.
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (g_regions[1].frame_counter == 0xFFFFu && g_regions[0].frame_counter != 0xFFFEu) {
|
||||
if (frame_counter_1 == 0xFFFFu && frame_counter_0 != 0xFFFEu) {
|
||||
// Wraparound has occurred.
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (g_regions[0].frame_counter > g_regions[1].frame_counter) ? 0 : 1;
|
||||
return (frame_counter_0 > frame_counter_1) ? 0 : 1;
|
||||
}
|
||||
|
||||
static SharedMemory& ReadRegion() {
|
||||
return g_regions[CurrentRegionIndex()];
|
||||
return CurrentRegionIndex() == 0 ? g_dsp_memory.region_0 : g_dsp_memory.region_1;
|
||||
}
|
||||
|
||||
static SharedMemory& WriteRegion() {
|
||||
return g_regions[1 - CurrentRegionIndex()];
|
||||
return CurrentRegionIndex() != 0 ? g_dsp_memory.region_0 : g_dsp_memory.region_1;
|
||||
}
|
||||
|
||||
// Audio processing and mixing
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue