KAZIK/tools/tests/scratch_syntax.asm
Игорь Федосеев ca62db53e9 feat: implement native billiards, scratch tickets, first-person dice, and city wake scene
- Billiards: add native Russian Pyramid & American Eight-Ball pool with physics prediction, controls, and regression tests
- Scratch Tickets: add dedicated counter, mat presentation, elliptical coin scraping, 4 ticket types, and payout effects
- First-Person Dice: add native dice scene, hand anchor frames, throwing animation, and table perspective
- City Wake & Weather: add arrival cutscene, alley geometry, weather/rain effects, and lighter/rocker animation
- World Dressing: add hall paintings, furniture packs, hall lighting, and scene regression tests
- Build & Tooling: update build.bat for modern MSVC toolchain, update launcher hash, and refresh shipping binaries
2026-10-16 12:37:40 +03:00

102 lines
2.5 KiB
NASM

; Fast isolated assembly pass; the full action suite tests the real engine.
.386
.model flat
IFDEF SCRATCH_MODULE_TEST
EXTERN engineMode:DWORD,paused3D:DWORD,bankroll:DWORD,deltaTime3D:DWORD,animationClock3D:DWORD
EXTERN viewWidth3D:DWORD,viewHeight3D:DWORD,viewLeft3D:DWORD,viewTop3D:DWORD
EXTERN clpSymbolsPath3D:BYTE,coinExitText3D:BYTE,coinBankText3D:BYTE,hudNumBuffer:BYTE
EXTERN screenBuffer:DWORD,rngSeed3D:DWORD,h3DWnd:DWORD
EXTERN lastSoundPath3D:DWORD
ENDIF
option language:stdcall
option casemap:none
FP_1 equ 65536
FP_HALF equ 32768
SCREEN_SIZE equ 640*480
MODE_WALK equ 0
AnimPack3D STRUCT
magic dd ?
imageWidth dd ?
height dd ?
frames dd ?
bytes dd ?
pixels dd ?
AnimPack3D ENDS
CityProp3D STRUCT
posX dd ?
posY dd ?
worldW dd ?
worldH dd ?
frame dd ?
asset dd ?
groundZ dd 0
CityProp3D ENDS
LoadAnimPack3D PROTO :DWORD,:DWORD
FreeAnimPack3D PROTO :DWORD
ValidateCityPack3D PROTO :DWORD,:DWORD,:DWORD,:DWORD
DrawAnimSprite3D PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
DrawBox PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
DrawBoxBorder PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
DrawString8x8 PROTO :DWORD,:DWORD,:DWORD,:DWORD
DrawBuckshotText3D PROTO :DWORD,:DWORD,:DWORD,:DWORD
FormatNumber PROTO :DWORD,:DWORD
RandomRange3D PROTO :DWORD
Pressed3D PROTO :DWORD
ClearKeys3D PROTO
SaveProgress3D PROTO
IFNDEF SCRATCH_MODULE_TEST
.data
engineMode dd 0
paused3D dd 0
bankroll dd 10000
deltaTime3D dd 16
animationClock3D dd 0
viewWidth3D dd 640
viewHeight3D dd 480
viewLeft3D dd 0
viewTop3D dd 0
coinTablePath3D db 0
clpSymbolsPath3D db 0
coinExitText3D db 0
coinBankText3D db 0
hudNumBuffer db 64 dup(0)
.data?
screenBuffer dd SCREEN_SIZE dup(?)
ENDIF
.code
include src_graphics/scratch_data.inc
include src_graphics/scratch.inc
IFDEF SCRATCH_TEST_SYNTAX
WriteActionSnapshot3D PROTO :DWORD
WindowEvents3D PROTO :DWORD,:DWORD,:DWORD,:DWORD
IFNDEF SCRATCH_MODULE_TEST
.data
rngSeed3D dd 47
h3DWnd dd 0
ENDIF
.code
include tools/tests/scratch_test.inc
ENDIF
IFDEF SCRATCH_MODULE_TEST
ExitProcess PROTO :DWORD
CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
GetFileSize PROTO :DWORD,:DWORD
GetProcessHeap PROTO
HeapAlloc PROTO :DWORD,:DWORD,:DWORD
HeapFree PROTO :DWORD,:DWORD,:DWORD
CloseHandle PROTO :DWORD
InitPaths3D PROTO
.code
include build/scratch/module-loader.inc
ScratchModuleStart PROC
call InitPaths3D
call RunScratchTest3D
cmp eax,1
jne @F
xor eax,eax
@@:
invoke ExitProcess,eax
ScratchModuleStart ENDP
ENDIF
end