ADFFS 2.80 public beta

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

Re: ADFFS 2.80 public beta

Post by JonAbbott »

I've listed all the packages in the OP and am slowly working my way though them, listing any issues and fixing game bugs as I go.

Except for the IOMD build, which I need to bug-fix, 2.80y can be considered a release candidate.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

I've spotted an issue with 26bit Module clean-up after CTRL-SHIFT-F12, so would advise rebooting between testing games until resolved.

Examples. Re-running any of these after terminating via CTRL-SHIFT-F12 will lock the machine:
  • The Arc/A3000 Christmas Box - Brixx
  • BlastOn
  • BlastOn [UCS]
  • Break 147 & Superpool
EDIT: This issue is resolved with 2.80y3, which is both in the OP and on PackMan
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

Whilst fixing the Burn 'Out CPU detection, I noticed a bug in the SWI handler that's been around for 10 years, where it wasn't triggering an error if X wasn't set for SWI's that were not passed on to the OS. That is now fixed along with a few other bugs, details in the OP.

2.80y-4 in the OP and on PackMan along with an update Burn 'Out package.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

2.80y-5 in the OP and on PackMan, which fixes a bug introduced in 2.80y-4
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

2.80rc1 in the OP and on PackMan, which fixes a bug in OS_ReadMemMapInfo when emulating IOC and a bug that was preventing games writing to the Undefined hardware vector
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

I've briefly tested every packaged game on a Pi3, checking they load and you can get into the gameplay - I've not tested further than that though.

Issues are noted in the OP and in some cases I've already fixed the issue either in the package, the Boot script or by bug fixes in 2.80rc2. I'm not quite ready to upload rc2, so will upload all in one hit in due course.

The majority of issues, as expected, are Null dereferences which I hope to fix before the final release as they might require Boot script updates.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

rc2 is taking somewhat longer than I would have liked to get ready. You'll note in the OP that I've fixed dozens of games with rc2, but whilst investigating the few non-Null dereference issues, its highlighted some fatal flaws that I would like to fix:

26bit Module forced shutdown:
  • If an unhandled Abort occurs during Finalise it invariably hangs the system or leaves it in an unstable state. This has been resolved by intercepting Aborts that would ordinarily go to the OS and essentially ignoring the Finalise code
  • Poorly written Modules that use the non-X form of SWI's would trigger the Error handler and effectively bypass their forced shutdown. This required a complete rewrite of the shutdown code, which no longer uses OS_Module 4 and instead calls the Finalise code directly. I had first attempted to wrap an Error handler around the OS_Module 4 call, but noticed that was resulting in a DEADDDEAD (a magic Workspace pointer value used when Finalise doesn't exit cleanly with V clear) Module that could not be removed and odd Supervisor stack corruption
JIT and intercepted SWI dispatch exit handlers:
  • When an error occurred during an intercepted SWI in the regular SWI dispatch handler (the one that's always active whilst ADFFS is loaded), it wasn't checking the X bit and triggering the Error handler if unset. This was resulting in SWI errors silently failing. Thankfully very few SWI were affected by this, but to fix required a painstaking manual check of every single SWI handler
  • The JIT SWI dispatch was also not checking the X bit on exit and generating errors. This has been a bit more complicated to fix as every SWI call from JIT code goes via this and it also needed to silently pass errors back during 26bit Module forced shutdown
Exit/Error Environment handlers:
  • ADFFS has to sit between the Exit/Error handlers that are active when a code is launched via OS_FSControl Run or StartApplication and the game Exit/Error handlers, primarily to allow seamless transitions between 26/32bit code-space. Currently this only supports the Wimp Exit/Error handler, but needs to support all Exit/Error handlers as they might also be pointing at the Supervisor, Debugger or other 3rd party handlers. I'm still figuring out the best way to handle this in a way that doesn't cause the JIT in shutdown early when the Exit handler is called during a program launched in an Obey file
Event handler:
  • Similar to the Exit/Error Environment handlers, the Event handler has to handle transitions between 26/32bit code-space. This currently isn't the always case, which is causing hard locks if a game uses OS_Control or OS_ChangeEnvironment to read the current Event handler and subsequently calls the address returned. I should note this is not an issue if the game replaces the Event handler and uses the previous handler address returned as that does return a pointer to 26/32bit transition code
Long story short, what started as a minor bug-fix has turned into a major code changes. Unfortunately this will mean retesting every game again and no doubt knock-on effects to investigate and resolve.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

I'm still working on RC2, which is very close to a release. I've made all the code changes required and am currently fixing the last few bugs.

I had hoped to fix the list of game issues noted in the OP for RC2, but given the amount of time its taken to implement the code changes required off the back of RC1, they will have to wait for RC3 or the final release.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

RC2 now available in the OP and via PackMan for testers, along with many package updates as noted in the OP.

EDIT: Changes in 2.80rc2 are now noted in the OP and the following packages have been updated:
  • 3D-Construction-Kit_1.0-3
  • Alone-in-the-Dark_1.00-4
  • Arcturus_0-3
  • Bambuzle_1.50-3
  • Break-147-and-Superpool_0-3
  • Burn-Out_0-3
  • Burn-Out-[SA]_0-3
  • Chocks-Away-Compendium-[SA]_0-4
  • Chopper-Force_0-3
  • Chopper-Force-[SA]_0-2
  • Drop-Ship_0-3
  • Drop-Ship-[SA]_0-3
  • Legend-of-the-Lost-Temple_0-4
  • Quark_0-3
  • Manchester-United-Europe_2.1-3
  • Nevyron-[SA]_0-3
  • Saloon-Cars-Deluxe_2.0-4
  • Saloon-Cars-Deluxe-[SA]_3.3-2
  • SimCity2000-[A5000]_0-4
  • Software-42-Collection_0-2
  • Virtual-Golf_1.0-3
  • Wizard-Apprentice_0-3
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

RC3 now available in the OP and via PackMan for testers, along with the following package updates to resolve issues noted in the OP.

Whilst investigating why Stunt Racer 2000's intro appeared corrupt on a Pi, I noticed a problem in the way the screen dimensions where being calculated. It was redefining the physical screen size one frame late and wasn't correctly dropping all unnecessary screen size changes. The knock on effect of fixing the issue is that some games that set VIDC registers may now appear to be a different "size" on screen compared to previous ADFFS builds.

Please let me know if you spot any games that look incorrect, I've tested a few games that I know to adjust VIDC registers, but not all.

The other changes in this build are minor bug fixes from a second sweep of all games.
  • Boogie Buggy (1991) (The Fourth Dimension)
  • Chequered Flag [RO3 version] (1992) (Cambridge International Software)
  • Cyborg (1992) (Alpine Software)
  • Cycloids (1993) (Software 42)
  • E-Type II (1994) (The Fourth Dimension)
  • Exotic Adventures of Sylvia Layne, The (1993) (The Fourth Dimension)
  • F.R.E.D. (1993) (Software 42)
  • Gods [RPC version] (2001) (R-Comp Interactive)
  • High Risc Racing (1995) (Modus Software)
  • Kaptain Konflict (1990) (Calderglen Computers)
  • Logic Mania (1996) (The Fourth Dimension)
  • Nevryon [SA version] (2001) (The Fourth Dimension)
  • Pushy (1997) (The Fourth Dimension)
  • Saloon Cars Deluxe [SA version] (2000) (The Fourth Dimension)
  • Spobbleoid Fantasy [SA version] (2002) (The Fourth Dimension)
  • StarTrader (1989) (GEM Electronics)
  • Trivial Pursuit (1989) (Domark)
  • White Magic (1989) (The Fourth Dimension)
  • White Magic 2 (1989) (The Fourth Dimension)
  • WolfPack (1992) (Software 42)
  • Word Up Word Down (1989) (GEM Electronics)
  • Zodiac - Aries (1994) (GamesWare)
Post Reply