KAZIK/src_graphics/bowling_play_data.inc
Artvasil09 7e081beeca feat: enhance bowling physics, audio, ball weight selection, and visitor cast routines
- Bowling feel: impulse contact solver, string pinsetter cycle, in-world lengthwise return rack and visible ball return lift

- Ball weights: 4/5/6/7 kg selection with equal launch work physics, momentum balance, and projected picking

- Audio: dedicated MCI channels with 7 synthesized waveaudio cues (release, rolling, impacts, applause, pinsetter, return)

- First-person animations: 33-frame player underarm throw/follow-through sequence (player-underarm-v2)

- Visitors: 10 persistent shared cast identities with exclusive reservations, activity transitions, and chair sit/rise animations

- Tests & verification: comprehensive native regression test suites and updated documentation

- Synchronize binaries and update launcher hash to 536E23BED4055562BC63871826FF44FFED037923A9BE8E0F591131DB4FBD104B
2026-11-04 18:44:12 +03:00

196 lines
5.7 KiB
PHP

MODE_BOWLING equ 30
INTERACT_BOWL_PLAY equ 56
BP_DIRECTION equ 0
BP_POWER equ 1
BP_RELEASE equ 2
BP_ROLL equ 3
BP_SETTLE equ 4
BP_BOT equ 5
BP_FINISHED equ 6
BP_RESET equ 7
BP_RETURN equ 8
BP_SELECT_BALL equ 9
BP_RELEASE_MS equ 700
BP_RESET_MS equ 5200
BP_RETURN_MS equ 2800
BP_BODY_COUNT equ 11
BP_BALL_BODY equ 10
BP_PIN_GRAMS equ 1600
PoolSqrt3D PROTO :DWORD
BowlingPlayContact3D PROTO :DWORD,:DWORD
BowlingPlayKick3D PROTO :DWORD,:DWORD,:DWORD
NormalizeBowlingPinAxis3D PROTO :DWORD
BowlingPlayReady3D PROTO
BowlingPlayTether3D PROTO :DWORD
BowlingPlayDeckBounds3D PROTO :DWORD
BowlingRollGlyph3D PROTO :DWORD,:DWORD,:DWORD
BowlingAudioOpen3D PROTO
BowlingAudioClose3D PROTO
BowlingAudioUpdate3D PROTO
DrawBowlingPlayerHand3D PROTO
RenderBowlingReactions3D PROTO
RenderBowlingPinsetter3D PROTO
BowlingPinsetterPose3D PROTO :DWORD
BowlingPinsetterEase3D PROTO :DWORD,:DWORD
BowlingPinsetterGate3D PROTO
CompleteBowlingRoll3D PROTO
BowlingReturnCamera3D PROTO :DWORD
BowlingReturnBallPose3D PROTO
RenderBowlingReturnMachine3D PROTO :DWORD
RenderBowlingReturnedBall3D PROTO
BeginBowlingPlay3D PROTO :DWORD
LeaveBowlingPlay3D PROTO
ResetBowlingPlay3D PROTO
BowlingPlayStartAim3D PROTO
HandleBowlingPlay3D PROTO
RenderBowlingPlay3D PROTO
BowlingPlayRack3D PROTO
BowlingPlayLaunch3D PROTO
BowlingPlayStep3D PROTO
BowlingPlayFinishRoll3D PROTO
BowlingPlayNext3D PROTO
BowlingPlayHit3D PROTO :DWORD,:DWORD,:DWORD
DrawBowlingPlayPin3D PROTO :DWORD,:DWORD
BowlingFrameTotal3D PROTO :DWORD,:DWORD
DrawBowlingPlayScores3D PROTO
InitBowlingBallSurface3D PROTO
InitBowlingSetterSurface3D PROTO
DrawBowlingGaugeLine3D PROTO :DWORD,:DWORD,:DWORD,:DWORD
BowlingApplyBallMass3D PROTO
HandleBowlingWeight3D PROTO :DWORD
DrawBowlingWeight3D PROTO
BowlingBallMaterial3D PROTO :DWORD
BowlingRackCamera3D PROTO
RenderBowlingBallRack3D PROTO :DWORD,:DWORD
BowlingRackScreen3D PROTO :DWORD
BowlingTintBallPixel3D PROTO :DWORD,:DWORD
BowlingTintHand3D PROTO :DWORD,:DWORD
.data
bpActive3D dd 0
bpLane3D dd 1
bpTarget3D dd 1
bpState3D dd BP_DIRECTION
bpClock3D dd 0
bpTime3D dd 0
bpAim3D dd 0
bpPower3D dd 50
bpLockedAim3D dd 0
bpLockedPower3D dd 50
bpWeightKg3D dd 6
bpBotWeightKg3D dd 6
bpShotWeightKg3D dd 6
bpBallGrams3D dd 6000
bpLaunchSpeed3D dd 0
bpReferenceKg3D dd 6
bpLaneDistance3D dd FP_1*193/10
bpTickMs3D dd 16
bpSecondMs3D dd 1000
bpRackHitX3D dd 4 dup(0)
bpRackHitY3D dd 4 dup(0)
bpRackHitRadius3D dd 4 dup(0)
bpRackHandFrame3D dd -1
bpRackHandKg3D dd -1
bpTintedHand3D AnimPack3D <>
bpBallMaterials3D dd 255,256,253,257
bpBallColors3D dd 0057C78Ch,00D26B65h,005B8DE8h,00D8AB55h
bpLast3D dd 0
bpLastKind3D dd 0
bpGutter3D dd 0
bpAccumulator3D dd 0
bpScoreOpen3D dd 0
bpBallX3D dd 0
bpBallY3D dd 0
bpBallVX3D dd 0
bpBallVY3D dd 0
bpHitMask3D dd 0
; Inverse masses are Q16, normalized to a 1600-gram pin. Last body is the ball.
bpPinX3D dd BP_BODY_COUNT dup(0)
bpPinY3D dd BP_BODY_COUNT dup(0)
bpPinVX3D dd BP_BODY_COUNT dup(0)
bpPinVY3D dd BP_BODY_COUNT dup(0)
bpInvMass3D dd 10 dup(FP_1),BP_PIN_GRAMS*FP_1/6000
bpRadius3D dd 10 dup(24),31
bpPinTilt3D dd 10 dup(0)
bpPinTiltV3D dd 10 dup(0)
bpPinAxisX3D dd 10 dup(0)
bpPinAxisY3D dd 10 dup(-FP_1)
bpPinSpin3D dd 10 dup(0)
bpPinContactTick3D dd 10 dup(0)
bpPhysicsTicks3D dd 0
bpEndTicks3D dd 0
bpImpactEnergy3D dd 0
bpImpactCooldown3D dd 0
bpReaction3D dd 0
bpReactionTime3D dd 0
bpAudioReady3D dd 0
bpAudioRolling3D dd 0
bpAudioReturning3D dd 0
bpAudioReleased3D dd 0
bpAudioVolume3D dd -1
bpHandArt3D AnimPack3D <>
bpHandPath3D db "assets\animations\bowling\player-underarm-v2.bin",0
bpGlyph3D db 0,0
bpPinSectionHeight3D dd FP_1*14/100,FP_1*27/100,FP_1*285/1000,FP_1*35/100
bpPinSectionRadius3D dd FP_1*90/1000,FP_1*37/1000,FP_1*39/1000,FP_1*55/1000
bpPinSectionLength3D dd FP_1*145/1000,FP_1*65/1000,FP_1*16/1000,FP_1*65/1000
bpPinSectionMaterial3D dd 239,239,240,239
bpRenderNX3D dd 0
bpRenderNY3D dd 0
bpRenderNZ3D dd FP_1
bpRenderUX3D dd FP_1
bpRenderUY3D dd 0
bpRenderVX3D dd 0
bpRenderVY3D dd FP_1
bpRenderVZ3D dd 0
bpVisualPinX3D dd 0
bpVisualPinY3D dd 0
bpVisualPinTilt3D dd 0
bpVisualPinLift3D dd 0
bpAfterReturn3D dd BP_DIRECTION
bpReturnedX3D dd 0
bpReturnedY3D dd 0
bpReturnedZ3D dd 0
bpReturnedPhase3D dd 0
include src_graphics\bowling_audio_data.inc
bpCentre3D dd 0
bpHomeX3D dd 0
bpHomeY3D dd 0
bpHomeAngle3D dd 0
bpText3D db 24 dup(0)
bpMonitorTexts3D dd OFFSET bpDirectionText,OFFSET bpPowerText,OFFSET bpRollText,OFFSET bpRollText
dd OFFSET bpResultText,OFFSET bpBot,OFFSET bpScoreText,OFFSET bpResetText,OFFSET bpReturnText,OFFSET bpSelectBallText
.data?
bpBallSurface3D dd 4*64*64 dup(?)
bpTintedHandPixels3D dd 256*256 dup(?)
bpSetterSurface3D dd 64*64 dup(?)
.data
bpPlayPrompt db 200,195,208,192,210,220,32,194,32,193,206,211,203,200,205,195,0
bpTitle db 193,206,211,203,200,205,195,0
bpYou db 194,219,0
bpBot db 204,192,202,209,0
bpDirectionText db 205,192,207,208,192,194,203,197,205,200,197,0
bpPowerText db 209,200,203,192,0
bpRollText db 193,208,206,209,206,202,0
bpResultText db 209,193,200,210,206,0
bpWinText db 194,219,32,207,206,193,197,196,200,203,200,0
bpLoseText db 207,206,193,197,196,200,203,32,204,192,202,209,0
bpDrawText db 205,200,215,220,223,0
bpAgainText db 209,205,206,194,192,0
bpExitText db 194,219,201,210,200,0
bpFrameText db 212,208,197,201,204,0
bpScoreText db 209,215,168,210,0
bpGutterText db 198,197,203,206,193,0
bpStrikeText db 209,210,208,192,201,202,0
bpSpareText db 209,207,221,208,0
bpResetText db 211,209,210,192,205,206,194,202,192,0
bpReturnText db 194,206,199,194,208,192,210,32,216,192,208,192,0
bpKilogramsText db ' ',202,195,0
bpKg4Text db '4 ',202,195,0
bpKg5Text db '5 ',202,195,0
bpKg6Text db '6 ',202,195,0
bpKg7Text db '7 ',202,195,0
bpWeightLabels3D dd OFFSET bpKg4Text,OFFSET bpKg5Text,OFFSET bpKg6Text,OFFSET bpKg7Text
bpSelectBallText db 194,219,193,206,208,32,216,192,208,192,0
bpTakeBallText db 194,199,223,210,220,0
bpChangeBallText db 216,192,208,0
.code