ADFFS 2.80

Floppy Disc Controller emulator and virtual IOC/IOMD/ARM JIT for modern RISC OS machines
Post Reply
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

ADFFS 2.80

Post by JonAbbott »

Available below as an attachment for non-networked/pre RiscPC machines, or via PackMan using the source URL detailed at the bottom of this post.

2.80 includes many improvements to the JIT. Instructions that touch PC are improved in performance, Page Zero is now redirected instead of emulated, allowing code within Page Zero. IRQ, FIQ and Undefined Instruction hardware vectors are now handled as instructions instead of being emulated.

Many game bugfixes added for Null dereference bugs, Page Zero access bugs and other general bugs that the authors didn't detect. Where possible these bugfixes have been implemented to work on games running under RISC OS 3.1x.

The JFD floppy imager no longer requires SparkFS, using ZLib instead and requires 900Kb less memory to image DD floppies.

A-series requirements:
  • 4MB RAM minimum
  • RISC OS 3.10 or newer
  • ADFFS must be installed to a hard-drive
RiscPC requirements:
  • 32MB RAM minimum
  • RISC OS 3.x, 4.x or 5.23 Jun 9th 2016 or newer. Note that some games will not work on RISC OS 4.x due to the way it allocates screen memory in 1MB blocks. RISC OS 6 is not officially supported
Iyonix requirements
  • RISC OS 5.27 Nov 16th 2018 or newer (download link)
  • To get legacy TV MODEs working (0 to 15), you can try this Monitor file for 75Hz EGA on VGA
    EGAonVGAMonitor.zip
Pi requirements:
  • Any revision Pi, from Pi 1 to Pi 4, including Pi Zero
  • RISC OS 5.27 Nov 16th 2018 or newer (download link)
  • Ensure fake_vsync_isr=1 is uncommented in !Boot.Loader.CONFIG/TXT
  • You must disable GPU mode change support using the applicable method below. Note that if you have multiple entries in CMDLINE/TXT, they should be separated with spaces and not new lines.

    Non-NOOBS RISC OS:
    1. Hold SHIFT and browse to !Boot.Loader from the root of the drive
    2. Create CMDLINE/TXT with the following contents:

      Code: Select all

      disable_mode_changes
    NOOBS RISC OS:
    1. Hold SHIFT at power on to enter the NOOBS configuration
    2. Select Edit Config
    3. Add the following to CMDLINE.TXT:

      Code: Select all

      disable_mode_changes
  • (optional) For a blocky pixel retro gaming look, turn off the default GPU filtered upscaling by editing !Boot.Loader.CONFIG/TXT and add the following lines:

    Code: Select all

    #set GPU upscaling to nearest neighbour
    scaling_kernel=8
  • (optional) If your display supports 50Hz, you can force the Pi to use 50Hz by editing !Boot.Loader.CONFIG/TXT and adding 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 extra frames are added to make up the difference

Known issues
  • Does not support the protection used by Chequered Flag (RO2 version) when running on RISC OS 3.1x (talks directly to the FDC via IOC)
  • Shelling out of the desktop (Ctrl-Shift-F12 twice) hangs under RedSquirrel if an HD floppy is mounted on RO3.5+ ARM710
  • Although Caverns runs fine under VIDC translation on the A7000, on a RiscPC the scrolling isn't quite correct
  • OMAP based cores are untested and may not work
  • Some games that use overscan may result in a blank screen on a RiscPC
  • 26bit WIMP app support under RISC OS 5 can randomly lock the machine (related to a feature of RISC OS, which doesn't preserve memory page access across task switches)
  • Hardware scrolling is still in effect when returning from an emulated legacy mode, to the desktop under RISC OS 5
  • When switching between an emulated mode and the desktop, logical memory space is leaked eventually resulting in logical memory exhaustion. Refer to the ROOL discussion for further details
  • Cache flushing is not performed at VSync on StrongARM based RiscPC, resulting in flickering
  • JIT will not work under RPCEmu as it does not generate Page Faults when User mode writes to pages with Supervisor only write permissions
  • Games that alter the Wimp Mode might cause a lock when exiting back to the Wimp under RISC OS 5:
    • Cyborg
    • Dreadnoughts
    • Guile
    • Put It!
    • Wizard Apprentice
  • WIMP based titles may lock the machine:
    • Abuse
    • Alderbaran
    • Black Angel
    • Demon's Lair
    • E-Type II
    • Elite
    • Emotions - Search for Humanity
    • EuroBlaster (from Flying High)
    • Fervour
    • Foray
    • Frak!
    • Global Effect
    • Hamsters
    • Haunted House
    • High Risc Racing
    • Ixion
    • Joust (from Flying High)
    • Karma - The Flight Trainer
    • K.V.
    • Mah-Jong Patience
    • Merp (from Mirror Image and Merp)
    • Premier Manager
    • Scrabble
    • Shuggy
    • SimCity
    • TANKS
    • The Chaos Engine
    • Virtual Golf
    • WaveLength
  • Formula Fun - doesn't hide the text cursor and doesn't wait on the track map screen
  • Frak! - music is glitchy and the game has a screensaver, which you can't get out of without hitting ESC
  • James Pond 2: Robocod (non-SA) - music key is wrong. Also happens on physical
  • Abuse - Aborts when starting a new game
  • Brutal Horse Power - Audio is crackly
  • TEK 1608 - FileCore in use error if terminated via CTRL-SHIFT-F12

Games that are made compatible with StrongARM or newer processors (tested on Pi 3):
F1000101 2067 BC (1993) (Oregan Developments)
F1000201 3D Construction Kit (1991) (Domark)
F1045101 Acheton & Kingom of Hamil (1987) (TOPOLOGIKA)
F1000401 Adventures, classic complication [Philosopher's Quest, Countdown to Doom, Return to Doom, Kingdom of Hamil, Acheton] (1988) (TOPOLOGIKA)
F1000402 Adventures, classic complication [Philosopher's Quest, Countdown to Doom, Return to Doom, Kingdom of Hamil, Acheton] (1988) (TOPOLOGIKA)
F1049202 Adventure Collection, The: Kidnapping (1993) (Alpine Software)
F1000601 Aggressor (1992) (Atomic Software)
F1064301 Aggressor Macho Edition (1992) (Matt Black)
F1000701 Air Supremacy (1991) (Superior Software)
F1070601 Alien Invasion (1990) (Alien Images)
F1001001 Alerion (1988) (DABS Press)
F1001501 Alone In the Dark (1995) (Krisalis Software)
F1001701 Apocalypse (1990) (The Fourth Dimension)
F1049301 Arc/A3000 Christmas Box, The: Brixx! (1990) (RTFM Software)
F1049302 Arc/A3000 Christmas Box, The: PON! in Winterland (1990) (RTFM Software)
F1049303 Arc/A3000 Christmas Box, The: Zap the red wierdos from Mars (1990) (RTFM Software)
F1001801 Arcade 3 (1988) (Clares Micro Supplies)
F1001901 Arcade Soccer (1989) (The Fourth Dimension)
F1002001 Arcendium (1988) (Alien Images)
F1002401 ArcPinball (1990) (Shibumi Soft)
F1002601 Arcturus (1994) (Oregan Developments)
F1003301 Asylum (1993) (Digital Psychosis)
F1070001 Asylum (2002) (Acorn Arcade)
F1048901 Avon & Murdac (1989) (TOPOLOGIKA)
F1003401 Axis (1993) (TBA Software)
F1023101 Ballarena (1990) (Sisteme)
F1003601 Ballarena (1994) (Uffenkamp Computer Systeme)
F1003701 Bambuzle (1991) (Arxe Systems)
F1003801 Battle Chess (1993) (Krisalis Software)
F1003901 Battle Tank (1990) (Minerva)
F1004101 Big Bang (1996) (Psycore)
F1004201 Birds of War (1993) (The Fourth Dimension)
F1064001 Blaston (1991) (Eterna)
F1004401 Blaston (1994) (Uffenkamp Computer Systeme)
F1004601 Blitz! (1991) (Arxe Systems)
F1004701 BloodLust (1998) (The Fourth Dimension)
F1004801 Blood Sport (1993) (Matt Black)
F1004901 BlowPipe (1990) (Eclipse)
F1005201 Bobby Blockhead vs The Dark Planet (1991) (Atomic Software)
F1005301 Boogie Buggy (1991) (The Fourth Dimension)
F1005501 Botkiller2 (1999) (Artex Software)
F1045201 Bouncer (1991) (RTFM Software)
F1005601 Break 147 & Superpool (1991) (The Fourth Dimension) (HD install only)
F1060501 Break 147 & Superpool [SA version] (2000) (The Fourth Dimension)
F1044301 Brutal Horse Power (1997) (TBA Software)
F1005701 Bubble Fair (1991) (Eterna)
F1005801 Bubble Impact (1997) (Moving Pixels)
F1005901 Bug Hunter & Moondash (1990) (Minerva)
F1006001 Bug Hunter in Space (1990) (Minerva)
F1006201 Burn'Out (1995) (Oregan Developments)
F1046101 Burn'Out [SA version] (1997) (Oregan Developments)
F1006501 Cannon Fodder (1994) (Krisalis Software)
F1006701 Carnage Inc. (1993) (The Fourth Dimension)
F1019501 Cartoon Line part one (1991) (Eterna)
F1002201 Cartoon Line part one (1993) (Uffenkamp Computer Systeme)
F1035501 Cascade (1992) (Milo Shaffer and Richard Norman)
F1006801 Casino (1989) (Minerva)
F1007101 Cataclysm (1991) (The Fourth Dimension)
F1048201 Cataclysm [SA version] (1998) (The Fourth Dimension)
F1007201 Caverns (1991) (Minerva)
F1049001 Champions: Jahangir Khan World Championship Squash (1991) (Krisalis Software)
F1049002 Champions: Manchester United (1992) (Krisalis Software)
F1049004 Champions: World Championship Boxing Manager (1992) (Krisalis Software)
F1049005 Champions: World Class Leaderboard (1992) (Krisalis Software)
F1062401 Chequered Flag [RO3 version] (1992) (Cambridge International Software)
F1007801 Chocks Away (1990) (The Fourth Dimension)
F1060601 Chocks Away Compendium [SA version] (2000) (The Fourth Dimension)
F1008001 Chopper Force (1992) (The Fourth Dimension)
F1050401 Chopper Force [SA version] (1998) (The Fourth Dimension)
F1008101 Chuck Rock (1991) (Krisalis Software)
F1014401 Chuck Rock [BUZZ version] (1994) (Krisalis Software)
F1060201 Chuck Rock [SA version] (2001) (R-Comp Interactive)
F1008301 Cobalt Seed, The (1995) (TBA Software)
F1008801 Command Ship (1995) (TBA Software)
F1008901 Confusion (1989) (Cambridge International Software)
F1009001 Conqueror (1988) (Superior Software)
F1009101 COPS (1989) (Alpine Software)
F1009301 Corruption (1989) (Rainbird)
F1009501 Crisis (1990) (Cambridge International Software)
F1009601 Crystal Maze, The (1993) (Sherston Software)
F1009901 Cyber Ape (1995) (TBA Software)
F1010101 CyberZone (1992) (Uffenkamp Computer Systeme)
F1010201b Cyborg (1992) (Alpine Software) (Text Adventure only)
F1010301 Cycloids (1993) (Software 42)
F1010401 DarkWood (1995) (Eclipse)
F1046201 Deadline (1996) (Network 23)
F1010901 Deeva (1990) (Calderglen Computers)
F1011501 Diggers (1994) (Millennium Interactive)
F1011701 DinoSaw (1993) (Five Star Marketing)
F1011801 Dominate (1991) (RTFM Software)
F1012101 DragonBall (1993) (TBA Software)
F1012201 Dreadnoughts (1992) (Turcan Research Systems)
F1012501 Drifter (1997) (The Fourth Dimension)
F1060801 Drifter [SA version] (2000) (The Fourth Dimension)
F1012701 Drop Ship (1990) (The Fourth Dimension)
F1060101 Drop Ship [SA version] (1997) (The Fourth Dimension)
F1012801 Dune II - Battle for Arrakis (1995) (Eclipse) (v1.23F)
F1053501 Dune II - Battle for Arrakis (1997) (Eclipse) [CD version] (v1.32)
F1012901 Dungeon, The (1993) (The Fourth Dimension)
F1030701 Ego: Repton 4 (1992) (Superior Software)
F1013201 Empire Soccer '94 (1995) (Empire Software)
F1013401 Enter The Realm (1991) (The Fourth Dimension) (screen borders aren't correct)
F1045701 Enter The Realm [SA version] (1992) (The Fourth Dimension)
F1013501 Enthar Seven (1988) (Robico Software)
F1014001 E-Type (1989) (The Fourth Dimension)
F1061001 E-Type Compendium [SA version[ (1999) (The Fourth Dimension)
F1014601 Exotic Adventures of Sylvia Layne, The (1993) (The Fourth Dimension)
F1015301 Fine Racer (1991) (Eterna)
F1015401 Fire & Ice (1995) (Warner Interactive Entertainment)
F1015701 Fireball II (1990) (Cambridge International Software) (F1015701b script for Fireball)
F1015801 Fish! (1988) (Rainbird)
F1015901 Flashback (1994) (U.S. Gold)
F1016301 Flying High: Joust (1997) (GEK)
F1016302 Flying High: Euroblaster (1997) (GEK)
F1062501 FORAY! (1992) (Acorn User)
F1063101 Formula Fun (1993) (Mystery Software)
F1016601 F.R.E.D. (1993) (Software 42) (provided you preload the 32bit version of ArcFS)
F1016701 Freddy's Folly (1988) (Minerva)
F1043701 Fugative's Quest (1989) (Robico Software)
F1017001 Galactic Dan (1992) (The Fourth Dimension)
F1055601 Games Minipack Four: Confusion (1989) (Cambridge International Software)
F1055602 Games Minipack Four: Orion (1988) (Minerva)
F1055603 Games Minipack Four: StarTrader (1989) (Gem Electronics)
F1055604 Games Minipack Four: Word Up Word Down (1989) (Gem Electronics)
F1059201 Games Minipack Five: Fireball II (1990) (Cambridge International Software) (F1059201b script for Fireball)
F1059202 Games Minipack Five: Fish! (1990) (Cambridge International Software)
F1059203 Games Minipack Five: PON! (1990) (Cambridge International Software)
F1017201 Gods (1992) (Krisalis Software)
F1054501 Gods [RPC version] (2001) (R-Comp Interactive)
F1017901 Gribbly's Day Out (1992) (Coin-Age)
F1017801 Grievous Bodily 'ARM (1991) (The Fourth Dimension) (hard to swap discs without it asking for disc 1)
F1024501 Grievous Bodily 'ARM (1991) (The Fourth Dimension) (hard to swap discs without it asking for disc 1)
F1018001 Groundhog (1998) (The Fourth Dimension)
F1041101 Guild of Thieves, The (1987) (Rainbird)
F1018301 Guile (1992) (Dream Software)
F1018801 Heimdall (1993) (Krisalis Software)
F1019201 Hero Quest (1991) (Krisalis Software)
F1019301 Heroes of Might and Magic 2: The Succession Wars (2000) (R-Comp Interactive) (no script)
F1019901 Holed Out!! (1989) (The Fourth Dimension)
F1061201 Holed Out!! Compendium [SA version] (1999) (The Fourth Dimension)
F1020101 Hostages (1990) (Superior Software)
F1020201 HoverBod (1988) (Minerva)
F1056501 Humanoids and Robotix (1993) (Cambridge International Software)
F1020401 Ibix the Viking (1989) (Minerva)
F1020501 Inertia (1990) (The Fourth Dimension)
F1040801 Inferno (1996) (Paradise Games)
F1020601 Interdictor (1989) (Clares Micro Supplies)
F1020701 Interdictor II (1990) (Clares Micro Supplies)
F1020801 Iron Lord (1990) (Cygnus Software)
F1021001 Jahangir Khan World Championship Squash (1991) (Krisalis Software)
F1064901 Jahangir Khan World Championship Squash [BUZZ version] (1991) (Krisalis Software)
F1021101 James Pond (1990) (Krisalis Software)
F1059001 James Pond [BUZZ version] (1990) (Krisalis Software)
F1060301 James Pond [SA version] (2001) (R-Comp Interactive)
F1021201 James Pond II Robocod (1993) (Eclipse)
F1052501 James Pond II+ Robocod (1995) (Eclipse)
F1063301 James Pond Underwater Agent and Running Water (1995) (SkillsWare)
F1021301 Jet Fighter (1988) (Minerva)
F1021401 Jinxter (1989) (Rainbird)
F1021801 Kaptain Konflict (1990) (Calderglen Computers)
F1022001 KerBang! (1991) (Eterna)
F1048401 Krisalis Collection, The: Mad Professor Mariarti [BUZZ version] (1991) (Krisalis Software)
F1048402 Krisalis Collection, The: Pipe Mania (1993) (Krisalis Software)
F1048403 Krisalis Collection, The: Revelation! [BUZZ version] (1993) (Krisalis Software)
F1048404 Krisalis Collection, The: Terramex (1993) (Krisalis Software)
F1022101 Labyrinth (2000) (Acornsoft)
F1008401 Last Days of Doom, The & Hezarin (1990) (TOPOLOGIKA)
F1022301 Last Ninja, The (1992) (Superior Software)
F1022401 Leeds United (1993) (CDS Software)
F1022501 Legend of the Lost Temple, The (1992) (Eterna)
F1027701 Lemmings (1991) (Krisalis Software)
F1046901 Lemmings [Learning Curve version] (1991) (Krisalis Software)
F1022801 Lemmings 2: The Tribes (1994) (Krisalis Software)
F1022902 Logic Mania: Blindfold (1996) (The Fourth Dimension)
F1022903 Logic Mania: Gloop (1996) (The Fourth Dimension)
F1022904 Logic Mania: Tilt (1996) (The Fourth Dimension) (font palette issues if booted)
F1023201 Lotus Turbo Challenge 2 (1992) (Krisalis Software)
F1023301 Mad Professor Mariarti (1990) (Krisalis Software)
F1059301 Mad Professor Mariarti [BUZZ version] (1991) (Krisalis Software)
F1023501 Maddingly Hall (1989) (Minerva)
F1023601 Magic Pockets (1993) (Renegade)
F1023801 Magnetoids (1994) (Oregan Developments)
F1024101 Man at Arms (1990) (The Fourth Dimension)
F1061701 Man at Arms (1992) (ProAction)
F1024201 Manchester United (1990) (Krisalis Software)
F1049101 Manchester United Europe (1991) (Krisalis Software)
F1024401 Master Break (1990) (Superior Software)
F1056401 Memory Magic (1990) (Cambridge International Software)
F1024701 MicroDrive (1990) (Cambridge International Software)
F1045801 MicroDrive Designer (1992) (Cambridge International Software)
F1024801 MicroDrive World Edition (1991) (Cambridge International Software)
F1025001 MiG-29 Fulcrum (1991) (Domark)
F1040901 MiG-29M Super Fulcrum (1991) (Domark)
F1025101 Minotaur (1987) (Minerva)
F1025201 Mirror Image (1996) (TBA Software)
F1025301 Missile Control (1988) (Minerva)
F1025601 Morph (1998) (The Fourth Dimension)
F1025801 Mr Doo (1994) (Archimedes World)
F1026001 Nebulus (1992) (Krisalis Software)
F1026101 Nevryon (1990) (The Fourth Dimension)
F1061301 Nevryon [SA version] (2001) (The Fourth Dimension) (HD install only)
F1026301 No Excuses (1991) (Arcana Software)
F10266o1 OddBall (1995) (Digital Psychosis)
F1026701 Oh, No! More Lemmings (1992) (Krisalis Software)
F1026801 Olympics, The (1990) (The Fourth Dimension)
F1026901 Omar Sharif's Bridge (1992) (Krisalis Software)
F1027001 Orion (1988) (Minerva)
F1027101 Overload (1989) (Clares Micro Supplies)
F1027201 Overload (2000) (Paradise Games)
F1050701 Pac-mania (1989) (Grandslam Entertainments)
F1044701 Pac-mania [Learning Curve version] (1991) (Domark)
F1027401 Pandora's Box (1991) (The Fourth Dimension)
F1047801 Pandora's Box [SA version] (1998) (The Fourth Dimension)
F1027501 Paradroid 2000 (1993) (Coin-Age)
F1027701 Pawn, The (1990) (Rainbird)
F1027801 Pesky Muskrats (1992) (Coin-Age)
F1028101 Pipe Mania (1989) (Krisalis Software)
F1059901 Pipe Mania [RPC version] (2001) (R-Comp Interactive)
F1041001 Plague Planet (1988) (Alpine Software)
F1048701 Play It Again Sam 3 disk 1 [Superior Golf, Zelanites] (1993) (Superior Software)
F1048702 Play It Again Sam 3 disk 2 [Letrouve, Top Banana] (1993) (Superior Software)
F1057407 Play It Again Sam 4: Last Ninja, The (1997) (ProAction)
F1054701 Pocket Money Demo (1998) (Paradise Games)
F1028201 Poizone (1991) (Eterna)
F1028501 Populous (1992) (Krisalis Software)
F1059701 Populous [RPC version] (2001) (R-Comp Interactive)
F1028601 PowerBand (1990) (The Fourth Dimension) (v1.00)
F1061901 PowerBand (1990) (The Fourth Dimension) (v2.00)
F1060001 PowerBand [SA version] (1998) (The Fourth Dimension)
F1029301 Pushy (1997) (The Fourth Dimension)
F1029201 Put It! (1992) (Uffenkamp Computer Systeme) (sound issues)
F1029001 Pysanki (1990) (The Fourth Dimension)
F1029601 Quark (1993) (Oregan Developments)
F1029701 Quazer (1988) (Impact Software)
F1029801 Quest For Gold
F1048001 Quest For Gold [Learning Curve version] (1992) (Krisalis Software)
F1030101 Ravenskull (1997) (ProAction)
F1030201 Raw Power (1993) (Software 42)
F1030301 RedShift (1990) (Minerva)
F1047501 Rekall (1990) (RTFM Software)
F1065901 Repton 1 (1997) (ProAction)
F1030401 Repton 1 & 2 Special Offer Pack (1998) (ProAction)
F1030601 Repton 3 (1988) (Superior Software)
F1047901 Repton 3 Four Game Compilation (1992) (Superior Software)
F1030801 Revelation! (1992) (Krisalis Software)
F1059501 Revelation! [BUZZ version] (1993) (Krisalis Software)
F1030901 Revolver (1995) (Psycore)
F1031001 Rick Dangerous (1995) (The Hitmen Software)
F1031201 Rise in Crime (1988) (Robico Software)
F1031501 Rockfall (1991) (Eterna)
F1031601 Rotor (1989) (Arcana Software)
F1045901 Sally and Wally (1995) (Oregan Developments)
F1031801 Saloon Cars (1991) (The Fourth Dimension)
F1031901 Saloon Cars Deluxe (1992) (The Fourth Dimension)
F1061401 Saloon Cars Deluxe [SA version] (2000) (The Fourth Dimension) (F1061401b script for !Run replacement)
F1032601 Sensible Soccer (1993) (Renegade)
F1032701 Serpents (1993) (Cambridge International Software)
F1043801 SimCity 2000 [A5000 version] (1994) (Krisalis Software)
F1033101 SimCity 2000 [RPC version] (1994) (Krisalis Software)
F1032901 Silver Ball (1997) (The Fourth Dimension)
F1043801 SimCity 2000 [A5000 version] (1994) (Krisalis Software)
F1033101 SimCity 2000 [RPC version] (1994) (Krisalis Software)
F1033201 Simon the Sorcerer (1994) (GamesWare)
F1045601 Slappit (1990) (RTFM Software)
F1033401 Small (1993) (Virgo Software)
F1059405 Software 42 Collection: Raw Power (1993) (Eclipse)
F1033801 SpeedBall 2 (1994) (Krisalis Software)
F1054601 SpeedBall 2 [RPC version] (2001) (R-Comp Interactive)
F1033901 Spheres of Chaos (1992) (Matt Black)
F1054401 Spheres of Chaos 2 (2000) (R-Comp Interactive)
F1034101 Spobbleoid (1994) (Cybernation Entertainment Systems)
F1034201 Spobbleoid Fantasy (1994) (Cybernation Entertainment Systems)
F1061801 Spobbleoid Fantasy [SA version] (2002) (The Fourth Dimension)
F1034301 Sporting Triangles (1990) (CDS Software)
F1034401 SpySnatcher (1992) (TOPOLOGIKA)
F1034701 Starch (1990) (Alien Images)
F1034801 StarTrader (1989) (Gem Electronics)
F1035001 Stranded! (1989) (Robico Software)
F1035101 Stunt Racer 2000 (1993) (The Fourth Dimension)
F1044501 Stunt Racer 2000 [SA version] (1997) (The Fourth Dimension)
F1035601 Super Snail (1998) (The Fourth Dimension)
F1035701 Superior Golf (1990) (Superior Software) (speed issues, click on club to select instead of using MENU/ADJUST)
F1035901 S.W.I.V. (1992) (Krisalis Software)
F1056601 S.W.I.V. [BUZZ version] (1993) (Krisalis Software)
F1036001 Syndicate+ (1998) (R-Comp Interactive)
F1062901 Tactic (1990) (Eterna)
F1036101 Tactic (1996) (Uffenkamp Computer Systeme)
F1036201 Talisman (1989) (Minerva)
F1036401 Technodream (1993) (Superior Software)
F1036601 Terramex (1988) (Grandslam Entertainments)
F1036701 Thundermonk (1989) (Minerva)
F1037001 Top Banana (1988) (Hex)
F1037101 Tower of Babel (1991) (Cygnus Software)
F1037201 Trivial Pursuit (1989) (Domark)
F1037401 Twinworld (1990) (Cygnus Software)
F1037501 UIM (1990) (The Fourth Dimension)
F1037801 Warlocks (1993) (Network 23)
F1037901 Waterloo (1992) (Turcan Research Systems)
F1038101 White Magic (1989) (The Fourth Dimension)
F1038201 White Magic 2 (1989) (The Fourth Dimension)
F1038601 Wizard Apprentice (1997) (The Datafile)
F1038801 Wolfenstein 3D (1994) (Powerslave Software) (use the native 32bit version instead)
F1038701 WolfPack (1992) (Software 42)
F1038901 Wonderland (1991) (Virgin Mastertronic)
F1039001 Word Up Word Down (1989) (Gem Electronics)
F1039201 World Championship Boxing Manager (1991) (Krisalis Software)
F1039301 World Class Leaderboard (1988) (Krisalis Software)
F1039101 WorldScape [pre-release v0.91] (1990) (Eclipse)
F1065501 WorldScape (1990) (Eclipse)
F1039401 Worra Battle (1989) (Oak Solutions)
F1039601 Xenon 2: Megablast (1993) (Eclipse)
F1039701 X-Fire (1992) (The Fourth Dimension) (Spray sound doesn't work correctly)
F1032001 X-Run (1990) (XFM Software)
F1040101 Zalaga (1996) (Pro-Action)
F1040201 Zarch (1987) (Superior Software)
F1040301 Zelanites - The Onslaught (1991) (MicroPower)
F1003001 Zodiac - Aries: BlowPipe (1994) (GamesWare)
F1003004 Zodiac - Aries: Quizmaster (1994) (GamesWare)
F1003005 Zodiac - Aries: Square Route (1994) (GamesWare)


Changes since 2.74:
  • JIT codelets that reference PC no longer check the address they're jumping too, reducing the codelet size:
    • MOV PC, Rn ... codelet reduced from 13 to 7 instructions
    • MOVS PC, Rn ... codelet reduced from 16 to 15 instructions
    • <alu> PC, Rn ... codelet reduced from 13 to 7 instructions
    • <alu> PC, PC ... codelet reduced from 13 to 8 instructions
    • <alu>S PC, Rn ... codelet reduced from 24 to 15 instructions
    • <alu>S PC, PC ... codelet reduced from 24 to 23 instructions
    • LDM Rn, {..., PC} codelet reduced from 14 max to 9 max instructions
    • LDM Rn, {..., PC}^ codelet reduced from 20 max to 19 max instructions
    • LDR PC, [PC, ... codelet reduced from 13 to 8 instructions
    • LDR PC, [Rn, ... codelet reduced from 12 to 7 instructions
  • JIT IRQ handler now uses more registers to allow STM/LDM when ensuring codelets are atomic
  • JIT with instruction tracing enabled allocate_codelet was trying to reuse codelets, regardless of the value of JIT_codelet_reuse. This was causing ADR codelets to be reused, which return to the wrong address
  • JIT IRQ handler on IOMD wasn't loading IOC IRQA status after calling an IRQv claimant, if the claimant corrupts R12
  • JIT IRQ handler terminate_current_task was marking the task as killed even when the current task wasn't the one being killed or IRQsema was set
  • JIT now sets the environment variable ADFFS$JIT when the JIT is running to allow Obey files to avoid running further 26bit code if the JIT is shutdown mid-script
  • JIT release_all_ChangeEnvironmentV wasn't releasing UpCall correctly, now also releases Unused SWI handler if claimed (fixes Cobalt Seed when terminated via CTRL-SHIFT-F12)
  • JIT <alu>S PC, PC wasn't clearing Rn (fixes Pacmania)
  • JIT ChangeEnvironmentV_handler now checks for environment handlers being pointed at hypervised handlers and corrects the address (fixes CTRL-SHIFT-F12 in Populous)
  • JIT _needs_pre_veneer now corrects the hypervised previous environment handler codelet address (fixes CTRL-SHIFT-F12 in Populous)
  • JIT centralised code that sets codelet_cache_flush into allocate_codelet
  • JIT hv_OS_CallASWI_codelet_required rewritten to call static code in application space, instead of allocating a new codelet (fixes random crashes when starting Populous)
  • JFD imager memory requirement reduced from 1920K to 1056K for DD and 1856K for HD
  • JFD imager no longer dependent on SparkFS and now extracts the Boot script before attempting to image the floppy
  • JIT now uses Wimp_Extend to determine the initial Appspace memory allocation instead of Wimp_SlotSize, to better support Pi4
  • Data Abort handler now checks Early Abort Mode via OS_PlatformFeatures on RO5 if not running on IOMD
  • Data Abort handler now unmaps IOC chipset memory areas if the Wimp isn't running and will correctly check for Early Abort mode on IOMD unmapping &2000000 in the process
  • Now checks for an Abort32 stack on 26bit IOMD and will locate in a DA if its not set, fixes JIT on 26bit StrongARM
  • JIT codelet optimizations:
    • MOV{S} Rd, PC codelet reduced from 12 to 9/7 instructions on 32/26 bit
    • EOR/SUB/ADD/ORR/BIC Rd, PC, #0 codelet reduced from 3 to 2 instructions
  • JIT removed temporary stack in allocate_codelet on 26bit IOMD
  • JIT IRQ vector is now a branch to a codelet
  • IOC_trigger_device_9 and IOC_timers were not checking if a JIT task was active before calling the IRQ vector, which could cause a crash when ADFFS initially installs its GraphicsV driver
  • JIT Page Zero is now redirected to a dedicated block to allow code in Page Zero
  • JIT moved all dedicated Page Zero variables into the emulated Page Zero
  • JIT UND32 stack set to a DA on IOMD, if it's not been set by the OS
  • JIT Abort handler semaphone wasn't cleared when reporting an abort, which would cause any JIT aborts generated during JIT shutdown to generate an OS Abort and the shutdown to fail
  • JIT kill_26bit_modules no longer get stuck in a loop if a 26bit Module fails to shutdown cleanly
  • JIT Claim_DataAbort_Vector wasn't clearing the Abort handler semaphone which could cause the JIT to fail when launching a game after terminating a previous game with CTRL-SHIFT-F12
  • Abort handler wasn't checking if an unaligned memory access was within JIT Appspace or DA2 before passing to the JIT
  • JIT OS scratch space (4000-8000) is no longer remapped and left for the OS to provide
  • JIT Event handlers are now called unelevated
  • JIT Free_Transient_Stack was setting the CPU mode instead of disabling IRQ/FIQ
  • JIT call_vector_claim now uses transient stacks and has been recoded to handle re-entrancy when calling code in USR mode
  • R9 is now pointed to the channel SCCB when calling Voice Generator Instantiate or Free entry points (fixes Page Zero access errors in Command Ship and probably others)
  • RISC OS 2 VIDC MODE table added (fixes Enter The Realm)
  • Removed the check for Sound_Config being claimed in IOC_trigger_device_9, as it prevented the IRQv vector being called in Zelanites when SSBC was triggered
  • OS_ClaimDeviceVector now clears the taskID associated with a claimant if it wasn't claimed under the JIT
  • JIT IRQ1V moved into task Page Zero and now defaults to point to a JIT exit instruction
  • JIT *GO is now detected by checking explicitly for "GO[32][00]" as the commandline
  • JIT *GO environment is now passed on if set (ie *GO 8000;!RunImage value)
  • GraphicsV 5 was not using the existing Pointer height if the shape wasn't being updated
  • JIT moved Environment handler free code out of the handler codelet and into ADFFS, to avoid IRQ potentially reallocating the memory and causing a hard lock
  • JIT Undefined hardware vector implemented (used by K.V. to determine ARM2 status)
  • JIT MRC CP15,0,Rx,C2,C0 now triggers the undefined instruction vector if emulating <RO3.10
  • JIT entry now checks for areas in Page Zero that cannot contain code
  • JIT hv_reset_memory_block wasn't checking if the start address was in Page Zero, which would cause a lock when BBC6502Emulator loads BBC code (fixes Enthar Seven)
  • JIT an Abort during a Module Finalise no longer locks the machine
  • JIT OS_Module, 18 now reports "ARM3Support" or "ARM" exists when emulating RO2.01-3.49 and RO3.50-4.99 respectively
  • JIT OS_ReadMemMapInfo now returns the max RAM the JIT supports
  • JIT MRC CP15,0,Rx,C0,C? now returns StrongARM when under the ARMv4 JIT
  • JIT OS_Module, OS_GBPB were not generating an error if X wasn't set
  • SWI handler wasn't triggering an error for SWI that were not passed to the OS, if X wasn't set
  • JIT OS_CallASWIR12 wasn't clearing the X bit before checking the SWI #
  • JIT CallBack handler wasn't correcting PC on IOMD 26bit (fixes Interdictor)
  • JIT CLibCounter, RISCOSLibWord, CLibWord weren't being reset during initialisation (bug introduced in 2.80y)
  • JIT hardware vectors are now set as LDR or B instructions to match the emulated OS version
  • JIT moved all 26->32bit exit points to the top of the JIT translated RMA space (fixes Lemmings 2, Gribbly's Day Out and meets Lotus Turbo Challenge 2's requirement for the IRQ vector branch to be above DF54)
  • JIT kill_26bit_modules now directly calls Module finalise entries and the hypervised SWI exit handler will pass any errors that would ordinarily be reported back to kill_26bit_modules, to ensure errors do not interrupt Module termination
  • JIT RMKill wasn't reporting an error if the Module lookup failed
  • JIT RMKill was freeing the 26bit Module address space even if Finalise failed
  • JIT Sound_RemoveVoice and OS_Release were not reporting errors correctly
  • JIT call_module_entry rewritten to use stacks for variables
  • BASICTrans updated to resolve a bug in its Finalise
  • ExSound updated to 4.03 - checks for Null derefences to fix some of The Fourth Dimension titles
  • JIT 26bit Module loader wasn't correctly checking for 32bit Modules when emulating <RO 3.60
  • JIT kill_26bit_modules may have missed 26bit Modules if Service_Sound was issued while it was checking the Module chain
  • JIT minor optimisations to the hypervised SWI dispatcher
  • JIT SWI exit errors are now trapped during Module finalise and will now also generate an error if X isn't set for the following SWI:
    OS_AddCallBack, OS_AddToVector, OS_CallAfter, OS_CallEvery, OS_Claim, OS_FSControl, OS_GetEnv, OS_GBPB, OS_Heap, OS_HeapSort, OS_Memory, OS_Module, OS_PlatformFeatures, OS_ReadSysInfo, OS_ServiceCall, OS_Release, OS_RemoveCallBack, OS_RemoveTickerEvent, OS_ScreenMode, Sound_InstallVoice, Sound_LinearHandler, Sound_Mode, Sound_QSchedule, Sound_RemoveVoice, Squash_Decompress, Wimp_SlotSize
  • JIT wasn't claiming Environment handlers when the Wimp wasn't active
  • JIT CallBack handler wasn't using the PSR from regdump PC for the corrected return address on 26bit IOMD
  • ADFGO was not calling FSControl_StartApplication with a valid command tail or CAO
  • pre_SWI_veneer wasn't clearing V from SPSR before passing to the OS SWI handler
  • JIT OS_RemoveCallBack was marking the CallBack as removed even if it failed to be removed
  • BASIC26 is now marked at 26bit in its header
  • JIT added additional checks to the SWI chunk in 26bit Modules
  • JIT wasn't bypassing the 26bit Module checks when loading BASICtrans
  • JIT Insert Module into RMA wasn't resetting the memory block the Module was copied too
  • JIT 26bit Module handler wasn't restoring the SWI veneer address before exiting, which could cause CPSR to become corrupt
  • no longer clears flags in R14 on entry to the SWI or IRQ handler
  • UnSqzAIF wasn't correctly checking for a valid Squeeze signature and was also checking all files, not just Absolute (bug introduced in 2.73e)
  • ADFScreenLoad wasn't reporting an error if the file was not found
  • Switched ADFScreenLoad to use OS_File 17 instead of 23, so it works with the protection used in Saloon Cars
  • OS_SpriteOP 3 was corrupting R0 if an error occurred
  • JIT vector calls were not preserving exit flags
  • JIT wasn't restoring the Page Zero Compatibilty page when shutting down
  • JIT Wimp_Initialise now points R2 to a valid string if its unset (fixes Emotions - Search for Humanity)
  • reset_audio now notifies kill_26bit_modules when its about to RMReInit SoundDMA, to prevent issues while its trawling the Module list
  • QTM updated to v1.45d
  • load_26bit_module no longer checks the OS flags in the SWI chunk (fixes Rick Dangerous TrkDriver) (bug introduced in 2.80rc2)
  • Service_ModeChange was incorrectly triggering a GraphicsV 2 for all mode changes, not just Service_ModeExtension mode changes
  • blit_update_VIDC now ignores resolution changes unless HCR or VCR have changed, or the display start/end have encroached into the boarders (fixes Stunt Racer 2000 intro)
adffs280.zip
(1.27 MiB) Downloaded 1568 times
adffs280lite.zip
(439.78 KiB) Downloaded 1326 times
(lite version is for pre RISC OS 3.5 machines only to ease transfer via floppy. No JFD imaging or later OS support files are included)


NOTE: On RISC OS 3.5+ use the PackMan distribution to receive automatic updates. Add the following URL to the PackMan sources:

Code: Select all

https://www.jaspp.org.uk/packages/release

NOTE: You must use "Boot floppy" to run supported games. If you don't, you could end up with a machine that isn't bootable, as some games 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
source280.zip
(328.85 KiB) Downloaded 149 times
Vanfanel
Posts: 576
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.80

Post by Vanfanel »

Hi Jon!

After more than a month, 2.80 package doesn't appear on !Packman.
Any idea on what has gone wrong?
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80

Post by JonAbbott »

Vanfanel wrote: Sat Jul 23, 2022 5:10 pm After more than a month, 2.80 package doesn't appear on !Packman.
Any idea on what has gone wrong?
Check your PackMan install/config. I've just tested and successfully updated on a RiscPC via PackMan.
Vanfanel
Posts: 576
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.80

Post by Vanfanel »

I have !Packman working perfectly well on the Pi4.
It updates the package files correctly and I can install updates for others software managed by it.


UPDATE: I have seen it appears as 2.80-1, is that the expected version number?
The BETA package appears as 2.80-3, which is a bit confusing.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80

Post by JonAbbott »

Vanfanel wrote: Mon Jul 25, 2022 4:09 pm UPDATE: I have seen it appears as 2.80-1, is that the expected version number?
The BETA package appears as 2.80-3, which is a bit confusing.
2.80-1 is the current stable build in the "release" channel.

The versioning in PackMan can get a little confusing. Essentially the beta channel got to 2.80 RC3, so is named 2.80-3 where the release channel is the first release of 2.80 and hence 2.80-1. So 2.80-1 in release is effectively what would be 2.80-4 in beta :?

They're different packages, so you can't directly compare the versions...hence the current confusion.
User avatar
IanJeffray
Posts: 162
Joined: Mon Jan 18, 2021 1:51 pm

Re: ADFFS 2.80 - a "very slow floppy" ?

Post by IanJeffray »

I'm backing up a bunch of floppies and I've got to a Master Compact "Rolling Demo" disc (official Acorn floppy). ADFS 640K "L" format. It takes a full 7 seconds per sector to read with ADFFS on my SARPC. Wild. What could cause that sort of behaviour? Is this even interesting? Other "L" format discs read with ADFFS as quickly as normal, and indeed this disc reads very snappily via ADFS as all "L" discs do.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80

Post by JonAbbott »

I'm not sure, I don't have an answer for you. Are you sure it's not 7 seconds/track? 7 seconds/sector would take 1hr 14 mins per disc!

The ADF imager is really dumb, it doesn't stagger the sector reads and uses Poll_Idle between each sector. If it missed every sector read because of the Wimp updates, the worst case would be one full rotation per sector...possibly two or more if other Wimp apps are running. If this was the case though, you'd expect to see it on every floppy.
Post Reply