(Ñ) by Vladimir Kladov, 2003
I represent my own ZX-Spectrum 128 and 48 emulator for Windows 95/98/ME/NT/2K/XP. This is a final version, serious changes are not planned, bugs if any found will be fixing only. ATTANTION PLEASE: on the site of the author newest version 2.1 is available for download, improved a lot and with many bugs fixed. Direct link to the new version archive is: http://bonanzas.rinet.ru/EmuZWin21.zip
Under Windows9x/ME/XP emulation of S128 can be slower a bit (several percents).
PC Speaker can be used for sound output only under Windows9x/ME, and sound quality in such case is absolutely disgust (but still sufficient to recognize puck-puck in most games). By default DirectX used, and AY sound is emulated only throught DirectX.
Video output now uses GUI only, using Direct-X is not planned since full-screen mode will not be supported. Therefore under Windows98 runs on Pentium100 with speed about 70-90% in comparison to speed of original Spectrum, and this speed can be sufficient for most of games (and it is possible to change refresh rate to 25 frames/sec or to 10 frames/sec to make emulation faster). Video output is emulated to one horizontal scanning line. I.e. writings on the border can not be viewed, but other border effects are preserved (though contended memory and ports are not emulated).
Kempston Joystick, Sinclair I (abandoned), Sinclair II and Fuller Box joysticks are emulated - all on the num pad of PC keyboard
(work when Num Lock is turned on). Additionally drawn keyboard
can help to enter Basic commands. Also it allows to fix some keys pressed down while
playing game (right mouse click on a key). Also, this keyboard can be useful while reprogramming keyboard for a game.
The only formats which are supported for loading state yet: Z80, SNA, TAP (without Warajevo compression), TZX (not in total) and only SNA and Z80 to save state. Loading from ZIP supported (it is necessary to provide a path to PKUNZIP.EXE). Working with the most formats implemented via plugins, and the own format EZX supported natively, without plugins. Plugins should be located in the directory, where the application itself is placed. Documentation on writing plugins published, and if you wish, you can write your own plugins.
The default ROM image file Spectrum.rom, containing ROM 32K or 16K, must be located in the directory where the application is placed too. If its size is greater than 16K, then the first 16K are S128 ROM, and the second 16K are S48 ROM. Using command line option /ROM=path or selecting menu item File/New/Custom ROM Image, it is possible to select another ROM image.
Pokes are loaded automatically from pok-file, named exactly as Spectrum file loaded, but with extension .pok. This file can be located anywhere in the directory where loaded file is from, or in any nested subdirectory (all subdirectories are listed recursively). Icons for trainers are assigned automatically if possible. If pokes are available after loading the state, a "smile" icon is appear on the toolbar (it is hidden if a tape is still reading), and opening pokes window at that time does not allow applying pokes anyway. It is possible to load external pok-file (File|Open Pokes...). In format EZX, pokes are stored in the EZX-file itself.
The embedded power step-by-step and trace visual DEBUGGER can be used for different purposes. For me, it is useful to debug the emulator itself.
What is not planned in this freeware emulator:
Final release F1.4 (19-May-2003):
Append tape operation was broken, fixed. After stopping tape Play button was not enabled
in some cases, fixed. Now it is possible to set break points on tape block load using
mouse left click at the icon area. Long loading process (TZX can be cancelled now).
Pokes were not loaded from ZIP, fixed.
More safe: now toolbar and main menu are not available while decoding
file selected to open (this are enabled again when tape load process started or snap-file
is loaded). Also, PC keyboard is ignored while entering ZX key via keyboard window shown
modal in Key remapping dialog.
More convenient: when Preview is on in the Open dialog, smiling face
icon is shown in top-right corner indicating that POKes are available for a file (if any).
Final release F1.3 (18-May-2003):
Fast LDIR/LDDR/CPIR/CPDR emulation added (true by defaut, can be turned off for a certain
game or by default, though it does not affect emulation accuracy at all).
Video output optimized more, and own stretching procedure used, which
speeds up stretched output.
Pressing ALT resumed the emulator, fixed. Now any key press when
keyboard window focused, pass focus to the main window in Keyboard Transparent mode.
Restoring main window position to (0,0) did not occur, fixed. Also if
the main emulator window positioned above desktop for less then 30 pixels, it does not
repositioned to the top on start.
When EZX was loading from ZIP, pokes and key and color remappings were
not loaded from EZX itself, fixed.
Some small enchancements in the interface (own semi-transparent cursor
over main window, collecting current folder and storing it in the registry when Open
Dialog closed, Small Keyboard window mode).
Final release F1.25 (15-May-2003): Slow video output under Windows 98 (when size was not 1x1) fixed.
Final release F1.2 (15-May-2003):
A bug with application crash on termination if another speed was used then 100% and
another refresh rate was used then 50 frames/second, fixed. A bug with application failure
if while working with configuration dialog (key remapping) a key was pressed, which might
resume the emulation, so auto-resuming now is disabled while configuration window is
visible.
Small improvement: emulation speed can be switched between 50% and 800%
using Alt+Num[ * ], in addition to
Num[ * ] used as earlier to switch
between 100% and 200%. Small change: now toolbar button with "flare" sign is
hold checked down when any speed selected greater then 100%.
Video output is much smoother now for case when display size is other
then 1x1 or 2x2. Also, an option Proportional Size
added (available via menu View|Proportional Size).
Final release F1.1 (13-May-2003):
Removing keyboard remappings (specifying empty values for PC key and for both ZX keys) was
leading to crash, fixed. Loading POK-file when tape was not loading yet was lead to crash,
fixed. Pressing keys 'P', 'O', 'K', 'T' was not leading to resume from paused state,
fixed. Path to root folder accessed last in Open Dialog was not used as default on restart
the emulator, fixed. Keyboard settings Transparent and Stay On Top were not restored
perfectly on restart, fixed.
Note about "final" word. This means mainly that new features
or serious changes are not planned, but bugs will be fixed as soon as possible.
Final release F1 (11-May-2003): ZIP file
support provided (pkunzip.exe used, not in the distributive).
Association with EZX-files added (done automatically when the emulator
started each time).
Now EZX is loaded exactly in the same state as it was saved, e.g., it
is possible now to continue loading tape if a state was saved while loading from the tape.
Tokens in block names are partially supported in Tape Browser
window.
If Open Dialog is called while loading from tape, previewing screens of
other snapshots does not clear tape content now, so if the Open Dilog cancelled, tape
loading can be continued.
Position and size of Tape Catalog, Open Dialog, and position of Game
Configuration windows also stored in the registry. Folders, selected in Open Dialog using
Browse key or entered manually also stored in registry (maximum 10).
On Escape, the emulator now minimized to tray without animation (fast).
Key PAUSE also pauses now the application (but it is ignored to resume
it).
Main window can not be increased now to triple size using key Num[ + ],
if current desktop less then 768 pixels in height.
A lot of other small changes.
Beta release B10 (8-May-2003): Colors mapping added. Key mapping
improved (loop, fixed, auto-up implemented, enter key name by pressing it added). Some
bugs with pokes fixed. Some improvements for Debugger (e.g. code disassembled immediately
when RAM or ROM bank changed manually). Small fix in Open dialog: preview now always
refreshed if the dialog opened again.
Most impotant settings are stored now in the registry.
Beta release B9 (7-May-2003): Key mapping added. It is now possible to redefine keys for a game on the emulator level, and even define fixed, auto-up or looping keys. Keyboard layout window inmproved: now it can be "on top" of main form, transparent (in Win2K or XP), and drawing faster. EZX format changed a bit (chunk 'KEYS'), but this does not effect already saved states.
Beta release B8 (5-May-2003): Display refresh rate
options added (accessible by menu): Max(50 frames/emulated sec), Normal (50 frames/real
sec), Slower (25 frames/real sec), Rare (10 frames/real sec). With Slower refresh rate
emulation is faster on slow machines. Sinclair II turned now off automatically whenever
reading from port 1F (Kempston) detected.
Keyboard layout window positioning changed to fit desktop and to place near the
main form when shown.
Pokes (.pok-files) support added, with automatic iconization (!).
Append of tape image fixed.
B8.a: Menu command File|Open Pokes... added. In the EZX, pokes are stored
internally and loaded together with the file.
Crash on close fixed.
Beta release B7 (3-May-2003): Toolbar added, with tape loading progress bar. Tape loader now always starts from typing LOAD "" in 48K Basic automatically, rather then from 128K tape loader. Sound now synchronized more accurately (less or no artefacts while playing with 100%, 50% or 200% speed). Key option /NoMMTimer added to disable exact synchronization (worst). Some fixes in sound (both AY and MIC), tape loading, port recognition, interface, Z80 emulation. EZX format changed to provide later capability to load exact tape loading state, signature changed to prevent loading earlier saved EZX-files. You will need earlier version of EmuZWin to load older EZX files!
Beta release B6 (30-Apr-2003): AY sound improved a lot. Simplified port selection scheme added, it is turned on automatically when first time attempt to access incorrect port detected. Int generating fixed. Z80 format loader fixed (3.0 for case when it contins non-compressed memory banks) and saving to Z80 format added.
Beta release B5 (29-Apr-2003): Automated report tool added to provide me with feedback about finding unknowntape loader signatures. Drag files on the main window accepted. Some more fixes in sound.
Beta release B4 (28-Apr-2003): Fast tape load now is really FAST even for protected loaders (TZX). Automated report tool added to provide me with feedback about finding unknown loader signatures. Some fixes in sound. Command-line options added: /Sound8 and /SoundExclusive.
Beta release B3 (27-Apr-2003): Fixes in: AY sound emulation, OUTD/OTDR/OUTI/OTIR instructions, some interface improvements, a bit faster tape loading.
Beta release B2 (25-Apr-2003): SpeedLock1 and 2 loading fixed (TZX). IN FF implemented (required by some games for synchronization). AY sound emulation added.
Beta release B1 (22-Apr-2003): Video output optimized for 32bit and 24bit display color depth too (earlier versions worked good only with color depth 16bit).
pre-beta pre-release 10 (21-Apr-2003): Fixes to yesterday fixes, all (I hope) TZX files loaded normally.
pre-beta pre-release 9 (20-Apr-2003): Some more fixes, mainly in TZX format loading (but not yet completed).
pre-beta pre-release 8 (19-Apr-2003): Command line option /ROM= and File menu item File/New/Custom ROM Image added to simplify another ROM selection. Option /9x allows to select emulation mode the same as under Windows 9x (this affects memory usage and emulation algorithm). Option /PAUSED allows to start emulator initially paused. Some improvements of Debugger, some fixes in command emulation (flags, T-states). But speedlock-protected TZX-files still could not be loaded.
pre-beta pre-release 7 (16-Apr-2003): Emulating RLD/RRD instructions
fixed, tact length for instructions having (IX+offset), (IY+offset) fixed. MIC sound
become better since this change (I hope).
7.1: DAA instruction fixed.
pre-beta pre-release 6 (16-Apr-2003): Loading from TAP and partially from TZX fixed. Saving SNA under 9x/ME/XP fiixed. Debugger under 9x/ME/XP fixed (could not reset breakpoints, and those did not work). Key combination ALT+K added to call keyboard.
mailto: bonanzas@online.sinor.ru