76 Ostatnio edytowany przez Krótki (2010-01-27 03:02:41)

FUJI, generalnie się zgadzam. Zastanawiałem się nad tym, i rzeczywiście, możliwość obsługi nowych formatów turbo bez modyfikacji kodu jest zaletą, która ostatecznie mnie przekonała do takiego rozwiązania.

Parę uwag:

1. Patrząc po źródłach Turgena, widzę że Czesi wymyślili system turbo do odczytu z płyt CD, gdzie długość sekwencji "niski-wysoki" wynosi dokładnie 2/44100 s, czyli po prostu 1 próbka < 0 i 1 próbka > 0. Zatem może należałoby nie ustalać odgórnie, że jednostką są setne ms, tylko dodać do bloku "pwms" parametr określający "częstotliwość próbkowania".

Np. mamy Blizzard, gdzie są sygnały 0.5 ms, 0.25 ms i 0.166 ms. Ustalasz "częstotliwość" na 12000 (czyli 1/12 ms) i potem defniniujesz wszystkie długości sygnałów na podstawie tej wartości. Sygnały w Blizzardzie wtedy mają długość odpowiednio 6, 3 i 2 próbek.

A Czesi ustawiają dla tej swojej płyty CD "częstotliwość" 44100 i wszyscy są zadowoleni.

2. Czy w nagraniach turbo występują bity startu i stopu? Jeśli nie zawsze, to przydałby się typ bloku analogiczny do "pwmd", reprezentujący dane bez tych bitów.

3. Wstrzymałbym się z wprowadzaniem do formatu hacków specyficznych dla Turbo ROM (aux1=00 i 11), póki nie rozgryziemy software'u do jego obsługi. Może te nieregularne długości impulsów są wynikiem błędu w procedurze nagrywającej, a software radzi sobie z odczytem nawet gdy zapoda mu się plik ze sztucznie wyrównanymi długościami impulsów?

4. Skoro blok "pwms" będzie występował w obrazie taśmy raczej tylko raz, to może nie warto ograniczać długości pola "liczba impulsów pomiędzy pilotem i danymi" do 2 bitów?

5. Co to znaczy IRG w przypadku bloków "pwmd" i "pwmi"? Chcesz tam trzymać długość ciszy przed rekordem?

6. Długości sygnałów w bloku "pwmi" też trzymałbym nie w setnych milisekund, ale w jednostkach definiowanych przez jakąś liczbę umieszczoną na początku bloku - analogicznie do uwagi nr 1.

A'propos wersjonowania CAS-ów - numer wersji zwiększałbym tylko gdy zachodzi zmiana w formacie bloku. Dotychczas wprowadzamy tylko nowe typy bloków, więc wersja może pozostać 0 - istniejące implementacje obsługi formatu CAS i tak powinny domyślnie ignorować bloki, których typu nie rozpoznają.

Podrzucę inne nagrania AST jak będę miał czas, za parę tygodni - ale generalnie nie należy się spodziewać rewelacji; bloki w AST-owskich formatach AST, BUT i BOT mają taką samą strukturę jak w dostępnym przykładzie.

Mam też kasetę w formacie "jakiegoś" Turbo 2000, to też się podzielę.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

77

digisoft napisał/a:

Co do polskiego KSO Turbo 2000 i Turbo 2000F aby wygenerowac nagrania mozna zastosowac Turgen-a

Można wygenerować, z tym że nie udało mi się tak przygotowanego pliku wgrać do Atari :) Autor (bardzo miły gość) po krótkiej wymianie maili poddał się i nie wie czemu nie działa :)

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.

78 Ostatnio edytowany przez FUJI (2010-02-04 22:09:11)

Dzięki wszystkim za propozycje, choć pisałem, że jeżeli kogoś interesują formaty INNE niż wymienione przeze mnie. Próbek Blizzarda i podstawowego Turbo 2000 KSO mi raczej wystarczy, chyba że macie jakieś nietypowe (np. oryginały z zabezpieczeniami). AST może się przydać do testów, najlepiej próbki z różnych kaset. Nie wiem jak jest z różnymi "klonami" Turbo 2000 (F, +, 2001 itd.).
A tak przy okazji - wyszło mi, że różne nagrania w formacie Blizzarda mogą być niekompatybilne na poziomie zapisanego sygnału. Wygląda tak, że na jednych kasetach  bity były kodowane sekwencją sygnałów niski-wysoki, a na innych wysoki-niski. Gdzieś tu na forum ktoś wspominał, że miał problemy z wczytywaniem nagrań z różnych wersji Blizzarda, może właśnie dlatego.

@Krótki:

Ad.1 Też o tym myślałem i też mi to pasuje, tylko się zastanawiałem nad częstotliwością próbkowania używaną jako podstawa. Ja przy zrzucaniu tasiemek sampluję z częstotliwością 48000/s (SB Live tak lepiej działa), a przy konwersji wewnętrznie resampluję do 96000 sampli/s, bo pewniej się rozróżnia jedynki i zera przy dwukrotnie większych różnicach. Ale w sumie przy zapisywaniu do cas można równie dobrze przeliczyć w dół. OK, to spróbuje w ten sposób. Będzie 2 bajty na "częstotliwość", a na szerokości poszczególnych impulsów po bajcie.

Ad. 2 Nie, nie trafiłem na bity startu i stopu. Są tylko "bity" pomiędzy pilotem i danymi. Pomiędzy bajtami nigdy. AST jeszcze dokładnie nie analizowałem - tam są ?

Ad. 3 Sądzę, że rzeczywiście jest tak jak piszesz. Nie chciał bym jednak na wszelki wypadek zmniejszać tego parametru do jednego bitu (0 - 0 pierwsze, 1 - 1 pierwsze), więc najwyżej się usunie komentarze do sekwencji 00 i 11.

Ad. 4 'pwms' w ogólnym przypadku nie musi występować tylko raz, podobnie jak blok 'baud'. Zdarzają się drobne różnice średniej szerokości impulsów (do 2-3 sampli przy 96k sampli/s), co oczywiście znaczenie ma niewielkie, ale jednak... Poza tym nie rozumiem, jaki to ma związek z ilością bitów na zapis impulsów między pilotem a danymi ...? To jest stałe dla wszystkich bloków.

Ad 5. Tak, chodzi o ciszę.

Ad 6. To będzie automatycznie wynikac z 1.

Z numerami wersji CAS masz rację, o to właśnie chodzi.

EDIT: zmiany w bloku 'pwms' (USUNIĘTE - już niepotrzebne)

EDIT2:
Krótki, muszę Cię przeprosić za dezinformację. Otóż są biblioteki libecasound i libcasoundc. Moja ignorancja wynikała z tego, że to biblioteki linkowane statycznie z programem, więc do działania nie potrzeba ich w systemie. Szukałem sposobu na łatwiejsze używanie ecasound w perlu i jak sie okazuje jest odpowiedni moduł korzystający z tych bibliotek. A wystarczyło popatrzeć na drzewo żródeł...

EDIT3:
Bug report: liba8cas zachowuje się dziwnie, jak trafi na blok 'data' z zerową ilością bajtów danych. Wygląda na to, że cała reszta pliku jest interpretowana jako jeden długi blok danych (aż do komunikatu "Can't read from <filename> (code 4)").

EDIT4:
AST trochę pomieszało mi szyki  :/ (chodzi o "pół bajtu" zapisywanego na końcu bloku). Muszę  jeszcze raz przemyśleć, jakie informacje i gdzie przechowywać i pewnie zmodyfikować 'pwms' i być może 'pwmd'.

EDIT5:
Po dzikiej próbie skomplikowania zapisu stwierdziłem, że wolę jednak upraszczać niż komplikować. Szczegóły wkrótce.

79

No to po paru przejściach poniżej coś, co działa. Na początek przykład bazujący na nagraniu w formacie AST ze strony a8cas:
- plik cas
- plik flac utworzony z powyższego pliku cas - do nagrania na taśmę, fala jest prostokątna i pod emulatorem z jakiegoś powodu ten plik nie działa
- plik flac przystosowany do emulatora przez "przycięcie kantów" - wczytuje się na spaczowanym atari800 jak "oryginał" ze strony a8cas
Skrypt udostępnię niedługo.

Zastosowane nowe elementy pliku cas:
1. odpowiednik bloku 'baud' dla formatu standardowego, opisujący parametry sygnału:

$70 $77 $6d $73  ; 'pwms' - PWM settings                                           
$02 $00          ; długość 2 bajty                                                 
$xx              ; aux1 - parametry impulsów                                       
$00              ; aux2 - w rezerwie                                               
$LL $MM          ; częstotliwość próbkowania                                       

kolejność bitów w aux1: 76543210

aux1 - dwa najmniej znaczące bity (1 i 0) określają rodzaj impulsu:
01 - szerokość impulsu określa czas trwania sekwencji kolejnych stanów '0' i '1'
     (po połowie na każdy stan)                                                 
10 - szerokość impulsu określa czas trwania sekwencji kolejnych stanów '1' i '0'
     (po połowie na każdy stan)                                                 
00 i 11 - w rezerwie

aux1 - bit 2 - kolejność bitów w bajcie (endian)
 0 - od najmłodszego do najstarszego (little endian)
 1 - od najstarszego do najmłodszego (big endian)

aux1 - bity 3-7 - w rezerwie

O czymś chyba zapomniałem, ale nie mogę sobie przypomnieć o czym.

2.blok do zapisu pojedynczych impulsów, a w zasadzie połówek impulsów w używanej terminologii, czyli wysokich i niskich poziomów sygnału. W szczególnym przypadku, gdy długość wynosi bloku 0, to generowana jest tylko cisza.

$70 $77 $6d $69  ; 'pwmi' - PWM impulses
$LL $MM          ; długość bloku = 2 x ilość zapisanych stanów
$LL $MM          ; (aux1,2) IRG, czyli cisza, w ms
dwubajtowe dane o szerokości (wyrażonej w próbkach) naprzemiennych stanów '0' i '1',
o tym, który stan jest jako pierwszy decyduje aux1 w bloku 'pwms'

3. blok do zapisu serii impulsów o jednakowej szerokości (np. pilot, sygnał końcowy, impulsy zaczynające i kończące blok danych, serie jednakowych bitów itp.)

$70 $77 $6d $63  ; 'pwmc' - PWM cycles
$02 $00          ; długość bloku=2
$xx              ; szerokość impulsu wyrażona w próbkach
$00              ; nie używane
$LL $MM          ; ilość impulsów (cykli 0-1 lub 1-0)

4. blok danych (tylko pełne bajty)

$70 $77 $6d $64  ; 'pwmd' - PWM data
$LL $MM          ; ilość bajtów danych
$xx              ; aux1 - szerokość impulsu dla bitu '0' wyrażona w próbkach
$yy              ; aux2 - szerokość impulsu dla bitu '1' wyrażona w próbkach
DANE

80

Wiecie, mam inne rzeczy na głowie.

Ale i tak Wam kiboluje (tylko wątek śledzę) czekając finału.  3mam kciuki.....

81 Ostatnio edytowany przez Krótki (2010-02-05 14:53:26)

O! teraz jest prościej i elastyczniej. Podoba mi się.

FUJI dzięki za bugreporty. Z tym flacem prostokątnym to wynika z naiwnej wersji dekodera PWM:

sygnał = (sample > poprzedni_sample)

czyli jest źle jak 2 próbki pod rząd mają tę samą wartość.

Chciałbym niebawem zacząć dodawać obsługę nowych typów bloków do A8CAS. Czy sądzisz że obecna postać jest w miarę ostateczna? Zajrzałeś jeszcze to tego Turbo ROM-a? Tak mi chodzi po głowie - być może w przyszłości zamiast rozszerzać blok 'pwms' pod dziwactwa w stylu Turbo ROM bardziej elegancko byłoby stworzyć nowy typ bloku, taki 'pwms' tylko dla Turbo ROM?

Uwaga dot. zapisu częstotliwości próbkowania. Zauważyłem podczas moich prób z emulacją odczytu Blizzarda, że przy częstotliwości 48kHz bardzo zauważalne są wahania w długościach sygnałów (jitter), i że raczej nie wyjdzie emulacja, jeśli nie spróbuję podbić częstotliwości sygnału dźwiękowego do np. 96kHz (nie trzeba nagrywać w takiej częstotliwości, wystarczy dobrej jakości upsampling). Ale ponieważ bloki 'pwmi' mają być wykorzystywane do debugowania kaset podczas konwersji, to wydaje się sensowne, żeby w nich także była możliwość ustawienia takiej wysokiej częstotliwości próbkowania. Ale 96000 w 2 bajtach w bloku 'pwms' się nie zmieści. Może więc 4 bajty?

Blok 'pwmc': Hmmm. Nowy blok na każdy sygnał? A może niech blok 'pwmc' przechowuje w sobie dowolną ilość sygnałów?

$70 $77 $6d $63  ; 'pwmc' - PWM cycles
$02 $00          ; długość bloku = 3*ilość sygnałów
$LL $MM          ; (aux1,2) IRG, czyli cisza, w ms

i teraz po 3 bajty na każdy nowy sygnał:

$xx              ; szerokość impulsu wyrażona w próbkach
$LL $MM          ; ilość impulsów (cykli 0-1 lub 1-0)
...
A8CAS - narzędzie do 100% archiwizacji kaset Atari

82

Na razie szybka odpowiedź, bo trochę nie mam czasu pisać - dobra wieść - Blizzard działa pod emulatorem przy użyciu pliku dźwiękowego utworzonego z cas-a, jak się włączy ręczne turbo :). Jedyna rzecz, którą trzeba uwzględnić, to "polaryzacja" sygnału, tzn. emulator reaguje poprawnie jak kolejność stanów jest jak dla AST, czyli wysoki-niski. Jitter może ci wychodzić właśnie z powodu odwróconego sygnału (programy do regulacji głowicy pokazują śmieci).
Poczekaj jeszcze trochę z ostatecznym dodawaniem nowych bloków, chcę ruszyć jakoś ten Turbo Rom. Generalnie tu niespodzianek nie ma (konwersja działa jako-tako, dość niepewnie). Nawiązałem kontakt z człowiekiem z "Plusa", może się od nich jakieś informacje uda wydobyć.

83 Ostatnio edytowany przez Krótki (2010-02-08 10:16:50)

A właśnie: w bloku "pwms" brakuje informacji, czy logiczna 1 jest wtedy, gdy zbocze sygnału opada, czy gdy się wznosi. Bez tego nie da się z CAS-a odtworzyć oryginalnego WAV-a.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

84 Ostatnio edytowany przez FUJI (2010-02-08 15:48:25)

To właśnie była rzecz, o której nie mogłem sobie przypomnieć. Kontekst znaczenia takiej informacji jest jednak inny. Nie chodzi o prawidłowe odtworzenie zapisu dźwiękowego - bity0 i 1 bajtu aux1 determinują kolejność stanów niskiego i wysokiego tworzących bit, czyli tym samym kolejność zboczy, oryginalna postać zapisu może być na tej podstawie odtworzona. Dochodzi tu jednak kwestia hardware-u, który oryginalnie zapisał dane na taśmie i handlera, który te dane interpretuje przy odczycie. Jak pisałem wcześniej, bazując na handlerze z Atariki i magnetofonie, który posiadam, spotkałem zapisy blizzarda, dla których jedynkę wyzwala zbocze narastające i takie, w których było na odwrót. Jeżeli założyc, że handler zawsze jest taki sam, to konia z rzędem temu, kto ustali, który hardware jest "ten właściwy", a który nie. Nie ma też chyba gwarancji, że handler umieszczony na różnych cartridge-ach był zawsze taki sam - może różne wersje wymagały różnych kolejności stanów 0 i 1 ? Reasumująć - jeżeli chcemy przesłać cas do komputera, czy to po nagraniu na taśmę czy bezpośrednio przez złącze SIO, to trzeba po prostu próbować, czy zadziała. Dodanie informacji o której piszesz wymagało by, żeby ten, kto tworzy plik cas wiedział, jak działa interfejs jego magnetofonu i jak działa handler w jego catridge-u, a użytkownik cas musiał by dostosować swój sprzęt. Wydaje mi się więc, że dodanie takiej dodatkowej informacji jest nadmiarowe i zbędne. Natomiast decyzję, które zbocze co wyzwala można pozostawić np. oprogramowaniu (np. taki przałączniczek w "tape management" do zmiany hardware-u na inny, reagujący odpowiednio na dane zbocza).
Przypomniało mi się coś - programy narzędziowe dla AST rozróżniają magnetofony XC12 i 1010, to przykład, że soft musi się dostosowac do hardware-u, a na taśmie jest pewnie w obu przypadkach to samo.

Wracając do poprzednich tematów - oczywiście Twoja propozycja bloku 'pwmc' jest jak najbardziej słuszna. Po prostu łatwiej jest mi debugować, gdy każdy rodzaj impulsu idzie do oddzielnego bloku, ale docelowo niech będzie jak podałeś.

Jeśli chodzi o Turbo Rom - będę próbował podpytać autorów, jak to z tym jest. Perspektywa debugowania kodu loadera jakoś mnie nie pociąga ;). Podepnę tu (wieczorem) link do pliku cas z tym loaderem. Może ktoś dobry w te klocki i chętny do pomocy zerknie ? W tej chwili widzę 3 możliwe podejścia do tematu: a) samplowanie z częstotliwością 96000 i być może postępowanie jak przy innych formatach, b) założenie, że wykorzystywane są tylko narastające zbocza sygnału, c) impulsy odpowiadające zerom (bardzo słabe w porównaniu do jedynek i "rozmywające się") zignorować, a ilość zer określać na podstawie szerokości przerw między jedynkami.
Tak czy siak - chyba nie ma co czekać z dalszym poszerzaniem CAS - albo Turbo Rom się wpasuje w to co jest, albo rzeczywiście będzie inną opcją.

Do używania samplerate 96000 w plikach cas jak na razie mam taki sam stosunek, jak do zapisywania sygnału FSK z rozdzielczością 0.1 ms - uważam to za zbędne. Do celów debugowania przy konwersji można zapisywać coś takiego do hex, ale czy trzeba do cas ? A może zapisywać częstotliwość próbkowania nie w samplach na sekundę, tylko w setkach sampli na sekundę ? Albo przynajmniej w dziesiątkach sampli na sekundę (żeby można było zapisać 22050, ale poniżej 44100 chyba nie ma sensu schodzić) ? Albo zapisywać symbolicznie: 22,44,48,96 (bleeee) ? Wtedy dwa bajty wystarczą w zupełności i wszyscy będą zadowoleni ;). No, chyba że ktoś chce próbkować z częstotliwością np. 74834...

85

FUJI napisał/a:

To właśnie była rzecz, o której nie mogłem sobie przypomnieć. Kontekst znaczenia takiej informacji jest jednak inny. Nie chodzi o prawidłowe odtworzenie zapisu dźwiękowego - bity0 i 1 bajtu aux1 determinują kolejność stanów niskiego i wysokiego tworzących bit, czyli tym samym kolejność zboczy, oryginalna postać zapisu może być na tej podstawie odtworzona.

Jak? Opis tych 2 bitów nie mówi jak to zrobić. Powinieneś w takim razie opisać te bity tak:

aux1 - dwa najmniej znaczące bity (1 i 0) określają rodzaj impulsu:
01 - szerokość impulsu określa czas trwania sekwencji zbocza rosnącego i malejącego fali dźwiękowej (długość obu zboczy jest równa)
10 - szerokość impulsu określa czas trwania sekwencji zbocza malejącego i rosnącego fali dźwiękowej (długość obu zboczy jest równa)
00 i 11 - w rezerwie

lub na odwrót. Wtedy rzeczywiście będzie można powiedzieć, że orygnalna postać zapisu może być odtworzona.

FUJI napisał/a:

Dochodzi tu jednak kwestia hardware-u, który oryginalnie zapisał dane na taśmie i handlera, który te dane interpretuje przy odczycie. Jak pisałem wcześniej, bazując na handlerze z Atariki i magnetofonie, który posiadam, spotkałem zapisy blizzarda, dla których jedynkę wyzwala zbocze narastające i takie, w których było na odwrót. Jeżeli założyc, że handler zawsze jest taki sam, to konia z rzędem temu, kto ustali, który hardware jest "ten właściwy", a który nie.

Fizycznie posiadasz te kasety z nagraniami, czy tylko zgrane pliki WAV? Bo spotkałem się z magnetofonami które miały odwróconą polaryzację - być może część plików WAV była zgrywana na takim magnetofonie.

FUJI napisał/a:

Nie ma też chyba gwarancji, że handler umieszczony na różnych cartridge-ach był zawsze taki sam - może różne wersje wymagały różnych kolejności stanów 0 i 1 ?

Szczerze wątpię, aby producent turba pozwalał sobie na wprowadzenie takiej niekompatybilności bez powodu. Jeśli zmieniała się interpretacja zboczy w hardware'rze, to na pewno zmieniała się też w software'rze. Cart z magnetofonem tworzą niejako nierozerwalną parę.

FUJI napisał/a:

Reasumująć - jeżeli chcemy przesłać cas do komputera, czy to po nagraniu na taśmę czy bezpośrednio przez złącze SIO, to trzeba po prostu próbować, czy zadziała. Dodanie informacji o której piszesz wymagało by, żeby ten, kto tworzy plik cas wiedział, jak działa interfejs jego magnetofonu i jak działa handler w jego catridge-u, a użytkownik cas musiał by dostosować swój sprzęt. Wydaje mi się więc, że dodanie takiej dodatkowej informacji jest nadmiarowe i zbędne.

W sumie masz rację - sygnał można nazwać zerem lub jedynką dopiero po przetrawieniu przez hardware w magnetofonie. Wyobrażam sobie teoretyczną sytuację, gdzie biorę taśmę z Turbo 2000 i wgrywam ją na magnetofonie AST (używając programu "AST->Turbo 2000 Konwerter", był kiedyś taki). Gdyby założyć że Turbo 2000 ma odwrotną polaryzację niż AST, to nasza informacja o polaryzacji zachowana w CAS tylko utrudniałaby sprawę.

Zatem zgoda. Ale w takim razie pojęcia '0' i '1' nie mogą się pojawić w specyfikacji CAS.

FUJI napisał/a:

Natomiast decyzję, które zbocze co wyzwala można pozostawić np. oprogramowaniu (np. taki przałączniczek w "tape management" do zmiany hardware-u na inny, reagujący odpowiednio na dane zbocza).

Ja już bym wolał po prostu dostosować polaryzację źródłowego WAV-a tak, żeby działała z dostępnym oprogramowaniem (np. z tym Blizzarda które obecnie znamy), niż wprowadzać taki przełącznik, bo to zawsze komplikuje interfejs użytkownika. Ale zobaczymy.

BTW. Nie wiem jak to jest zrobione, ale system AST nie zwraca uwagi na kolejność zboczy w sygnale - łatwo sprawdzić pod emulatorem.

FUJI napisał/a:

Przypomniało mi się coś - programy narzędziowe dla AST rozróżniają magnetofony XC12 i 1010, to przykład, że soft musi się dostosowac do hardware-u, a na taśmie jest pewnie w obu przypadkach to samo.

Obstawiam, że jedyna różnica w sofcie 1010 i XC12 leży w sposobie przełączania magnetofonu normal<->turbo.

FUJI napisał/a:

Jeśli chodzi o Turbo Rom - będę próbował podpytać autorów, jak to z tym jest. Perspektywa debugowania kodu loadera jakoś mnie nie pociąga ;). Podepnę tu (wieczorem) link do pliku cas z tym loaderem.

To czekam. Wrzuć gdzieś może także ten plik Blizzarda utworzony z CAS-a, który Ci działał pod emulatorem.

FUJI napisał/a:

Do używania samplerate 96000 w plikach cas jak na razie mam taki sam stosunek, jak do zapisywania sygnału FSK z rozdzielczością 0.1 ms - uważam to za zbędne.

Zaraz, jak zbędne, przecież Ci tłumaczyłem, że to służy do debugowania bloków z dużym baudrate.

FUJI napisał/a:

Do celów debugowania przy konwersji można zapisywać coś takiego do hex, ale czy trzeba do cas ?

HEX zawsze = CAS - w obu formatach można zapisać dokładnie te same dane. Tak było w WAV2CAS Schreursa, tak jest u mnie i chcę żeby tak pozostało.

FUJI napisał/a:

A może zapisywać częstotliwość próbkowania nie w samplach na sekundę, tylko w setkach sampli na sekundę ? (...)

Sam mówisz, że załadowałeś z Blizzarda przy częstotliwości 48000. Więc może nie ma o czym mówić na razie.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

86

Krótki napisał/a:

Jak? Opis tych 2 bitów nie mówi jak to zrobić. Powinieneś w takim razie opisać te bity tak:

Hmmm... Rzeczywiście mój opis był nieprecyzyjny, to skutek używania skrótów myślowych w odniesieniu do konkretnych formatów... Może tak ?

aux1 - dwa najmniej znaczące bity (1 i 0) określają rodzaj impulsu:
01 - impuls rozpoczyna się zboczem opadającym i trwa do następnego zbocza opadającego.
     Odległości pomiędzy kolejno występujacymi zboczami (opadającym,narastającym,opadającym)
     są jednakowe. Czasy trwania kolejnych stanów wyzwalanych zboczem opadającym i narastającym
     są jednakowe (po połowie czasu podanego w blokach cas).
10 - impuls rozpoczyna się zboczem narastającym i trwa do następnego zbocza narastającego.
     Odległości pomiędzy kolejno występujacymi zboczami (narastającym,opadającym,narastającym)
     są jednakowe. Czasy trwania kolejnych stanów wyzwalanych zboczem narastającym i opadającym
     są jednakowe (po połowie czasu podanego w blokach cas).
00 i 11 - w rezerwie

To o czym dyskutowałem, to czy zbocze opadające (i narastające) wyzwoli '0' czy '1' podawane na data-out. A to nie zależy już  od samego sygnału na taśmie, tylko od interfejsu, który go przetworzy. Interpretacja leży już po stronie emulatora (lub hardware-u). I owszem, można by dołożyć sugestię, jak powinno być, zwłaszcza że  w tej chwili nigdzie nie jest zapisywane, jaki format został przekonwertowany na cas. Określenie formatu źródłowego teoretycznie powinno jednoznacznie określić, jakie zbocze co wyzwala. I tu z rozrzewnieniem wspominam blok 'form' z nazwą formatu. Po tych dywagacjach jestem skłonny przeznaczyć następny bit na przechowanie sugestii o relacji 'zbocze' - 'stan data-out' lub do wyboru opisowe określenie formatu (np. w bloku 'pwms' zaraz za bajtami samplerate). To jak ?

Krótki napisał/a:

Fizycznie posiadasz te kasety z nagraniami, czy tylko zgrane pliki WAV? Bo spotkałem się z magnetofonami które miały odwróconą polaryzację - być może część plików WAV była zgrywana na takim magnetofonie.

Ha, tu mnie może masz. Nie samplowałem wszystkich kaset które mam, poza tym mętlik mi się już trochę zrobił, i bardzo możliwe, że nagrania z odwróconym sygnałem pochodzą tylko ze ściągniętych plików. Co nie musi znaczyć, że mój magnetofon akurat nie odwraca w fazie :P.

Krótki napisał/a:

Szczerze wątpię, aby producent turba pozwalał sobie na wprowadzenie takiej niekompatybilności bez powodu.

Logika rzeczywiście tak podpowiada, o ile był tylko jeden producent danego turba. A  jeśli byli inni, to żeby zapewnić sobie klientów mogli  zmieniać te kilka bajtów w handlerze... W tamtych czasach ochrona praw autorskich kulała...
Ale z tym nierozerwaniem cartridge-a i magnetofonu nie masz racji. Po pierwsze można się obejść bez cartridge-a przy pomocy loaderów na taśmie (patrz niżej). Po drugie - na Atariki na stronie o Blizzardzie jest napisane, że budowa interfejsu zależała tylko od  inwencji jego twórcy, mógł więc być zbudowany tak, że zbocze opadające wyzwalało '0' lub '1' w zależności od widzimisię (i odpowiednio '1' powodowało zapisanie zbocza takiego lub siakiego); wtedy przy korzystaniu z tego samego softu kaseta zapisana na jednym magnetofonie mogła się nie wczytać na drugim. Remedium na coś takiego mogło by być dopasowanie handlera. I wtedy dopiero masz rację - cartridge i magnetofon są nierozerwalne, ale handlery w każdej parze są ciut różne.

Krótki napisał/a:

Gdyby założyć że Turbo 2000 ma odwrotną polaryzację niż AST, to nasza informacja o polaryzacji zachowana w CAS tylko utrudniałaby sprawę.

Nie trzeba zakładać, tak właśnie jest :D. Porównaj moje opisy obu formatów na Atariki. Oczywiście w przypadku AST bazuję tylko na jednym Twoim nagraniu.

Krótki napisał/a:

Ja już bym wolał po prostu dostosować polaryzację źródłowego WAV-a tak, żeby działała z dostępnym oprogramowaniem(...)

A co z  wiernością zarchiwizowanych danych ;) ?

Krótki napisał/a:

BTW. Nie wiem jak to jest zrobione, ale system AST nie zwraca uwagi na kolejność zboczy w sygnale - łatwo sprawdzić pod emulatorem.

Nie gniewaj się, ale na razie działanie emultora nie może być wyznacznikiem działania rzeczywistego sprzętu ;) (również patrz niżej). Może niedługo będę mógł to sprawdzić. A w sumie to software też się może dostosować - AST jest dość wolne i powinno być dużo czasu na takie rzeczy, można przecież badać, która połówka impulsu jest krótsza jako pierwsza za pilotem...

Krótki napisał/a:

Zaraz, jak zbędne, przecież Ci tłumaczyłem, że to służy do debugowania bloków z dużym baudrate.

Tak, do debugowania jak najbardziej. Dla użytkownika końcowego jest to zbędne. Ale skoro cas MUSI zawierać to co HEX, to trudno.

No to teraz linki:
1) Przykładowy loader Turbo Rom - do analizy na debuggerze lub inaczej (mnie pod "Bug Hunterem" nie idzie, ten loader wczytuje się na stronę 0 i stos!)
2) gra w formacie blizzard, która U MNIE wczytuje się na emulatorze. Kolejność postępowania jest taka:
- ładujemy normalnie w atari800 plik ml25-s.cas
- jak pojawi się czarny ekran, zmieniamy tasiemkę na ml25-t.wav i włączamy turbo. Po powrocie do emulatora powinien się  załadować microloader
- zmieniamy tasiemkę  na morky.wav, wracamy do emulatora, po sygnale klepiemy "any key" i po zapytaniu o wczytywanie naciskamy "Y".
Dodatkowo w archiwum są pliki turbo w formie cas (jeszcze bez nowych zmian).

UWAGA: wbrew temu co pisałem wcześniej blizzardowe pliki wav są w formie fali prostokątnej. Plik, w którym zbocza były zmienione na łagodniejsze i dodatkowo faza została zamieniona, na jednym komputerze działał, na drugim nie chciał. Ta wersja działa na obu komputerach, tylko jest dość czuła na szerokość zapisanych bitów, jeszcze nie wiem czy chodzi o szerokość jako taką, czy o równość stanów niskiego i wysokiego (oryginalnie wychodziła nieparzysta liczba sampli na bit '1'). Poza tym - pliki wav mają samplerate 44100 i to w tym przypadku też może w jakiś sposób zmieniać efekt. Konwerter jeszcze mi nie przelicza wszystkiego jak należy, więc w zasadzie to 44100 wyszło przypadkiem.

A tu stronka w przygotowaniu. Ot tak, dla zabawy ;).

87 Ostatnio edytowany przez Krótki (2010-02-10 10:32:57)

FUJI napisał/a:

Hmmm... Rzeczywiście mój opis był nieprecyzyjny, to skutek używania skrótów myślowych w odniesieniu do konkretnych formatów... Może tak ? (...)

OK.

FUJI napisał/a:

Po tych dywagacjach jestem skłonny przeznaczyć następny bit na przechowanie sugestii o relacji 'zbocze' - 'stan data-out' lub do wyboru opisowe określenie formatu (np. w bloku 'pwms' zaraz za bajtami samplerate). To jak ?

Problem w tym, że nie mamy jak zdecydować o poprawnej wartości "bitu sugestii", nie wiedząc czy nasze magnetofony odwracają fazę czy nie. Najlepszym wyjściem byłaby analiza hardware'u każdego systemu turbo - tylko to pozwoli zweryfikować, czy na początku sygnału zbocze narasta czy opada.

FUJI napisał/a:

A co z  wiernością zarchiwizowanych danych ;) ?

Mówiąc całkiem poważnie, nie mogę zacząć mówić o wierności danych w chwili gdy sam nie wiem, czy mój magnetofon odwraca fazę czy nie.

FUJI napisał/a:

Nie gniewaj się, ale na razie działanie emultora nie może być wyznacznikiem działania rzeczywistego sprzętu ;)

Wręcz przeciwnie. Udało mi się zweryfikować, że programy AST wczytują się "lepiej" (mniej błędów), gdy "pierwsze" zbocze sygnału jest interpretowane jako 1 (celowo użyłem słowa "pierwsze", a nie "narastające" czy "opadające"). Kaseta z Arkanoidem działała przy obu interpretacjach chyba tylko przez przypadek.

FUJI napisał/a:

Ale skoro cas MUSI zawierać to co HEX, to trudno.

Nie musi, po prostu było to dotychczas wygodne.

FUJI napisał/a:

2) gra w formacie blizzard, która U MNIE wczytuje się na emulatorze. Kolejność postępowania jest taka:
- ładujemy normalnie w atari800 plik ml25-s.cas
- jak pojawi się czarny ekran, zmieniamy tasiemkę na ml25-t.wav i włączamy turbo. Po powrocie do emulatora powinien się  załadować microloader
- zmieniamy tasiemkę  na morky.wav, wracamy do emulatora, po sygnale klepiemy "any key" i po zapytaniu o wczytywanie naciskamy "Y".

Działa (po uprzednim zhackowaniu Atari800 żeby wspierał fale prostokątne). Tylko nie wiedzieć czemu, po zakończeniu ładowania ml25-t.wav, Atari robi zimny start. Muszę coś specjalnie ustawić w emulatorze?

Więc zamiast robić 2 pierwsze kroki, użyłem po prostu Microloadera z cartridge'a Phoenix Hurka.

FUJI napisał/a:

A tu stronka w przygotowaniu. Ot tak, dla zabawy ;).

Nie działa:

$ ./a8cas-util.pl conv -t ast Arkanoid.wav Arkanoid.cas
Argument "Usage: ecalength [-ahtsfmbcru] FILE1 [FILE2] [FILEn]" isn't numeric in numeric eq (==) at ./a8cas-util.pl line 1592.
Starting ecasound... started.
SUMMARY: Data blocks: 0, checksum errors: 0, non-standard data blocks: 0, long zeros: 0, read 251 input bytes.
Can't close input stream. at ./a8cas-util.pl line 1550.

A "./a8cas-util.pl --man" wyświetla mi całą zawartość pliku źródłowego, a nie instrukcję.

Wrzuciłem na stronę A8CAS więcej plików AST - zarówno w formacie AST, jak i BUT. Większość AST-ków wgrywa się pod emulatorem, ale nie wiedzieć czemu z żadnym BUT-em nie osiągnąłem sukcesu. Czy mógłbyś użyć swojego skryptu na jednym z plików BUT i podrzucić mi plik z prostokątną falą, analogiczny do Twojego morky.wav? Miałbym wtedy materiał do dalszych testów.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

88

Krótki napisał/a:

Udało mi się zweryfikować, że programy AST wczytują się "lepiej" (mniej błędów), gdy "pierwsze" zbocze sygnału jest interpretowane jako 1 (celowo użyłem słowa "pierwsze", a nie "narastające" czy "opadające"). Kaseta z Arkanoidem działała przy obu interpretacjach chyba tylko przez przypadek.

No właśnie ma znaczenie, czy pierwsze to narastające czy opadające. Jeżeli zmieniasz interpretację bez odwracania sygnału, to oczywiście jedna z nich będzie działać lepiej. Natomiast zdziwił bym się, gdyby wczytywało się tak samo, gdybyś bez zmiany interpretacji zmienił polaryzację. Blizzard na mur tak nie zadziała (na real sprzęcie).

Krótki napisał/a:

Tylko nie wiedzieć czemu, po zakończeniu ładowania ml25-t.wav, Atari robi zimny start.

A ja wiedzieć. Typowy objaw właśnie przy ustawieniu odwrotnej polaryzacji sygnału. Zauważ, że jak zamienisz jedynki z zerami to suma kntrolna może się też zgodzić, więc nie będzie błędu 143, tylko komputer spróbuje uruchomić to co wczytał. Spróbuj odwrócić tego wav-a. Jeżeli nie pomoże, to proszę link do plików, który na jednym z komputerów mi się ładowały: altmorky.tgz. Sygnał jest odwrócony, a prostokąt zmieniony w prawie-piłę.

Krótki napisał/a:

Nie działa:
(...)

Dwie rzeczy: zapomniałem napisać - twoje pliki wav mają jakiś niestandardowy nagłówek i ecasound nie rozpoznaje prawidłowo częstotliwości próbkowania i ilości kanałów. Ja musiałem wczytać do jakiegoś edytora audio i zapisać na nowo. Druga rzecz - opcja "-t" nie działa (błąd w opisie), użyj --turbo (lub przynajmniej --tu).

Krótki napisał/a:

A "./a8cas-util.pl --man" wyświetla mi całą zawartość pliku źródłowego, a nie instrukcję.

To dziwne. Może to kwestia wersji modułu Pod::Usage, albo jego obecności w systemie albo obecności programu pod2html, pod2text...  Niewykluczone, że w niektórych dystrubucjach nie ma go standardowo, choć wydaje mi się, że to powinno być w głównym pakiecie perla.
Dodałem na wszelki wypadek link do manuala na stronie.

Krótki napisał/a:

Czy mógłbyś użyć swojego skryptu na jednym z plików BUT i podrzucić mi plik z prostokątną falą, analogiczny do Twojego morky.wav?

Jasne. Trochę później.

89 Ostatnio edytowany przez Krótki (2010-02-10 13:42:45)

FUJI napisał/a:

No właśnie ma znaczenie, czy pierwsze to narastające czy opadające. Jeżeli zmieniasz interpretację bez odwracania sygnału, to oczywiście jedna z nich będzie działać lepiej. Natomiast zdziwił bym się, gdyby wczytywało się tak samo, gdybyś bez zmiany interpretacji zmienił polaryzację. Blizzard na mur tak nie zadziała (na real sprzęcie).

Przecież "zmiana polaryzacji bez zmiany interpretacji" jest w 100% równoznaczna ze "zmianą interpretacji bez odwracania sygnału". Arkanoid z AST tak właśnie się wczytuje - działa niezależnie od interpretacji i polaryzacji (aczkolwiek inne pliki AST już się rypią).

Z Blizzardem widzę, że to nie zadziała - test głowicy pokazuje śmieci w przypadku zmiany polaryzacji/interpretacji. Ale i w tym przypadku dla software'u nie ma znaczenia wzrost czy opadanie sygnału, ale to czy jeden bit składa się z 1 i 0, czy z 0 i 1.

FUJI napisał/a:

A ja wiedzieć. Typowy objaw właśnie przy ustawieniu odwrotnej polaryzacji sygnału. Zauważ, że jak zamienisz jedynki z zerami to suma kntrolna może się też zgodzić, więc nie będzie błędu 143, tylko komputer spróbuje uruchomić to co wczytał. Spróbuj odwrócić tego wav-a.

Dobra, spróbuję odwrócić interpretację. Ale zauważ, że sam plik morky.wav przy tej samej konfiguracji emulatora wczytuje mi się bez problemów.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

90

Chciałbym się pochwalić przed szanownym gronem kolegów że udało mi się to co niektórzy mówili że jest niemożliwe, a mianowicie to że z TURGENA wygenerowałem plik wave który wczytuje się pod emulatorem w systemie Turbo Blizzard.

Program , a właściwie plugin nie nadaje się jeszcze do publikacji , ale jak czasu starczy to go dopieszczę.

Dzięki FUJI za natchnienie poprzez Twoją dyskusję z Krótkim na temat Turbo.

To tak na szybko.

91

Eee, khm. Ja pisałem, tylko że na prawdziwym magnetofonie nie udało mi się wgrać tak przygotowanego pliku.

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.

92

No właśnie - emulator ładuje podejrzanie dobrze ;).

Pliki dla Krótkiego. Hacker BUT. Niestety, już dziś nie dałem rady przekonwertować dobrze do końca, najdłuższy blok jest rozerwany chyba w 2 miejscach. Ale początek się ładuje, na razie do testów  dekodowania PWM (czy o co tam chodzi) powinno wystarczyć. Swoją drogą  - plik oryginalny niby się ładuje do końca, ale jakieś śmieci mi się na ekranie potem pojawiają.
Przed konwersją musiałem odwrócić fazę sygnału, bo z oryginałem konwersja też idzie, ale dane wychodzą bez sensu. Jeszcze jedna rzecz - nie mam pojęcia, jak w formacie BUT kontrolować  poprawność danych, nie widzę niczego, co mogło by być sumą kontrolną, zresztą loader też się  zachowuje tak, jak by mu było wszystko jedno.

W archiwum są: plik cas, wav z falą prostokątną (nie ładuje się), wav z falą nieco "wygładzoną" (ładuje się, a przynajmniej mocno próbuje), log z konwersji, opcje ustawione przy konwersji. Polecenie wyglądało tak (uwaga - skrypt został odrobinę poprawiony, do ściągnięcia tam gdzie wcześniej):

./a8cas-util.pl conv --turbo ast --noise 0.01 --amplify 1.2 Hacker-t-rev.wav.

Oczywiście początek w standardzie odciąłem.

Plik -> hacker.tgz

93

Mam pytanie

Czy moze mi ktos wygenerować plik z fala prostokatna z Blizzarda , jeśli danych bedzie do nagrania 1024 bajty.
Wiem ze Blizzard wygeneruje dwa bloki danych, ale nie wiem jak ten koncowy ma wygladać.

Pomożcie

94 Ostatnio edytowany przez FUJI (2010-02-11 07:50:02)

Ha! Zdrajco. Zamiast wspierać rodaków w wysiłkach chcesz pracować dla obcego kapitału ?! ;)

Taki plik znajdziesz kilka postów wyżej (gra w formacie blizzard). A opis sygnału Blizzarda jest na Atariki.

@Krótki: A czy przypadkiem, jak sam to nazwałeś, twój prymitywny dekoder PWM nie wyzwala zmian stanów logicznych na szczytach fal zamiast na zboczach ? To by tłumaczyło zarówno niekorzystne efekty (nie działanie fal prostokątnych) jak i nieczułość na odwracanie fazy (przynajmniej dla niektórych kształtów fal). Zerknij na moją funkcję latch(), chyba nie wiele mniej prymitywne podejście, ale na pewno wierniej naśladuje sprzęt. generalnie chodzi o to , że musi być jakaś minimalna różnica w poziomach sygnałów, żeby było wykryte zbocze. Domyślnie różnica u mnie wynosi 10, można regulować opcją --mindiff. Pamiętaj, że działam na próbkach 8-bitowych, więc przy 16-bitowych różnicę trzeba pomnożyć przez 256. Dodam tam chyba jeszcze jakiś kondensator, który przez jakiś czas był obecny w nieco innej implementacji i teraz mi go trochę brakuje.

95 Ostatnio edytowany przez Krótki (2010-02-11 10:10:33)

FUJI napisał/a:

Pliki dla Krótkiego. Hacker BUT. Niestety, już dziś nie dałem rady przekonwertować dobrze do końca, najdłuższy blok jest rozerwany chyba w 2 miejscach. Ale początek się ładuje, na razie do testów  dekodowania PWM (czy o co tam chodzi) powinno wystarczyć. Swoją drogą  - plik oryginalny niby się ładuje do końca, ale jakieś śmieci mi się na ekranie potem pojawiają.

Dzięki. Aczkolwiek efekt jest dla mnie raczej bezużyteczny - chodziło mi o to, żeby mieć w ręku plik BUT ze 100% zweryfikowaną zawartością, który ładuje się poprawnie pod emulatorem, żeby na jego podstawie usprawnić proces wczytywania oryginalnego WAV-a. Teraz w sumie mogę sam go sobie przygotować, bo po ostatniej aktualizacji a8cas-tool zaczął działać bez problemu.

FUJI napisał/a:

Jeszcze jedna rzecz - nie mam pojęcia, jak w formacie BUT kontrolować  poprawność danych, nie widzę niczego, co mogło by być sumą kontrolną, zresztą loader też się  zachowuje tak, jak by mu było wszystko jedno.

Brak weryfikacji podczas odczytu to jedna z bolączek systemu AST.

FUJI napisał/a:

A czy przypadkiem, jak sam to nazwałeś, twój prymitywny dekoder PWM nie wyzwala zmian stanów logicznych na szczytach fal zamiast na zboczach ? (...)

Trochę się zmieniło od tamtego czasu - dorobiłem coś na kształt twojego latch - zmiana sygnału wykrywana jest dopiero gdy różnica między kolejnymi samplami jest większa niż "x" (konfigurowane przez użytkownika). Jednak efekty są nadal mierne - o ile pozwala to czytać AST oraz "prostokątnego" Blizzarda, to w przypadku Blizzardowych WAV-ów jitter jest nadal za duży (bo Blizzard ma krótsze impulsy niż AST). Muszę wymyślić mniej naiwne rozwiązanie. Aczkolwiek chcę uniknąć odwołać do ecasound i ladspa w źródłach liba8cas.

Prawdopodobnie skończy się to tak, że użytkownik będzie najpierw konwertował WAV do pliku CAS (podczas zapisu do CAS można dokonać bardziej dokładnej analizy) i używał emulatora tylko z CAS-ami, a wczytywanie z WAV-ów pozostanie kiepawe.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

96

FUJI a kto powiedział że pracuję dla obcego kapitału :)

97

Prawdopodobnie skończy się to tak, że użytkownik będzie najpierw konwertował WAV do pliku CAS (podczas zapisu do CAS można dokonać bardziej dokładnej analizy) i używał emulatora tylko z CAS-ami, a wczytywanie z WAV-ów pozostanie kiepawe.


YY,uzyszkodnik to juz sobie dawno skonwertowal i wgral w bizzard z komorki   http://www.youtube.com/watch?v=VrLhfve8jco

Dwa korce ziemniaków, gęsich jajek kopa, żeby móc to połknąć, tęgiego trza chłopa. GG3456993

98

A cóż to ma do rzeczy?

A8CAS - narzędzie do 100% archiwizacji kaset Atari

99 Ostatnio edytowany przez FUJI (2010-02-14 20:15:50)

digisoft napisał/a:

FUJI a kto powiedział że pracuję dla obcego kapitału :)

No jak to ? TURGEN Pepików jest, nie ? ;) A może Ty zza Tatr jesteś :D ?
(żartuję oczywiście)

Krótki napisał/a:

Dzięki. Aczkolwiek efekt jest dla mnie raczej bezużyteczny - chodziło mi o to, żeby mieć w ręku plik BUT ze 100% zweryfikowaną zawartością,

A, no to sorry. Nie sprecyzowałeś czego oczekujesz. A spać też trzeba ;).

Krótki napisał/a:

Brak weryfikacji podczas odczytu to jedna z bolączek systemu AST.

Hmm... Nie wiem (jeszcze) jak z BUT i BOT, ale w AST "AST" są przechowywane sumy kontrolne. Czy to znaczy, że nie są wykorzystywane pomimo przechowywania ? Jak zatem chcesz osiągnąć 100% weryfikowalność ? Przecież różnice w pojedynczych bitach lub nawet bajtach mogą dla gier nie mieć znaczenia...
Ja nie jestem tak do końca pewien, że weryfikacji nie ma. Drugi blok danych BUT (pierwszy ma 6 bajtów, chodzi mi o ten następny) może zawierać coś w rodzaju bloku informacyjnego formatu "AST"...?

Krótki napisał/a:

(...)to w przypadku Blizzardowych WAV-ów jitter jest nadal za duży (bo Blizzard ma krótsze impulsy niż AST)

To dziwne. Ja mam wrażenie, że mi z Blizzardem konwertowanie idzie lepiej niż z AST. A może z samym samplowaniem coś nie tak ? A spróbuj np. z -> tym plikiem.
Nawiążę od razu do Turbo Rom-u. Ten system jest najszybszy z wszystkich, którymi się  to zajmowaliśmy. Zdaje się, że podstawową trudnością będzie prawidłowe zgranie sygnału. Dostałem pierwszą garść informacji - zasada zapisu jest ta sama co przy innych systemach, czyli różne szerokości impulsów dla bitów  0 i 1. Sygnał z głowicy jest przepuszczany przez wzmacniacz o troszkę zmienionej charakterystyce niż w oryginalnym (niestety nie wiem na czym ta różnica polega) Potem bramka CMOS zmienia sinus na prostokąt. Najprawdopodobniej próbkowanie na normalnym magnetofonie nie daje tego samego wyniku co odtwarzanie na magnetofonie atari i stąd problemy.

EDIT:
Jeżeli jeszcze się przydadzą, oto sprawdzone, działające, przekonwertowane pliki. 'pwmc' jest już zapisane w zmienionym formacie, opis nowych bloków -> tutaj.
blinky, gremlins, gunfighter
Hacker niestety jest zbyt uszkodzony w przynajmniej jednym miejscu, żeby się z automatu przekonwertował. Myślę, że należało by go zsamplować trochę głośniej.
Blinky chyba jednak ma jakąś kontrolę parzystości - "suma" XOR dla wszystkich bloków (oprócz dwóch pierwszych ładujących loader) wynosi 0, to raczej nie przypadek.

100 Ostatnio edytowany przez Krótki (2010-02-20 23:35:47)

FUJI napisał/a:

Hmm... Nie wiem (jeszcze) jak z BUT i BOT, ale w AST "AST" są przechowywane sumy kontrolne. Czy to znaczy, że nie są wykorzystywane pomimo przechowywania ?

W AST to może i działa, ale pamiętam, że nierzadko zdarzało się, że program w BUT wczytywał się bez widocznych oznak błędu do samego końca, po czym program leciał w krzaki. Zupełnie jak Hacker pod emulatorem.

FUJI napisał/a:

Jak zatem chcesz osiągnąć 100% weryfikowalność ?

Liczę na to, że w którymś momencie konwersja do CAS będzie potrafiła przynajmniej pokazywać miejsca, gdzie dane nie są 100% pewne. Wtedy będzie można zajrzeć do WAVa oczami :) i odgadnąć właściwe dane.

FUJI napisał/a:

Nawiążę od razu do Turbo Rom-u. (...) Najprawdopodobniej próbkowanie na normalnym magnetofonie nie daje tego samego wyniku co odtwarzanie na magnetofonie atari i stąd problemy.

Nie rozumiem. Czy chcesz przez to powiedzieć że obrazy WAV które posiadasz są nieprawidłowo zgrane? Zawierają inne dane niż fizyczne kasety?

FUJI napisał/a:

Hacker niestety jest zbyt uszkodzony w przynajmniej jednym miejscu, żeby się z automatu przekonwertował. Myślę, że należało by go zsamplować trochę głośniej.

Wiesz w którym miejscu? Możesz podać numer sampla? Przyjrzę się temu dokładniej.

FUJI napisał/a:

Blinky chyba jednak ma jakąś kontrolę parzystości

Blinky ma jakiś custom loader, więc to prawdopodobne.

Dzięki za przekonwertowanie plików, zajmę się nimi i tym Humanoidem jak będę miał czas. Na razie chcę się skupić bardziej na dokończeniu feature'ów dot. wczytywania w normalu (SIO patch itp.)

EDIT: A oto i nowa wersja A8CAS. Nowości:
- obsługa SIO patcha do wczytywania i zapisu kaset (na razie tylko w formatach CAS i HEX);
- obsługa WAV-ów z falą prostokątną;
- nowa opcja "Turbo system->Blizzard".

FUJI, weź zobacz czy nowa wersja działa z blokami "data" długości 0. Wygląda na to że poprawiłem, ale to Ty ten błąd znalazłeś :)

Poza tym, wrzuciłem na serwer kilka nowych plików AST. Miłej zabawy ;)

A8CAS - narzędzie do 100% archiwizacji kaset Atari