Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ReactBall: 2D Cirrus-accelerated pinball for ReactOS

A native Win32/GDI 2D pinball designed to render through the Cirrus Logic GD5446 2D blitter on ReactOS (no OpenGL), with CPU hot-path fallback on i586/i686. See DESIGN.md for the full architecture synthesized from graphics research, the ReactOS cirrus54xx driver, and open-source 2D pinball practice.

Why native GDI, not SDL2

Cirrus 2D acceleration on ReactOS is reached only through GDI device (VRAM) bitmaps hooked by framebuf.dll -> cirrus54xx.sys. SDL2's software present StretchBlt's a system-memory DIB and the driver rejects it to the CPU path; DirectDraw's HAL is a stub. So ReactBall presents through GDI device bitmaps.

reactball_probe.c

Foundation probe: composes a scene in a VRAM back buffer using the ops the cirrus54xx driver accelerates -- PatBlt solid clears (SOLID_FILL), VRAM->VRAM BitBlt for a moving sprite (COPY_BITS), and a two-pass SRCAND+SRCPAINT color-key mask blit -- then queries the driver's DrvEscape contract counters and draws them on screen. Verified rendering correctly on ReactOS 0.4.17 (std-VGA shows the CPU-present path; run under -vga cirrus with the cirrus54xx driver to confirm hardware acceleration via the counters).

Build: ./build.sh Imports: GDI32, USER32, KERNEL32, msvcrt only.

About

2D Cirrus-accelerated pinball for ReactOS (native Win32/GDI, no OpenGL)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages