; Exercise the shipping object's light shader without a window or any save writes. .686 .model flat, stdcall option casemap:none include kernel32.inc BuildCityLighting3D PROTO SampleCityLight3D PROTO :DWORD,:DWORD IsCityEmissive3D PROTO :DWORD,:DWORD ShadeCityGround3D PROTO :DWORD,:DWORD,:DWORD,:DWORD .code RunCityLightProbe PROC call BuildCityLighting3D invoke SampleCityLight3D, 17*65536, 65536*259/20 cmp eax, 230 jb city_probe_failed invoke SampleCityLight3D, -1, 14*65536 test eax, eax jnz city_probe_failed invoke SampleCityLight3D, 64*65536, 14*65536 test eax, eax jnz city_probe_failed invoke IsCityEmissive3D, 00E9B149h, 65 cmp eax, 1 jne city_probe_failed invoke IsCityEmissive3D, 00E9B149h, 57 test eax, eax jnz city_probe_failed ; Green/blue panes must not pass a wrapped unsigned R-G or G-B difference. invoke IsCityEmissive3D, 00B4F088h, 65 test eax, eax jnz city_probe_failed invoke IsCityEmissive3D, 00F064F0h, 65 test eax, eax jnz city_probe_failed invoke IsCityEmissive3D, 00FFFFFFh, 65 test eax, eax jnz city_probe_failed invoke ShadeCityGround3D, 001E1E1Eh, 17*65536, 65536*259/20, 160 mov edx, eax shr edx, 16 and edx, 255 and eax, 255 cmp edx, eax jbe city_probe_failed invoke ExitProcess, 0 city_probe_failed: invoke ExitProcess, 1 RunCityLightProbe ENDP END RunCityLightProbe