[#1] IFFChunkTool
Tytułowy program to moja kontrybucja do konkursu Amiga 40 Tools Jam 2025. Pierwsza, ale być może nie jedyna. Program powstał z potrzeby i jest małą pchełką. Mam nieco bardziej ambitny projekt na ten konkurs, ale nie wiem, czy się z nim wyrobię. A ponieważ zgodnie z zasadami konkursu można zgłosić więcej niż jedną pracę, asekuracyjnie zglaszam na razie IFFChunkTool.

Do czego to w ogóle służy? Z plikami IFF zetknął się pewnie każdy amigowiec, z tym, że części z nas mogą się kojarzyć wyłącznie z obrazkami. IFF natomiast to kontener, czyli sposób uporządkowanego przechowywania danych, w blokach zwanych chunkami. IFF może przechowywać zarówno obrazki (IFF ILBM), dźwięki (IFF 8SVX, AIFF), grafikę wektorową (IFF DR2D), teksty (IFF FTXT) i wiele innych. Na przykład pliki zawierające tłumaczenia tekstów do programów (potocznie zwane "lokalami") to również pliki IFF.

IFFChunkTool służy do manipulowania plikami IFF. Jest to polecenie AmigaDOS, czyli operujemy nim z okna poleceń CLI. Pisałem go z myślą do zautomatyzowanego użycia w różnego rodzaju skryptach, ale można też operować ręcznie, chociaż do tego są ZTCP narzędzia z GUI.

Co to potrafi, czy raczej ma potrafić, bo dostępna wersja 0.1 ograniczona jest do dwóch pierwszych z poniższych opcji:
  • Wylistowanie wszystkich chunków w pliku wraz z ich długościami.
  • Zapisanie zawartości wybranego chunka do pliku.
  • Wylistowanie zawartości chunka (tzw. hexdump) w wybranym formacie.
  • Wstawienie chunka w wybranym miejscu, przy czym dane mogą być wczytane z pliku, albo podane bezpośrednio jako argument (krótkie chunki zawierające tekst).
  • Dopisanie chunka na końcu pliku, z danymi jak wyżej.
  • Zastąpienie zawartości chunka nową, z pliku lub z argumentu.
  • Usunięcie chunka z pliku.

Być może jeszcze zdążę dorobić działanie na wielu plikach, plik źródłowy będzie mógł być wzorcem AmigaDOS. Na przykład "obrazki/#?.ilbm".

Program oczywiście będzie darmowy, z otwartymi źródłami na GitHubie. Domyślam się, że IFFChunkTool będzie miał raczej wąski krąg odbiorców, no ale mi się na pewno przyda.
13
[#2] Re: IFFChunkTool

@Krashan, post #1

Super. Brilliance zapisuje sporo ustawień chyba właśnie w osobnym chunku. Czyli będę w stanie go wyodrębnić i zamienić/dodać hurtowo w innych plikach?
1
[#3] Re: IFFChunkTool

@ppill, post #2

Dokładnie tak. Jeżeli zaimplementuję wszystko co planuję, to tak to będzie wyglądać. Przykładowo, masowa zmiana palety w wielu obrazkach na paletę z obrazka wzorcowego:
IFFChunkTool obrazek_z_nowa_paleta.ilbm EXTRACT CMAP DATAFILE paleta.bin
IFFChunkTool ObrazkiDoGry/#?.ilbm REPLACE CMAP DATAFILE paleta.bin
Można jeszcze np. dodać autora obrazków:
IFFChunkTool ObrazkiDoGry/#?.ilbm INSERT AUTH "Gall Anonim"


Ostatnia aktualizacja: 30.05.2025 13:24:42 przez Krashan
2
[#4] Re: IFFChunkTool

@Krashan, post #1

Brawo. Ja lubię format IFF. Miałem kiedyś pomysł, żeby napisać program, który łączy pliki FORM w listy LIST ze wspólnymi chunkami PROP oraz konkatenacje CAT, na potrzeby moich projektów gier.

Na przykład pliki zawierające tłumaczenia tekstów do programów (potocznie zwane "lokalami") to również pliki IFF.

Format IFF jest w Amiga OS używany praktycznie wszędzie. Również pliki preferencji to pliki IFF. Wszystkie pliki zapisywane przez Datatypes też są w formacie IFF. Wszystkie pliki schowka clipboard to też pliki IFF.

O localach to akurat nie wiedziałem.

Ostatnia aktualizacja: 30.05.2025 13:31:58 przez Hexmage960
2
[#5] Re: IFFChunkTool

@Hexmage960, post #4

Miałem kiedyś pomysł, żeby napisać program, który łączy pliki FORM w listy LIST ze wspólnymi chunkami PROP
Taki program napisałem już wcześniej, nazywa się IFFListMaker. Zastosowałem go do budowania pliku z poziomami do gry Untangle. Ten plik jest właśnie typu IFF LIST.
2
[#6] Re: IFFChunkTool

@Krashan, post #5

O, bardzo interesująca informacja. Pobrałem Twój program IFFListMaker, może być przydatny.

Akurat ja rozważałem albo polecenie CLI, bądź program z GUI gadtools, gdzie w ListView można by wyświetlać listę (drzewko) chunków.

Interfejs CLI wygląda bardzo fajnie, i może być używany w skryptach.
[#7] Re: IFFChunkTool

@Krashan, post #1

A tak przy okazji, na razie z czterech zgłoszonych prac, trzy są z Polski. Nasi górą! szeroki uśmiech
1
[#8] Re: IFFChunkTool

@Krashan, post #1

Ty to zawsze masz fajne pomysły. A gdy jeszcze bierzesz się za ich realizację to już jest rewelacja. OK

Gdy się przeczyta Twój opis to aż się człowiek zastanawia dlaczego coś takiego nie powstało wieki temu jako część dokumentacji IFFa. Przecież to byłaby idealna działająca "ilustracja" specyfikacji formatu, który jest całkiem fajnie zorganizowany i w swoich czasach był całkiem nowatorski. Gdy sobie porównuję IFF z różnymi formatami "z epoki" to one przy IFFie często wyglądają jakby je Mieszko I, a najwiżej Bolesław Chrobry tworzył.

Ja już niezbyt często mam styczność z IFF, ale choćby z ciekawości na pewno się pobawię programem rozbebeszając różne wersje IFFa.

O różnych IFFach zawsze się wiedziało, ale przyznam się, że o IFF FTXT nie wiedziałem. Ciekawe czy dałoby się w to wepchnąć teksty UTF-8, UTF-16.
2
[#9] Re: IFFChunkTool

@MDW, post #8

o IFF FTXT nie wiedziałem. Ciekawe czy dałoby się w to wepchnąć teksty UTF-8
Dałoby się i gdy pracujesz pod MorphOS-em, to tego używasz. Otóż IFF FTXT to format w jakim tekst przechowuje clipboard.device. W momencie gdy kopiujesz tekst między dwoma różnymi programami, w CLIPS: zapisywany jest IFF FTXT. W MorphOS-ie programy, które pracują w Unikodzie, zapisują dwa chunki. Standardowy chunk CHRS zawiera tekst w "lokalnej stronie kodowej" (zgodny z klasycznym AmigaOS), a po nim następuje chunk UTF8. W ten sposób zachowano wsteczną kompatybilność. Jeżeli program, do którego wklejasz obsługuje unikod, odczytuje chunk UTF8. Jeżeli to jakaś staroć z klasyka, czyta standardowo chunk CHRS, w którym znaki spoza lokalnej strony kodowej program zapisujący clipa zamienił na znaki zapytania. W drugą stronę, gdy kopiujesz tekst w czymś staroamigowym, a wklejasz np. do FlowStudio, to ten ostatni zauważa brak chunka UTF8, czyta CHRS, konwertuje to (przykładowo) ISO-2 na unikod i wkleja gdzie pan użytkownik kazał.

Inna ciekawostka, DigiBooster Pro 2 i DigiBooster 3 używają "prawie IFF-a", niestety nie wiem czemu autorzy dwójki zmienili nagłówek ze standardowego IFF na "swój", a ja już nie chciałem robić trzody i wprowadzać kolejnego formatu, niemalże identycznego z DBM.

Ostatnia aktualizacja: 30.05.2025 17:06:07 przez Krashan
1
[#10] Re: IFFChunkTool

@Krashan, post #1

O super, co ja się swego czasu namęczyłem z parsowaniem systemowych preferencji, które oczywiście są również w formacie IFF. Twój IFFChunkTool byłby wtedy bardzo pomocny.
I na pewno będzie przeze mnie używany OK
1
[#11] Re: IFFChunkTool

@Krashan, post #9

Ooo, fajnie to jest zorganizowane! Czasem aż przykro się robi, gdy w czasach tych multiplatformowych pseudo-standardów, zapominamy o takich fajnych amigowych rozwiązaniach.

Ciekawostka z DigiBooster 2 też dobra. Zastąpienie nagłówka w formacie DB2 było bardzo dziwne i trochę bez sensu. No ale skoro autorzy dwójki tak skwasili to faktycznie nie bardzo miałeś wybór pisząc DigiBoostera 3. Powrót do czystego IFF-a z punktu widzenia użytkownika rzeczywiście byłby problemem.
1
[#12] Re: IFFChunkTool

@Krashan, post #9

Poczytałem o budowie formatu i jest super, szczególnie że można trzymać różne dane w jednym pliku. Czy istnieje systemowa biblioteka do "parsowania" pliku która ma funkcje typu sprawdz rodzaj chunka, daj mi kolejny lub n-ty chunk.
[#13] Re: IFFChunkTool

@Sventevith, post #12

Czy istnieje systemowa biblioteka do "parsowania" pliku która ma funkcje typu sprawdz rodzaj chunka, daj mi kolejny lub n-ty chunk.
Oczywiście, że istnieje, nazywa się iffparse.library i wchodzi w skład AmigaOS chyba od wersji 2.1. IFFChunkTool również z niej korzysta.
[#14] Re: IFFChunkTool

@Krashan, post #13

Faktycznie lata temu coś takiego widziałem i się zastanawiałem po co to jest :) Ale ja wtedy tylko podstawy AMOSA znałem i niewiele o programowaniu systemowym wiedziałem.

Ostatnia aktualizacja: 31.05.2025 00:40:18 przez Sventevith
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