Zx spectrum booty windows

Эмуляторы

Эмулятор – это специализированное приложение для той или иной операционной системы, которое позволяет имитировать работу эмулируемого устройства, запускать программы, приложения, созданные для этого устройства.

Что такое эмулятор

Эмулятор ZX Spectrum позволяет запускать игры для «Спектрума» на компьютере, смартфоне, игровой приставке или другом устройстве. При этом становится доступным огромное количество разработанных для него игр, демонстрационных программ, электронных журналов, представленных в виде так называемых «ромов» — файлов, которые содержат данные оригинальных кассет и дискет с играми. Достаточно запустить эмулятор, загрузить в него файл с игрой, и вуаля! – виртуальный Spectrum у вас на рабочем столе. Большинство современных эмуляторов поддерживают все «фишки» «Спектрума» – загрузку «с ленты» или «дискеты», имитация работы музыкального сопроцессора AY-3-8910/YM2149F и многое другое.

На этом сайте zxspectrum.online – ZX Spectrum — онлайн-коллекция игр представлено большое количество игр, в которые можно играть не только онлайн, но и скачать их на свой компьютер и играть без доступа к сети Интернет. Для этого со страницы с игрой нужно скачать игру на Spectrum на жесткий диск или рабочий стол, а затем открыть в эмуляторе.

Популярные форматы файлов для эмулятора ZX Spectrum

tap – содержит в себе образ кассеты с игрой. Некоторые эмуляторы позволяют воспроизвести процесс «загрузки с ленты» для полной имитации работы настоящего компьютера.

tzx – содержит точный образ кассеты с игрой, при этом сохранена информация о длительности пауз, высоте тона, скорости воспроизведения кассеты.

z80 – содержит в себе образ оперативной памяти ZX Spectrum, в которую уже загружена программа. Этот формат позволяет обойти защиту некоторых игр при загрузке.

trd – содержит образ дискеты для в формате TR-Dos. Обычно дискеты содержали сборники игр для Spectrum и сложные демо.

Эмуляторы ZX Spectrum для Windows

Существует несметное количество эмуляторов ZX Spectrum для различных платформ, включая эмуляторы для Windows, эмуляторы для Linux, MacOS. Есть эмуляторы «Спектрума» и для мобильных устройств – смартфонов, портативных игровых приставок. Их такое большое количество, что все перечислить их невозможно. Ниже представлены лучшие эмуляторы Spectrum для Windows.

EightyOne

Замечательный эмулятор, главным достоинством которого является отличная картинка. При этом реализовано множество нюансов изображения старых аналоговых телевизоров, которые использовались в качестве монитора ZX Spectrum – чересстрочная развертка, перекрестные помехи, размытое изображение. Просто рай для настоящего фаната «Спектрума». Впрочем, все эти спецэффекты можно отключить и получить четкое красивое изображение.

  • Поддерживает различные Спектрум-подобные компьютеры: ZX 81, ZX Spectrum 48/128, Spectrum QL, Timex, Amstrad и другие
  • Поддерживаемые форматы файлов: TZX, TAP и Z80
  • Поддерживает музыкальный сопроцессор AY. В играх для ZX Spectrum 128 есть музыка
  • Выводит красивую картинку, похожую на изображение, даваемое настоящим ZX
  • Изображение можно масштабировать
  • Можно сохранять состояние эмулятора в любой момент времени (F12 – Save snapshot…), таким образом, есть возможность сохраняться в играх

EmuZWin

Удобный в использовании эмулятор ZX Spectrum. Настройки по умолчанию дают возможность насладиться игровым процессом. Достаточно открыть образ игры и нажать любую клавишу. Можно наблюдать за процессом загрузки игры как на реальном «Спектруме», или же пропустить этот процесс. Хорошая поддержка музыки AY с возможностью прослушивания стереоканалов. Можно также отобразить клавиатуру в отдельном окне, просматривать содержимое образов кассет и дискет.

  • Поддерживает компьютеры: ZX Spectrum, Pentagon, Scorpion, Profi, ATM
  • Поддерживает файлы: TAP, TZX, Z80, TRD и многие другие
  • Позволяет сохранять скриншоты экранов в PNG
  • Можно изменять скорость эмуляции в широких пределах
  • Есть встроенный браузер кассет, имитация загрузки с ленты
  • Позволяет сохранять картинки рабочего процесса в BMP и звуковое сопровождение в WAV
  • Поддерживает Kempston-джойстик, мышь, ZX Printer
Читайте также:  Минимальные системные требование для windows zver

Эмулятор с огромным количеством различных возможностей, опций и настроек. Нужно отметить высокое качество изображения, достигаемое с помощью различных улучшающих, сглаживающих фильтров. Несмотря на низкое разрешение оригинального «Спектрума», эмулятор способен давать качественную гладкую картинку. Кроме того, Fuse дает возможность записывать игровой процесс в специальные файлы RZX, которые затем можно проиграть и посмотреть запись. Поддерживается огромное количество разнообразных периферийных устройств, выпущенных для ZX Spectrum: принтеры, джойстики, мыши, Interface 1-2, Microdrive, дисководы и так далее.

  • Поддерживает компьютеры: ZX Spectrum, Timex, Pentagon, Scorpion
  • Поддерживаемые форматы файлов: TAP, Z80 и другие
  • Позволяет просматривать скриншоты SCR
  • Картинку можно масштабировать с различными фильтрами для повышения четкости
  • Реализована поддержка различной периферии, Kempston-джойстика, мыши, ZX-принтера, Interface 1 и MDR
  • Позволяет вести запись игрового процесса RZX
  • Умеет работать с дискетами различных форматов

SpecEmu

Этот эмулятор имеет минимум настроек. Буквально «открой файл и играй». Но вместе с тем он оставляет хорошее впечатление от процесса. Для любителей разбираться в чужом коде есть встроенный дебаггер, позволяющий просматривать состояние процессора, памяти, наблюдать за тем, как работает выполняемая в данный момент программа.

  • Поддерживает компьютеры: ZX Spectrum, Timex, Pentagon
  • Поддерживает большое количество форматов файлов: TAP, TZX, Z80, TRD и многие другие
  • Позволяет просматривать записи игрового процесса RZX
  • Картинку можно масштабировать с различными фильтрами для повышения четкости
  • Позволяет сохранять картинки рабочего процесса в BMP и звуковое сопровождение в WAV
  • Умеет работать с дискетами различных форматов

Booty

Доступные версии

Управление

  • Интерфейс 2 (?)
  • Кемпстон джойстик (?)
  • Клавиши на выбор (?)
  • Курсор джойстик (?)

Игроков

Рассказать друзьям

  • Описание (авт.пер.)
  • Карта игры
  • Информация

СПЕКТР База игр

BOOTY

ИЗДАТЕЛЬ

АВТОР

ОПИСАНИЕ

Платформа игра, в которой определенное количество Booty должны быть собраны от судна. Это включает в себя сбор ключи, чтобы открыть заблокирована двери.

КОНТРОЛЬ:

Управление с клавиатуры являются Переназначаемые / джойстики

ИНСТРУКЦИЯ

Джим юнга должен собрать все предметы из Пиратской от Корабль, собирая ключи, которые открывают запертые двери. Опасность представляют пираты, которые патрулируют номера, крысы, которые ползают по палубе и корабли попугай, который летит по кораблю. Кроме того, некоторые попой является мины в ловушке и взрывается, когда Джим пробует собрать его. Один раз все трофеи собирают, Джим имеет 45 секунд, чтобы найти ключ на следующий кучу трофеев!

CHEATS

Вот, как получить доступ к скрытой игры: На странице Пиратской заголовка, введите тычет: 52796,32 и 52798,58. Затем выберите управления и начать игру как обычно.

Продолжения

Лунная Безумие использовать практически идентичную GAM двигатель, хотя История-мудрое, это совсем другое.

РЕЗУЛЬТАТЫ, ПОЛУЧЕННЫЕ

93% – Ошибка 10 (октябрь 1984)

ПРИМЕЧАНИЯ

Классическая игра, как весело сегодня. Один раздражающая ошибка возникает, когда Джим падает уступа, и игра может когда-нибудь замерзают.

Карта Booty

Игра Booty запускается прямо на сайте. Платформер, опубликованный в Великобритании в 1984 году творческой группой Firebird Software Ltd, который разработал John F. Cain.

Читайте также:  Making link in linux

Адаптация программ для ZX Spectrum к TR-DOS современными средствами. Часть 1

В отличие от современных компьютеров, на спектрумах понятия файловой системы не было как такового. Это значит, что загрузка с каждого типа носителя требовала отдельной реализации и в большинстве случаев программу нельзя было просто так скопировать с кассеты на дискету. В случаях, когда загрузчик программы был написан на бейсике, его можно было адаптировать к TR-DOS довольно простой доработкой. Однако ситуация осложнялась тем, что во многих играх (как фирменных так и взломанных) загрузчики были написаны в машинных кодах и иногда содержали защиту от копирования.

Несмотря на наличие «волшебной кнопки», которая просто делала полный дамп памяти компьютера и позволяла хоть как-то сохранить программу на дискету, среди специалистов считалось хорошим тоном создавать дисковые версии игр с сохранением оригинальной загрузочной картинки и прочих атрибутов.

В этой статье я расскажу, как выполнить такую адаптация на примере игры Pac-Man, а именно, оригинального образа Pac-Man.tzx.

Инструменты

Несмотря на то, что в былые времена вся такая работа делалась непосредственно на ZX Spectrum (за отсутствием других вариантов), я буду адаптировать игру с использованием эмулятора и утилит командной строки. Основная причина в том, что особенно поначалу процесс адаптации состоит из большого количества проб и ошибок, и он проходит гораздо менее болезненно, если его автоматизировать. Всё то же самое можно проделать и непосредственно на спектруме.

В первой части мы будем использовать следующие инструменты:

  1. Эмулятор Fuse для отладки и тестирования.
  2. SkoolKit для дизассемблирования.

Отключение автозапуска в загрузчике

Поскольку файл картинки и данных загружается без заголовочного блока (17 байт с именем и типом файла), это означает, что загрузчик написан в машинных кодах. Нужно найти, где эти коды располагаются и с какого адреса запускаются.

Есть несколько способов посмотреть на код загрузчика:

Самый простой — начать загружать программу, дождаться, пока загрузчик запустится, и остановить его нажатием клавиши Space . Во многих случаях это работает, но в случае с Pacman, как и во многих других, это приводит к сбросу.

Следующий способ — загрузить программу с использованием MERGE «» вместо LOAD «» . В отличие от LOAD , MERGE игнорирует автозапуск программы. В случае с Pac-Man загрузка через MERGE приводит к зависанию компьютера с характерным сдвигом экрана влево. Это связано с тем, что вместо того, чтобы выполнять программу построчно, MERGE пытается разобрать её целиком и слить с уже загруженной программой. Однако, если в программе есть блок с машинными кодами, который нарушает синтаксис программы, это приводит к сбою.

Если не хочется ломать голову, можно преобразовать образ ленты из TZX в TAP и воспользоваться утилитой listbasic , которая поставляется вместе с Fuse:

Адрес 23635 ( $5C53 ) соответствует системной переменной PROG , которая содержит начальный адрес области бейсика. Таким образом, точка входа в загрузчик смещена на 91 байт относительно области бейсика.

Ещё один способ посмотреть на загрузчик описан в статье Desativando a autoexecução de um programa BASIC. В отладчике Fuse нужно поставить точку останова br 2053 , загрузить программу, а когда загрузка закончится и выполнение кода прервётся, выполнить записать set 23619 128 . Это предотвратит автозапуск программы и позволит выйти в бейсика.

Дизассемблирование загрузчика

Зная смещение точки входа относительно области бейсика, можно рассчитать её абсолютный адрес. В случае с ZX Spectrum 48К без загруженной TR-DOS, область бейсика начинается с адреса 23755 ( $5CCB ). Следовательно, загрузчик будет начинаться с адреса 23755 + 91 = 23846 ( $5D26 ).

Читайте также:  Установка времени при загрузке windows

Для начала достаточно поставить точку останова на начальном адресе и посмотреть на машинные коды. В Fuse можно сделать br 23846 и начать загружать программу. Как только загрузчик начнёт выполняться, эмулятор остановится:

В случае, когда загрузчик совсем простой, достаточно посмотреть на дизассемблированный код в средней панели и понять, что куда загружается. Обычно код загрузки беззаголовочного файла выглядит приблизительно так:

В более сложном случае с выполнением кода нужно разбираться по шагам и делать пометки. Для этого хорошо подходит набор утилит SkoolKit. Если задаться целью, с её помощью игру можно разобрать до последнего винтика (сообщения, спрайта, звука). Как это делается, подробно описано в документации.

Если кратко, нужно сделать следующее:

  1. Сделать снапшот Pac-Man.z80 памяти компьютера, используя tap2sna.py или возможности эмулятора.
  2. Создать контрольный файл Pac-Man.ctl с начальным набором инструкций для дизассемблирования:
  3. Запустить дизассемблирование: sna2skool.py -H -c Pac-Man.ctl Pac-Man.z80 > Pac-Man.skool .
  4. В ходе изучения кода добавлять новые инструкции и комментарии в контрольный файл.
  5. Повторять до полного просветления.

В результате, после первого прохода получаем следующее (комментарии мои, адреса опущены):

Расшифровка загрузчика

Всё, что из этого действительно важно, это то, что расшифрованный загрузчик находится по адресу PROG + $35 . Это значит, что если мы поставим точку останова br 23808 , то к этот момент расшифровка уже выполнится мы увидим расшифрованный загрузчик:

Эта программа уже гораздо более похожа на типичный случай, упомянутый выше. В регистры IX и DE загружается значение $4000 ( 16384 ), делается что-то ещё и передаётся управление подпрограмме ПЗУ по адресу $055A (это на несколько байт ниже чем стандартная точка входа в LD-BYTES ). Похоже, такой подход реализует какую-то защиту от копирования, т.к. стандартной процедурой этот файл не загружается и некоторые копировщики его не понимают.

Точка входа в программу

Осталось разобраться, как же вызывается программа после загрузки. Вместо привычного CALL LD-BYTES и JP здесь используется LD SP, XXXX и JP LD-BYTES . Первый (обычныйы) вариант работает следующим образом:

  1. CALL кладёт на стек текущее значение программного счётчика ( PC ).
  2. Управление передаётся вызываемой подпрограмме.
  3. При возврате из подпрограммы ( RET ) значение со стека снимается и происходит переход в вызывающую программу.

Почему здесь сделано иначе? Дело в том, что Pac-Man совместим с ZX Spectrum 16K и занимает абсолютно всю оперативную память (см. размер файла выше). Таким образом, загружаясь, программа затирает собой и загрузчик, и стек, где бы они ни находились. Если бы мы хотели перейти из ПЗУ в загрузчик с использованием стека и далее вызывать загруженную программу через JP , на момент окончания загрузки ни адреса, по которому находится JP , ни самой инструкции в памяти уже не было бы.

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

Итого

В результате изучения загрузчика мы выяснили следующее:

  1. Беззаголовочный файл длиной 16384 байт загружается по адресу 16384 (в экранную область, что в общем-то очевидно в процессе загрузки).
  2. По окончании загрузки указатель стека находится по адресу $5D7C , куда и передаётся управление.

В следующих частях я расскажу, о том как подготовить файлы для записи на диск и написать загрузчик моноблочного файла на ассемблере.

Оцените статью