1

(3 odpowiedzi, napisanych Software, Gry - 8bit)

U mnie nie działa. Tj. uruchamia się, ale nie reaguje na nic. I poza tym nadpisuje paletę 0 VBXE, dzięki czemu po resecie na ekranie przeważnie nic nie widać.

EDIT: działają tylko klawisze T i F.

2

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Teraz jest elegancko, dzięki.

3

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Teraz jest lepiej, jest krajobraz zamiast czarnego tła, a zakłócenia w wersji na Antonię zniknęły.

EDIT:

w1k napisał/a:

Jeśli chodzi o FPS, mierzę go, gdy naciskam F

Ja też, wyniki są z samego początku, zaraz po załadowaniu. Jeszcze raz:

Altirra 14 MHz: 5.26-5.40
Antonia II: 5.40-5.55 (wersja ogólna), 5.71-5.88 (wersja specjalna)
Rapidus 20 MHz: 7.69-8.00
Rapidus 40 MHz: 11.11-11.76

Czy byłby duży spadek FPS-ów, gdyby sam dolny panel zrobić w średniej rozdzielczości VBXE (tj. 320 pikseli w poziomie)?

4

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Jeszcze jedno: wersja na Antonię nie działa dobrze.



https://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=13839

5

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Altirra: 5.26-5.40 FPS
Antonia: 5.40-5.55 FPS (wersja na Antonię: 5.71-5.88)

Ciekawe, skąd ta różnica.

Ale w ogóle chyba jest błąd, patrz obrazek: za tymi oknami nie powinno być tak czarno i w poprzedniej wersji rzeczywiście nie było.


https://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=13838

6

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Cyprian napisał/a:

ciekawe czy Simius w ogóle ma możliwość zmian w rdzeniu 65816

W ogóle ma.

7

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Istnieją dużo prostsze koncepcje, które też nie znalazły powszechnego zrozumienia, np. przyśpieszenie rozkazów move'ów blokowych do 2 cykli na bajt.

8

(9 odpowiedzi, napisanych Software, Gry - 8bit)

U mnie się wysypał na próbie wylistowania podkatalogu: ikonka A:, 2xklik, pokazuje się katalog główny w okienku, 2xklik w podkatalog GEM, porażka.

9

(100 odpowiedzi, napisanych Software, Gry - 8bit)

w1k napisał/a:

Zysk jest niewielki, w modelu około 2% (z 6,61 na 6,73 fps), a w emulatorze gra ma na starcie około 6 fps.

Bardzo dobrze, zysk, to zysk, a poza tym uporządkowanie kodu też się liczy, może da się tam jeszcze coś ręcznie wycisnąć.

Zauważyłem wczoraj, że w wersji na Antonię II, mimo że licznik FPS-ów pokazuje na pierwszej scenie 4.76, czasami przeskakuje na 4.87 - różnica pomiędzy jednym a drugim to około 2%.

Czy chodziło Ci o ekran 160×100 na stałe w oknie, kosztem połowy rozdzielczości w pionie?

Nie, szczerze mówiąc, zaskoczony jestem, że rozdzielczość to 160x200, bo wydawało mi się tak na oko, że 160x100. Mój błąd, powinienem był obejrzeć XDL. No, ale nawet jeśli, to i tak jest lepiej: dwa banki MEMAC to lepiej niż osiem.

Na to, że dane do VBXE idą przez wolną szynę 1,77 MHz, nic się nie da poradzić: sprzętowcy (autorzy) od Antonii II i VBXE musieliby nad tym usiąść razem, a to raczej mało prawdopodobne.

Forum automatycznie wylogowuje użytkownika, który się zalogował, ale przez jakiś czas nie zdradza żadnej aktywności. Nie mierzyłem tego i nie dam głowy, ale na moje oko ten czas to coś pomiędzy 15 a 30 minutami.

Ile by tego nie było, problem w tem, iż w to "niezdradzanie żadnej aktywności" wlicza się najwyraźniej również pisanie postu. Skutek jest taki, że loguję się, piszę dłuższy post, po czym, kiedy klikam "wyślij", wszystko znika i dzieją się rzeczy niestworzone - a konkretnie wyskakuje mi komunikat, że nie mam prawa itd.

Postulowałbym zatem, ile minut by czas automatycznego wylogowania obecnie nie obejmował, przedłużenie go dwukrotne co najmniej. Może warunkowo, tj. użytkownikowi, który kliknął w "Odpowiedz" albo "Napisz nowy post" względnie "Stwórz nowy temat" itp. przydzielić ze trzy godziny, a nie 15 minut.

11

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Ogólnie ten program jest nieco dziwnie skonstruowany. Np. próbuje się cały kod upchnąć w pierwszych 64k, co i tak się nie udaje, w dodatku przydzielając poszczególnym blokom kodu stałe miejsca w pamięci i pilnując, czy się nie przepełniają.

Na dodatek pamięć obrazu ma 16k, ale okno do niej, mające 4k, umieszczone jest pod, o ile dobrze rozumiem, adresem $9000 - co powoduje, że na Rapidusie cały blok 16k od $8000 do $BFFF działa z prędkością 1,77 MHz.

Słowem, można byłoby (chyba?) pod $8000-$BFFF włączyć okno 16k VRAM-u dla ekranu 160x100/256 kolorów na stałe, bez bawienia się w przełączanie kawałków po 4k, a cały kod, który zawala pierwsze 64k i ledwie się tam mieści, przenieść do drugiego bloku 64k, od $010000 do $01FFFF - gdzie też jest FastRAM i nawet jest częściowo wykorzystany na kod.

Zwolniwszy w ten sposób mnóstwo pamięci w pierwszych 64k można byłoby bardzo wiele zmiennych, które w chwili obecnej są zadeklarowane jako 8-bitowe albo 24-bitowe, przedeklarować na 16 albo 32 bity, oraz ewentualnie poupychać tam tablice, które się teraz w nim nie mieszczą.

To z kolei pozwoliłoby może uprościć kod dokonujący obliczeń przez ograniczenie przełączeń na 8 bitów tylko po to, żeby nie nadpisać adresu zmienna+3, gdzie może być już coś innego.

To tylko takie luźne myśli, decyzje i tak należą do w1k.

12

(100 odpowiedzi, napisanych Software, Gry - 8bit)

w1k napisał/a:

i nie wiem, gdzie gra pozwoliłaby nam uzyskać większą fps :)

Na pewno da się jeszcze trochę przyśpieszyć wersję dla Antonii wykorzystując na szerszą skalę sprzętowe mnożenie (makro qsmul i procedury go używające, procedura smul32) i dzielenie (procedura udiv16). Każ mu pod tym kątem napisać nowe wersje math.asm, paint.asm, textures.asm i tw_setup.asm i zobaczymy.

13

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Tu jest film o Doomie na różnych modelach Atari ST: https://www.youtube.com/watch?v=RhrLe2Xy5uY

Od piętnastej minuty z groszami zaczyna się prezentacja na 1040ST, Medze ST, gołym Falconie030 itd.

Myślę, że nie jest źle, dajemy radę.

14

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Nadal działa, jakkolwiek na samym starcie różnicy nie widać, 4.76. Ale pewnie gdzieś dalej będzie.

EDIT: licznik FPS-ów się krzaczy, jeśli zmniejszymy rozmiar obrazu klawiszem "-". Wygląda, jakby jego (licznika) tło nie było wtedy odświeżane.

EDIT 2: sprawdziłem poprzednią wersję na Rapidusie:

20 MHz: 6.45-6.66
40 MHz: 9.09-9.52

w1k napisał/a:

czy będzie w takim razie doc/pdf po programowaniu dla Antonii II?

Proszę:

15

(100 odpowiedzi, napisanych Software, Gry - 8bit)

udiv24a v.2 - nawet to testowałem i wydaje się, że działa.

16

(100 odpowiedzi, napisanych Software, Gry - 8bit)

w1k napisał/a:

ale kiedy wypróbowałem je w Opus 5.1, wymówił się i je odrzucił.

Był może łaskaw podać jakiś powód?

U mnie działa. Zaraz spróbuję porównać stany licznika FPS na tej wersji i na poprzedniej.

EDIT: poprzednia od razu po załadowaniu (zero ruchów) pokazuje na liczniku FPS 4.44-4.54. Nowa: 4.76-4.84. Więc różnica przynajmniej daje się zmierzyć.

A potem podrzucę lepszą wersję tego udiv24a, bo tymczasem udało mi się ją trochę ulepszyć (worst case nie 770 cykli, tylko 390).

17

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Dobrze, zakładam, że prędzej czy później znajdziesz czas, żeby opublikować wersję binarną z tą poprawką.

Teraz wspomniana nieco wyżej druga sprawa:

Załączam dwie procedury napisane pod sprzęt Antonii II, czyli z wykorzystaniem sprzętowego mnożenia i dzielenia:

1) umul16a: czas stały 46 cykli (a nie minimum 80+, a maximum 360+)

2) udiv24a: czas od 60 do ok. 770 cykli (a nie od 230 do 940).

Mógłbyś w wolnej chwili zbudować wersję, która używa tych procedur zamiast oryginałów? Oczywiście na Rapidusie to nie będzie działać, ale jestem ciekaw, na ile to polepszy szykość renderowania klatek na Antonii.

18

(100 odpowiedzi, napisanych Software, Gry - 8bit)

w1k napisał/a:

nie zauważyłem żadnej zmiany fps po kompilacji, może kilka cykli mniej

Ciekawe. Zmiana dotyczy udiv24, procedury 24-bitowego dzielenia, a ściślej głównie jej "pełnej" ścieżki (od etykiety ?full), przez co maksymalny czas tego dzielenia spadł z ok. 1400 do ok. 940 cykli (o 1/3). Taki zysk powinien być gdzieś widoczny, chyba że ścieżka ?full jest używana bardzo rzadko albo tylko w specyficznych sytuacjach.

19

(100 odpowiedzi, napisanych Software, Gry - 8bit)

w1k napisał/a:

dzięki, został przesłany na gitHub

A działa? Pamiętaj, że ja tego nie kompiluję, tylko zatrudniam Gemini do formalnego sprawdzenia. On nie jest nieomylny.

20

(100 odpowiedzi, napisanych Software, Gry - 8bit)

w1k napisał/a:

FPS 5.26 -> FPS 5.88

Czyli 10-11 procent, z grubsza tak, jak obliczał Gemini.

Załączam jeszcze propozycję kolejnych poprawek do math.asm - zdaje się, że zapomniałem je wprowadzić poprzednio.

21

(27 odpowiedzi, napisanych Sprawy atari.area)

qbahusak napisał/a:

Post z memami dotyczącymi atariki. Zachęcam do przeczytania i obejrzenia memów, jest już ich prawie 10 :)

Czy są tam memy o tym, jak Atariki działało w zasadzie nieprzerwanie przez 20 lat, bynajmniej nie na autopilocie, czy też to przyjmujemy za rzecz oczywistą, której doceniać nie należy?

22

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Pin napisał/a:

a Rapidus?

A Rapidus nie, jakkolwiek byłby, oczywiście, mógł.

tebe napisał/a:

na C64 przygotowani są na mega tablice w REU

Nadal jednak, jak mi się wydaje, taka jednostka mnożąco-dzieląca będzie szybsza, choćby o kilkanaście procent, niż megatablice.

23

(100 odpowiedzi, napisanych Software, Gry - 8bit)

dely napisał/a:

Każdy LLM umie tyle, ile mu się da dokumentacji, nie więcej.

Bez wątpienia tak jest, natomiast tutaj mamy do czynienia z sytuacją, że (nazwijmy to) on niektóre rzeczy czasem umie, ale przeważnie nie.

Np. umie się sprawnie posłużyć trybem adresowania długim pośrednim indeksowanym, typu lda [zp],y. Czyli wyglądałoby, że dokumentację od CPU dostał. Ale co to za dokumentacja, która ten tryb adresowania wymienia, a analogicznego trybu bez indeksu - np. lda [zp] - już nie? I tak samo jest z lda (zp),y - to tak; ale lda (zp) - już nie.

Rozkaz stz - czasem zna. Rzadko, ale jednak. Ale przeważnie (i to bardzo przeważnie) nie, toteż prawie wszędzie daje lda #$00 / sta, marnując dwa bajty i dwa cykle (i narzekając w komentarzach, że brakuje pamięci na kod).

16-bitowy akumulator i rozkazy przełączania rep/sep - znowu, czasem zna. Przeważnie nie zna. Przeważnie nie zdaje sobie nawet sprawy z tego, że takie asl/rol, czy lsr/ror można wykonać częściowo w akumulatorze, nawet ośmiobitowym. Chociaż to powinien wiedzieć z dokumentacji od 6502 i z codebase od 6502, czego chyba akurat zbywa.

Niezbyt to rozumiem.

EDIT 8 września: druga runda poprawek (de l'escalier). Mam nadzieję, że to będzie w ogóle działało :)

24

(100 odpowiedzi, napisanych Software, Gry - 8bit)

Pozwoliłem sobie w sposób bardziej systematyczny posiedzieć nad kodem źródłowym, bo, szczerze mówiąc, kiedy patrzyłem na ten program pod disasemblerem, robiło mi się gorzej. Przykłady były powyżej, ale zasadniczo tak samo jest wszędzie.

Zrewidowałem ręcznie 17 modułów, które załączam. Kodu nie kompilowałem, zatrudniłem tylko Gemini, żeby sprawdził go pod względem formalnym. Co zrobił i twierdzi, że jest OK, ale wiadomo, że to nie musi być prawda.

Wg jego oceny zmiany mają spowodować zaoszczędzenie ok. 1,7 KB pamięci oraz ok. 450 tys. cykli czasu renderowania klatki, czyli, znowu wg jego oceny, ok. 11% tegoż czasu. Czy te szacunki są poprawne, i czy w ogóle cokolwiek tu jest poprawne, powinno wyjść w praniu. Proponuję moduły dołączać do projektu po kolei i sprawdzać za każdym razem, czy się buduje i działa. Jeśli nie, zatrudnić AI do poprawek.

EDIT: zapomniałem napisać, zmiany wprowadzone są w blokach .if 1 / .else / .endif, gdzie w sekcji od .if 1 do .else znajduje się kod poprawiony, natomiast w sekcji .else / .endif - kod oryginalny. Można więc sobie na bieżąco porównywać wersję nową ze starą.

Mam nadzieję, że, jeśli się to przyda do czegokolwiek, to przynajmniej do tego, żeby Claude nauczył się korzystać z rozkazów DEC, INC, STZ, BRA, XBA, PHX, PHY, PLX, PLY, PEA, pseudorozkazów Jcc, pośrednich trybów adresowania bez indeksu, no i, rzecz jasna, przeprowadzania złożonych obliczeń rozkazami 16-bitowymi w akumulatorze, a nie 8-bitowymi całkowicie w pamięci (zwłaszcza dotyczy serii par ASL aaa/ROL aaa+1).

To jest jedna sprawa. Druga sprawa: odniosłem wrażenie, że dość kluczowy dla ogólnej wydajności renderowania klatek jest moduł math.asm, a zwłaszcza znajdujące się w nim procedury mnożenia i dzielenia.

Otóż Antonia II ma zaimplementowane mnożenie i dzielenie 16-bitowych int-ów bez znaku w sprzęcie. Jeśli prawdą jest to, co można wywnioskować z komentarzy umieszczonych w kodzie źródłowym, że rendering jednej klatki używa setek i tysięcy mnożeń tudzież dzieleń, przypuszczam, że zamiana procedur kalkulujących to na piechotę na wspomagane sprzętowo powinna dać zauważalny zysk w płynności działania programu.

EDIT 2: usunąłem załącznik, nowsza wersja w poście poniżej.

25

(27 odpowiedzi, napisanych Sprawy atari.area)

seban napisał/a:

Draco, ale serio - pokaż mi proszę, w którym miejscu ja tutaj "rozpętywałem zamieszki"?

W pierwszym poście napisałem, że wielka szkoda, że Atariki nie działa, zapytałem o możliwość robienia regularnych backupów i poprosiłem, żeby przemyśleć takie rozwiązanie. W kolejnym wręcz zacząłem od zaznaczenia, że nikogo nie chcę poganiać i doskonale rozumiem, że ludzie mają pracę, rodzinę, swoje życie i czasami zwyczajnie nie mają czasu czymś się zająć.

No, właśnie tutaj, cytuję: "Na dzień 1 września 2026 atariki.krap.pl nadal pozostaje niedostępne" - słuchaj: wiemy. Wszyscy to wiedzą i krap też wie i nie jest tak, że ma to gdzieś. Po prostu przywrócenie serwisów (nie tylko Atariki) wymaga czasu, a że nie ma do tego pełnoetatowego pracownika (tylko hobbystyczny), więc to trwa.