26

(115 odpowiedzi, napisanych Software, Gry - 8bit)

Rzucę okiem, ale to za czas jakiś, proszę o cierpliwość :)

27

(53 odpowiedzi, napisanych Sprzęt - 8bit)

Cześć!

Prawdę mówiąc to mam mieszane odczucia... bo jeden z joyów po naprawie działa nieco gorzej niż drugi ... i nie wiem czy to dlatego że jeden z wydruków wyszedł gorzej czy też dlatego że był bardziej "męczony", zaraz po wymianie oba sprawowały się znakomicie ... a po jakimś czasie jeden z nich zaczął wyraźnie "mulić", tzn. czuję że wymaga większego wkładu siły aby dany kierunek załapał, szczególne odczuwalne są "skosy".

Potem czasu na hobby ubyło i nie miałem okazji więcej srogo męczyć tych joyów, a że nadarzyła się okazja i tanio dorwałem oryginał (CX-40) to przesiadłem się na niego. Po jakimś czasie RZóG podrzucił mi do testów obecnie produkowany CX-40+ ... i początkowo myślałem że ten CX-40+ zupełnie nie będzie mi leżał, bo zamiast blaszek ma po prostu klasyczne rozwiązanie oparte o "gumki przewodzące"... ale koniec końców spodobało mi  się to na tyle że obecnie używam właśnie CX-40+, a tamte chińskie produkty gniją gdzieś na dole szuflady... więc testy wytrzymałościowe na razie zostały odłożone... ale być może przy najbliższej partyjce Megablast-a czy Joust-a może wezmę je na warsztat ponownie.

CX40+ w środku wygląda tak (zdjęcie dzięki uprzejmości RZóG):
http://seban.pigwa.net/aa/CX40+.jpg

28

(6 odpowiedzi, napisanych Software, Gry - 8bit)

@w1k: thanks for uploading this version. This is very interesting artifact from the past!

29

(29 odpowiedzi, napisanych Sprzęt - 8bit)

2nd test: uploaded material: 1920x1080p@50Hz, H264 codec (encoder: ffmpeg + vaapi)

https://www.youtube.com/watch?v=vcvdYA6xjFI

[info] Available formats for vcvdYA6xjFI:
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb2 mhtml 56x45        0    │                  mhtml │ images                                  storyboard
sb1 mhtml 112x90       0    │                  mhtml │ images                                  storyboard
sb0 mhtml 225x180      0    │                  mhtml │ images                                  storyboard
233 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default
234 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default
139 m4a   audio only      2 │    2.58MiB   49k https │ audio only          mp4a.40.5   49k 22k [en] low, m4a_dash
140 m4a   audio only      2 │    6.84MiB  129k https │ audio only          mp4a.40.2  129k 44k [en] medium, m4a_dash
251 webm  audio only      2 │    5.26MiB  100k https │ audio only          opus       100k 48k [en] medium, webm_dash
269 mp4   180x144     25    │ ~  7.81MiB  144k m3u8  │ avc1.4D400B    144k video only
160 mp4   180x144     25    │    4.09MiB   77k https │ avc1.4D400B     77k video only          144p, mp4_dash
603 mp4   180x144     25    │ ~  6.47MiB  120k m3u8  │ vp09.00.11.08  120k video only
278 webm  180x144     25    │    3.10MiB   59k https │ vp09.00.11.08   59k video only          144p, webm_dash
229 mp4   300x240     25    │ ~ 13.66MiB  253k m3u8  │ avc1.4D400D    253k video only
133 mp4   300x240     25    │    9.10MiB  172k https │ avc1.4D400D    172k video only          240p, mp4_dash
604 mp4   300x240     25    │ ~ 10.54MiB  195k m3u8  │ vp09.00.20.08  195k video only
242 webm  300x240     25    │    6.49MiB  123k https │ vp09.00.20.08  123k video only          240p, webm_dash
230 mp4   450x360     25    │ ~ 31.63MiB  585k m3u8  │ avc1.4D4015    585k video only
134 mp4   450x360     25    │   18.75MiB  355k https │ avc1.4D4015    355k video only          360p, mp4_dash
18  mp4   450x360     25  2 │   23.59MiB  447k https │ avc1.42001E         mp4a.40.2       44k [en] 360p
605 mp4   450x360     25    │ ~ 20.59MiB  381k m3u8  │ vp09.00.21.08  381k video only
243 webm  450x360     25    │   10.68MiB  202k https │ vp09.00.21.08  202k video only          360p, webm_dash
231 mp4   600x480     25    │ ~ 53.18MiB  983k m3u8  │ avc1.4D401E    983k video only
135 mp4   600x480     25    │   38.28MiB  725k https │ avc1.4D401E    725k video only          480p, mp4_dash
606 mp4   600x480     25    │ ~ 30.01MiB  555k m3u8  │ vp09.00.30.08  555k video only
244 webm  600x480     25    │   18.46MiB  350k https │ vp09.00.30.08  350k video only          480p, webm_dash
22  mp4   900x720     25  2 │ ≈ 61.08MiB 1129k https │ avc1.64001F         mp4a.40.2       44k [en] 720p
136 mp4   900x720     25    │   52.87MiB 1002k https │ avc1.64001f   1002k video only          720p, mp4_dash
247 webm  900x720     25    │   30.15MiB  571k https │ vp9            571k video only          720p, webm_dash
311 mp4   900x720     50    │ ~107.71MiB 1992k m3u8  │ avc1.640020   1992k video only
298 mp4   900x720     50    │   76.57MiB 1451k https │ avc1.640020   1451k video only          720p50, mp4_dash
612 mp4   900x720     50    │ ~ 73.49MiB 1359k m3u8  │ vp09.00.40.08 1359k video only
302 webm  900x720     50    │   50.65MiB  960k https │ vp09.00.40.08  960k video only          720p50, webm_dash
312 mp4   1350x1080   50    │ ~134.03MiB 2478k m3u8  │ avc1.64002A   2478k video only
299 mp4   1350x1080   50    │   99.27MiB 1881k https │ avc1.64002A   1881k video only          1080p50, mp4_dash
617 mp4   1350x1080   50    │ ~105.89MiB 1958k m3u8  │ vp09.00.41.08 1958k video only
303 webm  1350x1080   50    │   76.02MiB 1440k https │ vp09.00.41.08 1440k video only          1080p50, webm_dash
623 mp4   1800x1440   50    │ ~249.54MiB 4615k m3u8  │ vp09.00.50.08 4615k video only
308 webm  1800x1440   50    │  181.44MiB 3437k https │ vp09.00.50.08 3437k video only          1440p50, webm_dash

^^^ o! a jednak coś się zmieniło od czasu moich ostatnich eksperymentów, nie dość że dostałem teraz 50fps, to jeszcze VP9 mi się trafiło. Jak pisałem wcześniej pod koniec 2023 roku, wrzucając taki materiał nie dostałem ani VP9 ani 50fps. Niestety poziomy scroll szarpie od czasu do czasu mimo że odświeżanie monitora ustawione jest na 50Hz.

30

(29 odpowiedzi, napisanych Sprzęt - 8bit)

1st test; uploaded material 720x576@49.86Hz, H264 codec:

https://www.youtube.com/watch?v=kW9OHxAWFIQ

[info] Available formats for kW9OHxAWFIQ:
ID  EXT   RESOLUTION FPS CH │  FILESIZE  TBR PROTO │ VCODEC         VBR ACODEC      ABR ASR MORE INFO
─────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                mhtml │ images                                 storyboard
sb2 mhtml 56x45        0    │                mhtml │ images                                 storyboard
sb1 mhtml 112x90       0    │                mhtml │ images                                 storyboard
sb0 mhtml 225x180      0    │                mhtml │ images                                 storyboard
233 mp4   audio only        │                m3u8  │ audio only         unknown             Default
234 mp4   audio only        │                m3u8  │ audio only         unknown             Default
139 m4a   audio only      2 │   2.58MiB  49k https │ audio only         mp4a.40.5   49k 22k low, m4a_dash
140 m4a   audio only      2 │   6.84MiB 129k https │ audio only         mp4a.40.2  129k 44k medium, m4a_dash
251 webm  audio only      2 │   5.26MiB 100k https │ audio only         opus       100k 48k medium, webm_dash
269 mp4   180x144     25    │ ~ 7.51MiB 139k m3u8  │ avc1.4D400B   139k video only
160 mp4   180x144     25    │   3.78MiB  72k https │ avc1.4D400B    72k video only          144p, mp4_dash
230 mp4   450x360     25    │ ~30.05MiB 556k m3u8  │ avc1.4D4015   556k video only
134 mp4   450x360     25    │  18.54MiB 351k https │ avc1.4D4015   351k video only          360p, mp4_dash
18  mp4   450x360     25  2 │  23.65MiB 448k https │ avc1.42001E        mp4a.40.2       44k 360p
605 mp4   450x360     25    │ ~21.12MiB 391k m3u8  │ vp09.00.21.08 391k video only
231 mp4   600x480     25    │ ~50.94MiB 942k m3u8  │ avc1.4D401E   942k video only
135 mp4   600x480     25    │  37.27MiB 706k https │ avc1.4D401E   706k video only          480p, mp4_dash

^^^ jak widać max rozdzielczość materiału docelowego to 600x480@25fps.

31

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Hej!

@dely: To może inaczej i bardziej szczegółowo... jak wrzucasz stream na YT to ten generuje masę dodatkowych strumieni różnej jakości, np. to wideo które dałeś jako przykład (sf_oDFk93EI) jest dostępne w następujących formatach:

[info] Available formats for sf_oDFk93EI:
ID  EXT   RESOLUTION FPS CH │    FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                   mhtml │ images                                  storyboard
sb2 mhtml 80x45        0    │                   mhtml │ images                                  storyboard
sb1 mhtml 160x90       0    │                   mhtml │ images                                  storyboard
sb0 mhtml 320x180      0    │                   mhtml │ images                                  storyboard
233 mp4   audio only        │                   m3u8  │ audio only          unknown             Default
234 mp4   audio only        │                   m3u8  │ audio only          unknown             Default
599 m4a   audio only      2 │    11.78MiB   31k https │ audio only          mp4a.40.5   31k 22k ultralow, m4a_dash
600 webm  audio only      2 │    12.49MiB   33k https │ audio only          opus        33k 48k ultralow, webm_dash
139 m4a   audio only      2 │    18.67MiB   49k https │ audio only          mp4a.40.5   49k 22k low, m4a_dash
249 webm  audio only      2 │    18.51MiB   48k https │ audio only          opus        48k 48k low, webm_dash
250 webm  audio only      2 │    24.25MiB   63k https │ audio only          opus        63k 48k low, webm_dash
140 m4a   audio only      2 │    49.55MiB  129k https │ audio only          mp4a.40.2  129k 44k medium, m4a_dash
251 webm  audio only      2 │    47.80MiB  125k https │ audio only          opus       125k 48k medium, webm_dash
597 mp4   256x144     15    │    13.40MiB   35k https │ avc1.4d400b     35k video only          144p, mp4_dash
602 mp4   256x144     15    │ ~  46.12MiB  118k m3u8  │ vp09.00.10.08  118k video only
598 webm  256x144     15    │    13.55MiB   35k https │ vp9             35k video only          144p, webm_dash
269 mp4   256x144     30    │ ~  80.04MiB  204k m3u8  │ avc1.4D400C    204k video only
160 mp4   256x144     30    │    37.66MiB   98k https │ avc1.4D400C     98k video only          144p, mp4_dash
603 mp4   256x144     30    │ ~  81.10MiB  207k m3u8  │ vp09.00.11.08  207k video only
278 webm  256x144     30    │    41.11MiB  107k https │ vp09.00.11.08  107k video only          144p, webm_dash
229 mp4   426x240     30    │ ~ 137.19MiB  350k m3u8  │ avc1.4D4015    350k video only
133 mp4   426x240     30    │    87.92MiB  230k https │ avc1.4D4015    230k video only          240p, mp4_dash
604 mp4   426x240     30    │ ~ 143.77MiB  367k m3u8  │ vp09.00.20.08  367k video only
242 webm  426x240     30    │    83.39MiB  218k https │ vp09.00.20.08  218k video only          240p, webm_dash
230 mp4   640x360     30    │ ~ 300.40MiB  767k m3u8  │ avc1.4D401E    767k video only
134 mp4   640x360     30    │   191.08MiB  499k https │ avc1.4D401E    499k video only          360p, mp4_dash
18  mp4   640x360     30  2 │   228.57MiB  597k https │ avc1.42001E         mp4a.40.2       44k 360p
605 mp4   640x360     30    │ ~ 269.82MiB  689k m3u8  │ vp09.00.21.08  689k video only
243 webm  640x360     30    │   146.51MiB  383k https │ vp09.00.21.08  383k video only          360p, webm_dash
231 mp4   854x480     30    │ ~ 549.71MiB 1403k m3u8  │ avc1.4D401F   1403k video only
135 mp4   854x480     30    │   375.30MiB  981k https │ avc1.4D401F    981k video only          480p, mp4_dash
606 mp4   854x480     30    │ ~ 441.89MiB 1128k m3u8  │ vp09.00.30.08 1128k video only
244 webm  854x480     30    │   258.67MiB  676k https │ vp09.00.30.08  676k video only          480p, webm_dash
22  mp4   1280x720    30  2 │ ≈ 833.23MiB 2126k https │ avc1.64001F         mp4a.40.2       44k 720p
136 mp4   1280x720    30    │   764.61MiB 1998k https │ avc1.64001f   1998k video only          720p, mp4_dash
247 webm  1280x720    30    │   477.62MiB 1248k https │ vp9           1248k video only          720p, webm_dash
311 mp4   1280x720    60    │ ~   1.53GiB 3995k m3u8  │ avc1.640020   3995k video only
298 mp4   1280x720    60    │     1.12GiB 2988k https │ avc1.640020   2988k video only          720p60, mp4_dash
612 mp4   1280x720    60    │ ~   1.56GiB 4088k m3u8  │ vp09.00.40.08 4088k video only
302 webm  1280x720    60    │  1023.48MiB 2674k https │ vp09.00.40.08 2674k video only          720p60, webm_dash
312 mp4   1920x1080   60    │ ~   2.64GiB 6910k m3u8  │ avc1.64002A   6910k video only
299 mp4   1920x1080   60    │     2.07GiB 5547k https │ avc1.64002A   5547k video only          1080p60, mp4_dash
617 mp4   1920x1080   60    │ ~   2.36GiB 6175k m3u8  │ vp09.00.41.08 6175k video only
303 webm  1920x1080   60    │     1.63GiB 4356k https │ vp09.00.41.08 4356k video only          1080p60, webm_dash

te wszystkie strumienie są generowane na podstawie jednego wrzucanego video. Ilość formatów które YT generuje i ich jakość zależy od kilku czynników, od rozdzielczości materiału czy FPS-ów źródłowego jak najbardziej, ale ilość generowanych streamów zależy również od tego ilu subskrybentów i jak bardzo oglądany jest dany kanał.

Do niedawna było tak że wrzucało się 1080p@50Hz i taki strumień dołaczał również YT generowanych przez siebie streamach. Ja z moją bliską zeru ilością subskrybentów, a w dodatku z filmami "niepublicznymi", dostawałem początkowo 50fps gdy uploadowałem materiały w rozdzielczości 1080p@50Hz, potem YT zmieniło politykę i okazało się że 1080p@50/60Hz dla takich "pikusiów" jak ja jest niedostępne. Jednym ze sposobów ominięcia tego ograniczenia było przeskalowanie materiału do 2048x1152, dopiero wtedy dostawałem kodek VP9@50Hz. W innym przypadku zrzucali mnie do h264(avc1) i 25fps. Tak było jeszcze w grudniu 2023, ale być może znowu się coś zmieniło sprawdzę.

Dodam tylko że nie zależało to od kodeka... bo używałem robiłem upload w h264, h265, vp8, vp9, av1. Nie miało to żadnego znaczenia.

Jako użytkownik który wrzuca filmy na których nie da się "zarobić" (czytaj wyświetlić reklam) jestem dla YT czystą stratą więc próbują mnie ograniczać jak mogą, przynajmniej tak mi się wydaje. Zrobię zaraz dodatkowy test i wrzucę jeden z .MKV które wrzucałem wyżej i zobaczymy co mi YT z tego zrobi.

32

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Hej!

Co to YT, to w chwili obecnej FullHD (1920x1080p) to za mało aby YT zechciał Ci wygenerować potem  50fps stream. Obecnie minimalny rozmiar obrazu aby YT zechciał umieścić strumień 50/60fps to 2048x1152, ale to najmniejszy problem. YT i tak zrobi sieczkę przy enkodowaniu takiego strumienia... będzie z 49.86Hz robił sobie 50Hz (wiem po sprawdziłem wrzucając i ściągając potem testowy materiał) co spowoduje co jakiś czas wnerwiające "szarpnięcia" na scrollach i wszystkich efektach które mają 50fps, ale to też jest do obejścia, bo mogę z tego strumienia 49.86Hz zrobić strumień 50Hz z "przesuniętym w widmie" strumieniem audio tak aby nie zmieniła się częstotliwość dźwięku przy przyspieszonej ścieżce video (49.86Hz --> 50Hz) ... niestety tutaj pojawiają się kolejne problemy... większość ludzi ma monitory które nie potrafią 50Hz a przynajmniej nie potrafią pod Windows.

YT robi wszystko aby wyświetlić strumień 60fps, a nawet jak wyświetli 50fps przy odświeżaniu monitora 60Hz czy więcej to nie muszę mówić jak to tragicznie wygląda (wstawionych 10 dodatkowych interpolowanych/powtórzonych klatek). W dodatku tak namieszali przy swoich playerach (np. chromecast), że teraz za nic chce przełączyć się na 50Hz gdy taki strumień jest dostępny. Do niedawna mój chromecast podpięty do TV przy odtwarzaniu streamu @50fps przełączał się taki tryb wyświetlania o czym TV mnie informował, od jakiegoś czasu (po aktualizacjach) chromecast trzyma 60fps jaki strumień nie byłby odtwarzany, no kicha totalna. Wszystkie dema wrzucone na YT @50fps po prostu szarpią i wyglądają teraz źle ;/

Mogę oczywiście przygotować strumienie przyspieszone do 60fps z przesuniętym w widmie dźwiękiem, ale po co? Szkoda waszego i mojego czasu chyba na taką zabawę. Te materiały które udostępniłem mają na celu pokazanie jakości jaką generuje tandem GTIADigitizer+RGB2HDMI, a to można ocenić sobie oglądając pliki .MKV które zamieściłem (nawet pojedyncze klatki) ... obraz jest po prostu pixel perfect, a RGB2HDMI podpięte do monitora czy TV który umie 50Hz generuje obraz idealnie płynny i nie przeszkadza mu to że jest to video 49.86Hz, sync jest idealny.

Teraz co do reszty zagadnień które poruszyłeś; OBS nie mogę używać ponieważ nie daje mi on pełnej kontroli nad moim graberem, więcej kontroli nad procesem zgrywania materiału mogę osiągnąć używając ffmpeg niż używając OBS i jego GUI. OBS mimo tego że miał ustawione aby nie ruszał frame-rate materiału wejściowego i tak koniec końców robił 50fps z okazyjnymi szarpnięciami w scrollach.

Co do kodeków to dla YT nie ma znaczenia w jakiej formie mu wrzucę materiał, testowo kodowałem nawet materiał w ultra jakości używając kodeka AV1 ale YT uznawał że jestem zbyt małym "pikusiem" (nawet linków nie mogę obecnie umieszczać w opisach na pod materiałami na YT które wrzucam) i koniec końców zostawał mi przydzielony tylko i wyłącznie stream kodowany kodekiem VP9. Tylko duże i popularne kanały dostają streamy AV1.

Mam jakąś starą kartę NV (Quadro P600) na której nvenc potrafi niby generować stream H265, ale ogólnie unikam produktów tejże firmy, więc karta jest obecnie "on the shelf". To co mam w kompie obecnie potrafi sprzętowo robić H265 i AV1, ale jak pisałem wyżej na YT nie ma to znaczenia... on i tak robi re-encoding wszystkiego co mu wrzucasz, wpływu na to co zrobi z Twojego materiału masz niewiele. Zresztą jest masa różnych materiałów i analiz tego jak należy przygotować materiał video dla YT aby ten był "łaskawy" przy enkodowaniu Twojego video... ale to są problemy którymi zajmują się o wiele więksi i poważniejsi ludzie niż ja, ja jestem tylko amatorem w tej dziedzinie i mogę się jedynie "pobawić" nieco aby zgłębić temat i przetestować rozwiązania które mi się w głowie uroiły :)

I parę słów na koniec abym nie został źle zrozumiany... ten mój cały wywód nie ma na celu mądrzenia się, albo negowania Twoich rad... ja po prostu opisałem swoje doświadczenia przy walce z kodowaniem rozsądnej jakości materiałów video pochodzących z naszej 8-bit maszyny... o ile te materiały da się jakoś sensownie "grabować" to niestety 50fps zarówno dla samego YT jak i dla większości sprzętu u ludzi jest problemem... a płynność generowanego obrazu (wszystkie efekty wyciągające 50fps oraz scrolle) i czas odpowiedzi monitorów kineskopowych jest obecnie problemem dla nowoczesnego sprzętu. Nawet jak mi się udaje wyświetlić stream 49.86Hz na monitorze z freesync to powiem Ci że matryce LCD mogą się schować (przynajmniej te w monitorach którymi dysponuje) w porównaniu z CRT. Nie testowałem jeszcze żadnego OLED-a, być może tam jest lepiej... ale na razie nie mam w planach takich wydatków. Technologia LCD jest jaka jest... dużo jej brakuje do ideału jeżeli chodzi o czasy reakcji matryc. Natomiast jeżeli chodzi o geometrię i jakość wyświetlanego obrazu tutaj nie mam zastrzeżeń :D

Reasumując, fajnie że chciało Ci się napisać parę słów o Twoich doświadczeniach z YT, bo to spowodowało że w sumie zainspirowałeś mnie do opisania swoich doświadczeń z YT. Kiedyś chciałem zgrywać wszystkie demka z JIL w bardzo dobrej jakości i wrzucić je na YT, jednak YT nie lubi takich materiałów ... ową mistyczną "płynność" YT ma głęboko w poważaniu i z aktualizacji na aktualizację jest coraz gorzej. Kiedyś wrzuciłem 50fps video paru dem ze stajni "Slight" (to były czasy gdy popularne było windows7) ... miałem wtedy monitor LCD który podpięty przez HDMI do komputera pozwalał na ustawienie odświeżania na 50Hz... wtedy materiały 50fps odtwarzane przez YT via przeglądarka wyglądały płynnie, dziś ten sam materiał odtwarzany na monitorze z ustawionym 50Hz nie odtwarza się tak płynnie jak kiedyś (widać przycięcia). Co YT popsuł? nie wiem. Wiem że sprzęt coraz lepszy, monitory coraz lepsze a software coraz gorszy :D

33

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Hej!

Chwilę mi to zajęło aby to dobrze zgrać, ale się udało. Z tym że aby to obejrzeć w płynności są wymagane pewne wymagania, których pewnie nie spałełni większa część forumowiczów. Skracając i upraszczając wszystko:

1) Poniższe filmy nagrane są z częstotliwością 49.86Hz (dokładnie taką jaką generuje Atari 8-bit)
2) Aby uzyskać w 100% płynne odtwarzanie trzeba mieć monitor refresh rate ustawiony na 50Hz (lub mieć monitor z freesync i player który to ogarnie)
3) pliki są umieszczone w kontenerze .MKV w środku kontenera video w formacie h.264
4) niektóre pliki mają na początku zniekształcone audio, spowodowane jest to faktem iż zapomniałem wyłączyć AGC (ARW) w graberze i ten starał się wyciągnąć coś z ciszy która panowała przy wczytywaniu/dekompresji niektórych produkcji (nie chciało mi się tego ponownie zgrywać)

do pobrania:

"boldem" zaznaczyłem te produkcje w których występują wizualne artefakty.

a) Out 5oft - Unity Part - błędne kolory przy nałożeniu się PMG na grafikę w trybie GTIA
b) Revenge of Magnus - tło z grafiki PMG nad wszystkim sinus scroll w Hi-Res, ale jak widać na załączonym filmie grafika PMG drży (zły timing przy zmienianiu X-POS obiektów PMG)
c) Visdom II demo - w przypadku efektu przesuwających się prostokątów w trybach 9/10 widać że w trybie 10 brak przesunięcia o cykl koloru pomiędzy trybem 9/10.

Zapewne będzie problem z trymami HIP/TIP/RIP (nie sprawdzałem tego jeszcze). Ale sądzę że autor rozwiązania poprawi to. Muszę tylko jeszcze zgrać referencyjne materiały z użyciem RetroTink 2x z wyjścia normalnego GTIA.

ps) pliki leżą na pigwie, na YT nie da się tego wrzucić tak aby YT nie zrobił z tego sieczki (YT robi konwersję/rekompresję materiału przy wrzucaniu materiałów na ich serwery). Wszystkie te pliki zajmują około ~1GB, mogą się pojawić jakieś artefakty kompresji h.264, ale starałem się aby bitrate materiału był dość wysoki.

@uicr0Bee: dziękuję! mam nadzieję że w końcu coś ruszę dalej w wątku, ale początek roku na razie nazwijmy to "ciekawy" ;-)

@baktra: o super pomysł! Dla tych co nie mają decka, a mają tylko np. magnetofon z turbo i chcą sobie nagrać kasety na prawdziwym sprzęcie z epoki, to rozwiązanie w sam raz! :)

Z Twojego opisu wynika iż posiadasz Turbo 2000F/2001.

Soft do tego turbo w postaci .XEX był chociażby w tym poście: Turbo 2000F CMD & Phase Select Patch v.1.2. Wersję .XEX możesz załadować z dowolnego urządzenia I/O (SIO2PC, SIC! Cart, AVG Cart, SDRIVE, SIO2SD, etc.).

Jeżeli chciałbyś zbudować sobie cart albo uruchomić jako emulowany cart z poziomu np. AVG Cart to tutaj masz zawartość pamięci EPROM: Turbo 2001 v.2.1 Cartridge

36

(11 odpowiedzi, napisanych Sprzęt - 8bit)

Hej!

Miałem taką starą płytę 800XL w zapasach... wyciągnąłem po czasie i chciałem ją uruchomić... objawy takie jak u Ciebie, tzn. "black screen", pobór prądu przez płytę około 1.8A! co się okazało, większość pamięci DRAM padnięta, kostki osiągały po 90°C (słynne kości Micron):
http://seban.pigwa.net/aa/800xl_dram_fail.jpg

po wymianie na inne kości, wszystko wróciło do normy, a pobór prądu przez płytę spadł po około 750mA:
http://seban.pigwa.net/aa/800xl_dram_fixed.jpg

Także jeżeli kostki DRAM na tej płycie są gorące to nie masz co się zastanawiać i po prostu je wymień. W moim przypadku wszystkie 8 kostek było padniętych.

37

(29 odpowiedzi, napisanych Sprzęt - 8bit)

@willy: spoko nic się przecież nie stało! nie ma za co przepraszać! Przecież spokojnie sobie wymieniamy poglądy i dyskutujemy. Mi też chwilę zajęło zanim zrozumiałem po co i dlaczego c0pperDragon wymyślił sobie owe "lumacode", jak już załapałem i wiedziałem jaki obraz potrafi generować RGB2HDMI to nie mogłem się doczekać aż zobaczę to na własne oczy. Na szczęście RZóG-owi udało się to kupić gdy tylko się pojawiło w sklepie i miałem możliwość przetestowania tego rozwiązania.

A co do Twojego rozwiązania, faktycznie teraz pamiętam jak o tym pisałeś... ale przyznam szczerze, wtedy sądziłem że używając FIQ będzie ciężko to  samplować precyzyjnie beż żadnego dodatkowego sprzętowego FIFO... chyba koniec końców doszedłeś do podobnych wniosków i porzuciłeś projekt?

W przypadku RGB2HDMI mają dodatkowe CPLD które umożliwia samplowanie z rozdzielczością chyba coś około 10ns. Nie dokopałem się chyba nigdy (nie miałem potrzeby) jak dalej przenoszą ten sygnał, ale gdzieś coś mi mignęło w użwają do tego celu GPU z maliny... nie wiem tylko jak, ew. źle zrozumiałem co co kiedyś przeczytałem i mogę bredzić :)

@alex: ale wiesz że link do repo który zapodałeś to tylko taki dev-board z MAX10 (od Altera/Intel) + transceiver HDMI i nic poza tym? tam nie nic poza upscalerem na FPGA, to jest platforma testowa na której c0pperdragon sobie robił development i test dla danej platformy. Albo jestem ślepy albo nie widzę nic poza tym co zostało napisane w readme: D-Video board - Read Me. Reasumując nie ma tam żadnego kodu HDL-owego który by cokolwiek czytał z GTIA czy magistrali danych JIL. Ale może jestem ślepy i nie widzę?

38

(29 odpowiedzi, napisanych Sprzęt - 8bit)

@willy ... dla mnie wprost przeciwnie. Idea pomysłu (lumacode) jest taka że taki sygnał połączasz sobie zamiast sygnału RF z modulatora i nie wiercąc żadnej dziury w obudowie masz z danej maszyny wyprowadzony sygnał który potem podpinasz sobie jednym kablem ze złączem RCA do RGB2HDMI. Montaż w komputerze też może obyć się bez lutowania (o ile masz podstawkę pod GTIA). Tylko tyle i aż tyle. Dla mnie pomysł zacny i zamierzam niektóre swoje maszyny (GTIA/TIA/VIC-II/ULA) przerobić tak aby zamiast RF miały lumacode. Jednym HDMI2RGB obskoczę wszystko w dodatku dzięki profilom w RGB2HDMI mogę mieć pixel perfect odwzorowanie obrazy z tych maszyn na dowolnym monitorze czy TV z HMDI. Ustawione raz w taki sposób jaki mi odpowiada.

Ale zgadzam się... każdy może mieć swoją opinię o tym projekcie. Ja zaprezentowałem swoją, dość entuzjastyczną ale przedstawiłem też pewne niedociągnięcia i wady o których napisałem wyżej, mimo wszystko cieszę że ten projekt powstał i mogę sobie wybierać z wielu rozwiązań dostępnych obecnie dla różnych maszyn. Jeżeli preferujesz inne rozwiązania to ja doskonale to rozumiem i w żaden sposób nie zabraniam korzystania z nich.

LumaCode nie jest żadnym regenerowanym chroma... możesz porównać to do kodowania np. sygnałów LUMA i CHROMA za pomocą 2-bitowych sekwencji [chroma, luma, luma], to wszystko po to aby cały ten sygnał w formie cyfrowej transmitować jedno-przewodową linię transmisyjną. Wszystko to wyjaśniono na stronie projektu (github): GTIAdigitizer (for Atari 8bit).

cytat z powyższego linku:

c0pperDragon napisał/a:

Details on color encoding:

The Atari 8-bit computers can generate at total 256 colors: 16 hues, each of which can be shown in one of 16 luminosities. This would require a total of 8 bits of information needed for every pixel. But because of the way the colors are generated by the Atari internally, every two consecutive pixels share the same hue. So only a total of 12 bit is needed for every pair of pixels. These 12 bit will be encoded in the LumaCode signal with 6 samples (each transferring 2 bits). Grouping always two samples together (high bits first) to form a 4-bit number, three such numbers encode the data for a pixel pair in the following order: HUE, LUM1, LUM2.

39

(29 odpowiedzi, napisanych Sprzęt - 8bit)

@grzybson: ależ to żaden offtopic! dzięki za info! 

Ja mogę dodać tylko że c0opperDragon zrobił również "ULA Digitizer", można go znaleźć również w jego sklepie Tindie. Nie podaję linków aby nie było że coś reklamuję i promuje, każdy możne znaleźć na własną rękę. Jeżeli chodzi o "ULAdigitizer" to nie testowałem tego i za mało znam się na ZX spectrum więc trudno mi się nawet na ten temat wypowiedzieć.

Ale nawiązując do tematu który poruszyłeś, to podobny projekt (w sensie użycia RPi Pico) o nazwie GTIA2DVI powstaje dla Atari: https://github.com/maaakit/GTIA2DVI.  Człowiek o pseudonimie "markit" zaprezentował go na AoL w tym wątku: GTIA2DVI.

Ja się bardzo cieszę że jest tyle możliwości do wyboru i w dodatku że MarkIt zrobił ten projekt w pełni otwarty! (Open Hardware/Software). Takich projektów nam potrzeba na scenie! :)

40

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Alex... przecież RGB2HDMI i jego "pokładowy" soft obsługuję masę maszyn, rozwiązań... to nie jest tylko do GTIA digitizera wersja. Tam ustawisz wszystko... i są profile dla wielu maszyn (np/ Amiga, Atari ST, Acorn, Amstrad) ... to naprawdę wspiera wiele maszyn. LumaCode jest jedną z opcji i pojawiła się niedawno (w sofcie w wersji BETA). GTIA jest potrzebna chociażby po to aby generować kolizje i video na standardowym wyjściu monitorowym. Moim zdaniem GTIA digitizer tylko sobie słucha tego co nadchodzi do GTIA i tego co generuje GTIA na wyjściach ANx, także słucha sobie magistrali danych aby pobrać informację o grafice PMG (kiedy ANTIC wystawia odpowiednie adresy) ... no ale skoro mi nie dowierzasz ... po prostu napisz do autora rozwiązania.

A co do tego że GTIA digitizer tylko słucha i że był już wcześniej problem z nazwijmy to "emulacja GTIA" zacytuję samego autora rozwiązania;

c0pperdragon napisał/a:

The board should work with all variants of the Atari 8-bit machines that have a CTIA/GTIA video chip. Boards shipped since 29.9.2023 have the firmware version 1.1 that fixes a display issue with the "Atari Control Picture" program. I know of no other program that did not work with the previous version already.

Należy tylko dodać że projekt GTIA digitizera nie jest otwarty (i nie wiem czy będzie) i na razie można go jedynie kupić na w sklepie Tindie u CopperDragon.

a co do:

I know of no other program that did not work with the previous version already

Jestem w trakcie formułowania opisu problemów które zauważyłem, więc liczę że autor dokona poprawek i będzie to rozwiązanie idealne :D

41

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Wrzucę filmy to sam zobaczysz (ew. wpadnij do mnie i sam się przekonaj). Dlaczego sądzę że to emulacja GTIA? Bo np. kolory które wychodzą z nałożenia się grafiki PMG na "playfield" (w bardzo konkretnych przypadkach) wychodzą inaczej niż w przypadku bezpośredniego wyjścia z GITA, albo pozycje obiektów PMG np. w przypadku pierwszej części "Revenge of Magnus" (sinus scroll w hi-res + tło na PMG w górnej połowie ekranu) potrafią być inne niż w przypadku wyjścia z GTIA... efekt jest taki że obraz gwiazdek w tle jest poprzesuwany albo wręcz pozycje obiektów drżą o jedną linię skaningową.

Sądzę że autorowi prościej było wykonać emulację GTIA niż bawić się z precyzyjnym dekodowaniem sygnału "COLOR" z czym jak widać problem ma również autor projektu GTIA2DVI.

C0pperdragon ma doświadczenie w te klocki, a świadczą o tym chociażby jego pozostałe projekty (chociażby pełna emulacja VIC-II z wyjściem RGB, etc.). Mam również VIC-II digitizer, ale przyznaję że jeszcze nie zdążyłem go przetestować.

Samego RGB2HDMI używałem również z innymi maszynami i byłem bardzo zadowolony z rezultatów, jak tylko zobaczyłem że
c0pperdragon wypuścił pierwsze wersje swoich digitizerów z "lumacode" to od razu postanowiłem to przetestować. Czekam jeszcze na TIA digitizer i na pewno nie omieszkam zamieścić tutaj swoich doświadczeń z tymże również.

Jeden myk jest fajny z tym lumacode, tak jak pisał autor używa on 2-bitów do opisania stanu wyjścia/linii transmisyjnej... a więc mamy 4 możliwe stany do zakodowania na jednym drucie, całość protokołu pomyślana jest tak że tworzy on sygnał zbliżony do analogowego sygnału video (jeden ze stanów ma poziom "sync", pozostałe 3 stany służą do enkodowania transmitowanych bitów luminancji i chrominancji... a to powoduje że jak taki sygnał lumacode podepniesz do czegoś dekodującego composite video to widać obraz, co prawda nie jest to odwzorowanie właściwe, ale możesz dzięki temu zobaczyć że "digitizer" działa, oto przykład wyjścia z digitizera podpięty do "RetroTink 2x":

ekran Atari BASIC:
http://seban.pigwa.net/aa/gtia_digitizer/atari_basic.jpg

intro do gry Ballblazer:
http://seban.pigwa.net/aa/gtia_digitizer/ballblazer_intro.jpg

a tutaj przykładowy "atari control picture", wyjście z GTIA_digitizera podpięte do RGB2HDMI:
http://seban.pigwa.net/aa/gtia_digitizer/control_picture.jpg

screen z dema "Equation of Time / Our 5oft", w odpalonym menu RGB2HDMI:
http://seban.pigwa.net/aa/gtia_digitizer/eq_of_time.jpg

42

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Near co prawda nie sprawdzałem, ale jeżeli chodzi o scrolling to wszystko jest ultra płynne. Są pewne problemy z grafiką Player-Missile, ale to są drobnostki do poprawienia, na pewno autor rozwiązania dostanie dokładny raport aby mógł poprawić co trzeba.

Zaprezentowałbym wyniki działania już dawno, ale na YT nie da się obecnie wrzucić tego materiały tak aby nie psuł on jakości, zapewne udostępnię pliki .mkv na pigwie abyście mogli sami ocenić jak to wygląda. W dodatku mój tani chiński grabber przy 50fps pozawala tylko na przesyłanie obrazu do komputera z kompresją MJPEG o też powoduje pewne pogorszenie jakości.

43

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Dzięki RZóG-owi mam to w rękach od jakiegoś czasu. Obraz wygląda super, ale są niewielkie błędy w emulacji GTIA (bo FPGA na płytce "GTIA Digitizer" emuluje GTIA. Miałem pisać o tym wcześniej, ale nie miałem zgranych jeszcze filmów aby pokazać jak to wygląda. Postaram się nagrać video aby było można ocenić samemu, dodam tylko że samo RGB2HMI oparte na PiZero z wyjściem HDMI generuje idealny obraz, w dodatku pixel perfect i ultra smooth. Cały pomysł z LumaCode jest świetny. Mam w rękach kilka rozwiązań:

1) S-Video + RetroTink 2x
2) GBS-8200 + VBXE + GBS Control
3) OSSC + VBXE 1.x
4) RGB2HDMI + GTIADigitizer

W chwili obecnej mogę powiedzieć tyle że jeżeli autor rozwiązania poprawi emulację GTIA to będzie to najbardziej odpowiadające mi rozwiązanie.

pozostałe rozwiązania preferuję w następującej kolejności:

1) S-Video + RetroTink 2x
2) VBXE + OSSC
3) VBXE + GBS-8200 z GBS control

poniżej fotki zarówno płytki GTIA digitizer jak RGB2HDMI wraz z Pi-Zero:

http://seban.pigwa.net/aa/gtia_digitizer/gtia_digitizer_1.jpg

http://seban.pigwa.net/aa/gtia_digitizer/gtia_digitizer_2.jpg

http://seban.pigwa.net/aa/gtia_digitizer/rgb2hdmi_1.jpg

http://seban.pigwa.net/aa/gtia_digitizer/rgb2hdmi_2.jpg

44

(23 odpowiedzi, napisanych Sprzęt - 8bit)

Cześć!

Dzięki za poświęcony czas i wykrycie błędu na schemacie, już wiem gdzie zrobiłem błąd, tzn. jaki był powód powstanie tego błędu, zamysł miałem dobry tylko coś musiało mi przerwać pracę i po powrocie do rysowania schematu zapomniałem co robiłem i stąd błąd który zauważyłeś. Poprawię niebawem i zaktualizuję pliki. Dodane do listy "to do".

Generalnie linia idąca do pinów 4,5 bramki powinna być opisana etykietą ~RST (NOT RST) i podpięta do pinu 13 bramki NAND przerzutnika RS stworzonego z bramek NAND, a sygnał RST powinien iść tylko do wejść resetujących licznik 7490. I taki był zamysł, tzn. aby etykieta przy pinie 13 bramki miała symbol ~RST.

wysłałem e-mail via forum, piszę czysto informacyjnie gdyby miał nie dotrzeć :)

Hej!

Jeżeli brałbyś pod uwagę możliwość wysyłki (np. paczkomat Inpost) to byłbym zainteresowany dyskami Caviar 2540 oraz Caviar 31600. Mogę zaoferować 100zł za oba dyski, jeżeli to dla Ciebie uczciwa cena daj znać.

pozdrawiam
Seban

Hej!

Piguła/Shpoon napisał/a:

Natomiast mnie po zgrywaniu kilkunastu kaset w Turbo2000 w oparciu o magnetofon z T2001 lub T2000f - ten system turbo mocno rozczarował mała kompatybilnością. Masa softu do małego Atari (szczególnie tego, który powstał na finiszu 8bitowego Atari w latach 90 z tym systemem działa słabo. Są problemy, aby go uruchomić z poziomu jakiegokolwiek loadera.

Miałem wcześniej o tym napisać, ale zawsze jakoś pojawiały się inne tematy i zapominałem o tym napisać... Zacznę od tego że ja nie znając innych rozwiązań w tamtym czasie, obcowałem tylko z KSO Turbo 2000 i Turbo 2000F i miałem zupełnie przeciwne doświadczenia do Twoich, tzn. bardzo duża kompatybilność tegoż systemu z różnymi narzędziami które pracowały ze stacją dysków, masa użytków które działały pod DOS ze stacją dysków,  działała "od pierwszego strzału" i to bez żadnych przeróbek! Wszelakie programy kopiujące, edytory tekstu, assemblery (w tym niegdyś mój ulubiony MAC/65), przykładów mógłbym mnożyć wiele...

Natomiast jeżeli chodzi o wczytywanie gier to zaraz nawiążę do tego problemu, ale może na początek zapytam, którego softu do obsługi turbo używałeś? Pytam bo prosty podział jest na dwie wersje... jedne z wersji Turbo 2000F/2001 lokowały się pod OS-ROM, a drugie z wersji lokowały się od $0700. KSO Turbo 2000 (Joy Port) spotkałem tylko wersję lokującą się nisko (od $700).

Dlaczego o tym piszę? A już tłumaczę... gdy weźmiesz pod uwagę wersje plikowe gier które były dostępne w tamtych czasach na giełdzie były to gry które często ładowały się bardzo nisko w pamięć, albo takie które to ładowały swoje porcje danych pod OS-ROM, były również takie pozycje które zarówno ładowały się nisko i podczas ładowania umieszczały dane pod OS-ROM komputera.

Teraz zapewne rozumiesz co się działo jeżeli próbowałeś ładować grę która niszczyła jakiś konkretny obszar pamięci podczas wczytywania? Należy również mieć świadomość że w przypadku Turbo 2000F/KSO standardowy blok danych ma rozmiar 3072 bajty, więc pomimo kodu obsługującego system/handler turbo, należało w pamięci mieć miejsce na 3kB bufor przechowujący dane aktualnie wczytywanego rekordu danych.

Tak więc do wyboru miałeś albo KSO/Turbo2000F wersji która miała MEMLO na poziomie ~$1A00, albo wersję która lokowała się co prawda od OS-ROM i jej MEMLO było co prawda na poziomie $800 ale za to zajęta była część przestrzeni pod OS-ROM. Rozwiązań tego problemu było kilka... pominę na razie sprawę loaderów L1 czy L2, bo to była taka proteza raczej niż dobrze napisane loadery. Nie pamiętam już dokładnie co robił L1, ale L2 o ile dobrze pamiętam po prostu relokował sobie ów 3kB bufor na rekord danych pod OS-ROM i dzięki temu obniżał MEMLO 3kB

Przyznam że znając te "ograniczenia" systemu od podszewki to jeżeli z jakąś gra był problem to początkowo sobie albo ją modyfikowałem tak aby wczytywała mi się bez problemów (starałem się nie korzystać z loaderów L1 czy L2), potem ktoś z giełdy poprosił mnie o przerobienie loaderów L1, L2 tak aby bufor danych umieszczały banku dodatkowej pamięci, a jeszcze później zrobiłem sobie cart który oprócz pamięci EPROM miał w sobie 8KB RAM mapowane w $8000-$9FFF i ten dodatkowy RAM wykorzystywałem jako bufor na rekord danych wczytanych z taśmy, więc problem niejako rozwiązał się sam, ale to rozwiązanie przestałem szybko rozwijać bo na horyzoncie pojawiła się możliwość posiadania stacji dysków TOMS 720. Jak czas pozwoli do odkopię moje stare zapiski i przeszukam kartony i może uda się to wyrwać z odmętów przeszłości.

Ale jakie było rozwiązanie dla "szarych" użytkowników? Jednym z rozwiązań było przepuszczenie opornej gry przez jakiś cruncher... w późniejszym czasie mógł być to np. Cruncher 2.69, Cruncher 4.64 czy potem Cruncher 5.0 od Magnusa. Te crunchery co prawda zmieniały strukturę oryginalnego pliku ale za to generowały wyjściowy plik który nie wymagał niskiego MEMLO do wczytania programu.

Natomiast przed nastaniem ery Cruncher-ów powstał jeszcze tzw. "NEW FORMAT" czyli inny format zapisu danych, nie podzielony na rekordy jak standardowy format "Turbo 2000F/KSO", format ten charakteryzował się tym że poszczególne bloki danych ładowały się konkretne/docelowe miejsca pamięci, przez co procedura ładująca mogła być prosta i krótka a do tego nie było potrzebne miejsce na bufor który przechowywałby aktualnie wczytywany rekord danych.

Handlarze giełdowi umieszczali na swoich taśmach/zestawach nagrania w formacie "Speedy 2700", który to był nieco efektywniejszą odmianą "nowego formatu" Turbo 2001.

Należy oczywiście pamiętać ze format danych Turbo 2000F/KSO jest tak naprawdę tym co zaproponował pan Wojciech Zabołotny w swoim systemie Turbo 2T06 i większość softu do cartów czy też ładowanych z taśmy tzw. "KOS-ów" (Kasetowy System Operacyjny) dla Turbo 2000F/KSO jest pochodną bazującą na pracy wykonanej przez W.Zabołotnego.

Część rozwiązań w tym systemie ma swoje pewne ograniczenia i wady, jednak w owym czasie nie pamiętam abym był specjalnie przejęty ograniczeniami tegoż systemu... byłem naprawdę bardzo z niego zadowolony. Mogłem bez problemu użwać chociażby Turbo Basic XL, MAC/65 czy też sporej masy innych narzędzi które nie były przewidziane do pracy z taśmą. A jednak działały bez problemu.

Ładowanie gier które wymagały niskiego MEMLO było jakimś tam wyzwaniem, ale przyznam że dzięki temu bardzo szybko zgłębiłem zarówno tajniki działania tegoż systemu jak i też techniki stosowane przez osoby wykonujące wersje plikowe gier.

Zdaje sobie oczywiście sprawę że na pewno jestem dość mocno "spolaryzowany" jeżeli chodzi preferowanie tego rozwiązania... ale z drugiej strony patrząc na to ile walki musiałem podjąć np. w celu wykonania jakichś dumpów kaset zapisanych w Blizzard czy innych systemach, to w moim przypadku kasety zapisane w Turbo 2000F/KSO szły o wiele lepiej i szybciej ... no chyba że to były nagrania zapisane w Speedy 2700 z którymi to już musiałem się nieco więcej użerać. Być może moje odczucie "łatwiejszego" przetwarzania kaset nagranych w Turbo 2000F/KSO wynika własnie z tego że długo obcowałem z tym systemem w przeszłości i podświadomie omijam pułapki zastawione na mnie przez upływ czasu i starzejące się taśmy.

Znowu wyszedł mi jakiś koszmarnie długi post... a miało być krótko i konkretnie... ale ja chyba tak nie potrafię... miałem co prawda jeszcze kilka myśli i wątków do rozwinięcia, ale prawdę mówiąc tyle razy już zboczyłem z tematu głównego że nie pamiętam o czym chciałem jeszcze napisać. Jak mi się przypomni to nie omieszkam dopisać/uzupełnić.

W archiwum są dwie wersje. Jedna dla magnetofonów z turbo UM/AST/Turbo2000F (odczyt danych przez port SIO) ... druga wersja przerobiona przez AJKA tak aby czytała z portu JOY-a. Myślę że jeżeli chodzi o wersję sygnowaną przez UM to raczej nie pytanie do galtrona a raczej to Piotra Janiszowskiego, który był założycielem firmy UM. Galtron specjalizował się montażu/serwisie czyli bardziej tematy sprzętowe niźli software.

A co do niepełnej wersji gry to pewnie tak została ona nagrana na kasecie firmy Empex... wersja AJKA też pewnie była pełna, zapewne pośrednicy podczas kopiowania tychże nagrań doprowadzili do braku kilku plików. Nie mamy dostępu do oryginalnych wersji więc składamy i odzyskujemy z tego co mamy. Ale skoro w obecnych czasach trudno o kasety z tamtych czasów to należy robić co się da aby odzyskać takie perełki.

Dzień dobry!

W dniu dzisiejszym pozwolę sobie powrócić do tematu “The Eidolon”, a powodem do powrotu do tego tematu były ostatnie posty szanownego kolegi Piguły, w których walczył on z kolejnymi taśmami przybyłymi z przeszłości i napotkał on na nich obraz tejże gry, tym razem wersji przeznaczonej dla systemu KSO Turbo 2000, a więc wersji turbo bazującej na transmisji danych z wykorzystaniem interfejsu podłączanego do drugiego portu joysticka.

Tę wersję opracował niejaki “*AJEK”, bazując na wersji zrobionej przez ludzi z “Unerring Masters”, dla która to zaistniała wcześniej na tym forum jako nagranie znajdujące się za zestawie nr. 4 firmy Empex z Łodzi. Podczas prób odtworzenia tamtej wersji okazało się że co prawda udało się poprawnie zdekodować nagrania, ale niestety okazało się również że tamtej wersji brakuje plików z poziomu ósmego gry, zatem mimo usilnych prób przywrócenia tej pozycji wszystkie wysiłki rozbiły się o brak końcowych fragmentów nagrania.

Gdy teraz okazało się że pojawiła się inna wersja tejże pozycji, tym razem przygotowana przez *AJKA pojawiła się nadzieja że tym razem uda się odtworzyć całość! Tym bardziej że wersja *AJKOWA bazowała na wersji od “Unerring Masters”.  Usiadłem więc do roboty i podjąłem kilka prób konwersji nagrań dostarczonych przez Pigułę… niestety część bloków na taśmie okazała się uszkodzona w sposób uniemożliwiający poprawne odtworzenie wszystkich uszkodzonych bloków. Siedząc i analizując rekordy, zastępując część z nich (tych w których sygnał zanikał do takich poziomów które uniemożliwiały dekodowanie) “połatałem” i poskładałem to w całość.

Przyszedł zatem czas na końcowe testy i nie przypuszczając jeszcze co mnie czeka, zabrałem się ochoczo do testów… po dłuższej chwili zabaw we wczytywanie kolejnych poziomów dotarło do mnie że *AJKOWA wersja jest również niekompletna i zabawa kończy się na poziomie szóstym! Normalnie się zagotowałem… tyle walki na nic? Mogę dokleić co prawda brakujące bloki z wersji “UM”, ale i tak będzie brakowało końcowych plików! Myślałem że przysłowiowy szlag mnie trafi… tyle walki i roboty na nic? Prawie pogodziłem się porażką i pomyślałem że opiszę sprawę na forum i być może za jakiś czas ktoś znajdzie kasetę w pełną wersją tejże gry zawierającej wszystkie pliki i jakimś cudem udostępni jej zawartość.

Zacząłem się zastanawiać jakie jednak są szanse na taki obrót sytuacji, stwierdziłem że dość niewielkie. Spokoju jednak mi to nie dawało bo ta wersja gry sygnowana przez “Unerring Masters”, była wersją która nie wymagała żadnej dodatkowej pamięci, a do jej wczytania wystarczało jedynie 64kB RAM. Zacząłem się zastanawiać jak wygląda wersja dyskowa tejże gry i czy nie dałoby się wyłuskać z niej brakujących plików i wygenerować je w formacie których oczekuje loader. Za długo nie myśląc, gdy tylko znalazłem chwilę wolnego czasu zacząłem analizować zawartość obrazu dyskietki z grą. Zastanawiałem się czy gra używa jakichś wyrafinowanych struktur jeżeli chodzi przechowywanie danych poszczególnych poziomów gry.

Jakież było moje zdziwienie gdy przeglądając hex-edytorem zawartość pliku .ATR z obrazem gry natrafiłem na prawie normalne wpisy w miejscu gdzie powinien się znajdować katalog dysku w formacie DOS 2.0:


xxd -g1 -seek 0xb410 -l 0x280 "Eidolon, The v1.1 (1985)(Epyx)(US).atr"
0000b410: 60 01 00 01 00 20 20 20 20 54 68 65 20 20 20 20  `....    The    
0000b420: 60 02 00 02 00 20 20 45 69 64 6f 6c 6f 6e 20 20  `....  Eidolon  
0000b430: 60 03 00 03 00 76 65 72 73 69 6f 6e 20 31 2e 31  `....version 1.1
0000b440: 60 04 00 04 00 20 43 6f 70 79 72 69 67 68 74 20  `.... Copyright
0000b450: 60 05 00 05 00 20 20 20 31 39 38 35 20 20 20 20  `....   1985    
0000b460: 60 06 00 06 00 20 4c 75 63 61 73 66 69 6c 6d 20  `.... Lucasfilm
0000b470: 60 07 00 07 00 20 4c 74 64 2e 20 35 30 39 31 39  `.... Ltd. 50919
0000b480: 00 43 61 76 65 61 74 20 50 65 69 72 61 6e 21 21  .Caveat Peiran!!
0000b490: 42 0b 00 d7 00 50 41 4e 45 4c 20 20 20 53 43 52  B....PANEL   SCR
0000b4a0: 42 09 00 e2 00 54 49 54 4c 45 20 20 20 53 43 52  B....TITLE   SCR
0000b4b0: 42 03 00 eb 00 4c 45 56 45 4c 31 20 20 4d 41 50  B....LEVEL1  MAP
0000b4c0: 42 03 00 ee 00 4c 45 56 45 4c 32 20 20 4d 41 50  B....LEVEL2  MAP
0000b4d0: 42 03 00 f1 00 4c 45 56 45 4c 33 20 20 4d 41 50  B....LEVEL3  MAP
0000b4e0: 42 03 00 f4 00 4c 45 56 45 4c 34 20 20 4d 41 50  B....LEVEL4  MAP
0000b4f0: 42 03 00 f7 00 4c 45 56 45 4c 35 20 20 4d 41 50  B....LEVEL5  MAP
0000b500: 42 03 00 fa 00 4c 45 56 45 4c 36 20 20 4d 41 50  B....LEVEL6  MAP
0000b510: 42 03 00 fd 00 4c 45 56 45 4c 37 20 20 4d 41 50  B....LEVEL7  MAP
0000b520: 42 03 00 00 01 4c 45 56 45 4c 38 20 20 4d 41 50  B....LEVEL8  MAP
0000b530: 42 11 00 03 01 44 52 41 47 4f 4e 31 20 43 45 4c  B....DRAGON1 CEL
0000b540: 42 1a 00 14 01 44 52 41 47 4f 4e 32 20 43 45 4c  B....DRAGON2 CEL
0000b550: 42 14 00 2e 01 44 52 41 47 4f 4e 33 20 43 45 4c  B....DRAGON3 CEL
0000b560: 42 1c 00 42 01 44 52 41 47 4f 4e 34 20 43 45 4c  B..B.DRAGON4 CEL
0000b570: 42 1b 00 5e 01 44 52 41 47 4f 4e 35 20 43 45 4c  B..^.DRAGON5 CEL
0000b580: 42 19 00 82 01 44 52 41 47 4f 4e 36 20 43 45 4c  B....DRAGON6 CEL
0000b590: 42 14 00 9b 01 44 52 41 47 4f 4e 37 20 43 45 4c  B....DRAGON7 CEL
0000b5a0: 42 1e 00 af 01 44 52 41 47 4f 4e 38 20 43 45 4c  B....DRAGON8 CEL
0000b5b0: 42 0f 00 cd 01 44 52 41 47 4f 4e 38 41 43 45 4c  B....DRAGON8ACEL
0000b5c0: 42 10 00 dc 01 44 52 41 47 4f 4e 38 42 43 45 4c  B....DRAGON8BCEL
0000b5d0: 42 10 00 ec 01 44 52 41 47 4f 4e 38 43 43 45 4c  B....DRAGON8CCEL
0000b5e0: 42 1c 00 fc 01 42 49 46 46 20 20 20 20 43 45 4c  B....BIFF    CEL
0000b5f0: 42 1c 00 18 02 42 4e 45 43 4b 20 20 20 43 45 4c  B....BNECK   CEL
0000b600: 42 1d 00 34 02 47 52 45 50 20 20 20 20 43 45 4c  B..4.GREP    CEL
0000b610: 42 18 00 51 02 4d 41 4c 4c 4f 43 20 20 43 45 4c  B..Q.MALLOC  CEL
0000b620: 42 1b 00 69 02 50 4f 4c 59 50 53 20 20 43 45 4c  B..i.POLYPS  CEL
0000b630: 42 10 00 84 02 50 55 46 46 20 20 20 20 43 45 4c  B....PUFF    CEL
0000b640: 42 08 00 94 02 52 4f 54 4f 46 4c 59 20 43 45 4c  B....ROTOFLY CEL
0000b650: 42 17 00 9c 02 54 52 4f 4c 4c 20 20 20 43 45 4c  B....TROLL   CEL
0000b660: 42 0f 00 b3 02 42 42 49 52 44 20 20 20 43 45 4c  B....BBIRD   CEL
0000b670: 80 0e 00 c2 02 4d 49 53 20 20 20 20 20 43 45 4c  .....MIS     CEL
0000b680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

… gdy ujrzałem tę strukturę katalogu przyznam że pojawił się w mojej głowie pewien promyk nadziei. Sprawdziłem na szybko czy aby na pewno wpisy znajdujące się w katalogu mają odzwierciedlenie w rzeczywistości i czy na pewno wskazują na poprawne pliki umieszczone na dysku. Okazało się że faktycznie da się te pliki bezproblemowo odczytać za pomocą DOS-a czy też dowolnego narzędzia do ekstrakcji plików umieszczonych w obrazie ATR, aby jednak taka operacja była możliwa i aby “DOS” czy inne narzędzie widziały całą strukturę wpisów należy podmienić bajt znajdujący się pod offsetem 0xb480 na wartość np. 0x60, tak aby DOS czy inne narzędzie nie uznawały że to ostatni wpis w katalogu dysku. Po tej operacji możemy listować już zawartość dysku a także skopiować wybrane pliki.

Teraz przyszedł czas na zastanowienie się jak wygląda wczytywanie przez grę poszczególnych plików, tzn. jak wygląda struktura danego poziomu i gdzie w kodzie gry określone jest jakich plików potrzebuje dany poziom do poprawnego działania. Oczywiście patrząc na strukturę katalogów można domyśleć się iż do każdego poziomu przypisany jest jeden ze smoków (pliki od “dragon1.cel” do “dragon8.cel”), przy czym widać że ostatni smok przeciwnik składa się wielu segmentów (dragon8.cel, dragon8a.cel, dragon8b.cel, dragon8b.cel). Można się domyśleć że pliki: “biff.cel”, “bneck.cel”, “grep.cel” … “rotofly.cel”, opisują wygląd poszczególnych przeciwników spotykanych podczas eksploracji jaskiń na kolejnych poziomach gry, jasne również staje się co reprezentują pliki z końcówką “.scr” oraz pliki “level1.map”. Przyszło mi do głowy że każdy z plików opisujących poziom (*.map_ powinien mieć w informację również o przeciwnikach i ich wyglądzie zawartą w sobie, zatem moja uwaga skierowała się na plik “LEVEL8.MAP”, i patrząc na wpis w katalogu dotyczący pliku “LEVEL8.MAP” widzimy:

0000b520: 42 03 00 00 01 4c 45 56 45 4c 38 20 20 4d 41 50  B....LEVEL8  MAP

Analizując ten wpis widzimy że plik zaczyna się od sektora 256 i ma długość 3 sektorów, zatem zaglądamy we wskazane sektory:

xxd -g1 -seek 0x8010 -l 0x180 "Eidolon, The v1.1 (1985)(Epyx)(US).atr"
00008010: 00 80 00 00 00 e3 00 e2 80 e0 80 80 80 e0 80 e2  ................
00008020: 00 e3 00 00 00 80 00 40 00 40 00 40 00 40 00 80  .......@.@.@.@..
00008030: 00 80 00 00 00 e3 00 e2 80 e0 80 80 80 e0 80 e2  ................
00008040: 00 e3 00 00 00 80 00 80 00 00 00 40 00 00 00 80  ...........@....
00008050: 00 80 00 00 00 80 80 80 80 f3 00 80 00 f3 80 80  ................
00008060: 80 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00  ................
00008070: 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00  ................
00008080: 00 00 00 00 00 00 00 00 00 00 00 80 00 45 02 7d  .............E.}
00008090: 00 00 00 00 00 00 44 52 41 47 4f 4e 38 20 43 45  ......DRAGON8 CE
000080a0: 4c 44 52 41 47 4f 4e 38 41 43 45 4c 44 52 41 47  LDRAGON8ACELDRAG
000080b0: 4f 4e 38 42 43 45 4c 44 52 41 47 4f 4e 38 43 43  ON8BCELDRAGON8CC
000080c0: 45 4c 18 c8 c8 c8 c8 08 0a 00 00 08 00 0c 00 00  EL..............
000080d0: a0 ff 54 c6 c6 c6 c6 88 84 03 00 00 b8 08 04 04  ..T.............
000080e0: 04 04 04 06 08 0a 40 40 40 40 00 00 00 00 00 00  ......@@@@......
000080f0: 00 00 00 00 00 ff 00 00 ff 80 e0 80 e2 00 e3 00  ................
00008100: 00 00 80 00 80 00 40 00 40 00 40 00 40 44 00 69  ......@.@.@.@D.i
00008110: 38 08 2b 0f 7f 0d 1b 7f 0d fa 00 02 4d 52 57 fa  8.+.........MRW.
00008120: c9 17 59 92 bc fa dd f8 f4 f0 f2 fa f4 ba 38 8c  ..Y...........8.
00008130: 09 60 06 ff fa ea fa 07 00 01 02 02 03 04 00 04  .`..............
00008140: e3 05 0d 00 05 05 06 07 08 00 09 0a 0b 0b 0c 0c  ................
00008150: 0d 5f 4a 06 9a 9a aa ba ca da ea 46 e0 01 4e e0  ._J........F..N.
00008160: 13 4e 02 03 0e 10 4c 02 04 0f 11 4c 0a 14 16 19  .N....L....L....
00008170: 18 05 02 08 09 0a 0b 0d 44 02 07 15 17 52 03 07  ........D....R..
00008180: 24 fe 1f 41 c1 e2 fd a3 e4 f1 ea c5 e9 49 04 7d  $..A.........I.}

… no i wszystko stało się jasne! Plik .MAP opisujący poziom zawiera w środku informacje o plikach które są konieczne do wczytania przed uruchomieniem danego poziomu. Szybka analiza rekordów danych nagranych na taśmie pozwoliła mi ustalić że na taśmie brakuje ostatniego pliku “DRAGON8C.CEL”.

Teraz pozostało tylko skopiować z obrazu dyskietki plik “DRAGON8C.CEL” i spróbować zakodować go w taki sposób aby loader wczytujące poszczególne bloki gry poprawnie wczytał ów plik, a przy odrobinie szczęścia mogło się okazać że jeżeli ta operacja skończy się sukcesem to będziemy dysponowali kompletnym odtworzonym obrazem gry. Szanse na powodzenie niewielkie, jednak warto było spróbować.

Jak się do tego zabrać? Ponieważ pracujemy na plikach .HEX opisujących strukturę nagrania w sposób czytelny dla człowieka, a nagrane na taśmę bloki są zgodne ze standardem AST to wystarczyło napisać prosty skrypt kodujący dany plik jako ciąg liczb hex, dodać to tego segment “PWMD” zawierające odpowiednie długości impulsów, na końcu tego całego ciągu danych dodać sumę kontrolną XOR i jeżeli wszystko będzie się zgadzało to loader gry powinien wczytać brakujący plik bez błędu.

Klepiąc parę skryptów w Pythonie (do konwersji danych, liczenia sumy kontrolnej, etc.) udało mi się tę operację przeprowadzić w miarę bezproblemowo. Brakujące segmenty danych dodałem do pliku .hex zawierającego AJKOWĄ wersję gry… i podczas przejścia na ósmy poziom gry okazało się że loader poprawnie wczytał brakujący plik! :) Poziom ósmy wystartował bez problemu! Jakaż była moja radość gdy okazało się że te wszystkie operacje wykonane wcześniej przyniosły oczekiwany skutek.

Postanowiłem również poprawić zatem wcześniejszą wersję przeznaczoną dla turbo AST/UM. Na początku myślałem że loader ładujące poszczególne segmenty danych znajduje się w segmencie danych który pokazuje czołówkę informującą że tę wersję gry opracował “Unerring Masters”, podmieniłem więc tylko początkowe segmenty, tak aby zostały tylko jak mi się wydawało rekordy zawierające loadery dla systemu AST/UM, jednak moja radość nie trwała długo, ponieważ okazało się że loader danych został umieszczony w głównym segmencie danych zawierającego kod gry (blok danych o długości 24705 bajtów), zatem należało przenieść również ten długi blok z wersji dla AST/UM.

W tym jednak momencie zacząłem się zastanawiać czy aby na pewno skonwertowany wtedy przeze mnie plik był na pewno dobrze przetworzony, miałem wątpliwości ponieważ nagranie było dość wiekowe i miejscami trudno było poprawnie przetworzyć niektóre bloki danych, jednak teraz pojawiła się możliwość porównania obu plików, tzn. wersji AJKOWEJ i wersji UM, postanowiłem dokonać takiego porównania, w różnice powinny były tylko występować w obrębie loadera, gdyż wersja dla “KSO Turbo 2000”, dokonywała odczytu używając odwołań do PORTA ($D300) a wersja AST/UM będzie oczekiwać danych z portu SIO, a dokładniej rzecz biorąc z rejestru $D20F (bit #4 który to odwzorowuje stan wejścia SIO_DATA_IN).

Problem w tym że pierwsze dwa główne bloki gry (czołówka “Lucasfilm” oraz główny kod gry) były zakodowane inaczej niż pozostałe bloki gry odczytywane przez loader. Bloki ładowane w trakcie gry zapisano w standardzie AST, natomiast dwa pierwsze bloki posiadały inny początkowy ton synchronizujący, a długości impulsów były zgodne z Turbo 2000, z tym że kolejność bitów w bajcie była kodowana odwrotnie (LSB first) niż w przypadku KSO Turbo 2000 (MSB first). Moja wcześniejsza próba konwersji nie była doskonała, ponieważ mając świadomość iż użycie a8cas-util.pl z wymuszeniem formatu Turbo 2000 i sumą kontrolą XOR, pozostawiła w strukturze bloku PWMD bajty z odwróconymi bitami, a jako że nie przeszkadzało we wczytywaniu danych, to ten blok zostawiłem w takim stanie. Chcąc jednak porównać teraz zawartość obu plików należało doprowadzić ten segment danych do porządku. Kolejny skrypt w python i szybko udało się przetworzyć wcześniej skonwertowany segment danych, niestety okazało się że przy poprzedniej konwersji oprócz odwrócenia bitów w bajtach całość danych została przesunięta o jeden bit w lewo (konwersja i dekodowanie przez a8cas-util.pl było przeprowadzone nie na tym zboczu sygnału które trzeba) … blah… a więc kolejny skrypt i dane zostały przesunięte o jeden bit w prawo. Można było więc porównać zawartość obu segmentów danych (AJEK vs AST/UM). Kolejny skrypt to porównania danych, XOR aby zobaczyć ew. różnice w bitach i okazało się że mam dużo przekłamań na najstarszych bitach niektórych bajtów… ehhh.

Okazało się że przesunięcie nie przeszkadzało procedurom ładującym dane pod emulatorem, gdyż procedury ładujące dane pod emulatorem miały inne zależności czasowe i one dekodowały sygnał generowany ze strumienia PWMD nieco później, przez co dekodowanie następowało nieco później i to się nawet poprawnie wczytywało.

Co należało więc zrobić… ponownie dokonać konwersji tego bloku, niestety u mnie źródłowy plik .FLAC/.WAV się nie zachował, na szczęście Piguła pozostawiał ten plik w  udostępnionych przez siebie zasobach. Pobrałem plik źródłowy jeszcze raz, wysłuskałem blok który mnie interesował i spróbowałem innego podejścia… początkowo chciałem napisać własny dekoder do tego typu danych jednak po paru eksperymentach z “a8cas-util.pl” udalo się poprawnie zdekodować ten blok danych używając następujących parametrów:

./a8cas-util.pl conv -t lowsil2000 --cksum xor eidolon.blk2.um.wav eidolon.blk2.um.hex

Okazało się że długości impulsów używane w przypadku “Wrocławskiego Turbo 2000” są w miarę zgodne z blokami danych zapisanych w formacie UM, jedynie sposób liczenia sumy kontrolnej się zmienia na XOR. Oczywiście po takiej konwersji kolejność bitów w bajcie jest odwrócona, ale tę sprawę można załatwić dodatkowym skryptem.

Tutaj jeszcze jedna uwaga, Piguła udostępnił zgraną taśmę z próbkowaniem 48KHz (to bardzo dobrze), jednak z jakiegoś powodu a8cas-util, nie radził sobie z tym nagraniem próbkowanym z tą częstotliwością, w tym wypadku konwersja z 48kHz do 44.1kHz pomogła a8cas-util uporać się z dekodowaniem bez najmniejszego problemu.

Pewnie niektórzy z was zastanawiają się po co ja to wszystko opisuje, robię to po to aby opisując swoje doświadczenia zostawić coś w rodzaju poradnika i sposobów postępowania, gdyby ktoś kiedyś zechciał odzyskiwać jakieś nagrania odnaleziona na taśmach.

Wracając do moich zewnętrznych prymitywnych "skrypcików" w python, to ja zdaje sobie sprawę że te wszystkie operacje pewnie dałoby się dopisać do a8cas-util.pl, ale ja kompletnie nie znam się na PERL-u w którym to “a8cas-util.pl” jest napisany. Prościej i szybciej jest mi posługiwać się narzędziami czy językami które znam. A pisanie jednorazowych prymitywnych skryptów przy użyciu chociażby Pythona jest po prostu dla mnie szybsze i efektywniejsze, niźli dłubanie w PERL czy też pisanie tony kodu w C.

Także wracając do głównego wątku, po konwersji tego bloku i porównaniu z AJKOWĄ wersją różnice w plikach występowały tylko i wyłącznie w kodzie loadera, który to czytał z innego portu, w tym momencie mogłem być pewien że blok główny blok danych jest poprawnie zdekodowany. Koniec końców można było przygotować finalne wersje plików .HEX oraz .CAS. Przygotowane pliki sprawdziłem pod zmodyfikowaną przez FUJI-ego wersją atari800 (wsparcie dla systemów turbo). Wszystkie poziomy się wczytują poprawnie zarówno w wersji AST/UM jak i tej przygotowanej przez AJKA. Wspomniane pliki dodaję jako załącznik tego posta i kończę ten jak zwykle przydługi swój wywód.

Miałem napisać jeszcze o dwóch rzeczach… gdy loader gry wykryje błąd to na ekranie pokaże się typowa "atarowska tęcza", po cofnięciu taśmy i wciśnięciu START odczyt zostanie ponowiony. Jeżeli zakończymy grę (ostatni ósmy poziom) to gra będzie chciał wczytać ponownie pierwszy poziom, w tym wypadku należy przewinąć taśmę do tego miejsca, albo przesunąć się w obrazie taśmy w emulatorze do 23 bloku (dane poziomu pierwszego zaczynają się właśnie od tego bloku danych).

Drugą sprawą jest to że zastanawiało mnie dlaczego dwa pierwsze bloki nagrano w formacie UM a resztę niejako w formacie zgodnym AST? (różnica w początkowych tonach sync) … początkowo wydało mi się że zabieg ten był celowy i miał za zadnie chronić przed wczytaniem bloku z grą zamiast danych poziomu (np. gdy użytkownik przewinie taśmę zbyt daleko w tył) … ale nie wiem czy to był rzeczywisty powód zastosowania rekordów w różnych formatach. Być może powodem było coś innego.

W sumie to nie sądziłem że zabawa z tym “The Eidolon” zajmie mi tyle czasu, a po drugie nie sądziłem że mnie to wciągnie na tyle że dociągnę ten temat do końca, sam nie wiem czemu się tak zawziąłem, ale każda kolejna przeszkoda która się pojawiała powodowała że bardziej chciałem sprawę doprowadzić do szczęśliwego finału, tym razem się udało, ale nie wiem czy będę miał jeszcze kiedykolwiek tyle cierpliwości ;)

rzuciłem okiem na twój eidolon hex... no to na pewno nie jest poprawna konwersja niestety, normalnie jest tam 37 albo 38 bloków danych, w Twojej wersji tych bloków występuje chyba 421... tzn. a8cas-util.pl nie bardzo radzi z konwersją nagrań o mizernej jakości, w dodatku bardzo chętnie konwertuje takie pliki pisząc ze wszystko jest OK, tak jak wspominałem wcześniej sprzyja ku temu sposób wyznaczania sumy kontrolnej bloku (XOR) a w dodatku chyba konwerter nie oczekuje tonu synchronizującego o minimalnej długośći przed rozpoczęciem danego bloku danych i ochoczo dzieli wszystko na bloki o mniejszej długości (co jest zachowaniem niepoprawnym).

ace.hex wygląda lepiej a nie przyglądałem mu się zbyt długo, zostawię sobie to na później. Spróbuje też ponownie siąść do tego "the eidolon", ale przydał by się lepszej jakości dump (w sensie zgrany z lepszym ustawieniem głowicy). Ja do takich akcji używam starego prymitywnego decka w którym nie szkoda mi kręcić głowicą jeżeli wiem że źródłowa taśma była nagrana z innym skosem niż "fabryczny".

Coś mi się chyba przypomina że gdzieś wcześniej wrzucałeś pliki tego "the eidolon" w formacie UM? czy się mylę i pamięć płata mi figle?