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
This commit is contained in:
XTra.KrazzY 2008-11-20 22:39:07 +00:00
parent 601f65f071
commit f5a92e2e9e
1 changed files with 13 additions and 3 deletions

View File

@ -76,6 +76,7 @@ void GetStringVA(std::string& _rOutBuffer)
_rOutBuffer = ""; _rOutBuffer = "";
char ArgumentBuffer[256]; char ArgumentBuffer[256];
u32 ParameterCounter = 4; u32 ParameterCounter = 4;
u32 FloatingParameterCounter = 1;
char* pString = (char*)Memory::GetPointer(GPR(3)); char* pString = (char*)Memory::GetPointer(GPR(3));
if (!pString) { if (!pString) {
//PanicAlert("Invalid GetStringVA call"); //PanicAlert("Invalid GetStringVA call");
@ -110,15 +111,24 @@ void GetStringVA(std::string& _rOutBuffer)
_rOutBuffer += StringFromFormat(ArgumentBuffer, (char*)Memory::GetPointer(Parameter)); _rOutBuffer += StringFromFormat(ArgumentBuffer, (char*)Memory::GetPointer(Parameter));
break; break;
#if 0
case 'd': case 'd':
case 'i':
{ {
//u64 Double = Memory::Read_U64(Parameter); //u64 Double = Memory::Read_U64(Parameter);
_rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter); _rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter);
} }
break; break;
#endif
//TODO: fix floating-point (%f) case 'f':
{
_rOutBuffer += StringFromFormat(ArgumentBuffer,
rPS0(FloatingParameterCounter));
FloatingParameterCounter++;
ParameterCounter--;
}
break;
default: default:
_rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter); _rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter);
break; break;