ADFFS 2.47 beta

Discuss ADFFS development versions and upcoming additions
Post Reply
JonAbbott
Posts: 1736
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex

ADFFS 2.47 beta

Post by JonAbbott » Tue Jan 13, 2015 4:44 pm

Bouncer, Cannon Fodder, Chuck Rock, Gods and Heimdall are now working on the Pi, Codelet re-entrancy is now supported and Frame Pacing is re-enabled. Disc swapping issues on BlowPipe and Xenon2: Megablast are now resolved.

There's been extensive changes to the way the blitter works, it's now threaded and runs independent of ADFFS' GraphicsV layer so there may be some knock on effects. There is some tearing near the bottom of the screen if your display isn't 50Hz, which I'm looking into and will resolve in the next release.

Due to a bug in the sound stack on RO5.21 which has since been resolved, you need to be running a RISC OS beta build from 16-09-14 or later.

To force your Pi to 50Hz and turn off the filtered upscaling, 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
#
#set GPU upscaling to nearest neighbour
scaling_kernel=8
#
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 SparkFS is loaded.



Changes since 2.46
  • Self-modifying STR's now release codelets correctly
  • Codelets now have four local variables which are stacked if the codelet is interrupted
  • Codelets that previously referenced the PC as a static value now use the PC in the codelet header
  • Improved encodings of the following instructions
    • LDMxx Rn, {<reglist>, PC} (14 instructions down from 21)
    • LDMxx Rn, {<reglist>, PC}^ (20 instructions down from 25)
    • BL <address> (10 instructions down from 11)
    • TEQP/CMNP/TSTP/CMPP PC, ... may previously have corrupt the PSR
    • Merged <ALU> PC,PC,... code into <ALU> PC,...
  • Hypervised OS_Claim codelet may have overwritten the previous codelet in some circumstances
  • Codelets are now cache aligned
  • Now takes over the IRQ hardware vector whilst the JIT is running and determines if a codelet has been interrupted before passing the IRQ on
  • Now initializes abt_R13 on StrongARM to avoid having a private stack in the Abort handlers
  • Now takes over the Branch Through Zero hardware vector whilst the JIT is running
  • Now reports aborts in the Mouse Pointer area if it can't decode them
  • General Abort handler no longer swaps to SVC32 whilst running, it remains in Abort32
  • General Abort handler and JIT Abort handler previously could cause register corruption if an interrupt occurred as the handler exited
  • JIT Abort handler wasn't using the correct PSR when proxying LDR Rd, [Rn, {+-}Rm, RRX]!
  • Blitter optimizations
  • VIDC1 translation was previously writing VIDC softcopy registers on RO5
  • Blitter now takes account of Vertical borders
  • Frame pacing re-enabled
  • IOC CR register is now initialized when the JIT starts
  • IOC IR pin is now set high when a VSync occurs
  • Blitter is now threaded under RTSupport on RO5 non-IOMD
  • System Sound Buffer Change IRQ is now raised when the Channel Handler is called
  • Blitter now checks if the backbuffer has already been blitted and drops the current frame if a GPU frame swap is pending
  • GraphicsV 6 now claims "Set start of video display" instead of passing it through

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 and Pi the scrolling isn't quite correct
  • Does not work on a RISC OS 3.1x machine with more than 12mb of RAM
  • RO5.x IOMD doesn't support direct access to VIDC1, VIDC20 or IOC
  • 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 and Iyonix support isn't quite ready for public release
  • 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
  • Some games may hang when quitting back to the desktop
  • ADFFS doesn't reset itself after the JIT is shutdown when a game quits (quit and reload ADFFS before trying to Boot another game)
  • The blitter doesn't currently support hardware pointers, so the ship and highscore will not be visible in Caverns on the Pi
  • Pacmania music isn't quite correct
  • 2067BC sound effects in-level are the wrong pitch
  • No Excuses and Rockfall are randomly crashing on the Pi
  • On the Lemmings title screen, the mouse cursor corrupts as it goes off the left of the screen
Games that are made StrongARM/Pi compatible with this version:
10001 2067BC
10034 Axis
10038 Battle Chess
10036 Ballarena
10049 BlowPipe
10452 Bouncer
10065 Cannon Fodder
10072 Caverns (requires hardware pointer support to work correctly)
10081 Chuck Rock
10090 Conqueror
10307 Ego: Repton 4
10167 Freddy's Folly
10172 Gods
10188 Heimdall
10202 HoverBod (needs slowing down)
10210 Jahangir Khan World Championship Squash
10211 James Pond
10590 James Pond [BUZZ version]
10213 Jet Fighter
10484 Krisalis Collection, The: Mad Professor Mariarti [BUZZ version]
10484 Krisalis Collection, The: Revelation! [BUZZ version]
10484 Krisalis Collection, The: Terramex
10277 Lemmings
10469 Lemmings [Learning Curve version]
10233 Mad Professor Mariarti
10593 Mad Professor Mariarti [BUZZ version]
10236 Magic Pockets
10263 No Excuses
10270 Orion
10507 Pac-mania
10447 Pac-mania [Learning Curve version]
10275 Paradroid 2000 (sound effects aren't correct on StrongARM)
10385 Populous
10298 Quest For Gold
10480 Quest For Gold [Learning Curve version]
10308 Revelation!
10595 Revelation! [BUZZ version]
10309 Revolver
10315 Rockfall
10456 Slappit
10343 Sporting Triangles (needs slowing down)
10359 S.W.I.V.
10366 Terramex
10393 World Class Leaderboard (needs slowing down)
10396 Xenon 2: Megablast
10402 Zarch

NOTE: You must have !SparkFS loaded and use "Boot floppy" to run a game. If you don't, you could end up with a machine that isn't bootable, as some games try to alter the CMOS. Provided "Boot floppy" is used, ADFFS will prevent games from altering both the CMOS and unplugging modules.
DO NOT try to run a game by launching it's Icon - it will almost certainly damage your machine.
Attachments
adffs247b.zip
(570.51 KiB) Downloaded 433 times

Vanfanel
Posts: 373
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.47 beta

Post by Vanfanel » Sat Jan 17, 2015 12:26 pm

All compatible games tested.

-Lemmings has a minor cursor bug, as the cursor gets corrupted if I go to the edges of the screen. But I cleared the whole "FUN" pack of levels yesterday with a friend :D
-Rockfall = hangs with music repeating a note

As for incompatible games, so far I tested these:

-SWIV works here without problems apparently! I would add it to the list of games that are compatible.

-Nebulus = black screen
-The Dungeon (I love this one, don't you?) = black screen

Also, have you considered adding USB joystick support somehow? These games are starting to ask for a good playthrough..

JonAbbott
Posts: 1736
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex

Re: ADFFS 2.47 beta

Post by JonAbbott » Sat Jan 17, 2015 10:52 pm

Vanfanel wrote:Lemmings has a minor cursor bug, as the cursor gets corrupted if I go to the edges of the screen
I'm aware of this, I'll add it to the known issues.
Vanfanel wrote:Rockfall = hangs with music repeating a note
Known issue, I'm trying to resolve for the next release.
Vanfanel wrote:SWIV works here without problems apparently! I would add it to the list of games that are compatible.
:D Done, The BUZZ version may also work, although you'll need to copy !ADFFS.obey.F1035901 over !ADFFS.obey.F1056601 to check.
Vanfanel wrote:Nebulus = black screen
I'll be looking at this and Fire & Ice soon as both should work.
Vanfanel wrote:The Dungeon (I love this one, don't you?) = black screen
This requires 26bit module support, although shouldn't hang on a black screen.
Vanfanel wrote:Also, have you considered adding USB joystick support somehow? These games are starting to ask for a good playthrough..
Yes, I've also asked on the RISCOS forum for assistance to develop the Joystick API. Sadly, I don't have the time or skills to progress this.

Thanks for doing all that testing, things are definitely progressing. 26bit module support next, which should increase the game substantially.

cowboystyle
Posts: 2
Joined: Thu Jul 17, 2014 12:16 pm

Re: ADFFS 2.47 beta

Post by cowboystyle » Sun Jan 18, 2015 11:53 pm

Hey Jon - Broken on 3.10 (A3010) - loads fine, opening /ADF files hourglasses and freezes the system. not sure how to provide debug info (apologies!)

JonAbbott
Posts: 1736
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex

Re: ADFFS 2.47 beta

Post by JonAbbott » Mon Jan 19, 2015 8:53 pm

cowboystyle wrote:Hey Jon - Broken on 3.10 (A3010) - loads fine, opening /ADF files hourglasses and freezes the system. not sure how to provide debug info (apologies!)
I've just tried a selection of ADF files and they all opened without problem. Could you eMail me an example file please: jon at jaspp dot org dot uk

Could you also please try a SHIFT-BOOT before loading ADFFS, to check it's not a conflict with something that's loaded in the boot sequence.

Post Reply