THE RING OF THE INKA (V. 2) ================================================== Scope: -------------------------------------------------- After having traveled all the way from England as a stowaway on a cargo ship, you find yourself aboard a raft, drifting on the sea with your destination, the west coast of South America coming into sight. Your boss has commanded you to search and retrieve one of the most precious treasures of the ancient Inka culture: A golden ring that exceeds the wildest dreams of every archaeologist. To make this happen, there are many adventures which must be survived: fierce animals attempt on your life, palace guardians haunt you and you need to make friends with a native tribe. Trivia: -------------------------------------------------- Michael Wiedmer (who used to be reachable via [1] but the site has not been updated for a long time) and I (Volker, visit me at [2]) wrote this game back then, when the Sinclair ZX Microdrive finally allowed multi-location adventure games with space-demanding screen graphics. The Professional Adventure Writer (PAW) from Gilsoft International was already on the market and so was the Graphic Adventure Creator (GAC) from Incentive, but we wanted more control over game play, nicer imagery and squeeze all this into the Sinclair BASIC of a 48K Spectrum, which was a free interpreter already at our hands. Yes, indeed: With the exception of - a bold font generator, - an advanced CLS (clear screen) routine to speed things up and hide some loading/decompressing magic - and the ZX0 image decompressor (see https://github.com/b0nefish/ZX0) so the game theoretically fits on a real(!) cartridge, (that were added later for extra spice) this adventure game uses no Z80 machine code at all. Please have mercy if reactions to key presses are a tad on the slowish side even though the interpreter/parser/tokenizer was massively improved in V. 2! Heavy compression of larger numbers aside of introducing the constant z for 0 (e. g. replacing 1 by SGN PI and every decimal numbers by VAL "...") has the potential of reducing the memory footprint even more but was ditched in favor of readability and execution speed. There is clever handling of command vocabulary through a lookup table with GO TO and GO SUB targets (abbreviations and synonyms can be used if possible), complex maps have been implemented by means of a mesh with room numbers that (if multiplied by 10) relate to command lines. And you will even face hostile characters moving around with (some sort of) artificial intelligence! In order to improve maintainability, we did not go to the extent of separating the variables and array in a separate loader or even compressing text (could be done with ZX0 as well). This would have made the source code (which is attached in its entiety, see the ./source subdirectory) very hard to manage and introduced even more machine code. Neither is there a (surprisingly complicated as it turned out) function to load and save game states contained in variables and arrays, so use your emulator's snapshot feature if you want to avoid getting killed early. However, there is a decent line wrapping subroutine (line 6000) to make the text more readable during runtime and segmented scrolling underneath the graphics. Feel free to sneak around in the code and learn about programming adventures in ZX BASIC, in case you are helplessly stuck somewhere in the game or - god forbid! - the program fails with an error. For the comp.sys.sinclair Crap Gaming Competition 2021 (aka. "CSSCGC 2021" available at [5]), I (Volker) have completely revamped the game, corrected tons of bugs and typos introduced 30 years ago, provided a context sensitive help system for beginners and even a DEBUG command that activates invulnerability, allows you to teleport between rooms and conjure up invisible/inaccessible objects. The icing on the cake is a cool loading screen and heavy optimization so the entire game plus all graphics would theoretically fit on a real cartridge. Disclaimer: I did *NOT* play through the complete adventure from start to end, so there still might be disappointments lurking. You feedback is always welcome. How to run: -------------------------------------------------- Any decent emulator with Sinclair ZX Microdrive support will do. I have tested the the virtual cartridge with EightyOne [3] and FUSE [4]. Here, just bring up hardware options, activate "Interface 1" as FDC, verify that the IF-1 ROM version is set to "Edition 2" and at least one Microdrive is connected. Additionally, FUSE needs to be provided with an external version of the Interface-1-ROM. I just took the one from EightyOne, renamed it to if1-2.rom and copied it into FUSE's \roms\ directory. For convenience sake, I have included the file in this distribution (.\roms\if1-2.rom). From there it is just a matter of configuration (Options/Peripherals/General [X] Interface 1 and Options/Media/MDR cartridge len: 254, [ ] Random length MDR cartridge). Then pop the file "inka.mdr" into drive 1. Finally reset the emulated Spectrum and type RUN , so the IF-1 automatically executes the "run" BASIC loader file on the cartridge. Have fun! JULY 10th, 2021, Volker Bartheld -------------------------------------------------- [1] http://pdg-software.com [2] https://bartheld.net [3] https://sourceforge.net/projects/eightyone-sinclair-emulator/ [4] http://fuse-emulator.sourceforge.net/fuse.php [5] https://www.rickdangerous.co.uk/csscgc2021