[#181] Re: Electroman dla Amigi

@tukinem, post #168

Nie, bez fastest possible i bez jit.
[#182] Re: Electroman dla Amigi

@zzielinski, post #181

Poprawiłem dzisiaj troszkę kodu w grze, bo źle wybierało bitmapę do wklejania kolejnych grafik po zebraniu chipa (klucza).

Dodatkowo dorobiłem tyle oto 3 levelu:


A tak wygląda już podczas gry:
5
[#183] Re: Electroman dla Amigi

@tukinem, post #172

Chciałem zrezygnować z ograniczeń jakie daje goła A500 z ECS i 0,5MB slow ram. Chciałem mieć do dyspozycji od razu lepszy procek i 2MB chip na start.


podzielam twoje zdanie i moim zdaniem celowanie w bardzo podstawową Amigę to sztuka dla sztuki która przyniesie więcej wad niż zalet (kilka osób więcej może byc zagrało a może nie ale gra mogła by mieć zauważalne cięcia, wiadomo ze wiekszosc fanów ma w domu szybsze Amigi a nie gołe 500-tki)

Naucz mnie obsługi scrolla pionowego w Amidze i przekonaj Selura do stworzenia grafiki na miarę Amigi to pogadamy a tak serio, to gra może i monotonna, ale postanowiłem ją przeportować i to moja pierwsza gra, którą piszę pod AGA.


offtopowo:

gdyby kiedyś zebrała sie garstka zapaleńców którzy chcieliby zrobic całkiem od zera platformera na Amigę Aga z dodatkowym ramem i byc moze szybszym prockiem godnego uwagi to tutaj mały przykład fajnych mechanik w platformówce pikselartowej (podejrzewam ze i tak trzeba byłoby mocno ciąć bo na tym przykładzie sie czasami duzo dzieje ale przynajmniej jest baza do pomysłów)

https://www.youtube.com/watch?v=5rpf9esBZcg&ab_channel=GameTrailers

Ostatnia aktualizacja: 01.10.2023 22:14:54 przez Azakiel
[#184] Re: Electroman dla Amigi

@Azakiel, post #183

Grafika świetna a i animacja niczego sobie :) gdyby się ktoś pojawił co zna sztuczki w Amidze takie, jak zostały użyte w grach typu Agony, to z pewnością niewielkie cięcia i gra by powstała. Blitz Basic i AmiBlitz tu odpada. Zbyt ogólnikowe funkcje ma, a szczególnie blitujące.

Co ciekawe zauważyłem, że przy AGA albo wybierasz FMODE, który przyspiesza znacznie wstawianie bobów, ale żegnasz się z możliwością sprajtów sprzętowych, albo męczysz się z FMODE 1, który już nie ma takiego przyspieszenia, ale pozwala na użycie sprajtów. Przy Electrobody używałem FMODE 1 przez pewien czas i wyświetlałem nasze strzały jako sprajty, lecz zauważyłem miganie copperlisty co jakiś czas. Nie tak jak teraz co jest rzadko, ale to się zdarzało co chwilę. Może to miganie u mnie w Electromanie to właśnie skutek użycia FMODE 3?
1
[#185] Re: Electroman dla Amigi

@Azakiel, post #183

Grafika piękna, ale niestety klasyczny chipset się do tego nie nadaje. Musiałoby być RTG.
[#186] Re: Electroman dla Amigi

@diobou, post #185

też obstawiam że musiałyby być srogie cięcia, lub po prostu zrobić coś na miarę możliwosci klasycznych chipsetów korzystając z różnych pomysłów z w/w filmiku (i nie tylko jego oczywiscie) ale odpowiednio dozując akcje i mechaniki co by sprzęt wyrobił
[#187] Re: Electroman dla Amigi

@tukinem, post #184

Ja tam na grafice to malo sie znam, ale nie wiem czy FMODE nie wymagaja danych graficznych odpowiednio zaladowanych w pamieci, to nie jest tak jak dla ECS, ze ladujesz na dowolny parzysty adres w chipie. Tam bodaj musi byc align 16, moze 24, moze 32, czy nawet 48. Wiec jak tego nie ogarnales to mozesz miec efekty uboczne. JOTD gdzies o tym pisal na EAB, przy konwersji Super Cars AGA.

Tutaj jest ten tekst:

link

Czyli jednak to align 8 tylko.
A caly watek jest tutaj.

link



Ostatnia aktualizacja: 01.10.2023 23:59:35 przez Don_Adan
[#188] Re: Electroman dla Amigi

@Don_Adan, post #187

To jak już Blitz ładuje dane to nie wiem, ale adresy bitplanów raczej są odpowiednio ustawione. Mogę wyciągnąć ich adresy i tu podać przykładowe, jakie się tworzą, bo to jednak dzieje się losowo. Blitz przypisuje różne wartości adresów dla bitplanów w chip ramie.
[#189] Re: Electroman dla Amigi

@zzielinski, post #181

Nagrywałem teraz taki filmik pokazowy z Tonego i ustawiłem, jak Ty, czyli bez JIT i bez Fastest possible, więc miałem jedynie w CPU Approximate i bez cycle exact. Ogólnie to była tragedia. Chyba najgorsze możliwe ustawienie, bo ekran mrugał co chwilę. Może też dlatego, że miałem ustawiony 68030. Moim zdaniem jeśli wyłączamy cycle exact, to najlepiej ustawić Fastest possible i ewentualnie JIT, a przy approximate dobrze jest wączyć cycle exact, bo inaczej nam będzie ekran mrugać.
[#190] Re: Electroman dla Amigi

@tukinem, post #1

W tym tygodniu aktualizacji nie będzie. Dopiero skończyłem wprowadzać teleporty w 3 levelu, a jest ich trochę więcej niż w poprzednim levelu. Będą nowe utrudnienia w grze. Nie miałem zbytnio czasu w tym tygodniu, ale ogarnąłem podwójną mapę, bo każdy level to podwójna mapa gry. Mam nadzieję, że na przyszły weekend będzie już wersja z 3 poziomami. Oczywiście, jak wspominałem, teraz będzie w pliku LHA, bo ADF tego już nie pomieści.
3
[#191] Re: Electroman dla Amigi

@AD99, post #178

Postanowiłem spróbować napisać wyświetlenie prostej mapki pod klawiszem "M", lecz zastanawiam się, jak stworzyć to lepiej. Ogólnie efekt jest taki narazie:


Niby spełnia to, co ma spełniać, ale nie pokaże pustych komnat, które są pominięte w środku. Chodzi o to, że pełna mapa to dla X są liczby od 0 do ROOMXMAX i dla Y liczby od 0 do ROOMYMAX. Zastanawiam się, jak ominąć rysowanie na niebiesko pustych komnat. Oto kodzik rysowania mapki:
[#192] Re: Electroman dla Amigi

@tukinem, post #191

Najpierw tworzy sie specjalna tablice tilesow ikonkek mapki (tablica ma tyle elementow ile jest roznych tilesow na ekranie).
Pozniej trzeba im przypisac odpowiednia wartosc duzego tilesa z ekranu.
Na koncu w petli rysujesz ikonki mapki jesli wartosc ikonki>0.

np.
minimapka puste pole = 0 (wartosci tilesow pustych 1-100 )
minimapka murek =1 (wartosci tilesow np. od 101-150)
minimapka teleport =2 (wartosci tilesow 160)
itd....

Petla wiersze*kolumny mapki
odczytanie wartosci tilesu ekranu
zamiana na wartosc ikonki mapki
jesli wartosc >0 to rysowanie ikonki mapki w przeciwnym wypadku pomijamy rysowanie
koniec petli


a sorry to nie to..... tobie chodzi tylko o minimape wszystkich komnat , no to bedzie jeszcze prostsze. Tablica z ilosci komnat 1-jest komnata 0- brak

Ostatnia aktualizacja: 08.10.2023 08:11:21 przez selur
1
[#193] Re: Electroman dla Amigi

@selur, post #192

No właśnie nie bardzo to tak u mnie działa. Nie mam tablicy samych komnat, tylko całego levelu. Więc mając komnaty 13x8 kafli moja tablica levelu to 13*ROOMXMAX , 8*ROOMYMAX. Musiałbym w pętli sprawdzać, czy w danym obrębie komnaty jest jakiś kafel. Jeśli tak, to wtedy rysować prostokąt na minimapce. Czy to jest warte zachodu?
[#194] Re: Electroman dla Amigi

@tukinem, post #193

Nie mam tablicy samych komnat



no a co za problem napisac sobie skrypt, ktory taka tablice stworzy tuz przed rozgrywka ?
albo jeszcze lepiej... osobno poza gra nagrac pliki z taka tablica (gora kilka kilobajtow a moze mniej) i ladowac ja przed kazdym levelem.




pamietaj o najwazniejszym - Amiga to nie PC, nawet w asemblerze wszystko co mozesz obliczyc PRZED gra a nie W TRAKCIE gry oblicz PRZED ok, racja

Ostatnia aktualizacja: 08.10.2023 09:41:39 przez selur
1
[#195] Re: Electroman dla Amigi

@selur, post #194

Sam sobie obliczyłem.

Kolejno rzędami sobie wpisałem w kalkulator bity od prawej do lewej, przeliczyłem na HEX i użyłem DATA.w, bo tu jest 14 bitów akurat, no chyba że mi gdzieś przekroczy, to zmienię na longi. Ogólnie ogarnąłem to tak:


a efekt końcowy wygląda tak:


Wiem, że trochę minimalistycznie, ale wolałem użyć sprawdzania bitów, niż tworzyć kolejne tablice :)
2
[#196] Re: Electroman dla Amigi

@tukinem, post #195

a tak przy okazji , co prawda nie znam Blitza ale moim zdaniem konctrukcja While powinna wygladac nieco inaczej:

DisplayBitmap 0,5,-1,0
While RawStatus($37)
JSR Ramka
Wend

zakladam, ze DisplayBitmap to cos w rodzaju otwarcia ekranu jak w Amosie a ekrany otwiera sie tylko RAZ.
Tak na przyszlosc, to w petli while lub repeat zostawia sie tylko instrukcje, ktore zmieniaja sie w kazdym obiegu petli lub oczekuja na zdarzenie/sygnal z zewnatrz.
[#197] Re: Electroman dla Amigi

@tukinem, post #195

Popraw nazewnictwo zmiennych w kodzie to strasznie razi po oczach ... Np. sam piszesz że masz pewne x i y po czym w kodzie używasz zmiennych o nazwach a i b ... kod powinien być samo-komentujący, a nazewnictwo zmiennych, stałych, funkcji, metod, plików jest właśnie jednym z ich elementów.
Co do jeszcze zmiennych jedno literowych ... dopuszczalne właściwie jest tylko kilka: x,y,z oraz i dla iteratorów ...
[#198] Re: Electroman dla Amigi

@selur, post #196

DisplayBitmap daje dla coppera wskaźniki bitplanów do wyświetlania, czyli po prostu to komenda do wyświetlenia aktualnej bitmapy. Masz rację, tu mogę to pominąć, ale gdybym miał podwójne buforowanie, to już trzeba użyć tej komendy, żeby naprzemiennie wyświetlać bitmapy.

Otwieranie ekranu w Blitzu to nie jest jedna komenda:
; koniecznie w trybie BLITZ
Bitmap 0,320,256,5               ; utworzenie bitmapy w pamięci
InitPalette 0,32                 ; utworzenie palety w pamięci
InitCoplist 0,44,256,$5,8,32,0   ; inicjowanie copperlisty czyli otwarcie ekranu w pamięci
DisplayBitmap 0,0                ; przypisanie bitmapy nr 0 w copperliście nr 0
DisplayPalette 0,0               ; przypisanie palety nr 0 w copperliście nr 0
CreateDisplay 0                  ; wyświetlenie copperlisty nr 0 na ekranie
[#199] Re: Electroman dla Amigi

@tukinem, post #198

neistety moj zakres wiedzy nie obejmuje tego, nie wiem co to jest przypisanie "bitmapy w copperliscie"
...ale.

nie do konca masz racje. Bo jesli w ekranie Double Buffer wywalisz juz dane statycznych grafik (np. mapa) z ekranu logicznego na fizyczny (czyli to co widzisz na ekranie monitora), to nic nie musisz juz robic.
Chyba, ze masz animowane boby na ekranie lub animacje wycinka bitmapy, wtedy owszem co okreslony czas musisz narysowac nowa ramke i podmienic oba ekrany.
[#200] Re: Electroman dla Amigi

@Rafael/ARMO, post #197

Nie rozumiem w czym problem. To osobna część kodu od minimapy. Zmienne a i b to zmienne dla pętli For...Next, których później używam do rysowania prostokątów na bitmapie. W kodzie mam wiele pętli i tam też są zmienne a i b. To nie stanowi problemu.
[#201] Re: Electroman dla Amigi

@selur, post #199

Tu nie ma ekranu "logicznego i fizycznego". Mogę sobie zrobić nawet potrójne buforowanie.

Oto kod dla podwójnego buforowania:
While NOT Rawstatus($45) ; dopoki nie wcisniemy ESC
   db.b = 1 - db
   Unbuffer db ; usuniecie bobów
   Use Bitmap db ; gdybyśmy chcieli coś blitnąć na bitmapie która ma się wyświetlić
   DisplayBitmap 0,db
   VWait
Wend


Copper za każdym razem pobiera dane bitplanów. Oto cytat z książki z ASM:
5.3.7 Wielokrotne wyświetlanie playfieldu
"Przy kolejnym wyświetlaniu tego samego playfieldu, należy zaadresować od nowa wskaźniki bitplanów. Są one zmieniane w wyniku wyświetlania kolejnych bajtów obrazu. Można tego dokonywać układając odpowiednią copperlistę"

Ostatnia aktualizacja: 08.10.2023 11:34:04 przez tukinem

Ostatnia aktualizacja: 08.10.2023 11:36:24 przez tukinem
[#202] Re: Electroman dla Amigi

@tukinem, post #201

'fizyczny' i 'logiczny' to tylko terminy, zeby ulatwic dzialanie na podwojnym buforowaniu ekranu a Amos niestety pozwala na utworzenie max tylko 2 kopii dla tego samego ekranu ale mozna sie posluzyc kolejnym ekranem fizycznym i jakos zrobic z tego potrojne buforowanie.
[#203] Re: Electroman dla Amigi

@tukinem, post #200

W twoim kodzie zmienna b jest wartością w osi Y, a zmienna a w osi X ... więc chyba lepiej jakby nazwy zmiennych mówiły której osi dotyczą. Ja rozumiem, że teraz i może za miesiąc będziesz pamiętał, że akuratnie b zawsze używasz do osi Y ... ale jak wrócisz do kodu po pewnym czasie wcale tak różowo nie będzie .. nawet teraz pokazując kod utrudniasz jego odczytanie/analizę innym. Zadbaj o nazewnictwo, to z czasem procentuje.
[#204] Re: Electroman dla Amigi

@Rafael/ARMO, post #203

Czyli chodzi Ci o to żeby dla każdej pętli w kodzie używać innych nazw zmiennych? Bez sensu deklarować całą stertę tego. Zmienne a i b to liczniki pętli i tyle. A to że później mam Boxf od blitowania to już tam sobie przeliczam te zmienne a i b.
[#205] Re: Electroman dla Amigi

@tukinem, post #204

Zmienne a i b to liczniki pętli i tyle


Zgadza się ... no comment
[#206] Re: Electroman dla Amigi

@tukinem, post #204

to daj tam ax i by pomysł

Ostatnia aktualizacja: 08.10.2023 13:13:49 przez selur
[#207] Re: Electroman dla Amigi

@djpiotrs, post #205

Staram się nie tworzyć nadmiaru zmiennych. Samo działanie typu a=b, czyli coś na wzór MOVE (A1),(A2), gdzie pod A1 i A2 mamy adresy zmiennych w takim slow ramie, to jest dodatkowe spowolnienie poprzez odczyt i zapis do slow ramu. Im dłużej siedzę w ppisaniu gier, tym bardziej staram się pisać wszystko na skróty, żeby zbędnie nie obciążać Amigowych podzespołów takich jak CPU, czy pamięć RAM.

Nawet w Examples z Blitza są typowe takie kody, gdzie nie ma dodatkowych zmiennych, a po prostu przeliczane już istniejące. Mało tego. W przykładach są kody tak pisane, że nie ma deklarowania zmiennych. Wiem że nie trzeba, ale powinno się definiować.
[#208] Re: Electroman dla Amigi

@tukinem, post #207

Dokładnie ciebie rozumiem i to co robisz jest poprawne i albo tak ma być. OK
[#209] Re: Electroman dla Amigi

@tukinem, post #195

Pewnie sie czepiam, albo zle zrozumialem, ale dla mnie mapa planszy powinna sie tworzyc na biezaco w czasie grania, a nie byc od razu widoczna, i pokazywac tylko gdzie jest gracz.
[#210] Re: Electroman dla Amigi

@Don_Adan, post #209

przeciez to zalezy od typu gry
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