[#91] Re: Ami Robbo 2

@tukinem, post #90

.

Ostatnia aktualizacja: 18.07.2024 12:49:15 przez BULI
[#92] Re: Ami Robbo 2

@tukinem, post #1

Mamy nowy ekran startowy:


To screenshot prosto z uruchomionej gry, więc zagorzali mogą już liczyć kolory na ekranie
5
[#93] Re: Ami Robbo 2

@tukinem, post #92

Po tych rampach z lewej na napisie, można od razu wywnioskować HAM6 lub HAM8 ;)
[#94] Re: Ami Robbo 2

@tukinem, post #92

Ale superOK
[#95] Re: Ami Robbo 2

@AD99, post #94

No jednak zauważyłem schody. Tryb HAM zapycha dziwnie chip ram. Przy próbie odtworzenia jednocześnie muzyki ekran się krzaczy i emulator się wiesza. Dzieje się tak tylko na OCS / ECS Denise. Przy ECS Agnus jest ok. Jak znajdę sposób na wykrywanie układu ECS to będzie ekran HAM dla Amigi 600 a dla Amigi 500 będzie zwykłe 5 bitplanów.

Pewnie spytacie dokładnie co się dzieje. Napisałem osobny kod który wczytuje IFF w HAM6 i wyświetla na ekranie niesystemowym dopóki nie wciśniemy ESC, po czym wychodzi. Taki program działa zawsze. Dodałem przed otwarciem ekranu HAM alokowanie pamięci na muzykę, wczytanie jej i odtwarzanie. Wtedy wyświetlił się ekran, ale zamiast muzyki był szum, po czym była zwiecha. Gdy najpierw otworzyłem ekran, a później zaalokowałem pamięć dla modułu, to ekran się wykrzaczył (niektóre kolory), muzyka zaczęła charczeć, po czym znowu zwiecha. Co ciekawe na ECS taki kodzik działał na 0.5MB chip, a na OCS nawet 2MB chip zdechło. Za to 2MB Chip + 8MB Fast działało lepiej, ale i tak później była zwiecha. Próby na ekranie systemowym Intuition identycznie się zakończyły. Testowane na kickstarcie 3.2.2.

Ostatnia aktualizacja: 21.07.2024 15:03:50 przez tukinem
1
[#96] Re: Ami Robbo 2

@tukinem, post #95

To raczej masz blad w programie, ktory zasmieca Ci pamiec.
Albo nie zaalokowales tego chip.
I nie ma czegos takiego jak OCS z 2MB chip.
Wiec nie dziwne, ze to sie wyburacza.
[#97] Re: Ami Robbo 2

@Don_Adan, post #96



Nie przekraczam pamięci przy ładowaniu pliku muzycznego. ładuję go z parametrem "2" czyli do chip ram. Zawsze tak robię. Ten kod działa idealnie na ECS Agnus, więc gdybym przekraczał zaalokowaną pamięć, lub źle alokował (np. do fast ram), to moduł by nie grał na ECSie.

Może faktycznie, skoro gra wymaga 1MB Chip RAM to skupić się na wymaganiach Amiga 600 minimum i nie przejmować się OCSem?



EDYTA: Miałeś rację! Ten kod jak uruchomię na 0.5MB+0.5MB to działa niezależnie od kolejności, czy wczytuję muzykę/tworzę copperlistę HAM6, czy na odwrót. Nigdy nie miałem problemów z ustawianiem 2MB na OCS. No ale warto to wiedzieć na przyszłość, a Toni powinien wstawić blokadę, gdy zaznaczymy OCS i próbujemy ustawić ponad 1MB Chip RAM.

Ostatnia aktualizacja: 21.07.2024 15:54:16 przez tukinem
[#98] Re: Ami Robbo 2

@tukinem, post #97

Jako laik zapytam, czy zamiast allocmem można użyć initbank? Może jest jakaś różnica.
[#99] Re: Ami Robbo 2

@karolb, post #98

W Blitzu masz różne rodzaje alokowania pamięci.

Nie wszystkie jednak używam, gdyż niektóre potrafią zaalokować, ale fragmentują ją i po zwolnieniu nie zaalokuje się znowu, jeśli wkońcu braknie pamięci. Ja używam przykładowo dwóch:

WSKAZNIK.l = Allocmem(size.l , type_mem)
WSKAZNIK.l = Allocmem_(size.l , type_mem)

podobne? :) działają identycznie, ale pierwsza jest napisana dla Blitz Basic, a druga jest systemową funkcją z Workbencha. Gdy chcę zwolnić pamięć używam wtedy FreeMem / FreeMem_ (ta druga jest systemowa). Po takim wyczyszczeniu można w nieskończoność sobie alokować pamięć i nic się nie fragmentuje.
[#100] Re: Ami Robbo 2

@Don_Adan, post #96

Jednak dalej się wykrzacza.

Ustawiłem kickstart 1.2, nagrałem na ADF, dałem mu 1MB Chip RAM + 1MB Fast RAM, ekran startowy się wyświetla, muzyka również, ale później przy przejściu na copperlistę bez HAM są krzaki na ekranie, a po wyjściu z gry nawet w AmigaDOSie:
[#101] Re: Ami Robbo 2

@tukinem, post #99

Znaczy się, pytałem o initbank :).

Ale jak już pisałem, nie znam się, po prostu przeszukałem jakieś 2 książki z blitzbasic pod kątem hasła allocmem i trafiłem na ten cały initbank :)
[#102] Re: Ami Robbo 2

@karolb, post #101

ALLOCMEM nie ma w czystym Blitz Basicu, tylko w wersji ultimate i w AmiBlitz 3. Gdybym używał zwykłej wersji, to nawet nie bawiłbym się we wczytywanie modułów, które tam działają beznadziejnie na wbudowanej bibliotece od modków.

ALLOCMEM_ będzie w czystym Blitzu, ale że to jest komenda systemowa, to należy szukać jej opisu w komendach AmigaOS, a nie w książce z Blitz Basic.
[#103] Re: Ami Robbo 2

@tukinem, post #100

To jest albo kwestia ustawien, bo w oryginale A500 z kickiem 1.2 i 1MB chip nie istnieje.
Albo jakis blad w programie lub BlitzBasicu.
[#104] Re: Ami Robbo 2

@Don_Adan, post #103

Dla obu ustawiłem 1MB CHIP + 1MB FAST na kickstarcie 1.2 i procek 68000 z cycle exact.

OCS i ECS Denise

ECS Agnus i Full ECS


Na kicku 1.3 te same efekty.

Ostatnia aktualizacja: 21.07.2024 17:02:32 przez tukinem
[#105] Re: Ami Robbo 2

@tukinem, post #102

Ok, rozumiem :)

Jakiej wersji używasz (ultimate czy AmiBlitz3), i czy jest w niej możliwość użycia initbank?
[#106] Re: Ami Robbo 2

@karolb, post #105

Ami Blitz używam do czegoś innego, ale go unikam jak ognia. Używam Ultimate Blitz Basic. Do odgrywania modułów używam biblioteki z MTInit / MTPlay On oraz tam jest odgrywanie dźwięków komendą MTSoundFX. To jak w porównać standardowe odgrywanie modułów w Amosie, a odgrywanie ich przez rozszerzenie AMCAF.
[#107] Re: Ami Robbo 2

@tukinem, post #106

W tym wątku też ktoś miał problem z ciszą, i użył polecenia mtInstall, może zadziała?

https://eab.abime.net/showthread.php?t=108625
[#108] Re: Ami Robbo 2

@karolb, post #107

Zauważ, że miał problem w AmiBlitz, a działało mu w BB 2.1. Ja piszę w Blitzu, więc nie mam z tym problemu, a właśnie przez takie problemy nie używam AmiBlitz.

Tu na filmikach pokazałem, że na ECS wszystko działa jak należy, a w OCS się krzaczy. Można sobie tworzyć banki i wczytywać, ale jeśli raz utworzysz bank, a później go wyczyścisz, zaalokujesz znowu, to już nie zaalokujesz go w starym miejscu, bo pamięć zostanie pofragmentowana i gdy tak wiele wiele razy zrobisz, to po jakimś czasie braknie pamięci. Dlatego nie używam banków, no chyba że dla dźwięków, ale na upartego też mógłbym ręcznie alokować im pamięć i ładować do chip ramu.

Tutaj on w kodzie już ma dołączony plik .MOD, więc nie musi wyczytywać z dysku modułu, ale jeśli program uruchomi na Amidze z fastem/slowmem, to musi ręcznie przerzucić dane do chip ramu, aby móc odtwarzać moduł. To jest podwójne zużycie pamięci w takim wypadku.
[#109] Re: Ami Robbo 2

@tukinem, post #108

Myślałem że poleceniem incbin wczytuje go :)

Dzięki za wyjaśnienia, ja tylko coś tam kiedyś w Amosie :)
[#110] Re: Ami Robbo 2

@tukinem, post #97

Testowałem na winuae amirobbo2 0.3 i to nie chodzi na 0,5 MB chip + 0,5 slow => zwis. Na 1 MB chip OCS =?>sieczka na ekranie. Na 1 MB chip ECS działa. Nie wiem jak działa winuae, ale normalnie OCS nie obsługuje 1 MB chip i więcej. Tak samo OCS Agnus i ECS Denise nie występują naturalnie w przyrodzie. Także proponuję ustawianie konfiguracji w sekcji quick configuration a nie wymyślanie swoich.

Co do allocmem to widzę, że nie sprawdzasz czy alokacja się dokonała. Jeśli kompilujesz z debugerem to raczej ok, ale jęśli bez to wiesz co się dzieje jak zabraknie pamięci.
1
[#111] Re: Ami Robbo 2

@karolb, post #109

Incbin dołącza do pliku uruchamialnego cały plik MOD, leczy jeśli ktoś uruchomi tak plik na Amidze z fast ramem będzie mieć szum lub zwiechę, bo Paula korzysta jedynie z Chip Ramu. Dlatego tam ma sprawdzanie, czy jest pamięć Fast i jeśli jest, to wykonuje się pętla z POKE.l.

Ja bym tu i tak zmienił na systemowe kopiowanie, bo jest szybsze, czyli to
For dn=0 To music_length-1 Step 4
    Poke.l Bank(0)+dn, Peek.l(?title_music_start+dn)
 Next


zamieniłbym na to:
CopyMemQuick_ ?title_music_start , Addr Bank(0) , music_length
[#112] Re: Ami Robbo 2

@tukinem, post #104

A bez grajacej muzyki jest dobrze?
Byc moze w wersji OCS trzeba cos wywolac/ustawic jeszcze raz przed wywolaniem Menu, a nie przechodzic od razu?
Albo daj jakis wait 2 sekundowy?
Ja sie nie znam na grafice, ale OCS ma tam jakies bledy w obsludze sprajtow, czegos tam nie mozna bylo robic.
Ross by Ci wyjasnil o co chodzi, mozesz sie go zapytac, moze Asman tez wie.
[#113] Re: Ami Robbo 2

@tukinem, post #111

Jesli dolaczasz MOD, grafike lub sample do pliku wykonywalnego, to dolaczaj do sekcji Chip.

W asemblerze:

Section dane, Data_C

incbin "mod"

Jezeli dolaczasz do innego typu sekcji niz data_c lub code_c, to musisz te dane przekopiowac do chip ram-u, nim je uzyjesz.


Edycja, ale ogolnie odradzam dolaczania takich plikow do pliku wykonywalnego, bo marnujesz w ten sposob pamiec.
No chyba ze piszesz cracktro, intro, czy demo 1 plikowe.


Ostatnia aktualizacja: 21.07.2024 18:49:16 przez Don_Adan
[#114] Re: Ami Robbo 2

@Don_Adan, post #113

Jezeli dolaczasz do innego typu sekcji niz data_c lub code_c, to musisz te dane przekopiowac do chip ram-u, nim je uzyjesz, ale ogolnie odradzam dolaczania takich plikow do pliku wykonywalnego, bo marnujesz w ten sposob pamiec.
No chyba ze piszesz cracktro, intro, czy demo 1 plikowe.


To samo miałem na myśli. Zapchanie pamięci już na starcie, podczas gdy można sobie zawsze wczytać plik, lub zwolnić po nim pamięć i zastąpić innym.

Niestety hunk jest stworzony tylko dla ASM One (przynajmniej w tej formie). W Blitz Basic nie istnieje. W Ami Blitz podobno jest, ale nie wiem jak to się tworzy i szczerze... Ami Blitz jest tak wredny, że nawet mnie to nie interesuje. Ciekawe, czy można było sobie tak dołączać dane w MasterSeka.
[#115] Re: Ami Robbo 2

@tukinem, post #114

Jak nie ma tworzenia sekcji w Blitz Basicu, to najlepiej na starcie programu zaalokowac sobie np. 450KB chip i 250KB innej pamieci.
A potem ja po prostu wykorzystywac tak jak sie chce.
Tylko, zeby tak robic to trzeba wiedziec ile maksymalnie pamieci chip bedzie w tym samym czasie potrzebne.
To samo dotyczy innej pamieci (zwykle fastu lub slow fastu).
Zalety sa takie, ze nie ma fragmentacji pamieci i jak program sie juz uruchomi, to znaczy, ze ilosc pamieci mu styka.
1
[#116] Re: Ami Robbo 2

@Don_Adan, post #115

Oczywiście, że alokuję i na starcie:


i na końcu:


a czasem w środku przez AllocMem_. Wolę używać systemowej wersji. Przykładowo:
OBRAZEK.l = AllocMem (64 000 000,2)

Taki kod spowoduje od razu przekroczenie Chip RAM. AllocMem z BB zawiesi Amigę, podczas gdy systemowy AllocMem_ nie zaalokuje nic. Wtedy nawet dla Amig, które nie mają wystarczającej pamięci można przed wczytaniem pliku dać warunek:
If OBRAZEK>0
   BLoad "PLIK.IFF",OBRAZEK
EndIf
[#117] Re: Ami Robbo 2

@tukinem, post #116

TYLKO RAZ w calym programie na starcie alokujesz pamiec.
I zwalniasz tez tylko raz na wyjsciu z programu.
I ten zaalokowany obszar po prostu uzywasz wedlug uznania.
Po prostu nakazujesz gdzie dane maja byc ladowane, lub czyscisz wybrany obszar pamieci.
Zarzadzasz takim obszarem pamieci.
Oczywiscie wymaga to troche innego podejscia do tworzenia gry.
[#118] Re: Ami Robbo 2

@Don_Adan, post #117

Wszelkie zmienne deklaruję na początku. Wszystkie bloki danych mam na końcu kodu, ale wiadomo, że one są alokowane na początku przy starcie programu. Takie dane jak muzyka są alokowane po zaalokowaniu zmiennych, tablic i list. No ale to jest basic więc można sobie i tak alokować i deklarować kiedy się chce.

Na koniec nie potrzeba zwalniać pamięci. W Blitzu sama się zwalnia.

Co innego w przypadku bitplanów. Alokuję sobie bitmapę 320x200 w 6 bitplanach dla HAM. Po wyświetleniu usuwam ją z pamięci i alokuję bitmapę 512x512 w 5 bitplanach do samej gry. Wtedy nie zużywam jednocześnie pamięci dla obu bitmap, tylko jedna wchodzi częściową w poprzednią.oczywiście tworzenie bitmapy tworzy wyzerowaną przestrzeń, więc wszelkie dane się zerują.

Ostatnia aktualizacja: 21.07.2024 21:11:55 przez tukinem
[#119] Re: Ami Robbo 2

@Don_Adan, post #117

.

Ostatnia aktualizacja: 22.07.2024 12:55:54 przez tukinem
[#120] Re: Ami Robbo 2

@tukinem, post #119

no pewnie, że może mieć FAST,
np wsadzony pod prockiem, lub na zewnątrz, z boku.


Ostatnia aktualizacja: 22.07.2024 12:57:32 przez Cezarykl
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