ADFFS 2.80 public beta

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

ADFFS 2.80 public beta

Post by JonAbbott »

The 2.80 JIT contains changes to all re-encoded instructions that set PC and has the potential to break some games. For this reason I'm opening it up as a public beta. Official testers, please obtain this via PackMan in the usual way to ensure you get daily builds.

Note that unless specific bugfixes are noted below for RISC OS 3.11, ADFFS 2.80 is targetted at modern RISC OS machines running RISC OS 5.

The JIT changes remove all checks that were previously performed within the translated code to detected if the CPU was about to branch into 26bit address space. Now, instead of performing the check every time PC is changed, it relies on the fact ADFFS is going to hypervise any exits from 26bit to 32bit space and assumes the branch is always into 26bit address space.

Changes
  • 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 (2.80d)
  • 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) (2.80f)
  • JIT <alu>S PC, PC wasn't clearing Rn (fixes Pacmania) (2.80g)
  • JIT ChangeEnvironmentV_handler now checks for environment handlers being pointed at hypervised handlers and corrects the address (fixes CTRL-SHIFT-F12 in Populous) (2.80g)
  • JIT _needs_pre_veneer now corrects the hypervised previous environment handler codelet address (fixes CTRL-SHIFT-F12 in Populous) (2.80h)
  • 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) (2.80i)
  • JFD imager memory requirement reduced from 1920K to 1056K for DD and 1856K for HD (2.80k)
  • JFD imager no longer dependent on SparkFS and now extracts the Boot script before attempting to image the floppy (2.80l)
  • JIT now uses Wimp_Extend to determine the initial Appspace memory allocation instead of Wimp_SlotSize, to better support Pi4 (2.80m)
  • 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 (2.80n)
  • JIT codelet optimizations: (2.80o)
    • 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 (2.80p)
  • 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 (2.80q)
  • JIT moved all dedicated Page Zero variables into the emulated Page Zero (2.80r)
  • JIT UND32 stack set to a DA on IOMD, if it's not been set by the OS (2.80s)
  • 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 (2.80t)
  • 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 (2.80u)
  • JIT Event handlers are now called unelevated (2.80v)
  • JIT Free_Transient_Stack was setting the CPU mode instead of disabling IRQ/FIQ (2.80w)
  • 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) (2.80x)
  • 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 (2.80y)
  • 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 (2.80y2)
  • JIT OS_Module, 18 now reports "ARM3Support" or "ARM" exists when emulating RO2.01-3.49 and RO3.50-4.99 respectively (2.80y4)
  • 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 (2.80y5)
  • 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) (2.80rc2)
  • 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 (2.80rc3)
  • 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)

Known issues
  • CTRL-SHIFT-F12 will not terminate the following games, which run natively:
    • Botkiller
    • Exodus
    • Freddy's Folly
    • Giant Killer
    • Gloop (from Logic Mania)
    • MicroDrive 32M
    • Minotaur
    • SunBurst
    • TwinWorld
    • Wolfenstein 3D
    • Zool - Ninja of the 'Nth' Dimension
  • Games that alter the Wimp Mode might cause a lock when exiting back to the Wimp. This appears to be an external issue when the Wimp can't handle the MODE. Titles need patching to not mess with the Wimp:
    • 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
  • Burn 'Out [SA} - hangs on the intro screen if the SA JIT is used
  • Dominate - has corruption on the wipeout screen, which is corruption on the original floppy. Need to source another copy to image
  • 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
  • Hostages - Music might be wrong. Check against a physical RO2, ARM2 based machine
  • Inferno doesn't display correctly if run after Interdictor is terminated via CTRL-SHIFT-F12
  • James Pond 2: Robocod (non-SA) - music key is wrong. Also happens on physical, might be related to a RISC OS update or Module version
  • The Last Ninja - crashes while loading on some machines

Package testing
2067 BC
3D Construction Kit

Abuse - Aborts when starting a new game
Acheton and Kingdom of Hamil
Adventure Collection, The
Adventures, classic compilation
Aggressor
Aggressor Macho Edition
Air Supremacy
Aldebaran
Alerion
Alien Invasion
Alone In the Dark
Apocalypse
Arc/A3000 Christmas Box, The
Arcade 3
Arcade Soccer
Arcendium
ArcPinball
Arcturus
Asylum
Asylum [Acorn Arcade]
Avon and Murdac
Axis
Ballarena
Ballarena [UCS]
Bambuzle
Battle Chess
Battle Tank
Big Bang
Birds of War
Black Angel [16-02-1993]
Blaston
Blaston [UCS]
Blitz!
Blood Sport
BloodLust
BlowPipe
Bobby Blockhead vs The Dark Planet
Boogie Buggy
Botkiller2
Bouncer
Break 147 & Superpool
Break 147 & Superpool [SA version]

Brutal Horse Power - Audio is crackly
Bubble Fair
Bubble Impact
Bug Hunter & Moondash
Bug Hunter in Space
Burn'Out
Burn'Out [SA version]
Cannon Fodder
Carnage Inc.
Cartoon Line part one
Cartoon Line part one [UCS]
Cascade
Cataclysm
Cataclysm [SA version]
Caverns
Champions
Chaos Engine, The
Chequered Flag [RO3 version]
Chocks Away
Chocks Away Compendium [SA version]
Chopper Force
Chopper Force [SA version]
Chuck Rock
Chuck Rock [SA version]
Cobalt Seed, The
Command Ship
Confusion
Conqueror
COPS
Corruption
Crisis
Crystal Maze, The
Cyber Ape
CyberZone

Cyborg - Null dereference in FileSwitch @ C5A0 after intro. This appears to be a bug in RISC OS, which I've raised on ROOL
Cycloids
DarkWood
Deadline
Deeva
Demon's Lair [SA version]
Diggers
DinoSaw
Dominate
DragonBall
Dreadnoughts
Drifter
Drifter [SA version]
Drop Ship
Drop Ship [SA version]

Dune II - Battle for Arrakis - Abort @ 45A6C. Page Zero access after skipping the intro
Dune II - Battle for Arrakis [CD version]
Dungeon, The
Ego: Repton 4
Elite [v1.14]
Emotions - Search for Humanity
Empire Soccer 94
Enter The Realm
Enter The Realm [SA version]
Enthar Seven
E-Type
E-Type Compendium [SA version]
E-Type II
Exotic Adventures of Sylvia Layne, The
F.R.E.D.

Fervour
Fine Racer
Fire & Ice
Fireball II
Fish!
Flashback
Flying High - Euroblaster/Joust
FORAY!
Formula Fun
Frak!
Fugative's Quest
Galactic Dan
Global EffectGods
Gods [RPC version]
Gribbly's Day Out
Grievous Bodily 'ARM
Groundhog
Guild of Thieves, The
Guile
Hamsters
Heimdall
Hero Quest
Heroes of Might and Magic 2: The Succession Wars
High Risc Racing
Holed Out!!
Holed Out!! Compendium [SA version]
Hostages
Hoverbod
Humanoids and Robotix
Ibix the Viking
Inertia

Inferno
Interdictor
Interdictor II [v1.3]
Iron Lord
Ixion
Jahangir Khan World Championship Squash
James Pond
James Pond [SA version]
James Pond II Robocod
James Pond II+ Robocod
James Pond Underwater Agent and Running Water
Jet Fighter
Jinxter
K.V. [v1.01]

Kaptain Konflict - music timing isn't consistent
Karma - The Flight Trainer
KerBang!
Krisalis Collection, The
Labyrinth
Last Days of Doom, The and Hezarin
Last Ninja, The
Leeds United
Legend of the Lost Temple, The
Lemmings
Lemmings 2: The Tribes

Lemmings 2: The Tribes [SA version] - randomly hangs when starting a level and when pressing CTRL-SHIFT-F12
Logic Mania
Mad Professor Mariarti
Maddingly Hall
Magic Pockets
Magnetoids
Man at Arms
Manchester United

Manchester United Europe - minor T1 timing issue affecting the palette at the top of the screen
Master Break
Memory Magic
MicroDrive
MicroDrive World Edition
MiG-29 Fulcrum
MiG-29M Super Fulcrum
Mirror Image and Merp
Missile Control
Morph
Mr Doo
Nebulus
Nevryon
Nevryon [SA version]
No Excuses
OddBall
Oh, No! More Lemmings
Olympics, The
Omar Sharif's Bridge
Orion
Overload (Clares)
Overload (Paradise)
Pac-mania
Pac-mania [Learning Curve version]
Pandora's Box
Pandora's Box [SA version]
Paradroid 2000
Pawn, The
Pesky Muskrats
Pipe Mania
Pipe Mania [RPC version]
Plague Planet
Play It Again Sam 2
Play It Again Sam 3
Poizone
Populous
Populous [RPC version]
PowerBand [SA version]
PowerBand [v2.0]
Provocator
Pushy
Put It!
Pysanki
Quark
Quazer
Quest For Gold
Quest For Gold [Learning Curve version]
Ravenskull
Redshift
Rekall
Repton 1

Repton 1 & 2 Special Offer Pack - Repton 2 has flashing colours on the intro screen
Repton 3
Repton 3 Four Game Compilation
Revelation! [BUZZ version]
Revolver
Rick Dangerous
Rise in Crime
Rockfall
Rotor
S.W.I.V.
- defaults to Joystick (press F7/F10 to change to keyboard)
S.W.I.V. [BUZZ version] - defaults to Joystick (press F7/F10 to change to keyboard)
Sally and Wally
Saloon Cars
Saloon Cars Deluxe
Saloon Cars Deluxe [SA version]
Sensible Soccer
Serpents
Silver Ball
SimCity 2000 [A5000 version]
SimCity 2000 [RPC version]
Simon the Sorcerer
Slappit
Small
Software 42 Collection: Raw Power
SpeedBall 2
SpeedBall 2 [RPC version]
Spheres of Chaos
Spheres of Chaos 2
Spobbleoid
Spobbleoid Fantasy
Spobbleoid Fantasy [SA version]
Sporting Triangles
SpySnatcher
Starch
StarTrader
Stranded!

Stunt Racer 2000 - Removes RAM: on exit
Stunt Racer 2000 [SA version] - Removes RAM: on exit
Super Snail
Superior Golf
Syndicate+
Tactic
Tactic [UCS]
Talisman
Technodream

TEK 1608 - FileCore in use error if terminated via CTRL-SHIFT-F12. Leaves BA debug file open
Terramex
Thundermonk
Top Banana
Tower of Babel
Trivial Pursuit
UIM
Warlocks

Waterloo - hangs if Cannon sound is enabled
WaveLength
White Magic
White Magic 2
Wizard Apprentice
Wolfenstein 3D
WolfPack
Word Up Word Down
World Class Leaderboard
WorldScape
WorldScape [pre-release v0.91]
Xenon 2: Megablast
X-Fire
X-Run
Zalaga
Zarch
Zelanites - The Onslaught
Zodiac - Aries: Square Route



Fixed issues
  • 3D Construction Kit - random hang when firing caused by Page Zero access @ 2F3CC/2F3D4 (fixed in 3D-Construction-Kit 1.0-3)
  • Alerion - crashes if you press CTRL-ESC on the Menu screen (fixed in Alerion 0.6)
  • Alien Invasion - hangs after clicking Exit Menu and CTRL-SHIFT-F12 (fixed in Alien-Invasion 2.00-2)
  • Alone In the Dark - Null dereference after selecting Male/Female character (fixed in Alone-in-the-Dark 1.00-4)
  • Arc/A3000 Christmas Box, The - !BrixxEditor fails to load as it needs Brixx$Dir to be set (fixed in Arc-A3000-Christmas-Box 0.4)
  • Arcturus - currently works but alters SVC R13, which causes CLib Modules to crash (eg USBJoystick) (fixed with 2.80v by switching Event calls to USR, until CPU Paravirtualization is implemented)
  • Arcturus - Null dereference in CoconizerPlayer after the initial intro screen. Null dereference @ 931C4 when starting a level (fixed in Arcturus 0-3)
  • Asylum - locks at CTRL-SHIFT-F12. A problem in its Sound Modules (fixed in Asylum 1.0-4 and Asylum-[Acorn-Arcade] 2.02-3)
  • Bambuzle - Null dereference in a Sound Module while loading (fixed in Bambuzle 1.50-3)
  • Boogie Buggy[/color] - crashes swapping discs. Null dereference @ AF24 - after pressing Q in Tinkers Tree. Null dereference @ CB18 - after entering Sweet Meadow (fixed in Boogie-Buggy 0-3)
  • Burn'Out - not detecting the CPU correctly (fixed with 2.80y-4 and Burn-Out 0-3)
  • Burn'Out - running at double speed (fixed in Burn-Out 0-3)
  • Burn'Out [SA version] - not detecting the CPU correctly (fixed with 2.80y-4)
  • Burn'Out [SA version] - running at double speed (fixed in Burn-Out-[SA} 0-3)
  • Champions - Jahangir Khan World Championship Squash - can't move the cursor with USBJoystick loaded. It's a bug in its RTFM Joystick code (fixed with 2.80y)
  • Chequered Flag [RO3 version] - Randomly get a Null dereference in the Engine Module @ 290 and @ 438 after clicking "Demo" or "Start" (fixed in Chequered-Flag-[RO3] 0.4)
  • Chocks Away Compendium [SA version] - flashing colours on the title screen (fixed in Chocks-Away-Compendium-[SA] 0-4)
  • Chopper Force - Null dereference in ChopperForceIntro Module while loading @ 33C (fixed in Chopper-Force 0-3)
  • Chopper Force [SA version] - Null dereference in ChopperForceIntro Module while loading @ 33C (fixed in Chopper-Force-[SA] 0-2)
  • Cycloids - Null dereference in Voice handler @ 915C while loading (fixed in Cycloids 1.1-3)
  • Demon's Lair [SA version] - Null dereference in ExSound @ 7A8 (fixed with 2.80rc2)
  • Dungeon, The - Null dereference in ExSound @ 7A8 (fixed with 2.80rc2)
  • E-Type II - Null dereference @ 149F8 while loading (fixed in E-type-II 1.0-3)
  • Emotions - Search for Humanity - Null dereference @ 36F0 in WindowManager while loading (fixed with 2.80rc3)
  • Enter The Realm - screen geometry isn't correct, showing some of the offscreen workings on the right (fixed with 2.80x)
  • Enter The Realm - File 'INTRO.INTROPAL' not found at line 160 while loading (fixed with 2.80rc1)
  • Enthar Seven - locks the machine after pressing SPACE to start (fixed with 2.80y)
  • Exotic Adventures of Sylvia Layne, The - Null dereference @ 4AF04 when starting a level (fixed in Exotic-Adventures-Sylvia-Layne 1.57-4)
  • Fireball - Aborts at a Page Zero access after pressing SPACE to play (fixed in Fireball-II 0.6)
  • Fireball 2 - music issue from 01:49 (fixed in Fireball-II 0.6)
  • Flying High - Euroblaster/Joust - Null dereference @ 36F0 in WindowManager (fixed with 2.80rc3)
  • Formula Fun - locks at CTRL-SHIFT-F12 and locks if run a 2nd time (fixed with 2.80y)
  • Frak! - locks while loading, after showing the game logo (SlowVideo Module +CC tries to enable IRQ - needs CPU Paravirtualisation to work) (fixed in Frak 0.2 by removing the Module - it's not required)
  • F.R.E.D - Null dereference @ FF4C when colliding with a baddie (fixed in FRED 1.02-3)
  • Gods [RPC version] - runs at half speed (fixed with 2.80x)
  • Gods [RPC version] - Null dereference @ 39E5C while loading (fixed in GODS-[RPC] 0-4)
  • Gribbly's Day Out - hangs or crashes when starting a level. Disk error 10 loading (fixed with 2.80rc2)
  • Heimdall - Axe mini-game is resetting the cursor position (fixed in Heimdall 0.3 for StrongARM or newer CPU's)
  • High Risc Racing - Null dereference @ 1B384 while loading (fixed in High-Risc-Racing 1.23u-3)
  • Interdictor - randomly crashes when pressing keys or mouse button. It's Abort handler needs bug fixing to diagnose (possibly fixed with Interdictor 1.4-3)
  • Jahangir Khan World Championship Squash - can't move the cursor with USBJoystick loaded. It's a bug in its RTFM Joystick code (fixed in Jahangir-Kahn-Squash 1.02-3)
  • James Pond II Robocod - Null dereference @ 8024 (fixed with 2.80y-3)
  • K.V. - randomly prompts for the disk to be inserted (fixed in K.V. 1.01-3)
  • Kaptain Konflict - doesn't show your main character Sprite (fixed in Kaptain-Konflict 0-3)
  • Leeds United - Page Zero access issue while loading (fixed with 2.80y)
  • Legend of the Lost Temple, The - crashes after the intro sequence with an Abort on instruction fetch at 0 (fixed with 2.80rc2)
  • Legend of the Lost Temple, The - Null dereference @ BASIC +4754 in title screen (fixed in Legend-of-the-Lost-Temple 0-4)
  • Logic Mania - Gloop: the music is off by default (fixed in Logic-Mania 0-4)
  • Manchester United Europe - not detecting the RAM size correctly (fixed with 2.80rc1)
  • Mirror Image and Merp - needs the original floppy mounted (fixed in Mirror-Image-and-Merp 0.2)
  • Nevryon - hangs if terminated via CTRL-SHIFT-F12 (fixed with 2.80rc2)
  • Nevryon [SA version] - hangs if terminated via CTRL-SHIFT-F12 (fixed with Nevyron-[SA] 0-3)
  • Overload (Clares) - Null dereference @ A684 when starting a level (fixed with 2.80rc3)
  • Pandora's Box - File 'Object.Protector' not found (fixed with 2.80rc2)
  • Pushy - Null dereference @ 66158 when starting a level (fixed in Pushy 1.11-3)
  • Quark - intro screen corrupt. Null dereference @ 1A758 after intro in Voice generator. Page Zero write @ UtilityModule +370C when starting a level (fixed in Quark 0.3)
  • Redshift - CTRL-SHIFT-F12 hangs as it tries to RMKill RSSND (fixed with 2.80rc2)
  • Rick Dangerous - "SWI &44D000 not known" error after intro (fixed with 2.80rc3)
  • Saloon Cars - intro doesn't display (fixed with 2.80rc2)
  • Saloon Cars Deluxe - File 'EN1' not found (fixed in Saloon-Cars-Deluxe 2.0-4)
  • Saloon Cars Deluxe [SA version] - File 'EN1' not found (fixed in Saloon-Cars-Deluxe-[SA] 3.3-2)
  • Saloon Cars Deluxe [SA version] - screen corruption and crash when CTRL-SHIFT are held (fixed in Saloon-Cars-Deluxe-[SA] 3.3-3)
  • SimCity 2000 [A5000 version] - undefined instruction at 8014 (fixed in SimCity20000-[A5000] 0-4)
  • Slappit - failing disk protection (fixed with 2.80x)
  • Software 42 Collection: Raw Power - Null dereference @ B6574 when hit and @ AFB78 randomly when colliding (fixed with Software-42-Collection 0-2)
  • SpeedBall 2 / SpeedBall 2 [RPC version] - abort on data transfer @ 2D748 pressing a key on the main menu (fixed with 2.80rc2)
  • Spobbleoid Fantasy [SA version] - crashes with CTRL-SHIFT-F12 (fixed in Spobbleoid-Fantast-[SA] 1.2-2)
  • StarTrader - Hangs when you quit the game (fixed with 2.80rc2)
  • StarTrader- Null dereference in sound Module when quit (fixed in StarTrader 0-3)
  • Stunt Racer 2000 - Null dereference @ +7A8 in ExSound (fixed with 2.80rc2)
  • Stunt Racer 2000 - Intro screen corrupt (fixed with 2.80rc3)
  • Stunt Racer 2000 [SA version] - Null dereference @ +7A8 in ExSound (fixed with 2.80rc2)
  • Superior Golf - flashing colours on the intro screen (fixed with 2.80rc2)
  • T.A.N.K.S. - Abort on data transfer in ADFFS (hv_OS_CallASWI_pass_to_os line 2711) (fixed with 2.80rc2)
  • Trivial Pursuit - Doesn't remove WFS or Voices when terminated via CTRL-SHIFT-F12 (fixed in Trivial-Pursuit 0-3)
  • Virtual Golf - File 'MODULE' not found (fixed in Virtual-Golf 1.0-3)
  • White Magic - CTRL-SHIFT-F12 hangs (fixed with 2.80rc2)
  • White Magic - Null dereference in HIT @ +33C when terminated via CTRL-SHIFT-F12 (fixed in White-Magic 0-3)
  • White Magic 2 - CTRL-SHIFT-F12 hangs (fixed with 2.80rc2)
  • White Magic 2 - Null dereference in HELLOWE @ +33C when terminated via CTRL-SHIFT-F12 (fixed in White-Magic-2 0-3)
  • Wizard Apprentice - CTRL-SHIFT-F12 hangs (fixed in Wizard-Apprentice 0-3)
  • WolfPack - Null dereference at !WolfPack1.Music +36C (fixed in WolfPack 1.00-3)
  • Word Up Word Down - CTRL-SHIFT-F12 hangs (fixed with 2.80rc2)
  • Word Up Word Down - Null dereference in sound Modules when quit and desktop left unresponsive (fixed in Word-Up-Word-Down 0.3)
  • Zelanites has no sound from 2.80u (fixed with 2.80x).
  • Zodiac - Aries: Square Route - Null dereference @ C34C when starting a level (fixed in Zodiac-Aries 0-4)
The final release is available here
Vanfanel
Posts: 574
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.80 public beta

Post by Vanfanel »

I am doing some tests, sir!
Most games seem to work. The ones that fail, I will report them here, by updating this post.

-Heimdall: Starting a game "with attribute sections", the game starts straight into the axe-throwing minigame with a VERY incontrolable cursor (ie: it doesn't go into the attributes section!)

-Inferno (Paradise): Game exits automatically after clearing the first level.

-Last Ninja: Fails to launch sometimes ("Attempt to use badly nested error handler (or corrupt R13)", and when it works, it hangs at quit via CTRL+SHIFT+F12.

-PacMania: Hangs just before starting actual gameplay ("Application may have...", error can't be read).

-Wavelenght: Hangs on quit (it's a WIMP program so it's expected I guess, as we talked).

-Populous: Sometimes fails and hangs when clicking on "Conquest" (shows an error popup but I can't read it, letters seem "compressed").

-Elite: First time it's lauched, it fails with: "Internal error, no stack for trap handler: Internal error: abort on data transfer at &2036ABD0, pc = 00000000: registers at 00065B1C"
Second time, icon appears on the iconbar as expected and game can be run.
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

Vanfanel wrote: Sun Jan 02, 2022 2:29 pm -Heimdall: Starting a game "with attribute sections", the game starts straight into the axe-throwing minigame
It seems to be doing the same back to 2.72 so I'll investigate further
Vanfanel wrote: Sun Jan 02, 2022 2:29 pm -PacMania: Hangs just before starting actual gameplay ("Application may have...", error can't be read).
Fixed with 2.80g, there was a bug in the re-encoding of ORRS PC, PC, #3
Vanfanel wrote: Sun Jan 02, 2022 2:29 pm -Last Ninja: Fails to launch sometimes ("Attempt to use badly nested error handler (or corrupt R13)", and when it works, it hangs at quit via CTRL+SHIFT+F12.
I couldn't reproduce the launch issue, but I'm seeing the hang when terminated so will investigate
Vanfanel wrote: Sun Jan 02, 2022 2:29 pm -Inferno (Paradise): Game exits automatically after clearing the first level.
-Wavelength: Hangs on quit (it's a WIMP program so it's expected I guess, as we talked).
-Populous: Sometimes fails and hangs when clicking on "Conquest" (shows an error popup but I can't read it, letters seem "compressed").
-Elite: First time it's lauched, it fails with: "Internal error, no stack for trap handler: Internal error: abort on data transfer at &2036ABD0, pc = 00000000: registers at 00065B1C"
I couldn't reproduce any of these issues, please see if the problems also occur with 2.80g
Vanfanel
Posts: 574
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.80 public beta

Post by Vanfanel »

@Jon: For the issues you can not reproduce, I am seeing them in 2.80g BETA too.
So maybe we don't have the same Risc OS ROM version? Mine is: 5.28 (16 Dec-20)

And I am on a Raspberry Pi 4, if it's important.
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

I'm testing on a Pi3 running RO 5.29 (29 Jul 21). I suppose its possible there are differences now starting to show with the Pi4, but as I don't have one to test I can't be certain.

I presume you don't see any of these issues with ADFFS 2.74?
Vanfanel
Posts: 574
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.80 public beta

Post by Vanfanel »

@Jon: I only brought a Pi4 with me (I am living for a while on a small village), so I am very sorry for the confusing reports: yes, I have re-tested with ADFFS 2.74 and I am seeing the Inferno and Elite issues.
In fact, one of the times I saw an "unimplemented instruction" with Inferno when it autoquits after exiting the first level.

Should I install latest Risc OS BETA ROM?
Should I stop testing and test on Pi3 when I go back to where my Pi3 is?

EDIT: I installed the latest Risc OS BETA ROM (30-dic-2021) and the same problems are present, so it seems to be a Pi4 vs Pi3 thing.
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

JonAbbott wrote: Mon Jan 03, 2022 12:20 pm
Vanfanel wrote: Sun Jan 02, 2022 2:29 pm -Heimdall: Starting a game "with attribute sections", the game starts straight into the axe-throwing minigame
It seems to be doing the same back to 2.72 so I'll investigate further
Having now tried it under RISC OS 3, the mini games are how you determine your stats. Select option 2 (skip stats) to avoid the mini game.
Vanfanel wrote: Sun Jan 02, 2022 2:29 pm -Last Ninja: Fails to launch sometimes ("Attempt to use badly nested error handler (or corrupt R13)", and when it works, it hangs at quit via CTRL+SHIFT+F12.
This looks like a bug in the NinjaSong Module. I'll debug it and come up with a fix.

EDIT: I'll updated the package at some point, but you can fix in the meantime by adding the following to the !Run alongside the other bugfix:

Code: Select all

| Fix bug in NinjaSong which uses SWI without the X flag
IF ADFFS$CPUID>=&A10 THEN JITMEMORYA 910 EF000020 EF020020 NinjaSong
Vanfanel
Posts: 574
Joined: Mon Sep 16, 2013 12:01 am

Re: ADFFS 2.80 public beta

Post by Vanfanel »

@Jon: That fixes "Last Ninja" quit error, indeed.

But let me insist: is the Pi4 still an option for bug reporting?
I would happily donate a Pi4 if it helps, since I consider the Pi400 to be the best Risc OS computer ever :)
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

Vanfanel wrote: Mon Jan 03, 2022 3:20 pm is the Pi4 still an option for bug reporting?
Provided you confirm the same issues occur on 2.74 then it would be useful, so I know which games to investigate later.

I'll purchase a Pi4 to see if I can reproduce the issues you're seeing.
JonAbbott
Posts: 2600
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

JonAbbott wrote: Mon Jan 03, 2022 8:53 pm I'll purchase a Pi4 to see if I can reproduce the issues you're seeing.
Of course they're out of stock everywhere, as are Pi400's.

I've looked at the documented erratum and there are a few that might be at play, in particular:
  • 1387635 - DSB is insufficient to ensure translation table entries being validate are visible to subsequent translations
There's a documented workaround for this one, so I can knock up a test build if RISC OS hasn't already implemented the workaround in its TLB code.

There could also be instruction differences at play, although I can't find any documentation around deprecations on the A72 - it may be a case of reading every page in the ARM ARM to find them :shock:

Then we have OS build differences and 3rd party apps to consider. Hitting ESC during boot and bypassing the !Boot sequence can rule 3rd party interaction out. To rule out the OS build we could update to the latest nightly build and I can roll back to 5.28 to quickly rule that out.

Finally there's Joysticks, which can easily be ruled out by not connecting any.

I'll keep checking suppliers and will order a Pi4 or Pi400 once they're available to purchase again. Until we do a completely like-for-like comparison, I can't be certain what the issues are being caused by.
Post Reply