KAZIK/tools/tests/street_asset_probe.asm
Artvasil09 881a0061dc Add native NPC visitors with contracts, Clover slots, Pyramid, and party table scenes
Implement 32x32 BFS visitor navigation and daily contracts system with companion .npc journals; add native assembly scenes for Clover slots, Pyramid cards, Blackjack Party and Russian Party; package animation and sprite packs; add comprehensive offline test suites and rebuild shipping binaries.
2026-10-13 09:47:33 +03:00

109 lines
3.2 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
InitNativeClover3D PROTO
FreeNativeClover3D PROTO
InitPool3D PROTO
FreePyramidAssets3D 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 InitNativeClover3D
cmp eax,1
jne probe_failed
call FreeNativeClover3D
call InitPool3D
call FreePyramidAssets3D
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