Merge pull request #22883 from Rularia/ice-test

MIPSAnalyst: Add Koori no Bohyou (NPJH50186/ULJS00247) picking pass readback (Follow-up to #22514 and #22610)
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2026-11-01 17:34:27 +01:00
commit 44f1f44be7
3 files changed
+21 -1

No files matched your search

+19
View File
@@ -1357,6 +1357,24 @@ static int Hook_infinity_download_frame(MIPSState *mips) {
return 0;
}
static int Hook_koori_download_frame(MIPSState *mips) {
u32 stateAddress;
// The matched CPU copy reads its source from this renderer state.
if (!GetMIPSStaticAddress(mips, stateAddress, 0x0C, 0x10) || !Memory::IsValidRange(stateAddress, 4)) {
return 0;
}
const u32 state = Memory::ReadUnchecked_U32(stateAddress);
if (!Memory::IsValidRange(state, 0x54)) {
return 0;
}
const u32 fb = (Memory::ReadUnchecked_U32(state + 0x24) + Memory::ReadUnchecked_U32(state + 0x50)) & 0x3FFFFFFF;
if (fb == 0x04000000 || fb == 0x04080000) {
gpu->PerformReadbackToMemory(fb, 0x00044000);
NotifyMemInfo(MemBlockFlags::WRITE, fb, 0x00044000, "koori_download_frame");
}
return 0;
}
static int Hook_takuyo_download_frame(MIPSState *mips) {
gpu->PerformReadbackToMemory(0x04088000, 0x00088000); // The offset is hardcoded.
NotifyMemInfo(MemBlockFlags::WRITE, 0x04088000, 0x00088000, "takuyo_download_frame");
@@ -2178,6 +2196,7 @@ static const ReplacementTableEntry entries[] = {
{ "persona2_download_frame", &Hook_persona_download_frame, 0, REPFLAG_HOOKENTER, 0 },
{ "steinsgate_download_frame", &Hook_steinsgate_download_frame, 0, REPFLAG_HOOKENTER, 0 },
{ "infinity_download_frame", &Hook_infinity_download_frame, 0, REPFLAG_HOOKENTER, 0 },
{ "koori_download_frame", &Hook_koori_download_frame, 0, REPFLAG_HOOKENTER, 0 },
{ "takuyo_1_download_frame", &Hook_takuyo_download_frame, 0, REPFLAG_HOOKENTER, 0},
{ "takuyo_2_download_frame", &Hook_takuyo_download_frame, 0, REPFLAG_HOOKENTER, 0},
{ "takuyo_3_download_frame", &Hook_takuyo_download_frame, 0, REPFLAG_HOOKENTER, 0},
+1
View File
@@ -423,6 +423,7 @@ static const HardHashTableEntry hardcodedHashes[] = {
{ 0xba76a8e853426baa, 544, "soranokiseki_fc_download_frame", }, // Sora no kiseki FC
{ 0xbb3c6592ed319ba4, 132, "sceGuFog", },
{ 0xbb7d7c93e4c08577, 124, "__truncdfsf2", },
{ 0xbd015888f2167ac9, 532, "koori_download_frame", }, // Koori no Bohyou (NPJH50186)
{ 0xbdf54d66079afb96, 200, "sceGuBoneMatrix", },
{ 0xbe773f78afd1a70f, 128, "rand", },
{ 0xbf5d02ccb8514881, 108, "strcmp", },
+1 -1
View File
@@ -2252,7 +2252,7 @@ NPJH50518 = true
ULJS00216 = true
ULJS00230 = true
ULJS00247 = true
NPJH50186 = true
# NPJH50186 uses koori_download_frame before the CPU copy instead.
[FixedFramebuffer]
# A framebuffer always kept at one size, as "address,width,height" (address in hex), and also read and