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