A downloadable game

•  6 April 2025:  Yet another updated version is available.

•  23 March 2025:  Another updated version is available.

•  10 March 2025:  Updated version is available.


This game is for the ZX Spectrum computer and is based on the arcade game Donkey Kong from 1981 published by Nintendo. It is freeware, I don't charge any money for it. I made it for fun, as a programming challenge, and as an exercise in how to solve the well-known colour limitations of ZX Spectrum. All arcade authors are credited in the game, I kept the game title and, in appropriate places, the name of the arcade publisher, as I make no claim to originality of the game ideas. It is a tribute to the creators of Donkey Kong and a demonstration that anyone can make nice-looking and well-playable games, even for old cheap home computers that weren't designed for games.

This is my first finished assembler game. I worked on it from 2022 to 2024 while learning assembly language (machine code), finished it in September 2024, and released the first version to a limited number of people in October 2024 to get some feedback. Probably the main attraction are colours, for which I had to figure out a special graphic system to reduce the Spectrum colour clash and make an illusion of several new colours.

The game was also released by another publisher in November 2024 after our agreement, because I liked the idea of game cassettes like in the 1980s. It was released as part of a home-made game collection, also exposing it to a wider audience. I wasn't part of that business (it was my choice), but it was nice to see my game on pretty cassettes and all the positive reactions. That version has a modified loading screen with the publisher and collection name, and is probably still available for purchase.

We also agreed that I could continue to distribute the game freely with the previous loading screen, and the publisher had no plans to release updated versions (the cassettes had already been made), so I continued to develop the game for the public. In November 2024, I made several graphical and gameplay improvements. In December 2024, I added AY sound (e.g. for ZX Spectrum 128K) and released the game for free as a TAP file on the Spectrum Computing website. In January 2025, I added background music. In February 2025, I made the control screen appear before each new game on computers with extended memory (e.g. ZX Spectrum 128K or Didaktik Gama), added a missing part of the final animation, and released the game again on Spectrum Computing and also on itch.io. In March 2025, I made a few minor gameplay and sound improvements and added a high score table for computers with extended memory.

The game should work on all Spectrum compatible computers since the first ones from 1982 (except ZX Spectrum 16K). It is also an answer to a long-standing question: Is it possible to make a decent Donkey Kong game for ZX Spectrum?

  • Crash magazine:  Crash Smash - 90%
  • Spectrum Computing:  User score - 9/10
  • Spectrum Computing:  Game of the Year - 1st place
  • Planeta Sinclair:  Best Arcade & Action Game - 2nd place
  • Planeta Sinclair:  Game of the Year - 5th place


Object of the game

As Mario, the player must ascend a construction site and rescue his girlfriend Pauline from a giant ape Donkey Kong.


Controls

When the game loads, press any key.

Parts of the game's introduction can be skipped by pressing any key.

  • Keyboard: P - right, O - left, Q - up, A - down, M - jump

Keyboard controls are redefinable.

  • left + jump  =  jump left
  • right + jump  =  jump right

The game can also be controlled using various types of joysticks:

  • Kempston joystick
  • Cursor / Protek / AGF joystick
  • Sinclair / Interface 2 joystick (right joystick)
  • Fuller joystick
  • Timex joystick (left or right joystick)

When writing a player's name into the high score table, three capital letters, digits, or spaces can be entered. The high score table is only available on computers with extended memory (e.g. ZX Spectrum 128K or Didaktik Gama).


Sound options

Sound 48K / 128K:

  • 48K - internal speaker (all Spectrum compatible computers)
  • 128K - AY sound chip (e.g. ZX Spectrum 128K, or ZX Spectrum 48K with an external AY)

Music on / off (all Spectrum compatible computers):

  • on - background music
  • off - no background music


Since the first version, the game has been improved in several ways

There is an option to turn on AY sound. It should work on any ZX Spectrum type with an AY sound chip, not only on ZX Spectrum 128K's built-in AY. ZX Spectrum 48K with an external AY (Melodik, ZX-AY, Fuller Box, DK'Tronics 3-Channel Sound Unit) is sufficient, it also works on Timex's built-in AY. If the program detects an AY chip, it automatically selects AY sound, but internal speaker / AY can also be selected manually on the control screen.

There is an option to turn on background music. It works for both the internal speaker and AY, and in both cases the music plays simultaneously with other sounds. When the background music is off, the AY sound effects use all three sound channels. When the background music is on, the AY sound effects use only two channels.

When the background music is on, the sound of falling springs plays in the third game stage.

A Mario animation error at the top of the ladders in the first game stage is fixed.

The barrels behaviour in the first game stage is changed to be closer to the original arcade game. There is also a better chance that more fires will appear earlier in the first stage.

In the second game stage, Mario walks slower against the direction of the conveyor belts.

The lifts in the third game stage are faster in level 2 and above.

During the first several levels, the fires and ghosts are slightly faster at each subsequent level.

At lower levels, the monkey throws barrels diagonally less often than before, at higher levels, he throws them diagonally more often than before.

The monkey climbing animation plays every time a new game is started. But the jumping part of the animation with the falling girders is still visible only after loading the game.

The "HOW HIGH" screen has the correct monkey picture and correct font before every stage, therefore this screen was removed from the introduction.

The final animation contains the monkey "dance" before the fall.

There is no longer a corrupted area in the background graphics on the Inves Spectrum + computer.

The game works on more computer types, including Timex TC 2068, Timex TS 2068 and Komputer 2086.

The game can be controlled with a Fuller joystick and both Timex joysticks.

On ZX Spectrum 128K and other computers with extended memory, the introduction and control screen appear before each new game, not only after loading the game. This feature also works on Didaktik Gama.

On ZX Spectrum 128K and other computers with extended memory, the game uses a high score table. This feature also works on Didaktik Gama.

There is also a version of this game for the SAM Coupé computer, but it looks exactly like the ZX Spectrum version because I made it from the same source code. The SAA sound of the SAM version is not yet finished, so the game is not yet here.


Technical information

The game is for ZX Spectrum 48K. There isn't any special version for ZX Spectrum 128K or Timex computers, there is only one game file which loads into the base 48K memory and which should work on all Spectrum compatible computers (except ZX Spectrum 16K), including less compatible ones. However, if the game is loaded to a computer with an AY sound chip, it can use it for different sound, and if the computer has extended memory, it can be used for a repeated introduction and a high score table.

The game is available as a TAP file (digital tape image), which can be used in ZX Spectrum emulators. It can also be used on a real ZX Spectrum computer using a card reader (DivIDE, DivMMC etc.), or it can be transferred to an audio tape if you prefer an old-school loading experience of the 1980s.

In order for the game to work properly on different types of ZX Spectrum and compatible computers, it detects the computer type and adjusts its parameters accordingly. The game works on ZX Spectrum 48K (PAL, NTSC), ZX Spectrum +, ZX Spectrum 128K, ZX Spectrum +2, ZX Spectrum +2A, ZX Spectrum +2B, ZX Spectrum +2E, ZX Spectrum +3, ZX Spectrum +3E, Timex TC 2048 (PAL), Timex TC 2068, Timex TS 2068, Komputer 2086, Delta, Pentagon, Scorpion, Scorpion Turbo +, Didaktik Gama, Didaktik M, Didaktik Kompakt, TK90X (PAL-N, PAL-M), TK95 (PAL-N, PAL-M), Inves Spectrum +, Harlequin, Omni, Leningrad, Vesta IK-30, Orel BK-08, HC-91, BK-001, Dubna, Profi, KAY, ATM Turbo, ATM Turbo 2+, ZX Spectrum Next, N-Go, ZX-Uno and probably some others.

On Dubna, the game works slowly in some situations, because this computer only has half the processor frequency compared to ZX Spectrum.

I am not sure if the game works correctly on ZX Spectrum Next with HDMI output. I've had different feedback from different users, so I recommend using the RGB or VGA output of Spectrum Next.

I don't know if the game works correctly on Timex TC 2048 NTSC, Czerweny CZ 2000, CZ Spectrum, CZ Spectrum Plus, DB Spectrum +, Elwro 800, Sprinter, Baltik, Hobbit, Samsung SPC-650, Spectral, HT 3080C, CIP-03, Sizif, ZX Spectrum Vega, The Spectrum or any other Spectrum compatible computers. I didn't find any emulator of these machines, nor any users, so I can't test it.

If the computer on which the game is running has a slightly different speed than the computers on which the game was tested, or has some differences that prevent it from being detected correctly, the game may have incorrect colours in the introduction, or moving objects may flicker.

The order of the game stages is based on the original Japanese arcade version from 1981. This order was also used in the official 1980s versions for several home computers, including ZX Spectrum. There is also a later American arcade version from 1981 with a different order that I didn't use.

I didn't use any game-making engine, high-level language, program library, sound/music editor, PC graphics editor, compression (except the loading screen), automatic code generation or generative AI. The game is written manually in assembly language in the old JOE text editor and compiled with Pasmo, the graphics (including the loading screen) are drawn in Art Studio in a ZX Spectrum emulator, and the sound is also written in assembly language.

There is no raster multicolour engine or similar effects during gameplay, only the colouring of the standing monkey in the introduction is manually timed to use more colours that usual.

I didn't use any source code of the original arcade game, I've never seen it, and I don't think it would be very useful on ZX Spectrum (although it uses the same Z80 processor). Moreover, I usually don't understand other people's programs very well, and I didn't want to make a port but to program everything my way. Therefore, even though my version of the game is based on the arcade version, some behaviours may differ slightly. The screen layout needed to be shortened a bit, because the graphical parts are the same size as in the arcade version, but the arcade screen is vertical and the Spectrum screen is horizontal. The graphics and sound are made after the arcade game, but it had to be done in a completely different way (especially character based two-colour Spectrum graphics without sprites).

The controls are slightly modified compared to the arcade version for a smoother experience.

The game doesn't run at the same speed as the original arcade game, because the arcade game runs on 60 Hz hardware, ZX Spectrum uses 50 Hz. If you don't like the difference, you can try running the original game at 50 Hz (83 % speed or a PAL machine) or this version at 60 Hz (120 % speed or a NTSC machine).

Updated 3 hours ago
StatusReleased
Rating
Rated 4.9 out of 5 stars
(8 total ratings)
AuthorArtonapilos
GenrePlatformer
Tags8-Bit, Arcade, assembler, z80, ZX Spectrum
Average sessionA few minutes
LanguagesEnglish
InputsKeyboard, Joystick
AccessibilityConfigurable controls

Download

Download
dk.tap 45 kB

Development log