спрайтовый движек (sprite engine)

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

Moderator: Shaos

bigral
Senior
Posts: 152
Joined: 31 Mar 2012 16:50
Location: 93.73.80.128

спрайтовый движек (sprite engine)

Post by bigral »

Эх, если бы кто слепил нам на дискретной логике sprite engine! на 8... (16?) спрайтов, чтобы прикрутить к специалисту например, или к спектруму. Вот ПК 8003 Эльф такое умеет! но понять как оно работает не хватает у меня ума. Если бы кто обьяснил суть вопроса хотябы нарисовав какую нибудь структурную схему из блоков. Просто дублировать видео-адаптеры для каждого отдельного спрайта НЕ вариант (типа как ZXPoly для повышенной цветности), как-то оно должно работать с меньшим количеством логики.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: спрайтовый движек (sprite engine)

Post by Lavr »

bigral wrote:Эх, если бы кто слепил нам на дискретной логике sprite engine! на 8... (16?) спрайтов, чтобы прикрутить к специалисту например, или к спектруму.
Такое уже делали по крайней мере со спектрумом.
Скрещивали его с микросхемой от Денди - была такая статья... но как-то популярным это не стало.
iLavr
User avatar
Black_Cat
Doomed
Posts: 480
Joined: 23 Nov 2007 15:53
Location: Saint Petersburg, Russia

Re: спрайтовый движек (sprite engine)

Post by Black_Cat »

bigral, для Спектрума давно всё есть, при том в нескольких вариантах, но никто особого интереса к этому не проявляет. Есть адаптация MSX-1 видяхи, есть видяха на V9990, наконец есть TS- конфа, которая круче всех возможных денди-атарей, и под которую даж есть немного софта.
Вывод - прикручивать спрайтовый движок к ретро компу нет смысла.
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!". :wink:
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: спрайтовый движек (sprite engine)

Post by Lavr »

Black_Cat wrote:прикручивать спрайтовый движок к ретро компу нет смысла.
Нет... но может быть человеку нравится и хочется в рамках его хобби поиграться со спрайтовым движком...
Варианты такого развлечения имеются, значит не ему первому пришла в голову такая мысль.
Почему бы и нет? :roll:
iLavr
zooleek
Fanat
Posts: 53
Joined: 31 May 2007 08:23
Location: Украина

Re: спрайтовый движек (sprite engine)

Post by zooleek »

выводил print chr$(x),
где x - весь алфавит английский(с большими буквами) и знаки припинания,
основной "фонт", всего 786 байт - по 8 байт на символ.

я выводил весь экран с помощью трех таких "фонтов".
на экране они могут присутвовать одновременно.

их и переключать можно (с помощью poke x1,addr: poke x2,addr - две ячейки в верхней памяти, номер не помню, а значения в них засылаюся - старший и младший байты адреса на начало масива нового "фонта" )
и выводить буквы в любых сочетаниях, тоесть теперь
спрайты(tiles) 8*8 программно, без микрух.

такое вот программное решение..
(это я уже через много лет узнал что у сверсника Дэнди это уже есть и аппаратно)

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

добавлено 05/2020:
это выше относится к tiles (как я понимаю теперь называют).
а спрайтам, шутерам надо 7-8 плоскостей с картинкой
(как в кубе - левая стенка, правая, потолок.. т.п. враги и оружие. )
Last edited by zooleek on 16 May 2020 12:12, edited 2 times in total.
petrenko
Doomed
Posts: 598
Joined: 10 Mar 2012 16:21
Location: РФ

Re: спрайтовый движек (sprite engine)

Post by petrenko »

bigral wrote:... на дискретной логике .. на 8 ... спрайтов ...
Вообще то схемотехнически это не так уж и сложно :
Как по X ,так и по Y считают счётчики (, как многие возможно знают ).
Собственно из этих чисел следует вычитать начальные координаты спрайта аппаратным вычитателем и ,если разность меньше размера спрайта, то -> отображать_спрайт отображателем, а сама эта разность будет координатой пиксела в составе спрайта.
Таковых вычитателей-сравнивателей будет по числу спрайтовых плоскостей и по X и по Y ,то есть если например ( для удобства понимания ) взять экран 256*256 и 8 спрайтовых плоскостей, то понадобится всего-то-навсего 16аппаратных 8-и-битных вычитателей-сравнивателей и 8 аппаратных отображателей.
( отображатель 8*8 по сути мало чем отличается от отображателя 256*256 т.е. это тоже некая память, просто объём 64 бита ,а не 65536 бит )
bigral wrote:Эх, если бы кто слепил нам ...
Но ,увы, из данного благого пожелания следует, что Вы маловероятно это будете делать, а вот будет ли кто другой - неизвестно, но примерно так же маловероятно.
Annett
Senior
Posts: 137
Joined: 30 Mar 2017 00:55

Re: спрайтовый движек (sprite engine)

Post by Annett »

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

Но если когда-то я буду это делать, то оно будет 16 или 32-разрядное, -под 68К, под х86 или ARM.
И конечно же, не на дискретной логике...
zooleek
Fanat
Posts: 53
Joined: 31 May 2007 08:23
Location: Украина

Re: спрайтовый движек (sprite engine)

Post by zooleek »

Хотел сказать, что софт-спрайтьі 8*8 уже есть в zx, свои bitmap только подставлять.
Ячейки 23606 мл. байт, следующая - старший.

20раз ему, допустим, к памяти надо обратиься для рисования одной буквьі...

Но, таки да, в железе на момент обращения уже все готово.

Для игр и софт-версия ок.
преимущество nes+zx - возможность отладки

под чужое решение кодить неизбежно топикстартеру....?
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: спрайтовый движек (sprite engine)

Post by jdigreze »

zooleek wrote:20раз ему, допустим, к памяти надо обратиься для рисования одной буквьі...
С учётом выборки инструкций, то по-более. 9 байт - чтение + 9 байт - запись + инкременты и прочие вычисления адресов. В этом смысле, на мой взгляд, экран Специалиста выглядит более привлекательным и производительным, несмотря на более простую реализацию схемотехники. Специалисту бы еще изначально вместо ВМ80 поставить Z80, ИМХО, было бы гораздо более привлекательно нежели Спектрум.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: спрайтовый движек (sprite engine)

Post by Lavr »

jdigreze wrote:Специалисту бы еще изначально вместо ВМ80 поставить Z80, ИМХО, было бы гораздо более привлекательно нежели Спектрум.
"Специалисту" на закате жизни поставили-таки Z80, даже сделали турбо-режим (можно посмотреть
на сайте fifan-a)...
Однако "Специалист" это не спасло, поскольку Спектрум забил всех наличием огромного количества софта...

Но вы все что-то увлеклись, джентльмены... топикстартер хотел "на дискретной логике sprite engine! на 8... (16?) спрайтов, чтобы прикрутить к специалисту например, или к спектруму. Вот ПК 8003 Эльф такое умеет!"
А сказки по софтверные спрайты, думаю, ему не интересны...

Я намекнул, что Спектрум аппаратно "срасщивали" с микросхемой из Денди, имеющей аппаратный
спрайтовый движок видеоадаптера.
iLavr
bigral
Senior
Posts: 152
Joined: 31 Mar 2012 16:50
Location: 93.73.80.128

Re: спрайтовый движек (sprite engine)

Post by bigral »

Black_Cat wrote:... наконец есть TS- конфа, которая круче всех возможных денди-атарей, ...
есть, токо вот суть исходника никак не пойму: https://github.com/tslabs/zx-evo/tree/m ... /src/video

может кто-нибудь посмотрит и растолкует "на пальцах" смысл происходящего?

(и да... закралась обшибочка = Эльф это "ПК8002" а не 8003)