Приветствую Вас Гость | RSS


Главная страница » ATM Games, размышления вслух - ZX-Форум » Регистрация » ВходВторник
2020-05-26
16:26:33
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
ZX-Форум » Software » Games » ATM Games, размышления вслух (графика ATM vs Sinclair, скорость отрисовки спрайтов)
ATM Games, размышления вслух
ScrewДата: Суббота, 2008-11-01, 22:14:03 | Сообщение # 1
Юзер
Группа: Человеки
Сообщений: 18
Репутация: 0
Статус: Offline
пока домой с работы ехал, прикидывал скорость вывода спрайтов в АТМ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ц архитектур в данной теме мне неинтересны, и просьба от них воздержаться.


we're making ATM demos: Personal Nightmare, Fringe (coming soon)

Сообщение отредактировал Screw - Воскресенье, 2008-11-02, 00:11:01
 
Black_CatДата: Суббота, 2008-11-01, 23:15:15 | Сообщение # 2
Не умею ничего делать, потому учу
Группа: Заблокированные
Сообщений: 659
Репутация: -14
Статус: Offline
Quote (Screw)
А у PentagonSL ещё и тормоза при доступе к видео памяти. Очевидно, что там графика будет прилично МЕДЛЕННЕЕ спектрумовской, даже по сравнению с фирменными игрушками.

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

имхо бессмысленно сравнивать Спек с АТМ-2. С таким же успехом его можно сравнивать с омигой или РС. Это совершенно разные компы, а то, что в АТМ-2 есть режим 128, вовсе не значит что он от этого стал клоном Спектрума, он стал АТМом умеющим работать как Спектрум-128 и не более. Притом только как 128, а не как Пентагон-..., или KAY-..., или Scorpion-..., или Profi-... Вот с тормозным оригинальным 128 и можно проводить сравннение smile вот только в режиме 128 никакого преимущества не будет, т.к. лишней памяти нет lol


"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!".
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.


Сообщение отредактировал Black_Cat - Суббота, 2008-11-01, 23:23:16
 
ScrewДата: Суббота, 2008-11-01, 23:24:43 | Сообщение # 3
Юзер
Группа: Человеки
Сообщений: 18
Репутация: 0
Статус: Offline
Quote (Black_Cat)
А у PentagonSL ещё и тормоза при доступе к видео памяти. Очевидно, что там графика будет прилично МЕДЛЕННЕЕ спектрумовской, даже по сравнению с фирменными игрушками. С чего это вдруг? Пенты тем и отличались от многих прочих, что имели прозрачный безвейтовый доступ к памяти и были вместе с KAYями самыми быстрыми клонами.

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

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

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

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

Такое сравнение вообще некорректно, т.к. мощности CPU и хардвари для обработки графики находятся на несопоставимом с Z-80 уровне. В случае ATM2 процессор у нас тот же, и "перемолоть" больше данных, чем перемалывает тот же пентагон не получится. Турба несуществанна, прирост в полезных инструкциях порядка 10% (overall 28%). C учётом изначально более короткого кадра (68тыс.т. у АТМ против 72тыс.т у пентагона) то на то и выходит.


we're making ATM demos: Personal Nightmare, Fringe (coming soon)

Сообщение отредактировал Screw - Суббота, 2008-11-01, 23:49:22
 
CHRVДата: Суббота, 2008-11-01, 23:31:17 | Сообщение # 4
Желесяка
Группа: Человеки
Сообщений: 631
Репутация: 3
Статус: Offline
Quote (Screw)
Пойми, я сравниваю не для того, чтобы показать у кого "длинее".

У БК нет других критериев качества


Многое есть здесь: www.nedopc.com
 
Black_CatДата: Суббота, 2008-11-01, 23:46:51 | Сообщение # 5
Не умею ничего делать, потому учу
Группа: Заблокированные
Сообщений: 659
Репутация: -14
Статус: Offline
Quote (Screw)
я сравниваю не для того, чтобы показать у кого "длинее", а только чтобы примерно прикинуть теоретическую производительность графики в играх.

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

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

smile там не вейты smile там - полная остановка процессора на экране smile


"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!".
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.


Сообщение отредактировал Black_Cat - Суббота, 2008-11-01, 23:48:54
 
lvdДата: Воскресенье, 2008-11-02, 22:11:49 | Сообщение # 6
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Quote (Screw)
Турба несуществанна, прирост в полезных инструкциях порядка 10% (overall 28%).

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


Многого нет здесь: http://lvd.nedopc.com
 
ScrewДата: Понедельник, 2008-11-03, 14:15:17 | Сообщение # 7
Юзер
Группа: Человеки
Сообщений: 18
Репутация: 0
Статус: Offline
Quote (lvd)
Несущественна в ОТМах, а в некоторых пентагонах она на некторых полезных инструкциях даёт прирост в 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 упал в разы до неиграбельного уровня! Авторы не успели, а совки не осилили!)


we're making ATM demos: Personal Nightmare, Fringe (coming soon)

Сообщение отредактировал Screw - Понедельник, 2008-11-03, 15:17:42
 
lvdДата: Среда, 2008-11-05, 15:05:41 | Сообщение # 8
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Quote (Screw)
1) спрайты никогда не выводятся ближе друг к другу, чем на одно знакоместо (а значит и маска им не нужна)

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

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

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

UPD: если всё ещё есть желание померяться пиписьками, то надо условия выработать. Например, выводится эн спрайтов, размерами 3х3, фон неподвижный, размер игровой области столько на столько. А то в размышлениях слишком много высосанного из пальца.


Многого нет здесь: http://lvd.nedopc.com

Сообщение отредактировал lvd - Среда, 2008-11-05, 15:15:11
 
robat_eДата: Среда, 2008-11-05, 17:47:22 | Сообщение # 9
Младший одепт
Группа: Человеки
Сообщений: 610
Репутация: 5
Статус: Offline
Quote (lvd)
А меня интересует графика типа как в savage. БЫСТРАЯ и ЦВЕТНАЯ, со спрайтами не 24х24.

И меня!


Мы, роботы-бездельники, не любим понедельники.
 
krbДата: Четверг, 2008-11-06, 03:33:50 | Сообщение # 10
дядька
Группа: Человеки
Сообщений: 468
Репутация: 5
Статус: Offline
Quote (Screw)
Моя игра (M.O.A.C.)

чоза моац? чот немагу найти такую игру


мои смешные звуки избавят вас от скуки
 
aloneДата: Суббота, 2009-06-20, 18:40:23 | Сообщение # 11
Осваивается
Группа: Человеки
Сообщений: 39
Репутация: 3
Статус: Offline
В чёрном вороне отнюдь не самая быстрая выводилка спрайтов. И выглядит она не так, как написано, там 8 процедур, которые по столбцам (любое число столбцов любой высоты) выводят спрайт с разным сдвигом по горизонтали. В этом классе самый быстрый движок был у меня в деме Аллодов. А спрайты, сдвинутые заранее, в разы быстрее.
 
aloneДата: Суббота, 2009-06-20, 18:41:58 | Сообщение # 12
Осваивается
Группа: Человеки
Сообщений: 39
Репутация: 3
Статус: Offline
Особенно если они фиксированного размера.
 
kyvДата: Воскресенье, 2009-07-12, 18:16:33 | Сообщение # 13
Юзер
Группа: Человеки
Сообщений: 14
Репутация: 0
Статус: Offline
Quote (Screw)
TMNT (кстати черепашки - показательный пример, когда совки добавили туда проигрывание оригинальной музыки, отключенное авторами, FPS упал в разы до неиграбельного уровня! Авторы не успели, а совки не осилили!)

ссылочку дайте пожайлуста на эту версию где совки добавили
 
ScrewДата: Понедельник, 2009-07-27, 23:06:07 | Сообщение # 14
Юзер
Группа: Человеки
Сообщений: 18
Репутация: 0
Статус: Offline
Quote (kyv)
ссылочку дайте пожайлуста на эту версию где совки добавили

На виртуалтрдосе лежит. Teenage Mutant Hero Turtles 2. Версия от Power of Sound. Музыка правда фирменная. (Я её в 94-ом сам находил.). Сравни, например, с версией от Flash. Совки ещё хвалятся в интре тем что они музыку включили. При этом не осилив перекидывание через стек совместить с музыкой. Из-за этого дичайшие тормоза. Музыку повтыкали куда захотели, поэтому приходится по 10 секунд ждать проигрыш без возможности его скипнуть. Кстати, только сейчас заметил - они ещё и картинку-заставку убогую сами нарисовали (также сравни с версией от Flash)


we're making ATM demos: Personal Nightmare, Fringe (coming soon)
 
ZX-Форум » Software » Games » ATM Games, размышления вслух (графика ATM vs Sinclair, скорость отрисовки спрайтов)
  • Страница 1 из 1
  • 1
Поиск:

the DLCorp © 2006