Обновить
4K+
78
Пётр Советов@true-grue

Программист

83,2
Рейтинг
59
Подписчики
Отправить сообщение

Дело в том, что проект Брус-16 планировался, как источник свежих учебных задач в разных областях: цифровая схемотехника и компьютерные архитектуры, компиляторостроение и низкоуровневое программирование… Ту же загрузку картриджа можно поддержать разными способами. Один из интересных вариантов: добавить второй CPU для задач управления периферией.

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

“И почему” уже предполагает мой ответ, верно? :) Действительно, в текущей реализации так сделать не получится, поскольку GPU в начале кадра забирает к себе описания прямоугольников. Генераторы прямоугольников – просто компараторы, иерархия которых определяет цвет для очередного пикселя.

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

Еще не читал, но -- обязательно! Да, концепция 64 прямоугольников никого не оставляет, похоже, равнодушным. Одни говорят, мол, отличная идея. Другие -- "слишком мало, ничего нарисовать нельзя" :)

Будем ждать продолжения статьи со всеми подробностями о ПЛИС-реализации! Автор обещал в скором времени написать. Я точно помню, что Yosys/NextPNR мы рассматривали для использования.

На мой взгляд, стиль Брус-16, все же, отличается от Atari 2600 (ведь о ней речь?) достаточно сильно. Если мы сравним аппаратную архитектуру этих систем, то отличия станут очевидными. По поводу "упростить архитектуру": TIA у Atari 2600 простой никак нельзя назвать, уж очень она "заковыристая". Повторю, что я писал в статье: не было задачи сделать "ретроконсоль", важнее было добиться минимализма и поучительности решений. VGA с 16-битным цветом, к примеру, сегодня получить не стоит почти ничего, даже на простеньких демо-платах Tang Nano 9K уже есть HDMI-выход. Процессор был сделан 16-битным, потому что 1) и сегодня 16-битные МК вполне актуальны, 2) с 16-битным аппаратным умножителем можно хорошо поупражняться с арифметикой фиксированной точки.

Что касается Alter Ego, мы это не пытаемся скрыть, а, напротив, гордимся портом :) См. внимательнее статью, там об этой игре упоминается. Кстати, в веб-эмуляторе и поиграть в нее можно :)

Я надеюсь, что эмулятор сделать очень несложно. По крайней мере архитектура Брус-16 задумывалась легкой в реализации и в железе, и в софте. Я знаю, что существует эмулятор Брус-16 на Форте. Даже для экзотического языка Umka уже есть реализация :) В учебных целях считаю полезным делать реализации и на больших и маленьких микроконтроллерах!

По поводу схожести результата -- мы ступаем на зыбкую почву... Если сейчас существуют ПЛИС-версии игровых компьютеров и приставок, то это кому-то, определенно, нужно! Посмотрите на все эти MiSTer, Analgue Pocket, ZX Spectrum Next, ... Для некоторых игроков важно, что в "аппаратной" реализации с жестким реальным временем не может быть пропусков кадров и тому подобного.

В случае Брус-16 ПЛИС-версия, повторюсь, служила еще и обоснованием для ряда архитектурных ограничений. К слову, по поводу "дешевле" -- китайские чипы от Gowin, такие как 9K, стоят около 1 тыс. руб или менее.

Спасибо! Вся система работает на частоте VGA-режима (25 МГц). Использовали Gowin EDA. По поводу Fmax, надеюсь, ответит Кирилл :)

На мой взгляд, Don Priestley и его творения заслуживают отдельной большой статьи.

Продолжая список самобытных игр, в тексте была упомянута Knight Lore, а для меня венцом изометрических аркадных приключений стала The Great Escape. Как же она здорово сделана! Что с внешней стороны, что с точки зрения игрового дизайна!

Спасибо за монументальное пижамарамное исследование!

"Во времена оны" купил на кассете Sceptre of Bagdad тоже в русском переводе. Тогда переводы спектрумовских игр были настолько редким явлением, что я даже посчитал игру сделанной в России. Игра, к слову, очень симпатичная, одна из немногих игр этого жанра, которую я прошел без всяких подсказок и обмана и сделал это с удовольствием.

Но знали ли вы, что Sceptre of Bagdad -- на самом деле финская игра? И, судя по всему, это единственный случай коммерческого успеха спектрумовской игры, разработанной в Финляндии. Сделали ее три очень молодых человека, им было не более 18 лет на момент выпуска игры. Здесь можно прочесть некоторые подробности на эту тему: https://frgcb.blogspot.com/2016/12/twofer-14-finnish-special.html

P.S. Мне, кстати говоря, очень нравится самобытное аркадное приключение The Trap Door. Игра явно выбивается из Pyjamarama-канона в значительно большей степени, чем столь беззаветно любимая нашими спектрумистами серия про Dizzy.

Вообще-то, OISC — вовсе не такая уж непрактичная вещь. TTA формально относится к OISC, но имеет свою нишу в области встраиваемых систем.

P.S. Спасибо @vkniза напоминание о TTA.

Да, в принципе, какой угодно. С таблицами и параметризацией команд OISC-процессор достаточно быстро можно превратить в обычную RISC-архитектуру. Проблема разбухания кода решается введением виртуальной машины (внутри виртуальной машины :) Другой вопрос, если у нас серьезные ограничения по быстродействию, как в случае BytePusher, где требуется реальное время.

А еще, к примеру, для этой архитектуры разработали ОС :)

Потому что одного тега тут мало, вместо него есть целый хаб "Ненормальное программирование" :)

Спасибо за такой приятный отзыв от ветерана демосцены!

У Форта, все-таки, будут накладные расходы на выполнение. Но, действительно, почему бы и нет?

Сокобан вспомнился? Видимо, это судьба -- придется Вам написать Сокобан на Форте для BytePusher! :)

Начинающим иногда предлагают написать эмулятор NES или Atari 8-bit (как у Вас на картинке), но это большая работа, особенно когда речь идет об эмуляции тех же спецчипов Atari. К тому же, для исторически значимых "бытовых компьютеров" уже написана куча программ и игр. Другое дело -- BytePusher. Всего 12 (теперь) простеньких демонстраций. Каждый может войти в историю с чем-то хоть немного нетривиальным :)

Для первых двух примеров я бы предложил написать учебный интерпретатор на уровне питоновского AST. Учитывайте при реализации отсутствие в Питоне явных объявлений переменных.

По третьему примеру могу сказать только, что код перед публикацией надо бы проверять на корректность :)

Это неплохая вводная книга, но выбор для издания именно Racket-версиии -- сомнительное решение. Код в версии учебника для Python вместе с match/case выглядит, местами, даже изящнее Scheme. Да и читательский охват был бы шире.

Я, кстати говоря, вовсе не против разработки компиляторов на Racket, это замечательный диалект Scheme, но в рассматриваемом учебнике нет какой-то особенной специфики теории компиляции функциональных языков или LOP (Language-Oriented Programming).

Если вы знакомы с английским, то Python-версию книги можно совершенно свободно скачать здесь: https://github.com/IUCompilerCourse/Essentials-of-Compilation

P.S. А если вас интересуют прикладные аспекты разработки DSL-компиляторов на Python, то могу порекомендовать посмотреть мой недавний доклад: https://www.youtube.com/watch?v=h-TzDPL2nDE

Любопытный проект! Очень хорошо, что нацелились на простоту, минимализм и не используете LLVM.

От постоянных isinstance в коде можно было бы отказаться с помощью match/case (эту конструкцию для компиляторщиков и придумали, я почти не шучу). В этом докладе я агитирую за нее: https://github.com/true-grue/python-dsls

Отечественная версия «Змейки» (хотел сказать, как на телефоне Nokia, но тогда на телефонах еще не было игр)

Ага, а еще -- одна из самых оригинальных российских игр за всю историю.

Информация

В рейтинге
99-й
Откуда
Россия
Зарегистрирован
Активность