ADFFS 2.84 public beta

Discuss ADFFS development and download test releases
JonAbbott
Posts: 3059
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

ADFFS 2.84 public beta

Post by JonAbbott »

This update no longer requires EDID to be disabled ("disable_mode_changes" no longer required in CMDLINE/TXT) on a Pi as it uses GPU overlays to upscale the image. It "should" also work on any other GraphicsV driver that support hardware overlays.

Refer to this thread for the various OS issues/bugs raised during the development of this build. Although all of the issues have not yet been resolved, they're resolved enough in RISC OS 5.30 to support this build.

Pinebook laptops are currently unsupported due to this issue. I believe the nightly RISC OS build might have the patch to resolve it. The Pinebook Pro ROM from R-Comp has yet to be updated, ADFFS will trigger a hard-lock in the Pinebook Pro GraphicsV driver when loaded until the ROM is patched. This was reported to R-Comp along with the suggested fix, I await a response/updated ROM to continue testing.

As a general point, the Pinebook and Pinebook Pro video drivers are incomplete, neither support resolution changes or overlays, so do not meet the minimum requirement for ADFFS.

*Help ADFFS will confirm if the Overlay build has been loaded - you'll see "overlay" listed against the Module name.

Changes since 2.83
  • Removed some debug output from the JFD imager
  • When imaging a JFD, the check for the expected DiscRec is now performed in the initial GUI and it prompts if no floppy is inserted
  • Now resets the RunTypes when the ADFFS Module exits to their pre-loaded values
  • Modified imaging Archive so it can be used for package information
  • Now checks if CLib is in the RMA instead of simply checking if its already loaded, to allow ROM based CLib to be updated when ADFFS loads
  • GPU borders are now only cleared when the geometry changes and not written at every frame blit
  • VIDC20 writes to vertical registers were not exiting early if the value had not changed
  • Added GraphicsV overlay support
  • JFD imager now only sets "ID", "Disc number" and "Discs in set" if cached values were previously set
  • ADF imager now allows re-imaging of JFD to ADF and allows the filename to be specified
  • Dropped Low Vector RISC OS 5 support on ARMv5+
  • ADFFS now defaults to overlays if they're supported by the GPU driver
  • VIDC1 palette translation wasn't adjusting the physical colour to account for the fixed logical colour bits in 256 colours and was not ignoring the supremacy bit
  • VIDC1 and GraphicsV palette entries are now gamma corrected when emulating pre-RISC OS 3.5
  • Fixed an issue in Service_ChangeMode, which would fail to translate VIDC1 to VIDC20 on IOMD after calculating VMOD/RMOD due to register corruption
  • When intercepting an ADFS that does not have any floppies configured, it will no longer pass floppy DiscOp/MiscOp on and will instead either deal with them or raise appropriate errors
  • OS_CallASWI/R12 are now intercepted to allow C based ADFS Modules to be intercepted
  • Resolved an issue when checking if CLib is in the RMA, which might cause an unknown command error
  • Moved !RunTypes from !Run to Module Init and Module Exit
  • If ADFS is an active filesystem, it now checks if there are any open files on ADFS: and will refuse to load if there are
  • Fixed a crash introduced by OS_CallASWI/R12 interception
  • Temporarily switched overlay bank switching to be done via CallBack until the issues with the BCMVideo GraphicsV driver (Pi) are resolved. This unfortunately ruins quite a few games, but does reduce the hard-locks. Random stuck overlays do still occur though when the overlay is destroyed
  • The open file check will now RMReInit DOSFS if ADFS::*.$.!Boot.Loader is the only file held open on ADFS. This is a workaround for Pi builds that use ADFS as their main filing system
  • Verified sectors are now marked as protection sectors by the JFD imager
  • JFD imager GUI was updating the previous track instead of the current being processed, causing the wrong tracks to be visually flagged as bad or protection
  • added a manual flag to recording files to indicate a know protection sector read - useful where the protection expects an error
  • added a workaround for early WindowManager versions crashing if Wimp_GetRectangle is called when there are no buffered redraw changes
  • OS_Byte 19 now checks if Timer 0 is active on IOC / IOMD before frame-pacing (fixes Gribbly's Day Out)
  • Service_ModeExtension and Service_ModeChange were corrupting R12 while translating VIDC1 to VIDC20, potentially triggering an abort
  • IOC video memory is now unmapped during Service_ModeChange instead of Service_PreModeChange to avoid potential aborts when interrupt driven screen update code in games runs mid-mode change (fixes Quark on IOMD)
  • Discop's were failing for mounted floppy images, while creating a recording file
  • Overlay is now switched via an RTSupport thread
  • Overlays are now double buffered, not triple buffered
  • Fixed a register corruption issue in OS_Byte 19 introduced with 2.84h
  • JFD imager now compresses sector data in track chunks to improve Wimp updates/responsiveness
  • OS_Byte 114 state was not being stored correctly when storing the machine state prior to the JIT starting
  • ADFJoystickKeys was not checking for the end of the parameter list correctly, which could triggered a "number too large" error
  • GOARM3JIT no longer forces RISC OS 3.11 emulation if currently emulating RISC OS 3.50+ (fixes palette in Alone in the Dark)
  • GraphicsV driver wasn't destroying the open overlay when handing over to the hardware GraphicsV driver
  • Added aspect ratio overrides to the overlay size calculation, currently manually switched via: CTRL+SHIFT+5 (5:4 eg 320x256), CTRL+SHIFT+8 (8:5 eg 320x200)
  • Moved all overlay bank mapping into an RTSupport thread
  • *JITSHOWREGS would trigger an abort if the JIT hadn't been used in the current Appspace
  • *JITSHOWREGS now uses 640x480 16M to avoid the blitter being activated
  • If an error occurs when creating a GPU overlay, it now goes into 640x480 16M and displays a message. Previously it would shutdown the GraphicsV driver which would require ADFFS to be reloaded
  • Moved the JIT debug information to a separate GPU overlay and allowed it to be toggled on/off via CTRL-SHIFT-D
  • Overlays are now remapped at every VSync to work around an issue in BCMVideo which sometimes fails to map them into memory
  • JIT the log2 page size was incorrectly calculated, causing the current WimpSlot to be maxed to the JIT limit when the JIT started
  • JIT OS_Module 7 wasn't exiting early if VProtect wasn't loaded
  • ADFGo was setting R13 to the end of the JIT's Appspace, not the current Appspace end as set by the app
  • Moved code that get the GPU screen buffer address and size from the GraphicsV driver into Service_ModeChange (fixes Service_ModeExtension based modes when Overlays are used)
  • Added *ADFClipScreen to allow GPU's to clip the visible area on games that don't use bespoke modes to scale themselves to fill the screen
  • Visible overlay area wasn't using the last VIDC20 width/height set at VSync (fixes scaling issues in BloodLust and Bubble Impact)
  • All VIDC20 H/V registers, except cursor and sync, now trigger an overlay size/scale check
  • Added a sanity check to the overlay size (which normally uses HCR/VCR) to ensure it is at least the size of the visible VIDC20 display area (fixes Bubble Impact)
  • JIT hypervised Wimp_SlotSize wasn't accounting for Appspace starting at &8000 when capping the Appspace limit
  • JIT hypervised Wimp_Initialise wasn't restoring the CAO or relinking the app if the OS returned an error
  • ZIP extractor now uses <=32 as the filename terminator on the RISC OS side (fixes extracting a filename with a parameter after it)
  • MEMA wasn't performing JIT IMB correctly
Known issues
  • With the overlay builds the screen can sometimes appear to be blank when a game is started. This is an issue in BCMVideo which has been reported
  • If a WiFi stack is loaded (ROD or ROOL), SDIODriver will randomly get stuck in a race condition. This has been reported, but the root cause has yet to be identified

Script changes
  • Implemented a keyboard buffer flush prior to any key insertions across all scripts
  • F1057408 Play It Again Sam 4: Pharaohs Secret Tombs, The (1996) (ProAction) - Added HD install instructions
  • F1045301 Brian Clough's Football Fortunes (1992) (CDS Software) - Script added, with HD install instructions
  • F1022001 KerBang! (1991) (Eterna) - Added HD install instructions and modified to not require the floppy when run from HD
  • F1022501 Legend of the Lost Temple, The (1992) (Eterna) - Bugfixes now applied on all RISC OS versions
  • F1037801 Warlocks (1993) (Network 23) - Now prevents the game from altering Dynamic Area sizes
  • F1046301 Nosher (1992) (State of the Arc) - Script added, with HD install instructions
  • F1017901 Gribbly's Day Out (1992) (Coin-Age) - Added HD install instructions and rewritten game start-up to use an environment variable for paths
  • F1064001 Blaston (1991) (Eterna) - Added HD install instructions and now applies timing correction on all RISC OS versions, added an infinite strength cheat
  • F1029601 Quark (1993) (Oregan Developments) - Modified game code to not require the floppy and implemented bugfixes on all RISC OS versions.
    Added infinite lives and health cheats
  • F1038801 Wolfenstein 3D (1994) (Powerslave Software) - Bugfixes now applied on all RISC OS versions. Game no longer allocates all free memory to itself, potentially causing aborts when RMA allocation is required - it now allocates a maximum of 2MB. Removed the need to have disc 1 mounted when run from HD
  • F1021701 K.V. [v1.01] (1993) (High Risc Software Developments) - Fixed a bug that could cause an Abort when shelling out out to the desktop, caused by the game not waiting for the channel handler to shutdown. Added HD install instructions and now applies bug fixes on all RISC OS versions
  • F1071101 K.V. [v1.00] (1993) (High Risc Software Developments) - Added HD install instruction and now applies bug fixes on all RISC OS versions
  • Checked all scripts that set the OS version emulation, to ensure its reset before exiting
  • F1020101 Hostages (1990) (Superior Software) - Added HD install instructions. When HD installed all game code is now patched on 1st run, to correct the frame-pacing. Adjusted frame-pacing to match an A310
  • F1071601 Technodream (1998) (ProAction) - Added HD install instructions
  • F1050701 Pac-mania (1989) (Grandslam Entertainments) - Bugfixes now applied on all RISC OS versions. Added a delay to the level selection screen.
  • F1044701 Pac-mania [Learning Curve version] (1991) (Domark) - Added HD install instructions. Bugfixes now applied on all RISC OS versions. Added a delay to the level selection screen.
  • F1015701 Fireball II (1990) (Cambridge International Software) - Fireball II wasn't allocating enough Appspace
  • F1059201 Games Minipack Five: Fireball II (1990) (Cambridge International Software) - Fireball II wasn't allocating enough Appspace
  • F1022801 Lemmings 2: The Tribes (1994) (Krisalis Software) - Added HD install instructions
  • Adjusted games as detailed here to scale to fill the screen on overlay builds
  • F1019201 Hero Quest (1991) (Krisalis Software) - switched EventV to trigger sample playback via a CallBack
  • F1038800 Wolfenstein 3D (1994) (Powerslave Software) - corrected an unaligned write
  • Adjusted all scripts that have file type associations to use ADFBootFloppy with parameters
  • F1018701 Haunted House (1993) (The Fourth Dimension) - wasn't allocating enough sprite memory for the zoom tool to work
  • F1061101 Haunted House [SA version] (1999) (The Fourth Dimension) - added all the patches from F1018701
  • F1061501 Time Machine, The [SA version] (1998) (The Fourth Dimension) - added script
  • F1013001 Elite [v1.02] (1991) (Hybrid Technology) - Added HD install instruction and no longer remaps video memory, added instance checking.
  • F1064501 Elite [v1.14] (1999) (Acorn User) - Added HD install instruction and no longer remaps video memory
  • F1000901 Aldebaran (1993) (Evolution Trading) - was running the wrong version of alde2/4 for the physical CPU
Now release and available via PackMan or download here
acorndave
Posts: 14
Joined: Wed Sep 04, 2019 3:52 pm

Re: ADFFS 2.84 public beta

Post by acorndave »

I have a Pinebook Pro and have had a bit of a play. I am currently running the Sound /PCi beta Rom from RCcomp. (I think the PineA64 Rom on ROOL is for the original Pinebook and not suitable for the Pro and so have not looked at that)

I downloaded the nightly Beta HardDisc 4 image and merged the boot. By way of a check I noted that I'm now running Shared C Lib 6.22, so it looks like I'm updated. Not sure if I should have done anything else.

I then tried both versions of ADFFS 2.84 and they behaved the same. Basically the desktop locks. The screen is still visible but the keyboard and mouse are unresponsive requiring a hard power off .
JonAbbott
Posts: 3059
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.84 public beta

Post by JonAbbott »

acorndave wrote: Wed Dec 27, 2023 5:46 pm I have a Pinebook Pro and have had a bit of a play. I am currently running the Sound /PCi beta Rom from RCcomp. (I think the PineA64 Rom on ROOL is for the original Pinebook and not suitable for the Pro and so have not looked at that)
If the Pinebook Pro OS build is closed source, you would have to raise the issue with RComp directly. Point them to the bug report on ROOL, that's linked above.

If the GraphicsV driver was written by the same author, it's likely to be the same issues, namely a lack of adherence to the documentation around claiming/releasing GraphicsV and when checking the driver ID on entry to the GraphicsV vector.
acorndave
Posts: 14
Joined: Wed Sep 04, 2019 3:52 pm

Re: ADFFS 2.84 public beta

Post by acorndave »

No problem. I will contact RComp and see what they can do. Thanks for all you've done on this anyway. Much appreciated
JonAbbott
Posts: 3059
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.84 public beta

Post by JonAbbott »

ADFFS build updated in the OP. Use with caution as it has not been tested to any extent.

Two notable changes:
  • Palette changes are now Gamma corrected
  • SWI raised via OS_CallASWI/R12 are now checked for SWI that need to be intercepted for ADFFS to work
It's the last of those changes that I've not tested beyond confirming a Pi3 appears to work correctly after ADFFS is loaded.
JonAbbott
Posts: 3059
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.84 public beta

Post by JonAbbott »

acorndave wrote: Wed Dec 27, 2023 5:46 pm I have a Pinebook Pro and have had a bit of a play. I am currently running the Sound /PCi beta Rom from RCcomp.
...
I then tried both versions of ADFFS 2.84 and they behaved the same. Basically the desktop locks. The screen is still visible but the keyboard and mouse are unresponsive requiring a hard power off .
Could you confirm if the Pinebook Pro is using ADFS for the filing system?
acorndave
Posts: 14
Joined: Wed Sep 04, 2019 3:52 pm

Re: ADFFS 2.84 public beta

Post by acorndave »

It uses SDFS. It boots off an SD card and the main set up is on eMMC. SDFS::eMMC4.$

I've run Verma and it shows SDFS (SDFS and SDFSfiler), various SCSI modules loaded, and CDFS. Can't see anything ADFS related even listed (e.g. ADFS / or ADFSfiler)

Is there anything else I should check ?
JonAbbott
Posts: 3059
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.84 public beta

Post by JonAbbott »

acorndave wrote: Wed Jan 31, 2024 7:22 pm Is there anything else I should check ?
No, I was just curious if it suffered from the same issue seen on the RISCOSBits machines, which use ADFS4 for the main filing system.

From correspondence with John Ballance, I believe the GraphicsV driver does now follow the documentation, what I can't tell is if the changes have made their way back into the build. I also have no way of knowing if there's further issues, hence ruling out ADFS as a possible complication.
acorndave
Posts: 14
Joined: Wed Sep 04, 2019 3:52 pm

Re: ADFFS 2.84 public beta

Post by acorndave »

JonAbbott wrote: Thu Feb 01, 2024 7:24 am From correspondence with John Ballance, I believe the GraphicsV driver does now follow the documentation, what I can't tell is if the changes have made their way back into the build. I also have no way of knowing if there's further issues, hence ruling out ADFS as a possible complication.
Ok thanks for that. If the GraphicsV driver has been 'tweaked' then that sounds reasonably promising. I shall make further enquiries with RComp and see what the situation is with regards to updating the Pinebook Pro build.
wmd
Posts: 124
Joined: Thu Feb 04, 2021 1:02 am

Re: ADFFS 2.84 public beta

Post by wmd »

I just tried to make a new JFD of Ballerna (using the original Ballarena JFD) and after populating the track sectors grid I get the error: "Internatl error: address exception at &0386DAEC in "!ADFFS.imaging.wimp"".
Post Reply