I received a really neat email from David Kilpatrick about my latest game port and translation project for the TRS-80 MC10:
------ Original Message ------
Hi Jim
When I prompt Google Gemini 2.5 Flash chat AI with this:
"Provide non spoiler instructions for playing this game:" and then paste in the contents of "Firwar11.txt", I get:
This is a text-based adventure game written in a dialect of BASIC, likely for an older computer such as the TRS-80 Color Computer or a similar 8-bit machine. The core objective is to find a fire and bring it back to your village. The instructions below are based on an analysis of the code and are non-spoiler.
Gameplay Instructions
The game operates by having you type commands in response to prompts. The game world is a grid-based map, and your primary actions will involve moving around this map and interacting with your environment.
- Movement: You can move in four cardinal directions: NORTH, SOUTH, EAST, and WEST. You can type the full word or just the first letter (
N,S,E,W).- Interaction: The game will prompt you with "WHAT NOW:". This is your opportunity to type a command. The code supports a variety of commands, including:
- GET or TAKE: To pick up an item. You must specify the item you want to take, e.g., "TAKE AX".
- FIGHT, KILL, or ATTACK: To engage in combat. You'll then be prompted to specify which item you want to use, e.g., "FIGHT WITH SPEAR".
- HUNT: To hunt for food.
- EAT: To consume food you have collected.
- DRINK: To drink from your flask.
- FILL: To refill your flask with water.
- SLEEP: To rest and recover.
- HIT, STRIKE, or SCRAPE: These commands are related to crafting or creating something.
- LOOK or EXAMINE: To get a description of your current location.
- Inventory and Status: The game has a system for managing your health, hunger, and thirst.
- The game keeps track of your health and other stats in the background.
- Hunger and thirst increase as you travel. You will be alerted when your character is hungry or thirsty. If these needs are not met, your character will eventually die.
- Meat is a resource you can collect, likely by hunting.
- You have a flask that can hold water. The game will tell you when it is full or empty.
- Goal: The main quest is to find the fire and return it to your village. You start in the village and must explore to find it.
Tips for Playing
- Pay attention to the text: The game provides all the necessary information through text. The descriptions of locations and your character's status are crucial.
- Manage your resources: Conserving food and water is critical to survival.
- Explore and experiment: Some objects or actions may not be obvious. Try different commands in different locations.
- Survival is key: Your main priority is to stay alive by managing your hunger, thirst, and fatigue. Death is a real possibility.
Thought you might be interested, if you don't already experiment with Gemini or ChatGPT.
Does it sound okay to you?
It doesn't mention a save feature though.
CheersDavid
Here was my response (edited):
That is soooo cool. Especially considering that there is so little (as far as my research has shown) about the game on the Net. Thanks. I suspect it's LLM training is drawing on some "generic advice" about "two-word parser" text adventures and integrating that somewhat with the details available from the source. For example it states "You must specify the item you want to take, e.g., 'TAKE AX'" (neat-- it has definitely processed the Github source code). But this is originally a French language text adventure (It doesn't seem aware of that) and the French doesn't really work well in the two-word parser mode. For example, commands aren't usually grammatically put in a simple definitive verb-noun form (I think), but really require different definite or indefinite articles, injunctive conjugation of the verb, not to mention common polite two-verb forms for some actions. As such the French have a somewhat difficult time with the "two-word" format (not to mention that they simply don't like to bow to "anglicisms"). So, the game is actually a "one-word" parser. You input an injunctive verb. Then the game prompts you for a noun and responds. It also knows that you have an inventory, but doesn't recognize that it is simply always listed on screen.
With those qualifications made, I have to say that Google Gemini did a pretty bang up job at describing the game and providing basic instructions for how it works.
So AI has saved me from some writing drudgery. But as I have found with most of my own experience with LLM systems, it often makes subtle mistakes and has blind spots, such as the lack of awareness about the origins of the game. So I'll describe that stuff here.
The game was originally for the obscure (market failure in France--perhaps also in Japan) Sanyo PHC-25. There is a small amount of French software for the PHC-25 that I have come across:
http://www.phc25.com/collection.htm
I haven't been able to locate any Japanese stuff, but if folks out there know of any, please let me know. The reason the PHC-25 is useful for my projects is it uses the Motorola MC-6847 video chip (a Japanese variation of it), which is the chip used in the MC-10. So text and graphic screens are essentially compatible. I have done other conversions in the past, such as "Citadelle: The Shield of Oran."
The BASIC is also very similar to the MC-10s Microsoft variation. However, to use graphics commands on an MC-10 you need access to the MCX-SD or MCX-128 add-on pack. These add Coco BASIC graphic commands so hires screen stuff can be done. The entire game is in Color Graphics Three (CG3) mode. The fact that this is a graphic text adventure is another detail missed by Gemini.
I had to do some conversion of commands from Sanyo Basic v1.3 to Microsoft, but they are very close in most respects. The first big hurdle was that Sanyo Basic has a RESTORE (line number) feature, which Coco Extended BASIC doesn't have. So I had to count up all the DATA elements for the various data lines referenced for terrain graphic elements, and then create a subroutine to quickly read all the elements just before that line. This created a very excessive delay in drawing the tent, so I PEEKed and stored (as part of the startup screen delay) and restored that specific item's DATA read location.
The second big hurdle was that Sanyo Basic has built in text rendering for hires screens, whereas Coco Basic does not. Instead I had to use DRAW commands and a subroutine for placing messages on screen of the right size and spacing. This required the most conversion, since the PHC-25 could just use regular LOCATE and PRINT commands for messages, whereas I had to set variables and GOSUB a bunch of subroutines instead. I had to scale my text routine so it as closely matched the size of original as possible. However, I think the original program used a slightly narrower font in the horizontal, which I couldn't get my routine to exactly match, so it had a couple of extra lines to work with. This required some condensing and re-formatting of messages for my version. For example, I had to print 3 of the inventory items in a different color font (red) and list them on lines with other items.
Once that was done, I just had to use my old high school French and Google translate to convert all the commands and messages. There are always some challenges. In this case the word which I translate as FLASK was a little obscure. I think "OUTRE" means something like "skin," as in "wineskin." But I wanted a familiar term in English, which suggested a rustic form of container, but that was not too obscure or long since space for text on screen is at a premium given the font differences. "Flask" seemed to strike a good balance.
Then I just had to figure out playing the game so I could bug test it. The author of the French web page mentions in his comment on the game that he never was able to complete it:
LE jeu d'aventure pour le Sanyo.
Vous êtes un homme préhistorique et vous devez ramener le feu au village. Le chemin sera semé d'embûches. Personnellement, je n'ai jamais réussi à finir le jeu vivant :)
Translation:
THE adventure game for the Sanyo. You are a prehistoric man and you must bring fire back to the village. The path will be fraught with pitfalls. Personally, I never managed to finish the game alive :)
I also found this to be the case. I kept dying from exhaustion, or thirst or hunger. Exhaustion (from lack of SLEEP) was particularly difficult. As much as I would try to EAT and DRINK and SLEEP regularly it didn't seem enough, and when I started doing these actions, it seemed like the opponents I met would become particularly difficult to defeat. The SN, SB and SS variables in the following code refer to your level of eating, drinking and sleep. You start at zero. If you rise above certain levels (10, 8 and 30), you starve to death, die of thirst, or die from exhaustion.
30250 IFSN<0THENEX=EX+SN:SN=0
30256 IFSB<0THENEX=EX+SB:SB=0
30258 IFSS<0THENEX=EX+8*SS:SB=0
30258 IFSS<0THENEX=EX+SS:SS=0
30230 IFSN=8THENCLS:LOCATE0,10:PRINT"VOUS AVEZ FAIM" ELSE IFSN>10THENCLS:LOCATE0,11:PRINT"VOUS ETES MORT DE FAIM":GOTO4000030240 IFSB=5THENCLS:LOCATE0,10:PRINT"VOUS AVEZ SOIF"ELSEIFSB>7THENCLS:LOCATE0,11:PRINT"VOUS ETES MORT DE SOIF":GOTO40000
15080 IFBB=1THENCLS:LOCATE0,11:PRINT"VOUS BUVEZ":SB=SB-5.1:IFDR=1THENDR=0:BB=0:GOTO30000 ELSE GOTO3000015150 IFVI>0THENCLS:LOCATE0,11:PRINT"VOUS MANGEZ":SN=SN-5.1:VI=VI-1:DR=1:IFVI<>0THENGOTO30000



I had some difficulty initially getting MCX to work with MC-10 0.73i. Jim suggested I comment here on how I did it for prosperity. Actually, my problems came from thinking I needed to follow these instructions: https://colorcomputerarchive.com/repo/MC-10/Bios/MCX%20Basic/ which I couldn't get to work consistently. Once I realised you can use the MCX that comes with the distribution supplied by Jim here: https://archive.org/details/vmc-10-073-i_202405, it was straightforward.
ReplyDeleteIn MC-10 0.73i go to the "Configure MC-10 Memory" dialog via Configure/Memory... menu option and:
1. Under RAM select the Emulator Enhanced radio button
2. Under ROM (Emulator only) click on the browse button for Load 8K (or 16K) Basic ROM from file, and navigate to the rom/MCX_Basic_21V_ROM subfolder in downloaded MC-10 distribution and select the file MCX_Basic.rom, then click open followed by OK
The emulator will hard reset, and you are good to go e.g. CLOAD followed by selecting the Firewar.C10 file via Play Cassette File menu option, then RUN.
Thanks David. I'll clip this and edit a bit and add it to my distro in the Docs directory (with attribution and thanks to you)
Delete