Zawsze się zastanawiałem jak działało to "hackowanie" przy pomocy tzw. "przystawek".
Mogę trochę poteoretyzować, bo crackowaniem gier się nie zajmowałem, natomiast przeniosłem trochę gier na dyski, więc tak czy siak musiałem mieć do czynienia z rozmaitymi dziwacznymi loaderami
Za dawnych czasów miałem Masterface, a obecnie całe spektrum Multiface-like interface'ów.
Może tu się mylę, ale wszystkie tego rodzaju sprzęty mają wyłącznie możliwość zgrywania całej pamięci komputera na taśmę, microdrive itp.
Owszem, ale prawdę mówiąc, crackowanie wszystkich gier przez NMI to raczej jakiś akt rozpaczy czy bezradności
. Ewentualnie wynik pośpiechu. Jeśli gra nie miała zabezpieczenia typu Lenslok (pryzmaty) lub wklepywania literek ze wskazanej kratki na dołączonym kartoniku, to zwykle wystarczała analiza loadera i zablokowanie ostatecznego uruchomienia kodu gry.
Przede wszystkim, istnieją narzędzia do analizy pierwotnego loadera - choćby polski OPENER, który pozwalał uniknąć autostartu i dać szansę na przeanalizowanie zawartości loadera, wyłączając przy okazji wszelkie sztuczki blokujące listowanie i modyfikowanie programu (linia 0, biały INK i PAPER itp.).
Jeśli loader był w całości w Basicu - to nie było co kombinować, bo wszystkie bloki kodu były ładowane komendą LOAD ... CODE. Czyli dowolny kopier był je w stanie przegrać, można też było ręcznie zapisywać wgrane bloki poprzez SAVE.
Zwykle jednak loader składał się z polecenia uruchomienia kodu maszynowego (np. RANDOMIZE USR ...) oraz z linijki zaczynającej się od komendy REM, a po niej ukryty kod maszynowy, widziany jako krzaczki. A to mogło oznaczać, że procedura ładowania z taśmy jest "customowa" - na przykład bez nagłówków, albo z inną prędkością, albo jakimś XOR-owaniem bitów, albo efekciarsko - bez pasków na borderze, tylko z paskami w małym okienku lub z animowanym "licznikiem taśmy".
Tu warto wspomnieć polski program COPY-COPY, który pozwalał wgrywać pliki bez nagłówków i zapisywać jest w standardowym formacie
Zrozumienie kodu maszynowego loadera pozwalała zwykle zablokować uruchomienie gry i zgrać wczytane bloki. Zwykle, ale... nie zawsze.
Wyjątkiem od wszelkich reguł były gry w monobloku o rozmiarze niemal (lub dokładnie) 48 KB. Loader składał się z jednej komendy LOAD "" CODE i... to wszystko. W tym jednym bloku kodu był screen, zmienne systemowe, program w Basicu, kod gry oraz zawartość stosu. I tu już ciężko coś było zrobić bez żmudnej analizy kodu, zwłaszcza w czasach, kiedy nie można sobie było siąść do PC, odpalić emulator i analizować program krokowo, albo otworzyć plik TAP w hexedytorze (o ile kod nie został zaszyfrowany). I wtedy NMI był najprostszą opcją.
A co z "hackowaniem" gier z poziomami, jak to funkcjonowało?
Jeśli format na taśmie był standardowy lub tylko bez nagłówka, to żaden problem - wystarczał COPY-COPY.
Jeśli format był własny - trzeba było znaleźć procedurę jego obsługi i ładować po jednym bloku i potem zapisywać. Oczywiście, w kodzie "złamanej" gry trzeba było zmienić procedury taśmowe na te z ROM-u.
Mam nadzieję, że trzyma się to kupy, co napisałem. COPY-COPY i OPENERA to ostatni raz widziałem z ćwierć wieku temu