KAZIK/tools/tests/street_asset_probe.asm
Artvasil09 4f8ae0893b Implement native slots, coin toss, European roulette and hall furniture
Add native assembly scenes and assets for Slots (777), Coin flip, and European Roulette; add 3D hall furniture packs and prompts; improve Russian UI strings in CP1251; update launcher hash and rebuild shipping binaries.
2026-10-10 14:43:30 +03:00

99 lines
3 KiB
NASM

.386
.model flat,stdcall
option casemap:none
include F:\MASM32\masm32\include\windows.inc
include F:\MASM32\masm32\include\kernel32.inc
InitPaths3D PROTO
LoadAnimPack3D PROTO :DWORD,:DWORD
FreeAnimPack3D PROTO :DWORD
InitNativeSlots3D PROTO
FreeNativeSlots3D PROTO
LoadNativeWheelArt3D PROTO
FreeNativeWheelArt3D PROTO
LoadNativeCoinArt3D PROTO
FreeNativeCoinArt3D PROTO
.data
streetPack dd 6 dup(0)
streetPath db "assets\animations\hall\street-life-v4.bin",0
missingPath db "assets\animations\hall\__missing_street_probe__.bin",0
cardFurniturePath db "assets\animations\hall\card-table-v5.bin",0
wheelFurniturePath db "assets\animations\hall\roulette-table-v5.bin",0
backFurniturePath db "assets\animations\hall\backroom-table-v5.bin",0
skillFurniturePath db "assets\animations\hall\skill-cabinet-v5.bin",0
chairFurniturePath db "assets\animations\hall\lounge-chair-v5.bin",0
lampFurniturePath db "assets\animations\hall\lamp-table-v5.bin",0
ropeFurniturePath db "assets\animations\hall\velvet-rope-v5.bin",0
slotFurniturePath db "assets\animations\hall\slot-cabinets-v5.bin",0
furniturePaths dd OFFSET cardFurniturePath,320,208,1
dd OFFSET wheelFurniturePath,288,268,1
dd OFFSET backFurniturePath,304,236,1
dd OFFSET skillFurniturePath,224,368,1
dd OFFSET chairFurniturePath,240,256,1
dd OFFSET lampFurniturePath,192,224,1
dd OFFSET ropeFurniturePath,288,192,1
dd OFFSET slotFurniturePath,224,256,3
.code
RunStreetAssetProbe PROC
call InitPaths3D
invoke LoadAnimPack3D,OFFSET streetPack,OFFSET streetPath
cmp eax,1
jne probe_failed
cmp streetPack[4],192
jne probe_failed
cmp streetPack[8],320
jne probe_failed
cmp streetPack[12],40
jne probe_failed
cmp streetPack[20],0
je probe_failed
invoke FreeAnimPack3D,OFFSET streetPack
; The newly playable cabinet must resolve its packs from these launch paths too.
call InitNativeSlots3D
cmp eax,1
jne probe_failed
call FreeNativeSlots3D
call LoadNativeWheelArt3D
cmp eax,1
jne probe_failed
call FreeNativeWheelArt3D
call LoadNativeCoinArt3D
cmp eax,1
jne probe_failed
call FreeNativeCoinArt3D
mov esi,OFFSET furniturePaths
mov edi,8
probe_furniture:
invoke LoadAnimPack3D,OFFSET streetPack,[esi]
cmp eax,1
jne probe_failed
mov eax,[esi+4]
cmp streetPack[4],eax
jne probe_failed
mov eax,[esi+8]
cmp streetPack[8],eax
jne probe_failed
mov eax,[esi+12]
cmp streetPack[12],eax
jne probe_failed
cmp streetPack[20],0
je probe_failed
invoke FreeAnimPack3D,OFFSET streetPack
add esi,16
dec edi
jnz probe_furniture
; Rejecting a missing asset must not leave a plausible loaded header behind.
invoke LoadAnimPack3D,OFFSET streetPack,OFFSET missingPath
test eax,eax
jnz probe_failed
xor ecx,ecx
probe_empty:
cmp streetPack[ecx*4],0
jne probe_failed
inc ecx
cmp ecx,6
jb probe_empty
invoke ExitProcess,0
probe_failed:
invoke ExitProcess,1
RunStreetAssetProbe ENDP
END