Outstanding development

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

Outstanding development

Post by JonAbbott »

The following development, improvements and investigations are outstanding:

Investigations
  • 2067BC's codelet count slowly increases (may be fixed improvement 1)
  • Battle Chess is reencoding ~40k instructions/sec under RO5 (may be fixed by improvement 1 and/or 2 or SWI flag preservation)
  • Fish! is reencoding ~40k instructions/sec when playing the title music (may be fixed by improvement 1) (resolved, bug in JIT reporting, they're LDR's that haven't been checked for page zero reads and are skipped)
  • Fish! is touching ~40k instructions/sec when in game due to an SWI instruction being self-modified (resolved, by improvement 2)
  • Figure out why you sometimes get "Broken Directory" when mounting floppies (possibly resolved, haven't seen the problem for quite some time)
  • Track sounds in Conqueror don't play in Demo mode on the Pi, until a few demo cycles have passed (resolved, caused by a change in RISCOS post 2.0 to the way the sound is initialised)
  • Conqueror has stopped working outside of the JIT (reporting a disc error at 10000 on RO3) (resolved, a bug in DiscOp)
Improvements
  1. Reuse existing codelets if one already exists for the instruction. Codelets will need to contain the original instruction and a use counter which triggers codelet recyling once it hits zero (coded)
  2. Don't erase self-modified instructions if the same instruction is written back (coded for STR)
  3. Move SharedCLibrary codelet to a static codelet that's created as the JIT starts, one per VMM for both APCS_A and APCS_R
  4. Recode i_SWI_Vector_Claim / hv_OS_Claim / hv_OS_AddCallBack / hv_Release to use a static table of entry points, one per VMM, instead of codelets (coded)
  5. Correct screen aspect ratio in modes that have double height pixels (eg 0, 4, 8, 12, 14, 15) (coded)
  6. Reduce the size of the codelet area once improvement 1 is in place
Outstanding:
  • A few Phase 1 JIT instructions left to code
  • Outstanding SWI's and C functions from Phase 3
  • WIMP support
  • Maintain a list of task ID's that we're Hypervising (partially coded in that all the checks are in place, the check function currently only handled one task ID though)
  • Modify GOARM3JIT to support multiple Hypervised tasks
  • Alternative Sample rate conversion method, using a sinc function
  • Remove dependence on !SparkFS by implementing a ZIPFS module for ZLib
  • hv_ADFFS_BASICCall needs modifying to only take over if a task we're Hypervising is active
  • Add SharedCLibrary_LibInitAPCS_A support for Magnetic Scrolls titles (see here)
  • Get CTRL-SHIFT-F12 working on the Pi
  • Clean the VMM when the JIT shuts down
  • SWI flag preservation on 3rd party/user Modules
Complete:
  • IOC Timer emulation (coded)
  • Mid-frame palette changes (need Lemmings or Fire & Ice working for this) (coded)
  • Check and enable the following when a floppy is mounted
    • Protect CMOS (coded)
    • Protect Modules (coded)
  • Check and set ForceVSync when a floppy is booted (coded, done when booted)
  • Do the following when a booted game exits (need to check this doesn't affect WIMP games)
    • Disable memory remapping (coded, done when the desktop changes MODE)
    • Reset ForceVSync (coded, done when floppy is ejected)
  • Force legacy Abort mode on the Pi (coded)
  • Hardware scrolling needs checking on IOMD and the Pi (done)
  • Remove Sound_Configure codelet and merge into Channel Handler (done)
  • Add Scheduler to Channel Handler (done)
  • OS_AddCallBack and OS_CallAfter need to remove themselves from the managed entry list once they've been triggered (coded - they remain and are reused if the SWI is reissued with the same Entry / R12 values)
  • Add SWI flag preservation (see here) (coded)
  • Pause the blitter when the Desktop is active and re-map video memory when a task we're Hypervising is task switched back into memory (coded)
  • All SWI's need modifying so they only take over if a task we're Hypervising is active (coded)
  • DA2 frame blit code needs modifying to support HDSR at 2 pixel intervals (coded, 8bit okay, 4bit may be an issue - see Caverns)
  • 26bit Module support (Coded)
  • Fix the following MODE's (coded)
    • 2 - 320x256x4 instead of 160x256x4
      4 - 640x256x1 instead of 320x256x1
      5 - 320x256x2 instead of 160x256x2
      10 - 320x256x8 instead of 160x256x8
      11 - 640x480x2 instead of 640x250x2
      14 - 640x480x4 instead of 640x250x4
      16 - 640x480x4 instead of 1056x256x4
      17 - 640x480x4 instead of 1056x250x4
      18 - 640x480x1 instead of 640x512x1
      19 - 640x480x2 instead of 640x512x2
      20 - 640x480x4 instead of 640x512x4
      21 - 640x480x8 instead of 640x512x8
      22 - 640x480x4 instead of 768×288x4
      23 - 640x480x1 instead of 1152×896x1
      24 - 640x480x8 instead of 1056x256x8
      33 - 640x480x1 instead of 768×288x1
      34 - 640x480x2 instead of 768×288x2
      35 - 640x480x4 instead of 768×288x4
      36 - 640x480x8 instead of 768×288x8
JonAbbott
Posts: 2938
Joined: Thu Apr 11, 2013 12:13 pm
Location: Essex
Contact:

Re: Outstanding development

Post by JonAbbott »

Added everything I can think of that's now outstanding
Post Reply