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 »

If added all the known issues I'm tracking to the OP, if you'd like to double check I've not missed any.

I've got another underlying change for the next build, which moves IRQ1V into the task's Page Zero, so I would hold fire on further testing until I release. It's implemented and I'm doing the final debugging/testing.

IRQ1V is the last Page Zero variable that was being tracked separately and once moved I can relocate Page Zero into a DynamicArea, with a seperate Page Zero for each task. I'll also look at moving the IOC/IOMD state into a DA in due course, which is another step towards each task having a dedicated VM.

Further ahead I'll implement CPU Paravirtualization, which will allow games to change CPU mode and correctly maintain the PSR, SPSR and R8-R14.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

2.80x in the OP and via PackMan for testers. This build moves IRQ1V back into Page Zero and adds RISC OS 2 default VIDC1 MODE parameters.

The following games have updated packages to resolve issues noted in the OP:
  • Enter The Realm
  • Gods [RPC version]
  • Slappit
JonAbbott
Posts: 2938
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 with a VERY uncontrollable cursor
I've tried the game on various physical machines and OS versions and it's the same on all of them - the axe does not follow the actual mouse pointer.

Based on that knowledge, I decided to take a look at what the game code was doing and sure enough it does not actually read the Mouse position in the Axe mini-game. It sets it, based on the following calculations:

Code: Select all

Mouse X [R12,#48] = [R12,#48]+[R12,#36]-[R12,#32]+[R12,#72]
Mouse Y [R12,#52] = [R12,#52]+[R12,#28]-[R12,#24]+[R12,#76]
The last three values are all calculated to be +-2, so my guess is the author forgot to add an OS_Word 21,6 to store the current pointer position at [R12,#48] / [R12,#52] before the new position calculation.

EDIT: I've now corrected it's Mouse code to read the current Mouse position. Package Heimdall 0.3 will include the fix when available
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

Idge wrote: Tue Feb 15, 2022 9:07 pm Fireball 2

The music starts off fine, but after it has been playing for a while, it starts having glitches with some of the instruments. I just tested it and timed it with a stop watch from when the music starts and it starts going wrong after 01:32
EDIT: I have now updated my Pi to the latest stable Riscos rom and wiped it and set it all up from scratch and this no longer happens. I have left it playing for a while and it all sounds correct now
I have now reproduced this issue.

If I load the music on it's own (by running FBsound) it plays correctly. After the game loads however, the music and some of the samples become corrupt, so I suspect there's a problem in the game code which is corrupting memory.

EDIT: I've finally tracked this down to an issue with the samples/tracker. The tracker is overrunning the end of the samples and playing non-zerod memory, it will be fixed in Fireball II 0.6 once available.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

Apologies for the lack of updates, among cutting up fallen trees and repairing broken fencing I'm trying to track down the lock in Enthar Seven as I'm concerned it's a fundamental issue with the JIT changes. The BBC6502Emulator Modules it uses is hand coded, uses very few SWI and has no complicated instructions so there's nothing obvious to cause a hard lock. Tracking down where the lock occurs is proving difficult without a JTAG step debugger.
Idge
Posts: 42
Joined: Wed Feb 02, 2022 9:45 pm

Re: ADFFS 2.80 public beta

Post by Idge »

JonAbbott wrote: Thu Feb 24, 2022 6:46 pm
Idge wrote: Tue Feb 15, 2022 9:07 pm Fireball 2

The music starts off fine, but after it has been playing for a while, it starts having glitches with some of the instruments. I just tested it and timed it with a stop watch from when the music starts and it starts going wrong after 01:32
EDIT: I have now updated my Pi to the latest stable Riscos rom and wiped it and set it all up from scratch and this no longer happens. I have left it playing for a while and it all sounds correct now
I have now reproduced this issue.

If I load the music on it's own (by running FBsound) it plays correctly. After the game loads however, the music and some of the samples become corrupt, so I suspect there's a problem in the game code which is corrupting memory.

EDIT: I've finally tracked this down to an issue with the samples/tracker. The tracker is overrunning the end of the samples and playing non-zerod memory, it will be fixed in Fireball II 0.6 once available.
Nice work Jon, I am glad I wasn't imagining it!
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

It took some testing to get it to trigger as the correct memory page had to non-zero before loading it.

The majority of the other issues I've looked at recently were all Null deference related, so I'm going to leave Null dereference detection on in 2.80y. A lot of games will probably trigger it as the problem is so widespread, so I'll make a note of them in the Page Zero access thread for fixing later and turn it off in the following build.
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: ADFFS 2.80 public beta

Post by JonAbbott »

Idge wrote: Tue Feb 15, 2022 10:50 pm K.V
Says please insert K.V disk after pressing space to play game. Pressing enter locks up the pi
I've tracked this down to a bug in it's UpCall handler, which triggers the insert disk prompt if "Media not present" is raised. The bug is causing it to trigger the insert disk prompt for all UpCall's.

Whilst debugging this, I've also spotted its disk protection contains a bug. Its supposed to read two sectors from the end of the disk, but is exiting early before the 2nd check. I've followed the checks it performs and confirmed it does pass the protection despite the bug, which is possibly why the author didn't spot it.

I'll upload an updated package in due course.

EDIT: I've just imaged my copy of K.V. and realised its an earlier version that has most of the disk protection removed.
The game has more bugs though as it doesn't stop the alarm sound when restarting a level and it only gives you 10 seconds to complete level 2 - which makes it impossible to complete.
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 updated the following packages to resolve issues noted in the OP:
  • Asylum
  • Asylum [Acorn Arcade]
  • Fireball II
  • Frak!
  • Heimdall
  • Interdictor
  • Jahangir Khan World Championship Squash
  • K.V.
Note the Champions version of Jahangir Khan World Championship Squash needs the next ADFFS build to resolve its issue.
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 available in the OP and via PackMan for testers. This build implements the Undefined hardware vector and limits code execution in Page Zero to the IRQ, FIQ and Undefined hardware vectors.

NOTE: This build has Null dereference checking turned on and will Abort if a game touches 0. Please let me know repro steps if you see any, so I can document them.

The following games have updated packages to resolve issues noted in the OP:
  • Alerion
  • Alien Invasion
EDIT: I've spotted an Abort loop if a Null dereference occurs in a Module Finalise - I'll get this fixed asap
EDIT2: Aborts during a Module Finalise now report, but you must reboot the machine after as it will be in an unstable state
Post Reply