ªpO(d)palamy Anim5ª0 Poniewaû ostatnio w FA byîo bardzo maîo artykuîow koîderskich wiëc postanowiîem coô niecoô napisaê od siebie... Postanowiîem w cyklu artykuîów opisywaê róûne takie przydatne (lub nie) procedurki. Jakiô czas temu potrzebowaîem playera do animacji, a tu pech... nikt nie ma ûadnej odgrywaczki nawet do Anim5 nie mówiâc juû o Anim7 - padî na mnie blady strach: ª1º0czyûby czekaîo mnie przegranie kilkudziesiëciu klatek animacji na poszczególne obrazki, konwersja, spakowanie - ª1º2 KOSZMARª0º0. W tej sytuacji postanowiîem napisaê wîasnego odtwarzacza do animacyjek. Teraz nastâpi wstëp teoretyczny :) Chciaîbym z miejsca zaznaczyê, ûe to co teraz powypisujë to jest to co sam odkryîem, wiëc nie moûna tego traktowaê jako opis formatu Anim5. Jeôli ktoô jednak pragnie poznaê dokîadnie ten format to odsyîam go do archiwów C64+4 albo Amigowca, gdzie byî on szerzej opisany. Od razu uspokajam :) przykîadowa surówa do odgrywania animacyjek jest nagrana w katalogu "S" z pierwszego dysku Fatka. Jest jednak ona nieoptymalizowana, so mam nadziejë, ûe inni koderzy nie bëdâ na mnie "Psów 2" wieszaê. Caîa surówka zostaîa napisana pod Trash'em-One v.1.7 i pod nim dziaîa w wiëkszoôci wypadków bezbîëdnie. Ale wróêmy do wstëpu. Na Anim5 skîadajâ sië jakby dwa czîony - pierwszy zawiera kompletny obrazek IFF wraz z paletâ, danymi o rozdzielczoôciach, trybach graficznych, etc. etc. Zostaîo to zostawione prawdopodobnie po to aby moûna byîo zobaczyê pierwszâ klatkë animacji, choê czëôê programów (np. Filemaster) nie rozpoznaje ich... Hmmm... trudno. Format ten zakîada, ûe bëdzie sië uûywaîo double bufferingu (dla niezorientowanych - gdy jeden obraz jest pokazywany, to naprawde pracuje sie na innym). ª1º0(A tu wtrâcë jako dygresjë, ûe Axel/Alchemy wymyôliî triple buffering, który w skrócie wyglâda nastëpujâco: jeden obraz pokazujemy, drugi czyôcimy prockiem, na trzecim stawiamy obiekty blitterem - sprytne? No nie? Oklaski dla Axela.)ª0º0 Wracajâc do tematu... Zatem mamy obrazek w IFFie. Pierwsze co to trzeba go odpakowaê. Nastëpnie kopiujemy go na drugi screen. Pokazujemy pierwszy screen oglâdaczowi a w tym czasie bëdziemy sië zabawiaê drugim obrazkiem (a wy ôwintuszki... :)). Otóû klatki Anim5 sâ tak rozpisane, ûe tak naprawdë to zachowywana jest w nich dane º2TYLKO I WYÎÂCZNIE O ZMIANACHº0 pomiëdzy klatkami, czyli nawet jeôli mamy 5000 klatek moûe byê ona krótsza niû 25 klatkowa animacja "szumu" telewizyjnego. Po pierwsze w hunkach typu DLTA zapisywana jest informacja o poszczególnych kolumnach. Dlaczego kolumnach? A to dlatego, ûe grafika ma to do siebie, ûe bardzo czësto w pionie lepiej sië pakuje. Wynika to z tego, ûe poszczególne pionowe linie sâ bardzo do siebie podobne. Jako eksperyment proponujë zrobiê EOR miëdzy poszczególnymi liniami (tak, ûeby tylko te bity, które zmieniajâ coô na ekranie pozostaîy zapalone), sami zobaczycie, ûe dziëki temu zabiegowi grafika staje sië niemal caîkowitâ "plamâ" czarnâ , bâdú teû biaîâ. Niezîe, no nie? Odczytujemy bajt z hunku DLTA. Wartoôê odczytana mówi nam ile w danej kolumnie czeka nas "rozkazów" do wykonania. Odczytujemy nastëpny bajt (pierwszy rozkaz). Czekajâ nas trzy moûliwoôci: º1a)º0 wartoôê ujemna º1b)º0 wartoôê dodatnia º1c)º0 zero º1Ad. A (unicate rows)º0 Wartoôê ta (od której naleûy odjâê 128, lub skasowaê najstarszy bit) okreôla nam ile bajtów nastëpujâcych po tym "rozkazie" to bajty które sië zmieniîy, a w dodatku jest to ciâg wartoôci niepowtarzajâcych sië. º1Ad. B (skip rows)º0 Wartoôê ta mówi nam ile linii w tej kolumnie nie ulegîo zmianie i naleûy je opuôciê. º1Ad. C (same rows)º0 Po "rozkazie" zero naleûy odczytaê dwa nastëpne bajty, które niosâ informacjë o tym ile linii naleûy wypeîniê w tej kolumnie (bajt 1) jakâ wartoôciâ (bajt 2). I to w gruncie rzeczy jest caîy format Anim5, bo po wykonaniu wszystkich "rozkazów" w danej kolumnie przechodzimy do nastëpnej i nastëpnej i koniec. Prawda, ûe banalne? Niestety istniejâ w formacie IFF zwiâzanym z Anim5 powaûne bîëdy. Otóû dîugoôê hunków podawana po identyfikatorze hunka (np. "DLTA") bardzo czësto nie odpowiada prawdzie (!!!) zdarza sië np. ûe dîugoôê ta jest NIEPARZYSTA (!!!!) gdy tymczasem WSZYSTKIE hunki MUSZÂ zaczynaê sië od parzystego adresu. Czyli zaufanie to piëkna rzecz, ale lepiej jest wszystko sprawdziê :). To tyle moich wynurzaï na temat FORMDLTA. Jeôli kto chce moûe przeanalizowaê mojâ úródîówkë. Nie piszë o formacie IFF ogólnie, bo po pierwsze napisano juû na ten temat juû chyba prawie wszystko (przynajmniej ogólnie), a tak poza tym nie uwaûam sië za eksperta w tej dziedzinie. No to z ko(î)derskim zdrowionkiem i jabolkiem "kier" ûegna sië... MIron. PS. Nastëpnâ razâ bëdë (albo i nie) omawiaî Anim7.