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

@tukinem, post #420

nie uruchamia, bo wymaga procka 2015+

Że jak??? Serio??? To mi pewnie na moim starym intelu i5 czwartej generacji już nie zadziała Co to się porobiło się...
[#422] Re: A może by tak Yoomp! OCS

@Madman, post #421

Źródło
i cytat:

- Host CPU requirement bumped to AVX2 (~2015+ CPUs). This is just arbitrary decision to cut off "too old" CPUs for now until things get better. Speed is not that relevant at this point. Non-AVX version might be also available when/if automated builds are added later.


Mam nadzieję, że w finalnej wersji powróci kompatybilność ze starszymi prockami.
1
[#423] Re: A może by tak Yoomp! OCS

@tukinem, post #422

W tym cytacie jest małe przekłamanie bo te instrukcje, z tego co wyczytałem, zaczęto wprowadzać już od procków Haswell a mój, czwartej generacji właśnie jest Haswellem a jest z 2013.
[#424] Re: A może by tak Yoomp! OCS

@Zbych, post #415

Ktoś już o to co prawda pytał, ale chyba pozostało bez reakcji (choćby odmownej): czy rozważyłbyś dodanie sterowania z klawiatury? Myślę, że strzałki i np. spacja/shift dla skoku byłyby idealne
Może chociaż to, skoro z opcjonalnym wyłączeniem ditheringu się nie udało Aniołek
[#425] Re: A może by tak Yoomp! OCS

@Jacques, post #424

Dodałem obsługę klawiatury: klawisze kursora oraz spacja/enter/kursur góra do skoku.

Jak już dodałem w grze to wypadało też dodać do menu i do przerywania ekranów oczekiwania (hasło i get ready).

Sterowanie wymagało troche zmian w porównaniu do zwykłej procedury do pobierania hasła. Było troche zabawy bo przy okazji popsułem pobieranie nazwy i zapis do pliku :p ale się udało... w miare, bo czasami jak się używa na zmianę joya i klawiatury to zdarzało mi się że np. po starcie piłka automatycznie zaczynałą poruszać się w jednym kierunku, albo wejście w menu wprowadzania hasła powodowało natychmiastowy powrót do menu.

Na razie wrzucam tu link bo musze jeszcze potestować. Jak ktoś zauważy podobne zachowanie lub inne dziwne to proszę o info.
6
[#426] Re: A może by tak Yoomp! OCS

@Zbych, post #425

Serdeczne dzięki, super! Niestety dziś wyjeżdżam i potestować będę mógł najwcześniej jutro wieczorem.
[#427] Re: A może by tak Yoomp! OCS

@Zbych, post #425

Swoją drogą na A1200 z blizzardem 1220 chodzi w full detalach :) Genialna gra!
[#428] Re: A może by tak Yoomp! OCS

@Zbych, post #425

Dzieki za dodanie obslugi klawiatury.

Jednak jest z nia kilka problemow:
1. Gdy pojawia sie plansza z numerem levelu oraz haslem do niej, bardzo dlugo trzeba sie nameczyc zaby przejsc dalel. Tak jakby gra nie reagowala na naciskanie glawiszy.
2. Podczas gry dochodzi do "zapamietywania" wcisietego klawisza i pileczka porusza sie sama w wybranym kierunku. Zazwyczaj w prawo. Nawet jesli bede chcial zmienic kierunek to i tak pozniej sama zmieni go na przeciwny.
[#429] Re: A może by tak Yoomp! OCS

@Phibrizzo, post #428

Ja jeszcze zauważyłem coś takiego w poprzedniej wersji (bez obsługi klawiatury, ale pewnie nadal występuje), że przy zapisie wyniku dioda HDD mignęła dość szybko (zapis), ale później ten ekran z zapisywaniem długo nie znika i czekało się nie wiadomo na co ileś sekund. Save natomiast był ostatecznie poprawnie zapisany.
[#430] Re: A może by tak Yoomp! OCS

@Jacques, post #429

Tez to zauwazylem i zastanawialem sie co gra z tym plikeim robi ze to tak dlugo trwa.
Jednak nic nie pisalem bo myslalem ze go jakos hashuje albo kompresuje.
[#431] Re: A może by tak Yoomp! OCS

@Phibrizzo, post #430

Ale grubych kilka sekund na 060 i to już po tym jedynym mignięciu dysku?
[#432] Re: A może by tak Yoomp! OCS

@Jacques, post #431

Czeka aż się dane faktycznie zapiszą (z buforów filesystemu na dysk) zanim znowu wyłączy system?:) Opóźnienie pewnie dobrane losowo

Ostatnia aktualizacja: 17.01.2025 14:26:44 przez kiero
2
[#433] Re: A może by tak Yoomp! OCS

@kiero, post #432

Dokładnie. Nie pamiętam już szczegółów ale wydaje mi się że opóźnienie dobrałem eksperymentalnie pod zapis na dyskietkę pod KS 1.3 albo 1.2. Wiem że miałem z tym problem dlatego dodałem kilka sekund po zakończeniu wysyłania danych, a potem po zamknięciu biblioteki dos ale już nie pamiętam dlaczego tak jest.
1
[#434] Re: A może by tak Yoomp! OCS

@Zbych, post #433

A to można załatwić osflushem którego Asman napisał - u mnie w ACE działa bezbłędnie z ks1.3 jak i wyżej

https://eab.abime.net/showthread.php?t=92911 post nr 4

Ostatnia aktualizacja: 17.01.2025 15:05:29 przez teh_KaiN
2
[#435] Re: A może by tak Yoomp! OCS

@teh_KaiN, post #434

Dzięki, dodałem i niby działa. Czy trzeba jakiś sleep gdzieś dać, bo wywaliłem opóźnienia zarówno po zapisie jak i po zamknięciu pliku, a ten osflush wywołałem też po zamknięciu pliku.
1
[#436] Re: A może by tak Yoomp! OCS

@Zbych, post #435

Nie trzeba dawać sleepa, tą robotę wykonuje tutaj WaitPort.

A teraz coś zupełnie z innej beczułki - moje osobiste przemyślenia na temat odczytu/zapisu i io flush.

Dla mnie najładniej byłoby dawać io flush gdy już na danym etapie skończyłeś odczyt/zapis i wtedy dać wspomniany io flush a potem ubić os. Czyli ja preferuje coś takiego
1. przywrócenie OS
2. blok odczytu/zapisu pliku(ów)
3. io flush
4. ubić os

Oczywiście że możesz po każdym odczytanym/zapisanym plikiem dawać io flush, tak jak możesz przed każdym odczytem/zapisem przywracać a potem ubijać os.

Na marginesie:
W sumie to bardzo ciekawe, że piszemy grę waląc po rejestrach a jednak musimy znać dosyć dobrze OS.
A jeśli piszemy pod OS to nie musimy znać się na rejestrach.
Wniosek: Niech każdy wybierze swoją własną drogę i nikomu nic do tego.
1
[#437] Re: A może by tak Yoomp! OCS

@asman, post #436

W porządku, ale czasami pisząc pod system warto znać kilka sprzętowych rzeczy:

- Rodzaje przerwań (VERTB, COPER itp.),
- Rejestry Blittera,
- Rejestry ustawiane przez Copper (UCopList).

Dla przykładu ja kiedyś napisałem przeglądarkę poziomów do gry Benefactor, która wyświetlała na ekranie systemowym niebo i wodę za pomocą UCopList.

Sprawiłem też, że był wyświetlany animowany pająk z gry na ekranie systemowym.

Oczywiście, że niech każdy pisze jak mu pasuje. Ale można chyba polecać innym własne rozwiązania, jeżeli u nas sprawdzają się dobrze.

Ja nie napisałem nigdy programu, czy gry wyłącznie pod rejestry, lub wyłączającej system. Alokacja pamięci graficznej, otwieranie View, bądź ekranu, ładowanie danych z dysku twardego itp. to metody z którymi pracuję od początku.

OwnBlitter i UCopList to są funkcje, które pozwalają w przyjazny dla systemu sposób korzystać z tych koprocesorów.

Dzięki systemowi możemy też rozwiązywać szybciej problemy z działaniem naszego programu. Konfiguracji Amig jest dużo. Z automatu mamy też wsparcie dla PAL/NTSC, czy pamięci FAST.

Na koniec napiszę, że gratuluję Zbyszkowi napisanie złożonej i z tego co czytałem bardzo grywalnej produkcji. Jak również gratuluję Tobie wsparcia i pomocy, której udzieliłeś koledze.

Ostatnia aktualizacja: 18.01.2025 10:22:27 przez Hexmage960
2
[#438] Re: A może by tak Yoomp! OCS

@asman, post #436

Dodałem ten kod osflush ale wycofałem kod obsługi sterowania z klawiatury bo jednak niestabilnie działa. Wydaje mi się że musiałbym przerobić kod wprowadzania hasła/nazwy hiscore żeby działał "jednolicie" ze sterowaniem gry i w menu bo tam wprowadziłem zmiany a pobieranie hasła działa po staremu więc tu wietrze problem. Na razie nie mam na to czasu i ochoty, bo mam inne rzeczy na tapecie - nie chce wyprzedać faktów ani newsów ale prowadzę rozmowy na temat wydania fizycznego.
Nie wiem jak sobie radzą inni koderzy ale dla mnie debugowanie programów amigowych to jakiś koszmar, może założę jakiś wątek o debugowaniu i podzielę się moimi spostrzeżeniami i może ktoś coś ciekawego podpowie, chyba że jest już taki wątek, ale ja nie znalazłem żeby był typowo o debugowaniu i narzędziach.

Ostatnia aktualizacja: 18.01.2025 23:58:58 przez Zbych

Ostatnia aktualizacja: 18.01.2025 23:59:35 przez Zbych
[#439] Re: A może by tak Yoomp! OCS

@Zbych, post #438

Pisalem. WHDload jest do tego najlepszy.
Nie potrzeba MMU, a raport calkiem zgrabny jest.
Tylko musi byc crush, bo bez tego jest trudniej.
Zrob sobie slave'a i mozesz debugowac.
[#440] Re: A może by tak Yoomp! OCS

@Don_Adan, post #439

Nie chodzi o to że gra crashuje tylko czasami gdy rozpoczyna się gra to efekt jest taki jakby była ustawiona flaga ruchu w jednym kierunku (mimo że czyszczeona jest przed startem i po każdej stracie piłki), albo dodasz wpis w hiscore to w menu ustawia się flaga określająca wciśnięcie fire/"klawisza potwierdzenia" po ruchu "kierunku" i nie do końca rozumiem dlaczego tak się dzieje. Tu chyba WHDLoad nie pomoże.
[#441] Re: A może by tak Yoomp! OCS

@Zbych, post #438

@Zbych
Nie martw się tym, pomogę Ci. Jak ostatnio, wyślij mi mejla i źródła, bo ja mam stare.
1
[#442] Re: A może by tak Yoomp! OCS

@Zbych, post #440

Ja uzywalem, czegos takiego do emulowania fire'ow na klawiaturze.
To jest przerobka zrodel Wepl-a.
Dzialala bez problemu.
Tutaj jest wiecej tego, zdaje sie, ze niektore mialy pelna obsluge dzoja z klawiatury, a jeden slave (Upscope) to chyba nawet analogowy dzojstik emulowal na klawiaturze.

link

Ten kod jest z Aargh

============================================================================
; callback/hook which gets executed on each keypress

_SetupKeyboard
;set the interrupt vector
	pea	(.int,pc)
	move.l	(a7)+,($68.W)
;allow interrupts from the keyboard
	move.b	#CIAICRF_SETCLR!CIAICRF_SP,(ciaicr+_ciaa)
;clear all ciaa-interrupts
	tst.b	(ciaicr+_ciaa)
;set input mode
	and.b	#~(CIACRAF_SPMODE),(ciacra+_ciaa)
;clear ports interrupt
	move.w	#INTF_PORTS,(intreq+_custom)
;allow ports interrupt
	move.w	#INTF_SETCLR!INTF_INTEN!INTF_PORTS,(intena+_custom)
	rts

.int
	movem.l	d0-d1/a0-a1,-(a7)
	lea	(_custom),a0
	lea	(_ciaa),a1
;check if keyboard has caused interrupt
	btst	#INTB_PORTS,(intreqr+1,a0)
	beq	.end
	btst	#CIAICRB_SP,(ciaicr,a1)
	beq	.end
	move.l	_custom1+8(PC),D0
	beq	.end
;read keycode
	move.b	(ciasdr,a1),d0
;set output mode (handshake)
	or.b	#CIACRAF_SPMODE,(ciacra,a1)
;calculate rawkeycode
	not.b	D0
	ror.b	#1,D0
	btst	#7,D0
	beq.b	.pushed
	cmp.b	#$D0,D0		; F1
	bne.b	.endplayer1
	bset	#3,$11C.W	; gl_portB
	bra	.back
.endplayer1
	cmp.b	#$D1,D0		; F2
	bne.b	.endplayer2
	bset	#2,$11C.W	; gl_portB
	bra	.back
.endplayer2
	cmp.b	#$D2,D0		; F3
	bne.b	.endcoin1
	bclr	#4,$11C.W	; gl_portB
	bra	.back
.endcoin1
	cmp.b	#$D3,D0		; F4
	bne.b	.endcoin2
	bclr	#6,$11C.W	; gl_portB
	bra	.back
.endcoin2
	cmp.b	#$D4,D0		; F5
	bne.b	.endconfig
	bset	#1,$11C.W	; gl_portB
	bra	.back
.endconfig
	cmp.b	#$E0,D0		; Left Shift
	bne.b	.endfire1
	bset	#2,$11D.W	; gl_potgo
	bra	.back
.endfire1
	cmp.b	#$E1,D0		; Right Shift
	bne	.back
	bset	#6,$11D.W	; gl_potgo
	bra	.back
.pushed
	cmp.b	(_keyexit,pc),D0
	beq	.exit

	cmp.b	#$50,D0		; F1
	bne.b	.noplayer1
	bclr	#3,$11C.W	; gl_portB
	bra.b	.back
.noplayer1
	cmp.b	#$51,D0		; F2
	bne.b	.noplayer2
	bclr	#2,$11C.W	; gl_portB
	bra.b	.back
.noplayer2
	cmp.b	#$52,D0		; F3
	bne.b	.nocoin1
	bset	#4,$11C.W	; gl_portB
	bra.b	.back
.nocoin1
	cmp.b	#$53,D0		; F4
	bne.b	.nocoin2
	bset	#6,$11C.W	; gl_portB
	bra.b	.back
.nocoin2
	cmp.b	#$54,D0		; F5
	bne.b	.noconfig
	bclr	#1,$11C.W	; gl_portB
	bra.b	.back
.noconfig
	cmp.b	#$60,D0		; Left Shift
	bne.b	.nofire1
	bclr	#2,$11D.W	; gl_potgo
	bra.b	.back
.nofire1
	cmp.b	#$61,D0		; Right Shift
	bne.b	.back
	bclr	#6,$11D.W	; gl_potgo
.back
;better would be to use the cia-timer to wait, but we arn't know if
;they are otherwise used, so using the rasterbeam
;required minimum waiting is 75 ľs, one rasterline is 63.5 ľs
;a loop of 3 results in min=127ľs max=190.5ľs
	moveq	#3-1,d1
.wait1
	move.b	(vhposr,a0),d0
.wait2
	cmp.b	(vhposr,a0),d0
	beq.b	.wait2
	dbf	d1,.wait1

;set input mode
	and.b	#~(CIACRAF_SPMODE),(ciacra,a1)
.end
	move.w	#INTF_PORTS,(intreq,a0)
;to avoid timing problems on very fast machines we do another
;custom access
	tst.w	(intreqr,a0)
	movem.l	(a7)+,d0-d1/a0-a1
	rte



Ostatnia aktualizacja: 19.01.2025 11:01:27 przez Don_Adan
[#443] Re: A może by tak Yoomp! OCS

@Zbych, post #438

Ja używam wtyczki Bartmana do vscode i mogę sobie stepować po kodzie C, z podglądem wszystkich zmiennych i rejestrów, na prawdziwym i pełnym zatrzymaniu całej (emulowanej) maszyny. Są też breakpointy, wszystko działa niezależnie czy kod jest systemu (wtedy jest auto-deasemblowany) czy mój, czy zwykły czy w przerwaniu.

Sprawdziłbym na Twoim miejscu wtyczkę Amiga Assembly do vscode, wydaje mi się że ma sporo wspólnego z Bartmanową i też sobie można tam miło debugować.

Chyba że problem jest tylko reprodukowalny na konkretnej żywej konfiguracji, no to wtedy ciężko.
[#444] Re: A może by tak Yoomp! OCS

@teh_KaiN, post #443

Używam wtyczki "Amiga Assembly" do VS Code i kiedyś to działało z fs-uae ale było bardzo kiepskie, słabo kompatybilne, więc prawie na początku zrezygnowałem z tego debugera, ale dobrze że otym wspomniałeś bo teraz jak wszedłem na informacje o tej wtyczce to wg opisu może ona działać z WinUAE, tylko nie wiem czy da się w miarę prosto teraz przekonfigurować projekt żeby chciał z tym działać.

Do tej pory w ostateczności korzystałem z debugera wbudowanego w WinUAE ale jest to strasznie toporne w użyciu, chyba w starszych wersjach było to jeszcze jakoś ładnie przystępnie zrobione w okienkach i dało się w miare wygodnie korzystać, a od pewnej wersji jest tylko okno tekstowe na któym widać tylko aktualnie wykonywany rozkaz. Jak chce gdzieś wrzucić breakpoint to musze najpierw w kodzie umieścić jakąs "unikalną" sekwencję bajtów, odpalić program i w debugerze wyszukać w pamięci gdzie ta sekwencja jest i wtedy wybrać sobie miejsce gdzie ustawić breakpoint, więc to jest żmudne i niewygodne.
[#445] Re: A może by tak Yoomp! OCS

@teh_KaiN, post #434

Małe sprostowanie co do os flusha zamieszczonego na EAB. Tam jest błąd: Jeśli nie powiedzie się DeviceProc z biblioteki dos to nastąpi skos do etykiety .free i zamiast zwolnić pamięć będzie robiony ParentDir (offset -210 względem bazy a6 a tu zamiast bazy exec mamy bazę dos).

Inna sprawa czy DeviceProc dla nazwy "sys:" kiedykolwiek się nie powiedzie. Niestety moja wiedza w tym temacie jest ograniczona i jedyne co mi przychodzi do głowy to że jest tak bardzo mało pamięci że nie zaalokuje jej na strukturę DevProc. To tak na marginesie

Prosty fix to albo dodanie poprawnej bazy exec przed zwalnianiem pamięci. Albo coś dla wyjadaczy, przesunięcie załadowania bazy exec z miejsca gdzie jest wysyłany pakiet do miejsca zaraz za wywołaniem DeviceProc.

W każdym razie to też poprawiłem w Yoomp!.
2
[#446] Re: A może by tak Yoomp! OCS

@asman, post #445

Wrzuciłem na itch.io nową wersję z poprawkami Asmana, dzięki czemu sterowanie klawiaturą działa tak jak powinno.
4
[#447] Re: A może by tak Yoomp! OCS

@Zbych, post #446

Nie wiem czy tylko u mnie wystepuje ten problem w tej wersji, ale mi pokazuje sie tylko napis "Loading", pileczki skacza.
Nic wiecej sie nie dzieje.

Odpalane z HDD. Do tej pory bylo OK.

Odpalilem z dyskietki. Poszlo. Ale na glownej planszy z wyborem opcji, animacja tunelu zatrzymala sie po 2 sekundach.
Muza gra, ale nic wiecej nie da sie zrobic.

Ostatnia aktualizacja: 25.01.2025 21:31:49 przez Phibrizzo
[#448] Re: A może by tak Yoomp! OCS

@Phibrizzo, post #447

Faktycznie za krótko testowałem, z uruchamianiem z hd jest jakiś problem
[#449] Re: A może by tak Yoomp! OCS

@Phibrizzo, post #447

To ja przykwasiłem gdzieś. Sprawdzę i ogarnę. Z góry przepraszam, chyba za szybko chciałem wypuścić zmiany.


Ostatnia aktualizacja: 25.01.2025 22:38:21 przez asman
[#450] Re: A może by tak Yoomp! OCS

@asman, post #449

Wydaje mi się że to może mieć coś wspólnego z kompresją execa (carnker). Zmieniłem na shrinklera i wygląda że jest ok, tylko teraz dłużej się uruchamia (widać że jest tu znacznie wolniejsza dekompresja).

Na razie wrzucam tu z prośbą o przetestowanie.

https://drive.google.com/file/d/1BhnCbr4q_fRWVpR7zuGsCCclihCI6-9M/view?usp=sharing
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