From 5b90cb7a03dc09aab54dbb5af2e243f677b98c22 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Mon, 24 Jul 2023 23:56:53 +0300 Subject: [PATCH] [MIC] Stub SetIIRFilter (Fixes Hatsune Miku) --- include/services/mic.hpp | 1 + src/core/services/mic.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/services/mic.hpp b/include/services/mic.hpp index b8b4d5c9..568d498c 100644 --- a/include/services/mic.hpp +++ b/include/services/mic.hpp @@ -15,6 +15,7 @@ class MICService { void mapSharedMem(u32 messagePointer); void setClamp(u32 messagePointer); void setGain(u32 messagePointer); + void setIirFilter(u32 messagePointer); void setPower(u32 messagePointer); void startSampling(u32 messagePointer); void theCaptainToadFunction(u32 messagePointer); diff --git a/src/core/services/mic.cpp b/src/core/services/mic.cpp index 7f283ce8..0648ad53 100644 --- a/src/core/services/mic.cpp +++ b/src/core/services/mic.cpp @@ -8,8 +8,9 @@ namespace MICCommands { SetGain = 0x00080040, GetGain = 0x00090000, SetPower = 0x000A0040, + SetIirFilter = 0x000C0042, SetClamp = 0x000D0040, - CaptainToadFunction = 0x00100040 + CaptainToadFunction = 0x00100040, }; } @@ -26,6 +27,7 @@ void MICService::handleSyncRequest(u32 messagePointer) { case MICCommands::MapSharedMem: mapSharedMem(messagePointer); break; case MICCommands::SetClamp: setClamp(messagePointer); break; case MICCommands::SetGain: setGain(messagePointer); break; + case MICCommands::SetIirFilter: setIirFilter(messagePointer); break; case MICCommands::SetPower: setPower(messagePointer); break; case MICCommands::StartSampling: startSampling(messagePointer); break; case MICCommands::CaptainToadFunction: theCaptainToadFunction(messagePointer); break; @@ -90,6 +92,15 @@ void MICService::startSampling(u32 messagePointer) { mem.write32(messagePointer + 4, Result::Success); } +void MICService::setIirFilter(u32 messagePointer) { + const u32 size = mem.read32(messagePointer + 4); + const u32 pointer = mem.read32(messagePointer + 12); + log("MIC::SetIirFilter (size = %X, pointer = %08X) (Stubbed)\n", size, pointer); + + mem.write32(messagePointer, IPC::responseHeader(0x0C, 1, 2)); + mem.write32(messagePointer + 4, Result::Success); +} + // Found in Captain Toad: Treasure Tracker // This is what 3DBrew says: // When the input value is 0, value 1 is written to an u8 MIC module state field.