; Real card identities: suit*13 + rank (2..A). Cards are never sampled with replacement. MODE_POKER equ 12 TABLE_FLIGHT_MS equ 360 PK_IDLE equ 0 PK_DEAL equ 1 PK_PLAYER equ 2 PK_AI equ 3 PK_BOARD equ 4 PK_RESULT equ 5 PK_REVEAL equ 6 CB_IDLE equ 0 CB_DEAL equ 1 CB_PLAYER equ 2 CB_HIT equ 3 CB_DEALER equ 4 CB_RESULT equ 5 LoadCardTableAssets3D PROTO FreeCardTableAssets3D PROTO RenderCardTable3D PROTO ShuffleCards3D PROTO :DWORD DrawNativeCard3D PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD DrawNativeSuit3D PROTO :DWORD,:DWORD,:DWORD,:DWORD DrawNativeChips3D PROTO :DWORD,:DWORD,:DWORD,:DWORD DrawSlidingCard3D PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD LookupPokerFive3D PROTO :DWORD EvaluateNativePoker3D PROTO :DWORD,:DWORD NativePokerClass3D PROTO :DWORD InitNativePoker3D PROTO StartNativePoker3D PROTO HandleNativePoker3D PROTO RenderNativePoker3D PROTO PokerPay3D PROTO :DWORD,:DWORD PokerCall3D PROTO :DWORD PokerRaise3D PROTO :DWORD,:DWORD PokerFold3D PROTO :DWORD PokerNextTurn3D PROTO :DWORD PokerNextStreet3D PROTO PokerShowdown3D PROTO PokerAIDecide3D PROTO InitNativeBlackjack3D PROTO HandleNativeBlackjack3D PROTO RenderNativeBlackjack3D PROTO NativeBJScore3D PROTO :DWORD,:DWORD NativeBJSettle3D PROTO :DWORD TableBusy3D PROTO StartNativeBlackjack3D PROTO NativeBJHit3D PROTO CardTableMouse3D PROTO :DWORD DrawTableButton3D PROTO :DWORD,:DWORD,:DWORD DrawTableHeader3D PROTO :DWORD,:DWORD DrawStakeControls3D PROTO :DWORD RenderPokerHole3D PROTO :DWORD,:DWORD,:DWORD,:DWORD RequestCardExit3D PROTO CardTableEscape3D PROTO HandleCardExit3D PROTO LeaveCardTable3D PROTO RenderCardExit3D PROTO .data cardExitActive3D dd 0 cardExitChoice3D dd 0 cardExitButton3D db 194,32,245,238,235,235,0 cardExitTitle3D db 207,238,234,232,237,243,242,252,32,241,242,238,235,63,0 cardExitWarning3D db 208,224,231,228,224,247,224,32,229,249,184,32,237,229,32,231,224,234,238,237,247,229,237,224,46,0 cardExitStake3D db 209,242,224,226,234,224,32,225,243,228,229,242,32,239,238,242,229,240,255,237,224,46,0 cardExitContinue3D db 207,240,238,228,238,235,230,232,242,252,0 cardExitLeave3D db 194,251,233,242,232,0 cardTablePixels3D dd 0 cardTableHeap3D dd 0 cardRanks3D dd 0 cardRanksHeap3D dd 0 cardTableHeader3D dd 4 dup(0) cardRanksHeader3D dd 4 dup(0) cardTablePath3D db "assets\textures\card-table.bin",0 cardRanksPath3D db "assets\data\poker-ranks.bin",0 cardRankNames3D db "2",0,0,"3",0,0,"4",0,0,"5",0,0,"6",0,0,"7",0,0,"8",0,0,"9",0,0,"10",0,"J",0,0,"Q",0,0,"K",0,0,"A",0,0 cardSuitMasks3D db 18h,3Ch,18h,7Eh,0FFh,7Eh,18h,3Ch db 18h,3Ch,7Eh,0FFh,7Eh,3Ch,18h,0 db 66h,0FFh,0FFh,7Eh,3Ch,18h,0,0 db 18h,3Ch,7Eh,0FFh,0FFh,5Ah,18h,3Ch cardPrimes3D dd 2,3,5,7,11,13,17,19,23,29,31,37,41 pkState3D dd PK_IDLE pkTimer3D dd 0 pkBlind3D dd 50 pkStreet3D dd 0 pkButton3D dd 1 pkTurn3D dd 0 pkPot3D dd 0 pkCurrent3D dd 0 pkMinRaise3D dd 50 pkRaise3D dd 50 pkRaisedCount3D dd 0 pkStack3D dd 0 pkPaid3D dd 2 dup(0) pkActed3D dd 2 dup(0) pkCanRaise3D dd 1 pkDeck3D dd 52 dup(0) pkCursor3D dd 4 pkHole3D dd 4 dup(0) pkBoard3D dd 5 dup(0) pkBoardCount3D dd 0 pkOldBoardCount3D dd 0 pkResult3D dd 0 pkOutcome3D dd 0 pkScore3D dd 2 dup(7462) pkEvalHand3D dd 7 dup(0) pkAiMessage3D dd 0 pkError3D dd 0 pkChipActor3D dd 0 pkChipAmount3D dd 0 pkChipTimer3D dd 320 pkTitle3D db 210,197,213,192,209,209,202,200,201,32,213,206,203,196,197,204,0 pkPotText3D db 193,192,205,202,0 pkStreet0Text3D db 207,208,197,212,203,206,207,0 pkStreet1Text3D db 212,203,206,207,0 pkStreet2Text3D db 210,168,208,205,0 pkStreet3Text3D db 208,200,194,197,208,0 pkStreetNames3D dd OFFSET pkStreet0Text3D,OFFSET pkStreet1Text3D,OFFSET pkStreet2Text3D,OFFSET pkStreet3Text3D pkCheckText3D db 207,192,209,0 pkCallText3D db 211,208,192,194,205,223,210,220,0 pkRaiseText3D db 207,206,194,219,209,200,210,220,0 pkFoldText3D db 209,193,208,206,209,0 pkAllInText3D db 194,192,45,193,192,205,202,0 pkCostText3D db 202,206,203,203,0 pkMinimumText3D db 204,200,205,46,32,208,197,201,199,0 pkDealText3D db 209,196,192,210,220,0 pkNextText3D db 196,192,203,197,197,0 pkAiWait3D db 196,200,203,197,208,0 pkAiCheck3D db 207,192,209,0 pkAiCall3D db 202,206,203,203,0 pkAiRaise3D db 208,197,201,199,0 pkAiFold3D db 209,193,208,206,209,0 pkAiNames3D dd OFFSET pkAiWait3D,OFFSET pkAiCheck3D,OFFSET pkAiCall3D,OFFSET pkAiRaise3D,OFFSET pkAiFold3D pkWinText3D db 194,219,32,194,219,200,195,208,192,203,200,0 pkLoseText3D db 196,200,203,197,208,32,194,219,200,195,208,192,203,0 pkTieText3D db 193,192,205,202,32,207,206,208,206,194,205,211,0 pkResults3D dd OFFSET pkWinText3D,OFFSET pkLoseText3D,OFFSET pkTieText3D pkRank0 db 209,210,192,208,216,192,223,32,202,192,208,210,192,0 pkRank1 db 207,192,208,192,0 pkRank2 db 196,194,197,32,207,192,208,219,0 pkRank3 db 210,208,206,201,202,192,0 pkRank4 db 209,210,208,200,210,0 pkRank5 db 212,203,197,216,0 pkRank6 db 212,211,203,203,45,213,192,211,209,0 pkRank7 db 202,192,208,197,0 pkRank8 db 209,210,208,200,210,45,212,203,197,216,0 pkRankNames3D dd OFFSET pkRank0,OFFSET pkRank1,OFFSET pkRank2,OFFSET pkRank3,OFFSET pkRank4 dd OFFSET pkRank5,OFFSET pkRank6,OFFSET pkRank7,OFFSET pkRank8 pkRankLimits3D dd 7462,6185,3325,2467,1609,1599,322,166,10 cbState3D dd CB_IDLE cbTimer3D dd 0 cbBet3D dd 100 cbStake3D dd 0 cbDeck3D dd 52 dup(0) cbCursor3D dd 0 cbPlayer3D dd 12 dup(0) cbDealer3D dd 12 dup(0) cbPlayerCount3D dd 0 cbDealerCount3D dd 0 cbPlayerScore3D dd 0 cbDealerScore3D dd 0 cbVisible3D dd 0 cbDouble3D dd 0 cbOutcome3D dd 0 cbCard3D dd 0 cbError3D dd 0 cbTitle3D db 193,203,221,202,196,198,197,202,32,47,32,50,49,0 cbHitText3D db 202,192,208,210,192,0 cbStandText3D db 213,194,192,210,200,210,0 cbDoubleText3D db 211,196,194,206,200,210,220,0 cbNaturalText3D db 193,203,221,202,196,198,197,202,0 cbResults3D dd OFFSET pkWinText3D,OFFSET pkLoseText3D,OFFSET textTie3D tableBlindText3D db 193,203,192,201,205,196,32,36,0 tableRaiseText3D db 208,197,201,199,32,43,36,0 tableScoreText3D db 206,215,202,200,0 tablePlusText3D db "+",0 tableMinusText3D db "-",0 tableDealOrder3D dd 0,2,1,3 tableHoleX3D dd 114,154,114,154 tableHoleY3D dd 168,168,51,51 .code