Donkey Kong
A downloadable game
• 27 May 2025: Another new updated version is available.
• 22 May 2025: Next updated version is available.
• 1 May 2025: More updated version is available.
• 27 April 2025: Slightly updated version is available.
• 21 April 2025: And again another updated version is available.
• 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. In April and May 2025, I made the entire opening animation appear after each game start.
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
- left + jump = jump left
- right + jump = jump right
Keyboard controls are redefinable. 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, four 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
The game can use the internal speaker or the AY-3-8912 sound chip. The internal speaker (or its sound) is available on all ZX Spectrum compatible computers. Some of them also have an AY sound chip, such as ZX Spectrum 128K, +2, +3, Timex TC 2068, TS 2068 and some others. If the computer doesn't have a built-in AY, an external AY can be connected to it, such as Fuller Box, DK'Tronics 3-Channel Sound Unit, Melodik, ZX-AY and the like. If the game detects an AY chip, it automatically selects AY sound, but the sound type can also be selected manually on the control screen.
Instead of the AY-3-8912 chip, AY-3-8910, YM2149 and some other sound chips can also be used. They are compatible with it and are included in some computers such as Pentagon, Scorpion, and other devices.
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)
In addition to sound effects, the game can play background music. It works for both the internal speaker and AY, and in both cases the music plays simultaneously with sound effects. The third game stage doesn't contain background music, but if it is turned on, a sound of falling springs plays there.
When AY sound is selected and background music is on, the sound effects use two AY sound channels. When AY sound is selected and background music is off, the sound effects use all three AY sound channels (the sound is fuller).
Music on / off (all Spectrum compatible computers):
- on - background music
- off - no background music
Computers with extended memory
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 48 KB 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 extended memory, this memory is automatically used in the following way:
- The introduction and control screen appear before each game start, not only after loading the game.
- The game uses a high score table.
These features work on ZX Spectrum 128K, +2, +3, Pentagon, Scorpion and other compatible computers, and also on Didaktik Gama.
Other technical information
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, The Spectrum 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 until HDMI works the same.
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 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 (or its emulator) on which the game is running has a slightly different speed or behaviour 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.
Since the game is for ZX Spectrum 48K, its AY sound is just a simple addition and is generated by a short program to fit in memory. Therefore it uses the same data as the sound for the internal speaker, so all music is only monophonic.
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.
The controls are slightly modified compared to the arcade version for a smoother experience. A "level" column is added to the high score table so players can keep track of how far they have come in the game.
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 model. 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 large blue text and the standing monkey in the introduction is manually timed to use more colours that usual. It should work on all aforementioned computers.
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, 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 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).
Since the first version, the game has been improved in several ways
The game includes a list of the authors of the original arcade game.
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 is sufficient, it also works on Timex's built-in AY.
There is an option to turn on background music (and the sound of falling springs in the third game stage). It works for both the internal speaker and AY, and in both cases the music plays simultaneously with other sounds.
The 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 and jumping animation with falling girders plays after each game start, not only after loading the game, therefore this animation was removed from the introduction.
The monkey in the climbing animation is more stable at the bottom of the screen and shouldn't flicker there on any computer.
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.
The large blue "DONKEY KONG" text in the introduction has colours closer to the arcade version.
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.
Updated | 14 hours ago |
Status | Released |
Rating | Rated 4.9 out of 5 stars (11 total ratings) |
Author | Artonapilos |
Genre | Platformer |
Tags | 8-Bit, Arcade, assembler, z80, ZX Spectrum |
Average session | A few minutes |
Languages | English |
Inputs | Keyboard, Joystick |
Accessibility | Configurable controls |
Download
Install instructions
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.
Development log
- Correctly coloured large text1 day ago
- Moved opening animation6 days ago
- More small changes27 days ago
- Other small unimportant improvements31 days ago
- Slightly improved introduction animation and one fix37 days ago
- Answers to a few questions48 days ago
- New minor sound and colour changes52 days ago
- High score table and other fixes66 days ago