Donkey Kong =========== This game is for Sinclair ZX Spectrum and compatible computers and is based on the arcade game Donkey Kong from 1981, designed and published by Nintendo and programmed by Ikegami Tsushinki. This version 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 very old, cheap, slow, and funny home computers that weren't designed for games. I am not a professional programmer and I never studied it at school, but I like those old, simple, crappy machines. A long time ago I made several games in BASIC language for the PMD 85 and ZX Spectrum computers, many years later I learned assembler (machine code) so I could make games that wouldn't make anyone vomit. This allows me to come up with new crazy tricks for ZX Spectrum, and in every game I try to use at least one little thing that I have never seen on this computer. This is my first finished assembler game. I worked on it from 2022 to 2024 while learning assembly language, finished it in September 2024, and released the first version to a limited number of people in October 2024 to get some feedback and drive them mad. Probably the main attraction are colours, for which I had to figure out a wacky graphic system to reduce the Spectrum "colour clash" and make an illusion of several new colours. I am not a Donkey Kong expert and if I remember correctly, I had never played it until shortly before I started working on my version, but I tried to make the game as good as possible. I also never intended to make remakes of arcade games, so this is an exception that was made as a world-important barrel-throwing ape experiment. The game was also released by another publisher in November 2024 after his interest and our agreement, because I liked the idea of cute game cassette tapes like in the 1980s. It was released as part of a home-made game collection, also exposing it to a wider hungry audience. I wasn't directly involved in that business (I wasn't much into those things), 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. We also agreed that I could continue to distribute the game freely with the previous loading screen (with just my name and my "Artonapilos" sign, plus the Nintendo note), 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. I made several graphical and gameplay improvements, added AY sound, background music, made the control screen appear before each new game on computers with extended memory, added a missing part of the final animation, a high score table for computers with extended memory, made the opening animation appear after each game start, fixed some errors, and released the game for free as a digital tape file. Later I added several other media formats and also adapted the game in a simple way for the SAM Coupe computer and the Alf game console. During 2025, two other publishers were interested in the game, but I decided not to use Donkey Kong anywhere where it could be considered a commercial release. In October 2025, I released a new cassette tape for myself and several friends with the final ZX Spectrum version of the game on one side and the SAM Coupe version on the other side. The cassette was free of charge and only a few were made, because who would want such rubbish nowadays. The game should work on all Spectrum compatible computers since the first ones from 1982 (except ZX Spectrum 16K) to current types. 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 out of 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 * Itch.io: Rating - 4.9 out of 5 * Retro Computer: "Definitely a must-have game." * Indie Retro News: "A pretty incredible arcade clone." * El Mundo del Spectrum: "The fidelity to the original game is astonishing." * Pixel Perfect: "An absolutely stunning version of Donkey Kong." * Gamopat: "Arcade at home on Sinclair's computer." * ZX-Spectrum Games: "The most elaborate Donkey Kong for ZX Spectrum." Lukas Rachunek Authors ------- Original arcade game (Nintendo, 1981): * Game design, graphics: Shigeru Miyamoto * Program (Ikegami Tsushinki): Hirohisa Komanome, Minoru Iinuma, Mitsuhiro Nishida, Yasuhiro Murata * Sound: Yukio Kaneoka, Hirokazu Tanaka * Production: Gunpei Yokoi ZX Spectrum version (Artonapilos, 2024): * Program, graphics, sound, loading screen: Lukas Rachunek (Artonapilos) Object of the game ------------------ As Mario the carpenter, the player must ascend a construction site and rescue his girlfriend Pauline from a giant ape Donkey Kong. The player goes through four game stages, at the end of the fourth stage Pauline is rescued. Then the game switches to a higher difficulty level and the four stages are repeated. The game gradually becomes more difficult up to level 6. From level 7 onwards it remains as difficult as level 6. Mario starts with three lives. For the first 10000 points, the player gains one new life. Loading the game ---------------- The ZX Spectrum version of the game is available as a TAP file (audio tape image), a MDR file (Microdrive tape image), a WDR file (Wafadrive tape image), a DSK file (+3 disk image), a TRD file (TR-DOS disk image), a MGT file (Disciple / +D disk image), an OPD file (Opus disk image), a D80 file (D40 / D80 disk image), a FDD file (Timex FDD disk image) and a DCK file (Timex cartridge image), which can be used in ZX Spectrum emulators. It can also be used on a real ZX Spectrum computer using a card reader (ZXCF, DivIDE, DivMMC etc.), or it can be transferred to an audio tape, a cartridge tape, a floppy disk or a memory cartridge if you prefer an old-school loading experience of the 1980s. The TAP, MDR, WDR, DSK, TRD, MGT, OPD, D80, FDD and DCK files contain the same version of the game. TAP - audio cassette tape: * ZX Spectrum 48K: LOAD "" (press the keys J, SS+P, SS+P, ENTER), then start the tape. Ater the game loads, stop the tape. * ZX Spectrum 128K: Tape Loader (and the ENTER key), then start the tape. Ater the game loads, stop the tape. MDR - Microdrive tape (after turning on the computer): * ZX Spectrum 48K: RUN (press the keys R, ENTER). * ZX Spectrum 128K: 128 BASIC (and the ENTER key), run (and the ENTER key). WDR - Wafadrive tape: * ZX Spectrum 48K: NEW * (press the keys A, SS+B, ENTER), LOAD * (press the keys J, SS+B, ENTER). * ZX Spectrum +2A / +3: +3 BASIC (and the ENTER key), usr 0 (and the ENTER key), NEW * (press the keys A, SS+B, ENTER), LOAD * (press the keys J, SS+B, ENTER). DSK - ZX Spectrum +3 disk: * Loader (and the ENTER key). TRD - TR-DOS disk (Beta Disk): * ZX Spectrum 48K: After turning on the computer, it should load automatically. If not, type RANDOMIZE USR 15619: REM : RUN (press the keys T, CS+SS, L, 1, 5, 6, 1, 9, SS+Z, E, SS+Z, R, ENTER). If it still doesn't work, use 15363 instead of 15619. * ZX Spectrum 128K: 128 BASIC (and the ENTER key), randomize usr 15619: rem: run (and the ENTER key). If it doesn't work, use 15363 instead of 15619. * Pentagon: TR-DOS (and the ENTER key), RUN (press the keys R, ENTER). * Scorpion: 128 TR-DOS (and the ENTER key). MGT - Disciple / +D / Uni-DOS disk (after turning on the computer): * ZX Spectrum 48K: RUN (press the keys R, ENTER). * ZX Spectrum 128K: 128 BASIC (and the ENTER key), run (and the ENTER key). OPD - Opus disk (after turning on the computer): * ZX Spectrum 48K: RUN (press the keys R, ENTER). * ZX Spectrum 128K: 128 BASIC (and the ENTER key), run (and the ENTER key). D80 - Didaktik 40 / 80 / Kompakt disk (after turning on the computer): * RUN (press the keys R, ENTER). FDD - Timex FDD disk: * After turning on the computer, it should load automatically. If not, type LOAD *"start" (press the keys J, SS+B, SS+P, S, T, A, R, T, SS+P, ENTER). DCK - Timex cartridge: * Turn off the computer, insert the cartridge, turn on the computer. (If you use a real computer, never insert of remove any cartridge while the computer is on!) * If you need to make a real cartridge from the DCK cartridge image file, you need to remove the first 9 bytes from the DCK file before writing it to the cartridge (these bytes are for emulators only). Controls -------- When the game loads, press any key. Also parts of the game's introduction can be skipped by pressing any key. * Keyboard: P - right O - left Q - up A - down M - jump * right + jump = jump right * left + jump = jump left Keyboard controls are redefinable. The game can also be controlled with a joystick connected in various ways: * Kempston / Opus / Multiface joystick * Cursor / Protek / AGF joystick * Sinclair / Interface 2 joystick (right joystick) * Fuller joystick * Timex joystick (left or right joystick) After getting a high enough score, the player's name can be written into the high score table. When writing the name, four capital letters, digits, or spaces can be entered. The CAPS SHIFT or SYMBOL SHIFT key deletes characters and ENTER ends the writing. 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 computer's 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, for example 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, also AY-3-8910, YM2149 and some other sound chips can 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, the sound of falling springs plays there instead. If AY sound is selected and background music is on, some sound effects use two AY sound channels when the third channel plays the music. If AY sound is selected and background music is off, all sound effects use all three AY sound channels (their sound is fuller). Music on / off (all Spectrum compatible computers): * on - background music (or sound of falling springs in the third game stage) * off - no background music (and no sound of falling springs) Computers with extended memory ------------------------------ This ZX Spectrum version of the game was made for ZX Spectrum 48K, there isn't any special version for ZX Spectrum 128K, Didaktik Gama or Timex computers. There is only one game file which loads into the base 41 KB memory (48 KB - 7 KB of video 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 +3B, ZX Spectrum +3E, ZX Spectrum SE, ZX Spectrum Vega, ZX Spectrum Vega +, ZX Spectrum Neo, ZX Spectrum Next, Delta, Inves Spectrum +, Timex TC 2048 (PAL), Timex TC 2068, Timex TS 2068, Komputer 2086, TK90X (PAL-N, PAL-M), TK95 (PAL-N, PAL-M), Czerweny CZ 2000, CZ Spectrum, CZ Spectrum Plus, Didaktik Gama, Didaktik M, Didaktik Kompakt, Leningrad, Vesta IK-30, Pentagon, Scorpion, Scorpion Turbo +, ATM Turbo, ATM Turbo 2+, ZX Evolution, Profi, KAY, HC-91, BK-001, Dubna, Orel BK-08, Harlequin, Omni, Sizif, ZX-Uno, N-Go, Element ZX, ESPectrum, The Spectrum and probably some others. As for some of these computers outside the official Sinclair family, I could only test them using emulators, so I hope everything works flawlessly everywhere, with the following exceptions. If the game doesn't work correctly on ZX Spectrum Next with HDMI output, try using RGB/VGA output (and probably 50 Hz) until HDMI works the same (some Spectrum Next core updates may be available later). On Dubna, the game works slowly in some situations, because this computer only has half the processor frequency compared to ZX Spectrum, but it is still playable (at least on lower difficulty levels). I am also not sure if the game works correctly on Timex TC 2048 NTSC, DB Spectrum +, Elwro 800, Sprinter, Baltik, Hobbit, Delta-S, Byte, Kvorum, Samsung SPC-650, Spectral, HT 3080C, CIP-03, ZXM-Phoenix or any other unmentioned Spectrum compatible computers. It should work, but I don't know how correctly, because I didn't find any emulators of these machines, nor any users, so I couldn't test it. If the computer (or its emulator) on which the game is running has a slightly different speed or behaviour than the computer types on which the game was tested, or has some differences that prevent it from being detected correctly, the game may have incorrect (shifted) colours or shapes in the introduction, or moving objects may flicker during the introduction or gameplay. This may apply, for example, to some home-made or modified computers, or very simple emulators. Also, if the screen displaying the game has a different frame rate than the computer running the game (e.g. 50 Hz on the standard ZX Spectrum), the orange and violet parts of fires and ghosts may not appear or may flicker irregularly. Since this version of the game is designed 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 computer's internal speaker (it is just automatically converted to different values during playing), so all music uses only one voice (sometimes combining multiple AY channels into one voice for better sound) and the overall game sound is not designed for any stereo system. 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, also 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 (the player can use combinations of horizontal and vertical controls to more easily enter and exit ladders). Some other game mechanics are also slightly adjusted to make the game better balanced in this version. Additionally, a "level" column is added to the high score table so players can keep track of how far they have come in the game. This game doesn't run at exactly the same speed as the original arcade version during gameplay, because the arcade game runs on 60 Hz hardware, but the standard ZX Spectrum uses 50 Hz. Some non-European Spectrum compatible computers use 60 Hz, but then the sound and the opening animation are faster than in the arcade version, because I made them for 50 Hz. No unusual knowledge or types of tools that weren't already known in the 1980s are used here. I also didn't use any game-making engine, high-level language, program library, sound/music editor, PC/Mac graphics editor, in-game data compression, automatic code generation or generative AI model (it would damage my joy of creating). And I didn't use any part of a program of another game from any computer or game console. This 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 manually in Art Studio in a ZX Spectrum emulator and converted using a home-made BASIC program, 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 with the standing ape in the introduction and the high score table is manually timed to use more colours than usual. In both cases, the effect is timed according to the computer type the game is running on, and it should work on all aforementioned tested computers. As for the colours during gameplay, the "colour clash" hasn't completely disappeared, it is just reduced enough that the game can be very colourful without being too distracting, so it doesn't look like a typical ZX Spectrum game. I didn't use any source code or ROM content of the original arcade game, I have 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 direct port (which wouldn't work anyway), 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 had to be cropped, 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 were made after the arcade game, but it had to be done in a completely different way (especially two-colour attribute/character based Spectrum graphics without sprites). The goal wasn't to create an impossible exact copy of the original game, but a version that I would like, that would be very close to it, and that would play well on ZX Spectrum. SAM Coupe version ----------------- There is also a version of this game for the SAM Coupe computer, but it looks exactly like the ZX Spectrum version because I made it from the same source code (also using JOE and Pasmo). SAM Coupe is partially compatible with ZX Spectrum, but not completely, so the program needed to be modified to run properly. The game doesn't use the graphics capabilities of SAM, it runs in a ZX Spectrum compatible graphics mode. It would be no problem to draw new pictures in a different graphics mode, but using them would require rewriting a large part of the game program. It can't be easily modified for a different graphics mode because of the many tricks for reducing "colour clash" on ZX Spectrum, plus it would require memory reorganization and paging. The game wasn't designed for SAM, this version is just a by-product of the Spectrum version. The game works the same way as on ZX Spectrum 128K, but instead of the AY sound chip, this version uses SAM Coupe's own SAA sound chip. These two chips are not compatible, so a new sound player had to be written. As with the AY sound player on ZX Spectrum, the SAA player uses the same data as the Spectrum's internal speaker, so again no polyphonic music. The internal speaker player has been removed, because the SAA player is larger and more complicated than the AY player, so some of the related parts of the game program had to be simplified to make it smaller and less confusing. Moreover, the SAA chip is included in every SAM Coupe, and the sound of the Spectrum's internal speaker sounded worse on SAM than on Spectrum, so removing it didn't matter. As with ZX Spectrum, the SAM Coupe version of the game can be controlled with the keyboard or a joystick. The joystick connects to the SAM's joystick port. The SAM Coupe version of the game is available as a TAP file (audio tape image) and a MGT file (floppy disk image), which can be used in SAM Coupe emulators. It can also be used on a real SAM Coupe computer using a card reader (DivIDE, DivMMC etc.), or it can be transferred to an audio tape or a floppy disk if you prefer an old-school loading experience of the 1990s. The TAP and MGT files contain the same version of the game. Loading the game: * TAP - audio cassette tape: load"" (and the RETURN key), then start the tape. Or press the F7 key, then start the tape. Ater the game loads, stop the tape. * MGT - floppy disk: boot (and the RETURN key). Or press the F9 key. Alf version ----------- There is also a version of this game for the Alf game console. Alf is based on ZX Spectrum, so the game also looks the same, but the console has no keyboard, only two console controllers, and uses ROM-based memory cartridges. Therefore, the game is modified so that everything can be controlled using just a console controller. Each Alf cartridge contains a list of games and their descriptions, but these texts can only be written in Cyrillic characters. Therefore, in the Alf version of the game, its selection and description on the cartridge are in Russian, but the game itself is in English, just like the other versions. On the control screen: * controller right / left = music on / off * controller button = start game If the console is modified for the AY sound chip, then the sound type can also be selected on the control screen: * controller up / down = sound 48K / 128K If the console is modified for extended memory, then a player's name can be written into the high score table (if the player gets a high enough score): * controller up / down = character selection * controller right / left = cursor right / left * controller button = end writing The Alf version of the game is available as an ALF file (Alf cartridge image), which can be used in Alf emulators. It can also be used on a real Alf console by transferring it to a memory cartridge. Loading the game: * Turn off the console, insert the cartridge, turn on the console. (If you use a real game console, never insert of remove any cartridge while the console is on!)