Czy możemy jakimś sposobem zwiększyć ilość dostępnych fontów dla
naszego małego Atari, mimo, że już mamy dość pokaźną
bibliotekę takowych? Albo wyciągnąć grafikę z gry na inny
komputer? Oczywiście, że tak. W tej materii nową propozycję ma
Paweł "Sikor" Sikorski, który pracuje nad programem :
GR Finder
Jak pewnie większość z Was, ślędzących forum, już wie, pracuję nad
programikiem
GR Finder, na który zapotrzebowanie zgłosił
kiedyś XXL-a. Ma on służyć do przenoszenia grafiki z różnych
platform na Atari i ewentualnej mini-edycji poprzez wstawianie
pojedynczych pikseli. Na razie prace nad końcową wersją się
przeciągają, dlatego postanowiłem udostępnić plik w wersji beta
(oznaczyłem go jako 0,75). Jest on już całkiem funkcjonalny,
chociaż jeszcze kilka zaplanowanych rzeczy brakuje.
Już działające funkcje
Poniżej opiszę co jest już zrobione, a jednocześnie opis ten będzie
służył jako krótka instrukcja obsługi. Każda komenda wymaga
zatwierdzenia klawiszem RETURN:
- L - Load - wczytywanie danych do bufora. Należy podać pełną
ścieżkę do danych (można używać tzw. "wildcarts"), maksymalnie 15
znaków (przykład z załączonego pliku ATR: po wciśnięciu L
wpisujemy: D:GUN*.XEX i zatwierdzamy klawiszem RETURN). Program
pyta, czy ma pominąć nieco bajtów - chodzi o n początkowych bajtów
pliku (po wybraniu "Y" należy wpisać liczbę n). Program nas
poinformuje, ile bajtów zostało wczytane do bufora (maksymalnie
15360), po czym należy wcisnąć dowolny klawisz w celu przejścia do
menu.
- S - SAVE - postępujemy analogicznie. Po wprowadzeniu nazwy
pliku program pyta, czy mamy zapisać aktualne dane (klawisz "D") -
zapisanie bajtów z ekranu według wzoru szerokość * wysokość, czy
też dane z bufora (podajemy adres względny, od adresu początkowego
(0) oraz ilość bajtów do zapisania.
- B - Next Block - wczytanie kolejnego bloku danych, o ile plik
wejściowy nie został wczytany do końca (jest większy od bufora).
Obsługa bezparametrowa, nadpisuje bufor od początku.
- A - Adres - po wybraniu tej opcji widzimy aktualny adres
pierwszego wyświetlanego bajtu (adres względny), ilość aktualnie
wyświetlonych danych (tzw. "offset") i końcowy wyświetlany adres
("offset" powiększony o "start adress"). Należy podać nowy adres
startowy bufora (dla GUNSHIP DEMO zawartego w przykładowym ATR
proponuję na początek ustawić 5 - początkowy adres
fontów).
- W - line Width - ustala szerokość ekranu, teoretycznie wartości
od 0 do 39, ale dla fontów wygodnie jest ustalić szerokość na 128 i
wysokość na 8 linii (razem: 1024 bajty).
- C - Line Count - ustalenie ilości wyświetlanych linii (1-150,
powyżej tego limitu nastąpi przepełnienie ekranu).
- M - Mode - cykliczna zmiana trybu wyświetlania (8/15 tryb
Basica).
- G - Font/Graph - wyświetlanie w trybie fontów (na razie tylko
standardowy font 8x8 pikseli) lub grafiki. Różnica jest w sposobie
wyświetlania - proszę się pobawić.
- </> - zmiana adresu o jeden bajt (przydatna przy szukaniu
danych).
- Z/X - zmiana ilości wyświetlanych linii o jedną.
- ,/. - zmiana szerokości ekranu co jeden bajt.
- 0 1 2 3 - wybór koloru do edycji dla funkcji PLOT.
- P - Plot - tryb wstawiania piksela (w opracowaniu - na razie
funkcja nieaktywna, są błędy do poprawienia)
- + - * = - sterowanie kursorem do funkcji PLOT (aktywne, ale
wymaga przeprowadzenia optymalizacji wyświetlania - idzie do
poprawy).
Program ma bufor 15 KB. Adres względny bufora zaczyna się od $6000
- więc można w prosty sposób odczytać na przykład dane z ROMu Atari
(na przykład fonty systemowe mieszczą się pod adresem $1E00, od
niego wystarczy odjąć adres bufora $6000 i powstałą liczbę zamienić
na kod dziesiętny, który potem wprowadzamy jako adres początkowy
bufora. Jeszcze ustawiamy tryb FONTY i cieszymy się oryginalnymi
znakami do zgrania).
Gdy niechcący (lub chcący) spowodujemy zawieszenie się programu -
wystarczy wcisnąć klawisz BREAK i z dostępnych opcji wybrać RUN.
Bufor nie ulega zniszczeniu (zazwyczaj).
ustawienie adresu
wycinanie obrazka
wyszukiwanie fontów
Funkcjonalność planowana
Program, jak napisałem, jest w wersji beta. Najważniejsze rzeczy do
zrobienia:
1. Zrobienie poprawnego trybu edycji - najprawdopodobniej
nastąpią spore zmiany w stosunku do tego, co jest (brak
przepisywania ekranu w trybie edycji, być może osobne podmenu -
wyjdzie w praniu).
2. Zrobienie wyświetlania fontu o "dowolnym" formacie -
oprócz fontów 8x8 będzie można wyświetlać (znajdować) fonty o
szerokości 1/2/3 bajtów i dowolnie wybranej wysokości.
3. Tryb poszukiwań grafiki ZX Spectrum (hgrafika zapisana "z
przeplotem", bodajże 3 grupy na raz, co 8 linii).
Sposób wykorzystania
Podstawową funkcją programu ma być przenoszenie grafiki z innych
platform - dane ekranu (bez kolorów), fonty, dane duszków.
Uniwersalność tego programu polega na tym, że można go użyć także
do natywnych plików, w tym binarnych (jak to jest pokazane na
przykładzie GUNSHIP DEMO). Wstępnie znalezione dane (także po
drobnym liftingu za pomocą funkcji PLOT) można zgrać i obrobić pod
dowolnym programem dla Atari lub PC (są to czyste dane). Proces
wyszukiwania jest oczywiście mozolny - jest to zwykłe przeglądanie
pamięci, najlepiej, jak się orientujemy, czego się spodziewać (na
przykład: szerokośc obrazka do wycięcia to 20 bajtów...). Pomocne
tutaj mogą być oczywiście tryby wyświetlania (8/15 grafika/fonty),
tym niemniej nie spodziewajmy się, że program wszystko wykryje czy
wykona za nas.
Cały program jest tworzony w Turbo Basicu XL, więc nie należy
oczekiwać od niego cudów. Tryb wyświetlania fontów jest niestety
wolny, ale taki pozostanie - chodzi o możliwość importu różnych
rodzai fontów, a to bardzo spowalnia procedury. Dane tam pobierane
są według prostego przepisu: weź szerokość (czytaj: jeden bajt),
przesuń się niżęj, pobierz kolejny bajt, jak dojdziesz do 8 linii
(póki co) - przesuń się o bajt w prawo. W ten uniwersalny sposób
można będzie zasadniczo wyłuskać wszystkie fonty nieproporcjonalne
(rastrowe, o stałej szerokości znaku) i dowolnej wysokości
znaku.
fonty gry "Gunship"
obrazek w trybie 8
napis "Happy Computer" od 12 bajtu w TB font
mode
Praktyczne przykłady
Testując program na różnych plikach stwierdziłem, że konsolka Atari
2600 ma dokładnie taki sam sposób zapisu fontów (no prawie - są one
odwrócone do góry nogami) jak nasze małe Atari. Oczywiście,
zazwyczaj na Atari 2600 nie ma pełnych zestawów znaków (zbyt mała
ilość pamięci RAM), ale i tak często potrafią one zadziwić
estetyką.
Nie wiem, czy wszystkie obrazy cartów zawierają fonty i jakiej są
one jakości, ale przetestowałem mój programik na obrazach gier
"Ghostbusters" oraz "Ghostbusters II". W pierwszej zasadniczo mamy
kilka wyrazów zapisanych jako fonty oraz cyfry od 0 do 9 - ale w
miarę standardowe, więc nie bawiłem się póki co w ich uzyskanie. Za
to bardze ładne fonty znalazłem w dwójce - są to litery od A do Z
oraz cyfry 123. Postanowiłem dla testów je "wyciąć" - oczywiście
potrzebujemy pliku o wielkości 1024 bajty, więc tyle zostało
wycięte (aby odczytać pod dowolnym edytorem fontów na Atari). Wynik
macie w załączonym pliczku - bez żadnej obróbki.
Tak więc, jeżeli znajdziemy w jakiejś gierce na A2600 ładny zestaw
znaków, to możemy w miarę prostym sposobem przegrać je na nasz
komputer, a dalsza obróbka (głównie "lustro pionowe" i ustawienie w
odpowiednim miejscu) to znacznie mniejszy nakład pracy. Oczywiście,
tu i ówdzie trzeba parę znaczków dorobić, jeżeli zależy nam na
pełnym zestawie.
W
pliku znajdziecie
oprócz programu
GR Finder wspominane wyżej, a wyciągnięte
przeze mnie czcionki: trzy ciekawe "surowe" fonty: z gry
"Commando", "Joust" i "Flash Gordon" (wszystkie z 2600, tutaj
krótsze pliki, ale na przykład pod "Atari Font Makerem" na grzyba
dadzą się odtworzyć). Ciekawostką jest, że wiele gier na 2600
wygląda na to, że grafikę ma całkowicie i wyłącznie na fontach (w
tym właśnie "Joust", "Flash Gordon" i chyba "Defender II"); fonty z
"Robbo" (wersja kolegi Poklika). Może się komuś przydadzą.