ZXDS 3DS: Difference between revisions

From GameBrew
(Created page with "{{Infobox 3DS homebrew | title = ZXDS | image = https://dlhb.gamebrew.org/3dshomebrew/ZXDS3DS.jpg|250px | type = Computer | version = 2.1.1 | licence = Mixed | author = Patrik...")
 
m (Text replacement - "Category:3DS homebrew emulators" to "")
 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox 3DS homebrew
{{Infobox 3DS Homebrews
| title = ZXDS
|title=ZXDS
| image = https://dlhb.gamebrew.org/3dshomebrew/ZXDS3DS.jpg|250px
|image=Zxds3ds2.png
| type = Computer
|description=Sinclair ZX Spectrum that support WiFi multiplayer.
| version = 2.1.1
|author=Patrik Rak
| licence = Mixed
|lastupdated=2022/01/20
| author = Patrik Rak
|type=Computer
| website = http://zxds.raxoft.cz/
|version=2.2.1
| download = https://dlhb.gamebrew.org/3dshomebrew/ZXDS3DS.rar
|license=Mixed
| source = https://dlhb.gamebrew.org/3dshomebrew/ZXDS3DS.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/zxds3ds.7z
|website=http://zxds.raxoft.cz
|donation=http://zxds.raxoft.cz/#donations
}}
}}
<youtube>1zHEpaqWwlU</youtube>
ZXDS is an emulator of Sinclair ZX Spectrum for [[ZXDS|Nintendo DS]] and 3DS, written by Patrik Rak. It accurately emulates Spectrum 48k, 128k, +2/+2A/+3, and Pentagon, and supports SNA/Z80/SZX snapshots, TAP/TZX/PZX tape files, TRD/SCL/DSK disk files and RZX replay files. It has some other noteworthy features, like the ability to download all these files online over WiFi, peer-to-peer WiFi multiplayer, or Kempston mouse emulation.


Welcome to ZXDS homepage.
==Features==
* Solid Z80 core.
* Full 128k paging support.
* Reasonable Pentagon emulation.
* Precise screen emulation.
* Primitive border emulation.
* Good 48k/128k snapshot support.
* Full TAP support.
* Reasonable TZX support.
* Full PZX support .
* Virtual tape deck.
* Good TRD/SCL support.
* Builtin disk browser.
* Good RZX support.
* POK files support.
* ZIP archives support.
* Online WiFi access.
* Peer-to-peer WiFi multiplayer.
* Save state support.
* Screenshot support.
* Configurable input support.
* Fully customizable keyboard.
* Kempston mouse emulation.
* Memory viewer and disassembler.
* Text and binary file viewer.
* Statistics tracking.
* Favorite/recent files tracking.
* Battery friendly.
* Skinning support.
* Builtin help system.


ZXDS is an emulator of Sinclair ZX Spectrum for Nintendo DS and 3DS, written by Patrik Rak. It accurately emulates Spectrum 48k, 128k, +2/+2A/+3, and Pentagon, and supports SNA/Z80/SZX snapshots, TAP/TZX/PZX tape files, TRD/SCL/DSK disk files and RZX replay files. It has some other noteworthy features, like the ability to download all these files online over WiFi, peer-to-peer WiFi multiplayer, or Kempston mouse emulation. It is available entirely for free, however donations are a nice way of saying &quot;Thank You!&quot;.
==Installation==
Copy the entire ZXDS directory (not just its content, but the directory itself) to the root of your SD card, making sure that even the empty subdirectories are copied.
* If you have used [[ZXDS|ZXDS on a DS before]], note that you may copy your entire ZXDS directory from your DS card to this SD card, too.
* All the files are compatible, with the only exception of files in /ZXDS/Graphics/, which are now 320x240 instead of 256x192.


Download and installation First download the correct archive using one of the links below, then follow the instructions for your handheld model.
Then copy ZXDS.3dsx to the 3ds directory of your SD card and run it with Homebrew Launcher. Alternatively you can install ZXDS.cia with a CIA manager of your choice.


Download ZXDS 2.1.1 for Nintendo 3DS/2DS (and consider donating if you like it!)
The other directories in the archive contain various extras (e.g. games, demos and templates), some of which you may want to put on the SD card as well. See readme.txt in one of those directories.


Download ZXDS 1.3.4 for Nintendo DS/DS Lite/DSi
'''Note:''' In order to run properly and generate audio, you will also need to have the [[DSP1 3DS|DSP firmware]] (dspfirm.cdc) installed.


3DS users Unpack the downloaded archive, remove the SD card from your handheld, insert it into your computer, and copy only the entire ZXDS directory (not just its content, but the directory itself) to the root of the SD card. Make sure that even the empty subdirectories are copied properly (in particular, make sure the /ZXDS/Saves directory is created, otherwise the save slots won't be saved permanently to your card). Then copy the ZXDS.3dsx to the /3ds directory on your SD card (or whichever place you run the homebrew applications from).
==User guide==
Simply run ZXDS the same way you run any other application.


If you have used ZXDS on a DS before, note that you may copy your entire ZXDS directory from your DS card to this SD card, too. All the files are compatible, with the only exception of files in /ZXDS/Graphics, which are now 320x240 instead of 256x192.
Upon startup, follow the built-in online help which shall provide you with all the instructions you will need (remember to turn the help off once you get familiar with individual icons and menus, it would only slow you down otherwise). You will basically need to load some file via Load File screen of I/O menu (pressing Start gets you there quickly by default), then perhaps adjust controls via the Controls screen, and you are all set.


Note that in order to run properly and generate audio, ZXDS needs the DSP firmware installed. It's quite likely you have it already, but if you haven't done so yet, ZXDS will let you know. In such case I suggest you google for &quot;3DS guide DSP setup&quot; and follow the steps regarding DSP firmware installation which should create the /3ds/dspfirm.cdc file on your SD card.
A few Spectrum games and demos are included in the archive itself for you to try out. See also the [http://zxds.raxoft.cz/games.html list of recommended games] by the author.


DS users Unpack the downloaded archive and copy only the entire ZXDS directory (not just its content, but the directory itself) to the root of whatever device you use to run homebrew on your DS. Make sure that even the empty subdirectories are copied properly (in particular, make sure the /ZXDS/Saves directory is created, otherwise the save slots won't be saved permanently to your card). If you wish so, you may then relocate the ZXDS.nds to elsewhere on the card, like to the root itself, to make it more accessible.
===Software for ZXDS===
Below is a list of recommended sites if you are interested in finding more games and other software for use with the emulator:
* [http://www.worldofspectrum.net/archive.html World of Spectrum Classic Archive] and [http://www.tzxvault.org TZX Vault].
* [https://spectrumcomputing.co.uk Spectrum Computing] for newer production.
* [http://zx-spectrum.cz/?lang=en ZX Spectrum site].
* [https://www.zxaaa.net ZX AAA Demo], [http://www.zxdemo.org Demotopia], [http://www.pouet.net Pouët.net] or [https://vtrd.in Virtual TR-DOS] for demos.
* [http://www.rzxarchive.co.uk RZX Archive] for RZX replay files. Best way to check out the games you always liked but never managed to finish.


The provided binary ZXDS.nds is primarily intended for Slot-1 (DS slot) based cards. Most of these cards now support automatic DLDI patching, so you likely won't have to bother with that at all. Just give it a try and you will see. If it won't work for you right away (meaning you won't be able to see any files to load in the load requester) you might need to patch it with a specific DLDI driver for your card with a DLDI patcher, both of which you can find here. If you need the ZXDS.ds.gba version which is better suited for Slot-2 (GBA slot) based cards, simply follow the instructions provided here. Note that you will likely need to DLDI patch it first in this case. If it still doesn't work, I am really sorry, but there is not much I can do about it. Please do NOT contact me regarding if it works or doesn't work on your card. Thanks.
===Key mappings===
The control mapping can really make a difference, so make sure customize it the way you like it most for any serious gaming.  


Everyone Other directories in the archive contain optional extras, so check the README files in each and install their content to the right place only if you want to. For example, you may want to copy the custom keyboard examples to /ZXDS/Data/Keyboards.
For example, in case you have problems pressing the diagonals, it helps to map the up direction to the B button as well. This way you can jump sideways with ease. And mapping the quick save and quick load actions to the shoulder buttons gives you an instant save and load at the touch of the button, priceless feature for the hardest parts of the game you are playing.


You should also copy some tape, disk, snapshot or replay files to your card. Either TAP/TZX/PZX tape files, TRD/SCL/DSK disk files, SNA/Z80/SZX snapshots or RZX replay files are supported. You can place them anywhere you want, however the /ZXDS/Data directory is looked up first by default. For your convenience, I have included few Spectrum games and demos in the archive itself, so you can at least give it a go. And you can find pointers to much more software further down this page. In particular, don't miss my list of the recommended games.
==Screenshots==
https://dlhb.gamebrew.org/3dshomebrews/zxds3ds3.png
https://dlhb.gamebrew.org/3dshomebrews/zxds3ds4.png


Alternatively, if you have WiFi access, you can just rely on the /ZXDS/Data/Online directory and browse the plethora of files available online. If you want that, read the online.txt included in the ZXDS archive for more info.
==Changelog==
'''2.2.1 2022/01/20'''
* HALT is now really contended by PC+1 in all cases. Thanks, Woody.
* Block instructions now set flags correctly when interrupted or overwritten. Thanks, Ped7g.
* Fixed re-recording of forced RZX frames during RZX playback.
* Subtle "just-in-case" RZX fixes (frame count overflow, rollback checkpoint).


Using the emulator Simply run ZXDS the same way you run any other application.
'''2.2.0 2021/12/24'''
* RZX recording, including support for rollback and resume. Simply save file with .rzx suffix to start the recording.
* RZX recordings can share external snapshot placed in the same directory. Load the snapshot after starting the (preferably paused) recording to use it.
* Recording playback of another RZX, both entire or part of, is supported, too. This makes it possible to resume RZX files which were already finalized.
* RZX recording can start both before or during a multiplayer session as well. Just remember to use rollback on the recording machine to avoid recording of the rewind actions.
* RZX playback was updated to support forced frames introduced in RZX format 0.14.
* Saving snapshot files in save requester no longer overwrites the UNDO buffer. This makes UNDO work as expected even in multiplayer, especially after rollback is used.
* Local SZX snapshots now support external media in their original location in other directories.
* Few minor improvements (confirmation backlight, SZX and Z80 pre-save stepping, help word wrapping).
* Few subtle bugfixes (RZX jumbo frames, RZX tape warping, RZX rollback seek, tape parsing, async I/O).
* Dedicated to Daren Pearcy. So sad you couldn't try it out.
* In memory of Sir Clive Sinclair. Thank you for everything.


Upon startup, just follow the builtin online help which shall provide you with all the instructions you will need (remember to turn the help off once you get familiar with individual icons and menus, it would only slow you down otherwise). You will basically need to load some file via Load File screen of I/O menu (pressing START gets you there quickly by default), then perhaps adjust controls via the Controls screen, and you are all set.
'''2.1.1 2020/12/24'''
* Added experimental barebone .cia binary. Use entirely at your own risk.
* ZXDS now refuses to run if it can't find its installation directory to prevent incomplete installation.
* Fix for proper rollback of media in case the user truncated it afterwards.


The control mapping can really make a difference, so make sure you customize it the way you like it most for any serious gaming. For example, in case you have problems pressing the diagonals, it helps to map the up direction to the B button as well. This way you can jump sideways with ease. And mapping the quick save and quick load actions to the shoulder buttons gives you an instant save and load at the touch of the button, priceless feature for the hardest parts of the game you are playing. And for even more complex game controls or for text adventure typing, the custom keyboard feature is a godsend, too. Make sure to check the bundled custom keyboard examples, and don't hesitate to create your own.
'''2.1.0 2020/12/20'''
* Rollback allows rewinding the time up to 5 minutes back. Bind it to any convenient button like Y or L/R for best experience.
* Rollback can be used to rewind the RZX playback as well.
* Multiplayer session is now automatically resynced after rollback, quick load, or load slot is used.
* Added two options for zooming the main screen. It's blurred, but some people may prefer it nevertheless.
* The custom menu can be customized by tapping the menu icon after tapping an action in the controls screen.
* Merry Christmas.


Please do NOT contact me regarding if some games do or do not work. The emulation itself should be near perfect, so it's much more likely you are either loading the game using wrong model (48k vs 128k vs Pentagon vs +2 vs +2A/+3) or in wrong mode (Tape loader vs USR 0), or you have broken copy of the game, and I can't afford to waste my time helping you with issues like this. Only if you have the knowledge to diagnose what exactly might be buggy and you can prove that, preferably with a piece of Z80 code, I would like to hear from you. So let me repeat that once again, please don't waste my time contacting me regarding game compatibility, unless you can pinpoint the actual bugs. Thanks.
'''2.0.2 2020/04/13'''
* Created lists for ZXDB entry in servers.cfg.
* Fixed downloading from HTTPS sites by detecting non-standard EOF properly.
* Happy Easter.


Software for the emulator To download more games and other software for use with the emulator, the first thing to check out is definitely the huge World of Spectrum Classic archive collection. Note that it already includes the content of another major source, the TZX Vault. If you are looking for newer production, you may have better luck at Spectrum Computing. This Czech ZX Spectrum site is very well worth visiting, too. And if you want a suggestion of which games are worth trying, here is my list of recommended games.
'''2.0.1 2020/02/02'''
* Fixed top screen issues of 2DS and 3DS XL models by slowing the LCD display differently. Thanks Nige.
* Disabled turning off of bottom screen backlight on 2DS as for some reason it affects both screens.
* The optional ZL and ZR buttons are now bound to quick load and quick save actions, respectively.
* Considerably increased speed of scanning directories.
* Few more subtle changes (async file flush, display speed adjustment only at normal speed).


In case you are interested in some demos, check out the ZX AAA Demo, Demotopia, Pou�net, or Virtual TR-DOS sites. You won't regret it, as it is really amazing to see and hear what some people have achieved to do on the Spectrum.
'''2.0.0 2019/12/21'''
* First native release for Nintendo 3DS.
* Proper border emulation.
* Floating bus emulation for +2A/+3 models.
* Downloads now support the HTTPS scheme.
* Increased the number of save slots to sixteen.
* Screenshots can be now saved with or without the border area.
* Increased some other limits (128MB download cache, 4MB file buffer).
* Quit now finally quits to the launcher menu. But you can use the HOME button, too.
* Work around for TZX files which use incorrect STOP block size.
* Few subtle bugfixes (mouse mode init, inputbox capslock, load registers).
* Merry Christmas.


The RZX replay files can be obtained from the RZX Archive. Best way to check out the games you always liked but never managed to finish.
'''1.3.4 2017/04/23'''
* HALT is now correctly contended by PC+1, not PC.
* To give the user a clue, incompatible multiplayer peer is now detected and reported, if possible.
* Happy birthday, Speccy.


And if there is something else you are looking for, it never hurts to ask on the friendly World of Spectrum or Spectrum Computing forums.
'''1.3.3 2014/12/24'''
* Upon startup, let Start show the most recent files only if there are any.
* Properly handle save slot medium if all ten medium slots are still being used.
* When statistics become full, don't discard entries which might still be part of the recent list.
* When global statistics are loaded, pick the latest version under all circumstances.


Features There are quite a few features already implemented, and some still ahead of me. Please do not bother me asking for features, though. I still have some which might be implemented before I will reconsider what next. Thanks.
'''1.3.2 2014/11/22'''
* Fixed libfat bug which could make corrupt directory entry after the last entry was deleted. You might have experienced this mostly when renaming files or moving them around.
* Fixed couple more libfat bugs (really long names, alias creation, whitespace trimming).
* Added caseinfo extension to libfat so letter case of 8.3 names is now read properly.
* Medium associated with persistent copy of save slot 0 is never deleted prematurely anymore.
* Save slot medium removal is now postponed to further improve chance of media reuse.
* Few other subtle changes (cache filenames, file name trimming, minor help tweaks).


Features already implemented:
'''1.3.1 2014/07/10'''
* Fix the initial main screen palette which could get messed up on some cards.
* Make the mouse help window look like all the other help windows.


Solid Z80 core - the Z80 emulation includes all documented and undocumented instructions, each modifying both documented and undocumented flags as a real Zilog Z80 CPU. Each instruction modifies the T state counter properly as well, including delays caused by memory and I/O contention. The emulator also implements all other subtle details of Z80 I know of, including authentic SCF/CCF behavior, MEMPTR, proper IRQ sampling and blocking (missed/double IRQ, delayed EI, IX/IY prefix blocking) and P/V fix for interrupted LD A,I/R instruction. Full 128k paging support - the memory paging of ZX Spectrum 128k is fully implemented. This includes both ROM and RAM bank paging and shadow screen support, as well as all-RAM mode of +2A/+3 models. Accurate 48k and 128k sound emulation - both 48k speaker and 128k AY-3-8912 chip are emulated, including ABC and ACB stereo modes. The emulation is pretty much exact, and the speaker even uses accurate synthesis instead of discrete sampling. Precise screen emulation - the screen display code renders color, bright and flash as expected. The screen is sampled with T state accuracy, so even the most timing-sensitive multicolor effects work like on real machines. Finally, the LCD refresh rate is synchronized to match the 50Hz screen update, resulting in amazingly smooth and tearing-free display. ULA+ emulation - The ULA+ 64 color mode extension is supported, too, including ULA+ screenshot saving and loading and instant ULA+ palette switching. Proper border emulation - The 3DS models feature accurate border emulation, so you can enjoy all the games and demos using fancy border effects. On DS, the border color is simply mapped to the background color of the touch screen. Accurate +2/+2A/+3 emulation - in addition to the original Sinclair 48k and 128k models, the newer Amstrad models are fully emulated, including +3DOS and both 3? and 3.5? disk drives. Reasonable Pentagon emulation - the Pentagon is fairly accurately emulated, too, including TR-DOS and disk drive. Custom ROM and IF2 ROM support - it is possible to emulate even some other Spectrum clones, such as TK90X and TK95, simply by replacing the standard ROMs with the right custom ones. Both custom ROMs and Interface 2 ROMs can be also easily loaded and switched at runtime. Good 48k/128k snapshot support - the emulator supports all SNA, Z80, and SZX snapshots, including compression and button config settings. Virtual tape deck - the emulator features a virtual tape deck with both manual and automatic control and convenient tape browser for precise tape positioning. The tape recording is supported, too. And you can even listen to the tape sound if you wish. Full TAP support - TAP files are fully supported, and loaded at high speed whenever possible. Reasonable TZX support - apart from few flow control blocks (call, jump, select) and CSW and GDB data blocks, the TZX files are fully supported. Loading at high speeds is used whenever possible as well. Full PZX support - PZX tape files are fully supported, too. You can find more about this format here. Beta 48/128 emulation - the Beta Disk is usable even with standard 48k and 128k models, not Pentagon only. Both Beta 48 and Beta 128 variants are supported in 48k mode. Good TRD/SCL support - both TRD and SCL TR-DOS disk files can be loaded and saved. Formatting of all four possible TR-DOS disk types is supported. The autoboot feature is included, too. Good DSK/EDSK support - +3DOS DSK and EDSK disk images can be loaded, saved, and formatted, too. All advanced features such as random/weak sectors and jumbo sectors are supported, so even the copy protected disks work just fine. The autoboot and side flipping features are included, too. Builtin disk browser - you can examine the content of the TR-DOS and +3DOS disk images, including both the disk directory as well as the individual sectors. Good RZX support - it is possible to play back the RZX recordings now. No recording support yet, though. POK files support - cheating is easy thanks to the use of the POK files. And whenever you load a game, if present, the associated POK file is conveniently loaded as well. ZIP archives support - no need to unpack ZIP archives anymore. Browsing and reading everything directly from ZIP archives is supported. Online WiFi access - builtin HTTP and FTP client allows getting files from major Spectrum sites over WiFi. It ties in seamlessly thanks to the virtual directory system, which allows browsing of arbitrary listings of both local and remote files. Peer-to-peer WiFi multiplayer - playing 2 player games was never this good. Grab a mate, tap the WiFi host/join icons, and you can play the game together, each using your own DS. Simple like that. Save slot support - there are sixteen (nine on DS) builtin save slots for storing the save state in SZX snapshot format, each featuring miniature screenshot thumbnail. One additional save slot is used for both recovering the previous state and preserving the state across sessions after shut down. The associated disk/tape file is saved to its own file if needed, too, meaning you can really stop and resume your game session whenever, wherever. Rollback history - in addition to those save slots, the 3DS version includes the rollback feature which automatically captures up to 5 minutes of history at 1 second intervals. This allows you to conveniently rewind time whenever you decide to do so. Save requester - of course, you are not limited to those builtin save slots only - you can save any amount of SZX and Z80 snapshots using the save requester, too, as well as any of the other supported file types. The save requester also supports basic file and directory management operations. The option of alternating two directories and the handy prefix/substring based file name search are available in both save and load requester. Screenshot support - you can save SCR and BMP screenshots anytime you wish, either from the save requester or by simple press of the screenshot action button. You can even load the SCR files back for viewing. Configurable input - all buttons can be configured to simulate any keyboard key or joystick movement as well as any of the actions accessible via menus. Fully customizable keyboard - complex game and application controls are no longer a problem with the ability to define a custom keyboard of 60 custom keys and action buttons. Kempston mouse emulation - the Kempston mouse interface is emulated, featuring both relative and absolute mouse modes. During WiFi multiplayer it even supports dual master/slave mouse interfaces. Memory viewer and disassembler - you can explore the content of the Spectrum memory, shown as bytes, words, characters, BASIC tokens, text or Z80 disassembly. You can also use it to enter POKEs manually. Text and binary file viewer - you can use the builtin file viewer to examine the content of any file available locally or online. Handy for reading the instructions or walkthroughs of the game you are playing. Statistics tracking - the system keeps track of various usage statistics and the games and applications launched. Ever wanted to know how much time you spent doing something? Now you can. Favorite/recent files tracking - the collected game and application statistics are also used to generate a list of 500 of both most and last used files. Battery friendly - the CPUs enter a sleep mode whenever possible to minimize the consumption, and when not in use, the backlight of the bottom screen is also turned off to preserve more battery power. And when the lid is closed, the handheld enters a deep sleep mode which can last for many hours. Note that the current state is automatically saved in this case, too, so you can relax, knowing you won't loose anything even if the battery would run out. Skinning support - it is possible to change graphics and color of every UI element with custom backgrounds, icon sets and style configs. Builtin help system - the builtin help system explains in detail the functionality of each UI element, ensuring comfortable and friendly user experience. Features which might be eventually implemented:
'''1.3.0 2014/07/01'''
* ULA+ emulation for all Sinclair and Amstrad models.
* Support for all types of 3.5" double sided +3DOS disks.
* Raw screenshots now support the ULA+ extension for both saving and loading.
* Current ULA+ palette can be changed simply by loading the appropriate ULA+ palette tape files.
* Other ULA+ related changes (BMP screenshots, thumbnails, SZX support).
* The selected ULA mode as well as the display mode are now part of the config file.
* You can now keep your desired custom configuration persistent separately in custom.cfg.
* Sector viewer now displays bottom side track addressing info in inverse colors.
* Reverted special treatment of full size TR-DOS disks, so padded images work again.
* Minor +3DOS fixes (gap3 reading, EDSK track padding, SZX disk side selection, motor bit disabling)
* Loading a POK file now automatically shows the poke screen. Pressing Y switches back, as usual.
* Reading attributes from unmapped ports on Pentagon now mimics the real hardware mod behavior.
* Other subtle emulation accuracy improvements (+2A/+3/Pentagon screen timing, 128K/+2 INT duration).
* Many internal changes (optimized screen sampling, optimized contention, async palette switching).
* Other subtle changes (UNDO media keeping, CPU stepping prior snapshot save, volume mode order).
* Minor bugfixes (media slot release, paths set to root dir, filter in root dir, allowed filter chars).
* Happy birthday, and thanks for all the fish.


RZX recording - RZX recording might be a nice feature to have. Not sure if it really pays off to spend the time on this, though. Features unlikely to be implemented:
'''1.2.0 2014/02/19'''
* Proper Spectrum +2/+2A/+3 emulation, including contention and everything.
* Support for +3DOS 3" DSK/EDSK disks, including formatting, autoboot and disk browser.
* TR-DOS formatting now also works for all possible disk format types.
* File and directory name filtering is now available in file requester.
* All keyboard keys are now sticky whenever the emulation is paused.
* In load requester, L/R+Y now shows the other medium than Y does.
* Button input in file viewer can be now toggled with icon or L/R+X and Pause.
* Full size TR-DOS disks are now always treated as double track and double sided.
* Alternate save/load directories now work better and even with filter enabled.
* Various internal changes (ROM deltas, SZX +3DOS support, plus model stats, media icon).
* Minor bugfixes (FTP files caching, hex decoding, TR-DOS BASIC start line).
* Dedicated to my beloved parents. Thanks for getting me my first Speccy.


Complete TZX support - I am not really eager to implement the missing TZX 1.20 features, they are just too much pain and little gain. Simply use PZX tools and convert any problematic TZX to PZX if you want to use it. ZX Printer support - I just have no idea how this would be useful. Interface I and Microdrive emulation - although I own one IF 1 myself, I don't think it is really necessary for anything you would want to do on a DS. Multiface/other peripherals support - why bother. Timex and other clones emulation - I have no intention to extend the list of supported models any further.
'''1.1.1 2012/12/24'''
* Spectrum +2A/+3 snapshots are not rejected right away anymore. Instead, they are executed in 128K mode with extended paging enabled. This makes some +2A/+3 RZXs and exclusive software work quite fine.
* Added a bit of color coding to the controls screen.
 
'''1.1.0 2012/12/20'''
* Custom ROMs support. See roms/readme.txt for more info.
* IF2 ROMs and 48k/128k ROMs can be loaded directly in load requester.
* Both SZX and Z80 snapshots now support custom ROMs as well.
* TR-DOS/Beta Disk support for all models, not only Pentagon. Simply choose the model or reset the machine while a disk is loaded. You can also autoboot any disk with current model by using R+A.
* Beta 128 in 48k mode responds even to the standard Beta 48 entry points. This makes both Beta 128 and many Beta 48 programs work at the same time.
* True Beta 48 mode can be enabled with proper beta48.rom (such as TK90X's CBI95 ROM).
* Added NMI aka Magic button - becomes useful with some custom ROMs.
* Added custom keyboards for more games as well as one for more comfortable text typing.
* Added Virtual TR-DOS games and ZX AAA demos sites to servers.cfg.
* Pressing Start twice upon startup now takes you to the last used files view.
* Few subtle changes (save slot media loading, ROM launch stats).
* Little optimizations (Z80 core, sound generation, normal speed load mode).
* Subtle emulation improvements (authentic SCF/CCF, MEMPTR and AY white noise).
* Minor bugfixes (grayscale border, step direction bit).
* Merry Christmas.
 
'''1.0.0 2012/07/01'''
* Custom keyboard support. See custom/readme.txt for more info.
* Favorite/recent files lists showing up to 500 most/last used files.
* TR-DOS disk browser for viewing both disk directory and sector data. It can be used to insert empty disk images as well.
* TR-DOS disk images can be now saved in SCL format, too.
* Keep the file viewer visible while enabling button input by pressing R.
* Little UI graphics improvements (nicer icons, empty requesters).
* Added skins/light/style.cfg for those who prefer black text on white.
* Few subtle TR-DOS changes (density check, zero files SCL).
* Few subtle tape related changes (tape block flush, PZX fast loading test).
* Other subtle changes (widget help tracking, virtual files stats).
* Minor bugfixes (IN[ID](R) postdecrement, libfat lseek).
 
'''0.9.9 beta 2 2012/04/24'''
* The paused time is now not counted towards the current file times.
* The sleep time is now not counted towards any times but sleep time.
* Fixed the stats date display.
 
'''0.9.9 beta 1 2012/04/23'''
* Kempston mouse emulation, including dual mouse in multiplayer. See docs/mouse.txt for more detailed info.
* Tape deck now supports tape recording and tape block deletion. TAP and TZX tapes can record standard blocks, PZX anything. The recorded tapes can be then saved in save requester like other files.
* Track statistics about overall usage as well as games and apps launched. The statistics are additionally automatically saved every minute by default. If your card is too slow to deal with this and you keep noticing slowdowns, you can increase stats_write_timeout or set it to 0 to disable the autosave. You can also remove the ZXDS/stats directory to disable statistics entirely.
* Builtin viewer for viewing both text and binary files.
* The World of Spectrum online server listings now include text instructions.
* The emulation speed can be slowed up to 8 times.
* The data dump view now allows poking whole 2byte words at once.
* More thorough DLDI startup to work around misbehaving drivers.
* Fixed loading of files from the root directory.
* Fixed playback of RZXs containing multiple snapshots.
* Properly mark SCL disks as such when saving SZX.
* Few minor enhancements (improved PZX fast loading, AY register masks).
* Other subtle changes (file type recognition, avoid snapshot single step).
* Minor bugfixes (delayed IME handling, proper user settings slot).
 
'''0.9.3 beta 1 2012/03/17'''
* Proper save requester, including support for basic file management operations.
* Alternate between two different directories by tapping the save/load file icon again.
* Quickly switch models in load requester with various L/R+X combinations.
* Risky operations now use confirmation requesters.
* It is now possible to step the emulation frame by frame.
* Added pouet.net and Tipshop pokes library to servers.cfg.
* Implemented HTTP redirects, required by some pouet.net sites.
* Directly poke decimal, hexadecimal, or binary values in the data dump view.
* Switched to PNG for background and icon graphics. The BMP support remains, but note that some names have changed - check skins/readme.txt for details.
* Augmented the 128k keyboard graphics with symbol characters. Thanks, Paddy.
* The selected keyboard is now saved to the config file.
* Distinguish the load and save slot screens with colored slot frames.
* Disable the keyboard matrix effect during multiplayer session. It is often difficult enough to configure the controls even without it.
* Switching to maximum speed while loading tapes in fast mode now disables the display updates entirely. Handy for slight speed boost if you feel desperate.
* Other subtle changes (nicer boot message, increased cheat poke limit).
* Fixed loading of Pentagon SZX files (ROM paging, step direction).
* Minor bugfixes (libfat mkdir and aliasing, skipping of long names in ZIP).
 
'''0.9.2 beta 1 2010/11/09'''
* Peer-to-peer WiFi multiplayer for 2 players.
* SZX snapshots support.
* RZX playback now supports external snapshots.
* Save slots now use SZX instead of Z80. Existing Z80 slot files are still loaded, though, and you can delete them manually once you don't need/want to keep them.
* Save slots now save the associated tape/disk into a separate file if needed as well. Disk is saved once and then only whenever it is modified, tape is saved only once and only if it is not positioned at the beginning or the very end.
* Lot of internal changes (save states cache, icon buffering, bigger file buffer).
* Few subtle TRDOS fixes (eject during sector write, access to high tracks of SD disks).
* Subtle changes (2x faster change to parent directory, no cd to zip in zip, WiFi IPC sync).
* Changed grayscale palette to match the luminance of the real Spectrum.
 
'''0.9.1 beta 1 2010/08/13'''
* Memory viewer and disassembler.
* Tape sound is now audible in normal speed load mode (conveniently forced with R+A).
* The system log can be saved to a file now, helpful when troubleshooting.
* Cleaned up the virtual directory code, greatly reducing the amount of required IO accesses.
* Changed the confusing bouncing logic of previous displays' history to simple LRU.
* Fixed the annoying sound clicks when sound is temporarily paused (e.g., scrolling in requesters).
* Minor bugfixes in download code (HTTP continuation lines, last line EOL in listings).
 
'''0.9.0 beta 2 2009/03/20'''
* Added proper initial FIFO sync which shall make WiFi init work on all cards.
* Reenabled automatic loading of .cfg and .pok files which was accidentally disabled before.
* Added early boot message so people can see something is going on if boot takes a bit longer.
* The r4tf.dldi driver is not patched in, as these cards now support autopatching.  Also note that for the same reason and to avoid excess garbage the latest libfat library  doesn't include any builtin DLDI drivers anymore, so if you have some older card, you may need to DLDI patch ZXDS yourself even if you hadn't to do that before.
 
'''0.9.0 beta 1 2009/03/12'''
* Support for download of files from HTTP and FTP servers over WiFi.
* Virtual directory system for creating arbitrary listings of both local and remote files. Config for World of Spectrum, RZX Archive and Demotopia data feeds included. See docs/online.txt for how to create the listings and setup your own servers.
* The data_path, saves_path and screens_path are now configurable.
* Help now finally uses the variable width font as I always intended.
* Stick to the Zilog behavior regarding SCF/CCF undocumented flags.
* Built with the latest devkitPro release, should solve most libfat/DLDI issues.
 
'''0.8.1 beta 2 2008/12/03'''
* Tweaked RZX code to work with more nonconformant but commonly available recordings.
* Worked around sound clamping while keeping the sound loud by throwing dummy sample into the mix.
 
'''0.8.1 beta 1 2008/11/27'''
* RZX playback (no SZX snapshot support yet, though).
* Files stored in ZIP archives can be browsed and loaded directly.
* Support for poke cheats in POK file format, including autoload.
* Added log screen for better problem diagnostics, especially those RZX related.
* Turn off the bottom screen backlight after configurable timeout.
* Automatically save state and enter sleep mode when the lid is closed.
* Alternatively boot from saves/boot.z80 instead of last session state.
* Skip loading of either state upon startup when L/R buttons are held.
* Replaced few busy loops with inactive waits to further improve battery life.
* Improved the last menu action to cycle through all recently used views.
* Extended the range of both AY and speaker samples to make the sound louder.
* Tweaked the Z80 snapshot loading code to support some less conformant files.
* The HALT instruction now updates the R register properly.
 
'''0.8.0 beta 1 2008/06/19'''
* TR-DOS emulation, allowing loading of TRD/SCL disks (including autoboot).
* For/next loops in TZX files are now supported.
* Screenshot support, for SCR/BMP saving and SCR loading.
* Color/grayscale palette toggle for more nostalgic look.
* Mode for black and white display of ink/paper only, without attributes.
* AY ACB and ABC stereo modes and narrow/wide stereo separation.
* Choice of three relative AY and speaker volume levels.
* Changed AY volume tables to match the real machine more closely.
* Implemented fake low-pass AY filter to avoid aliasing issues in some tunes.
* Fixed setting of AY envelope register even if it doesn't change, fixes few sound effects.
* Fixed sound clamping when all AY channels played at full volume and speaker was off.
* Few other subtle changes (initial config autosave, even more safe shutdown).
 
'''0.7.0 beta 2 2007/12/24'''
* Implemented normal speed loading, to make loader minigames playable.
* Quick fix for launchers which don't set the initial display state properly.
* Should make the bottom screen properly visible for DS Extreme users.
 
'''0.7.0 beta 1 2007/12/21'''
* Finally added keyboard graphics, for both 48k and 128k keyboard.
* Replaced the ad-hoc file requester with proper touch screen version.
* Configurable button to key/action binding, with 9 predefined customizable settings.
* Tape browser and manual tape control.
* Autoload feature, with both tape-loader and USR0 mode support.
* Skinning support for changing graphics and color of each UI element.
* Builtin online help.
* Pentagon emulation (no TR-DOS yet, though).
* Z80 snapshots are now compressed.
* Added 1 forgotten T state to EX (SP),* instructions.
* Fixed #7FFD paging decoding (A15+A1 instead of A14-15+A1), more demos now work.
* Changed #1F kempston joystick decoding (loose A5 instead of strict A5-A7), more games should work.
* Disable autoplay when tape end is reached, more flawed tape files should now load.
* Few other subtle fixes (triple buffering race, halt timing upon requester).
 
'''0.6.0 beta 1 2007/10/10'''
* Full memory and IO contention emulation.
* Proper floating bus emulation.
* T-state accurate screen sampling.
* About everything should now work like on real machines, including multicolor effects.
* Accurate speaker synthesis instead of discrete sampling.
* Screen is now triple buffered and the LCD refresh rate is synced to 50Hz. This results in extremely smooth and tearing-free display.
* Fixed opening of files from directories of varying depth. It sometimes failed before due broken chdir(), so full names are used now instead.
* Few subtle fixes regarding snapshots (#7FFD, IFF2, T counter, tape eject).
* Dropped the .ds.gba version, as people need to DLDI patch it themselves * before* the loader is appended anyway.
 
'''0.5.1 beta 1 2007/08/14'''
* Support for the new PZX tape file format.
* File requester finally supports directory browsing.
* Fixed on-screen save slot numbers to match the snapshot names.
* Included .ds.gba version for people who need it (owners of some Slot-2 based cards, like EZFlash IV and SuperCard) yet don't know how to make one.
 
'''0.5.0 beta 1 2007/04/23'''
* Both TAP and TZX tape files are now loaded at high speeds whenever possible.
* Z80 snapshots are now supported.
* Save state support via in-memory/on-card write-through save slots for 10 Z80 snapshots.
 
'''0.0.4 alpha 1 2007/04/13'''
* Sound support, both speaker and AY-3-8912.
 
'''0.0.3 alpha 1 2007/04/03'''
* Basic TAP support (no fastloading yet, though).
* Basic TZX support (no fastloading, missing support for flow control blocks).
* Primitive border support.
 
'''0.0.2 alpha 3 2007/03/25'''
* BIT instructions now set the undocumented flags 5 and 3 properly, with the sole exception of BIT n,(HL), as MEMPTR is intentionally not emulated. These flags were always set before, due to lack of documentation.
* Instructions IN[ID](R) and OUT[ID](R) now also set the PV flag.
* Instructions OUT[ID](R) now set the CY and HC flags correctly. They used the IN[ID](R) behavior before, due to lack of documentation. So ZXDS now passes both ZEXDOC and ZEXALL (sans BIT n,(HL) in the latter).
 
'''0.0.2 alpha 2 2007/03/24'''
* Fixed silly typo in the macro testing the Half Carry flag, which grossly broke the DAA instruction and affected flags 5 and 3 after CP[ID](R) instructions. Bit 4 of H register instead of HC was tested by mistake before.
 
'''0.0.2 alpha 1 2007/03/21'''
* Primitive file requester, root dir only.
* Loads 128k snapshots as well, with interrupts now being enabled properly.
* Touch screen now shows at least some minimalistic keyboard layout.
 
'''0.0.1 alpha 1 2007/03/20'''
* First release.
* Still pretty incomplete, but boots 128k.
* Can only load 48k snapshots, though.
 
==Credits==
ZXDS itself is written by Patrik Rak, however credit is due as it would not have happened without the following people and their software:
* devkitProARM toolchain maintained by Dave Murphy et al.
* libnds by Michael Noland, Jason Rogers, Dave Murphy, et al.
* libfat by Michael Chisholm.
* dswifi by Stephen Stair.
* libctru by Jordan Rabet.
* citro3d and citro2d by fincs.
* zlib by Jean-loup Gailly and Mark Adler.
 
Furthermore, ZXDS comes with several copyrighted ROM images built in:
* ZX Spectrum 48k Basic ROM by Steve Vickers and John Grant, owned by Amstrad. Note that Amstrad have kindly given their permission for the redistribution of their copyrighted material but retain that copyright.
* ZX Spectrum 128k Editor ROM by Martin Brennan, Steve Berry, Andrew Cummins, Rupert Goodwins and Kevin Males, also owned by Amstrad.
* ZX Spectrum 128k +3 ROM by Rupert Goodwins, Cliff Lawson, and Vik Olliver, owned by Amstrad.
* TR-DOS ROM by Technology Research.
 
Finally, the following software was also helpful during the development:
* no$gba by Martin Korth.
* Citra by Citra team.
* Pro Motion by Jan Zimmermann.
 
==External links==
* Official website - http://zxds.raxoft.cz
 
 
 
[[Category:Support the author]]

Latest revision as of 06:01, 6 May 2024

ZXDS
Zxds3ds2.png
General
AuthorPatrik Rak
TypeComputer
Version2.2.1
LicenseMixed
Last Updated2022/01/20
Links
Download
Website
Support Author

ZXDS is an emulator of Sinclair ZX Spectrum for Nintendo DS and 3DS, written by Patrik Rak. It accurately emulates Spectrum 48k, 128k, +2/+2A/+3, and Pentagon, and supports SNA/Z80/SZX snapshots, TAP/TZX/PZX tape files, TRD/SCL/DSK disk files and RZX replay files. It has some other noteworthy features, like the ability to download all these files online over WiFi, peer-to-peer WiFi multiplayer, or Kempston mouse emulation.

Features

  • Solid Z80 core.
  • Full 128k paging support.
  • Reasonable Pentagon emulation.
  • Precise screen emulation.
  • Primitive border emulation.
  • Good 48k/128k snapshot support.
  • Full TAP support.
  • Reasonable TZX support.
  • Full PZX support .
  • Virtual tape deck.
  • Good TRD/SCL support.
  • Builtin disk browser.
  • Good RZX support.
  • POK files support.
  • ZIP archives support.
  • Online WiFi access.
  • Peer-to-peer WiFi multiplayer.
  • Save state support.
  • Screenshot support.
  • Configurable input support.
  • Fully customizable keyboard.
  • Kempston mouse emulation.
  • Memory viewer and disassembler.
  • Text and binary file viewer.
  • Statistics tracking.
  • Favorite/recent files tracking.
  • Battery friendly.
  • Skinning support.
  • Builtin help system.

Installation

Copy the entire ZXDS directory (not just its content, but the directory itself) to the root of your SD card, making sure that even the empty subdirectories are copied.

  • If you have used ZXDS on a DS before, note that you may copy your entire ZXDS directory from your DS card to this SD card, too.
  • All the files are compatible, with the only exception of files in /ZXDS/Graphics/, which are now 320x240 instead of 256x192.

Then copy ZXDS.3dsx to the 3ds directory of your SD card and run it with Homebrew Launcher. Alternatively you can install ZXDS.cia with a CIA manager of your choice.

The other directories in the archive contain various extras (e.g. games, demos and templates), some of which you may want to put on the SD card as well. See readme.txt in one of those directories.

Note: In order to run properly and generate audio, you will also need to have the DSP firmware (dspfirm.cdc) installed.

User guide

Simply run ZXDS the same way you run any other application.

Upon startup, follow the built-in online help which shall provide you with all the instructions you will need (remember to turn the help off once you get familiar with individual icons and menus, it would only slow you down otherwise). You will basically need to load some file via Load File screen of I/O menu (pressing Start gets you there quickly by default), then perhaps adjust controls via the Controls screen, and you are all set.

A few Spectrum games and demos are included in the archive itself for you to try out. See also the list of recommended games by the author.

Software for ZXDS

Below is a list of recommended sites if you are interested in finding more games and other software for use with the emulator:

Key mappings

The control mapping can really make a difference, so make sure customize it the way you like it most for any serious gaming.

For example, in case you have problems pressing the diagonals, it helps to map the up direction to the B button as well. This way you can jump sideways with ease. And mapping the quick save and quick load actions to the shoulder buttons gives you an instant save and load at the touch of the button, priceless feature for the hardest parts of the game you are playing.

Screenshots

zxds3ds3.pngzxds3ds4.png

Changelog

2.2.1 2022/01/20

  • HALT is now really contended by PC+1 in all cases. Thanks, Woody.
  • Block instructions now set flags correctly when interrupted or overwritten. Thanks, Ped7g.
  • Fixed re-recording of forced RZX frames during RZX playback.
  • Subtle "just-in-case" RZX fixes (frame count overflow, rollback checkpoint).

2.2.0 2021/12/24

  • RZX recording, including support for rollback and resume. Simply save file with .rzx suffix to start the recording.
  • RZX recordings can share external snapshot placed in the same directory. Load the snapshot after starting the (preferably paused) recording to use it.
  • Recording playback of another RZX, both entire or part of, is supported, too. This makes it possible to resume RZX files which were already finalized.
  • RZX recording can start both before or during a multiplayer session as well. Just remember to use rollback on the recording machine to avoid recording of the rewind actions.
  • RZX playback was updated to support forced frames introduced in RZX format 0.14.
  • Saving snapshot files in save requester no longer overwrites the UNDO buffer. This makes UNDO work as expected even in multiplayer, especially after rollback is used.
  • Local SZX snapshots now support external media in their original location in other directories.
  • Few minor improvements (confirmation backlight, SZX and Z80 pre-save stepping, help word wrapping).
  • Few subtle bugfixes (RZX jumbo frames, RZX tape warping, RZX rollback seek, tape parsing, async I/O).
  • Dedicated to Daren Pearcy. So sad you couldn't try it out.
  • In memory of Sir Clive Sinclair. Thank you for everything.

2.1.1 2020/12/24

  • Added experimental barebone .cia binary. Use entirely at your own risk.
  • ZXDS now refuses to run if it can't find its installation directory to prevent incomplete installation.
  • Fix for proper rollback of media in case the user truncated it afterwards.

2.1.0 2020/12/20

  • Rollback allows rewinding the time up to 5 minutes back. Bind it to any convenient button like Y or L/R for best experience.
  • Rollback can be used to rewind the RZX playback as well.
  • Multiplayer session is now automatically resynced after rollback, quick load, or load slot is used.
  • Added two options for zooming the main screen. It's blurred, but some people may prefer it nevertheless.
  • The custom menu can be customized by tapping the menu icon after tapping an action in the controls screen.
  • Merry Christmas.

2.0.2 2020/04/13

  • Created lists for ZXDB entry in servers.cfg.
  • Fixed downloading from HTTPS sites by detecting non-standard EOF properly.
  • Happy Easter.

2.0.1 2020/02/02

  • Fixed top screen issues of 2DS and 3DS XL models by slowing the LCD display differently. Thanks Nige.
  • Disabled turning off of bottom screen backlight on 2DS as for some reason it affects both screens.
  • The optional ZL and ZR buttons are now bound to quick load and quick save actions, respectively.
  • Considerably increased speed of scanning directories.
  • Few more subtle changes (async file flush, display speed adjustment only at normal speed).

2.0.0 2019/12/21

  • First native release for Nintendo 3DS.
  • Proper border emulation.
  • Floating bus emulation for +2A/+3 models.
  • Downloads now support the HTTPS scheme.
  • Increased the number of save slots to sixteen.
  • Screenshots can be now saved with or without the border area.
  • Increased some other limits (128MB download cache, 4MB file buffer).
  • Quit now finally quits to the launcher menu. But you can use the HOME button, too.
  • Work around for TZX files which use incorrect STOP block size.
  • Few subtle bugfixes (mouse mode init, inputbox capslock, load registers).
  • Merry Christmas.

1.3.4 2017/04/23

  • HALT is now correctly contended by PC+1, not PC.
  • To give the user a clue, incompatible multiplayer peer is now detected and reported, if possible.
  • Happy birthday, Speccy.

1.3.3 2014/12/24

  • Upon startup, let Start show the most recent files only if there are any.
  • Properly handle save slot medium if all ten medium slots are still being used.
  • When statistics become full, don't discard entries which might still be part of the recent list.
  • When global statistics are loaded, pick the latest version under all circumstances.

1.3.2 2014/11/22

  • Fixed libfat bug which could make corrupt directory entry after the last entry was deleted. You might have experienced this mostly when renaming files or moving them around.
  • Fixed couple more libfat bugs (really long names, alias creation, whitespace trimming).
  • Added caseinfo extension to libfat so letter case of 8.3 names is now read properly.
  • Medium associated with persistent copy of save slot 0 is never deleted prematurely anymore.
  • Save slot medium removal is now postponed to further improve chance of media reuse.
  • Few other subtle changes (cache filenames, file name trimming, minor help tweaks).

1.3.1 2014/07/10

  • Fix the initial main screen palette which could get messed up on some cards.
  • Make the mouse help window look like all the other help windows.

1.3.0 2014/07/01

  • ULA+ emulation for all Sinclair and Amstrad models.
  • Support for all types of 3.5" double sided +3DOS disks.
  • Raw screenshots now support the ULA+ extension for both saving and loading.
  • Current ULA+ palette can be changed simply by loading the appropriate ULA+ palette tape files.
  • Other ULA+ related changes (BMP screenshots, thumbnails, SZX support).
  • The selected ULA mode as well as the display mode are now part of the config file.
  • You can now keep your desired custom configuration persistent separately in custom.cfg.
  • Sector viewer now displays bottom side track addressing info in inverse colors.
  • Reverted special treatment of full size TR-DOS disks, so padded images work again.
  • Minor +3DOS fixes (gap3 reading, EDSK track padding, SZX disk side selection, motor bit disabling)
  • Loading a POK file now automatically shows the poke screen. Pressing Y switches back, as usual.
  • Reading attributes from unmapped ports on Pentagon now mimics the real hardware mod behavior.
  • Other subtle emulation accuracy improvements (+2A/+3/Pentagon screen timing, 128K/+2 INT duration).
  • Many internal changes (optimized screen sampling, optimized contention, async palette switching).
  • Other subtle changes (UNDO media keeping, CPU stepping prior snapshot save, volume mode order).
  • Minor bugfixes (media slot release, paths set to root dir, filter in root dir, allowed filter chars).
  • Happy birthday, and thanks for all the fish.

1.2.0 2014/02/19

  • Proper Spectrum +2/+2A/+3 emulation, including contention and everything.
  • Support for +3DOS 3" DSK/EDSK disks, including formatting, autoboot and disk browser.
  • TR-DOS formatting now also works for all possible disk format types.
  • File and directory name filtering is now available in file requester.
  • All keyboard keys are now sticky whenever the emulation is paused.
  • In load requester, L/R+Y now shows the other medium than Y does.
  • Button input in file viewer can be now toggled with icon or L/R+X and Pause.
  • Full size TR-DOS disks are now always treated as double track and double sided.
  • Alternate save/load directories now work better and even with filter enabled.
  • Various internal changes (ROM deltas, SZX +3DOS support, plus model stats, media icon).
  • Minor bugfixes (FTP files caching, hex decoding, TR-DOS BASIC start line).
  • Dedicated to my beloved parents. Thanks for getting me my first Speccy.

1.1.1 2012/12/24

  • Spectrum +2A/+3 snapshots are not rejected right away anymore. Instead, they are executed in 128K mode with extended paging enabled. This makes some +2A/+3 RZXs and exclusive software work quite fine.
  • Added a bit of color coding to the controls screen.

1.1.0 2012/12/20

  • Custom ROMs support. See roms/readme.txt for more info.
  • IF2 ROMs and 48k/128k ROMs can be loaded directly in load requester.
  • Both SZX and Z80 snapshots now support custom ROMs as well.
  • TR-DOS/Beta Disk support for all models, not only Pentagon. Simply choose the model or reset the machine while a disk is loaded. You can also autoboot any disk with current model by using R+A.
  • Beta 128 in 48k mode responds even to the standard Beta 48 entry points. This makes both Beta 128 and many Beta 48 programs work at the same time.
  • True Beta 48 mode can be enabled with proper beta48.rom (such as TK90X's CBI95 ROM).
  • Added NMI aka Magic button - becomes useful with some custom ROMs.
  • Added custom keyboards for more games as well as one for more comfortable text typing.
  • Added Virtual TR-DOS games and ZX AAA demos sites to servers.cfg.
  • Pressing Start twice upon startup now takes you to the last used files view.
  • Few subtle changes (save slot media loading, ROM launch stats).
  • Little optimizations (Z80 core, sound generation, normal speed load mode).
  • Subtle emulation improvements (authentic SCF/CCF, MEMPTR and AY white noise).
  • Minor bugfixes (grayscale border, step direction bit).
  • Merry Christmas.

1.0.0 2012/07/01

  • Custom keyboard support. See custom/readme.txt for more info.
  • Favorite/recent files lists showing up to 500 most/last used files.
  • TR-DOS disk browser for viewing both disk directory and sector data. It can be used to insert empty disk images as well.
  • TR-DOS disk images can be now saved in SCL format, too.
  • Keep the file viewer visible while enabling button input by pressing R.
  • Little UI graphics improvements (nicer icons, empty requesters).
  • Added skins/light/style.cfg for those who prefer black text on white.
  • Few subtle TR-DOS changes (density check, zero files SCL).
  • Few subtle tape related changes (tape block flush, PZX fast loading test).
  • Other subtle changes (widget help tracking, virtual files stats).
  • Minor bugfixes (IN[ID](R) postdecrement, libfat lseek).

0.9.9 beta 2 2012/04/24

  • The paused time is now not counted towards the current file times.
  • The sleep time is now not counted towards any times but sleep time.
  • Fixed the stats date display.

0.9.9 beta 1 2012/04/23

  • Kempston mouse emulation, including dual mouse in multiplayer. See docs/mouse.txt for more detailed info.
  • Tape deck now supports tape recording and tape block deletion. TAP and TZX tapes can record standard blocks, PZX anything. The recorded tapes can be then saved in save requester like other files.
  • Track statistics about overall usage as well as games and apps launched. The statistics are additionally automatically saved every minute by default. If your card is too slow to deal with this and you keep noticing slowdowns, you can increase stats_write_timeout or set it to 0 to disable the autosave. You can also remove the ZXDS/stats directory to disable statistics entirely.
  • Builtin viewer for viewing both text and binary files.
  • The World of Spectrum online server listings now include text instructions.
  • The emulation speed can be slowed up to 8 times.
  • The data dump view now allows poking whole 2byte words at once.
  • More thorough DLDI startup to work around misbehaving drivers.
  • Fixed loading of files from the root directory.
  • Fixed playback of RZXs containing multiple snapshots.
  • Properly mark SCL disks as such when saving SZX.
  • Few minor enhancements (improved PZX fast loading, AY register masks).
  • Other subtle changes (file type recognition, avoid snapshot single step).
  • Minor bugfixes (delayed IME handling, proper user settings slot).

0.9.3 beta 1 2012/03/17

  • Proper save requester, including support for basic file management operations.
  • Alternate between two different directories by tapping the save/load file icon again.
  • Quickly switch models in load requester with various L/R+X combinations.
  • Risky operations now use confirmation requesters.
  • It is now possible to step the emulation frame by frame.
  • Added pouet.net and Tipshop pokes library to servers.cfg.
  • Implemented HTTP redirects, required by some pouet.net sites.
  • Directly poke decimal, hexadecimal, or binary values in the data dump view.
  • Switched to PNG for background and icon graphics. The BMP support remains, but note that some names have changed - check skins/readme.txt for details.
  • Augmented the 128k keyboard graphics with symbol characters. Thanks, Paddy.
  • The selected keyboard is now saved to the config file.
  • Distinguish the load and save slot screens with colored slot frames.
  • Disable the keyboard matrix effect during multiplayer session. It is often difficult enough to configure the controls even without it.
  • Switching to maximum speed while loading tapes in fast mode now disables the display updates entirely. Handy for slight speed boost if you feel desperate.
  • Other subtle changes (nicer boot message, increased cheat poke limit).
  • Fixed loading of Pentagon SZX files (ROM paging, step direction).
  • Minor bugfixes (libfat mkdir and aliasing, skipping of long names in ZIP).

0.9.2 beta 1 2010/11/09

  • Peer-to-peer WiFi multiplayer for 2 players.
  • SZX snapshots support.
  • RZX playback now supports external snapshots.
  • Save slots now use SZX instead of Z80. Existing Z80 slot files are still loaded, though, and you can delete them manually once you don't need/want to keep them.
  • Save slots now save the associated tape/disk into a separate file if needed as well. Disk is saved once and then only whenever it is modified, tape is saved only once and only if it is not positioned at the beginning or the very end.
  • Lot of internal changes (save states cache, icon buffering, bigger file buffer).
  • Few subtle TRDOS fixes (eject during sector write, access to high tracks of SD disks).
  • Subtle changes (2x faster change to parent directory, no cd to zip in zip, WiFi IPC sync).
  • Changed grayscale palette to match the luminance of the real Spectrum.

0.9.1 beta 1 2010/08/13

  • Memory viewer and disassembler.
  • Tape sound is now audible in normal speed load mode (conveniently forced with R+A).
  • The system log can be saved to a file now, helpful when troubleshooting.
  • Cleaned up the virtual directory code, greatly reducing the amount of required IO accesses.
  • Changed the confusing bouncing logic of previous displays' history to simple LRU.
  • Fixed the annoying sound clicks when sound is temporarily paused (e.g., scrolling in requesters).
  • Minor bugfixes in download code (HTTP continuation lines, last line EOL in listings).

0.9.0 beta 2 2009/03/20

  • Added proper initial FIFO sync which shall make WiFi init work on all cards.
  • Reenabled automatic loading of .cfg and .pok files which was accidentally disabled before.
  • Added early boot message so people can see something is going on if boot takes a bit longer.
  • The r4tf.dldi driver is not patched in, as these cards now support autopatching. Also note that for the same reason and to avoid excess garbage the latest libfat library doesn't include any builtin DLDI drivers anymore, so if you have some older card, you may need to DLDI patch ZXDS yourself even if you hadn't to do that before.

0.9.0 beta 1 2009/03/12

  • Support for download of files from HTTP and FTP servers over WiFi.
  • Virtual directory system for creating arbitrary listings of both local and remote files. Config for World of Spectrum, RZX Archive and Demotopia data feeds included. See docs/online.txt for how to create the listings and setup your own servers.
  • The data_path, saves_path and screens_path are now configurable.
  • Help now finally uses the variable width font as I always intended.
  • Stick to the Zilog behavior regarding SCF/CCF undocumented flags.
  • Built with the latest devkitPro release, should solve most libfat/DLDI issues.

0.8.1 beta 2 2008/12/03

  • Tweaked RZX code to work with more nonconformant but commonly available recordings.
  • Worked around sound clamping while keeping the sound loud by throwing dummy sample into the mix.

0.8.1 beta 1 2008/11/27

  • RZX playback (no SZX snapshot support yet, though).
  • Files stored in ZIP archives can be browsed and loaded directly.
  • Support for poke cheats in POK file format, including autoload.
  • Added log screen for better problem diagnostics, especially those RZX related.
  • Turn off the bottom screen backlight after configurable timeout.
  • Automatically save state and enter sleep mode when the lid is closed.
  • Alternatively boot from saves/boot.z80 instead of last session state.
  • Skip loading of either state upon startup when L/R buttons are held.
  • Replaced few busy loops with inactive waits to further improve battery life.
  • Improved the last menu action to cycle through all recently used views.
  • Extended the range of both AY and speaker samples to make the sound louder.
  • Tweaked the Z80 snapshot loading code to support some less conformant files.
  • The HALT instruction now updates the R register properly.

0.8.0 beta 1 2008/06/19

  • TR-DOS emulation, allowing loading of TRD/SCL disks (including autoboot).
  • For/next loops in TZX files are now supported.
  • Screenshot support, for SCR/BMP saving and SCR loading.
  • Color/grayscale palette toggle for more nostalgic look.
  • Mode for black and white display of ink/paper only, without attributes.
  • AY ACB and ABC stereo modes and narrow/wide stereo separation.
  • Choice of three relative AY and speaker volume levels.
  • Changed AY volume tables to match the real machine more closely.
  • Implemented fake low-pass AY filter to avoid aliasing issues in some tunes.
  • Fixed setting of AY envelope register even if it doesn't change, fixes few sound effects.
  • Fixed sound clamping when all AY channels played at full volume and speaker was off.
  • Few other subtle changes (initial config autosave, even more safe shutdown).

0.7.0 beta 2 2007/12/24

  • Implemented normal speed loading, to make loader minigames playable.
  • Quick fix for launchers which don't set the initial display state properly.
  • Should make the bottom screen properly visible for DS Extreme users.

0.7.0 beta 1 2007/12/21

  • Finally added keyboard graphics, for both 48k and 128k keyboard.
  • Replaced the ad-hoc file requester with proper touch screen version.
  • Configurable button to key/action binding, with 9 predefined customizable settings.
  • Tape browser and manual tape control.
  • Autoload feature, with both tape-loader and USR0 mode support.
  • Skinning support for changing graphics and color of each UI element.
  • Builtin online help.
  • Pentagon emulation (no TR-DOS yet, though).
  • Z80 snapshots are now compressed.
  • Added 1 forgotten T state to EX (SP),* instructions.
  • Fixed #7FFD paging decoding (A15+A1 instead of A14-15+A1), more demos now work.
  • Changed #1F kempston joystick decoding (loose A5 instead of strict A5-A7), more games should work.
  • Disable autoplay when tape end is reached, more flawed tape files should now load.
  • Few other subtle fixes (triple buffering race, halt timing upon requester).

0.6.0 beta 1 2007/10/10

  • Full memory and IO contention emulation.
  • Proper floating bus emulation.
  • T-state accurate screen sampling.
  • About everything should now work like on real machines, including multicolor effects.
  • Accurate speaker synthesis instead of discrete sampling.
  • Screen is now triple buffered and the LCD refresh rate is synced to 50Hz. This results in extremely smooth and tearing-free display.
  • Fixed opening of files from directories of varying depth. It sometimes failed before due broken chdir(), so full names are used now instead.
  • Few subtle fixes regarding snapshots (#7FFD, IFF2, T counter, tape eject).
  • Dropped the .ds.gba version, as people need to DLDI patch it themselves * before* the loader is appended anyway.

0.5.1 beta 1 2007/08/14

  • Support for the new PZX tape file format.
  • File requester finally supports directory browsing.
  • Fixed on-screen save slot numbers to match the snapshot names.
  • Included .ds.gba version for people who need it (owners of some Slot-2 based cards, like EZFlash IV and SuperCard) yet don't know how to make one.

0.5.0 beta 1 2007/04/23

  • Both TAP and TZX tape files are now loaded at high speeds whenever possible.
  • Z80 snapshots are now supported.
  • Save state support via in-memory/on-card write-through save slots for 10 Z80 snapshots.

0.0.4 alpha 1 2007/04/13

  • Sound support, both speaker and AY-3-8912.

0.0.3 alpha 1 2007/04/03

  • Basic TAP support (no fastloading yet, though).
  • Basic TZX support (no fastloading, missing support for flow control blocks).
  • Primitive border support.

0.0.2 alpha 3 2007/03/25

  • BIT instructions now set the undocumented flags 5 and 3 properly, with the sole exception of BIT n,(HL), as MEMPTR is intentionally not emulated. These flags were always set before, due to lack of documentation.
  • Instructions IN[ID](R) and OUT[ID](R) now also set the PV flag.
  • Instructions OUT[ID](R) now set the CY and HC flags correctly. They used the IN[ID](R) behavior before, due to lack of documentation. So ZXDS now passes both ZEXDOC and ZEXALL (sans BIT n,(HL) in the latter).

0.0.2 alpha 2 2007/03/24

  • Fixed silly typo in the macro testing the Half Carry flag, which grossly broke the DAA instruction and affected flags 5 and 3 after CP[ID](R) instructions. Bit 4 of H register instead of HC was tested by mistake before.

0.0.2 alpha 1 2007/03/21

  • Primitive file requester, root dir only.
  • Loads 128k snapshots as well, with interrupts now being enabled properly.
  • Touch screen now shows at least some minimalistic keyboard layout.

0.0.1 alpha 1 2007/03/20

  • First release.
  • Still pretty incomplete, but boots 128k.
  • Can only load 48k snapshots, though.

Credits

ZXDS itself is written by Patrik Rak, however credit is due as it would not have happened without the following people and their software:

  • devkitProARM toolchain maintained by Dave Murphy et al.
  • libnds by Michael Noland, Jason Rogers, Dave Murphy, et al.
  • libfat by Michael Chisholm.
  • dswifi by Stephen Stair.
  • libctru by Jordan Rabet.
  • citro3d and citro2d by fincs.
  • zlib by Jean-loup Gailly and Mark Adler.

Furthermore, ZXDS comes with several copyrighted ROM images built in:

  • ZX Spectrum 48k Basic ROM by Steve Vickers and John Grant, owned by Amstrad. Note that Amstrad have kindly given their permission for the redistribution of their copyrighted material but retain that copyright.
  • ZX Spectrum 128k Editor ROM by Martin Brennan, Steve Berry, Andrew Cummins, Rupert Goodwins and Kevin Males, also owned by Amstrad.
  • ZX Spectrum 128k +3 ROM by Rupert Goodwins, Cliff Lawson, and Vik Olliver, owned by Amstrad.
  • TR-DOS ROM by Technology Research.

Finally, the following software was also helpful during the development:

  • no$gba by Martin Korth.
  • Citra by Citra team.
  • Pro Motion by Jan Zimmermann.

External links

Advertising: