ADFFS 2.38 beta

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

ADFFS 2.38 beta

Post by JonAbbott »

Mainly changes for the Pi: IOC emulation and mid-frame palette swapping now added. Jahangir Khan World Championship Squash and Xenon 2: Megablast both work. James Pond does work, although we need to extend the blitter to take account of VIDC parameters before scrolling will work correctly. This will hopefully be in the next release.

There's also some bug fixes for RO3.1x-4.x machines.

To force your Pi to 50Hz, edit config.txt on the DOS partition and add the following lines. Uncomment one of the hdmi_mode values:

Code: Select all

hdmi_ignore_edid=0xa5000080
hdmi_group=1
#
#576p @ 50Hz
#hdmi_mode=17
#
#720p @ 50Hz
#hdmi_mode=19
#
#1080p @ 50Hz
hdmi_mode=31
At other monitor frequencies, games will still run at the correct rate but micro stutter may be noticeable where it pads extra frames to make up the difference.

NOTE: You must ensure fake_vsync_isr=1 is also uncommented in your config.txt file on the Pi. If you see a blank screen, try setting the monitor to Auto. Also ensure the ARM is configured as ARMv5 and SparkFS is loaded.



Changes since 2.34
  • The following instructions weren't encoded correctly:
    • <alu>S PC, Rn, ...
    • LDR PC, ...
    • TEQP PC, ...
  • RMA space added to the JIT in preparation for 26bit module support
  • OS_FSControl 4 now supports the Utility file type
  • OS_FSControl 2 now taken over when the JIT is running
  • Wimp_SlotSize / OS_Exit now hypervised
  • If the monitor refresh rate is 50Hz, it now shutdown the internal VSync generator
  • DiscOp / MiscOp now preserve flags on all CPU's
  • IOC device 3 (VSync pulse) and 6 (Timer 1) now emulated
  • JITMEMORYA added to allow code fixups
  • Service_ModeExtensions type 0/1 are now translated instead of relying on the Abort handler to deal with them
  • Corrects some compiler errors
    • S bit is forced on TST, TEQ, CMP and CMN (fixes BlowPipe)
    • Rn is cleared in TST, TEQ, CMP, CMN (fixes Cannon Fodder and Lotus Turbo Challenge 2)
  • As files are loaded via OS_File or ADFS_DiscOp, the memory pages are changed back to R/W in case they're data and not code
  • OS_Release now supports multiple claims of the same vector
  • Subpage support added for StrongARM
  • STM's that generate aborts only flush the cache if they overwrite an instruction
  • No longer hangs on the Pi when trying to catalogue with no floppy mounted
  • JIT and screen memory remapping are now shutdown when returning to the desktop
  • The JIT now forces the CPU mode on the Pi (enables rotated loads and disables fault checking)
  • MEMC hardware scrolling now works on IOMD
  • Service_PreModeChange now translates mode specifiers back to their original RO3.1 MODE # for modes below 25 to fix *ScreenLoad

Known issues
  • Doesn't support the protection used by Chequered Flag (non-RO3 version), Fine Racer and KerBang! (they talk directly to the FDC via IOC)
  • Shelling out of the desktop (Ctrl-Shift-F12 twice) hangs if an HD floppy is mounted on RO3.5+ ARM710 under RedSquirrel
  • Although Caverns runs fine under VIDC translation on the A7000, on a RPC the scrolling isn't quite correct
  • Will not work on a RISC OS 3.1x machine with more than 13mb allocated to application space. To workaround increase another area until Applications (free) is below 13mb and ensure it never goes above it whilst ADFFS is loaded
  • Does not currently work on RO5.x IOMD
  • Some games don't display on Kinetic (eg Zarch)
  • No 26-bit module support on 32bit OS's
  • Requires 30mb of free memory to work on a StrongARM machine, if the game isn't natively StrongARM compatible
  • Does not work on OMAP3/4, untested on Iyonix
  • Games that update the display on event 4 currently flicker on Archimedes/Risc PC (eg Chuck Rock, James Pond)
  • Sometimes reports "Broken directory" after loading (exiting and reloading is a temporary fix)
  • Can't change discs in Apocalypse on RO4
  • Difficult to change discs on BlowPipe and Xenon 2: Megablast on the Pi (hold CTRL-SHIFT and keep hitting F2 until you see the hourglass)
  • Jahangir Khan aborts when quiting back to the desktop on the Pi
  • James Pond flickers when scrolling and is jerky on the Pi

Games that are made StrongARM/Pi compatible with this version:
F1009001 - Conqueror
F1056501 - Humanoids (of Humanoids & Robotix)
F1021001 - Jahangir Khan World Championship Squash
F1021301 - Jet Fighter
F1048401 - The Krisalis Collection: Mad Professor Mariarti [BUZZ version]
F1048403 - The Krisalis Collection: Revelation! [BUZZ version]
F1048404 - The Krisalis Collection: Terramex
F1023301 - Mad Professor Mariarti
F1023601 - Magic Pockets
F1050701 - Pac-mania
F1044701 - Pac-mania [Learning Curve version]
F1030801 - Revelation!
F1059501 - Revelation! [BUZZ version]
F1030901 - Revolver
F1031201 - Rise in Crime
F1036601 - Terramex
F1039601 - Xenon 2: Megablast
F1040201 - Zarch

NOTE: The "Boot floppy" scripts have been updated for many games, so ensure you have !SparkFS or similar loaded before using "Boot floppy".
If you've contributed one of the unreleased titles and have the JFD floppy image, it should work provided you have !SparkFS or similar loaded. Alternatively, extract the relevant Obey file from !ADFFS.obey and launch manually.


Please provide feedback, let us know if it's working or see any issues.
Attachments
adffs238b.zip
(493.06 KiB) Downloaded 455 times
Vanfanel
Posts: 576
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.38 beta

Post by Vanfanel »

Hi Jon!

I've been trying to run this new version this weekend, but as soon as I double-click it, my Pi hangs. Risc OS freezes completely.
I've tried both BETA Rpi ROM (2014-03-02) and RC-12 (2014-02-25), with identical results.
JonAbbott
Posts: 2956
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.38 beta

Post by JonAbbott »

Can you go into the !ADFFS folder and trying running the following modules to see which one is causing the hang:

ADFS
ADFFS500
ADFFSFiler
Vanfanel
Posts: 576
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.38 beta

Post by Vanfanel »

I can double-click on them with no problems at all. Strange.
But double-clicking ADFFS! causes the hang anyway.
JonAbbott
Posts: 2956
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.38 beta

Post by JonAbbott »

Now try running:

MemAlloc
Zlib
!Loader

If all of those work, check SharedCLib is available
Vanfanel
Posts: 576
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.38 beta

Post by Vanfanel »

Ooops, it's !Loader the one causing the hangs!
JonAbbott
Posts: 2956
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.38 beta

Post by JonAbbott »

Vanfanel wrote:Ooops, it's !Loader the one causing the hangs!
I'll eMail you the latest build to test as I modified !Loader today to avoid a potential issue.
Vanfanel
Posts: 576
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.38 beta

Post by Vanfanel »

I've found out how to make it work, by leaving the first block like this:

|RMEnsure UtilityModule 3.5 RMEnsure ADFFS RMLoad <ADFFS$Dir>.ADFFS
|RMEnsure ADFFS RMLoad <ADFFS$Dir>.ADFFS400
RMLoad <ADFFS$Dir>.ADFFS500
RMEnsure ADFFS Error Failed to load ADFFS

However, Pacmania still shows the small skips at 50Hz!
Can't you just use the same thing Zool and / or Twin World use for screen syncrhonization? These games are PERFECTLY smooth, so it CAN be done here!
JonAbbott
Posts: 2956
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.38 beta

Post by JonAbbott »

Vanfanel wrote:|RMEnsure ADFFS RMLoad <ADFFS$Dir>.ADFFS400
RMLoad <ADFFS$Dir>.ADFFS500
That's pretty much the fix I implemented in 2.39.
Vanfanel wrote:However, Pacmania still shows the small skips at 50Hz!
Can't you just use the same thing Zool and / or Twin World use for screen syncrhonization?
2.38 onward swap and blit the screen at VSync if the Pi is at 50Hz, so unless a VSync isn't getting through, it will be the game dropping a frame.

If you press CTRL-SHIFT-PgDown several times that will ensure ADFFS isn't doing any frame pacing, then do CTRL-SHIFT-PgUp twice to get ADFFS to frame pace at 50Hz. See if either make any difference.

I'll also send you a debug build, so you can see the FPS the game is producing. I'd be interested to know if it changes from 50fps.
JonAbbott
Posts: 2956
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.38 beta

Post by JonAbbott »

JonAbbott wrote:2.38 onward swap and blit the screen at VSync if the Pi is at 50Hz.
I've just found a bug where this may fail to happen, I'll get it fixed and over to you to test.
Post Reply