Donkey Kong =========== 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. I am not a professional programmer and I never studied programming at school, but I like old simple computers. 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 better games. 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. 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 cassette tapes 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. 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), 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 (e.g. for ZX Spectrum 128K), added background music, 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, added 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 TAP file. 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 * Itch.io: Rating - 5/5 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 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, 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, 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 (sound of falling springs in the third game stage) * 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 --------------------------- 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, 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, but it is playable. 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 (it is just automatically converted to different values during playing), 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 for 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 with the standing monkey in the introduction and the high score table 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 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 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). This game doesn't run at the same speed as the original arcade version (only some animations and music), because the arcade game runs on 60 Hz hardware, but the standard ZX Spectrum uses 50 Hz. If you don't like the difference, you can try running the 60 Hz arcade game at 50 Hz (83 % speed or a PAL arcade machine) or running this 50 Hz Spectrum version at 60 Hz (120 % speed or a NTSC computer). The 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). There are only some changes in the program to make the game run properly on SAM. So it doesn't use the graphics capabilities of SAM. It's not just about new pictures, that wouldn't be a problem, but it would require rewriting a large part of the game's program. It can't be easily modified for a different graphics mode because of the many tricks to reduce colour clash on ZX Spectrum. As for sound, it unfortunately only uses the ZX Spectrum's internal speaker capabilities, because the AY (ZX Spectrum 128K) and SAA (SAM Coupe) sound chips are not compatible. The Spectrum version of the game's sound is too tightly bound to the program to be easily modified. Again, it would require rewriting multiple parts of the program and manually recreating all the music tables. I also tried using a program to automatically convert AY sound to SAA during playing, but it didn't work properly in this case. The standard joystick connection to SAM Coupe is compatible with the Sinclair / Interface 2 joystick, so if a joystick is connected to SAM, the Sinclair joystick can be selected on the control screen to control the game. The SAM Coupe version of the game is available as a TAP file (digital 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.