Quantcast
Channel: stardot.org.uk
Viewing all articles
Browse latest Browse all 2528

8-bit acorn hardware • Re: PiBridge 2.1-dev pushed to github

$
0
0
Thought I'd make a quick post here to share details of some recent awesome updates that @ch12925 has made for me.

I have been trying to get as many games as possible to run from the econet PiFS without having to patch the living daylights out of each game. In particular, I've been looking at a number of disc based games (both DFS & ADFS) that access the disc during game play to see if these will also work from econet. Along the way, there have been a few challenges:

Root Directory
Many games expect to run directly off the root directory of the disc. This is fine when each game has its own disc, but can become a problem when sharing the same PiFS disc. As a very minimum, the root directory can become very large and unwieldy, but probably more of an issue is that different games may use the same filename causing a conflict when both need to be saved to the root.

The Level 9 graphical adventure games are a great example of this, where each different game uses exactly the same filenames. We have overcome this problem by creating a new, per user, option to remap the root of the disk as being the User Home Directory. So, for example, with the Level 9 adventure game Lancelot, you can create a directory called $.Games.Level9.Lancelot on your PiFS and then copy all the games into that directory. Then create a new user called Lancelot (*NEWUSER Lancelot), and use *SETHOME to point to the $.Games.Level9.Lancelot. The final (new) bit is to set the User Home Directory as the root. This is done with the new '*PRIV Lancelot C' command. Then, when you log in as Lancelot, you will be taken to the home directory, which will now also appear to be the root of the disc. The true root of the PiFS disc will not be visible to Lancelot.

Disc Number vs Disc Name
When using a full path name to access a DFS or ADFS file, you would typically enter something as follows:

Code:

*LOAD :0.P.Title
Here, the ':0' defines the drive number. However, this doesn't work with PiFS (or, I suspect, L3FS). Instead the econet fileserver expects the DISC NAME to be used instead of the DISC NUMBER. So, for example, PiFS would expect the format to be something like this:

Code:

*LOAD :Econet.P.Title
PiFS has now been updated to translate the DISC NUMBER to DISC NAME so that when trying to access a file using the DFS / ADFS pathnames it will still work on the PiFS. So, if you set up your virtual drive as 0Econet, any time a game tries to access disc :0, PiFS will change this on the fly to :Econet.

ANFS (Master) missing colon
For some odd reason, when trying to access drives with a single character name (eg when DISC NAME = '0'), ANFS will strip off leading ':', so instead of sending the following command to PiFS:

Code:

*LOAD :0.P.Title
which is trying to load the file 'Title' from directory 'P' of Disc '0', ANFS instead sends:

Code:

*LOAD 0.P.Title
and PiFS tries to load the file 'Title' from directory '0.P' of the currently selected Disc. That is totally wrong!

So, another configuration option has been added to PiFS, where PiFS will try to work out if the ':' has been stripped by ANFS, and if so, add it back in again. This configuration option is again a per user option, and is set with the '*PRIV <user> A' command. This command would normally be used in conjunction with the *PRIV <user> C' command, and must be used with care. It is possible that the colon has not been stripped by ANFS, and that '*LOAD 0.P.Title' is the correct command.

Note that there is a little wrinkle in the way the command is currently working, which means PiFS will only add the colon back in again if the start of the path is specifically '<SINGLE CHARCTER DRIVE NAME>.$'. Checking for '$' is too restrictive, and will hopefully be getting removed in the next update.

PAGE & Page Zero
The above PiFS changes make it much easier to get games running from Econet, but there are still a couple of things to be mindful of. Firstly, on the beeb, NFS sets PAGE to &1200, which is slightly higher than the safe minimum PAGE for DFS, which is &1100. Therefore games that use memory from PAGE &1100 may not work on NFS; particularly if NFS disc access is required during game play. This is less of an issue on the Master, where PAGE is &E00 for both DFS and NFS.

Games that run from ADFS on the beeb should be less of a problem, because PAGE for ADFS is &1D00, which is higher than the PAGE for NFS.

One further issue is that Page Zero addresses &90..&9F are set aside for Econet workspace. Games that are designed to run from DFS or ADFS may choose to use these addresses for their own purpose, corrupting the Econet workspace. If games are using any of the Page Zero addresses, then the game may need to be patched to use other addresses. I have had to do this with the Level 9 graphical adventure games, where the game loader was using address &97. This address was being overwritten by NFS, causing the loader to fail. I patched the loader to use address &66 instead.

Working / Not working Games
This is still very much a WIP, but here's the current status...

Working:
Level 9 adventures (requires patch): Lancelot, Knights Orc, Ingrids Back, TimeAndMagik, Gnome Ranger & Scape Ghost
Ozmoo based adventure games (like Zork, HHGTTG, Hollywood Hijinx etc)
Elite for Econet
White Light (for the Master)
Repton 3
Ravenskull
Battle Zone
Chuckie Egg
Manic Miner
Jet Set Willie
Ladybug
Phoenix
Citadel
Wordle

Not working:
Exile
Cholo
White Light (for the beeb)

Statistics: Posted by KenLowe — Sun Mar 10, 2024 2:47 pm



Viewing all articles
Browse latest Browse all 2528

Trending Articles