Jojo's Little Adventure

Description

This is a game for protected mode DOS. You will either need a real DOS computer or DOSBox. You can find the game packaged with DOSBox for Windows in the download links, your Linux distribution of choice should provide you with a prebuilt package.

This is the story of Jojo, a prototype optical lens that for some strange reason became sentient.

Also, he cannot survive direct exposure to laser beams, which made him quite useless as a lens, so his creators wanted to get rid of him. Luckily, he was able to escape and is now on the run.

The game features movable objects, usable switches (including light-sensitive ones), and turnable mirrors that reflect the laser light.

Can you guide Jojo to the exit without touching the laser?

Technical Details

The game has sound support, for which I had to write my own driver for the Soundblaster, which was maybe the hardest thing I ever did for a game. The Soundblaster requires accessing several low-level hardware components like the DMA controller, Soundblaster and Programmable Interrupt Controller. Getting the correct timing for the DMA transfers is crucial, because otherwise the sound will stutter, repeat samples or similar.

This game uses extended VESA mode 0x10F, which is a 320x200 pixel 32 bit colour mode. I had to implement all the blitting operations (including alpha blending, which is a surprisingly interesting topic if one wants to do it fast).

I even had to write my own keyboard driver, because there is no "easy" interface for it in DOS protected mode.

The whole game was written in C++14 with DJGPP and its accompanying DOS protected mode interface.

The physics simulation is using Box2D which, interestingly, is fast enough to run on an emulated, slow x86 CPU.

It took me about a week to prepare all the hardware drivers and basic framework, the game itself was then made in 48 hours over the weekend.

Links