MODE_BAR equ 14 MODE_STAIRS equ 15 INTERACT_BAR equ 21 INTERACT_BASEMENT equ 22 INTERACT_UPSTAIRS equ 23 INTERACT_BILLIARDS equ 24 RenderCeilingAndFloor PROTO RenderSprites PROTO InitHall3D PROTO LoadHallAssets3D PROTO FreeHallAssets3D PROTO CheckHallInteractions3D PROTO TriggerHallInteraction3D PROTO RenderHall3D PROTO HandleBar3D PROTO RenderBar3D PROTO HandleStairs3D PROTO RenderStairs3D PROTO RenderCityGuards3D PROTO CanWalkHall3D PROTO :DWORD,:DWORD RenderCityFacade3D PROTO UpdateHall3D PROTO UpdatePatrons3D PROTO RenderPatrons3D PROTO ResolveWorldSurface3D PROTO :DWORD include src_graphics\hall_layout.inc .data ALIGN 4 tableInvDelta3D dd 241 dup(0) tableStepRatio3D dd 241 dup(0) hallSign3D AnimPack3D <> hallSignPath3D db "assets\animations\hall\sign.bin",0 hallCityDetail3D AnimPack3D <> hallCityDetailPath3D db "assets\animations\hall\city-detail.bin",0 hallRoomMaterials3D AnimPack3D <> hallRoomMaterialsPath3D db "assets\animations\hall\room-materials.bin",0 hallPatrons3D AnimPack3D <> hallPatronsPath3D db "assets\animations\hall\patrons.bin",0 hallStreetLife3D AnimPack3D <> hallStreetLifePath3D db "assets\animations\hall\street-life-v4.bin",0 hallRoomHD3D AnimPack3D <> hallArchitecture3D AnimPack3D <> hallArchitectureHD3D AnimPack3D <> hallDecorPack3D AnimPack3D <> hallRoomHDPath3D db "assets\animations\hall\room-materials-hd.bin",0 hallArchitecturePath3D db "assets\animations\hall\architecture.bin",0 hallArchitectureHDPath3D db "assets\animations\hall\architecture-hd.bin",0 hallDecorPath3D db "assets\animations\hall\architecture-props.bin",0 patronClock3D dd 0 HALL_PATRON_COUNT equ 16 hallGuests3D CityProp3D <18*FP_1,18*FP_1,FP_1*3/5,FP_1*6/5,0,OFFSET hallPatrons3D> CityProp3D <22*FP_1,20*FP_1,FP_1*3/5,FP_1*6/5,4,OFFSET hallPatrons3D> CityProp3D <3*FP_1,27*FP_1+FP_HALF,FP_1*3/5,FP_1*4/5,8,OFFSET hallPatrons3D> CityProp3D <10*FP_1,27*FP_1+FP_HALF,FP_1*3/5,FP_1*4/5,10,OFFSET hallPatrons3D> CityProp3D <13*FP_1+FP_HALF,8*FP_1+FP_HALF,FP_1*3/5,FP_1*6/5,12,OFFSET hallPatrons3D> CityProp3D <21*FP_1+FP_HALF,8*FP_1+FP_HALF,FP_1*3/5,FP_1*6/5,13,OFFSET hallPatrons3D> CityProp3D <5*FP_1,15*FP_1,FP_1*3/5,FP_1*6/5,12,OFFSET hallPatrons3D> CityProp3D <10*FP_1,25*FP_1,FP_1*3/5,FP_1*6/5,13,OFFSET hallPatrons3D> CityProp3D <4*FP_1,27*FP_1,2*FP_1,2*FP_1,14,OFFSET hallPatrons3D> CityProp3D <9*FP_1,27*FP_1,2*FP_1,2*FP_1,14,OFFSET hallPatrons3D> CityProp3D <4*FP_1,24*FP_1+FP_1*4/5,FP_1/2,FP_1*3/5,15,OFFSET hallPatrons3D> CityProp3D <8*FP_1,24*FP_1+FP_1*4/5,FP_1/2,FP_1*3/5,15,OFFSET hallPatrons3D> CityProp3D <11*FP_1+FP_HALF,8*FP_1+FP_HALF,FP_1*3/5,FP_1*4/5,8,OFFSET hallPatrons3D> CityProp3D <19*FP_1+FP_HALF,8*FP_1+FP_HALF,FP_1*3/5,FP_1*4/5,10,OFFSET hallPatrons3D> CityProp3D <23*FP_1+FP_HALF,8*FP_1+FP_HALF,FP_1*3/5,FP_1*4/5,8,OFFSET hallPatrons3D> CityProp3D <15*FP_1+FP_HALF,10*FP_1+FP_HALF,FP_1*3/5,FP_1*4/5,10,OFFSET hallPatrons3D> HALL_LIGHT_COUNT equ 6 hallLights3D CityProp3D <12*FP_1+FP_HALF,8*FP_1,FP_1*3/4,FP_1*13/20,0,OFFSET hallDecorPack3D,FP_1*37/20> CityProp3D <16*FP_1+FP_HALF,10*FP_1,FP_1*3/4,FP_1*13/20,0,OFFSET hallDecorPack3D,FP_1*37/20> CityProp3D <20*FP_1+FP_HALF,8*FP_1,FP_1*3/4,FP_1*13/20,0,OFFSET hallDecorPack3D,FP_1*37/20> CityProp3D <24*FP_1+FP_HALF,8*FP_1,FP_1*3/4,FP_1*13/20,0,OFFSET hallDecorPack3D,FP_1*37/20> CityProp3D <6*FP_1,23*FP_1,FP_1*3/4,FP_1*13/20,0,OFFSET hallDecorPack3D,FP_1*37/20> CityProp3D <9*FP_1,27*FP_1,FP_1*3/4,FP_1*13/20,0,OFFSET hallDecorPack3D,FP_1*37/20> bunkerDisplay3D CityProp3D <19*FP_1,16*FP_1+FP_HALF,FP_1*6/5,FP_1*6/5,3,OFFSET hallDecorPack3D> bunkerDesk3D CityProp3D <15*FP_1,14*FP_1+FP_HALF,FP_1*3/2,FP_1,4,OFFSET hallDecorPack3D,FP_1/2> hallLevel3D dd 0 hallBartender3D AnimPack3D <> hallProps3D AnimPack3D <> hallDrink3D AnimPack3D <> hallBartenderPath3D db "assets\animations\hall\bartender-v4.bin",0 hallPropsPath3D db "assets\animations\hall\props.bin",0 hallDrinkPath3D db "assets\animations\hall\drink-v4.bin",0 hallLegacyPack3D AnimPack3D <314D4E41h,128,128,1,128*128*4,0> hallSpriteTemp3D CityProp3D <> ; Tight sprite bounds: table height includes its legs; cabinets are not table-sized. hallSpriteWidths3D dd 3 dup(FP_1*3/5),4 dup(FP_1*8/5),2 dup(FP_1),3 dup(FP_1*8/5),FP_1,FP_1*8/5,FP_1,FP_1,FP_1,5 dup(FP_1*8/5) hallSpriteHeights3D dd 3 dup(FP_1*6/5),4 dup(FP_1*17/20),2 dup(FP_1*3/2),3 dup(FP_1*17/20),FP_1*9/5,FP_1*17/20,FP_1,FP_1*3/2,FP_1*3/2,5 dup(FP_1*17/20) hallCardFurniture3D AnimPack3D <> hallWheelFurniture3D AnimPack3D <> hallBackFurniture3D AnimPack3D <> hallSkillFurniture3D AnimPack3D <> hallChairFurniture3D AnimPack3D <> hallLampFurniture3D AnimPack3D <> hallRopeFurniture3D AnimPack3D <> hallSlotFurniture3D AnimPack3D <> hallCardFurniturePath3D db "assets\animations\hall\card-table-v5.bin",0 hallWheelFurniturePath3D db "assets\animations\hall\roulette-table-v5.bin",0 hallBackFurniturePath3D db "assets\animations\hall\backroom-table-v5.bin",0 hallSkillFurniturePath3D db "assets\animations\hall\skill-cabinet-v5.bin",0 hallChairFurniturePath3D db "assets\animations\hall\lounge-chair-v5.bin",0 hallLampFurniturePath3D db "assets\animations\hall\lamp-table-v5.bin",0 hallRopeFurniturePath3D db "assets\animations\hall\velvet-rope-v5.bin",0 hallSlotFurniturePath3D db "assets\animations\hall\slot-cabinets-v5.bin",0 ; Station order matches InitializeCasinoSprites3D; zero retains animated legacy art. hallStationPacks3D dd 3 dup(0),OFFSET hallCardFurniture3D,OFFSET hallWheelFurniture3D dd 2 dup(OFFSET hallCardFurniture3D),2 dup(OFFSET hallSlotFurniture3D) dd 3 dup(OFFSET hallCardFurniture3D),OFFSET hallSkillFurniture3D,OFFSET hallCardFurniture3D dd 3 dup(0),OFFSET hallBackFurniture3D,OFFSET hallCardFurniture3D dd 2 dup(OFFSET hallBackFurniture3D),0 HALL_DECOR_COUNT equ 12 hallLoungeDecor3D CityProp3D <13*FP_1,19*FP_1,FP_1*3/4,FP_1,0,OFFSET hallChairFurniture3D> CityProp3D <14*FP_1,19*FP_1,FP_1*3/5,FP_1*7/10,0,OFFSET hallLampFurniture3D> CityProp3D <15*FP_1,19*FP_1,FP_1*3/4,FP_1,0,OFFSET hallChairFurniture3D> CityProp3D <27*FP_1,18*FP_1,FP_1*3/4,FP_1,0,OFFSET hallChairFurniture3D> CityProp3D <28*FP_1,18*FP_1,FP_1*3/5,FP_1*7/10,0,OFFSET hallLampFurniture3D> CityProp3D <29*FP_1,18*FP_1,FP_1*3/4,FP_1,0,OFFSET hallChairFurniture3D> CityProp3D <3*FP_1,18*FP_1,FP_1*3/4,FP_1,0,OFFSET hallChairFurniture3D> CityProp3D <4*FP_1,18*FP_1,FP_1*3/5,FP_1*7/10,0,OFFSET hallLampFurniture3D> CityProp3D <5*FP_1,18*FP_1,FP_1*3/4,FP_1,0,OFFSET hallChairFurniture3D> CityProp3D <6*FP_1,6*FP_1,FP_1*9/5,FP_1*7/10,0,OFFSET hallRopeFurniture3D> CityProp3D <26*FP_1,6*FP_1,FP_1*9/5,FP_1*7/10,0,OFFSET hallRopeFurniture3D> CityProp3D <28*FP_1,22*FP_1,FP_1*9/5,FP_1*7/10,0,OFFSET hallRopeFurniture3D> HALL_PROP_COUNT equ 19 hallObjects3D CityProp3D <12*FP_1+FP_HALF,7*FP_1,FP_1*3/5,FP_1*6/5,0,OFFSET hallProps3D> CityProp3D <16*FP_1+FP_HALF,9*FP_1,FP_1*3/5,FP_1*6/5,2,OFFSET hallProps3D> CityProp3D <20*FP_1+FP_HALF,7*FP_1,FP_1*3/5,FP_1*6/5,1,OFFSET hallProps3D> CityProp3D <24*FP_1+FP_HALF,7*FP_1,FP_1*3/5,FP_1*6/5,0,OFFSET hallProps3D> CityProp3D <6*FP_1,22*FP_1+FP_HALF,FP_1,FP_1,0,OFFSET hallBartender3D,FP_1*9/20> CityProp3D <27*FP_1,25*FP_1,FP_1*5/2,FP_1,4,OFFSET hallProps3D> CityProp3D <28*FP_1+FP_HALF,10*FP_1+FP_HALF,FP_1*3/2,FP_1*9/5,5,OFFSET hallProps3D> CityProp3D <3*FP_1,4*FP_1,FP_1*5/2,FP_1,6,OFFSET hallProps3D> CityProp3D <27*FP_1,4*FP_1,FP_1*5/2,FP_1,6,OFFSET hallProps3D> CityProp3D <3*FP_1,29*FP_1,FP_1*5/2,FP_1,6,OFFSET hallProps3D> CityProp3D <10*FP_1,29*FP_1,FP_1*5/2,FP_1,6,OFFSET hallProps3D> CityProp3D <11*FP_1+FP_HALF,11*FP_1+FP_HALF,FP_1/2,FP_1*5/2,7,OFFSET hallProps3D> CityProp3D <24*FP_1+FP_HALF,11*FP_1+FP_HALF,FP_1/2,FP_1*5/2,7,OFFSET hallProps3D> CityProp3D <11*FP_1+FP_HALF,19*FP_1+FP_HALF,FP_1/2,FP_1*5/2,7,OFFSET hallProps3D> CityProp3D <24*FP_1+FP_HALF,19*FP_1+FP_HALF,FP_1/2,FP_1*5/2,7,OFFSET hallProps3D> CityProp3D <16*FP_1,2*FP_1+FP_HALF,10*FP_1,FP_1*5/2,8,OFFSET hallProps3D> CityProp3D <6*FP_1,13*FP_1,FP_1*3/5,FP_1*6/5,0,OFFSET hallProps3D> CityProp3D <10*FP_1,14*FP_1,FP_1*3/5,FP_1*6/5,1,OFFSET hallProps3D> CityProp3D <14*FP_1,14*FP_1,FP_1*3/5,FP_1*6/5,2,OFFSET hallProps3D> bunkerMerchant3D CityProp3D <16*FP_1,13*FP_1,FP_1*3/2,FP_1*6/5,0,OFFSET merchantPack3D,FP_1/8> bunkerDoor3D CityProp3D <16*FP_1,27*FP_1,FP_1*3/2,FP_1*7/5,5,OFFSET hallProps3D,FP_1> cityGuardLeft3D CityProp3D <21*FP_1+FP_1*4/5,8*FP_1+FP_HALF,FP_1*17/20,FP_1*7/5,0,OFFSET guardPack3D> cityGuardRight3D CityProp3D <23*FP_1+FP_1/5,8*FP_1+FP_HALF,FP_1*17/20,FP_1*7/5,0,OFFSET guardPack3D> hallBarPrompt3D db 69,58,32,202,206,202,210,197,201,203,220,205,219,201,32,193,192,208,0 hallBunkerPrompt3D db 69,58,32,207,206,196,194,192,203,32,47,32,204,192,195,192,199,200,205,0 hallUpPrompt3D db 69,58,32,205,192,194,197,208,213,0 hallPoolPrompt3D db 69,58,32,193,200,203,220,223,208,196,0 barName3D db 193,192,208,32,209,210,192,208,206,195,206,32,195,206,208,206,196,192,0 barDrinks3D db 49,32,213,192,201,193,206,203,32,36,49,48,48,0 barDrinks23D db 50,32,202,206,202,210,197,201,203,220,32,36,50,48,48,0 barDrinks33D db 51,32,194,206,196,192,32,36,48,0 barPoor3D db 204,192,203,206,32,212,200,216,197,202,0 barMixText3D db 209,204,197,216,200,194,192,197,204,0 barDrinkText3D db 194,192,216,197,32,199,196,206,208,206,194,220,197,0 barTime3D dd 0 barPhase3D dd 0 barSelection3D dd 0 barPrice3D dd 100,200,0 stairsTime3D dd 0 stairsReturnX3D dd 0 stairsReturnY3D dd 0 stairsReturnAngle3D dd 0 include src_graphics\world_dressing_data.inc include src_graphics\terminal_data.inc include src_graphics\hall_expansion_data.inc include src_graphics\fortune_room_data.inc include src_graphics\fortune_dialog_data.inc include src_graphics\cabaret_data.inc .code