Retool & Regroup
In earlier blog posts I had mentioned that I used an assembler called mamou. That assembler was derived from the assembler which Motorola originally provided on their long gone Freeware BBS. My friend Boisy Pitre took those sources some time ago and added a variety of features for targeting the BASIC environment of the Tandy Color Computer (CoCo), and the OS-9 operating system. FWIW, Boisy named mamou after a town near his home with a connection to his family and childhood.
The mamou assembler is relatively simple, but it has done the job for me. Nevertheless, Boisy has wanted to retire mamou for some time -- I may be the last user! Another CoCo user named William Astle has developed an assembler toolchain called LWTOOLS. Some time ago I promised Boisy that I would try using lwasm, the assembler from the LWTOOLS package. I am now making good on that promise. Along with the switch to lwasm, I have also done some Makefile clean-ups and some other housekeeping.
Some readers probably know that I am a Fedora contributor, and that Fedora is my preferred computing environment for day-to-day use. Given that, I have taken the opportunity to package LWTOOLS in Fedora. So, any budding CoCo software developers out there can now install LWTOOLS with a simple yum (or dnf) command. Let the retro-coding begin! :-)
Bugs & Low Fruit
The "random" number generation in Fahrfall is done with a software Linear Feedback Shift Register (LFSR). This is a mathematical construct that generates a distribution of numbers that can be used to create the illusion of random numbers. This code was simple and effective, and I had reused it when I created Sluzzle. Later, I discovered a bug in the LFSR code in Sluzzle. I fixed the code there, and this week I checked-in the equivalent fix in the Fahrfall code.
When a game of Fahrfall starts, there is an interstitial screen that gives some simple instructions before the game begins. That screen shows for about three seconds, but that seems to be too long for the most impatient players. As a first new feature for Fahrfall, I wanted to add a check for a button press to cut that timeout short. But at first, it didn't work -- the keyboard input routine always reported a button press. It turns-out that the keyboard routine was not properly reinitializing a variable -- it only worked previously because of luck!
One other simple feature actually changes the scoring. Until now, the scoring in Fahrfall essentially had been just a timer -- the score accumulated based on the length of the game and nothing else. Fahrfall already keeps track of when you are falling versus when you are riding a platform. So, I modified the scoring code to double the points accumulated while falling. Hopefully this provides some incentive for more daring play... :-)
For some time, I've been toying with the idea of releasing Fahrfall as a ROM cartridge. A number of other retro platforms have had homebrew cartridge releases, and they seem to be a rallying point for the various retrocomputing and retrogaming communities. It would be great to do a homebrew cartridge release for the CoCo, and I plan to do some experimenting toward that end as part of the Summer Challenge. I'll do a post or two about that later...
Beyond the cartridge itself, people seem to appreciate a nice package for such things. It turns out that the CoCo cartridge width is a good match for a VHS case, and such cases are still available relatively cheaply -- make sure to get the ones that don't have hubs! The length is way too long for a cart, but a piece of foam board can be used as a spacer to keep the cart from sliding around. Also, many VHS cases can hold an insert to add instant graphics for a good looking game package.
So, there is a little sneak preview of the goal...looks cool, eh? Now I just have to whip Fahrfall into release-worthy shape, and figure-out how many cartridges I can make. If you want to see how that turns-out, then you'll just have to stay tuned!