; 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,"3",0,"4",0,"5",0,"6",0,"7",0,"8",0,"9",0,"T",0,"J",0,"Q",0,"K",0,"A",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 "TEXAS HOLD'EM",0 pkPotText3D db "POT $",0 pkStreet0Text3D db "PREFLOP",0 pkStreet1Text3D db "FLOP",0 pkStreet2Text3D db "TURN",0 pkStreet3Text3D db "RIVER",0 pkStreetNames3D dd OFFSET pkStreet0Text3D,OFFSET pkStreet1Text3D,OFFSET pkStreet2Text3D,OFFSET pkStreet3Text3D pkCheckText3D db "CHECK",0 pkCallText3D db "CALL",0 pkRaiseText3D db "RAISE",0 pkFoldText3D db "FOLD",0 pkAllInText3D db "ALL-IN",0 pkCostText3D db "CALL $",0 pkMinimumText3D db "MIN RAISE",0 pkDealText3D db "DEAL",0 pkNextText3D db "NEXT",0 pkAiWait3D db "DEALER",0 pkAiCheck3D db "CHECK",0 pkAiCall3D db "CALL",0 pkAiRaise3D db "RAISE",0 pkAiFold3D db "FOLD",0 pkAiNames3D dd OFFSET pkAiWait3D,OFFSET pkAiCheck3D,OFFSET pkAiCall3D,OFFSET pkAiRaise3D,OFFSET pkAiFold3D pkWinText3D db "YOU WIN",0 pkLoseText3D db "DEALER WINS",0 pkTieText3D db "SPLIT POT",0 pkResults3D dd OFFSET pkWinText3D,OFFSET pkLoseText3D,OFFSET pkTieText3D pkRank0 db "HIGH CARD",0 pkRank1 db "PAIR",0 pkRank2 db "TWO PAIR",0 pkRank3 db "THREE OF A KIND",0 pkRank4 db "STRAIGHT",0 pkRank5 db "FLUSH",0 pkRank6 db "FULL HOUSE",0 pkRank7 db "FOUR OF A KIND",0 pkRank8 db "STRAIGHT FLUSH",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 "BLACKJACK / 21",0 cbHitText3D db "HIT",0 cbStandText3D db "STAND",0 cbDoubleText3D db "DOUBLE",0 cbNaturalText3D db "BLACKJACK",0 cbResults3D dd OFFSET pkWinText3D,OFFSET pkLoseText3D,OFFSET textTie3D tableBlindText3D db "BLIND $",0 tableRaiseText3D db "RAISE +$",0 tableScoreText3D db "TOTAL",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