kategorie: ANSI C, Blitz, C++
[#1] z RAMu bezpośrednio na ekran..
cześć,
posłużę się takim przykładem:

Aby na PC zrobić obracający się wyteksturowany sześcian z antialiasingiem, potrzebuje jedynie funkcji która szybko wywali mi zawartość bufora pamięci na ekran. Wszystkie obliczenia robie sobie sam a wynik wstawiam do bufora pamięci o rozmiarze np. 640x480x3 w formacie RGBRGBRGB.. itp.. np. pisząc bezpośrednio pod WinAPI uzywam do tego celu funkcji BitBlt, za jej pomocą zrobiłem również bardzo płynny wyświetlacz sekwencji obrazków (taki RAM player).

Podsumowując, korzystałem tylko z mocy procesora i podstawowych funkcji C++.

Jak wygląda to na Amidze 1200? Można zrobić podobnie na C lub AmiBlitz? Z tego co widzę to wspomaganie jest pod sprajty. Przy podstawowych prockach takie spomaganie miało sens, ale jeśli można teraz miec procek 40,60,80 i sporo pamieci to i takie programowanie powinno mieć sens.

Dajmy strzelankę typu GalagaAGA, tu wiadomo mozna sie posłużyć zwyklymi sprajtami i wposmaganiem Blitera i Coppera, ale co jesli chciałbym dodać jakieś efekty typu. mieszanie kolorów, deformacje.. po prostu coś wiecej niż kolejna scrollowana strzelanka ze sprajtami 32x32? Przecież mógłbym wszystko sobie wstawić w buffor i wywalic na ekran..

Ostatnia aktualizacja: 05.01.2020 22:20:08 przez mateusz_s

Ostatnia aktualizacja: 05.01.2020 22:21:14 przez mateusz_s
[wyróżniony] [#2] Re: z RAMu bezpośrednio na ekran..

@mateusz_s, post #1

Polecam zapoznac sie z tym watkiem link
[#3] Re: z RAMu bezpośrednio na ekran..

@Phibrizzo, post #2

Dzięki,
faktycznie jeden z postów dobrze to wyjaśnił co i jak,
teraz wiem czego szukać..
[#4] Re: z RAMu bezpośrednio na ekran..

@Phibrizzo, post #2

Jeśli chciałbym coś pokodowac na Amidze w tym trybie C2P - czyli kopiując to co sobie obliczyłem w pamięci FAST do pamięci CHIP to na czym to najlepiej robić? Amiblitz3 czy jaki kompilator C/C++? Te funkcje C2P bierze się z biblioteki amigowej czy lepiej uzyc kodu przez kogoś napisanego? W tym wypadku to funkcja C2P będzie wąskim gardłem, pytanie skad wziąć najszybsza?
[wyróżniony] [#5] Re: z RAMu bezpośrednio na ekran..

@mateusz_s, post #4

Tu rowniez podlacze moj watek

Dalem tu przyklad co_i_jak. Zajrzyj do zrodel.
Jest tam juz gotowa procedura C2P skompilowana do pliku #?.o

Edit. znalazlem bardziej rozbudowany przyklad z dwoma efektami. Daj znac jakbys chcial.


Ostatnia aktualizacja: 05.01.2020 23:03:05 przez Phibrizzo
[wyróżniony] [#6] Re: z RAMu bezpośrednio na ekran..

@mateusz_s, post #4

A rozsądne kompilatory (C/C++) są dwa:

- GCC od Bebbo - tego używam, ma swoje humory, ale przeważnie kolejny build je naprawia
- GCC 8.3 + GDB + vscode extension + uae - nie tak aktywnie rozwijany ale masz wszystko podane na tacy

Tylko wiedz że zabawa w C2P to jest raczej domena rozbudowanych konfiguracji - jeśli chcesz targetować golasy, czy to AGA, czy OCS to musisz się wgryźć w to co umie hardware Amigi - oprócz wspomnianych sprite'ów jest też blitter, który potrafi kopiować niczym wspomniane przez Ciebie BitBlt - tyle tylko że z pamięci CHIP do CHIP. No i tu już nie poszalejesz z transformacjami, bo Amiga przyjmuje grafikę w trybie planar. Ale jakieś cyrki na palecie kolorów zawsze możesz odstawić, copperem chociażby.

Dla porządu przytoczę linka do libki którą rozwijam w C od ponad 6 lat - nawet jak nie chcesz jej używać to masz tam mnóstwo udokumentowanego kodu gdybyś chciał ominąć system i jeździć sobie po rejestrach chipów nie babrając się w asemblerze. ;)

Ostatnia aktualizacja: 05.01.2020 23:10:18 przez teh_KaiN
[#7] Re: z RAMu bezpośrednio na ekran..

@teh_KaiN, post #6

Powiedzmy ze interesowały by mnie Amigi z rozszerzeniami 40/60/80 ale bez kart graficznych. Czy nawet na takich prockach nie byłoby możliwe uzyskanie np. 25fps w rozdzielczości 640x400 z użyciem C2P? Czy bez karty graficznej tego się nie da przeskoczyć?
[wyróżniony] [#8] Re: z RAMu bezpośrednio na ekran..

@mateusz_s, post #7

Nie da się. Teoretycznie max transfer do pamięci chip to 6,9 MB/s w PAL.
Praktycznie najszybsze 060 wyciągają 4,9 MB/s eab Which is the fastest software C2P 1x1 routine. Jak 060 nie robi nic innego jak tylko c2p.
Na 640x400 256 kol. 25 fps potrzeba 6,4 MB/s a na 640x480 256 kol. 25 fps potrzeba 7.6 Mb/s.
Tylko karta graficzna. Pewno będzie też potrzebny lepszy cpu od 060 czyli vampir lub ppc.


Ostatnia aktualizacja: 06.01.2020 10:14:49 przez swinkamor12
[wyróżniony] [#9] Re: z RAMu bezpośrednio na ekran..

@mateusz_s, post #7

Dla rozdzielczości 640x400 uzyskasz nawet 50fps, ale nie przetwarzając wszystkich 256 000 pikseli ekranu, tylko ich część. Na Amidze CD32, jeśli wierzyć zapewnieniom producenta, uzyskasz 7 000 000 pikseli na sekundę co daje 140 000 pikseli na ramkę (1/50s).

Na Amidze, jak zresztą na innych sprzętach typu PC, trzeba optymalizować. Jeżeli chcesz wprowadzić efekty na żywo typu łączenie kolorów, niekoniecznie musisz robić C2P. Możesz posłużyć się przygotowanymi odpowiednio paletami kolorów.

Jeżeli jednak potrzebujesz C2P, żeby łączyć kolory, rób to na powtarzających się elementach ekranu, a nie na całym ekranie. Zaoszczędzisz wówczas czas procesora. Takie powtarzające się elementy możesz wówczas duplikować np. za pomocą Blittera.

Poza tym w grze typu Galaga warto skorzystać ze sprzętowego przesuwu ekranu.
[wyróżniony] [#10] Re: z RAMu bezpośrednio na ekran..

@mateusz_s, post #1

Polecam zapoznać się z programem FBlit, źródła programu są dostępne tutaj.
[wyróżniony] [#11] Re: z RAMu bezpośrednio na ekran..

@mateusz_s, post #7

Na 68080 bez problemu osiagniesz ponad 25 FPS. Z tego co wiem to HOMM2 tez dziala w pelnej szybkosci na 68060 w trybie 640x400.
[#12] Re: z RAMu bezpośrednio na ekran..

@Don_Adan, post #11

Dzięki WSZYSTKIM za odpowiedzi.. wiele się dowiedziałem :)
[#13] Re: z RAMu bezpośrednio na ekran..

@Don_Adan, post #11

No ale to na RTG, które siędzi w jednym chipie z CPU

Ostatnia aktualizacja: 07.01.2020 17:07:30 przez _arti
[#14] Re: z RAMu bezpośrednio na ekran..

@_arti, post #13

Nie do konca, bo Vampire ma duzo wyzszy transfer do wlasnego chip ramu, chyba do 500MB/s. Wiec to bez znaczenia czy to RTG. No i to jest dalej tylko SAGA., ktora implementuje AGA.
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