Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 29 июн 2025, 17:49

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: 16 авг 2012, 19:07 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Rafi вот считает тоже, что простые языки позволяют больше мозговых ресурсов задействовать под саму задачу, а не на борьбу с особенностями/тонкостями языка. Лучше уж сконцентрироваться на игровых алгоритмах и логике.

Да, вероятно, Вы правы, и весь Laser Basic включать в свою игру совсем незачем. А распотрошить его на процедуры и сделать опционально включаемыми (для экономии памяти) — это у меня в планах было, но руки не дошли.

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

Может быть, что-то такое (вывод спрайта с маской) есть в спектрумной прессе.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 18 авг 2012, 21:44 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Проглядывая спектрумную прессу, набрёл в журнале Depth 01 на очень дельный совет по быстрому выводу спрайтов с маской.
Источник: статья ”Программистам — совершенные методы кодинга и современные способы работы с графикой: печать спрайта, скроллинг экрана, очистка экрана, работы с двумя экранами”.

Цитата:
При выводе изображения по маске, спрайт удобнее всего хранить перемешанным с маской. Байт графики, затем байт маски и т.д. Выводиться такой спрайт будет так:

Код: "EMPTY"
       ...
POP DE ; два байта графики
LD A,D
AND (HL)
OR E
LD (HL),A
INC L
...

Cтек при этом должен указывать на графику, а HL на экран.

Действительно, с этим методом у нас будет идеальная скорость. POP DE достаёт из стека одним махом сразу байт данных и маску, и происходит очень быстрый вывод. Понятно, что это не готовая процедура, но и то неплохо!

Универсальная процедура вывода спрайтов любого размера (да ещё и корректно отрабатывающая выход спрайта за пределы экрана), как в Laser Basic, никогда не будет такой же быстрой, как специализированная, заточенная под фиксированный размер (или хотя бы ширину). Именно поэтому я предполагаю в своей графической библиотеке рассматривать наборы спрайтов с фиксированным размером как другие сущности — тайлы, и работать с ними конечно же другим способом.

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


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 20 авг 2012, 15:35 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Вот ещё интересный цикл статей о спрайтах:


И ещё статья:


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

Остаются ещё вопросы — разрешить процедуре выяснять тип спрайта (с маской или без, цветной или нет) самостоятельно, или же сделать набор процедур. Как быть с выходом за пределы экрана? Если он возможен справа, то почему бы не допускать его и слева? — просто для более широкого функционала. Наконец, вывод через стек хорошо подходит для парного количества байтов. Если ширина спрайта без маски будет 1 байт, то с выводом уже придётся помудрить. Да, ещё моментик — для скорости хранить спрайты будем в шахматном (данные точек — маска) и обратном порядке (поскольку выводиться графика будет с конца массива до его начала с шагом в 2 байта — в этом фишка быстрого вывода через SP). Ещё не решил как быть с атрибутами. Вобщем, так сходу код не вырисовывается, буду ещё думать.


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

Часовой пояс: UTC + 2 часа


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

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club