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.
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.
It’s now been 10 months and 10 demo parties since I last saw the inside of an airport (with plenty more to come over the next couple of months… parties that is, not airports), and for any eco-conscious European traveller like me, knowing which sleeper trains to catch is the key to happy travels. So, it’s a bit of a shame that there’s no single website you can go to to find out the best sleeper train to get to European Destination X. Sure, Seat 61 is a fantastic resource for finding out how to get to your country of choice, but you can never be sure whether you’d get better results by heading just across the border, or tweaking your journey times slightly…
So, in a classic case of building a website to scratch a personal itch, and not wanting to let niggly licencing issues get in the way of a cool idea… Sleeper is my new website aimed at searching and mapping the European sleeper train network in its entirety. It’s been put together with Ruby, Rails (gosh, that’s rather apt isn’t it…), Geokit, Google Maps, Hpricot and my own freshly open-sourced Bahn library for snarfing data from Deutsche Bahn‘s website, and hopefully it can give you a fuller picture than ever before of what actually exists in the wonderful world of sleeper trains. Right now it stops short of providing one overall definitive map of the network (it would probably crash your browser if I tried plotting it on Google Maps), but that’s on the todo list.
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.
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). Read the rest of this entry »
Spokesman for Leeds Metropolitan University on the radio: “Macdonalds paid us to perform an independent study…”
Bollocks they did.
If you were paid for it, it’s not independent. Getting money for something is the exact definition of “dependent”. Call it impartial, unbiased or neutral if you like. It might even be true. But “independent” actually means something real and verifiable that backs up your claim to be impartial. It doesn’t mean “we’re unbiased because we say so, honest”, and when you start using the word as a free pass to avoid scrutiny, you go from being possibly biased to actually lying about the fact. Which is not good for your credibility as a research group. Stop polluting our language, you tossers.
So you’ve got a simple-but-devastatingly-clever Rails app that doesn’t use a database, you’ve dutifully added the line to config/environment.rb to disable the ActiveRecord framework, and now you’re ready to unleash it to the world, using Capistrano for deployment. But when you run ‘cap deploy:cold’, it merrily tries to run database migrations and fails with “uninitialized constant ActiveRecord”. How do you make Capistrano behave?
A simple question, with a simple answer, but one which is curiously absent from the internet. Googlejuice ahoy!
Stick this at the bottom of config/deploy.rb:
namespace :deploy do
desc "Override deploy:cold to NOT run migrations - there's no database"
task :cold do
update
start
end
end
So February Album Writing Month is over for another year, and I’ve been completely slacking by not posting songs up here. But to kick things off, here’s a song which I wrote way back in the mists of 2008, but went unrecorded for a good while after that. It pioneered the soon-to-be-ubiquitous trend of writing songs titled after the subject lines of spam, and this recording comes courtesy of the New Year’s Eve open mic at the Old Bookbinders, Oxford.
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…
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.
"Blue notes ... can be heard on any instrument capable of producing them." Another nugget of wisdom from Wikipedia there. http://j.mp/bMCHwF#2010/09/01
@sgtruck Hey, we didn't get to chat about Z80. You're 3rd/4th person to ask- I made an early start on writing a decent tutorial. Must finish #2010/08/29
@othello Thanks! Sounds like I have a spot of Official Complaining to do then... #2010/08/27
@_lemon I want it to be true as well. :-) #2010/08/27