Sphinx Adventure

discuss classic text/graphic adventures for the bbc micro & electron
MartinH
Posts: 458
Joined: Tue Jan 14, 2020 8:38 pm
Contact:

Re: Sphinx Adventure

Post by MartinH »

I remember playing this when I was 5 or 6 years old! I say remember, what I actually remember is wandering about a bit, encountering a pirate who took your stuff and if you attempted to hit him he'd kill you.

Good times!
MikeH
Posts: 1
Joined: Tue Feb 09, 2021 8:08 pm
Contact:

Re: Sphinx Adventure

Post by MikeH »

I remember Sphinx Adventure, I bought it back then. I'm sure folk would like it now. If I had a Beeb I would have another go! :-) :D
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

You can play Sphinx Adventure in your web browser here:

http://bbcmicro.co.uk/game.php?id=1636

:idea:
PMF
Posts: 12
Joined: Sun Sep 06, 2020 2:13 pm
Contact:

Re: Sphinx Adventure

Post by PMF »

I wish I still had the original source code

Not the published “crunched” code where all the long variable names have been stripped out.

Someone asked me how I got the vdu 6 and 21s into the data lines to try to hide them ...

I think this was done by a post-processor programme that poked them in exchange for ^ and | chars.

PMF
Paul Fellows
Head of Languages, Acornsoft, 1983-85
Microsystems Software Manager, Acorn 85-88
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

Are there any known bugs in Sphinx Adventure?

I ask because we recently received a bug report via bbcmicro.co.uk -- although later the user seemed to retract the report, so I'm not wholly convinced that the bug is real...
A user of bbcmicro.co.uk wrote:I have been playing Sphinx adventure on here for the first time since we got it with our Electron in the 80's BUT I'm getting the same bad program error every time I get to a certain bit of the game - is there anything that can be done to fix as I would love to finish this with my Dad - we never could complete it in the 80's!! Error was bad program (on line 165 or 195) always on the second time I try to pass the Goblins in the Hall of the Mountain King

[...]

I tried the game again and wrote down my moves so I could let you know where the bad program error was occurring but this time I didn’t get the error!! I tried it twice and it worked fine and I was able to finish it
:?:
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: Sphinx Adventure

Post by fuzzel »

PMF wrote:
Someone asked me how I got the vdu 6 and 21s into the data lines to try to hide them ...

I think this was done by a post-processor programme that poked them in exchange for ^ and | chars.
Robert O'Leary suggested the very same technique in the February 1984 Acorn User:
ROL Secret Symbols AU Feb84.jpg
That's actually a very good issue for those interested in text adventures. There are articles in it by Mike Austin and Peter Killworth amongst others.
Canalboy
Posts: 97
Joined: Wed Jun 24, 2020 7:36 pm
Contact:

Re: Sphinx Adventure

Post by Canalboy »

Beware the version of Sphinx Adventure downloadable on the BBC Micro Games Archive. I have been playing it on BeebEm v4.15 and all has gone swimmingly until I reached the Hall Of The Mountain King. From here the game randomly crashes with Argument at line 195 Bad Program and closes the game down. I can reload and it will be ok for a few more moves / actions but this message soon reappears. I don't think it is a corrupt save file as it does it every time at that point even after restarting.
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

Canalboy wrote: Wed Feb 24, 2021 7:05 pm Beware the version of Sphinx Adventure downloadable on the BBC Micro Games Archive. I have been playing it on BeebEm v4.15 and all has gone swimmingly until I reached the Hall Of The Mountain King. From here the game randomly crashes with Argument at line 195 Bad Program and closes the game down. I can reload and it will be ok for a few more moves / actions but this message soon reappears. I don't think it is a corrupt save file as it does it every time at that point even after restarting.
Could you please post an exact list of the moves that you have to make to get to that error? (I.e. the exact sequence of commands that you have to type into the game?)

A BeebEm savestate from just before the appearance of the error and another savestate from just after the error would also be helpful.

:?:
User avatar
leenew
Posts: 4900
Joined: Wed Jul 04, 2012 4:27 pm
Location: Doncaster, Yorkshire
Contact:

Re: Sphinx Adventure

Post by leenew »

This has piqued my interest :wink:
I didn't know there were different versions of Sphinx adventure.
STH has a uef of v1.0
Does anyone have a copy of v2.0? is it archived anywhere?
What are the differences?
Which version of the game was the disc version based on?

Check under your beds!
If you have an original tape copy of Sphinx adventure, then there usually is a little file right after the main game file on the tape, which gives the version number.

Any help would be appreciated.

Andrew AJH mentions v1 and v2 differences here: viewtopic.php?p=279404#p279404
Lee.
User avatar
leenew
Posts: 4900
Joined: Wed Jul 04, 2012 4:27 pm
Location: Doncaster, Yorkshire
Contact:

Re: Sphinx Adventure

Post by leenew »

Can anyone find any bugs in the version of Sphinx Adventure on bbcmicro.co.uk
http://www.bbcmicro.co.uk/game.php?id=1636
Recently we have had 2 reports of it crashing.
The game was taken from BillC's original disc and BillC is one of our "experts" so unless there was some devious protection, it should be a good transfer.

BillC - is it worth taking another look at your SSD transfer?

Thanks,

Lee.
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

leenew wrote: Sat Feb 27, 2021 12:02 pm STH has a uef of v1.0 Does anyone have a copy of v2.0? is it archived anywhere? What are the differences? Which version of the game was the disc version based on?
The file $.SPHINX on bbcmicro.co.uk says "BBC Version 2" in a REM comment: http://bbcmicro.co.uk/explore.php?id=1636

leenew wrote: Sat Feb 27, 2021 12:06 pm Can anyone find any bugs in the version of Sphinx Adventure on bbcmicro.co.uk http://www.bbcmicro.co.uk/game.php?id=1636
Yes, this would be good to know!: viewtopic.php?p=310144#p310144

:?:
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

Canalboy wrote: Wed Feb 24, 2021 7:14 pm Beware the version of Sphinx Adventure downloadable on the BBC Micro Games Archive. I have been playing it on BeebEm v4.15 and all has gone swimmingly until I reached the Hall Of The Mountain King. From here the game randomly crashes with Argument at line 195 Bad Program and closes the game down. I can reload and it will be ok for a few more moves / actions but this message soon reappears. I don't think it is a corrupt save file as it does it every time at that point even after restarting.
lurkio wrote: Sun Feb 21, 2021 9:57 am
A user of bbcmicro.co.uk wrote:... I'm getting the same bad program error every time I get to a certain bit of the game ... Error was bad program (on line 165 or 195) always on the second time I try to pass the Goblins in the Hall of the Mountain King
Error confirmed!:

Screenshot 2021-02-28 at 01.49.10.png

Here's line 195 from our copy of the disc version ("V2") of Sphinx Adventure (which is essentially BillCarr's transfer of the original Acornsoft disc release, now titivated and hosted at bbcmicro.co.uk):

Code: Select all

195IFL=48ANDL=O?33G=G+1:IFG>=5PROCp("The goblins suddenly leap on you tearing you limb-from-limb!",40):GOTO449
The above call to PROCp passes two arguments, a string and an integer, but the definition of PROCp expects only one argument!:

Code: Select all

500DEFPROCp(Z$)LOCALI,J:J=1:Z$=Z$+" ":FORI=1TOLENZ$:IFASCMID$(Z$,I)=32PROCpp:J=I+1
:!:
Last edited by lurkio on Sat Apr 03, 2021 4:50 pm, edited 1 time in total.
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: Sphinx Adventure

Post by fuzzel »

Hmm, integer=40, sounds like wordwrappery to me. Just from looking at line 195 it appears that if you're in the same location as the goblins 5 times then they kill you. Funny, given that Sphinx was such a massive hit for Acornsoft, that this error wasn't more widely reported (by Mad Hatter et al).
Edit: Further to the above, I've just loaded my savestate file (from SphinxAdventure-WithSaveGame.ssd) and those lines are different on my version:
sphlisting.jpg
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

fuzzel wrote: Sun Feb 28, 2021 9:10 am Hmm, integer=40, sounds like wordwrappery to me.
Correct. Good old wordwrap!

fuzzel wrote: Sun Feb 28, 2021 9:10 amJust from looking at line 195 it appears that if you're in the same location as the goblins 5 times then they kill you.
Yes.

fuzzel wrote: Sun Feb 28, 2021 9:10 amFunny, given that Sphinx was such a massive hit for Acornsoft, that this error wasn't more widely reported (by Mad Hatter et al).
This error only affects the disc version of Sphinx Adventure, I believe. The main BASIC program on the disc version (V2) is different from the main BASIC program on the original tape version (V1). The tape version doesn't have this bug, I don't think. And it was the tape version that most people would have played BITD. I think that the disc version (which presumably came later) is relatively rare.

I suspect that what happened was that someone had to manually "crunch" the BASIC program in the tape version so that it would fit in a Model B with DFS. In the process, they changed PROCp so that it only took one argument (a string) instead of two (a string and an integer for the wordwrap column), but they forgot to remove the second argument in one of the calls to PROCp (the one on line 195).

Here's line 195 from the original tape version (in which the role of PROCp is played by "FNS"):

Code: Select all

195R$="":IFL=48ANDL=O?33THENG=G+1:IFG>=5THENPRINTFNS("The goblins suddenly leap upon you and tear you limb-from-limb!",40):GOTO449:R$=""

...

484DEFFNS(Z$,N) ...

fuzzel wrote: Sun Feb 28, 2021 9:10 amEdit: Further to the above, I've just loaded my savestate file (from SphinxAdventure-WithSaveGame.ssd) and those lines are different on my version
I believe that the hacked version of Sphinx that you're using was a modification by AJH of the V1 tape version. AJH did more than just add a savegame feature: he also added a new puzzle! It looks like he altered the line-numbering too.

:idea:

EDIT: My proposed fix, which will disturb the disc-image as little as possible, is to hex-edit the disc-image and overwrite the character-sequence ",40" on line 195 with three spaces. I've tried applying the fix to the user-memory area in a BeebEm savestate, taken just before the error occurs, and the fix seems to work:

Screenshot 2021-02-28 at 11.46.55.png
Last edited by lurkio on Sat Apr 03, 2021 4:51 pm, edited 6 times in total.
User avatar
leenew
Posts: 4900
Joined: Wed Jul 04, 2012 4:27 pm
Location: Doncaster, Yorkshire
Contact:

Re: Sphinx Adventure

Post by leenew »

Ooh, good detective work!
=D>

Lee
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: Sphinx Adventure

Post by fuzzel »

Very nice work and a quick result on a Sunday morning. I don't suppose you could point me in the right direction of an editor for a beebem save state could you? That would come in VERY handy.
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

fuzzel wrote: Sun Feb 28, 2021 2:06 pm I don't suppose you could point me in the right direction of an editor for a beebem save state could you? That would come in VERY handy.
Any general-purpose hex-editor should do. On macOS I use Hex Fiend. I think Lee uses this one on Windows:

https://mh-nexus.de/en/hxd/

:idea:
fuzzel
Posts: 1191
Joined: Sun Jan 02, 2005 1:16 pm
Location: Cullercoats, North Tyneside
Contact:

Re: Sphinx Adventure

Post by fuzzel »

Ok thanks, I'll download it and have a dabble. I was rather hoping that someone would have created something bespoke for bbc .ssd / .dsd files with a menu where you could select main memory (0-&8000), a disc (0-3) or one of the sideways ram banks to focus in and edit that way.
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

Uploaded the bugfix:
Uploaded the original tape version of Sphinx Adventure (taken from StairwayToHell.com, transferred to .SSD disc-image, and "instructified"):
EDIT: A full(ish) walkthrough (solution) is at CASA:
:idea:
enh
Posts: 13
Joined: Fri Oct 08, 2021 1:56 am
Contact:

Re: Sphinx Adventure

Post by enh »

flaxcottage wrote: Tue May 05, 2015 9:41 pm Resurrecting this old thread to report that I have ported The Sphinx to the Raspberry Pi running RISCOS pico and to the PC under BBC BASIC for Windows.
Surely in a Sphinx Adventure thread you should say "reincarnated" or GOTO 191 instead :-)

Anyway, years later I've taken your text version of version 1's BASIC source and made a fairly literal translation to C, so it runs on a Raspberry Pi (or whatever) directly; no emulators needed. I'm still cleaning it up a bit (because I felt that a fully un-crunched program would be a lot more interesting than a completely literal translation), but if PMF doesn't mind, I'm happy to share at any point.

(I've also kept a list of what the various pre-crunching identifiers probably were.)

Later on this thread though, I learned that there's also a version 2. (Which explained why this source says "What?" but I was sure my Electron used to say "Eh?".)

I downloaded SPHINX2_1B00_725F.bin but my home-grown Unix BBC BASIC lister struggles with the end in the same way that the website does. I'm guessing the

Code: Select all

LOMEM=&725F
is how we end up at

Code: Select all

 1000 A%=PAGE
 1010 REPEAT
 1020 L%=(A%?1*256+A%?2)
 1030 A%=A%+A%?3
 1040 B%=4
 1050 REPEATIFA%?B%=21 A%?B%=ASC"#"
 1060 B%=B%+1
 1070 UNTILA%?B%=13
 1080 A%=A%+A%?3
 1090 UNTILA%?1>&7F AND A%> TOP-100
but I'm not sure about the bit that comes after that, which looks like this as a hex dump (the first line of this hex dump being line 1090 above)

Code: Select all

00005750: 2080 2041 253e 20b8 502d 3130 300d 00ad   . A%> .P-100...
00005760: 1002 8dc2 72ad 1102 8dc3 72a9 9f8d 1002  ....r.....r.....
00005770: a972 8d11 02a9 008d c172 a915 20ee ffa9  .r.......r.. ...
00005780: 81a2 00a0 ff20 f4ff e000 f010 a9b4 a20e  ..... ..........
00005790: a000 20f4 ffa2 d8a0 724c f7ff 4c00 808e  .. .....rL..L...
000057a0: c072 aec1 72bd c472 eec1 72e0 13d0 0cae  .r..r..r..r.....
000057b0: c272 8e10 02ae c372 8e11 02ae c072 1860  .r.....r.....r.`
000057c0: 0000 0000 5041 4745 3d26 3142 3030 0d4f  ....PAGE=&1B00.O
000057d0: 4c44 0d52 554e 060d 4241 5349 430d 5028  LD.RUN..BASIC.P(
000057e0: 5732 29e7 5732 3d32 38f2 5228 3231 293a  W2).W2=28.R(21):
000057f0: e10d 01b0 2f49 3d31 313a e74f 3f57 323c  ..../I=11:.O?W2<
Both my lister and the one built in to the website give up with "Bad program".

I suppose my next step is to actually try to run this in my simple Unix 6502 emulator (it's a "hosted" emulator, so although it runs the real BASIC2 rom, there's no MOS and the addresses called by BASIC2 are "virtualized" into Unix I/O or whatever), and collect the output? But if someone already has version 2 lying around in text format, I'd happily skip doing the extra work there and spend my time on finishing polishing my version 1 port :-)

And my apologies if all this talk of running stuff under modern OSes on modern hardware upsets the local residents --- I'm new here! Personally I'm most interested in the idea of faithful modern rewrites that make it easier to understand how old stuff worked. I enjoyed the recent Elite disassembly, for example, but I know I'd enjoy a C/SDL version even more. Sphinx Adventure seemed like a much easier place to start, and even though I never got very far with it as a kid, I do have fond memories of it. Sadly the anti-cheat mechanisms were sufficient to prevent me from learning much from it directly back then!
User avatar
BigEd
Posts: 6261
Joined: Sun Jan 24, 2010 10:24 am
Location: West Country
Contact:

Re: Sphinx Adventure

Post by BigEd »

(Welcome! Do consider posting an introduction. I'm interested to hear more about your 6502 emulator too, but it's probably OT for this thread.)
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

enh wrote: Sat Oct 16, 2021 6:32 pm ... if someone already has version 2 lying around in text format
I didn't, but I just created this version by removing all the sneaky VDU-disabling control codes (etc.) that had been embedded in the tokenised version of the program:

SPHINXv2.bas.txt
(25.51 KiB) Downloaded 98 times

I've also abbreviated some of the longer lines so that the whole listing can be copied and pasted into BeebEm. But it hasn't been thoroughly playtested, so be warned!

(The machine code shown in your hex dump just temporarily disables the screen and then essentially types in *BASIC and PAGE=&1B00 and OLD and RUN, but it does so in a rather weird way by intercepting RDCHV for some reason.)

:idea:

EDIT: FWIW, here's a disassembly of the machine code:

Code: Select all

725F  LDA &0210    AD 10 02     -..   RDCHV: &210,&211. Read Character vector. All reads from the currently selected input stream are passed through this vector.
7262  STA &72C2    8D C2 72     .Br
7265  LDA &0211    AD 11 02     -..
7268  STA &72C3    8D C3 72     .Cr

726B  LDA #&9F     A9 9F        ).
726D  STA &0210    8D 10 02     ...
7270  LDA #&72     A9 72        )r
7272  STA &0211    8D 11 02     ...

7275  LDA #&00     A9 00        ).
7277  STA &72C1    8D C1 72     .Ar

727A  LDA #&15     A9 15        ).    Disable VDU 
727C  JSR &FFEE    20 EE FF      nˇ

727F  LDA #&81     A9 81        ).    Read machine type
7281  LDX #&00     A2 00        ".
7283  LDY #&FF     A0 FF         ˇ
7285  JSR &FFF4    20 F4 FF      tˇ
7288  CPX #&00     E0 00        `.    Is machine type equal to zero (BBC Microcomputer OS 0.10)?
728A  BEQ &729C    F0 10        p.    If so, jump to &729C which jumps to &8000 ?!

728C  LDA #&B4     A9 B4        )4    Set OSHWM to &E00
728E  LDX #&0E     A2 0E        ".
7290  LDY #&00     A0 00         .
7292  JSR &FFF4    20 F4 FF      tˇ

7295  LDX #&D8     A2 D8        "X    OSCLI "BASIC"
7297  LDY #&72     A0 72         r
7299  JMP &FFF7    4C F7 FF     Lwˇ

729C  JMP &8000    4C 00 80     L..

729F  STX &72C0    8E C0 72     .@r
72A2  LDX &72C1    AE C1 72     .Ar
72A5  LDA &72C4,X  BD C4 72     =Dr
72A8  INC &72C1    EE C1 72     nAr
72AB  CPX #&13     E0 13        `.
72AD  BNE &72BB    D0 0C        P.
72AF  LDX &72C2    AE C2 72     .Br
72B2  STX &0210    8E 10 02     ...
72B5  LDX &72C3    AE C3 72     .Cr
72B8  STX &0211    8E 11 02     ...
72BB  LDX &72C0    AE C0 72     .@r
72BE  CLC          18           .
72BF  RTS          60           `

72C0  BRK          00           .

72C1  BRK          00           .

72C2  BRK          00           .     Cache RDCHV
72C3  BRK          00           .

72C4  BVC &7307    50 41        PA
72C6  ???          47           G
72C7  EOR &3D      45 3D        E=
72C9  ROL &31      26 31        &1
72CB  ???          42           B
72CC  BMI &72FE    30 30        00
72CE  ORA &4C4F    0D 4F 4C     .OL
72D1  ???          44           D
72D2  ORA &5552    0D 52 55     .RU
72D5  LSR &0D06    4E 06 0D     N..

72D8  ???          42           B
72D9  EOR (&53,X)  41 53        AS
72DB  EOR #&43     49 43        IC
72DD  ORA &2850    0D 50 28     .P(
72E0  ???          57           W
72E1  ???          32           2
72E2  AND #&E7     29 E7        )g
72E4  ???          57           W
72E5  ???          32           2
72E6  AND &3832,X  3D 32 38     =28
72E9  ???          F2           r
72EA  ???          52           R
72EB  PLP          28           (
72EC  ???          32           2
72ED  AND (&29),Y  31 29        1)
72EF  ???          3A           :
72F0  SBC (&0D,X)  E1 0D        a.
72F2  ORA (&B0,X)  01 B0        .0
72F4  ???          2F           /
72F5  EOR #&3D     49 3D        I=
72F7  AND (&31),Y  31 31        11
72F9  ???          3A           :
72FA  ???          E7           g
72FB  ???          4F           O
72FC  ???          3F           ?
72FD  ???          57           W
72FE  ???          32           2
72FF  ???          3C           <
7300  BRK          00           .
7301  BRK          00           .
7302  BRK          00           .
7303  BRK          00           .
7304  BRK          00           .
7305  BRK          00           .
7306  BRK          00           .
7307  BRK          00           .
7308  BRK          00           .
7309  BRK          00           .
730A  BRK          00           .
730B  BRK          00           .
730C  BRK          00           .
730D  BRK          00           .
730E  BRK          00           .
730F  BRK          00           .
7310  BRK          00           .
EDIT2: Updated the attached listing.
Last edited by lurkio on Sun Oct 17, 2021 3:37 am, edited 1 time in total.
enh
Posts: 13
Joined: Fri Oct 08, 2021 1:56 am
Contact:

Re: Sphinx Adventure

Post by enh »

lurkio wrote: Sat Oct 16, 2021 9:46 pm
enh wrote: Sat Oct 16, 2021 6:32 pm ... if someone already has version 2 lying around in text format
I didn't, but I just created this version by removing all the sneaky VDU-disabling control codes (etc.) that had been embedded in the tokenised version of the program
Awesome, thank you! There are a lot more differences than I was expecting. I'm not sure whether v2 was crunched better because there was a better tool, or manually to make it fit the Electron, but I've started undoing the whitespace/crunch differences, and when I have a nice clean diff I'll post it. (There are certainly some changes that weren't done by a machine, like PROCp, where I actually did something similar in my C rewrite just to stop typing out the same code multiple times...)
lurkio wrote: (The machine code shown in your hex dump just temporarily disables the screen and then essentially types in *BASIC and PAGE=&1B00 and OLD and RUN, but it does so in a rather weird way by intercepting RDCHV for some reason.)
D'oh! It didn't even occur to me it might be machine code, and my 6502's not nearly advanced enough for me to recognize it. Thanks!
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

I was a bit overzealous with my abbreviating. I've updated the listing attached to my previous post.

:oops:
enh
Posts: 13
Joined: Fri Oct 08, 2021 1:56 am
Contact:

Re: Sphinx Adventure

Post by enh »

Okay, after much diff(1)ing and removal of irrelevancies, here's my complete list of differences between versions 1 and 2 of Sphinx Adventure, in case I'm not the only person on the planet who cares... (When I've finished replacing all the "crunched" variable names I'll post again with the complete list for variables and procedures/functions. And if anyone happens to know why the "dwarf turn counter" is called S, let me know! I'm assuming it's not mnemonic at all and just "the letter next to T, which is the global turn counter"?)

Code style differences

Version 2 had to run on the Electron, which didn't have the 1KiB MODE 7, so memory savings were needed. Tricks used included:

1. Using `DATA 1,,,2` instead of `DATA `1,0,0,2`.
2. Using `IF cond ELSE action` instead of `IF cond THEN GOTO next_line ELSE action`.
3. Using `ENDPROC` multiple times in a `PROC` instead of `GOTO endproc_line`.
4. Using `IF cond line_number` instead of `IF cond THEN GOTO line_number`.

Interestingly, 2 and 3 actually seem like better style in addition to taking less memory and running faster!

Material differences

The following differences are given in line number order. 3 (initial lamp fuel), 6 (axe probability), 15 (pit probability), 16 (forest exit probability), and 17 (hollow voice probability) are the only changes that materially affect gameplay.

1. The full-stop was lost from location 25: "in a steep passage" instead of "in a steep passage.". This seems like it's probably an accident rather than a desparate attempt to save one last byte :-)
2. The introductory page shown by the subroutine at line 249 of version 1 is missing in version 2. In version one the game starts with "WELCOME TO THE SPHINX ADVENTURE" // "GOOD LUCK IN YOUR EXPLORATIONS HERE!!" // "Try to find all the treasure and take it to the sphinx.". Since there's no introductory page, there's also no need for the "PRESS ANY KEY TO CONTINUE" before the game starts in version 2.
3. The lamp starts with less fuel: 50 turns rather than 150.
4. Many of the messages stored as data are different, presumably to save space because the vast majority seem better in version 1. (See separate section for the full comparison.)
5. Hard-coded messages are similarly different too. (See separate section for the full comparison.)
6. The probability of an axe hitting you changed from 95% to 90%. Since this saves a byte (`0.95` versus `0.9`), it's unclear whether this was game balancing or space saving or both. Though if it were all about space saving, I'd have expected just `.9` in version 2.
7. There are two blank lines before the prompt in version 1, which makes text scroll off the screen faster than version 2, which only has one blank line.
8. The error message for an empty command went from "What?" to "Eh?". I call this out specially because Sphinx Adventure saying "Eh?" amused me greatly as a child, given my own initials.
9. Messages such as "I don't understand" in version 2 get a trailing "!" or "?" as appropriate.
10. The handler for the verb "fill" was changed to report a better error if you don't say what you want to fill; version 1 says "I see no here.", but version 2 says "I can't apply that.".
11. The yes/no quit option was changed to c/r for continue/restart.
12. Trivial but interesting, apparently as an optimization `READ MAP` changed to `READ M$`, with `VAL` only called if necessary. As an aside, there's a lot less use of static integer variables in Sphinx Adventure than I remember from most BBC BASIC code of the time; the surrounding `FOR` loop, for example, uses `J` rather than `J%`.
13. The text introducing the list of exits in each location changed from "There are exits to the " to "There are exits ".
14. The `REM PMF` author credit on line 297 disappeared when the line was removed, and wasn't re-added anywhere else.
15. In version 1, there was a 50-50 chance of falling into a pit when wandering around with your lamp off. In version 2, you always fall into a pit.
16. The forest at the start of Sphinx Adventure is just one location with random exits --- any move in any direction may take you out of the forest and to the end of the road. In version 1, the probability of moving out of the forest on any move is 75%. In version 2, it's 70%. Again, this comes with a code size saving: `0.75` versus `.7`.
17. In version 1, "A hollow voice whispers diaxos" only 50% of the time. In version 2, it always does.
18. The code to output "You have scored ..." was changed slightly to reduce code size (0 is no longer a special case with a separate hard-coded message).
19. The death message was shortened from "Oh dear you seem to have been killed !" to "You have been killed !", and lost the display of the number of turns taken.
20. The implementation of FNC() to strip whitespace was simplified by adding a space to the start and end of the string, so that BASIC's REPEAT loop could be used where a while loop would be more natural, and where version 1 special-cased strings that don't start or end with a space.
21. The implementation of FNCV() to lower-case everything switched (like other places in the code) from using a conditional and arithmetic to taking advantage of ASCII and just using bitwise operations instead; here `OR 32` to set the single bit that's the difference between uppercase and lowercase in ASCII.
22. The new PROCp() (and its internal helper PROCpp()) factor out a lot of repetition in the original for pretty-printing text with word breaks.
23. The two subroutines at the end of version 1 (for the "The X eats the Y and runs away." and "The troll snatches your X and runs away." messages) were inlined into their sole call sites.

Message differences
Here are all the messages that changed, with version 1 first and version 2 second. With the possible exception of the Bugs Bunny reference which kind of takes you out of the fantasy world, the version 1 messages seem quite a lot better written, with saved bytes really being the only thing in version 2's favor.

Data messages
You're not carrying anything. -> You don't have anything.
I don't understand the word -> I don't understand
You're currently holding -> You're holding
That made the goblins really mad! -> That made the goblins mad!
The bear is confused. He only wants to be your friend! -> The bear is confused.
The pirate dodges smartly away into the tunnels! -> The pirate dodges away!
The orc dodges and then growls ominously at you! -> The orc dodges and growls at you!
The rabbit hops aside and says NEEERH WHAT'S UP DOC ? -> The rabbit hops aside.
Nothing obvious happens! -> Nothing happens!
Well done! You vanquished a dragon with your bare hands! -> Well done! You vanquished the dragon!
The chest opens easily with the keys revealing many rubies. -> The chest opens revealing many rubies.
You open up the clam with the jack and many pearls roll out. -> You open up the clam and many pearls roll out.
A bridge now spans the -> A bridge spans the
Strange your lamp is brighter now! -> Your lamp is brighter now!
You can't! It's too wide to jump. -> It's too wide to jump.
Arrgh the bridge collapsed. -> Arrgh! The bridge collapsed.
The troll won't let you get by. -> The troll won't let you pass.
You can't! The safe door is shut. -> The safe door is shut.
ARRRGH! CRASH!! The rocks gave way and you rolled to the bottom of the rock slide. -> ARGH! The rocks gave way!
The crocodile snaps its jaws neatly biting your leg off. You bleed to death! -> The crocodile bites your leg off and you bleed to death!
The elephant is blocking the way. -> The elephant is in the way.
Your matches flare up making a lot of smoke. -> Your matches make a lot of smoke.
The serpent starts to cough violently and you get thrown out. -> The serpent starts coughing and you get thrown out.
You set off in the boat. Suddenly a sea-serpent leaps from beneath the waves and swallows you! -> You set off in the boat.Suddenly a sea-serpent leaps out and swallows you!
The fairy king appears, hands you a mithril ring, bows and slips away. -> The fairy king appears briefly and hands you a mithril ring
The mouse runs around refusing to be caught. -> The mouse refuses to be caught.
The sword kills the dragon. Then both sword and dragon fade away until only the dragon's teeth remain. -> The sword kills the dragon but then melts away. Only the dragon's teeth remain.
The stake pierces the vampire's chest he screams and is dispersed on the wind. -> The stake kills the vampire!
The vampire leaps on you and drains your blood. -> The vampire drains your blood.
Suddenly a huge bird swoops down snatches the food and carries you across the swamp. -> A huge bird swoops down and carries you across the swamp.
What do you want to do to the -> What about the,

Code messages
The goblins suddenly leap upon you and tear you limb-from-limb! -> The goblins suddenly leap on you tearing you limb-from-limb!
IT'S VERY DARK. IF YOU MOVE YOU MAY FALL INTO A PIT. -> It's very dark! (Ironically given the need to save space, there are two copies of this message in the code!)
I'm sorry. I can't understand more than two words at a time. -> I'm sorry. I can only understand two words at a time.
You are kneeling down. -> You're kneeling down.
You dont want to quit already do you? yes or no? -> Press C to continue or R to restart.
I can't, you're on your own. To move use directions such as N,S or E. I can understand simple instructions. These statements should be in the form <verb> <noun> separated by a space. If you get stuck try something completely different. By the way magic is quite useful! -> You're on your own.
There was a very loud creaking sound then! -> There was a loud creaking sound!
You have nothing to put it in, so it runs away through your fingers. -> It runs away through your fingers.
You can't carry anything more, you'll have to drop something first. -> You can't carry any more
The bear growls and chases the orc away. -> The bear chases the orc away.
The ogre catches the axe and slices you in two with it. -> The ogre catches the axe and slices you in two
The troll ducks, picks up the fallen axe and kills you with a single blow. -> The troll ducks, picks up the axe and kills you with it.
The sword kills the ogre but then melts away. -> The sword kills the ogre and melts away.
The only thing it wants to eat is, possibly, YOU! -> The only thing it wants to eat is YOU!
The books tell of a land across the water. -> The books tell of an island far away!
Your bottle is now full of water. -> Your bottle is now full.
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

enh wrote: Sat Oct 23, 2021 7:58 pm here's my complete list of differences between versions 1 and 2 of Sphinx Adventure
Nice analysis!

I hadn't looked at any Electron versions of Sphinx Adventure before, so I just had a quick look at the Electron tape version from StairwayToHell.com, and it seems to be different yet again -- it seems to be even more abridged than what we've been calling "Version 2".

Here's a listing of the Electron tape version of Sphinx Adventure:

Elk tape Sphinx.txt
(21.96 KiB) Downloaded 83 times

:idea:
enh
Posts: 13
Joined: Fri Oct 08, 2021 1:56 am
Contact:

Re: Sphinx Adventure

Post by enh »

lurkio wrote: Sun Oct 24, 2021 12:07 am
I hadn't looked at any Electron versions of Sphinx Adventure before, so I just had a quick look at the Electron tape version from StairwayToHell.com, and it seems to be different yet again -- it seems to be even more abridged than what we've been calling "Version 2".

Here's a listing of the Electron tape version of Sphinx Adventure...
Oh, interesting! Thanks, I'll compare that too, since that's the version I actually knew as a kid...

(Funnily enough I was asking myself earlier today whether the BBC BASIC2 ROM differed from the Electron BASIC2 ROM at all, but they both have the same md5sum when I downloaded them from stairwaytohell. I don't have anything to investigate there, but "nature abhors a vacuum".)
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

enh wrote: Sat Oct 23, 2021 7:58 pm I can't, you're on your own. To move use directions such as N,S or E. I can understand simple instructions. These statements should be in the form <verb> <noun> separated by a space. If you get stuck try something completely different. By the way magic is quite useful!
->
You're on your own.
Surely the unkindest cut of all! Shame.

:!:
enh
Posts: 13
Joined: Fri Oct 08, 2021 1:56 am
Contact:

Re: Sphinx Adventure

Post by enh »

lurkio wrote: Sun Oct 24, 2021 5:29 pm
enh wrote: Sat Oct 23, 2021 7:58 pm I can't, you're on your own. To move use directions such as N,S or E. I can understand simple instructions. These statements should be in the form <verb> <noun> separated by a space. If you get stuck try something completely different. By the way magic is quite useful!
->
You're on your own.
Surely the unkindest cut of all! Shame.
I never got far enough as a kid playing on my Electron to find this, but there's far worse... It turns out that the "DAVE KNEW W LANE" anagram was chopped in the Electron version; enough was left to make no sense ("DAVE KNEW"), but not enough was left to actually work as a hint. You have to wonder whether the person who shrunk Sphinx Adventure for the Electron actually played the game!

Anyway, here's my updated three-way comparison:

Differences between versions
There are three versions of Sphinx Adventure. Version 1 was the original
release (and actually called itself "V1" in a code comment), version 2
was the BBC disk release (with the "V1" comment removed), and what this
document calls version 3 was the Electron tape release.

Code style differences
Most of the changes in versions 2 and 3 were to save space. Version 3 in
particular had to run on the Electron, which didn't have the 1KiB MODE 7,
so drastic memory savings were needed. Tricks used included:

1. Using `DATA 1,,,2` instead of `DATA `1,0,0,2`.
2. Using `IF cond ELSE action` instead of `IF cond THEN GOTO next_line ELSE action`.
3. Using `ENDPROC` multiple times in a `PROC` instead of `GOTO endproc_line`.
4. Using `IF cond line_number` instead of `IF cond THEN GOTO line_number`.
5. Combining multiple lines with `IF` statements into one `IF ... ELSE IF ... ELSE IF ...` line.

Interestingly, techniques 2 and 3 actually seem like better style in
addition to taking less memory and running faster! 6 also runs faster,
but given that BASIC2 didn't have multi-line `IF` statements, the
resulting long lines can be quite hard to read.

Funnily enough, the Electron version still requests MODE 7 --- if the
Electron had had MODE 7, the Electron version wouldn't have needed such
drastic changes to the location descriptions!

Material differences
The following differences between versions 1 and 2 -- see later for
version 3 -- are given in line number order. 3 (initial lamp fuel),
6 (axe probability), 15 (pit probability), 16 (forest exit probability),
and 17 (hollow voice probability) are the only changes that materially
affect gameplay.

1. The full-stop was lost from location 25: "in a steep passage" instead of "in a steep passage.". This seems like it's probably an accident rather than a desparate attempt to save one last byte :-)
2. The introductory page shown by the subroutine at line 249 of version 1 is missing in version 2. In version one the game starts with "WELCOME TO THE SPHINX ADVENTURE" // "GOOD LUCK IN YOUR EXPLORATIONS HERE!!" // "Try to find all the treasure and take it to the sphinx.". Since there's no introductory page, there's also no need for the "PRESS ANY KEY TO CONTINUE" before the game starts in version 2.
3. The lamp starts with less fuel: 50 turns rather than 150. Rubbing the lamp still resets it to 150 turns though.
4. Many of the messages stored as data are different, presumably to save space because the vast majority seem better in version 1. (See separate section for the full comparison.)
5. Hard-coded messages are similarly different too. (See separate section for the full comparison.)
6. The probability of an axe hitting you changed from 95% to 90%. Since this saves a byte (`0.95` versus `0.9`), it's unclear whether this was game balancing or space saving or both. Though if it were all about space saving, I'd have expected just `.9` in version 2. (Version 3 consistently removes the leading 0s from all probabilities.)
7. There are two blank lines before the prompt in version 1, which makes text scroll off the screen faster than version 2, which only has one blank line.
8. The error message for an empty command went from "What?" to "Eh?". I call this out specially because Sphinx Adventure saying "Eh?" amused me greatly as a child, given my own initials.
9. Messages such as "I don't understand" in version 2 get a trailing "!" or "?" as appropriate.
10. The handler for the verb "fill" was changed to report a better error if you don't say what you want to fill; version 1 says "I see no here.", but version 2 says "I can't apply that.".
11. The yes/no quit option was changed to c/r for continue/restart.
12. Trivial but interesting, apparently as an optimization `READ MAP` changed to `READ M$`, with `VAL` only called if necessary. As an aside, there's a lot less use of static integer variables in Sphinx Adventure than I remember from most BBC BASIC code of the time; the surrounding `FOR` loop, for example, uses `J` rather than `J%`.
13. The text introducing the list of exits in each location changed from "There are exits to the " to "There are exits ".
14. The `REM PMF` author credit on line 297 disappeared when the line was removed, and wasn't re-added anywhere else.
15. In version 1, there was a 50-50 chance of falling into a pit when wandering around with your lamp off. In version 2, you always fall into a pit.
16. The forest at the start of Sphinx Adventure is just one location with random exits --- any move in any direction may take you out of the forest and to the end of the road. In version 1, the probability of moving out of the forest on any move is 75%. In version 2, it's 70%. Again, this comes with a code size saving: `0.75` versus `.7`.
17. In version 1, "A hollow voice whispers diaxos" only 50% of the time. In version 2, it always does.
18. The code to output "You have scored ..." was changed slightly to reduce code size (0 is no longer a special case with a separate hard-coded message).
19. The death message was shortened from "Oh dear you seem to have been killed !" to "You have been killed !", and lost the display of the number of turns taken.
20. The implementation of FNC() to strip whitespace was simplified by adding a space to the start and end of the string, so that BASIC's REPEAT loop could be used where a while loop would be more natural, and where version 1 special-cased strings that don't start or end with a space.
21. The implementation of FNCV() to lower-case everything switched (like other places in the code) from using a conditional and arithmetic to taking advantage of ASCII and just using bitwise operations instead; here `OR 32` to set the single bit that's the difference between uppercase and lowercase in ASCII.
22. The new PROCp() (and its internal helper PROCpp()) factor out a lot of repetition in the original for pretty-printing text with word breaks.
23. The two subroutines at the end of version 1 (for the "The X eats the Y and runs away." and "The troll snatches your X and runs away." messages) were inlined into their sole call sites.

Version 3 has only trivial code differences. The only "interesting" ones being two changes related to size reduction:

1. The `DATA ,location description.,` style changed to `DATAlocation description`, so the code changed to not throw away an empty string, and to manually add back the missing full stop.
2. The duplication in the "The walls are very hot"/"The walls are steaming" messages in code was factored out to remove the duplication of "The walls are ".

Those two changes are right next to each other in the source, and the first was a required change, which perhaps explains why the second minor saving was made while other larger chunks of duplication (such as the "There's no X here." code) remained intact.

Location descriptions
There are no differences in the location descriptions between version
1 and version 2 except for the removal of the full stop from the end of
"in a steep passage", which I assume was accidental.

The changes in version 3 are brutal, and affect just about every location
(exceptions being the ones that were already very short, such as "at a
T-junction" or "in the green room". Nevertheless, here's the complete list:

Code: Select all

at the end of a road, outside a building. All around is forest. -> at the end of a road by a building
in the building, obviously an old blacksmith's forge. -> in the old forge
in the forest. -> in the forest
on the road, a small raised path leads east, the road runs north-south. -> on the road. A small raised path leads east
on the top of a mountain. In the distance a small building can be seen. All around you is dense forest. A road leads north. -> on the top of a mountain. In the distance a small building can be seen. A road leads north
on a narrow path which seems to descend to the east. -> on a narrow path which descends to the east
in the valley of doom. The path disappears down a small shaft here. Strange echoes can be heard from below. -> in the valley of doom. The path enters a shaft
in the hall of spirits. Ghostly laughs and howls can be heard echoing around the walls. The air is full of dust and cobwebs. -> in the hall of spirits. Ghostly laughs can be heard
at a cross-roads in the tunnels. A chill wind blows from the north. -> at a cross-roads
in the Sorcerer's lair. The walls resound with the sound of long forgotten spells. -> in the Sorcerer's lair. The walls resound with the sound of long forgotten spells
in the sword chamber, a large stone sits in the middle of the floor. -> in the sword chamber
by a lake which stretches far away to the horizon. The far side can only be dimly seen. -> by a lake. The far side can be dimly seen
at the edge of a deep crack, it is too wide to jump. -> by a deep crack, it is too wide to jump
in the smelting room. A large furnace sits in the corner. -> in the smelting room
in the oriental room, beside the chasm. The walls are decorated with chinese paintings. -> in the oriental room by the chasm
in a very large room, the floor is covered with straw. -> in a large straw-filled room
in the old library -> in the library
in the bank vault. An enormous safe is set into the ceiling. There is no obvious handle. -> in the bank vault. A large safe is set into the ceiling. There is no handle
at the troll bridge. A sign says 'STOP! TROLL OPERATED TOLL BRIDGE' -> at the troll's bridge. A sign says 'STOP'
in a very small, dark room. Full of broken rocks. A sign says DANGER FALLING ROCKS. -> in a room with a sign saying 'FALLING ROCKS'
in a large cave. It smells of bears. -> in the bear's cave
in a large room full of huge furniture. -> in a room full of huge furniture
in the slimy passage. A green, sticky slime crawls all around you. -> in a slimy passage
in a very small rocky cavern containing many stalactites. -> in a very small rocky cavern
in a tiny room. On the wall it says 'Be humble in the eyes of the sphinx and use your brains!' -> in an alcove. Here it says 'Be humble before the sphinx'
in the dragon's lair. The bones of many adventurers lie here. -> in the dragon's lair
in a narrow steep-sided passage. The roof can't be seen by lamp-light. -> in a narrow passage. The roof can't be seen
at the DEAD-END-DIAMOND-MINE. -> at the diamond mine
in the oyster room. A very cold draft comes from below. -> in the oyster room
on the edge of a vast glacier. It is riddled with deep crevasses too wide to jump! -> on the edge of a vast glacier
on a high plateau. The bridge leads back across the glacier. -> on a high plateau
in an old pirates hideout. Many seafaring relics lie here. -> in the pirates hideout
on the edge of the desert. A huge sphinx sits here. -> in front of a huge sphinx
at a cross in the tunnels. -> at a crossroads
wandering about in the iron passages. Your compass directions seem to be rather confused. -> wandering about in the iron passages
at the foot of a hill. A castle can be seen at the top of it. -> at the foot of Castle Hill
in the castle gateway. The castle has obviously been left derelict for many years as the walls are begining to crumble away. -> in the castle gateway
in an immense courtyard. -> in the courtyard
in the dungeons. The air here is very musty. The floor is covered in dust and cobwebs cling to you as you move. -> in the dungeons
in the Count's dining room. The decorations on the walls here are the blood stains of some of his unfortunate victims! -> in the Count's blood stained dining room
in the ballroom. The music of the orchestras which used to play here still lingers on. -> in the ballroom
in the main hall. The Gnomes are obviously very untidy! They are also very shy and slip silently away as you enter. -> in the main hall
in the dairy. There is a mouth-watering smell here of buttermilk and cheese. -> in the dairy
in the pit. It is small,dark and very unpleasant here. -> in a pit
in the rainbow room. The walls are decorated with all the colours imaginable. -> in the rainbow room
in a large chamber decorated in the style of the maharaja's palace. -> in a large chamber
in a tunnel hewn out of the rock by a giant explosion. -> in a tunnel hewn out of the rock
in a room full of bottles of chemicals. This is the alchemist's store. The smell of sulphur is overpowering. -> in the alchemist's store
in a very tight passageway. A cool damp wind blows from the south. -> in a very tight passageway
in a dark damp passageway. The ground is becoming a little soggy here. -> in a damp passageway. The ground is soggy
in the Everglades. It is rather swampy here and the mosquitoes are real pests! -> in the Everglades. It is rather swampy
in a dark damp passageway. The ground is a little soggy here. -> in a dark passageway. The ground is damp
in the alchemist's laboratory. There's a powerful sulphurous odour! -> in the alchemist's laboratory
in the music room. Beautiful melodies echo all around. -> in the music room
on the yellow brick road. Well I think it was yellow once upon a time but it has got rather muddy now. -> on Wide LANE
in an immense canyon. The sides reach upwards as far as the eye can see. -> in a canyon. The sides reach upwards out of sight
in a small shrine obviously devoted to some fairy chief as pictures of him decorate all the walls. -> in a small shrine devoted to a fairy chief
in a patch of quicksand. Luckily though some kind previous adventurer has put a plank down so you can go on safely. -> in a patch of wet sand
at a dead_end. Oh dear you seem to have struggled through that quicksand for nothing. -> at a dead-end
at yet another dead end. -> at a dead-end
at a dead end. You'll have to follow the yellow brick road once more. -> at a dead end
at the end of the yellow brick road. I'm afraid you can't go any further in this direction as the rest of the road hasn't been built yet. -> at the end of the yellow brick road
in a fairy grotto. It is very beautiful but seems to be deserted. -> in a fairy grotto. It seems to be deserted
on the east shore. The mountains rise sharply all around the cove. -> on the east shore. Mountains rise all around
in the wizard's spell-chamber. When you entered the wizard was here mumbling about some lost spell-books. He saw you grunted something and vanished. -> in the wizard's spell-chamber
in the west antechamber to the inner sanctum. -> in the west antechamber
in the inner sanctum. Not many have passed this way before. One intrepid adventurer seems to have written some graffiti ''DAVE KNEW W LANE''. -> in the inner sanctum. On the wal it says 'DAVE KNEW'
in the serpent's stomach. Oh dear you seem to have become the monster's lunch. -> in the serpent's stomach
at the bottom of the rock slide. It is cramped and airless here. There is no obvious way to get out. -> at the bottom of the rock slide
The "DAVE KNEW" change is especially unfortunate, since it breaks the "kneel and wave" anagram (_and_ introduces a typo).

Interestingly, one message actually got longer!

Code: Select all

at a fork in the path. Behind you is the troll bridge. -> at a fork in the path. Behind you is the troll's bridge
Message differences
Here are all the messages that changed, with version 1 first and version
2 second. With the possible exception of the Bugs Bunny reference which
kind of takes you out of the fantasy world, the version 1 messages seem
quite a lot better written, with saved bytes really being the only thing
in version 2's favor.

Data messages
These are the version 1 to version 2 changes. There were no data message changes from version 2 to version 3.

Code: Select all

You're not carrying anything. -> You don't have anything.
I don't understand the word -> I don't understand
You're currently holding -> You're holding
That made the goblins really mad! -> That made the goblins mad!
The bear is confused. He only wants to be your friend! -> The bear is confused.
The pirate dodges smartly away into the tunnels! -> The pirate dodges away!
The orc dodges and then growls ominously at you! -> The orc dodges and growls at you! 
The rabbit hops aside and says NEEERH WHAT'S UP DOC ? -> The rabbit hops aside.
Nothing obvious happens! -> Nothing happens!
Well done! You vanquished a dragon with your bare hands! -> Well done! You vanquished the dragon!
The chest opens easily with the keys revealing many rubies. -> The chest opens revealing many rubies.
You open up the clam with the jack and many pearls roll out. -> You open up the clam and many pearls roll out.
A bridge now spans the -> A bridge spans the
Strange your lamp is brighter now! -> Your lamp is brighter now!
You can't! It's too wide to jump. -> It's too wide to jump.
Arrgh the bridge collapsed. -> Arrgh! The bridge collapsed.
The troll won't let you get by. -> The troll won't let you pass.
You can't! The safe door is shut. -> The safe door is shut.
ARRRGH! CRASH!! The rocks gave way and you rolled to the bottom of the rock slide. -> ARGH! The rocks gave way!
The crocodile snaps its jaws neatly biting your leg off. You bleed to death! -> The crocodile bites your leg off and you bleed to death!
The elephant is blocking the way. -> The elephant is in the way.
Your matches flare up making a lot of smoke. -> Your matches make a lot of smoke.
The serpent starts to cough violently and you get thrown out. -> The serpent starts coughing and you get thrown out.
You set off in the boat. Suddenly a sea-serpent leaps from beneath the waves and swallows you! -> You set off in the boat.Suddenly a sea-serpent leaps out and swallows you!
The fairy king appears, hands you a mithril ring, bows and slips away. -> The fairy king appears briefly and hands you a mithril ring
The mouse runs around refusing to be caught. -> The mouse refuses to be caught.
The sword kills the dragon. Then both sword and dragon fade away until only the dragon's teeth remain. -> The sword kills the dragon but then melts away. Only the dragon's teeth remain.
The stake pierces the vampire's chest he screams and is dispersed on the wind. -> The stake kills the vampire!
The vampire leaps on you and drains your blood. -> The vampire drains your blood.
Suddenly a huge bird swoops down snatches the food and carries you across the swamp. -> A huge bird swoops down and carries you across the swamp.
What do you want to do to the -> What about the,
Code messages
These are the version 1 to version 2 changes. There were no code message changes from version 2 to version 3.

Code: Select all

The goblins suddenly leap upon you and tear you limb-from-limb! -> The goblins suddenly leap on you tearing you limb-from-limb!
IT'S VERY DARK. IF YOU MOVE YOU MAY FALL INTO A PIT. -> It's very dark! (Ironically given the need to save space, there are two copies of this message in the code!)
I'm sorry. I can't understand more than two words at a time. -> I'm sorry. I can only understand two words at a time.
You are kneeling down. -> You're kneeling down.
You dont want to quit already do you? yes or no? -> Press C to continue or R to restart.
I can't, you're on your own. To move use directions such as N,S or E. I can understand simple instructions. These statements should be in the form <verb> <noun> separated by a space. If you get stuck try something completely  different. By the way magic is quite useful! -> You're on your own.
There was a very loud creaking sound then! -> There was a loud creaking sound!
You have nothing to put it in, so it runs away through your fingers. -> It runs away through your fingers.
You can't carry anything more, you'll have to drop something first. -> You can't carry any more
The bear growls and chases the orc away. -> The bear chases the orc away.
The ogre catches the axe and slices you in two with it. -> The ogre catches the axe and slices you in two
The troll ducks, picks up the fallen axe and kills you with a single blow. -> The troll ducks, picks up the axe and kills you with it.
The sword kills the ogre but then melts away. -> The sword kills the ogre and melts away.
The only thing it wants to eat is, possibly, YOU! -> The only thing it wants to eat is YOU!
The books tell of a land across the water. -> The books tell of an island far away!
Your bottle is now full of water. -> Your bottle is now full.
(If I'm going to keep posting here, I really need to knock up a quick markdown -> BBCode filter!)
User avatar
lurkio
Posts: 4351
Joined: Wed Apr 10, 2013 12:30 am
Location: Doomawangara
Contact:

Re: Sphinx Adventure

Post by lurkio »

enh wrote: Sun Oct 24, 2021 9:37 pm
lurkio wrote: Sun Oct 24, 2021 5:29 pm
enh wrote: Sat Oct 23, 2021 7:58 pm I can't, you're on your own. To move use directions such as N,S or E. I can understand simple instructions. These statements should be in the form <verb> <noun> separated by a space. If you get stuck try something completely different. By the way magic is quite useful!
->
You're on your own.
I never got far enough as a kid playing on my Electron to find this
It's the message you get when you type HELP.

enh wrote: Sun Oct 24, 2021 9:37 pmbut there's far worse... It turns out that the … anagram was chopped in the Electron version; enough was left to make no sense … but not enough was left to actually work as a hint. You have to wonder whether the person who shrunk Sphinx Adventure for the Electron actually played the game! ... The … change is especially unfortunate, since it breaks the … anagram (_and_ introduces a typo).
Very odd! But it's possible that whoever shrank Sphinx for the Elk -- it seems increasingly unlikely that it was Paul Fellows! -- had played the game through but had just missed the significance of the graffiti. [EDIT: But see joachim’s post downthread.] I know from experience that that sort of thing is possible because I did it myself when writing a step-by-step walkthrough for Sphinx (using someone else's earlier walkthrough as a reference) -- I completely failed to realise that the graffiti was a hint!

enh wrote: Sun Oct 24, 2021 9:37 pmThe changes in version 3 are brutal, and affect just about every location
Indeed! The swingeing cuts to the text seem all the more surprising when you consider that they might not have been needed after all: there might have been a way to get a larger version of Sphinx to run on an Electron without having to cut or alter any text whatsoever -- or at least that seems to have been the promise of the odd little program that was printed in the June 1985 issue of Acorn User, which claimed to be able to run what I guess was a BBC Micro version of Sphinx on an Electron by squeezing the game into a small user-defined text window. It sounds intriguing but I haven't been able to get it to work. For one thing, I don't know which version of Sphinx you're supposed to use it on...

http://everygamegoing.com/litem/Acorn-User-85-06/3375/

:?:

[EDIT: I’ve now got the Acorn User program working (sort of), but it’s not exactly a pleasant gameplay experience!: https://stardot.org.uk/forums/viewtopi ... 59#p339259]
Last edited by lurkio on Wed Oct 27, 2021 9:27 am, edited 3 times in total.
Post Reply

Return to “8-bit acorn software: classic adventure games”