Monday, November 28, 2016

Игры, которые играют нами. История Рокмана

Часть первая, 1989 год.

27 лет назад компьютеры были большими, программы - маленькими, cоюз - нерушимым, а я - повернутым на компьютерах школьником-старшеклассником.
Наш школьный компьютерный класс состоял из Агат-7 - неудачных "аналогов" Apple II.
Агат-7
Игр для него было исчезающе мало, поэтому мы писали их сами (что есть хорошо: многие стали программистами).
Я уже написал игру а ассемблере про какого-то робота в лабиринте и ходил гоголем (возняком?), снисходительно поглядывая на одноклассников, искавших на клавиатуре any key.



Так подолжалось, пока в городе не появились первые игровые салоны с невероятными Atari 65xe.
Атари! Инопланетное устройство из будущего. Несбыточная мечта.
Atari 65xe
5 минут игры стоили каких-то невменяемых денег, так что большую часть времени мне приходилось смотреть как играют другие. И что это были за игры! Цвета! Звуки! Полноэкранная анимация и скролл экрана во все стороны.
Самыми популярными играми были "Карате" и "Месть Монтезумы"
Panama Joe: Montezuma Revenge
International Karate



Но в моей личной табели о рангах первое место с превеликим отрывом занимал "Болдер Даш":
Bolder Dash
Игра с человечком-лягушкой Рокфордом, ходящим по подземельям и собирающим алмазы.
Я кончно же сразу захотел сделать эту игру на Агате.
Получилось так:

Графика Агата - 8 цветов, 128х128 точек.
В игре не было скролла экрана, и вдобавок я весьма вольно обошелся с правилами игры.
На заставке не хватало места, поэтому вместо длинного названия Boulder Dash было написано слово Rockman (ага, Рокман - брат Рокфорда, как Луиджи брат Марио).
Как бы то ни было, игру показывали на какой-то выставке в Москве и она была самой технологичной поделкой школьников нашего города.

Через полгода у меня дома появился компьютер Вектор-06ц. Вот такой:
Это был последний класс школы. Нормальные люди сдают экзамены, получают аттестат и готовятся к вступительным экзаменам в институт, а я изучаю ассемблер I8080.
За одну неделю Рокман был переписан с 6502 на 8080. Спрайты персонажей остались без изменений. В логике были исправлены некоторые ошибки. В игру был добавлен новый персонаж - шарик, из только что сделанной игры Xonix.

На носу были вступительные экзамены, и у меня не было так уж много времени на разработку, поэтому в игре так и не появилась прокрутка экрана и другие плюшки.
Итоговая игра выглядела так:

Выход игры сопровождался шпионской историей: У меня не было цветного телевизора (то есть был, но родители, конечно, не разрешили припаять к нему низкочастотный вход), а посмотреть игру в цвете было очень нужно. Выручил дальний знакомый моего друга, который жил в другом городе и имел вектор, подключенный как положено.

Записав на кассету одну из бета-версий игры мы поехали к нему. Радости не было предела: трава была зеленой (в игре, на экране), кирпич - красным. Пара дефектов анимации не в счет.
Джойстик не работал, но просым исправлением пары байт в мониторе он был переключен на клавиатуру. Звук падения алмаза хорошо воспроизводился на колонках (я зациклил его для теста).

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

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

Прошло 28 лет.

Я таки-стал программистом. За плечами написанные издательские системы и документооборот, свои языки программирования и фреймворки, образовательные программы и игры, сайты и софт для телевидения.

Работа, дом, семья, но нет-нет, да возвращаюсь к своей первой школьной игре. Можно ли было написать ее "правильно", чтобы она не отличалась от эталонной реализации на Атари и Коммодоре.
Чтобы скролл экрана бегал шустро и графика не вызывала ощущение школьной поделки.

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

Память "Вектора" устроена так, что для перерисовки экрана нужно скопировать 32 килобайта данных. Производительность процессора, если он будет занимался только копированием графики, обеспечивает рисование от трех до пяти кадров в секунду. Игра в 5 FPS никому не нужна. К тому же из-за особенностей организации видеопамяти перерисовака всего экрана оставляет неприятные артефакты в виде разноцветных ступенек.

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

Получилось так:



Игра дает стабильные 12 кадров в секунду играбельна и проходима.
Вы можете попробовать ее сами.
Лучший на мой взгляд эмулятор Вектора для Windows - virtualvector
Ром-файл игры - rockman16.rom
Играть онлайн http://sensi.org/scalar/ware/896/

Резюме:

Рокман - игра, которая писалась 28 лет.
Что, как мне кажется, может претендовать на рекорд.
К моменту написания платформа, для которой она написана уже 20 лет как фактически мертва.
Я думаю, моя игра будет последней написанной для Вектора. Что тоже является своего рода рекордом.

Благодарности людям, без которых у меня ничего бы не получилось.

  • Донат Темиразов и Александр Соколов -  разработчики оригинального ПК Вектор-06ц.
  • Питер Лиепа - автор оригинальной игры Boulder Dash.
  • Ирина Киселева - преподаватель программирования.
  • Игорь Титарь - автор эмулятора Вектора.
  • Альфред Арнольд - автор кросс-ассемблера.
  • Александ Шабаршин и пользователь Дмитрий2012 форума zx-pk.ru - спасибо за помощь в отладке игры на настоящем Векторе (это удивительно, но все еще сущетвуют работающие экземпляры этого ПК).



1 comment:

  1. Андрей, огромное спасибо за то, что не забываете «Вектор» и написали для него лучший и самый близкий к оригиналу вариант «Болдердаша», а также и за детективную историю «Рокмана». Для поклонников «Вектора» всё это важно и интересно.

    Прошу прощения за своё ошибочное сообщение в одном из комментариев к ролику в Ютубе – понадеялся на своё понимание работы эмулятора VV, но, увы, оказалось, что изменение частоты кадров в нём меняет и частоту процессора, т.е. моё предположение о наличии в Rockman16 запаса по скорости процессора примерно в 1,7 раза, к сожалению, неправильное (думал написать личное сообщение, но не нашёл в вашем ютубовском канале такой возможности).

    Хочу подтвердить, что в конце 80-х Atari в игровых салонах казались почти «волшебными» компьютерами, т.к. в привычных нам школьных ПК (а у меня это были даже не «Агаты», а «Роботроны-1715» без графики) игры были гораздо менее привлекательные. Впрочем, у американцев на обычных для них школьных Apple II тоже игры были далеко не такими, как на дешёвых домашних «Атари» и «Коммодорах». Да и ничего особенно «волшебного» и недостижимого в американских игровых ПК не оказалось. Тот же наш «Вектор» во многом был интереснее – выше разрешения, больше цветов, аппаратное наложение планов частично заменяло спрайты, а вертикальный скроллинг или быстрый программный теоретически позволяли делать многие игры на уровне тех же «Атари» и «Коммодоров» (что вам блестяще удалось в виде «Рокмана16»). С годами выяснилось, что основная масса зарубежных моделей вовсе не были аппаратно похожи на 8-битные Atari и С64, т.е. как и советские ПК, не были специально заточены под игровую графику, что, однако, не мешало делать на них отличные игры. По большому счёту, «Вектор-06Ц» благодаря особенностям видеосистемы (4 битовых плана, программируемая палитра, возможность применения нескольких кадровых буферов, аппаратный вертикальный скролл, гибкий размер видеопамяти) был одним из лучших 8-битных универсальных ПК того времени. Однако, как и у большинства других советских ПК, количество и качество игр для «Вектора», конечно, уступает основным зарубежным моделям, особенно игровым – и это вполне понятно, учитывая объёмы выпуска ПК (у зарубежных – иногда в десятки раз больше), длительность выпуска (у зарубежных – до 2-3 раз дольше), разные экономические условия и традиции (за рубежом с конца 70-х – аркадные автоматы и массово домашние видеоигры).

    ReplyDelete