EmuZWin v2.3 выпуск 1.3

(С) by Vladimir Kladov, 2003

Представляю свой эмулятор ZX-Spectrum 128K/48K для Windows 95/98/ME/NT/2K/XP.

Загрузить версию 2.3 можно здесь: http://bonanzas.rinet.ru/EmuZWin23.zip
Теперь для загрузки самой свежей версии следует использовать ссылку: http://bonanzas.rinet.ru/EmuZWin.zip .

На настоящий момент, среди оконных эмуляторов EmuZWin один из самых быстрых и корректных в плане точности эмуляции, эмулирует Spectrum-128K / Spectrum-48K, TR-DOS, поддерживает сохранение/загрузку популярных снап-форматов (SNA, Z80), понимает так же форматы дисков TR-DOS (TRD, SCL, HoBeta) и загрузку большинства форматов ленты (в том числе TAP, TZX), и других, и этот список может расширяться написанием плагинов. Имеет очень удобную возможность: перепрограммирование клавиатуры (можно переопределить, какие клавиши Spectrum'а нажимаются какими клавишами на клавиатуре PC).

Имеется поддержка мультиколора (учет параметров таймирования для 48, 128, 128+2, 128+2A/+3, Pentagon, возможность настройки своих параметров, переключение между моделями таймирования "на лету"), эффект "снега", ввод атрибутов из порта FF. В режиме мультиколора EmuZWin работает практически так же быстро, как и без него.

PC Speaker в качестве устройства вывода звука может использоваться только под Windows9x/ME, и качество звука при выводе на спикер просто отвратительное (но для того, чтобы услышать пук-пук в большинстве игрушек, этого хватает). По умолчанию всегда используется DirectX для вывода звука, в том числе для вывода MIC-звука. Качество звука при выводе через DirectSound очень приличное.

Видеовывод в оконном режиме только через GUI, DirectX используется только в полноэкранном режиме. Тем не менее под Windows98 идет на машине Pentium100 со скоростью 70-100% от номинальной, что в общем достаточно для большинства игрушек. Видеовывод эмулируется с точностью до строки кадровой развертки. Т.е. надписи на бордюре не будут видны, но большинство эффектов сохранены.

Эмулируются Kempston Joystick, Sinclair I (только с реальным джойстиком), Sinclair II и Fuller Box - с использованием до двух реальных джойстиков, или могут эмулироваться на дополнительной цифровой клавиатуре (действует при включенном Num Lock). Дополнительная рисованная клавиатура может помочь при вводе команд Бэйсика при эмуляции Spectrum-48K. Кроме того, она позволяет зафиксированть какие-то клавиши на всемя игры (правый щелчок мыши по кнопке). Может пригодится и при программировании раскладки клавиш в игре.

Для загрузки и сохранения поддерживаются форматы Z80 и SNA, так же возможна загрузка с ленты в форматах TAP, TZX, BLK, включая загрузку из архивов ZIP (требуется указать путь на PKUNZIP.EXE). Для загрузки/сохранения образов дисков поддерживаются форматы TRD, SCL, HoBeta (*.$?). Для загрузки используется собственный диалог с предварительным просмотром экрана загружаемой программы, при возможности (при наличии, для предварительного просмотра могут использоваться .SCR-файлы).

POK-файл, имеющий то же название, что и загруженный, но с расширением .POK, загружается автоматически. При этом отыскивается в той же директории, откуда загружен файл, или во всех вложеных (рекурсивно), а так же при загрузке из ZIP - в самом архиве. В случае собственного формата EZX, внешние файлы pok не загружаются (в этом случае содержимое pok-файла хранится в самом ezx-файле). Возможно загрузить pok-файл отдельной командой меню.

Теперь в помощь играющим имеется еще и построитель карт. Надеюсь, пригодится, для квестов и адвенчур :)

Работа с большинством форматов организована через плагины. Имеется свой собственный формат EZX, который не требует наличия плагинов. Плагины должны располагаться в той же директории, что и сама программа. Документация по написанию плагинов предоставлена.

Файл Spectrum.rom, содержащий образы ПЗУ 32К, должен лежать в той же директории, что и сама программа (первые 16К - ПЗУ S128, вторые 16К - ПЗУ S48). Файл TRDOS.ROM 16K должен размещаться там же. Используя опцию командной строки /ROM=путь или пункт главного меню File/New/Custom ROM Image, возможно выбрать другой образ основного ПЗУ (кроме TR-DOS).

Встроенный мощный пошаговый и трассирующий визуальный отладчик может использоваться для самых разных целей. Мне он пригодился при отладке самого эмулятора. Имеется встроенный ассемблер, можно использовать EmuZWin как кросс-систему для программирования для Spectrum'а.


Уже не планируется в 2.1, но вероятно в 2.2/2.3:

Не планировалось в версии 2.0:


История:

Версия 2.3 Выпуск 1.3 (15-Февраля-2004): Исправлены некоторые баги:

[-] В главном окне, View|Toolbar не работало правильно.
[-] Z80 плагин - загрузка и запись состояния исправлены. Сохранение в Z80 не работало вообще (PC дублировался на месте SP, SP не сохранялся, найдены ошибки в алгоритме компрессии блоков памяти). Загрузка исправлена для 48K-файлов сохраненных в режиме 128K.
[-] Исправлена ошибка в диалоге Load Memory Block (вызывается из Отладчика): когда нажималась кнопка [<>] для поиска первого различия, и блоки были идентичны, это приводило к зацикливанию эмулятора.
[-] Некоторые проблемы поправлены с загрузкой состояний из файлов, содержащих "грязь" на месте некоторых "пробдвинутых" значений. Например, при загрузке из Z80 значение счетчика тактов с последнего int могло оказаться слишком большим.

Версия 2.3 Выпуск 1.1 Бета (8-Декабря-2003): Добавлена поддержка мультиколора (48, 128, +2, +2A/+3, Pentagon, переключение и настройка на ходу). Добавлено сохранение снимков экрана (BMP, PNG, SCR, поддержка плагинов). Добавлен построитель карты. Краткая история альфа-выпусков версии 2.3:

1.0.B - storing MC settings in EZX format implemented, new chunk type 'MULT' added to the EZX format.

1.0.A - save screen shot (F5) added (plugins extendable). Load from ZIP using PKUNZIP fixed. Open recent list (up to 9 files) added. Crash on exit fixed (seems). Reanimate option added (by suggestion of Alex Medvedev).

1.0.9 - crash fixed (when debugger is closed and emulator works in MC). Snow effect controlled by the config now (and by default it is off for +2A/+3/Pentagon). Port recognision works now better (LD A,XX; OUT (FD) now works in most cases correctly).

1.0.8 - Loading TZX fixed in MC. Sealing of some ZX keys pressed with SHIFT+correspondent PC key (",:,+,<,>,{,},|) fixed. Open by F3 fixed for full-screen mode (now slow but mostly correct). IN FF for MC implemented. Bug Z80 with LD A,R / LD A,I (when IntSignal ON, but except after EI) - implemented (for MC). Also, snow effect (bug in ULA) implemented, now for for all Timing models including +2A/+3 (later will be configurable and by default off for +2A/+3).

1.0.7 - DirectX output (full screen mode), configs are reworked. Status bar added (leds in full screen) with speed % and FPS.

1.0.6 - fixed TR-DOS off with multicolor

1.0.5 - first (ugly) configuration for MC, View | Effects | Flip Vertical

1.0.4 - optimized MC for +2A/+3, some configurations added, Show Border Only (in the Debugger)

1.0.3 - optimized MC for 48, 128, +2

1.0.2 - menu settings for MC

1.0.1 - dirty multicolor (MC) mode

Версия 2.2 Выпуск 1.0 (3-Ноября-2003):
[+]Добавлена поддержка TR-DOS. Поддерживаются форматы TRD, SCL, Hobeta (.$?). Поддерживается прямая загрузка указанного HoBeta-файла (или файла, выбранного в Дисковом Менеджере, ALT+D), кнопка Magic Button (ALT+M), загрузка с диска (boot, ALT+B). Дисковый менеджер имеет набор утилит для работы с образами TR-DOS-дисков (создание, загрузка, сохранение дисков; удаление, переименование файлов; уплотнение диска (squeeze); сохранение выбранных файлов в HoBeta-формате, компоновка диска из отдельных HoBeta-файлов, в том числе используя драг-дроп из папки проводника). Соответственно, дополнен формат EZX (добавились чунки DISK, BETA, PRVW), и расширен интерфейс с плагинами, совместимость с прежними плагинами сохранена.

[+]Некоторые изменения в интерфейсе. File|New|Spectrum 48K блокирует эмулятор в режиме эмуляции только 48К-машины, до вызова File|New|Spectrum 128K или Custom ROM Image, содержащего образ ПЗУ 128К (или до включения режима 128К при загрузке специфического файла, требующего 128К). Двойной щелчок правой клавишей мыши не приводит к переходу в полноэкранный режим (только левой клавишей, правая зафиксирована за операцией пауза/возобновление). Окно конфигурации может быть вызвано отдельно из меню или Alt+C. В отладчике теперь возможно скроллировать дизассемблированный текст колесиком мыши и двигая ползунок, как в обычном скроллере. Так же, подсказки на верхней линейке инструментов отладчика возможно теперь отключать (щелчок правой клавишей мыши). В диалоге открытия файлов добавлена кнопка для выхода в родительскую папку. Некоторые пиктограммы на кнопках изменены (пуск ленты в главном окне, трассировка в отладчике).
[-]Серьезные исправления в ассемблере (многие команды транслировались неверно).
[+]В окне ассемблера можно вызвать список всех команд и директив и двойным щелчком вставлять их в исходный текст.

[-]Исправлено множество мелких ошибок в эмуляторе (вообще, редко проявлявшихся) и погрешностей в интерфейсе. Отладчик иногда зависал при частом нажатии (или удержании) клавиш F7, F8 - это устранено.


Версия 2.1 Выпуск 8.0 (21-Сентября-2003): Исправлен ассемблер.

Версия 2.1 Выпуск 7.0 (13-Сентября-2003): Исправлен ассемблер.

Версия 2.1 Выпуск 6.0 (17-Июля-2003): Добавлено окно ассемблера.

Версия 2.1 Выпуск 5.0 (15-Июня-2003): Некоторые исправления в Debugger-е:
[+] Добавлен поиск по тексту, включая нечувствительность к регистру.
[-] Исправлено падение при закрытии окна поиска без задания образца поиска.
[-] Ctrl+F и другие клавиши работают теперь в окне отладки как должно.

Версия 2.1 Выпуск 4.0 (27-Мая-2003): Небольшие улучшения:
[+] В оконном режиме, можно перетаскивать окно мышью, хватаясь за сам дисплей, не только за заголовок.
[*] Для медленных машин (определяются как 386, 486 или Pentium, ниже чем Pentium II или Pertium Pro) точная синхронизация звука отключена. Добавлена опция командной строки /FAST для игнорирования определения медленной машины (машина в любом случае считается быстрой, звуковая синхронизация включена).
[+] Можно менять приоритет приложения: Normal/Above Normal - через меню (улучшает качество звука при сильной загрузке процессора другими приложениями).
[=] Исправлен возврат из полноэкранного режима.
[-] Исправлена прокрутка в окне переопределения клавиш (диалог конфигурации).
[-] Инициализация компонентов Direct Sound и Joysticks начинается теперь, когда главное окно уже видимо. Это делает старт эмулятора чуть быстрее.
[=] Исправлено бросание ZIP-файлов на окно эмулятора.

Версия 2.1 Выпуск 3.0 (27-Мая-2003): Улучшена загрузка с ленты: добавлена flash-загрузка (перехват ПЗУ), режим авто-старт/авто-стоп ленты. Улучшена работа с форматом SNA. Исправлена и улучшена работа каталога ленты. Исправлена работа и внешний вид окна управления POKes.

Версия 2.1 Выпуск 2.0 (26-Мая-2003): Улучшена загрузка TZX, спасибо Александру Медведеву. Исправлена загрузка Z80, спасибо Mark Woodmass. Так же небольшие исправления и улучшения в отладчике. Диалог About и заголовок программы показывают теперь версию 2.1. Информацию о версии можно получить теперь так же в диалоге свойств исполняемого файла.

Версия 2.1 Выпуск 1.0 (24-Мая-2003): добавлен Полноэкранный режим, с использованием Direct-X (Alt+Enter, или двойной щелчок на главном окне). Щелчок правой мыши в главном окне используется для паузы/продолжения эмулятора. При работе в полном экране, меню и инструментальная линейка визуально отключены, но все комбинации клавиш работают по-прежнему. Открытие любых драгих окон и диалогов переключает режим из полноэкранного в нормальный. Клавиши Num[ + ] и Num[ - ] используются в полноэкранном режиме для изменения масштаба только для этого режима. Добавлены опции Interlaced in Full Screen (чересстрочный режим, Alt+I) and Normal Refresh Rate in Full Screen (по умолчанию включен).
    Добавлена поддержка реальных Джойстиков. Возможно использование одного или двух джойстиков (во втором режиме возможно направить каждый джойстик на Kempston / Sinclair-I / Sinclair-II / Fuller Box / Cursor). Оба джойстика могут быть переназначены на клавиши ZX как обычно - используя переназначение клавиш на уровне эмулятора (что позволяет использовать джойстик в играх, которые изначально не предполагали работу с джойстиком). Перед использованием джойстика, он должен быть предварительно включен (используя Alt+J, или меню, или диалог конфигурации).


Финальный выпуск F1.5 (20 мая 2003): Более устойчивый звук (даже при работе других приложений и манипуляциях с окном).

Финальный выпуск F1.4 (19 мая 2003): Множество небольших исправлений (загрузка с ленты, добавление блоков из файла в каталоге ленты, чтение POK из ZIP-архивов) и мелких улучшений (диалог открытия, переназначение клавиш).

Финальный выпуск F1.3 (18 мая 2003): Добавлен режим быстрой эмуляции LDIR/LDDR/CPIR/CPDR, по умолчанию включен, можно выключить для отдельной игры или по умолчанию (хотя на акууратность эмуляции не влияет вообще). Ускорено видео-отображение: теперь масштабирование делается собственной процедурой, без использования StretchBlt. Некоторые незначительные улучшения в интерфейсе (уменьшенная клавиатура, свой полупрозрачный курсор на главном окне эмулятора, запоминание последней папки при закрытии диалога открытия файлов).

Финальный выпуск F1.2 (15 мая 2003): Исправлено замедление видео-отображения под Windows9х при размере дисплея, отличном от 1х1.

Финальный выпуск F1.2 (15 мая 2003): Исправлены падения программы на выходе, если менялись параметры скорости и частоты обновления. Предотвращено авто-возобновление по нажатию любой клавиши, если открыт диалог конфигурации.
    Улучшено управление скоростью (Alt+Num[ * ] для быстрого переключения между 50% и 800%), значок молнии на инструментальной линейке вдавлен для всех скоростей больших 100%.
    Значительно улучшен видеовывод для случая нестандартного размера экрана (отличного от 1х1 и 2х2) - изображение более не "плавает" при перерисовках. Добавлена опция "пропорциональный размер" (пункт меню View|Proportional Size).

Финальный выпуск F1.1 (13 мая 2003): Исправлены падения программы при открытии pok-файлов, когда не было загрузки с ленты, и при удалении строчки из перепрограммирования клавиш. Устранены так же мелкие неисправности в интерфейсе и запоминании настроек в реестре.
    Замечание по поводу "финальности": данные выпуски финальные прежде всего в том смысле, что новых фич и существенны изменений не предвидится, но серьезные баги и мелкие глюки будут исправляться оперативно.

Финальный выпуск F1 (11 мая 2003): Добавлена поддержка ZIP (используется pkunzip.exe не поставляется в дистрибутиве).
    Добавлена ассоциация с файлами EZX (восстанавливается автоматичеки при каждом запуске).
    Теперь EZX загружается в точности в том же состоянии, как он был сохранен. Например, возможно сохранить в EZX в момент чтения с м/ф, и после загрузки чтение будет продолжено.
     Частично поддержаны токены в заголовках блоков в окне каталога ленты.
    Открытие диалога загрузки в момент чтения ленты и просмотр экранов других записей не затирает более содержимое м/ф, так что в случае отмены диалога, чтение может быть продолжено.
    Сохраняются в реестре позиция и размеры каталога ленты, окна открытия, конфигурации, список папок, выбранных в окне открытия (максимум 10), другие настройки.
    По нажатию Escape, эмулятор теперь минимизируется в трей без анимации (быстро).
    Клавиша PAUSE так же используется для перевода эмулятора в состояние "пауза" (но игнорируется для возобновления).
    Главное окно не может быть увеличено до троекратного размера клавишей Num[ + ] и соответствующим пунктом меню на экране с разрешением меньше 768 пикселов по высоте.
    Множество других небольших изменений.

Бета выпуск B10 (8 мая 2003): Добавлена настройка цветов. Все основные настройки сохраняются в реестре. Множество мелких исправлений.

Бета выпуск B9 (7 мая 2003): Добавлено переназначение клавиш на уровне эмулятора. Формат ezx опять немного изменен (KEYS), но на прежние записи состояний это не влияет.

Бета выпуск B8 (5 мая 2003): Добавлена опция Refresh Rate, позволяет снизить частоту отображения кадров и за счет этого увеличить производительность на медленных машинах. Клавиатура при открытии окна автоматически позиционируется в соответствии с местоположением основного окна и возможностями рабочего стола.
  Добавлена поддержка POK-файлов, с автоматически назначаемыми пиктограммами (!).
  Исправлено добавление образа ленты в режиме каталога ленты.
B8.a: Обеспечено сохранение содержимого pok-файла в формате ezx и его загрузка (формат ezx слегка изменен, что не должно отразиться на имеющихся записях состояний). Добавлен в главное меню пункт File|Open Pokes... для загрузки внешнего pok-файла при необходимости.
  Устранено падение программы при закрытии.

Бета выпуск B7 (3 мая 2003): Добавлен тулбар, с прогрессом загрузки ленты. Улучшена синхронизация и намного ровнее стал звук AY. Добавлен ключ /NoMMTimer для запрета новой синхронизации (лучше не использовать, будет только хуже). Множество исправлений в эмуляции звука, команд, загрузки с ленты, интерфейсе. Изменен формат EZX, чтобы в будущем позволить продолжить загрузку с ленты после перезапуска. Изменена сигнатура, чтобы предотвратить загрузку ранее сохраненных EZX-файлов. Для их загрузки вам потребуется прежняя версия EmuZWin!

Бета выпуск B6 (30 апреля 2003): Значительные улучшения звука AY. Исправлена генерация прерывания (int). Упрощенная схема распознавания портов (включается автоматически при обращении к неверному порту). Исправлена загрузка из Z80 (3.0) с несжатыми банками памяти. Добавлено сохранение в формате Z80 (версии 2.01 этого формата).

Бета выпуск B5 (29 апреля 2003): Добавлена форма для отправки сообщения разработчику (мне) о новых неизвестных загрузчиках с ленты. Теперь файлы можно перетаскивать мышкой (drag-and-drop) прямо на главное окно программы. Небольшие исправления в звуке AY.

Бета выпуск B4 (28 апреля 2003): Режим Fast Load для ленты теперь действительно быстрый, в том числе для защищенных загрузчиков (TZX). Добавлены опции /Sound8 и /SoundExclusive.

Бета выпуск B3 (27 апреля 2003): Исправления в эмуляции звука AY, инструкций OUTD/OTDR/OUTI/OTIR, некоторые улучшения интерфейса, чуть более быстрая загрузка с ленты.

Бета выпуск B2 (23 апреля 2003): Исправлена загрузка SpeedLock1 и SpeedLock2 (TZX). Реализован ввод из порта FF (требуется некоторым играм для синхронизации). Добавлена эмуляция звукового чипа AY.

Бета выпуск B1 (22 апреля 2003): Видеовывод оптимизирован для глубины цвета 32 и 24 бита (ранее оптимизация касалась только режима 16 бит).

пре-бета выпуск 10 (21 апреля 2003): Исправление сделанных вчера ошибок, TZX должен читаться нормально для всех видов защит (надеюсь).

пре-бета выпуск 9 (20 апреля 2003): Исправление некоторых ошибок, в основном что касается распознавания TZX (но все еще не закончено).

пре-бета выпуск 8 (19 апреля 2003): Добавлены опция командной строки /ROM= и пункт главного меню File/New/Custom ROM Image для упрощения выбора другого образа ПЗУ. Опция командной строки /9x позволяет запускать эмулятор под всеми весиями Windows в том же режиме работы с памятью, что и под Windows9x/ME. Опция /PAUSED позволяет запустить эмулятор в состоянии паузы. Некоторые улучшения в отладчике, исправлены некоторые инструкции (флажки, T-состояния). Но файлы TZX, защищенные спидлоком, пока не грузятся.

пре-бета выпуск 7 (16 апреля 2003) - исправлены команды RLD/RRD, длительность в тактах комад работы с (IX+offset), (IY+offset). В результате пошли игры, которые не работали (chronos2), улучшился звук;
7.1: исправление в команде DAA.

пре-бета выпуск 6 (16 апреля 2003) - исправлена загрузка с ленты (TAP, TZX - частично). Добавлено управление лентой. Исправлено сохранение SNA из-под 9х/ХР. Добавлена комбинация ALT+K для вызова клавиатуры. Исправлен отладчик для режимов 9х/МЕ/ХР (не ставились/не снимались/не работали точки останова).


http://bonanzas.rinet.ru

mailto: bonanzas@online.sinor.ru

См. так же о других моих эмуляторах ZX-Spectrum 128K/48K для DOS:

EMUZ, 1995. Написан на C--. Недавно обнаружен исходный код, и опубликован.

Z.com, 2003, assembler. Минимальный по размеру (6К) коррекный (и вполне играбельный) эмулятор Spectrum-128K и 48K. Опубликован с исходным кодом.