部分可用固件与 HLE
PNG 编码与解码
PNG 编码器把带行跨距的 RGBA 或 BGRA 像素写成 8 位 RGB 或 RGBA 文件。解码器把非交错的灰度、调色板、RGB 和 RGBA 图像读进经过检查的客户机缓冲区。
仓库笔记截至 2026年10月10日
编码
游戏交给编码器的是一块像素矩形,其行跨距可能大于宽度。PS5PCEM 接受带行跨距的 RGBA 和 BGRA,并写出标准的 8 位 RGB 或 RGBA PNG。调用者选择扫描线滤波器,以及 0 到 9 的压缩级别。输出写入以游戏提供的缓冲区为界。
编码器是该文件格式的软件实现。它不调用系统图像库,也不相对游戏机的硬件编码器声称某个特定速度。
解码
libScePngDec 解析 PNG 元数据,并把非交错的灰度、调色板、RGB 和 RGBA 图像解码到经过检查的客户机 RGBA 或 BGRA 缓冲区。扫描线滤波器会被应用,调色板透明度会被遵守。写入像素之前会检查目的地。
Adam7 交错输入会被识别并拒绝,而不是解码成一张错误的图像。因此交错的图标和截图不会静默变成一块乱码缓冲区。
它处在什么位置
PNG 是游戏在启动期间会碰到的小型固件服务之一:图标、图集和存档缩略图。它独立于 AvPlayer 的影片路径,后者用 FFmpeg 处理 H.264,也独立于字体光栅器。
10 月 9 日的固件报告把编码器与时钟、AMPR 完成大小查询放在一组。这三项补上了导入缺口。它们本身并不改变已测得的帧时间。
已经实现的部分
- 带行跨距的 RGBA 和 BGRA 输入,写成压缩级别 0–9 的 8 位 RGB 或 RGBA PNG。
- 解码非交错的灰度、调色板、RGB 和 RGBA,包括滤波器和调色板 alpha。
- 经过检查的目的地缓冲区,以及有界的编码器输出。
尚未实现的部分
- Adam7 交错 PNG 会被识别,但不会解码。
- 16 位和冷门的辅助数据块不在已实现的子集内。
- 没有硬件 PNG 块。两侧都在 CPU 上运行。
相关机制
这些页面说明什么
文字依据 PS5PCEM 仓库中的架构说明和 2026 年 10 月的报告。单项测试通过并不等于新的帧率,也不等于新的通关。