Player/Missile Graphics
From Atariki
Wersja z dnia 12:47, 21 wrz 2005 KMK (Dyskusja | wkład) (→Wykrywanie kolizji) ← Previous diff |
Wersja z dnia 12:47, 21 wrz 2005 KMK (Dyskusja | wkład) (→Wykrywanie kolizji) Next diff → |
||
Linia 42: | Linia 42: | ||
</pre> | </pre> | ||
- | [[Rejestry GTIA#KOLP0PL|KOLP0PL-KOLP3PL ($d00c-$d00f)]] Kolizja duszka z duszkiem: | + | [[Rejestry GTIA#KOLP0P|KOLP0P-KOLP3P ($d00c-$d00f)]] Kolizja duszka z duszkiem: |
<pre> | <pre> |
Wersja z dnia 12:47, 21 wrz 2005
Spis treści |
Charakterystyka
Player and Missile Graphics - "grafika graczy i pocisków". Właściwość układu GTIA polegająca na nakładaniu na ekran obiektów niezależnych od zwykłej zawartości ("tła"). Generowane w ten sposób ruchome obiekty znane są na innych platformach sprzętowych pod nazwą "duszków" (ang. sprites).
W 8-bitowych komputerach Atari możliwe jest uzyskanie czterech niezależnych duszków i czterech pocisków (lub pięciu duszków - piątego uzyskujemy przez połączenie czterech pocisków).
Kolory
Jeden duszek może mieć dowolny, wybrany z palety, kolor - pocisk ma zawsze ten sam kolor co odpowiadający mu duszek (np. jeśli duszek nr 3 ma kolor $0A pocisk ma również kolor $0A). Wyjątkiem jest sytuacja, kiedy łączymy pociski w celu otrzymania piątego gracza - w tym przypadku gracz ten otrzymuje kolor z rejestru COLPF3 ($D019).
Kolory ustalamy wpisując odpowiednie wartości do rejestrów COLPM0-COLPM3 ($d012-$d015).
Pozycjonowanie
Pozycję poziomą duszków kontroluje się wpisując jego położenie do rejestrów HPOSP0-HPOSP3 ($d000-$d003). Podobnie zmienia się pozycję poziomą pocisków - należy wpisywać pożądane wartości do rejestrów HPOSM0-HPOSM3 ($d004-$d007). Są to rejestry tylko do zapisu.
Niestety nie ma rejestrów określających pozycję pionową - kontroluje się ją zmieniając położenie duszków (pocisków) w obszarze wskazywanym przez PMBASE.
Wykrywanie kolizji
Komputery z serii 400/800/XL/XE posiadają również sprzętową możliwość sprawdzania kolizji duszków (pocisków) z tłem, jak i z innymi duszkami (pociskami). Służą do tego rejestry tylko do odczytu:
KOLM0PF-KOLM3PF ($d000-$d003) Kolizja pocisku z tłem. Wartości odczytujemy z poniższego schematu:
Bit 7 6 5 4 3 2 1 0 Rejestr koloru ...nieużywane.... 3 2 1 0
KOLP0PF-KOLP1PF ($d004-$d007) Kolizja duszka z tłem:
Bit 7 6 5 4 3 2 1 0 Rejestr koloru ....nieużywane... 3 2 1 0
KOLM0P-KOLM3P ($d008-$d00b) Kolizja pocisku z duszkiem (nie ma rejestrów służących do wykrywania kolizji pocisku z pociskiem):
Bit 7 6 5 4 3 2 1 0 Duszek ...nieużywane.... 3 2 1 0
KOLP0P-KOLP3P ($d00c-$d00f) Kolizja duszka z duszkiem:
Bit 7 6 5 4 3 2 1 0 Duszek ...nieużywane.... 3 2 1 0
Rozmiar
Matryca duszków ma 8 punktów szerokości, pocisków 2 punkty. Duszki oraz pociski mogą być sprzętowo rozszerzane za pomocą przeznaczonych do tego celu rejestrów. Możliwe są: szerokość pojedyncza, podwójna i poczwórna. Uzyskuje się je ustawiając odpowiednie kombinacje bitów w rejestrach SIZEP0-SIZEP3:
Bit 7 6 5 4 3 2 1 0 Szerokość: ...nieużywane... 0 0 pojedyncza (8 cykli koloru) 0 1 podwójna (16 cykli koloru) 1 0 pojedyncza 1 1 poczwórna (32 cykle koloru)
Dla ustalenie szerokości dla wszystkich pocisków używa się rejestru SIZEM ($d00c):
Bity Szerokość: pojedyncza podwójna poczwórna 7 i 6: pocisk 3 0,128 64 192 5 i 4: pocisk 2 0, 32 16 48 3 i 2: pocisk l 0, 8 4 12 1 i 0: pocisk 0 0, 2 1 3