Все статьи по данной игровой консоли - по тегу G-BASIC
Изображение из сети |
Достаточно давно, еще до войны (точнее, до активной фазы войны), в прошлом (а может даже позапрошлом) году купил я мелкий дисплейчик. полтора дюйма, 240*240 пикселей. Зато IPS.
С какой то непонятной неоформленной мыслью прикрутить к этому дисплею маленький контроллер , 4-6 кнопок, оформить это в виде брелка-переростка или недоконсольки и написать на это дело несколько таймкиллерных игрушек.
Типа Тетрис, Xonix, ходилка по лабиринту... Может 2D-гоночки какие то...
И крутилась эта мысль в подсознании фиг знает сколько времени.
Ну и хотелось, что б это было не на телефоне, а отдельным таким девайсом.
Но мучила меня мысль, что эта фигня, назовем её тетрис-машина, будет совершенно проприетарная. И даже если я ее опубликую, то это будет некий черный ящик, в который добавить новую игру смогу только я... Или кто то, кто сможет разобраться в исходниках. Если я их выложу.
Ну и это все крутилось где то в подсознании очень долго и была куча вопросов. Какой контроллер взять. Какие игры писать. Как сделать ,что б проект был расширяемый.
И тут я в телеге разговорился с одной гикнутой личностью, нашедшей меня на радиокоте, которая и за паяльник не боится взяться, да и паять умеет. И программировать. Вобщем, чем то сильно похожа на меня. И обсуждая разные идеи, коснулись и идеи тетрис-машины.
И подкинула эта личность мне одну мысль. Тетрис-машина должна быть .... без тетриса. Но с SD-карточкой. А на этой карточке уже должны быть сохранены игрушки.
Написанные на каком то простом языке высокого уровня. А тетрис-машина должна брать текст с карточки и начинать исполнять.
А что б было не так медленно - компилировать эти тексты в некий байт-код.
И таким простым языком высокого уровня оказался BASIC.
Точнее, это получился некий странный диалект GWBasic'a, но с измененным синтаксисом, по мотивам других языков.
Без нумерации строк, с метками для переходов.
Единственное - меня в бейсике всегда бесил однострочный if. Потому в нашем диалекте он многострочный с обязательным end if.
И несколько кастрированы (по сравнению с GW_Basic'ом) операции с файлами.
Можно открыть файл, прочитать строку, записать строку.... Или считать в массив блок данных. Или записать данные из массива. А всяких структурных форматных вариантов для данных - нет.
А в остальном - все тот же тупой школьный бейсик. С поддержкой текста (с разными размерами шрифтов) и графики. Включая возможность загрузки спрайтов с флешки.
Ну и графика слегка расширена до возможностей 16-битного цвета, который поддерживается этим мелким дисплеем.
Можно рисовать 16-битным цветом, можно отрисовать картинку из файла, можно загрузить картинку в память и потом выводить ее, как спрайт....
Есть и ограничения по графике, связанные с невозможностью простым способом быстро читать данные из дисплея. Соответственно, отломалась функция заливки.
Пока что готов консольный компилятор бейсика в байт-код. Для ПК.
Так же готова черновая версия выполнятора/отладчика, тоже для ПК.
Возможно, будет еще какая то простейшая IDE. А может и не будет - в сети достаточно свободных (и не очень) продвинутых редакторов с возможностью прикручивания подсветки синтаксиса и внешнего компилятора.
А что, собственно, сама тетрис-машина?
А там будет все то же самое, но без редактора и отладчика. С флешки можно будет запускать как бейсик-приложения - они будут компилироваться прямо на тетрис-машине, так и скомпилированные ранее байт-кодовые приложения.
Да и с контроллером мы уже определились. STM32F411. 512 кб флеша, 128 кб ОЗУ.
Этот контроллер доступен у китайцев по 5-6 баксов, уже на переходной платке.
И можно будет спокойно выделить по 60 кб ОЗУ на программу (байт-код) и на данные.
Плюс возможность загружать картинки с флешки и (надеюсь) шустрое выполнение кода.
--------------------
Hello, world Snake!
Ну и питончик за полчасика на коленке сляпанный.
------------------
Я надеюсь, что мы с Пушистой таки допилим этот проект до конца. Не знаю только, зачем :)
Ну чем бы гики не тешились - абы не вешались.
Хотя задачка компилятора с синтаксическим анализатором - интересная.
А динамическое распределение памяти для строк и массивов со своим механизмом очистки мусора - заслуга коллеги. Идея, стартовая реализация - её. Хотя тут уже сложно делить - это моё, это не моё. Баг сборщика мусора вместе ловили.
Эта идея у вас давно мелькала.Я даже дисплейчик такой взял, он смирно ждал своего часа.Понятно, что великой потребности в этой игрушке нет.Чисто природное любопытство и интерес к вашим разработкам.
ОтветитьУдалитьSTM32F411 предполагается на платке или отдельным МК?
Нужно успеть заказать до великого китайского Нового года, который аж на два месяца.
у меня они есть и в виде МК, и на платках. STM32F411CEU6.
УдалитьСкорее всего , будет на платке. Ибо я еще не паял такие корпуса.
Такие отладочные платы есть и в местном магазине, по цене Али. Если будет именно она- то лучше заранее взять.
ОтветитьУдалитьХорошая идея с интерпретирующей машинкой. Андрей, может быть имеет смысл обратить внимание на ESP32 с его огромной памятью и хорошими скоростями, а также небольшой ценой и хорошей доступностью на али? Я цеплял этот дисплей под ардуйней, даже там и то всё довольно шустро бегает..
ОтветитьУдалитьО, пропажа. Прошло ровно 4 месяца молчания ...
УдалитьА про ЕСП - нет. Не лежит у меня пока душа к ней.
Тут на знакомой платформе б сделать..... А не тыкать незнакомую. Когда мы общались - я говорил, кажется, что ЕСП пока не хочу....
Ковид, знаете ли... Начинаю входить в ритм, вот как раз прицепил 240*240 к есп32. Меня привлёк большой объем ПЗУ, для моих целей нужен от 1 МБ, а стм32 с таким флешем стоит огого
ОтветитьУдалитьУ меня вся подготовка прошла. Дисплей был, а отладочная плата STM только пришла с Али. Не хотелось бы кардинальных изменений. С интересом жду.
ОтветитьУдалитьЕсли вы про ЕСП32 - то нет, данная версия будет на СТМ.
УдалитьВ будущем я куплю еспшки на-поизучать и поиграться. Может и на ЕСП можно будет мигрировать консольку....
Думал, вы коллегиально быстрее создадите давно задуманное.Что то не получается?
ОтветитьУдалитьЖдем платы из Китая. Пока нет смысла продолжать на макетке. Основное работает.
Удалить