JonAbbott wrote: ↑
Wed Feb 27, 2019 10:46 am
I'll have to do some debugging to figure out why StrongEd is breaking things, my guess is its hooking into FileV
The issue is FileV vector related and is caused by ADFFS being unable to RMLoad BASIC26.
The reason it can't load BASIC26 is because it can't reset the FileV vector to point back to RISC OS - it's pointing at one of StrongEd Modules. The consequence of this is the OS_File to load the Module gets passed down the Module chain and ends up in the protection module, which decrypts it - obviously BASIC26 isn't encrypted as it's an ADFFS Module.
Once BASIC26 fails to load, the error gets passed up the Error handler chain until it hits ADFFS which then attempts to shutdown the JIT. The protection Module then locks the machine as it fails a protection check to ensure it was called from BASIC.
I can fix the hang in each game by modifying the protection Module finalise code, but I don't think there's anything I can do about the underlying issue of not being able to reset the filesystem vectors, before loading files.
Long story short, ADFFS needs to be loaded with CLIV, ByteV, WordV, FileV, ArgsV, BGetV, BPutV, GBPBV and FindV pointing to the OS so it can reset them around internal file handling.
Games affected by this issue:
F1005601 Break 147 & Superpool (1991) (The Fourth Dimension)
F1007801 Chocks Away (1990) (The Fourth Dimension)
F1024501 Grievous Bodily 'ARM (1991) (The Fourth Dimension)
F1018701 Haunted House (1993) (The Fourth Dimension)
F1026801 Olympics, The (1990) (The Fourth Dimension)
F1027401 Pandora's Box (1991) (The Fourth Dimension)
F1028601 PowerBand (1990) (The Fourth Dimension) (v1.00) (no package for this version)
F1031801 Saloon Cars (1991) (The Fourth Dimension)
F1031901 Saloon Cars Deluxe (1992) (The Fourth Dimension)
F1035101 Stunt Racer 2000 (1993) (The Fourth Dimension)
F1000501 Virtual Golf (1993) (The Fourth Dimension)
F1039701 X-Fire (1992) (The Fourth Dimension)