diff --git a/Core/HLE/ReplaceTables.cpp b/Core/HLE/ReplaceTables.cpp index 71ab60e56b..b03d507397 100644 --- a/Core/HLE/ReplaceTables.cpp +++ b/Core/HLE/ReplaceTables.cpp @@ -634,6 +634,15 @@ static int Hook_kirameki_school_life_download_frame() { return 0; } +static int Hook_orenoimouto_download_frame() { + const u32 fb_address = currentMIPS->r[MIPS_REG_V1]; + if (Memory::IsVRAMAddress(fb_address)) { + gpu->PerformMemoryDownload(fb_address, 0x00044000); + CBreakPoints::ExecMemCheck(fb_address, true, 0x00044000, currentMIPS->pc); + } + return 0; +} + // Can either replace with C functions or functions emitted in Asm/ArmAsm. static const ReplacementTableEntry entries[] = { // TODO: I think some games can be helped quite a bit by implementing the @@ -685,6 +694,7 @@ static const ReplacementTableEntry entries[] = { { "sd_gundam_g_generation_download_frame", &Hook_sd_gundam_g_generation_download_frame, 0, REPFLAG_HOOKENTER, 0x48}, { "narisokonai_download_frame", &Hook_narisokonai_download_frame, 0, REPFLAG_HOOKENTER, 0x14 }, { "kirameki_school_life_download_frame", &Hook_kirameki_school_life_download_frame, 0, REPFLAG_HOOKENTER, 0x304 }, + { "orenoimouto_download_frame", &Hook_orenoimouto_download_frame, 0, REPFLAG_HOOKENTER, 0x88 }, {} }; diff --git a/Core/MIPS/MIPSAnalyst.cpp b/Core/MIPS/MIPSAnalyst.cpp index b2f468fccc..08438fbd3b 100644 --- a/Core/MIPS/MIPSAnalyst.cpp +++ b/Core/MIPS/MIPSAnalyst.cpp @@ -204,6 +204,7 @@ static const HardHashTableEntry hardcodedHashes[] = { { 0x54015ccbcbc75374, 24, "strlen", }, // Metal Gear Solid: Peace Walker demo { 0x5550d87a851c218c, 168, "dl_write_viewport", }, { 0x55c1294280bfade0, 88, "dl_write_blend_fixed", }, + { 0x5642a63f3802a792, 456, "orenoimouto_download_frame", }, // Ore no Imouto ga Konnani Kawaii Wake ga Nai { 0x56c9929e8c8c5768, 24, "fabsf", }, { 0x572b2d9e57e6e363, 788, "memcpy_thingy", }, { 0x580200b840b47c58, 1856, "_realloc_r", },