Эмуляция платформы ZX-Spectrum

Кликните по рисунку, чтобы скачать программуНаверное большинство, как минимум, слышали об игровом компьютере ZX-Spectrum на базе 8-разрядного процессора Z80 (8086) с тактовой частотой 3-7МГц. Он был разработан сэром Клайвом Синклером в 1980г. и сразу же завоевал бешеную популярность в Старом Свете. Дело в том, что за счет максимально упрощенной архитектуры компьютер был очень дешев. Весь он умещался в корпусе клавиатуры, в качестве периферии использовались обычные бытовые приборы. Так в роли устройства чтения-записи использовался магнитофон (магнитофонная лента-накопитель), а в качестве монитора - обычный телевизор. Видео-память составляла 6К, для кэша видеоадаптера использовалось основное ОЗУ. Такой интерфейс обеспечивал 8 цветов и 2 полу-тона.

Для тех времен памяти в 16К вполне хватало, позднее появились машины с 48 и 128К. Операционная система располагалась в 16К ПЗУ - это был новый и удобный по тем временам язык программирования Бейсик. В 1986г. дисководы уже не были очень дорогими и их стало возможно подключать к Спектруму, для работы с ними в ПЗУ была дополнительно вшита система TR-DOS, либо использовался внешний контроллер TR-DOS. В конце 80-х компьютеры Спекки (так любовно называли Спектрумы) были вытеснены с рынков Европы IBM-совместимыми компьютерами.

Но в начале 90-х Спектрум-совместимые компьютеры начали собирать в России. Россияне, никогда не видевшие компьютеров вообще, стали охотно покупать собранные частниками "Ленинграды". Позднее Спектрумы начали производить радиозаводы, как например 48K Magic, но они все равно не могли сбить ажиотажный спрос. А к концу 90-х и мы пересели на более мощные и сложные компьютеры, IBM и Macintosh, а про Speccy забыли...

Так к чему тогда этот раздел, посвященный забытому компьютеру? А вы помните середины 90-х с заваленными игровыми кассетами прилавками? Для Спектрума были созданы тысячи игр, они создаются и сейчас! Куда прикажете девать все это богатство?! Все очень просто - продолжать играть на IBM-совместимых компьютерах. К тому же очень много тех старых игр, умещающихся в 48, реже в 128 Килобайт, еще могут дать фору многим современным играм по своему интересному игровому сценарию! Чего стоят хотя-бы такие хиты как Academy, Elite, Nether Earth! Да и как приятно вспомнить былое и окунуться в мир игр юношества. Почти все игры Спектрума можно найти в интернете, можно купить CD с сотнями игр в сборнике.

Для совмещения платформы IBM с платформой ZX-Спектрум существует много эмуляторов. Благо создать виртуальный образ 144К памяти на компьютере с не одним десятком Мегабайт не составляет труда. Здесь мы представляем один из самых лучших эмуляторов ZX-режима - r80 v0.30, который вы можете скачать прямо сейчас. Он поддерживает большинство форматов zx-файлов, бипер и музыкальные процессоры Спектрума AY-3-8912 и Digital Covox через Sound Blaster или Adlib-совместимую карту (бипер обходится системными динамиками PC), создает полностью совместимые образы компьютеров Spectrum, +2, +2A, Pentagon, Scorpion с 16, 48 и 128K памяти, моделирует Бейсик, TR-DOS и Tape loader, эмулирует видеорежимы 320х200 в том числе 50Гц и Vesa 2.0 640х480, джойстики Kempston, Sinclair 1 и 2, Coursor на курсорных клавишах PC (огонь 0) и к тому же игры в этом эмуляторе идут с той же скоростью, что и на Спектруме, совсем не подтормаживают. Благодаря поддержке Tape loader можно грузить игры прямо с магнитофона через звуковую карту (требуется предварительно подключить магнитофон к LPT или COM-порту)! Для нормальной скорости игр требуется Pentium, но сносно работает и на 486-м процессоре. Под Win2k больше подойдет эмулятор Unreal Speccy для Windows. Он более совместим с Windows, поэтому если r80 искажает звук или изображение скачайте Unreal, в нем таких проблемм не возникнет. Далее пойдет описание для эмулятора r80, но и с US вам разобраться будет не сложно, по клавише F1 открывается диалог настроек, F2 для сохранения лент, F3 для загрузки (после загрузки в память для запуска надо ввести load "" (load по J)) и т.д.

Форматы файлов эмуляции

Прежде чем приступить к работе с эмулятором разберемся с форматами файлов. Большинство файлов ZX-Spectrum написаны на ассемблере и хранились на магнитофонных кассетах. Для загрузки программ в память к PC через порт подключали магнитофон и загружали их при помощи звуковой карты. Звуки с магнитофона записывались специальной программой и создавались псевдозвуковые файлы .tzx, на которых записаны модемные сигналы. Эти файлы могут читать почти все эмуляторы, но у формата есть существенный недостаток: длительное время загрузки. Ведь эмулируется весь процесс, а с кассеты 40-килобайтная игра загружается минуты за 3. Поэтому эмуляторы стали использовать более совершенный формат - .tap. Это слепок звукового TZX-файла, но читается TAP уже не через звуковую карту, а напрямую с диска, поэтому загружается за доли секунды.

Игры для ZX-Spectrum существовали не только на магнитофоне, но еще и на 5'' дискетах (особенно 128-килобайтные). С этими много проще, ведь они уже использовали более-менее современный носитель. Каждая игра на диске состояла из нескольких файлов: загрузчика, транслятора, собственно игры и иногда файлов обслуживания (аналог современных оверлеев и библиотек). При помощи эмулятора эти файлы просто переписывались на диск PC и имели тип $ и !. Так $B-это бейсик-программа (обычно загрузчик), $E-программа в машинных кодах (обычно и есть игра), $1, $2 и так далее обычно оверлеи, вместо $ с таким же успехом может стоять !, но это разные, хотя и подобные форматы. Это все файлы HoBeta, и хранить в них информацию не совсем удобно. Гораздо удобнее хранить в одном файле. Поэтому сначала придумали архив ZZX, но чтобы запустить игру требовалось сначала разархивировать файлы, а потом образы реальных дисков TR-DOS .trd. В эмуляторах, поддерживающих TRD-формат (среди них и r80), работают с этими файлами так же как и с дисками TR-DOS. Недавно появился новый формат образа диска .scl (поддерживается в r80). С SCL работают так же как с TRD, но сами scl-файлы меньше по размеру, за счет более совершенного способа хранения информации.

Поскольку чужеродные программы уже стали поселяться в памяти PC и успешно там работать при помощи эмулятора, способного в любой момент остановить процесс, стали появляться и другие форматы. Пожалуй самые удобные форматы snapshot - слепки памяти. Это файлы с расширением SNA и Z80. Они сохраняют все содержимое памяти эмулятора на диск PC, поэтому можно начать даже любую аркаду с того места, на котором был сделан этот слепок. Сейчас множество игр ZX-Spectrum сохранено в этих форматах, просто после загрузки игры, когда появляется главное меню, делается слепок памяти. Вот в общем-то и все. Теперь все разнообразие игр 80-х доступно нам.

Еще существуют POKEs файлы с расширением .pok. Это что-то вроде cheats к играм для получения вечной жизни, полной аммуниции и т.п. Достаточно загрузить соответствующий POK-файл во время работы игры (Ctrl+F7, затем F2 и выбираете POK-файл). Он меняет некоторые адреса памяти, чтобы счетчики не уменьшались. В интернете есть множество указаний для получения вечной жизни, это ручные POKEs. В них указан адрес и значение в десятиричном формате. В r80 вы можете пользоваться и этим, только нужно перевести числа в 16-ричный формат, для этого подойдет стандартный калькулятор Windows в виде инженерного (меню вид, инженерный). Сначала вводим число в Dec, затем переключаемся в Hex и получаем шестнадцатиричное число. Так например в txt-файле к игре Freddy Hardest I указано для вечной жизни 64011, 167. Переведем числа в 16-ричный формат и получаем строку памяти вместо 64011 - FA0B, а значение вместо 167 - A7. Теперь запускаем игру и нажимаем Esc-попадаем в дебуггер. Нажимаем F2-попадаем в таблицу памяти, нажимаем F3-включаем режим редактирования, нажимаем F2 и вводим строку для поиска: FA0B. Затем в позиции курсора вводим значение строки A7, два раза нажимаем Esc и играем с вечной жизнью. Все очень просто.

Эмулятор

Итак запускаем файл r80.exe и попадаем в 128-килобайтную ZX-Spectrum машину. Прямо в начальный экран. Здесь выбираем режим 128 или 48К BASIC и можем поработать в старом добром Бейсике, если хотите :-) А если нет, то нажимаем F3-для запуска форматов SNA или z80, F5-для запуска TAP или TZX или F8-для загрузки SCL или TRD. В открывшемся диалоге выбираем нужный файл и, если это слепок памяти он сразу запустится с того места на котором был сделан, если это слепок ленты, то нужно ввести load "" ("-пишется через Ctrl+P, в 48К машине LOAD пишется клавишей J), если это реальный диск, то:

Инструкции по запуску TRD и SCL (после нажатия F8)

  1. Сначала указывается эмулируемый диск клавишами влево-вправо, доходим до A (в подавляющем большинстве дисков B, C и D не существовало!) нажимаем Enter и выбираем файл диска TR-DOS на своем винте. Затем жмите ESC.
  2. Переходим в режим TR-DOS, для этого по кнопке F2 выбираем машину, на которой была эта система (Pentagon, Scorpion).
  3. Смотрим файлы на диске по команде LIST (клавиша K). Во второй колонке ищем запускаемый файл (обычно он имеет тип <B>, если такого файла нет-попробуйте позапускать все файлы в соответствии с п.4)
  4. Запускаем исполняемый файл командой RUN "FileName", не забывая, что регистр букв имеет значение заглавные буквы пишутся с Shift (RUN пишется клавишей R, кавычки-Ctrl+P или Alt+P).

Если на команду list выскакивает ошибка "No disk", значит файл приписан не к диску А, попробуйте загрузить в другие диски.

Пример: Нам нужно открыть игру Star Raiders II из файла srii.scl. Для этого мы запускаем эмулятор r80.exe, нажимаем кнопку F2 и выбираем машину Pentagon. В ней выбираем TR-DOS. Затем нажимаем F8, убеждаемся, что выбран диск A и нажимаем Enter. Находим файл srii.scl на жестком диске компьютера и выбираем его. Затем нажимаем Esc и кнопку K, появится команда LIST, нажимаем Enter. На диске видим 5 файлов, один из них имеет тип <B>, остальные <C>. Нам нужен исполняемый, то есть <B>, его имя SRII. Нажимаем R, появляется команда RUN, далее открываем кавычки (Ctrl+P), пишем имя файла и закрываем кавычки, должно получиться RUN "SRII", нажимаем Enter, игра запускается.

Вот вкратце и все. Надо отметить, что все функциональные клавиши и кнопка Esc останавливают работу ZX-программы и открывают диалоги эмулятора, все что в данный момент в памяти эмулятора может быть сохранено в формате слепков памяти (F4) или ленты (F6), все что на экране эмулятора может быть сохранено в графических форматах scr, pcx или grp (screenshot)(F7) - это особенно важно, так как такты видеоадаптеров Windows и ZX-Emul не совпадают и по PrtScr сохранить экран невозможно. По клавише F1 можно получить справку о любом диалоге, листается справка клавишами вправо-влево. В файле r80.ini можно задать начальные установки эмулятора, в том числе пути к программам, стартовую машину и т.п.

Управляющие клавишы (подробнее по F1 в программе)

Следует помнить, что некоторые игры идут только в своих машинах, так игра для 48K машины может не пойти в 128K. Правда в большинстве случаев r80 сам определяет тип машины, но если игра не идет или виснет, то стоит попробовать другую машину.

Игры ZX-Spectrum в интернете

В интернете можно найти множество сайтов со Спектрумовскими играми. Вот некоторые из них.

Карта сайта