EmuZWin v2.2 выпуск 1.0

(С) by Vladimir Kladov, 2003

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

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

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.0:


История:

Версия 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. Опубликован с исходным кодом.