Page 1 of 1

Porting ZZT to retro platform

Posted: Wed Jan 12, 2022 11:51 pm
by leep
I'm thinking of porting/recreating ZZT on a retro 1980's computer. I would be using a 320x225x16 graphics screen. This obviously imposes some serious constraints on me. To simulate an 80x25 text screen, I would have to use a 4x9 font. A 4-pixel wide font would be pretty horrible, but not entirely impossible. The right 20 characters (I'm roughly guessing from screen shots I've seen) seem to be score/status info). On possibility is that I could not render that and provide a way to view it (game pauses and info from it shows in a box over the game area?), and that would get me down to 60x25. That could be done with a 5x9 font. I could do a reasonable Code Page 437 font in 5x9 characters. That leads to another problem. 16 colors means 2 pixels per byte. If my "characters" have an odd width, I'm going to be doing bit-masking when drawing them and let's face it, 1980's computers didn't have much processing power to throw around. If I could avoid an odd number of pixels wide for the font, I'd be much less worried about performance. So, I do a 4-pixel wide font that might look pretty horrible, or I do a 6-pixel wide font. 6 x 60 is 360, 40 pixels (~7 "characters) too wide to get the 60-character wide game area. The platform I'm looking at can do a 512-pixel wide screen with only 320 pixels showing and can scroll left/right within that 512-pixels.

So, my choices are:
1. Use a 4x9 font and fit the entire 80x25 character ZZT game screen on screen. This would allow having the right 20 characters of health/score/info on screen, but the characters (which are MAJOR part of the visuals for the game) would probably look pretty horrible.
2. Use a 6x9 font and only fit ~53 characters wide on the screen and have to scroll left/right to see the entire 60-character wide "game" area. Provide a means of pausing the game to "pop up" the health/score/info.
- It just occurred to me that I could use a 6x8 font instead of 6x9 and gain 25 rows at the bottom that I could display that health/score/info.

My question is, which option do you think would make for a more enjoyable gaming experience? I haven't actually played ZZT any significant amount in a VERY long time. How important is it that the user can see the ENTIRE 60-character wide game area at the same time? Could it be critical on some maps that when the character is all the way to the left side of the screen, they be able to see what's going on at the far right of the screen? If they couldn't see maybe 7 characters of the right side of the screen when they're all the way to the left, would that be detrimental?

Re: Porting ZZT to retro platform

Posted: Thu Jan 13, 2022 1:08 pm
by asie
Consider the GBA port, which uses a 4x6 (!!!) font and a 1-high bottom bar (for a total of 60x26 => 240x156, just fitting into the GBA's 240x160 display), but still manages to look in my opinion pretty decent. However, many players complain that on the GBA's small screen, things are too small to see - but this would not be a problem on a home platform.

I'd say use a 4x8 or 6x8 font. You want to keep both sides even to properly model characters 176/177/178 (dithering). I have made fonts for this for my own ZZT ports, they are CC0-licensed and available here.

Out of curiosity - which platform? I'm slowly working on a GB/GBC port myself, which pretty much necessiates scrolling and a bytecode ZZT-OOP compiler...

Re: Porting ZZT to retro platform

Posted: Fri Jan 14, 2022 3:06 am
by leep
I had NO idea there was a GBA port of ZZT. That's awesome! And the fact that it's using a 4-pixel wide font gives me high hopes. :) The 4-pixel wide fonts you linked to look a lot better than I thought possible. I'm going to give it a shot with a 4-pixel wide font, since I'm concerned that having to scroll left/right, even a little, might detract from the playability of some maps. And this gives me the ability to implement the full screen, including the health/score/info right-bar.

The platform I'm targeting is the TRS-80 Color Computer 3 (CoCo). I'm doing coding on a Windows 10 PC in a mix of C and 6809 (maybe 6309) assembly. The PC is connected to the CoCo via a USB-to-Serial cable with a disk image on the PC "mounted" on the CoCo. When I compile on the PC, the disk image is updated, and I can immediately run it on the CoCo. Very convenient setup, and one I would never have imagined possible 35 years ago. :)

Re: Porting ZZT to retro platform

Posted: Fri Jan 14, 2022 7:56 pm
by asie
Yeah, the GBA port of ZZT isn't fully out for public consumption unfortunately :/. I'm trying to get back into the right headspace for embarking on absurd programming projects during free time...

Having to scroll left-to-right could introduce a performance concern too, if a board is unfavorably layouted. Not sure how good the TRS-80 is with that. I'd say go for 4x8 - though an idea might be to take some visual creative liberties with the bordering (what if you made the playfield centered and colorful?).

Re: Porting ZZT to retro platform

Posted: Fri Jan 14, 2022 9:05 pm
by leep
With a 4x8 font and emulating an 80x25 text screen, that comes out to 4 * 80 by 8 * 25, which is exactly 320x200. The CoCo 3 just happens to have a 320x200 16-color mode. Should work out perfectly. :)

Re: Porting ZZT to retro platform

Posted: Sun Sep 04, 2022 10:10 pm
by dw817
Hope this isn't too necro. If and when I get OTHER projects finished, I did want to make my own version of ZZT in a 128x128x16 resolution.

Yes ? You think you know this ? Please remember your answer must be in the form of a question.

"Is it Pico-8 ?"

DING DING DING ! Yes, you got it right ! Tell them what they've won, Clarice !

You have won complacency. Yes, complacency. Have fun spending that.