Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс апр 27, 2025 04:12

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Вт фев 04, 2025 01:38 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8010
Благодарил (а): 26 раз.
Поблагодарили: 145 раз.
А вот интересно, внешняя SRAM для видеобуфера считается соответствующей правилам?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Вт фев 04, 2025 12:45 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Hishnik писал(а):
А вот интересно, внешняя SRAM для видеобуфера считается соответствующей правилам?
Да, безусловно. Категорически приветствуются любые реализации. Мы не приемлем миропорядок, основанный на правилах :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Вт фев 04, 2025 22:22 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Что-нибудь попроще. Гоголь-дино с Ардуино, например:
https://github.com/flaki/arduboy-rund-ino/blob/master/rund/rund.ino - исходник
https://felipemanga.github.io/ProjectABE/?hex=https://raw.githubusercontent.com/eried/ArduboyCollection/master/Arcade%2FChrome%20Dino%2FChrome%20Dino.hex - в эмуляторе
Тут вообще можно почти не переделывать, т.к. исходник не слишком сильно обмазан объектно-ориентированным программированием. :)


Вложения:
dino.png
dino.png [ 793 байт | Просмотров: 3071 ]


Последний раз редактировалось Total Vacuum Ср фев 05, 2025 23:32, всего редактировалось 1 раз.
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Вт фев 04, 2025 22:28 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
В моем форт-процессоре на полутора мегагерцах отлично работает.
Можно поиграть в Starter Kit: http://totalvacuum.ru/BATTLE/dino.bit
Качество фоток по старой доброй традиции позорное, вживую намного лучше.


Вложения:
dinof44.jpg
dinof44.jpg [ 10.6 Кб | Просмотров: 3071 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Вт фев 04, 2025 22:40 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Ну и для Irbis Forth за компанию, т.к. другого Форта с графикой под рукой не оказалось: http://totalvacuum.ru/IRBIS/dino.zip
В архиве оригинал исходника с Ардуины (rund.ino), переделанный исходник для трансляции в Форт (dino.c, убрал из шапки все #include и добавил реализацию нужных функций и заглушки для не особо нужных), результат трансляции в Форт (dino.f), батник для перекомпиляции примера (rebuild.bat), а также зачаточный вариант препроцессора Си (ucp.exe) и сам транслятор (uc.exe)
Слова IMAGE.BOX и С, с наскока не заработали. Первое хотел использовать для очистки экрана, а второе для инициализации массивов, так что в коде рабоче-крестьянский вариант через попиксельную заливку и C!
Ах, да, подключаемый файл с реализацией сишных примитивов (c.f) должен лежать в одной папке с irbis.exe, иначе ругается и не работает. А прыгать пробелом.


Вложения:
dinoirbis.jpg
dinoirbis.jpg [ 39.58 Кб | Просмотров: 3071 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Ср фев 05, 2025 23:07 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Flappy Bird теперь тоже летает. Как в прямом, так и в переносном смысле. :)
Взято отсюда: https://github.com/ingegno/RetroGames/blob/master/ArduinoFlappyBird_NL/ArduinoFlappyBird_NL.ino

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

И забавное наблюдение: мой шрифт 6x8 (взято когда-то давно уже и не вспомню где), оказывается, в точности совпадает со шрифтами 6x8 для Dr.Mario под UzeBox и Dino под Arduboy :)


Вложения:
flappy.jpg
flappy.jpg [ 4.27 Кб | Просмотров: 2988 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Сб фев 22, 2025 19:40 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Dino и Flappy Bird в браузере:
http://totalvacuum.ru/BATTLE/dino.htm
http://totalvacuum.ru/BATTLE/flappy.htm
Вместо традиционной консоли Форта там Еdit, в котором уже вставлен скомпилированный транслятором Си-в-Форт код, запуск по нажатию Run. Dino вообще без проблем в браузерной версии Форта работает, а Flappy Bird немного пришлось подправить, т.к. браузер не любит, если в коде встречается вечный цикл, который ждет чего-нибудь, например, нажатия кнопки. Но в остальном сишный код не трогал, просто добавил в шапке реализацию некоторых использованных в коде библиотечных функций и затычки для тех функций, без которых пока можно обойтись. Оригиналы под Ардуино тут:
https://github.com/flaki/arduboy-rund-ino/blob/master/rund/rund.ino
https://github.com/ingegno/RetroGames/blob/master/ArduinoFlappyBird_NL/ArduinoFlappyBird_NL.ino
В телефоне работать не будет, но можно дописать
Код:
: "ontouchstart" 1 key ! ;
: "ontouchend" 0 key ! ;
Хотя в телефоне играть - сомнительное удовольствие, т.к. он норовит при каждом нажатии поменять масштаб.
Можно очки в Flappy Bird вывести (например, каждые 100мс):
Код:
: 100 clr "score:" . score @ . ;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Чт мар 06, 2025 14:41 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Доктор Марио для коллекции:
http://totalvacuum.ru/BATTLE/drmario.htm
Скомпилировал под свой браузерный Форт на скорую руку, кое-где пришлось сишный код поменять, чтобы убрать из кода длинные циклы. Отличий в поведении от оригинала с UzeBox почти нет, за исключением вывода чисел (у них десятичные, а у меня hex, лень было переделывать) и почему-то не подбрасывает сопернику "мусор", если за раз собрать 2 или больше линий.
Форт-код накомпилировался жирный, почти 500Kb, но там из 25K строк кода собственно код программы занимает меньше 1000 строк, а все остальное - инициализация массивов с картинками, которые почти в неизменном виде взяты из оригинальных исходников и подключаются через #include. Причем картинки в формате байт на точку, хотя вполне достаточно 2 бита.
А, например, в версии под Форт-процессор для Spartan-3E Starter Kit все это безобразие в скомпилированном виде весило 16Kb: 8Kb картинки (3 бита на точку) и 8Kb код программы.
Управление кнопками wasd. В телефоне не поиграть, но можно заставить его раз в секунду жать случайные кнопки, чтобы само с собой играло:
Код:
: 1000 rand button ! ;


Оригинал в эмуляторе UzeBox для сравнения:
https://nicksen782.net/UAM/APP_emu/emu.php?gameid=122

upd. И за компанию заготовка под Irbis. Хотя это лишь proof of concept, а не полноценный порт игры, т.к. почему-то не работают вложенные конструкции switch (вложенность убрал, но в причинах пока не разбирался), управление кривое (вот бы заиметь событие onkeyup) и иногда может зависнуть (сложность лучше не увеличивать). Управление wasd.
http://totalvacuum.ru/IRBIS/drmario.zip

еще upd. А так (разница лишь в паре цветов) выглядит в плате с ПЛИС (Spartan-3E Starter Kit) с графикой 256x192x8, картинки здесь уже утрамбованы до 3 бит на точку, но можно еще смело утрамбовать минимум раза в полтора до 2 бит на точку без потери качества.
http://totalvacuum.ru/BATTLE/drm.htm
А сама прошивка под Форт-процессор для Starter Kit будет тут:
http://totalvacuum.ru/BATTLE/drmario.bit


Последний раз редактировалось Total Vacuum Пт апр 04, 2025 21:12, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Ср мар 26, 2025 17:32 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Раритетная статья true-grue про старые игры на Форте:
https://www.old-games.ru/forum/blogs/starye-igry-na-jazyke-fort.2868/?ysclid=m8pwejqug8969509287
И ее обсуждение на нашем форуме:
https://fforum.winglion.ru/viewtopic.php?f=34&t=3029

Вчера наткнулся на статью про то, что под российскую игровую консоль разработают отечественный процессор:
https://www.kommersant.ru/doc/7603779
Ежели чего, я невиновник. Они первые начали, я тут ни при чём. :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Ср мар 26, 2025 17:52 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Да, кстати, моя Tang Nano 20K доехала. Доехала давно, но руки дошли только вчера. Почему-то думал, что будут проблемы при переезде с 9K на 20K, но оказалось, что достаточно лишь выбрать GW2AR в настройках проекта Project\Set Device\Series и переназначить ноги в файле *.cst. Даже DEVICE в PLL можно не менять (ругается злобным ворнингом, но компилируется и работает), более того, Gowin IDE обновлять не потребовалось, прекрасно работает в образовательной версии (Education 1.9.89.09).
Для сравнения рядом с 9K. Плата стала меньше, из заметных отличий в глаза бросилось отсутствие наличия разъема для SPI-дисплея.
Изображение
ссылка на изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Пн мар 31, 2025 18:09 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 439
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 51 раз.
Поблагодарили: 3 раз.
Total Vacuum писал(а):
Да, кстати, моя Tang Nano 20K доехала.
Для сравнения рядом с 9K. Плата стала меньше, из заметных отличий в глаза бросилось отсутствие наличия разъема для SPI-дисплея.

Это у тебя базовый камень?
Дай ссылку где покупал.

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Вт апр 01, 2025 00:21 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8010
Благодарил (а): 26 раз.
Поблагодарили: 145 раз.
Gowin вообще интересны для небольших проектов. Еще появляется интересная возможность использовать его как видеоконтроллер для более крупной ПЛИС.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Ср апр 02, 2025 00:06 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
Sotnik писал(а):
Это у тебя базовый камень?
Дай ссылку где покупал.
https://aliexpress.ru/item/1005006721863996.html?sku_id=12000038091975408
Тогда стоило 5K с доставкой, сейчас конкретно тут дороже, но можно и дешевле 5K за полный фарш найти в других магазинах. А еще дешевле на озоне или вб (уже не впервые замечаю). Так понял, что это в точности те же самые китайские магазины (судя по названиям) с али на наших маркетплейсах представлены, а цены ниже, т.к. нет грабительского курса за конвертацию.
Что есть базовый? У меня на руках из покупных такие:
Код:
Spartan-3E Starter Kit [20xBRAM/VGA]
Tang Nano 9K [26xBRAM/HDMI/RGB/SPI]
Tang Nano 20K [46xBRAM/HDMI/RGB]
Если грубо, то подходит любая плата, где есть хоть какая-то графика и памяти не сильно меньше, чем в условных ZX Spectrum/NES (плюс-минус лапоть). В теории даже Tang Nano 4K [10xBRAM/HDMI] может подойти, правда придется ограничиться видеорежимом а-ля Спектрум (3xBRAM на монохромную картинку 256x192 и 1xBRAM на цвет) и сделать, например, 4Kb RAM (2xBRAM) и 8Kb код программы (4xBRAM). Про Tang Nano 1K [4xBRAM/RGB] что-то хорошее сказать сложно, но даже на ней не ставим крест, т.к. можно сделать не слишком жирную монохромную графику вроде 128x128 или 256x64 (1xBRAM), 2Kb RAM (1xBRAM) и 4Kb код программы (2xBRAM), многие игры от Arduino (Dino, Flappy Bird и т.д.) в этот объем спокойно влезут. Впрочем, можно ведь сделать тайлово-спрайтовую графику, тогда в т.ч. и цветные варианты возможны. Это, кстати, тоже был бы интересный вызов: постараться впихнуть в процессор как можно больше при условии, что ресурсы (в т.ч. память) сильно ограничены. Делают же люди демки, которые порой поражают воображение, но занимают при этом всего ничего. Или игры вроде 3D-шутера kkrieger, который целиком в 100Kb помещается.
Ну а если еще грубее, то подойдет вообще любая плата, ибо дисплей можно подключить через I2C. Да и процессор без разницы какой, лишь бы памяти было не совсем уж неприлично мало.
А краеугольный камень во всем этом безобразии - это Форт. Под любой самодельный/серийный процессор он либо есть готовый, либо его можно быстро накидать. Он дает невероятно плотный и достаточно быстрый код, особенно если в качестве целевой платформы выступает Форт-процессор. И одновременно он является идеальным кандидатом на роль языка для промежуточного представления при разработке самодельных трансляторов с ЯВУ и существенно упрощает сам процесс разработки таких трансляторов, а сам код программы на Форте в данном случае - это лишь распечатка содержимого синтаксического дерева, полученного в процессе трансляции программы, написанной на ЯВУ.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Чт апр 17, 2025 16:24 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 439
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 51 раз.
Поблагодарили: 3 раз.
Total Vacuum писал(а):
Что есть базовый? У меня на руках из покупных такие:
Код:
Spartan-3E Starter Kit [20xBRAM/VGA]
Tang Nano 9K [26xBRAM/HDMI/RGB/SPI]
Tang Nano 20K [46xBRAM/HDMI/RGB]

Если грубо, то подходит любая плата, где есть хоть какая-то графика и памяти не сильно меньше, чем в условных ZX Spectrum/NES (плюс-минус лапоть).
...
А краеугольный камень во всем этом безобразии - это Форт. Под любой самодельный/серийный процессор он либо есть готовый, либо его можно быстро накидать. Он дает невероятно плотный и достаточно быстрый код, особенно если в качестве целевой платформы выступает Форт-процессор. И одновременно он является идеальным кандидатом на роль языка для промежуточного представления при разработке самодельных трансляторов с ЯВУ и существенно упрощает сам процесс разработки таких трансляторов, а сам код программы на Форте в данном случае - это лишь распечатка содержимого синтаксического дерева, полученного в процессе трансляции программы, написанной на ЯВУ.

Вооружён до зубов!!! А можно попроще? :)
А-ля "РК-86" только загрузка Форта (не с ленты - CDcard).

Только FPGA с CPU фортом, HDMI, клава и Форт. И больше ничего.

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Консольные войны Z0Z5
СообщениеДобавлено: Пт апр 25, 2025 11:37 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 560
Откуда: Москва
Благодарил (а): 59 раз.
Поблагодарили: 28 раз.
С наскока заработала PS/2-клавиатура на Spartan-3E Starter Kit. Ну как заработала. Если нажали/отпустили, например, Enter, то в регистре 0xXX5A/0xF05A. Сейчас сделано в максимально примитивном варианте, тупо прием 11-битной посылки, пока даже без проверки уровней start/stop битов и бита четности.
Код:
...
reg [15:0] key = 0;
reg [7:0] cap;
reg [3:0] cnt = 0;
reg [0:0] clk = 1;
always @ (posedge c) clk <= ps2clk;
always @ (negedge clk) begin
   if (cnt==2) key <= {key[7:0],cap};
   cap <= {ps2data,cap[7:1]};
   cnt <= cnt?cnt-1:10;
end
assign o = e?key:i;
...
И вот дальше задумался. Там же получается гигантская бодипозитивная таблица сканкодов. И нужен либо в верилоге жирный case, либо софтовый switch уже в самом процессоре. Вот мне и стало интересно, как умные люди из этой ситуации выходят. И почему, кстати, такие странные сканкоды? Словно код каждой кнопке назначал генератор случайных чисел.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB