"Maze Avenger" By Dale Low ARCADIAN, 6, no. 11/12 (October 31, 1984): 100. Documentation by Adam Trionfo 1.0 About "Maze Avenger" -------------------- Note that the Arcadian newsletter provided no instructions on how to play this game. "Maze Avenger" is a maze game where the player's character creeps ever so slowly around the maze shooting objects that are not at all easily identifiable. When the character shoots all of the objects on the screen then the player advances to the next level. The player can be hit by-- well-- SOMETHING and it causes the player to be unable to shoot and also to be able to pass through walls. How to load "Maze Avenger" -------------------------- In AstroBASIC type: :INPUT As the tape loads, on the screen will appear: >PRINT ";STOP";:PRINT %(16 384),1948 ;STOP This is normal. This is how the program has to be saved, otherwise the load ends with "WHAT?" (the STOP command prevents the error). This format of saving does not seem to be compatible with my normal method of archiving a program by first clearing the screen and printing the game's title and author. Therefore, the user gets to see the special method that had to be used to be save the game to tape so that both the BASIC program and data array would be preserved. After the game has loaded, type: RUN In AstroBASIC many games can be loaded and run at the same time by typing :INPUT ; RUN. This method will NOT work for this game. Typing and Archiving "Maze Avenger" ----------------------------------- Of course, "Maze Avenger" has already been typed and can be played right away. This additional information is for archival purposes. It may also be of use in the future when archiving a similar program that includes both a BASIC program and a data array. "Maze Avenger" has been one of the most difficult programs to archive properly. Dozens of discussion group postings and emails, well over fifty of them, were exchanged between several people who worked to get this archived correctly back in March of 2011. These people include Richard Degler, Ken Lill, Paul Thacker, Mike White and myself. Normally archiving a program involves no exchanges of emails or postings except to announce that a program is ready to be added to BallyAlley.com. "Maze Avenger" does not work correctly as printed in the Arcadian. For this reason, there are two versions of the program archived. One version is archived as it is printed in the Arcadian. This version is for archival purposes only and should be avoided. The second version includes fixes made by Richard Degler so that the game runs correctly. The Arcadian provided only a BASIC listing of the program along with the ML program data array that is written separately into the Line Input Buffer. The data array listing expects you to load each memory location separately. This turns out to be a lot of typing. Richard Degler suggested using a short direct command to enter the data. Here is his (slightly modified) command that prompts the user for data for all twenty-one memory locations: FOR A=20237TO A+40STEP 2;PRINT A,;INPUT %(A);NEXT A Once the data array has been entered, check that it has been entered accurately with this direct command: FOR A=20237TO A+40STEP 2;PRINT A," = ",";PRINT %(A);NEXT A This command prints the memory location along with the value that the location holds. Remember that you can hit the PAUSE key to pause the listing and then GO to continue. If you want to save the data array separately (for example, if you only type in part of the data array and you want to continue later), type: :PRINT %(20237),21 This will save the twenty-one memory locations (and the extra one byte checksum that follows all tape saves). To load the data array back into the proper location, type: :INPUT %(20237) This will load the data array beginning at memory location 20237. The last byte of the data array will end in 20277. Note that address 20279 will hold the one byte checksum that was stored on tape. This commands can each be slightly modified and used to save any data array. No additional information about what the program does were included in the Arcadian, although brief instructions for saving the program were included. As printed, they are: "After entering the program and the data array PRINT the whole thing to tape like this: :PRINT %(16384),2000 This will save your data [array and program] too." What the instructions don't mention about saving is that while this method of saving the program and data array does work, the user will always get a "WHAT?" when the program is loaded from tape. To avoid this, use this syntax instead: PRINT ";STOP";:PRINT %(16384),2000 Now when the program is loaded there is no "WHAT?" error, but the adverse affect is that the program can't include a title screen. The Disassembly --------------- Richard Degler disassembled the machine language portion of "Maze Avenger." Normal, this would be of most use to assembly programs, but in this instance his disassembly also includes the complete BASIC program, which he commented in detail. If you would like to know more about the program, then his disassembly is the place to look. Was It Worth It? ---------------- Not only was "Maze Avenger" difficult to archive, but the game turns out to be crude and without any much fun-factor that I can discern. The game is B&W, it is impossible to tell what the enemies is or what the players is shooting and the character moves so slowly that it is painful to clear one level, let alone continue to play after that. Perhaps there is an element of gameplay that I don't know about. If you seem to have found the fun in this game, or if you found how to actually PLAY this game and can explain what is happening, then please let me know. Looking back at archiving this game, and accounting for the many hours that it took to finally get it right (including the time spent by Richard Degler tracking down and fixing the errors and also disassembling the machine language routines), was it worth the time? Sure. I learned more while archiving this Bally/Astrocade program then most any other and I'll be able to use this information in the future to archive more exciting software.