Board logo

标题: [资源分享] YZB威武!终于明白GDEMU的虎头BUG产生的原因了 [打印本页]

作者: urtoys    时间: 2022-3-9 09:27     标题: YZB威武!终于明白GDEMU的虎头BUG产生的原因了

N年前在网上搜索为什么初期模拟器和GDEMU玩维罗妮卡都会有虎头BUG,得到的信息也就是关于读取速度的只言片语。

今天逛浮游城发现YZB根据问题原因又做了另一版本的解决方案,帖子还顺便解释了下bug的成因。链接:http://bbs.chinaemu.org/read.php?tid=129099&page=e&#a

没有账号的我贴个重点图吧:

[attach]1187511[/attach]
[attach]1187512[/attach]

[ 本帖最后由 urtoys 于 2022-3-9 09:31 编辑 ]
作者: lg19860320    时间: 2022-3-9 16:39

posted by wap, platform: iPhone
那怎么解决呢
作者: lg19860320    时间: 2022-3-9 17:58

posted by wap, platform: iPhone
那怎么解决呢
作者: SSforME    时间: 2022-3-9 18:15

解决方案就是加延迟读取这些数据
作者: SONIC3D    时间: 2022-3-9 18:52

对光驱板固件来说,是加延迟,阻塞数据I/O速度,来使这些强依赖读取速度的游戏正常。NullDC以前也有这个问题,也是类似改法。

而在不能改动光驱板固件的条件限制下,yzb做的,是修正游戏对的"读取完毕"标志位进行初始化的逻辑时机。因为本来就是游戏的开发者错误地假设了当前帧不可能读取完数据,就把"读取完毕"标志位的初始化逻辑,放到了发起"开始读取光盘数据的请求"这个逻辑之后。

即:
1. 发起"开始读取光盘数据的请求"。
2. 初始化"读取完毕"标志位,使其状态为"尚未完成"
3. 循环检测"读取完毕"标志位,直到其变为"已完成",再跳到第4步,或者触发读取超时逻辑。
4. 后续逻辑。

这4个步骤的第1步,会因为光驱板读取速度过高而意外地在第2步还没开始前就把"读取完毕"标志位置成"已完成"状态(因为确实读完了),然后第2步中,这个标志位又被抹除,变成了"尚未完成"状态,导致之后逻辑在第3步不能在特定时间内读取完毕,使得出现死循环,或者某些依赖光驱速度的随机数生成过程产生固定值。

yzb把第1、2步顺序换了,就可以规避这种初始化逻辑滞后导致的问题。
作者: dtxyy    时间: 2022-3-9 22:13

posted by wap, platform: Android
这下抄板不用升级了
作者: coldiori    时间: 2022-3-10 08:01

posted by wap, platform: Chrome
yzb也帮我解决了bio3汉化版的bug
作者: 卡比兽    时间: 2022-3-10 09:22

posted by wap, platform: iPhone
普通人要怎么搞
作者: urtoys    时间: 2022-3-10 09:42

引用:
原帖由 卡比兽 于 2022-3-10 09:22 发表
posted by wap, platform: iPhone
普通人要怎么搞
引用:
原帖由 lg19860320 于 2022-3-9 17:58 发表
posted by wap, platform: iPhone
那怎么解决呢
YZB这次修改了原版镜像,等我有时间拖下来上传。
作者: linkzzy    时间: 2022-3-10 12:17

posted by wap, platform: Android
yzb大佬又发功了,膜拜一下
作者: fenrile    时间: 2022-3-10 15:52

posted by wap, platform: Android
排队膜拜
作者: yzb    时间: 2022-3-11 21:20

引用:
原帖由 SONIC3D 于 2022-3-9 18:52 发表
对光驱板固件来说,是加延迟,阻塞数据I/O速度,来使这些强依赖读取速度的游戏正常。NullDC以前也有这个问题,也是类似改法。

而在不能改动光驱板固件的条件限制下,yzb做的,是修正游戏对的"读取完毕"标志位进行 ...
我没把第1、2步顺序换了,只是把第3步加了判断,判断为触发bug的那几个物品,则强制延迟n帧以后,才让其变为"已完成"状态
作者: 就一中年人    时间: 2022-3-12 19:36

在大佬楼下混个面子
作者: ztxzhang518    时间: 2022-3-12 20:52

大神现身说法了~
作者: SONIC3D    时间: 2022-3-12 23:45

引用:
原帖由 yzb 于 2022-3-11 21:20 发表


我没把第1、2步顺序换了,只是把第3步加了判断,判断为触发bug的那几个物品,则强制延迟n帧以后,才让其变为"已完成"状态
这样啊。。。那不严谨通用,去重改吧。。。
作者: yangjuniori    时间: 2022-3-13 20:40

posted by wap, platform: Chrome
想起来KOF没有血槽的这种鬼问题




欢迎光临 TGFC Lifestyle (http://club.tgfcer.com/) Powered by Discuz! 6.0.0