676

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Hej!

QTZ napisał/a:

@Seban Czy udało Ci się odzyskać całe Winter '88?

Praktycznie tak, tzn. udało się mi wszystkie części poskładać tak aby się wczytywało całe. Niestety ten kto robił wersję turbo popełnił błąd i w ostatniej części zamiast restartu jest "zwiecha"... błąd zlokalizowałem i poprawiłem ale to wymaga aby napisać dekoder do bloków tego typu, a potem wygenerować ponownie CAS-a z poprawkami. Za co się oczywiście zabrałem, ale mam ostatnio bardzo mało czasu na zajęcie się tym. Niemniej jednak sprawa jest w "kolejce" i ma się ku końcowi.

Piguła/Shpoon napisał/a:

@Seban - jest tutaj gra Ace Of Aces, o ile na emulatorze wczytuje się tylko ekran tytułowy i potem kolejny etap kończy się fioletowym ekranem. To sprawdziłem tego cas'a na prawdziwym sprzęcie (AVG Cart) i tam gra pięknie się uruchamia. To jest ta sama kopia co była na zestawie firmy Empex z Łodzi...

O! dzięki za informację i kolejny kawał porządnej roboty! :) Już od dłuższego czasu chodzi za mną AVG cart, ale obecnie nawet nie miałbym czasu aby się nim porządnie zająć, więc odwlekam sprawę, jednak widzę to to nieuniknione :) tzn. zakup tego carta! :)

Ostatnio edytowany przez seban (2022-02-09 13:46:33)

677

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Hej!

Pewnie gdybym teraz zgrał sygnał, to byłby lepszy. Teraz zgrywam kasety w normalu na innym komputerze i prawie wszystko się od razu wczytuje. Ale sam chciałeś ;) Nie pamiętam czy się wieszało, grę dało się przejść od początku do ostatniej dyscypliny. Czekam na poskładaną wersję i dekoder :)

Z kaset, które ostatnio zgrałem, dwie mają dołączone wersje turbo, może Tobie by się udało je skonwertować na cas-y i zidentyfikować jakie to dokładnie turba są, a przy okazji mają one jakieś nietypowe loadery, z czego wynika, że są nietypowo zapisane, więc myślę, że Cię to zainteresuje. Patrz załącznik. Przy jednej jest napisane, że "Turbo 2000 KSO, AST+2001+Bliz., Standart" (pisownia oryginalna), przy drugiej "Gra zapisana jest w systemie Normal i Turbo 2000."

Post's attachments

lnk.txt 182 b, liczba pobrań: 14 (od 2022-02-10) 

Tylko zalogowani mogą pobierać załączniki.

678

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

taa coś pamiętam. w latach słusznie minionych miałem oryginał gabi+kuadryk spektry; fajne to było że producent zamieszczał też zapis w t2000 ...jednak nie mogłem skorzystać (posiadając kso t2000) bo coś-tam jednak się nie wczytywało albo sypało błędami (zjechana/kiepska taśma); a może to miało być dla dolnośląskiego t2000 (tylko nie było do wyraźnie napisane). u sonixa też mogło tak być, wszak wydawali własne składanki t2000.

679

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Pierwsze nagranie pod Atari800 ładuje mi się przy wyborze Turbo 2000 + joy, drugie jako Turbo2000f. Na temat obu tytułów, było już trochę informacji w sieci. Obie wersje (kasetowa i dyskietkowa), były bardzo dobrze zabezpieczone. Taki urok tego wydawcy :)

Ci, którzy przemawiają w imieniu Boga powinni pokazać listy uwierzytelniające. J. Tuwim

680

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Hej!

Przyjrzałem się plikom załączonym przez QTZ, na pierwszy ogień poszedł Humanoid, a więc aby nie przedłużać to:

Humanoid w wersji standard, zapisano używając bloków o niestandardowej długości. Wstępny loader ma dwa standardowe rekordy (po 128 bajtów) i ładuje blok zawierający czołówkę i licznik odliczający czas ładowania, a potem już występują bloki o długości 2048 bajtów. Bez problemu dało się to przekształcić do postaci CAS.

Po wersji w standard występuje wersja zapisana w formacie "prawie" zgodnym z turbo 2000, czyli mamy tutaj długości impulsów zgodne z Turbo 2000F/K.S.O. 2000, rekordy po 3072 bajty... jedynym zabezpieczeniem jest zmiana sposobu liczenia sumy kontrolnej (zamiast modulo 256 użyto sumy kontrolnej bazującej na XOR). Ten zapis również dało się bez problemu przekształcić do formatu CAS.

W załączniku wyniki konwersji. Pliki CAS zapisane tylko w standardzie można wczytać za pomocą Altirra lub Atari800. Natomiast plik CAS który zawiera dane w Turbo (zawierający bloki danych PWM) można wczytać używając zmodyfikowanego emulatora Atari800 udostępnionego przez FUJI-ego (Atari800 - modified by FUJI).

Loader Turbo oczekuje sygnału na liniii DATA_IN portu SIO. W emulatorze należy wybrać turbo "Manual Switch", a po załadowaniu loadera, należy wejść do menu "Tape Managment" i przełączyć opcję "Turbo Active" na "YES". Należy zwrócić również uwagę aby opcja "Invert Polarity during read", była ustawiona na "YES".

Dla ciekawych formatu rekordów i struktury pliki załączyłem również w archiwum pliki .HEX.

Post's attachments

QTZ - Humanoid (Sonix).zip 142.74 kb, liczba pobrań: 18 (od 2022-02-13) 

Tylko zalogowani mogą pobierać załączniki.

681

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Następny kawałek układanki, czyli "Gabi" na warsztacie... udało się przeprowadzić konwersję do plików CAS, jednak nie jest ona optymalna, a to z tego względu że narzędzia zarówno Krótkiego (FSK) jak i i FUJI-ego (FSK/Turbo) nie przewidywały takich "myków" (czytaj takich niestandardowych metod zapisu) jakie wystąpiły w nagraniach (wydanych przez SONIX), ale o tym za chwilę.

Archwimum zawiera 3 pliki:

  1. Gabi (Sonix) [FSK].cas

  2. Gabi (Sonix) [KSO2000].cas

  3. Gabi (Sonix) [T2000F, AST, KSO].cas

(1) plik CAS zawiera wersję Gabi zapisaną w standardzie. Narzędzie Krótkiego (a8cas-convert) poradziło sobie z konwersją tyle że nie do końca optymalnie, jednak wygenerowało poprawny plik CAS, tzn. taki który da się wczytać używają emulatora atari800. Jeżeli chodzi o Altirra to początkowo sądziłem że nie radzi sobie ona z tak zapisanym plikiem (loader po rekordzie z zabezpieczeniem twierdzi że nastąpił "błąd wczytywania"), chociaż bez problemu wczytuje plik w formacie WAV, wszystko wskazuje na to że Altirra ma błąd. Plik CAS nie wczyta się poprawnie, jednak gdy przełączymy w opcjach "Turbo Support" na "Always ON", a następnie załadujemy plik CAS, to on wczyta się i uruchomi bez najmniejszego problemu... tak... tak... to jest zupełny idiotyzm, bo przy "Turbo Support" ustawionym na "Always ON", nie powinno się dać załadować żadnego pliku w standardzie, jednak w tym wypadku to działa... dlaczego? nie wiem, nawet nie próbowałem wnikać. A odkryłem to przez przypadek gdyż wcześniej testowałem pliki zapisane w Turbo.

Może dwa słowa o zabezpieczeniach jakie zastosował Sonix, nie są one jakieś super skomplikowane, jednak jak widać "upierdliwe" zarówno dla narzędzi konwertujących jak i dla emulatorów. Nagranie składa się z loadera, który to potem ładuje dalszą cześć nagrania składającą się 512 bajtowych rekordów danych, jednak w kilku momentach nagrania (w przypadku GABI są to dwa miejsca) w rekordzie danych po występują bajty zapisane z obniżoną prędkością (nie 600 bodów tylko coś około 300 bodów) ... loader wie dokładnie kiedy te bajty w strumieniu danych nastąpią i ponieważ "podmienia" on wektor SERIN, to w chwili gdy taki bajt ma nastąpić przestawia on prędkość odczytu na obniżoną, następnie po odczytaniu takich "spowolnionych" bajtów, przywraca standardową prędkość transmisji.

Narzędzie do konwersji WAV-->CAS nie zakładają takiego scenariusza, ale wychodzą z tego obronną ręką, tworząc blok FSK od miejsca wystąpienia "spowolnionego" bajtu do końca rekordu (zamiast DATA) w pliku CAS. Nie przeszkadza to oczywiście w niczym poza estetyką pliku, jak widać emulator atari800 a nawet "oszukana" Altirra dają radę to wczytać. Pewnie by się to dało ręcznie nawet edytować i poprawić, ale to już pozostawię zapaleńcom i miłośnikom nagrań w formacie zabezpieczonym przez Sonix. Dysponując plikiem oryginalnym czy nawet plikiem CAS można sobie już zrobić z tego wszystko.

(2) Plik CAS zawiera wersję nagraną w formacie Turbo, długości impulsów PWM są zgodne z Turbo2000F/KSO Turbo 2000, tyle że format danych jest dość specyficzny... narzędzie FUJI-ego nie potrafiło nad nim zapanować (zaraz wyjaśnię dlaczego), więc należało przy konwersji do pliku CAS użyć formatu "genric" (opcja -t generic w a8cas-util), a więc zamiast typowych bloków "pwmd", są bloki typu "pwml".

A wszystko to wymuszone zostało przez format danych który zastosowano do zapisu... niby w tym formacie danych są normalne impulsy zgodne z Turbo2000F/KSO (tzn. sync, "0", "1"). Format danych niby identyczny z tzw. nowym formatem Turbo 2000F, gdzie każdy segment danych w pamięci jest zapisywany jako oddzielny blok, poprzedzony blokiem nagłówka (gdzie i ile danych będzie zawierał następny blok) ... jednak w przypadku tego formatu, rekord danych nie kończy się normalnie... następuje seria bajtów danych, a potem zamiast bajtu CRC jest jeden impuls sygnału pilotującego, co jest sygnałem dla loadera że to koniec bloku danych, a po tym impulsie, jest zapisany właśnie bajt CRC.

Zatem każdy program kopiujący czy też narzędzie nie "będące świadome" tego typu zabiegu, będzie traktowało taki przypadek jako błąd czy przekłamania danych, a loader sprawdza dokładnie i oczekuje tego "błędnego" impulsu jak znacznika końca danych.

Generalnie wygląda to tak jakby *AJEK maczał w tym loaderze palce, zastosowane mechanizmy i kod loadera jest dość podobny do tego co potem nastąpiło w Speedy2700 napisanym przez *AJEK.

Format danych jest po prostu drobną modyfikacją tego co się zwało "nowym formatem" Turbo 2000F lub tym formatem danych który baktraaa nazywa formatem L3 w swoim Turgen.

(3) Ten plik jest właściwie tożsamy z plikiem #2, różnica jest taka że loader niby jest przeznaczony dla systemów Turbo 2000F/AST/ATT/UM (oczekuje danych na linii DATA_IN portu SIO), jednak co ciekawe ten loader w przeciwieństwie do pierwszego loadera, jednak ten loader próbuje wykryć system turbo (jak speedy2700) i jak znajdzie podłączony interface KSO Turbo 2000 do drugiego portu JOY-a to przełączy się na odbiór danych z tego interface. Loader z pliku #2, nie próbuje wykonać auto-detekcji tylko od razu oczekuje sygnału z interface KSO2000.

Dane z tego nagrania udało się cudem wyłuskać, bo taśma miejscami była mocno zmiędlona, ale pomógł prymitywny konwerter którego używałem od obrobienia wcześniejszych nagrań z "Winter Olympiad 88".

Jak pisałem pliki wygenerowane z użyciem "-t generic" zawierają bloki "pwml" zawierające po prostu surowe dane określające długości poszczególnych impulsów zapisanych na taśmie, dlatego też o wiele dłuższe niż standardowe pliki zawierające segmenty "pwmd". Ale to już jest jakiś punkt zaczepienia, zawsze można napisać prosty konwerter, znając format danych i występujące w tym formacie "zabezpieczenie" odbiegające od standardowych rozwiązań.

Jak znajdę jeszcze wolniejszą chwilę to postaram zająć się też "Kwadrykiem", wszystko wskazuje na to że to przypadek podobny do GABI :)

ps) aby wczytać pliki CAS zapisane w turbo używając zmodyfikowanego przez FUJI-ego emulatora atari800, należy pamiętać aby opcja "Invert polarity durging READ" była ustawiona na "NO" (jest to pokłosie tego impulsu zabezpieczającego, po którym następuje bajt CRC).

Ostatnio edytowany przez seban (2022-02-16 13:55:26)

Post's attachments

QTZ - Gabi (Sonix).zip 353.04 kb, liczba pobrań: 13 (od 2022-02-16) 

Tylko zalogowani mogą pobierać załączniki.

682

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

@Seban Wielkie dzięki za przeanalizowanie, opis i skonwertowanie :)

Musze przyznać, że nie spodziewałem się że aż tyle ciekawostek kryje się na tych nagraniach. Choć te kolorowe paski kojarzyły mi się z *AJEK-iem.

Kvadryk (tudzież Kuadryk?) pochodzi z drugiej strony tej samej kasety co Gabi, więc bardzo prawdopodobne, że jest zapisany w ten sam sposób.

"taśma miejscami była mocno zmiędlona" Może coś poszło nie tak przy zgrywaniu, bo nie przypominam sobie, żeby były jakieś problemy z tą taśmą? Popatrzę...

Co do Humanoida, to widzę, że największy problem miałem z prawidłowym wyborem turbo i wczytaniem w emulatorze. Napisałeś, że bloki zgodne z Turbo KSO, ale jednak to turbo nie "łapie" nazwy. Nie sprawdzałem, czy po podmianie nazwy z innej kasety odczytuje bloki danych (błąd byłby na końcu bloku)?

Ostatnio edytowany przez QTZ (2022-02-16 20:40:27)

683

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Hej!

QTZ napisał/a:

@Seban Wielkie dzięki za przeanalizowanie, opis i skonwertowanie :)

Naprawdę nie ma za co, dla mnie możliwość przyjrzenia się temu to też "kopalnia ciekawostek", wtedy gdy było to wydawane nie miałem styczności z tymi wydaniami (inny region geograficzny) ... oryginały miałem jedynie od Avalon i Mirage, no czasami udało się coś od ASF kupić, ale to były już głównie wydania dyskietkowe. Wydania kasetowe od Sonix czy Krysal były dla mnie niedostępne. Także dzięki wielkie za udostępnienie tych nagrań!

QTZ napisał/a:

Musze przyznać, że nie spodziewałem się że aż tyle ciekawostek kryje się na tych nagraniach. Choć te kolorowe paski kojarzyły mi się z *AJEK-iem.

No ja też nie (w odniesieniu do ciekawostek), a kod loaderów jest dość charakterystyczny, można znaleźć podobieństwa do tego co potem było w różnych "*ajkowych" dziełach... swoją drogą ciekawe jest to czy ta "*" którą wypisuje na dole loader to przypadek czy może jakaś aluzja co do autorstwa loadera :D

QTZ napisał/a:

"taśma miejscami była mocno zmiędlona" Może coś poszło nie tak przy zgrywaniu, bo nie przypominam sobie, żeby były jakieś problemy z tą taśmą? Popatrzę...

No w kilku miejscach nagrania są tego typu zaniki sygnału:

http://seban.pigwa.net/aa/gabi_signal_fade.png

"a8cas-util" nie potrafił sobie z nimi dobrze poradzić, albo ja nie potrafiłem dobrze dobrać parametrów przetwarzania tego sygnału.

QTZ napisał/a:

Co do Humanoida, to widzę, że największy problem miałem z prawidłowym wyborem turbo i wczytaniem w emulatorze. Napisałeś, że bloki zgodne z Turbo KSO, ale jednak to turbo nie "łapie" nazwy. Nie sprawdzałem, czy po podmianie nazwy z innej kasety odczytuje bloki danych (błąd byłby na końcu bloku)?

No tak jak pisałem wyżej, bloki są zgodne (w sensie szerokości impulsów, struktury nagrania) zgodne z formatem Turbo 2000 (F/KSO), ale dokonano jednej zmiany... sposób liczenia sumy kontrolnej jest inny (nie modulo 256, a XOR) ... to dlatego nie możesz odczytać nazwy, a jak podstawisz inną to potem masz błąd sumy kontrolnej pliku, ponieważ jest ona liczona w inny sposób, aby dokonać konwersji takiego pliku wystarczyło użyć opcji "-cksum xor" przy wywołaniu "a8cas-util".

Zresztą jeżeli chodzi o kopiowanie tego typu plików to przyszedł mi do głowy jedne pomysł, sprawdzę i dam znać czy mój pomysł się sprawdził.

Atak minął, wydawało mi się że był gdzieś program W.Zabołotnego (tego od Turbo 2T06, 2T09, 2T12) w którym można było kopiować dane we wcześniejszym formacie (właśnie z sumą kontrolną bazującą na XOR a nie na modulo 256) ... chyba jednak mi się wydawało... bo nie mogę nic takiego znaleźć teraz, pewnie już mam urojenia :P

Ostatnio edytowany przez seban (2022-02-17 14:33:32)

684

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Też mi przyszło do głowy, że można by spróbować zmodyfikować Long Turbo Copy jak poprzednio to zrobiłem dla zabezpieczeń AutoCopy 3.0 i 3.1. Ten właśnie kopier obsługuje jakiś niestandardowy format, może to to?

Edit: Sprawdziłem, to to!!! Nic nie trzeba modyfikować cały plik został odczytany!!! Przełączenie formatu to klawisz T, Odczyt w trybie 1T (normalnie 2T).

Zapisałem w trybie 2T i działa normalnie z Turbo KSO w wersji 2T12!!! Plik z emulatora zapisany niezbyt elegancko, ale działa prawidłowo.

Czyli musi istnieć Turbo KSO 1T## !? O którym piszesz "w starym formacie".

Ostatnio edytowany przez QTZ (2022-02-17 18:22:59)

Post's attachments

Humanoid (Sonix) [T2000_2T_TEST].7z 58.13 kb, liczba pobrań: 8 (od 2022-02-17) 

sonix.png 2.26 kb, liczba pobrań: 1 (od 2022-02-17) 

Tylko zalogowani mogą pobierać załączniki.

685

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

A widzisz... czyli jednak nie miałem urojeń tylko sklerozę :) Pamiętałem że to był program od W. Zabołotnego :) Tylko nie kojarzyłem który :)

686

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

QTZ napisał/a:

Czyli musi istnieć Turbo KSO 1T## !? O którym piszesz "w starym formacie".

Z artykułu w czasopiśmie IKS nr 11/1998, na stronie nr 7 sam Wojciech Zabołotny pisał:

http://seban.pigwa.net/aa/wzab_1Txx.png

oczywiście mamy tutaj błąd w druku i zamiast "iT", powinno być "1T".

687

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Dziwnie znajomy ten tekst :) ...i literówka niestety ta sama :|
https://atarionline.pl/forum/comments.p … =1#Item_17 (text on-line)
https://atarionline.pl/forum/?PostBackA … entID=4891 (plik)
Nie skojarzyłem, że może chodzić o to 1T, choć samo 1T kojarzy się, że może chodzić o pierwszą wersję formatu, trzeba też pamiętać o wersji KSO 1.0 dla normalu (wcześniej sprawdzałem, że nie o nią chodzi).

Skąd wiedziałeś, że suma kontrolna w tym programie jest liczona przez XOR? Przeanalizowałeś kiedyś jego działanie? Spotkałeś się już z takimi plikami?

Jak pisałem mam zaległości w czytaniu, może już to opisałeś, jak się ma Turbo KSO (powstałe na bazie KSO) do innych systemów turbo? Czy jest to autorski system, co by wynikało również z tego tekstu, czy na nim bazowały inne czy może jednak odwrotnie?

Wracając do tych kaset to ciekawe jak to się stało, że użyli starej wersji Turbo KSO?

Co do kasety Gabi / Kuadryk, wydaje mi się, że druga strona wygląda lepiej. Postaram się zgrać tę kasetę raz jeszcze i zobaczę, czy jest tak samo.

Ostatnio edytowany przez QTZ (2022-02-18 03:19:57)

688

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

QTZ napisał/a:

Skąd wiedziałeś, że suma kontrolna w tym programie jest liczona przez XOR? Przeanalizowałeś kiedyś jego działanie? Spotkałeś się już z takimi plikami?

Widzisz, siedziało mi to jakoś z tyłu głowy, tzn. przyjrzałem się plikowi od Ciebie, a ponieważ był w niezłej formie i jakości, to zauważyłem że mimo tego że suma kontrolna (CRC) jest błędna, to zawsze tak sama, czyli wynikało z tego że nagranie jest poprawne jednak format danych jest nieco inny, zajrzałem więc do loadera, a tam od adresu $7B1:

07B6: B1 32     LDA ($32),Y ;BUFRLO
07B8: 48        PHA
07B9: 18        CLC
07BA: 45 31     EOR $31     ;CHKSUM
07BC: 85 31     STA $31     ;CHKSUM
07BE: 68        PLA
07BF: 20 3B 07  JSR $073B
07C2: 68        PLA

... jest procedura która po odczytaniu bajtu danych z taśmy dokonuje aktualizacji sumy kontrolnej, czyli:

07B9: 18        CLC
07BA: 45 31     EOR $31     ;CHKSUM
07BC: 85 31     STA $31     ;CHKSUM

jak widać pod adresem $7B9 została instrukcja CLC, co oznacza iż oryginalnie była w tym miejscu standardowa procedura liczenia CRC, która wyglądałaby tak:

07B9: 18        CLC
07BA: 65 31     ADC $31     ;CHKSUM
07BC: 85 31     STA $31     ;CHKSUM

... teraz wszystko stało się jasne, w dodatku z tyłu głowy miałem gdzieś te wszystkie informacje o formatach danych które były w ten sposób zabezpieczony o o których napisał Pajero w Atariki: Zapis z zabezpieczeniami. Do tego jak pisałem wcześniej wydawało mi się że był jakiś program W.Zabołotnego który miał zmianę formatu odczytanych danych, w dodatku pamiętałem ten tekst z IKS-a, bo kiedyś poprawiałem w Atariki wpis o turbo 2T06 ... no i do kompletu na pewno czytałem Twoje wpisy o Long Turbo Copy, tylko pamięć moja nie pozwalała sobie na przypomnienie nazwy programu, ale na szczęście Ty o tym pamiętałeś :D

QTZ napisał/a:

Wracając do tych kaset to ciekawe jak to się stało, że użyli starej wersji Turbo KSO?

Ależ sądzę że zrobili to celowo i z premedytacją, nie wiem czy byli świadomi istnienia formatu 1T czy też "patchowali" istniejące (późniejsze) Turbo 2000F... ale ten "pozostawiony" samotny "CLC", na to właśnie wskazuje. Po prostu zmianę sposobu liczenia CRC uważali za swego rodzaju zabezpieczenie... jak "silne" ono było to właśnie widać ;) Dużo bardziej się postarali w Gabi/Kwadryk ;)

Wszystkie te systemu turbo, czyli KSO 2000, Turbo 2000F, Turbo 2001, etc. są zgodne w 100% z Turbo 2T06 Wojciecha Zabołotnego i sądzę że właśnie na tym rozwiązaniu bazowały, format zapisu na taśmie w tych wszystkich systemach jest dokładnie taki sam jaki stworzył/przedstawił/wymyślił W.Zabołotny ... nawet procedury transmisji KSO2000, T2000F, etc. są identyczne jak w Turbo 2T06. Te systemy i ich oprogramowanie to ewolucja w czystej postaci bazująca na tym czemu podstawy dał W.Zabołotny.... zresztą to samo dotyczyło się rozwiązań sprzętowych... to po prostu różne drogi do osiągnięcia tego samego celu.

Ostatnio edytowany przez seban (2022-02-18 11:04:26)

689

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Hej!

Już ku formalności załączam archiwum z przekształconymi do formatu CAS, plikami zawierającymi grę Kuadryk (Kwadryk?) .

Archiwym zawiera 3 pliki:

  1. Kuadryk (Sonix) [FSK].cas

  2. Kuadryk (Sonix) [T2K].cas

  3. Kuadryk (Sonix) [T2F, T2K, AST].cas

1] Plik zawiera grę zapisaną w prędkości standardowej. Sposób zabezpieczania z tym który opisywałem przy Gabi, a więc rekordy o niestandardowych rozmiarach, a do tego w strumień wtrącone bajty z niższą prędkości bitową.

2] Plik zawiera grę zapisaną w Turbo, przed grą w turbo zapisano loader ładujący się w prędkości standardowej, jednak z zabezpieczaniami (rekordy o różnej długości), ten loader oczekuje sygnału na drugim porcie Joysticka, a więc zgodność sprzętowa z KSO Turbo 2000. Impulsy kodujące zgodne z KSO Turbo 2000/Turbo 2000F, zabezpieczenie tożsame z tym które opisywałem parę postów wyżej z opisem zastosowanych zabezpieczeń w Gabi.

3] Plik zawiera również grę zapisaną w Turbo, jednak loader tym razem obsługuje systemy turbo które oczekują sygnału na linii DATA_IN portu SIO, a więc będą działać systemy takie jak AST, ATT, UM (i wszystkie które są włączane za pomocą linii COMMAND), Turbo 2000F (po wczytaniu loadera w standardzie należy szybko przełączyć magnetofon na tryb turbo). Loader ten jednak jest na tyle uniwersalny że jeżeli wykryje interface KSO Turbo 2000 podłączony do drugiego portu joysticka, to przełączy się na odbiór sygnału z tegoż źródła.

Post's attachments

QTZ - Kuadryk (Sonix).zip 401.41 kb, liczba pobrań: 10 (od 2022-02-23) 

Tylko zalogowani mogą pobierać załączniki.

690

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Jeszcze jeden mały update i powrót do wersji GABI zapisanej w standardzie...

Spokoju mi nie dawało ze Altirra nie radzi sobie za dobrze z plikami CAS w których występują kombinacje segmentów DATA i FSK. Gabi i Kuadryk zapisane w standardowej prędkości (modulacja FSK o prędkości ~600 bitów/sek) zwierały dwa rodzaje zabezpieczeń o której pisałem wyżej (rekordy niestandardowej długości, oraz tzw. rekordy "multi-baud", tzn. takie w których prędkość transmisji jest zmieniana w trakcie transmisji rekordu). Z tym zabezpieczeniem a8cas-converta i a8cas-util radziły sobie stosując bloki typu "FSK", zamiast segmentów DATA opisującej standardowe rekordy (co prawda o dowolnej długości, jednak o standardowej budowie typu nagłówek 0x55,0x55, dane ... , CRC).

Eksperymentując z "Kuadrykiem" zauważyłem, że odpowiednia obróbka pliku wejściowego (zastosowanie filtru band-pass) i np. użycie opcji "bit-deviation"...

a8cas-convert --bit-deviation 0.3 -fh "kuadryk_blk3 (FSK).bp.wav" "kuadryk_blk3 (FSK).bp.hex" 

...spowodowało że a8cas-convert stworzył plik .hex zawierający tylko i wyłącznie segmenty DATA i poprawnie rozpoznając rekordy typu multi-baud, nie stworzył plików typu FSK.

Z wczytaniem tego typu pliku Altirra nie miała już żadnego problemu, a więc postanowiłem "popracować" nad "Gabi" aby wyprodukować tego typu plik. Niestety nie potrafiłem zmusić a8cas-convert do wygenerowania tego typu pliku w przypadku "Gabi". Pierwszy rekord multi-baud udawało mu się rozpoznać, natomiast drugi rekord z uporem maniaka był konwertowany jako blok typu FSK.

Postanowiłem się przyjrzeć co w tej kwestii może mi zaoferować a8cas-util od FUJI-ego, zauważyłem w nim opcję --minfsk, która właściwie robiła to o co mi chodziło...

./a8cas-util.pl --autoadjust --highpass --minfsk conv "gabi_blk3 (FSK).wav" "gabi_blk3 (FSK).hex"

Jednak albo jakość nagrania, albo kombinacja bitów w tym nagraniu powodwały że tworzony rekord multi-baud nie był poprawny:

baud 00570
data 00394 55 55 00 00 02 56 a2 3b 20 83 ec a2 18 20 ff ed a2 18 20 83 ec 20 4a f4 a2 03 20 74 fe ; record=40 ; length=29 ; checksum=1f BAD
baud 00383
data 00000 a2 2f a9 01 20 21 ; record=41 ; length=6 ; checksum=9c BAD
baud 00570
data 00009 a2 03 20 77 eb 20 d2 ea a9 85 a0 98 20 98 ec ... ... ...  d0 03 4c c4 3a a2 3b 58 ; record=42 ; length=482 ; checksum=ad BAD

Każdy długi rekord w tym nagrani składa się 518 bajtów (512 bajtów danych + nagłówki + CRC), a jak widać powyżej drugi rekord multi baud został mylnie zinterpretowany przez program a8cas-util, ponieważ został rozpoznany tak że składa się z 29+6+482 = 517 bajtów, brakuje więc jednego bajtu... być może inne są też przekłamane, należało by to zatem skorygować... tylko jak określić które bajty i jakie powinny mieć wartości?

Tutaj z pomocą przychodzi emulator i wczytanie do niego tego samego pliku w postaci wav... a potem przeszukanie pamięci i poszukanie w niej sekwencji bajtów występujących na końcu poprawnej części rekordu multi-baud:

20 4a f4 a2 03 20 74 fe

czyli wchodzimy do monitora atari800, poszukujemy sekwencji bajtów z rekordu, znajduje się ona pod 3462, deasemblujemy od wskazanego adresu i już wiemy jakich bajtów jest za dużo i jakich brakuje:

> s 0400 ffff 20 4a f4 a2 03 20 74 fe
Found at 3462
> d 3462
3462: 20 4A F4  JSR $F44A
3465: A2 03     LDX #$03
3467: 20 74 FE  JSR $FE74
346A: A2 2F     LDX #$2F
346C: A9 01     LDA #$01
346E: 20 03 EC  JSR $EC03
3471: A2 03     LDX #$03
3473: 20 77 EB  JSR $EB77
3476: 20 D2 EA  JSR $EAD2

z powyższego wynika że:

data 00000 a2 2f a9 01 20 21 ; record=41 ; length=6 ; checksum=9c BAD

^^^ tutaj mamy jeden bajt za dużo (ten końcowy o wartości $21), natomiast w następnych danych:

data 00009 a2 03 20 77 eb 20 d2 ea a9 85 a0 98 20 98 ec ... ... ...  d0 03 4c c4 3a a2 3b 58 ; record=42 ; length=482 ; 

brakuje dwóch bajtów (482 bajty, zamiast 484 bajtów --> tak aby suma wszystkich bajtów w rekordzie wynosiła 518 bajtów) ... ze zdisasemblowanej treści wynika że brakuje bajtów: $03,$EC.

Po wprowadzeniu poprawek do pliku .HEX otrzymujemy poprany plik zawierający dwa rekordy multi-baud, co jest zgodne z oryginałem.

Dołączam ten plik do posta. Teraz i Altirra nie ma problemu z jego odczytaniem, w standardowych ustawieniach.

Ostatnio edytowany przez seban (2022-02-23 22:28:03)

Post's attachments

Gabi (Sonix) [FSK_multibaud].cas.zip 24.14 kb, liczba pobrań: 9 (od 2022-02-23) 

Tylko zalogowani mogą pobierać załączniki.

691

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Wielkie Dzięki, obiecałem zgrać ponownie te pliki, ale niestety fizycznie do dziś nie miałem możliwości...

692

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Hej!

No udało się odzyskać/przetworzyć wszystkie dane z tych nagrań które dostarczyłeś, więc nie zawracałem głowy już ;)

693

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Szanowna Braci Atarowska!

Turbo Copy 4 został uratowany i zarchiwizowany! :) A wszystko to  dzięki uprzejmości i zacięciu naszego szanownego forumowego kolegi Krap-a, udało się wykonać dokładny zrzut dyskietki z programem "Turbo Copy 4" autorstwa Roberta Kujdy. Dzięki zaangażowaniu Krap-a, dzięki skorzystaniu z jego doświadczenia i sprzętu którym dysponował niemożliwe stało się możliwe i oto jest! Także WIELKIE podziękowania Krap! Podzieliłeś się swoją wiedzą i doświadczeniem, znalazłeś czas dzięki temu kolejna "perełka" z odmętów historii została zachowana dla potomnych!

Co to jest Turbo Copy 4? Dla tych którzy nie używali zbytnio kaset może to być i zagadka, ale dla ludzi którzy w latach '80 korzystali z usług różnych "studiów komputerowych" w których można było nabyć kasety z grami dla komputerów Atari, często spotykali się z nagranymi programami wygenerowanymi przez ten program. Loader był bardzo charakterystyczny, a nagranie było zabezpieczone przez skopiowaniem, dodatkowo zbiory zapisane przez TurboCopy 4 mogły być (i domyślnie były) kompresowane metodą RLE przed zapisem na taśmę, a loader dokonywał dekompresji danych w trakcie ich wczytywania.

http://seban.pigwa.net/atari/TC4/tc4_a.png  http://seban.pigwa.net/atari/TC4/tc4_b.png

http://seban.pigwa.net/atari/TC4/tc4_c.png  http://seban.pigwa.net/atari/TC4/tc4_d.png

W sumie jest to cały zestaw programów, który jak na rok powstania (1987) a całkiem spore możliwości, bo oprócz samego programu kopiującego jest też wbudowana w niego baza danych zawierająca spis programów. Szczegóły możecie doczytać w pliku z dokumentacją który dołączony jest do archiwum. Krap wyciągnął plik z dyskietki i przekonwertował do postaci czytelnej na PC.

Jak już wspominałem wcześniej w tym wątku, dyskietka z owym programem została pozyskana od Krzyśka Steca, który to urzędował na giełdzie na Grzybowskiej. Nie wiem skąd on miał ten program, ale to właśnie od niego pozyskałem kopię. Dyskietka zawiera zabezpieczenia, więc została przekonwertowana do formatu ATX, który czyta np. emulator Altirra.

Nie miałem czasu na analizowanie zabezpieczeń programu i ich usunięcie, więc wrzucam po prostu to co się udało zgrać. Jak nadejdzie spokojniejszy czas być może wrócę do dalszej analizy i opisu tego programu, deasemblacji loadera, etc. Na chwilę obecną wrzucam to co udało się "zdumpować" Krap-owi. Pozostała jeszcze druga strona dyskietki gdzie jest "Turbo Copy 3", ale to musi poczekać na następna sesję KyroFlux-owania z Krap-em ;-)

Post's attachments

TurboCopy4.zip 92.35 kb, liczba pobrań: 21 (od 2022-03-03) 

Tylko zalogowani mogą pobierać załączniki.

694

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Super, że udało się ten soft odnaleźć i zgrać, dzięki chłopaki!

Od siebie dołączam instrukcję uzupełnioną o polskie znaki, dodatkowo wersję bez łamania linii, do druku, edycji czy tłumaczenia. Dołączam też listę programów z pliku gry.obj. Spis obejmuje 714 tytułów, zapisanych na 60-ciu dyskietkach. Dyskietki numerowane są od 1 do 87, jednak część nie została skatalogowana - szczegóły w pliku. Załączona lista została ułożona wg numerów z oryginalnego wydruku, w drugim pliku wersja posortowana po numerach dyskietek.

Wcześniej wyciągałem pliki xex z plików cas nagranych z kaset nagranych tym softem, więc chciałbym porównać powyższy spis z listą zgranych plików, jak też sprawdzić czy da się odtworzyć pełną zawartość choć jednej dyskietki :) Oczywiście byłoby też fajnie gdyby udało się te "*oryginalne*" dyskietki odnaleźć :)

Post's attachments

turbo_copy_4_instrukcja_i_lista_ogonki_pl.7z 11.89 kb, liczba pobrań: 15 (od 2022-03-03) 

Tylko zalogowani mogą pobierać załączniki.

695

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Miałem okazję już trochę się tym pobawić. @Seban @Krap REWELACJA! Mega fajnie, że udało się to odzyskać. Będę miał niezłą zabawę w wolniejszy wieczór... bo czyste taśmy już czekają :)

Ci, którzy przemawiają w imieniu Boga powinni pokazać listy uwierzytelniające. J. Tuwim

696

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

Winter Olympiad 88 - Turbo version by *AJEK

Hej!

Trochę to zajęło, ale w końcu znalazłem czas aby dokończyć sprawę odzyskania Winter Olympiad 88 w wersji dla Turbo 2000 (KSO/F) którą zrobił swego czasu *AJEK, a którą to udostępnił tutaj QTZ.

Gra w wersji turbo została podzielona na kilka bloków, na które składają się loader, intro, oraz pliki zawierające poszczególne dyscypliny (Downhill, Ski Jump, Biathlon, Slalom, Bobsled).

Konwersja tego zajęła mi trochę czasu, ponieważ borykałem taśmy z których zrzutu dokonał QTZ były już dość stare, a więc wysokie częstotliwości zapisane na taśmie były już na poziomie tak niskim że ledwie udało się to wszystko odzyskać. Na szczęście QTZ zgrał kilka wersji, i tylko dzięki temu udało się poskładać całość, wybierając najlepsze fragmenty nagrań z kilku plików źródłowych.

Do kompletu *AJEK postanowił zabezpieczyć swoją wersję przed kopiowaniem, zapewne dlatego aby konkurencja giełdowa nie mogła “bezstratnie” powielać jego wersji. Nie będę tutaj ukrywał faktu, że przez zabawę z tymi nagraniami i próbami odtworzenia całości, nabyłem też nieco więcej doświadczenia z obróbką tego typu sygnałów. Zauważyłem że uparte siedzenie i walka z jakimś nieczytelnym fragmentem zapisu nie jest dobrym pomysłem, bo w człowieku szybko rodzi się frustracja. Mi pomagało oderwanie się na jakiś czas od tematu i zajęcie się czymś innym. Potem wracałem do tego po jakimś czasie z nowymi siłami.

Na moją frustrację nałożyło się też to że *AJEK wykonał swoją pracę nieco “na odwal się”, byle działało to “jakoś”, początkowo myślałem że to przekłamania w nagraniach i przypadkowo tylko zgodziła mi się suma kontrolna, ale analizując kod doszedłem do wniosku że pod koniec roboty *AJK-owi się już nie chciało. Popełnił kilka kardynalnych błędów, które wymagały “patchowania”, niektórych miejsc pliku. Pojawiało się też kilka tzw. “glitch”, spowodowanych brakiem czyszczenia pamięci, albo wykorzystaniem miejsc pamięci (na loadery czy inny kod) co do których producenci gry oczekiwali że będą puste.

Poprawiłem najważniejsze tego typu “zaciachy”, a resztę (takie usterki które nie powodowały zawieszania się programu) zostawiłem w takim stanie w jakim zastałem. Jedną z widocznych pozostałości, jest to że gdy gramy we wszystkie dyscypliny po kolei i dokonamy pierwszego startu w konkurencji “Bobsled”, to zamiast animacji nóg postaci ujrzymy śmiecie, na grafice, jednak ponowne rozpoczęcie tej konkurencji powoduje że animacja wyświetla się już poprawnie. Do kompletu początkowo wersja z loaderem dla “Turbo 2000F” (dane pojawiają się na SIO DATA IN), nie działała poprawnie, tzn. gra nie wykrywała naciśnięcia klawiszy… a to tylko dlatego że kod sprawdzający wciśnięcie klawisza, jest naprawdę jakiś “porąbany”, i zamiast “filtrować” z rejestru SKSTAT nieistotne bity, jest skonstruowany tak że bierze pod uwagę nieistotne bity… nie wiem czy to jest jakiś fragment zabezpieczenia oryginalnej wersji, czy też po prostu nielogiczy i bezsensowy kod, jednak występuje on w oryginalnej wersji dyskowej, zatem go zostawiłem z niezmienionej formie:

    14B7: A9 00             LDA #$00
    14B9: 8D 0E D2          STA IRQEN
    14BC: AD 0F D2          LDA SKSTAT
    14BF: 09 08             ORA #$08
    14C1: C9 FF             CMP #$FF
    14C3: D0 F7             BNE $14BC
    14C5: E6 A3             INC $A3
    14C7: A2 00             LDX #$00
    14C9: AD 0F D2          LDA SKSTAT
    14CC: 29 04             AND #$04
    14CE: F0 06             BEQ $14D6
    14D0: CA                DEX
    14D1: D0 F6             BNE $14C9
    14D3: A9 00             LDA #$00
    14D5: 60                RTS

Do działania klawiatury w przypadku wersji Turbo 2000F doprowadziłem, dbając o to aby wejście szeregowe pozostało po transmisji w odpowiednim stanie i tak aby bit 4, rejestru SKSTAT był w takim stanie aby powyższa procedura działała poprawnie.

Jeżeli chodzi o patch w krytycznym miejscu, to po zakończeniu wszystkich dyscyplin, wersja *AJKA powinna była wypisać komunikat o ustawieniu taśmy na początku i wciśnięciu klawisza “OPTION” celem, wykonania zimnego startu komputera. Jednak kod który miał zostać uruchomiony wyglądał na uszkodzony, tzn. domyślam się że miało być tak:

    LDX    #$00
CPL LDA    $BB00,X
    STA    $BD00,X
    INX
    BNE    CPL
    …

co po przełożeniu na kod maszynowy daje następującą sekwencję bajtów:

A2 00 BD 00 BB 9D 00 BD

gdzie bajty “A2 00”, odpowiadają instrukcji LDX #0, jednak którą z części nagrania bym nie przetwarzał to zamiast “A2 00”, wychodziło mi że tam jest “52 00”, a więc sądziłem że to przekłamanie w nagraniu, poprawiłem więc szybko na “A2 00” i sądziłem że sprawa jest załatwiona. Niestety, okazało się że owo “52”, należy do tablicy zawierającej poszczególne adresy ładowania kolejnych bloków. A owa tablica “zadeptała” ów nieszczęsny kod, a więc “Boblsed” po zakończeniu rozgrywki skakał pod adres i CPU próbował wykonać instrukcję “52”, która jest po prostu niezdefiniowaną instrukcją, w tym wypadku “CIM” czy “KIL”, z 6502 po napotkaniu bajtu 52, po prostu się zawiesza i tylko reset jest w stanie wyprowadzić go z tego stanu. Należało więc tak poprawić kod aby bajty tabeli adresów ładowania pozostały niezmienione, a jednocześnie kod mógł być wykonany poprawnie. Skończyło się na tym że poprawiłem inny kawałek, modyfikując go tak i skracając aby procedura wywołująca ten kod skakała dwa bajty dalej, a w rej. X przed skokiem znajdowała się wartość 0. Po dokonaniu poprawek okazało się że komunikat o przewinięciu taśmy do “HEAD 1”, pokazuje się (zamiast zawieszenia się maszyny). A OPTION powoduje reboot. Tyle walki o tak bezsensowny drobiazg? :) no cóż… wnerwiało mnie to, więc poprawiłem. Wiem że niewiele to wnosi, jednak nie potrafiłem przejść obojętnie obok takiej “fuszerki” :P (oczywiście piszę to trochę z przymrużeniem oka, zapewne *AJEK zorientował się że popełnił taki błąd, jednak pewnie nie chciało mu się tego już poprawiać”, kod obsługujący to wszystko znajduje się bowiem w pierwszym bloku nagrana, tzn. “HEAD 1”)

Ufff…. to by było na tyle jeżeli chodzi o krótki wstęp i wprowadzenie do tegoż tematu. Teraz przejdźmy do następnego tematu czyli struktury samego nagrania i zastosowanego formatu zapisu danych. Gra wersji turbo składa się następujących plików:

  1. Loadera (w wersji dla systemów KSO Turbo 2000 lub pozostałych)

  2. Czołówka gry / Into (HEAD 1)

  3. Downhill (PART 1)

  4. Ski Jump (PART 2)

  5. Biathlon (PART 3)

  6. Slalom (PART 4)

  7. Bobsled (PART 5)

ad 1) loader występuje w dwóch wersjach:

  • #1 wersja która wczytuje dane używając interface dla KSO Turbo 2000 (sygnał oczekiwany na drugim porcie joysticka)

  • #2 wersja która wczytuje dane używając interface dla systemów Turbo 2000F, AST, ATT, UM, etc. (sygnał oczekiwany na linii SIO DATA IN). Będą działać wszystkie systemy turbo które to aktywuje się albo za pomocą odpowiedniego stanu linii COMMAND (AST, ATT, UM, Turbo 2000CS, Turbo 2000 “Wrocławskie”) lub za pomocą manualnego przełącznika, czyli np. Turbo 2001/2000F, itp.

Loader jest zapisany w postaci standardowego bloku zgodnego z formatem Turbo 2000 (KSO lub 2001/F). Jest to po prostu zwykły plik binarny DOS-u, ładujący się w obszar $1E00-$24FF. Zatem można go nagrać w dowolnym formacie i na dowolnym nośniku.

ad 2) Czołówka gry [plik: “01_head1_(INTRO).cas”] zapisana jest w postaci jednego długiego bloku danych ładującego się w obszar $0600-$85FF.

ad 3) “Downhill” [plik:  “02_part1_(DOWNHILL).cas”] składa się z dwóch bloków danych ładowanych przez mini loader “schowany” pod OS-ROM. Blok pierwszy ląduje w lokalizacji $0600-$25FF (potem zostaje przepisany pod OS-ROM w obszar $E000-$FFFF), blok drugi ładowany jest w obszar $0600-$BBFF.

ad 4) “Ski Jump” [plik:  “03_part2_(SKI JUMP).cas” ] składa się również z dwóch bloków danych ładowanych przez mini loader “schowany” pod OS-ROM. Blok numer jeden ląduje początkowo w obszarze $0800-$27FF, po czym zostaje przepisany pod OS-ROM w obszar $E000-$FFFF), drugi blok jest ładowany jest w obszar $0800-$907F.

ad 5) “Biathlon” [plik:  “04_part3_(BIATHLON).cas”] składa się także z dwóch bloków danych ładowanych przez mini loader “schowany” pod OS-ROM. Pierwszy blok ląduje tym razem w lokalizacji $0700-$26FF, a po załadowaniu jest przemieszczony jak zwykle w obszar $E000-$FFFF, drugi z bloków danych jest ładowany w obszar $0700-$7EFF.

ad 6) “Slalom” [plik: "05_part4_(SLALOM).cas"] składa się jak poprzednio dwóch bloków danych ładowanych przez mini loader “schowany” pod OS-ROM. Pierwszy blok ładowany jest tymczasowo w obszar $0680-$267F, i przemieszczony następnie obszar $E000-$FFFF, a drugi z bloków danych tym razem jest ładowany w obszar $0680-$B57F.

ad 7) “Bobsled” [plik: “06_part5_(BOBSLED).cas"] składa się zwyczajowo z dwóch bloków danych ładowanych przez ten sam mini loader “schowany” pod OS-ROM. Pierwszy blok ładowany jest tymczasowo w obszar $0480-$6F7F, po czym obszar od $6800-$6FFF jest przenoszony w obszar $C000-$C7FF, a drugi z bloków zostaje załadowany w obszar $6858-$BA57.

To tyle jeżeli chodzi o strukturę nagrania i opis plików wchodzących w skład tej wersji Winter Olympiad 88. Teraz pozostało tylko opisać format danych który został użyty do zapisu tychże plików na taśmie.

Pliki “Intro, part1 … part5” są zapisane z wykorzystaniem standardowej modulacji PWM używanej przez systemy z serii Turbo 2000/2001/F/KSO, tzn. długości impulsów oznaczające ton pilotujący oraz kodujące logiczne “0” oraz logiczną “1”, odpowiadają tym użytym w standardowym Turbo 2000. Jedynie układ bitów w blokach danych jest celowo zmieniony tak aby uniemożliwić kopiowanie zwykłymi narzędziami przeznaczonymi dla tych systemów. Format nie jest jakoś specjalnie zagmatwany, powiedziałbym że wręcz dość prymitywny, jednak na tyle skutecznie zmieniony że dostępne wtedy narzędzia na pewno nie radziły sobie z kopiowaniem tego strumienia danych. Co zatem składa się na blok danych zapisanych w formacie loadera?

  • paru tysięcy impulsów tonu pilotującego (domyślnie w Turbo 2000/F/KSO jest to 4096 impulsów)

  • 7 losowych bitów (7 impulsów kodujących losowe zera i jedynki)

  • bloku danych (długość bloku danych zaszyta jest na sztywno w kodzie loadera, tzn. loader dokładnie wie ile będzie miał blok wczytywanych danych)

  • 1 bajtu sumy kontrolnej (modulo 256)

  • paru impulsów (minimalnie 1 imp.) reprezentujący dowolną wartość (0,1)

Całe zabezpieczenie jak widać polegało na tym iż pierwsza porcja danych składała się z 7 a nie ośmiu bitów, zatem większość programów kopiujących czy procedur odczytu gubiła się w tym, bo albo po odczycie tak spreparowanego bloku danych, nie zgadzało się CRC, a dane wyglądały na “sieczkę”, bo były przesunięte o jeden bit w lewo, albo procedura odczytu zgłaszała błąd bo brakowało jej jednego bitu na końcu strumienia danych.

Używając kilku python-owych skryptów “naklepanych” byle jak na kolanie, aby przetworzyć pliki WAV zawierające poszczególne bloki danych, udało się zmusić narzędzie narzędzie a8cas-util od FUJI-ego, do jako takiego przetworzenia strumienia danych (oczywiście z przesunięciem bitowym) … i błędnym CRC na końcu. Napisałem na szybko, tym razem w C program który przesunął cały bit-stream tak aby dane wylądowały ponownie w granicach bajtów miałem już do dyspozycji pliki .HEX które miały poprawnie ułożone dane, które to dane można było edytować i patchować, dzięki temu dało się poprawić wyżej opisane fragmenty kodu.

Oczywiście mógłbym ten strumień zostawić tak jak w przypadku GABI czy KVADRK jako blok danych PWMS, jednak wtedy jego edycja nie byłaby tak łatwa i oczywista, a sprzątanie i porządkowanie segmentów w pliku HEX który potem przetworzyć do postaci CAS nie byłoby możliwe.

Na początku miałem napisać co prawda sobie cały program do konwersji danych w tym formacie, jednak uznałem że to nie ma najmniejszego sensu ponieważ jest to przypadek raczej jednorazowy, a gdyby się trafiło coś innego w przyszłości to i tak bym poddawał to wnikliwej analizie tak czy siak. Więc napisanie uniwersalnego narzędzie tylko dla samego siebie mijało się kompletnie z celem, dlatego też postanowiłem wykorzystać dobrodziejstwa a8cas-util, oraz jakieś szybko sklecone na boku prymitywne programy do przetwarzania i konwersji danych.

Swoją drogą gdyby nagrania udostępnione przez QTZ zachowały się w lepszej jakości zapewne nigdy bym nie zabrał się za analizę i wnikanie w format danych zastosowany przez *AJEK w przypadku tejże wersji taśmowej dwu-dyskietkowej gry jaką był w oryginale Winter Olympiad 88.

W załączniku archiwum zawierające loadery w postaci CAS oraz XEX. A także pliki zawierające dane gry w formacie CAS. Myślę że ich nazwy mówią same za siebie i pozwolą bez problemu zidentyfikować odpowiedni plik gdy gra poprosi o wczytanie konkretnego zbioru danych.

Dla zainteresowanych tym wszystkim o czym pisałem wyżej, do archiwum dołączam również pliki HEX, pozwalające na dokładniejszą analizę budowy i struktury opisywanych tu zbiorów. W plikach które załączam pozwoliłem sobie zamiast losowego 7-bitowego “śmiecia” wysyłać po prostu 7 bitów zer, loader i tak ignoruje ten fragment nagrania. A losowe wartości obecne w oryginalnym nagraniu miały zapewne na celu “zmylenie przeciwnika” ;)

To chyba już wszystko co chciałem napisać na temat “walki” z tą wersją “Winter Olympiad 88”. Dla zainteresowanych archiwum zawierające wspomniane wyżej pliki do pobrania poniżej.

ps1) Trzymajcie się i nie dajcie się tej zwariowanej obecnie rzeczywistości. Niebawem, o ile sytuacja pozwoli - wrócę pewnie znów do analizy sprzętu od Uicr0Bee, który czeka w kolejce już zdecydowanie za długo.

ps2) pewnie zapomniałem napisać masę rzeczy i pewnie zrobiłem masę błędów pisząc ten tekst w pośpiechu (chciałem jak najszybciej to już zakończyć) ... więc jeżeli zauważę jakąś rażącą niezgodność lub błędy to będę edytował ten post. Na razie wrzucam tak jak jest. Wydaje mi się że koniec końców napisałem mniej więcej to o co mi chodziło.

Ostatnio edytowany przez seban (2022-03-04 17:51:47)

Post's attachments

QTZ - Winter Olympiad 88 (Tynesoft) [AJEK].zip 282.47 kb, liczba pobrań: 13 (od 2022-03-04) 

Tylko zalogowani mogą pobierać załączniki.

697

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

O kurka, ale wykład. Dzięki wielkie!

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

698

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

seban napisał/a:

wrócę pewnie znów do analizy sprzętu od Uicr0Bee, który czeka w kolejce już zdecydowanie za długo.

Oj-tam-oj-tam :) Czeka i ma co czytać - jak wyżej :-) Ale oczywiście będzie fajnie poczytać o postępach dot. mojej paczki.
--
µicr0Bee

--== Kup Pan/i dyskietkę - jedyna taka oferta w całym InterNetCie - http://www.atari.org.pl/forum/viewtopic.php?id=18887 ==--

<-- Kontakt przez "E-mail" albowiem moja skrzynka "PW" jest pełna i zaprawdę nie mam czego usunąć.

699

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

btw. pisząc *.dziesiąt razy *AJEK... moje palce albo klawiatura w pewnym momencie zrobiły coś takie że zaczęło na ekranie pojawiać się słowo .... "JAKE" :D i teraz spekulacje czas zacząć ;) Jak to "Janek" albo "Kuba" chował się za pseudo "*AJEK"

700

Odp: Turbo Tapes, Carts & Hardware - z kolekcji uicr0bee i nie tylko :]

@Seban Przepraszam, że piszę dopiero teraz, patrząc na rzeczywistość trudno spokojnie zajmować się Atari. Paczkę ściągnąłem i przetestowałem prawie od razu jak je umieściłeś, przeczytałem też cały powyższy opis. Sam opis ogromny, a wynika z niego, że to "tylko" podsumowanie ogromnej pracy jaką włożyłeś w odzyskanie tej wersji gry. Wielkie Dzięki!!!

Grałem co prawda na emulatorze ale fajnie znowu zobaczyć znajome kolorowe paski :)

Dla porównania uruchomiłem tez wersje dyskietkowe i kasetową z aol. Zamieszczona tam kasetowa jest niestety niekompletna - prosi o trzecią stronę kasety, której nie ma. Widać jednak, że *AJEK bazował na wersji dyskietkowej - gdyż mamy możliwość wyboru dyscyplin. Wersje dyskietkowe podobnie, a nawet dużo gorzej mają popsutą grafikę. Także podejrzewam, że *AJEK skopiował przynajmniej niektóre błędy które ktoś popełnił przy przygotowaniu kopii. Co do zakończenia gry to nie udało mi się "wyjść" z bobseja - cały czas ta dyscyplina jest restartowana. Nie wiem więc jak zakończyć grę i doprowadzić do wyświetlenia komunikatu i "restartu" całej gry. Być może *AJEK też nie wiedział i uważał, że ten komunikat się nigdy nie wyświetli i nie był świadomy błędu który popełnił.

Także wygląda na to, że ta wersja którą przygotowałeś jest lepszą od dyskietkowych ;)

Co do *AJEK-a to czytając Twój opis zacząłem się zastanawiać czy wiadomo kto to jest, jednak widzę, że nie. Też się zastanawiałem, czy np. "*" oznacza jakąś "zagwiazdkowaną" literę, jednak jeżeli miałoby być to imię trzeba by było - tak jak to zrobiłeś - potraktować ten wpis jak anagram, np mógłby to być "JAcEK", czy tak jak wydedukowałeś "JAnEK". Ciekawe, gdyby go odnaleźć może zechciałby opowiedzieć swoją historię i jak to było z tymi loaderami...