PCSX2-Playstation 2仿真器-进度报告-2019年第三季度至2020年第一季度

2020-05-08 14:45:52

[精确度增强]#3018通过在纹理缓存中正确匹配顶点偏移绘制和缓冲区偏移读取,改进渲染目标中的纹理搜索/无效。默认情况下,在JAK游戏中启用此行为以修复黑眼渲染。作者:AlessandroVetere。

[精确度增强]#3001-已实现的软件精灵渲染器功能,允许CPU模拟(SSE加速)某些精灵直接从硬件渲染器绘制。这绕过了GPU绘制和纹理缓存机制。到目前为止,它被用来正确地渲染JAK游戏中使用的调色板,并删除之前由于纹理缓存中存在的问题而无法正确执行的不准确的黑客攻击。这会导致从GPU到CPU的绘制调色板需要回读帧缓冲区,因此速度要慢得多。有计划在DBZ BT2等其他游戏中实现这一功能。作者:亚历桑德罗·韦特(AlessandroVetere)。

[精确度增强]#3036为大型Mutha卡车添加了一个专门的修复程序,允许正确渲染阴影。这还允许我们降低CRC攻击级别,因此跳过的影响较少。闪电般的恐怖。

[精确度增强]#2998增加了Sonic释放的专用修复。这使其可以正确渲染阴影。这也允许我们删除以前跳过错误渲染效果的CRC黑客。闪电般的恐怖。

[增强]#2993:Sprite Hack已完全移除,因为不再需要它,取而代之的是更好的替代方案。由KrossX和他的闪电恐怖。

[增强]随着我们继续寻求删除过时的黑客,已经删除了更多不再需要的CRC黑客;因为仿真器现在可以正确地呈现这些效果。

[精确度增强]#3091-Direct3D10/11上的TFX着色器已重写,以匹配OpenGL代码及其某些效果的精确度。考虑到这一点,很多游戏应该会看到渲染方面的改进。例子包括:寂静山4有正确的阴影渲染,DBZ BT2有更精确的光晕/模糊渲染,以及Resident Evil 4的不准确的雾渲染。其他游戏可能也会受到影响。作者:KrossX。

[精度增强]#3003-Blend No Barrier已从OpenGL移植到Direct3D 10/11。与之前的混合端口一样,这提高了许多使用它们的游戏的渲染混合效果。一些例子包括:“寻龙记”、“星球大战前线2”和“战神”。在“寻龙记”中,它会渲染发光效果。在SW模式下,Battlefront 2可以更精确地渲染窗口颜色。对于战神来说,它绕过了速度较慢的HDR ColClip算法,因此获得了一些fps。功能至少需要启用基本混合才能正确呈现。闪电般的恐怖。

[精确度增强]#3172:DI执行被延迟了一条指令。修复了以下游戏中的引导问题:Jak X、Namco 50周年纪念、海绵宝宝电影、海绵宝宝比基尼底部之战、超人特工队、矿工超人瑞斯、Souou Kihei Armodyne、加菲猫拯救阿琳、粉丝故事卷2。有关这些变化的更多技术信息,请参阅以下内容。由PSI-Rockin和PSI-Rockin组成的折射率为PCsx2和PSI-Rockin。

[精确度增强]#2835恢复到较旧的VRender/VBlank计时,但这修复了王朝战士3 Xtreme Legends(假保存腐败)、JAK II(随机加速问题)和罗马阴影(FMV音频问题)中的计时问题。作者是FlatOutPS2和Turtleli。

[精确度提升]#3119部分修复的IPU Pack命令。图像处理单元(IPU)PACK命令能够将32位RGB数据转换为16位RGB数据或4位索引RGB数据。由于缺少实际使用此命令的游戏,因此没有注意到代码试图从YCbCr数据转换,而不是从32位RGB数据转换。

每个人都喜欢弹琴。对吗?。Hisshou Pachinko Pachislot Kouryaku系列使用IPU色彩空间转换(CSC)命令将YCbCr数据转换为32位RGB数据。然后使用ipu pack命令将生成的32位RGB数据转换为16位RGB数据。然而,ipu csc命令能够直接将YCbCr数据转换为16位RGB数据.。

因此,由于一些不寻常的测试用例,ipu pack命令现在已经部分修复(由于缺乏测试用例,到4位索引的RGB数据的转换仍然没有实现)。被一只乌龟吃掉了。

[错误修复]#3063修复了在某些情况下切换帧限制器时按F4过快时模拟器挂起的问题。作者:KrossX。

[错误修复]#3072修复了在某些情况下按F9在硬件和软件之间切换渲染时模拟器挂起的问题。到目前为止,受影响的游戏有MGS3和JAK系列。作者:KrossX。

[错误修复]#3052还修复了按F9键过快地在硬件和软件模式之间切换渲染时模拟器挂起的问题。作者:KrossX。

[增强]#3013首次向导现在可以根据CPU支持的最高指令集正确选择正确的GSdx插件。作者:KrossX。

[增强]#3135-改进了指针补丁命令处理。改进了对指针补丁命令的解析,该命令将一个值复制到存储在另一个内存地址中的地址。它现在可以正确处理值为0的情况,并且在指定多个偏移量时不再提前终止。从黑暗中走出来的人。

[错误修复]#3030修复了输出4.8 kHz音调而不是白噪音的噪音发生器。到目前为止,已知的受影响的游戏有:猩猩逃脱3,棘轮和叮当1,以及最黑暗的仙女新宠物。被怪兽860。

某些游戏试图读取不存在的光盘扇区。当读取这些扇区时,PCSX2将无法加载大多数这些游戏。通过更改光盘读取代码以忽略读取不存在的光盘扇区的请求,PCSX2现在可以成功加载受影响的游戏。

像往常一样,我们已经更新了我们的GameDB,其中包含数百个新的更改,其中包含可以通过自动游戏修复启用的添加或删除的游戏修复。这应该会极大地改善和简化我们的用户的配置,因为他们不需要为需要他们的游戏搜索和手动应用游戏修复和补丁而烦恼。

真正的犯罪:直到最近,洛杉矶的街道才开始播放。在对游戏进行了几天的反向工程后,PSI(多别站的开发者)找出了问题所在,并给它打了补丁。游戏依赖于某些SIF DMA传输中的未定义行为。SIF DMA是情感引擎(EE)和输入/输出处理器(IOP)彼此通信的方式。例如,如果一款游戏想要从光盘上读取一些东西,它将通过SIF1发送一个“读取光盘”命令。IOP将处理此命令,并通过SIF0发送回复。

一个奇怪的现象是,EE DMA一次以四字(16字节)传输,而IOP DMA一次以字(4字节)传输。那么,当IOP想要发送3个字的数据时会发生什么呢?这是12个字节,这对于一个四字来说是不够的。除了在这3个字之后发送“垃圾”之外,没有关于此行为的文档。PCSX2通过将零附加到数据来处理此问题。不幸的是,True Critical将重要的初始化变量存储在EE端的应答缓冲区旁边。PCSX2的行为导致这些变量被重置为0,这使得真罪重新初始化其DVD流媒体库。发生这种情况时,游戏在尝试从光盘流式传输数据后立即崩溃。

那么你是如何正确处理这件事的呢?我们尚未在硬件上确认这一点,但似乎正确的行为是附加以前传输的最旧的值。考虑到SIF有自己的FIFO来存储数据,这是有意义的。如果发送3个字,则这3个字将与仍在FIFO中的最旧值一起弹出,以创建一个四字。PSI表示,他之所以选择打补丁,是因为他对实现这一点感到不舒服,因为有可能会打破其他东西。该补丁强制游戏使用不同的方法来传输流命令。这一点很重要,因为这里的应答缓冲区位于不同的内存区域,因此上面提到的初始化变量不会被覆盖。

注:该补丁程序目前仅适用于NTSC-U。其他补丁将按需制作。