This is a game I wrote around 1988-1994 for the IBM PC with CGA or EGA graphics. It was never sold.
You are the little pink guy, with the white collar.
Arrows to move around. Space to thrust upwards. Insert to fire (in the direction of last movement).
The little triangles on the edges of the room indicate you can go through the door to the adjoining room.
Moving over X's increaes the X counter, which otherwise runs out, causing the loss of a life. The X's shrink to little x's when used. If you don't want to use one, thrust above it as you pass over it.
Thrusting upwards on a diamond causes teleportation to another room. Teleport diamonds with a vertical line are entry-only, with a horizontal line are exit-only. Again, to avoid activating, thrust when passing.
The aim is to visit all the hollow small squares (called "nodes"), turning them solid.
Squares with the pyramid shaped spikes on them kill you on contact.
Various shaped bad guys move about and kill you on impact.
Some bad guys zap you. Laser beams are visible through the scenery.
You can thrust to any height on a diamond with a cross in it.
At any point, return pops up a map of the local area.
Thankfully, every moving sprite has shadows, giving you a good visual clue as to their position in 3D space.
The game is a mixture of 16 bit C and Intel 8086 assembler.
The graphics routines are written in assembler. There are two versions, one for CGA and one for EGA.
The game logic refers to 16 different colours, but on 4 colour CGA, this is emulated using dithering. Apologies for the following assault on the eyes :-
Raw keyboard access, timing, and special effects are all assembler.
The music code hooks the tick vector and attempts to make 3 channel sound from the crappy PC beeper. Ian Heath reconstructed the Zoolook music by ear.
It is entirely possible that on modern fast PCs, the delay logic code may overflow its counters, causing the game and/or music to run at the wrong speed. I've not seen this, but then again, the DOS emulator I am using is probably not running very fast.
The main game logic is all in C, including the scene drawing, animation, bad guy behaviours, collision detection, etc..
meridian.exe wrapper program looks for EGA support,
and if finds it, runs
Failing that, it looks for CGA support, and runs
The maze, music, sound effects and sprites are specified in text files, and compiler programs convert them in to the binary form used at run time.
I've had some success using
$ dosbox Z:\>mount m /work/ak/dos/mg Drive M is mounted as local directory /work/ak/dos/mg/ Z:\>M: M:\>meridian