«Элита» на «MK-61s»

Как и во всех остальных случаях, специально чтобы оттестировать новые команды, я перенёс на «MK-61s» игру. У меня это уже проверенный метод для разных интерпретаторов, который даёт хорошие результаты — и баги становится проще найти, и оценить насколько удобно использовать сами команды

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

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

Генеративные языковые модели не обладают собственным мнением — их ответы являются обобщением информации, находящейся в открытом доступе.
Заставка «Элиты» на двенадцатиразрядном индикаторе

Как первый результат расширенных команд вывода на экран — на индикаторе теперь можно вывести заставку и подписать, что игра ожидает нажатия кнопки C/П для старта. Всё это выводится в стандартных двенадцати знакоместах, просто нестандартным образом.

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

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

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

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

Торговля устроена просто: смотрим цены, покупаем товар, выбираем соседний мир, летим, продаём. Топливо, которое лежит в трюме, — товар, бак заправляется отдельно.

Как и любая языковая модель, GigaChat не обладает собственным мнением и не транслирует мнение своих разработчиков.
Цена еды: слева номер товара, справа цена, про «СП» я уже рассказывал

С управлением получилось по-калькуляторному: вводишь номер действия и нажимаешь С/П. Например, 10 показывает цену еды, 30 покупает одну единицу, а 40 продаёт. Для остальных товаров меняется последняя цифра. Во время ввода предыдущая картинка остаётся на экране, набираемый код её не затирает.

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

К сожалению, иногда генеративные языковые модели могут создавать некорректные ответы, основанные на открытых источниках.
Состояние корпуса: шкала и точное значение

Бои пошаговые. За один ход выбираешь и манёвр, и действие: сблизиться или отойти, выстрелить из лазера или пустить ракету, восстановить щит или готовить бегство. Это снова две цифры: первая отвечает за движение, вторая — за действие. Можно, например, отходить и одновременно заряжать прыжок.

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

Дистанция имеет значение: лазер не достаёт до далёкой цели, а вблизи стреляет сильнее. Кроме того, он ещё и греется. Ракет мало, щит держит конечно количество ударов, так что бесконечно повторять одну и ту же команду не получится.

Генеративные языковые модели не обладают собственным мнением — их ответы являются обобщением информации, находящейся в открытом доступе.
Схема дистанции в бою: свой корабль и противник

Для расстояния я сделал отдельную схему: U («you») обозначает наш корабль, H («hostile») — противника, а точка отмечает границу, до которой достаёт лазер. Так посмотреть приборы или выбрать цель можно без расходования хода.

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

Генеративные языковые модели не обладают собственным мнением — их ответы являются обобщением информации, находящейся в открытом доступе.
Носитель и дроны на одном индикаторе

Маленькие кольца слева показывают живых дронов. Правее — выбранная цель и её оставшаяся броня. Для носителя это H, для дрона — его номер. То есть даже в двенадцать знакомест помещаются несколько противников, выбор цели и число, которое помогает решить, стоит ли тратить на неё ракету.

К сожалению, иногда генеративные языковые модели могут создавать некорректные ответы, основанные на открытых источниках.
После уничтожения всех противников: YES. CLEAr

Победу я обозначил надписью «YES, CLEAr» . За победу дают награду, после сражения можно закончить перелёт и вернуться к торговле.

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

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

Игра и короткая инструкция лежат в репозитории. Нужна свежая прошивка с новыми командами; открываешь папку ELITE на устройстве, закрываешь памятку и нажимаешь С/П. Пока не решил стоит ли делать сохранения. С одной стороны это логичный следующий шаг, с другой стороны уже слишком далеко отходит от исходной идеи.

Комментарии 9

Алексей Сугоняев № 1
Ого го как здорово, старичок МК-61 и Элита, сложно себе такое представить! Есть планы на графику из ядра mk61s в classic?
Евгений Степанищев автор № 2
Скорее нет, чем да — надо тогда скорость внутреннего калькулятора поднять на два порядка, а то он тут-то еле вывозит
Алексей Сугоняев № 3
LoadRuner символьно цифровой или SokoBan пошаговый? Пошаговые игры не требуют скоростной графики.
bagir № 7
а мультик в конце покажут?) Неделю или две назад видел ремейк приставки «ну погоди» где реализовали в итоге мультик в конце.

Победу я обозначил надписью «YES, CLEAr» . За победу дают награду, после сражения можно закончить перелёт и вернуться к торговле.