kategoria: AMOS
[#31] Re: Agonia w AMOS-sie...

@swinkamor12, post #30

No ręce opadają. Czy ty, drogi kolego, przeczytałeś w ogóle komentarze?
[#32] Re: Agonia w AMOS-sie...

@Umpal, post #31

miałem napisać to samo ;)
kolega o 060 pisze a okazuje się że takie rzeczy da się zrobić na a500

ale wracając do tematu...
sporo jest do optymalizacji, patrząc z grubsza na kod.
no aż mnie korci aby spróbować zrobić to w Blitzu ze wszystkimi rzeczami które odpuściłeś. tzn dual playfield sprite'y, itp
wstaw gdzieś grafikę w surowiej formie to chętnie się pobawię, albo przynajmniej się zastanowię czy jest sens ;)
C
[#33] Re: Agonia w AMOS-sie...

@retronav, post #32

Grafika jest w archiwum w pierwszym poście OK
[#34] Re: Agonia w AMOS-sie...

@Umpal, post #28

Co konkretnie robi ta fraza: A=I mod 2=0
[#35] Re: Agonia w AMOS-sie...

@cholok, post #34

Tam jest błąd, powinno być X2 (zamiast I). Sprawdza, czy pozycja X2 jest podzielna przez 2. Jeśli tak, to jest parzysta, jeśli nie, to nieparzysta.
Ale teraz widzę, że bez tej linii też dobrze działa, bo wyżej wprowadziłem dodatkowy warunek, dlatego to Else może być w zasadzie wyrzucone. Jak pisałem, to był szybki kod na potrzebę testu, stąd kwiatek ;)


Ostatnia aktualizacja: 12.03.2017 18:46:06 przez Umpal
[#36] Re: Agonia w AMOS-sie...

@Umpal, post #35

Uwagi swinkamora sa tak cenne, jak dziesiata czesc polskiego grosza

Na pewno poczatkujacy beda mieli gratke do rozkminania ale ja chcialbym wyjasnic to, na co zwrocil uwage cholok, bo mnie zajelo dobre 10 minut zanim wyczailem ta konstrukcje. Nawet nie wiedzialem, ze zapis A=x2 mod 2=0 jest dozwolony i prawidlowo oblicza wartosc calego wyrazenia ale z tego co widze, to zapis mial wygladac tak

A=X2 mod 2

if A=0 
...
else
...
end if


bo mod - czyli operator (modulo), calkowita reszta z dzielenia liczb calkowitych. Zatem jesli przez liczbe 2 podzielimy jakakolwiek liczbe parzysta calkowita, to modulo bedzie wynosic zawsze 0, w innym przypadku bedzie to wartosc wieksza od 0.
OK
[#37] Re: Agonia w AMOS-sie...

@Umpal, post #28

Piękny kod, zazdroszcze. Nie to co ten mój amosowy syf co ja tworze.
[#38] Re: Agonia w AMOS-sie...

@Umpal, post #28

O, cholera! A ja myślałem że to będzie w Amalu zrobione. OK Dzieki za wstawienie kodu, dla mnie bomba bo rozkminiam właśnie przesuw w Amosie i jego ograniczenia w dualplayfieldzie.
[#39] Re: Agonia w AMOS-sie...

@selur, post #36

zapis A=x2 mod 2=0 nie wywołuje błędu, ale wartość przypadkowo jest prawidłowa

Przykład:
a=1
b=2
a=b=3
? a,b

Wynik:
0 2
[#40] Re: Agonia w AMOS-sie...

@selur, post #36

Zapis A=X2 Mod 2=0, choć rzeczywiście wygląda osobliwie, jest jak najbardziej poprawny. =0 na końcu jest opcjonalne i ja je wykorzystuję do sprawdzenia, czy wynik wynosi True (-1) lub False (0). W dokumentacji do Amosa tego nie znajduję, ale taki operand jest stosowany w bardziej wymagających sytuacjach (bardziej żeby skrócić kod niż uzyskać niemożliwe w innym przypadku).

@Sordanie, nie przejmuj się. Gdybym ci pokazał moje pierwsze źródłówki (wciąż je trzymam), to byś się za głowę chwycił. Ja nie znałem nawet tablic, a już coś tworzyłem. Nieważne. Istotne jest to, czy idziesz do przodu. Z czasem robi się postępy i na pewno następują one też u ciebie (porównaj swój pierwszy kod z tym, co masz dzisiaj). Poza tym, moje programowanie też pozostawia wiele do życzenia, ale nie zrażam się tym OK

@Stoopi - enjoy OK

Ostatnia aktualizacja: 12.03.2017 22:33:14 przez Umpal
[#41] Re: Agonia w AMOS-sie...

@Umpal, post #40

Dzięki za wyjaśnienie. Nie znałem tej sztuczki.
[#42] Re: Agonia w AMOS-sie...

@cholok, post #41

Sztuczka czy nie, ja sie zastanawiam w jakim przypadku ma to zastosowanie, bo w tym na pewno jest zbedne. Moze wtedy kiedy pierwsza i druga liczba jest zmienna... czort jeden wie
[#43] Re: Agonia w AMOS-sie...

@selur, post #42

Ma znaczenie dla fal, które zmieniane są co 2 ramki (w oryginalnym Agony nawet co 4, ale tutaj wszytko zwalnia, więc o tyle byłoby za dużo). Wyremuj tę linię i zobaczysz, że falują szybciej (co ramkę). W takiej postaci można wtedy wyeliminować również wszystko w Else, ponieważ ten warunek nigdy nie zostanie spełniony (A zawsze będzie równe zeru, ponieważ nigdzie indziej oprócz linii z modulo nie jest na nim wykonywane działanie). Nie doszukuj się w tym głębokiego sensu. Gdybym pisał tę grę, to na pewno zrobiłbym to bardziej składnie

Cieszę się, że kod, choć prosty, wzbudził rzeczową rozmowę. Tak trzymajcie, panowie. I zachęcam do zadawania pytań piszących swoje produkcje, czy po prostu uczących się tego języka. Nie obawiajcie się, nie będzie musieli zdradzać, nad czym pracujecie. Pytajcie bez obaw, że zostaniecie wyśmiani. Na poprawę kodu nigdy nie jest za późno OK
[#44] Re: Agonia w AMOS-sie...

@Umpal, post #43

Jak jeszcze można sprawdzić/wykorzystać działanie modulo z opcją =0 ukazuje poniższy wiersz, który sprawdza, czy rok jest przestępny:
W=(rok mod 4=0) and (rok mod 100<>0) or (rok mod 400=0)

Do zmiennej W przekazywana jest wartość True (rok jest przestępny) lub False (nie jest przestępny).
[#45] Re: Agonia w AMOS-sie...

@Umpal, post #44

O to jest bardzo ciekawe rozwiazanie z tym rokiem.

Uruchomilem ta prezentacje agony i powiem tak
w twoim kodzie wystarczy A=x2 mod 0 a jakakolwiek optymalizacja niewiele tu pomoze. Przy wrzucaniu na ekran co ramke, tak poteznej bitmapy jak to "drzewo z glazami", to musi zwalniac i nawet zastapienie sowy sprajtem nic tu nie pomoze ok, racja
[#46] Re: Agonia w AMOS-sie...

@selur, post #45

aha... Timer jest liczba calkowita, wiec zamiast T3# powinno sie uzywac zwykle T3.
[#47] Re: Agonia w AMOS-sie...

@Umpal, post #8

Dobra robota Piotrze. Zapewne robiłeś testy płynności (FPS) bez tła? Dlaczego pytam Twój kod może służyć jako porównanie płynności metodą którą zastosowałeś a metodą wykorzystaną w lekcji nr.6 AMOS-a konkretnie mam na myśli instrukcje AMAL-a fruwa tam sobie kilkadziesiąt ptaków a mimo to zachowana jest płynność. AMOS zawiera też 28 instrukcji assemblera.
[#48] Re: Agonia w AMOS-sie...

@miro_78, post #47

przyjrzałem się grafice i tej amosowej implementacj i pierwsza uwaga. Parallax scroll chyba w oryginale wyglądał inaczej, i chyba nawet da się go łatwiej zrobić, ale...
pytanko do wszystkich:
ktoś podejmuje wyzwanie optymalizacji w Amosie?
Ja dzisiaj po południu zacznę się przyglądać jak to zrobić szybko w BB.
C
[#49] Re: Agonia w AMOS-sie...

@selur, post #45

Dlatego w poście #29 napisałem w punkcie nr 2:
(...) należałoby zastosować:
2. Odczyt bloków graficznych 32x32 lub 16x16, lub nawet 8x8 (żeby blitter nie musiał rysować za dużo, a liczy się każdy cykl)

Oraz oczywiście nr 1:
1. Dual Playfield


Wszystkie bitmapy mają 32 kolory, podczas gdy te w Agony tylko 8 (i mniej). Różnica musi być i nie ma bata. Wg moich obliczeń zastosowanie tych i wspomnianych wcześniej rozwiązań pozwoli na uzyskanie ~20 klatek na sekundę. Różnica tych kilku w stosunku do [25 w] Agony napisanej w asemblerze po prostu musi być i to jest czysta nauka (choć tak niewielka różnica jak na język wysokiego poziomu byłaby symboliczna, z czym zapewne wielu by się zgodziło).

@T# - ten fragment skopiowałem z innego kodu (własnego), w którym potrzebowałem 'po przecinku' i tak jakoś zostało. Oczywiście nie jest potrzebne w tym przykładzie.

@Miro. Wyłączenie tła musiałbyś zastąpić instrukcją Cls (coś musi czyścić ekran żeby przygotować go pod nową scenę). To niestety zabiera tyle samo czasu, co wstawienie pełnoekranowego rysunku i w praktyce ilość FPS pozostaje ta sama (sprawdziłem). Lekcja nr 6, o której wspominasz, pokazuje po prostu kilka latających sprajtów - to nie ma prawa zwalniać, także nie ma w tym nic nadzwyczajnego.
[#50] Re: Agonia w AMOS-sie...

@Umpal, post #49

Trochę mi niektóre komentarze wjechały na ambicję i choć bardzo tego nie chciałem zrobiłem dual playfield. Jest lepiej niż myślałem OK. Za chwilę wrzucę wideo...
[#51] Re: Agonia w AMOS-sie...

@Umpal, post #50

Chciałem wrzucić wideo z prawdziwej Amigi, ale mi jakiegoś kwiatka robi i tło jest posiekane na plasterki (przedobrzyłem z "hakami" ). Wrzucam w takim razie z WinUAE. Na ekranie jest trochę bajzlu (w kodzie, to nawet nie wspominam - dawno takiego chaosu nie widziałem u siebie, ale pisane "na kolanie tuż przed egzaminem" pociąga za sobą konsekwencje ).

Plik wideo

Chcę się już od tego oderwać, bo mnie ta "gra" mierzi
[#52] Re: Agonia w AMOS-sie...

@Umpal, post #51

No to jeszcze ze sobą pogadam skoro śpicie szeroki uśmiech

Po dodaniu animacji wody spada na 26 FPS-ów (pod tym nieszczęsnym emulatorem, więc możliwe, że na prawdziwej A500/600 utnie ze 2-3 klatki). Jest jeszcze sporo miejsca na optymalizację, więc po teoretycznym dodaniu reszty do hipotetycznej gry nie ma bata, byłoby 20+ klatek jak nic. Niech ktoś teraz powie, że AMOS nie potrafi

Z innej beczki. Tak z czystej ciekawości pytam, jak to jest możliwe, że w oryginalnej Agonii copper prześwietla nie tylko kolor przeźroczysty, ale i nadaje "odcienia" rysunkowi (księżyc, chmury i góry). W Amosie albo copper świeci przez kolor 0 albo przez 1 - nie mogę go zmusić do nałożenia na siebie dwóch przejść tęczy. Tak to wygląda w grze:



Na wcześniej wspomnianych stronach, pomimo ciekawego i w wielu miejscach technicznego opisu, tego konkretnie wyjaśnienia nie widzę (albo nie rozumiem). Asemblerowcy/scenokoderzy moglibyście się wypowiedzieć, bo na copperze zjedliście chyba zęby.
[#53] Re: Agonia w AMOS-sie...

@Umpal, post #52

Co do optymalizacji nie jest tak rozowo jak sie wydaje. Po dodaniu logiki gry, calosc moze zwolnic o 100% a moze i nawet wiecej.


Amos ma wiele ograniczen w stosunku do tego co mozna wyczarowac na golej Amidze, wiec nie ma sie co dziwic, to nie assembler gdzie masz pelna kontrole nad Amiga, aczkolwiek jesli ktos zna dobrze coppera i blittera to i Amosie moze klepnac wlasna procedurke obslugi chipow, tylko po co mu wtedy Amos? Z prockiem 030 i pelna obsada Ramu (2Mb Chip + 2Mb Fast), Amos dziala podobnie jak program w asmie na A500 z 1MB Ram, zatem jest mozliwe osiagniecie tego co w asmie tyle, ze... kosztem nieporownywalnie wiekszym.
No i teraz pytanie, kto sie bedzie zachwycal np. klonem gry DUNE 2 w Amosie, ktora bedzie wymagac 68030 i 4MB Ram'u skoro na A500 z 1MB to bedzie chodzic tak samo ?
Z takim konfigiem to mozna grac w Exodusa, ktory zlozonoscia miazdzy Dune 2 (choc mnie osobiscie, Exodusowa grafika jakos nie powalila na kolana - C&C jest znacznie ladniejsze).
[#54] Re: Agonia w AMOS-sie...

@Umpal, post #52

Agony to była ćwierć wieku temu moja ulubiona gra na Amigę.
Potem oczywiście moją amigową grą nr 1 został Quake.
Ale Agony zawsze będzie zaraz po Quake.

Oryginał chodził na a500 1 MB i miał super grafikę.

Ten remake to profanacja.

Żeby to choć trochę się zbliżyło do grafiki w oryginalnej Agony są dwie możliwości:

1. przejść na C, pisanie pod system, chunky pixels i WPA8 - wtedy jest szansa że zadziała nawet na klasyku z 060 kartą graficzną i/lub blazewcp.
Wtedy algorytm może zostać ten sam - nakładamy warstwa po warstwie tło jedno, drugie, przeciwników sowę itd

2. przejść na C lub assembler i użyć w pełni chipsetu jak w oryginale.
amos jest za wolny i nie da razy w nim żonglować bitplanami, rejestrami jak w oryginale.
[#55] Re: Agonia w AMOS-sie...

@Umpal, post #52

Copper w Agony zmienia oba kolory co linię i jeszcze zmienia oba co klatkę co daje płynniejszy gradient, ale migający. Amosowy Rainbow ma ograniczenia do jednego koloru. Obejść to można przez użycie własnej listy coppera w Amosie, ale to wymagałoby przejęcia obsługi sprajtów, więc bez sensu.
[#56] Re: Agonia w AMOS-sie...

@swinkamor12, post #54

Ten remake to profanacja.


Nikt tu nie robi żadnego remejku. I nikt w tym wątku nie przejdzie na C i asm.
[#57] Re: Agonia w AMOS-sie...

@cholok, post #56

Szkoda. Po przejściu na C coś by z tego mogło być.

Nic. Zostaje oryginalna AGONY. Jak zawsze wspaniała.
[#58] Re: Agonia w AMOS-sie...

@swinkamor12, post #57

Kolega chce napisać w AMOSie, może umie w nim programować, a w asemblerze nie, i jak wynika z tego wątku, bardzo się stara. Czemu kwituje Pan te starania takim komentarzem?
[#59] Re: Agonia w AMOS-sie...

@Hexmage960, post #58

Podzielam opinie przedmówcy efekt obecny jest zadowalający kolega Umpal chce zrobić coś
fajnego w dodatku w AMOS-ie który jak wiadomo ma swoje ograniczenia nie oczekujmy zatem nie wiadomo czego przecież takie tytuły jak Agony, Dune 2 nie pisali przypadkowi ludzie...
Wypowiedzi czemu nie w assemblerze albo nie w C są bezcelowe gdyż Umpal chce to napisać w AMOS-ie przecież nikt nie broni ani mnie ani innym udzielającym się w tym wątku i narzekającym samemu nauczyć się assemblera lub C i napisać coś podobnego co będzie działało lepiej a jeśli się nie potrafi to nie rzucajmy przysłowiowych kłód pod nogi autorowi.
[#60] Re: Agonia w AMOS-sie...

@swinkamor12, post #57

Ludzie, opanujcie się. Wątek nie tyczy się pisaniu gry czy pisaniu czegokolwiek co by miało w przyszłości zaistnieć. Tu roztrząsamy SPOSÓB w jaki można konkretny efekt osiągnąć w Amosie...
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