2D, 3D, game, games, online game, game development, game engine, programming, OpenGL, Open AI, math, graphics, design, graphic, graphics, game development, game engine, programming, web development, web art, web graphic, arts, tutorial, tutorials,
marți, 14 aprilie 2026
News : old and new games on gog website.
We make games last forever
A home for building and playing your curated game collection, GOG is a digital distribution platform that puts gamers first and respects their need to own games.
These old and new games can be found on the gog.com website.
News : New programming languages in 2026.
-
1. Mojo – a new language for AI and GPU
Mojo is considered one of the most promising new languages of 2026.
- Python‑like syntax
- Performance close to C
- Designed specifically for AI, GPUs, and accelerators
- Ideal for machine learning, inference, and parallel processing
-
2. Carbon – a modern successor to C++
Carbon is an experimental language created to offer a modern alternative to C++.
- Better memory safety
- Modern tooling
- Interoperability with C++
- Highly visible in discussions about emerging languages in 2026
-
3. Zig – a new language for systems & performance
Zig is not entirely new in 2026, but it becomes much more popular this year.
- An alternative to C
- Full control over memory
- No runtime, no garbage collector
- Used for systems, compilers, and developer tools
-
4. Elixir – a modern language for distributed systems
Elixir continues to grow in 2026 as a modern language for scalable applications.
- Runs on the Erlang VM
- Excellent for distributed systems with low latency
- Used in telecom, fintech, and IoT
-
5. Clojure (revival in 2026)
Although not new, Clojure returns to the list of recommended languages in 2026.
- Functional and concise
- Excellent concurrency
- Runs on the JVM
luni, 13 aprilie 2026
News : my Tic-Tac-Toe game on netlify.
Play my Tic-Tac-Toe game on the netlify page.

Posted by
Cătălin George Feștilă
Labels:
2026,
2026 news,
catafest,
news,
online game,
tic-tac-tog,
web apps,
web development
vineri, 10 aprilie 2026
FASM : mouse crosshair with lines on the window GDI.
For a year now, it keeps hacking me on Windows. And when I am in a bad mood, I turn to complex things. Today, I wanted to see if I could make a functional assembly code with Microsoft's Copilot artificial intelligence and my assembly knowledge with FASM. Here is what resulted.
The program is a Win32 GUI application written in FASM that draws a crosshair (vertical + horizontal line) following the mouse cursor inside a window classic GDI.
1. Window Setup
The app starts by registering a Win32 window class (WNDCLASSEX) and creating a standard
overlapped window. Nothing unusual here — just the classic Win32 boilerplate.
2. Message Loop
The program enters the main loop:
- GetMessage
- TranslateMessage
- DispatchMessage
This keeps the window responsive and forwards events to the window procedure.
3. Tracking the Mouse
Whenever the mouse moves inside the window, Windows sends a WM_MOUSEMOVE message.
The program extracts the X and Y coordinates from lParam:
- LOWORD(lParam) → X
- HIWORD(lParam) → Y
These values are stored and the window is invalidated so it can be repainted.
4. Drawing the Crosshair (GDI)
All drawing happens inside WM_PAINT using classic GDI:
- MoveToEx
- LineTo
- Ellipse
- TextOut
- FillRect
The steps are:
- Clear the client area
- Get the window’s current size (GetClientRect)
- Draw a vertical line at the mouse’s X position
- Draw a horizontal line at the mouse’s Y position
- Draw a small circle at the intersection
- Print the coordinates in the corner
Because the client size is read dynamically, the crosshair always stretches across the entire window —
no matter how it’s resized.

See the source code
; mouse_crosshair.asm
format PE GUI 4.0
entry start
include "win32a.inc"
WM_MOUSEMOVE = 0x0200
section '.data' data readable writeable
szClass db "MouseGraph",0
szTitle db "Mouse Crosshair Demo",0
mouseX dd 0
mouseY dd 0
fmt db "X=%d Y=%d",0
buffer db 64 dup(0)
rc RECT
ps PAINTSTRUCT
wc WNDCLASSEX
msg MSG
section '.code' code readable executable
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
mov [wc.cbSize],sizeof.WNDCLASSEX
mov [wc.style],CS_HREDRAW or CS_VREDRAW
mov [wc.lpfnWndProc],WndProc
mov [wc.cbClsExtra],0
mov [wc.cbWndExtra],0
mov [wc.hIcon],0
mov [wc.hIconSm],0
mov [wc.lpszMenuName],0
mov [wc.lpszClassName],szClass
mov [wc.hbrBackground],COLOR_WINDOW+1
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClassEx,wc
invoke CreateWindowEx,0,szClass,szTitle,\
WS_VISIBLE+WS_OVERLAPPEDWINDOW,\
200,200,800,600,0,0,[wc.hInstance],0
msg_loop:
invoke GetMessage,msg,0,0,0
test eax,eax
jz exit
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
exit:
invoke ExitProcess,0
; ---------------------------------------------------------
proc WndProc hWnd,uMsg,wParam,lParam
cmp [uMsg],WM_MOUSEMOVE
je .mouse
cmp [uMsg],WM_PAINT
je .paint
cmp [uMsg],WM_DESTROY
je .destroy
.def:
invoke DefWindowProc,[hWnd],[uMsg],[wParam],[lParam]
ret
; ---------------- WM_MOUSEMOVE ----------------
.mouse:
mov eax,[lParam]
and eax,0FFFFh
mov [mouseX],eax
mov eax,[lParam]
shr eax,16
and eax,0FFFFh
mov [mouseY],eax
invoke InvalidateRect,[hWnd],0,TRUE
ret
; ---------------- WM_PAINT ----------------
.paint:
invoke BeginPaint,[hWnd],ps
mov esi,eax ; hdc
; clean client
invoke GetClientRect,[hWnd],rc
invoke FillRect,esi,rc,COLOR_WINDOW+1
; pen red
invoke CreatePen,PS_SOLID,1,0x0000FF
mov ebx,eax
invoke SelectObject,esi,ebx
; ---------------- linie verticala (cruce) ----------------
mov eax,[mouseX] ; X constant
mov edx,[rc.bottom] ; Y max (jos)
invoke MoveToEx,esi,eax,0,0
invoke LineTo,esi,eax,edx
; ---------------- line ----------------
mov eax,[mouseY] ; Y constant
mov edx,[rc.right] ; X max (dreapta)
invoke MoveToEx,esi,0,eax,0
invoke LineTo,esi,edx,eax
; punct în intersec?ie
mov eax,[mouseX]
mov edx,[mouseY]
invoke Ellipse,esi,eax-4,edx-4,eax+4,edx+4
; text coordonate
invoke wsprintf,buffer,fmt,[mouseX],[mouseY]
invoke lstrlen,buffer
invoke TextOut,esi,10,10,buffer,eax
invoke EndPaint,[hWnd],ps
ret
; ---------------- WM_DESTROY ----------------
.destroy:
invoke PostQuitMessage,0
ret
endp
section '.idata' import data readable
library kernel32,"KERNEL32.DLL",\
user32,"USER32.DLL",\
gdi32,"GDI32.DLL"
include "api/kernel32.inc"
include "api/user32.inc"
include "api/gdi32.inc"
Posted by
Cătălin George Feștilă
Labels:
2026,
artificial intelligence,
assembly,
design,
FASM,
graphic,
graphics,
open source,
source code,
tutorial,
tutorials
News : SASM - SimpleASM has support multiple languages.
... multi-languages for this good assembly editor named SASM - SimpleASM.
SASM (SimpleASM) - simple Open Source crossplatform IDE for NASM, MASM, GAS, FASM assembly languages. SASM has syntax highlighting and debugger. The program works out of the box and is great for beginners to learn assembly language. SASM is translated into Russian, English, Turkish (thanks Ali Goren), Chinese (thanks Ahmed Zetao Yang), German (thanks Sebastian Fischer), Italian (thanks Carlo Dapor), Polish (thanks Krzysztof Rossa), Hebrew (thanks Elian Kamal), Spanish (thanks Mariano Cordoba), Portuguese (thanks alglus), French (thanks Franc Serres), Brazilian Portuguese (thanks williampe99), Japanese (thanks ookatuk). Licensed under the GNU GPL v3.0. Based on the Qt.
See the official webpage.
Tools : test devv.ai for development with artificial intelligence.
Today I tested devv.ai and I asked it to make me an image generator with a prompt.
The issue was : Create an AI image generator app with gallery and user authentication.
After the application was created , I tested online on this webpage.
I asked on the prompt : A magnificent futuristic city based on Christianity, science and knowledge, robots, rehabilitation centers, food, everything is free and fair, without weapons or coercive institutions.
This is resized result:

Posted by
Cătălin George Feștilă
Labels:
2026,
ai tools,
artificial intelligence,
image tools,
tools,
web development
joi, 9 aprilie 2026
miercuri, 8 aprilie 2026
Abonați-vă la:
Postări (Atom)