[#1] Sprajty 16 kolorów AGA
AGA wprowadza możliwość wyboru różnych palet dla parzystych i nieparzystych sprajtów spośród 16 banków po 16 kolorów. Ciężko mi znaleźć dokumentację opisującą co się dzieje kiedy złączymy (ATTACH) dwa sprajty w celu uzyskania jednego 16 kolorowego. Z jakiej palety wtedy korzysta? Tej dla parzystych czy nieparzystych sprajtów?
To co chciałbym uzyskać to dwa sprajty 16 kolorowe ale w osobnych paletach, nałożone na siebie (ta sama pozycja ekranowa), tak aby uzyskać 32 różne kolory. Da się?
[#2] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #1

Ciężko mi znaleźć dokumentację opisującą co się dzieje kiedy złączymy (ATTACH) dwa sprajty w celu uzyskania jednego 16 kolorowego.

Hej,

Wszystkie informacje znajdziesz na Amiga Developer CD (NDK 3.1).

Połączone sprajty korzystają z zestawu kolorów sprajtów nieparzystych.

To co chciałbym uzyskać to dwa sprajty 16 kolorowe ale w osobnych paletach, nałożone na siebie (ta sama pozycja ekranowa), tak aby uzyskać 32 różne kolory. Da się?

Możesz taki efekt uzyskać zmieniając np. co linię ten rejestr opisujący zestaw kolorów dla sprajtów. Wówczas w każdej linii możesz uzyskać 16 różnych kolorów.

Copper umożliwia dość dokładną zmianę rejestrów w synchronizacji z pozycją poziomą, więc możesz zmienić ten rejestr co 16 pikseli i uzyskać to co chcesz.
[#3] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #2

Niestety nie mogę uzyskać tego co chcę bo mnie jest potrzebny 32-kolorowy sprite z dwóch 16 kolorowych na tej samej pozycji ekranowej.
[#4] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #3

Rejestr BPLCON4 $dff10c bity 0-3 (nieparzyste), 4-7 (parzyste). Info znajdziesz na przykład w AGA.guide link albo w książce Adama Doligalskiego - Kurs Asemblera dla początkujących.
[#5] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #3

Atached sprites w aga maja max 16 kolorow tak jak w ecs. Jedynie co mozesz zrobic to zamieniac sprite co ramke na inny z innym zestawem kolorow tak aby sie mieszaly. Tylko to bedzie troche migac i chyba nie o to chodzi.

Ostatnia aktualizacja: 05.03.2019 15:14:23 przez docent
[#6] Re: Sprajty 16 kolorów AGA

@docent, post #5

Ale AGA umożliwia zmianę banku kolorów za jednym zamachem - zmieniając jeden rejestr. Umożliwia to tworzenie sprajtów połączonych z różnymi zestawami 16 kolorów.

W AGA szerokość sprajta może być niekoniecznie 16 pikseli, ale też 32 i 64.

W przypadku gdy szerokość sprajta jest 16 to i tak więcej niż 16 kolorów w jednej linii nie uzyskasz. Jeśli autor wątku chce wyświetlić sprajta 32-pikseli w jednej linii z różnymi kolorami musi zmienić bank kolorów używając Coppera.

Ostatnia aktualizacja: 05.03.2019 15:39:55 przez Hexmage960
[#7] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #6

Ale po co to wszystko piszesz? Jaki to ma zwiazek z pytaniem? Pytanie nie jest o ilosc kolorow, ktore mozna wyswietlic w linii sprajta tylko o to, czy mozna uzyskac 32 rozne kolory za pomoca nalozonych 2 attached sprites.
[#8] Re: Sprajty 16 kolorów AGA

@docent, post #7

czy mozna uzyskac 32 rozne kolory za pomoca nalozonych 2 attached sprites.

Podałem sposób na uzyskanie 32-kolorowego sprite'a.

Ostatnia aktualizacja: 05.03.2019 16:50:55 przez Hexmage960
[#9] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #8

Podales sposob na wyswietlenie 1 sprajta w 16 kolorach i 2 sprajta (lub zmiany palety 1) w nastepnych 16 kolorach podczas gdy autor pyta sie o jednoczesne wyswietlenie jednego sprite typu attached w 32 kolorach. Poczytaj o attached sprites, zanim zaczniesz pisac.
Attached sprites !=connected sprites.
[#10] Re: Sprajty 16 kolorów AGA

@asman, post #4

Przepraszam, jakoś za szybko napisałem posta, dopiero post docenta mi uświadomił że nie przeczytałem dokładnie wypowiedzi autora.

W każdym razie według mojej wiedzy, musiałbyś poświęcić 2 sprajty dodatkowo by osiągnąć 16 + 12 kolorów. 2 sprajty jako attached, 4 sprajty 3 kolorowe ale kolory brane z różnych banków. Podejrzewam, że to już wiesz.

Edit: Albo 7 sprajtów by mieć 32 kolory.

Ostatnia aktualizacja: 06.03.2019 14:00:11 przez asman
[#11] Re: Sprajty 16 kolorów AGA

@asman, post #10

Można użyć wszystkich 8 sprajtów by utworzyć 24-kolorowego sprajta (oba banki po 16 kolorów, przy czym jeden jest przeźroczysty). Pytanie czy autor wątku nie potrzebuje tych sprajtów więcej. Wówczas polecam Coppera.

Ostatnia aktualizacja: 06.03.2019 14:08:57 przez Hexmage960
[#12] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #11

Mogę użyć wszystkich sprajtów ale widzę że to i tak nic nie da. 32 kolory to minimum jakie chcę uzyskać. Problemem jest brak możliwości wybrania innej palety dla drugiego sprajta sklejonego (attached) . Ten drugi miałby przezroczystość, dzięki której ustawiając go na tej samej pozycji co pierwszego uzyskałbym 32 kolory.

Ostatnia aktualizacja: 06.03.2019 20:13:41 przez Kefir_Union
[#13] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #12

Wybaczcie moją totalną niewiedzę w temacie ale czy po prostu nie można wyświetlać dwóch 16 kolorowych spritów na tej samej pozycji ? Trzeba by po prostu odpowiednio spreparować dane (kolor przezroczysty) tak żeby dawały po nałożeniu właściwy efekt.
[#14] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #12

Mogę użyć wszystkich sprajtów ale widzę że to i tak nic nie da. 32 kolory to minimum jakie chcę uzyskać. Problemem jest brak możliwości wybrania innej palety dla drugiego sprajta sklejonego (attached) . Ten drugi miałby przezroczystość, dzięki której ustawiając go na tej samej pozycji co pierwszego uzyskałbym 32 kolory.

A zapytam się jaką szerokość ma mieć ten duszek? Bo z tego wynika, że minimum 32.

Rozwiązaniem według mnie jest umieszczenie połączonego duszka 0 i 1 na pozycji x, oraz połączonego duszka 2 i 3 na pozycji x + 16, a następnie nakazanie Copperowi w pozycji x + 16 zmianę banku kolorów duszków.
[#15] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #14

Kolory z tych palet będą przemieszane, po to potrzebna jest przezroczystość w duszku nr 2.
[#16] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #15

Tak, rozumiem. Czy te duszki (jeden 32-kolorowy duszek) będą poruszać się równocześnie?

Bo myślę, że można tak zaaranżować te duszki, żeby uzyskać odpowiedni efekt.

Tzw. wirtualne sprajty w bibliotece graphics realizują duszki o różnych kolorach na ekranie (a nawet uzyskanie ich więcej niż 8), ale niestety tylko dla duszków 3-kolorowych + przeźroczysty.

W przypadku AGA po to jest ten "bank kolorów" by uzyskać taki efekt nawet prościej i dla duszków 15-kolorowych + przeźroczysty.

Ostatnia aktualizacja: 06.03.2019 20:49:18 przez Hexmage960
[#17] Re: Sprajty 16 kolorów AGA

@pisklak, post #13

Można. Chodzi o to że oba będą miały niestety tą samą paletę kolorów.

Ostatnia aktualizacja: 06.03.2019 21:00:55 przez Kefir_Union
[#18] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #16

Tak, będą się poruszać równocześnie. Mnie jest potrzebny po prostu sprajt 32 kolorowy o szerokość 32 piksele bez żadnych ograniczeń dotyczących rozmieszczenia kolorów.
[#19] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #12

Wydaje mi sie, ze w aga mozna wybrac bank palety dla attached sprite, wiec moglbys uzyskac wlasciwy efekt ustawiajac jeden attached sprite i drugi attached sprite z wiekszym priorytetem tak, aby byl wyswietlany na pierwszym. W drugim sprite przezroczystosc w miejscach gdzie kolor<16 i powinno dzialac. Da to 30 kolorow do dyspozycji
[#20] Re: Sprajty 16 kolorów AGA

@docent, post #19

O to właśnie pytam w pierwszym poście . Czy da się wybrać paletę dla ATTACHED sprajt? Bo jeśli się nie da to wszystkie korzystają z parzystego lub nieparzystego banku. Albo żeby chociaż połowa ATTACHED korzystała z parzystego banku a druga połowa z nieparzystego/

Ostatnia aktualizacja: 06.03.2019 21:39:02 przez Kefir_Union
[#21] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #20

No nie da się. Jedyny sposób to tak jak asman napisał. 1 attached + 3 parzyste co daje 15+3*3=24 kolory lub 4 i 4 co daje 8*3=24 kolory (eliminując przeźroczystości).

Ostatnia aktualizacja: 06.03.2019 22:08:38 przez cholok
[#22] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #14

A jak duszek się poruszy o 1 pixel to co?
[#23] Re: Sprajty 16 kolorów AGA

@cholok, post #21

Jasne masz rację. Ja to się rozpędziłem i myślałem że parzyste też mają inne kolory niż przy attached i w Edit napisałem nieprawdę że można 32 kolory. To tak tytułem sprostowania :)

Można by uzyskać ciekawy efekt i co linię zmieniać bplcon4 (mieszać bankami), trzeba by policzyć ile kolorów można by uzyskać w ten sposób - ja się nie podejmuję bo znowu coś śmiechowego napiszę. Na pewno by było taniej niż zmieniać kolory copperem ale też ma ograniczenia. Tyle że przy ruchu góra/dół trzeba copperem się podpierać.

Edit: Przy okazji się zapytam, co będzie gdy połączymy dwa sprajty 32 piksele szerokości jako attached, ale przesuniemy je o 16 pikseli, to czy wtedy mamy sprajt o szerokości 48 pikseli przy czym pierwsze 16 to 3 kolory, potem 16 pikseli 15 kolorów i na końcu 16 pikseli 3 kolory ? Nigdy tego nie sprawdzałem a wpadło mi to gdzieś w ucho (bodajże Trachu na EAB coś pisał na ten temat).

Ostatnia aktualizacja: 06.03.2019 23:14:10 przez asman
[#24] Re: Sprajty 16 kolorów AGA

@Kefir_Union, post #20

Wczesniej pisalem, ze sie nie da, ale w sumie to ciekawe - z opisu wynika, ze bplcon4 bity 4-7 ustawiaja 4 gorne bity adresu palety - jesli tak to dziala to kazdy attached sprite musi miec taka sama palete. Pytanie, czy te bity faktycznie ustawiaja to dla wszystkich attached sprites czy np. kazdy bit odpowiada za inny sprajt niezaleznie. Jesli tak by bylo, wtedy mozna by uzyskac taki efekt jaki chcesz. Trzeba by sprawdzic :)

Ostatnia aktualizacja: 07.03.2019 00:27:00 przez docent

Ostatnia aktualizacja: 07.03.2019 00:27:14 przez docent
[#25] Re: Sprajty 16 kolorów AGA

@cholok, post #22

A widzisz, nie uwzględniłem tego. Copper OCS/ECS może czekać na pozycję co 4 piksele lores, albo 8 hires.

Ale da się to rozwiązać. Otóż żeby uzyskać 32-kolorowego duszka można przygotować:

  • Jednego duszka połączonego np. z 0 i 1 o szerokości 13 pikseli,
  • Jednego duszka parzystego np. 2 o szerokości 3 pikseli, który stanowi spoiwo,
  • Jednego duszka połączonego np. z 4 i 5 o szerokości 16 pikseli.

Otrzymujemy w ten sposób 32-kolorowego duszka o szerokości 32 pikseli, który można swobodnie przemieszczać po osi poziomej co 1 piksel, a kolory będą zawsze poprawne.

Bank kolorów duszków nieparzystych zmieniamy przez Copper na "gwiazdce" na pozycji lub tuż przed blokiem duszka "B".

aaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbb....
*---*---*---*---*---*---*---*---*---
.aaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbb...
*---*---*---*---*---*---*---*---*---
..aaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbb..
*---*---*---*---*---*---*---*---*---
...aaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbb.
*---*---*---*---*---*---*---*---*---
....aaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbb
*---*---*---*---*---*---*---*---*---


P.S. Tym sposobem można otrzymać nawet 35-kolorowego duszka o szerokości 35 pikseli.

Ostatnia aktualizacja: 07.03.2019 04:04:27 przez Hexmage960
[#26] Re: Sprajty 16 kolorów AGA

@docent, post #24

To miałoby sens. Po połączeniu mogą być maksymalnie 4 sprajty attached więc 4 bity wystarczą aby każdemu z osobna ustawić parzysty lub nieparzysty bank.

Z opisu rejestru niestety to nie wynika, trzeba to przetestować.

ESPRM7 thru ESPRM4 allow relocation of the evensprite color map. OSPRM7 thru OSPRN4 allow relocation of the odd spritecolor map. In the case of attached sprites OSPRM bits are used.

Ostatnia aktualizacja: 07.03.2019 09:28:46 przez Kefir_Union
[#27] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #25

Ten pomysl nie pozwala na otrzymanie sprajta , w ktorym mozna dowolnie kazdy pixel ustawic na jeden z 32 kolorow. Co najwyzej uzyska sie bloki o szerokosci min. 8 pixeli w 16 kolorach. Poza tym nie mozna plynnie go przesuwac zachowujac wlasciwa palete kolorow bez modyfikacji listy do coppera, ktora trzeba modyfikowac przy kazej zmianie polozenia.
Jak chcesz uzyskac 4 pixele rozdzielczosci coppera? Jesli dobrze pamietam, to copper potrzebuje 8-16 pixeli na wykonanie jednej instrukcji.
[#28] Re: Sprajty 16 kolorów AGA

@docent, post #27

Poza tym nie mozna plynnie go przesuwac zachowujac wlasciwa palete kolorow bez modyfikacji listy do coppera, ktora trzeba modyfikowac przy kazej zmianie polozenia.

Zobacz sobie na VSprite'y w graphics.library. One realizują dokładnie to - każdy sprajt na ekranie może mieć inne kolory. Robią to poprzez dynamiczną copperlistę i ustawianie rejestrów kolorów.
[#29] Re: Sprajty 16 kolorów AGA

@Hexmage960, post #28

A co maja vsprites do sprajta w 32 kolorach? Vsprites nie "realizuja dokladnie" tego, co opisales - w ogole tego nie realizuja. Vsprites bazuja na sprzetowych sprajtach i w zwiazku z tym moga miec max 4 kolory. Poza tym nie wspieraja sprajtow typu attached.
[#30] Re: Sprajty 16 kolorów AGA

@docent, post #29

Tak jak napisałem, VSprites pozwalają mieć sprajty o różnych kolorach (tablica SprColors struktury VSprite definiuje te kolory) i używają Coppera by ten cel uzyskać. O to mi chodziło pisząc o podobieństwie.

Natomiast prawdą jest, że nie wspierają duszków typu attached.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem