Add native Durak, poker, blackjack, roulette, Buckshot and billiards scenes with animation assets and regression tests. Improve arrival, city, hall, profiles, shops, audio and exit handling; remove the portable C game core and refresh shipping executables.
220 lines
5.4 KiB
PHP
220 lines
5.4 KiB
PHP
.data
|
|
cardExitTestSnapshot3D dd 128 dup(0)
|
|
cardExitTestPKPath3D db "build\actions\poker-exit.bmp",0
|
|
cardExitTestBJPath3D db "build\actions\blackjack-exit.bmp",0
|
|
.code
|
|
RunCardExitTest3D PROC uses ebx esi edi
|
|
local mode:DWORD,state:DWORD,bank:DWORD,savedSeed:DWORD,source:DWORD,wordCount:DWORD
|
|
mov mode, MODE_POKER
|
|
card_exit_test_mode:
|
|
mov state, 1
|
|
card_exit_test_state:
|
|
cmp state, 5
|
|
je card_exit_test_next
|
|
mov eax, mode
|
|
mov engineMode, eax
|
|
mov bankroll, 10000
|
|
call ClearKeys3D
|
|
cmp mode, MODE_POKER
|
|
jne card_exit_test_bj
|
|
call InitNativePoker3D
|
|
call StartNativePoker3D
|
|
mov eax, state
|
|
mov pkState3D, eax
|
|
mov pkTimer3D, 37
|
|
mov source, OFFSET pkState3D
|
|
mov wordCount, (pkTitle3D-pkState3D)/4
|
|
jmp card_exit_test_snapshot
|
|
card_exit_test_bj:
|
|
call InitNativeBlackjack3D
|
|
call StartNativeBlackjack3D
|
|
mov eax, state
|
|
mov cbState3D, eax
|
|
mov cbTimer3D, 37
|
|
mov source, OFFSET cbState3D
|
|
mov wordCount, (cbTitle3D-cbState3D)/4
|
|
card_exit_test_snapshot:
|
|
mov eax, bankroll
|
|
mov bank, eax
|
|
mov eax, rngSeed3D
|
|
mov savedSeed, eax
|
|
mov esi, source
|
|
lea edi, cardExitTestSnapshot3D
|
|
mov ecx, wordCount
|
|
rep movsd
|
|
mov paused3D, 1 ; recover even from the old generic table pause
|
|
call CardTableEscape3D
|
|
cmp eax, 1
|
|
jne card_exit_test_fail
|
|
cmp cardExitActive3D, 1
|
|
jne card_exit_test_fail
|
|
cmp paused3D, 0
|
|
jne card_exit_test_fail
|
|
mov deltaTime3D, 1000
|
|
mov ebx, 4
|
|
card_exit_test_frozen:
|
|
cmp mode, MODE_POKER
|
|
jne @F
|
|
call HandleNativePoker3D
|
|
call RenderNativePoker3D
|
|
jmp card_exit_test_compare
|
|
@@:
|
|
call HandleNativeBlackjack3D
|
|
call RenderNativeBlackjack3D
|
|
card_exit_test_compare:
|
|
mov esi, source
|
|
lea edi, cardExitTestSnapshot3D
|
|
mov ecx, wordCount
|
|
repe cmpsd
|
|
jne card_exit_test_fail
|
|
mov eax, bank
|
|
cmp bankroll, eax
|
|
jne card_exit_test_fail
|
|
mov eax, savedSeed
|
|
cmp rngSeed3D, eax
|
|
jne card_exit_test_fail
|
|
dec ebx
|
|
jnz card_exit_test_frozen
|
|
cmp state, 2
|
|
jne @F
|
|
mov eax, OFFSET cardExitTestPKPath3D
|
|
cmp mode, MODE_POKER
|
|
je card_exit_test_frame
|
|
mov eax, OFFSET cardExitTestBJPath3D
|
|
card_exit_test_frame:
|
|
invoke WriteActionSnapshot3D, eax
|
|
test eax, eax
|
|
jz card_exit_test_fail
|
|
@@:
|
|
; Default Enter continues safely, Escape and N also cancel.
|
|
mov eax, state
|
|
xor edx, edx
|
|
mov ecx, 3
|
|
div ecx
|
|
mov eax, 0Dh
|
|
cmp edx, 0
|
|
je @F
|
|
mov eax, 1Bh
|
|
cmp edx, 1
|
|
je @F
|
|
mov eax, 4Eh
|
|
@@:
|
|
mov pressedKeys3D[eax], 1
|
|
call HandleCardExit3D
|
|
cmp cardExitActive3D, 0
|
|
jne card_exit_test_fail
|
|
mov eax, mode
|
|
cmp engineMode, eax
|
|
jne card_exit_test_fail
|
|
mov esi, source
|
|
lea edi, cardExitTestSnapshot3D
|
|
mov ecx, wordCount
|
|
repe cmpsd
|
|
jne card_exit_test_fail
|
|
; Opening from the visible header button must not advance the hand one tick.
|
|
mov mouseX3D, 280
|
|
mov mouseY3D, 10
|
|
mov mouseClick3D, 1
|
|
cmp mode, MODE_POKER
|
|
jne @F
|
|
call HandleNativePoker3D
|
|
jmp card_exit_test_opened
|
|
@@:
|
|
call HandleNativeBlackjack3D
|
|
card_exit_test_opened:
|
|
cmp cardExitActive3D, 1
|
|
jne card_exit_test_fail
|
|
mov esi, source
|
|
lea edi, cardExitTestSnapshot3D
|
|
mov ecx, wordCount
|
|
repe cmpsd
|
|
jne card_exit_test_fail
|
|
mov eax, state
|
|
test eax, 1
|
|
jz card_exit_test_click
|
|
mov pressedKeys3D[27h], 1
|
|
call HandleCardExit3D
|
|
mov pressedKeys3D[0Dh], 1
|
|
jmp card_exit_test_confirm
|
|
card_exit_test_click:
|
|
mov mouseX3D, 220
|
|
mov mouseY3D, 160
|
|
mov mouseClick3D, 1
|
|
card_exit_test_confirm:
|
|
call HandleCardExit3D
|
|
cmp engineMode, MODE_WALK
|
|
jne card_exit_test_fail
|
|
cmp cardExitActive3D, 0
|
|
jne card_exit_test_fail
|
|
mov eax, bank
|
|
cmp bankroll, eax
|
|
jne card_exit_test_fail
|
|
cmp mode, MODE_POKER
|
|
jne @F
|
|
cmp pkState3D, PK_RESULT
|
|
jne card_exit_test_fail
|
|
cmp pkOutcome3D, 1
|
|
jne card_exit_test_fail
|
|
jmp card_exit_test_once
|
|
@@:
|
|
cmp cbState3D, CB_RESULT
|
|
jne card_exit_test_fail
|
|
cmp cbOutcome3D, 1
|
|
jne card_exit_test_fail
|
|
card_exit_test_once:
|
|
call HandleCardExit3D
|
|
call LeaveCardTable3D
|
|
mov eax, bank
|
|
cmp bankroll, eax
|
|
jne card_exit_test_fail
|
|
card_exit_test_next:
|
|
inc state
|
|
mov eax, 7
|
|
cmp mode, MODE_POKER
|
|
je @F
|
|
mov eax, 5
|
|
@@:
|
|
cmp state, eax
|
|
jb card_exit_test_state
|
|
; Idle/result tables leave immediately, including the result's already paid pot.
|
|
mov eax, mode
|
|
mov engineMode, eax
|
|
mov pkState3D, PK_IDLE
|
|
mov cbState3D, CB_IDLE
|
|
call CardTableEscape3D
|
|
cmp engineMode, MODE_WALK
|
|
jne card_exit_test_fail
|
|
mov eax, mode
|
|
mov engineMode, eax
|
|
mov pkState3D, PK_RESULT
|
|
mov cbState3D, CB_RESULT
|
|
mov bankroll, 12345
|
|
mov mouseX3D, 280
|
|
mov mouseY3D, 10
|
|
mov mouseClick3D, 1
|
|
invoke CardTableMouse3D, mode
|
|
cmp engineMode, MODE_WALK
|
|
jne card_exit_test_fail
|
|
cmp bankroll, 12345
|
|
jne card_exit_test_fail
|
|
cmp mode, MODE_POKER
|
|
jne card_exit_test_done
|
|
mov mode, MODE_BLACKJACK
|
|
jmp card_exit_test_mode
|
|
card_exit_test_done:
|
|
call InitNativeBlackjack3D
|
|
cmp cbState3D, CB_IDLE
|
|
jne card_exit_test_fail
|
|
cmp cbStake3D, 0
|
|
jne card_exit_test_fail
|
|
call InitNativePoker3D
|
|
cmp pkState3D, PK_IDLE
|
|
jne card_exit_test_fail
|
|
cmp pkPot3D, 0
|
|
jne card_exit_test_fail
|
|
xor eax, eax
|
|
ret
|
|
card_exit_test_fail:
|
|
mov eax, 280
|
|
ret
|
|
RunCardExitTest3D ENDP
|