kategoria: ANSI C
[#1] jak zacząć programowanie Amiga 500 oraz 1200 w C
cześć

jestem programistą PC i szukam pomocy z rozpoczęciem programowania na Amigę 500, którą posiadałem w latach 90tych :P
Mam uruchomioną Amigę 1200 przez WinUAE z Workbench 3.1

Spędziłem 2 wieczory na przeszukiwaniu internetów i spotkałem się z różnymi informacjami na ten temat, więc postanowiłem poprosić o pomoc tutaj :)

Na tą chwilę udało mi się skompilować "hello world", czy ktoś może mnie pokierować co i w jakiej kolejności przestudiować, aby móc napisać własną grę opierającą się o elementy 3D ?

Kwahu
[#2] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #1

Masz do wyboru: AMOS, Blitz Basic, Assembler 68k, C lub C++ do wyboru do koloru. :]
[#3] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Stoopi, post #2

Hej, jestem zdecydowany na C + asm, ale nie czuje się na siłach pisząc własne funkcje w adm, chciał bym nauczyć się wykorzystywać istniejące rzeczy pisane w adm, ale za pomocą programowania logiki w c
Nie wiem jak sobie z tym poradzić , chyba mam problem z tym że trzeba coś linkować, a na tym się już nie znam
[#4] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #1

Przestudiuj wszystkie RKRM. Chociaż tak na szybko to może Amos3D.
[#5] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #3

Piszesz że programujesz na PC. Jeśli programujesz w C++ to programuj na Amidze w dalszym ciągu na C++.
[#6] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #1

Jak bardzo pewnie czujesz się w języku C/C++? ;)

Ostatnio był tu taki wątek a tu jest chyba mój pierwszy na PPA. Jest tam parę linków i opinii, które Cię na co-nieco nakierują.

Pisanie w asemblerze można robić dwojako - albo wołając funkcje systemowe (minimalny przyrost prędkości względem C) albo robiąc wszystko samemu wrzucając odpowiednie liczby w rejestry chipów (też da radę w C, bo masz je jako pola globalnej struktury Custom). 3D na Amidze zrobisz albo bardzo uproszczone, albo bardzo klatkujące - chyba że masz kartę turbo. Tak czy inaczej praktycznie wszystko robisz CPU (chyba że blitterem rysujesz linie i wypełniasz polygony) więc dowolna libka do 3D na pecetowego dosa zrobi za Ciebie robotę, tylko będziesz musiał ją trochę przerobić. Możesz sobie popatrzeć na kod Cahira albo na kod ACE'a (ale tam panuje bajzel).

Przy 3d niezbędna będzie konwersja chunky2planar. Poczytaj sobie jak Amiga trzyma grafikę w RAMie (planar graphics) a jak pecet (chunky graphics), odkryjesz dzięki temu ograniczenia pierwszej konwencji i konieczność robienia w drugiej a następnie konwersji do planara. Tyle na początek, zadawaj pytania. ;)

Ostatnia aktualizacja: 13.07.2018 14:40:35 przez teh_KaiN
[#7] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #1

Jeśli piszesz na PC to na Amigę i NG masz do dyspozycji bibliotekę SDL. Na AOS4 masz też bardzo fajną moim zdaniem bibliotekę Allegro. Na A500 nie poszalejesz z 3D chyba, że faktycznie myślisz o Amosie3D i prostych wektorówkach jak Frontier czy jakiś wektorowy FPS.
Gry pokroju Quake 1 to najmocniejszy konfig z 040 w górę.
[#8] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #1

Jezeli chodzi o "Amige klasyczna" bez procesora powerpc (i karty graficznej) musisz napisac wlasny silnik 3d badz uzyc jakiegos dostepnego na sieci (aminet?). Mozesz tez sprobowac napisac cos w Amosie i uzyc Amosa3d. Nie uswiadczysz jednak tu zadnego OpenGL'a, DirectX'a oraz innego wspomagania 3d bo takowego Amiga nie ma.
Do tego Amiga 500 ma tylko 7MHz wiec nawet jak napiszesz swoj super silnik to nie bedzie on mial raczej teksturowania nie bedzie rysowal super obiektow 3d etc.
Na jakiekolwiek wsparcie 3d mozesz liczyc majac Amige z karta graficzna ze wsparciem 3d. Nie licz jednak na jakies silniki, tu tez trzeba je napisac.
Natomiast jak juz masz maszyne na ktorej mozesz uruchomic MorphOS/OS4 to tu juz jest jakies wsparcie 3d i juz mozna programowac uzywajac wspomagania 3d "na start".
Nie pisze oczywiscie by Cie zniechecic, plusem pisania na "takie Amigi" jest to ze mozesz sie duzo wiecej nauczyc odnosnie samych silnikow, optymalizacji, etc.

Ostatnia aktualizacja: 13.07.2018 15:39:14 przez stefkos
[#9] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #1

Takie gry 3D powstały na Amigę 500 (ZeeWolf, ZeeWolf 2):

Także raczej bez tekstur, tylko wypełnione wielokąty, ale wygląda to ładnie.

Jest też biblioteka do grafiki 3D na Aminecie. Swego czasu testowałem - działa fajnie.

http://aminet.net/package/util/libs/graphics3d

To tyle jeśli chodzi o "elementy 3D". Co do pisania gier w C na Amidze. Jest szereg manuali na Aminecie, oraz - polecana przeze mnie - płyta Amiga Developer CD.


[#10] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@teh_KaiN, post #6

dzięki za referencje!!! :) będę studiował
[#11] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@stefkos, post #8

napisałem kiedyś "swój" silnik 3D w asemblerze na PC, miałem proste cieniowanie i teksturowanie
na amidze przeraża mnie natomiast jak czytam, że nie da się od tak narysować pixela, ale trzeba robić jakieś czary na dedykowanych układach...
[#12] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #11

OK wiec masz juz jakas wiedze, to dobrze.
Jak chcesz robic na a500 zapomnij o teksturowaniu, bierz sie raczej za wektory.
Dokladnie nie da sie narysowac pixela od tak w "szybki sposob", poczytaj o chunky to planar.

http://oldwww.nvg.ntnu.no/amiga/amigafaq/AmigaFAQ_16.html

Ostatnia aktualizacja: 13.07.2018 16:32:31 przez stefkos
[#13] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #11

Na Amidze CD32 narysujesz piksele łatwo. Na Amidze 500 jest to trudniejsze, ale też bitplanów jest mniej, więc chunky byłoby marnotrawstwem.

Jeśli chcesz uzyskać efekt przeźroczystości lub łączenia barw - to budowa planarna przydaje się doskonale i odbywa się to bez dodatkowych kosztów.

Ostatnia aktualizacja: 13.07.2018 17:04:26 przez Hexmage960
[#14] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Hexmage960, post #13

muszę uzupełnić wiedzę bo połowy tego co mi piszecie nie rozumiem :P
zapoznam się z linkami jakie mi zaproponowaliście i odezwę się z moimi wnioskami :)
dzięki
[#15] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #1

Gry 3d na Amidze 500 to nonsens.
Odrazu zmien sprzet na A1200 + karte turbo (o ile masz kupe kasy) albo odejmij jeden wymiar ze swoich planow, bo szybko twoje plany sie wypala.
[#16] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #14

moim zdaniem poki co nie ma sie co brac za 3d, ja bym sie raczej skupil na scrollach, w tym tkwila sila amigi:)
[#17] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@selur, post #15

Hej,

tutaj jest koncept mojego pomysłu zrobiony w Unity 3D:
https://www.youtube.com/watch?v=tdr0ifcizxs

Polega to na tym, że renderuje "offline" 4 kamery po 90 stopni
rysuję to na plane o szerokości 1024px w pamięci
następnie wyświetlam odpowiednią jego część na ekranie umożliwiając graczowi rozglądanie się za pomocą myszki

poruszanie zrealizowane jest poprzez robienie "zoom" kamerą, a następnie wyliczanie o jaką odległość należy przemieścić kamery i ponowne wyrenderowanie "offline" tych 4 kamer po 90 stopni, co w sumie tworzy taką panoramę 360 za każdym razem

interesuje mnie ile poligonów jest w satnie Amiga 500 narysować w ciągu 1 sekundy
[#18] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #17

a tutaj pokazane sa mozliwosci Amigi kontra sredniowieczne PC klik.
Jak widac jakosc i szybkosc grafiki 3D na Amidze "nie powala". OCS'owy bliter moze skopiowac okolo 2,5MB danych w ciagu sekundy a ile to jest poligonow, to nie wiem
[#19] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #17

Czytałeś o bitplane'ach i chunky vs planar? Jak tak to odpowiadając na około opowiem Ci trochę rzeczy:

- Amiga ma blitter do operacji 2D, który umie kopiować prostokątne regiony pamięci - każdy bitplane osobno lub wszystkie naraz jeśli je drobnym hackiem inaczej zorganizujesz w pamięci.

- Na Amidze w C, pomijając czas na przeliczenie logiki gry, jestem w stanie wyblitować coś koło 20 obiektów 16x20 żeby zachować 50fps. Na to się składa zamalowanie ich na ekranie zapamiętanym tłem, zapamiętanie tła pod nową pozycją, namalowanie na nowej pozycji.

- W zależności od tego czy blitujesz z maską czy bez, Blitter działa z inną prędkością. Z maską jest najwolniej, bez maski najszybciej.

- Oprócz tego blitter ma tryb rysowania linii, który działa z najwolniejszą prędkością blittera - wszystkie dema na Amigę rysujące wielościany z niego korzystają - możesz sobie policzyć ile tam jest tych ścian.

- Oprócz tego blitter ma tryb wypełniania wieloboków, którego jeszcze nie używałem - jest w tej samej wolnej klasie prędkości i dzięki temu trybowi bryły z demek są wypełnione.

- Jak pisałem pierwszą grę to chciałem za każdym razem czyścić ekran blitterem i rysować wszystkie kafle mapy od nowa - zapomnij, nie wyrobi się. Czyszczenie ekranu 32-kolorowego zajmuje większość jak nie cały czas jednej klatki.

- Amiga nie ma hardware'owego skalowania, więc zapomnij o takim zoomie przy przechodzenia z miejsca na miejsce bez jakiś turbo hocków klocków. W sumie zawsze mnie zastanawiało jak w demach robią skalowanie całego ekranu, więc może o czymś nie wiem i jednak się da.

To ile polygonów wyciśniesz jest zależne od liczby kolorów na ekranie (nie wychodziłbym poza 16, a najlepiej 8) i od tego jak szybki będzie Twój silnik 3D. Nie masz tu absolutnie żadnego wsparcia sprzętowego prócz rysowania linii i wypełnienia, więc musisz zrobić wszystko sam. Żeby wiedzieć ile można wycisnąć popatrz na grę Zeewolf (ale odpal na emulatorze w trybie cycle exact lub na Amidze żeby zobaczyć prawdziwą prędkość) lub Robocop 3. O cieniowaniu zapomnij. ;)

Chipset A1200 czyli AGA jest szybszy i masz mniejszą karę w prędkości za więcej kolorów, więc może lepiej na tym sprzęcie się skup. No i masz szybszy procesor, więc...

Wszystkie te produkcje amigowe co wymagają procesorów 060 i mają 3D porównywalne z późnym pecetowym DOSem to robią to tak, że praktycznie wszystko robi procesor w pamięci FAST, po czym klatka przerzucana jest do CHIP skąd idzie na ekran.

Ostatnia aktualizacja: 20.07.2018 09:02:39 przez teh_KaiN
[#20] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@teh_KaiN, post #19

hej, dzięki za odpowiedzi
póki co nie zniechęciłem się jeszcze oczywiści 14MHz może się okazać koniecznością ;)

mój pomysł opiera się o rendering "offline" więc to jest kwestia tego ile się da wyświetlić w ciągu 1-2 sekund

pytanie czy jest dostępny w C taki silnik 3D, w którym mógł bym się skupić na napisaniu samej części odpowiedzialnej za renderowanie panoramy 360 zamiast uczyć się rysować trójkąty ;)
[#21] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #20

Hexmage coś Ci rzucił wyżej. Wiele gier tego typu nie było, więc może być krucho i być może musisz być pionierem ;)

Ostatnia aktualizacja: 20.07.2018 21:30:55 przez teh_KaiN
[#22] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@Kwahu, post #20

[#23] Re: jak zacząć programowanie Amiga 500 oraz 1200 w C

@] SKOLMAN_MWS ˇ agrEssOr [, post #22

Raycasting z wolfa się do tego nie nada (?), ADoom ma nowsze źródła na GitHubie. Tak czy inaczej nie wiem czy chcesz to opierać na doomie, czy jednak pójść w coś co pozwala rysować dowolne 3D bryły, bo Doom sam w sobie ma mapy 2.5D (x,y + wysokość) a reszta to obiekty 2D.

Ostatnia aktualizacja: 20.07.2018 22:55:17 przez teh_KaiN
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