Скучающие студенты теперь могут наслаждаться Sonic 2 на калькуляторах TI-84 Plus CE благодаря порту

Важные новости

Скучающие студенты теперь могут наслаждаться Sonic 2 на TI-84 Plus Калькуляторы CE благодаря порту

Ретро-интервью Всего несколько недель назад Sonic the Hedgehog 2 был портирован на графический калькулятор TI-84 Plus CE.

Играем в ретро-игры в калькуляторах нет ничего нового: Tetris, Breakout и даже Super Mario Bros 3 имеют созданные фанатами порты для популярного калькулятора Texas Instruments.

Однако до сих пор ни одна игра с участием синего ёжика так и не вышла на маленькие экраны. Пользователь GitHub grubbyplaya, который также использует grubbycoder, портировал Sonic the Hedgehog 2 1992 года на устройство, сделав его первой известной нам платформерной игрой Sonic, доступной теперь для калькулятора. Исходный код и двоичные файлы были выпущены; да, это совершенно неофициально.

На портирование разработчик вдохновился после просмотра видео на YouTube-канале This Does Not Compute об истории игр на калькуляторах. Когда в мини-документальном фильме упоминалось, что некоторые калькуляторы TI используют 8-битные процессоры Zilog Z80 и 16/32-битные процессоры Motorola 68000, это привлекло внимание grubbycoder. Эти чипы также использовались в Sega Master System и Genesis (или Mega Drive для тех, кто находится за пределами Северной Америки), поэтому портирование Sonic с одной из этих консолей на калькулятор TI должно быть довольно интересным занятием.

«Это действительно заинтересовал меня, поскольку я уже знал процессоры, которые использовались в ретро-игровых консолях Sega: Z80 для Master System и M68K для Genesis», — сказал программист в документации к порту.

«Помимо этого, мне очень хотелось создать свою собственную игру-калькулятор или хотя бы портировать уже существующую», — рассказал grubbycoder The Register. «Doom слишком велик, чтобы поместиться в хранилище 84 Plus CE, и это одна из причин, по которой я придерживался игр в диапазоне от 8 до 16 бит. Конечно, позже я исключил любые 16-битные игры. включено.»

Мне очень хотелось создать свою собственную игру-калькулятор или хотя бы портировать существующую

Однако grubbycoder не портировал версию Sonic 2 для Sega Genesis; вместо этого он использовал версию, созданную для 8-битной Sega Master System и Game Gear. Это произошло из-за того, что самые большие калькуляторы TI на базе процессора 68000 не имели достаточно хорошего разрешения экрана для версии игры Genesis на базе 68000.

Напротив, TI-84 Plus CE с чипом Zilog eZ80 (который по сути представляет собой 24-битный Z80 с дополнительными наворотами) имеет дисплей с разрешением 320 на 240 пикселей, что более чем достаточно для 8-битной Master System и Версия Game Gear.

Выбор TI-84 Plus CE также означал, что выбор grubbycoder в отношении того, какие игры Sonic портировать, был ограничен. На сегодняшний день единственной полностью разобранной игрой о Сонике в Мастер-системе является Sonic the Hedgehog 2, так что он выбрал именно ее.

«Большинство других игр, которые действительно нужны людям, таких как Sonic 1 8-bit и Sonic Triple Trouble, требуют лишь частичной дизассемблирования», — говорит grubbycoder. «Если бы я начал их портировать, большая часть моей работы ушла бы на реверс-инжиниринг всей игры».

Портирование даже дизассемблированной игры было непростой задачей

< p>На бумаге кажется, что TI-84 Plus CE идеально подходит для 8-битной игры про Соника. Его eZ80 имеет тактовую частоту 48 МГц, что намного выше, чем у Z80A основной системы с частотой 3,58 МГц, и имеет 256 КБ ОЗУ, что более чем в десять раз больше, чем 8 КБ ОЗУ и 16 КБ видеопамяти главной системы вместе взятые.

Однако эти аппаратные преимущества сводятся на нет состояниями ожидания, которые могут снизить фактическую тактовую частоту eZ80 до 12 МГц; ограничение размера каждого файла, которое вынуждает использовать несколько файлов для любых данных размером более 64 КБ; и полное отсутствие какого-либо консольного ускорения графики. Чтобы заполнить эти пробелы, необходимо использовать дополнительные возможности обработки.

Кроме того, TI-84 Plus CE выйдет из строя, если какой-либо игровой код попытается получить доступ к ожидаемому порту ввода-вывода на консоли Sega — например, если игра попытается связаться с аудиосистемой консоли, оборудованием цветовой палитры или и видеопамять. Эти доступы к вводу-выводу необходимо было перенаправить и преобразовать на калькуляторе, чтобы предотвратить сбой и обеспечить правильную игру Sonic 2.

Кроме того, grubbycoder пришлось использовать ассемблер для калькулятора TI, который отличался от того, который использовался. проектом дизассемблирования Sonic 2, на котором он основывал свой порт, что создавало проблемы с совместимостью, и он не был экспертом ни по Z80, ни по TI-84 Plus CE.

«Поначалу у меня были лишь начальные знания о сборке Z80, а это означало, что я принял несколько действительно глупых решений при работе с некоторыми вещами, которые позже аукнулись мне», — говорит он.

«Как сложность эмуляции функций Мастер-системы росла, и в конечном итоге у меня были знания среднего уровня о том, как работает TI-84 Plus CE», — рассказал нам grubbycoder.

Сборка игры из дизассемблированного исходника была первой. задачу, и хотя большую часть этой работы выполнил дружественный к TI ассемблер SPASM-ng, grubbycoder все равно пришлось просмотреть 20 000 строк кода, чтобы убедиться, что все совместимо с TI-84 Plus CE.

Как оказалось, обойти доступ к вводу-выводу было не так уж сложно, поскольку аппаратное обеспечение калькулятора поддерживает запросы ввода-вывода, отображенные в памяти. Порт просто нужно было настроить так, чтобы запросы его порта ввода-вывода направлялись в места ввода-вывода, отображенные в памяти калькулятора, с некоторым связующим кодом, который действовал бы как уровень совместимости. Игра думает, что работает и взаимодействует с оборудованием Sega, но на самом деле взаимодействует с калькулятором TI.

«В основном это было просто незначительное неудобство», — говорит grubbycoder, отмечая, что цветовые палитры видео сложнее всего реализовать на уровне аппаратной трансляции.

К сожалению, были две части порта, которые действительно не могли работать так, как в Главной системе. Во-первых, Мастер-система использовала банкирование ПЗУ для замены и извлечения фрагментов данных карты памяти по мере необходимости, поскольку консоль старой школы могла одновременно адресовать только 64 КБ данных, а игра намного больше. На TI-84 Plus CE это происходит относительно медленно, поскольку он использует флэш-память для копирования данных в ОЗУ, когда это необходимо, поскольку не было достаточно места, даже с 256 КБ ОЗУ, чтобы поместить в память все отдельные банки одновременно. .

Другой проблемной частью был рендерер, поскольку у TI-84 Plus CE нет аппаратного ускорения графики, о котором можно было бы говорить. 16-битная инструкция умножения, присутствующая в eZ80, помогла ускорить построение спрайтов и тайлов в программном обеспечении с точки зрения расчета местоположения графики.

Тем не менее, обработка тайлового фона была непростой задачей. Аппаратное обеспечение консоли Sega обеспечивает широкую поддержку для быстрого расположения и прокрутки уровней Соника, и это ускорение необходимо было эмулировать на калькуляторе eZ80.

Скучающие студенты теперь могут наслаждаться Sonic 2 на калькуляторах TI-84 Plus CE благодаря порту

Скриншот графического программного обеспечения для рендеринга порта, находящегося в стадии разработки

Grubbycoder реализовал это с помощью кадрового буфера размером 56 КБ в видеопамяти TI и системы кэширования, которая сократила время рендеринга фрагментов в восемь раз, что позволило действительно играть в игру.

Скучающие студенты теперь могут наслаждаться Sonic 2 на калькуляторах TI-84 Plus CE благодаря порту

Запуск порта и получение вступительного рендеринга

Хоть это и не идеальное преобразование, но в целом это классный программный проект, и он даже не сильно отличается от оригинальной версии. «Технически порт 84 Plus CE сохраняет от 90 до 95 процентов исходного 8-битного кода Sonic 2», — говорит grubbycoder. 

Звука нет, так как в калькуляторе нет динамиков, а удаление аудиокода и материалов сделало игру как минимум меньше. Частота кадров ниже, чем хотелось бы владельцам Master System со скоростью 60 FPS. «На базовых компьютерах 84 Plus CE, которые эмулировались при тестировании, игра работает со скоростью около 53 процентов при нормальной сборке», — говорит разработчик.

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

«Замедление почти полностью происходит из-за ПЗУ. банковское дело, в частности обмен банками, содержащими логику для Соника, всех Бадников и всех трюков в игре», — говорит grubbycoder.

«Если бы у калькулятора не было состояний ожидания, то это вообще не было бы проблемой, но другие решения включают в себя преобразование этих банков для работы в 24-битном режиме 84 Plus CE, чтобы к ним можно было просто перейти вместо загрузки. их всех одновременно.»

Но технически, если один очень скучающий студент, которому нужно возиться только с калькулятором, хочет пройти Sonic the Hedgehog 2 от начала до конца и будет терпеть несколько плохую частоту кадров, это очень возможный. Хотя в настоящее время калькуляторы высокого класса, оснащенные процессорными ядрами Arm, такие как Nspire, могут запускать настоящие игры Genesis и могут быть лучшим вариантом для тех, кто ищет лучший игровой опыт с калькулятором, говорит grubbycoder.

Тем не менее. разработчик планирует добавить больше игр про Соника в TI-84 Plus CE 2015 года. «В будущем я хотел бы попробовать переделать еще несколько малоизвестных игр про Соника для калькулятора», — говорит он.

«Это будут не всем знакомые платформеры, а некоторые ЖК-игры от Tiger Electronics и серия игр Sonic Adventure Gamebook — это то, что мне больше всего интересно переделать». ®

Новости сегодня

Последние новости