+Bruce-Robert Pocock Posted July 17, 2021 Share Posted July 17, 2021 (edited) TL;DR — A turn-based RPG that requires SaveKey or AtariVox. Now preparing a release candidate build (7/2022) For the latest ROMs, check the web site or my latest post on this thread. This post has the earliest and therefore (hopefully) buggiest version. * You see, what had happened was … Back in June I started a little project somewhat loosely inspired by Pokémon for the 2600. This requires a SaveKey (MemCard) or AtariVox, and it works in Stella. Aside from requiring a SaveKey, this is a straightforward F4 32kiB cartridge. At this point I have reached a sort of alpha quality and put together a little demo build that shows off some of the main mechanisms of the game. There's not much to look at, but you can get the gist of how it'll play. You are a Grizzard Handler, and you can take your Grizzard companion out with you to fight monsters. The goals are to find all 30 Grizzard companions (only one is in this demo) and destroy all the monsters in the game world (except random encounters). Hopefully it seems entertaining enough, and I'll put out a beta version at some time in future (as time permits). The original first post is here in the Spoiler tag (although it contains no actual spoilers) Spoiler * Cartridge Image files https://star-hope.org/games/Grizzards/Grizzards.Demo.0.NTSC.a26 https://star-hope.org/games/Grizzards/Grizzards.Demo.0.PAL.a26 https://star-hope.org/games/Grizzards/Grizzards.Demo.0.SECAM.a26 All image files with draft PDF manuals: https://star-hope.org/games/Grizzards/Grizzards.Demo.0.zip * How to Play From the title screen, press Game Select to choose a save game slot. If you don't have a SaveKey connected (or configured in Stella) you'll get a "red sad face" screen — it's not optional, it's required. There are 3 "slots" to choose from, each of which takes up 4 "blocks" on the SaveKey. (I'm using the Scratchpad area at $3000 for now.) Press Game Reset to start. On the map screen, navigate with the joystick. You may encounter a Grizzard Depot, a (party of) monster(s), a door, or a new Grizzard (not in this demo). Just walk into them to engage. A Grizzard Depot restores your Grizzard's hit points to its maximum, and saves your game. Press Fire to leave. (Later you'll be able to switch between Grizzard companions there.) A door just leads you to another room. In the demo, there's a one-way door in the first room. A new Grizzard will join you (replacing your current Grizzard companion) if you run into it (not in this demo). Unlike Pokémon, you don't catch the monsters that you fight against. Monsters bring up the combat screen. On the map, all monsters appear as a Slime; you won't know what actual monsters you face until you encounter them. From the combat screen, press Up and Down to select a Move for your Grizzard to perform. RUN AWAY is a special move that takes you out of combat, but does not heal your Grizzard. Other moves may hurt the monsters, or apply status effects that might make them lose attack or defense points, or even heal your Grizzard or “buff” your own attack and defend stats. Moves that you can perform appear in color (blue for RUN AWAY, red for other moves); moves that your Grizzard does not (yet) know how to perform appear in black. Moves that target the enemy will display a box under the monster's image; when facing multiple monsters, press Left and Right on the joystick to target a monster. Press Fire to execute the move you've selected. You'll see an announcement of the move, and then the outcome of it. Then the monster(s) take their turn(s), and you'll see them announced as well. If you're defeated, you'll be sent to the GAME OVER screen. If you win, you'll return to the Map Screen. Your Grizzard may also improve its stats slightly with each victory. There is a chance that seeing a monster execute a Move will teach it to your Grizzard, if it has that Move in its collection. This is how the “moves in black” can turn to “moves in red” over time. In this Demo you can only wander around a small area and encounter a few monsters. Pausing (on the map screen only) is the Color/B&W switch on NTSC or PAL systems, or Left Difficulty Switch on SECAM. The Difficulty Switches don't affect the game play itself. (I try to detect a 7800 and listen to the Pause button correctly, but I don't know if that really works. Anyone care to test?) * Erasing a game To erase a save game slot (to start over), set both Difficulty Switches to A/expert/hard mode, then pull back on the joystick, hold down the fire button, and press forward. This is intentionally obscure to avoid accidents. Once you hear the “toilet flush” sound, the game is basically gone forever. * Testing This has only been lightly tested, mostly in Stella, but also with a real (4 switch) NTSC 2600 using Harmony & Uno carts and an AtariVox. If the game crashes, you'll likely get sent to the screen with a white sad face. If it's unable to communicate with the SaveKey (MemCard, AtariVox save function) you'll get a red sad face; that's not a bug, just a limitation. There's an Easter Egg hidden that displays a special message and shows the build date of the cartridge image file (as YYMMDD). It's not super complicated to access but I'd be curious if anyone ran into it. There may still be some scanline count bugs (like whack-a-mole, those have been) and currently the AtariVox voice output is not working at all. Naturally, I'm excited to see any feedback. * Development For the curious: https://github.com/brpocock/grizzards/ has the whole source dump. (Theoretically there are spoilers in there, if you go looking for them.) The full map is around 100 screens with around that many combat scenarios. This is written in hand-coded assembler — no surprises there, I'm sure — using the 64tass (Turbo Assembler), which is more familiar to me coming from a C=64 background than DASM or others. It's pretty similar until you start playing with macros and compile-time conditionals and the like. I wrote a little utility to convert the symbol tables it writes out into DASM-alike format for Stella. I'm running it under Linux but it should work just as well on macOS. Music was written in MIDI using MuseScore3; monster, Grizzard, and title graphics were draw in PNG using Gimp. MIDI and PNG conversion to source code use a Lisp utility that is just an awful example of spaghetti code but has been used for C=64 conversions in the past. It actually began as part of an Atari 2600 game that I was working on many years ago which was derailed when my house burned down, so it's called the Skyline Tool after that game. It also relies on Perl for some build functions, particularly for encoding the text to speech phonemes, and Gnu Make drives the process. I have updated the SpeakJet.dic file that came with the SpeakJet developers' kit with many “new” words and would love to share that and the Perl program convert-to-speakjet with anyone interested in (compile-time) text-to-speech for AtariVox. Perhaps the expanded dictionary will help someone else. Another Perl program reads the includes from the source files and generates the dependency graph for Make automatically, so I don't have to. It's pressing right up against the limits of the 32k space (with some duplication of code in the map banks & combat banks), so the monsters aren't animated and the graphics are all solid-colored. I intend to release this as a 32k game with these current limitations. The source code is not too much of a mess, and if anything is maybe a little more modular than it needs to be right now, with over 100 individual files: 57 are major routines broken out into their own files, 19 are things that are local to one memory bank (many of those are data tables, e.g. monster definitions), 8 “bank” files that include all the other files specific to a memory bank (basically like a link table), 16 source files common to all banks (including VCS.s and things like Math.s and Macros.s), and 23 files generated automatically by tools, like the music, title graphics, and phoneme tables for speech synthesis. Build time for all 3 platforms is around 16s, including the MIDI/PNG/TXT conversions; about 10s of that is generating the three PDF manuals. * Web Page https://star-hope.org/games/Grizzards/ * Credits Program, game art, music, etc. — Bruce-Robert Pocock. “Label” art — Zephyr Salz Includes VCS header file by Matthew Dillon, Olaf “Rhialto” Seibert, Andrew Davie, and Peter H. Froehlich (converted for 64tass syntax). Binary-to-decimal translation based upon code by Andrew Jacobs, based upon code by Garth Wilson. SaveKey EEPROM & AtariVox speech synthesis driver based upon code by Alex Herbert Some math functions by AtariAge Forum user Omegamatrix; others taken from December 1984 Apple Assembly Line. (actually, I'm not sure if I'm using these, but they're in the macro files.) “Have You Played Atari Today” jingle transcribed by AtariAge Forum user tiggerthehun and converted to MIDI myself. And, of course thanks to everyone in the Stella and AtariAge communities for making this game possible. Grizzards.Demo.SECAM.a26 Grizzards.Demo.PAL.a26 Grizzards.Demo.NTSC.a26 Edited July 9, 2022 by Bruce-Robert Pocock mention release candidate 15 Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.