PlayZX is an Android application that lets you select from thousands of Sinclair ZX Spectrum games and play them through the headphone jack to load them onto your Speccy. You can also select your local (on the device) files, convert them to sound files, and then play them. This way you can load games for not only the ZX Spectrum micro but also a few other retro computers that have a compatible audio jack.
Note: This is not an emulator, it will not play those games. You need a physical ZX Spectrum to load said games into.
The application works with a large database of games (over 12,000 titles!) and is able to search for each game on the web. It does that in the background - you simply select a game you want to "play" and within a few seconds the image should be found, downloaded, converted to a sound file, and then played through the audio output on your device.
For the users of retro computers other than Sinclair ZX Spectrum, or to facilitate your own game collections, this application can use your locally-stored files, convert them into sound files, and play them.
In particular, it can decode and play files for Amstrad computers (extension CDT), Sinclair ZX81 (extension P), and MSX computers (extension TSX, added by Israel Mula "Imulilla" - thanks!)
You can download PlayZX from the Android Play Market here:
If you have an older Android device (that does not support ARMv8 AArch64 architecture but is still based on armeabi-v7a), you will not get the updates via the Play store since I am only publishing the ARMv8 version. However, I have created a build compiled for those older devices and you can download it here: https://baltazarstudios.com/PlayZX/Repos/PlayZX-armeabi-v7a.apk
In spite of what the Play listing shows, there are no in-app purchases; I have made this app completely free back in 2016, and there are no annoying ads or anything like that. But, if you like the app and if you end up using it, you could always...
These are some common issues that people experience and some possible ways to fix them:
- Cannot browse local folders
If you cannot browse and select your own files, it is likely caused by new Android permissions that Google changed with their newer development kits. Please try this: Go to "System" -> "Apps & Notifications" -> Select "PlayZX" app -> scroll down to "Permissions" and allow "Storage" permission.
- It plays a file but ZX Spectrum does not seem to register it at all
This is likely caused by the phone/tablet's overall sound volume. There are two ways to change it: via a physical button on your device and through the app's "Settings" menu. Most of the time you will need to max out the volume. However, please realize that various devices have a different voltage output through their headphones jack - and some devices may simply not work since they don't output a sufficiently large voltage. That is not the PlayZX app problem - from the software perspective, it may be generating the "strongest" wave file possible (with maxed out, clamped values), while your contemporary device's hardware bits simply do not provide enough signal volume to feed those old micros which were based on a 5-Volts technology.
For example, my Samsung tablet outputs 2.2Vpp on its jack but my Motorola phone does only 1.14Vpp. Both still work reliably when I invert one stereo channel.
- Can I do anything else to increase the volume?
Use a stereo audio cable and turn on these options:
If you use a stereo cable, do not have your device plugged into a USB or any other wired power connector. The device's ground needs to be floating so that the L/R stereo channels map to Spectrum's internal ground and signal connections through its (mono) jack.
This method is nicely described here: https://retrocomputing.stackexchange.com/questions/773/loading-zx-spectrum-tape-audio-in-a-post-cassette-world
Also note that if you use the "Invert one stereo channel" option and simply try to listen to the sound through your phone speakers, you should not hear anything since the two channels should cancel each other. If you do hear something, though, your phone is probably changing the "stereo" signal in some way - which is also not good.
Some users report using a "sound booster app" which somehow amplifies the volume even further (?). I did not try it, but that's also something you might try if nothing else works.
Make sure that you don't have any other software running on the device that would mutilate the sound (various "equalizers", "ambiance enhancers" etc.)
Put the device into "Do not disturb" mode to avoid a random notification being mixed with the game sound.
Recently I got an email from "BrancoRP2000" (nickname), where he used a Bluetooth receiver dongle to load games. Here is his link: Carregando programas por bluetooth no tk90x – OLDPLAYERS
There are a number of such receivers, as he said, and your mileage may vary. I went ahead and picked one from Amazon - and it worked for me. This is the one I purchased:
This may be a reasonable solution for many of you whose phone outputs too low a voltage on the headphones output.
Games are listed in a hierarchical order, with the main screen sorting them alphabetically.
Many games have variations; some are re-published with minor tweaks or fixes, and some are simply different editions of the same game. The game screen will show you each edition (that the app knows of) for a selected game.
At this point, you can either select a game variation and press the PLAY button, or "rate" it to add it to your own list of favorite games.
As you PLAY a game, you can PAUSE it and REWIND to any gap that separates chunks of data.
The Favorites list keeps your list of games you'd like to quickly access without having to search for them. The 5-star rating system is for your convenience - the games on the favorites list will be sorted by the rating you give them.
If you wish to remove a game from a list, give it a 1-star rating and then click on the 1-star rating again. You will see the refreshed list once you click on any other page and come back.
The Search tab allows you to search for a game in several different ways. The search is dynamic and will show you the results as you type.
On the bottom of this tab is a link to a web page that lists a couple of sites that host collections of program images. Since PlayZX does not index ZX81 and MSX files but just decodes their image formats, those links provide some convenience to getting those images.
The simplest way to search a ZX Spectrum image database is to search by a game name.
If you wish to search for a publisher name instead, press SPACE as the first character entered, and the edit field will change color to yellow, showing you that you are now searching for a publisher.
The third, and the most powerful way to search, is to type in a MySQL query. Press the equal sign character ("=") as the first character to enter that mode; the edit field will change color to cyan showing you that you are now expected to type in a MySQL query.
Note that only the first 50 search results will be shown, so if you don't see your game on the list, revise the search. You may use an underscore character ("_") as a substitute for any letter or a percentage character ("%") to substitute any groups of letters.
The Local tab provides you with an option to select, decode and play your own image not only for ZX Spectrum, but also for ZX81 and MSX machines. The test pilot tone is, however, only for ZX Spectrum: when selected, it will play continuously until you click on the STOP button so you can have as long as you need to adjust the signal quality.
Click on the SELECT button to open a file browser. Select an image from your own device and then click on the SELECT button again.
The middle button, UNZIP, can be used to unzip a file in place since some images, or sets of images, might be pk-zipped.
You can PLAY the selected file immediately or click on the ADD button to add it to your local list which will keep references to locations of those images for your convenience so you don't have to search for them again.
If you wish to delete an image reference from your local list, press and hold the delete button (X). This will not remove it from your device storage where you selected it from, but will only remove the name from this list.
Some games do not work or do not load cleanly. Although I have put a lot of effort in trying to clean up the database and pick only games that, according to a certain heuristic, should work, in practice, there are not working. In particular, many games that utilize various speed loading techniques may not work. We'll live with that.
Cannot enter a local folder that has "#" in the name (an issue with the software framework that I am using). Crazy, but we'll live with it. Just don't name your folders that way 🙂
28 thoughts on “PlayZX”
It works very well but, unfortunately, the latest update does not appear on my Play Store. 🙁
Wouldn't it be possible to release the use in Androi 6.0? I would like to play my ZX81 .P files!
Thank You for the great job! 😉
Hi Elson, is your device natively 32-bit? Google started to require all app updates to be 64-bit and I did not update the 32-bit version for a while since they also created a new way of bundling them... Please email me in private so I can make sure that's the problem and could work something out for you and for other people that might experience the same issue.
Hi Goran, thank you for your fast reply!
I'm writing an email to you with informations.
Thank you a lot for your big help and this great software!
It's working great! However, what does it need with full network access?
It needs internet access to fetch the games. They are not part of the application.
Hi having issues with .p files on my Samsung note 8. They play but do not put out any tones. They are totally silent. I'm fine with other extensions I.e. TAP, TZX etc.
Does that happen with any and all .P files or just some? Could you email me one, as an example? Thanks!
In my Xiaomi A3 any .P stays muted too.
Me too there's a file but it's just silence
It is silent (on my Moto One Fusion Plus speaker) but the ZX81 recognizes the .p played through the earphone jack.
Hi, great app. Loving it!
Can we download this repository so that we don't need an Internet connection?
I can just play them locally
Love your app, and it so nearly works!...but not quite. Loading on my 48k speccy from a Samsung Galaxy S7 - even with an amplifier - is a bit hit and miss. I captured the waveforms coming out in Audacity, and there's a noticable low-frequency 'bong' followed by some low volume buzzing which follows every burst (e.g. after the header). I wonder if that's what's causing the problems? It's even worse if I select the 'Square wave' option in Settings. I have plenty of signal level as I'm using an amplifier, and loading the same .tzx file using tape2wav on a Windows laptop works fine.
Hey Rob, thanks for your note! Yeah, it's not perfect; it took me a while to find waveform settings that would work (mostly) reliably on a few devices that I have and on those of several users which helped me along. I can look at that 'bong', I know exactly what you are referring to. With the square wave option, it's even more puzzling as I had a number of people 'report' that this feature in particular fixed loading problems on their end.
This capability has unlocked some 1980's gaming skills I forgot I had. I would love to be able to create an archive of my tapes, but the process of copying and converting to MP3 is very hit and miss. I am learning about tap files now and wondered where/how you are indexing and sourcing the content that your app then streams as audio.
The conversions I have made are covered in tape noise and at the mercy of the cassette deck and tape tension. Are the TAP files some form of cleaned up source code?
Hi Phil, TAP/TZX and similar formats contain blocks of data in its source/binary format which this app reads and creates an analog (frequency domain) equivalent to what Speccy would have done when saving the same data. In that, this app is not unique: there are several other programs that do the same on PC and other platforms. Since TAP/TZX/... formats can get quite complicated, I do not have a 100% success rate with all possible files found out there, but I tried really hard to address the most common issues. The remaining apps that don't work mainly use some complicated saving schemes and are not worth investing more time into fixing them.
I painstakingly collected files from a number of public collections to create a database which is embedded in the app. That effort alone was probably 3/4 of the total effort; 1/4 being writing the actual app itself.
It should be possible to get a wave file of the last game "played" from its cache on the Android device, if you want to store it away for your own backup. I did this during the development, not sure if I ever documented or advertised that. Will have to check the exact paths to that cache on a device.
Hi thanks for this app, i use a mono/mono cable on my phone, all games load till the end. Most of the times game just gives error when it reaches 100%. is this normal?
No, that's not normal. I've seen only a couple of games that would do that (a very few) that may use some special protection, but definitely not "most". The sound is probably very marginal on your setup. Perhaps there is some distortion in the play. Can you try it on another device, if you have one available?
I'm trying to load via a Pixel 4 on a ZX Spectrum Next and I can't get it loud enough. I've tried a mono cable and tried all combinations of audio settings but I can't get it to pick up reliably at all. Has anyone tried some kind of inline mini headphones amp or maybe a Bluetooth audio reciever?
there are affordable amplified speakers with headphone connectors, i don't know if that could work, i didn't test it yet for that - for now what i'm using here are those sound booster apps (like max volume booster) that seems to work fine here on a 48k issue 2
the rewind button and the gaps are not being shown here, where they are? (quite painful experience on multiload games, i always need to play everything back again to the beginning! 😀 ) or should i use a more recent version? (i'm using the last version available from google-playstore, should i use another more recent version available somewhere else?)
The updated version of the app has those new features. Google Play would not let me update the older version (built for the older phones), but I could remove it from the store, which I did not want to since there are many older phones that could still use the (old) app. Basically, your phone fetches the most up-to-date version of the app that is capable of running. Google being Google, they are moving fast, obsoleting things, they don't care much about long-term backward compatibility 🙁
I tried this app with my old ZX Spectrum+ and it works perfectly! Thanks. I only had to make sure the volume is at its maximum, that was very important. But I also have a few TAP files from Sam Coupé - it is a different computer, but it uses pretty identical TAP files with exactly same contents. But your program says that these files are invalid, all of them. I am pretty sure they are correct and valid. I assume your program does some strange "verification" which as a side effect prohibits TAP files from Sam Coupé to work. Could you possibly add an option to turn off this verification? I can also send you a few example TAP files so you can look yourself. I checked twice, they are absolutely standard, in comply with TAP file forma specification. I think the problem might be in the way how Sam Coupé computes CRC of each data block (the last byte), the algorithm is different, so it might seem like a tape loading error on ZX Spectrum, even when data have been read correctly. It would be nice if these files were also supported by your player. 🙂
Hi Aleš, can you email me a couple of those files? I can see if that's something that can be added.
Is it possible to get SCR files from the zxart site to save in the app? My plan is to load art studio and then load files into it from my phone to save some of my files onto cassette?
Not easy. The app's internal database does not have links to those art files. It would have to be recompiled, and somehow linked in each art file (automatically). Also, since the database contains about 12000 games and programs, that process would somehow have to automatically find/fill in the art file for each. If only a small percentage of games have their art available, it would not add value to most of the games, but it would still require a considerable effort to do.
Thanks for replying.
I was hoping there would be an easy way out there somewhere to download SCR files to play into a real spectrum.
If you can convert an SCR file into TAP format, then it should work (with LOAD "" SCREEN$)
I am sure there are utilities that can do that already, did not look into that.
Now the question becomes, can the app do that step? 🙂 That would actually be a pretty neat thing to have.
It would be amazing. There must be a way i just havent found one yet! I started copying one of my digital screens pixel by pixel on my spectrum but it crashed before i had a chance to save a few hours work so a bit reluctant to try that again.