только код вывода будет 12кб
Вид для печати
На самом деле, сначала запрограммирую весь вывод в лоб. Потом оценю скорость полученного образца. И если не буду удовлетворён fps - полезу в специализированные варианты. Если же всё прокатит, то так и останется. Ибо прирост скорости во всяких высоко-гиморойных способах оставляет большие сомнения. Типа образца от Пьяной Мухи, по поводу движка которого Алоний пускал радужные слюни, а когда зарелизил и на 6 спрайтах картинка стала не фрэймовой - несколько подкис :biggrin: Сам Муха 25 объектов обещал на стриме, а показал демку с 10 и там уже все фри тайминги в нулину. Гыгы....
Особенно лол выкрики на прерываниях в стиле "я НЕ проверял бысродействие, я НЕ считал такты, я НЕ сравнивал с другими способами" - просто ржу...
Всё это, как правило, громкие крики, под слащавые аккорды которых впариваются никому не нужные железки "Купите Evo! Купите Карабас-Profi!" :biggrin:
Могу, в принципе, без проблем, выделить область на своём форуме по геймдеву чисто под ZX платформу. И вновь собрать всё сообщество в одном месте. Если это, конечно, кому-то нужно. Мне не сложно. Он у меня всё равно есть и поддерживается десятилетиями. Реклама отсутствует, рега свободная, говорить можно о чём угодно, репрессий нет, материться можно :biggrin:Цитата:
поздравляю, можешь ник теперь сменить с Драгонслорда на Зоркоглаза
Если надо, - так намекните....
Тонким слоем везде.
Распугали банами всех.
Ибо некогда пока собирать тайловый массив и рисовать карту без редактора, то воспользовался уже существующими от "HeroesII". Привинтил побыстрому мышь, чтобы оценить удобство юзабилити, как лежит рука, как машется мышкой, на сколько всё быстро и отзывчиво... Снапшот можно пощупать здесь:
https://zx-pk.ru/threads/33190-heroe...=1#post1115011
Напоминаю, там нет тенефого буфера. HeroesII не rts, посему рисовка прям на экране. Сейчас переделываю область вывода, скроллеры под варик (скроллеры там по 1 методу по классификации Stl75). Естессно, будет сделано через буфер. Работа идёт.
Определился с распределением памяти и форматом вывода.
1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ
---------------------------------
После долгих размышлений пришёл к выводу, что оптимальный размер массива тайлов это 227 штук в комплекте.
https://a.radikal.ru/a21/2104/48/00d1ef50dc0f.png
Почему? Потому что 36 байтов на 1 тайл. Итого 36х227=8172 байта массив тайлов. Это позволяет держать на той же самой странице карту 64х64=4096 байтов и там же буфер под волновой алгоритм трассера пути 64х64=4096. Последний буфер также по совместительству содержит туман войны в старшем бите. и он же является картой проходимости, т.е. базисом для отрисовки миникарты. Все чёрные точки - пройти нельзя, все белые - пройти можно. Таким образом, миникарта - стандартный монохром. Точки юнитов будут мигать с некоторой периодичностью.
Итого, в верхней странице памяти:
4096 - карта
4096 - туман
8172 - тайлы
---------------
16364 ИТОГО
При какой то важной необходимости можно эпизодически добавить тайлов в нижнюю память. т.к. разрядность для их присутствия на карте есть (до 255 разных).
2. ФОРМАТ ВЫВОДА
-----------------------
Также после долгих раздумий я перебрал все существующие реализации спрайтования и пришёл к внутреннему консенсусу (просто/эффективно). Будет теневой буфер размером 6912, т.е. стандартный экран. В него в центральной позиции печатаются тайлы, квадратом 12х12 тайлов. По бокам остаются полоски по 4 знакоместа без тайлов.
Чёрнобелое спрайтование стандартно переключает верх в банк со спрайтами, выводит их напрямую в этот теневой экран БЕЗ КЛИППИНГА. Монохромная графика рисуется по всему теневому экрану. В конце отрисовки центральная часть теневика (24х24 знакоместа) быстро перекидывается на видимый экран в 16384. Таким образом осуществляется автоклиппинг всего монохрома. При данном способе, очевидно, можно автоклиппировать спрайты до 4х4 знакоместа. В моём Варкрафте максимальные 3х3, так что хватит.
Итого расписание нижней памяти:
#4000,6912 - стандартный экран
#6000,6912 - теневой экран (буфер)
Средняя память:
32768...42000 - управляющая программа
42000...49152 - графическая библиотека низкого уровня
Да, знаю, что грёбаный ULA не благоволит к размещению видеобуфера в медленной странице памяти, но, как это обойти пока мыслей нет. Так что попытаюсь втиснуться в этот формат.
:v2_dizzy_punk:
Кстати, да. Более лаконично. Так и сделаю.
Придётся мышку мальца переписать. Ибо она должна елозится по #07,#c000
И процедуры интерфейсного вывода: текстовыводилка, окнооткрывалка, спрайторисовалка и всё такое....