Wednesday, 23 March 2016

Is that the Fat Lady I hear doing her voice exercises?

With the kids in bed and the wife out to dinner, I made it my mission to plow through the remaining routines (with the exception of sound) and get them all coded, if not tested. And I'm very happy to report - mission accomplished!

I also fixed the bug in pickup/drop, which wasn't a bug in that routine at all.

However, I have encountered another bug on another screen, but that does involve sprite update handlers I've just added tonight, so I'm not overly surprised. One for tomorrow...

So, where is it at now? In total - 5,315 lines of 6809 ASM (compared to approximately 7,000 lines of Z80 - not bad!) not including location and graphics data. Code resides from $4000-$63F2 (9,203 bytes). Data resides from $8000-$CE57 (20,056 bytes). Together that's $724B of code/data that needs to go into ROM, leaving just $DB5 or 3,509 bytes free. Plus there's sound code/data. Not quite enough for the title screen (6KB+) unfortunately, so that'll have to wait for a bank-switched flash cart with all three filmation games! ;)

As for performance; with no attempt at any optimisations, speed is still looking very good, with empty rooms still way too fast, and busy rooms slow but not too slow, even with a quick 'n' dirty hack of a delay routine. Once the code is tweaked I think the Coco3 will actually out-perform the ZX Spectrum's 3.5MHz Z80!

Just because this blog needs more eye candy

So, what's missing? Sound, for one. I've an idea for adding a splash of colour to the title screens, even in 2-colour mode. And player controls; the original offers both directional and rotational options, whilst atm I've only implemented rotational (purely arbitrary). After a survey on the ZX Spectrum forums, it seems directional was more popular, so I'd like to add that option as well. As for joystick... hmm...

Amstrad CPC (2-tone or 4-colour) graphics is also on the cards, but unlikely for the demo. And a possible port to the Coco2 (even if just a proof-of-concept) running out of cartridge ROM.

Right now though, after fixing any remaining bugs, I need to get it running as a cartridge image, rather than loading from disk as it does now. That means re-arranging the memory map quite significantly, and also writing a loader of sorts to move the ROM into RAM.


  1. Excellent work! I've usually thought of the (double-speed POKE) CoCo being about 1.5 times the speed of the Spectrum, I don't know what you think of that estimate?

    I've been speaking to John Linville about new bank-switched cartridges for the CoCo, have you been in contact with him yet?

    Also, I have a "digital" joystick routine (which I used in Glove and Deathchase) which works pretty good with self-centring joysticks (regardless of the CPU mode speed). There are also options for attaching real digital joysticks to the CoCo and Dragon, like the Altai Joystick Interface, which lets you use two Atari joysticks. You can also try some interesting Tandy 1000 joysticks that use the same 6-pin connector (and support two separate fire buttons on the CoCo 3).

  2. Thanks! I don't have enough experience to give an authoritative opinion on the speed matter, but I would have to agree it's definitely faster, especially considering the Spectrum's contended memory.

    I've been speaking to John about the game, but not bank-switched cartridges specifically.

    I have been aiming to do my own bank-switched cartridge with serial EEPROM for a few years now, ever since completing Lode Runner, but just haven't had the time. I think Ed was working on one too.

    I've never been a fan of analogue joysticks on any platform (well, before the N64) and particularly not the standard Coco ones, but it's a personal preference. If I do add joystick support it will have to be after everything else is in there, given the available space. If so, I'll hit you up for the routines (assuming you're offering). TIA!