SDFN Packer

A. SFDN PACKER?

Jest to paker napisany z myślą o pakowaniu 4-bitowych próbek (lub jak ktoś woli sampli). Jednak później okazało się, że pakuje on także niektóre obrazki w trybie 9 (OS), niektóre fonty oraz bardzo rzadko obrazki w trybie 8 (OS).

B. JAK SPAKOWAĆ PRÓBKĘ...

Wczytać paker, jeżeli chcesz poczytać info w języku angielskim, możesz wcisnąć po ukazaniu się czołówki... Po wczytaniu pakujemy do drive'a dysk z próbkami, wybieramy opcję "P", podajemy nazwę pliku do spakowania i czekamy... Po przeanalizowaniu pliku program poprosi o podanie nazwy wyjściowej. I tutaj mała uwaga: paker w drugim przebiegu zapisuje i odczytuje dane w tym samym momencie bez żadnego ostrzeżenia, więc najlepiej próbkę mieć na dysku, a zapisywać ją na RAM-dysk.

Podczas pakowania możemy oglądać różne cyferki poprzedzone magicznymi literami, więc powiem co one oznaczają:

    U    - Unpacked - długość niespakowanego
    P    - Packed   - długość spakowanego
    L    - Left     - ile jeszcze pozostało
    Gain - Zysk podany w bajtach...

Po spakowaniu pliku program wyświetli zysk w procentach. Gdy zobaczymy komunikat: "Done, Rate xx%", to możemy być pewni, że wszystko poszło pomyślnie.

No dobrze, próbkę spakowaliśmy, ale jak to teraz rozpakować?

Na początek przydałby się depacker. Możemy go uzyskać na dwa sposoby:

  1. Po wczytaniu pakera używamy opcji "C" (compile), podajemy adres używając klawiszy "strzałka w górę", "strzałka w dół" (wciśnięte z zwiększają adres o $10). Po ustaleniu adresu depackera zostaniemy zapytani o komórki na stronie zerowej, które może wykorzystywać depacker. Postępujemy podobnie jak w poprzednim przypadku. Jeszcze tylko nazwa pod jaką zapisać depacker i mamy go na dysku...

  2. Po wczytaniu pakera używamy opcji "Save SouRCe" i po podaniu nazwy możemy zapisać źródłówkę depackera na dysk. Potem tylko odpalamy "Quicka" i asemblujemy depackera gdzie tylko chcemy i gotowe...

    Gdy już posiadamy depacker, możemy przystąpić do rozpakowania pliku... Aby rozpakować dane, należy wczytać spakowany plik do pamięci, a potem utworzyć tabelę z adresami:

    tab    dta a(skąd),a(gdzie)
    

    potem ładujemy adres tablicy do rejestrów X i Y...

           ldx <tab
           ldy >tab
    

    Teraz wykonujemy skok to depackera: (gdzie "depack" jest adresem, pod który zrelokowaliśmy depacker!):

           jsr depack
    

    i możemy czekać, aż skompresowane dane zostaną rozpakowane...

C. UWAGI

Spakowane dane należy umieszczać tak, aby rozpakowane dane nie zniszczyły aktualnie rozpakowywanych danych, np. jeżeli spakowane dane umieścimy od adresu $2000, a rozpakowywać będziemy na adres $1f00, to jest duże prawdopodobieństwo (whops! Ale długi wyraz), że nastąpi przepełnienie... Postaram się to dokładniej wyjaśnić:

     - Dane rozpakowywane
     . Spakowane dane, już pobrane
     * Dane spakowane, jeszcze nie pobrane

     Krok 1. -----....***** - OK!
     Krok 2. -------..***** - OK!
     Krok 3. -----------*** - Przepełnienie!
                        # Tu były dane do
                        rozpakowania, lecz
                        rozpakowane dane
                        zniszczyły ten
                        obszar...

Jak widać depacker ten rozpakowuje "od przodu", więc najlepiej spakowane dane umieszczać jak najwyżej się da, a rozpakowywać jak najniżej... Mówiąc prościej: między rozpakowywanymi danymi, a spakowanymi powinna zostać "dziura" - wielkość tej dziury zależy od stopnia kompresji sampla...

Było to trochę skomplikowane, ale myślę, że wszyscy zrozumieli...

Używajcie więc tego programu, jeśli chcecie lub nie... Jest on na dysku z "Barymagiem"...

Przypominam tylko, że jest to program typu "SHAREWARE" - jeżeli go będziecie używać to przyślijcie parę groszy na mój adres, jeżeli nie macie ochoty na przysyłanie pieniędzy, to chociaż napiszcie w swym programie, że użyliście tego packera, jeżeli nie napiszecie, to może zechcecie przysłać mi swój program, ale jeżeli nie odpowiada wam żadna z tych możliwości, to trudno...

Notkę naskrobał
Seban