RATillery: An artillery game for PC
RATillery is a simple artillery game inspired by gorillas
but written to run even on early PCs. In RATillery, two fireball-throwing rats fight atop stacks of crates in a warehouse.
- For one or two players.
- Playable alone against the computer.
- Bilingual: English and French.
- CGA-compatible graphics adaptor or Tandy video adaptor.
- Memory: 128 Kb (CGA version), 256 Kb (Tandy version).
- Disk space: 64 Kb.
- Operating system: DOS is optional (PC booter version also available).
You can try the game right here on this website, without creating floppies or installing anything. But it is
far from efficient since the game runs in a version of DOSBox compiled for a virtual machine written in
If the sound is strange (like a record player turning at irregular speed) your PC is too slow for the
online version. Downloading the game would be better...
The game can be downloaded here. Two formats are available:
If a picture is worth a thousand words, how many words is the adjacent animated GIF worth?
The players, in turn, must enter the angle (0 to 90 degrees) and velocity (0 to 255) for their shot, aiming to destroy
their opponent. If the shot exits the screen sides, nothing happens. The fireball is of course blocked by the crates, but
these can be destroyed. The location of the rats and crate disposition are random and change each time a player is hit.
The winner is the first player to hit his opponent a given number of turns, configurable from 1 to 99.
Besides the basic elements exposed above, the game offers a few extra features to increase replay value:
Three air resistance settings are available: Vacuum (no resistance), normal and high. There is enough difference between those choice
to confuse a player used to playing at a different setting. A good way to restore the balance between players of different experience.
If enabled, a suspended crate will appear in a random location within the game screen, more often than not blocking your perfect shot trajectory! The
hook and chain cannot be destroyed, but the chain does not always stop the fireball. You'll have to be lucky, use a high altitude shot or slowly
burn your way through the crates.
Following shots above the screen
Shots commonly go off-screen when they take altitude. When this happens, an indicator will
appear to let you follow the horizontal movement of the fireball. Much better than learning that your shot
fell out of the screen after several seconds of motionless silence...
Hiding the input values
Your shot barely misses your opponent, then what does he do next? He uses the same angle he saw you input but slightly adjusts the velocity and gets you.
To avoid helping your enemy, the input values can be concealed, password style. If you're playing against the computer, this actually keeps
from looking at your opponent's values. For the computer, it does not make any difference (it never cheats).
End of game statistics
All shots and results are taken into account and when the game ends, simple stats are shown. Remember: Aim for the top by aiming at your opponent.
The computer against itself
The game lets you play the computer against itself. I used this to test that the pseudo-AI would always, eventually, find a winning shot. This
was necessary since the AI does not compute a perfect one-shot win. Instead, it tries to find it by trial and error.
Screenshots (CGA version)
Here are screenshots of the CGA version, which is also compatible with EGA and VGA cards. I chose to use
the Green-Red-Brown-Black palette since it works well to display wooden crates. For the rats however, let's
just say the their green color is a side effect of their fireball throwing ability?
Screenshots (Tandy version)
And now here is the 16 color Tandy version. There are a few extra crate types (supposed to be containers) and I tried giving a camouflage theme
to the font.
Unfortunately this version will not work on CGA, EGA and VGA cards. You will need a real Tandy (or PCjr?) computer if you want
to play this slightly more colorful version of the game. Under DOSBox, use the
In action on real hardware
Here are a few pictures of the game running on a Tandy 1000 EX and on an IBM 5160 (XT) clone with CGA card.
Tandy 1000 EX
XT clone credits
XT clone in game
Send me your pictures!
I would be very happy to receive pictures of the game running on other old PCs to add them here. Especially,
I would like to know if the game works on PCjr and on an IBM 5150, the first IBM PC!
Mini « making of »
In January 2016, after creating a solution for easily transferring files
to my Tandy 1000 EX,
I sent qbasic and gorillas.bas
to the Tandy hoping to make a tournament
with my brother in the near future. But this did not happen. Somehow, the 256 kilobytes of memory built into this computer
were amazingly not enough to run this simple game...
"Utterly unacceptable" I thought. And as at the time I had recently developed basic 8086/8088 assembler skills due to the
aforementioned file transfer project, I made the evident and natural decision (who wouldn't right?) of writing a similar
game from scratch, carefully written in assembler and designed to work on my 7.16 MHz Tandy 1000 as well as slower systems...
A few weeks later, the game was working. From then, for several months on and off, I made tweaks and improvements such as
adding a second language, adding support for the 16 color Tandy-specific video mode (for my Tandy 1000 EX!), creating a
for the PC booter release... Until August 2016 when I deemed the result acceptable.
Development was made under Linux. The game is coded entirely in assembler (using nasm
the related tools (image conversion, music compression, etc) are all coded in C. During development, I used DOSBox to
test (which I even ran directly from my Makefile).
I drew the game artwork using a mix of GrafX2
. The title screen illustration, drawn by
, was sketched on paper first,
then photographed and finally cleaned up in GIMP. All images are pre-processed by a in-house tool which
reorders lines in a way that is more convenient for CGA, which means simpler and faster display code. (In
CGA video, even and odd lines are in distinct memory areas). A similar complexity exists for Tandy modes
as well (but then, there are four memory areas)...
I composed the music using MONOTONE
. I use the Disk Writer
function which saves the values one must write to the registers controlling the PC speaker to reproduce the music. This
is very repetitive data which wastes space, so I compress the data using a simple RLE algorithm before embedding it
in the game executable.
Besides DOSBox, I used the Tandy 1000 EX that sparked the project, and IBM XT clone with a CGA card, a generic Pentium 133 and VMware.