LINUX.ORG.RU
ФорумTalks

Я сделал свой программируемый тетрис с двумя ядрами, цветным дисплеем и понятным API

 , , ,


0

1

Недавно я прикупил себе RPi Pico поиграться и посмотреть что же за МК такой они сделали. И из этого я сделал собственный программируемый тетрис, аж с 264кб ОЗУ, 2-мя ядрами 100мгц Cortex-M3, работающий от АКБ.

Мои читатели проявили некоторый интерес к гаджету и хотят заказать сборку по себестоимости для того, чтобы попрогать под такой чудо-гаджет (себестоимость - около 1.000 рублей).

Завтра выйдет полноценная статья о его разработке, но если вдруг кому интересно, можем пообсуждать здесь идеи DIY-консолей и обсуждение перенести на завтра)



Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от peregrine

Дружище, ты даже не видел что под капотом, а уже берешься рассуждать)

Я же не использую все 133 мгц в упор и под капотом есть некоторые оптимизации, например непрозрачные спрайты можно блиттить просто копируя сканлайны через memcpy (а то и вообще отдавая на откуп DMA - получится асинхронщина). Более того, клок я буду занижать до 60-70мгц (сейчас слишком высокое потребление). Я не могу посчитать точную нагрузку на ЦПУ, но думаю она в районе 10-15%.

И даже после этого, у меня остается еще очень много ресурсов (порядка 100кб ОЗУ, 3.8 мегабайт флэши), в среднем, 100-150 спрайтов одновременно на экране консоль должна потянуть без проблем.

Кроме того, я специально написал, что консоль проектируется не конкретно под тетрис/змейку, а под написание самопальных игрушек, с довольно богатой графикой. Не исключено, что в будущем добавится альфа-блендинг, аффинные трансформации (поворот/skew и.т.п), возможно будет простенький 3D-растеризатор с FFP-пайплайном на втором ядре.

Так что поверь, я брал RP2040 не потому что я веб-макака, которая хочет в геймдев, а потому что это интересный МК, который мне лично хотелось пощупать и потому что мне хотелось уйти от концепции этих бесконечных эмуляторных консолей без своих нативных игр.

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

спрайты (на микроконтроллере)

🤦🏼‍♂️

Я не могу посчитать точную нагрузку на ЦПУ

🤦🏼‍♂️

веб-макака

🤦🏼‍♂️

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Если хочешь посмотреть действительно на «фигак-фигак», глянь на «портативные» консоли людей, которые берут малинку, фигачат к ней HDMI дисплей через скейлер (который сам по себе жрущий), накатывают линух, ретропай и говорят - моя консоль. И для кого-то это тоже достижения и кайф, потому что человек возможно не обладает навыками запила своей консоли с нуля, но смог собрать что-то свое)

Я знаю ток одного оч чсвшного чувака, который пилит везде Bare-Metal и на весьма экзотических железках (DSP) - Gradius.

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

Я видел игрушку Zero Sievert которую ещё и в стиме продают... Меня уже ничем не напугать, даже пиксельной игрой которая требует навороченную rtx видяху, т.к. на ноутбучной 3070 RTX она лагает, ей надо 3080 пекичную чтоб не лагала. При том что графоний и число летящей фигни там меньше чем у старого the binding of isaac примерно с такой же графикой который на картошка пк работал не смотря что там флеш был для графики, который сам по себе лагуч.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

У меня есть ощущение, что ни ты, ни тот чел не совсем понимаете что такое спрайты)

Спрайт - это точно такая-же картинка/текстура/битмапа, имеющая определенный размер. Он необязательно должен быть прозрачным, необязательно должен быть фиксированного размера, необязательно должен хранится в атласе.

Только ты под эталонами скорее всего имеешь ввиду NES/SMD, где «ну проц же 2-3мгц всего и ничо, умудрялись делать» - а там фактически отрисовкой графики занимался отдельный ASIC, называемый PPU. В спеке, насколько мне известно, графику рисовать мог как проц, так и ULA через хардварные спрайты (либо я с коммодором путаю).

«Современный» (ну как современный, с 90х еще) подход в отрисовке 2D-графики называется блиттингом - как раз таки копированием сканлайнов в фреймбуфер.

Ну а действительно современный подразумевает то, что 2D - частный случай 3D и проще выводить графику в виде квадов, на которые можно без проблем натянуть фрагментные шейдеры и рисовать что хочешь и как хочешь :)

Про фейспалм насчет подсчета нагрузки не понял. У меня же еще нет профайлера как такового, но вполне возможно что позже появится :)

monobogdan1337
() автор топика
Последнее исправление: monobogdan1337 (всего исправлений: 4)
Ответ на: комментарий от monobogdan1337

Я понимаю что это и зачем оно надо на ПК, но не понимаю для чего это на дебиляторе/дебильничке, задача которого исторически была стоить как можно меньше, чтоб приносить как можно больше прибыли. Хотя у нас наверно просто разный взгляд на челлендж в разработке такой штуке. Тебе просто что-то рабочее хочется, а я упарывался бы в то чтоб оно из говна и палок нормально работало, как деды завещали.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

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

Мне откровенно не нравится поделие ТСа, но ваша критика - это просто маразматический трэш.

bo4ok
()
Ответ на: комментарий от monobogdan1337

Про фейспалм насчет подсчета нагрузки

Он хочет, чтобы ты такты считал

bo4ok
()
Ответ на: комментарий от bo4ok

это ж отвратительно, зачем пытаться воспроизвести это, когда за те же деньги можно нормально.

Отвратительно - это современный игрострой.

PPP328 ★★★★★
()
Ответ на: комментарий от thesis

гэймплэй на дне, что-то играбельное скорее исключение, дро-ни разной вкусовой покраски во все поля

это реалии современного игростроя

Morin ★★★★★
()
Ответ на: комментарий от peregrine

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

Погоди, я и до этого дойду) У меня весь блог посвящен оживлению и ремонту старых девайсов. Когда нибудь дойдем до выпаивания атмег из радиолома, смд кнопочек и юзания дисплеев от моторол :)

monobogdan1337
() автор топика
Последнее исправление: monobogdan1337 (всего исправлений: 1)
Ответ на: комментарий от thesis

я вот искал во что поиграть тут, так и не нашел ничего лучше poe/dota2

peregrine ★★★★★
()
Ответ на: комментарий от monobogdan1337

который пилит везде Bare-Metal и на весьма экзотических железках (DSP) - Gradius.

Этот градиус?

andreyu ★★★★★
()
Ответ на: комментарий от monobogdan1337

В спеке, насколько мне известно, графику рисовать мог как проц, так и ULA через хардварные спрайты (либо я с коммодором путаю).

В спеке все на cpu.

andreyu ★★★★★
()

А я GTA 5 завел на RPI Pico в 60 FPS, прикинь 🤡

Пруфов не будет.

neocrust ★★★★★
()
Ответ на: комментарий от andreyu

Тот чел любит эту серию, да :)

Он на других форумах обитает и не любит линух в эмбеде - поэтому и не обитаем на лоре))

monobogdan1337
() автор топика

Бугуртнул и купил себюе еще и лазерник недорогой для нормального ЛУТа. Заманался бегать в ксерокопии, где вечно экономят и бумага у них гомно.

monobogdan1337
() автор топика
Ответ на: комментарий от andreyu

Я про то, что я сам напутал, думая что хардварные спрайты были в спеке)

monobogdan1337
() автор топика
Ответ на: комментарий от bo4ok

он вот такой тетрис делает.

Даже в таком тетрисе, для рисования линейных движений не нужно ни фреймбуфферов ни обновлений всего экрана.

Эту фигню мы еще в 90хх на спектруме рисовали, на тупом бейсике.

Вот прям сейчас на Ардуйне 328-й и дешманском инертном ЛСД наваял: https://www.youtube.com/shorts/DllZk3ev9hE

Код занимает 12 строчек, и даже циклы не используются, лол.

Ну могу разместить спрайт(ы), фон - добавится 5 строчек и один массив - какая разница.

И это я еще не стал использовать буферную память самого дисплея, которая есть даже у днищеконтроллеров, просто ТС об этом не знает.

windows10 ★★★★★
()
Последнее исправление: windows10 (всего исправлений: 3)
Ответ на: комментарий от windows10

Эту фигню мы еще в 90хх на спектруме рисовали, на тупом бейсике.

Писать что-либо на экран спека из-под Бейсика можно только под веществами.

Может речь про MSX? Там из-под Бейсика, благодаря спрайтам и/или тайловому режиму, можно было что-то весьма годное сделать.

andreyu ★★★★★
()

Кароч купил лазерник, пока что ЛУТ особо не получается, поэтому запаял консоль полностью на макетке. Написал вторую игрушку - змейку.

Пока что думаю, в каком бы виде сделать стороннее SDK:

  1. Встроить Lua, прокинуть в него шустрое API и позволить делать игрушки на нем.
  2. Статически линковать игры с остальной частью прошивки. Тоже неплохой вариант на самом деле.

С местным ABI пока не разобрался, поэтому бинарников не будет.

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

Ну я напишу в пн-вт что там есть, есть ещё Asus тех же годов куда более премиальный, там, вероятно, есть дискрет

С тебя доставка, с меня поход на почту/в СДЭК)

shalom_ ★★
()
Последнее исправление: shalom_ (всего исправлений: 1)
Ответ на: комментарий от shalom_

Да, без проблем. Пиши тг monobogdan сразу, на ЛОРе не очень удобно переписываться.

monobogdan1337
() автор топика

Купил 3D принтер специально для проекта. Хожу бомжую (18к стоил), собирал принтер часов 5 и не один, но все таки получилось, печатаю котика =)

https://sun9-73.userapi.com/impg/Hv1YSnu4nGC2Vpb27tReH1F4mZUzBhlaJobuvQ/tR5yGQKJpA0.jpg?size=2160x2160&quality=96&sign=b2f44066dc152cd84c2a80a7bbf38bb7&type=album

Мотивацией к покупке стало появление рубрики про DIY в моем блоге - появилось несколько интересных идей по моддингу существующих устройств, которые я хотел бы реализовать, и конечно же делать корпуса для консольки. Читатели с DTF помогли с дизайном будущего детища :)

monobogdan1337
() автор топика
Последнее исправление: monobogdan1337 (всего исправлений: 1)

Не угадал автора по заголовку. Думал, очередной прорыв от Кондратия, а тут, похоже, реальная годнота.

Что с прошивкой? На основе Линукса или что-то с нуля?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Да, полностью с нуля самопальная прошивка. Для линуха там ОЗУ не хватит)

Сейчас в работе над корпусом, буду собирать что-то типа девкита, плюс работаю над звуком (будет PCM с 4х канальным микшером).

monobogdan1337
() автор топика
Ответ на: комментарий от monobogdan1337

Замоделил простенький корпус и распечатал. Чутка перекосил стол, от чего кое-где он отклеился и получился кривовато (речь не о кнопках), но в целом для первой крупной детали неплохо. Именно в этот корпус будет «одет» прототип :)

https://sun9-46.userapi.com/impg/ebU3GJw-DXfWrjS5iEkEbMprb3Vkh9Aj4xUQ2Q/OBT-_wafxwU.jpg?size=1620x2160&quality=96&sign=88e48374993cabdba7b82d047680439e&type=album

monobogdan1337
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)