OSCA emu improved accuracy (includes source code)

1 Comment

Thanks to Daniel (Altair), I’ve managed to tidy up a couple of outstanding bugs in the emulation, so this improves the emulation of his “Loopback” demo:

1. Sprite X position is now offset by one pixel to the right (as it should be) – Logo is now correctly positioned
2. Reverse-direction Blitting is now implemented – Twisting animation is now correct
3. Alternate display addresses now implemented for Bitmapped modes (previously only implemented for tilemap) – Plasma circles are now correct

I still haven’t fixed the issue with the Linecop and the pixellated bug image as yet, but plan to investigate this next.

I also took the opportunity to add Phil’s latest OSCA addition permitting the first 512 bytes of RAM to be used as read-only RAM and write-palette, so the OSCA emulation is now up to v6.65 – It’s untested at present, but “should work”.

That’s about it really for the time being – There’s still some outstanding issues besides the ones above – I haven’t fixed the options screen yet (it’s largely pointless currently), nor have I fixed the Debug screen (CPU control is pretty much broken since the threading implementation) which is kind of intentional as I intend to re-work this a little to add a linecop disassembler if practical. Display resizing is still broken also.

Still, it is what it is, and the binary and sources are available below for anyone interested…

  OSCA Emulator Binary 0.8 (516.2 KiB, 768 hits)

  OSCA Emulator Sources 0.8 (128.3 KiB, 729 hits)

OSCA Emulator with added experimental goodness


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)