[FS] Implement SaveData sort of.

This commit is contained in:
wheremyfoodat 2023-03-12 03:15:44 +02:00
parent d24a61d5a7
commit e69e95af69
7 changed files with 75 additions and 31 deletions

View file

@ -38,10 +38,16 @@ void FSService::reset() {
// Creates directories for NAND, ExtSaveData, etc if they don't already exist. Should be executed after loading a new ROM.
void FSService::initializeFilesystem() {
const auto nandPath = IOFile::getAppData() / "NAND"; // Create NAND
// TODO: Savedata, SDMC, etc
const auto savePath = IOFile::getAppData() / "SaveData"; // Create SaveData
namespace fs = std::filesystem;
// TODO: SDMC, etc
if (!std::filesystem::is_directory(nandPath)) {
std::filesystem::create_directories(nandPath);
if (!fs::is_directory(nandPath)) {
fs::create_directories(nandPath);
}
if (!fs::is_directory(savePath)) {
fs::create_directories(savePath);
}
}

View file

@ -284,15 +284,22 @@ void GPUService::memoryFill(u32* cmd) {
}
void GPUService::triggerDisplayTransfer(u32* cmd) {
const u32 inputAddr = cmd[1];
const u32 outputAddr = cmd[2];
const u32 inputSize = cmd[3];
const u32 outputSize = cmd[4];
const u32 flags = cmd[5];
log("GSP::GPU::TriggerDisplayTransfer (Stubbed)\n");
gpu.displayTransfer(inputAddr, outputAddr, inputSize, outputSize, flags);
requestInterrupt(GPUInterrupt::PPF); // Send "Display transfer finished" interrupt
}
void GPUService::triggerDMARequest(u32* cmd) {
u32 source = cmd[1];
u32 dest = cmd[2];
u32 size = cmd[3];
bool flush = cmd[7] == 1;
const u32 source = cmd[1];
const u32 dest = cmd[2];
const u32 size = cmd[3];
const bool flush = cmd[7] == 1;
log("GSP::GPU::TriggerDMARequest (source = %08X, dest = %08X, size = %08X)\n", source, dest, size);
gpu.fireDMA(dest, source, size);
@ -315,6 +322,8 @@ void GPUService::processCommandList(u32* cmd) {
requestInterrupt(GPUInterrupt::P3D); // Send an IRQ when command list processing is over
}
// TODO: Emulate the transfer engine & its registers
// Then this can be emulated by just writing the appropriate values there
void GPUService::triggerTextureCopy(u32* cmd) {
Helpers::warn("GSP::GPU::TriggerTextureCopy (unimplemented)\n");
// This uses the transfer engine and thus needs to fire a PPF interrupt.