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.
109 lines
3.2 KiB
NASM
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
|