Posit-92

Posit-92 is my personal Pascal game engine written in Free Pascal targeting DOS, WebAssembly, and Windows, it’s 99% software rendering, and has the retro style graphics

I made it to build small games and interactive demos

The default resolution is 320×200, and supports running games in web browsers through WebAssembly, and natively on Windows using SDL2, and it’s possible to build for both x64 and x86

Why Pascal?

Why not? – It just works

If people can make games in Python, Ruby, or even Lua, I don’t see why I can’t use Pascal

Posit-92 is primarily a personal project. It exists because I enjoy working with Pascal, writing my own tools, and understanding how things work under the hood

The goal isn’t to compete with established game engines, in fact, I’m inspired by them. PICO-8, TIC-80, TempleOS have been my references designing the API and keeping everything as minimal as possible

By the time of writing, it’s been more than 1 year for the DOS version (since 9 May 2025), and it’s been almost 1 year for the WASM version (since 17 Nov 2025)

Philosophy

Pascal has been around for decades. It predates C++ and Java, and even C is younger than Pascal. Much of the core language and its familiar APIs have remained recognisable for decades, based on my experience on working with Turbo Pascal and the newer Object Pascal: Free Pascal. There are of course a few quirks, but different Pascal implementations target different platforms & CPU architectures

The API in general is pretty stable, for both Embarcadero Delphi & Free Pascal, even Free Pascal has some extent of compatibility with Delphi. However, I don’t like how they make it overpriced — I could’ve just bought a new gaming laptop or maybe paid a down payment for a new house or something

The DOS version has this philosophy “close to metal” where inline assembly is used mostly at the hot path: the pixel plotting & direct memory access stuff, so basically programmers have direct control over low-level operations, such as pixel plotting, the AdLib port R/W, or maybe SoundBlaster itself

Meanwhile, in general Posit-92 follows these:

  • “Boringly predictable”
  • “Less magic, more explicit responsibility”

The boringly predictable phrase here can be interpreted as “less engine surprises”, different from bigger game engines that have surprise quirks under the hood. This is why easing functions in Posit-92 don’t have clamping in the maths functions

The less magic, more explicit responsibility also correlates to the “boringly predictable” philosophy. Programmers (myself included) have the responsibility of, for example, clamping an easing range to 0.0 .. 1.0, rather than the engine itself that does it

Compared to the DOS version, the WASM and the Win64 versions simply don’t use inline assembly, but instead, the low-level control is shifted to something else:

  • The WASM version has its own 2-tier memory manager, and
  • Both the WASM & Win64 versions use hand-optimised software rendering implementation

Features

(TBA)

Showcase

(TBA)

Getting Started

Want to try it?

Clone the repo, inspect the examples, whether it be a demo project, or a test project, and start with hello_minimal

(Links to the GitHub repo, documentation, and the dedicated demoscene page [on my website])