Сводный список записей блога

--->>>> Сводный список записей блога <<<<---

13 декабря 2022

Тетрис-машина. Начало.

Все статьи по данной игровой консоли - по тегу 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!

Ну и питончик за полчасика на коленке сляпанный.

------------------

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

Хотя задачка компилятора с синтаксическим анализатором - интересная. 
А динамическое распределение памяти для строк и массивов со своим механизмом очистки мусора - заслуга коллеги. Идея, стартовая реализация - её. Хотя тут уже сложно делить - это моё, это не моё. Баг сборщика мусора вместе ловили.


10 комментариев:

  1. Эта идея у вас давно мелькала.Я даже дисплейчик такой взял, он смирно ждал своего часа.Понятно, что великой потребности в этой игрушке нет.Чисто природное любопытство и интерес к вашим разработкам.
    STM32F411 предполагается на платке или отдельным МК?
    Нужно успеть заказать до великого китайского Нового года, который аж на два месяца.

    ОтветитьУдалить
    Ответы
    1. у меня они есть и в виде МК, и на платках. STM32F411CEU6.
      Скорее всего , будет на платке. Ибо я еще не паял такие корпуса.

      Удалить
  2. Такие отладочные платы есть и в местном магазине, по цене Али. Если будет именно она- то лучше заранее взять.

    ОтветитьУдалить
  3. Хорошая идея с интерпретирующей машинкой. Андрей, может быть имеет смысл обратить внимание на ESP32 с его огромной памятью и хорошими скоростями, а также небольшой ценой и хорошей доступностью на али? Я цеплял этот дисплей под ардуйней, даже там и то всё довольно шустро бегает..

    ОтветитьУдалить
    Ответы
    1. О, пропажа. Прошло ровно 4 месяца молчания ...
      А про ЕСП - нет. Не лежит у меня пока душа к ней.
      Тут на знакомой платформе б сделать..... А не тыкать незнакомую. Когда мы общались - я говорил, кажется, что ЕСП пока не хочу....

      Удалить
  4. Ковид, знаете ли... Начинаю входить в ритм, вот как раз прицепил 240*240 к есп32. Меня привлёк большой объем ПЗУ, для моих целей нужен от 1 МБ, а стм32 с таким флешем стоит огого

    ОтветитьУдалить
  5. У меня вся подготовка прошла. Дисплей был, а отладочная плата STM только пришла с Али. Не хотелось бы кардинальных изменений. С интересом жду.

    ОтветитьУдалить
    Ответы
    1. Если вы про ЕСП32 - то нет, данная версия будет на СТМ.
      В будущем я куплю еспшки на-поизучать и поиграться. Может и на ЕСП можно будет мигрировать консольку....

      Удалить
  6. Думал, вы коллегиально быстрее создадите давно задуманное.Что то не получается?

    ОтветитьУдалить
    Ответы
    1. Ждем платы из Китая. Пока нет смысла продолжать на макетке. Основное работает.

      Удалить

======= !!! ВНИМАНИЕ !!! ======================================================================
Гугл умный и боится спама. Поэтому иногда ваши комментарии Гугл отправляет мне на премодерацию. Отправлять или нет - решаю не я, а алгоритмы Гугла. Если ваш комментарий не появился сразу, значит я получу уведомление и опубликую ваш комментарий через некоторое время. Я стараюсь это делать достаточно оперативно.