I have been looking for an example of a classic Japanese text adventure for some time, and Jason's blog post about the game provided the opportunity. I have examples of the early text adventure of many countries on my text adventure page (https://jggames.github.io/Type-in-Mania-Text-Adventures.html):
- Agent 999 by Kajsa Söderström 1984 (English translation from Swedish)
- Spaceship Farmer/Astronave Farmer by Mario Pettenghi 1985 (English translation from Italian)
- Caverns in the Pocket/Des Cavernes dans le poquette by Charles Feydy 1982 (English translation from French)
- Drakulas Diamanten/Dracula's Diamonds by C. Seibt 1983 (English translation from German)
- A Hös Lovag (Hero Knight) by Miklós Tihor 1985 (English translation from Hungarian)
- The Time Machine/De Tijdmachine by Gerton A. Lunter 1988 (Netherlands)
- P.R.E.S.T.A.V.B.A. by Miroslav Fídler 1988 (English translation from Czech)
I’ve now completed my translation to English and port of the game to TRS-80 MC-10. I’ve also completed playing the game. But of course I cheated by playing it from the inside (code side) out, and not as it really should be played. I look forward to Jason's account of slogging it through in a proper player's way. It’s a complex adventures with lots of subtleties and has been and will be challenging for him. Here’s a video with me demonstrating a bit of the start of the game (an early version of my port with some of the translation still rough):
I really appreciate Jason's detailed discussions of this and other games. They help when trying to unpack the code and do a translation. Or I should really say "to tweak" a translation provided me by Copilot. It did most of the heavy lifting, but I used Jason's analysis and the contributions of others posting on his blog to help when things were unclear. I also, as usual, called in my son Charlie to help with a few conundrums I had with certain words. For example, he helped confirm that the original used LEFT and RIGHT directions in addition to North, South, East West. For a time I had wondered if it was using PORT/STARBOARD, since reviews apparently complained about its use of "naval terminology." One mystery I still have is the last word in the Verb list, which CoPilot and Charlie rendered as SPIT (Haku). It was clear from the code that it needed to be something like CLEAN or SWEEP, as it involved having to carry a broom and do something with a pile of trash.
Jason was stuck for a while on the main decks of the ship. I had figured out from the code that the main puzzle there was to hear a message from a pile of skeletons, which indicates that the player must PRAY or say AMEN over all the skeletons on the ship. Then the player would be allowed to interact with those skeletons without being chucked off the ship by the disturbed spirits of the dead sailors (its a neat narrative idea).
If you just looked at those skeletons you would get a message telling you they were, as Jason nicely put it "seething with angry spirits". But if you looked at them after saying AMEN" over their remains they would be described as "sleeping peacefully". Then you could SEARCH or MOVE them. These are actually different VERBS in terms of their effects, although they both accomplish the same end of revealing hidden items. You need to do this to find needed keys that allow you to proceed to the lower levels of the ship.
The game is designed so that you always have to go and visit the pile of skeletons and “LISTEN” for the message before praying over the other skeletons (Or you can just break out of the program and type in AH=1 and then enter CONT). I think in the original Japanese you might have to use a more specific formula for praying, but I changed it in my English version to be more flexible. The original might be something like “PRAY AMEN” or maybe “SAY AMEN”. I made my version work if you said either “PRAY”, “SAY AMEN”, “PRAY AMEN” or “SAY PRAYER”. These seemed a more natural English set of options. The phrase “PRAY AMEN” seemed a little unusual in English.
The game also requires that you “LOOK" at rooms after entering them before you can interact with any items. You can also and sometimes must look at individual items before you can have further interactions with them. And there is, as I mentioned, a difference between examine and move in terms of effects. I actually enjoyed these complications/subtleties, but it can get a wee bit tedious having to do all 3 actions on every item to make sure you have discovered all hidden items in the game. So I added an option to simply use the shorthand "L." This replaces a verb option rendered by Copilot as "SCAN", which is not a common word used in early English BASIC two-word parser text adventures.
I also had trouble figuring out how the doors worked in the original. It had something to do with how the word "KEY" is used in Japanese so that it covers the concept of "UNLOCK." Because I didn't understand this subtlety, all the doors were originally “closed” and locked for me. In my initial fix of the problem the doors to the Amory, Storage, Cook’s room, Galley, Officer 1 and Officer 2 were all open and unlocked. But I noted from Jason's descriptions that they seemed to be at least closed in the original. Then I was able to figure out that doors had to be both UNLOCKed and OPENened and so discovered that my kludged solution was in error. I changed the code's use of "KEY OPEN" as a verb noun combo for unlocking to simple English "UNLOCK DOOR [or other noun]" and things started to work fine.
In porting the game I noticed a place where there might be a bug in the code for anyone trying to translate it to any variation of Microsoft BASIC. In the prayer routine there is the following line:
4040 IF LEFT$(A$,4)=LEFT$(V$(5),4)=0 THEN 4090
My Microsoft BASIC chokes on this. By Microsoft BASIC standards it should be expressed with brackets around the LEFT$ and RIGHT$ logical equality comparison to separate that the logic check of that comparison being = 0 (i.e. checking whether the comparison is FALSE/0). In the original BASIC the order of operations must be handled slightly differently so that brackets are unnecessary to distinguish logical comparisons from other logical comparisons or from possible use of "=" as a variable assignment operator. For MS BASIC the line must be something like this:
4040 IF (LEFT$(A$,4)=LEFT$(V$(5),4))=0 THEN 4090
OR even more simply for a Microsoft variation of BASIC, like this:
4040 IF LEFT$(A$,4)<>LEFT$(V$(5),4) THEN 4090
There is another possible bug like the above one:
1450 IF LEFT$(A1$,3)=LEFT$(N$(NN),3)=0 THEN 1490
This should read for MS BASICs as:
1450 IF (LEFT$(A1$,3)=LEFT$(N$(NN),3))=0 THEN 1490
OR
1450 IF LEFT$(A1$,3)<>LEFT$(N$(NN),3) THEN 1490
Other than that, there wasn't much challenge in converting the code. It was otherwise pretty MS BASIC compliant. I had to do a little condensing of the code to make sure it all fit in 20K. I comes out with only just over 300 bytes left after you play the game to the finish, so it's a tight fit.
I also had to reverse the parser's NOUN VERB order of Japanese to the VERB NOUN order of English. This required that I alter the parser's logic a little, since it was designed to only look for the first and last space-separated words and therefore ignore possible multiple word Japanese noun phrases. Instead, I had to have it check for only the first two distinct words (VERB and NOUN) and ignore any additional space-separated words of an English noun phrase. This way it could handle complex noun phrases like GOLD COIN and MIZZEN MAST properly. I also had to check in a few cases for longer numbers of characters than the first 3 of words, to distinguish them from similar words. Or I simply had to change words. For example, in the case of CANNON versus CANNONBALL I had to change CANNONBALL to "32LB BALL" to allow it to be distinguished properly from CANNON.
** SPOILERS ** (Don't proceed if you want to be surprised about the ending of the game)
Finally, I came across what might be an error or minor quirk, depending on how you look at, in the original code. In the final boss battle, you are attacked by the skeleton of the Captain. Saying a prayer wont work. Nor will most other actions. The solution is to have found the Cross in the Command Room, and then when attacked, to "use" it. The verbs available for "using" the Cross are those from the 29-32 as outlined in this IF statement:
4480 GG=1:IF NN=43 AND VV>28 AND VV<33 THEN PRINT " THE SKELETON DISAPPEARS!":GOTO 1120
Unfortunately, those verbs correspond to the following:
26 27 28 29 30 31 32 33 36 37 38
180 DATA TAKE,GRAB,GET,HOLD,DROP,THROW,FLING,BREAK,CRUSH,DESTROY,HIT...
I'm not sure why TAKE, GRAB and GET were left off the options list. HOLD is not a particularly common verb for English text adventures and I'm not sure why DROP was included. Perhaps it is simply because it is a synonym for THROW or FLING, which are somewhat more appropriate exorcism techniques when it comes to using a cross. But I didn't want the final big puzzle to just be an exercise in guess the quirky VERB and to give the player a more sporting chance to avoid having to play the game all over again. Especially considering all the UNLOCKing, OPENing, MOVEing, SEARCHing and LOOKing you have to do (there are no short cuts). So I changed it to also allow TAKE, GRAB or GET CROSS.
I wish Jason and all the others who try to beat this game the best of luck. It's a tough game, but a relatively fair one, except perhaps for this last quirk with the cross.
The game can be played online here:
Or from my GameJolt site. Select the green bordered "Play" button (you might have to scroll down a little). Then select the "GSTSHIP" cassette under the "Australasian and Japanese Collections" menu item: https://gamejolt.com/games/jgmc-10games/339292
Below are my notes on how to resolve each room's puzzles:


No comments:
Post a Comment