Просмотр полной версии : Попиксельный горизонтальный скроллинг, научите чтобы быстро
NovaStorm
05.07.2012, 17:19
Как быстро скроллить на n пикселов за кадр применительно к какой-нибудь сайд-скролл аркаде? При наличии двух экранов и/или достаточном кол-ве памяти, это решается, как понимаю, несколькими буферами и скроллингом познакоместно, но как делать это на 48к?
Ну и приведите пожалуйста примеры технологически/визуально навороченных игр(больше-то вроде это нигде так не нужно) и 48, и 128, очень желательно, со стабильным нервущимся скроллом на 1/2/3(нечётные значения кроме 1 бывают?)/4... пикселей, чтобы знать на что ориентироваться.
Ну и приведите пожалуйста примеры технологически/визуально навороченных игр(больше-то вроде это нигде так не нужно) и 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 скролл, тк он побыстрее. А я, как прикину сколько тактов оно скроллится, так явно вижу, что уже познакоместно к таким задержкам надо подходить =)
Как вариант, интересуют техники, чтобы формировать экран за несколько прерываний, но визуально это слишком в глаза не бросалось.
Ну и приведите пожалуйста примеры
http://www.joefish.co.uk/speccy/Joefish_50Hurts_Scroll_Demo.tap
Для быстрого скроллинга нужно не скроллировать содержимое экрана, а хранить набор уже сдвинутых спрайтов и тайлов, и выводить из соответствующего набора. Для скорости, если часть тайлов пустые, их можно вовсе не выводить.
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 делал, но скорости не замерял.
Какие уж тут сдвиги, если даже готовое вывести не успевает...
Еще хотелось добавить что ранее точно такая же тема на форуме была.
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
NovaStorm, да да именно нечестный пуш
быстрее сделать нельзя
единственный вариант - скроллить по минимуму то что можно
кстати рекомендую посмотреть Quest for tire (http://www.worldofspectrum.org/infoseekid.cgi?id=0000477&loadpics=3) очень в этом плане иллюзорная игра
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot