sobota , 21 grudzień 2024

Wyrypywanie zaków – suplement

W tym oto krótkim suplemencie chciałbym przedstawić jeszcze kilka spraw dotyczących zaków. Na początek mały trick dla albo leniwych, albo sprytnych. Ja wymyśliłem ten sposób po to, aby ułatwić sobie życie i mogę powiedzieć, że jest on dobry w ok. 90%. Otóż, kiedy przeszukiwaliśmy pamięć w poszukiwaniu zrelokowanego zaka, wręcz umieraliśmy z nudów, gdyż trwało to zbyt długo, zwłaszcza gdy zak był od $f000. Zawsze można na początku zaglądać w miejsca, które najczęściej zawierają zaka, tj. $1000, $e000, $f000. Ale jest jeszcze inny sposób. Można znaleźć zaka w kilka sekund. Wystarczy przeszukać pamięć pod obecność dwóch bajtów: $18 i $d4. Już chyba wiadomo o co chodzi? $d418 znajduje się w 99% zakach! I tam gdzie się znajdują te dwie wartości, tam w obrębie jest zak. Wystarczy wpisać w monitorze:

.H 0800 ffff 18 d4

Powiedzmy, że komputer wyświetli nam dwie wartości, np. $2112 i $235a. Wtedy szukamy mniej więcej od $2000 i tam powinien być zak, chociaż nie musi! To nie jest reguła! Czasami koder sam ustawia tą komórkę. I przy szukaniu opcją Hunt (H) wyskakuje nam np. 10 komórek. Wtedy trzeba cierpliwie szukać… Spotkałem się już z zakiem, który nie zawiera bezpośrednio $d418. Byłem lekko zdziwiony, kiedy komputer nie wyświetlił mi żadnej komórki. Okazało się, że zak jest! No i zaraz go wyprułem. Rzadkością jest umieszczanie zaka od adresu $0400. Wtedy trzeba relokować pamięć ekranu a i samo wyprucie tego zaka wymaga Action Replay’a. A nie wspominając już o słuchaniu tego zaka! Ale to jest naprawdę rzadkość i ja dopiero raz się z tym spotkałem.

Teraz o innej sprawie, czyli o relokowaniu zaków. Do tej pory spotkałem się tylko z jednym programem do relokowania zaków, który rozpoznaje dany plajer bez względu na to, czy zak jest od $1000, czy $0400 czy $5f1a. I relokacja odbywa się w dowolne miejsce pamięci! Teraz napiszę krótko o tzw. ręcznej relokacji. Należy uzbroić się w dwa programy:

Turbo Reassembler
Turbo Assembler

Odpalamy ten pierwszy, wgrywamy zaka, a później plik seq wgrywamy pod t.ass. opcją ←e. Czekamy, czekamy…. O! Już ok. Wciskamy ←n i później 0 + Return i jesteśmy na początku. Przy gwiazdce jest adres startowy. Zmieniamy go na np. $1000 i zgrywamy ←5. Potem wychodzimy ←1 i testujemy. Ta metoda jest dobra na bardzo stare zaki. Aby relokować pozostałe, należy doskonale znać budowę playera, gdyż często adres, spod którego będą pobierane nuty, znajduje się gdzieś tam w środku i jest zapisany w formacie lo/hi bajt (tak jak nasze $d418). Mnie osobiście udało się tylko jeden zak taki zrelokować, a drugi na końcu źle gra, widocznie nie zmieniłem wszystkich danych. Najłatwiej relokuje się zaki o równym adresie początkowym, np. $5000. Wtedy w tej tzw. tablicy danych adresy nut są np. 20 55 40 55 a0 55 itd… Wtedy wystarczy zmienić 55 na 15. Jednak trzeba wiedzieć, gdzie jest ta tablica, a to nie jest proste, dlatego polecam tą metodę dla osób, które się nie zniechęcają.

No cóż. To chyba wszystko w tym suplemencie. Mam nadzieję, że moje informację pomogą wam w umiejętnym wypruwaniu zaków.

HOWLING MAD MURDOCK/TROPYX/OXYGEN64

W trakcie nabierania kolejnego doświadczenia związanego z wypruwaniem muzyczek z gier i produktów scenowych C64, poszukiwałem ułatwień, które mogłyby przyśpieszyć i uskutecznić moją pracę. Swoje spostrzeżenia postanowiłem zawrzeć w tym oto suplemencie do cyklu artykułów o wypruwaniu zaków.

Tekst napisałem na początku 2000 r. przy użyciu Commodore 64 oraz 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 z uwzględnieniem poprawek interpunkcyjnych. Ciekawostką jest także fakt, iż każda część cyklu posiadała odmienny tytuł.