From f5a92e2e9eca7338cf905ebd9f1a23e88cd8b15b Mon Sep 17 00:00:00 2001 From: "XTra.KrazzY" Date: Thu, 20 Nov 2008 22:39:07 +0000 Subject: [PATCH] Floating point printf parsing by jeffjohnson0. Solves issue 302. Thanks jeffjohnson0. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1231 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Core/Src/HLE/HLE_OS.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/Src/HLE/HLE_OS.cpp b/Source/Core/Core/Src/HLE/HLE_OS.cpp index ba7c1bf7bc..c309e7c30d 100644 --- a/Source/Core/Core/Src/HLE/HLE_OS.cpp +++ b/Source/Core/Core/Src/HLE/HLE_OS.cpp @@ -76,6 +76,7 @@ void GetStringVA(std::string& _rOutBuffer) _rOutBuffer = ""; char ArgumentBuffer[256]; u32 ParameterCounter = 4; + u32 FloatingParameterCounter = 1; char* pString = (char*)Memory::GetPointer(GPR(3)); if (!pString) { //PanicAlert("Invalid GetStringVA call"); @@ -110,15 +111,24 @@ void GetStringVA(std::string& _rOutBuffer) _rOutBuffer += StringFromFormat(ArgumentBuffer, (char*)Memory::GetPointer(Parameter)); break; -#if 0 case 'd': + case 'i': { //u64 Double = Memory::Read_U64(Parameter); _rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter); } break; -#endif - //TODO: fix floating-point (%f) + + case 'f': + { + _rOutBuffer += StringFromFormat(ArgumentBuffer, + rPS0(FloatingParameterCounter)); + FloatingParameterCounter++; + ParameterCounter--; + } + break; + + default: _rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter); break;