kategoria: AMOS
[#1] AMOS w sprawnych dłoniach
Jou

Kłaniam się w pas szanownym wariatom i bezzwłocznie atakuję pytaniem: czy proste instrukcje w amosie, jak i=i+1, czy też operacje na tablicach (odczytywanie) po skompilowaniu są powolne? Czy mogą być porównywane z tymi napisanymi w c? [<to już drugie pytanie]

Czy istnieją słabe (powolne) i mocne (szybkie) strony amosa? I czy kodując w nim sprytnie można uzyskać zadowalające efekty? Czego unikać a z czego należy skorzystać?

Biję pokłony na odchodne i liczę na odzew liczony w setkach tysięcy odpowiedzi.
[#2] Re: AMOS w sprawnych dłoniach

@mastaszek, post #1

AMOS zawsze był wolny, jedyne co można było na nim zrobić to slide show

Assembler forever
[#3] Re: AMOS w sprawnych dłoniach

@Oxyron, post #2

Eeee przesada, gry jakieś tam wyszły, magazyny dyskowe i proste demka :)
[#4] Re: AMOS w sprawnych dłoniach

@odyseja_lkc, post #3

kiedyś był kiepski, wiec dziś jak chcesz zrobić cos dobrego to Assembler, nie jest aż tak trudny.... na początku jakieś bary zrób... to tylko własna copper lista dla Agnusa ... zmieniając jej kod raz na ramę.... stworzysz pływające bary w realtime .... do tego dodasz playera załadujesz zaka i masz pierwsze demo na Amigę

Scrola zrobić to tez nie problem .... możesz iść na łatwiznę i narysować wszystkie literki 16x16 lub jak jesteś bardziej ambitny to pobawić się z literkami nieproporcjonalnymi, a to tylko jedna dodatkowa tablica z zdefiniowanymi szerokościami dla każdego znaku i trochę zabawy z funkcjami boolowskimi

Ostatnia aktualizacja: 20.03.2015 23:50:02 przez Oxyron
[#5] Re: AMOS w sprawnych dłoniach

@Oxyron, post #4

A jeśli chciałbym na ekranie tylko 1 sprajt kontrolowany dzojstikiem, to czy odczyt stanu joya (lub myszy) i zmiana pozycji sprajta x,y (tylko przez dodawanie) napisane w amosie będzie znacznie wolniejsze niż w c?

Ostatnia aktualizacja: 21.03.2015 00:02:45 przez mastaszek
[#6] Re: AMOS w sprawnych dłoniach

@mastaszek, post #5

Pewnie się da ....
[#7] Re: AMOS w sprawnych dłoniach

@Oxyron, post #6

Mam w głowie pomysł na prostą, ale grywalną grę. Wszystko co główna pętla musi robić to:

repeat
i=15
kol=tablica(i)
if kol>0 then pozx=tablica2(kol)

przesuniecie=tablica3(kol)
if joy=gora then pozy=pozy+przesuniecie

rysuj sprajt pozx,pozy

until koniec

Amosa troszkę znam, tzn ponad 20 lat temu coś tam dłubałem. Pytanie brzmi: czy powyższy kod, czyli odczytywanie wartości z tablic, dodawanie, odczyt dzoja i rysowanie jednego sprajta będzie w amosie wolniejsze niż w c?

Bo nim nauczę się jak to zrobić w asm to miną wieki a ja zdążę umrzeć. Amos mi tu daje obsługę dzoja, mychy, dźwięków i sprajtów na tacy. Pytanie w którym miejscu amos jest wolny. Jeśli wszystko robi wolno, to się załamię...

Ostatnia aktualizacja: 21.03.2015 01:02:27 przez mastaszek

Ostatnia aktualizacja: 21.03.2015 01:05:25 przez mastaszek
[#8] Re: AMOS w sprawnych dłoniach

@mastaszek, post #7

Nie słuchaj nikogo, tylko odpal AMOSa i sprawdź. Potem możesz spróbować napisać wariant w C, albo ja go skrobnę. ;)
Przy prostych grach prawdopodobnie zwolnienia nie odczujesz. To co opisałeś to ułamek możliwości Amigi, więc 50fps powinieneś wycisnąć ;)

Ostatnia aktualizacja: 21.03.2015 10:05:04 przez teh_KaiN
[#9] Re: AMOS w sprawnych dłoniach

@mastaszek, post #7

Jeśli będzie wolno można użyć w Amosie AMALa. Zasadniczo ciężko mi odpowiedzieć na pytanie. Może zrobimy zawody... Niech ktoś kto zna C i Assembler i E napisze program, który otwiera ekran full screen w zadanej liczbie kolorów (np. 16) oraz rozdzielczości (np. 320x256) , wczytuje lub tworzy sprite np. 16x16 jednokolorowy (np. czerwony). Niech ten sprite przesuwa się po osi X i Y o 1 piksel. Pozycja startowa to (0,0). Nie używamy synchronizacji z wygaszaniem ekranu. Stop w momencie gdy sprite wyjdzie poza obszar widzialny na ekranie. Używamy optymalizacji pod 68000. Program powinien odpalić na gołej A500 - pod nią najlepiej powinno być widać przewagę któregoś z języków. Fajnie będzie też móc obejrzeć kod dla tej samej operacji w różnych językach programowania.

Ostatnia aktualizacja: 21.03.2015 10:06:31 przez pong777
[#10] Re: AMOS w sprawnych dłoniach

@mastaszek, post #7

Amos ma to do siebie, że algorytm który wyżej napisałeś mogłeś od razu przenieść do Amosa, odpalić i otrzymać odpowiedź na własne pytanie
Oczywiście, że niektóre rzeczy w C będą wykonywane szybciej a w Assemblerze jeszcze szybciej (szczególnie te w pętlach) ale wstawki assemblerowe zawsze możesz włączyć do kodu amosowego, kiedy rzeczywiście będzie taka potrzeba (w tym przypadku chyba niekoniecznie)
.
[#11] Re: AMOS w sprawnych dłoniach

@mastaszek, post #7

co konkretnie chcialbys zaprogramowac?
Ogolnie AMOS ma same zalety i jedna powazna wade. Wszystkie zalety niweluje owa wada - powolnosc dzialania. Ale jesli ktos jest dosc sprytny i nie porwie sie z motyka na ksiezyc, to w AMOSie mozna uzyskac akceptowalny efekt.
Czego nie nalezy robic w Amosie? Strzelanek ze skrolem, platformowek ze skrolem, gier 3d (chociaz istnieje AMOS 3d), bijatyk ze skrolem ...ogolnie wszystkich gier ze skrolem
[#12] Re: AMOS w sprawnych dłoniach

@selur, post #11

hehe czyli można zrobić Ami-Sapera i klocki mahjong

Ostatnia aktualizacja: 21.03.2015 16:31:32 przez Oxyron
[#13] Re: AMOS w sprawnych dłoniach

@teh_KaiN, post #8

Napisz coś w C używając tego.
[#14] Re: AMOS w sprawnych dłoniach

@Oxyron, post #12

Gry logiczne, jak najbardziej do tego tekstowe, przygodowe z niewielka iloscia obiektow, gry turowe itp. wszystko to, co nie wymaga duzej ilosci animowanych obiektow na ekranie i skrollingu.
[#15] Re: AMOS w sprawnych dłoniach

@selur, post #11

Chciałbym zrobić prostą grę opartą na wyświetlaniu jednocześnie od 5 do 50 niewielkich 4 kolorowych sprajtów w pozycji ustalanej dzojem. Nie będzie sprawdzania kolizji, nie będzie skrola, nie będzie animacji. W pętli głównej będzie tylko detekcja dzoja i wyświetlanie sprajtów w prekalkulowanych pozycjach odczytywanych z tablic. Więc klczowe jest dla mnie, czy AMOS obsługuje dzojstik, tablice i sprajty znacznie wolniej niż rzeczywiście można to zrobić w c czy asm?
[#16] Re: AMOS w sprawnych dłoniach

@mastaszek, post #15

"czy AMOS obsługuje dzojstik, tablice i sprajty znacznie wolniej niż rzeczywiście można to zrobić w c czy asm?"

50 obiektow to bardzo bardzo duzo, ale wszystko zalezy do tego jak sie ich uzyje.
AMOS i Asembler dzieli przepasc w szybkosci dzialania wiec pomijam ten aspekt a co do C, toroznice moga byc niewielkie. Sprobuj wiec zaczac od AMOSa, jesli efekt koncowy bedzie naprawde slaby mozesz przeskoczyc na C.
Jesli nie masz podstaw asemblera to nawet o nim nie mysl.
[#17] Re: AMOS w sprawnych dłoniach

@mastaszek, post #15

O ile mi się zdaje to Amiga może wyświetlać sprzętowo 8 sprite'ów, resztę musisz kreślić sam z pomocą blittera. Są różne sztuczki na obejście tych limitów w zależności od sytuacji, ale AMOS chyba nie jest taki elastyczny.
[#18] Re: AMOS w sprawnych dłoniach

@sanjyuubi, post #17

Za pomocą assemblera można wyświetli w sumie więcej niż 8 spritów, bajer polega na tym, ze tworząc koper listę jesteś wstanie kontrolować bardzo precyzyjnie pozycje spritów, tak więc na górze ekranu definiujesz przykładowo 8 spritow, ale na środku ekranu jesteś wstanie znów zdefiniować nowe pozycje sprintów i ich grafikę... ogólnie mówiąc jeżeli ktoś bardzo dobrze zrobi tzw. "cyklowke" może na jednym ekranie płynnie poruszać kilkukrotnie większą ilością spritów niż 8. W Amidze wysokość spritów jest praktycznie dowolna... w C64 sprity mają ograniczenia do 24x21 pikseli ... ale na C64 tez można zrobić "cyklówke" i na ekranie umieścić dużo więcej spritów niż 8. Zasada zawsze jest ta sama ... "cyklowka".
[#19] Re: AMOS w sprawnych dłoniach

@Oxyron, post #18

Dlatego napisałem, że są pewne sposoby, ale wątpię, aby w amosie można było robić takie cyrki.
[#20] Re: AMOS w sprawnych dłoniach

@sanjyuubi, post #19

Amos odpada w przedbiegach :D ponieważ musiałby kontrolować odświeżanie ramki, a ponieważ tego nie potrafi to nie działają wszystkie scrole :D
[#21] Re: AMOS w sprawnych dłoniach

@selur, post #16

Już się zabrałem do pracy i czytam i montuję w amosie. Zobaczymy co z tego będzie...
[#22] Re: AMOS w sprawnych dłoniach

@Oxyron, post #2

AMOS w dobrych rękach daje radę, polecam obejrzeć produkcje grupy Lamers, który były pisane w tym języku, chociażby TA
[#23] Re: AMOS w sprawnych dłoniach

@gorzyga, post #22

Właśnie widać, że nie daje rady, a tam gdzie daje jest wszystko prerenderowane.
[#24] Re: AMOS w sprawnych dłoniach

@sanjyuubi, post #23

Jeśli porównać demo Lamersów do tego co jest w poście #2, to jednak daje radę...
[#25] Re: AMOS w sprawnych dłoniach

@odyseja_lkc, post #24

I o to właśnie mi chodziło - wiadomo, że to nie jest optymalny język programowania, jednak ma też swoje zalety i można w nim zrobić coś więcej niż slideshow.
[#26] Re: AMOS w sprawnych dłoniach

@gorzyga, post #25

Jakoś nie za bardzo chce mi się wierzyć ze to "czysty" amos .... możliwe, ze jest tam dość dużo wstawek asemblerowych, niemniej jednak jestem w szoku.

Ale dla mnie to liczy się tylko assembler. Assembler jest najlepszym językiem programowania, nie ma ograniczeń, nie trzeba się przejmować wieloma rzeczami, które spotykam w językach wysokiego poziomu (C, C++,C# czy tez Javie). Tak więc zawsze wracam do assemblera, ostatnio dużo programuje mikrokontrolery Atmel i tylko assembler.

Oczywiście są rzeczy, które ciężko jest napisać w assemblerze - ale zawsze można to zrobić - pozostaje tylko kwestia czasu szeroki uśmiech
[#27] Re: AMOS w sprawnych dłoniach

@Oxyron, post #26

Czy otwarcie ekranu, odczyt joya i wyświetlenie sprajta to skomplikowane sprawy w asm?
[#28] Re: AMOS w sprawnych dłoniach

@mastaszek, post #27

ogólnie mówiąc kilkanaście linijek kodu :D

Jak ja kodowałem na Amigę.... było to 25 lat temu szeroki uśmiech więc nie pamiętam dokładnie adresów portów joysticków, ale ogólnie mówiąc naprawdę jest to kilkanaście linijek kodu i gdybym ja miał cos takiego napisac to wygladalo by to tak:

1) zapamiętanie adresu aktualnej koper listy (aby można było po powrocie z programu odtworzyć ustawnienia systemowe.
2) wylaczenie przerwań
3) podanie nowego adresu procedury dla copper listy (taka lista zawiera dane takie jak, adres bitplanów, ustawienia rejestrów wszystkich kolorów, adresy spritów, kolory rejestrów spritow.
Copper lista wykonuje się w pętli sama bez udziału procesora, jedyne co trzeba zrobić to podać jej adres i przełączyć. Nie ma rozkazów specjalnych dla copper listy i za moich czasów pisanie takiej copper listy polegało na wpisanie wartości bajt po bajcie dc.w (Define Constant)

4) główna pętla (pętla która będzie się wykonywała raz na ramkę) w której sprawdzamy stan rejestru odpowiedzialnego za joy'a ($DFF00A port1 i DFF00C port2) nie pamiętam jaki powinien być stan tego rejestru, ale można napisać szybko programik, aby pokazało nam stan bez żadnego ruchu , a następnie dla każdej pozycji joya i dla przycisków fire (po kilku próbach można już pisać procedurę kontroli joya)

dodatkowo bym sprawdzał klawiaturę - przykładowo naciśniecie "ESC" wyjdzie z naszej pętli i przywróci systemowa cooper listę, która zapamiętaliśmy na początku naszego programu. na koniec bym włączył przerwania i wyszedł z programu.

Jeżeli walnąłem gdzieś gafę to proszę mnie poprawić

Co do napisania kodu w assemblerze.... jak mi ktoś da mapę pamięci do Amigi i listę rozkazów procesora (sorry ale już nie pamiętam wszystkich trybów adresowania) i jakby mi ktoś jeszcze dał narzędzia (assembler jakiś na Amigę) to zakoduję i kod wkleję :)

Dzizes jak ja dawno nie kodowałem Amigi.... masakra choć są osoby, które ciągle mnie do tego namawiają - ale jakoś brak czasu

może jakiś kącik kodera można by było tutaj stworzyć tylko kto by chciał ???

nie widzę tutaj większych czubków niż ja szeroki uśmiech


Ostatnia aktualizacja: 22.03.2015 01:33:42 przez Oxyron
[#29] Re: AMOS w sprawnych dłoniach

@Oxyron, post #28

A co kolega zakodowal 25 lat temu?
[#30] Re: AMOS w sprawnych dłoniach

@selur, post #29

Ogólnie było tak, ze zacząłem kodować na C64 w grupie DEUTER, później w grupie CAUTION i w miedzy czasie mając Amigę 2000, kodowałem na Amidze. Dużo w sumie rzeczy zrobiłem ale w sumie nie wypuściłem żadnego dema na demoscenie, jakoś nie było jak, albo niemiałem zaparcia by zdobyć większe kontakty na scenie Amigi by z kimś wspólnie cos zrobić a samemu trochę trudno o samozaparcie. Natomiast gdy wróciłem na Commodore i byłem w grupie CAUTION, to już to było cos... była grupa, byli koderzy, graficy i muzycy ... były osoby odpowiedzialne za swaping, dyskietki się wysyłało listami itd. Były już inne czasy.
W sumie chyba jakieś intra mogą gdzieś jakieś być, bo byłem na paty w Żywcu, Głogowie i w Warszawie... ale naprawdę już nie pamiętam.
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