[#1] Omówienie sposobów programowania na Amidze..
Cześć,
może Ktoś zaznajomiony w temacie, pokusił by się o napisanie artykułu czy szkółki, omawiającego
techniki i sposoby programowania na Amidze?

Przyznam, że jest to temat dość zamotany ze względu na mnogość opcji i sposobów, myślę,
że cześć osób się ze mną zgodzi. Już samo to trochę zniechęca. I nawet nie za bardzo wiem jak
wytłumaczyć o co mi chodzi i jak to podzielić, ale spróbuje poniżej w skrócie:

(dla uproszczenia bierzemy pod uwagę programowanie gry/grafiki a nie np. jakieś aplikacji okienkowej GUI)

Wariant 1. Amiga stokowa AGA - nie rozbudowana
Wariant 2. Amiga AGA + procesor 030/040/060 30-50mhz i wyższe + RAM
Wariant 3. Amiga + procesor + RAM + karta graficzna (rtg?)

ad 1.
Szukając informacji o programowaniu Amigi, właśnie ten wariant występuje najczęściej tak jakby inne nie istniały.

I tu już pierwsza rzecz która się narzuca. Programowanie "os friendly" czy "not friendly'.
Czym to się różni, co daje jedno a co drugie. Wady i zalety obydwóch. Np. czy sprajtów, hardware scrolling
i coppera mozna uzywac tylko w tym trybie not friendly?

Tu najczęściej się spotyka programowanie za pomocą asemblera żeby jak najlepiej wykorzystać zasoby.
Przy czym wg mnie to troceh wymyslanie koła od poczatku i wieksze skupianie się na kodzie niż samej grze.
Chyba że sa jakies gotowe moduły/funkcje , które cześć rzeczy przyśpieszają. Kolejne języki to C, Blitz Basic, Amos.
Zdaje się ze w każdym z nich można robić i w trybie friendly i not friendly..

ad 2.
Tu zdaje się sytuacja jest podobna jak w ad 1.
Ale szybsze karty dają dodatkowe możliwości takie jak obejście blitera i korzystanie np. z c2p, czy bibliotek takich jak
Mildred w Blitz Basicu do c2p, ona akurat działa w trybie OS friendly. Przy czym ze względu na ograniczenia pamięci
Chip nie jest to jakieś super rozwiązanie. No chyba, że znowu wykorzystując asemblera wyciśnie się maksimum.

Tu jest jeszcze kolejna rzecz. Jeśli dobrze zrozumiałem to jakaś "emulacja" karty graficznej czy rtg tylko
poprzez procesor właśnie. Ale to się zazębia z kolejnym punktem, czyli:

ad 3.
Tu jest najmniej informacji na temat programowania kart graficznych. Byłbym wdzięczy za te informacje.
Czyli obchodzimy stare układy Amigowe i próbujemy czegoś więcej..

Tutaj chyba już w gre wchodzi tylko tryb OS friendly. Pytanie jak korzystać i z jakich sterowników i bibliotek?
czy jest jakiś jeden standard czy szwarc mydło i powidło?

słowa kluczowe: picasso 96, RTG, cybergraphics, SAGA w Vampirze,
czy to jest jakoś zuniwersalizowane? Tak żeby nie pisać 10 wersji pod kazdy sterownik.
najcześciej słyszę o RTG - retargetable graphic, jak pod to pisać? czy ten ukłąd SAGA w Vampirze to obsłurzy
czy pod Vampira trzeba pisać znowu osobno jakoś?

Np. jest AmiBlitz 3, nadal rozwijany, bardziej właśnie pod karty graficzne, następca Blitz Basica, jeszcze nie udalo
mi sie odpalić zadnych konkretnych przykładów, nigdy nie miałem karty graficznej, i na razie próbuje w WinUae to jakoś odpalić.

z kolei wspomniana biblioteka Mildred do Blitz Basica, również poza AGA obsługuje karte graficzną, ale z tego co widziałem
do cybergraphics, tak jak mówiłem, jeszcze mi się nie udało zainstalowac karty w winuae wiec nie wiem czy na kazdej karcie to pójdzie.

--

sory, że troche troche chaotycznie to opisałem, ale jak mówie od cholery jest wątków, sposóbów, mozliwości, programów,
kom0pilatorów, sterowników, podzespołów itp. oszaleć można - pewnie nawet nie o wszystkim wspomniałem,
chyba sa jeszcze biblioteki SDL ale to ponoć słabo jest napisane.. Fajnie gdyby Ktoś sporbował to usystematyzować
w artykule i opisać, no chyba że jest taki to chętnie przygarnę linka :)

warto by bylo też do tego dodać coś o pisaniu aplikacji okienkowych, dostępne sposoby i najlepsze kompilatory
do tego, korzystać z MUI czy zwykłego OS, czy z czegoś jeszcze?



Ostatnia aktualizacja: 01.04.2020 19:13:06 przez mateusz_s
[wyróżniony] [#2] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #1

O Panie... to jest temat rzeka i nie na głowę jednego speca.
Jak nigdy na niczym nie programowałeś w asmeblerze, ale masz doświadczenie w programowaniu, to oczywiście polecam C. I np. możesz zacząć od framework: ACE To jest sprawka naszych chłopaków z forum, więc pewnie Ci będą też w stanie coś pomóc. Framework to mega pomoc, ale ogólnie i tak nie jest lekko.
Kompilator C cały i gotowy gcc pod Docker: Bebo
Można też kompilować na Amidze, ale to musisz sobie zainstalować stare gcc 2.9 chyba, albo jakiegoś SAS C lub Storm C, ew. VBCC.

Co do jaki konfig... To zależy, czy chcesz pod to pisać, czy na tym pisać. Bo ogólnie osobiście nie polecam pisania na Amidze, choć sam kiedyś próbowałem wszystko na Amidze, to jednak emulator rządzi :/ Jak napiszesz grę na pkt. 3 (060+GFX) to zagra w nią garstka osób, bo mało kto ma 060 i GFX (pozostaje emulator). Dlatego najwięcej osób celuje w A500 1MB, lub Amiga 1200 ew. Fast. Nawet na A500 1MB można programować system friendly w C, ale napocisz się i tak coniemiara i nie uzyskasz takiej szybkości jak dobrym jeb...em po rejestrach Ale można walić po rejestrach w asemblerze, a zachować ustawienia systemu, pozamykać dźwięk itd i później to przywrócić i tak na pewno należy programować (w sensie zadbać o zabezpieczenie systemu, żeby po wyłączeniu gry, móc do niego powrócić).

Jak chcesz napisać Fallout 2 na Amigę, to tylko na 68060 GFX C+ASM

AD.3 Można otworzyć systemowo (i przeważnie tylko tak, chyba że napiszesz na daną kartę graficzną i masz dokumentacje gdzie są jakie rejestry za co odpowiedzialne), ale jak chcesz, później możesz pisać bezpośrednio do pamięci ekranu, nie koniecznie korzystając z jakiś funkcji RTG put pixel itd. (z tego co kojarzę, bo za wiele na rysowałem po karcie gfx w Ami).

W Amos też fajne rzeczy zrobisz. Próg wejścia jest sporo niższy, ale czym bardziej skomplikowane rzeczy będziesz chciał zrobić, tym więcej ograniczeń i obchodzenia bokiem, przez co więcej się nagimnastykujesz. C jakbyś chciał walić po rejestrach, to się namęczysz niemiłosiernie, ale później będzie już z górki. Ale lepiej skorzystać z framework ACE z C i próg wejścia nie będzie już taki wysoki, a elastyczność ogromna.

Ostatnia aktualizacja: 01.04.2020 21:35:54 przez flops
[wyróżniony] [#3] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #1

słowa kluczowe: picasso 96, RTG, cybergraphics, SAGA w Vampirze, czy to jest jakoś zuniwersalizowane? Tak żeby nie pisać 10 wersji pod kazdy sterownik. najcześciej słyszę o RTG - retargetable graphic, jak pod to pisać? czy ten ukłąd SAGA w Vampirze to obsłurzy czy pod Vampira trzeba pisać znowu osobno jakoś?

RTG to pojęcie ogólne, w Amidze oznacza skorzystanie z któregoś z dwóch systemów RTG: CyberGraphX albo Picasso96. Z tym, że P96 ma w sobie również emulację CGX. Więc jak chcesz pisać na wszystkie grafiki, używasz CGX.

Vampire o ile mi wiadomo, ma dwa podstawowe podukłady graficzne. SuperAGA jak sama nazwa wskazuje, emuluje układy AGA. Oprócz tego jest regularna karta graficzna, ze sterownikami Picasso96. Czyli można też używać API CyberGraphX.

Karty graficzne, które mapują swoją pamięć w pamięci adresowej procesora (większość), pozwalają na częściowo "niesystemowe" programowanie: otwierasz ekran systemowo, a potem wywołujesz funkcję LockBitMap(), która daje Ci bezpośredni dostęp do bufora ekranu, po którym możesz rysować procesorem. Tak samo można robić oczywiście z kartą graficzną Vampire, a ponieważ procesor Vampire ma bardzo szybki, jak na Amigę, dostęp do tej pamięci, można osiągnąć znakomite rezultaty.
[wyróżniony] [#4] Re: Omówienie sposobów programowania na Amidze..

@flops, post #2

To ja jako główny utrzymywacz ACE'a się wypowiem że używając go trzeba wiedzieć co się robi - poczytać do poduszki Amiga Hardware Reference Manual, czytać źródła ACE'a i zadawać mi pytania bo dokumentacja jest niekompletna. Albo patrzeć w źródła gier które z niego korzystają - jest już ich trochę na githubie. No i trzeba pamiętać że pisany jest niesystemowo, nie obsługuje on rzeczy z AGA (ale nie powinno być trudno ich obsługę dohackować) i może być trochę niestabilnie. Chyba tyle z ostrzeżeń co mi przychodzą do głowy. ;)

Niesystemowe pisanie to fajna przygoda i właściwie jest ono konieczne jeśli targetujesz słabsze konfigi (mało- lub nierozbudowane maszyny OCS i/lub ze starym kickstartem) i/lub chcesz naprawdę sporo wycisnąć. Nowe kickstarty mają już poprawione funkcje, które są wolniejsze niż pisanie na golasa, ale i tak można nimi sporo poczarować. Na kicku 1.3 nie zrobisz sobie tak łatwo bitmapy w trybie interleaved, który pozwala Ci oszczędzać na blitach, ale na 2.0 już tak. A na nowszych masz lowlevel library i parę innych wygodnych rzeczy. No i bez OS ciężko zrobić np. obsługę sieci i ściąganie hi-score'ów, bo jednak system Ci załatwia z kartami sieciowymi. Coś za coś.

Ostatnia aktualizacja: 01.04.2020 22:15:35 przez teh_KaiN
[#5] Re: Omówienie sposobów programowania na Amidze..

@flops, post #2

Dzięki za odpowiedzi..

Zainstalowałem sobie "karte graficzną" na WinUae żeby pooglądać przykłady z Amiblitz3,
jesli Ktoś ma Amigę z jakimś RTG albo Vampira to jest tu skompilowany przykład z wyświetlanym FPS, więc jeśli Ktoś ma możliwość to chętnie bym się dowiedział czy to bangla na innych systemach i z jaką prędkością..
https://we.tl/t-24ESzsa6gq

Teraz się trochę pozmieniało jeśli chodzi o te GFX'y bo niby sa te Vampiry co mają wszystko w sobie
i zdaje się nowe karty od icompu tez mają mieć od razu układ graficzny.

Na razie programuje sobie na A1200 AGA + lekkie dopalenie (traktuje to jako minimum) , na Blitzu.. na WIN jak coś robie to w C/C++ ale to w Visual Studio wiec całe IDE jest skonfigurowane od razu, probowałem zrobić toolchain z C pod windowsa ale mnie szlag trafiał, przy recznym konfigurowaniu tego..
[wyróżniony] [#6] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #1

A ja napiszę szybko. Napisz do Juena, on prawdę Ci powie😉
[#7] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #5

tu ta sama paczka ale z jakimis dodatkowymi bibliotekami blitza bo wymaga:
https://we.tl/t-rpNqGsTVEZ

Ostatnia aktualizacja: 02.04.2020 00:31:39 przez mateusz_s
[#8] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #7

a tak z czystej ciekawości jeszcze.. to czy te amigowe karty graficzne czy tam układy maja jakieś swoje funkcje, coś przyśpieszają same z siebie? Czy po prostu wszystko obliczane jest na karcie np. 060 i tylko szybko przerzucane do pamieci karty graficznej?
[wyróżniony] [#9] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #8

Niektóre mają własne blittery, dużo bardziej wydajnie niż amigowy (nie zawsze sterowniki je wykorzystują, choć w wielu nowych kartach jak najbardziej - ta np.). Były też karty graficzne dedykowane do kart PPC takich jak BlizzardPPC np. BVisionPPC które miały nawet akcelerator 3D (Permedia 2). Jeżeli pisałeś pod Warp3D (taki jakby amigowy coś ala glide/directx) to, to robiło ogromną różnicę w porównaniu z liczeniem wszystkiego na 68060 lub PPC603.
Tutaj masz na 68060 z akceleracją: QuakeGL68060 320x200 16bit GLQuake800x600 16bit
A tutaj full software bez akceleracji: Quake1 68060 320x200 8bit

Ostatnia aktualizacja: 02.04.2020 02:44:46 przez flops
[#10] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #1

ad 1. Królowa czyli jedyny prawdziwy klasyk oryginalna konstrukcja z 1983 w różnych odmianach produkowana do 1992.
OCS cud techniki w 1983. ECS mały litfing w 1988.
Kodowanie nie pod system jak pisałem na swoim blogu:http://owbreaction.wordpress.com
Fajna zabawa dla kogoś na emeryturze kto już zarobił tyle kasy że nie musi nic robić i ma kasę na wynajęcie mających talent do pixelartu i rozumiejących co się do nich mówi grafików.
Problem ze wsadem graficznym.
Ciężko znaleźć ludzi rysujących pixel art w 1,2,3,4 bity swobodnie się między tym przełączających.
Przymitywny cell shading nie działa, trzeba ręcznie poustawiać pixele i mądrze dobrać paletę.
Do tego trzeba opanować biegle ponad dwieście rejestrów chipsetu.

O problemach najlepiej świadczy fakt że w zasadzie po 1992 nikt nic nie zrobił pod to czegokolwiek wartościowego.
Jak jest coś na poziomie to same tylko wykopaliska.

Choć miło powspominać stare czasy i może kiedyś na emeryturze będę sobie działał na a500 z gotek na DPIV, AsmOne, PT.

ad 2. Wszystko od a1200 z fastem w górę ale bez karty graficznej. Słabsze NG.
AGA wiadomo za późno za mało.
Sprite nadal 16 kolorów, dualplayfield ciutkę lepiej niż OCS bo 16 zamiast 8 kolorów.
W zasadzie żeby otrzymać jakość z czasów a1200 gdzieś około połowy 1993 czyli tła i postacie 256 kolorów trzeba zrezygnować z większości chipsetu a grafika na samym cpu jest za wolna by się dobrze bawić w programowanie.

ad 3. Amiga z kartą graficzną. Rozsądny kompromis między czasem potrzebnym na kodowanie a wynikami.
Dwa standardy Picasso 96 i CGX.
Do 256 kolorów używa się funkcji z Amiga Os 3.1 które działają i tu i tu.
Więcej kolorów funkcje podobne ale różne.
Są bilioteki które emulują P96 na CGX i na odwrót. Choć te parę funkcji można się nauczyć.
[#11] Re: Omówienie sposobów programowania na Amidze..

@mateusz_s, post #1

Ja napiszę krótko:

Chcesz pisać pod system w C?

Jest szereg kursów na Aminecie. Polecam serdecznie ten oto pod nazwą "C Manual". Składa się z 12 odcinków poświęconych przeróżnym zagadnieniom: grafika, animacja, dźwięki, GUI itd.

http://aminet.net/search?query=cmanual

Amiga jest wydajnym komputerem z systemem wielozadaniowym, więc w prawidłowy sposób korzystając z jego zasobów - osiągnie się oczekiwane rezultaty.

Nie jest tak istotne, czy kodujesz pod OCS, AGA, czy RTG. Systemowe funkcje są jednolite. Przy czym pod OCS i AGA masz jeszcze dodatkowe wspomaganie sprzętowe.

Niektóre RTG mają jeszcze swoje funkcje np. do 3D.

Pamiętaj też, że apetyt rośnie w miarę jedzenia. Postaraj się opanować jedną platformę, i nie przechodzić wyżej przez pewien czas.

Najważniejsze też to przeczytać ROM Kernel Reference Manual. To lektura obowiązkowa. Znajdziesz ją w Internecie, jak również na płycie Amiga Developer CD wraz z setką innych materiałów, przykładów i narzędzi.

Napisz też co chcesz napisać i osiągnąć? Bo to też ma ogromne znaczenie przy wyborze narzędzi.
[#12] Re: Omówienie sposobów programowania na Amidze..

@Hexmage960, post #11

I najważniejsze - ile % społeczności ma w to zagrać? Bo RTG to jest niszowa sprawa, AGA to już jest jakiś rozsądny podzbiór ale wciąż są ludzie którzy takich maszyn nie mają. Tylko jak wpadniesz w pułapkę "ma działać u każdego" to witamy w piekle z kickstartem 1.3 z zabugowanymi funkcjami, brakiem szybkiego procka i konfigiem pamięci 512+512. A nawet jak założysz silniejszy konfig od początku to znajdzie się mędrzec jeden z drugim co Ci powie "hurrr można było zrobić na stockową A500 durrr" ;) Ja z tej pułapki powoli wychodze, przez co targetuję niedopalone Amigi z FAST RAMem i trochę większą ilością CHIPu niż stock. Upgrade'y względnie tanie i proste, a można się mniej ograniczać przy planowaniu co produkcja ma mieć a czego nie mieć.

I tak, dobieraj narzędzie pod to co chcesz osiągnąc. Jak kółko i krzyżyk to pisz pod system, jak coś dynamicznego to chyba jednak niesystemowo, jak quake to zmień platformę. ;)

Ostatnia aktualizacja: 02.04.2020 10:48:10 przez teh_KaiN
[#13] Re: Omówienie sposobów programowania na Amidze..

@swinkamor12, post #10

W tej oryginalnej konstrukcji to w 1983r nic nie działało jeszcze. W 1984 coś działało, co można było pokazać, a dopiero w 1985 listopadzie weszło do sprzedaży. Trzymajmy się faktów, a nie róbmy propagandy.
Część forumowiczów już jest na emeryturze, to ten czas. Pisz póki jest dla kogo Świnkamor12.
[#14] Re: Omówienie sposobów programowania na Amidze..

@flops, post #13

Programowanie "po bandzie" tzn. bezpośrednio po rejestrach - niesystemowe jest jak najbardziej możliwe w przypadku Vampira ( patrz https://wiki.apollo-accelerators.com/doku.php/saga:registers:start ). Tylko i wyłącznie ma to sens jeśli program ma być dedykowany Vampirowi. Lepiej jest po prostu skorzystać z funkcji CGFXa (API P96 jest chyba mniej popularne). Zawsze można zrobić tak jak pisał prof. Krashan - zablokować bitmapę, jechać bezpośrednio po pamięci ekranu (screen->rastport->bitmap->*planes albo funkcja LockBitMapTagList z GFX), odblokowac bitmapę. Najlepiej otworzyc sobie okienko BORDERLESS na cały ekran i rysować "po bitmapie" tego okienka.
W ten sposób napisany program powinien działać na wiekszości konfigów RTG (chyba ze procesor ne ma dostępu do tej pamięci, co się chyba nie zdarza w amigowych kartach RTG).

PS. Piszę/napisałem właśnie prosty program w E który coś takiego własnie robi + różne udziwnienia w stylu otwieranie ekranu w wybranym formacie koloru (pixel format). Straszna sieczka ale pisane wyłącznie w celach edukacyjnych ok, racja
Jeśli ktos się nie boi oglądać takiej bazgraniny bez komentarzy to mogę przesłąć - nie biorę odpowiedzialności za ewentualne usterki w sprzęcie bądź psychice



Ostatnia aktualizacja: 02.04.2020 12:29:45 przez pisklak
[#15] Re: Omówienie sposobów programowania na Amidze..

@flops, post #13

Działało końcem 1983. Pokazane w czerwcu 1985 a w sprzedaży od września 1985.
Trzymajmy się faktów, a nie róbmy propagandy.
Kodowaniem w stylu starej dobrej Amigi 500 może się zajmę,
jak będzie Mi się chciało, jak będę na emeryturze za ćwierć wieku.
Do tego czasu tylko karta graf. jak ktoś nie ma niech se kupi.
[#16] Re: Omówienie sposobów programowania na Amidze..

@swinkamor12, post #15

W mojej ocenie Amiga doskonale sprawdziła się bez karty graficznej.
AGA Potrafi naprawdę dużo, wystarczy spojrzeć na dorobek gier pod AGA.
W mojej ocenie po prostu dzisiejsi programiści zupełnie nie umieją odkodowac dobrego sposobu na programowanie. Pruboja po pecetowemu a nie tędy droga.
Dla mnie jedynym ograniczeniem AGA. to zbyt mała rozdzielczości.
[#17] Re: Omówienie sposobów programowania na Amidze..

@WojtekX, post #16

Możesz pokazać że się nie znajom a ty jesteś ekspertom.
Najlepiej robiąc jakąś grę na AGA 030 max.
Postacie i minimum dwie warstwy w 256 kolorach.
[#18] Re: Omówienie sposobów programowania na Amidze..

@swinkamor12, post #17

Przypominam, że są małe przykładziki z różnych języków, dla ludzi którzy chcą się pobawić w programowanie na Amidze. Przydało by się, żebyście dorzucali swoje przykłady. Amiga programming examples.

#15 Nie mam teraz książki pod ręką, ale na CES tylko cudem im się udało złożyć i uruchomić coś co działało, więc nie wiem jak ten Twój blitter i chipset śmiagał w 1983. Nawet na hucznej premierze bali się, że coś się wysypie. O różnicy między prototypem, ogromie pracy, żeby produkt doprowadzić do końca nie będę pisał, bo z Tobą polemika nie ma sensu.
#16 AGA swoimi możliwościami na 1992 była ok i jak nie raz tutaj wielu speców pisało, AGA to nie problem. Problem to wolny procek i brak fast ram. Bo co z tego że mamy 1280x512 w 256col, jak gry przeważnie były 320x256 bo inaczej procek się krztusił. Nie miał tyle mocy, żeby ogarnąć kuwetę
#17 To podłącz kartę graficzną i na 030 zrób to samo i pokaż, że jest przepaść pomiędzy AGA a kartą.
[#19] Re: Omówienie sposobów programowania na Amidze..

@flops, post #18

Uruchom se Magic Dizzy na DosBoxie. A potem na Amidze. Zobaczysz na własne oczy o co chodzi.
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