It’s been a while! A quick update to the OSCA emulator is available below. This incorporates a fix for a parity bug in the CPU core for subtract instructions (Thanks to Enzo for reporting this, and Daniel for reminding me about the flag’s dual-purpose!). Also modified is the built-in debug window which didn’t seem to be very useful for setting PC breakpoint etc since the code was refactored to be multi-threaded. This now works better than it did before.

Also included are a couple of extra (experimental, as ever) features:

Mouse Support

The emulator will try to support a Microsoft IntelliMouse (3-button with wheel). Activating the mouse driver in FLOS should kick this off. In addition, you can use the BREAK key to toggle locking the mouse within the emulator window, although this feature is very basic.

RS232 Simulated Uploads

To make life simpler for uploading/downloading files the emulator will mimic Phil’s Serial program internally. So you can send a file from the emulator OSCA machine and it will be stored to an incoming directory in the same folder as the emulator binary. Alternatively, you can set the emulated machine to receive (FILERX or RX) and use the RS232->Send File menu command to transmit a file into the emulated machine. Hopefully this makes for simpler debugging.

There still seem to be some speed stability issues, so when I get some time I’ll try to take a look at this more closely. For the time being, therefore, you may want to use a previous version if that works better for you.

So I haven’t really had much time to update my OSCA emulator lately. Following some comments in the discussion group, and finding myself stuck at home due to a rather splendid head cold, I decided to update the emulator to support OSCA version 672 (and therefore FLOS v608).

The major changes are the addition of new audio registers to allow the sound system to store samples in the entire memory space. Also added are panning registers allowing individual channels to be panned left/right/centre.

The only other change I’ve implemented is the expanded chunky bitmap mode (just in time for nyanmas to be useful once more – included in the SD Card image!)

Still not implemented:

Sprite Priorities (including the new priority registers)

Sprite Matte Mode

Smooth Scroll Register(s)

RS232

Probably a whole bunch more!

The emulator shouldn’t be considered a definitive reference for OSCA (it’s far from that!) but rather an appetiser for Phil’s rather wonderful board! The speed is a little “all over the place” sadly, and I still haven’t had time to resolve that (it’s an awkward thing involving the poor synchronisation of the 3 different threads – CPU, Audio and Video – as well as lousy throttling code).

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.

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…

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:

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 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:

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):

First part of Altair's Loopback V6Z80P demo

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!

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!

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.

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.

Well, I’ve finally gotten around to posting about JPeMu – I’ve got a fair amount of old versions locked up on CD somewhere, including the very first prototype of things like Sonic the Hedgehog and Indiana Jones running for the first time, but can’t put my hands to them easily right now, so what I’ve got will have to suffice.

I’ve also given a quick overview about how I had planned to follow up the original JPeMu with a revamped version, but this is no longer under active development, so just presented for archival and historical purposes.

Where it goes from here is an exercise for another time, but I’ve still got more pages to write…