Jump to content
Bruce-Robert Pocock

Grizzards — turn-based RPG

Recommended Posts

@SmittyB had the solution. I was out of RAM and used the “unused” bits on port SWCHB to indicate if I detected a '7800 (for Pause purposes) or a Genesis/Joy2b+ gamepad.


Turns out, even in '2600 mode, the '7800 will “cheerfully” accept those bits to engage the two-button ProLine support, and therefore jam up the Joy2b+ support.


I've started a rewrite to pack those flags into actual RAM, but a test with some code commented-out suggests that it should work, once I shake out the fallout from re-arranging RAM at this stage. I think I can now honestly say that the amount of free RAM in this game is 5 bits, give or take a couple of bytes of stack overflow that I allow to happen under semi-controlled circumstances. (Or, looked at another way, the free RAM is a negative 11 bits.)

  • Like 2

Share this post

Link to post
Share on other sites

Pushed a new daily build (on the web site). I had to stop using SWCHB for flags, which also meant changing the way I clear RAM to avoid losing those flags, and how Pause works because I needed to merge those bits into the same byte. Chaös ensued, and there was much weeping and gnashing of teeth. An 862-line git diff later, and we have a solution.


In the new daily build, you can now use any of the 3 supported controller types on either/both of the 2600 and 7800.

  • Button I = Button B = FIRE = the main input button.
  • Button II = Button C = Game Select = usually Stats, but also Select Slot
  • Button III toggles the Pause on and off. (This is similar-but-different to the way the Pause button works on the 7800. If you have a 2600, you can pause with the Color/B&W switch — or right Difficulty Switch on SECAM — and it will sort-of coöperate with the gamepad button, but mixing and matching may be a little weird'ish. Also, the 7800 Pause button doesn't work nicely under UnoCart/PlusCart firmware, because they jam up the ConsoleDetect routine.)

Not unexpectedly, I'm sure, ProLine controllers and equivalent will not work on either the '2600 nor the '7800.


Note … the daily build is the bottom one, under full-beta-1, in the Downloads box at https://star-hope.org/games/Grizzards/ — I have not put together a “release” yet with the latest changes. 414257327_Screenshotfrom2022-03-2023-48-36.thumb.png.e273feb2488d46845350a40f2dbc1f5a.png

  • Like 4

Share this post

Link to post
Share on other sites

Just a little progress note.


The latest “dailies” have been getting to be “a few days” between. I'm stalking down some bugs that I hope nobody is encountering in real life, but I'm particularly aware of a bug where healing yourself produces incorrect messages — e.g. saying that you've healed, when you failed, or saying that you've been killed when you've actually been healed, or so forth.


Some of the other remaining bugs are things like scanline count errors during certain transitions — e.g. when learning a move spontaneously (from gaining XP from defeating a monster rather than from observing a monster using that move).  There are also a number of monster encounters not encoded in the third area of the game (the one you reach after Port Lion).


The daily builds are going up over on the web page to avoid littering the forum with (perhaps literally) hundreds of ROM files, but my goal is to produce a definitive, final Demo version (along with a full game Beta 2 release) followed by, unless more bugs are found, a release candidate for the full game.


In parallel, I'll continue trying to get the NoSave Demo working all right on the Flashback Portable for my own amusement, but no promises that I'll end up with an acceptable port there.


Also, there will be a slightly updated version of the map forthcoming, some editorial changes to the manual, and I intend to shake up the Bestiary section of the manual to better match the monsters that you encounter in the earlier areas of the game particularly.


As always, if you have any feedback I'm greatly appreciative to hear it.







  • The demo build has around 1.2kiB of free space smeared between its 32kiB of ROM. Largest free block is 608 bytes. Smallest free ROM in a bank is 43 bytes in the bank handling dialogue text.
  • The full game build has around 1.9kiB of free space smeared between its 64kiB of ROM. Largest free block is 634 bytes. Smallest free ROM in a bank is 6 bytes in the combat code.
  • The full build for all the 13 ROM image files takes around 10-15s, wall clock time. The Lisp utility program itself takes about 8s to be compiled, first.
  • Two difficulty modes (left difficulty switch)
  • Over 200 screens in 3 different areas
  • About 30 non-player characters with whom you can speak, some of whom occur more than once
  • Exactly 30 distinct Grizzards, some of which can metamorphose into others
  • 86 different kinds of monsters, of which
    • 41 small (common) monsters,
    • 41 large (boss) versions of the same,
    • 3 special large, unique bosses,
    • one “giant” final boss with “high resolution” art
  • 64 combat moves for Grizzards or monsters, 63 of which work correctly. (The last one is not assigned to any Grizzards nor monsters yet)
  • Over 300 unique speech phrases or utterances
  • The target for the completed manual is 20pp, although it fluctuates depending on build and region
  • “New game plus” or “hero mode” with increased difficulty, which “stacks” upon difficulty switch setting as well

Things not found in the demo, only the full version:

  • “full color” monster art and animations
  • potions
  • better (proper) announcements when your Grizzards metamorphose into a new form
  • SaveKey/AtariVox saves are in their “registered” place and not the Scratchpad area
  • access to  all areas of  the world,  including the Lost  Mine; Spiral Woods; tunnels,  Southern Field, and  Anchor Village; Port  Lion; and the final ⅓ of the game (which is a secret).

  • select your starting Grizzard from 3 options

  • un-erase a saved game (if you act quickly after erasing it)

  • Like 4

Share this post

Link to post
Share on other sites

The latest dailies have a rewrite of the “healing” system that actually solves some bugs that @ZeroPage Homebrew was noticing on their show. Now, Grizzards and monsters follow the same rules (use the same subroutine, in fact) when healing.

  • Monsters now start with a certain number of HP, and that is their maximum HP.
  • Monsters no longer can spam healing moves to go above their starting (now, maximum) HP

In addition

  • Monsters should no longer spam healing moves in general; they should only attempt to heal if they are actually injured, to some degree.

One thing that may be a little confusing is that the combat outcome screen does not know when your Grizzard or a monster reaches their max HP, so e.g.

  1. You have 40 HP with MAX 50
  2. You use a healing Move and “roll” to heal 20 HP
  3. 40 + 20 > 50, so you have now 50 HP (your max)
  4. The combat outcome screen says HEAL20 anyway

I've opened a ticket to address this, if I can do, but it may fall victim to the lack of ROM space. I have 3 bytes free in the combat bank right now, but we'll see.


As usual, there are miscellaneous other bug fixes or improvements as well.

  • Like 3

Share this post

Link to post
Share on other sites
20 hours ago, Bruce-Robert Pocock said:

I've opened a ticket to address this, if I can do, but it may fall victim to the lack of ROM space. I have 3 bytes free in the combat bank right now, but we'll see.

I wouldn't necessarily consider it a bug, anyway. I don't think anyone will be confused when they see the HEAL20 only taking them to their max HP.

  • Like 1

Share this post

Link to post
Share on other sites

Since today is Easter …


Easter Bunny GIF by Canticos World


There are currently 3 “Easter egg” type features in Grizzards. If you discover these secrets, you can:

  • Find a secret “credits” screen that speaks (with an AtariVox) a number of “thank yous” and shows you the build date of the game.
  • “Upgrade” your saved game file by adding a very powerful Grizzard to your repertoire … but your score will be “tainted” forever.
  • Start a new game and go directly into the “New Game Plus” mode.

As a hint … the first one is the easiest to find, and it can be accessed during the Attract sequence; you might even be able to stumble upon it accidentally. The other two require a bit of work to find.

Share this post

Link to post
Share on other sites
On 4/16/2022 at 9:10 PM, Karl G said:

I wouldn't necessarily consider it a bug, anyway. I don't think anyone will be confused when they see the HEAL20 only taking them to their max HP.

While I haven't “fixed” this in the general case, I did squeeze in a minor patch over lunch today where the player's Grizzard in particular shows HEALED when fully healed. The original enhancement ticket is still out there, but this makes me happy as a stop-gap.


The problem is that the knowledge (as to whether the HP were truncated to the max HP of the monster) is not visible from the memory bank where the outcome display routine exists, and the combat core routines and combat core data have completely packed one 4k bank so tightly that there's only 3 bytes free (in that bank) in the SECAM build right now — not enough space to push the data over. Of course I'll try to keep optimizing things — combat code is thankfully not time-critical so I can optimize for space freely — but changes to the combat core are stupidly difficult to make at this point.


Today's dailies will also include a number of other bug fixes and enhancements, and once a couple of other bugs are fixed and I've won the game from a clean start again, I'll roll up a full beta 2 Release as well.

Share this post

Link to post
Share on other sites

Well, if you've been following along, there have been a lot of changes since the last Beta release, so here is a Full Beta 2 release.


There's a cute little Chooser widget on the web site along with some bonus downloads, but as per tradition, here's the release binaries as well. Note that the manuals for each version and region are slightly different, so you'll want to grab the PDF that matches your version.


If you have only a Flashback Portable, there's a build for that, but it's quite buggy still, including very bad text displays … sorry, this is the worst experience. (Refer to the No Save NTSC manual, below.)


If you do not have a SaveKey or AtariVox device, you'll need the No Save demo. This is more limited than the regular Demo.


If you have a SaveKey or AtariVox, you can play the full 32k Demo version. This has a number of limitations (discussed above) compared to the full game, but it does fit on an original Harmony cartridge.


If you have a SaveKey or AtariVox, and a multi-cart that can handle 64k EF binaries (eg. Kroc, Plus, Uno, or Harmony Encore) or want to play in Stella or Gopher2600, you can play the full game. (note, the 7800 Pause button isn't properly recognized on the Plus or Uno carts.)


And, just for @Prizrak's kind inclusion in the PlusStore, here is a version of the manual abbreviated to the point where it's usable from the PlusCart's text reader.


This rolls up 59 tickets since Full Beta 1 in a somewhat tested package for all 10 of the above public configurations. Most of these changes have been in the daily builds already, and a few of them are mentioned in the previous posts, but for completeness's sake:


Bug Fixes

  • Fixed display of “T” in the “Lost Mine” sign on the road by Mt Peshon (and some other random letters in the middle of the screen as well)
  • Fixed Joy2b+ button debounce errors on the 7800 (Thanks to @SmittyB for the solution)
  • Fixed: it was possible to get stuck in the corner of Port Lion Docks when coming from the south beach at just the right position
  • Critical hit CRIT! was missing if there was only a status effect
  • Access to room links from rooms in a memory bank 64 & above was wrong (missing carry)
  • Healing sometimes did not actually heal
  • Limited Max HP of monsters (suggested by local testers)
  • Monsters should not try to heal when they don't need it (suggested by local testers and @ZeroPage Homebrew)
  • Every 4° frame of monster animation had a different number of scanlines colored in the top §
  • Selecting certain moves (with very high index numbers) caused a one-scan-line overrun, e.g. BACK KICK
  • Pressing “left” on the “I can train your Grizzard…” dialogue (and other dialogues later in the game) brought up arbitrary (but consistent) other dialogue from earlier in the game
  • The number was not being spoken aloud for monsters as the object of a sentence
  • Pronunciation of various phrases was refined (or, in some cases, corrected)
  • Don't display CRIT! on a miss (*except SECAM builds, due to lack of space)
  • Multiple pages of NPC dialogue in a row now work properly
  • Reset switch works properly while on signpost/NPC text screens
  • Semifinal boss was occurring in another semifinal boss's lair
  • Monsters healing moves that … reflected? and damaged the Grizzard instead
  • Bottom line of boss-sized Will-O'-Wisp were black rather than bright
  • Two villagers (in Treble and Anchor) were spouting the same dialogue
  • Critical hit damage was not always maxxed
  • Dividing line on later Boss combats was “wiggling” on monsters' turn
  • Proper “New Game Plus” action when pressing Reset from You Won screen
  • If you die on the final boss, you can continue from the semifinal boss
  • Probably fixed, but I can't prove it 100% … random encounters would “change into” a boss fight when they weren't meant to be.


  • Keep your last move selection between combat rounds (suggested by @ZeroPage Homebrew)
  • Show a message when a potion was used (suggested from watching @ZeroPage Homebrew)
  • Misc. editorial updates to the manual; general editing for terseness.
  • Monsters do not “de-puff” when the game is paused
  • All Grizzards have Moves available
  • Game leveling: all areas (thanks in part to @mika and others)
  • Optimized (combined) player/monster healing code from ExecuteCombatMove
  • Healing moves should not “miss” (suggested from @ZeroPage Homebrew)
  • Paused music when the game is paused (suggested by Zephyr Salz) — note, music stops after the current note finishes playing, so there's a tiny lag before it pauses.
  • Black signpost in dark caves (with venom sheep) was impossible to see
  • ERASE? screen was accidentally switching to ERASE instantly rather than defaulting to KEEP (needed to debounce joystick a bit)
  • Move BURY DEEP now does a little damage as well
  • The bestiary in the manual now includes all the monsters up to a certain point in the game (suggested by Zephyr Salz and from @ZeroPage Homebrew). Beyond that point, you'll have to discover the rest on your own.
  • The Game Over (death) screen now shows your final score
  • Moved the Spiral Woods signpost a bit more center screen so you don't walk into it when heading west accidentally (suggested by watching playtesters)
  • Switching Grizzards does a Save of your selected Grizzard (suggested by watching playtesters)
  • Shows a special message HEALED when healing results in your Grizzard being fully healed
  • All Moves with names like “poison” or “curse” now have a chance of inducing either Sleep, Muddle, or both
  • Demo saves now use the registered SaveKey addresses — but use a distinct signature key, because Demo save games are not in exactly the same format as the full game uses.
  • Levers are now labeled in runes
  • Finished animation of final boss
  • Miranda's last information dump now occurs as a single stream of text
  • Waves on Port Lion beaches are a little smaller
  • Refinements on “You won” screen layout, including showing the winning player's name on the screen
  • Updated map in manual
  • Your Grizzard is fully healed when beginning the final boss fight (after whichever semi-final boss you visited last)

I'm still trying to cram in some more features and leveling on the game, and I'm still eager to hear any feedback.


I'm also aware of some edge cases where the line count gets out of whack for one frame at a time, which I'm hunting down one-by-one, mostly in the PAL or SECAM builds.


There's not a lot of space left, but there's some:

Total free ROM space (64k build) = 1,323 bytes, largest block: 323 bytes
Total free ROM space in demo (32k build) = 1,206 bytes, largest block: 604 bytes

There are also a few unused dialogue blocks that I'm going to repurpose.


  • Like 6

Share this post

Link to post
Share on other sites
Posted (edited)

Three newly-noticed bugs have (already) come up,

  • You can't catch a Corlyn at the place they were meant to be, so while you can potentially win the game you can't (even on multiple runs through) get to all 30 Grizzards yet. #480
  • There's a certain point when you're traveling south from the cliffs to the beach, south of Port Lion, where you get “warped” to the southwest corner of the island accidentally. #481
  • A monster tried to heal itself, missed (!?) and apparently “ran away” from the combat. By healing myself (since there was nobody left to fight) I was declared the winner of the combat by default. This is not something that is supposed to happen, although it surely could have been worse. #479

There may be other bugs still in there, but those three I know about now.



Update: Two of these bugs are fixed in the daily builds (#480, #481) now … the weird one (#479) is still a work in progress. None of them are really game-breaking, though.

Edited by Bruce-Robert Pocock
Updates available
  • Like 2

Share this post

Link to post
Share on other sites

It's that time again … here's a new beta release.


Changes since the last release … 23 tickets closed:



  • Finalized Syrex map in the manual
  • SECAM: Top half of Stats screen has to be black to see Grizzard portraits
  • Button III will not toggle pause when in combat (since there's no pause to affect combat mode, but you'd come back to the map screen mysteriously paused)
  • Animated 16×16 crab and bat monsters
  • Random encounters now only occur in “dark” places for most monster types
  • Title theme music plays over You Won screen
  • Additional credits sequence from You Won screen
  • Fisherman dialogue improved
  • Able to catch a Corlyn
  • Unused dialogue block memory re-used for other purposes
  • Miranda's dialogue improved

Bug fixes:

  • Fixed pausing on SECAM build (right difficulty switch)
  • Several cases which could cause transient scan line count errors, mostly in PAL/SECAM builds, but a few in NTSC.
  • Combat moves fixed for Theref
  • (non-working) move “SCARE AWAY” was removed
  • Screen linkage on Port Lion southern beach area was incorrect when moving from screen 19 → 14

And, here are the binaries. Note that there's a cute little chooser to help you find the right binary for you on https://star-hope.org/games/Grizzards


If you only have a Flashback Portable, this build is for you, but it's very buggy on that device. Refer to the NTSC NoSave manual, below.




If you do not have an AtariVox nor a SaveKey nor a MemCard, you're limited to the NoSave demo.




If you have a 32kiB limit flashcart (e.g. original Harmony) or only want the demo, here it is.




And if you have a 64kiB flashcart you can try the full game:




I'm still eager to hear any feedback, naturally.

  • Like 3

Share this post

Link to post
Share on other sites

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.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...