kategorie: A500, Programy
[#1] Konwerter grafiki
Prosty konwerter grafiki dla paru sprzętów w tym Amigi mojego autorstwa - darmowy

Zapisuje wynik konwersji do IFF w trybie 32 kolorów lub HAM6. Możliwość wyboru trybu ditheringu oraz funkcji dopasowania koloru.

https://github.com/marlow75/retropic
11
[#2] Re: Konwerter grafiki

@marlow75, post #1

Zgrubnie się przed chwila pobawiłem... jako, że to pewnie pierwsza publiczna wersja to czekam na rozwój i kolejne funkcje:).
[#3] Re: Konwerter grafiki

@marlow75, post #1

OK
[#4] Re: Konwerter grafiki

@jimiche, post #2

Wrzuciłem kilka drobnych usprawnień, zmniejszyłem nieco wpływ ditheringu na wynik końcowy. Da się go teraz kompletnie wyłączyć bo poprzednio łagodziłem tylko jego siłę.
[#5] Re: Konwerter grafiki

@marlow75, post #1

Ale ten IFF w 32 kolorach to jest w palecie 24 bit czy 12 bit?

EDIT: OK, znalazłem że z palety 4096.

Ostatnia aktualizacja: 09.02.2023 15:57:18 przez recedent
1
[#6] Re: Konwerter grafiki

@marlow75, post #1

fajne , bawie sie tym pod maliną i przerzucam na C64 :>
[#7] Re: Konwerter grafiki

@marlow75, post #1

Dodano obsługę trybu niskiej rozdzielczości dla AGA, 256 kolorów lub HAM8 oraz obsługę drag & drop. Można przeciągać zdjęcia wprost z folderów do okna opcji konwersji.

Numer wersji nie zmienił się.
2
[#8] Re: Konwerter grafiki

@marlow75, post #7

Ostatni update przed dłuższą przerwą. Dodałem 640x512 (lace) w 256 kolorach i HAM8 oraz nieco przyspieszyłem algorytm kwantyzacji koloru tak by z 4x większą rozdziałką pracował z podobną jak dla niższej prędkością.

Jeśli ktoś ma jakieś propozycje ulepszeń chętnie przeczytam.

Pozdrawiam
4
[#9] Re: Konwerter grafiki

@marlow75, post #8

Brawo OK
[#10] Re: Konwerter grafiki

@marlow75, post #8

A mam. HAM6 jest dość przeciętny, są przekłamania, więc tu można coś poprawić zwłaszcza, że są programy, które robią to lepiej. Druga rzecz to rozdzielczości. Nawet A500 ma ich sporo, więc narzucanie jednej jest dość denerwujące. Moje obrazki testowe są 320x200 i już był problem z testowaniem programu.

Znalazłem kilka błędów w zapisywanych obrazkach iff. Aspect ratio powinien być 44:44, a nie 1:1. W chunku CAMG dla trybu paletowego jest 0x1000, a powinno być 0 dla lores. W chunku CMAP dla A500 zapisujesz wartości 24-bitowe, a nie 12-bitowe co przy odczycie na A1200 będzie widoczne.
[#11] Re: Konwerter grafiki

@cholok, post #10

> W chunku CMAP dla A500 zapisujesz wartości 24-bitowe, a nie 12-bitowe co przy odczycie na A1200 będzie widoczne.

Zgodnie ze specyfikacją IFF paleta zawsze jest 24 bitowa
[#12] Re: Konwerter grafiki

@cholok, post #10

Witam,

Pozostałe wartości pociągnąłem z zapisywanych w DPIV wartości, masz może specyfikację dla A500 którą określa wartość słowa opisującego tryb graficzny bo to zgodnie ze specyfikacją IFF wartość systemowa a pracuje jedynie na emulatorze.
[#13] Re: Konwerter grafiki

@marlow75, post #12

Pozostałe wartości pociągnąłem z zapisywanych w DPIV wartości, masz może specyfikację dla A500 którą określa wartość słowa opisującego tryb graficzny bo to zgodnie ze specyfikacją IFF wartość systemowa a pracuje jedynie na emulatorze.

Emulator nie jest przeszkodą.
Wystarczy uruchomić DPIV w trybie OCS lub starszą wersję DP i będziesz mógł pociągnąć wartości dla a500.

Ostatnia aktualizacja: 14.02.2023 08:03:30 przez Norbert
[#14] Re: Konwerter grafiki

@Norbert, post #13

Dzięki za info

Tak robiłem, pod emulatorem zapis obrazu i stąd wartości ale sprawdzę raz jeszcze. Emulator obrazy odczytuje bez problemu podobnie jak XnView.
[#15] Re: Konwerter grafiki

@marlow75, post #14

jesli to pomoze to kiedys sie glowilem czemu nie mam w dpaint rozdzialek AGAowych, odpalalem go zawsze bez startup-sequence. po wywolaniu setpatch rozdzialki w dpaint sie pokazuja, a bez nie :)
[#16] Re: Konwerter grafiki

@marlow75, post #14

Pełną specyfikację formatu IFF znajdziesz w książce Amiga ROM Kernel Reference Manual: Devices w Dodatku A od strony 347: tutaj link do tej strony.

Opis ILBM zaczyna się od strony 381.

Ta książka jest też w formie elektronicznej (AmigaGuide oraz HTML) na płycie CD Amiga Developer CD v2.1.

Na tej płycie w dokumencie ILBM_AND_AA w katalogu NDK/NDK_3.1/Docs/Tutorials znajdziesz specyfikację ILBM dla chipsetu AGA.

Dzięki informacjom tam zawartym będziesz znał dokładne wartości, które należy wpisywać w plik IFF.

Mam nadzieję, że to Ci pomoże poprawić te drobne usterki w Twoim konwerterze.

Ostatnia aktualizacja: 14.02.2023 08:35:56 przez Hexmage960
[#17] Re: Konwerter grafiki

@Hexmage960, post #16

Dzięki bardzo wieczorem tam zajrzę
[#18] Re: Konwerter grafiki

@marlow75, post #11

Chodziło o to, że dla OCS powinno być zapisane wartości 12-bit przekonwertowane do 24-bit, czyli górne 4 bity są identyczne z dolnymi. Inaczej będą różnice w kolorach na różnych Amigach.
[#19] Re: Konwerter grafiki

@marlow75, post #12

dla default/PAL:
Lores: 320x256 $0000 44/44
Lores laced: 320x512 $0004 44/22
Hires: 640x256 $8000 22/44
Hires laced: 640x512 $8004 22/22
SHires: 1280x256 $8020 11/44
SHires laced: 1280x512 $8024 11/22

DPaint nie jest najlepszym programem, który nagrywa idealne iffy, choć problemów z nimi nie będzie.
[#20] Re: Konwerter grafiki

@marlow75, post #14

Te błędy nie są krytyczne, ale wartości w palecie już problematyczne. Zrób sobie taki eksperyment. Wgraj do Adpro jakiś obrazek na AGA, ustaw lores 32 kolory i wyrenderuj w odcieniach szarości dla lepszej wizualizacji problemu. Taki obrazek spełnia kryterium wyświetlenia na OCS. Jednak po wczytaniu na OCS zobaczymy tylko 16 odcieni. Adpro ma błąd identyczny jak w twoim programie. Zapisuje dokładne wartości 24-bitowe nawet gdy uruchomimy go na OCS.
[#21] Re: Konwerter grafiki

@cholok, post #20

Dzięki za info

Do tej pory korzystałem z Playera DP, ten nie miał problemów z paletą. Skoro mówisz że ma znaczenie skalowanie palety dla A500do 12 bitów to wrzucę w jakieś opcje dodatkowe dla eksportu. Teraz przeglądam raz jeszcze specyfikację IFF i tam zalecają zapis w 24 bitach i skalowanie na docelowych maszynach z mniejszą ilością kolorów.

Pozdrawiam
[#22] Re: Konwerter grafiki

@cholok, post #19

Dzięki bardzo o to mi właśnie chodziło i tego szukałem

Raz jeszcze dzięki :)
[#23] Re: Konwerter grafiki

@marlow75, post #22

Zapomniałem dodać HAM: $800 (or wartości powyższe).
[#24] Re: Konwerter grafiki

@marlow75, post #21

Ale docelowo jest maszyna 12-bitowa, więc docelowy obrazek iff powinien mieć 12-bitów. Inaczej po skalowaniu w dół obrazek może mieć nieco inne kolory, a w najgorszym przypadku mniej kolorów.
[#25] Re: Konwerter grafiki

@marlow75, post #8

Zawsze dobrze podpatrzeć jak to robi konkurencja choć jak dla mnie ten program jest właściwie bezkonkurencyjny.

Ostatnia aktualizacja: 14.02.2023 13:35:29 przez jimiche
[#26] Re: Konwerter grafiki

@jimiche, post #25

HAM6 to kwestia doboru palety, przy HAM8 jest większa i wydaje się że te 64 kolory wystarczają. By coś poprawić można dla każdej linii sprawdzić wszystkie 16 kombinacji dobranej palety czy da najmniejszy błąd sumaryczny. Obecnie biorę najlepiej dopasowany kolor. Tu jest możliwość poprawy a paleta obecnie wyliczana przez sieć jest lokalnym optimum i chyba bym tego nie ruszał.
[#27] Re: Konwerter grafiki

@cholok, post #24

Ja bym dodał opcję zapisu palety 12-bit lub 24-bit do wyboru i problem rozwiązany.

Tak zalecają też w poradnikach:

1. Saving

Either always save CMAPs with 8 significant bits-per-gun, or
save 8-bits-per-gun by default and offer a 4-bit palette save option
(for compatibility with some products which may contain containing
broken handcrafted CMAP color handling code).

Co do CAMG, to warto wziąć pod uwagę, że Amigi, szczególnie modele z AGA posiadają szereg trybów.

Starsze programy brały pod uwagę tylko 16-bitową wartość. Nowe programy powinny brać pod uwagę wartość 32-bitową. A przecież konwerter od kolegi to jest nowy program i powinien być zgodny z tymi standardami.

Monitor domyślny to faktycznie tak jak napisałeś, ale monitor PAL to $21000.

P.S. Definicje trybów można znaleźć w pliku Includes&Libs/Include_h/graphics/modeid.h w NDK_3.1.
[#28] Re: Konwerter grafiki

@Hexmage960, post #27

Jeśli renderujesz obraz dla A500 to nie ma żadnego wyboru. Jest 12-bit i koniec. Zapisujesz wtedy np. 0xFA5 jako 0xFFAA55, a nie jakieś 0xFEA054. Zaś dla A1200 zapisujesz normalnie 24-bit. Jeszcze jest jeden problem z A500, że jeśli renderujesz obraz w 24-bit to może okazać się po zwykłej konwersji niektóre kolory staną się tymi samymi tracąc tym samym na jakości, więc tu renderer nie może być ten sam (nie powinien) to dla A1200, bo będzie mniej efektywny.

Co do CAMG to używanie monitorów jest moim zdaniem niewskazane. To było dobre dopóki nie było RTG. Większość programów próbuje otwierać ekran o podanym id co nie jest czasem pożądane. Najlepiej użyć default monitor czyli 0 oraz postawowe bity ham, lace itp.

Starsze programy (starsze DPainty) lubią nie zerować miejsc w strukturach typu pad, unused itp. Często w CAMG powyżej słowa są śmieci co zakłóca odczyt monitor id.

Ostatnia aktualizacja: 16.02.2023 11:34:30 przez cholok
[#29] Re: Konwerter grafiki

@Hexmage960, post #27

Dzisiaj wieczorkiem wrzucę kod z poprawkami i zmianami:

- poprawka algorytmów ditheringu, błąd był zbyt szybko obcinany, teraz dither liczy się na floatach a błąd klipuje przy doborze pixela
- nowy algorytm HAM6 doboru koloru startującego dla rastra (pomijam kolor ramki), sprawdza wszystkie kombinacje koloru z palety (16), wybierany jest ten co daje najmniejszy błąd dla całego rastra
- dodatkowe tryby dla A500 i A1200 - 512 w poziomie
- poprawa zapisu trybu graficznego dla IFF

W weekend zakończę na kompresji IFF

Pozdrawiam
3
[#30] Re: Konwerter grafiki

@marlow75, post #29

Ostatnia aktualizacja, dużo zmian głównie dla pozostałych maszyn dla Amigi

- zrezygnowałem z czasochłonnego nowego algorytmu dla kodowania HAM, w zamian nowy algorytm uczenia sieci który zasilany jest tylko pikselami o dużej różnicy koloru = lepiej dobrana paleta 16 kolorów.

- w końcu działające RLE ale mało efektywne dla trybów z ditherem

- poprawki obliczania koloru - błąd zliczany jest na 32b floacie

- lepsza wizualizacja trybów lace dla A500

- poprawa skalowania koloru 24b->12b

Pozdrawiam
4
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