OSCA on Windows 7 (the non-corrupted sound flavour!)

3 Comments

It’s been some time since I last blogged, and there’s been many reasons for that, mostly surrounding a lack of available spare time. Last time I swore that I had no plans to move away from Windows XP, but as is inevitable having made such proclamations, things happened which forced my hand!

First and foremost, for those not interested in a lengthy read and whinge, skip to the bottom for the good stuff 🙂

The first of those things was that my old trusty laptop finally bit the bullet – I don’t mean I popped a cap in its ass, but rather that the Nvidia chip shuffled off this mortal coil. Actually it shuffled off the motherboard – this is apparently a known (design) fault with the 8300-series where the die has a manufacturing fault, but frankly although I could’ve run the gauntlet of getting a (free) replacement for a 3-year+ old laptop, it just wasn’t worth it; plus I now had an excuse to buy a new machine 😀

So new machine it was – Decided to get a desktop machine this time around, and something with a little more poke than my old laptop. For the spec-junkies, got myself a lovely i7-2600 machine (now clocking in at 4.4GHz over the stock 3.4GHz thanks to a nice watercooling thingamajigger), Z68 chipset, a bundle of RAM/Fast HDD and a sweet Radeon 6850. So far so good – Fallout 3 on Ultra specs, thanks very much! But all of this came at a price (over and above the financial one!) – Windows 7.

Sure, I could’ve installed XP, but it would have had to be 64-bit XP, and I’ve not heard much good about this lesser-supported beast. And I’ve been forced to use Windows 7 at work now too, so it was definitely time to bite the bitter pill of Windows 7. I still don’t like it. What I disliked very much was its ability to neuter the sound code in my previous creations; OSCA, EPEE and others. This is an issue with the DirectX support on Windows 7 (and Vista) when using circular streaming buffers. Not sure why – I think it has something to do with Position notification callbacks, but regardless I just couldn’t fix it, no matter how hard I tried.

So… I’ve replaced the DirectX code with the BASS library and after a few niggles with the documentation (bytes remaining in buffer as documented really means samples in buffer, for example) the fat lady is finally singing once again! In addition, I’ve moved up the development suite chain too, so this is built using a newer IDE (Rad Studio XE2). Attached below are the source and binary downloads. You’ll need to unpack the binary over an existing version, or obtain the config and disk images elsewhere.

  OSCA Emulator Sources 1.0 (216.8 KiB, 792 hits)

  OSCA Emulator Binary 1.0 (1.2 MiB, 877 hits)

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, 907 hits)

  OSCA Emulator Sources 0.8 (128.3 KiB, 864 hits)

OSCA Emulator with added experimental goodness

2 Comments

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!
DT

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

OSCA Emulator more up-to-date than retro

1 Comment

Spent some time today modifying the I/O mapping of the OSCA emulator to bring it fully up-to-date with the latest release (v6.64 at the time of writing this).

In practical terms, this brings in bankable lower 32k of RAM and re-mappable video RAM addressing. On the main OSCA emulator page, the binary and source download links have both been updated to point to the latest revision (0.4 as of this writing). As they are full archives, take care not to overwrite any modified disk image files!! I also took the opportunity to correct the minor typo in the supplied config file so it should boot without any issues now “out-of-the-box” (Thanks to Niallquinn, Phil and Enzo for pointing this out)

In terms of some of the other newer features of OSCA (video support mostly – 8×8 tilemap mode, wide chunky pixels etc.), this functionality has not yet been incorporated, but is next on the list!

OSCA v6.64 booted in the emulator

Obligatory screengrab above shows 6.64 successfully booted in the emulator. On a side-issue, this now means that Daniel’s awesome loopback demo now shows the intro screen, but it then goes into a loop waiting for something… not sure what yet!

DT

V6Z80P – What’s that noise?

No Comments

I’ve uploaded a patched version of the V6Z80P OSCA emulator to the respective page. This patched version should just be unpacked over the top of the existing executable.

The major change with this version is the addition of (working!) Audio support – So now you can enjoy the MOD and PT3 players running under FLOS. I’ve made the output discretely stereo on each channel rather than fully left-or-right as it would be on the real hardware. There may well be issues with the Audio playback, but “it works for me pretty much(tm)”. The only major item left to do with Audio (besides the inevitable bug-fixing) is to add a linear resampler mode to smooth out the output.

I’ve also re-vamped the way that the display is updated. It isn’t the best implementation in all fairness, but that’s likely to be the next point of attention (in particular to add the sorely-lacking Tilemap mode and sprites). Also, the performance isn’t all that great, sadly: You may want to click the Options menu and disable both the video smoothing and auto-throttling (and drag that throttle bar way up!). Once the hardware is largely all implemented, I will revamp the timing mechanism used in the emulator (time permitting) to improve performance, especially when multiple cores/cpus are used.

Anyway – progress is progress, so I’m reasonably happy to have had some time to revisit the emulator after such a long hiatus.

DT

Sharper than the average emulator?

No Comments

OK, OK, so this isn’t something that’s likely to float the boat of many but the hardest of hard-core emulator fans, but I’ve finally found a little time to complete a page for my Sharp MZ-80B Emulator.

I lost the original page long ago, but the Internet Archive was kind enough to at least recover a little of my lost endeavours, and fortunately I managed to find the actual code to upload.

In fairness, the emulator is now pretty much discontinued, so is presented here just for posterity purposes.

DT

OSCA Emulator Added

No Comments

I have added screenshots and download links for my OSCA emulator. Instructions to be added soon…