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 the ZX Spectrum micro and a few other retro computers with 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 can search for each game online. It does that in the background – you 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 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 compiled a build for those older devices; you can download it here.
Also, this is the official alternate location for the ARMv8 app build (the newest version is 2.4).
AArch64 (ARMv8) | https://baltazarstudios.com/PlayZX/Repos/PlayZX-aarch64-v2.4.apk |
armeabi-v7a | https://baltazarstudios.com/PlayZX/Repos/PlayZX-armeabi-v7a.apk |
Despite what the Play listing shows, there are no in-app purchases; I made this app completely free in 2016, and there are no annoying ads. But if you like the app and end up using it, you could always buy me a coffee or drop me a note!
Notes
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 the sound 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 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 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 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 must float so 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 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 hear something, though, your phone is probably changing the “stereo” signal somehow – which is also not good.
Some users report using a “sound booster app” which 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 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 several 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 headphone output.
Screenshots
Games are listed hierarchically, 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 the sound, you can PAUSE it and REWIND to any gap separating data chunks.
The Favorites list keeps your list of games you’d like to access quickly without searching 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 return.
The Search tab allows you to search for a game in several 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 only decodes their image formats, those links provide some convenience for 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 to yellow, showing you that you are now searching for a publisher.
The third and most powerful search method 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 allows you to select, decode and play your own image for ZX Spectrum and ZX81, and MSX machines. However, the test pilot tone is only for ZX Spectrum: when selected, it will play continuously until you click on the STOP button, so you can have it 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 device and then click 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 the locations of those images for your convenience so you don’t have to search for them again.
Suppose 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 it will only remove the name from this list.
Known Issues
Some games do not work or do not load cleanly. Although I have put a lot of effort into 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, games that utilize various speed-loading techniques may not work. We’ll live with that.
You cannot enter a local folder with “#” in the name (an issue with the software framework I am using). Crazy, but we’ll also live with it. Just don’t name your folders that way 🙂
Happy gaming!
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!
hello, im useing a +2A spectrum to load the games through a samsung galaxy A12, but it would not read the loading sound on the screen, so i used my laptop and loading sound reads on the screen but there is no loading lines. am i doing everything correctley.
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
Thanks again
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.
Hi
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?
Thanks
Hi Mark,
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.
Is there a version of PlayTZX that runs on Windows, or one planned. I would prefer to use my laptop rather than a mobile phone to store and Load my tap and tzx’s into my spectrums. I guess I could use it via an android emulator, but that makes things more complicated and less simple to use. PS I can also load files converted to wav files via my audio output, but this does’nt give me the ease of use and great functionality of PlayTZX
There are no technical issues to compile it as a desktop app: being tailored to Android, it would not look good / like a desktop app. Paul, can you email me in private?
Hi, When I follow the link to download the app it says it was made for an older device and won’t let me download. Do I need to try it on an older phone?
That’s a “magic” of Google Play market which I don’t quite understand: if your phone is not able to run the app (ex. wrong ARM CPU version), you should not be able to see it as available to install on your device.
The app is old, but it’s still compiled for ARM64 should run on all newer phones as well (like my Pixel 6 where it runs perfectly).
Is the APK available so I can load it without going through the play store?
Here I put a copy of the APK: https://baltazarstudios.com/files/232325.apk
I just pulled it from the Google Play store, did not try to adb install it. Please tell me if it does not work, then I may need to recompile it.
Thanks very much, installed and opened without a problem!
Hi, me again! I cant seem to get ZX81 games to play. If i go to ‘local’, highlight a game and press select the game appears in the file path at the top of the screen but not in the list of playable files. Am i doing something obviously wrong?!
Click on the “Add” button that is next to “Select…”. Yeah, not a perfect solution, I know…
Thanks for getting back to me. When I select add is says please select a valid tzx/CDP or tap file. (I’m trying to load .p)
Huh. Let me look into that more closely.
Hello, I’m using a stereo cable and I’m getting every game to load and all the loading screens come up however when they get to the end of the file they all either have a blue screen around the border and halt or just crash back to 1982 Sinclair research I havn’t been able to get a single one to load. Im using a stereo cable with invert one stereo channel turned on. The app doesn’t work on my modern phones so I have to use an old galaxy tablet. I’ve tried multiple different wave playback volumes. Im stumped as to why they will load but won’t fire up
Any plans for an exhaustive update of PlayZX?
This old app may likely be soon pushed out from the Play Market by Google since there are several new API requirements that it (being old) does not satisfy. I keep getting these emails from Google and wondering what day they will remove it. So, I am at the point of either shutting it down completely or putting some effort to update it to what Google asks for. It is really a niche app and is nice to see it’s being used and that people (mostly) like it. In any case, I will make sure it is available on this website even if they take it down. To answer your question, the most I may do is to try to update it with regards to new Google requirements, so that at least it can remain on the market. There is really nothing more functionally I can do; I think it does what it supposed to do. Thanks for the question!
This app is well loved by the community. Please do update so it continues to live on in the App Store.
Hi, I echo that – I’m new to all this and was super excited to download the app but it won’t work on my Android phone – I’m not very tech savvy so please help!
Hi John, how exactly it does not work? Can you email me in private, I can see if I could help.
Hi, thanks for the speedy reply! It’s telling me the app was designed for an older version of Android (I normally use Apple but bought a cheap phone to try the app). Will it be best to download via the link instead? Thanks
Ah, yes. That’s the API level google is enforcing.
I have copied the APK here: https://baltazarstudios.com/files/PlayZX/PlayZX_232426.apk
Thank-you, that’s fantastic. Really appreciate you taking the time to reply to me.
Hi,
Thank you for fantastic app. I was able to achieve smooth loading with a cheap Samsung Galaxy J2 phone. It needed the “Stereo” and “Invert one channel” settings but works fine now with a stereo cable.
Hello, I am wondering how can I record game From this app back to old fashion cassete. I have tried but once Im trying to load recorded game From tape it is not capturing enything even when I hear that the game is recorded on tape.. maybe it is having issues with sound quality? Pls advise if there is any chance how to record back on tape for old fashion feeling 🙂 many thanks. Miro
Hi there, is there any working option how to record game back to tape for the old fashion feeling? 🙂 I have tried but the playback from tape even when I hear is recorded , is not working to load the game From tape. Thanks for any kind of help. Take care. Miro
Hi Miro, the problem is likely the volume. However, there may be another option. The app creates an intermediate wave file (which it plays). I should be able to add an option to export that wave file somewhere on the Android device where it would be visible (like, the Download folder). Then, you could copy that wave file (to PC, for example), and play it from there, to record it. I believe that would be useful. I will do that for the next version.
Wow, thanks for your swift reply. That would be great and definitly very very usefull. When are you planning issue the next version? Thanks and take care.
Miro
Hi, I have published the updated version (3.1) of the app, with “Added option to save the last wave file to Downloads folder.”.
A new button is added to Settings and will save the last played file, as a wave file, to the downloads folder. Please see if that works for you; I had some mixed success with accessing the Downloads folder due to new Android file permissions, but at the end, with some fiddling, it did work on all my test devices.
Amazing App, thank you so much to Goran for developing it!
I have only a question:
is it possible to have a better explanation on how to use MySql queries parameters and their syntax?
For example what should I write to select all the games with 4 stars rating or higher?
And to select games depending on duration/variation?
Thank you again.
Luca
Hi Luca, those are good ideas, I will write up a more in-depth description of the possible parameters and publish it here. Thank you!
Hi all, this app and recommended dongle work for me like a charm – many thanks for bringing back memories!! I provide my setting below in case it has value to anybody searching for a solution.
1) My ZX Spectrum:
I am in the U.S. and bought the ZX Spectrum 48K from the UK. I had to replace the power supply with one appropriate for the United States (bought it for about $15 from Amazon). For my HDMI screen, I use a Raspberry based ZX-HD device from BYTEDELIGHT in the Netherlands. Works like a charm, highly recommended if you do not want to mess with the ZX Spectrum 48K RF related electronics.
2) My Phone
I have an Android phone – Samsung Note 20 Ultra. I have my phone volume to max – I do the same on the dongle (seems the gadget control the phone volume). I also use the 3.5mm wire that comes with the dongle.
3) App Settings:
Wave playback volume: 95
Stereo: On
Both Channels in Synch
Normal Speed (1x)
Natural wave
Loaded 5 games from the app with no issues!!!!!!
Good Luck!
Leo M., Chicago
Love your app but hit a problem with the spectrum game – Elite. At 3:55 there is a stop in the game loading which is supposed to be there, but the gap between that and its next segment is too small and the computer doesn’t detect the next start quick enough to carry on loading. The rewind options do not help on this game. Any help v much appreciated!
Hi Ash, there are several versions of Elite: which one has that problem? Could you use “Save Last File to Downloads” option (in the Settings) to save it as a wave file and then use your own Wave file player which could pause the playback?
It would be nice to have the complete Horizons starter pack software. In the list I only see ‘Thro’ the wall’
It would great to support Atari Supercharger ROMs. MakeWAV source is available… https://forums.atariage.com/applications/core/interface/file/attachment.php?id=429811