[#301] Re: A może by tak Yoomp! OCS

@Phibrizzo, post #299

Może wylaczcie cache procka. Tak zgaduje.
[#302] Re: A może by tak Yoomp! OCS

@mikecios, post #301

Nie, to nie to. Wyłączałem i specjalnym toolem i z Early Boot Menu, nie pomogło.
[#303] Re: A może by tak Yoomp! OCS

@Zbych, post #300

Z zainstalowanej gry przez installera z adf.
[#304] Re: A może by tak Yoomp! OCS

@Jacques, post #302

Jakbym mial strzelac to ACK interrupt problem dla mnie.
Czyli albo autor musi to sam poprawic, albo moze Asman pomoze.
[#305] Re: A może by tak Yoomp! OCS

@Don_Adan, post #304

Jakbym mial strzelac to ACK interrupt problem dla mnie.


Jeśli chodzi ci o procedurę w przerwaniach to kończy się ona tak:

move.l	(osInt),-(sp)	;WYWOŁUJEMY ORYGINALNĄ PROCEDURĘ PRZERWAŃ PRZEZ WRZUCENIE NA STOS JEJ ADRESU I WYKONANIE RTS
rts


a osInt jest ustawiane tak:
move.l 4.w,a6			;Exec library base address in a6
	sub.l a4,a4
	btst #0,297(a6)			;68000 CPU?
	beq.s .yes68k
	lea .GetVBR(PC),a5		;else fetch vector base address to a4:
	jsr -30(a6)			;enter Supervisor mode

    *--- save view+coppers ---*

.yes68k:
lea .GfxLib(PC),a1		;either way return to here and open
	jsr		OldOpenLibrary(a6)			;graphics library
	tst.l	d0			;if not OK,
	beq		.quit			;exit program.
	move.l	d0,a5			;a5=gfxbase

	move.l a5,a6
	move.l 34(a6),-(sp)
	sub.l a1,a1			;blank screen to trigger screen switch
	jsr -222(a6)			;on Amigas with graphics cards

    *--- save int+dma ---*
	lea $dff000,a6
	bsr.w WaitEOF			;wait out the current frame
	move.l $1c(a6),-(sp)		;save intena+intreq
	move.w 2(a6),-(sp)		;and dma
	move.l $6c(a4),-(sp)		;and also the VB int vector for sport.

	move.w $1c(a6),osIntena		;save intena+intreq
	move.w 2(a6),osDmacon		;and dma
	move.l $6c(a4),osInt		;and also the VB int vector for sport.
....


Kod inicjujący to MiniWrapper by Photon (http://coppershade.org/asmskool/SOURCES/Developing-Demo-Effects/DDE1/Coppershade-DDE1/), więc nie wiem co jeszcze miałbym potwierdzać
1
[#306] Re: A może by tak Yoomp! OCS

@Zbych, post #284

Zbych jesteś Mistrzem i właśnie udowodniłeś swoją wielkość. A pamiętam ile było zgryźliwych komentarzy ze strony tej primadonny kodu Kefira...
5
[#307] Re: A może by tak Yoomp! OCS

@Zbych, post #300

Po zainstalowaniu na HD.
Ale ja chyba wiem dlaczego tak sie dzieje.
Mam pytanie ktore trapi wiekszosc koderow od zarania dziejow:
Czy kontrolujesz moze czy aby rejestr VBR nie jest zerowy?

<marudzenie_mode_on>
Jesli gra ma mozliwosc instalacji na HD to powinna byc mozliwosc wyjascia z gry do systemu
<marudzenie_mode_off>


Ostatnia aktualizacja: 24.12.2024 13:24:06 przez Phibrizzo
[#308] Re: A może by tak Yoomp! OCS

@Phibrizzo, post #307

Czy kontrolujesz moze czy aby rejestr VBR nie jest zerowy?


Nie jestem biegły archtekturze Amigi zwłaszca tych bardziej wypasionych, tak jak wspomniałem korzystam z kodu Miniwrapper z tego co rozumiem jeśli zostanie wykryty cpu > 68k to wektor VBR jest pobierany i zapamiętywyany, nic więcej chyba nie jest tam robione. W momencie jak pokazywany jest screen z tekstem urchamiane są przerwania i kanały DMA jeśli to kogoś interesuje to układ bitów wygląda tak:
move.w	#%1000011111110000,$96(a6) 	;włączenie kanałów DMA					  			
			move.w	#%1101000000101000,$9a(a6)	;włączenie portów i VBint
[#309] Re: A może by tak Yoomp! OCS

@Zbych, post #305

Jesli ja mialbym uzywac startupa to takiego:

link

To jest startup StingRaya i oprocz ACK interrupt fix.
Dziala tez na Amigach z kartami graficznymi.
Startup Photon-a nie ma kodu dzialajacego prawidlowo na Amigach z kartami graficznymi.
Przynajmniej ja nie widze takiego kodu tutaj.
Zobacz .DoView w startupie StingRay-a, tak jest prawidlowo.
[#310] Re: A może by tak Yoomp! OCS

@Zbych, post #308

Czesto jest tak ze jesli VBR zostal przeniesiony z adresu $0 do innego np: FASTu.
to czesc replayerow do modulow lub prcedur kozystajacych z przerwan nie chce dzialac.

Dlatego wczesniej trzeba pobrac aktualna pozycje tego rejestru. W C robione to jest tak:

APTR GetVBR(void)
{
        APTR vbr = NULL;

// sprytny kawalek kodu w asmie
// movec.l VBR, D0
// RTE
        
        static UWORD getvbr[] = { 0x4e7a, 0x0801, 0x4e73};
                
        SysBase = *(struct ExecBase**)4;

        if(((*(struct ExecBase**)4)->AttnFlags) & AFF_68010)
        {
                vbr = (APTR)(Supervisor((void*)getvbr));
        }
        
        return vbr;
}
[#311] Re: A może by tak Yoomp! OCS

@Zbych, post #305

Mogę zajrzeć do źródeł jeśli oczywiście chcesz i mi je w jakiś sposób udostępnisz. Od razu powiem, że źródła nie wypłyną. Jeśli jesteś zainteresowany to napisz do mnie mejla, adres w profilu.
4
[#312] Re: A może by tak Yoomp! OCS

@Zbych, post #308

Troche z innej beczki.
Widzialem ze jest tez werjsa dla CDTV/CD32. A jesli dobrze sie domyslam cale dane sa skompresowane.
Mysle ze robiac wersje pod te konkretne platformy nie jest to konieczne. Szkoda czasu na dekompresje.
Miejsca jest dosyc.

<marzenia_mode_on>
Dla w/w kompow marzy mi sie muzyka odgrywana bezposrednio z CD :)
<marzenia_mode_off>

Ostatnia aktualizacja: 25.12.2024 13:37:12 przez Phibrizzo
1
[#313] Re: A może by tak Yoomp! OCS

@Phibrizzo, post #312

Mysle ze robiac wersje pod te konkretne platformy nie jest to konieczne. Szkoda czasu na dekompresje.

Wersja CD zawiera skompresowane dane bo inaczej musiałbym więcej zmian dodawać w kodzie dla buildu CD a tak to obie wersje mają tylko minimum niezbędnych różnic.
Obraz CD miał zawierać bonusowe rzeczy i w zasadzie są tam: obraz dyskietki dla wersji na C64 i muzyka z gry w formacie MP3. Miało coś jeszcze być ale niestety jest tylko to.

Co do muzyki odgrywanej z CD to prawdopodobnie byłby problem z jej synchronizacją z odbiciem piłki - taki właśnie miałem problem gdy player modułów był instalowany w przerwaniach timera, po pewnym czasie odbicie piłeczki traciło synchronizację z muzyką, dlatego muzyka odtwarzana jest w przerwaniach rastra.
[#314] Re: A może by tak Yoomp! OCS

@Zbych, post #305

Tak się zastanawiam, czemu służy odłożenie przerwań i copperlisty systemowej jak dobrze rozumuję (funkcje z biblioteki, którą ładujesz do A6).

Odpaliłem grę bez instalacji z ADFa i nie ma tutaj wychodzenia z gry do systemu, więc jest sens odkładanie tych danych? Tak pytam z ciekawości, bo troszkę się zainteresowałem asm ostatnio i każda wiedza się przyda

Sama gra to oczywiście majstersztyk podziwiam talent kodowania i znajomość hardware Amigi.
[#315] Re: A może by tak Yoomp! OCS

@tukinem, post #314

...czemu służy odłożenie przerwań i copperlisty systemowej jak dobrze rozumuję

Tak było w pierwotnym kodzie MiniWrappera, więc pewnie on w założeniu miał dawać taką możliwość, ale ja takiego czegoś nie zakładałem. Natomiast potrzebowałem wektora przerwań bo w Kickstarcie 1.3 albo 1.2 (już nie pamiętam) wymagane było działanie tych przerwań podczas operacji dyskowych więc w mojej procedurze obsługi przerwań (w momencie gdy jest ekran ładowania) na koniec wywołuję procedurę systemową której wektor został odczytany, to dla kompatybilności wstecznej.

Dzięki za miłe słowa ale nie czuję się utalentowanym. Wydaje mi się że 70% wiedzy zdobyłem przy tym projekcie oglądając na początek kilka tutoriali na YT jak się koduje na Amidze i czytając wybrane fragmenty dokumentacji "Hardware Manual" które w danym momencie potrzebowałem (do tej pory nie do końca rozumiem blittera), pozostałe 30% wiedzy miałem z czasów gdy pisałem w Amosie (prawie 30 lat temu). No i oczywiście jeśli chodzi o asm to też pomogła mi wiedza którą zdobyłem pisząc na C64 w bo tam też pisałem w asmie.
2
[#316] Re: A może by tak Yoomp! OCS

@Zbych, post #315

A czy istniałaby możliwość dodania wył/wł. ditheringu klawiszem? Mam wrażenie, że utrudnia rozpoznanie zbliżających się pól.

Ostatnia aktualizacja: 26.12.2024 13:04:15 przez Jacques
[#317] Re: A może by tak Yoomp! OCS

@Zbych, post #315

To zdolny jestes bardzo.
Troche poczytales, troche obejrzales, i juz pierwsza gre w ASM na Amige napisales.
Gratulacje.
1
[#318] Re: A może by tak Yoomp! OCS

@Jacques, post #316

Zrobiłem nową publikację na itch (wersja 1.01), wrzuciłem poprawki dotyczącę VBR które zrobił kolega Asman (dzięki jeszcze raz), więc powinen już zniknąć problem z uruchomieniem na A4000. Jeśli ktoś mógłby potwierdzić na real hardware to by było super.
6
[#319] Re: A może by tak Yoomp! OCS

@Zbych, post #318

Teraz dziala na 060 :)
3
[#320] Re: A może by tak Yoomp! OCS

@Zbych, post #318

Super, dzięki! Będę mógł sprawdzić dopiero w sobotę wieczorem, ale już chyba sprawdzone
[#321] Re: A może by tak Yoomp! OCS

@Zbych, post #318

Zbych, po pierwsze wspaniała robota (no i muzyka wymiata!). Odpaliłem grę na emulatorze i działa ok. Niestety ani na mojej A500 + 1.5 MB RAM + IDE ani na mocno dopalonej A1200 z 060 gra nie działa . W przypadku A500 zatrzymuje się na TESTING SPEED, zaś na A1200 mam FAST AMIGA FULL QUALITY i za chwilę gra wychodzi do systemu. Próbowałem bez s-s, bez cpu cache i na OCS. Bez rezultatu . Oczywiście to Yoomp w wersji 1.01.
[#322] Re: A może by tak Yoomp! OCS

@MarX, post #321

Może koledzy mający podobne konfiguracje coś doradzą, bo jeśli nie mogę odtworzyć podobnej sytuacji/konfiguracji na emu to ciężko mi stwierdzić co może być przyczyną.
[#323] Re: A może by tak Yoomp! OCS

@MarX, post #321

No walsnie ja testowalem na 060 na A1200 i wersja 1.01 dziala. Widac jakas specyficzna konfiguracja.
1
[#324] Re: A może by tak Yoomp! OCS

@Zbych, post #322

Nie wiem czy przewidziales taka bardzo rzadko spotykana konfiguracje jak A500+ z 1,5MB chip RAM.
Ja sam nie wiedzialem, ze taki konfig istnieje. Jest watek na PPA o takim konfigu.
Ale zdaje sie, ze mozna go na WinUAE tez ustawic.
A co do tej A1200, to o ile zrozumialem gra wychodzi do DOS-a.
Czyli musisz sprawdzic, gdzie w Twoim kodzie sa takie Exity z programu.
Moze nie moze wolnej pamieci zaalokowac i wychodzi?
Albo jakies przerwanie jest zajete?
Cos w tym stylu, bo tak to mialby guru.
[#325] Re: A może by tak Yoomp! OCS

@Don_Adan, post #324

Nie mam nigdzie dynamicznej allokacji, wszystko mam na statycznych buforach zadeklarowanych w kodzie. Efekt wyjścia do systemu pojawiał się w momencie gdy system nie potrafil zaallokować pamięci wymaganej przez exec ale to się dzieje natychmiast przed załadowaniem go do pamięci. Testowałem dziwne konfiguracje (np. A600 z 1mb chip i 0.5 fast albo 1mb chip i cpu na 14MHz), ale akurat 1.5 chip i A500+ nie testowałem wcześniej ale teraz sprawdziłem na emu i taka konfiguracja działa normalnie
[#326] Re: A może by tak Yoomp! OCS

@Don_Adan, post #324

Tak. Wątek jest właśnie po tym, jak dodano w Winuae opcję 1,5 MB Chip RAM. I jak się okazało później na żywo istnieją takie konfiguracje.

https://www.ppa.pl/forum/amiga/46924/problem-z-1-5mb-chip-ram
[#327] Re: A może by tak Yoomp! OCS

@Don_Adan, post #324

Nie wiem czy przewidziales taka bardzo rzadko spotykana konfiguracje jak A500+ z 1,5MB chip RAM.
Ja sam nie wiedziałem, ze taki konfig istnieje. Jest watek na PPA o takim konfigu.

Wow, a ja nie wiedziałem, że mam "bardzo rzadko spotykaną konfigurację", a przecież to tylko dodatkowe 0.5 MB RAM wlutowane na płycie A500+ wraz z rozszerzeniem 0.5 MB pod klapką . Co do A1200 to sprawa się rozwiązała, przynajmniej częściowo. Zobaczyłem pod SnooopDosem, że brakowało mu przypisania "Yoomp!:", wtedy gra wychodziła do systemu. Po dodaniu przypisania do odpowiedniego katalogu, gra zachowuje się tak jak w przypadku A500, czyli zatrzymuje się na TESTING SPEED

Ostatnia aktualizacja: 27.12.2024 00:06:14 przez MarX
[#328] Re: A może by tak Yoomp! OCS

@Zbych, post #325

akurat 1.5 chip i A500+ nie testowałem wcześniej ale teraz sprawdziłem na emu i taka konfiguracja działa normalnie

OK, to w takim razie może to być jeszcze jakiś dodatkowy element w mojej Amidze 500, który koliduje z grą. Dzięki za sprawdzenie na emu. Zastanawia mnie tylko czemu nie działa w takim razie na A1200 ...

Ostatnia aktualizacja: 27.12.2024 00:09:50 przez MarX
[#329] Re: A może by tak Yoomp! OCS

@MarX, post #327

Bo ja myslalem, ze wtedy jest 1MB chip i 0,5MB slow, a nie ze jest 1,5MB chip.
Ta gra ma jakis s-s czy tez loader?
No i czy masz stos internetowy gdzies odpalony, bo gry zwykle tego nie lubia.
Ogolnie co masz w tej A500+?
Ile stacji dyskietek, jaki kickstart?
Jak gre odpalasz?
[#330] Re: A może by tak Yoomp! OCS

@MarX, post #328

Napisz jaki procek jest w tej A500+ i jaki kickstart.
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