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