26bit Module support

Discuss development specific to the Pi version of ADFFS
Post Reply
JonAbbott
Posts: 1737
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex

26bit Module support

Post by JonAbbott » Sun Jan 11, 2015 8:23 am

Notes on providing 26bit module support
  1. Create a stub module header in the JIT RMA Heap and insert into the RMA, this needs to contain the SWI table, Command table and all Module entry points: Init, Start, Exit, Service (coded)
  2. All entry points need a managed entry/exit (coded)
  3. JIT RMA Heap and code space need to be paged in on entry, if the current Application limit (Wimp_ReadSysInfo 11) is small enough or deferred if not
  4. ADFFS' Vector handler needs recoding so all Vectors, Callbacks, CallEvery etc are managed within ADFFS Module space and not JIT space as is currently the case (coded)

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

Re: 26bit Module support

Post by JonAbbott » Tue Jun 30, 2015 12:01 am

The latest Dev build now has 26bit Module support (points 1 and 2 in OP), you'll need the latest obey.zip to test the games below:
  1. Alerion
    • possibly a corrupt floppy image (resolved)
    • alternative fire (ALT) is the only sound that works
    • can't change keys
    • can't exit demo mode (non-issue, press Break key to exit)
  2. Alderbaran (crashes starting Wimp task)
  3. Alone in the Dark
    • crashing with Page Zero access error (resolved)
    • not setting the correct palette (resolved)
  4. Apocalypse
  5. Arc/A3000 Christmas Box, The: Brixx!
  6. Arc/A3000 Christmas Box, The: PON! in Winterland
  7. Arcendium
    • possibly a corrupt floppy image (resolved)
  8. Arcade 3
  9. Bug Hunter in Space
  10. Burn 'Out (crashes loading)
  11. Carnage Inc.
    • Page Zero access bugs need fixing (resolved)
    • some sound not working (resolved)
    • no text displayed in-game, happens on all RO versions except 3.11 and 3.71 SA (resolved)
  12. Cascade
    • working with minor graphics corruption (resolved)
  13. Cataclysm
    • needs protection patching as in The Dungeon (resolved)
    • crashes when you start a level (works on RO5 SA) (resolved)
  14. Caverns
    • requires VIDC cursor support to display highscore and ship (resolved)
  15. The Cobalt Seed
    • loads code into OS_Heap allocation blocks, which can't currently be patched
  16. Darkwood
    • Spawns a second task to run the main game, which isn't Hypervised by ADFFS (resolved by bypassing the Wimp task)
    • crashes loading after disk swap prompts (resolved)
    • page zero accesss bugs (resolved, but needs play testing)
    • not regulating its speed correctly
  17. Deeva
    • crashes when you start a level due to OS_Claim in BASIC code (resolved, BASIC SYS command now hypervised)
    • game still running in background after game over - FX 13,4 isn't working
  18. Diggers
    • hangs on the intro - sound IRQ's aren't occuring (resolved)
    • requires hardware mouse support (resolved)
    • screen corruption, getting MODE Modules to work will resolve. Needs a 320x200 screen and the OS to be aware of its dimensions (resolved)
    • audio not correct on the Pi but is okay on RO5 SA from 2.52e (resolved)
    • VIDC Type 3 translation isn't working correctly on VIDC20, but is okay on the Pi
    • crashes after a demo loop (resolved)
  19. Dominate (working, needs reimaging as the 'board2' Sprite is corrupt)
  20. Drifter
    • crashes calling protection code in sprte, which relies on the CPU pipeline for it's last instruction to execute (resolved by adding pipeline support)
    • line 72 of the BASIC code calls init_stack, which changes USER R13 and causes BASIC to crash on RO5 (resolved)
    • no sound effects due to an issue in 32bit Stasis Module (resolved by switching back to original Stasis Module)
    • hangs when you quit a level via "Q" key (resolved)
  21. Drop Ship
    • needs protection patching as in The Dungeon (resolved)
    • crashes loading (works on RO5 SA) (resolved)
  22. The Dungeon
    • crashes after the sound Modules perform a buffer fill (caused by VProtect)
  23. E-Type
  24. Elite (Wimp_Initialise is hanging)
  25. Empire Soccer 94
    • OS_SpriteOp reports an error on loading (resolved)
    • hangs on the title credit screen (resolved)
  26. Fireball II
  27. Flashback
  28. Formula Two Thousand
    • needs protection patching as in The Dungeon (resolved)
    • crashes starting Wimp task
  29. FRED
    • requires CPU pipeline support of STR Rx,[PC, #-4]
  30. Games Minipack Five: Fireball II
  31. Games Minipack Five: PON!
  32. Grievous Bodily ARM
    • screen width incorrect - possible issue with VIDC20 translation as it occurs on RO3.5+ (okay on RO3.11 with MonitorType set to 0) (resolved)
    • scrolling not smooth on the Pi
  33. Hamsters (Wimp_Initialise is hanging)
  34. Hero Quest
    • fails to OS_CRC verify the KGM Module at the end of the loader sequence (resolved)
    • hangs issuing SWI Mus_Off after selecting the language (works on RO3.71 SA) (issue in QTM, resolved)
  35. Holed Out!!
  36. Inferno
    • crashing when you toggle the sound on/off (works on RO5 SA) (resolved)
    • crashing when you start the game (works on RO5 SA) (resolved)
  37. James Pond II Robocod
    • scrolling is altering the screen width, occurs on RO3.71 RPC as well, so could be VIDC translation related
    • Music notes are the wrong pitch, happens on all RO versions
  38. James Pond II+ Robocod
    • selects the wrong video mode (resolved, bug in VIDC20 emulator)
    • doesn't start on the correct level (resolved)
    • scrolling is altering the screen width, occurs on RO3.71 RPC as well, so could be VIDC translation related
  39. Kaptain Konflict (crashes when you enter the level)
  40. KerBang
    • hangs loading the Wimp task, was working on RO5 SA until BASIC SYS was Hypervised
  41. The Last Ninja
    • crashes on the title screen changing the Mouse cursor (resolved)
    • failing to load NinjaFX Module (resolved)
  42. Lemmings 2
    • DispScreen hangs (Pi only) (resolved)
    • hangs when starting a level (resolved on High Vector build)
  43. Man At Arms (crashes loading)
  44. Manchester United
    • needs blitter change to correct vertical scrolling (resolved)
  45. Manchester United Europe
    • no music or sound (resolved)
    • needs blitter change to correct vertical scrolling (resolved)
    • not changing the mouse pointer (resolved)
    • mouse pointer palette is incorrect (Pi only) (resolved
  46. MiG-29 Fulcrum
    • !Boot crashes SpriteExtend 1.04 when issuing IconSprites !Sprites (possibly corrupt floppy image)
    • crashes when entering the plane (resolved)
  47. Minotaur
    • possibly a corrupt floppy image (resolved)
    • reports insufficient memory (resolved)
  48. Nevryon
    • "*!Nevryon.NEVSOUND" crashes. *RMRun !Nevryon.NEVSOUND however does work (caused by VProtect)
  49. Oh, No! More Lemmings
    • cursor isn't clipped correctly at the left and right of the screen
  50. Omar Shariff's Bridge (crashes loading)
  51. Overload (Clares)
  52. Overload (Paradise)
    • crashes loading (works on RO3.71 SA)
    • hangs on the game information page that describes the energy levels
  53. Pandora's Box
    • needs protection patching as in The Dungeon (resolved)
  54. Pesky Muskrats
  55. Pipe Mania
  56. Populous
    • Abort on instruction fetch at &24D4F804 during loading (resolved)
  57. Pysanki
  58. RedShift
  59. Repton 3
  60. Sensible Soccer
    • palette being reset during intro sequence (Pi only)
    • crashes after the intro (resolved)
  61. Serpents
  62. Simon The Sorcerer (hangs loading, after changing MODE)
  63. SpeedBall 2
  64. Spheres of Chaos
  65. Startrader
  66. Talisman
    • walking sound not quite right (resolved)
  67. Tower of Babel
  68. Warlocks
  69. White Magic
    • crashes loading sound Modules. Loads any one of them and crashes for all subsequent Module loads (resolved)
  70. Wolfenstein 3D
    • disc protection fails (broke in build 2.13, disc 1 may need reimaging with slow sectors to correct sector-in-sector) (resolved)
    • chocolate is causing game to hang on boot
    • keys are unresponsive on Pi (resolved)
  71. Zelanites - The Onslaught
    • no music or sound - sound IRQ's aren't occuring (resolved)
NOTE: VProtect causes 26bit Module support to fail, if VProtect is running issue the following two commands to turn off it's Module hackery before booting a game:

Code: Select all

unalias rmload
unalias rmrun
Some games require you to RMKill VProtect, see game notes above.

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

Re: 26bit Module support

Post by Vanfanel » Tue Jun 30, 2015 11:54 am

I have no words for this, Jon!!
I discovered Risc OS with "The Dungeon": it was the first game I ever saw running on a Risc OS machine, and I went back to Risc OS three years ago (with the Pandaboard and later the awesome Pi) to try to get this game working on my own computer!!
I can't wait to play it again, that game is a myth for me, a piece of history...

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

Re: 26bit Module support

Post by JonAbbott » Wed Jul 01, 2015 5:13 am

JonAbbott wrote:Pesky Muskrats - works although no music
It's a bug in the 32bit ExSound tracker Module that's bundled with ADFFS, I've now fixed and confirmed the music works under StrongARM emulation.

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

Re: 26bit Module support

Post by JonAbbott » Wed Jul 01, 2015 9:42 pm

I've started adding CPU paravirtualization to the Module support, which is key to getting games running on physical machines as most Module entry points are entered in either SVC or IRQ. It's working under StrongARM emulation, but currently failing on the Pi despite a day of debugging.

Once working, it should hopefully get some more games running on the Pi, possibly Pipe Mania.

Pesky Muskrats doesn't actually need 26bit Module support, I think I flagged it as requiring it due to ExSound, but have since 32bitted that tracker and forgot to update the spreadsheet. There's probably a few other games like this.

I'm struggling to get many more games working under StrongARM emulation, so simply adding 26bit Module support isn't enough, there must be other minor issues causing them to fail. Overload and Inferno should work for example, but Inferno fails reporting "No main program", implying there's a problem that's C related when its registers the main code.

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

Re: 26bit Module support

Post by JonAbbott » Tue Jul 14, 2015 9:09 am

Inferno works with the latest dev build, if you've previously downloaded it, re-download as I've had to modify the disc image to correct the framerate.

It loads two 26bit Modules, itself and DSymphonyPlayer - which amazingly sounds correct.


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

Re: 26bit Module support

Post by JonAbbott » Tue Jul 14, 2015 11:30 pm

Manchester United appears to work, although requires a change to the blitter to correct vertical scrolling. RISCOS does complain when you swap discs, but it seems to recover once you "Press SPACE to continue"

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

Re: 26bit Module support

Post by JonAbbott » Wed Jul 15, 2015 7:40 pm

The latest obey.zip / adffs500 Module on the dev site get Cascade and SpeedBall 2 working on the Pi

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

Re: 26bit Module support

Post by JonAbbott » Sat Aug 01, 2015 7:30 am

The latest obey.zip / adffs500 Module on the dev site get Arcade 3, Pipe Mania and Spheres of Chaos working on the Pi. It now has feature complete 26bit Module support, basic Wimp support (which needs debugging on the Pi, it's working on SA RO5) and SWI flag preservation.

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

Re: 26bit Module support

Post by Vanfanel » Mon Aug 10, 2015 11:59 am

Wow!! Awesome!! Will we see "The Dungeon" supported soon? I am all crazy about that game...

Post Reply