KAZIK/tools/tests/city_light_probe.asm
Artvasil09 3ad5bf4c9d Develop assembly-only casino scenes and native games
Add native Durak, poker, blackjack, roulette, Buckshot and billiards scenes with animation assets and regression tests. Improve arrival, city, hall, profiles, shops, audio and exit handling; remove the portable C game core and refresh shipping executables.
2026-10-08 22:39:19 +03:00

49 lines
1.4 KiB
NASM

; 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