Извините за оффтоп. Векторовский кваз не так уж плох или даже хорош в сравнении с вариантами расширения озу других советских бытовых ретрокомпов. А в сравнении с тем, что можно и нужно было сделать - мягко говоря слабовато.
Извините за оффтоп. Векторовский кваз не так уж плох или даже хорош в сравнении с вариантами расширения озу других советских бытовых ретрокомпов. А в сравнении с тем, что можно и нужно было сделать - мягко говоря слабовато.
Поверь тому как ты запаришься с буферизацией вывода. Это очень непростое дело на восьмибитках.
Слушай Джерри, он собаку на этом скушал правда кажется на спекки, но 80-й проц вполне похож.
Сам делал на УКНЦ 8 цветов и типа даже получилось, правда вылезли другие вещи что сделать движок это вовсе не означает сделать игру. Там надо еще рисовать, придумывать сюжет и т.д., и это намного сложнее вывода спрайтов.
Однако рад за попытки. А мигание спрайтов надо убирать, оно и правда косяк. И делать спрайты на трех планах чтобы они просвечивали через четвертый тоже.
Вообщем челендж
Из буфериции в буфер делал разделение буфера на знакоместа 8х8 вышло тормозно (правда это УКНЦ там всегда тормоза). Потом взял 16х16 тайлы стало получше, но тоже полезли косяки когда тайл должен залезть "впереди" спрайта. Например ГГ наступает в лужу с кипящей кислотой в тайлах, разумеется спрайт не должен ложиться на булькающую кислоту тайла, а наоборот. Иначе выглядит фигово. Вообщем там много подводных.
Из буферизации делалось как-то так: буфер разделяется на тайлы у которых несколько бит задействовано под состояние.
Один бит это мол сюда нарисовали спрайт на текущем фрейме.
Второй бит это "на прошлом фрейме сюда был нарисован спрайт". (ибо спрайт может тупо пропасть по сюжету или где еще или перейти за тайл вбок скажем там, а прорисовать буфер нужно будет на экране).
Рисуется потом буфер на экран, восстанавливается у себя тоже по кускам в зависимости от флагов. Тот что был на прошлом фрейме тоже рисуется ессно, но не восстанавливается уже ибо на другом фрейме восстановлен.
С тайлами которые впереди или сзади спрайта героя вот уже тупо не хватило битов![]()
У меня был старший байт на тайлы на буфер навроде 12345678
- 1 - сейчас прорисовали туда спрайты,
- 2 - прошлый фрейм прорисовывал (тупо сдвигаются с 1 на 2), а это нужно ибо надо все-ж перерисовать на экране тайл даже когда скажем спрайт с него испарился на прошлом фрейме
- 3 - это неосвещенные тайлы по сюжету прорисовывать на экран нельзя
- 4 - это анимированные и последние 2 бита тайла по фреймам инкризят тайл №
- 5 - типа это кислота там помрешь
- 6 - можно выкопать лопатой
- 7-8 один из четырех выборов либо тайл проходим либо там лестница либо ящик/бочка на которую можно запрыгнуть либо он непроходим
Конечно перебор с этими битами и можно-бы было обойтись ветвлениями, но на УКНЦ они очень тормоза.
Зажирало прилично на лабиринт.. Но вообщем разными извращениями все можно вытянуть![]()
Последний раз редактировалось BlaireCas; 13.08.2022 в 02:25.
Спасибо за советы!
Дописал процедуру и скрипты для вывода анимации спрайта с разной шириной, высотой и оффсетами по xy.
Все монстрики, герой и тестовый проджектал заняли почти 30к.Нужно начинать использовать квазидиск.
Показать пока ничего толкового нет так как из визуального были только тесты.
Это все предсдвиги? Пора начинать жульничать. Настоящие герои подземелий редко ходят меньше, чем на два пикселяХотя похоже, что кваз все равно понадобится, так что почему действительно им не воспользоваться на всю катушку.
Про хранение маски через байт вместе с пикселями видел? Вывод получается удобно типа pop b \ mov a, m \ ana c \ ora b \ mov m, a
Больше игр нет
С прешифтовыми спрайтами там вообще никакой памяти не хватит если даже делать не все 16 цветов. Через таблицы шифтов делать видимо нужно и да, по 2 пикселя герои очень даже ходят и это вполне нормально
Типа байт со смещением = выбор из таблицы. На байт кажется потратится 3 смещения и соответственно таблица будет тоже немаленькая, но имхо оно все-ж лучше чем пришифтованные спрайты хранить.
(а там еще и зеркалирование спрайтов тоже по таблицам видимо заодно будет.. ну впрочем фиг его знает как автор решит)
Последний раз редактировалось BlaireCas; 13.08.2022 в 13:07.
Кстати еще самые кондовые спрайты можно разворачивать сразу кодом. Это, казалось бы, жир, а толку никакого, но скорость та же, при этом освобождается стек. Можно исполнять прямо из кваза. Можно так сделать для чего-то, чего много и надо быстро, типа тот же мысль-прожетктыль.
lxi b, $7e81 \ mov a, m \ ana c \ ora b \ mov m, a \ dcr l
А если без маски и со стеком, тут вообще можно отжиг устроить
lxi b, $55aa \ push b ; 28 тактов на две строки, а если паттерн повторяется, то и вообще 12 + (8 * число строк).
для тайлов / фона, чего бы и нет
Больше игр нет
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)