KAZIK/src_graphics/city_arrival_data.inc
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

171 lines
7.9 KiB
PHP

CITY_BLACK equ 0
CITY_WAKE equ 1
CITY_SMOKE equ 2
CITY_TOSS equ 3
CITY_TURN_ALLEY equ 4
CITY_ALLEY equ 5
CITY_TURN_STREET equ 6
CITY_STREET equ 7
CITY_TURN_DOOR equ 8
CITY_DOOR equ 9
CITY_BUILDING_STOREYS equ 7
CITY_STOREY_HEIGHT equ FP_1*6/5
LoadCityArrival3D PROTO
RenderCityArrival3D PROTO
HandleCityApproach3D PROTO
PositionCityCamera3D PROTO
FadeCityFrame3D PROTO :DWORD
CITY_LIGHT_W equ 512
CITY_LIGHT_H equ 256
BuildCityLighting3D PROTO
AddCityLight3D PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
SampleCityLight3D PROTO :DWORD,:DWORD
ShadeCityGround3D PROTO :DWORD,:DWORD,:DWORD,:DWORD
IsCityEmissive3D PROTO :DWORD,:DWORD
include src_graphics\city_map.inc
.data
worldMap3D dd OFFSET casinoMap
viewHorizon3D dd HALF_H
floorTexture3D dd 3
outdoorRender3D dd 0
cityLighting3D dd 1
cityLightReady3D dd 0
viewEye3D dd FP_1*17/20
viewCeiling3D dd FP_1*5/2
cityPhase3D dd CITY_BLACK
cityTime3D dd 0
cityClock3D dd 0
cityDurations3D dd 700,3100,2400,1500,1200,5400,900,7500,900,2800
cityTilesPack3D AnimPack3D <>
cityHandsPack3D AnimPack3D <>
cityPropsPack3D AnimPack3D <>
citySmokePack3D AnimPack3D <>
cityCarsPack3D AnimPack3D <>
cityBinPack3D AnimPack3D <>
cityCloudPack3D AnimPack3D <>
cityTilesPath3D db "assets\animations\arrival\city-tiles-v4.bin",0
cityHandsPath3D db "assets\animations\arrival\city-hands.bin",0
cityPropsPath3D db "assets\animations\arrival\city-props.bin",0
citySmokePath3D db "assets\animations\arrival\city-smoke.bin",0
cityCarsPath3D db "assets\animations\arrival\city-cars.bin",0
cityBinPath3D db "assets\animations\arrival\city-bin-materials.bin",0
cityCloudPath3D db "assets\animations\arrival\city-clouds.bin",0
include src_graphics\city_smoke_anchors.inc
cityFingerX3D dd 104,116,132,148,151,140,130,110,100,94,92,90,108,106,110,112
cityFingerY3D dd 128,111,91,72,55,45,32,27,69,77,77,90,95,116,130,135
cityMouthX3D dd 0
cityMouthY3D dd 0
cityHandX3D dd 0
cityHandY3D dd 0
cityCigaretteX3D dd 0
cityCigaretteY3D dd 0
cityBackdrop3D dd 0
CityProp3D STRUCT
posX dd ?
posY dd ?
worldW dd ?
worldH dd ?
frame dd ?
asset dd ?
groundZ dd 0
CityProp3D ENDS
CITY_PROP_COUNT equ 47
CITY_FIRST_CAR equ 9
CITY_TRAFFIC_EAST equ 14
CITY_TRAFFIC_WEST equ 15
CITY_PEDESTRIAN_COUNT equ 6
CityWalkRoute3D STRUCT
objectIndex dd ?
minX dd ?
maxX dd ?
curbY dd ?
phaseOffset dd ?
halfPeriod dd ?
firstFrame dd ?
poseMs dd ?
CityWalkRoute3D ENDS
; Crops are measured from actual opaque pixels once, before the intro starts.
CitySpriteCrop3D STRUCT
pixelX dd ?
pixelY dd ?
pixelW dd ?
pixelH dd ?
CitySpriteCrop3D ENDS
cityStreetCrops3D CitySpriteCrop3D 8 dup(<>)
cityObjects3D CityProp3D <(8*FP_1+FP_1/3),(26*FP_1+FP_1/3),FP_1*3/2,FP_1*5/4,0,OFFSET cityPropsPack3D>
CityProp3D <(9*FP_1+FP_1/3),(27*FP_1),FP_1,FP_1*3/4,1,OFFSET cityPropsPack3D>
CityProp3D <(8*FP_1+FP_1/8),(27*FP_1),FP_1/2,FP_1/3,2,OFFSET cityPropsPack3D>
CityProp3D <(9*FP_1+FP_1*7/8),(25*FP_1+FP_HALF),FP_1/3,FP_1*3/2,4,OFFSET cityPropsPack3D>
CityProp3D <(9*FP_1+FP_HALF),(22*FP_1),FP_1/2,FP_1/2,5,OFFSET cityPropsPack3D>
CityProp3D <11*FP_1,FP_1*333/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
CityProp3D <17*FP_1,FP_1*259/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
CityProp3D <25*FP_1,FP_1*333/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
CityProp3D <(27*FP_1),(12*FP_1+FP_HALF),FP_1*3/4,FP_1/2,5,OFFSET cityPropsPack3D>
CityProp3D <(12*FP_1),(16*FP_1),FP_1*3,FP_1*9/5,0,OFFSET cityCarsPack3D>
CityProp3D <(19*FP_1),(16*FP_1),FP_1*3,FP_1*9/5,8,OFFSET cityCarsPack3D>
CityProp3D <(26*FP_1),(16*FP_1),FP_1*3,FP_1*9/5,0,OFFSET cityCarsPack3D>
CityProp3D <14*FP_1,FP_1*333/20,FP_1*3/5,FP_1/2,33,OFFSET hallStreetLife3D>
CityProp3D <23*FP_1,FP_1*259/20,FP_1*3/5,FP_1*11/10,38,OFFSET hallStreetLife3D>
CityProp3D <4*FP_1,14*FP_1,FP_1*3,FP_1*9/5,8,OFFSET cityCarsPack3D>
CityProp3D <28*FP_1,15*FP_1+FP_1/5,FP_1*3,FP_1*9/5,0,OFFSET cityCarsPack3D>
cityNearMan3D LABEL BYTE
CityProp3D <12*FP_1,FP_1*253/20,FP_1*7/10,FP_1*27/20,0,OFFSET hallStreetLife3D>
cityFarWoman3D LABEL BYTE
CityProp3D <26*FP_1,FP_1*169/10,FP_1*4/5,FP_1*7/5,16,OFFSET hallStreetLife3D>
CityProp3D <26*FP_1,FP_1*259/20,FP_1*4/5,FP_1,34,OFFSET hallStreetLife3D>
CityProp3D <10*FP_1+FP_HALF,FP_1*333/20,FP_1*4/5,FP_1*6/5,35,OFFSET hallStreetLife3D>
CityProp3D <21*FP_1,FP_1*259/20,FP_1/4,FP_1*23/50,36,OFFSET hallStreetLife3D>
CityProp3D <28*FP_1,FP_1*333/20,2*FP_1,FP_1*17/10,39,OFFSET hallStreetLife3D>
CityProp3D <34*FP_1,FP_1*259/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
; Another walking pair occupies the near and far curbs, not the traffic lanes.
cityNearWoman3D LABEL BYTE
CityProp3D <14*FP_1,FP_1*63/5,FP_1*4/5,FP_1*7/5,16,OFFSET hallStreetLife3D>
cityFarMan3D LABEL BYTE
CityProp3D <22*FP_1,FP_1*337/20,FP_1*7/10,FP_1*27/20,0,OFFSET hallStreetLife3D>
; Near-side street furniture is staggered along the route and clear of its center.
CityProp3D <12*FP_1,FP_1*259/20,FP_1*3/5,FP_1/2,33,OFFSET hallStreetLife3D>
CityProp3D <14*FP_1+FP_HALF,FP_1*259/20,FP_1*4/5,FP_1*6/5,35,OFFSET hallStreetLife3D>
CityProp3D <19*FP_1,FP_1*259/20,FP_1*4/5,FP_1,34,OFFSET hallStreetLife3D>
CityProp3D <16*FP_1,FP_1*259/20,FP_1/4,FP_1*23/50,36,OFFSET hallStreetLife3D>
CityProp3D <18*FP_1,FP_1*259/20,FP_1/4,FP_1*23/50,36,OFFSET hallStreetLife3D>
CityProp3D <24*FP_1,FP_1*259/20,FP_1/4,FP_1*23/50,36,OFFSET hallStreetLife3D>
; Independent outdoor walkers replace the stationary indoor visitor billboards.
cityEntryMan3D LABEL BYTE
CityProp3D <20*FP_1+FP_HALF,9*FP_1,FP_1*7/10,FP_1*27/20,0,OFFSET hallStreetLife3D>
cityEntryWoman3D LABEL BYTE
CityProp3D <24*FP_1+FP_HALF,9*FP_1,FP_1*4/5,FP_1*7/5,16,OFFSET hallStreetLife3D>
CityProp3D <13*FP_1,FP_1*333/20,FP_1*4/5,FP_1,34,OFFSET hallStreetLife3D>
CityProp3D <21*FP_1,FP_1*333/20,FP_1*4/5,FP_1*6/5,35,OFFSET hallStreetLife3D>
CityProp3D <24*FP_1,FP_1*333/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
CityProp3D <27*FP_1,FP_1*259/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
; These props continue beyond the first intersection, where the camera can see them.
CityProp3D <33*FP_1,FP_1*333/20,FP_1*3/5,FP_1/2,33,OFFSET hallStreetLife3D>
CityProp3D <37*FP_1,FP_1*259/20,FP_1*4/5,FP_1*6/5,35,OFFSET hallStreetLife3D>
CityProp3D <36*FP_1,FP_1*333/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
CityProp3D <39*FP_1,FP_1*259/20,FP_1*3/5,FP_1*11/10,38,OFFSET hallStreetLife3D>
CityProp3D <44*FP_1,FP_1*259/20,FP_1,3*FP_1,3,OFFSET cityPropsPack3D>
CityProp3D <45*FP_1,FP_1*333/20,2*FP_1,FP_1*17/10,39,OFFSET hallStreetLife3D>
CityProp3D <20*FP_1,FP_1*333/20,2*FP_1,FP_1*17/10,39,OFFSET hallStreetLife3D>
CityProp3D <26*FP_1,FP_1*333/20,FP_1/4,FP_1*23/50,36,OFFSET hallStreetLife3D>
CityProp3D <19*FP_1,FP_1*333/20,FP_1/4,FP_1*23/50,36,OFFSET hallStreetLife3D>
CityProp3D <13*FP_1,FP_1*259/20,FP_1/4,FP_1*23/50,36,OFFSET hallStreetLife3D>
cityObjectsEnd3D LABEL BYTE
.errnz ((cityObjectsEnd3D-cityObjects3D)/SIZEOF CityProp3D)-CITY_PROP_COUNT
cityWalkRoutes3D CityWalkRoute3D <(cityNearMan3D-cityObjects3D)/SIZEOF CityProp3D,10*FP_1,28*FP_1,FP_1*253/20,0,32000,0,140>
CityWalkRoute3D <(cityFarWoman3D-cityObjects3D)/SIZEOF CityProp3D,10*FP_1,28*FP_1,FP_1*169/10,32000,32000,16,160>
CityWalkRoute3D <(cityNearWoman3D-cityObjects3D)/SIZEOF CityProp3D,11*FP_1,27*FP_1,FP_1*63/5,21000,30000,16,155>
CityWalkRoute3D <(cityFarMan3D-cityObjects3D)/SIZEOF CityProp3D,10*FP_1,28*FP_1,FP_1*337/20,13000,34000,0,145>
CityWalkRoute3D <(cityEntryMan3D-cityObjects3D)/SIZEOF CityProp3D,20*FP_1+FP_1/5,21*FP_1+FP_1/5,9*FP_1,0,4000,0,140>
CityWalkRoute3D <(cityEntryWoman3D-cityObjects3D)/SIZEOF CityProp3D,23*FP_1+FP_1*4/5,24*FP_1+FP_1*4/5,9*FP_1,4000,5200,16,160>
IFDEF CASINO_ACTION_TEST
cityVisiblePixels3D dd CITY_PROP_COUNT dup(0)
ENDIF
cityObjectOrder3D dd CITY_PROP_COUNT dup(0)
cityObjectDepth3D dd CITY_PROP_COUNT dup(0)
.data?
cityLightMap3D dd CITY_LIGHT_W*CITY_LIGHT_H dup(?)
cityDepthBuffer3D dd SCREEN_SIZE dup(?)
IFDEF CASINO_ACTION_TEST
cityPixelOwner3D dd SCREEN_SIZE dup(?)
ENDIF
.code