I write about stuff at this link - https://itjac.me/blog.html

Released projects

A fire effect from the PSX version of the original Doom [anchor]

This was inspired by this write-up by Fabien Sanglard - HOW DOOM FIRE WAS DONE

It was written on stream, on Twitch, in NASM assembly. I used SDL to open a window, and wrote that code in C, which calls into the assembly.

Below is the result encoded as a MP4

Download link here - doom_fire.tar.bz2

A game called "Babies" [anchor]

When I was a child, a friend's father had a PC that he had got through his work. On the PC were a few games, one of which was about rescuing babies from a burning building.

I created this game without researching the exact details of that game, but instead going from memory.

I did put quite a bit of effort into this. I wrote the game engine with SDL2, OpenGL and OpenAL, and it's my first game where I make some screen effects, and the first with some audio effort put into it.

The game has executables for Linux and Windows.

Game can be downloaded here - babies.zip

A game called script_puzzler [anchor]

The game is similar to Sokoban

This is one of the first products from when I got serious about the fact, that I wasn't finishing anything; or putting in the effort to create something I could show to people.

I have fond memories of the development of this, because I didn't hesitate anywhere. I just opened up The Gimp and created the art, without thinking about what to do. And I even created a weird scripting language, which lets you create ASCII art, which would turn into the level design. It even supports defining what symbols mean, which allows for buttons and movables. This was the first time I coded parsing.

The game is played with the arrow keys, and ENTER progresses to the next level, and F1 resets the current level. The game was developed on Linux, and only compiles for Linux.

Download here - script_puzzler.tar.bz2

A program that opens a X11 window, without Xlib [anchor]

This was a curiousity of mine. I wanted to look into the actual X protocol, and write my own socket communication that would result in something tangible.

The end result was a program that opens a window, and draws a cosine wave.

Aswell as not using Xlib, I also don't use any libc. So my kernel syscalls are written in assembly.

I'm used to NASM, but I decided to try out FASM for this. It is disappointing that it doesn't have debug support. But outside of that, I didn't notice many differences, because the assembly code I wrote is quite simple.

I did enjoy discovering how to get the environ data that is passed to processes on Linux, passed onto the C code. I couldn't find any mention of this online, but it's available 24 bytes above the stack pointer, when the program executes _start.

One thing that shook me a little about writing directly to the X server socket, is that it wasn't much more complicated than using Xlib, but more that Xlib doesn't take the most obvious route to the solution, but rather has some opinions of its own. It feels like opinions being plastered on previous opinions, etc.

This has only been written for x64 Linux. But I've tried to push it onto people running that, in the communites I'm a part of, and I've been very happy about the portability of the code!

Download here - x11_window.tar.bz2

A Tetris clone [anchor]

Friends and I have for a long time complained that there is no simple Tetris game for the PC.

By simple, I mean something that you pay for once, and it just works.

This was why I started this project. It was supposed to be easily playable on the web, but also have a native executable.

And I even looked into Ryan Gordon's work on emscripten networking, with the intent of making networking just work everywhere.

But then I found out that The Tetris Company owns it, and has stopped others from creating tetris clones. Which explains the lack of them.

Once I learned that, I stopped development immediately. But here's what came of it.

It runs in the browser, so you don't have to download anything - Sorry I managed to delete the files. Still looking for an extra copy.