Forum AmigaOne Zone
https://forum.amigaone.pl/

Projekt programu a'la WB dla AGA
https://forum.amigaone.pl/programowanie-f13/projekt-programu-a-la-wb-dla-aga-t819.html
Strona 1 z 1

Autor:  Hextreme [ czwartek, 14 kwi 2016, 00:51 ]
Tytuł:  Projekt programu a'la WB dla AGA

Hej,

Ostatnio namnożyło się projektów sprzętowych - najważniejszym jest chyba Vampire V2.

Bardzo brakuje mi jednakże projektów w dziedzinie oprogramowania na Amigę. Ostatnio na różnych zrzutach ekranów widać z reguły klasyczny Workbench jaki go Commodore-Amiga stworzyło.

Od dłuższego czasu projektuję pewien program, który w założeniu ma usprawnić dosyć powolny system graficzny Amigi z naciskiem na layers.library. Jednocześnie chciałbym, by taki program był w pełni zgodny z systemem, dzięki czemu wykorzystywał dobrodziejstwo bibliotek systemowych oraz nie miał problemów z kompatybilnością pomiędzy różnymi modelami Amig.

Program zarazem musi działać na Amigach, które są wyposażone w oryginalne układy wideo Amigi, w szczególności AGA i wykorzystać potencjał Blittera.

Oznacza to, że program nie ma być łatką na funkcje systemowe, ani sprzętowym hakiem. Pojawia się pytanie, czy da się coś takiego skonstruować.

Okazuje się, że tak. Program według moich założeń wykorzystuje bogactwo funkcjonalności, które zapewnia biblioteka intuition.library (oraz inne) działając przykładowo na standardowym ekranie intuition w wielozadaniowości, a zarazem wprowadza nową funkcjonalność, w szczególności przyśpieszone funkcje rysowania.

Załączam małą demonstrację mojego pomysłu. Program wykorzystuje Blitter bezpośrednio, również do narysowania całego tła. Wszystkie funkcje rysujące odbywają się w czasie rzeczywistym. Ekran jest w wysokiej rozdzielczości 640x256 w 256 kolorach. Można za pomocą myszy przesuwać "okienko" z fragmentem obrazka na ekranie. Demonstracja w prosty sposób pokazuje potencjał Blittera oraz możliwości graficzne Amigi i kości AGA. Oryginalne funkcje rysujące obarczone są ogromnym narzutem, dlatego wielokolorowy Workbench działa nieco wolniej.

Mam ambicję stworzyć taki podsystem "kafelkowy", który działałby na własnym ekranie i właśnie w wielu kolorach (np. 32-256). Mam też pomysł, by "kafelki" nie nakładały się na siebie częściowo (co najwyżej całkowicie z możliwością przełączania między warstwami) wyłączając requestery, które mogłyby zasłaniać okno główne.

Generalnie ja jestem zdania, że do pracy na Amidze nie potrzeba super grafiki, feerii barw, czy bardzo wysokiej rozdzielczości. 4, 8 czy 16 kolorów do pracy wystarczą. Wordworth, Turbo Calc, Organiser i inne programy są tego dowodem. Dlatego też moje rozwiązanie to pojedynczy program, a nie kompleksowa łata, która powstawałaby latami bez gwarancji powodzenia.

Chciałbym by mój program to był taki kolorowy i atrakcyjny, ale też funkcjonalny program jak Workbench służący do pracy z komputerem. Na razie postawiłem na szybkie funkcje rysujące w wielu kolorach.

Program korzysta z biblioteki datatypes.library do załadowania grafiki. Docelowo jednakże planuję "nieco" zoptymalizować ładowanie (oraz inne, wolne funkcje systemowe) pisząc je całościowo w asemblerze. Wymaga systemu Amiga OS 3.0 oraz kości AGA.

Polecam pobrać tą wczesną demonstrację i podzielić się opinią. Dziękuję.

Na koniec chciałbym napisać, że realizacja tego pomysłu to moje duże marzenie. Jestem bardzo szczęśliwy, że udało mi się wpaść na tego typu pomysł. Nie jest to kolejna łatka tylko kompleksowa idea, by na AGA uzyskać szybki i atrakcyjny pulpit. AmigaOS 3.5/3.9 nie zapewniają tego, bo bazują na tym samym starym kodzie layers.library (który jest łatany, w przypadku użycia karty graficznej).

Zapewniam, że kocham system Amiga OS oraz chipset Amigi, a ten projekt jest tylko tego dowodem. Nie mam zamiaru zamieniać funkcje systemowe, tylko je troszkę uzupełnić i usprawnić. Mam nadzieję, że projekt zostanie ciepło przyjęty i padną jakieś sugestie, albo propozycje funkcjonalności.

Mam też nadzieję, że uda mi się projekt rozwijać w jako-takim tempie. Nie jest to mój jedyny obecny projekt.
Tutaj można pobrać archiwum z demonstracją

A tak to powinno wyglądać:

Obrazek

Autor:  parallax [ czwartek, 14 kwi 2016, 13:06 ]
Tytuł:  Re: Projekt programu a'la WB dla AGA

"Program według moich założeń wykorzystuje bogactwo funkcjonalności, które zapewnia biblioteka intuition.library (oraz inne) działając przykładowo na standardowym ekranie intuition w wielozadaniowości, a zarazem wprowadza nową funkcjonalność, w szczególności przyśpieszone funkcje rysowania."

A mógłbyś to samo dać bez wykorzystywania tego bogactwa, tak w celach porównawczych? :)
Sprawdziłem na komputerze Amiga 1200, AGA, 020 no i działa szybko, tak jak chyba powinno ;)

Autor:  swinkamor12 [ czwartek, 14 kwi 2016, 15:59 ]
Tytuł:  Re: Projekt programu a'la WB dla AGA

Właśnie rozdzielczość 640x256 w 256 kolorach.
Bo wyżej blitter nie wyrabia.
Raczej bym przeszedł na używanie tylko cpu.
I tak już nikt nie używa amig z cpu wolniejszym od blitera (czyli 68000 i 68010) do softu użytkowego.
A napisanie takiego softu zajmie mniej czasu i pracy, oraz soft będzie działać wszędzie.
System okienkowy jako system kafelek - to jest ciekawe, były takie pomysły na unixie, może się przydać.

Autor:  Hextreme [ czwartek, 14 kwi 2016, 17:11 ]
Tytuł:  Re: Projekt programu a'la WB dla AGA

swinkamor12 napisał(a):
Właśnie rozdzielczość 640x256 w 256 kolorach.
Bo wyżej blitter nie wyrabia.
Raczej bym przeszedł na używanie tylko cpu.
I tak już nikt nie używa amig z cpu wolniejszym od blitera (czyli 68000 i 68010) do softu użytkowego.
A napisanie takiego softu zajmie mniej czasu i pracy, oraz soft będzie działać wszędzie.
System okienkowy jako system kafelek - to jest ciekawe, były takie pomysły na unixie, może się przydać.

1. Myślę, że w rozdzielczości 640 x 512 z przeplotem Blitter również spokojnie da radę, nie używam ze względu na migotanie, a używam Amigę z monitorem CRT. Blitter w ECS obsługuje blity do rozmiarów 32768 x 32768 pikseli.

2. Być może 68020+ jest szybsze od Blittera pod jakimś względem. Jednak Blitter i Copper działają przez DMA by odciążyć procesor od zajmowania się grafiką. Dlatego też nie chcę marnować czasu procesora na grafikę, bo przecież programy działające w wielozadaniowości na tym ucierpią. No, oczywiście można wspomóc się w jakichś operacjach (np. używając przerwania Coppera) ale w tej chwili nie widzę takiej potrzeby.

Ideą DMA jest odciążenie procesora. Warto wykorzystać tą wspaniałą właściwość Amigi. Oprócz tego Blitter może wykonywać wiele operacji na raz.

3. Implementacja funkcji rysujących mogłaby być schowana, ale w tej chwili celuję w trzy konfiguracje: gołe Amigi 1200, z pamięćią FAST i z jakimś turbo i pamięcią FAST.

4. W mojej opinii system okienkowy, gdy okienka częściowo się zasłaniają stosowany powszechnie jest troszkę nielogiczny. Może i jest wygoda przemieszczania, ale te częściowo zasłonięte okienka są częściowo niewidoczne więc nieużywane. Myślę, że taki system kafelek, gdy okna sąsiadują ze sobą (lub przysłaniają się całkowicie z możliwością przełączania) jest ciekawy. Jedyny element, gdzie przysłanianie może być przydatne to tzw. requestery. Ale one blokują dostęp do okienek, z których się wywodzą, więc na jedno wychodzi. Ogólnie pomysł z kafelkami kiełkuje w mojej głowie od dawna, ale jeszcze nie przybrał jakiejś konkretniejszej definicji.

parallax napisał(a):
A mógłbyś to samo dać bez wykorzystywania tego bogactwa, tak w celach porównawczych? :)
Sprawdziłem na komputerze Amiga 1200, AGA, 020 no i działa szybko, tak jak chyba powinno ;)

Pewnie byłoby lepiej robić bardziej sprzętowo - ale wtedy nie mogę korzystać z tak wielu przydatnych funkcji, jakie oferuje Amiga OS. Sztuką jest pogodzenie systemu i szybkości, ale ta sztuka mi się udała. Cieszę się, że działa u Ciebie dobrze, sam testowałem tylko na A1200 + Blizzard1230/50MHz + FAST.

Autor:  swinkamor12 [ piątek, 15 kwi 2016, 04:33 ]
Tytuł:  Re: Projekt programu a'la WB dla AGA

Dawno dawno temu za czasów a500 blitter był szybszy niż procesor, i faktycznie odciążał system.
Ale te czasy minęły.
Mając kilkanaście razy szybszy procesor niż blitter (030+) pamięć fast parę razy szybszą,
lepiej jest skoncentrować się na optymalizacji kodu tylko pod procesor.

Autor:  Hextreme [ wtorek, 19 kwi 2016, 07:46 ]
Tytuł:  Re: Projekt programu a'la WB dla AGA

swinkamor12 napisał(a):
Dawno dawno temu za czasów a500 blitter był szybszy niż procesor, i faktycznie odciążał system.
Ale te czasy minęły.
Mając kilkanaście razy szybszy procesor niż blitter (030+) pamięć fast parę razy szybszą,
lepiej jest skoncentrować się na optymalizacji kodu tylko pod procesor.

OK. Grafika w pamięci FAST i procesor modyfikujący grafikę może stanowić dobre uzupełnienie.

W powyższym projekcie zamierzam zrobić szybki system Bobów (obiektów Blittera) oraz ładne GUI i efektywnie wykorzystać atrybuty Amigi - Blitter oraz pamięć typu CHIP.

Jestem zdania, że Blitter i pamięć CHIP nie są wystarczająco efektywnie wykorzystywane. Mają większy potencjał.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/