mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-14 05:35:58 +00:00
sceFontRenderSurfaceSetStyleFrame ,sceFontStyleFrameGetEffectSlant RE added
This commit is contained in:
parent
97153ed62c
commit
aa2cf2be84
2 changed files with 57 additions and 10 deletions
|
@ -757,7 +757,7 @@ void PS4_SYSV_ABI sceFontRenderSurfaceInit(OrbisFontRenderSurface* renderSurface
|
|||
|
||||
// Initialize unknown fields (likely reserved or flags)
|
||||
renderSurface->unkn_0xd = 0;
|
||||
renderSurface->unkn_0xe = 0;
|
||||
renderSurface->styleFlag = 0;
|
||||
renderSurface->unkn_0xf = 0;
|
||||
|
||||
// Ensure width and height are non-negative
|
||||
|
@ -814,9 +814,26 @@ void PS4_SYSV_ABI sceFontRenderSurfaceSetScissor(OrbisFontRenderSurface* renderS
|
|||
}
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceFontRenderSurfaceSetStyleFrame() {
|
||||
LOG_ERROR(Lib_Font, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
s32 PS4_SYSV_ABI sceFontRenderSurfaceSetStyleFrame(OrbisFontRenderSurface* renderSurface,
|
||||
OrbisFontStyleFrame* styleFrame) {
|
||||
if (!renderSurface) {
|
||||
return ORBIS_FONT_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (!styleFrame) {
|
||||
renderSurface->styleFlag &= 0xFE; // Clear style flag
|
||||
} else {
|
||||
// Validate magic number
|
||||
if (styleFrame->magic != 0xF09) {
|
||||
return ORBIS_FONT_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
renderSurface->styleFlag |= 1; // Set style flag
|
||||
}
|
||||
|
||||
// Assign style frame pointer
|
||||
renderSurface->unkn_28[0] = styleFrame;
|
||||
*(uint32_t*)(renderSurface->unkn_28 + 1) = 0; // Reset related field
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceFontSetEffectSlant() {
|
||||
|
@ -904,8 +921,29 @@ s32 PS4_SYSV_ABI sceFontStringRefersTextCharacters() {
|
|||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
s32 PS4_SYSV_ABI sceFontStyleFrameGetEffectSlant() {
|
||||
LOG_ERROR(Lib_Font, "(STUBBED) called");
|
||||
s32 PS4_SYSV_ABI sceFontStyleFrameGetEffectSlant(OrbisFontStyleFrame* styleFrame,
|
||||
float* slantRatio) {
|
||||
if (!styleFrame) {
|
||||
printf("[ERROR] Style frame is NULL.\n");
|
||||
return ORBIS_FONT_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
// Validate the magic number
|
||||
if (styleFrame->magic != 0xF09) {
|
||||
return ORBIS_FONT_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
// Check if the slant effect is enabled (bit 1 in flags)
|
||||
if (!(styleFrame->flags & 0x02)) {
|
||||
return ORBIS_FONT_ERROR_UNSET_PARAMETER;
|
||||
}
|
||||
|
||||
if (!slantRatio) {
|
||||
return ORBIS_FONT_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
// Retrieve slant ratio
|
||||
*slantRatio = styleFrame->slantRatio;
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -29,14 +29,21 @@ struct OrbisFontRenderSurface {
|
|||
s32 widthByte;
|
||||
s8 pixelSizeByte;
|
||||
u8 unkn_0xd;
|
||||
u8 unkn_0xe;
|
||||
u8 styleFlag;
|
||||
u8 unkn_0xf;
|
||||
s32 width, height;
|
||||
u32 sc_x0;
|
||||
u32 sc_y0;
|
||||
u32 sc_x1;
|
||||
u32 sc_y1;
|
||||
u32 unkn_28[22];
|
||||
void* unkn_28[3];
|
||||
};
|
||||
|
||||
struct OrbisFontStyleFrame {
|
||||
u16 magic; // Expected to be 0xF09
|
||||
u16 flags;
|
||||
//
|
||||
float slantRatio; //0x24
|
||||
};
|
||||
|
||||
s32 PS4_SYSV_ABI sceFontAttachDeviceCacheBuffer();
|
||||
|
@ -186,7 +193,8 @@ void PS4_SYSV_ABI sceFontRenderSurfaceInit(OrbisFontRenderSurface* renderSurface
|
|||
int heightPixel);
|
||||
void PS4_SYSV_ABI sceFontRenderSurfaceSetScissor(OrbisFontRenderSurface* renderSurface, int x0,
|
||||
int y0, int w, int h);
|
||||
s32 PS4_SYSV_ABI sceFontRenderSurfaceSetStyleFrame();
|
||||
s32 PS4_SYSV_ABI sceFontRenderSurfaceSetStyleFrame(OrbisFontRenderSurface* renderSurface,
|
||||
OrbisFontStyleFrame* styleFrame);
|
||||
s32 PS4_SYSV_ABI sceFontSetEffectSlant();
|
||||
s32 PS4_SYSV_ABI sceFontSetEffectWeight();
|
||||
s32 PS4_SYSV_ABI sceFontSetFontsOpenMode();
|
||||
|
@ -204,7 +212,8 @@ s32 PS4_SYSV_ABI sceFontStringGetTerminateOrder();
|
|||
s32 PS4_SYSV_ABI sceFontStringGetWritingForm();
|
||||
s32 PS4_SYSV_ABI sceFontStringRefersRenderCharacters();
|
||||
s32 PS4_SYSV_ABI sceFontStringRefersTextCharacters();
|
||||
s32 PS4_SYSV_ABI sceFontStyleFrameGetEffectSlant();
|
||||
s32 PS4_SYSV_ABI sceFontStyleFrameGetEffectSlant(OrbisFontStyleFrame* styleFrame,
|
||||
float* slantRatio);
|
||||
s32 PS4_SYSV_ABI sceFontStyleFrameGetEffectWeight();
|
||||
s32 PS4_SYSV_ABI sceFontStyleFrameGetResolutionDpi();
|
||||
s32 PS4_SYSV_ABI sceFontStyleFrameGetScalePixel();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue