Monday, 2 August 2021

"Sunrise Over Bethselamine" by Armadillo Soft.

"Sunrise Over Bethselamine" is a text adventure program I have converted to the MC-10. I've made many bug fixes and spelling and grammar corrections.  There were sooooo many spelling and grammar mistakes I'd have to guess this program was written by a 13-year-old British kid.  However, it is officially attributed to Armadillo Soft with a release date of 1986, and apparently had a commercial release.

My interest in converting this game started with a comment by posted by boldir (Fri Jul 23, 2021 5:50 pm) over on CASA The Solution Archive.

"I'm currently playing this adventure and I have even fixed it, but nevertheless I get stuck when I have to use the comlink in order to get the code number for the terminal in the small computer room (37). When I PRESS BLACK inside the alien craft (having the comlink and the translator) the message "A voice comes from the comlink, the translator translate it for you, 'calling agent 29326'" should appear. Instead of this, the comlink says 'gargle gloop gleep glop zing. In this context there are two conditions I can't explain to myself: w=0/1 and ww=0/1 (see BASIC lines 663 => 955 and 1050 - 1070). Is there anybody who has any idea?"

My response was the following:

boldir,

That's some messed up code.

The original:

1050 IF X=43 THEN FOR F=1 TO 10: IF G(F)=22 THEN W=1
1051 IF X=43 THEN IF G(F)=7 THEN W=1
1052 IF X=43 THEN IF G(F)=22 THEN WW=1: IF X=43 THEN NEXT F
1057 IF X=43 AND W=0 THEN PRINT "YOU DONT HAVE THE COMLINK": GOTO520
1060 IF X=43 AND WW=0 THEN PRINT "A VOICE COMES FROM THE COMLINK,'GARGLE GLOOP GLEEP GLOP ZING'": PRINT : GOTO520
1070 IF X=43 THEN PRINT "A VOICE COMES FROM THE COMLINK, THE TRANSLATOR TRANSLATES IT FORYOU,'CALLING AGENT 29326'"

Here's what I would recommend:

1050 IFX<>43THEN1080
1051 FORF=1TO10:IFG(F)=22THENWW=1
1052 IFG(F)=7THENW=1
1054 NEXTF
1057 IFW=0THENPRINT"YOU DON'T HAVE THE COMLINK":GOTO520
1060 IFWW=0THENPRINT"A VOICE COMES FROM THE COMLINK, 'GARGLE GLOOP GLEEP GLOP ZING'":PRINT:GOTO520
1070 PRINT"A VOICE COMES FROM THE COMLINK. THE TRANSLATOR TRANSLATES IT: 'CALLING AGENT 29326'":PRINT

Basically this routine was supposed to be checking that you have both the Comlink and the translator when you push the button. If you don't have the Comlink, it was supposed to tell you that you don't have it. Or if you have the Comlink, but not the translator, it transmits a gibberish message. But if you have both, you get the message with the code number.  The problem is that the programmer uses multiple IF statements sandwiched between a FOR/NEXT loop, with the NEXT actually in one of those IFs, so it doesn't necessarily get triggered.  So the loop doesn't function properly.

My new version works. It disentangles the IFs from the FOR/NEXT loop and properly organizes the variable flags W and WW for signaling whether you have the translator and the Comlink.

Boldir also posted this concern:

"I think the problem lies deeper. It's not enough to get the comlink and the translator to receive the necessary message; I've noticed that the program (randomly?) swaps the collected objects, eg at room 15 (the apartment of the hotel receptionist) it happened that, when I dropped the glass cutter and took the comlink, the cutter was in this room when I looked again, but the inventory still shows the glass cutter, and the small box that I had before was gone! It has also happened that I had two laser pistols in my inventory, so I suspect that the comlink or the translator could be exchanged for another object without being noticed in the inventory. I have no idea what's going on here; I've played the adventure many times and only happened to get the correct message once although I've always owned comlink and translator."

I was able to find this problem as well.  There was simply an incorrect variable used in the loop used to reorder the "items carried list" after you use the Rope. That item needs to get removed from the items list once it is being used (i.e. dangling down the side of a building).  But the incorrect variable would simply corrupt the items list instead of reordering it after deleting the Rope item.

I made many fixes (but there are other minor one's I can't recall).  Here's a rough list:

  • Players of the Sinclair original will notice some corrections to the directions involved in entering and leaving the apartments on the floors above Steve's.  You enter the window from outside by going east, but returning from inside was south. I changed the return values to west.
  • The routine for using the rope is fixed. Now it doesn't garble the items list.
  • Now Steve does not make his "gormless" remark until after his initial speech when you enter the room.
  • To get access to Steve's room you had to say your name into a "speach grill"--> "speech grill" (microphone would have been better).  This is the kind of typo stuff I corrected.  I also replaced lots of commas used to separate clauses with separate sentences using periods.  I added lots of missing apostrophes to contractions.
  • The routine for wearing the crampons and removing them from the items list now works as the programmers intended (I think).
  • The routine managing the Comlink and the translator interaction so that you can hear the secret code number is now working properly.
  • Some quirks with the card routine sorted (it was a little mixed up with the "WEAR" routine.
  • The directions from the West and East sides of the bottom of the cavern were fixed. When you select "DOWN" in those locations, you would be taken back to room 1 (your ship on the landing pad at the start) as the missiles came in that were launched by the GLOBE ship at the bottom of the cavern.

Additions/changes:

  • Instructions at the start (so you can know your own name, which is necessary for the game).
  • Line numbers point to specific line numbers for subroutines.  The Speccy allows pointing to non-existent line numbers and just jumps to the next line number in sequence in the code.  This should allow for easier porting to other versions of Basic
  • Use of my word wrap subroutine at line 1 for printing most messages.  Just change the "32"s in that routine to switch it to other screen widths.
  • Lots of shortening of descriptions to fit within the 128 character word limit of the MC-10.  My hope is that nothing of value has been lost.
  • New simpler graphics replacing the ones for the Speccy version. Just change line 2150 to a CLEAR SCREEN command for your system and a RETURN to get rid of this feature.  It doesn't affect game play.
Original Sinclair Version

I'm not sure exactly how the graphics worked. But guessing led me to have four basic graphic images for four main "stages" of the game.  When you (Jason) are exploring, you just see a human figure.  When you're in the "planet hopper" you see a little ship graphic.  When you hanging from the building, you see a figure with a rope.  And when you're using a "computer terminal" you see a little graphic of a computer and keyboard.  If anyone can enlighten me about the graphics in the original, it would be much appreciated.

For a complete listing of the code look for the highest numbered "SUNRISE" file here: https://github.com/jggames/trs80mc10/tr ... es/Sunrise

And here's a complete walkthrough (SPOILER ALERT):

https://youtu.be/4Rpj5X2KrGc


No comments:

Post a Comment