atarionline.pl jak zamienic bmp na dane dla atari - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorinsert
    • CommentTime12 Jul 2012
     
    hej, mam plik bmp (2 kolory), zastanawiam sie jak najszybciej przerobic ja na cos co moge umiscic w kodzie programu, w postaci 0 i 1 albo hex etc, hexdump na maku w terminalu pokazuje cos dziwnego :/

    w zal. przykladowy plik
    • 2: CommentAuthor0xF
    • CommentTime12 Jul 2012 zmieniony
     
    dta	b(%00011000)
    dta b(%00011000)
    dta b(%00011000)
    dta b(%11100111)
    dta b(%11100111)
    dta b(%00011000)
    dta b(%00011000)
    dta b(%00011000)

    edit: forum jak zwykle zjada spacje na początku kodu.
    • 3:
       
      CommentAuthorinsert
    • CommentTime12 Jul 2012
     
    no pieknie, ale nie oczekiwalem wyniku tylko opisu metody przy uzyciu terminala osx, albo softu atarowego :)))
    • 4:
       
      CommentAuthorjhusak
    • CommentTime12 Jul 2012 zmieniony
     
    0xF: Ale to nie o to chodzi :) (wstrzeliłem się po poście inserta :P

    Zainstaluj pakiet netpbm (macports), w nim masz coś takiego jak cos2cos, gdzie cos=bmp,png, pmn,pgm,pbm.

    a pgm i pbm jest tym, o co Ci chodzi. W środku binarnie zakodowany jest obrazek, a header to id, wielkość obrazka i koniec.
    Jest format binarny (jw) oraz tekstowy. Polecam.

    Polecam zapoznać się z xxd zamiast hexdump. Jest o niebo użyteczniejszy :)
    Służy jako prosty hex-editor (można wte i wewte), można regulować ilość kolumn, można wypluwać hexy w dowolnej ilości kolumn (i je konwertować na binary.

    Częstym użyciem (przez mnie) jest dump w jednej kolumnie "xxd -ps -c 1"
    zrobienie coś z tym awkiem, oraz "xxd -r -ps"
    • 5:
       
      CommentAuthorinsert
    • CommentTime12 Jul 2012
     
    aha, jak zawsze problem:


    user-164-127-110-17:~ postpunker$ sudo port install netpbm
    Password:
    ---> Fetching archive for zlib
    ---> Attempting to fetch zlib-1.2.7_0+universal.darwin_9.i386-ppc.tbz2 from ->link<-
    ---> Fetching distfiles for zlib
    ---> Attempting to fetch zlib-1.2.7.tar.bz2 from ->link<-
    ---> Verifying checksum(s) for zlib
    ---> Extracting zlib
    ---> Configuring zlib
    ---> Building zlib
    ---> Staging zlib into destroot
    ---> Installing zlib @1.2.7_0+universal
    ---> Cleaning zlib
    ---> Deactivating zlib @1.2.5_0+universal
    ---> Cleaning zlib
    ---> Activating zlib @1.2.7_0+universal
    ---> Cleaning zlib
    ---> Fetching archive for expat
    ---> Attempting to fetch expat-2.1.0_0+universal.darwin_9.i386-ppc.tbz2 from ->link<-
    ---> Fetching distfiles for expat
    ---> Attempting to fetch expat-2.1.0.tar.gz from ->link<-
    ---> Verifying checksum(s) for expat
    ---> Extracting expat
    ---> Configuring expat
    ---> Building expat
    ---> Staging expat into destroot
    ---> Installing expat @2.1.0_0+universal
    ---> Cleaning expat
    ---> Deactivating expat @2.0.1_1+universal
    ---> Cleaning expat
    ---> Activating expat @2.1.0_0+universal
    ---> Cleaning expat
    ---> Computing dependencies for gettext
    ---> Staging gettext into destroot
    Error: org.macports.destroot for port gettext returned: error copying "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-ppc//Applications" to "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-powerpc/Applications": file already exists
    Please see the log file for port gettext for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/main.log
    Error: Problem while installing gettext
    Error: Unable to execute port: upgrade libpng failed
    user-164-127-110-17:~ postpunker$
    • 6:
       
      CommentAuthorjhusak
    • CommentTime12 Jul 2012 zmieniony
     
    Spróbuj
    port selfupdate
    port upgrade outdated.
    czasami nawet kilka razy, jak są błędy.

    Jeśli się to często robi, to działa ok (zwłaszcza przed instalacją nowych rzeczy) Bez tego rosnący bałagan powoduje błędy. A tak masz wszystko w odpowiednich wersjach. Ponadto masz wiele wersji bibliotek (bo jeden pakiet działa ze starą wersją, a inny z nowszą).

    Przygotuj sobie pół litra (kawy).

    A, i jeszcze widzę problemy z nadpisywaniem - zrób sobie repair system permissions (tzn maczkowi)
    • 7:
       
      CommentAuthorinsert
    • CommentTime12 Jul 2012
     
    juz probuje, pol litra wieczorem ;)
    • 8:
       
      CommentAuthorinsert
    • CommentTime12 Jul 2012
     
    aha, no i kupa :)


    MacPorts base version 2.1.1 installed,
    MacPorts base version 2.1.1 downloaded.
    ---> Updating the ports tree
    ---> MacPorts base is already the latest version

    The ports tree has been updated. To upgrade your installed ports, you should run
    port upgrade outdated
    user-164-127-110-17:~ postpunker$ sudo port upgrade outdated
    ---> Computing dependencies for gettext
    ---> Staging gettext into destroot
    Error: org.macports.destroot for port gettext returned: error copying "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot" to "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-i386/destroot": file already exists
    Please see the log file for port gettext for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/main.log
    Error: Problem while installing gettext
    To report a bug, follow the instructions in the guide:
    ->link<-
    user-164-127-110-17:~ postpunker$ sudo port install netpbm
    ---> Computing dependencies for gettext
    ---> Staging gettext into destroot
    Error: org.macports.destroot for port gettext returned: error copying "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot" to "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/work/destroot-i386/destroot": file already exists
    Please see the log file for port gettext for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/main.log
    Error: Problem while installing gettext
    Error: Unable to execute port: upgrade libpng failed
    user-164-127-110-17:~ postpunker$
    • 9: CommentAuthor0xF
    • CommentTime12 Jul 2012
     
    W pierwszym poście było pytanie o najszybsze przeniesienie jednej prostej bitmapy 8x8 wykorzystującej dwa kolory do programu Atari. No więc ta metoda to: patrzymy na piksele i wpisujemy je jako 0 i 1. :)

    Jeśli chodziło o coś innego, to proszę to napisać, bo to ma znaczenie, czy masz 3 czy 500 takich bitmap, czy mają one inne rozmiary, niż 8x8, czy więcej kolorów, niż 2 i czy chcesz to wstawić do programu w BASICu, asemblerze, czy do grafiki na compo.
    • 10:
       
      CommentAuthorjhusak
    • CommentTime12 Jul 2012
     
    Widać, że nie może czegoś nadpisać, a plik jest.

    Czasami też pomaga odinstalowanie wadliwego pakietu.

    A jak już nic nie działa, to trzeba sobie zapisać, co się ciekawego ma, wyczyścić wszystko i zacząć od nowa (ja tak musiałem zrobić, bo po zmianie procka pod systemem 10.6.8 wszystko zaczęło działać na 64 bity i się programy nie linkowały z 32bitowymi bibliotekami (przy feralnej bibliotece trzeba dodać +universal)

    W necie są tutoriale.
    • 11:
       
      CommentAuthorinsert
    • CommentTime12 Jul 2012
     
    mam ich kilkaset np, potrzebuje je wstawic do programu w Action jako dane duszkow, moge je miec w jednym kolorze
    • 12:
       
      CommentAuthorjhusak
    • CommentTime12 Jul 2012
     
    0xF: Fakt, można to tak zrozumieć, bo taki jest przekaz. Jednak ustawienie wyrazów, szyk oraz "przykładowy plik bmp" pozwoliły mi domyśleć się o prawdziwe intencje autora :)
    • 13:
       
      CommentAuthorinsert
    • CommentTime12 Jul 2012
     
    jakub. te macports jednak mnie nie lubia i nie przewalcze tego, nie ma inej metody pod osx'em zeby to jakos zrobic?
    • 14:
       
      CommentAuthorjhusak
    • CommentTime12 Jul 2012
     
    Można graphicconverterem przerobić na pbm a potem jakimś batchem obciąć nagłówek hurtowo.
    • 15: CommentAuthormono
    • CommentTime13 Jul 2012
     
    Proponuję ->link<- ; to przerobi bmp 320x200 w 2 kolorach do formatu ghg. A z formatu ghg wystarczy obciąć 3 pierwsze bajty żeby uzyskaż raw.
    • 16: CommentAuthor0xF
    • CommentTime13 Jul 2012
     
    Dla 320x200 po co przechodzić przez ghg? Można zapisać bmp w dwóch kolorach (a nie 256 jak w pierwszym poście) i ostatnie 8000 bajtów pliku to z dużym prawdopodobieństwem będzie raw (z dokładnością do odbicia w pionie).

    Ale sprite-y nie są 320x200. :) I tu jest problem, bo bmp wyrównuje każdą linijkę do 4 bajtów. Czyli dla bmp 1 bit na piksel szerokości 8 pikseli będziemy mieli 4 bajty na linię, a nie 1.

    Widzę trzy rozwiązania:
    a. Własny programik do konwersji. Np. pisałem taki w języku Ruby w ->link<- Wymaga zainstalowania Ruby-ego i biblioteki do obrazków.
    b. Być może ->link<- da radę.
    c. Być może skrypt Mono da radę bmpom o szerokości 8 pikseli. A jeśli nie, to może Mono go poprawi. :)
    • 17: CommentAuthorbob_er
    • CommentTime13 Jul 2012
     
    ja osobiście do konwersji używam niespakowanego formatu .tga. podobny do .bmp, ale bez udziwnień (brak zaokrąglania da 32 bitów, normalna kolejność grafiki). maluchowego rawa to można tailem i headem zrobić.
    • 18: CommentAuthor0xF
    • CommentTime13 Jul 2012
     
    O proszę, nie wiedziałem o tym.
    Jest jeszcze tif - normalna kolejność, tylko często są jeszcze metadane za bitmapą, nie pamiętam czy jest zaokrąglanie.
    • 19: CommentAuthormono
    • CommentTime13 Jul 2012 zmieniony
     
    Z tego co widzę, to można konwertować moim skryptem bitmapy dowolnych rozmiarów (no max 65535x65535). Więc
    $ bmp2ghg.sh obrazek.bmp
    $ dd if=obrazek.ghg of=obrazek.raw bs=1 skip=3

    powinno załatwić sprawę.

    Edit: Zapomniałem jak się używa mojego skryptu :) W razie potrzeby można zrobić inwersję dodając parametr -i za nazwą obrazka.
    • 20: CommentAuthor0xF
    • CommentTime13 Jul 2012
     
    mono: nie obsługujesz zaokrąglenia do 4 bajtów na linię, więc po konwersji obrazka z pierwszego postu jest kaszana.
    • 21: CommentAuthormono
    • CommentTime13 Jul 2012 zmieniony
     
    @0xF: Poprawiłem.

    Edit: Ale i tak nie działa. Przyjrzę się lepiej.

    Edit2: No tak - obsługuję tylko 1bpp a tu jest 8.
    • 22: CommentAuthor0xF
    • CommentTime13 Jul 2012
     
    BW=$(((W+7)/8))
    LW=$((((W+31)/32)*4))
    • 23: CommentAuthormono
    • CommentTime13 Jul 2012
     
    Tak wiem, ale to nie wystarczy. Ten programik powstał żeby można było odtworzyć obrazek nieopatrznie wyeksportowany z graph8 z powrotem do ghg (analogicznie, jak iff2ghg). Graph8 generuje bitmapę z 1 bitem na piksel więc dane przesypuje się do ghg 1:1 - tutaj jest 8bpp i trzeba by to obsłużyć.
    • 24: CommentAuthormono
    • CommentTime13 Jul 2012
     
    Gotowe. Działa z 8bpp. Piksele o indeksie 0 są konweretowane do pikseli w kolorze tła, wszystkie inne do pikseli w kolorze atramentu.
    • 25:
       
      CommentAuthorinsert
    • CommentTime17 Jul 2012
     
    Mono. Twoj skrypt generuje taki plik:

    $ xxd -b test.ghg
    0000000: 00001000 00000000 00001000 00011000 00011000 00011000 ......
    0000006: 11100111 11100111 00011000 00011000 00011000 .....

    co to te 3 pierwsze bajty? po co to jest? :)
    • 26: CommentAuthor0xF
    • CommentTime17 Jul 2012