- 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
102 lines
2.5 KiB
NASM
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
|