- Native player-controlled stairs, upper lounge bar, and Hell Tower infernal portal - Cabaret stage with musical acts, audience seating, and interaction - Dedicated cash/trophy wall terminals with native balance and achievement screens - Projecting 3D wall lanterns with ray/plane intersection - Six roaming guests with seated poses and card rank rendering updates - Synchronized launcher hash and updated binaries
179 lines
6.3 KiB
NASM
179 lines
6.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
|
|
InitNativeClover3D PROTO
|
|
FreeNativeClover3D PROTO
|
|
InitPool3D PROTO
|
|
FreePyramidAssets3D PROTO
|
|
LoadNativeWheelArt3D PROTO
|
|
FreeNativeWheelArt3D PROTO
|
|
LoadNativeCoinArt3D PROTO
|
|
FreeNativeCoinArt3D PROTO
|
|
LoadNativeDiceArt3D PROTO
|
|
FreeNativeDiceArt3D PROTO
|
|
LoadScratchArt3D PROTO
|
|
FreeScratchArt3D PROTO
|
|
LoadTerminalArt3D PROTO
|
|
FreeTerminalArt3D PROTO
|
|
ResolveTerminalSurface3D PROTO :DWORD
|
|
.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
|
|
pyramidTableProbePath db "assets\animations\pyramid\table-v2.bin",0
|
|
pyramidBallsProbePath db "assets\animations\pyramid\balls-v1.bin",0
|
|
poolBallsProbePath db "assets\animations\pyramid\pool-balls-v1.bin",0
|
|
wakeRockerProbePath db "assets\animations\arrival\wake-rocker-v2.bin",0
|
|
wakeLighterProbePath db "assets\animations\arrival\wake-lighter-v1.bin",0
|
|
wakeKneesProbePath db "assets\animations\arrival\wake-knees-v1.bin",0
|
|
wakeSleeveProbePath db "assets\animations\arrival\wake-sleeve-v1.bin",0
|
|
alleyMaterialsProbePath db "assets\animations\arrival\alley-materials-v1.bin",0
|
|
worldDressingProbePath db "assets\animations\hall\world-dressing-v6.bin",0
|
|
terminalWorldProbePath db "assets\animations\hall\terminals-v2.bin",0
|
|
terminalScreenProbePath db "assets\animations\hall\terminal-screen-v1.bin",0
|
|
guestCastProbePath db "assets\animations\hall\guest-cast-v1.bin",0
|
|
cabaretProbePath db "assets\animations\hall\cabaret-ensemble-v1.bin",0
|
|
cabaretPianoProbePath db "assets\animations\hall\cabaret-piano-v1.bin",0
|
|
cabaretGuitarProbePath db "assets\animations\hall\cabaret-guitar-v1.bin",0
|
|
upperMaterialsProbePath db "assets\animations\hall\upper-materials-v1.bin",0
|
|
upperGamesProbePath db "assets\animations\hall\upper-games-v2.bin",0
|
|
upperBarProbePath db "assets\animations\hall\upper-bar-v2.bin",0
|
|
upperPortalProbePath db "assets\animations\hall\upper-portal-v3.bin",0
|
|
upperLeversProbePath db "assets\animations\hall\upper-levers-v3.bin",0
|
|
upperBraziersProbePath db "assets\animations\hall\upper-braziers-v3.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
|
|
dd OFFSET pyramidTableProbePath,640,480,1
|
|
dd OFFSET pyramidBallsProbePath,12,12,8
|
|
dd OFFSET poolBallsProbePath,12,12,16
|
|
dd OFFSET wakeRockerProbePath,192,320,32
|
|
dd OFFSET wakeLighterProbePath,256,256,16
|
|
dd OFFSET wakeKneesProbePath,640,240,1
|
|
dd OFFSET wakeSleeveProbePath,256,384,1
|
|
dd OFFSET alleyMaterialsProbePath,128,128,4
|
|
dd OFFSET worldDressingProbePath,128,128,3
|
|
dd OFFSET terminalWorldProbePath,256,512,4
|
|
dd OFFSET terminalScreenProbePath,640,480,1
|
|
dd OFFSET guestCastProbePath,128,224,36
|
|
dd OFFSET cabaretProbePath,160,256,12
|
|
dd OFFSET cabaretPianoProbePath,384,256,4
|
|
dd OFFSET cabaretGuitarProbePath,160,256,4
|
|
dd OFFSET upperMaterialsProbePath,256,256,4
|
|
dd OFFSET upperGamesProbePath,320,224,2
|
|
dd OFFSET upperBarProbePath,160,256,2
|
|
dd OFFSET upperPortalProbePath,256,512,13
|
|
dd OFFSET upperLeversProbePath,128,224,6
|
|
dd OFFSET upperBraziersProbePath,128,256,4
|
|
furniturePathCount equ ($-furniturePaths)/16
|
|
.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
|
|
call LoadNativeDiceArt3D
|
|
cmp eax,1
|
|
jne probe_failed
|
|
call FreeNativeDiceArt3D
|
|
call LoadScratchArt3D
|
|
cmp eax,1
|
|
jne probe_failed
|
|
call FreeScratchArt3D
|
|
call LoadTerminalArt3D
|
|
invoke ResolveTerminalSurface3D,118
|
|
test eax,eax
|
|
jz probe_failed
|
|
cmp ecx,256
|
|
jne probe_failed
|
|
cmp edx,512
|
|
jne probe_failed
|
|
call FreeTerminalArt3D
|
|
invoke ResolveTerminalSurface3D,118
|
|
test eax,eax
|
|
jnz probe_failed
|
|
mov esi,OFFSET furniturePaths
|
|
mov edi,furniturePathCount
|
|
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
|