I am not sure what you have in mind Godzil, but sounds interesting.
However loading dumps is another possibility, which seems doable. It is not a matter of tweaking the tap file at all. The idea would be based on creating a dump when the game has already been loaded into an emulator. For instance Euphoric dumps (which seem easier to deal with) contains the contents of the Oric's memory, the registers, flags and probably timers.
It should be possible to simply store those dumps in the disk and use a program to load them into the Oric's memory. However that means creating a program, probably in overlay ram, which loads the dump in parts:
- First load up to page 3 or 4 somewhere in overlay for later use (depending on how the load routines are implemented and if they use page 4 at all or not)
- Second load from $400 or $500 to $bfff into the Oric's ram
- Load the last part of the dump into overlay, where the registers, timers and flags are stored.
- Disable interrupts (?)Then copy pages 1 and 2 (and 4 if needed) to correct locations. Then copy page 0 too.
- Then set up the timers with the values previously read. The program may have setup them somehow. We need to add the cycles we are going to use in the next steps.
- Prepare a small routine in lower memory (page 2, for instance) which would do the rest of the job and jump to it.
- Disable overlay ram, get the values of the PC and Status and pull them onto the stack and load the values of registers S,X,Y and A, then the P register and jump to the program.
Seems quite a lot of work, and probably I am missing something (even something that could simplify the process), but at least sounds doable. I wonder how Kenneth did this in his project.... any help here?
This could result in a tool which could load any game (as a dump) from those stored in the disk, which would be cool.
Another option, I think, would be patching the CLOAD and CSAVE commands in a v1.1 rom so they work with the disc and load this modified rom in overlay ram. Then load the tap game stored in disk. Problem with this is the usual CLOAD¨¨¨statements, which would need to load the "next" fragment, but in the disk there is no "next" fragment: we need a name.
Take this just as initial thoughts, maybe completely wrong