ATM Games, размышления вслух (графика ATM vs Sinclair, скорость отрисовки спрайтов)

Postby Screw » 01 Nov 2008, 22:14

пока домой с работы ехал, прикидывал скорость вывода спрайтов в АТМ2+ режиме. Получается довольно оптимистично. Может кто оспорит/поддержит ?

Общая идея такая:
рассмотрим типичный иннер-луп в спектрумовской игре, вывод спрайта с маской:

ld a,(de): and (hl): inc l: or (hl): inc hl: ld (de), a: inc e

inc hl для того чтобы требовать выравнивание спрайта только на границу двойки, и не требовать обязательного размещения спрайта внутри 256-байтных границ

быстрее этого можно только через стек, прикинем его тоже:

pop bc: ld a, (de): and c: or b: ld (de), a: inc e

во втором случае надо либо запрещать прерывания, либо восстанавливать испорченный адресом перехода спрайт

расходы по тактам:
48 тактов на байт (8 точек) в первом случае
36 тактов на байт (8 точек) во втором

Переход по вертикали, между линиями спрайта, не учитываем, просто отметим что он не бесплатный, и внесёт не менее 10-30% доп. расходов. Так же, для спектрума не возможно выводить менее одного байта, поэтому можно считать, что все спрайты на самом деле шире на 7 точек. Опять же, никто и никогда не делает вывод спрайта "с дырками", поэтому мерять надо вывод всех точек спрайта целиком. Далее, в 48к нету 2-х экранов, поэтому требуется ещё две, очень тяжелые операции: обнулить бек-буффер, и перебросить его в экран. В 48к нет доп. памяти, поэтому спрайты приходится скроллировать вручную, если нужен вывод с точностью более чем в знакоместо. В 128 есть доп. память (в которой можно хранить уже отскролленные спрайты) и есть второй экран. Но из-за того, что они оба включаются в верхней банке, приходится чем-то жертвовать.

Пример: черный ворон. Он не использует 2-х экранов и работает с бек-буффером как обычный спек.

Итого: получаем расходы в самом лучшем случае 36 тактов на 8 точек, плюс лишние точки по горизонтали. В 7-ми случаях из 8 лишних точек будет 8, и в 1ом случае из 8 лишних точек не будет вообще. Для простоты положим, что лишних точек всегда 7

Теперь прикинем вывод спрайта 3х3 знакоместа (24 на 24 точки):
Это 24линии на (24+7) точек. Получаем 744 точки. Или 93 байта. Вывод байта 36 тактов. Итого на спрайт 3348 тактов. А на самом деле ещё и чуть медленее (вспомним про переход по вертикали).

Теперь прикинем вывод графики на АТМ2+:
Основной вывод можно осуществлять с помощью ld (ix+??), reg8
Это 23 такта на 2 точки
Доп. расходы на редкое (порядка 12-16раз на спрайт) изменение ix навскидку приравняем к расходам в спеке на переход к след. линии экрана при отрисовке спрайта. Так же важно, что "дырки" в спрайте рисовать не нужно вообще. Это даёт некислую экономию, которую прикинуть сложно (зависит от спрайта), но думаю не менее 25%. Её не учитываем.

Вернёмся к нашему спрайту 24х24 точки:
доп. точек слева-справа не надо, т.к. 2 точки сразу 1 байт
((24*24)/2)*23
получается 6624 такта

т.е. вывод ВСЕГО ВДВОЕ (50%) тормознее чем на спеке (при том что экран больше в 5.5 раз!!!!) А если учесть экономию на дырках, и то что изменение IX дешевле чем скачки по линиям при выводе ZX-спрайта (просто за счёт того что гораааааздо реже) то реальная скорость вывода будет где-то 70-90% от спектрумовской. И самое главное, из-за менеджера страниц АТМ2+ можно использовать два экрана, т.е. бек буфер, его очистка и перекидывание не нужны!!! А это не менее 2ух прерываний!!! Или почти половина времени, которое ZX игра тратит на кадр (средний FPS в буржуйских играх чуть более 12). При том что буржуйские игры редко более чем 2/3 экрана обновляет, а в АТМ2+ мы таких ограничений не накладываем.

И что в сухом остатке ?
АТМ2+ графика будет примерно эквивалентна по скорости спектрумовской. Навскидку, если выводить без классической переброски бекбуфера вообще (например см. технику вывода в Blade Warrior), то можно сделать фреймовую игру, для 3-5 не очень больших спрайтов, очень жёстко следя за развёрткой. Если спрайтов будет больше, придётся делать честную промежуточную отрисовку. Для количества <=10...15 спрайтов 24х24 ATM2+ будет быстрее (за счёт отсутствия очистки/переноса бекбуфера), потом они сравняются и ATM начнёт отставать. И ведь я считал вывод по технологиям из ЧВ, а это самый быстрый вывод на спеке! Если же вспомнить про классические 48-ые игры (которых подавляющее большинство) - тем надо ещё и ротировать спрайт. Что делает его вывод _ГОРАЗДО_ ДОРОЖЕ АТМовского... А если вспомнить что не нужно делать перекидывание бекбуфера то появляется очень-очень много освободившихся тысяч тактов.

Т.е. АТМ графика будет БЫСТРЕЕ, чем графика фирменных игрушек, использовавших бек-буффер (таких большинство среди качественных, думаю не меньше 80-90%)

Теперь слушаю возражения =)

P.S.: всё вышесказанное по поводу АТМ2+ графики не применимо к Pegtagon SL, Profi и прочим "клонам" (даже к ATM1), т.к. там нет менеджера страниц, и ситуация эквивалентна обычному 128кб спеку (Только что памяти больше). Всего два варианта: либо бек-буфер, либо куча копирований из окна c000-ffff вниз. А у PentagonSL ещё и тормоза при доступе к видео памяти. Очевидно, что там графика будет прилично МЕДЛЕННЕЕ спектрумовской, даже по сравнению с фирменными игрушками. Стало быть размышления о кросс-написании игр сразу под несколько 16ц архитектур в данной теме мне неинтересны, и просьба от них воздержаться.
Last edited by Screw on 02 Nov 2008, 00:11, edited 1 time in total.
Нас никому не сбить с пути, нам похеру куда идти!
Screw
 
Posts: 79
Joined: 01 Sep 2008, 11:25
Group: Registered users

Postby Black_Cat » 01 Nov 2008, 23:15

Screw wrote:А у PentagonSL ещё и тормоза при доступе к видео памяти. Очевидно, что там графика будет прилично МЕДЛЕННЕЕ спектрумовской, даже по сравнению с фирменными игрушками.

С чего это вдруг? Пенты тем и отличались от многих прочих, что имели прозрачный безвейтовый доступ к памяти и были вместе с KAYями самыми быстрыми клонами.
Screw wrote:P.S.: всё вышесказанное по поводу АТМ графики не применимо к Pegtagon SL, Profi и прочим "клонам", т.к. там нет менеджера страниц, и ситуация эквивалентна обычному 128кб спеку

имхо бессмысленно сравнивать Спек с АТМ-2. С таким же успехом его можно сравнивать с омигой или РС. Это совершенно разные компы, а то, что в АТМ-2 есть режим 128, вовсе не значит что он от этого стал клоном Спектрума, он стал АТМом умеющим работать как Спектрум-128 и не более. Притом только как 128, а не как Пентагон-..., или KAY-..., или Scorpion-..., или Profi-... Вот с тормозным оригинальным 128 и можно проводить сравннение smile вот только в режиме 128 никакого преимущества не будет, т.к. лишней памяти нет lol
Last edited by Black_Cat on 01 Nov 2008, 23:23, edited 1 time in total.
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!".
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Black_Cat
Не умею ничего делать, потому учу
 
Posts: 659
Joined: 17 Apr 2007, 13:19
Group: Removed

Postby Screw » 01 Nov 2008, 23:24

Black_Cat wrote:А у PentagonSL ещё и тормоза при доступе к видео памяти. Очевидно, что там графика будет прилично МЕДЛЕННЕЕ спектрумовской, даже по сравнению с фирменными игрушками. С чего это вдруг? Пенты тем и отличались от многих прочих, что имели прозрачный безвейтовый доступ к памяти и были вместе с KAYями самыми быстрыми клонами.


АТМ тоже безвейтовый. Так, к слову. Но не пентагонSL. Там режим 16ц реализован "на шару", и вейты только в нём.

Black_Cat wrote:имхо бессмысленно сравнивать Спек с АТМ-2.


Пойми, я сравниваю не для того, чтобы показать у кого "длинее", а только чтобы примерно прикинуть теоретическую производительность графики в играх. Чтобы решить, стоит ли писать игры с динамической графикой, и примерное количество объектов, по сравнению с классическими 48к играм, графику которых мы прекрасно знаем.

Black_Cat wrote:С таким же успехом его можно сравнивать с омигой или РС


Такое сравнение вообще некорректно, т.к. мощности CPU и хардвари для обработки графики находятся на несопоставимом с Z-80 уровне. В случае ATM2 процессор у нас тот же, и "перемолоть" больше данных, чем перемалывает тот же пентагон не получится. Турба несуществанна, прирост в полезных инструкциях порядка 10% (overall 28%). C учётом изначально более короткого кадра (68тыс.т. у АТМ против 72тыс.т у пентагона) то на то и выходит.
Last edited by Screw on 01 Nov 2008, 23:49, edited 1 time in total.
Нас никому не сбить с пути, нам похеру куда идти!
Screw
 
Posts: 79
Joined: 01 Sep 2008, 11:25
Group: Registered users

Postby CHRV » 01 Nov 2008, 23:31

Screw wrote:Пойми, я сравниваю не для того, чтобы показать у кого "длинее".

У БК нет других критериев качества
Многое есть здесь: www.nedopc.com
User avatar
CHRV
Желесяка
 
Posts: 2136
Joined: 15 Apr 2007, 21:52
Group: Registered users

Postby Black_Cat » 01 Nov 2008, 23:46

Screw wrote:я сравниваю не для того, чтобы показать у кого "длинее", а только чтобы примерно прикинуть теоретическую производительность графики в играх.

smile т.е. меряешь в попугаях? интересно сколько в попугаях последний GeForce выдаёт? smile
Screw wrote:Чтобы решить, стоит ли писать игры с динамической графикой

для этого собсно Спектрум ни к чему - эт сугубо АТМовские фишки и проги..
Screw wrote:Там режим 16ц реализован "на шару", и вейты только в нём.

smile там не вейты smile там - полная остановка процессора на экране smile
Last edited by Black_Cat on 01 Nov 2008, 23:48, edited 1 time in total.
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!".
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Black_Cat
Не умею ничего делать, потому учу
 
Posts: 659
Joined: 17 Apr 2007, 13:19
Group: Removed

Postby lvd » 02 Nov 2008, 22:11

Screw wrote:Турба несуществанна, прирост в полезных инструкциях порядка 10% (overall 28%).

Несущественна в ОТМах, а в некоторых пентагонах она на некторых полезных инструкциях даёт прирост в 2 раза! =)
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby Screw » 03 Nov 2008, 14:15

lvd wrote:Несущественна в ОТМах, а в некоторых пентагонах она на некторых полезных инструкциях даёт прирост в 2 раза! =)


PentagonSL: Даже если абсолютно все инструкции ускорить чётко вдвое - это наверное только-только покроет остановки проца на видео-памяти, но не более.

Остальные пентагоны: да, турбированный комп отрисует графику через стек и без бек буфера БЫСТРЕЕ. Бек буфер, даже с турбой, всё так же остаётся проблемой.

P.S.: Посмотрел я зинапс, там действительно нет бек буфера. Благодаря очень существенным ограничениям:
1) спрайты никогда не выводятся ближе друг к другу, чем на одно знакоместо (а значит и маска им не нужна)
UPD: посмотрел другие уровни - всё таки выводятся, правда редко и очень ненадолго! Непонятно зачем аффтар сделал забивание чёрными атрибутами мусора, Разве что пересечение спрайтов - специальная, редко выполняющаяся фича. Пример: DarkFusion. Плавность и цветность графики не уступает Zynaps, но аццких чёрных атрибутов по мусору нет!!! И морганий спрайтов тоже нет!

2) нет заднего фона на который накладывается спрайт (вместо него чернота, поэтому следы спрайта можно забивать атрибутами)
3) автору приходится следить за развёрткой (не так плотно как мультиколоре конечно) - и то, даже с этим спрайты иногда моргают, даже на пустом месте.

Более продвинутый вариант подобной техники есть в игре Blade Warrior (я уже упоминал о ней в первом посте). Там есть задний фон, на который накладывается спрайт. В бек-буфере лежит чистый задний фон. Вывод спрайта происходит так: берём байт из бек буфера, накладываем на него спрайт, выводим байт сразу в экран. Всё! от переброски и очистки бек буфера избавились. Но получили два неприятных артефакта:
1) если спрайт двигать слишком быстро, от него будут оставаться следы. Лечится выводом большего числа байт по горизонтали, чтобы перерисовывать дельту движения.
2) спрайты, так же как и в Zynaps должны не попадать в одно знакоместо (геймплей игры на это и рассчитан)

Моя игра (M.O.A.C.) использует технику из Blade Warrior. С вышеперечисленными артефактами можно ознакомиться в ней.

Игры типа Dizzy даже такую технику не используют, из-за того, что персонаж маленький и один, его можно сразу рисовать в экран, а в начале кадра эту область забирать из бекбуфера. Успеем. И то, в оригинальных иногда мерцает.

Повторюсь: меня интересует быстрая попиксельная динамическая графика с пересечениями спрайтов.
Примеры: Knight Lore, Fairlight, Silk Worm, Scooby&Scrapy Doo, ЧВ, Robocop1, Robocop2, Earthlight, Nebulus, HATE, Potsworth & Co, Satan, TMNT (кстати черепашки - показательный пример, когда совки добавили туда проигрывание оригинальной музыки, отключенное авторами, FPS упал в разы до неиграбельного уровня! Авторы не успели, а совки не осилили!)
Last edited by Screw on 03 Nov 2008, 15:17, edited 1 time in total.
Нас никому не сбить с пути, нам похеру куда идти!
Screw
 
Posts: 79
Joined: 01 Sep 2008, 11:25
Group: Registered users

Postby lvd » 05 Nov 2008, 15:05

Screw wrote:1) спрайты никогда не выводятся ближе друг к другу, чем на одно знакоместо (а значит и маска им не нужна)

Выводятся. Друг на друга они ксорятся.
Screw wrote:Непонятно зачем аффтар сделал забивание чёрными атрибутами мусора,

ЧТОБ ЕГО НЕ СТИРАТЬ!
Screw wrote:Повторюсь: меня интересует быстрая попиксельная динамическая графика с пересечениями спрайтов.

Я рад за тебя. А меня интересует графика типа как в savage. БЫСТРАЯ и ЦВЕТНАЯ, со спрайтами не 24х24.
Но, видимо, тебя интересует твоя графика больше чем меня. Потому предлагаю доказать теорию ДЕЛОМ. =)

UPD: если всё ещё есть желание померяться пиписьками, то надо условия выработать. Например, выводится эн спрайтов, размерами 3х3, фон неподвижный, размер игровой области столько на столько. А то в размышлениях слишком много высосанного из пальца.
Last edited by lvd on 05 Nov 2008, 15:15, edited 1 time in total.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby robat_e » 05 Nov 2008, 17:47

lvd wrote:А меня интересует графика типа как в savage. БЫСТРАЯ и ЦВЕТНАЯ, со спрайтами не 24х24.

И меня!
robat_e
 
Posts: 1269
Joined: 08 Apr 2007, 07:34
Group: Registered users

Postby krb » 06 Nov 2008, 03:33

Screw wrote:Моя игра (M.O.A.C.)

чоза моац? чот немагу найти такую игру
мои смешные звуки избавят вас от скуки
User avatar
krb
дядька
 
Posts: 694
Joined: 21 Oct 2006, 15:47
Group: Registered users

Next

Return to Games

Who is online

Users browsing this forum: No registered users and 0 guests