From 0ab15171344889d1d1160d3dcee137c3375c1149 Mon Sep 17 00:00:00 2001 From: CarlKenner Date: Thu, 22 Jan 2015 02:00:35 +1030 Subject: [PATCH] Skip zeroes that sometimes pad function to 16 byte boundary (eg. Donkey Kong Country Returns). This fixes function detection in the debugger, and prevents functions showing up as four bytes inside another function. --- Source/Core/Core/PowerPC/PPCAnalyst.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Core/Core/PowerPC/PPCAnalyst.cpp b/Source/Core/Core/PowerPC/PPCAnalyst.cpp index 5233df6c05..97b81f4118 100644 --- a/Source/Core/Core/PowerPC/PPCAnalyst.cpp +++ b/Source/Core/Core/PowerPC/PPCAnalyst.cpp @@ -313,6 +313,9 @@ static void FindFunctionsAfterBLR(PPCSymbolDB *func_db) { while (true) { + // skip zeroes that sometimes pad function to 16 byte boundary (eg. Donkey Kong Country Returns) + while (Memory::Read_Instruction(location) == 0 && ((location & 0xf) != 0)) + location += 4; if (PPCTables::IsValidInstruction(Memory::Read_Instruction(location))) { //check if this function is already mapped