- Darts: native 500-point match against Max with sway/fatigue mouse aim, parabolic throw camera, raster arm animations, and 16 camera-relative flying dart views - AI Observer: autonomous spectator mode for Hold'em, Blackjack, Durak, and Billiards with profile isolation and playback controls - Fortune Session: raster sprite packs, mist/orb animations, tarot divination spreads, and pack tools - Hall Integration: wall dartboard in lounge, observer terminal dispatch, and bot turn hooks - Packaging & Verification: updated installer streaming hash, synchronized launcher, passing check suites and release smoke checks
161 lines
4 KiB
PHP
161 lines
4 KiB
PHP
.data
|
|
obsTestGame dd 0
|
|
obsTestTicks dd 0
|
|
obsTestTurns dd 0
|
|
obsTestMenu db "build\observer\menu.bmp",0
|
|
obsTestPaths dd OFFSET obsTestPoker,OFFSET obsTestBlackjack,OFFSET obsTestDurak
|
|
dd OFFSET obsTestTransfer,OFFSET obsTestPyramid,OFFSET obsTestEight
|
|
obsTestPoker db "build\observer\poker.bmp",0
|
|
obsTestBlackjack db "build\observer\blackjack.bmp",0
|
|
obsTestDurak db "build\observer\durak.bmp",0
|
|
obsTestTransfer db "build\observer\transfer.bmp",0
|
|
obsTestPyramid db "build\observer\pyramid.bmp",0
|
|
obsTestEight db "build\observer\eight.bmp",0
|
|
.code
|
|
ObserverTestStart PROC
|
|
call InitPaths3D
|
|
mov arrivalConfirmed3D,1
|
|
mov bankroll,12345
|
|
mov charmCloverUses,17
|
|
mov charmDevilUses,18
|
|
mov obsActive3D,1
|
|
invoke TriggerCharmLossProtection,100
|
|
test eax,eax
|
|
jnz obs_test_fail
|
|
cmp bankroll,12345
|
|
jne obs_test_fail
|
|
mov obsActive3D,0
|
|
call BeginObserver3D
|
|
call RenderObserver3D
|
|
invoke WriteActionSnapshot3D,OFFSET obsTestMenu
|
|
obs_test_game:
|
|
mov eax,obsTestGame
|
|
mov obsSelection3D,eax
|
|
call StartObserver3D
|
|
cmp obsActive3D,1
|
|
jne obs_test_fail
|
|
mov obsTestTicks,0
|
|
mov obsTestTurns,0
|
|
obs_test_tick:
|
|
mov deltaTime3D,50
|
|
call ObserverTick3D
|
|
cmp obsTestGame,4
|
|
jb obs_test_cards
|
|
cmp poolState3D,POOL_STRIKE
|
|
jne @F
|
|
mov eax,poolPlayer3D
|
|
bts obsTestTurns,eax
|
|
@@:
|
|
cmp obsTestTicks,1500
|
|
jb obs_test_next_tick
|
|
cmp obsTestTurns,3
|
|
jne obs_test_fail
|
|
jmp obs_test_snapshot
|
|
obs_test_cards:
|
|
cmp obsRound3D,21
|
|
jb obs_test_next_tick
|
|
mov eax,obsWins3D[0]
|
|
add eax,obsWins3D[4]
|
|
add eax,obsWins3D[8]
|
|
cmp eax,20
|
|
jne obs_test_fail
|
|
jmp obs_test_snapshot
|
|
obs_test_next_tick:
|
|
inc obsTestTicks
|
|
cmp obsTestTicks,150000
|
|
jb obs_test_tick
|
|
jmp obs_test_fail
|
|
obs_test_snapshot:
|
|
; Advance into a real deal/turn before capturing the watching surface.
|
|
mov ecx,40
|
|
obs_test_render_advance:
|
|
push ecx
|
|
mov deltaTime3D,50
|
|
call ObserverTick3D
|
|
pop ecx
|
|
loop obs_test_render_advance
|
|
call RenderObserver3D
|
|
mov eax,obsTestGame
|
|
invoke WriteActionSnapshot3D,obsTestPaths[eax*4]
|
|
mov obsPaused3D,1
|
|
mov eax,obsRound3D
|
|
push eax
|
|
mov eax,obsTimer3D
|
|
push eax
|
|
mov deltaTime3D,50
|
|
call ObserverFrame3D
|
|
pop eax
|
|
cmp eax,obsTimer3D
|
|
jne obs_test_fail
|
|
pop eax
|
|
cmp eax,obsRound3D
|
|
jne obs_test_fail
|
|
mov pressedKeys3D[9],1
|
|
call ObserverFrame3D
|
|
cmp obsSpeed3D,2
|
|
jne obs_test_fail
|
|
mov pressedKeys3D[9],1
|
|
call ObserverFrame3D
|
|
cmp obsSpeed3D,4
|
|
jne obs_test_fail
|
|
mov pressedKeys3D[9],1
|
|
call ObserverFrame3D
|
|
cmp obsSpeed3D,1
|
|
jne obs_test_fail
|
|
call StopObserver3D
|
|
cmp bankroll,12345
|
|
jne obs_test_fail
|
|
cmp charmCloverUses,17
|
|
jne obs_test_fail
|
|
cmp charmDevilUses,18
|
|
jne obs_test_fail
|
|
cmp obsActive3D,0
|
|
jne obs_test_fail
|
|
inc obsTestGame
|
|
cmp obsTestGame,OBS_GAME_COUNT
|
|
jb obs_test_game
|
|
; The actual selector opens a table, and Escape unwinds watch -> menu -> hall.
|
|
mov pressedKeys3D[31h],1
|
|
call ObserverFrame3D
|
|
cmp obsActive3D,1
|
|
jne obs_test_fail
|
|
mov pressedKeys3D[1Bh],1
|
|
call ObserverFrame3D
|
|
cmp engineMode,MODE_OBSERVER
|
|
jne obs_test_fail
|
|
cmp bankroll,12345
|
|
jne obs_test_fail
|
|
mov mouseX3D,100
|
|
mov mouseY3D,174
|
|
mov mouseClick3D,1
|
|
call ObserverFrame3D
|
|
cmp obsActive3D,1
|
|
jne obs_test_fail
|
|
cmp poolVariant3D,1
|
|
jne obs_test_fail
|
|
mov mouseX3D,20
|
|
mov mouseY3D,230
|
|
mov mouseClick3D,1
|
|
call ObserverFrame3D
|
|
cmp obsPaused3D,1
|
|
jne obs_test_fail
|
|
mov mouseX3D,250
|
|
mov mouseClick3D,1
|
|
call ObserverFrame3D
|
|
cmp obsActive3D,0
|
|
jne obs_test_fail
|
|
mov pressedKeys3D[1Bh],1
|
|
call ObserverFrame3D
|
|
cmp engineMode,MODE_WALK
|
|
jne obs_test_fail
|
|
mov obsActive3D,1
|
|
call RunDurakTest3D
|
|
test eax,eax
|
|
jnz obs_test_exit
|
|
xor eax,eax
|
|
jmp obs_test_exit
|
|
obs_test_fail:
|
|
mov eax,8401
|
|
obs_test_exit:
|
|
invoke ExitProcess,eax
|
|
ObserverTestStart ENDP
|