sceFontCharacterGetTextOrder , sceFontCharacterLooksFormatCharacters , sceFontCharacterLooksWhiteSpace RE

This commit is contained in:
georgemoralis 2025-02-27 10:49:42 +02:00
parent c63b1a058c
commit 6470992007
2 changed files with 37 additions and 12 deletions

View File

@ -40,19 +40,39 @@ s32 PS4_SYSV_ABI sceFontCharacterGetTextFontCode() {
return ORBIS_OK; return ORBIS_OK;
} }
s32 PS4_SYSV_ABI sceFontCharacterGetTextOrder() { s32 PS4_SYSV_ABI sceFontCharacterGetTextOrder(OrbisFontTextCharacter* textCharacter,
LOG_ERROR(Lib_Font, "(STUBBED) called"); void** pTextOrder) {
if (!pTextOrder) {
LOG_DEBUG(Lib_Font, "Invalid parameter");
return ORBIS_FONT_ERROR_INVALID_PARAMETER;
}
if (!textCharacter) {
LOG_DEBUG(Lib_Font, "Invalid parameter");
*pTextOrder = NULL;
return ORBIS_FONT_ERROR_INVALID_PARAMETER;
}
// Retrieve text order
*pTextOrder = textCharacter->textOrder;
return ORBIS_OK; return ORBIS_OK;
} }
s32 PS4_SYSV_ABI sceFontCharacterLooksFormatCharacters() { u32 PS4_SYSV_ABI sceFontCharacterLooksFormatCharacters(OrbisFontTextCharacter* textCharacter) {
LOG_ERROR(Lib_Font, "(STUBBED) called"); if (!textCharacter) {
return ORBIS_OK; return 0;
}
// Check if the format flag (bit 2) is set
return (textCharacter->formatFlags & 0x04) ? textCharacter->characterCode : 0;
} }
s32 PS4_SYSV_ABI sceFontCharacterLooksWhiteSpace() { u32 PS4_SYSV_ABI sceFontCharacterLooksWhiteSpace(OrbisFontTextCharacter* textCharacter) {
LOG_ERROR(Lib_Font, "(STUBBED) called"); if (!textCharacter) {
return ORBIS_OK; return 0;
}
return (textCharacter->charType == 0x0E) ? textCharacter->characterCode : 0;
} }
s32 PS4_SYSV_ABI sceFontCharacterRefersTextBack() { s32 PS4_SYSV_ABI sceFontCharacterRefersTextBack() {

View File

@ -13,7 +13,11 @@ namespace Libraries::Font {
struct OrbisFontTextCharacter { struct OrbisFontTextCharacter {
// Other fields... // Other fields...
u8 bidiLevel; // Assuming the field at offset 0x3B stores the Bidi level void* textOrder; // Field at offset 0x10 (pointer to text order info)
u32 characterCode; // Field assumed at offset 0x28
u8 charType; // Field assumed at offset 0x39
u8 bidiLevel; // Field assumed at offset 0x3B stores the Bidi level
u8 formatFlags; // Field at offset 0x3D (stores format-related flags)
}; };
s32 PS4_SYSV_ABI sceFontAttachDeviceCacheBuffer(); s32 PS4_SYSV_ABI sceFontAttachDeviceCacheBuffer();
@ -22,9 +26,10 @@ s32 PS4_SYSV_ABI sceFontCharacterGetBidiLevel(OrbisFontTextCharacter* textCharac
int* bidiLevel); int* bidiLevel);
s32 PS4_SYSV_ABI sceFontCharacterGetSyllableStringState(); s32 PS4_SYSV_ABI sceFontCharacterGetSyllableStringState();
s32 PS4_SYSV_ABI sceFontCharacterGetTextFontCode(); s32 PS4_SYSV_ABI sceFontCharacterGetTextFontCode();
s32 PS4_SYSV_ABI sceFontCharacterGetTextOrder(); s32 PS4_SYSV_ABI sceFontCharacterGetTextOrder(OrbisFontTextCharacter* textCharacter,
s32 PS4_SYSV_ABI sceFontCharacterLooksFormatCharacters(); void** pTextOrder);
s32 PS4_SYSV_ABI sceFontCharacterLooksWhiteSpace(); u32 PS4_SYSV_ABI sceFontCharacterLooksFormatCharacters(OrbisFontTextCharacter* textCharacter);
u32 PS4_SYSV_ABI sceFontCharacterLooksWhiteSpace(OrbisFontTextCharacter* textCharacter);
s32 PS4_SYSV_ABI sceFontCharacterRefersTextBack(); s32 PS4_SYSV_ABI sceFontCharacterRefersTextBack();
s32 PS4_SYSV_ABI sceFontCharacterRefersTextNext(); s32 PS4_SYSV_ABI sceFontCharacterRefersTextNext();
s32 PS4_SYSV_ABI sceFontCharactersRefersTextCodes(); s32 PS4_SYSV_ABI sceFontCharactersRefersTextCodes();