Pobierz

Transkrypt

Pobierz
PROJEKT UCYF
Specyfikacja wstępna
TEMAT: Sprzętowa realizacja gry Arkanoid przy pomocy języka
opisu sprzętu VHDL.
1. Informacje o grze:
a) Rys historyczny
Arkanoid jest grą typu „aracade” stworzoną przez japonską firmę Taito Corporation
w 1986 r. Oparta jest na grze Breakout firmy Atari powstałej dziesięć lat wcześniej.
Gra zyskała ogromną popularność na całym świecie, co zaowocowało licznymi
klonami gry.
b) Fabuła
Czas i dokładne miejsce akcji nie są znane. Gra rozgrywa się w kosmosie. Po
zniszczeniu statku matki „arkanoid”, jeden z pojazdow kosmicznych - „Vaus” zdołał
przetrwać, lecz tylko po to, aby zostać uwięzionym. Zadaniem gracza jest przebrnąć
przez 33 plansze (w oryginalnej grze), by finalnie zmierzyć się z „Fortem
Kontrolujacym Wymiar” o nazwie „Doh”, przypominajacym głowy Moai z Wysp
Wielkanocnych.
c) Zasady
Celem gry jest zniszczenie muru znajdującego się na planszy, złożonego z cegiełek.
Na początku gracz ma do dyspozycji określoną liczbę piłeczek lub platform (w
1/8
zależności od wersji gry), które
traci kolejno jeśli piłeczka
ucieknie poza obszar gry. Za
zbijane cegiełki przyznawane są
punkty. Po zbiciu wszystkich
cegiełek następuje przejście do
kolejnego poziomu, co oznacza
nowe ułożenie klocków (nowa
plansza).
2. Mechanika gry:
●
●
●
●
●
●
●
●
●
●
●
●
●
Illustration 1: Przykładowa plansza Arkanoida
Plansza przedstawia obszar gry, prostokątnego kształtu, otwarty od dołu. W
obszarze gry znajduje się mur złożony z cegieł.
Gracz dysponuje jedną kulką, którą może odbijać paletką.
Paletka może się przesuwać w poziomie od strony otwartej obszaru gry.
Kulka odbija się od ścian ograniczających pole gry zgodnie z prawami fizyki
(kąt padania równy kątowi odbicia), ale bez uwzględniania grawitacji.
Trafienie kulką w mur powoduje niszczenie cegły, zyskanie zyskanie 1punktu i
odbicie piłki.
Paletka natomiast podzielona jest na 3 sektory, gdy piłka trafi w środkowy
sektor lub uderzy w krótszy bok paletki, to odbija się pod takim kątem pod
jakim padała, gdy pada na jeden z bocznych sektorów, odbija sie pod kątem 30
stopni.
Gracz ma na starcie do wykorzystania trzy szanse (3 platformy).
Gracz nie może dopuścić do tego, aby kulka opuściłą pole gry – gdy zdarzy się
to trzykrotnie, gra kończy się przegraną gracza.
Gra składa się z 10 poziomów – plansz, przedstawiających różne
ukształtowanie muru jak i różniących się szybkością poruszania się piłeczki,
która wzrasta wraz z numerem poziomu.
Przejście na kolejny poziom nastepuje po zniszczeniu muru na poziomie
poprzednim.
Plansza oprócz obszaru gry zawierać będzie informacje o wyniku punktowym
(pole SCORE), poziomie gry (pole LEVEL) oraz dostępnej liczbie platform
(pole LIVES).
Cegiełki mogą być 4 kolorów: żółty, czerwony i zielony.
Sterowanie grą odbywa się za pomocą trzech przycisków: lewo, prawo, start –
jednoczesne wciśnięcie dwóch przcisków lewo i prawo.
Gra wyświetlana będzie na monitorze VGA.
2/8
●
●
Rozdzielczość gry: 320 x 200.
Poniżej zamieszczamy planowany
wymiarami elementów (w pikselach):
wygląd planszy
z zamiszczonymi
Illustration 2: Planowany wygląd planszy z zamiszczonymi
wymiarami elementów (w pikselach)
3. Opis funkcji poszczególnych elementów i sposób
ich współdziałania:
Projektowany przez nas układ składa się z dwuch podstawowych bloków:
– bloku wyświetlania
– boku kontrolera gry.
Liczba punktów
10 bitów
R
G
Ilość żyć
2 bity
Mapa klocków
70 bitów
Pozycja piłeczki x
9 bitów
B
H SYNC
Blok wyświetlania
VGA
Pozycja piłeczki y
8 bitów
Pozycja paletki
9 bitów
Drawing 1: Blok wyświetlania:
3/8
V SYNC
Do bloku tego wchodzą sygnały zawierające informacje o aktualnym stanie planszy (stan każdego
klocka – jest lub nie ma), oraz o pozycji ruchomych elementów gry, czyli paletki i piłeczki. Trafiają
tutaj również sygnały o ilości żyć oraz ilości punktów zdobytych przez gracza. Na podstawie tych
sygnałów wejściowych generowany jest graficzny obraz planszy, który nadaje się już do
wyświetlenia na monitorze VGA, zatem z bloku tego wyjściami są już wejścia monitora w
standarcdzie VGA takie jak R, G, B, oraz sygnały odchylania poziomego i pionowego H Sync i V
Sync. Dowolna zmiana wartości sygnałów wejściowych(np. pozycji piłeczki) powoduje
natychmiastową zmianę obrazu na monitorze.
Ilość punktów
10 bitów
Ilość żyć
2 bity
RESET
CLK
Wejscia z
przycisków
Mapa klocków
70 bitów
KONTROLER GRY
Pozycja piłeczki x
9 bitów
Pozycja piłeczki y
8 bitów
Pozycja paletki
9 bitów
Drawing 2: Blok kontrolera gry
Blok ten jako wejścia przyjmuje stan przcisków sterujących ruchem paletki, sygnał zegarowy CLK,
oraz sygnał RESET, którego wywołanie powoduje ustawienie wszystkich rejestrów wewnętrznych
w stan jak zaraz po włączeniu zasilania układu. Układ ten na podstawie danych o stanie przycisków
oraz danych o historii swojego działania(przechowywanych w rejestrach i pamięci ROM ) generuje
aktualny stan pola gry(pozycja paletki, piłeczki, ilość klocków, ilość punktów I ilość żyć)i wysyła
te informacje do układu wyświetlania VGA. Dzieje się to według dołączonego algorytmu.
4/8
Illustration 3: Schemat działania algorytmu kontrolera gry
5/8
Illustration 4: Kontrola ruchu paletki
6/8
W algorytmie tym widać 9 sytuacji kolizyjnych oznaczonych numerami
od I do IX.
I. kolizja z lewą ścianą:
II. kolizja z górną ścianą:
III. Kolizja z prawą ścianą:
IV. kolizja z paletką:
V. kolizja z dolną ścianą (wypadnięcie):
VI. kolizja z klockiem od góry:
VII.kolizja z klockiem od dołu:
VIII.kolizja z klockiem od prawej strony klocka:
IX. kolizja z klockiem od lewej strony klocka:
Każda z tych sytuacji jest obsługiwana indywidualnie, a obsługa niektórych z nich
wiąże się ze zmianą mapy planszy w pamięci RAM, zmianą ilości żyć, czy nawet
wczytaniem nowej planszy z pamięci ROM. Za każdym razem z wyjątkiem kolizji z
dolną ścianą (wypadnięcie piłeczki) konieczna jest zmiana wektora ruchu piłeczki.
7/8
Jak widać informacje o ilości punktów, pozycji i wektorze piłeczki, pozycji paletki,
etc. muszą być przechowywane w rejestrach i po sytuacjach kolizyjnych specjalny
układ sterujący wykrywający te kolizje w odpowiedni sposób zmienia wartości
danych w tych rejestrach. Jeżeli nastąpi zbicie klocka, wówczas układ sterujący
zmienia stan pamięci RAM, w której przechowywane są informacje o stanie każdego
klocka na planszy. Układ ten pobiera również informacje z przycisków, za pomocą
których można zmieniać położenie paletki lub “odpalić” piłeczkę z paletki.
Rejestr
wektora
piłeczki X
Rejestr
wektora
piłeczki Y
Do modułu wyświetlania
RESET
ROM
CLK
Sterowanie
z przycisków
UKŁAD STERUJĄCY
Rejestr
pozycji
piłeczki
X
Rejestr
pozycji
piłeczki
Y
Rejestr
punktów
Rejestr
pozycji
paletki
RAM
Rejestr
numeru
poziomu
Rejestr
ilości
żyć
Drawing 3: Moduł układu sterującego
Podsumowując układ sterujący jest sekwencyjnym układem cyfrowym analizującym
stan przycisków wejściowych, rejestrów oraz pamięci ROM oraz RAM i na tej
podstawie ustawiający stany tych rejestrów tak aby było to zgodne z przedstawionym
powyżej algorytmem. Układ ten co każdy pełny cykl ustawia na wyjściu “ do
wyświetlania” aktualne dane o stanie planszy aby mogly one za pośrednictwem
układu wyświetlania zostać zwizualizowane na monitorze VGA.
4. Bibliografia
5.1 „Synteza ukladow cyfrowych” – T. Łuba
5.2 „Projektowanie układów cyfrowych z wykorzystaniem języka VHDL”
M.Zwoliński
8/8