DONKEY.SMS: A game for Master System inspired by DONKEY.BAS


Title screen Game screenshot Fake box

After creating a reprogrammable SMS cartridge system, I wanted something I could freely pre-program in the cartridges I would sell, to serve as a test for me, but also to allow users to confirm what they received is functional, before of course overwriting everything with content of their own.

Instead of a simple test ROM which would display technical data on screen, I decided to make a game!

As I had no experience programming for the SMS, it had to be something simple, but not too simple, otherwise I would not learn much.

I decided to make a game similar to DONKEY.BAS. This allowed me to have a scrolling background, to play with the color palette, to use sprites, etc. I even hit a few limitations, such as the maximum number of simultaneous sprites on a line, which forced some changes to the game logic and layout. Exactly what I hoped: There were a few obstacles, but nothing too difficult.

Conclusion: I have a complete game with 3 modes, some music, a demo mode and scores saved in the cartridge flash. I also think that my version is more fun than the original, but feel free to disagree. But what matters most is that I can distribute it freely, since it is my own game.


The original (DONKEY.BAS) is a PC game played with a keyboard using the SPACE key to switch lane. Initially I did the equivalent using SMS button 1.

But later, when I added the 3-lane mode, this was no longer appropriate: Which lane should the car move to? So I switched to using the D-Pad.

After playing and testing the game many times, the game started to feel too slow. So I converted Button 1 into an accelerator. Pressing it temporarily doubles the speed. So in the final version, the buttons are:

  • D-Pad left/right: Switch between lanes
  • Button 1: Speed boost

Sega Paddle and homemade version

Sega Paddle and homemade version

The game supports the Sega HPD-200 "Paddle Control" and my homemade paddle. When playing with a Paddle, the car position can be finely controlled by rotating the knob. The car is not longer always centered on a lane. This gave me the idea of creating a "laneless" mode, where even the obstacles are no longer centered on lanes.

The car instantly reacts to any rotation of the paddle knob. Playing the game with a Paddle and a CRT without lag is a pleasure, and it the game even feels easier! A paddle is the controller of choice for this game!


The first level reproduces the color theme from the original, DONKEY.BAS:
Original theme

But as soon as the second level, the SMS color capabilities are better used. The color them changes a few times during the game. There are four other variations:
Grass theme Desert theme Snow theme

In the night theme, I use the horizontal interrupt to darken the color palette mid-frame, to make it look the car headlights (hmm.. or rather, lights mounted on the rear part of the roof) are lighting up the way. (Yeah... not so good, but I really wanted to do something with the horizontal interrupt and that's what I came up with)
Night theme

The game is coded to use the Flash memory (if detected) or normal battery-backed SRAM to save scores, as well as the availability of the two extra modes to unlock:
New best score message Menu with two modes locked

For instance, scoring above 100 unlocks the 3-lane mode. In this new mode, the game is also faster right from the start.

New mode unlocked message Menu with only one locked mode 3-lane mode screenshot

Beating level 16 unlocks the laneless mode, where the car and the obstacles can be anywhere instead of being lane-centered. Playing this with a controller is quite a challenge. A Paddle is almost required here!
All modes unlocked Game without lanes

Gameover message


Version 1.2
February 12, 2021 (Friday)
Compatibility fix for Megadrive controllers
donkey-1.2.sms (64 KB)
Show previous releases...
Version 1.1
February 10, 2021 (Wednesday)
  • Stop giving out new lives every 4 levels (too easy)
  • Give one life each time level 16 gets completed.
donkey-1.1.sms (64 KB)
Version 1.0
January 28, 2021 (Thursday)
First release
donkey-1.0.sms (64 KB)

Cartridge version

This may be a bit much for such a simple game, but why not! I already had blank cartridges and a cartridge programmer, the only missing thing was a label!

If you would like one, the game cartridge is for sale on!

(if you tire out of the game, the cartridge can be reprogrammed)

DONKEY.BAS inspiration

This game is inspired by (or is a remake of) DONKEY.BAS which came with the first MS-DOS versions. It appears that Bill Gates himself was one of the programmers!

My aim was not to create a perfectly identical game, and in fact, I did not even replay DONKEY.BAS before coding my SMS game. My "design document" was a screenshot, the game description on Wikipedia, and my memory of playing it about 25 years ago.

In my version, instead of only moving up the car when obstacle is avoided, I also increase the speed and add more simultaneous obstacles to avoid (up to 3 at a time in some areas).

In an attempt to make the game more interesting, I also added new concepts such as such as the 3-lane and laneless modes. Of course, with the SMS graphics hardware, making the game more colorful and smooth-scrolling was easy.

Here is the original game in action, running on a PCjr. First from the player's point of view:

And now a closer view of the screen:

Tools used

Making this SMS game relatively easy, thanks to the existence of many tools without which I would have had a lot more work to do!

A big thanks to the authors of the above!

Also for Game Gear: DONKEY.GG

The Game Gear portable game system shares a lot of its architecture with the SMS and is supported by devkitSMS. So why not? Here comes DONKEY.GG!

DONKEY.GG title screen

The main difference is the screen size. While the SMS typically displays a 256x192 pixel image, the Game Gear resolution is only 160x144. It feels a bit tight when compared directly:

For a brief moment I tought of moving the score indicators and life indicators to the visible part of the screen, but I felt it would be distracting and make the play area too crowded. In the end I only kept the score indicator in the upper right corner.

The remaining number of lives, instead of being permanently displayed, is now briefly shown at the beginning of the game and after loosing a live.

Remaining lives display Game screen Game screen

For the mode selection menu, I added horizontal scrolling to the original screen and made other small adjustments (car position, text length and placement, etc).

Menu Menu Menu

I used one of my reprogrammable cartridge circuits to test the game on my Game Gear:

The game running on Game Gear

The game running on Game Gear

The game running on Game Gear

The game running on Game Gear

The game running on Game Gear

The game running on Game Gear

The game running on Game Gear

The game running on Game Gear

Unfortunately my console is in bad condition, as can be told from the low viewing angle, the vertical stripes, the lack of sound...

While the first level (with the original DONKEY.BAS white on grey color theme) is somehow playable, the brown on grey donkeys in level 2 are almost invisible and it's no fun at all. Would it work better on a Game Gear in perfect condition? Or are quick movements of objects on a background that is not highly contrasting not recommended on this platform anyway?

I think I should probably adapt colors to work better on this kind of display, as well as lower the overall game speed to compensate for the additional difficulty caused by the lack of screen real estate, but first, I would like to try the game on a console in good condition...,

Meanwhile, here's the ROM anyway!

Version 1.0
February 25, 2021 (Thursday)
First release of Game Gear version
File(s): (64 KB)