Насколько я вижу, fantasy console -- это что-то вроде игры в создание игр старого-доброго вида, жанра... Это развлечение, отдых. Поэтому от реального процесса разработки взята самая нескучная часть.
Так-то для суровых демосценеров и сочувствующих есть тот же BytePusher. Но это уже сложно, это уже вызов! И, видимо, неинтересно, поскольку никакого BytePusher не было 1) в железе, 2) в 80-х :)
Очень хорошая история получилась! Отдельное спасибо за высокую оценку проекта Брус-16 :) Кстати, до Бруса был rein, интересная виртуальная игровая платформа, более близкая к PICO-8. Я там занимался звуковой подсистемой :)
Все основные элементы присутствуют: Архитектура, микроархитектура, инструментальное ПО, системное ПО... Но важно не только "что", но и "как" рассказать, а также "зачем". Брус-16 задуман, как проект начального уровня, который учит программно-аппаратному проектированию специализированных систем и ускорителей. Поэтому, скажем, уровень ОС на затрагивается, а маленький DSL-компилятор обошелся без LLVM.
Спасибо за добрые слова! Кстати, "автоматическая генерация ISA" имеет и более серьезные применения. Надеюсь, в ближ. будущем на эту тему сделаю доклад! :)
Кстати, по части интересного FM-звучания я бы предложил послушать музыку небезызвестного Тима Фоллина для игры Time Trax. Это не OPL, а OPN2, но, тем не менее.
Послушайте и скажите теперь, что FM хуже этих ваших AY/SID! :)
Большое спасибо! А ведь я не подозревал, что JCH -- настолько интересная личность! Обнаружил сейчас его блог и поразился, как он все свое компьютерно-музыкальное прошлое запротоколировал. Хронология по месяцам! Действительно, он много занимался портированием музыки с C64, прежде чем написать свой редактор. Меня умилила такая строка:
1996 Feb …PC Stopped coding assembler (last bit of code was for the SirFace System GUI)
А еще в блоге нашлись "компьютерные хроники" на 5 частей. В завершающей части как раз подробно рассказывается об эпохе Adlib. Завершающие абзацы очень грустно читать, поскольку это связано с несостоявшимися мечтами сочинять музыку:
I even started taking lessons from an old lady down the street and I did learn to crawl scales with a spidery hand, but actually learning and performing a tune was hard and my patience was not exemplary. Then one day, one of my newbie lessons ended with a child standing in the doorway. She was next in line and she was – 10 years? Maybe 11? She sat down in front of the piano and immediately played a wonderful tune that was vastly superior to my own level. I must admit that I lost quite some heart that day. Not long after, I quit the training and admitted to myself that it was too late.
Впрочем, жизнеутверждающие нотки в тексте все же присутствуют:
My days as a composer were over. (Update: But only for 25 years.)
Отличная статья, спасибо! До сих пор помню демо-композиции в комплекте с редактором Edlib. Очень впечатляющее, почти "студийное" звучание! К слову, я заметил, что есть категорические нелюбители FM-звука, которым не по душе все это стерильно-металлическое богатство. Думаю, их даже звучание настоящего студийного DX7 не впечатлит :)
На мой взгляд, идеал это ритм-секция (барабаны и бас) на FM, а остальное -- на каком-нибудь SID. Увы, муз. чипов с такой архитектурой в старые времена так и не появилось.
Кстати, у Yamaha реализация FM-синтеза достаточно далека от исходных идей Чоунинга. В реальности это фазовая модуляция, с обратной связью, задержанной на сэмпл и с аппаратной реализацией без единого умножения. См., например, здесь.
Минусы ставил не я! Более того, изначально планировал, что будет дополнительная учебная задача по реализации Брус-16 на МК. Там ведь тоже можно отказаться от внешней видеопамяти и использовать только SRAM чипа.
Чего вы ругаетесь? :) Повторюсь, это статья вводная. В заявленной второй части будет справочно-техническая информация о подсистемах Брус-16 (туда и попадет "таинственный" SPU), а также описание инструментария с примерами кода.
Но вот желаемого "прикрутить", увы, не будет. Брус-16 пока останется на базовом архитектурном уровне и с инструментами-заготовками. Потому что его целевая аудитория это не вы (как я понял по тексту, человек далекий от системного программирования), а, в первую очередь, студенты, которым мы даем учебные задачи по развитию Бруса.
В любом случае, я рад, что хоть и в такой эмоциональной форме, но интерес к проекту проявляете :)
Аббревиатуры в духе GE, LTU, … действительно являются стандартом для документации на RISC-V. В статье упоминается, откуда тут взялся RISC-V. Что такое MR – сначала это был memory register, а затем стал memory result’ом :)
По поводу главного вопроса. Я думаю, от этой вводной статьи и странно было ожидать справочно-учебной информации. Документация на ISA интересна, кстати, в том смысле, что представляет пример воплощения принципа SSoT (Single Source of Truth), поскольку генерируется автоматически.
Мы рассказывали в прошлом семестре о Брус-16 на лекциях и семинарах. Для увлеченных Брусом был создан телеграм-чат. Показывали архитектуру наглядно, воссоздавая ее вместе со студентами. Начиная с совсем упрощенного варианта под названием “нано-Брус”. То есть студенты знакомились с деталями в процессе разработки простейших эмуляторов. В результате любознательные студенты по собственной инициативе переписали эмулятор уже полноценного Брус-16 для разных языков программирования, сделали ряд интересных доработок компилятора, создали графический отладчик с функцией time travel. Ну а автор ПЛИС-версии даже выступил на конференции ИСП РАН (isprasopen) :)
Но, действительно, Брус-16 пока сильно не хватает обучающих онлайн-материалов в духе nand2tetris (раз уж я вспомнил об этом проекте в начале статьи). Я очень надеюсь, что учебник в том или ином виде, все же, появится!
В принципе, конечно. Например, перезаписывать их параметры для каждой строки экрана. Это, кстати, к вопросу о модификациях архитектуры Брус-16. Я не думаю, что кто-то нуждается в моем одобрении на такие вещи, поэтому скажу, что приветствую их! :)
К слову, SPU в Брус-16 получился таким во многом благодаря нашему обсуждению звука. Я запомнил высказанную мысль, что нужно что-то синусоидальное-гладкое, как демо/чиптюнах новой школы :) И еще вовремя вспомнил свою же заметку по поводу Atari AMY.
Дело в том, что проект Брус-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 тыс. руб или менее.
Насколько я вижу, fantasy console -- это что-то вроде игры в создание игр старого-доброго вида, жанра... Это развлечение, отдых. Поэтому от реального процесса разработки взята самая нескучная часть.
Так-то для суровых демосценеров и сочувствующих есть тот же BytePusher. Но это уже сложно, это уже вызов! И, видимо, неинтересно, поскольку никакого BytePusher не было 1) в железе, 2) в 80-х :)
Очень хорошая история получилась! Отдельное спасибо за высокую оценку проекта Брус-16 :)
Кстати, до Бруса был rein, интересная виртуальная игровая платформа, более близкая к PICO-8. Я там занимался звуковой подсистемой :)
Все основные элементы присутствуют: Архитектура, микроархитектура, инструментальное ПО, системное ПО... Но важно не только "что", но и "как" рассказать, а также "зачем". Брус-16 задуман, как проект начального уровня, который учит программно-аппаратному проектированию специализированных систем и ускорителей. Поэтому, скажем, уровень ОС на затрагивается, а маленький DSL-компилятор обошелся без LLVM.
Спасибо за добрые слова! Кстати, "автоматическая генерация ISA" имеет и более серьезные применения. Надеюсь, в ближ. будущем на эту тему сделаю доклад! :)
Кстати, по части интересного FM-звучания я бы предложил послушать музыку небезызвестного Тима Фоллина для игры Time Trax. Это не OPL, а OPN2, но, тем не менее.
Послушайте и скажите теперь, что FM хуже этих ваших AY/SID! :)
https://www.youtube.com/watch?v=y45S-a-AaTQ&list=PLPAbo-cOSKYw1jpD7Qgpxe3IdvQwEB7-8&index=1
Большое спасибо! А ведь я не подозревал, что JCH -- настолько интересная личность! Обнаружил сейчас его блог и поразился, как он все свое компьютерно-музыкальное прошлое запротоколировал. Хронология по месяцам! Действительно, он много занимался портированием музыки с C64, прежде чем написать свой редактор. Меня умилила такая строка:
1996 Feb …PC Stopped coding assembler (last bit of code was for the SirFace System GUI)
А еще в блоге нашлись "компьютерные хроники" на 5 частей. В завершающей части как раз подробно рассказывается об эпохе Adlib. Завершающие абзацы очень грустно читать, поскольку это связано с несостоявшимися мечтами сочинять музыку:
I even started taking lessons from an old lady down the street and I did learn to crawl scales with a spidery hand, but actually learning and performing a tune was hard and my patience was not exemplary. Then one day, one of my newbie lessons ended with a child standing in the doorway. She was next in line and she was – 10 years? Maybe 11? She sat down in front of the piano and immediately played a wonderful tune that was vastly superior to my own level. I must admit that I lost quite some heart that day. Not long after, I quit the training and admitted to myself that it was too late.
Впрочем, жизнеутверждающие нотки в тексте все же присутствуют:
My days as a composer were over. (Update: But only for 25 years.)
Отличная статья, спасибо! До сих пор помню демо-композиции в комплекте с редактором Edlib. Очень впечатляющее, почти "студийное" звучание! К слову, я заметил, что есть категорические нелюбители FM-звука, которым не по душе все это стерильно-металлическое богатство. Думаю, их даже звучание настоящего студийного DX7 не впечатлит :)
На мой взгляд, идеал это ритм-секция (барабаны и бас) на FM, а остальное -- на каком-нибудь SID. Увы, муз. чипов с такой архитектурой в старые времена так и не появилось.
Кстати, у Yamaha реализация FM-синтеза достаточно далека от исходных идей Чоунинга. В реальности это фазовая модуляция, с обратной связью, задержанной на сэмпл и с аппаратной реализацией без единого умножения. См., например, здесь.
Минусы ставил не я! Более того, изначально планировал, что будет дополнительная учебная задача по реализации Брус-16 на МК. Там ведь тоже можно отказаться от внешней видеопамяти и использовать только SRAM чипа.
На всякий случай, в Releases на github лежит скомпилированный эмулятор для Windows/Linux (x64).
Чего вы ругаетесь? :) Повторюсь, это статья вводная. В заявленной второй части будет справочно-техническая информация о подсистемах Брус-16 (туда и попадет "таинственный" SPU), а также описание инструментария с примерами кода.
Но вот желаемого "прикрутить", увы, не будет. Брус-16 пока останется на базовом архитектурном уровне и с инструментами-заготовками. Потому что его целевая аудитория это не вы (как я понял по тексту, человек далекий от системного программирования), а, в первую очередь, студенты, которым мы даем учебные задачи по развитию Бруса.
В любом случае, я рад, что хоть и в такой эмоциональной форме, но интерес к проекту проявляете :)
Аббревиатуры в духе GE, LTU, … действительно являются стандартом для документации на RISC-V. В статье упоминается, откуда тут взялся RISC-V. Что такое MR – сначала это был memory register, а затем стал memory result’ом :)
По поводу главного вопроса. Я думаю, от этой вводной статьи и странно было ожидать справочно-учебной информации. Документация на ISA интересна, кстати, в том смысле, что представляет пример воплощения принципа SSoT (Single Source of Truth), поскольку генерируется автоматически.
Мы рассказывали в прошлом семестре о Брус-16 на лекциях и семинарах. Для увлеченных Брусом был создан телеграм-чат. Показывали архитектуру наглядно, воссоздавая ее вместе со студентами. Начиная с совсем упрощенного варианта под названием “нано-Брус”. То есть студенты знакомились с деталями в процессе разработки простейших эмуляторов. В результате любознательные студенты по собственной инициативе переписали эмулятор уже полноценного Брус-16 для разных языков программирования, сделали ряд интересных доработок компилятора, создали графический отладчик с функцией time travel. Ну а автор ПЛИС-версии даже выступил на конференции ИСП РАН (isprasopen) :)
Но, действительно, Брус-16 пока сильно не хватает обучающих онлайн-материалов в духе nand2tetris (раз уж я вспомнил об этом проекте в начале статьи). Я очень надеюсь, что учебник в том или ином виде, все же, появится!
В принципе, конечно. Например, перезаписывать их параметры для каждой строки экрана. Это, кстати, к вопросу о модификациях архитектуры Брус-16. Я не думаю, что кто-то нуждается в моем одобрении на такие вещи, поэтому скажу, что приветствую их! :)
Спасибо за высокую оценку!
К слову, SPU в Брус-16 получился таким во многом благодаря нашему обсуждению звука. Я запомнил высказанную мысль, что нужно что-то синусоидальное-гладкое, как демо/чиптюнах новой школы :) И еще вовремя вспомнил свою же заметку по поводу Atari AMY.
Дело в том, что проект Брус-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, надеюсь, ответит Кирилл :)