KAZIK/src_graphics/city_arrival_data.inc
Artvasil09 3ad5bf4c9d Develop assembly-only casino scenes and native games
Add native Durak, poker, blackjack, roulette, Buckshot and billiards scenes with animation assets and regression tests. Improve arrival, city, hall, profiles, shops, audio and exit handling; remove the portable C game core and refresh shipping executables.
2026-10-08 22:39:19 +03:00

167 lines
7.6 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 4
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,FP_1*9/5,0,OFFSET hallStreetLife3D>
cityFarWoman3D LABEL BYTE
CityProp3D <26*FP_1,FP_1*169/10,FP_1*6/5,2*FP_1,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*6/5,2*FP_1,16,OFFSET hallStreetLife3D>
cityFarMan3D LABEL BYTE
CityProp3D <22*FP_1,FP_1*337/20,FP_1,FP_1*9/5,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>
; Waiting guests flank the entrance instead of blocking it.
CityProp3D <20*FP_1+FP_HALF,9*FP_1,FP_1*17/20,FP_1*17/10,1,OFFSET hallPatrons3D>
CityProp3D <24*FP_1+FP_HALF,9*FP_1,FP_1*17/20,FP_1*17/10,5,OFFSET hallPatrons3D>
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>
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