Archive for the ‘Spectrum’ Category

JSSpeccy v20091121

Saturday, November 21st, 2009

Yesterday’s Full Frontal javascript conference turned out to be the ideal setting to compare notes with Ben Firshman of JSNES fame on the finer points of implementing emulators in Javascript – so this new release of JSSpeccy is the natural consequence of that. I’ve put in an optimisation which might possibly be a speed boost on Chrome (only writing bytes to ImageData when absolutely absolutely necessary), and the much-needed ability to load your own snapshot files, using the little-known getAsBinary method on file upload objects. (Unfortunately Firefox 3.5 is the only browser which supports it right now, but it looks like it may be in the process of getting the official W3C blessing right now.) And since I was on a roll, on the train back I implemented tape loading traps and the ability to load .TAP files (again, only on Firefox 3.5). Wahey!

@speccynews – ZX Spectrum news on Twitter

Saturday, November 14th, 2009

Recognising that there was a gap to be filled in news reporting for the ZX Spectrum community (since other commitments have pulled icabod away from regularly updating raww.org, and other contributors – myself included – have not exactly rushed in with the same fervour), I’ve set up the Speccynews Twitter account.

The idea is that it’s a lower-maintenance way of keeping on top of developments in the Speccy world, as something that can be updated on the spot as and when you encounter a story, with no obligation (indeed, no way at all) to write a long erudite commentary on every news story. Following an encouraging call for volunteers on WOS forums, I set the service up through CoTweet, and it’s been running successfully for a couple of weeks now. More contributors would be very welcome, especially non-UK people who can share their perspective of those wonderful developments in Spain, Russia, Poland, the Czech Republic and elsewhere which are being overlooked by the English-speaking crowd. Drop me an email / tweet with your email address if you’re interested, and I’ll send a CoTweet invite in your direction. No previous Twitter experience necessary!

(And, of course, all feedback and story submissions will be gratefully received via Twitter itself – tweet them to @speccynews.)

Midibeep

Thursday, October 29th, 2009

Last week I posted possibly the most tedious Basic type-in listing ever to World Of Spectrum:

5 BEEP 0.212765, 20; 10 BEEP 0.106383,19...
(continues for approx 1500 more lines)

Anyone typing it in in its entirety would be rewarded with this:

Download midibeep_minute_waltz.mp3

Not bad for an evening’s work. Mind you, I did take an ever so teeny shortcut, by writing a Ruby program to convert a MIDI file to BEEP format. (Any .mid file will do, although ones with a single instrument will survive the rather primitive selective-note-butchering process better. Oh, and anything much longer than this one will exceed the 48K Spectrum memory…) And now you can try it out too:

JSSpeccy v20090929 (Don’t-Mess-With-Geeks Edition)

Tuesday, September 29th, 2009

I wasn’t really planning on developing JSSpeccy further, because I didn’t consider it a serious project with a future. However, it turns out that someone else did. Enough to rip it off wholesale and pass it off as their own work on the iPhone app store for £1.29 a pop, no less. Yes, thanks to the detective work of Phil Kendall we now know that ZXGamer, the much heralded Spectrum emulator for the iPhone, was nothing more than JSSpeccy with a fancy title screen tacked on. (Which of course is a blatant violation of the GPL, and being pure Javascript, would explain why it ran at less than the speed of a real Spectrum on a 600 MHz device, and why it was overwhelmingly rated at one out of five stars. Epic fail.) It’s been pulled from the app store now – so while ZXGamer is gradually disappearing from the internet, it’s time to redress the balance a bit.

A new version of JSSpeccy is out. It doesn’t run at full speed on an iPhone either (although it positively speeds along on recent versions of Safari on real computers), but it does boast the following changes:

  • GPL v3 licenced, with prominent notices to make it clear that playing silly buggers like the above will not be tolerated (even if they do include source…)
  • A bit of speed optimisation (about 15% faster maybe)
  • A pimped-up user interface with shiny icons
  • And most relevantly, entirely controllable via iPhone / iPod Touch touchscreen. In principle. (If you’re expecting an immersive gaming experience, you’ll be disappointed.)

So there you go – probably the best Spectrum emulator for the iPhone ever. And it’s free.

Spectrumori-on

Monday, September 14th, 2009

This 1K intro for the Spectrum (which received 3rd place in the oldskool demo competition at Sundown 2009) was inspired by Bill Bailey. No, really. His current live show features a spot on the Yamaha Tenori-on, which through the medium of “getting someone in the audience to splurge their hand on it”, he demonstrates that it can’t fail to play something nice.

This makes it a good excuse for some experimentation with generative music. The secret is in the scale – it’s equivalent to playing only the black notes on a piano, and presumably has roots in oriental music (I previously rediscovered it while working on Haiku). To make it into something like a proper demo, rather than just a throwaway routine, I added a bit of subtle progression Cyberpunks Unity style, so it drifts in and out of randomness as the graphical effects change. It even has a proper ending…

In recent months Yerzmyey has been pushing for the revival of the 16K Speccy as a platform, so I’m pleased to announce that this demo is – so we believe – the third ever demo to run on it.

Ode To Claire / Snakebite

Wednesday, June 10th, 2009

A couple of fast-made Spectrum releases for last month’s most excellent Outline demo party. Ode To Claire is a curious little 128 byte intro, using a trick I’ve been wanting to try out for ages. It’s not exactly a fast-paced action extravaganza, but it does fit 150-odd characters of avant-garde poetry, the printing routine, and a demo effect into 128 bytes of code. Working out how is an exercise for the reader (and I’m quite interested to know whether the secret is immediately obvious to anyone who’s at all familiar with the Spectrum…)

On the musical front, Snakebite is a chiptune with a middle-eastern vibe, modelled after every Turkish Eurovision entry ever. It got third place in the competition, and originally they weren’t going to give out a third prize, but they had some spare food left over on the Saturday night, so I won a jar of sausages. Best. Prize. Ever.

Download gasman_-_snakebite.mp3

Goldfinch: an open software stack for mass storage on the Spectrum

Friday, May 29th, 2009

Yep, another pet project of mine to compete with all the others I’ve started. But hey, if I didn’t get distracted by things like this I’d just get distracted by Youtube and sudoku instead…

Goldfinch1 is an attempt at remedying the “walled garden” syndrome in the world of ZX Spectrum mass storage – there are plenty of software projects doing exciting things with IDE and CompactFlash and ethernet on the Speccy, on top of multiple competing hardware interfaces, and for one reason or another they end up having ‘baggage’ that prevents the casual tinkerer from properly harnessing that existing work for their own stuff – so writing a program that reads ’some file’ off ’some disk’ is a bigger deal than it ought to be. The reasons for this might be technical (the disk access code is too tightly coupled to a Basic extension, or an emulation layer, or something else, and only one person in the world understands the whole package), legal (licencing problems prevent the source code from being released), or the entire project being locked away in perpetual vapourware hell (ahem).
(more…)

FreshBEEP

Sunday, January 4th, 2009

Kicking off 2009 in style with a website-in-a-day, FreshBEEP is my answer to a pressing problem on the Spectrum scene: people are releasing new games all the time, but they’re being overlooked due to a lack of a prominent central place to announce them. However, it turns out that on the World of Spectrum What’s New page, nestled amongst the hive of other site activity that gets mentioned there, Martijn has been dutifully labelling new releases under a “New software for 2008″ banner. One swift bit of mashup work later (does it count as a mashup if it’s only coming from one site?) and these are now being pulled out into a friendly blog-like format, with an all-important RSS feed. It’s not particularly clever, but it scratches an itch…

JSSpeccy: A ZX Spectrum emulator in Javascript

Sunday, October 19th, 2008

I’m really typecasting myself here. If there were an international “Person most likely to write a Spectrum emulator in Javascript” award, I’d have taken it for the last five years running. So here it is – probably the most stereotypical project I’ll ever come up with.

Writing this wasn’t actually such a big deal – the Z80 core was ported from the one in Fuse, with the Perl-and-C-preprocessor-munging trickery still intact, and Javascript is syntactically close enough to C that that wasn’t a mammoth task. (I got 90% of it done on the train journey back from International Vodka Party alongside recording silly songs about tube stations.) The one fiddly bit was working around the places where the Fuse code used low-level C constructs to its advantage: using unions to chop and change between individual registers and 16-bit register pairs, and relying on limited-size C data types (often in pretty subtle ways) to truncate 8-bit and 16-bit values at the right time, whereas Javascript only has integers. (Actually, the really time-consuming bit was debugging it all… luckily, Fuse has a rather excellent test suite too.)

The rest is just creative abuse of the <canvas> element, as usual… it’ll take advantage of the putImageData interface to do the pixel pushing if available (on my machine Firefox has it, Safari doesn’t) and fall back on drawing 1×1 pixel rectangles otherwise. This time I’ve thrown in Google’s ExplorerCanvas as a nod to those poor unfortunates still stuck with Internet Explorer. Incidentally, I’d be curious to know how it rates on Google Chrome (I don’t have an XP/Vista box to test on) – if the hype is true (and it implements the putImageData interface like all good up-to-date browsers should) then I’d expect it to comfortably reach 100% Spectrum speed on modest hardware.

The Ninja Milkman Conspiracy (and Maze)

Sunday, October 5th, 2008

I’m a bit behind in my blogging, so I’ve got a bit of a “what I did this summer” catchup to do. First up is The Ninja Milkman Conspiracy, a cheap and cheerful oldskool scrolly Speccy demo made for this August’s International Vodka Party, featuring the classic circle interference effect, some creative use of dithering, and a dancing robot. What more could you ask for? The title, incidentally, was just something random and irrelevant to save it from being called ‘IVP 2008 demo’ (which is just as well, because there were already 2 other demos in the competition called that) but is actually a reference to the milkman at one of our offices who is able to deliver the milk and disappear without making a sound.

…All of which is ordinary enough, but the exciting thing (if you’re the sort of person to get excited about build scripts) is, um, the build script. I’ve been happily using makefiles for ages, but this time I finally flipped at the amount of redundant boilerplate you need to shove in there for a typical Spectrum project, even a small one like this – having to remember command line syntax, having to explicitly set up dependencies even though they’re all clearly marked as ‘include’ lines in the assembler file – so I came up with Maze, a Spectrum-oriented replacement for Make written in Ruby. Inevitably, being a scratch-my-own-itch sort of program, it’s a bit more hard-coded (and tuned towards my own way of working) than I’d like, but I reckon it’s enough of an improvement over bog-standard makefiles that it could conceivably be useful to other people. And if it is, maybe I’ll be encouraged to rewrite it in a more open-ended way some time…