mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-14 18:58:36 +12:00
RSX Debugger & cellFont improved
RSX Debugger: *Better way to add name:value pairs to the tabs. *Added some entries in the Settings/Texture/Lightning tabs. *Experimental DisAsm. *Support for previewing RGB textures (buggy!). *Minor cleanups and improvements cellFont: *Added cellFontOpenFontMemory, cellFontOpenFontFile, cellFontOpenFontset. They still need some modifications (e.g. bind these functions to stblib/stb_truetype.h).
This commit is contained in:
parent
d1a27748a3
commit
1a43fe5ceb
3 changed files with 499 additions and 100 deletions
|
@ -3,6 +3,8 @@
|
|||
#include "Emu/SysCalls/SC_FUNC.h"
|
||||
#include "cellFont.h"
|
||||
|
||||
//#include "stblib/stb_truetype.h"
|
||||
|
||||
void cellFont_init();
|
||||
void cellFont_unload();
|
||||
Module cellFont(0x0019, cellFont_init, nullptr, cellFont_unload);
|
||||
|
@ -99,6 +101,7 @@ struct CellFont
|
|||
be_t<float> scale_y;
|
||||
be_t<float> slant;
|
||||
be_t<u32> renderer_addr;
|
||||
//stbtt_fontinfo stbfont;
|
||||
};
|
||||
|
||||
struct CellFontType
|
||||
|
@ -261,9 +264,44 @@ s32 cellFontSetFontsetOpenMode(u32 openMode)
|
|||
return CELL_FONT_OK;
|
||||
}
|
||||
|
||||
int cellFontOpenFontMemory(mem_ptr_t<CellFontLibrary> library, u32 fontAddr, u32 fontSize, u32 subNum, u32 uniqueId, mem_ptr_t<CellFont> font)
|
||||
{
|
||||
cellFont.Warning("cellFontOpenFontMemory(library_addr=0x%x, fontAddr=0x%x, fontSize=%d, subNum=%d, uniqueId=%d, font_addr=0x%x)",
|
||||
library.GetAddr(), fontAddr, fontSize, subNum, uniqueId, font.GetAddr());
|
||||
|
||||
if (!s_fontInternalInstance->m_bInitialized)
|
||||
return CELL_FONT_ERROR_UNINITIALIZED;
|
||||
if (!library.IsGood() || !font.IsGood())
|
||||
return CELL_FONT_ERROR_INVALID_PARAMETER;
|
||||
if (!Memory.IsGoodAddr(fontAddr))
|
||||
return CELL_FONT_ERROR_FONT_OPEN_FAILED;
|
||||
|
||||
//stbtt_InitFont(&(font->stbfont), (unsigned char*)Memory.VirtualToRealAddr(fontAddr), 0);
|
||||
font->renderer_addr = NULL;
|
||||
//TODO: Write data in font
|
||||
|
||||
return CELL_FONT_OK;
|
||||
}
|
||||
|
||||
int cellFontOpenFontFile(mem_ptr_t<CellFontLibrary> library, mem8_ptr_t fontPath, u32 subNum, s32 uniqueId, mem_ptr_t<CellFont> font)
|
||||
{
|
||||
cellFont.Warning("cellFontOpenFontFile(library_addr=0x%x, fontPath=\"%s\", subNum=%d, uniqueId=%d, font_addr=0x%x)",
|
||||
library.GetAddr(), fontPath.GetString(), subNum, uniqueId, font.GetAddr());
|
||||
|
||||
vfsFile f(fontPath.GetString());
|
||||
if (!f.IsOpened())
|
||||
return CELL_FONT_ERROR_FONT_OPEN_FAILED;
|
||||
|
||||
u32 fileSize = f.GetSize();
|
||||
MemoryAllocator<u8> buffer(fileSize);
|
||||
f.Read(Memory.VirtualToRealAddr(buffer.GetAddr()), fileSize);
|
||||
cellFontOpenFontMemory(library.GetAddr(), buffer.GetAddr(), fileSize, subNum, uniqueId, font.GetAddr());
|
||||
return CELL_FONT_OK;
|
||||
}
|
||||
|
||||
int cellFontOpenFontset(mem_ptr_t<CellFontLibrary> library, mem_ptr_t<CellFontType> fontType, mem_ptr_t<CellFont> font)
|
||||
{
|
||||
cellFont.Warning("cellFontOpenFontset(library_addr=0x%x, fontType_addr=0x%x, font_addr=0x%x)",
|
||||
cellFont.Log("cellFontOpenFontset(library_addr=0x%x, fontType_addr=0x%x, font_addr=0x%x)",
|
||||
library.GetAddr(), fontType.GetAddr(), font.GetAddr());
|
||||
|
||||
if (!library.IsGood() || !fontType.IsGood() || !font.IsGood())
|
||||
|
@ -273,10 +311,77 @@ int cellFontOpenFontset(mem_ptr_t<CellFontLibrary> library, mem_ptr_t<CellFontTy
|
|||
if (fontType->map != CELL_FONT_MAP_UNICODE)
|
||||
cellFont.Warning("cellFontOpenFontset: Only Unicode is supported");
|
||||
|
||||
font->renderer_addr = NULL;
|
||||
//TODO: Write data in font
|
||||
std::string file;
|
||||
switch(fontType->type)
|
||||
{
|
||||
case CELL_FONT_TYPE_RODIN_SANS_SERIF_LATIN: file = "/dev_flash/data/font/SCE-PS3-RD-R-LATIN.TTF"; break;
|
||||
case CELL_FONT_TYPE_RODIN_SANS_SERIF_LIGHT_LATIN: file = "/dev_flash/data/font/SCE-PS3-RD-L-LATIN.TTF"; break;
|
||||
case CELL_FONT_TYPE_RODIN_SANS_SERIF_BOLD_LATIN: file = "/dev_flash/data/font/SCE-PS3-RD-B-LATIN.TTF"; break;
|
||||
case CELL_FONT_TYPE_RODIN_SANS_SERIF_LATIN2: file = "/dev_flash/data/font/SCE-PS3-RD-R-LATIN2.TTF"; break;
|
||||
case CELL_FONT_TYPE_RODIN_SANS_SERIF_LIGHT_LATIN2: file = "/dev_flash/data/font/SCE-PS3-RD-L-LATIN2.TTF"; break;
|
||||
case CELL_FONT_TYPE_RODIN_SANS_SERIF_BOLD_LATIN2: file = "/dev_flash/data/font/SCE-PS3-RD-B-LATIN2.TTF"; break;
|
||||
case CELL_FONT_TYPE_MATISSE_SERIF_LATIN: file = "/dev_flash/data/font/SCE-PS3-MT-R-LATIN.TTF"; break;
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_JAPANESE: file = "/dev_flash/data/font/SCE-PS3-NR-R-JPN.TTF"; break;
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_LIGHT_JAPANESE: file = "/dev_flash/data/font/SCE-PS3-NR-L-JPN.TTF"; break;
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_BOLD_JAPANESE: file = "/dev_flash/data/font/SCE-PS3-NR-B-JPN.TTF"; break;
|
||||
case CELL_FONT_TYPE_YD_GOTHIC_KOREAN: file = "/dev_flash/data/font/SCE-PS3-YG-R-KOR.TTF"; break;
|
||||
case CELL_FONT_TYPE_SEURAT_MARU_GOTHIC_LATIN: file = "/dev_flash/data/font/SCE-PS3-SR-R-LATIN.TTF"; break;
|
||||
case CELL_FONT_TYPE_SEURAT_MARU_GOTHIC_LATIN2: file = "/dev_flash/data/font/SCE-PS3-SR-R-LATIN2.TTF"; break;
|
||||
case CELL_FONT_TYPE_VAGR_SANS_SERIF_ROUND: file = "/dev_flash/data/font/SCE-PS3-VR-R-LATIN.TTF"; break;
|
||||
case CELL_FONT_TYPE_VAGR_SANS_SERIF_ROUND_LATIN2: file = "/dev_flash/data/font/SCE-PS3-VR-R-LATIN2.TTF"; break;
|
||||
case CELL_FONT_TYPE_SEURAT_MARU_GOTHIC_JAPANESE: file = "/dev_flash/data/font/SCE-PS3-SR-R-JPN.TTF"; break;
|
||||
|
||||
return CELL_FONT_OK;
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_JP_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_LATIN_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_RODIN_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_RODIN2_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_RODIN2_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_DFHEI5_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_DFHEI5_RODIN_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_DFHEI5_RODIN2_SET:
|
||||
case CELL_FONT_TYPE_DFHEI5_GOTHIC_YG_NEWRODIN_TCH_SET:
|
||||
case CELL_FONT_TYPE_DFHEI5_GOTHIC_YG_NEWRODIN_RODIN_TCH_SET:
|
||||
case CELL_FONT_TYPE_DFHEI5_GOTHIC_YG_NEWRODIN_RODIN2_TCH_SET:
|
||||
case CELL_FONT_TYPE_DFHEI5_GOTHIC_YG_NEWRODIN_SCH_SET:
|
||||
case CELL_FONT_TYPE_DFHEI5_GOTHIC_YG_NEWRODIN_RODIN_SCH_SET:
|
||||
case CELL_FONT_TYPE_DFHEI5_GOTHIC_YG_NEWRODIN_RODIN2_SCH_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_MARU_GOTHIC_RSANS_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_CAPIE_MARU_GOTHIC_RSANS_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_CAPIE_MARU_GOTHIC_JP_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_MARU_GOTHIC_YG_DFHEI5_RSANS_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_CAPIE_MARU_GOTHIC_YG_DFHEI5_RSANS_SET:
|
||||
case CELL_FONT_TYPE_VAGR_SEURAT_CAPIE_MARU_GOTHIC_RSANS_SET:
|
||||
case CELL_FONT_TYPE_VAGR_SEURAT_CAPIE_MARU_GOTHIC_YG_DFHEI5_RSANS_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_LIGHT_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_RODIN_LIGHT_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_RODIN2_LIGHT_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_RODIN_LIGHT_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_RODIN2_LIGHT_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_BOLD_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_RODIN_BOLD_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_YG_RODIN2_BOLD_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_RODIN_BOLD_SET:
|
||||
case CELL_FONT_TYPE_NEWRODIN_GOTHIC_RODIN2_BOLD_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_MARU_GOTHIC_RSANS2_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_CAPIE_MARU_GOTHIC_RSANS2_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_MARU_GOTHIC_YG_DFHEI5_RSANS2_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_CAPIE_MARU_GOTHIC_YG_DFHEI5_RSANS2_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_CAPIE_MARU_GOTHIC_YG_DFHEI5_VAGR2_SET:
|
||||
case CELL_FONT_TYPE_SEURAT_CAPIE_MARU_GOTHIC_VAGR2_SET:
|
||||
cellFont.Warning("cellFontOpenFontset: fontType->type = %d not supported yet. RD-R-LATIN.TTF will be used instead.", fontType->type);
|
||||
file = "/dev_flash/data/font/SCE-PS3-RD-R-LATIN.TTF";
|
||||
break;
|
||||
|
||||
default:
|
||||
cellFont.Warning("cellFontOpenFontset: fontType->type = %d not supported.", fontType->type);
|
||||
return CELL_FONT_ERROR_NO_SUPPORT_FONTSET;
|
||||
}
|
||||
|
||||
u32 file_addr = Memory.Alloc(file.length()+1, 1);
|
||||
Memory.WriteString(file_addr, file);
|
||||
int ret = cellFontOpenFontFile(library.GetAddr(), file_addr, 0, 0, font.GetAddr()); //TODO: The values of subNum, uniqueId may be incorrect
|
||||
Memory.Free(file_addr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int cellFontOpenFontInstance(mem_ptr_t<CellFont> openedFont, mem_ptr_t<CellFont> font)
|
||||
|
@ -486,12 +591,6 @@ int cellFontOpenFontsetOnMemory()
|
|||
return CELL_FONT_OK;
|
||||
}
|
||||
|
||||
int cellFontOpenFontFile()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellFont);
|
||||
return CELL_FONT_OK;
|
||||
}
|
||||
|
||||
int cellFontGraphicsSetScalePixel()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellFont);
|
||||
|
@ -564,12 +663,6 @@ int cellFontGraphicsSetupDrawContext()
|
|||
return CELL_FONT_OK;
|
||||
}
|
||||
|
||||
int cellFontOpenFontMemory()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellFont);
|
||||
return CELL_FONT_OK;
|
||||
}
|
||||
|
||||
int cellFontSetupRenderEffectWeight()
|
||||
{
|
||||
UNIMPLEMENTED_FUNC(cellFont);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue