ADFFS 2.46 beta

Discuss ADFFS development versions and upcoming additions
Post Reply
JonAbbott
Posts: 1737
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex

ADFFS 2.46 beta

Post by JonAbbott » Tue Dec 16, 2014 7:44 pm

The blitter has now been extended to support VIDC border changes and 2 pixel scrolling in 4 and 8 bit modes, James Pond now scrolls correctly for example. It also now corrects the 8bit sound layer for sample rate and period differences between what the game wants and what the hardware can support. This corrects the music in 2067BC and Cannon Fodder among others. This is active as soon as ADFFS is loaded, so any 8bit audio software that previously had a helium effect may be resolved whilst ADFFS loaded.

Due to a bug in the sound stack on RO5.21 which has since been resolved, you need to be running a RISC OS beta build from 16-09-14 or later.

In this release, I've had to disable the 50Hz frame pacing code. For most games this wont be noticeable, Pacmania's music however will be incorrect if you've not got your Pi set to a 50Hz (see config.txt below). I'll try to resolve this in the next release.

To force your Pi to 50Hz and turn off the filtered upscaling, edit config.txt on the DOS partition and add the following lines. Uncomment one of the hdmi_mode values:

Code: Select all

hdmi_ignore_edid=0xa5000080
#
#set GPU upscaling to nearest neighbour
scaling_kernel=8
#
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 it pads extra frames to make up the difference.

NOTE: You must ensure fake_vsync_isr=1 is also uncommented in your config.txt file on the Pi. If you see a blank screen, try setting the monitor to Auto. Also ensure SparkFS is loaded.



Changes since 2.43
  • Sound_Configure is now managed and ADFFS sits between SoundDMA and SoundChannels to handle differences in the audio sample rate and period
  • MEMC Sstart, SendN and Sptr now implemented
  • Sound_SampleRate will now force a Sound_Configure to ensure 32bit trackers play at the correct rate
  • Direct branching to the SWI handler is now intercepted (fixes Slappit)
  • ALU no longer forces S bit on CMP instructions, but instead uses a NOP (fixes Slappit)
  • Hypervised OS_Module wasn't passing through to our own OS_Module code
  • LDM/STM PC(!) now implemented (fixes KerBang)
  • Cache is now flushed after a codelet is released
  • Sound_InstallVoice is now hypervised with a block of 32 Voice Generators instead of a codelet (fixes Bouncer)
  • OS_ReadVduVariables is now taken over whilst the screen is remapped and returns RO3.11 screen addresses if called from Application Space (fixes Fire & Ice)
  • Added !Boot override support to prevent games from auto-booting (added overrides for Bouncer, Gribbly's Day Out, Oh No More Lemmings and Pon)
  • GOARM3JIT <address> was jumping to the wrong address (fixes Axis and BlowPipe booting on the Pi)
  • Added a stack to the JIT on StrongARM, to prevent stack corruption in games that alter SVC R13
  • TEQP PC, Rn now encoded correctly
  • TEQP Rn, PC added (fixes No Excuses)
  • OS_ChangeEnvironment now hypervises all entry points (fixes Ballarena)
  • OS_Byte 129,0,255 now returns &A4 (RO3.11) when the JIT is active (fixes Ballarena)
  • Hypervised OS_GetEnv was incorrectly calling OS_SetEnv
  • MEMC Vinit, Vstart and Vend were using the wrong physical base address
  • GraphicsV 6 is now only handling "Set start address of current video display"
  • IOC T1 latch implemented
  • *ScreenSize no longer changes MODE on machines with GPU's
  • ADFOpen now reports errors under the Wimp
  • Blitter now takes account of VIDC parameters
  • IOC emulation now disables IRQ's whilst emulating an IRQ
  • Corrected VIDC1 translation of HBSR, HDSR, HDER, HBER to be -1
  • Corrected VSWR, VBSR, VDSR, VDER, VBER in VIDC1 MODE table to be -1 instead of -2
  • OS_Byte 19 wasn't passing the request through if 50hz frame pacing was disabled

Known issues
  • Doesn't support the protection used by Chequered Flag (non-RO3 version), Fine Racer and KerBang! (they talk directly to the FDC via IOC)
  • Shelling out of the desktop (Ctrl-Shift-F12 twice) hangs if an HD floppy is mounted on RO3.5+ ARM710 under RedSquirrel
  • Although Caverns runs fine under VIDC translation on the A7000, on a RPC and Pi the scrolling isn't quite correct
  • Will not work on a RISC OS 3.1x machine with more than 13mb allocated to application space. To workaround increase another area until Applications (free) is below 13mb and ensure it never goes above it whilst ADFFS is loaded
  • RO5.x IOMD doesn't support direct access to VIDC1, VIDC20 or IOC
  • Some games don't display on Kinetic (eg Zarch)
  • No 26-bit module support on 32bit OS's
  • Requires 30mb of free memory to work on a StrongARM machine, if the game isn't natively StrongARM compatible
  • Does not work on OMAP3/4 and Iyonix support isn't quite ready for public release
  • Games that update the display on event 4 currently flicker on Archimedes/Risc PC (eg Chuck Rock, James Pond)
  • Sometimes reports "Broken directory" after loading (exiting and reloading is a temporary fix)
  • Can't change discs in Apocalypse on RO4
  • Difficult to change discs on BlowPipe, Gods and Xenon 2: Megablast on the Pi (hold CTRL-SHIFT and keep hitting F2 until you see the hourglass)
  • Some games may hang when quitting back to the desktop
  • ADFFS doesn't reset itself after the JIT is shutdown when a game quits (quit and reload ADFFS before trying to Boot another game)
  • The blitter doesn't currently support hardware pointers, so the ship and highscore will not be visible in Caverns on the Pi
  • Pacmania music will not be correct if the Pi is not set to 50Hz
Games that are made StrongARM/Pi compatible with this version:
10001 2067BC (audio isn't correct currently)
10034 Axis
10038 Battle Chess
10036 Ballarena
10049 BlowPipe
10072 Caverns (requires hardware pointer support to work correctly)
10090 Conqueror
10307 Ego: Repton 4
10167 Freddy's Folly
10202 HoverBod (needs slowing down)
10210 Jahangir Khan World Championship Squash
10211 James Pond
10590 James Pond [BUZZ version]
10213 Jet Fighter
10484 Krisalis Collection, The: Mad Professor Mariarti [BUZZ version]
10484 Krisalis Collection, The: Revelation! [BUZZ version]
10484 Krisalis Collection, The: Terramex
10277 Lemmings
10469 Lemmings [Learning Curve version]
10233 Mad Professor Mariarti
10593 Mad Professor Mariarti [BUZZ version]
10236 Magic Pockets
10263 No Excuses
10270 Orion
10507 Pac-mania
10447 Pac-mania [Learning Curve version]
10275 Paradroid 2000 (sound effects aren't correct on StrongARM)
10385 Populous
10298 Quest For Gold
10480 Quest For Gold [Learning Curve version]
10308 Revelation!
10595 Revelation! [BUZZ version]
10309 Revolver
10315 Rockfall (randomly crashing in this version)
10456 Slappit
10343 Sporting Triangles (needs slowing down)
10366 Terramex
10393 World Class Leaderboard (needs slowing down)
10396 Xenon 2: Megablast
10402 Zarch

NOTE: You must have !SparkFS loaded and use "Boot floppy" to run a game. If you don't, you could end up with a machine that isn't bootable, as some games try to 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.

The attachment adffs243b.zip is no longer available
Attachments
adffs246b.zip
(587.16 KiB) Downloaded 103 times

Post Reply