[#1] taki sobie MultiView...
Witam Szanowną Amigową Brać!

Popełniłem taki programik w Pythonie, bo wkurzało mnie że nie ma porządnego narzędzia do przeglądania plików AmigaGuide, a czasem tam są ciekawe rzeczy i to i owo chciałoby się przeczytać. Są niby jakieś wiekowe aplikacje na Windows ale kulawo działają, więc postanowiłem rozborować temat :)

Jak już parsowanie plików guide wyszło mi jako tako (praktycznie całość poza zmianą czcionek, komendami systemowymi i ARexx) i chyba wygląda dobrze:





to aby było bardziej Amiga feel dorobiłem requester na wzór ReqTools:



Potem postanowiłem zabrać się za inne pliki a apetyt rósł w miarę jedzenia. Dorobiłem więc parser plików ANSI:



Przy okazji wyszedł problem z kodowaniem polskich znaków... to dorobiłem automatyczne rozpoznawanie i poprawnie są wyświetlane znaki kodowane w APL, xJP i ISO, wystarczy otworzyć plik.

Potem przyszła kolej na obrazki, tu na PeeCee jest trochę lepiej niż w przypadku plików guide, ale co tam, więc dorobiłem obsługę IFF, bo to najbardziej amigowy format:





otwiera IFF we wszystkich odmianach, także HAM8, IFF24 i ze zmienną paletą kolorów (chunk CRNG).

Skoro już jest IFF to dlaczego nie inne? Dorobiłem więc najpopularniejsze GIF, PNG, JPEG i BMP. Przy okazji obrazków amigowych trzeba było skalować je odpowiednio, aby zachować aspect, więc obrazki 640x200, 1280x512, 320x480 też są wyświetlane poprawnie:





Skoro już mamy obrazki to czemu nie zrobić obsługi animacji? Na pierwszy ogień poszedł ANIM-5 HAM8, a co!



No i jak tak dobrze idzie do dlaczego nie ma dźwięku? Okazuje się że standard IFF nie opisuje animacji z dźwiękiem (jest dźwięk ale osobno), ale jest standard CDXL, który dźwięk ma! Wiec trochę pogrzebałem i jest obsługa CDXL:



Gra wyświetla wszystko cacy... to może jeszcze obsługa MPEG? To akurat szybko poszło bo nie trzeba przeliczać chunky na planar liczyć klatek delta opcode 5...



zaraz zaraz... ale skoro CDXL ma dźwięk, to może da się go upakować w kontener IFF, razem z animacją w analogiczny sposób? Trochę to trwało (przy okazji powstał konwerter MPEG do CDXL i ANIM), ale w końcu się udało! To może IFF24 też się da upakować? Na początek CDXL bo jest prostszy:



a potem przyszła kolej na ANIM IFF24 z dźwiękiem:



tu jeszcze czeka mnie optymalizacja, bo i ile sprzęt radził sobie z 8 bitplanami (HAM8) to przy 24 bitplanach zaczyna szarpać...

Co wy na to? Ciągnąć to dalej? Program jest robiony metodą best effort, więc jak mam czas to siadam i się relaksuję, i sprawia mi to frajdę.

W planach obsługa innych formatów AIFF, MOD, MED, MP3, OGG, XM... potem może obiekty 3D z Imagine, Lighwave... Całość jest robiona jako ciekawostka. Być może zgłoszę do Hyperionu propozycję ustandaryzowania w IFF animacji z dźwiękiem, bo skoro działa to dlaczego ma to nie być ustandaryzowane?

Przerabianie animacji na format CDXL czy ANIM nie ma praktycznego sensu. Z pięciominutowego teledysku w pliku MPEG 90MB robi się plik 1,5GB, a w przypadku IFF24 3GB. Program jednak nie do tego był stworzony, miał wyświetlać pliki AmigaGuide, a że przy okazji wyświetla co tylko się da, to chyba lepiej?

Co o tym sądzicie? Warto ciągnąć ten projekt? Jak ktoś chętny do potestowania to mogę wystawić skompilowaną wersję, wymagana czcionka DejaVu Sans, w każdym linuksie jest, trzeba będzie też doinstalować biblioteki, z których korzysta: tkinter, bisect, threading, numpy, numba, torch... może za daleko pojechałem :)

AmigaRulez!

PS. Cały czas mnie zadziwia jak C= i EA wyprzedzili swoje czasy projektujać hardware Amigi i opisując standard IFF. Jest tam totalnie wszystko, łącznie z grafiką 3D, czcionkami wektorowymi im bardziej się tam zagłębiałem ryjąc specyfikacje, tym bardziej byłem pod wrażeniem. Gdzie byłby dzisiejszy świat, gdyby C= nie zbankrutowało? Inżynierów mieli najlepszych jakich można było wtedy mieć, ale zarząd był do dupy.

[update]
tak wygląda video w formacie amigowym (HAM8, 22kHz streo), konwersja na HAM8 z pogłębioną analizą pixeli sąsiednich + dithering Floyda-Steinberga, wygląda prawie jak tue color :)



ANIM-5 IFF24 z AIFF 44kHz rozpracowane! Klatka DLTA u mnie (AMD Ryzen 7 7735HS) renderuje się w 3ms!

Ostatnia aktualizacja: 11.07.2026 19:04:18 przez rpi

prawie skończona obsługa plików audio:



na tą chwilę obsługuje IFF 8SVX, AIFF, AIFF-C, OGG, MP3, MP2, AC3, AAC, WAV ok, racja




Dodano obsługę odtwarzania plików MOD




Pliki nieobsługiwane są wyświetlane w taki sposób


Ostatnia aktualizacja: 02.08.2026 21:49:56 przez rpi
17
[#2] Re: taki sobie MultiView...

@rpi, post #1

Gdzie byłby dzisiejszy świat, gdyby C= nie zbankrutowało?

Pewnie byłby w dokładnie tym samym miejscu co teraz. Niestety Microsoft podeptał wszystko co było wcześniej, cofnął swoim crapowatym softem rozwój informatyki o 10 lat. Świat zaczął odkrywać na nowo to co dawno było odkryte. Ale tym razem na wiodącej platformie.

A tak bardziej w temacie posta…

Nieźle się zagalopowałeś z tym programem. Zaczęło się na AmigaGuide, a dotarło do… właściwie teraz to już trudno powiedzieć. Skojarzenie z MultiView jest bardzo dobre. Tylko określenie „taki sobie” jest trochę krzywdzące. Nie wygląda na „taki sobie” tylko kupę roboty. 😀

Tak się zastanawiam. Skoro pod MorphOS mamy od niedawna pełną, wersję całkiem współczesnej wersji Pythona 3.14, która nawet pozwala doinstalować sporo bibliotek (pip install) to może ten program zadziała?

Ostatnia aktualizacja: 11.07.2026 12:59:34 przez MDW
3
[#3] Re: taki sobie MultiView...

@MDW, post #2

Tuż po mojej przesiadce na PC ponad 20 lat temu znalazłem programik do amiguide na PC, i działał bez zarzutu. Ale od paru lat tak rzadko go używałem że nie pamiętam jego nazwy, został na poprzednim lapku. :)
1
[#4] Re: taki sobie MultiView...

@MDW, post #2

Sprawdź link uruchamiasz python amigaguide.pyz jak masz wersję 3.14 powinno działać.
1
[#5] Re: taki sobie MultiView...

@MDW, post #2

w Pythonie zainstalowane musisz mieć:
pip install Pillow numpy pygame
oraz w systemie pakiety python-tk (pakie tkinter jest częścią Pythona ale ma zależności systemowe), ffmpeg, ffprobe (obsłga mpeg) nie wiem czy są w MorphOS
1
[#6] Re: taki sobie MultiView...

@ZorrO, post #3

Jest, próbowałem, ale działa strasznie kulawo. Może połowę standardu łapie ale jak masz bardziej skomplikowane rzeczy to krzaki wychodzą albo nic. Dlatego ten program powstał szeroki uśmiech
1
[#7] Re: taki sobie MultiView...

@rpi, post #4

Tego potrzeba dla pc. Super! Będzie działało na Linuxie?
Może dodasz obsługę ikon?
[#8] Re: taki sobie MultiView...

@x01, post #7

Działa na Linux, nie mam Windows
1
[#9] Re: taki sobie MultiView...

@x01, post #7

Co masz na myśli "dodasz obsłgę ikon"? Ikonki ma wyświetlać?
[#10] Re: taki sobie MultiView...

@rpi, post #9

Jeżeli jest taka możliwość. Jak coś przerzucałem pod Linuxem to zawsze mnie denerwowało, że nie ma jak podejrzeć jak wygląda plik ikony do programu. Jedyne wyjście to uruchomić emulator albo jest jeszcze jakiś javascript, który potrafi wyświetlić ikonę (chyba konwertuje na PNG) ale mamo wygodne.
[#11] Re: taki sobie MultiView...

@ZorrO, post #3

No niezła masakra amigi uzywać do 2006 roku, chyba musiałbym być na rencie
[#12] Re: taki sobie MultiView...

@x01, post #10

oki, dopiszę do listy :) rozumiem że robimy wszystko co się rusza, zwykłe ikony, NewIcons, GlowIcons, PNGIcons... ma być pokazana ikona i ikona wciśnięta + to co jest w tooltypach? Jakieś propozycje jak to sensownie pokazać na GUI? Czy robić tak, jak Hyperion wymyślił:

1
[#13] Re: taki sobie MultiView...

@rpi, post #6

Polskie znaki można przekonwertować i nie ma krzaków. :)
[#14] Re: taki sobie MultiView...

@ZorrO, post #13

nie chodziło o ogonki, ascii art się rozjeżdżał, niektóre tagi w ogóle nie były obslugiwane, nikt tego już nie poprawiał i nie rozwijał
[#15] Re: taki sobie MultiView...

@rpi, post #12

To już raczej zależy od tego co Ci w duszy gra i jaki masz pomysł. Ja myślałem o zwykłym wyświetleniu dwóch stanów i tyle.
[#16] Re: taki sobie MultiView...

@rpi, post #1

O kurcze - ale fajna przeglądarka. Ja wczoraj coś podobnego popełniłem ale tylko do AmigaGuide.

Dziergam sobie klona DOpus4 w Pythongu i było mi potrzebne na szybkości coś co można samodzielnie poprzwiać:


Nie wiem czy zdołam ukończyć projekt. W założeniu ma być prawie 100% odwzorowaniem oryginału ale bez kilku specyficznych dla AmigaOS.
  • ekrany czy ograniczona paleta kolorów - to odpada z wiadomych przyczyn - zamiennik w postaci trybu FullScreen;
  • obsługa ikon to max edycja toltypów (może będzie przydatne na wspólnym folderze w WinUAE), może jakieś proste tworzenie ikon (kopiowanie z gotowych szablonów def_*.info);
  • assigny zaimplementowane poprzez wewnętrzną listę
  • mam w planach obsługę Arexx przez port Rexxa - Regina - jeśli się nie uda to może skryptowanie w Py;

Z amigowych smaczków to robię dzisiaj implementację komentarzy do plików.
[#17] Re: taki sobie MultiView...

@rpi, post #1

Łooo masz rozmach... Wychodzi na to że mamy podobne hobby

Mnie osobiście standardowy requester plików z Win denerwuje - zwłaszcza to, że okienko otwiera się małe i nigdy nie trzyma pozycji i rozmiaru jaki się pozostawiło.

Tak też zrobiłem sobie do jednego z projektów requestery bazując na reqtools. Odwzorowałem sobie API z reqtools (tak na oko aple pod Pythona). Jest komplet klasycznych requesterów plus imitacja Guru Mediation. Dorobię jeszcze wybieraczkę kolorów z imitacją ColorWheel. Wybieraczka ekranów odpada z wiadomych przyczyn.


[#18] Re: taki sobie MultiView...

@rpi, post #6

Też używałem tego starego podglądacza do AmigaGuide ale tak jak napisałeś - jest do luftu.
Dobrą przeglądarkę zrobiono też w JS - https://taws.ch/WB.html?wbrun=WhatIFF:WhatIFF5.20/WhatIFF-Issue-5.20.guide
[#19] Re: taki sobie MultiView...

@radekcz, post #16

Fajny klon Opusa szeroki uśmiech Co do AmigaGuide, to u siebie mam praktycznie cały stadard: wszystkie global commands i node command poza FONT z wiadomych względów, atribute commands wszystkie poza komendami systemowymi i ARexx. Też myślałem czy jakoś Rexxa nie zaimplementować ale on najczęściej korzysta też z komend systemowych, więc dałem sobie spokój i zacząłem grzebać w obrazkach i animacjach.
1
[#20] Re: taki sobie MultiView...

@radekcz, post #18

taws.ch to nie przeglądarka, to emulator AmigaOS w JavaScript :) Świetny jest, to fakt.
[#21] Re: taki sobie MultiView...

@rpi, post #5

Działa pod Windows Odtwarza animacje ANIM, pliki .guide i .iff bez problemów. Fajny patent przy przeglądaniu obrazków - nie trzeba jak w MultiView otwierać każdy z osobna tylko nawiguje się strzałeczkami.
1
[#22] Re: taki sobie MultiView...

@radekcz, post #21

Super! niedługo wystawię nową wersję z poprawkami skalowania obrazków IFF, aby proporcje były prawidłowe, jest też poprawione kilka mniejszych bugów.
1
[#23] Re: taki sobie MultiView...

@radekcz, post #16

Dziergam sobie klona DOpus4 w Pythongu

Jeśli chodzi o klona DOpus4 to polecam Worker. Najbardziej kompletny klon.
[#24] Re: taki sobie MultiView...

@QkiZ, post #23

...ale tylko pod Linux/BSD.
[#25] Re: taki sobie MultiView...

@radekcz, post #24

a to źle? kodowanie czegokolwiek pod windows to masochizm
2
[#26] Re: taki sobie MultiView...

@radekcz, post #17

Fajny bajer z tym guru, może sobie też taki zrobię, będzie jęczał że nieobsługiwany format czy cóś w tym stylu OK
1
[#27] Re: taki sobie MultiView...

@rpi, post #1

Wygląda świetnie! A jakiś link do pobrania aplikacji?
[#28] Re: taki sobie MultiView...

@x01, post #27

Jeszcze się robi, jak skończę to wystawię gdzieś, obecnie mogę wersję testową na Linuksa wystawić. Wymagany Python 3.14
[#29] Re: taki sobie MultiView...

@x01, post #27

Wersja do testów https://drive.google.com/file/d/1qFqwyU0UE6ms-ZGtBdfwlIC5ictiCEaz/view?usp=sharing może zawierać drobne błędy. Uwagi mile widziane OK Wymagania: Linux x64, czcionka DevaVu Sans Mono, Python 3.14 (pakiety numpy, Pillow, numba, pygame, tkinterdnd2) oraz ffmpeg i ffprobe.

Instalacja: skopiować do /usr/local/bin i nadać atrybut x (chmod +x)

Dokumentacji jeszcze nie ma, więc w skrócie - najważniejsze skróty klawiszowe:
'a' przełącznik aspektu z 4:3 na 16:9
'p' zmiana na PAL (domyślnie) bo niektóre obrazki IFF nie mają chunk CAMG
'n' zmiana na NTSC j.w.
'spacja' przełącznik play/pause
'f' przełącznik na tryb pełnoekranowy i
strzałki lewo/prawo - przewijanie przód tył po klatce/ticku/kolorze (obrazki IFF z CRNG)

Obsługiwane formaty:
- pliki amigaguide
- pliki tekstowe (także z kodami ANSI) z automatycznym rozpoznawaniem kodowania xJP, APL, ISO
- pliki graficzne IFF, PNG, GIF, JPEG, BMP
- animacje ANIM5, CDXL, MP4, MKV, MPEG
- pliki audio IFF (8SVX, AIFF), MP2, MP3, AAC
- pliki mod (kompatybilność z Protracker 2.3f)
- pliki inne są wyświetlane jako hexedit

Pliki można otwierać podając jako parametr do programu, za pomocą requestera lub przeciągając myszą na okno programu
1
[#30] Re: taki sobie MultiView...

@rpi, post #29

mały bonus mpeg2amiga: https://drive.google.com/file/d/18F33CHKMJ8zxufEPP35DNbIuR5jPuFU8/view?usp=sharing to jest konwerter mp4/mkv/mpg na formaty amigowe. Pozwala zrobić ANIM5 z dźwiękiem.

mpeg2amiga - Konwerter wideo MPEG -> Amiga CDXL lub IFF ANIM (HAM8/HAM6/256/EHB/24bit)

Użycie:
mpeg2amiga -CDXL plik.mpeg [opcje] -> plik.cdxl
mpeg2amiga -ANIM plik.mpeg [opcje] -> plik.anim
mpeg2amiga -help -> wypisuje ten opis i kończy działanie

Tryby koloru (opcjonalne, domyślnie -HAM8):
-HAM8 : Tryb HAM8 (AGA), paleta bazowa 64 kolorów, 8 bitplanes (domyślny)
-HAM6 : Tryb HAM6 (OCS/ECS/AGA), paleta bazowa 16 kolorów, 6 bitplanes
-256 : Tryb standardowy 256 kolorów (AGA indexed), 8 bitplanes
-EHB : Tryb Extra Half Brite (OCS/ECS/AGA), 32 kolory bazowe + 32 półtony, 6 bitplanes
-24bit : Tryb pełnego koloru 24-bit (RTG), 24 bitplanes

Rozdzielczość pozioma (opcjonalna, domyślnie -HIRES):
-HIRES : Rozdzielczość HIRES (640px szerokości) - domyślna.
-LORES : Rozdzielczość LORES (320px szerokości).
-SUPERHIRES : Rozdzielczość SUPERHIRES (1280px szerokości, wymaga ECS/AGA).
Żadna z powyższych sama w sobie NIE wpływa na przeplot/wysokość
zapisywanych klatek - o tym decyduje wyłącznie -LACED/-NOLACED
poniżej. Można więc dowolnie łączyć: -HIRES -LACED,
-HIRES -NOLACED, -LORES -LACED, -LORES -NOLACED,
-SUPERHIRES -LACED, -SUPERHIRES -NOLACED.

Przeplot / rozdzielczość pionowa (opcjonalna, domyślnie -LACED):
-LACED : Klatki zapisywane z przeplotem (patrz CAMG_LACE w
write_anim) - domyślne. Daje 2x więcej zapisanej
rozdzielczości pionowej (ostrzejszy obraz) przy tych
samych docelowych proporcjach wyświetlania.
-NOLACED : Klatki zapisywane bez przeplotu.

Standard telewizyjny (opcjonalny, domyślnie -PAL):
-PAL : Standard PAL (25 fps, ekran HIRES 640x256 dla proporcji 4:3) - domyślny
-NTSC : Standard NTSC (29.97/30 fps, ekran HIRES 640x200 dla proporcji 4:3)
Wpływa na zapisywany chunk CAMG (bity HIRES + monitor ID PAL/NTSC) oraz na wysokość
zapisywanych klatek — tak, by obraz odtworzył oryginalne proporcje źródłowego wideo,
a nie został dodatkowo zniekształcony przez niekwadratowe piksele Amigi.

Opcje dźwięku (opcjonalne):
-8SVX : Zapisuje dźwięk w formacie 8SVX (domyślny dla ANIM)
-AIFF : Zapisuje dźwięk w formacie AIFF (dla ANIM)
-F<n> : Częstotliwość próbkowania w kHz (np. -F11, -F22, -F44, domyślnie F22)
-MONO : Wymusza dźwięk mono zamiast domyślnego stereo (dotyczy -8SVX/-AIFF)

Opcje klatek delta (tylko dla -ANIM):
-DLTA : Klatki animacji zapisywane jako klatki delta (op5, kodowanie
różnicowe względem poprzedniej klatki) zamiast pełnych obrazów
(BODY) dla każdej klatki. TYLKO pierwsza klatka animacji jest
klatka kluczowa (pełny obraz) - w środku animacji NIE ma
dodatkowych klatek kluczowych (kodowanie delty opiera się na
tradycyjnym schemacie podwójnego buforowania Amigi, który
wymaga dokładnie jednej klatki kluczowej na początku - wstawienie
kolejnych w środku psułoby ten schemat i powodowałoby zakłócenia
obrazu przy odtwarzaniu). Znacząco zmniejsza rozmiar pliku .anim
kosztem czasu kodowania i odtwarzania (dekompresja delty przy
każdej klatce). Domyślnie wyłączone - każda klatka jest
zapisywana jako pełny obraz.

Opcje -NOVIDEO / -NOSOUND (tylko dla -ANIM, wzajemnie wykluczające się):
-NOVIDEO : Nie zapisuje klatek obrazu - zapisywany jest WYŁĄCZNIE dźwięk,
jako samodzielny plik IFF (8SVX lub AIFF, zależnie od -8SVX/
-AIFF) zamiast pliku .anim. Pomija dekodowanie wideo i
budowanie palety - przetwarzana jest wyłącznie ścieżka
dźwiękowa.
-NOSOUND : Nie dołącza dźwięku do pliku ANIM - zapisywana jest WYŁĄCZNIE
animacja (same klatki obrazu, bez chunków dźwiękowych).
Pomija ekstrakcję dźwięku ze źródła.

Wymagania:
- ffmpeg / ffprobe w PATH
- numpy, Pillow, tqdm (pip install numpy pillow tqdm --break-system-packages)
2
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem