Jump to content
IGNORED

Grizzards — turn-based RPG (completed)


Recommended Posts

OK, here we go again … this is Full Beta 4 release.

 

Changes since Full Beta 3:

  • Fixes a weird combat bug whereby monsters can try to heal themselves and instead … run away, let's say … making you unable to win the combat if they were the last surviving monster.

  • Fixes the crasher bug when speaking to the person south of the green house in the Southern Field.

  • The manual has been extensively edited, including

    • The online PDF manuals are now formatted for US Letter (roughly A4 sized) paper, in case you want to print them. (The pagination is less than ideal, however.)

    • New Troubleshooting entry for Stella + keyboard situation discussed yesterday / above,

    • Single manual for all regions (with NTSC screenshots)

    • Fresh screenshots in the manual for all screens

  • A few internal changes to the build tools (eg. a tweak to the MIDI-to-TIA converter, updates for the latest Quicklisp libraries)

  • Fixes to some subtle timing issues (e.g. “one frame with wrong scan line count” type errors), mostly in PAL + SECAM builds

  • Work on leveling the game

  • Some peephole-type optimizations to the code

If you're confused by all these attachments, visit https://star-hope.org/games/Grizzards and use the Chooser on the right hand side to find the right ROM image file (and PDF) for your use. There are also daily builds posted there, as well as a few other downloadable goodies (like the sound track in MP3 format).

 

If you only have an Atari Flashback Portable, this version (rife with visual glitches) may work slightly better for you. Refer to the NoSave manual, below. (I may, or may not, fix the graphics on this machine some day, but it's a low priority.)

Grizzards demo beta 4.bin

 

If you want to play on hardware (multicart) and do not have a SaveKey / MemCard / AtariVox, you want this version. As the name suggests, it's the same as the Demo below, but you cannot save.

Grizzards.NoSave.full-beta-4.pdf

 

Grizzards.NoSave.SECAM.full-beta-4.a26Grizzards.NoSave.PAL.full-beta-4.a26Grizzards.NoSave.NTSC.full-beta-4.a26

 

If you want the 32kiB Demo, either to play in Stella or on a multicart with a memory device, here's that Demo version.

Grizzards.Demo.full-beta-4.pdf

 

Grizzards.Demo.NTSC.full-beta-4.a26Grizzards.Demo.PAL.full-beta-4.a26Grizzards.Demo.SECAM.full-beta-4.a26

 

If you're using Stella, the .pro file for your build may help configure Stella's controller ports correctly; otherwise, refer to Troubleshooting in the manual. These are not needed for multicarts.

Grizzards.Demo.NTSC.full-beta-4.proGrizzards.Demo.PAL.full-beta-4.proGrizzards.Demo.SECAM.full-beta-4.pro

 

If you want the full game, either to play in Stella or on a multicart that can handle 64kiB “EF” binaries with a memory device, there's the full version. Note that the original (non-Encore) Harmony multicart can not handle this; you'll need the Demo above for that cart.

Grizzards.full-beta-4.pdf

 

Grizzards.NTSC.full-beta-4.a26Grizzards.PAL.full-beta-4.a26Grizzards.SECAM.full-beta-4.a26

 

Again, the .pro files are optional and specific to Stella only.

Grizzards.NTSC.full-beta-4.proGrizzards.SECAM.full-beta-4.proGrizzards.PAL.full-beta-4.pro

 

If you're uploading the PlusStore, and pretty much under no other circumstances, here is a manual (or quick reference card) cut down to be read in the PlusCart text viewer.

Grizzards.Manual.txt

 

 

What's next

  • Exhaustive analysis of timing on every screen / routine for every region, eliminating any remaining timing (scanline count) issues
  • Exhaustive playtesting and leveling of the game to feel more “fair” and fun
  • Minor graphics tweaks
  • Final “combat” illustration for manual … no, really, it will happen!
  • If time and space permit, a few other enhancements may squeak in.

Also, some other Secret Squirrel work is in progress (which isn't really a secret if you've RTFM fully) but I'm holding my tongue on that for now.

 

For the record, there are three “Easter egg” codes in different places in the game, two of which actually help you out (cheat for you) and one of which is just a cute hidden screen.

 

Thanks to everyone for helping out finding these bugs, and as always, any feedback is deeply appreciated.

  • Like 6
Link to comment
Share on other sites

Just now, Thomas Jentzsch said:

Are you going to tackle the flicker? For me it makes it impossible to play the game longer than a few minutes.

At this point, I don't have any plans — not out of lack of desire, but out of lack of options (that I'm aware of).

 

I did make sure that the combat screens don't have any flicker effects, but I don't know how to tackle the general (12 char) text screens at all without it, and I don't know how to get around it on the map displays when there are multiple objects, since things aren't neatly packed into zones.

 

If I had a lot more ROM space, I could probably reduce the flicker effects on the map a little by swapping between P1 sprites partway, but that would also mean changing sprite/sprite colliions over to use hit box detection rather than the hardware collision that it relies upon now (since I would not necessarily know “which P1” the player had struck).

 

I had toyed with the text screens using a "Venetian blind" effect, but due to repositioning the six sprites between each line, that effectively meant: a scan line of positioning, a scan line on the left side of the screen, a scan line of repositioning, then a scan line on the the right. It didn't flicker, but it did seem to be a lot harder to read anything where every scan line of “art” was split up with 3 lines of blank space above and below it, and the inherent 2 lines of “shear” between the left and right sides.

 

I realize that there's a wide variation in how well TVs handle flicker effects, particularly LCD models. My main TV is an OLED, but I have tested on LCDs as well … but I may just have gotten used to the flicker. In Stella, I generally use the settings “Composite,” “50% Phosphor,” and “0 scan lines.”

 

I am very open to any suggestions, however.

Link to comment
Share on other sites

1 hour ago, Bruce-Robert Pocock said:

If I had a lot more ROM space, I could probably reduce the flicker effects on the map a little by swapping between P1 sprites partway,...

You should not only flicker P1, but both players. And reuse the sprites during the kernel.

Quote

...but that would also mean changing sprite/sprite colliions over to use hit box detection rather than the hardware collision that it relies upon now (since I would not necessarily know “which P1” the player had struck).

Using hardware detection for flickering sprites only works for slow movements. If that works for you, you can store and then reset the collision registers when before reusing a sprite. So that you know the state of collision for each sprite instance.

1 hour ago, Bruce-Robert Pocock said:

I had toyed with the text screens using a "Venetian blind" effect, but due to repositioning the six sprites between each line, that effectively meant: a scan line of positioning, a scan line on the left side of the screen, a scan line of repositioning, then a scan line on the the right. 

You do not need an extra line for repositioning, since you only have to shift the sprites 8 pixel left and right. This can be done using (early) HMOVEs only.

1 hour ago, Bruce-Robert Pocock said:

I am very open to any suggestions, however.

That's a key qualification for improvement. :) 

 

In general, there are numerous hints to reduce flicker perception e.g.:

  • Flickering over a bright(er) background is much worse than over a dark(er) background (compare to the sprite color). 
  • Text kernels which flicker left and right half emphasize flicker. Instead interleaved sprites should be used (Stellar Track).
  • Flicker at 30Hz is acceptable (Asteroids), 20Hz or less should be avoided (Pac-Man).
  • Objects (over a dark background) should be displayed slightly brighter when flickering ("Luma-Boost")
  • Sprites should be reused to reduce the necessity of flicker.
  • Constant flicker (Asteroids) is often less noticeable as frequent on-off flicker
  • ...

Hope that helps.

Edited by Thomas Jentzsch
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

19 minutes ago, Bruce-Robert Pocock said:

Much appreciated. I'm particularly interested in the idea of splitting the 12-char text up into odd and even columns …

Basically you need a "left" and a "right" kernel which are executed alternatively. Both display 6 sprites, spaced by 8 pixel. After the "left" kernel you move the sprites 8 pixel to the right (so that the next line will fill the gaps), and after the "right" kernel, you move the sprites 8 pixel to the left (using an "early HMOVE"). And each frame you alternate the first kernel.

Even frame:
0 1 0 1 0 1
 0 1 0 1 0 1 
0 1 0 1 0 1
 0 1 0 1 0 1

Odd frame:
 0 1 0 1 0 1 
0 1 0 1 0 1
 0 1 0 1 0 1
0 1 0 1 0 1

 

  • Like 1
Link to comment
Share on other sites

3 hours ago, Thomas Jentzsch said:

Basically you need a "left" and a "right" kernel which are executed alternatively. Both display 6 sprites, spaced by 8 pixel. After the "left" kernel you move the sprites 8 pixel to the right (so that the next line will fill the gaps), and after the "right" kernel, you move the sprites 8 pixel to the left (using an "early HMOVE"). And each frame you alternate the first kernel.


Even frame:
0 1 0 1 0 1
 0 1 0 1 0 1 
0 1 0 1 0 1
 0 1 0 1 0 1

Odd frame:
 0 1 0 1 0 1 
0 1 0 1 0 1
 0 1 0 1 0 1
0 1 0 1 0 1

 

I may be missing something critical, but shouldn't that read more like…?

0 0 0 1 1 1
 0 0 0 1 1 1
0 0 0 1 1 1
 0 0 0 1 1 1

 

Link to comment
Share on other sites

For a first shot, the attached binary uses interleaved characters on the 12-character text displays to hopefully reduce the perception of flicker.

There are (at least) two problems … some junk pixels on the last scan line of each row of text, and the menus for conversational replies are munged up a bit.

e.g. where it should read

SOUTH_
_WEST_

… over on the Treble docks, it is interleaved vertically and in stead reads …

SUH_ET
OT_WS_

… until I hack the Inquire screen to handle the new text format some how.

 

I'll be looking at some of the other suggestions as well, but thought I'd make a sample available to see if it's helped at all.

 

The dailies on the web site have all the usual variants as well, complete with the above bugs in every one of them.

Grizzards.NTSC.a26

 

For the curious, this is what the text screen looks like in freeze frame … the sample text reads

MWMWMWMWMWMW
ABCDEFGHIJKL
THIS IS SOME
TEXT TO TEST
WRITE12CHARS

(Write12Chars being the name of the routine that was changed)

 

1173745748_Screenshotfrom2022-07-0200-15-42.thumb.png.2fa5af4ca1e67292ab96a1237c3126de.png369755051_Screenshotfrom2022-07-0200-15-47.thumb.png.f8953cf4d34d4b0c1a7c2abf79a8e02d.png

Link to comment
Share on other sites

2 hours ago, Bruce-Robert Pocock said:

For a first shot, the attached binary uses interleaved characters on the 12-character text displays to hopefully reduce the perception of flicker.

 

That's not what I meant (and it makes only a little difference if any). But I suppose you know that already.

Link to comment
Share on other sites

6 hours ago, Thomas Jentzsch said:

That's not what I meant (and it makes only a little difference if any). But I suppose you know that already.

I imagine that you meant to alternate line-by-line, but that's gonna require much more than a night's work — I think I may have the RAM to pull it off, but I'm not sure.

Link to comment
Share on other sites

1 hour ago, Bruce-Robert Pocock said:

It's come to my attention that there may be a bug in which a Round Robin (or perhaps another monster?) will freeze up and never take their turn. Investigating now.

Round Robins were freezing up on their turn, due to a stupid bug in the routine that decides whether a monster want to heal or not. The same bug exhibited as monsters healing when it was not necessary.

 

I've pushed to the dailies.

 

The dailies also don't have the interleaved character build any more as that does not, as I implemented it, actually work on hardware … at least not 7800 + S/Video + PlusCart + RetroTink. I'm going to look at flicker reduction again when time permits, though.

Link to comment
Share on other sites

Amidst some other updates, today's daily builds also feature corrected timings for the Atari Flashback Portable. Note that this is (for now) only the daily build, lower on the page.

 

Grizzards.Portable.NTSC.bin

 

It seems that these timings are probably within the acceptable range for some (or all?) actual Atari consoles, so I may merge these patches into the mainline later.

 

One remaining (mysterious) bug — the score does not appear on the map screen. (PS: Nor the game over screen)

Grizzards.NoSave.pdf

  • Like 1
Link to comment
Share on other sites

On further investigation, the interleaved-characters kernel for 12-char text is actually working quite nicely now. After futzing around with the RetroTink and TV settings for a while, and testing on an LCD as well, I'm merging in that kernel as it frees up some ROM space which might be usable for doing something about the map kernel's flickering.

 

Interleaving lines is still on the horizon, as I'll have to double the amount of RAM used to handle 12 characters at a time rather than 6 (which may be possible, but not easy).

 

Today's daily builds, however, also fix a bug that could have prevented you from progressing beyond Port Lion in the main plot. If you have been playing along and could not figure out where to go after Port Lion, speaking to some of the non-player characters that you've previously spoken to will now give you a slightly different response and lead you forward.

 

To be precise (contains light spoilers, but no puzzle solutions) …

Spoiler

If you've already done the first thing that Miranda had asked you to do, and then talked to her about old legends, you may need to do so again — just chat with her again, and her response will be slightly different. Follow the clues to the place that Fat Tony pointed out, that matches what she told you, and he'll tell you what is the next puzzle to be solved.

 

  • Like 2
Link to comment
Share on other sites

I think I've got interlaced text looking pretty good in today's dailies. Attached is one ROM (NTSC, No-Save edition) that shows off the new 12 character text routines. (eg: reading signs, speaking with NPCs)

 

I had to sacrifice some height on the letters to get the timings right, and the spaces between lines are wider due to decoding more text, but I'm overall relatively happy with it — and seeking opinions, naturally.

 

I still have freed up some ROM space compared to the left/right flicker method, so I'll toy with the map screen some more as well.

 

Grizzards.NoSave.NTSC.a26

  • Like 1
Link to comment
Share on other sites

Lunch break progress report ?

 

For the curious, here is a demo of the wip on the light-flicker kernel.

 

 

What works:

  • Vertically isolated sprites tend to not flicker off as much, or at all
  • All sprites are drawn at no worse than 1⁄4 duty cycle ever
  • Player character : other object collisions are handled properly
  • Player character : playfield collisions are handled properly
    • incidentally, fixed a small bug that was the source of an unreported “sticky wall” type scenario when moving vertically, that should be in tonight's daily build.

What does not work yet:

  • Vertical timing gets dicey sometimes (note bottom of screen kinda vibrating)
  • Horizontal timing of the playfield drawing has some shearing as well
  • Playfield priority should be on, it's off for debugging purposes
  • Need to optimize out at least 8+ bytes so that it fits into the ROM without sacrificing any game content
  • Need to implement new NPC/Monster : Playfield collision code, for
    • … random spawn location validation, and
    • … when walking, so as to not walk through walls.
    • (but that is in a different ROM bank with 84 bytes free presently)

This kernel is basically looking for an opportunity to identify a next candidate for the P1 sprite, then recolor, reposition, and identify the correct animation frame for it. Some variability in the duration of that routine is probably the source of the timing problems. Since it does take multiple scan lines to do that work, it can't be updating PF[012] or GRP0 during that interval.

 

This shows the zones for each sprite (indigo, pink) and where the sprite remapping occurs (orange) and where it's given up on further sprites (yellow).

 

I have a couple of alternative experimental kernels, but the only one with better average results than this costs so much ROM space that I don't think it's plausible to implement it. That version has similar timing issues to this one, but it can give more draw frames to sprites located higher on the screen that this version may flicker unnecessarily when there are overlapping (same horizontal zone) sprites lower on the screen.

Edited by Bruce-Robert Pocock
PS, sprite zones illustration video
Link to comment
Share on other sites

It's been a year almost since I first posted an early draft of Grizzards!

 

Here's Full Beta 5, which is probably the final beta version, although I do still have the flicker reduction kernel in a branch and am trying to stabilize that display.

 

Changes from the last release:

  • Fix: Weird vibration of “YOU WON” screen on PAL/SECAM. Seems to be a fun quirk/bug of the 6532 PIA which thank God (and @stephena and co) Stella emulated properly.
  • Fix: Certain bosses HP could roll over a byte (≥ $100) and end up being severely weakened when playing in Expert mode, New Game Plus, or the combination of the two.
  • Fix: A “sticky wall” situation could occur where the player moved vertically into a wall, and could keep “bumping into” the wall until you moved away manually. (The kick back from the bump was not working.)
  • Enhancement: New Combat illustration in manual (sketch/draft version)
  • Enhancement: You will always get a potion after a boss fight
  • Re-Fix: Possible to get stuck on the ocean tiles adjacent to the Port Lion docks
  • Fix: ERROR 0FFF01 when encountering certain signposts/NPCs which grant points to the player
  • Fix: When a monster tried to heal themself, they might sometimes miss (?) and vanish. (This is a fix on top of an earlier fix which was not 100% effective.)
  • Fix: Crash when speaking to retired Grizzard trainer in Anchor Village after completing her side quest (due to incorrect index value in dialogue tree)
  • Enhancement: Button III on Joy2b+ controllers can be used to reset from the crash report screen. (Game Reset still works as it always has.) * Couch compliant with gamepad ☺
  • Fix: New Game Plus was granting you Petty by accident
  • Fix: Starting a new game slot immediately after dying with a certain Grizzard active and not changing from the default displayed Grizzard let you continue with that Grizzard, with the stats for Airex.
  • Fix: Intermittent write timing problems in column 3 or 4 of text on PAL/SECAM
  • Enhancement: Reduce flicker on text screens with fancy interlacing
  • Enhancement: Changed interlacing of text so screen looks less “wiggly”
  • Closed, unable to reproduce: Save file disappearing after starting Demo. (Possible cause: Demo uses Scratchpad area of SaveKey which other games may overwrite.)
  • Enhancement: Sprite collisions with walls were “iffy”
  • Fix: Crash when speaking with person in room $26
  • Closed, won't fix: No more dialogue is making it into the Demo, despite a little free ROM space.
  • Enhancement: New Game Plus acknowledges that it's happening with a splash screen
  • Enhancement: Don't display CRIT! when nothing happens
  • Closed, won't do: When healing is limited by your Max HP, does not show the actual healed amount. However, we do show HEALED rather than HEAL + a number to indicate fully healed.
  • Fix: CombatMainScreen scan line count errors on PAL/SECAM
  • Fix: Speech and text did not match for certain pages of text spoken by Miranda
  • Fix: Fat Tony did not recognize that Miranda had talked to you, so he did not give you a new quest when he should have done.
  • Enhancement: some work was done on text and graphics displays for the Flashback Portable (but it's still pretty bad)
  • Enhancement: add “click” type sound when changing Grizzards in the Depot
  • Enhancement: remembers last move when toggling to/from the stats screen in Combat mode
  • Closed, thought to have been fixed: “Your Grizzard is injured” accompanied by a negative HP value like HP-126
  • Fix: scan line counts on “You Won” sequence
  • Fix: Hide the cursor when entering the Combat screen with a healing/buffing move selected
  • Fix: Monster groups were appearing with only one monster
  • Fix: Freeze on enemy's turn (when enemy had a healing/buffing move in their first Move slot)

What remains …

  • New kernel which reduces flicker on average on map screens, and eliminates it on certain ideal screens, is very buggy still but is slowly approaching usability.
  • Leveling, leveling, leveling …
  • Playtesting, playtesting, playtesting …

And, here are some binaries for your enjoyment.

 

All the binaries with a little Chooser are on the web site at https://star-hope.org/games/Grizzards/ for your amusement.

 

As usual … The .a26 files are the game itself, the .pdf files are the manual, and the .pro files are for Stella (only) to inform it about the game.

 

Remember, if you can't enter anything into the game in your emulator, to make sure you have Sega Genesis or Joystick selected as your Left controller.

 

If you only have a Flashback Portable, you can try the really bad NoSave demo for it. Grab the NoSave manual from the next section.

 

Grizzards.Portable.full-beta-5.bin

 

If you do not have a SaveKey nor AtariVox nor MemCard device, you can try this NoSave demo:
 

Grizzards.NoSave.SECAM.full-beta-5.proGrizzards.NoSave.SECAM.full-beta-5.a26Grizzards.NoSave.NTSC.full-beta-5.proGrizzards.NoSave.NTSC.full-beta-5.a26Grizzards.NoSave.PAL.full-beta-5.proGrizzards.NoSave.PAL.full-beta-5.a26Grizzards.NoSave.full-beta-5.pdf

 

If you do have a memory device, this 32kiB demo will give you some sense of the game with limitations:

 

Grizzards.Demo.SECAM.full-beta-5.proGrizzards.Demo.SECAM.full-beta-5.a26Grizzards.Demo.NTSC.full-beta-5.proGrizzards.Demo.NTSC.full-beta-5.a26Grizzards.Demo.PAL.full-beta-5.proGrizzards.Demo.PAL.full-beta-5.a26Grizzards.Demo.full-beta-5.pdf

 

If you do have a memory device, and you have a multicart or emulator that can handle 64kiB (EF) ROMs (eg. Harmony Encore, but not original Harmony; or most other multicarts), you can try the full game:

 

Grizzards.SECAM.full-beta-5.proGrizzards.SECAM.full-beta-5.a26Grizzards.PAL.full-beta-5.proGrizzards.PAL.full-beta-5.a26Grizzards.NTSC.full-beta-5.proGrizzards.full-beta-5.pdfGrizzards.NTSC.full-beta-5.a26

 

As always … your feedback is encouraged. Do let me know if you find a bug, or feel free to message me privately or on the AtariAge Discord #homebrew-chat channel if you need help getting the game running, or strategies for playing the game.

 

Enjoy!

  • Like 2
Link to comment
Share on other sites

10 hours ago, Bruce-Robert Pocock said:

As always … your feedback is encouraged. Do let me know if you find a bug, or feel free to message me privately or on the AtariAge Discord #homebrew-chat channel if you need help getting the game running, or strategies for playing the game.

 

 

Enjoy!

Just a heads-up that Stella 6.7 is still automatically recognizing the controllers as keyboard and savekey in the NTSC full-beta-5, which I think may put off some potential testers, so it might be good to mention in the post what we need to do to fix that, because I always get stuck at the name entry screen.

  • Thanks 1
Link to comment
Share on other sites

11 hours ago, Bruce-Robert Pocock said:

Remember, if you can't enter anything into the game in your emulator, to make sure you have Sega Genesis or Joystick selected as your Left controller.

It does bear repeating :)

 

Also if you put the .pro file matching the ROM image in the same folder, Stella should pick up the settings from that file for you as well.

 

Sorry for the inconvenience!

 

(PS: I'm going to stage a patch for Stella 7, but it'll be a while before that makes it anywhere.)

Edited by Bruce-Robert Pocock
PS
  • Thanks 1
Link to comment
Share on other sites

  • 1 month later...

Hey...so...I might have an idea on how to make the game work with RetroN 77's built-in save function (using latest firmware of course). Basically, I kinda want a digital ROM-only version that actually works with the RetroN 77's save system, that way you don't have to use extra periphials such as the AtariVox.

However, I'm not sure how this'll even be partially implement since you're also working on a way to implement a save chip on the physical cart version. In any case, I might have my hopes too high but it's fun to think about though.

  • Like 1
Link to comment
Share on other sites

Looks like the RetroN doesn't expose its save function, and it only saves what's currently in RAM, so you can't fit a whole Grizzards game in there (it's bigger than RAM) … but thanks to @Muddyfunster for testing, if you upload the a26 file with the matching pro file it should work as it you had a SaveKey.

 

IMG_8374.jpg

  • Like 1
  • Thanks 1
Link to comment
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.

Guest
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.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...