PDA

Просмотр полной версии : Пишем игры под РК подобные



Страницы : 1 [2]

NEO SPECTRUMAN
21.01.2024, 13:45
SegaBoy, исправил поведение emu80.
У меня тоже только один конвертер RDB->HDMI подхватил этот режим с длительностью строки 76,5 мкс, причем отобразил точно так, как у тебя на фото. На всех остальных устройствах - срыв синхронизации...
Не уверен, что этот эффект можно реально применить на РК или Апогее, но можно подумать, например, насчет Партнера - на нем тактовая частота ВГ75 не 1,33 МГц, а 1,5...

ужо можно качать?

Pyk
21.01.2024, 21:01
Может кого заинтересует - сплит-скрин со скроллом на Апогее (могу переделать на РК и Микрошу)
Посмотрел исходник, идею понял, здорово! :)

- - - Добавлено - - -


ужо можно качать?
Актуальные исходники в репозитории, если нужна сборка под Windows, то вот (https://emu80.org/v4beta/Emu80qt_40460_test_upd.7z) (заменить exe в последней версии).

Hammer
21.01.2024, 22:07
Ещё простая идея игры-кликера:


https://www.youtube.com/watch?v=b-8KlvAA9W8

NEO SPECTRUMAN
21.01.2024, 22:18
https://i.postimg.cc/NF5jrZH6/split-scroll.gif

Может кого заинтересует - сплит-скрин со скроллом на Апогее (могу переделать на РК и Микрошу)

а как ты ловишь середину фрейма?
ДМА заканчивается посреди фрейма?

а там и сорец
правда он на какойто нечитаемой еретической клинописе Ж)

SegaBoy
21.01.2024, 23:01
а как ты ловишь середину фрейма?
ДМА заканчивается посреди фрейма?

а там и сорец
правда он на какойто нечитаемой еретической клинописе Ж)
Разобрался, нет?

Идея такая - как отловили конец кадра, в канал 2 пдп грузим данные для первой половины экрана, а в канал 3 - данные для второй половины. Когда закончится отрисовка первой половины, во второй канал загрузятся значения из третьего канала и дальше продолжится отрисовка второй половины экрана. Это возможно, так как мы при старте пдп указали режим "автозагрузка" - а он так и работает, подгружает новые данные из канала 3 в канал 2.
Поэтому самому никакую середину ловить не надо - ловим как и раньше только конец ))

NEO SPECTRUMAN
21.01.2024, 23:06
а только 2 канала можно заюзоть?

мдо глянул свою папку с доками
пдф молча молчит про програмированиё Ж)

SegaBoy
21.01.2024, 23:14
а только 2 канала можно заюзоть?
Да. Только канал 2 имеет связь с внешним миром и только канал 3 умеет грузить в него.

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

NEO SPECTRUMAN
21.01.2024, 23:19
Но теоретически ты можешь нарезать экран на более мелкие лоскуты, отлавливать нужные моменты и вовремя перенастраивать пдп
но я то хочу
но мне надо бы как то читать статус пдп

и чтоб вш-ка не решила что пдп отвалилсо и нне потушила экрран

и все это в условиях когда это 100% не эмулируетсо Ж)

SegaBoy
21.01.2024, 23:28
но я то хочу
но мне надо бы как то читать статус пдп

и чтоб вш-ка не решила что пдп отвалилсо и нне потушила экрран

и все это в условиях когда это 100% не эмулируетсо Ж)
Можно как на Спектруме - считать такты )))))

Например так, для более чем двух частей экрана - ловишь конец кадра, настраиваешь пдп каналы 2 и 3, примерно высчитываешь где закончится первая часть и начнётся вторая. Пока вторая часть не закончилась можно успеть закинуть в канал 3 новые данные. Таким образом не нужно точно попадать в такт или строку, с некоторым опережением кидаешь. Ну и тд.

Hammer
21.01.2024, 23:49
Вроде научил я мячик правильно летать. Сквош пока что получается. С буфером ПДП двойной длины. Но полутона ещё не добавлял, в эмуляторе глаза быстро устают. Начал собирать себе железную РКшку, но дело идёт медленнее, чем хотелось бы.

80166

NEO SPECTRUMAN
22.01.2024, 00:00
Можно как на Спектруме - считать такты )))))
особенно когда у нас проц становитсо на неизвестное время

хотя да если будет такая автозагрузка

совместить с переполнениём фифо?
по центру остаетсо 46 знакомест

Pyk
22.01.2024, 00:41
Можно как на Спектруме - считать такты )))))
А на Партнере можно считывать регистры ПДП, он там не совмещен с ПЗУ :)
Вместе с имеющимся там кадровым прерыванием дает еще больший простор для творчества ;)

- - - Добавлено - - -


и все это в условиях когда это 100% не эмулируетсо
Ну, может не 100%, но уж с точностью до символьной строки должно эмулироваться... Отловить четверть экрана, чтобы перепрограммировать ПДП, точности хватит...

NEO SPECTRUMAN
22.01.2024, 00:47
Отловить четверть экрана, чтобы перепрограммировать ПДП, точности хватит...
я хочу как в гоночках Ж)


а так блджд
на 8237 каждый первый даташит любого производителя расказывает про програмиррование
на 8257 каждый даташит молчит как партезан
и только одно какоето описание на русише сомнительного происхождения...

Pyk
22.01.2024, 00:49
на 8257 каждый даташит молчит как партезан
Правильный даташит (https://emu80.org/files/?id=44).

NEO SPECTRUMAN
22.01.2024, 00:58
А на Партнере можно считывать регистры ПДП, он там не совмещен с ПЗУ
Вместе с имеющимся там кадровым прерыванием дает еще больший простор для творчества
ох там еще и читать нельзя...
та ежпэрэсэты инжинеры херовы...
ну могли б вообще впаять dip40 и развести только питание
почему нет? :v2_dizzy_tired2:

- - - Добавлено - - -


Правильный даташит (https://emu80.org/files/?id=44).

до мне такой непопалсо

- - - Добавлено - - -

а в апогее тошно читать нельзя?\
ато схема зажеванная непойму

SegaBoy
22.01.2024, 01:07
а в апогее тошно читать нельзя?\
ато схема зажеванная непойму
Точно. Там запись в пдп и чтение из пзу.

- - - Добавлено - - -

Но в Апогее можно таймер настроить и его читать.

NEO SPECTRUMAN
22.01.2024, 01:29
а шито делаит эта А конструкция с IORD?
https://i.postimg.cc/fy0L27td/2024-01-22-002743.png

https://i.postimg.cc/xqDdWkM4/2024-01-22-002756.png

Pyk
22.01.2024, 01:33
Но в Апогее можно таймер настроить и его читать.
А на КР-04 есть прерывание от таймера (но нет от ВГ75)...
Хотя не уверен, что на КР-04 с его 15 перепрограммируемыми знакогенераторами это может оказаться полезно...

SegaBoy
22.01.2024, 01:51
а шито делаит эта А конструкция с IORD?

А - это +5 вольт, к питанию значит подтягивает через резистор.

NEO SPECTRUMAN
22.01.2024, 02:05
А - это +5 вольт, к питанию значит подтягивает через резистор.
где список деталей то? о_О
кто такой D6
там же наверно не всегда 1 на d0...d2?

на emuverse в доках нету

а увидел от куда источник А
немогли проосто написать +5...


остаетсо только тот DMA флаг от вг75 и ошибка фифо?

Hammer
22.01.2024, 10:07
Да, снизу F3, сверху - F1 в каждой строке. В рабочей области тоже можно F1 в конце каждой строки для экономии тактов.
Убрать лишние выборки ПДП и в режиме 50 Гц тормозить будет даже меньше, чем при 60 Гц - реже обращение к ОЗУ...

Помогите понять, как это работает по времени.

У меня получается так, что вывод спрайтов (пусть даже только основных) лучше всего делать сразу после детекта обратного хода луча. А вот все вычисления уже можно делать после всего. Пусть и процессор останавливается, это уже пофиг т.к. все мерцания мы минимализировали быстрым выводом спрайтов.

Вот как правильно добывать дополнительные такты?

4 первые строки могут быть скрыты, можно смело вставить в них F1 в самом начале. Это значит, что ПДП подхватит данный код и перестанет угнетать в заточении процессор до начала следующей строки?

А вот если я делаю не так... Если я рисую картинку сразу с первой строки, но в конце 32й (к примеру) строки я ставлю F3, экран сдвигается вниз, ПДП "передаст свет" процессору... на какое время, до какого момента?

Не могу понять, 86РК это больше Билли Миллиган или Халк?

Такой момент обнаружился, что выиграть надо кадр, если мы синхронизируемся по обратному ходу луча. Тогда скорость игры, а значит плавность всего заметно увеличивается. Если при всей оптимизации выигрывается времени меньше, то и мерцаний становится меньше, но скорость остаётся прежней.

В Emu80 внизу окна показывается графический режим, и КПД процессора - это без учёта использования F1 и F3?

Pyk
22.01.2024, 14:07
В Emu80 внизу окна показывается графический режим, и КПД процессора - это без учёта использования F1 и F3?
С учетом, по факту. Усредненное значение за (кажется) полсекунды.

Hammer
22.01.2024, 14:19
Странно... По 10 символов в каждой строке отрезал через F1 и 4 строки снизу через F3, но процент не изменился. Может из-за буфера двойной длины?

Pyk
22.01.2024, 14:22
Hammer, если длина буфера изменилась, процент должен тоже измениться при той же геометрии экрана...

Hammer
22.01.2024, 20:30
Если что обращайтесь. Имею художественное образование)

Вот! Помощь нужна! Есть вот такая картинка для игры типа "сквош":

https://zx-pk.ru/attachment.php?attachmentid=80166&d=1705869882

Путём чудовищного мигания пикселями мы получаем третий цвет, серый. Можно ли как-то улучшить картинку с помощью серого цвета? Может им красиво получится зазубрины пиксельные смягчить? Или стрелку и биту стилизовать? Или некую тень изобразить внутри отверстия на стене?

Разрешение картинки 128х64

NEO SPECTRUMAN
22.01.2024, 20:45
чудовищного мигания пикселями
ну сильно мигать нельзя
можно применить к шарику (особенно когда он в режиме тотального уничтожения (полной пенетрации фсего))
к пулям
какието полосочки огни на ракетке (которые могут иногда мигать)
вторая "злая" вражеская босс ракетка сверху может мигать сильно
выпадающие бонусы хоть всей площадью
какие то огни на стенах в виде полосок (особенно если они будут не очень быстро менять 3 градации яркости)
блоки с особыми свойствами (когда их совсем не много)
враги могут мигать сильней чем статишные объекты

тени будут выглядеть странно так
хотя тень может быть статичным черным цветом при этом
а фон например статичным белым

- - - Добавлено - - -

https://i.postimg.cc/PJHLd7zS/2024-01-22-194416.png

еще напомню что (0+255)/2 ~ 182 :) (точно не помню какое число но дето там)

ну и при этом все спрайты нужно выдерживать по 2 фрейма
или будет еще большее расколбашивание при перемещении
хотя...

Hammer
22.01.2024, 20:45
ну сильно мигать нельзя

Получается мигать через кадр, при частоте 50 кадров в секунду. Приемлемый серый цвет, должно хорошо выглядеть на телевизорах с ЭЛТ.

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

NEO SPECTRUMAN
22.01.2024, 20:54
https://zx-pk.ru/attachment.php?attachmentid=80166&d=1705869882
а еще тут сильно многго площади экрана уходит на забор
лучше убрать мусор сверху и снизу
в угоду повышения высоты экрана
полоска снизу ненужна (если она только не бонусная и не будет отбивать мячь)

Hammer
22.01.2024, 20:56
а еще тут сильно многго площади экрана уходит на забор
лучше убрать мусор сверху и снизу
в угоду повышения высоты экрана

Я рисовал, как мог))) Художник нужен!

NEO SPECTRUMAN
22.01.2024, 22:09
Разрешение картинки 128х64
думаю по высоте можно выжать и 70+
квадратными знакоместами
играть в арканоиды на узком по высоте экране не очень интересно

- - - Добавлено - - -

я бы копал в таком направлении
https://i.postimg.cc/W40wL8zS/arkanoid-0003.png

- - - Добавлено - - -

https://i.postimg.cc/XvZ7p1dc/arkanoid-0003.png

даже можно какуето текстурку на фон натянуть

но тут сильно не хватает высоты

- - - Добавлено - - -

https://i.postimg.cc/DwZVBWCx/arkanoid-0005.png

- - - Добавлено - - -

с шахматкой надо думать как уместить фсе сверху
https://i.postimg.cc/fLgSSSg1/arkanoid-0005.png

- - - Добавлено - - -

такое не катит
ибо сильный муар
https://i.postimg.cc/Ss3T7rTh/dwdde.png https://i.postimg.cc/4yc889qh/dwded3.png

хотя этот вариант чуть лучшо
https://i.postimg.cc/44HF4DyN/edecc1.png

- - - Добавлено - - -

будет работать только если кирпичи и ракетка будут на определенных строках
https://i.postimg.cc/q7X6GM1M/edecc1.png

места для врагов нету

как вариант убрать верхннюю стену
и завести вторую ракетку
можно синхонную с игроком

- - - Добавлено - - -

https://i.postimg.cc/GhP5y6DP/edecc1e.png

https://i.postimg.cc/kgnhFwN0/edecc1e.png

- - - Добавлено - - -

https://i.postimg.cc/Kc5JJB9B/edecc1eee.png

https://i.postimg.cc/hPyMqgRG/edecc1eee.png

Hammer
22.01.2024, 22:09
Блин, да не арканоид у меня, а пока только сквош. Делается он для того чтобы написать функции красивого перемещения мяча, функции прозрачного фона под шаром, и затестить серый цвет. Не арканоид это!

С точки зрения рисования, я сделал высокие стены, чтобы мячик отражался от середины высоты стены, тогда появляется чувство объема без тени от шара и текстуры на полу. Большой мячик я делал, мне не понравилось. Мячик в один псевдопиксель уже бегает и от стен отражается, ракетка шевелится.

Да, снизу ещё есть место, там будут очки отображаться.

Всё это можно переделать, но сначала хочется получить одну продуманную картинку с серым цветом, как эталон. Поэтому художники - вэлкам!

NEO SPECTRUMAN
22.01.2024, 22:12
тошнее так
https://i.postimg.cc/sX3sC557/edecc1eee-3.png

- - - Добавлено - - -


Блин, да не арканоид у меня, а пока только сквош.
сквош НЕНУЖОН

Hammer
26.01.2024, 06:47
Серый цвет оказался шедевральным, но в то же время очень коварным.

Для графики он даёт очень много возможностей, от сглаживания пиксельной "гребёнки" до имитации теней. Очень круто выглядит.

К сожалению, всё зависит от способа подключения к монитору / телевизору. Если ВГ75 выдает 50Гц, а монитор 60Гц, то серый цвет неприятно мерцает.

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

Серый цвет, реализуемый черед буфер ПДП двойной длины, в оригинале - чумовейшее и самое аккуратное программное усовершенствование графики. Но вот как его реализовать для максимального количества железа, пока не очень понял.

Pyk
26.01.2024, 10:07
Hammer, надо рассматривать 3 случая:

1. Подключение к устройству отображения напрямую, с сохранением частоты кадров. Идеальный случай, будет аккуратный серый.
2. Подключение монитора через преобразователи типа композит->VGA и т.п., меняющие частоту кадров. Ничего хорошего из этого не получится. Получим или неприятное мерцание при разной частоте или даже периодическое изменение яркости при близкой.
3. Запуск в эмуляторах. результат как в п. 2, если только не предусмотрен специальный режим для гигаскрина (в emu80 - Экран - Смешивать полукадры).

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

Hammer
02.02.2024, 23:48
Немного с другой стороны зайдём. У меня получилось нарисовать альтернативный шрифт, он пока ещё дорабатывается, но всё же...

80281

Знакоместо в нём 6х6 точек, шрифт стал более компактный, но читабельность не потерял. Псевдопиксели стали квадратными. Соответственно получается высота символа 6 линий, 60Гц. В шрифт получилось впихнуть 4 текстуры, буллиты, лесенку, цепь, флору. Сразу стало интереснее:

80282

Но будет ли кто-то заморачиваться прошивкой нового шрифта?

Shaos
03.02.2024, 00:17
SRAM РК-шки уже имеют 2 набора шрифтов - можно во вторую половинку 2-килобайтной ПЗУ-хи зашить :)

Северная Пальмира умеет шрифты программно подменять, там правда под VGA - ширина знакоместа 8 пикселов

Я в будущем расширении своего SRAM128K тоже хочу ОЗУ под шрифты задействовать похожим образом (причём совсем без ПЗУ), но у меня будут классические 6х8 (два набора) - вот туда этот новый шрифт легко будет вставляем программно :)

Hammer
03.02.2024, 00:34
ОК, значит буду дорабатывать. Пока ещё есть спорные моменты.

Pyk
03.02.2024, 00:43
получается высота символа 6 линий, 60Гц
Почему же обязательно 60, можно и 50. Тем более, что в режиме 60 Гц 480p картинка вытянется по вертикали, и пиксели станут менее квадратными.
В режиме 50 Гц поместится более 40 строк, в режим 60 Гц - более 32...

NEO SPECTRUMAN
03.02.2024, 01:49
Но будет ли кто-то заморачиваться прошивкой нового шрифта?
конешно же нет :)

- - - Добавлено - - -

а так в апогее есть же зашибезной 6х4 псевдографический онли шрифт

и в партнере есть псевдографический шрифт
который можно подрезать и использовать не щелкая наборами


лучшо поддержать то чего реально было
а не изобретать велосипеды под одну игру

- - - Добавлено - - -

и кстате разве выше не писали про какойто кр04? со сменным шрифтом?
(я такого не знаю)

Shaos
03.02.2024, 01:50
так в апогее есть же зашибезной 6х4 псевдографический онли шрифт который включается по INTE - зашибись РК-шка :)


в партнере есть псевдографический шрифт…
сколько рабочих Партнёров существует в природе? А сколько КР-04? Что-то между 1 и 0 будет очень оптимистичной оценкой ;)

Hammer
03.02.2024, 08:31
конешно же нет :)

Родной шрифт остаётся т.е. обратная совместимость есть. А без проблем купить и собрать сейчас можно как раз SRAMоидов т.к. они в сборке проще получаются и есть на маркетплейсах. Может и прошитые микросхемы купить можно будет.


Почему же обязательно 60, можно и 50. Тем более, что в режиме 60 Гц 480p картинка вытянется по вертикали, и пиксели станут менее квадратными.
В режиме 50 Гц поместится более 40 строк, в режим 60 Гц - более 32...

Мне пока тяжело это оценить. Но уже скоро дособеру комп, тогда смогу понять разницу в частотах.

NEO SPECTRUMAN
03.02.2024, 17:04
сколько рабочих Партнёров существует в природе? А сколько КР-04? Что-то между 1 и 0 будет очень оптимистичной оценкой
ну явно большо чем рк кулибин едишн (которые в придачу и неспектрум!! не рк!)
при том на порядок
если не на 2

- - - Добавлено - - -

вот шрифт апогея с 3х2
https://i.postimg.cc/25FBRnFx/chr-apo2.png

и один из шрифтов партнера с 2х4
если сделать 6х6 то будут все комбинации
https://i.postimg.cc/jjrJFMN5/1800-1-BFF.png

у партнера еще есть жменя псевдографических шрифтов со всякими полосочками итд
и переключаются они по моему атрибутами
так что на экране можно увидеть все и сразу

- - - Добавлено - - -

по моему вот это они
https://i.postimg.cc/L659mjRV/0000-03-FF.png https://i.postimg.cc/J4F10tzC/0400-07-FF.png
https://i.postimg.cc/YCmtWkvG/0800-0-BFF.png https://i.postimg.cc/LstRxTBm/0-C00-0-FFF.png
https://i.postimg.cc/LsK2k7Py/1000-13-FF.png https://i.postimg.cc/tT9bwx2W/1400-17-FF.png
https://i.postimg.cc/B6N30nVy/1800-1-BFF.png https://i.postimg.cc/J0nL4Wwh/1-C00-1-FFF.png

- - - Добавлено - - -

еще не проверял конвертируемость картинок

https://i.postimg.cc/cCpXkVSH/VW-468-dithered-0-96-0400-07-FF.png https://i.postimg.cc/dQhFXrFP/VW-468-dithered-0-96-0800-0-BFF.png
https://i.postimg.cc/tR8bHJR1/VW-468-dithered-0-96-1000-13-FF.png https://i.postimg.cc/WbrvpVt5/VW-468-dithered-0-96-1400-17-FF.png
https://i.postimg.cc/vZTHQkFT/VW-468-dithered-0-96-0000-03-FF.png

Hammer
03.02.2024, 18:13
Не, тут фишка не в разнообразии квадратиков и полосочек.

За 40 лет художники тоже не сидели сложив кисточки. За это время прогресс в рисовании пиксельной графики ушёл далеко вперёд. Художники овладевали стилем, искали варианты. Выяснилось, что есть не так уж много способов, чтобы изобразить кирпичную стену или обозначить поверхность воды. Мы сейчас в самых выгодных условиях по сравнению с разработчиками РК, мы можем этим прогрессом воспользоваться, а не изобретать с нуля.

Вот я и предлагаю дополнить графику полезными символами. Почему-то есть уверенность, что этих дополнений ещё лет на 20-40 хватит.

NEO SPECTRUMAN
03.02.2024, 18:54
Почему-то есть уверенность, что этих дополнений ещё лет на 20-40 хватит.
отлишная идея

прям напомнило
https://img10.joyreactor.cc/pics/post/xkcd-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D 1%8B-%D1%83%D0%B4%D0%B0%D0%BB%D1%91%D0%BD%D0%BD%D0%BE%D 0%B5-2993465.jpeg

Hammer
03.02.2024, 19:06
И кто же конкурирует с кодировкой РК?

Shaos
04.02.2024, 00:36
ну явно большо чем рк кулибин едишн (которые в придачу и неспектрум!! не рк!)
Ну в наше время приходится выбирать либо кулибинство, либо выискивание ржавого старья на пыльных антресолях ;)
И чем дальше мы движемся вглубь нового века, тем более востребовано будет "кулибин-едишнство" :v2_dizzy_ironic:


у партнера еще есть жменя псевдографических шрифтов со всякими полосочками итд
Наличие знакогенератора в ОЗУ сильно расширяет пределы творчества - пиши туда хоть стандартный РК-фонт, хоть Апогеевскую псевдографику, хоть шрифты уже несуществующих нынче Партнёров ;)

Pyk
05.02.2024, 11:59
несуществующих нынче Партнёров
Кстати, зря так насчет Партнеров. Они есть, совершенно не такой раритет, как, например, тот же КР-04.
Беда в том, что для них никто не сподобился сделать SD-адаптер или хотя бы РОМ-диск для удобной загрузки программ (а родной КНГМД для него как раз раритет).
По этой причине они даже в музеях обычно стоят выключенными.
Надеюсь, что со временем удастся изменить это положение дел, есть некоторые мысли по этому поводу...

Ведущий_специалист
05.02.2024, 18:52
Я извиняюсь, народ, но вы немного не туда. Огромные красивые картинки это не в рк и не в апогей... Все дело ..... в слабом процессоре. Я тут недавно погонял гифки на рк86 и на пальмире. (гифка раскладывается на картинки и они по очереди считываются в экран с сд карточки). Так вот.... рк86 прекрасно справляется со своим заявленым разрешением 64х32 символа и позволяет смотреть видосики вольфенштейна и дума в приятном безмерцательном фпс. А вот пальмира, со своим настроенным экраном с псевдой апогея и длиной видеоозу в 4 кило заметно тупит уже на разрешении 160х102 точки. Виден флик, виден тупеж и прочее (проц в пальмире работал на 2МГц). Если посмотреть еще чисто рабочие моменты (60Гц и гоняние пдп под 4 кило) то проц там еще и этим сильно тормозится.
Я к чему это - тема про игрописание, играм нужна скорость отрисовки скорость проца.... картинки - да, красиво но к сожалению в статике. Ну или так... я уже конечно пожалел что не сделал турборежим на пальмире - переключать проц на 3МГц, очень заметно улучшение, видосик без тупежа и все круто.

- - - Добавлено - - -

Кстати. Мы тут с Виктором придумали формат RMV. Я прикинул небольшой проигрыватель - а Виктор написал конвертер GIF-RMV. Тема позволяет достаточно прикольно играть видеоролики с сд карточки на экране радио86 рк. Такое уже где то было и не ново.. Если интересно кому - могу оформить в новую тему.

Shaos
05.02.2024, 22:22
Давайте подключим ВТ57 безвейтово - с быстрым статическим ОЗУ это наверное возможно :)

Ведущий_специалист
06.02.2024, 11:55
Давайте подключим ВТ57 безвейтово - с быстрым статическим ОЗУ это наверное возможно :)

Дело хорошее. Ставим 3 штуки ир33 и озу за ними... Да вот только вопрос.... читать с этого озу очень будет проблематично. Ну или 2х портовку. с нею все прекрасно

zebest
06.02.2024, 12:07
Ну или 2х портовку
... и плавно переходим на ФПГА. И сразу там и двухпортовка, и безвейтовость, и знакогенератор в ОЗУ, и сразу все модели рк86\микроша\апогей\партнер\ etc... и SDOS

Shaos
06.02.2024, 12:27
Дело хорошее. Ставим 3 штуки ир33 и озу за ними... Да вот только вопрос.... читать с этого озу очень будет проблематично. Ну или 2х портовку. с нею все прекрасноЗачем 2х портовку? По слотам времени развести их просто и всё - квант времени процу, квант времени пдп, плюс регистр(ы) для временного хранения байта если вдруг кто кому на пятки наступать начал...

Hammer
06.02.2024, 17:54
Наращивание железа, добавление новых интерфейсов, увеличение памяти, и даже программируемый знакогенератор, всё это никак не помогает программистам.

Сделайте увеличение яркости символа по HLGT, как и должно быть изначально. Это будет круче, чем цветность.

- - - Добавлено - - -

Набросок Ксоникса с альтернативным шрифтом: https://disk.yandex.ru/i/LZ3txQexlS_wTw

Явно выделения яркостью не хватает!

Shaos
06.02.2024, 19:46
HLGT уже используется под цвет...

Hammer
06.02.2024, 20:08
Нахрен цвет не нужен. Причины:

1. Если у вас фон цветной, и в спрайте используются цвета, как просчитывать перемещения спрайта по фону, с сохранением цветности?
2. Режимы с 50гц пытаются конвертить в 60гц под современные мониторы, разумеется появляются одинаковые кадры, что убивает возможность использования гигаскрина. Гигаскрин - единственная возможность аппаратно-программно получить серый цвет.
3. Серый цвет сразу даёт антиальясинг на "зазубринах" пикселей, графика РК таковой уже не выглядит.
4. Имея один серый цвет уже можно просчитать даже пересечение расцвеченных спрайтов.
5. Вот картинка, где где добавлено два оттенка:

80327

Ну уж гораздо лучше, чем фон в красный цвет покрасить!

Вроде плюшки добавляются, но программировать от этого только тяжелее становится.

Vital72
06.02.2024, 20:33
если добавить в схему загружаемую палитру, то можно будет сделать любой серо-буро-малиновый цвет

Hammer
06.02.2024, 20:45
если добавить в схему загружаемую палитру, то можно будет сделать любой серо-буро-малиновый цвет

Конечно можно! На это всё процессорное время и уйдёт, а не на сам игровой алгоритм.

Надо делать так, чтобы потом этим было удобно пользоваться в том числе и программистам. По факту реализовать те функции, которые прям обозначены на выводах ВГ75.

Vital72
06.02.2024, 20:58
палитра загружается один раз при инициализации игры, никакое проц. время не уйдёт.
__каждая__ игра сможет загружать свою палитру.
для палитры 3-3-2 потребуется всего 16 байт загрузить, но я предлагаю вариант 4-4-4 -- это 20 байт, но и оттенков больше


По факту реализовать те функции, которые прям обозначены на выводах ВГ75.

скажи это разработчикам Радио-86РК, которые на INTE повесили звук.

Hammer
06.02.2024, 21:03
Пересечение двух цветных спрайтов с прозрачностью как быстро получится посчитать?

Vital72
06.02.2024, 21:11
забавно. а с HLGT как быстро получится посчитать?
в этом и состоит искусство программирования, чтобы всё просчитать заранее и не тратить ресурсы по ходу пьесы

Hammer
06.02.2024, 21:45
С HLGT это хотя бы возможно)

zebest
06.02.2024, 23:19
HLGT в Партнер-е занят под знакогенератор. Значит его вычеркиваем из "рк-подобных"?

Shaos
06.02.2024, 23:48
Безусловно :)

- - - Добавлено - - -

Знакогенератор надо переключать через LA0=1 и HGLT=0, которые включают один (код E4), а LA0=1 и HGLT=1 (короткий) включают другой (код E5)

Pyk
07.02.2024, 09:26
Знакогенератор надо переключать через LA0=1 и HGLT=0, которые включают один (код E4), а LA0=1 и HGLT=1 (короткий) включают другой (код E5)
Один минус у этого решения - эти коды всегда непрозрачны, не получится установить разные наборы знакогенератора у соседних символов.

Shaos
07.02.2024, 10:15
Один минус у этого решения - эти коды всегда непрозрачны, не получится установить разные наборы знакогенератора у соседних символов.
Это да - плюс их надо аппаратно "спрятать" т.к. сейчас они будут выглядеть на экране как Д и Е, а надо чтобы как пробелы...

Vital72
07.02.2024, 10:40
Это да - плюс их надо аппаратно "спрятать" т.к. сейчас они будут выглядеть на экране как Д и Е, а надо чтобы как пробелы...
так надо ПЗУ отключать при активации LA0

Shaos
07.02.2024, 11:53
так надо ПЗУ отключать при активации LA0
VSP с LA0 по ИЛИ сложить и пустить на /CE ПЗУ знакогенератора (сейчас там просто VSP)

Vital72
07.02.2024, 12:06
у ПЗУ два входа выборки /CS и /OE, как раз хватает для VSP и LA0

Shaos
07.02.2024, 12:08
у ПЗУ два входа выборки /CS и /OE, как раз хватает для VSP и LA0
и действительно :)

Hammer
07.02.2024, 17:58
Сделал заливку, теперь надо научиться определять, какую сторону заливать: https://disk.yandex.ru/i/9JJGlcFM0NALHw

Vital72
07.02.2024, 18:36
заливать там, где нет шариков

Pyk
07.02.2024, 23:14
Сделайте увеличение яркости символа по HLGT, как и должно быть изначально.
Кстати, если вдруг появится желание поэкспериментировать, то HGLT полноценно реализован в черно-белом Апогее.

Alikberov
08.02.2024, 01:33
у ПЗУ два входа выборки /CS и /OE, как раз хватает для VSP и LA0У РФ1 вроде вместо этого - PGM?
Или я ошибся, когда рисовал (https://zx-pk.ru/attachment.php?attachmentid=79593&d=1696768224)?

Vital72
08.02.2024, 02:07
нафиг РФ1, да и больше одного знакогенератора в РФ1 не зашить

Shaos
08.02.2024, 02:16
РФ1 ещё фиг найдёшь :)
Я в 90х когда РК-шку собирал не нашёл - сразу РФ2 поставил :)

Hammer
11.02.2024, 21:33
Предлагаю потестировать альтернативный шрифт, он состоит из двух половинок:

1. Стандартный шрифт, в котором пустые служебные символы заменены на текстуры + символ настораживающе растопыренного человечка заменён на новый.

2. Шрифт 6х6, квадратные символы псевдографики, текстуры, флора, кирпичи, лестница, вода и др.

Вы видели его уже: https://disk.yandex.ru/i/9JJGlcFM0NALHw

https://zx-pk.ru/attachment.php?attachmentid=80282&d=1706906551

Баги: в игре Xonix на экран выводятся служебные символы кроме пробела и 00h, поэтому экран в Ксониксе заполнен новым символом воды.

Сам шрифт: 80352

Alikberov
12.02.2024, 17:21
Развёрнутое пояснение отсюда (https://zx-pk.ru/threads/22785-assembler-radio-86rk.html?p=1194423#post1194423).

Как известно, стандартный авторский Монитор РАДИО-86РК имеет минимальные встроенные средства отладки кода - директивы G с парой параметров и X.
Причём, вторым параметром директивы G указывается адрес прерывания приложения с временным размещением кода F7 - RST 6. Причём, по адресам 0030…0032 прописывается инструкция «JMP FFA2», уничтожая содержимое ячеек безвозвратно!
(Очевидно, в CP/M адрес 0030 был стандартной точкой отладки.)
Директива G, однако, сохраняет код временно замещённой инструкции в ячейку 7625 и её адрес в ячейки 7623/7624.

Тем самым, приложение может само себя частично восстановить, используя сохранённую служебную информацию, а так как все параметры директив сохраняются в ячейках 7627…762C, то и использовать, в частности, и третий параметр.
«G,<параметр#2>»
«G,<параметр#2>,<параметр#3>»
«G,,<параметр#3>»Что может помочь в отладке (например, запускать программу в различных режимах или прошивать ПЗУ без принудительно запроса адресов).

Вот, типовой код для таких вызовов:
PUTHEX: EQU 0F815H
PUTEXT: EQU 0F818H
GETMEM: EQU 0F830H
WARMON: EQU 0F86CH
;;;;;;;;;;;;;;;;;;;;;;;;;
STOPTR: EQU 07629H ; Адрес останова (7623 или второй параметр)
STOPIC: EQU 07625H ; Сохранённый код инструкции
DIRDE: EQU 07629H ; Второй параметр директивы (передаётся в DE)
DIRBC: EQU 0762BH ; Третий параметр директивы (передаётся в BC)

ORG 00000H
LHLD STOPTR ; Читаем адрес "порчи" (слово в 7623 или 7629)
MOV A,H ; и проверяем,
ORA L ; был ли второй параметр у директивы G?
JZ BEGIN ; Если указатель - "нулевой", значит отсутствует.
LDA STOPIC ; Иначе, читаем код инструкции
MOV M,A ; и "снимаем порчу" у ячейки, которая "прихворала".
BEGIN: XCHG ; Заносим второй параметр в DE.
DCX SP ; Корректируем указатель стека
DCX SP ; для благополучного возврата в Монитор.
LXI H,HELLO ; Сначала поприветствуем пользователя
CALL PUTEXT ; скромным сообщением о нормальном запуске.
CALL SHOWDE ; Отобразим содержимое DE - второй параметр директивы
INX H ; и напечатаем остальное
CALL PUTEXT ; сообщение.
LHLD DIRBC ; Третий параметр директивы.
XCHG ; Теперь отображаем третий параметр директивы и выходим
;;;;;;;;;;;;;;;;;;;;;;;;;
SHOWDE: MOV A,D ; Выводим регистр D
CALL PUTHEX ; шестнадцатеричным,
MOV A,E ; выводим регистр E
JMP PUTHEX ; шестнадцатеричным.
;;;;;;;;;;;;;;;;;;;;;;;;;
MOV B,C
MOV C,H
MOV C,C
MOV C,E
MOV B,D
MOV B,L
MOV D,D
MOV C,A
MOV D,M
MVI L,031H
;;;;;;;;;;;;;;;;;;;;;;;;;
HELLO: DB 00DH,00AH
DB 'SECOND PARAMETER IS ',0
DB 00DH,00AH
DB 'THIRTH PARAMETER IS ',0Откуда становится также очевидным, почему второй параметр должен быть не меньше 000C (если программа стартует с 0000): Первые 12 байтов - код восстановления, который сам себя восстановить не сможет/!\

Потому, исходный Монитор скрывает возможности, которые никогда не использовались.

Hammer
25.02.2024, 00:16
Переделал заливку, начал добавлять звуки: https://disk.yandex.ru/i/UpKV1WT-o6LdTg

s1nka
28.02.2024, 19:20
Подскажите пожалуйста по компиляторам под РК86. Не считая ассемблеров и бейсиков, существуют ли компиляторы, например высокого уровня какой-нибудь Си. В идеале с примерами.

Beaver
28.02.2024, 20:39
Не считая ассемблеров и бейсиков
А вот чёй-то не считая? Ни разу, например, не слышал про компилятор бейсика на рк. Если есть такой, было бы интересно посмотреть. Особенно, если оно кросс-компилятор.

Kakos_nonos
29.02.2024, 16:21
Есть си, pl/m оберон, а также несколько мини-языков, типа context, cowgol.
Если использовать cp/m, то там есть fortran, паскаль.

По моему опыту, самое лучшее - pl/m. Си - слишком громоздкий для слабого проца.

Ведущий_специалист
29.02.2024, 18:40
Подскажите пожалуйста по компиляторам под РК86. Не считая ассемблеров и бейсиков, существуют ли компиляторы, например высокого уровня какой-нибудь Си. В идеале с примерами.

https://github.com/maxadler1979/palmira/tree/main/games тут примеры, а си компилер - смотри z88dk

s1nka
29.02.2024, 19:30
Kakos_nonos, Си как я понял это z88dk? А на pl/m можно ссылку?

Oleg N. Cher
29.02.2024, 20:57
https://github.com/MrDemonid/PL-M-80-Tools
Самый актуальный и поддерживаемый. Именно на этой сборке делали игру Bolder Dash для Пальмиры недавно. И для ПК8000.

Kakos_nonos
01.03.2024, 17:01
Да, самая продвинутая версия сейчас. Есть одна еще постарее, на ней я двигалку делал. Там в архива исходники игры и компиль и эмулятор. Легче разобраться будет.
https://files.scene.org/view/parties/2017/multimatograf17/animation_wild/dvigalka.zip

Pyk
01.03.2024, 22:07
Хочу упомянуть еще новый Си-подобный язык Millfork:
https://karols.github.io/millfork/

Позиционируется как язык среднего уровня. Немного экспериментировал с ним, впечатления очень неплохие.
Даже несмотря на то, что он больше заточен на 6502 и z80, а не 8080, генерируемый для 8080 код по производительности приближается к PL/M и значительно опережает z88dk.
Сам язык, конечно, своеобразный. Несколько похож на Си, но менее гибок и более приближен к архитектуре 8-битного компьютера.

andrews
04.03.2024, 13:55
Под z80 версии PL/Z так и не нашли?

- - - Добавлено - - -


язык Millfork
по непонятным причинам отсутствует релиз под win32... и исходников под нее 32 битную версию тоже нет.

Pyk
04.03.2024, 23:21
по непонятным причинам отсутствует релиз под win32... и исходников под нее 32 битную версию тоже нет
Я далек от этой темы, но думаю, это потому, что отсутствует для Win32 используемый для создания Native-приложения GraalVM.

А jar-версия под Win32 тоже не работает?
https://github.com/KarolS/millfork/releases/download/v0.3.30/millfork-0.3.30.zip

Запускать java -jar millfork.jar

Oleg N. Cher
05.03.2024, 01:20
Да уж. Выбор Scala в качестве средства разработки ретро-компилятора, как минимум, странный, но есть что есть.

andrews
05.03.2024, 08:55
А jar-версия под Win32 тоже не работает?
работает. А в exe-ник ее никак?

Oleg N. Cher
05.03.2024, 23:31
В смысле, отучить от JRE? А зачем? Что это даст?

Не, может как-то и можно, но это пляски с бубном.

Beaver
12.03.2024, 23:30
Решил тут понастольгировать и на фоне этого получилось сделать игрушку под Бейсик МИКРОН для РК-подобных машин.
Игрушка называется "Злые пещеры" и похожа на рогалики, правда сильно примитивнее. Писал подобное ещё в школе, решил вспомнить.
Описание и всё неодходимо находится в приложенном архиве.
Если кому будет интересно, по игрушке был стрим на канале уважаемого Videogames Sematary. Посмотреть можно тут (https://www.youtube.com/live/wnkjtj4jNbc?si=iBvTT1ojEDMHqAa_).

https://i.ibb.co/LtN7xB1/Screenshot.png

80491

Zidane
20.03.2024, 10:21
В процессе написания различных программ столкнулся с осознанием того, что генератор псевдослучайных чисел есть насилие над мозгом и процессором. Достаточно просто подготовить последовательность. данные из которой перебирать по числам другой последовательности - и через несколько прогонов этого кода средний человек уже едва ли сможет вычислить текущую последовательность. Если же это дело еще и завязать на действия игрока, то получаем почти полноценный генератор случайных (причем почти настоящих случайных) чисел... Блин, три дня доходил до этого. пока пытался свой ГСЧ написать... А ларчик-то просто открывался. Плюс почти равная вероятность выпадения любого значения из списка, которая будет только еще больше выравниваться при каждом перемешивании списка. Собственно, настоящие случайные числа, как мне показалось, и не нужны особо. Достаточно организовать сложно предсказуемую последовательность. Сугубо имхо, но алгоритм перетасовки карт в колоде получился куда как проще моего несостоявшегося ГСЧ. А теперь писать пятнашки ))) Ко всему, процессор успевает выполнить достаточно много таких прогонов за секунду, что тоже хорошо сказывается на скорости выполнения программы... Одни плюсы, никаких минусов )))
Вообще это, может, и общеизвестная информация, а только вот нигде я раньше такого не видел. Так что для меня это новый способ организации ГСЧ, который еще и не грузит процессор почти - только работа с регистрами и памятью ну и сложение для вычисления нужного индекса в последовательности источнике...

Hammer
20.03.2024, 10:41
У меня так легко и просто не получилось, особенно если нужно, чтобы при включении компьютера выпадало каждый раз разное число. Немного помогло подмешивание байтов из нестёртого ОЗУ т.к. там есть мусор после включения. И еще у меня порт D000 разведён на плате, но к нему ничего не подключено. Из него можно читать "воздух", статические наводки. Тоже немного помогло.

Zidane
20.03.2024, 11:42
У меня так легко и просто не получилось, особенно если нужно, чтобы при включении компьютера выпадало каждый раз разное число. Немного помогло подмешивание байтов из нестёртого ОЗУ т.к. там есть мусор после включения. И еще у меня порт D000 разведён на плате, но к нему ничего не подключено. Из него можно читать "воздух", статические наводки. Тоже немного помогло.

Ну я бы так не заморачивался... На начальном экране, пока юзер что-нибудь бы не сделал (например кнопка начала игры) - наматывал бы список по новой без остановки. Или, в самом простом варианте, inr r, что даст по настоящему случайно число - ведь наматывать его проц будет с большой скоростью, пока ждет действий игрока - результат для него будет более чем случаен. Блин, мне эта мысль с выборкой и накруткой все мышление свернула. Ну я в том плане, что такой генератор, с привязкой к действиям пользователя, в моих глазах выглядит намного более случайным, чем любой, пусть и самый навороченный ГСЧ. Именно из-за погрешности в концах диапазона генерируемых значений последнего.

Hammer
20.03.2024, 12:01
Я так и сделал, счётчик наматывает! Но при запуске игры хотелось бы каждый раз выводить новую приветственную надпись. Т.е. до того, как игрок произвёл действие.

Alikberov
20.03.2024, 12:22
Старый, как мир, трюк (https://www.cpcwiki.eu/index.php/Programming:Random_Number_Generator).:v2_dizzy_bot an:

Zidane
20.03.2024, 17:26
Старый, как мир, трюк (https://www.cpcwiki.eu/index.php/Programming:Random_Number_Generator).:v2_dizzy_bot an:

ну для генерации одного числа может и сойдет. А теперь представим, что нужно перемещать колоду карт, или даже поле игры в пятнашки. Если случайным образом генерировать каждое новое число, то, помимо генерации, придется контролировать, чтобы номера не повторялись. И если для пятнашек еще терпимо, то вот при такой генерации колоды карт задержка будет весьма чувствительна, особенно по мере приближения к концу генерируемой последовательности и уменьшения списка свободных значений. 36 карт при таком подходе собираются иногда по минуте. Абсолютно не выгодно в плане времени. За тоже время (и даже за намного меньшее) методом выборки по индексам можно накрутить последовательность, которая по своей случайности ничуть не будет уступать генерируемой
Собственно я к чему: вопрос ведь не в том, насколько число должно быть случайным, а в том, насколько алгоритм генерации подходит под текущую задачу.

Ведущий_специалист
21.03.2024, 00:38
https://github.com/maxadler1979/palmira/tree/main/games
Там можно найти Trex под рк86 версии (под пальмиру тоже есть с исходниками). Выкладывал ранее, но видимо так никто и не заметил так как велось активное обсуждение непонятно чего.

Fishbone
21.03.2024, 16:59
Графоний шикарен.

Hammer
24.03.2024, 01:14
Написал простую игру-демку, где игрок получает предсказание. Варианты для четырёх платформ: РК журнально-эмуляторный, РК SRAM, Апогей, Пальмира.

https://zx-pk.ru/attachment.php?attachmentid=80545&d=1711231998


https://www.youtube.com/watch?v=1xomZ59tHWY

Спрайтовая графика, одноканальный звук. Все версии немного отличаются.

Смотреть лучше на телевизоре 16:9, тогда пропорции максимально приближены к задуманным.

Версия для SRAM Сергея Киселёва, не знаю на сколько она отличается от других срамоидов, если звука не будет, пишите, допилю.

Пришлось одновременно программировать, писать музыку, рисовать шрифт и паять РК, всё в условиях ограниченного времени. Поэтому наверняка есть косяки. Пишите, поправлю.

Забери своё предсказание у чародейки: 80544

Shaos
24.03.2024, 06:53
А что такого особенного в РК SRAM? По идее должно быть совместимо с обычным РК

Hammer
24.03.2024, 08:09
Там средний канал ВИ53 используется для тактирования последовательного порта. Нулевой канал висит в воздухе. И только второй канал идёт на звук. Но гейт ВИ53 надо сначала поднять на ВВ55, так же как и активацию звука. Тем не менее, именно эта машинка мне пока нравится больше остальных клонов. В этой версии демки светодиод РУС/ЛАТ мигает в такт нотам.

У журнального РК в звукогенерации участвуют все три канала, но выход на один канал.

У Апогея и Пальмиры звук трехканальный.

В версии для Пальмиры так же используется другой кастомный шрифт.

Вобщем отличий между платформами достаточно.

Shaos
24.03.2024, 09:25
А т.е. речь про ВИ53? В "классическом" РК SRAM32K от alexcp нету ВИ53 - я в своей версии воткнул ВИ53 в диапазон #B000...#BFFF, а где у Киселёва оно? Поверх ВВ55 как журнал Радио предлагал?

Hammer
24.03.2024, 09:48
Нет, на отдельных адресах порт и звук. ВИ53 - #9000, порт - #A000.

Shaos
24.03.2024, 10:21
Нет, на отдельных адресах порт и звук. ВИ53 - #9000, порт - #A000.
Понятно - спасибо!

Fishbone
24.03.2024, 14:28
Написал простую игру-демку, где игрок получает предсказание. Варианты для четырёх платформ: РК журнально-эмуляторный, РК SRAM, Апогей, Пальмира.

https://zx-pk.ru/attachment.php?attachmentid=80545&d=1711231998


Визуальные новеллы с такой графикой делать можно. Выглядит красиво.

Hammer
24.03.2024, 15:09
Это надо рисовать уметь. Тут я художника привлекал, сам не смог нарисовать. Ну или покупать готовые ассеты и что-то с ними придумывать.

NEO SPECTRUMAN
24.03.2024, 21:45
Визуальные новеллы с такой графикой делать можно.
рамы на РК не хватит

Hammer
24.03.2024, 21:54
рамы на РК не хватит

Хватит. Псевдографика и текст легко сжимаются.

NEO SPECTRUMAN
24.03.2024, 22:03
Хватит. Псевдографика и текст легко сжимаются.
щас

разве что она будет ТОЛЬКО из тех одних 16 символов псевдографики
как на картинке вышо

и то если взять калькулятор
то получаетсо скудненько

хотя никто ж не запрещает делать подгрузки

а на тему "игор" с "узкими полосочками" картинков из 80-х
то они НЕНУЖНЫ

Hammer
24.03.2024, 22:23
128 символов, это уже два символа в один байт помещаются) Псевда поместится 4 знакоместа в один байт.

Но сначала надо придумать ИНТЕРЕСНЫЙ геймплей, нарисовать картинки, написать тексты. Тогда и станет ясно влезет или нет.

Практика, она от теории радикально отличается в данном случае. Можно и картинок навертеть, и текстов написать, но играть будет крайне неинтересно. А вот если получится интересно, тогда уже и преграда в виде подгрузки не будет восприниматься таковой.

Shaos
24.03.2024, 23:02
При наличии квазидиска (даже по vinxru) можно в пределе получить 8 мегабайт (256 страниц по 32 кило) - туда можно в непожатом виде 4228 экранов натолкать (из расчёта 64x31 символов без промежутков), а если пожать - то и ещё того больше :v2_dizzy_champagne:

Если взять хотя бы 10 секунд на экран, то это получается 11 часов геймплея :o

Hammer
24.03.2024, 23:24
Я вот всё думаю, что такую игру можно в отдельный картридж затолкать + на картридже запоминать прогресс и немного разнообразить звуковые эффекты. И паять интересно, и поиграть можно.

Shaos
25.03.2024, 00:21
Я вот всё думаю, что такую игру можно в отдельный картридж затолкать + на картридже запоминать прогресс и немного разнообразить звуковые эффекты. И паять интересно, и поиграть можно.Это да - можно дешёвый SPI EEPROM впаять где-то рядом с FLASH-ом и хитрым способом побитно в него писать-читать (для записи прогресса или лидерборды скорость особо не нужна), а можно и прямо во FLASH, защитив от записи блоки где сама игра сидит :)

С другой стороны старый добрый способ с захардкоденными паролями между уровнями тоже проканает - тогда в картридже будет только ПЗУ и народ может друг с другом делиться прогрессом просто передавая вновь открываемые пароли "из уст в уста"...

- - - Добавлено - - -

Для графония поди можно AI задействовать - вот например что мне выдала Gemini (AI от гугла) на просьбу нарисовать чёрно-белый пиксельарт про кота играющего в шахматы:

https://zx-pk.ru/attachment.php?attachmentid=80547

По-моему, вполне по РК-шному получилось...

NEO SPECTRUMAN
25.03.2024, 01:05
128 символов, это уже два символа в один байт помещаются) Псевда поместится 4 знакоместа в один байт.
математик из тебя никакой

- - - Добавлено - - -

а на тему портировать существующее
конвертируя картинки
щас глянул
никакой 6х8 не выгребает "спрайты"

потенциально что то можно на апогейском 6х4
https://i.postimg.cc/N0Tj9Zvk/1846101-dithered-0001.png
https://i.postimg.cc/TwKj8RzJ/184610-dithered-0002.png
но тогда текст придетсо делоть "крыпным" шрифтом....
ну и носы и рты придетсо проставлять при помощи художнека :)

6х4 из обышного фонта тоже не выгребает

Shaos
25.03.2024, 06:14
Написал простую игру-демку, где игрок получает предсказание. Варианты для четырёх платформ: РК журнально-эмуляторный, РК SRAM, Апогей, Пальмира.

https://zx-pk.ru/attachment.php?attachmentid=80545&d=1711231998

Спрайтовая графика, одноканальный звук. Все версии немного отличаются.

Смотреть лучше на телевизоре 16:9, тогда пропорции максимально приближены к задуманным.

Версия для SRAM Сергея Киселёва, не знаю на сколько она отличается от других срамоидов, если звука не будет, пишите, допилю.

Пришлось одновременно программировать, писать музыку, рисовать шрифт и паять РК, всё в условиях ограниченного времени. Поэтому наверняка есть косяки. Пишите, поправлю.

Забери своё предсказание у чародейки: 80544

Archive: weird.zip
Length Date Time Name
--------- ---------- ----- ----
10691 2024-03-24 00:53 weird_apogei.rka
10687 2024-03-24 00:49 weird_emu80.rkr
13779 2024-03-24 00:54 weird_palmira.rkl
10702 2024-03-24 00:51 weird_sram.rkr
--------- -------
45859 4 files

А кто-то пробовал писать супер-пупер универсальный код, который может сам детектировать на чём он запустился - РК, Апогей или Микроша (чтобы использовать правильные адреса контроллеров в каждом конкретном случае)? По идее по содержимому ПЗУ это легко сделать (да и ВИ53 наверное можно как-то подёргать по разным адресам, чтобы понять где он реально есть)...

Hammer
25.03.2024, 06:31
А кто-то пробовал писать супер-пупер универсальный код, который может сам детектировать на чём он запустился - РК, Апогей или Микроша (чтобы использовать правильные адреса контроллеров в каждом конкретном случае)?

А разные типы клавиатур как дёргать? МС-7007 как отличить? Я попробовал составить список адресов ВИ53, ничего не получилось, будет новый клон, будет новый адрес + новая схема включения со своими гейтами и тактовой частотой)))

NEO SPECTRUMAN
25.03.2024, 06:42
А кто-то пробовал писать супер-пупер универсальный код, который может сам детектировать на чём он запустился - РК, Апогей или Микроша (чтобы использовать правильные адреса контроллеров в каждом конкретном случае)?
а зачем тратить драгоцанные байты рамы
на то что НИКОГДА не пригодитсо?

да и у юзыра скорей всего только какойто один комп
зачем ему тянуть баласт из совместимостей?
да и "универсальный" код != быстрый
и грузить кто то будет это через матафонный вход потом

это в 90-х было актуально когда интернетов небыло
и когда софта должна была быть заточена под все и сразу
щас это уже НУ НУЖЕНо
а потом еще и все эти автодетекции не работают на новых суперклонах
которые еще не вышли на момент написания автодетектора....

намного лучше и проще сделать n версий
под конкретные железки и без баласта и мин замедленного действия



да и ВИ53 наверное можно как-то подёргать по разным адресам, чтобы понять где он реально есть)...
и попасть в новомодный контроллер сд карты Ж)
ТЫ как бутто не спецтрумист и не знаешь что низя просто так тыкать куда не попадя без ВНЕЗАПНО :)

Shaos
25.03.2024, 07:13
Это не юзеру проще, а разработчику - вместо генерации кучи бинарей на все случаи жизни делаешь один .rk и всё...

> МС-7007 как отличить?

Попросить нажать какую-то кнопку для старта игры - в стандарте будет один ответ ВВ5, а в МС7007 - другой (кстати как много клонов с МС-7007?)

P.S. Хотя есть вариант подключения МС7007 задом-наперёд, когда ВВ55 программируется иначе - в этом случае сложнее, но не сильно - попробовать так, попробовать эдак...

NEO SPECTRUMAN
25.03.2024, 07:21
вместо генерации кучи бинарей на все случаи жизни делаешь один .rk и всё...
куча бинарей генерируетсо намного проще
чем цепление и тестирование автоддетекций
цепление платформозависимых переключалок и прочей мурнки

хотя вот например "драйвер" щелкания памяти во всяких там спецтрумах
с вызовом через call-ы
обслуживать и расширять было бы проще чем генерация кучи бинарей с if-ами или макросами под каждую машину

но тут как всегда
универсально != быстро

но в плане рк-шок это не тот случай
да и со быстротой у него тоже не очень Ж)

Hammer
25.03.2024, 10:43
Это не юзеру проще, а разработчику - вместо генерации кучи бинарей на все случаи жизни делаешь один .rk и всё...

Нет, это только до выхода нового клона или до момента, когда юзер заапгрейтит свой комп чем-нибудь на неведомом порту. А бывают ещё ч/б РК и цветные, и там на уровне атрибутов уже несовместимость. Вообще тотальная. Силы будут тратиться не на разработку игры, а на постоянное поддержание актуальности процедуры детекта. Я сделал такую попытку, не получилось малой кровью, только кучу времени потерял.

Для себя решил, что все приращения юзер делает на свой страх и риск, соответственно, поможет только портирование.

cy6
30.03.2024, 18:01
Игры пишутся и под Бейсик, и ведь живут с этим как то. А современные всегда пишутся под движок.
Почему бы и на рк-совместимые не писать так же? Задача игры - играть, а движка выполнять всякие стандартные вещи и взаимодействовать с аппаратурой.
Что то типа игрового биоса.

Несовместимость не такая трагичная, как здесь описывают. Софт всегда умнее железа, априори.
Разве что схема подключения ВИ53, к допилу "классики", это всегда неизвестная.
С цветными атрибутами, можно решить выбором варианта цвета при старте программы, также как и с ВИ53. Ну или генерацией варианта игрового биос.
Остальные вещи все известны, и получаемы через стандартные п/п Монитора.
Кстати, один из детекторов запуска уже написан Виталием.

Ратмир
31.03.2024, 07:28
https://youtu.be/ZkFo471Nvvk?si=v1B0-p_9umpjDbT9&t=644

Alikberov
31.03.2024, 14:34
Предлагая исходный код собственной прокрутки экрана с предельной производительностью.

Shaos
31.03.2024, 15:35
Поигрался с наследием vinxru и получил на РК (точнее пока в эмуляторе Emu80) подобие 16 градаций серого с разрешением 128x50 пользуясь классическим знакогенератором подрезав его через ВГ75 :)

https://zx-pk.ru/attachment.php?attachmentid=80571

Программка в формате RKR с исходниками на погонять цепляю ниже (конвертер из PNG ещё не допилил) - в отличие от оригинала я тут оставляю от стандартных символов РК только 5 верхних линий, что даёт чуть большее количество комбинаций и упрощает математику т.к. каждое знакоместо теперь делится на две половинки 3x5 которые могут быть заполнены белыми точками в количестве от 0 до 15, что даёт 16 градаций яркости на ползнакоместа - получается каждое знакоместо комбинирует 2 логических пиксела, что даёт графическое разрешение 128x50 (с учётом обычных РК-шных отступов по краям экрана), правда не все комбинации доступны (поэтому надо накапливать ошибку и корректировать яркости по мере конвертации):


| 0 1 2 3 4 5 6 7 8 9 A B C D E F
-----------------------------------
0 | F 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1
1 | 0 0 0 1 2 2 2 0 0 0 0 0 0 0 0 0
2 | 0 0 3 2 0 0 2 3 2 0 0 0 0 0 0 0
3 | 1 0 2 2 0 1 2 1 0 0 0 0 1 0 0 1
4 | 0 0 0 0 1 3 4 2 2 0 1 0 0 0 0 0
5 | 1 0 1 3 0 4 3 8 0 2 2 0 0 0 0 0
6 | 0 0 0 1 3 0 2 5 4 1 0 1 0 0 0 0
7 | 0 0 0 0 0 3 3 3 0 1 0 0 0 0 0 0
8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
B | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C | 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1
D | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
E | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F | 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1

Shaos
31.03.2024, 23:36
Конвертер из серых PNG практически готов :)

https://zx-pk.ru/attachment.php?attachmentid=80576

Shaos
01.04.2024, 18:48
Вот вам ещё Фольксваген до кучи ;)

https://zx-pk.ru/attachment.php?attachmentid=80581

Alikberov
01.04.2024, 19:20
Предельная производительность:v2_dizzy_punk :

Shaos
02.04.2024, 11:06
Исходник конвертера Grayscale PNG 128x50 в образ экрана РК (для демонстрации в формате 6x5) - на выходе ASM и BIN (размером 78x61=4758 байт):

http://www.nedopc.org/forum/viewtopic.php?p=173126#p173126

Теперь надо попробовать со сжатием сколько таких картинок может влезть в один RKR файл :)

P.S. Прикинул по Фольксвагенам - в сжатом виде в память вплоть до 7600h должно влезть порядка 16 Фольксвагенов ;)

P.P.S. В дополнительную память суперклона РК SRAM 128K влезет ещё 54 фольксвагена т.к. всего 70 :v2_dizzy_roll:

inozemcew
03.04.2024, 14:12
Предельная производительность:v2_dizzy_punk :

Простите, но для чего такое может потребоваться? Явно же не для прокрутки экрана. Ведь в РК-подобных имеется аппаратная прокрутка в любом направлении. Хоть программированием контроллера ПДП, хоть просто перестановкой кода F3 по экрану. Мучить несчастный процессор нет никакой необходимости.

Vital72
03.04.2024, 14:16
Простите, но для чего такое может потребоваться? Явно же не для прокрутки экрана. Ведь в РК-подобных имеется аппаратная прокрутка в любом направлении. Хоть программированием контроллера ПДП, хоть просто перестановкой кода F3 по экрану. Мучить несчастный процессор нет никакой необходимости.

это что угодно, но только не скроллинг.
скроллинг подразумевает добавление новой информации при скроллировании. продемонстрируйте, как на вашем примере сделать обычный скроллинг текста, с добавлением нового внизу.

inozemcew
03.04.2024, 16:19
это что угодно, но только не скроллинг.
скроллинг подразумевает добавление новой информации при скроллировании. продемонстрируйте, как на вашем примере сделать обычный скроллинг текста, с добавлением нового внизу.

Честно говоря лень переделывать под вертикальный скроллинг, хотя сам по себе он проще.
Вот вам горизонтальный скролинг с картинкой. Это требовало только найти картинку, в предыдущем примере использовалось содержимое ПЗУ. Надеюсь у вас отпадут все сомнения, что это именно настоящий скролл, а не имитация.

Vital72
03.04.2024, 18:09
Честно говоря лень переделывать под вертикальный скроллинг, хотя сам по себе он проще.
Вот вам горизонтальный скролинг с картинкой. Это требовало только найти картинку, в предыдущем примере использовалось содержимое ПЗУ. Надеюсь у вас отпадут все сомнения, что это именно настоящий скролл, а не имитация.

у вас вращение, а не прокрутка.

inozemcew
03.04.2024, 19:00
у вас вращение, а не прокрутка.

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

Vital72
03.04.2024, 19:22
продемонстрируйте, как своим вращением вы выводите на экран несколько страниц текста

Hammer
03.04.2024, 20:00
Что нужно еще, чтобы вы убедились, что это именно аппаратная прокрутка, точно такая же, как и та программная, которую приводили несколькими постами выше.

Тут имеет место быть недопонимание.

Вот есть многим знакомый экран oled 1306, в нем есть аппаратный скролл. Он переносит именно содержимое памяти экрана так, что картинка сдвигается на один пиксель. В результате, если вы хотите нарисовать движущийся график, то вы стираете крайний столбец экрана и рисуете на нем один пиксель, который экран дальше сам будет скролить. Это в 16 раз быстрее, чем перерисовать весь экран для сдвига содержимого.

В вашем случае вы перемещаете указатель ДМА. Не картинку смещаете, а сами перемещаетесь по картинке. Соответственно, это никак не помогает аппаратно ускорять изменения в самой картинке.

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

Скролл через ДМА ни одну из этих задач не решает. Поэтому назвать его аппаратным скролом язык не поворачивается.

Может кто-то придумает игру на основе данного эффекта, не спорю, наверное что-то типа Scorched Earth, может какой-то платформер, но скролл, который требуется для игр типа R-Type таким образом не получить. Очень ограниченное решение получается.

Shaos
03.04.2024, 20:31
В вашем случае вы перемещаете указатель ДМА. Не картинку смещаете, а сами перемещаетесь по картинке. Соответственно, это никак не помогает аппаратно ускорять изменения в самой картинке.Ну почему же не помогает? Очень даже помогает - точно также программно надо заполнить только новую столбик строчку знакомест с краю сверху (ну и в самом сдвинутом экране возможно программно объекты подвигать). Думаю подобие R-Type River Raid с таким подходом вполне возможно!

P.S. Горизонтальный скролл через смещение указателя ПДП использовать сложнее т.к. мы получается портим старый экран, когда сдвигаем, а при движении вверх-вниз можно уходить вперёд и возвращаться, хотя наверное подобие R-Type таки возможно...

inozemcew
03.04.2024, 21:01
продемонстрируйте, как своим вращением вы выводите на экран несколько страниц текста
Пожалуйста.. Чем только это отличается от предыдущего варианта, ну кроме того, что вместо acsii-арта здесь текст, я :confused:

- - - Добавлено - - -


В вашем случае вы перемещаете указатель ДМА. Не картинку смещаете, а сами перемещаетесь по картинке.
Именно так и работает аппаратная прокрутка на всех 8-битных платформах, где она есть. Никто не гоняет байты по памяти, изменяется именно начальный адрес экранной области. Плюс используется тот факт, что буфер экрана зациклен. Так делается в БКшке, так делается в Векторе, так делается в Amstrad CPC, даже в денди ака NES делается именно так.
Адрес начала изменяется, столбец/строка, уходящие с экрана стираются, а на новом месте рисуется следующие.

- - - Добавлено - - -


А если вы используете псевдографику, то двигать изображение можно плавнее, если сдвигаться на половину знакоместа.
Можно. Но вы представьте, сколько это займет времени, делать побитовую обработку псевдографики процессором.
А можно сделать два буфера экрана, в которых изображение сдвинуто на пол знакоместа. Переключаясь между ними через кадр, и сдвигая их аппаратно можно получить попиксельную прокрутку в 50 фпс.

- - - Добавлено - - -


Думаю подобие R-Type с таким подходом вполне возможен..
В R-Type основная трудность не скролинг, а куча спрайтов на экране.
А вот рабочий клон "Flappy bird" можно сделать за пару дней.
Да и "Geometry dash" не на много сложнее.

Hammer
03.04.2024, 22:06
Но вы представьте, сколько это займет времени, делать побитовую обработку псевдографики процессором.

Блин) Именно поэтому и придумали аппаратный скролл, чтобы разгрузить процессор)


А можно сделать два буфера экрана, в которых изображение сдвинуто на пол знакоместа. Переключаясь между ними через кадр, и сдвигая их аппаратно можно получить попиксельную прокрутку в 50 фпс.

Я так делал. Теперь вообще стараюсь второй экран не использовать. Если изображения сдвинуты на половину знакоместа, то и спрайтов надо два комплекта, тоже со смещением. И две процедуры просчета столкновения со спрайтами. И вообще всего по два комплекта. Вы попробуйте пойти чуть дальше, чем скролл, там много всего вылезает. И 50 фпс не получится, спрайты так быстро не рисуются. Так и рухнули мои надежды на буфер ДМА двойной длины)

Я не к тому, что этот метод плохой, или РК ресурсов не хватает. Я к тому, что аппаратным скроллом такой метод можно считать очень ограниченно. Или думать в сторону геймплея, в котором будет уместен именно такой эффект.

Alikberov
03.04.2024, 22:44
Простите, но для чего такое может потребоваться? Явно же не для прокрутки экрана. Ведь в РК-подобных имеется аппаратная прокрутка в любом направлении. Хоть программированием контроллера ПДП, хоть просто перестановкой кода F3 по экрану. Мучить несчастный процессор нет никакой необходимости.С кодом F3 я экспериментировал: 80601
Основной недостаток - сложности в организации адресации плывуших знакомест.

А представленные выше примеры с горизонтальной и вертикальной прокруткой - чисто программные и ничего не ломающие.
При этом, они - экспериментальные: Исследовалась предельная производительность. Быстрее - нельзя уже.

Вот, например, если подключить ROM-Диск Апогея с прошивкой в 512 Кб или 8 Мб с мультипликационным содержимым, в режиме бегущей ленты можно прогонять: 80602

inozemcew
04.04.2024, 10:47
С кодом F3 я экспериментировал: 80601
Основной недостаток - сложности в организации адресации плывуших знакомест.


В принципе там ничего сложного. Надо работать не с абсолютными адресами, а со смещениями относительно начала экрана. Перед непосредственно выводом добавить текущий адрес начала экранной области и сделать проверку на выход за границы. Если сделать размер экрана кратным 256 байт, такая проверка будет простой и быстрой.

В вашем эксперименте с кодом F3 надо уменьшить длину данных ПДП хотябы на 1 байт - тогда не будет мерцания при прокрутке "вперед". Но лучше сделать длину данных ПДП на одну строку меньше, чем размер экрана. Это позволит прокручивать экран по горизонтали на любую величину. Код F3 не даст экрану "уплыть" из за нехватки данных от ПДП.

Vital72
04.04.2024, 13:25
это так забавно...
изучил код этой "аппаратной прокрутки"...
в общем, смотрите сами:



...
тут инициализация контроллеров,
хотя она ничем не отличается от Мониторной версии
...
0037: 21 C1 77 LXI H, 77C1h ; 30657
003A: 11 00 01 LXI D, data
003D: LBL2: ; [2]
...
всякий код
...
0053: 1A LDAX D
0054: E6 7F ANI 7Fh ; 127 ; '█'
0056: 77 MOV M, A
...
всякий код
...
0076: 1A LDAX D
0077: 77 MOV M, A
0078: 13 INX D
0079: 23 INX H
...
всякий код
...
00A3: C3 3D 00 JMP LBL2
...
0100: data:
тут данные того, что выводится на экран



полная версия в архиве.
и нет, цикл LBL2 -- это не начальная инициализация экрана. этот цикл крутится постоянно и только благодаря ему двигается экран. "DMA-SCROLL - NO MEMOY MOVES !!" как говорится.
и вот пара скринов из консоли эмулятора, что творится в видеопамяти через несколько итераций:


80603

80604

и нет никакого перемещения видеопамяти, ага-ага... А-а-а! Это другое!

inozemcew
04.04.2024, 15:40
Vital72,

Вы когда-нибудь видели игру "Питон"? Кажется, что по экрану ползает огромная змеюка - десятки символов. Но на самом деле движутся только два - голова и хвост. Тут примерно такой же принцип.

Vital72
04.04.2024, 15:45
а тут питон длиной во всю видеопамять... подумаешь, фигня какая

cy6
04.04.2024, 23:08
и нет никакого перемещения видеопамяти
А синхронизация по кадровой там есть, или обычный memcpy?

Vital72
05.04.2024, 03:44
А синхронизация по кадровой там есть, или обычный memcpy?

есть

Shaos
05.04.2024, 07:12
Кстати. Мы тут с Виктором придумали формат RMV. Я прикинул небольшой проигрыватель - а Виктор написал конвертер GIF-RMV. Тема позволяет достаточно прикольно играть видеоролики с сд карточки на экране радио86 рк. Такое уже где то было и не ново.. Если интересно кому - могу оформить в новую тему.
Я сильно извиняюсь, но где таки можно почитать про этот ваш RMV формат? ;)

Pyk
05.04.2024, 09:34
где таки можно почитать про этот ваш RMV формат?
Вот, по просьбе Максима набросал простейший конвертер анимированных GIF в RMV.
Тип компа - РК или Апогей - выбирается в коде, также там закомментирована строка с изменением размера картинки, можно при необходимости добавить.
Описание формата файла - там же в комментах.

По части же плеера - это к Максиму, надеюсь, поделится.

Shaos
05.04.2024, 12:18
Спасибо, понял - т.е. никакого сжатия и каждый кадр целиком, даже если есть повторяющиеся куски от предыдущего кадра?
Не думал поддержать RLE+прозрачность? Размеры видосиков сильно бы уменьшились ;)
Скажи где RMV ролики качнуть - я бы поэкспериментировал :)

Я вот свой формат текстовых мультиков почти 10 лет назад придумал: http://www.nedopc.org/forum/viewtopic.php?f=81&t=10953
Он например сжимает 2-мегабайтный ASCII-мульт про звёздные войны до 184 кило (правда vinxru сжал его до 47, но он похоже кадры прореживал).

Думаю этот мой формат в лёгкую на РК/Апогей налезет - что с пседографикой, что с урезанными стандартными символами (правда надо будет добавить идентификатор типа псевдографики скажем в поле Number: -1 для апогеевской псевдографики, а -4, -5, -6, -7, -8 - для РК-шных шрифтов, урезанных на соответствующее число пикселов по вертикали, как я чуть ранее выдавал примеры для 5).

Pyk
05.04.2024, 12:48
Shaos, нет, сжимать не пробовал, на тот момент задача стояла получить максимальную производительность. Экспериментировать со сжатием пока не готов, можешь подхватить тему. Готовых роликов под рукой нет, постараюсь найти попозже ролики, на которых тестировал.

Если не видел, то вот здесь уже есть подобный проект со сжатием, причем не RLE даже, а более продвинутым:
https://zx-pk.ru/threads/29597-apogej-vosproizvedenie-video.HTML

Также немного экспериментировал со сжатием видео с помощью zx0, но то было на КР04, не РК.

cy6
05.04.2024, 16:09
Виктор верно заметил, что для распаковки нету запаса производительности. Ее вообще нет, даже для вывода, только отрицательная.
Баловство с упаковкой, это когда у процессора есть свободное время.

Shaos
05.04.2024, 18:40
Ну когда данные читаются извне, то иногда быстрее читать меньшее количество байт и декодировать уже по ходу копирования в экран

Kakos_nonos
05.04.2024, 20:01
P.S. Горизонтальный скролл через смещение указателя ПДП использовать сложнее т.к. мы получается портим старый экран, когда сдвигаем, а при движении вверх-вниз можно уходить вперёд и возвращаться, хотя наверное подобие R-Type таки возможно...
Я делал горизонтальный скролл в своей деме. Надо только стирать старую строчку и рисовать новую каждый кадр.

inozemcew
12.04.2024, 14:06
Можно. Но вы представьте, сколько это займет времени, делать побитовую обработку псевдографики процессором.
А можно сделать два буфера экрана, в которых изображение сдвинуто на пол знакоместа. Переключаясь между ними через кадр, и сдвигая их аппаратно можно получить попиксельную прокрутку в 50 фпс.



Ну, чтобы не быть голословным, вот собственно "побитовый" аппаратный горизонтальный скроллинг. Сдвиг каждый кадр происходит на половину символа псевдографики.
Управление: <пробел> - приостановить, <АР2> - выход.
В качестве RND используется байты ПЗУ, так что зацикливание картинки теоретически возможно, но я не дождался такого.
Экран 78х38х8~50Гц, рабочая область 64х32 символа, используются 2 экранных буфера по 0B00Н байт.
В аттаче 2 версии, для РК(цвет по Толкалину) и для Апогея. Исходник для sjasmplus.

cy6
12.04.2024, 23:02
В аттаче 2 версии, для РК(цвет по Толкалину) и для Апогея. Исходник для sjasmplus.
Краса :v2_yahoo:

Hammer
16.04.2024, 19:25
Сквош на этапе добавления звука. Хотел добавить цвет, но совсем запутался. Как правильно сделать атрибуты невидимыми? При инициализации ВГ75 к длине строки добавить 128?

https://zx-pk.ru/attachment.php?attachmentid=80654&d=1713284673

80654

SegaBoy
16.04.2024, 22:03
Как правильно сделать атрибуты невидимыми? При инициализации ВГ75 к длине строки добавить 128?

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

Для атрибутов нужно сбросить шестой бит (F - field attribute) в четвертом байте параметров инициализации ВГ75 (MFCCZZZZ).

Hammer
16.04.2024, 22:11
Ага, спасибо, вроде разобрался...

Hammer
20.04.2024, 19:11
Небольшой анонс моего варианта игры Сквош:


https://www.youtube.com/watch?v=uJOqLWuun4U

Это видеозахват с РК вариант Киселёва, он без цвета, но с подсветкой символов, как ч/б Апогей. Цветастости в итоге получилось добавить совсем немного. Под цвета видимо в будущем придётся рисовать с учётом добавления пустых знакомест.

Загрузка с моего WiFi девайса (https://zx-pk.ru/threads/35692-internet-dali!.html).

inozemcew
23.04.2024, 12:49
Еще немного дополнений. Теперь можно полетать(клавиши со стрелками), популять ракетами(клавиша ’1’), пострелять лазером (клавиша ’2’).
Стрелять и пулять пока не в кого, в планах добавить каких-нибудь противников, пока не придумал каких. Хотя, наверное, в 50 fps много врагов добавить не получится, быстродействие у РКахи просто аховое. Сейчас, без противников отъедается от 60 до 80% времени кадра. В 25 fps вопхнуть можно побольше, но красота будет не та. К сожалению, сам оценить 50 vs 25 не могу - реала нет, а на эмуляторе оценить не получается.
Потому вопрос: что лучше 50фпс, но попроще или понаворочаннее, но в 25?

Цвет на всех версиях РК сделан просто отвратительно. Может забить на РКшный цвет полностью и делать цветную версию только для Апогея?

80694

zebest
23.04.2024, 13:31
Цвет на всех версиях РК сделан просто отвратительно. Может забить на РКшный цвет полностью и делать цветную версию только для Апогея?
звук тоже на РК версиях не фонтан по сравнению с Апогеем. С цветом конечно интереснее, но думаю лучше на РК делать ч\б, а на Апогее - с цветом.
И да, за исходники в правильной транскрипции - отдельное спасибо!

cy6
23.04.2024, 20:02
Цвет на всех версиях РК сделан просто отвратительно. Может забить на РКшный цвет полностью и делать цветную версию только для Апогея?
Имхо, для Апогея и так все пишут цветное со звуком.
А РК весь глухонемой и бесцветный.
Если есть возможность, то оставьте пожалуйста ему цвет.

Hammer
26.04.2024, 23:05
Сквош для журнального РК, для РК SRAM версии Киселёва, для Апогея и Пальмиры.

Жизнь восстанавливается, если набрать 100 очков.


https://www.youtube.com/watch?v=uJOqLWuun4U

Zidane
17.06.2024, 18:35
в общем, текстовый квест. В оригинале - для ZX81. увидел я эти 10 строк и как всегда "да я чо, хуже, что ли?" ну и вот. Имеем на русском для РК на BASIC "Микрон". На самом деле писал не сам, а лишь подогнал код с VIC-20, но работает... С другой стороны, некоторые кодеры BASIC те еще маньяки. Чуть голову не сломал, пока понял, как работает. Команд девять: четыре движения и четыре действия. Список "СЕВЕР", "ЮГ","ВОСТОК","ЗАПАД","ОСМОТР","ВЗЯТЬ ","ИНВЕНТАРЬ","ОТКРЫТЬ","УБИТЬ". С остальным,думаю, разберетесь. Игра очень простая, но мастерство кодера лично меня просто поразило. Потому и заинтересовался переносом. Ну и плюс маленькая игра для РК
Для "Специалист", на самом деле, наверное тоже подойдет, только длина строки BASIC у "Специалист" меньше чем у "РК", а потому наверное строки 20-21 придется по другому пересобрать и команда с номером 1 не нужна. Но я не проверял.
Файл приключение (https://disk.yandex.ru/d/vjl6X_7uNKYOVg)

Проверял в emu80, BASMIKR.RK Для загрузки запустить BASIC, набрать CLOAD"", выбрать файл, подождать загрузку и RUN.... ну вроде все.

P.S. Пардон, перезалил файлик - забыл удалить отладочные команды... Ночь у меня уже )

inozemcew
20.06.2024, 10:16
Доделал демку с полетами до играбельного состояния, предлагаю оценить. Особенно буду рад отзывам рееальщиков, поскольку у самого реала нет, а 50гц на 60-герцовом мониторе - ну такое...

Видеорежим 78х38х8@50Hz, титульный экран в режиме невидимых атрибутов, в остальных местах - видимые атрибуты.

Цвет полноценно сделан только для Апогея, в версии РК цвет убирать не стал, но бороться с "наплывом" цвета на предыдущее знакоместо - желания нет. В монохроме версия РК смотрится вполне прилично.

Поддержка звука только в версии для Апогея, и то больше номинально, т.к. без генератора шума сделать вменяемые звуковые эффекты затруднительно. Для РКшного звука не хватает скорости процессора, который и так неторопливый.

Игра идет в 50фпс, но возможны просадки, так что иметь больше 3-4 объектов одновременно при 50фпс на экране, имхо, малореально.

Геймплей чисто аркадный, т.к. основной целью было затестить возможности ВГ75.

80915
80916

SegaBoy
20.06.2024, 19:55
... Особенно буду рад отзывам рееальщиков, поскольку у самого реала нет, а 50гц на 60-герцовом мониторе - ну такое...

На Апогее выглядит отлично.

80919 80920 80921 80922 80923 80924

cy6
20.06.2024, 22:39
Доделал демку с полетами до играбельного состояния, предлагаю оценить.
Очень впечатляюще. :v2_thumb:
И спасибо за сохранения цвета в РК.

Pyk
20.06.2024, 22:57
поскольку у самого реала нет, а 50гц на 60-герцовом мониторе - ну такое...
Пока к реалу подключен 60-герцовый ЖК-монитор через конвертер, с удовольствием потестирую на ЭЛТ на родной частоте, но уже не сегодня...

Ведущий_специалист
20.06.2024, 23:26
Доделал демку с полетами до играбельного состояния, предлагаю оценить. Особенно буду рад отзывам рееальщиков, поскольку у самого реала нет, а 50гц на 60-герцовом мониторе - ну такое...

Видеорежим 78х38х8@50Hz, титульный экран в режиме невидимых атрибутов, в остальных местах - видимые атрибуты.

Цвет полноценно сделан только для Апогея, в версии РК цвет убирать не стал, но бороться с "наплывом" цвета на предыдущее знакоместо - желания нет. В монохроме версия РК смотрится вполне прилично.

Поддержка звука только в версии для Апогея, и то больше номинально, т.к. без генератора шума сделать вменяемые звуковые эффекты затруднительно. Для РКшного звука не хватает скорости процессора, который и так неторопливый.

Игра идет в 50фпс, но возможны просадки, так что иметь больше 3-4 объектов одновременно при 50фпс на экране, имхо, малореально.

Геймплей чисто аркадный, т.к. основной целью было затестить возможности ВГ75.
80914
80915
80916

с удовольствием потестил бы на живой пальмире, да и остальные пользователи очень заценили бы эту игру.
Я то конечно могу в бинарнике поковыряться видеорежим да порты клавиатуры и таймера подменить, но раз уж автор есть с исходниками почему бы его не попросить..
Спасибо за отличную красочную стрелялку.
Нашел исходники в архиве. попробую сам.

Pyk
20.06.2024, 23:42
flight.zip
Пытался собрать, ругается на кучу отсутствующих меток. Чего-то не хватает? Или есть какие-то нюансы с sjasmplus (раньше с ним сталкиваться не приходилось)?

inozemcew
21.06.2024, 11:33
Прошу прощения, как обычно что-то пошло не так.. Во вложении полные исходники с мейкфайлом. Для сборки бинарников в линухе достаточно команды
make bin
Сборка образов ленты требует утилитки bin2rk. Исходник титульной картинки в формате HEX, для преобразования в бинарный вид используется стандартная линуксовая утилита xxd, но в сорцах лежит уже готовый бинарник, так что теоретически она не нужна, если не трогать исходный .hex.
80926

Pyk
21.06.2024, 12:01
inozemcew, спасибо!
Можно еще поинтересоваться, что за утилита bin2rk? Я, конечно, догадываюсь, что это аналог моей bin2tape (https://github.com/vpyk/EmuUtils/tree/master/bin2tape), но под таким названием я видел только другую утилиту - под Windows и без исходников...

inozemcew
21.06.2024, 13:43
что за утилита bin2rk
Самописное творение времен моего увлечения хаскеллем. Ничего такого, полсотни строк для прикрепления заголовка и подсчета контрольной суммы.

Pyk
21.06.2024, 14:54
Во вложении полные исходники с мейкфайлом.
Взял на себя смелость добавить Пальмиру. Добавил еще одну цель в Makefile, bin2rk пришлось заменить на bin2tape.
На реале пока не пробовал, в эмуляторе вроде бы работает, хотя и притормаживает...

Ведущий_специалист
21.06.2024, 15:21
Взял на себя смелость добавить Пальмиру. Добавил еще одну цель в Makefile, bin2rk пришлось заменить на bin2tape.
На реале пока не пробовал, в эмуляторе вроде бы работает, хотя и притормаживает...

Под живой пальмирой просто пустой экран в заставке, при игровом процессе управление черточкой на пустом экране. Звук в порядке. Но почему же идеально работает под эмулятором???

inozemcew
21.06.2024, 20:04
работает, хотя и притормаживает...
На 60Гц кадровой будет тормозить. Увы, быстродействия ВМ80 впритык хватает для 50Гц.

Кстати, кто знает, как на РКподобных замерить время процедуры в долях кадра, примерно так, как это можно сделать на спеке с помощью бордюра?
Теоритически, на Апогее это можно сделать переключением знакогенератора командами EI/DI, но на эмуляторе Emu80 этот фокус почему-то не проходит. Работает отключение экрана командой ВГ75 $40, но это очень неудобно.

Kakos_nonos
22.06.2024, 19:53
Я на апогее делал через ei/di, работало в эмуляторе b2m.

Pyk
23.06.2024, 01:23
Кстати, кто знает, как на РКподобных замерить время процедуры в долях кадра, примерно так, как это можно сделать на спеке с помощью бордюра?
Теоритически, на Апогее это можно сделать переключением знакогенератора командами EI/DI, но на эмуляторе Emu80 этот фокус почему-то не проходит. Работает отключение экрана командой ВГ75 $40, но это очень неудобно.
Имеется в виду в эмуляторе? Да, в Emu80 EI/DI сейчас действуют на весь кадр целиком :( Можно и доработать, конечно, но это не очень просто, оперативно сделать не смогу...
В отладчике в параметрах CRT отображается текущая отображаемая строка: CurRow. Этого не хватает, неудобно?

А на Пальмире действительно не работает, видно только курсор - нос корабля. Похоже на DMA Underrun, но с чего бы? В общем, не разобрался пока, будет время - еще посмотрю...

inozemcew
23.06.2024, 11:18
В отладчике в параметрах CRT отображается текущая отображаемая строка: CurRow. Этого не хватает, неудобно?
Удобно, если процедура имеет фиксированные тайминги, если длительность меняется туда-сюда и надо оценить минимум/максимум - без визуального индикатора тяжко.


в Emu80 EI/DI сейчас действуют на весь кадр целиком :( Можно и доработать, конечно,
Лучше добавить отдельный индикатор и контрольные точки в отладчике(по типу точек останова), которые отражались на этом индикаторе.

Pyk
23.06.2024, 11:42
Лучше добавить отдельный индикатор и контрольные точки в отладчике(по типу точек останова), которые отражались на этом индикаторе.
Не совсем понял идею...

inozemcew
23.06.2024, 16:54
Идея такая - в отладчик, по аналогии с break points, добавить watch points. Встретив такой watch point, эмулятор не останавливается, а на основном экране выделяет или подсвечивает знакоместо, строку, линию растра (не знаю, что будет удобнее). Расставив такие "точки наблюдения", можно наглядно видеть, что где выполняется относительно начала кадра.

Pyk
24.06.2024, 01:26
inozemcew, понял, подумаю, но, к сожалению, в ближайшее время скорее всего сделать подобное по ряду причин не получится :(

Pyk
12.07.2024, 01:08
Особенно буду рад отзывам рееальщиков, поскольку у самого реала нет, а 50гц на 60-герцовом мониторе - ну такое...
К сожалению, пока так и не выбрался подцепить ЭЛТ-монитор к реалу, зато обзавелся монитором с поддержкой FreeSync.
В общем, если на мониторе и в настройках видеокарты включить FreeSync/GSync, а в настройках Emu80 выключить vsync и ограничение FPS, то выглядит очень даже здорово :)
Думаю, на ЭЛТ будет еще лучше, постараюсь в ближайшие выходные все-таки достать монитор и проверить.

Zidane
02.09.2025, 11:41
Насчет самой идеи написания игр: было бы весьма неплохо собрать справочные материалы в одном месте. Особенно по работе с экраном и псевдографикой. Набросал под стандартный режим расчет байта атрибутов, расчет адреса для него и настройку видеоконтроллера. Может кому и пригодится. Лично мне бы было весьма интересно узнать, как скрывать байты атрибутов с экрана. Но это просто для справки, едва ли я что-то хоть сколько-нибудь серьезное буду писать для РК...

https://youtu.be/iw9TJYayE50

Hammer
02.09.2025, 12:20
Я так примерно и собираю материалы и куски кода. Получается некий движок. Вывод спрайтов, звук на ВИ53, расчёт ячейки видеопамяти по координатам, ГПСЧ, сканирование клавиатуры, инициализация видео, коллизии и другой код - собрано в кучку и описано обильно текстом. Всё в группе ТГ, если нужно, пишите в ЛС, дам ссылку.

Vital72
02.09.2025, 12:22
ну, раз пошла такая пьянка, может будет полезна моя новогодняя ёлка для изучения атрибутов -- https://github.com/radio-86rk/tree2025.rk

Ведущий_специалист
04.09.2025, 12:08
Народ, может есть у кого? Ищу реализацию рисования линий алгоритмом брезенхема на ассемблере 8080. Рисование точки сам вроде справился - а здесь как то затык, для меня сложно. Может кто уже проходил это?

Hammer
04.09.2025, 13:32
Брезенхем очень медленный для РК. И опять же, смотря для какого разрешения. Если ширина экрана больше 128 точек, то уже надо придумывать двухбайтовое знаковое сложение/вычитание, которого в 8080 нет. Тут надо что-то сильно проще использовать.

Alikberov
04.09.2025, 14:25
Народ, может есть у кого? Ищу реализацию рисования линий алгоритмом брезенхема на ассемблере 8080. Рисование точки сам вроде справился - а здесь как то затык, для меня сложно. Может кто уже проходил это?Как-то вот так:
MVI L,10 ; X1 = 10
MVI H,50 ; Y1 = 50
MVI E,60 ; X2 = 60
MVI D,30 ; Y2 = 30
;;;;;;;;;;;;;;;;;
MOV A,E
SUB L ; DX = X2 - X1
JNC LDX
CMA
INR A ; DX = -DX
LDX: MOV E,A
SBB A
ORI 001H
MOV C,A ; C = SGN(X2 - X1)
;;;;;;;;;;;;;;;;;
MOV A,D
SUB H ; DY = Y2 - Y1
JNC LDY
CMA
INR A ; DY = -DY
LDY: MOV D,A
SBB A
ORI 001H
MOV B,A ; B = SGN(Y2 - Y1)
;;;;;;;;;;;;;;;;;
MOV A,D
CMP E ; IF DX < DY
JC L1
MOV D,E
MOV E,A ; THEN SWAP DX,DY
;;;;;;;;;;;;;;;;;
L1: MOV A,E
ORA A
RAR ; A = DX >> 1
;;;;;;;;;;;;;;;;;
L2: CALL PUTDOT
PUSH PSW
MOV A,L
ADD C
MOV L,A ; X += DX
POP PSW
SUB D ; A -= DY
JNC L2 ; IF A >= 0 THEN GOTO L2
PUSH PSW
MOV A,H
ADD B
MOV H,A
POP PSW
ADD E ; A += DX
JMP L2

PUTDOT: PUSH PSW
PUSH B
MVI C,00AH
CALL 0F809H
MVI C,00DH
CALL 0F809H
CALL 0F815H
MVI C,02FH
CALL 0F809H
MOV A,D
CALL 0F815H
MVI C,020H
CALL 0F809H
MOV A,H
CALL 0F815H
MOV A,L
CALL 0F815H
CALL 0F803H
POP B
POP PSW
RETПравда, здесь цикл бесконечный с пошаговым отображением координат.

Онлайн демка (https://rk86.ru/index.html?file=https://gist.githubusercontent.com/Alikberov/b4ec1313211ccb412657015ff85fdbb9/raw/fast-lines-86.bin) с рисованием световым пером.
Правда, там прорисовка не отдельными точками псевдографики, а блоками.
Не удалось отладить: Некоторые линии выводятся идеально, другие - сильно глючат.

https://rutube.ru/video/c941e897377f3db01e4d5ce283e8e120/

Ведущий_специалист
05.09.2025, 11:44
...смотря для какого разрешения.

При псевдографике 2х3 точки пальмира выжимает 140х120 точек. Функция на си выглядит вот так...


// Быстрый алгоритм Брезенхэма для линий
void draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) {
int16_t dx;
int8_t dy;
char sx;
char sy;
int err;
// Вычисляем dx = abs(x1 - x0)
if(x1 >= x0) {
dx = x1 - x0;
sx = 1;
} else {
dx = x0 - x1;
sx = -1;
}

// Вычисляем dy = -abs(y1 - y0)
if(y1 >= y0) {
dy = -(y1 - y0);
sy = 1;
} else {
dy = -(y0 - y1);
sy = -1;
}
err = dx + dy;
while(1) {
set_pixel_2x3(x0, y0); // оптимизированная функция

if(x0 == x1 && y0 == y1) break;

int e2 = err<<1;
if(e2 >= dy) {
err += dy;
x0 += sx;
}
if(e2 <= dx) {
err += dx;
y0 += sy;
}
}
}

Как видишь инт уже нужен для err и для вычисления dx. К тому же нужно понимание что есть знаковые переменные.

Hammer
05.09.2025, 14:39
выжимает 140х120 точек

Ну и отлично, каждая координата значит занимает один байт. Но алгоритм чудовищно долгий.

Alikberov
05.09.2025, 15:00
Пусть не смущает скорость и артефакты при запуске.
Это - достаточно скоростной алгоритм построения линий по дельта-таблице через стек.
Вариант A выводит просто звёздочки.
Вариант B выводит блочную псевдографику.

Вариант C интерактивно рисует линию световым пером Emu80: Клавиша A выставляет позицию X1Y1, клавиша B - позицию X2Y2.
Скорость отрисовки линии из точки 1.1 в точку 155,59 варьируется примерно от 64664 до 64981 такта - зависит от попадания в циклы ПДП.
Из расчёта 1,777 МГц процессора получаем не более 27 линий на 156 пунктов каждая.

P.S.: Ниже - демонстрация для Партнёра с исходным кодом.
Клавиши F1-F5 выбирают вершину фигуры, световое перо / мышь - перемещают вершину.
Цикл DRAW плохо оптимизирован и сильно тормозит.
Но, ощутимо быстрее PLOT-LINE Бейсика.

Alikberov
07.09.2025, 10:00
Нажатие любой клавиши замедляет движение, чтобы рассмотреть отдельные детали или подморозить координату:
«X1»
«Y1»
«X2»
«Y2»

https://rutube.ru/video/84b879cbc9c8df4cf949728dc97d25ef/

Alikberov
14.09.2025, 00:00
Вашему вниманию представляю собственную маленькую доработку с ускоренным алгоритмом оператора LINE.
В архиве - собственно файл Бейсика и маленькая демонстрация.
Особенностью также является имитация двухслойного буфера экрана - текст не затирается.

P.S.: Математику никто не ускорял и после муара придётся дождаться построения всех фаз вращающейся фигуры.
P.P.S.: Можете запустить листинг на обычном Микроне, чтобы сравнить и оценить производительность оператора LINE.