Use unknown's measured stack clearing amounts in sceLibFont

This commit is contained in:
Henrik Rydgard 2015-03-05 10:36:03 +01:00
parent fd1dcb881f
commit 3e408047d3

View file

@ -1354,35 +1354,37 @@ static int sceFontGetShadowGlyphImage_Clip(u32 fontHandle, u32 charCode, u32 gly
return 0;
}
// sceLibFont is a user level library so it can touch the stack. Some games appear to rely a bit of stack
// being wiped - although in reality, it won't be wiped with just zeroes..
const HLEFunction sceLibFont[] = {
{0x67f17ed7, WrapU_UU<sceFontNewLib>, "sceFontNewLib", HLE_CLEAR_STACK_BYTES, 0x590},
{0x574b6fbc, WrapI_U<sceFontDoneLib>, "sceFontDoneLib"},
{0x48293280, WrapI_UFF<sceFontSetResolution>, "sceFontSetResolution"},
{0x27f6e642, WrapI_UU<sceFontGetNumFontList>, "sceFontGetNumFontList"},
{0xbc75d85b, WrapI_UUI<sceFontGetFontList>, "sceFontGetFontList"},
{0x099ef33c, WrapI_UUU<sceFontFindOptimumFont>, "sceFontFindOptimumFont"},
{0x681e61a7, WrapI_UUU<sceFontFindFont>, "sceFontFindFont"},
{0x2f67356a, WrapI_V<sceFontCalcMemorySize>, "sceFontCalcMemorySize"},
{0x5333322d, WrapI_UUU<sceFontGetFontInfoByIndexNumber>, "sceFontGetFontInfoByIndexNumber"},
{0xa834319d, WrapU_UUUU<sceFontOpen>, "sceFontOpen"},
{0x57fcb733, WrapU_UCUU<sceFontOpenUserFile>, "sceFontOpenUserFile"},
{0xbb8e7fe6, WrapU_UUUU<sceFontOpenUserMemory>, "sceFontOpenUserMemory", HLE_CLEAR_STACK_BYTES, 0x440},
{0x3aea8cb6, WrapI_U<sceFontClose>, "sceFontClose"},
{0x0da7535e, WrapI_UU<sceFontGetFontInfo>, "sceFontGetFontInfo"},
{0xdcc80c2f, WrapI_UUU<sceFontGetCharInfo>, "sceFontGetCharInfo", HLE_CLEAR_STACK_BYTES, 0x100},
{0xaa3de7b5, WrapI_UUU<sceFontGetShadowInfo>, "sceFontGetShadowInfo"},
{0x5c3e4a9e, WrapI_UUU<sceFontGetCharImageRect>, "sceFontGetCharImageRect"},
{0x48b06520, WrapI_UUU<sceFontGetShadowImageRect>, "sceFontGetShadowImageRect"},
{0x980f4895, WrapI_UUU<sceFontGetCharGlyphImage>, "sceFontGetCharGlyphImage", HLE_CLEAR_STACK_BYTES, 0x120},
{0xca1e6945, WrapI_UUUIIII<sceFontGetCharGlyphImage_Clip>, "sceFontGetCharGlyphImage_Clip"},
{0x74b21701, WrapF_IFU<sceFontPixelToPointH>, "sceFontPixelToPointH"},
{0xf8f0752e, WrapF_IFU<sceFontPixelToPointV>, "sceFontPixelToPointV"},
{0x472694cd, WrapF_IFU<sceFontPointToPixelH>, "sceFontPointToPixelH"},
{0x3c4b7e82, WrapF_IFU<sceFontPointToPixelV>, "sceFontPointToPixelV"},
{0xee232411, WrapI_UU<sceFontSetAltCharacterCode>, "sceFontSetAltCharacterCode"},
{0x568be516, WrapI_UUU<sceFontGetShadowGlyphImage>, "sceFontGetShadowGlyphImage"},
{0x5dcf6858, WrapI_UUUIIII<sceFontGetShadowGlyphImage_Clip>, "sceFontGetShadowGlyphImage_Clip"},
{0x02d7f94b, WrapI_U<sceFontFlush>, "sceFontFlush"},
{ 0x67f17ed7, WrapU_UU<sceFontNewLib>, "sceFontNewLib", HLE_CLEAR_STACK_BYTES, 0x5A0 },
{ 0x574b6fbc, WrapI_U<sceFontDoneLib>, "sceFontDoneLib", HLE_CLEAR_STACK_BYTES, 0x2C },
{ 0x48293280, WrapI_UFF<sceFontSetResolution>, "sceFontSetResolution" },
{ 0x27f6e642, WrapI_UU<sceFontGetNumFontList>, "sceFontGetNumFontList" },
{ 0xbc75d85b, WrapI_UUI<sceFontGetFontList>, "sceFontGetFontList", HLE_CLEAR_STACK_BYTES, 0x31C },
{ 0x099ef33c, WrapI_UUU<sceFontFindOptimumFont>, "sceFontFindOptimumFont", HLE_CLEAR_STACK_BYTES, 0xF0 },
{ 0x681e61a7, WrapI_UUU<sceFontFindFont>, "sceFontFindFont", HLE_CLEAR_STACK_BYTES, 0x40 },
{ 0x2f67356a, WrapI_V<sceFontCalcMemorySize>, "sceFontCalcMemorySize" },
{ 0x5333322d, WrapI_UUU<sceFontGetFontInfoByIndexNumber>, "sceFontGetFontInfoByIndexNumber", HLE_CLEAR_STACK_BYTES, 0x20 },
{ 0xa834319d, WrapU_UUUU<sceFontOpen>, "sceFontOpen", HLE_CLEAR_STACK_BYTES, 0x460 },
{ 0x57fcb733, WrapU_UCUU<sceFontOpenUserFile>, "sceFontOpenUserFile" },
{ 0xbb8e7fe6, WrapU_UUUU<sceFontOpenUserMemory>, "sceFontOpenUserMemory"/*, HLE_CLEAR_STACK_BYTES, 0x440 from JPCSP*/ },
{ 0x3aea8cb6, WrapI_U<sceFontClose>, "sceFontClose", HLE_CLEAR_STACK_BYTES, 0x54 },
{ 0x0da7535e, WrapI_UU<sceFontGetFontInfo>, "sceFontGetFontInfo" },
{ 0xdcc80c2f, WrapI_UUU<sceFontGetCharInfo>, "sceFontGetCharInfo", HLE_CLEAR_STACK_BYTES, 0x110 },
{ 0xaa3de7b5, WrapI_UUU<sceFontGetShadowInfo>, "sceFontGetShadowInfo", HLE_CLEAR_STACK_BYTES, 0x150 },
{ 0x5c3e4a9e, WrapI_UUU<sceFontGetCharImageRect>, "sceFontGetCharImageRect", HLE_CLEAR_STACK_BYTES, 0x120 },
{ 0x48b06520, WrapI_UUU<sceFontGetShadowImageRect>, "sceFontGetShadowImageRect", HLE_CLEAR_STACK_BYTES, 0x150 },
{ 0x980f4895, WrapI_UUU<sceFontGetCharGlyphImage>, "sceFontGetCharGlyphImage", HLE_CLEAR_STACK_BYTES, 0x120 },
{ 0xca1e6945, WrapI_UUUIIII<sceFontGetCharGlyphImage_Clip>, "sceFontGetCharGlyphImage_Clip", HLE_CLEAR_STACK_BYTES, 0x130 },
{ 0x74b21701, WrapF_IFU<sceFontPixelToPointH>, "sceFontPixelToPointH", HLE_CLEAR_STACK_BYTES, 0x10 },
{ 0xf8f0752e, WrapF_IFU<sceFontPixelToPointV>, "sceFontPixelToPointV", HLE_CLEAR_STACK_BYTES, 0x10 },
{ 0x472694cd, WrapF_IFU<sceFontPointToPixelH>, "sceFontPointToPixelH" },
{ 0x3c4b7e82, WrapF_IFU<sceFontPointToPixelV>, "sceFontPointToPixelV" },
{ 0xee232411, WrapI_UU<sceFontSetAltCharacterCode>, "sceFontSetAltCharacterCode" },
{ 0x568be516, WrapI_UUU<sceFontGetShadowGlyphImage>, "sceFontGetShadowGlyphImage", HLE_CLEAR_STACK_BYTES, 0x160 },
{ 0x5dcf6858, WrapI_UUUIIII<sceFontGetShadowGlyphImage_Clip>, "sceFontGetShadowGlyphImage_Clip", HLE_CLEAR_STACK_BYTES, 0x170 },
{ 0x02d7f94b, WrapI_U<sceFontFlush>, "sceFontFlush" },
};
void Register_sceFont() {