Вход

Просмотр полной версии : Попиксельный горизонтальный скроллинг, научите чтобы быстро



NovaStorm
05.07.2012, 17:19
Как быстро скроллить на n пикселов за кадр применительно к какой-нибудь сайд-скролл аркаде? При наличии двух экранов и/или достаточном кол-ве памяти, это решается, как понимаю, несколькими буферами и скроллингом познакоместно, но как делать это на 48к?

Ну и приведите пожалуйста примеры технологически/визуально навороченных игр(больше-то вроде это нигде так не нужно) и 48, и 128, очень желательно, со стабильным нервущимся скроллом на 1/2/3(нечётные значения кроме 1 бывают?)/4... пикселей, чтобы знать на что ориентироваться.

AAA
05.07.2012, 18:09
Ну и приведите пожалуйста примеры технологически/визуально навороченных игр(больше-то вроде это нигде так не нужно) и 48, и 128, очень желательно, со стабильным нервущимся скроллом на 1/2/3(нечётные значения кроме 1 бывают?)/4... пикселей, чтобы знать на что ориентироваться.

Демо неварта про Р ТУпе, есть исходники.
http://zxaaa.untergrund.net/DEMO3/imagemd.zip

Если подходит первая часть тогда можно исходы завбрать

NovaStorm
05.07.2012, 19:24
Ну так-то(или примерно) и я могу, по ~19 тактов на байт попиксельно, RL (HL): DEC L.
Но так за фрейм только полэкрана скроллится =\
Да и меня конкретно сейчас больше интересует 2/4px скролл, тк он побыстрее. А я, как прикину сколько тактов оно скроллится, так явно вижу, что уже познакоместно к таким задержкам надо подходить =)
Как вариант, интересуют техники, чтобы формировать экран за несколько прерываний, но визуально это слишком в глаза не бросалось.

zebest
05.07.2012, 20:17
Ну и приведите пожалуйста примеры
http://www.joefish.co.uk/speccy/Joefish_50Hurts_Scroll_Demo.tap

Titus
05.07.2012, 20:23
Для быстрого скроллинга нужно не скроллировать содержимое экрана, а хранить набор уже сдвинутых спрайтов и тайлов, и выводить из соответствующего набора. Для скорости, если часть тайлов пустые, их можно вовсе не выводить.

NovaStorm
05.07.2012, 20:51
http://www.joefish.co.uk/speccy/Joefish_50Hurts_Scroll_Demo.tap

Нечестный скроллинг ибо (прозреваю) сделан как куча PUSH'ей, при том, что кол-во загрузок регистров на линию серьёзно ограничено. Меня им newart(кажется) тыкал, когда я попытался фуллскрин фреймовый скроллинг для Battletoads сделать.

---------- Post added at 20:51 ---------- Previous post was at 20:44 ----------


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

С этим-то понятно, но если есть память под сдвинутую графику, меня бы не заломало и сделать пару буферов в 12кб из LD:PUSH, в которые и выводить, а потом блитить. Но в принципе, мысль ясна, баланс не в пользу полноценного скроллинга, а в сторону перерисовки.
А можно пример(хоть кусочек для линии) выводилки спрайтов больше чем 2х2 знакоместа, с маской со сдвигом, можно и фиксированным? Какие методы вообще применяются? Таблички, RLD/RRD и сдвиги вручную?

goblinish
05.07.2012, 22:12
Rld делал, но скорости не замерял.

jemmini
05.07.2012, 22:20
Какие уж тут сдвиги, если даже готовое вывести не успевает...

AAA
05.07.2012, 23:07
Еще хотелось добавить что ранее точно такая же тема на форуме была.

http://zx.pk.ru/showthread.php?t=17608

Barmaley_m
06.07.2012, 14:35
А еще в разделе игры есть история создания игры Sea Dragon с попиксельным скроллингом, практически полный экран за фрейм. Приводятся фрагменты кода, исходники, обсуждаются идеи. Там тоже скроллинг сделан "нечестно": на экран выводятся заранее сдвинутые тайлы, да и то не на весь экран, а только границы ландшафта.

http://zx.pk.ru/showthread.php?t=11233

jerri
06.07.2012, 15:02
NovaStorm, да да именно нечестный пуш
быстрее сделать нельзя

единственный вариант - скроллить по минимуму то что можно
кстати рекомендую посмотреть Quest for tire (http://www.worldofspectrum.org/infoseekid.cgi?id=0000477&loadpics=3) очень в этом плане иллюзорная игра