хехехе :p
присмотрись к скриншоту
что ты видишь?
Вид для печати
Зинапс двухфреймовый (25 fps)
Пруф в студию! На Z-80 даже тупое перекидывание экрана занимает больше фрейма. Ну за исключением изврата LD HL, N: PUSH HL, который всё-таки не копирование. Да и требует почти фрейм а ты прокрутку в полфрейма захотел.
Полфрейма занимает заполнение экрана стеком. Одним и тем же паттерном (очень любимо в демках). Но какая же это прокрутка ? Это херня полнейшая. Как только начнёшь выводить что-то похожее на уровень - обвязка съест ещё полфрейма. Плюс из-за небольшого числа регистров и стыков смежных тайлов внутри знакоместа имеем некислое ограничение в количество разных тайлов на одну строку
Теаринг во всей красе. И чо ? Я про него писал.
ущё вспомнил читсто 128к - led storm
http://www.worldofspectrum.org/infos...cgi?id=0009369
http://www.worldofspectrum.org/infos...y=3&loadpics=1
Все 128only игры, выпущенные до 94го года.
Screw, мдя почему то всегда казалось, что 50:)
делал линейный виртуальный экран, в попытке сотворить что то подобное эназе волд, со скролом в знакоместо на 1/2 реального экрана, перерасчет координатЦитата:
стыков смежных тайлов внутри знакоместа имеем некислое ограничение в количество разных тайлов на одну строку
для вывода в реальный убивает практически все приемущества, выводилка лежала
полностью в другой странице. Хотя можно и здорово хитрить, при нормальном формате уровня, например не забирать в буфер фон в местах, где на героя накладывается еще например разрушенная стена и частично перекрывает его, а сразу
печатать этот участок, проверяя на пресечение спрайта героя с этой областью.
Получается быстрее чем, забирать в буфер такие места. фон забирать стеком под героем и врагами.
Конечно это накладывает ограничения на размеры спрайтов и их количество, на экране.
Где то выкладывал уцелевший черновик.
ИМХО спеку не то, что бы не хватает фреймовости, игры губит однообразие уровней и минимум деталей,
тут война уже не за фпс, а за каждый байт,расширяя игровой мир-например проходные уровни
,где по одним координатам печатается разный фон и дополняется надписями, сбитой штукатуркой
и тд.
Погоня за фреймом нужна только в демках, сделать игру на 2 порядка больше и интересней чем тот же
Navy или Recall вполне возможно.амиговские версии кстати жутко страшные.
Щас желею, что не потратил больше времени на подготовку и более детального описание спецификаций,
Хотелось быстрей быстрей, ну и как всегда это подводит, месяц работы с крандашом и табличками
в экселе меня бы не убил, а хорошую идею и проект я загубил и время потратил можно сказать впустую:(
Где, на неподвижном скриншоте? :v2_wacko:
Лично я там вижу:
1) кучу пустого пространства
2) кучу одинаковых тайлов 16x16
дальше продолжать или кто-нибудь уже догадался? ;)
ихихи... а скриншот на уровень не похож?
Нет, на весь экран; и запас на спрайты чтоб оставался
(но в штормлорде в основном куча спрайтов возникает где фона мало)
Стыки пофиг, там же сплошь одинаковые тайлы длинными полосами
---------- Post added at 12:06 ---------- Previous post was at 12:02 ----------
LED Storm 48/128 (я на ленинграде в него игрался)
Lethargeek, что ты в спор ввязался и темнишь? покажи уже скроллинг свой, чтоб всем было ясно.
И еще. Я хотел бы пообсуждать твой скролл отдельно по выводу спрайтов. Мне не совсем ясно как там будет со спрайтами.
Тут кстати посетила глупая идея - а почему никто не пробовал нарисовать игруху в черезстрочном режиме? то есть - тупо через строку весь вывод и скроллинг?
Конечно. Чётко на ножке гриба. Складывается впечатление что ты понятия не имеешь, что такое Tearing. Гугл в помощь.
Лучше бы не гаданием занимался, а открыл игру в дизассемблере. Штормлорд не рисует стеком. Стеком рисовали в Ghosts'n'Goblins. Но, тем не менее, только 25 fps. И то не на полный экран.
Ты код давай покажи. Который за полфрейма экран отрисует.
balu_dark, и что это даст?
чисто теоретически
Да на самом деле так же, как и в Stormlord. Нарисовали несколько строчек, наложили спрайты. Там проблема в том что надо пуши на лету генерить и очень однообразный ландшафт получается. См. уровни в Ghost'n'Goblins, очень хорошо видно ограничение на количество разных тайлов в одной строке.
Ну, по идее, рисуй отдельно спрайты, отдельно задник. Вдвое меньше рисовать и не надо париться о наложении спрайтов на задник. Но вот хз насколько оно красиво получится. Кстати, если очень-очень точно рассчитать код - можно сделать переключение экранов через-строчное, однвременно с отрисовкой фона. И задник и спрайты раскрасить по-разному, без взаимного клешинга. А спрайты обновлять в нижней половине экрана, после того как игровая область отрисована.
Если чисто теоретически - вывод спрайта 8 на 16 (16 это по Y ) с пропуском строк займет по времени ровно в 2 раза меньше времени и будет равно выводу обычного спрайта 8 на 8. То же - скролер.
скрол через строку должен занимать по времени также почти в 2 раза меньше.
да - минусом получим уменьшение разрешения. Но возможно для некоторых типов игр - визуально качество ухутшится не сильно. Тем более по горизонтали точек будет в достатке.
balu_dark, посмотри Walker - мы делали Бакграунд черезстрочный
Ну вот - чтото похожее :) если делать еще и спрайт чересторчным а не только бэк граунд то вообще гуд. А если делать чтобы бэкграунд и осталные спрайты находились на разных линиях - с одной стороны будет быстро с другой - скрол бэкграунда не затронет спрайты и плюс за счет того что фактически линии будут юзаться все - будет не так заметна черезстрочка.
Покажу, если кто-нибудь выдерет мне графику
и раскладку уровня из Stormlord Demo
и не сразу, некогда мне пока
а сам принцип тебе знаком
Написал бы в личку давно
самому теперь надо вспоминать
---------- Post added at 21:40 ---------- Previous post was at 21:22 ----------
паранойя, скрин снимался с неподвижного фона :v2_laugh:
да мне пофиг как он рисует, я пишу как можно то же самое сделать лучше
не экран отрисует за полфрейма, а прокрутит неподвижный фон
поищи в ветке про сидрагона минидемку альтернативного скроллера
принцип тот же, процедурки мелкие только проще
Так бы и писал, что понятия не имеешь как оно работает. А то нагоняешь важности :) Цитирую: "дальше продолжать или кто-нибудь уже догадался"
А я тебе объясняю что лучше не будет ;) Иннер-луп отрисовки да, очень быстрый. Но за деревьями надо видеть лес. Во-первых серъёзные ограничения на дизайн уровней. Во-вторых жрущая обвязка.
Что в твоей терминологии "прокрутит неподвижный фон" ?
Мой скроллер сейчас на отрисовку каждого байта задника тратит (итоговое, среднее значение) 24 такта на байт. При этом возможен параллакс и анимация тайлов. Тайловой графики на каждый уровень до 6528 байт. Это без вырвиглазной замены тайлов на лету. Ограничение на размер уровня (теоретическое) до 8192 пикселя в ширину (в высоту - сколько памяти хватит). Скроллинг во всех 8 направлениях с любым шагом, кратным 2-м пикселям. Никаких ограничений на комбинирование тайлов (присущих стековому выводу как в Ghost'n'Goblins и тайловым парам, как в Zynaps, Robocop, Batman3)
вот как раз имея ПОНЯТИЕ каждый раз копаться в коде необязательно
все понятно по конечному результату
нагоняешь важности)) никаких особых ограничений кроме одного: не загромождать экран
да и принцип отрисовки совсем другой нежели ты себе представляешь
судя по твоим замечаниям
все что на скриншоте видишь (кроме двух спрайтов)
причем именно прокрутит то что в экране, а не выдаст из буфера
и не подготовленные сдвинутые тайлы из набора печатать будет
нужно только пиксельный столбец с краю подрисовать
я пишу конкретно про штормлорд, именно про такую графику
размер уровня ограничен только свободной памятью
нету жестких ограничений на комбинирование тайлов
(только мягкое на общее количество на экране)
стек используется только там где можно и выгодно
собс-но сами тайлы как таковые необязательны
с краю можно пририсовывать что угодно
важна только информация где прокручивать
Хоть и запоздало, но отвечу. У профика, как и у спектрума (профик, как бэ изначально назывался zx-profi) - одно окно проецирования страниц, да это убого. Но. Есть одно но. Есть битик, в порту DFFD, установив который в 1, с 8000h у нас подключается страница 06. Т.е. экран, в расширенном режиме. Атрибуты, мы можем в этот же момент подключить с С000 или с 4000. А куда именно (окно) зависит от другого битика в этом же порту. (забыл я сейчас, схемы под рукой нет). Так вот, окно включено в C000 (bit=0) то расположение памяти такое
00
05
02
XX
Если бит =1, то
00
XX
02
07
Но если мы выставили бит 6 DFFD в 1, то в любом случае, с 8000 у нас сегмент 06 (экран расширенный).
Это хоть и не приближает нас к 4-х оконной системе, но определенно развязывает руки. Так что профи не такая и убогая машинка.
---------- Post added at 01:43 ---------- Previous post was at 01:38 ----------
Лично я делал код, который печатает до 6-и спрайтов 24 на 24 точки, за четверть экрана. Печать правда по xor. Напрямую в экран, для избавления от мерцания - 2 экрана. Это на 3.5Мгц. Больше времени занимало восстановление фона. Т.к. там есть свои особенности. Восстанавливать было больше времени, чем то, сколько напечатали.
---------- Post added at 01:46 ---------- Previous post was at 01:43 ----------
Возможно и меньше, печать каждого спрайта примерно в знакоместо в ширину (по бордеру), ну может чуть больше. Ещё музыка и прочее. В общем 6 спрайтов у меня укладывается в первую треть экрана. (Печать), а вот восстановление фона и остальное отжирают очень много.
Lethargeek, твой метод не годится для игр типа штормлорда
здесь допустима прокрутка в любую сторону
у тебя только в одну
А можно более строгое определение термина "загромождать экран" ?
Скорее всего действительно не представляю. Дык давай его сюда. :) Буду очень рад поковырять.
perpetuum mobile какой-то. Поясню своё недоверие: ~69000тактов / 6144 байт = 11 тактов на байт. Ты же говоришь о полфрейме на скролл. Этого только на голый PUSH хватит. Мягко говоря не сходится :)
Попиксельный сдвиг _ЛЮБОЙ_ информации на экране это RL (HL) / RR (HL), быстрее не сдвинуть. Итого 15 + 4 == 19 тактов на байт. Почти вдвое больше, чем твои первоначальные заявления. Кроме того этот метод категорически не годится для скроллинга отличного от 1го пикселя (как следствие не годится для двух экранов).
Короче, хватит туман нагонять. Давай код :)
---------- Post added at 00:55 ---------- Previous post was at 00:53 ----------
Что за метод-то ?
---------- Post added at 01:09 ---------- Previous post was at 00:55 ----------
Из этих намёков можно сделать предположение, что весь текущее отображаемое окно разбито на под-окна. Внутри которых крутим через RR (HL)/RL (HL).
А если вспомнить про:
То получается какой-то нано-алгоритм. Который будет работать в некоторых тепличных условиях. С динамической генерацией кода. И чуть перекос в дизайне ландшафта - скорость улетает в минуса.
Кроме того это плохо стыкуется с:
Ну и, понятное дело, не обеспечит произвольный шаг прокрутки а также не даст вертикального скролла. И самый эпичный недостаток: надо восстанавливать области под спрайтами. В отличие от тотальной перерисовки.
Screw, смотри тему seadragon
Lethargeek, дракон в местах где много обьектов всетаки подтормаживает раз,
скорость скролла в штормлорд таки 2 а не 1 это два
коррекция кода не всегда приемлима по скорости это три
Ясно. Там не полноценный скролл, а частный случай. Никакой эластичности. То есть если забросать экран рандомным мусором скорость упадёт наверное на порядок.
---------- Post added at 01:23 ---------- Previous post was at 01:22 ----------
Или, другими словами, итоговая скорость прокрутки уровня одинаковая. 1x50fps, 2x25fps.
Screw, Шаришь :)
там движок не мой, моя демка не подтормаживает :p
stormlord demo - 2 пикселя раз в 2 кадра
stormlord game - 4 пикселя раз в 4 кадра
емнип
плавность неодинаковая, особенно по сравнению с игрой
да там все построено на постоянной коррекции :D
несколько тыщ тактов размазанных по нескольким кадрам
а не надо мусора, суть искусства программирования для спека - в умелой эксплуатации частных случаев :cool:
Lethargeek,
1.постоянной и небольшой коррекции
2.некоторые движки хорошие в теории не очень красивы на практике
3.одно дело каждый раз небольшая коррекция другое дело каждый фрейм пересчитывать направление
4. стормлорд1 везде имеет скорость 25 фпс и 2 пикселя за кадр
и кстати посмотри R-Type - особенно уровень со строителями
Давай вернёмся к твоему изначальному сообщению:
Всё-таки не честная, а только в некоторых случаях, специально подогнанных. Причём % заполнения экрана данными должен быть очень низким. Вспоминается демка Drunkard-а. Вроде и фреймово, а с другой стороны слишком узкие рамки.
Такой скролл - это уже чересчур "частный случай" :)
ичо? оно так и работает
что ты хошь, красивее чем оригинальный штормлорд? :)
ничего не пересчитывать, после разворота заработает код прокрутки в другую сторону
а корректировка кодов прокрутки (в обе стороны одновременно)
как была так и осталась только при переходе на знакоместо
ну значит второй штормлорд 4/4
а чего эртайп? вроде там везде 1/2?
"некоторый случай" в данном случае - оригинальный штормлорд :D
с той же графикой и с той же раскладкой уровня
с теми же % заполнения