- Offline neural worker based on llama.cpp (fortune-engine.exe) with local Qwen3-4B model support - Native assembly Tarot 3-card spread divination and teacher grade divination mode - Text input dialog in MODE_FORTUNE communicating over anonymous pipes - Clean process lifecycle management, WM_CHAR dispatch and fallback handling - Test suites and packaging tools for offline release
67 lines
2.7 KiB
PHP
67 lines
2.7 KiB
PHP
MODE_FORTUNE equ 25
|
|
BeginFortuneDialog3D PROTO
|
|
HandleFortuneDialog3D PROTO
|
|
RenderFortuneDialog3D PROTO
|
|
FortuneChar3D PROTO :DWORD
|
|
StopFortuneWorker3D PROTO
|
|
PollFortuneWorker3D PROTO
|
|
SubmitFortuneQuestion3D PROTO
|
|
FortuneWrap3D PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
|
|
InitFortuneMindState3D PROTO
|
|
GenerateTarotReadingMind3D PROTO
|
|
GenerateStudentGradeMind3D PROTO
|
|
DetectTopic3D PROTO :DWORD
|
|
FortuneStrLen PROTO :DWORD
|
|
FortuneStrCat PROTO :DWORD,:DWORD
|
|
SubmitStudentGrade3D PROTO
|
|
DrawFortuneCardBox3D PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
|
|
CreatePipe PROTO :DWORD,:DWORD,:DWORD,:DWORD
|
|
SetHandleInformation PROTO :DWORD,:DWORD,:DWORD
|
|
CreateProcessA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
|
|
PeekNamedPipe PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
|
|
TerminateProcess PROTO :DWORD,:DWORD
|
|
GetExitCodeProcess PROTO :DWORD,:DWORD
|
|
include src_graphics\fortune_mind_data.inc
|
|
.data
|
|
fortuneWorkerPath3D db "ai\fortune-engine.exe",0
|
|
fortuneWorkerCommand3D db "ai\fortune-engine.exe",0
|
|
fortuneNullName3D db "NUL",0
|
|
fortunePipeSecurity3D dd 12,0,1
|
|
fortuneStartup3D dd 17 dup(0)
|
|
fortuneProcess3D dd 4 dup(0)
|
|
fortuneRead3D dd 0
|
|
fortuneWrite3D dd 0
|
|
fortuneChildRead3D dd 0
|
|
fortuneChildWrite3D dd 0
|
|
fortuneNull3D dd 0
|
|
fortuneWorkerState3D dd 0 ; 0=off, 1=loading, 2=ready, 3=generating, 4=error
|
|
fortuneWorkerTick3D dd 0
|
|
fortuneReceiveLength3D dd -1
|
|
fortuneReceiveHeader3D dd 3 dup(0)
|
|
fortuneRequest3D dd 31514346h,0,0,0,0
|
|
fortuneIo3D dd 0
|
|
fortuneAvailable3D dd 0
|
|
fortuneQuestionLength3D dd 0
|
|
fortuneQuestion3D db 241 dup(0)
|
|
fortuneAnswer3D db 8193 dup(0)
|
|
fortuneBackground3D dd SCREEN_SIZE dup(0)
|
|
fortunePage3D dd 0
|
|
fortuneMore3D dd 0
|
|
fortuneShort3D dd 0
|
|
fortuneLine3D db 73 dup(0)
|
|
fortuneCaretX3D dd 24
|
|
fortuneCaretY3D dd 366
|
|
fortuneCaret3D db "_",0
|
|
fortuneTitle3D db 195,192,196,192,203,202,192,0
|
|
fortuneLoading3D db 207,240,238,225,243,230,228,224,254,32,234,224,240,242,251,46,46,46,0
|
|
fortuneThinking3D db 202,224,240,242,251,32,238,242,226,229,247,224,254,242,46,46,46,0
|
|
fortuneReady3D db 202,224,234,238,233,32,226,238,239,240,238,241,32,242,229,225,255,32,239,240,232,226,184,235,63,0
|
|
fortuneError3D db 205,229,32,243,228,224,235,238,241,252,32,231,224,239,243,241,242,232,242,252,32,237,229,233,240,238,241,229,242,252,46,32
|
|
db 207,240,238,226,229,240,252,32,234,238,236,239,235,229,234,242,32,232,227,240,251,46,0
|
|
fortuneAsk3D db 209,207,208,206,209,200,210,220,0
|
|
fortuneExit3D db 194,219,201,210,200,0
|
|
fortuneDisclaimer3D db 208,224,241,234,235,224,228,32,228,235,255,32,240,224,231,236,251,248,235,229,237,232,255,44,32
|
|
db 237,229,32,228,238,241,242,238,226,229,240,237,238,229,32,239,240,229,228,241,234,224,231,224,237,232,229,46,0
|
|
fortunePartial3D db 206,242,226,229,242,32,241,238,234,240,224,249,184,237,0
|
|
fortuneLeft3D db "<",0
|
|
fortuneRight3D db ">",0
|