środa , 11 grudzień 2024

Wypruwanie fontów

W tym oto krótkim artykule przedstawię tajniki wypruwania fontów.

Dawno, dawno temu, fonty robiło się w bardzo dziwny sposób. Przenoszono ROM do RAM i liczono wartości dla linii w BASIC-u. Teraz już właściwie o tym zapomniano. Robienie fontów to pryszcz! Jednak gdy nie umiemy tego zrobić, a strasznie nam się czyjeś podobają, to możemy je sobie wypruć. Uwaga! Nie możemy ich przypisywać sobie! To jest plagiat! Najważniejszą rolę spełnia komórka 53272 ($d018). Wartość w niej mówi, gdzie aktualnie znajduje się mapa pamięci fontów. Standardowe fonty mimo, że siedzą w ROMie, to ROM robi taki trik, że udaje, że są one od adresu $1000 (duże fonty) lub $1800 (małe fonty). Aby uzyskać przełączenie z jednych na drugie, należy wpisać:

poke53272,20 lub 21 dla dużych fontów poke53272,22 lub 23 dla małych fontów.

Dzięki temu maskowaniu możemy śmiało wstawiać od $1000 np. zaka. Trochę to dziwne, ale co tam. Ale co z naszymi fontami, które chcemy wypruć? Zasada jest taka, że fonty można umieścić tylko w kilku miejscach i jednocześnie należy wstawić odpowiednią wartość do komórki 53272. Poniższy spis załatwia cały problem:

Obszar Pamięci Wartość Komórki 53272
$0800-$1000 16
$2000-$2800 24
$2800-$3000 26
$3000-$3800 28
$3800-$4000 30

Na więcej nam procesor nie pozwala. Wiedząc, gdzie leżą fonty, zabierzmy się teraz do przykładowego wyprucia fontów. Weźmy jakieś intro. Po uruchomieniu dajmy reset i wpisujmy po kolei do komórki 53272 wartości podane przed chwilą. Jeżeli przy np. 24 pojawią się nam oczekiwane fonty, to już wiemy, że należy je zgrać od $2000 do $2800. Często będzie pojawiał się bałagan, a to dlatego, że akurat w danym miejscu nie będzie fontów, tylko przypadkowe liczby. Akurat wypruwanie fontów jest najłatwiejsze. Dostępne są już nawet programy do wypruwania fontów. Ale nie idźmy na łatwiznę!

H.M.MURDOCK/TROPYX/OXYGEN64

Artykuł o wypruwaniu fontów pisałem wówczas, gdy jeszcze nie posiadałem odpowiedniej koderskiej wiedzy na temat tego, iż istnieje możliwość zmieniania banków pamięci w C64. Stąd też poniższy tekst jest nie do końca ścisły. Albowiem praktycznie fonty można umieścić w niemalże całym obszarze pamięci C64, a nie tylko pomiędzy $0800-$4000. Sam osobiście nie wypruwałem później fontów w opisywany przeze mnie sposób, tylko czyniłem to w monitorze, wiedząc mniej więcej, jak wizualnie prezentuje się pamięć zapisana fontami.

Tekst napisałem prawdopodobnie na przełomie 1999/2000 r. przy użyciu Commodore 64 i edytora tekstowego do magazynu dyskowego Inverse. Ukazał się on w marcu 2000 r. w magazynie Inverse #7/Oxygen64 w dziale Inne. Oryginalną treść poddałem minimalnej obróbce technicznej (m.in. dodałem ładną tabelkę) z uwzględnieniem poprawek interpunkcyjnych.