ADFFS 2.84 public beta

Discuss ADFFS development and download test releases
JonAbbott
Posts: 3006
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 might also work on OMAP (untested) and other GraphicsV drivers that support hardware overlays.

Because of this issue on the Pi, the Arm v5/v7 builds (ADFFS500ov / ADFFS550ov) have the overlay swaps handled via callback. The knock on effect is possible flickering and video geometry changes being missed/getting out of sync in games that alter the screen geometry at every VSync (very noticeable with Rockfall for example). There might also be random crashes, stuck overlays and hard-locks an RTSupport thread.

The threaded attachment bank switches overlays at VSync, which is when it should occur and how the non-overlay builds of ADFFS work. These builds definitely cause hard-locks, stuck overlays etc and will do until the issue linked above is resolved.

Pinebook laptops are currently unsupported due to this issue. I believe the nightly RISC OS build might have the patch to resolve it for the Pinebook. The Pinebook Pro ROM from R-Comp has yet to be updated, ADFFS will cause a hard-lock if loaded on a Pinebook Pro when it installs its legacy video driver. This was reported to R-Comp along with the suggested fix last year and followed up earlier this year, 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 spec. required for ADFFS. Once R-Comp resolve the ROM issue noted above, I can look at potentially extending the Pinebook Pro video driver to support resolution changes and overlays.

*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
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), the OS will randomly get stuck in a race condition inside SDIODriver waiting on a spin-lock. This has been reported, but the root cause not yet 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
Attachments
adffs284.zip
14th June 2024
(1.29 MiB) Downloaded 4 times
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: 3006
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: 3006
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: 3006
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: 3006
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: 122
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