[#1] Animacje Westwood Studios w formacie ANIM
Hej,

Od pewnego czasu pracowałem nad odtwarzaniem animacji w formacie WSA (są to duże animacje z gier Westwood Studios, jak Dune 2) na Amidze.

Udało mi się opracować program do konwersji z formatu WSA bezpośrednio do formatu IFF ANIM.

Dzięki trzymaniu się standardu ANIM, jest możliwa również edycja tych animacji np. w DPaincie.

Poniżej zrzut ekranu z DPainta, z wczytaną animacją.

Przykładowe animacje do pobrania:

https://coreprogramming.pl/Anim/Fartr.ANIM
https://coreprogramming.pl/Anim/Intro3.ANIM
https://coreprogramming.pl/Anim/Intro8a.ANIM

Animacje są w 256 kolorach.

Nota: Po konwersji moim programem, Deluxe Paint wczytuje je jako animacje 50 FPS, mimo że chcę je ustawić na 10 FPS, jak jest odtwarzane w oryginale. Dokonuję tej zmiany ręcznie - udostępnione pliki mają już to ustawione.

Staram się jeszcze dociec jak ustawić nagłówek, by DPaint akceptował czas odtwarzania klatki animacji zapisany w nagłówku animacji ANHD.

Mała uwaga: proszę nie ładować animacji do programu MultiView na osobnym ekranie. Jest chyba jakiś bug w Datatype ANIM, który zaobserwowałem już dawno temu.

Niedługo postaram się udostępnić pozostałe pliki z animacjami. Jest ich dość sporo.

Mój konwerter nie obsługuje jeszcze w pełni animacji wieloplikowych WSA. Animacje zapętlone zdają się działać poprawnie.

Pozdrawiam.





Ostatnia aktualizacja: 25.05.2026 08:47:28 przez Hexmage960
10
[#2] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #1

A w kodzie opendune takie rzeczy nie zostały już rozszyfrowane?
[#3] Re: Animacje Westwood Studios w formacie ANIM

@Mirq, post #2

A w kodzie opendune takie rzeczy nie zostały już rozszyfrowane?

Tak, format WSA został już rozszyfrowany i powstało na pewno wiele implementacji procedury rozpakowującej w językach programowania.

Tutaj owocem mojej pracy jest to, że animacje są skonwertowane do standardu IFF ANIM, najbardziej popularnego na Amidze. Animacja jest odtwarzana z pełną płynnością nawet na 020/030.

Oznacza to, że można ją odtwarzać w programach typu "ShowANIM", "PlayANIM" czy właśnie Deluxe Paint. Przynajmniej takich, które wspierają kompresję typu 5 (Byte Vertical Delta mode), której tutaj użyłem.

Oryginalna animacja jest w formacie Chunky łącznie z tzw. Deltą (różnicą między klatkami) i ja zapisuję ją do Planar w trakcie konwersji.

Ostatnia aktualizacja: 25.05.2026 09:26:23 przez Hexmage960
2
[#4] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #1

Speed zależy od wersji DPainta. Generalnie DPaint używa stałej prędkości i zapisuje speed do chunku DPAN ignorując zapisy w ANHD. Wczesne DP3 mają buga, tam speed zawsze jest równy 0 (plus błędne animbrushe). DP5 ma 2 tryby, stałe fps i zmienne fps. Jednak jego ANHD jest specyficzny i jako jedyny ze wszystkich programów zapisuje go pod siebie (używa pad1=$80 i $81). Jako jedyny zapisuje też czas abstime.
1
[#5] Re: Animacje Westwood Studios w formacie ANIM

@cholok, post #4

Speed zależy od wersji DPainta. Generalnie DPaint używa stałej prędkości i zapisuje speed do chunku DPAN ignorując zapisy w ANHD.

Tak, dzięki za informację. Już spostrzegłem, że Deluxe Paint ma wybór pomiędzy czasem ogólnym (Global) i uwzględnieniem czasu poszczególnych klatek (Vary by frame). A są tu jeszcze dodatkowe opcje. Czasu globalnego raczej nie da się zmienić z poziomu nagłówka ANHD (tylko, tak jak piszesz, przechowane jest to w prywatnym chunku, bądź ustawieniach DPainta).

Jednakże DPaint wczytuje poprawnie prędkość klatek z moich ANHD. Tylko trzeba przestawić czas w ustawieniach prędkości animacji z globalnego na pobrany z klatek animacji. Wtedy jest OK.

DP5 ma 2 tryby, stałe fps i zmienne fps. Jednak jego ANHD jest specyficzny i jako jedyny ze wszystkich programów zapisuje go pod siebie (używa pad1=$80 i $81). Jako jedyny zapisuje też czas abstime.

Tak, analizując plik ANIM zapisany przez DPaint zauważyłem, że używa nieudokumentowanego ósmego bitu opcji (udokumentowane są tylko bity 0-5).

Dodam, że wcześniej próbowałem metod kompresji 0 i 1 (tzw. Direct i XOR), ze względu na prostotę ale DPaint raczej ich nie obsługuje, bo wczytywał tylko pierwszą klatkę.

Troszkę poszperałem na Aminecie i dyskach Fisha, żeby ustalić parę kwestii, w tym kompresję typu 5. Generowanie klatek poszło już wcześniej bez problemów - więcej czasu zajęła mi konwersja Delty.

Działa to OK, bo udało się już skonwertować szereg plików WSA i są prawidłowo odtwarzane w DPaincie.

Ostatnia aktualizacja: 25.05.2026 10:47:17 przez Hexmage960
[#6] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #5

Jednakże DPaint wczytuje poprawnie prędkość klatek z moich ANHD. Tylko trzeba przestawić czas w ustawieniach prędkości animacji z globalnego na pobrany z klatek animacji. Wtedy jest OK.

Czyli jest niepoprawnie, skoro trzeba korygować.

Tak, analizując plik ANIM zapisany przez DPaint zauważyłem, że używa nieudokumentowanego ósmego bitu opcji (udokumentowane są tylko bity 0-5).

To nie jest bit opcji tylko w miejscu typu pad.

Dodam, że wcześniej próbowałem metod kompresji 0 i 1 (tzw. Direct i XOR), ze względu na prostotę ale DPaint raczej ich nie obsługuje, bo wczytywał tylko pierwszą klatkę.

Metody 0 i 1 w rzeczywistości nie istnieją, były one używane przez wewnętrzne programy Sparty (twórcy formatu). Mają wartość historyczną, nawet najstarszy publiczny showanim (od Sparty) nie odtwarza tych kodów.
[#7] Re: Animacje Westwood Studios w formacie ANIM

@cholok, post #6

Czyli jest niepoprawnie, skoro trzeba korygować.

Ale to wygląda na globalne ustawienie Deluxe Painta. Raz ustawiwszy działa cały czas OK.

To nie jest bit opcji tylko w miejscu typu pad.

Słusznie. Nie uwzględniłem bajtu interleave.

Metody 0 i 1 w rzeczywistości nie istnieją, były one używane przez wewnętrzne programy Sparty (twórcy formatu). Mają wartość historyczną, nawet najstarszy publiczny showanim (od Sparty) nie odtwarza tych kodów.

To bardzo ciekawe.

Ostatnia aktualizacja: 25.05.2026 11:50:22 przez Hexmage960
[#8] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #7

Ale to wygląda na globalne ustawienie Deluxe Painta. Raz ustawiwszy działa cały czas OK.

Nie. Wartość jest odczytywana z chunku DPAN.
[#9] Re: Animacje Westwood Studios w formacie ANIM

@cholok, post #8

Nie. Wartość jest odczytywana z chunku DPAN.

Dziękuję za wskazówki. No więc z tego co widzę ten chunk jest dosyć prosty i zawiera tylko wersję, liczbę klatek w animacji i właśnie ten globalny wskaźnik FPS. Więc dam radę go zapisać.

Z nowości mój konwerter obsługuje już wieloplikowe WSA, tworząc odrębne pliki z poprawnymi animacjami.

Jeśli zaś chodzi o animacje zapętlone, to wiem, że trzeba na końcu dać dwie dodatkowe Delty do pierwszej i drugiej klatki. W pliku WSA jest taka Delta jako dodatkowa klatka (której jeszcze nie wczytuję).

Wygląda jednak na to, że DPaint radzi sobie z takimi plikami i chyba automatycznie tworzy te Delty.

Z tego co doczytałem, to DPaint dekoduje tylko kompresję typu 5 i 7.

Dlatego nie udostępniam konwertera, czy innego programu który czyta WSA, bo mimo że mój konwerter wykrywa niepoprawnie skompresowane pliki, format WSA jest dość trudny w walidacji (sprawdzeniu czy plik jest właściwy). Dlatego uznałem, że ANIM będzie lepsze do dystrybucji.

Wrzucę wszystkie animacje z gry w ANIM z dołączonym playerem w postaci archiwum LhA. Już skonwertowałem kilkanaście plików. Póki co możecie wgrać te pliczki które udostępniłem w poście nr 1.

Po szperaniu na Aminecie i testowaniu, udało się znaleźć kilka fajnych playerów (obok znakomitego Deluxe Painta):

Polecam np. ten: https://aminet.net/package/gfx/show/BigAnim40 Działa znakomicie.

Postaram się dodać ten chunk DPAN.

P.S. Dorobienie własnego playera też jest możliwe, a dodatkowo spełni to moje wymagania odnośnie takiego programu, więc to rozważę.



Ostatnia aktualizacja: 25.05.2026 19:03:20 przez Hexmage960
1
[#10] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #9

DPaint5 odczytuje anim5 i anim8, nie odczytuje anim7. Tworzy zawsze zapętlone animacje.
[#11] Re: Animacje Westwood Studios w formacie ANIM

@cholok, post #10

Dodałem generowanie klatek używanych przy animacjach zapętlonych zgodnie ze standardem.

Jednakże wygląda na to, że Deluxe Paint i Personal Paint dodają sobie te klatki wewnętrznie, więc są zbyteczne w przypadku tych programów, a ponadto otrzymamy dwie zduplikowane klatki. Nie jest to jednak nic złego, a inne playery, które nie generują takich dodatkowych klatek, odtworzą pętle prawidłowo.

Obejrzałem animacje w Personal Paincie i jest OK. Napisałem skrypt komendą LIST by skonwertować zbiorczo ok. 60 animacji. Są to wszystkie animacje z gry oprócz animacji końcowych.

Chciałbym wrzucić archiwum dopiero jak ustalę jakiś dobry player, ew. dopiszę własny. BigAnim sprawuje się wyśmienicie ale odtwarza wszystkie animacje zakładając że są w pętli (a nie wszystkie są, np. intro).

Prawdopodobnie dodam te zapętlenia do wszystkich animacji, bo ten BigAnim jest znakomity.

Przygotowałem też ikonkę, żeby można było wygodnie uruchamiać poszczególne animacje (załączę ją do archiwum).

Występują też animacje jednoklatkowe WSA, czyli obrazki, których nie ma potrzeby animować. Te zapewne warto skonwertować do ILBM.

Tutaj możecie sobie potestować kilka animacji:

https://coreprogramming.pl/Anim/fhark.anim
https://coreprogramming.pl/Anim/fordos.anim
https://coreprogramming.pl/Anim/intro4.anim
https://coreprogramming.pl/Anim/intro5.anim

Poniżej mała galeria z PPainta, do którego wczytałem pliki ANIM:






Ostatnia aktualizacja: 27.05.2026 00:52:27 przez Hexmage960
6
[#12] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #11

Kilka uwag do chunku ANHD:
Wstawiasz maskę $FF, a większość programów ustawia 0 za wyjątkiem Adpro/AWorks. Wartość ta i tak jest ignorowana, podobnie jak wymiary, które też często są zerowane.

Ustawiasz abstime identycznie jak reltime co jest błędem. Wartość ta jest również jest ignorowana, ale zobacz jak to robi DP5, najlepiej jest wyzerować. W zasadzie jedynym programem , który korzysta z abstime jest stary Animotion, używa abstime, aby ustalić czas dla pierwszej ramki, bo stare programy nie zapisywały chunku ANHD dla pierwszej ramki. DP5 zapisuje abstime, ale zapewne nie korzysta. Cała reszta zeruje.

Odnośnie zapętleń:
Nie ma możliwości sprawdzenia czy animacja jest zapętlona czy nie. Same programy ustalają czy są zapętlone czy nie. Dlatego DPaint wprowadził chunk DPAN, którego zapis informuje o zapętleniu. Biganim jednak nie czyta DPAN.

Zawsze zapętlone animacje: Brilliance, DPaint, Scala
Zawsze niezapętlone animacje: PPaint, ADPro, Wildfire
Wybór użytkownika: AnimWorks, MainActor
1
[#13] Re: Animacje Westwood Studios w formacie ANIM

@cholok, post #12

Jako, że Deluxe Paint jest edytorem do grafiki i animacji on przelicza sobie klatki za każdym razem, czyli generuje Deltę na nowo. Wiadome, bo każdą klatkę możemy sobie zmieniać w dowolny sposób.

Przy odczycie z utworzonego przeze mnie pliku ANIM, który nie ma chunku DPAN, zakłada globalny wskaźnik 50 FPS.

Wygląda na to, że (niezależnie od obecności DPAN) Delty zapętleń dodaje sobie wewnętrznie, tzn. nie dodaje explicite nowych klatek animacji do pliku. Myślę, że to rozsądnie, mimo że jak animacja ma "wbudowaną" pętlę, dwie końcowe klatki są odtwarzane dwa razy.

Ponadto ma też tryb Play ping-pong, więc musi przygotować odwracanie animacji. Być może robi to za pomocą operacji logicznej XOR, dzięki której funkcja Delty jest odwracalna.

Zauważyłem, że Personal Paint 6.4 otwiera ekran o rozmiarze animacji, co tutaj jest błędem, bo animacje nie zajmują całego ekranu. PPaint 7.1 otwiera pełny ekran. PPaint 6.4 dla animacji zapisanych pod DPaintem otwiera prawidłowo pełny ekran.

Kilka uwag do chunku ANHD:
Wstawiasz maskę $FF, a większość programów ustawia 0 za wyjątkiem Adpro/AWorks. Wartość ta i tak jest ignorowana, podobnie jak wymiary, które też często są zerowane.

OK, jak przeczytałem w dokumentacji do ANHD, ten parametr maski, jak również pozycja i rozmiar Delty są używane tylko przez historyczną metodę kompresji nr 1, czyli XOR. Mimo to wpisałem tu "dla porządku" $FF, pozycję na 0,0 zaś rozmiar na rozmiar obrazu z BMHD.

Ustawiasz abstime identycznie jak reltime co jest błędem. Wartość ta jest również jest ignorowana, ale zobacz jak to robi DP5, najlepiej jest wyzerować. W zasadzie jedynym programem , który korzysta z abstime jest stary Animotion, używa abstime, aby ustalić czas dla pierwszej ramki, bo stare programy nie zapisywały chunku ANHD dla pierwszej ramki. DP5 zapisuje abstime, ale zapewne nie korzysta. Cała reszta zeruje.

Dobrze, być może dobrą praktyką będzie ustawić abstime na zero. W dokumentacji jest napisane, że ta wartość nie jest używana. Wydaje mi się, że to w pliku ANIM z Deluxe Paint zaobserwowałem, że abstime i reltime są ustawione na tę samą wartość (co Twoje słowa potwierdzają) i dlatego też tak zrobiłem.

Utworzone przeze mnie pliki ANIM są zgodne ze standardem w takim stopniu, że DPaint (testowałem na wersji 5), BigAnim (animacje z dodaną pętlą), oraz PPaint 7.1 wczytują i odtwarzają je prawidłowo.

Niuanse co do dodawania, bądź nie dodawania własnego zapętlenia nie stanowią problemu. Jak te klatki są, to np. BigAnim odtworzy je prawidłowo. Zaś w Personal Paint i Deluxe Paint możemy sobie te dwie końcowe, powtórzone klatki, utworzone przez mój konwerter, usunąć.

Natomiast nie każdy ma DPainta czy PPainta, a chciałbym by łatwo dało się animacje obejrzeć.

Ostatnia aktualizacja: 27.05.2026 15:11:46 przez Hexmage960
1
[#14] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #13

Mega robota! Obudziłeś moje najpiękniejsze amigowe graczowe wspomnienia :)
[#15] Re: Animacje Westwood Studios w formacie ANIM

@aMifan, post #14

Dziękuję. Tak, gra jest wybitna i mimo sterowania pojedynczymi jednostkami, może wciągnąć. Bardzo podobało mi się jak z każdą misją dostajesz dostęp do coraz lepszych technologii, budynków, jednostek itp.

Uzupełniłem swój konwerter o kilka parametrów, dzięki którym sobie dostosuję pliki wynikowe. Zobaczę, czy warto uzupełnić go o te kilka rzeczy które zapisuje Deluxe Paint w swoich plikach ANIM. Chodzi o parametry z menu "Set Frame Rate". Nie koliduje to z niczym, ale są to "nieoficjalne" atrybuty.

Ustaliłem (również na podstawie tego co napisał Cholok), że:

- W chunku ANHD w niewykorzystywanym polu "pad" jest liczba $80 lub $81 i wygląda na to, że bit 0 kontroluje przełącznik prędkości animacji (globalna i zależna od klatki).

- W chunku DPAN jest wstawiana ta prędkość globalna w FPS (np. 50). Ten chunk przechowuje też liczbę klatek.

- Deluxe Paint odczytuje prędkości poszczególnych klatek w ANHD zgodnie ze standardem. W menu "Set Frame Rate" pozwala je zmieniać.

Te ustalenia wyglądają na kompletne.

Te wspomniane parametry, to:

SCREEN - zapisuje animację na całym ekranie,
LOOP - zapisuje klatki pętli,
DPAN - zapisuje dane dla DPainta.

Ostatnia aktualizacja: 27.05.2026 22:49:17 przez Hexmage960
[#16] Re: Animacje Westwood Studios w formacie ANIM

@Hexmage960, post #15

Udostępniam całą paczkę animacji w formacie ANIM z gry Dune II (wersja PC VGA, 256 kolorów) od Westwood Studios w postaci archiwum LHA.

Można dogodnie obejrzeć animacje robiąc dwu-klik na ikonce. Uruchomi się player "BigAnim", autorstwa Christera Sundina.

Wszystkie animacje są zapętlone, tzn. dwie ostatnie klatki są identyczne jak dwie pierwsze. Jest to w zgodzie ze standardem. W przypadku załadowania do Deluxe Paint można uciąć dwie ostatnie klatki, bo akurat ten program sam je zapętla.

Animację, która składała się z kilku powiązanych plików WSA, zgrałem jako jedną animację ANIM i też ją zapętliłem. Były tylko dwie takie animacje.

Nota: animacje są w oryginalnych rozmiarach, co może sprawiać problem dla PPainta 6.4.

https://coreprogramming.pl/Anim/WSA-Collection.lha

Pozdrawiam i życzę miłego oglądania. Bardzo lubię Dune II i jej duże grafiki oraz animacje. W razie problemów, proszę zgłaszać.

Ostatnia aktualizacja: 28.05.2026 02:55:02 przez Hexmage960
1
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