Co dokładnie składa się na ekran w typowej grze C64?

10

Próbuję rozgryźć podstawy tworzenia gier na platformę C64 od wersji BASIC i mógłbym skorzystać z porady na temat czegoś bardzo podstawowego, ale ważnego: co to właściwie jest na ekranie i jak go narysować?

Spójrz na Katakis / Denaris :

Zrzut ekranu Katakis

Na ekranie jest co najmniej 9 różnych rzeczy:

  1. Pasek wyników z różnymi czcionkami
  2. Sam statek
  3. Satelita przymocowany do statku, odłączany
  4. Pociski broni wtórnej
  5. Pociski pierwotnej broni
  6. Ruchome obiekty (mogą być okrętami wroga)
  7. Pasek stanu zawierający obraz statku, liczbę żyć i trzy sekcje, które mogą wypełnić
  8. Główny pasek ładowania broni może wypełnić się do końca
  9. Przewijane pole gwiazd w tle
  10. (nie są ponumerowane na ekranie) Stałe obiekty, takie jak skały lub metalowe ściany, które są częścią tła

C64 obsługuje tylko 8 duszków na poziomą linię skanowania, więc nie sądzę, że wszystko na środku ekranu może być duszkiem? Zakładałbym, że wszystko, co wymaga kolizji, byłoby duszkiem (ponieważ mogę uzyskać wykrywanie kolizji ze sprzętem), ale nawet wtedy szybko osiągnąłem limit 8 duszków. Ponadto moja broń może wystrzelić więcej niż jeden pocisk - mój statek, satelita i 6 pocisków byłyby już 8 duszkami w rzędzie (spójrz na około 50 sekund filmu).

Z którego trybu graficznego skorzysta taka gra? Podręcznik programowania zawiera tryb mapy bitów, który zasadniczo modyfikuje pamięć ekranu. Czy to jest tryb, w którym zwykle powinienem pracować? Jak skomponuję wszystkie elementy inne niż duszki, aby uzyskać je na ekranie?

Wiele rzeczy na pasku wyników i stanu jest statycznych („Obszar: 01” lub „ramka”), więc chyba zapełnię je tylko raz, gdy rozpocznie się poziom. Rzeczy wymagające aktualizacji - wynik, paski ładowania u dołu - zostałyby zaktualizowane poprzez wypełnienie pamięci ekranu kolorem czarnym, a następnie rysowanie nowego wyniku w każdej klatce?

Czy też muszę narysować cały ekran na każdej klatce?

Michael Stum
źródło

Odpowiedzi:

13

Na c64 możesz „multipleksować” duszki. Po ich losowaniu przenosisz je w nowe miejsce i ponownie z nich korzystasz. Większość obiektów pośrodku to prawdopodobnie zmultipleksowane duszki. W c64 bardzo łatwo jest używać więcej niż 8 duszków, o ile nie zajmują one tych samych poziomych linii skanowania. Poza tym w razie potrzeby można tworzyć sprity programowe, używając grafiki czcionek (w tym przypadku przynajmniej pociski).

2, 3, 6. Prawdopodobnie są to duszki.

4, 5, 9. Prawdopodobnie będą to „duszki” oprogramowania graficznego (8 x 8 pikseli)

Gra nie używałaby trybu bitmapowego, wymagałaby zbyt dużego przesunięcia pamięci (chyba że wykonasz kilka sztuczek z chipem VIC ...). Trybem używanym byłby tryb grafiki znakowej.

To, co musisz narysować, będzie zależeć. W takim przypadku, jeśli przyjrzysz się wystarczająco uważnie, gwiazdy o określonym rozmiarze (x * y pikseli) są powtarzane, więc w zasadzie zaktualizujesz pamięć znaków tych czcionek, aby naśladować przewijanie pola gwiazd.

Wynik / status, który wypełniasz na początku, a następnie aktualizuj je w razie potrzeby.

Będziesz musiał zaktualizować duszki i ich pozycję w każdej ramce. Zaktualizowałbyś także pociski. Również zaktualizowałbyś ten wzór pola gwiazdkowego x * y pikseli.

Po prostu stary gówno c64
źródło
5
Przyjrzał się bliżej wideo Katakis. Niektóre z tych obiektów są w rzeczywistości grafiką czcionek. Możesz zobaczyć, patrząc na używane kolory. Również Starfield nie jest tak naprawdę tylko pikselem X * Y, ale jest nieco inny, ale nadal jest w grafice czcionek. Trzeba będzie aktualizować przewijaną grafikę czcionek co 8 piksel, ponieważ sprzętowe rejestry przewijania przesuwają grafikę tylko o 8 pikseli, mimo podstępu oprogramowania. Ponadto nie chcesz używać kolizji sprite'ów sprzętowych. Nie mogą rozróżnić, które duszki faktycznie zderzają się, jeśli w grę wchodzą więcej niż 2 duszki. Po prostu proste matematyki przydają się w zderzeniach.
Po prostu stary c64 geezer
2

Jakiś czas temu przeczytałem artykuł w niemieckim magazynie C64. Kule to postacie, które działają jak duszki, jak ktoś już wskazał. Statki i wrogowie są duszkami.

Poziomy również składają się z postaci, ale z pewnym zwrotem. Ponieważ poziomy są tak ogromne, a pamięć cenna, Trenz napisał własny zestaw narzędzi do grupowania postaci w moduły.

Dzięki temu może korzystać z większych modułów i je komponować. Użyłby również pewnych modułów-łatek, aby uzyskać skrzyżowanie modułów ładnie i czysto.

Podsumowując, jest to rodzaj kompresji, w której poziomy są opisywane jako bloki konstrukcyjne zamiast char przez char.

Można również zauważyć, że w Katakis niektóre poziomy mają tło paralaksy.

Jest to tworzone przez wypełnienie tła, głównie złożonego z znaków 2x2 lub 3x3, i animowanie go (przesuwanie bitów) w kierunku przewijania. Np. Poziom przewija się o 2 piksele w lewo, wzór tła jest przewijany o 1 piksel w prawo, stąd wydaje się, że przewija się go wolniej.

Mam nadzieję, że to pomaga

Jeszcze jedną rzecz, którą możesz zobaczyć pojedynczych modułów i takie tutaj https://archive.org/details/64er_1989_10/page/n27 przewiń do strony 24

Kastor
źródło