diff options
| author | Matthew Parlane <parlane@gmail.com> | 2012-02-27 23:18:43 +1300 |
|---|---|---|
| committer | unknown <Matthew@Matthew-PC.(none)> | 2012-02-28 19:17:02 +1300 |
| commit | 57e3fbed9157c35d6fbc332dcf246e5cd84c6242 (patch) | |
| tree | 168628187a201109692393d663b80e964354e70d /Source/Core | |
| parent | fea02b8dca18c0a1af0afb82e046383775d53cd5 (diff) | |
Debug vprintf!
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/Src/HLE/HLE.cpp | 2 | ||||
| -rw-r--r-- | Source/Core/Core/Src/HLE/HLE_OS.cpp | 18 | ||||
| -rw-r--r-- | Source/Core/Core/Src/HLE/HLE_OS.h | 1 |
3 files changed, 20 insertions, 1 deletions
diff --git a/Source/Core/Core/Src/HLE/HLE.cpp b/Source/Core/Core/Src/HLE/HLE.cpp index c74126dccc..474b24944c 100644 --- a/Source/Core/Core/Src/HLE/HLE.cpp +++ b/Source/Core/Core/Src/HLE/HLE.cpp @@ -61,7 +61,7 @@ static const SPatch OSPatches[] = { "DEBUGPrint", HLE_OS::HLE_GeneralDebugPrint }, { "WUD_DEBUGPrint", HLE_OS::HLE_GeneralDebugPrint }, { "OSPanic", HLE_OS::HLE_OSPanic }, - { "vprintf", HLE_OS::HLE_GeneralDebugPrint }, + { "vprintf", HLE_OS::HLE_VPrintf }, { "printf", HLE_OS::HLE_GeneralDebugPrint }, { "printf1", HLE_OS::HLE_GeneralDebugPrintWithInt }, { "printf2", HLE_OS::HLE_GeneralDebugPrint }, diff --git a/Source/Core/Core/Src/HLE/HLE_OS.cpp b/Source/Core/Core/Src/HLE/HLE_OS.cpp index bb8bb795c2..277453522f 100644 --- a/Source/Core/Core/Src/HLE/HLE_OS.cpp +++ b/Source/Core/Core/Src/HLE/HLE_OS.cpp @@ -56,6 +56,24 @@ void HLE_GeneralDebugPrint() NOTICE_LOG(OSREPORT, "%08x->%08x| %s", LR, PC, ReportMessage.c_str()); } +void HLE_VPrintf() +{ + std::string ReportMessage; + u32 r4 = GPR(4); + u32 offset = Memory::Read_U32(r4+8); + u32 check = Memory::Read_U32(r4); + //NOTICE_LOG(OSREPORT, "Offset: %08X, Check %08X", offset, check); + for(int i = 4; i<= 10; i++){ + GPR(i) = Memory::Read_U32(offset+(i-(check == 0x01000000? 3 : 2))*4); + //NOTICE_LOG(OSREPORT, "r%d: %08X",i, GPR(i)); + } + + GetStringVA(ReportMessage); + + NPC = LR; + + NOTICE_LOG(OSREPORT, "%08x->%08x| %s", LR, PC, ReportMessage.c_str()); +} // Generalized func for just printing string pointed to by r3. void HLE_GeneralDebugPrintWithInt() { diff --git a/Source/Core/Core/Src/HLE/HLE_OS.h b/Source/Core/Core/Src/HLE/HLE_OS.h index c91c9e121f..338abd2989 100644 --- a/Source/Core/Core/Src/HLE/HLE_OS.h +++ b/Source/Core/Core/Src/HLE/HLE_OS.h @@ -26,6 +26,7 @@ namespace HLE_OS void HLE_GeneralDebugPrintWithInt(); void HLE_write_console(); void HLE_OSPanic(); + void HLE_VPrintf(); } #endif |
