So I did finally manage to spend some time looking at the video generation system in the OSCA emulator, and at the same time took the opportunity to split the CPU and video generation into separate threads to try to alleviate some of the performance problems for dual-core CPUs and better.

Yippee — Well, almost 😉

That upside is offset rather heavily by the extra strain on the emulation core incurred by adding emulation of the following:

1. LineCop video co-processor (should be 100% emulated, or thereabouts)
2. Dual-Playfield Legacy tilemap mode (no hardware scroll implemented yet)
3. Extended dual-playfield tilemap modes (16×16 and 8×8) with no hardware scroll yet
4. Improvements to the bitmap rendering to correctly support the modulo register (well, mostly heh)
5. Revision of the display window sizing – this doesn’t always work correctly yet, but is a step in the right direction longer-term
6. Sprites. All 127 (or 126) of them! (sans-xflipping, matte mode or priority interleaving for the moment)
7. Second palette bank added to allow palette tomfoolery

What this means is that it is (probably) an improvement on the previous version – certainly more runs now, provided your PC has the minerals for it!

First screenshot shows Phil’s Vectorballs demo running (which shows sprites and legacy dual-playfield):

Screengrab of VectorBalls 2 demo

Vectorballs II Demo

Next screenshot shows the title screen of Phil’s Bounder remake (due to lack of joystick emulation, thats as far as it’s going for now!). There’s a weird graphical glitch during loading, but that’s a fairly minor annoyance:

Bounder V6Z80P Screengrab

Bounder title screen on V6Z80P

Next screenshot shows the linecop doing the aforementioned palette tomfoolery autonomously from the main CPU (as well as the bitmap modulo in its special “re-use” mode and the odd sprite or plenty) in Phil’s “Pipes” demo:

V6Z80P Pipes demo screengrab

Pipes demo for the V6Z80P

Finally, a couple of screenshots showing some of Altair’s excellent Loopback demo which now plays through to completion on the emulator (albeit noticably dragging the emulation kicking and screaming over hot coals in the process!). Also worth mentioning is the graphical glitch during the twisting ribbons which I have no clue about other than it might be a missing reverse-blit operation on the blitter (only forwards blits implemented currently):

Loopback screen grab #1

First part of Altair's Loopback V6Z80P demo

Loopback screen grab #2

Second part of Altair's Loopback V6Z80P demo

So now that’s all out of the way, you can grab an executable below. You’ll need the previous binary distribution already unpacked, and this can be unpacked to the same folder (it has a different filename for your convenience!) Due to the changes made to the threading, it is extremely strongly recommended not to try to resize the emulator main window, or to use the CPU controls/breakpoint in the debug window as this will almost certainly result in emulation carnage!

Good luck!

  OSCA Experimental Binary (519.1 KiB, 1,273 hits)