ZXDS home page
Welcome to ZXDS homepage.
ZXDS is an emulator of Sinclair ZX Spectrum for Nintendo DS,
written by Patrik Rak.
It accurately emulates Spectrum 48k, 128k and Pentagon,
and supports SNA/Z80/SZX snapshots, TAP/TZX/PZX tape files, TRD/SCL disk files and RZX replay files.
It has some other noteworthy features,
like the ability to download all these files online over WiFi,
the peer-to-peer WiFi multiplayer,
or Kempston mouse emulation.
It is available entirely for free,
but any donations are always welcome,
see the details further down the page.
Download and installation
Just download the archive using the link below, unpack it and copy 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
(or any other compatible model, like DSi or 3DS).
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.
Download ZXDS 1.1.1
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.
You should also copy some tape, disk, snapshot or replay files to your card.
Either TAP/TZX/PZX tape files, TRD/SCL 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.
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 wish, read the online.txt included in the ZXDS archive for more info.
Using the emulator
Simply run ZXDS the same way you run any other application.
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.
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.
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 in wrong mode (48k vs 128k tape loader vs 128k USR 0),
or you have broken copy of the game,
or the game is for some other model and would not work on a real machine either,
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.
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 archive
collection.
Note that it already includes the content of another major source,
the TZX Vault.
In case you can read some Czech,
this 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.
In case you are interested in some demos,
check out the
ZX AAA Demo,
Demotopia,
Pouët.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.
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.
And if there is something else you are looking for, it never hurts to ask on the friendly
World of Spectrum forums.
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.
Features already implemented:
- 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.
- 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.
- 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.
- Primitive border emulation - the border color is simply mapped to
the background color of the touch screen. Not as good as the real thing, but
at least it avoids the scaling problem.
- 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 disk files can be loaded and saved.
The autoboot feature is included, too.
- Builtin disk browser - you can examine the content of the TR-DOS 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.
Whenever you load a game, 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 state support - there are nine builtin save slots for storing the
save state both in memory and (when possible) on card in SZX snapshot
format, plus one save slot used for both recovering the lost 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.
Of course, you are not limited to these handy save slots only
- you can save any amount of SZX and Z80 snapshots using the save requester, too.
- Screenshot support - you can save SCR and BMP screenshots anytime you wish.
You can even load the SCR files back for viewing.
- Configurable input support - the 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 DS 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:
- RZX recording support - RZX recording might be a nice feature to
have. Not sure if it really pays off to spend the time on this, though.
- Proper border emulation - it should be quite easy to emulate
border precisely now, the key question is how to display it?
There is one idea I have, see how it turns out...
- Improved TR-DOS support - there is still few more things to do.
Formatting should be eventually implemented, even though it's not a high priority anymore.
- Better homebrew integration - I should check what are the ways of
improving the integration with various homebrew launchers.
- ULA+ support - explore the possibility of adding the ULA+
compatible palette support.
Features unlikely to be implemented:
- 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 support - although I own one 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.
- +2A/+3 and clones support - I have never been fond of the new
Amstrad models, and I see no reason why emulating them on DS would be useful. As
for other clones, I just do not want to waste my time on things which are
not necessary. I might be convinced to emulate something if it is really
worth it, but don't hold your breath.
Developer's diary
For those of you who are technically inclined or just plain curious, I have written a
little diary of how I implemented ZXDS over the course of time. You can find it
here.
I haven't had enough time to update it for quite some time now,
but some say it's still an interesting read nevertheless.
Donations
If you would like to express your appreciation of ZXDS, consider supporting
it by donating whatever you think it is worth.
Remember that even the smallest amount you can afford will make a difference.
To donate, simply click the button below and follow the instructions.
By donating you appreciate what you have already got for free and encourage further development at the same time.
Thank you very much for both.
Legalese
You know, the usual disclaimer stuff. I can not be held responsible for
anything this program or any actions related to the use of this program will
cause to you, your hardware, or anyone or anything else. You use this software
entirely on your own risk.
Any trademarks or registered trademarks I might have mentioned in this text
or elsewhere on this website are owned by their respective owners.
Contact
As I have explicitly stated above,
please do NOT contact me regarding the issues I have mentioned.
However, if you still wish to contact me for some reason,
please write to zxds at raxoft dot cz.
After all, I don't mind getting encouraging emails every now and then.
Be warned, though, I am extremely busy person,
so please don't expect me to write back immediately.
At my discretion, I may even choose not to answer at all.
There is no need to hammer my mailbox in either case. Thanks.