Friday, September 24, 2021

We Retro-Programming

It's Friday. The day's been yo-yoing between being bloody hot and bloody cool to the point that I am feeling myself feeling feverish.

I've started working on LED2-20, the mini-project that is a ``remaster'' of the concept in LED(II) using the same tools, but with 20 years of understanding. I am seriously considering if I want to use an overlay-esque approach where I have a smaller program (with the sprite data) generate the bitmaps and bitmasks from DATA statements, storing it in an unnamed COMMON block before handing over to the primary game-play loop program via the CHAIN command. This saves conventional memory from all the DATA statements, among other things.

It's similar in concept to the Dynamite Man game in QBasic by Hung. It's a Bomberman clone written in pure QBasic, and is of a very high quality. There are some things that I would like to avoid that Hung did though.
  1. Dynamite Man uses many small binary files saved/loaded with BSAVE/BLOAD for the sprites. I'd like to avoid doing that because of the fragmentation that it will induce in modern drives---each cluster is about 4 kiB, while each of these sprites are about 300+ bytes, which means that having a directly full of these small files is super inefficient.
  2. Dynamite Man is careful to limit itself to using a single screen with static background and sprites that move within the screen, while I'm thinking of something that involves a moving background with/without parallax in side-scroller action. So, what I have in mind is technically more complicated than what Dynamite Man has done.
I've written up a coarse design document on what I would like to put into my rewrite, and am excited with working on it semi-old school in DOSBox. I do use Vim outside of DOSBox to sort out some other things where it works better, but that's alright since the purpose is to apply experience to improve upon what I had done before, not necessarily to relive the old days faithfully.

I don't have much else to talk about for today, and so, till the next update.

No comments: