środa , 24 kwiecień 2024

Jak wypruwać zaki cz. 1

W tym oto artykule mam zamiar przedstawić najłatwiejsze sposoby na wypruwanie zaków. Chyba wszyscy wiedzą, co to jest ZAK? Na pewno, no może oprócz tych osób, które tylko grają i nic innego nie robią. Ale mniejsza z tym, zaczynamy naukę (szkoła suxx!).
Jak powszechnie wiadomo, zaki w pamięci RAM przeważnie umieszczane są od adresu $1000 (#4096). Wiedząc, gdzie zwykle znajduje się zak, zabieramy się do roboty. Odpalamy np. jakiś porządny noter, choćby CADGERS-NOTER V.ileśtam. (Bo ja mam 2 wersje tego notera). Po uruchomieniu resetujemy komputer i włazimy do monitora (ej! nie dosłownie!:). Najlepiej jak dysponujemy monitorem z Actiona Replay’a. Wpisujemy m1000 i szukamy pod $1000 wartości $4e, jeżeli pod $1003 również jest $4e to oznacza, że w 99% jest to zak. Aby się upewnić na 100% dajemy opcję I* 1000 i jeszcze raz I* i szukamy jakiegoś takiego textu:

ZAK BY... lub MUSIC BY... lub ZAK COMPOSED BY... itd.

Czasami może być tylko sama xywka muzyka lub sam tytuł a czasami nic nie ma. Lecimy dalej z pamięcią i szukamy, kiedy rozpocznie się jednostajny ciąg tego samego znaczka w Ascii (najczęściej to 00-@). Jeżeli znaleźliśmy takie coś, to oznacza, że jest to koniec zaka (ofkoz w 99%!). I wtedy zapisujemy na dysk:

.S"rambo zak",8,1000,xxxx

gdzie xxxx to adres końcowy zaka czyli pierwsza komórka, od której zaczyna się ten jednakowy ciąg znaku w ascii. Niektóre programy do komponowania muzyki zapisują zaki, na końcu których jest text: TUNE-END (Voicetracker). Wtedy to już nam ułatwia sprawę. Inne programy wstawiają na koniec zaka wartość $ff (Hardtrack Composer), ale nie zawsze jest skutecznie szukać $ff, bo tych jest dużo. Jeżeli owego ciągu nie znaleźliśmy to należy:

a) szukać dalej w pamięci
b) zgrać zaka na chybił-trafił np.do $2000 lub $2500
c) nie jest to zak (to się trafia bardzo rzadko)

Po zgraniu zaka na dysk chcielibyśmy go posłuchać! Do tego potrzebny jest specjalny player, który można łatwo napisać. Osobiście napisałem ZAK-PLAYERA V.4, który odtwarza zaki w zakresie od $0900 do $ffff! Zajmuje 1 blok i ma możliwość słuchania innych melodyjek, jeżeli są zawarte w zaku (np. zak do gry ETERNAL itp.). Kiedyś wymyśliłem playera w BASIC-u! Ale odgrywał on tylko zaki z dwoma wywołaniami na ramkę. Oto on:

1 sys4096 2 sys4099:geta$:ifa$=""then2 3 sys4096

Gdybyśmy chcieli grać nim zaka zwykłego, to należałoby wsadzić odpowiednią liczbę dwukropków po sys4099. Można napisać też innego playera w BASIC-u, ale on mimo, iż odgrywa normalne zaki, to wyjście z niego jest tylko poprzez run/stop (lub r/s+restore):

1 sys4096:fora=0to65535:sys4099:forb=1to9:next:next

Aby w normalny sposób odgrywać zaka, należy stosować playera w assemblerze. Na następnej stronie przedstawię playera INTRUDERA/TROPYX, który uruchamia się poprzez sys4000.

 *= $0fa0  
sei         
lda #$35         
sta $01         
lda #$00         
jsr $1000         
lda #$88         
cmp $d012         
bne $0fac         
jsr $1003         
lda $dc01         
cmp #$ef         
bne $0faa         
lda #$37         
sta $01         
lda #$00         
sta $d418         
cli         
rts

Po wpisaniu w monitorze tego krótkiego programiku wgrywamy naszego świeżo wyprutego zaka i wpisujemy sys4000. ALE CZAD, CO? Hehehe! Ofkoz można rozbudowywać taki player o różne bajery, np. czas itp., ale to już pozostawiam czytelnikom. Pozostaje jeszcze jeden problem do rozwiązania. Mianowicie czasami może się zdarzyć, że po wpisaniu sys4000 zak nie gra. Powodów jest kilka:

1-ściszony masz telewizor na minimum
2-masz zrypane głośniki
3-zak jest za krótki
4-zak ma złe „jumpy” pod $1000 i/lub $1003
5-player jest źle wpisany

Jak postępować:

1-zgłośnić telewizor
2-wymienić głośniki lub użyc wyjścia audio/video w Commodorku do słuchania muzyki
3-jeszcze raz wypruć zaka ale z większym adresem końcowym
4-poprawić jumpy (jeżeli potrafisz) lub pozamieniać ich kolejności
5-wpisać ponownie playera kontrolując błędy

Jeżeli nadal nam nie gra zak, to jest prawdopodobieństwo, że nie jest to zak! A jeżeli jest to zak, to jest on dobrze zakodowany. Czasami w zaku jest więcej, niż jedna muzyczka (Hardtrack to umożliwia). Aby posłuchać następnej muzyczki wpisz poke4006,x i sys4000, gdzie x to liczba z zakresu 0 do 7 (w niektórych zakach nawet do 12, ale to rzadkość).

To na tyle w pierwszej części wypruwania zaków. W drugiej opowiem, jak wypruwać zrelokowane zaki i jak zabezpieczać własne zaki. Podziękowania dla INTRUDERA/TROPYX za playera do zaków.

H.M.MURDOCK/TROPYX

Jest to mój jeden z pierwszych artykułów napisanych do magazynu Inverse. Tworzyłem wówczas najczęściej tylko teksty dotyczące użytkowania komputera Commodore 64. Chciałem poprzez moją piśmienniczą aktywność nie tylko wstąpić do słynnej grupy, lecz także podtrzymać periodyk przy życiu. W tamtych czasach także rozwijałem swoją pasję dotyczącą wypruwania muzyczek (zaków) ze wszelakich gier i produkcji scenowych na C64, co stanowiło inspirację do napisania powyższego tekstu.

Artykuł napisałem prawdopodobnie w ostatnich miesiącach 1999 r. przy użyciu Commodore 64 oraz edytora artykułów 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 z uwzględnieniem poprawek interpunkcyjnych.