[Atari] AtariOnLine: Światowa premiera "Alberta"

[3] # AtariOnLine | Niedziela, 14 Lutego 2021 15:33CET

[Atari] AtariOnLine: Światowa premiera "Alberta"

Od początku istnienia AtariOnline.pl w 2004 roku jedną z najpiękniejszych i najprzyjemniejszych rzeczy jest możliwość prezentowania nowych programów dla Atari, czy to właśnie powstałych, jak poniższa gra, czy odnalezionych po latach w szufladzie, tudzież innej, mrocznej piwnicy... Za każdym razem, przy okazji takiej publikacji, odczucia mam podobne do tych, które towarzyszą otwieraniu prezentu świątecznego. Nowa gra, demo czy program użytkowy na Atari wywołuje ciekawość i ekscytację jak przy otwieraniu świątecznego pudła z nieznaną zawartością. Nie inaczej jest dzisiaj, szczególnie że prezent jest bardzo kolorowy i wykonała go osoba, która po latach przerwy wróciła do pasji z dzieciństwa, programowania na komputerze ze znaczkiem JIL.



Dzisiaj, jako prezent walentynkowy, mam przyjemność zaprezentować grę Albert kolegi Kski oraz przedstawić kilka słów od autora na temat tego programu. Przyjemność tym większa, że maczałem w projekcie palce. Głos oddaję programiście, koderowi Kski:

"Przed wielu laty, jako nastolatek czerpiący całą wiedzę o programowaniu z kursów Action!", oraz opisów przerwań, autorstwa Wojciecha Zientary w "Bajtkach", napisałem kilka gier w języku Action!. Udostępniłem je koledze, a potem zapomniałem zarówno o nich, jak i o komputerze Atari, który z braćmi sprzedaliśmy wraz z kasetami, zamieniając go na Amigę. Po latach, z ogromnym zdziwieniem, przypadkowo znalazłem je w internetowych archiwach gier Atari. Trzy lata temu, ponownie przypadkowo, trafiłem na forum i ze zdziwieniem zauważyłem, jak wielu ludzi aktywnie działa w temacie retrokomputerów i że wciąż powstają nowe programy i gry.

Z zawodu jestem programistą, lubię wyzwania algorytmiczne, a i pozostał duży sentyment do Atari, na którym się uczyłem programować. Architektura Atari wydała mi się bardzo ciekawa - i powtórzę tutaj to, co już wielokrotnie pisano na forum, ale to niepodważalny fakt - drzemią w niej jeszcze rozliczne, niewydobyte możliwości. Często trzeba jednak włożyć więcej pracy w ich uzyskanie, niż na konkurencyjnych platformach, szczególnie tych z mnogimi duszkami sprzętowymi. Z drugiej strony programowanie dla Atari dzisiaj jest też dużo łatwiejsze, dzięki istniejącym emulatorom i narzędziom na PC.

Gra "Albert" od początku miał być prostą platformówką, pisaną po to, żeby poznać MadPascala jako alternatywę dla asemblera, oraz po to, aby sprawdzić, ile da się wycisnąć z Atari w temacie grafiki, wykorzystania DLI, dostępnego czasu procesora, itd. No i odpowiedzieć na najważniejsze pytanie: czy gry na Atari, postacie w nich umieszczone, mogą być ładniejsze niż to się przyjęło, bardziej kolorowe. Gra pozwoliła osiągnąć tak postawione cele i naprawdę dużo się nauczyłem podczas jej tworzenia. Pozwoliła mi lepiej zrozumieć co w Atari piszczy, chociaż wciąż pozostało jeszcze kilka pomysłów do sprawdzenia. MadPascal nadaje się doskonale do tworzenia gier, a jeśli na koniec brakuje czasu procesora - a brakuje - łatwo przepisywać działający już kod, wiersz po wierszu, na asembler.



Zamierzenie było takie, by gra była dynamiczna, a tytułowy Albert mógł nie tylko chodzić, ale i biegać. Długość skoku jest zależna od prędkości naszego bohatera w momencie wybicia się w górę. Dla wygody graczy rozpędzenie się do pełnej prędkości jest szybkie, trwa mniej niż sekundę. Nawet skok z minimalnego rozbiegu, dosłownie po jednym kroku na malutkiej platformie, jest już dłuższy niż skok całkowicie z miejsca. Problemem okazało się jednak opracowanie wygodnego sterowania joystickiem, tak, aby normalnie chodząca postać mogła na żądanie zacząć biec. Jest przecież tylko jeden przycisk w joysticku. Wraz z trwaniem prac nad grą powstały więc trzy alternatywne rodzaje sterowania, z których ostatnie jest ustawione jako domyślne. Po wychyleniu joysticka w bok postać zawsze biegnie, a raczej rozpędza się do biegu, a następnie biegnie; natomiast wciąż można iść wolniej kierując joystick w dół na ukos. Wersje sterowania wybierane są klawiszami 1-3 na stronie tytułowej i w samej grze. Ponieważ postać jest stosunkowo duża, skoki dalekie, często nie widać wcześniej, gdzie Albert doleci lub co jest pod nim. Dlatego w każdej chwili można zatrzymać grę spacją i przesuwać kamerę (oczywiście w ograniczonym zakresie), żeby zobaczyć co jest dalej czy niżej.



Krótko o tym, jak to jest zrobione, bo takie pytania już się pojawiały na forum. Trzy duszki sprzętowe P0/1/2 oraz M0/1/2 wykorzystane są na postać Alberta. Dzięki temu nasz bohater może mieć trzy dowolne kolory w każdej linii, a więc czarny plus dwa dowolne inne, co nie byłoby możliwe przy nakładaniu kolorów dwóch duszków. Rozwiązanie takie jest jednak kosztowne (tracimy prawie wszystkie duchy jak i możliwość dokolorowania nimi tła) i zarzuciłem je w pracach nad następnym silnikiem, do kolejnej części przygód Alberta. Ostatni duszek sprzętowy zostaje zużyty na drabinki. Trzeba je więc przesuwać wraz z polem gry, no i przycinać na krawędziach ekranu. To z kolei jest kosztowne ze wzglądu na czas procesora, również zostało usunięte w silniku do drugiego Alberta. Co nie oznacza wcale, że nie będzie drabinek. Ale rezygnując z powyższego i robiąc postać na dwóch duszkach, zyskujemy dużo więcej możliwości gdzie indziej.

Platformy i owady zrobione są na znakach, kolory COLPF0-3 są odpowiednio zmieniane w kodzie DLI przed kolejnymi liniami ekranu, a więc jest bardziej kolorowo w pionie. Woda to jednokolorowe (niebieskie) znaki z dziurkami, przesuwającymi się w dół, i duszkami sprzętowymi schowanymi za nimi (zarówno graczami, jak i pociskami), poszerzonymi, w jaśniejszych kolorach, ale poruszającymi się z inną prędkością i na różnych pozycjach, dzięki czemu nie jest to zwykłe przewijanie, bo "bąbelki" żyją własnym życiem.

Za zmianę kolorów na ekranie (i innych rejestrów GTIA) jest odpowiedzialny kod DLI. Jest to jedna, wielka procedura dla 40 wierszy (40*8 linii) ekranu, przy czym 5 pierwszych wierszy jest pustych, aby Albert mógł skakać nad najwyższymi platformami. Widoczne pole gry ma wysokość 22 wierszy, nad nim znajdują się dwie puste linie ekranu, nad nimi dwa wiersze z napisami (życia, energia...). Te dwie puste linie ekranu pod napisami potrzebne są na inicjalizację wszystkich rejestrów wartościami właściwymi dla aktualnej pozycji pionowej pola gry. Następnie procesor wskakuje do procedury DLI we właściwe miejsce (JSR do właściwej etykiety), a po wyświetleniu 22 wierszy wyskakuje za sprawą wcześniej spreparowanego w odpowienim miejscu rozkazu RTS (a następnie RTI i powrót z przerwania DL).

Jak wiadomo, przed rozpoczęciem linii mamy mało cykli do wykorzystania, a zmian do wykonania w Albercie dużo, więc wszystkie wartości do ustawienia ładowane są przez rozkazy LDA/X/Y w trybie natychmiastowym. Rozkazy te są opisane etykietami, a część wartości jest zmieniana z kodu gry (tak nazywam tu resztę kodu, nie kod obsługi DLI), niektóre już podczas inicjalizacji poziomu gry, np. CHBASE, COLPF0-3, aby różne owady mogły być na danej wysokości w różnych levelach, inne już w trakcie gry, jak np. kolory Alberta, który przecież przesuwa się w pionie i ma różne kolory w różnych liniach.

Pierwotnie podobnie zrobiona była tęcza w tle gry. Wartości dla każdej linii ekranu inicjalizowane były z kodu gry w każdej ramce (przy scrollu pionowym), korzystając z tablicy adresów etykiet w kodzie DLI do podmiany wartości, co oczywiście trwało długo. Ponieważ zostało sporo cykli wolnych w DLI, już podczas wyświetlania kolejnych linii ekranu, udało się to przenieść (wraz ze zwiększaniem indeksu i odczytywaniem wartości z tablicy) do samego kodu DLI. A ponieważ poprzednie zdanie nie jest prawdziwe dla pierwszej linii każdego wiersza, bo podczas wyświetlania tych linii nie mamy żadnych cykli dostępnych, dla nich wartości są przygotowywane o linię lub dwie wcześniej. Ponieważ procesor wisi w DLI przez cały czas wyświetlania obrazu, gra musi rozgrywać się podczas synchronizacji pionowej. Już kwestie takie jak woda, drabinki na PMG, czy inicjalizowanie wielokolorowej postaci Alberta w kodzie obsługi DLI zajmują dużo czasu, nie mówiąc o całej reszcie kodu, niezbędnego w każdej grze. Dlatego finalnie prawie cały kod jest w asemblerze, chociaż MadPascal sprawdził się świetnie do całego procesu tworzenia, a także ze względu na łatwość przepisywania działającego już prawidłowo kodu na asembler, funkcja po funkcji, lub wręcz linijka po linijce.

Gra wyróżnia się pod względem grafiki, za to pod względem gameplay'a... No cóż, jest to najbardziej banalna platformówka, jaką sobie można wyobrazić. Przemieszczamy się po platformach, zbierając diamenty, a przeszkadzają nam owady i przeszkody terenowe. Nie ma zabijania owadów, bo od początku tak było planowane. Platformy są zawsze na tych samych wysokościach, bo tak skonstruowany jest kod obsługi DLI. To on jest siłą tej gry, ale jednocześnie i ograniczeniem. Kolory są zmieniane w pionie, ale w poziomie wciąż są to cztery kolory plus tło. Cała ta gra to eksperyment, którego kod kręci się wokół maksymalnego wykorzystania przerwań DL. Dla mnie eksperyment zakończony sukcesem, pokazuje że się dużo da, ale... da się więcej!

Można podejść do tematu jeszcze bardziej nowatorsko. I dlatego prace nad silnikiem Alberta dalej trwają, a w planach jest "Albert II". Scroll pionowy w połączeniu z właściwym kodem DLI daje ogromne możliwości, znika ograniczenie czterech kolorów w linii, które narzuciło wygląd poziomów prezentowanej gry. Oczywiście coś za coś. No i ogrom pracy. Ale prototypy pokazują, że się da. Dwa lata temu, gdy zaczynałem pisać grę, nie mogłem tego wszystkiego wiedzieć, dlatego program mocno ewoluuje i silnik się zmienia. No i jest zespół ludzi zaangażowany w drugiego "Alberta", również w zrobienie dobrego gameplay. Ale to potrwa i będzie wymagać już tego nowego silnika. Dlatego dzisiaj zamykamy rozdział pod tytułem "Albert" i rozpoczynamy kolejny. Podsumowując, mimo tego że ta gra, a raczej mini-gierka biorąc pod uwagę prostą rozgrywkę, jest skończona, to nie koniec przygód Alberta, a mam nadzieję, jeżeli zdrowie pozwoli, jedynie początek. Jeżeli komuś gra w obecnej postaci się spodoba to miłej zabawy, a Albert prosił mnie o przekazanie krótkiej wiadomości:
"I'll be back!"."




Do opisu technikaliów gry warto dodać, że program działa na Atari z 64KB pamięci RAM, ale wtedy uruchamia się tylko z trzema testowymi poziomami i bez wszystkich grafik. Pełnię szczęścia i wszystkie poziomy gry osiągniemy przy 128KB pamięci.

Autorzy:
Program: Kski
Muzyka: Kski
Grafika: Kaz
Grafika poziomów i poziomy: Kski
Grafika panelu w grze, fonty: Kaz
Animacje obiektów: Kski, Odyn1ec, Kaz
Animacja bohatera: Triplex

Sterowanie:
  • wybierane klawiszami 1-3
  • pod klawiszem 1: przytrzymaj fire, żeby biec; joy w górę, żeby skoczyć
  • pod klawiszem 2: wybierz skos, aby zacząć biec; fire, aby skoczyć
  • pod klawiszem 3: defaultowo bieganie; aby chodzić wybieraj skos w dół.

    W imieniu wszystkich autorów życzę dobrej zabawy z grą! Pliczek z grą o wadze 104KB do ściągnięcia stąd.



    2021-02-14 15:33 by Kaz
    komentarzy: 2
  • → NOWSZY [Atari] AtariOnLine: Firmy retrokomputerowe - cz.4. SikorSoft
    → NOWSZY [Atari] AtariOnLine: Firmy retrokomputerowe - cz.3. Retro Lemon
    → NOWSZY [Atari] AtariOnLine: Firmy retrokomputerowe - cz.2. Galtron
    → NOWSZY [Atari] AtariOnLine: Firmy retrokomputerowe - cz.1. Retronics
    → NOWSZY [Atari] AtariOnLine: Legia na Atari ST
    → NOWSZY [Atari] AtariOnLine: Słów kilka o Fujinet (cz.3)
    → NOWSZY [Atari] AtariOnLine: Nowości w świecie Atari
    → NOWSZY [Atari] AtariOnLine: Dodatkowe kolory duszków
    → NOWSZY [Atari] AtariOnLine: Środowisko prasowe z nowymi "Bajtkami"
    → NOWSZY [Atari] AtariOnLine: "Albert" poprawiony

    Tagi: Atari, Atarionline.pl, Atari Xe, Atari Xl, Retroserwisy, Ataionline, Fusik

    wstecz14/02/2021 15:33
    Inne treści związane z tematem
    [Atari] AtariOnLine: Firmy retrokomputerowe - cz.4. SikorSoft [Atari] AtariOnLine: Firmy retrokomputerowe - cz.4. SikorSoft
    Kamil "Gorgh" Trzaska napisał:W tym cyklu artykułów staram się przybliżyć przedsięwzięcia naszych kolegów, którzy oferują produkty związane z Atari i nie tylko. W tej części chciałem napisać nieco o firmie Pawła „Sikora” Sikorskiego. Paweł prowadzi firmę SikorSoft od 1994 roku i od początku miał w ...
    [Atari.Area] LiteDOS-SE 2021-05-09 [Atari.Area] LiteDOS-SE 2021-05-09
    Dostępna jest nowa wersja minimalistycznego (aczkolwiek stosunkowo już zaawansowanego) DOS dla ośmiobitowych komputerów Atari. Wersja oznaczona jako Build 2021-05-09 z nowości oferuje: Added D to the internal command-line, loads DUP from D1: Manual in PDF format LiteDUP Error messages G E477, run code at $E477 (hexadecimal) 19200 Bluetooth support Pobieramy ze strony projektu.
    [Atari] AtariOnLine: Firmy retrokomputerowe - cz.3. Retro Lemon [Atari] AtariOnLine: Firmy retrokomputerowe - cz.3. Retro Lemon
    Kamil "Gorgh" Trzaska napisał:W tym cyklu staram się przybliżyć przedsięwzięcia naszych kolegów, którzy oferują różne produkty do naszych komputerów oraz innych sprzętów retro. W dzisiejszym odcinku chciałbym przybliżyć firmę Retro Lemon, którą mniej niż rok temu założył Jakub „Lewis” ...
    [Atari] AtariOnLine: Firmy retrokomputerowe - cz.2. Galtron [Atari] AtariOnLine: Firmy retrokomputerowe - cz.2. Galtron
    Przemysław "Galtron" Galanciak napisał:Choć Atari zajmuję się od kilkudziesięciu lat, pracowałem przecież w łódzkiej firmie "UM" ("Unnering Masters"), gdzie tworzyliśmy znane cartridge RAM-Cart, to dopiero od niedawna po latach wróciłem do tej pasji i zacząłem produkować dodatkowe moduły i układy zastępcze do Atari i ...
    [Atari] AtariOnLine: Firmy retrokomputerowe - cz.1. Retronics [Atari] AtariOnLine: Firmy retrokomputerowe - cz.1. Retronics
    Kamil "Gorgh" Trzaska napisał: W tym cyklu postaram się przybliżyć czytelnikom AtariOnline.pl przedsięwzięcia naszych kolegów, którzy oferują szeroką gamę produktów do komputerów Atari i nie tylko. W pierwszej części chciałem omówić znaną na pewno wszystkim firmę Retronics, prowadzoną przez Jerzego "Duddiego" ...
    Komentarze

    T-shirt "Eidolon"

    Retro T-Shirt Eidolon - męski podkoszulek
    Newsy Linkownia Emulatory na PC Wideoteka Screenshoty Bajtek Reduks Ready.Run

    © Try2emu 1999 - 2021 | Krzysztof 'Faust' Karkosza Google+Kontakt