Дело в том, что проект Брус-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 тыс. руб или менее.
На мой взгляд, 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-процессор достаточно быстро можно превратить в обычную RISC-архитектуру. Проблема разбухания кода решается введением виртуальной машины (внутри виртуальной машины :) Другой вопрос, если у нас серьезные ограничения по быстродействию, как в случае BytePusher, где требуется реальное время.
Начинающим иногда предлагают написать эмулятор NES или Atari 8-bit (как у Вас на картинке), но это большая работа, особенно когда речь идет об эмуляции тех же спецчипов Atari. К тому же, для исторически значимых "бытовых компьютеров" уже написана куча программ и игр. Другое дело -- BytePusher. Всего 12 (теперь) простеньких демонстраций. Каждый может войти в историю с чем-то хоть немного нетривиальным :)
Для первых двух примеров я бы предложил написать учебный интерпретатор на уровне питоновского AST. Учитывайте при реализации отсутствие в Питоне явных объявлений переменных.
По третьему примеру могу сказать только, что код перед публикацией надо бы проверять на корректность :)
Это неплохая вводная книга, но выбор для издания именно Racket-версиии -- сомнительное решение. Код в версии учебника для Python вместе с match/case выглядит, местами, даже изящнее Scheme. Да и читательский охват был бы шире.
Я, кстати говоря, вовсе не против разработки компиляторов на Racket, это замечательный диалект Scheme, но в рассматриваемом учебнике нет какой-то особенной специфики теории компиляции функциональных языков или LOP (Language-Oriented Programming).
P.S. А если вас интересуют прикладные аспекты разработки DSL-компиляторов на Python, то могу порекомендовать посмотреть мой недавний доклад: https://www.youtube.com/watch?v=h-TzDPL2nDE
Любопытный проект! Очень хорошо, что нацелились на простоту, минимализм и не используете LLVM.
От постоянных isinstance в коде можно было бы отказаться с помощью match/case (эту конструкцию для компиляторщиков и придумали, я почти не шучу). В этом докладе я агитирую за нее: https://github.com/true-grue/python-dsls
Дело в том, что проект Брус-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, но тогда на телефонах еще не было игр)
Ага, а еще -- одна из самых оригинальных российских игр за всю историю.