Did you know you can play some ZX81 games on your iPhone? We speak to Kevin Palser about his ZX81 emulator for iOS devices.
We assumed that Palser grew up with a ZX81, hence writing the emulator, but that wasn’t the case at all!
“I never owned a ZX81 whilst growing up” says Palser. “The Sinclair ZX Spectrum in our household was short-lived and the computer I owned which left the biggest impression on me from that golden era was the Amstrad CPC.”
Emulators always intrigued me, and I chose the ZX81 because I thought it would be a simple project on which to cut my teeth. The reality is that whilst the computer was designed to be cheap to manufacture the same objective left it with some peculiar characteristics. Hence, there are easier computers to emulate.
I started writing the emulator in 2009 during my last year of living in Lleida in the autonomous Catalan region of Spain. I was starting to get nostalgic for things from the English-speaking community, in particular early British computing. It started as a MacOS project although I don’t recall any particular need for the emulator on that platform at the time.
I began using Marat Fayzullin’s excellent Z80 code written in C. He also has a general guide for those who want to dive into writing emulators and one piece of advice that I really took to heart was finding all the information I could about the hardware of the computer. It quickly became obvious that I would need to deviate from Marat’s code and adapt points that were not represented by his C library.
By 2011 I was living in Dundee in Scotland after my wife had found a research position with a local university. This is a pure coincidence that the early Sinclair ZX computers were manufactured at the Dundee Timex factory. Timex had pulled out of Dundee in 1993 after a bitter workforce strike that lasted for 6 months.
I placed an advertisement in the local newspaper asking to speak to anyone who worked at Timex on the ZX81 and I also visited the factory, which is now used by the JTC Furniture Group. For this visit I just turned up holding a ZX81 and one of the managers came down to the reception and showed me around. The internal layout of the factory had changed a lot since the times of Sinclair.
I was told whilst they were renovating Timex watches were found along the fence line. Presumably thrown there by disgruntled workers to collect later. In terms of the interviews, I really wanted my emulator to be more of a human-interest project with anecdotal information from anyone that was involved with the ZX80 and ZX81. My questions were patiently answered by three ex-workers, one of whom was quite senior in the ZX80/ZX81 production line. Unfortunately, I suspect because of the unamicable end to the Dundee Timex factory, they wanted to remain anonymous and not revisit the factory with me.
There were various interesting titbits of information about the early production. Initially secrecy was important so the ZX80 practice line was cornered off by black separators. Production got off to a slow start because of a mixture of component and quality control issues. A week or two went by without any viable units and ZX80 boards piled high against one of the factory walls. Despite all these problems the interviewees were obviously proud of their achievements especially in light of the fact that prior to then production had been geared a world apart to analogue wrist watches. The tag line on the emulator start screen “when watchmakers made computers” comes from these interviews.
In 2014 Apple made a sudden switch to Swift as their preferred development programming language and I decided to create an iOS app. As a result, I rewrote the Z80 core code in Swift and completely moved away from Objective-C. I also switched from OpenGL ES to the Apple Metal framework to render the emulated CRT display.
In mid 2016 I reached out to Nine-Tiles and to seek permission to include the ZX80 and ZX81 ROMs (there is an amusing story why Nine-Tiles kept the rights to the ROMs and why they were never passed on to Amstrad when Sinclair was sold). At the same time, I started to seek out developers who had written programs for the ZX80/81 to include within the emulator. I had some luck in tracking down the developer/owner of Software Farm, Julian Chappell, and was able to include his excellent games such as Forty Niner and Rocket Man.
Then in early December 2016 the iOS app was finally released on the App Store. The Software Farm titles were In App Purchases (IAPs) to see if I could pass some funds back to Julian and Nine-Tiles. To be frank, the IAPs were never popular and even before the 30% Apple commission the revenue fell far short of the £79 yearly cost of the Apple Developer Account. The release reaction was mostly positive. There were a few users with older devices that were frustrated by the 64bit requirement due to the Metal Framework and the usual chorus of Android users asking why there was no version for their platform.
Why did you decide to write an emulator for iOS?
Not because I’m anti Android or because of the lack of general emulators on iOS. I think the idea could be tracked back to being inspired by the short-lived C64 iOS app. The app caught my attention initially due to the controversy when Apple pulled it because they hid away to allow user to access to its BASIC. These days being able to access such an interface does not contravene any of the Apple Developer guidelines.
I find the whole experience of plugging in a real retro computer a chore. In fact, I think we over romanticise days gone by so for me I cannot imagine anything simpler than using a native mobile app to quickly run software of latter-days. Admittedly though nothing beats a real micro-switch joystick!
What challenges have there been distributing via the App Store?
Surprisingly very few. Any retro computer fan will know that Android users are spoilt for choice compared to iOS/iPadOS users. Unfortunately, the Apple Developer Guidelines have a clause that makes developing emulators extremely unpopular: We are not allowed to have functionality to load external programs.
I think Apple wants to stamp out piracy and also avoid having mini app stores within their platform. Realistically the App Store reviewers do not have time to test even a fraction of the games in the emulators, but their rule sets a precedent that wisely doesn’t allow special exceptions. Apple also have a policy of “don’t ask – we’ll tell you if we see something wrong”. Frustrating because if you miss anything in the guidelines it can be depressing after spending countless hours developing the functionality. At the end of the day, it’s their platform so their rules and as a positive side effect I have acquired a lot of interesting contacts.
The only time my app update submission was ever rejected by the App Store was after changes to their rules regarding gambling. As tame as it sounds a 1k Fruit Machine simulator program from Dr Beep had to be removed. This was not because Apple had spotted the program but simply because the classification of my app included some simulated gambling. To continue with Dr Beep’s program and meet the new rule would need a switch to an Organisation (instead of Individual) developer account type plus all the paperwork hoop jumping to be registered as a company and for gambling. Frustrating because the way the Fruit Machine graphics worked was a technical marvel and at the time helped solve a bug in my screen emulation.
I’ve also had to remove my app from the Chinese territory. The main reason was due to a special registration required for games – I think this would no longer be the case since I have removed IAPs. However, every few months there was also a ridiculous number of installs recorded from China over a couple of days period. These install spikes would eclipse the combined number of downloads for the same year from other territories. From googling and only ever seeing a single update from the region, it became apparent that the installs were attributed to Chinese “businesses” that would have racks of devices installing apps to subvert the store ranking of their clients. Every so often they would pick an app such as mine to mask their activity.
Do you approach people asking to add their games or do they come to you?
Just some of Dr Beep’s software in the app
I’d say 80 / 20 with me asking most of the time. The best example of someone coming to me is Johan “Dr Beep” Koelman. I have joked in the past with him that the app should be renamed to “Dr Beep, et al.” because of the percentage of programs that come from him.
It’s not just the authors of games and demos to whom I’m grateful, there are a number of contacts who also spare time to translate the app and provide text with each update. At the time of writing the app has an interface that supports addition to English: Catalan, French, German, Italian , Portuguese and Russian.
Which games would you like to be able to have on the emulator? What problems have you come against?
For the most part I have been lucky. One particular heart-warming case is Fred Nachbaur, who sadly died in in 2004. His daughter gave me permission to include his programs and provided the foreword in the description along with photos of her father.
I’d love to include the New Generation Software titles, in particular 3D Monster Maze. The original developer/owner, Malcom Evans, said I could include them but made it clear that he no longer owns the rights which passed on through various software houses to Interplay Entertainment. I have sent emails to the owner but have never got a response. I imagine that they probably would struggle to locate the ownership documents, which are probably locked away in some long-forgotten security box somewhere.
3D Monster Maze
I got permission to include a couple of demos from Revival Studios, but the conversation got cut short regarding the games. The developer is quite busy, and I know of another ZX81 developer who also find his comms very intermittent.
I asked Bob Smith if I could include his brilliant titles. He was polite but firm that he does not want his games distributed in my app. You have to bear in mind that in the way that his games are hosted he gets all the download stats. I totally get Bob Smith’s decision.
What are your future plans for the app?
I had thought about creating an Apple TV version but I’m in two minds about this because I think with just the standard controls it would not be user friendly.
Aside from adding new programs and languages, in approximate implementation order my plans are:
- Improve cycle emulation accuracy – the app has already come a long way in this respect from the first released version. However, there is some room for a bit of improvement. At the time of writing I’m doing trace comparisons with the marvellous Clock Signal emulator by Thomas Harte.
- TK85 support – model the differences in Brazilian clone complete with virtual keyboard styling
- Step trace disassembler like the EightyOne emulator
- Support some of the modern Bluetooth game controllers
- Adopt SwiftUI – needs careful planning so as to still support pre iOS 13 compatible devices
- Expand the about section to include history about the computer, visual explanations about technical aspects such as the Video Display system and interviews
There are other miscellaneous points but pending on other parties. For example, I recently tried to contact the publishers of the alternative Forth ROMs for the ZX81, but I haven’t received responses (…yet).
What do you do when you’re not working on your emulator?
Apart from family time with my wife and son, my work for Snappy Shopper tends to keep me extremely busy. I’m one of the lead developers on the platform – focusing on the iOS app, server APIs and typically responsible for building in new ordering functionality. Our solution has been growing exponentially in recent months and for many the delivery service has been a life line across supported UK towns during the COVID-19 shutdowns.
What would be your top 5 ZX81 games?
Leaving the toughest question to last? I am at a disadvantage compared to some of the readers who really grew up and lived with the computer. To be frank, I tend to rely on the Rod Bell’s Villordsutch YouTube channel to inspire me to play games.
I’ll list 5 games I think are must plays that are in the emulator AND 5 games not in the emulator in no particular order of preference between them.
In the Emulator:
- Rocket Man by Software Farm
- Against the Elements by Paul Farrow
- ZE Dragon II by Sir Morris
- Blocky by Dr Beep
- Tractor Beam by Bukster Games
That was difficult. There are so many other great games and I hope the list does not disappoint other worthy contributors who have spent hundreds of hours crafting theirs. I recommend using the filter on the top right of the Software list screen to see those programs that take advantage of programming techniques and third-party peripherals.
Not in the emulator:
- Pandemic by Bob Smith
- Mazogs by Bug Byte
- Treasure Quest / Em busca dos Tesouros by Tadeu Curinga da Silva
- Mayhem by Martijn Wenting / Revival Studios
- 3D Defender by New Generation Software
We would like to thank Kevin Palser for taking the time to answer our questions. You can download his ZX81 Emulator on the App Store here. The app receives regular updates too (approx every three weeks!)