[DSP] Stubbing events (vol 1)

This commit is contained in:
wheremyfoodat 2023-04-24 23:42:49 +03:00
parent 0eeff3535f
commit 7f32c3860c
4 changed files with 15 additions and 0 deletions

View file

@ -191,4 +191,5 @@ public:
} }
void sendGPUInterrupt(GPUInterrupt type) { serviceManager.requestGPUInterrupt(type); } void sendGPUInterrupt(GPUInterrupt type) { serviceManager.requestGPUInterrupt(type); }
void signalDSPEvents() { serviceManager.signalDSPEvents(); }
}; };

View file

@ -93,4 +93,6 @@ public:
Stereo = 1, Stereo = 1,
Surround = 2 Surround = 2
}; };
void signalEvents();
}; };

View file

@ -80,4 +80,6 @@ public:
void requestGPUInterrupt(GPUInterrupt type) { gsp_gpu.requestInterrupt(type); } void requestGPUInterrupt(GPUInterrupt type) { gsp_gpu.requestInterrupt(type); }
void setGSPSharedMem(u8* ptr) { gsp_gpu.setSharedMem(ptr); } void setGSPSharedMem(u8* ptr) { gsp_gpu.setSharedMem(ptr); }
void setHIDSharedMem(u8* ptr) { hid.setSharedMem(ptr); } void setHIDSharedMem(u8* ptr) { hid.setSharedMem(ptr); }
void signalDSPEvents() { dsp.signalEvents(); }
}; };

View file

@ -215,4 +215,14 @@ void DSPService::invalidateDCache(u32 messagePointer) {
log("DSP::InvalidateDataCache (addr = %08X, size = %08X, process = %X)\n", address, size, process); log("DSP::InvalidateDataCache (addr = %08X, size = %08X, process = %X)\n", address, size, process);
mem.write32(messagePointer, IPC::responseHeader(0x14, 1, 0)); mem.write32(messagePointer, IPC::responseHeader(0x14, 1, 0));
mem.write32(messagePointer + 4, Result::Success); mem.write32(messagePointer + 4, Result::Success);
}
void DSPService::signalEvents() {
for (const DSPEvent& e : pipeEvents) {
if (e.has_value()) { kernel.signalEvent(e.value()); }
}
if (semaphoreEvent.has_value()) { kernel.signalEvent(semaphoreEvent.value()); }
if (interrupt0.has_value()) { kernel.signalEvent(interrupt0.value()); }
if (interrupt1.has_value()) { kernel.signalEvent(interrupt1.value()); }
} }