Monday 24 October 2022

"Mosquito" by Mr. Slump (1985)

 


I ported a game to the TRS-80 MC-10 from for the NEC PC-6001. It was originally published in MICOM BASIC magazine 1985-01 (see above). This new version uses the SG6 graphic mode of the MC-10 rather than the higher res graphics of the original that can be seen in this pic:


My version looks like this:


Programs like this are fairly easy to port because although the images on screen look like graphical sprites they are in fact rendered using a "graphic character" module on the NEC PC.  I think that module is mostly for producing text on screen using Japanese characters, but it can also simply render Roman characters.  So underneath the apparent graphic game, the program is just printing and moving text characters on screen.  All I had to do was switch those characters to semi-graphic 6 characters to get a quasi low res graphic game for the MC-10 curtesy of the creative BASIC programmers for the popular NEC PC-6001 series (an intro 8-bit computer for many Japanese kids back in the early 80s).

You can see how the graphic character module actually allows characters to be printed overtop of each other in the original. For example, the player "sprayer" is actually just an uppercase V and an uppercase D overlaying each other.  I think the author felt it looked like some standard garden spray can, perhaps with a kind of handle.  But I had to render the player sprayer as a simple block with a nozzle sticking out to the left.  You can only shoot left.

The instructions published with the game were the following:
Press "s" to start the game. Move the spray can around with the arrow keys (on the MC-10 these are AWSZ and I used Greg Dionne's suggested key-polling peeks for better responsiveness and true 8 way motion through key combinations). Press spacebar to spray it. If the spray hits a mosquito it will die. If it hits the = that appear on the screen it will stop the spray. Kill enough mosquitos and the level will advance. If a mosquito touches your spray can it is game over, it’s also game over when you run out of spray. You start with 20 shots of it.

I found myself wishing that the game had more than 20 shots, or that there was some way to earn more shots than ones you start with.  But it would seem you are limited only to those 20 shots.  At my level of play I would normally get around 250.  It would be neat to know if other better video game players could score higher.

It's publication details are Micom Basic (マイコンBASIC) December 1985.

As usual it can be played online using an MC-10 emulator here (at least for a little while as I test the game and others do as well).  It's listed on the "Other 8-Bit BASIC Game Ports" menu item once you launch "the game" on GameJolt: https://gamejolt.com/games/jgmc-10games/339292

Here's a vid playthrough:



Friday 7 October 2022

David Meny's "Pirate Island" (1985)

I was contacted by David Meny about whether there was a place to play his old BASIC text adventure  games online (Escape from S.S.A.D.B. and Pirate Island).  I had already converted his SSADB (which he had noticed) and was working on his Pirate Island (PISLAND). He gave me permission to share them.

They can be played here: http://faculty.cbu.ca/jgerrie/Home/jgames_TextAdventures.html

In the course of porting Pirate Island, I noticed a few oddities:

First, the solution/walkthrough posted by Dorthy on the CASA archive seems to be missing an "OPEN DOOR" at the very beginning, which I needed to add to get out of the cabin you start in. It's possible the PC version she played was different.  The only thing with that possibility was that I worked from a PC GWBASIC source file that I found online.

Second, there seems no reason the player should be able to simply GET GARLIC after giving the captain the coordinates to find the Island.  The puzzle would seem to be that you should BUY the GARLIC from the cook after the captain gives you the bag of silver (your "pay") for providing the coordinates.  I think the fact that this changes after you give the coordinates to the Captain might simply be the result of a confusion between the flag variable for signaling that the correct coordinates have been provided and the flag for indicating that one has been given the bag of silver.  In any case, I changed it so you still have to BUY the GARLIC from the cook after your interaction with the captain, and also added a check that indicates that you do in fact have the silver to do so.  Otherwise, you could buy the garlic even without being given the silver (and you could also do it from any room, if you knew about it already).  I also added a check to allow you to GET the garlic (and not be killed by the cook) if you happened to put it down after buying it. I also fixed another oddity. You could put the bag of silver down but then you couldn't pick it up again (GET).  That routine only searched 12 items, instead of 14 (the bag of silver is item 14), so it couldn't see the bag was available to pick up if it was dropped.  I also noticed that the printing of a list of items in any room only seemed to print one item, even if others were in the room.  So I made it so that the program prints an exhaustive list of items in a room.

Finally, in the course of porting I streamlined the code and stripped out some redundant variables, fixed some problems with initialization and re-initialization and corrected a few spelling and style errors. I also had to shorten some messages in order to fit the program into the 20K available to expanded MC-10 (with its 16K expansion pack). I also changed it so that the SCORE actually adds to 200/200 when you win rather than 210/200 and I changed the way the score ratings function. Instead of not triggering a category reference if you happened to hit a score exactly at the junction between categories (i.e. searching on > rather than using a >= check to demarcate the categories), now the categories are exhaustive in the ranges they cover.

I also added a game SAVE and LOAD feature (it can only be used in a full emulator, not the online version).  In my correspondence with Mr. Meny I had asked whether his games had this function and he had commented that some recent online reviews he'd come across commented negatively on the absence of SAVE/LOAD, which he felt was a little humourous for relatively small 1980s BASIC text adventures.  I agree. The games don't need it, but it was helpful for me in game testing Pirate Island and relatively easy with the array save command of the MC-10 (CLOAD*Array). I just had to collate all the the arrays (and various flag variables) into a single comprehensive multidimensional array.

Here's a brief demo: