Moduł graficzny AMOS do gier "Wojna Obronna Polski 1939" oraz Imperium

Moduł był napisany na prośbę kolegi ze studiów, który tworzył nową grę na PC na podstawie kodu stworzonego w języku programowania AMOS (dialekt języka BASIC) na Amidze 500. Napisany przeze mnie moduł zajmował się ogólnie pojętą grafiką, był napisany w Turbo/Borland Pascalu (dla DOS), większość funkcji było zakodowanych przeze mnie w asemblerze. Obsługiwał 256-kolorowe tryby graficzne VESA VBE (1.2 i 2.0) 640x480, 800x600 i 1024x768 oraz rzadko dostępny tryb 640x400, który miała akurat moja bardzo nietypowa karta graficzna (S)VGA, która miała 256 KB pamięci i akurat dokładnie tyle wystarczało, by obsłużyć właśnie taki tryb graficzny. Tryby 640x480 i 800x600 wymagały karty z 512 KB pamięci, tryb 1024x768 zaś aż 1 MB pamięci.
Do pierwszej gry ("Wojna Obronna Polski 1939" - WOP) użyta została mniejsza rozdzielczość (320x200) w celu uzyskania płynności przesuwu mapy i możliwości grania w nią na słabszym sprzęcie (ekran mieścił się w jednym 64 KB segmencie pamięci i dzięki temu było wygodnie na nim operować).

Do Turbo/Borland Pascala była dostępna zewnętrzna biblioteka graficzna svga256.bgi, która obsługiwała 256-kolorowe tryby graficzne, ale ponieważ była ona dość uniwersalna, to działała relatywnie wolno. Dla tworzącego grę z płynnym przesuwem mapy i animacjami - stanowczo za wolno. Mój moduł działał - jak wykazały testy - ok. 1000 razy szybciej! Płynny przesuw mapy na ekranie był możliwy nawet na komputerze klasy IBM AT 12-16 MHz (na uczelni mieliśmy wtedy komputery IBM 386 z zegarem 20-33 MHz).

Najpierw powstał moduł AMOS do gry WOP, która działała w rozdzielczości 320x200 w 256 kolorach i której mapa płynnie się przesuwała przy nawigacji (była w całości wczytana do pamięci ekranu - zajmowała tam prawie 256 KB - a jej przesuw był realizowany przy pomocy zmiany adresu początku ekranu w rejestrze sprzętowym karty graficznej). Ekran gry był podzielony na 2 części - w górnej znajdowała się mapa z jednostkami wojska, w dolnej części pojawiał się teksty i informacje (obie części działały w trybie graficznym, dolny ekran korzystał z kilku rodzajów przygotowanych fontów tekstowych).

Dwa lata później powstał projekt nowej gry strategicznej Imperium (o wojnie na Pacyfiku). Tym razem mapa gry była dużo większa, większa też była rozdzielczość ekranu użyta w grze (640x480 w 256 kolorach). Dla ograniczenia pamięci wykorzystywanej przez mapę była ona sprytnie skonstruowana z klocków (heksów) o ustalonym wyglądzie, z których była sukcesywnie wyświetlana na ekranie.

Tutaj możesz zapoznać się z wyglądem (wybranymi zrzutami ekranów) opisywanych gier, możesz też zobaczyć kod modułu AMOS.PAS użytego w grze WOP oraz modułu _VAMOS.PAS użytego w grze Imperium. Autorem obu gier jest Arkadiusz Kozieł, on też jest twórcą większości grafiki użytej w obu grach.

Przydatne linki:
  How To Use Super VGA (VESA 1.x Non-Linear)
  DOS Super VGA / VESA programming notes - by Myles

Powrót do strony z wykazem projektów

Valid HTML 4.01 TransitionalValid CSS