PlayZX is an Android application which 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 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 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 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 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 do the following...
- 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 in to USB or any other 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 be hearing 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 amplify 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", "ambience enhancers" etc.)
Put the device into "Do not disturb" mode to avoid a random notification being mixed with the game sound.
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 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 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 local 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 sw framework that I am using). Crazy, but we'll live with it. Just don't name your folders that way 🙂