atarionline.pl Emulacja ANTIC'a na GPU - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthortebe
    • CommentTime1 Dec 2020
     
    gratulacje, działa wyśmienicie :)
    • 2:
       
      CommentAuthorsun
    • CommentTime1 Dec 2020 zmieniony
     
    fiu fiu!
    chyba nie działa ESC.
    • 3: CommentAuthormrk
    • CommentTime1 Dec 2020 zmieniony
     
    @sun celna uwaga. Nie działa, bo nie ma obsługi klawiatury jeszcze, tylko joystick na razie. I zapomniałem całkiem że ESC jest dość ważny w Robbo :)
    • 4:
       
      CommentAuthorsun
    • CommentTime1 Dec 2020
     
    domyśliłem się, że tylko działa joy, ale z reporterskiego obowiązku zaznaczyłem ważność ESC! :)
    • 5: CommentAuthormrk
    • CommentTime1 Dec 2020 zmieniony
     
    @sun obsługa klawiatury już jest (działa Esc i da się wklepać kod na 80 żyć ;) ->link<-

    Skoro klawiatura działa, to nadszedł chyba czas na przetestowanie Basic'a
    • 6:
       
      CommentAuthorsun
    • CommentTime1 Dec 2020
     
    @mrk: miodzio :)
    • 7: CommentAuthorilmenit
    • CommentTime2 Dec 2020
     
    btw, czy dobrze widzę, że przesów pionowy (w Robbo) jest zbyt skokowy?
    • 8: CommentAuthormrk
    • CommentTime2 Dec 2020 zmieniony
     
    @ilmenit pisałem już wyżej - brak (jeszcze) emulacji VSCROL/HSCROL, czyli sprzętowego przewijania ekranu. Będzie.
    • 9: CommentAuthorilmenit
    • CommentTime2 Dec 2020
     
    @mrk - super, dzięki za wyjaśnienie, przeoczyłem w dyskusji powyżej.
    • 10: CommentAuthormrk
    • CommentTime2 Dec 2020 zmieniony
     
    @ilmenit brak HSCROL'a jest dość odczuwalny w kolejnej grze która prawie działa (EDIT: nieaktualne, HSCROL już jest :)

    Proszę państwa, oto Fred: ->link<-

    Potwierdza to moją teorię, że dobrze napisane programy będą działały pomimo 'zgrubnej' synchronizacji CPU i Antic'a. A tutaj to renderowanie jest jednak dość skomplikowane - DLI w każdej linii trybu 4 przełączające charset.

    Niestety w rozgrywce przeszkadza nieco na razie brak głównego bohatera na ekranie (oraz rzucanych przez niego pocisków) - co specjalnie nie dziwi z racji braku implementacji PM :)
    Ale gra działa - da się nawet w ciemno przejść spory kawałek w prawo rzucając niewidzialnymi kamieniami - polecam :)

    W następnej kolejności planowałem doprowadzić Basic do działania (Altira Basic wywala się po wciśnięciu Enter), ale chyba jednak implementacja PM będzie wcześniej :)
    • 11:
       
      CommentAuthorsun
    • CommentTime2 Dec 2020
     
    Niezłe tempo prac.
    Swoją drogą, było "przeszedłem Fred'a w lewo", to może być "przeszedłem niewidzialnego Fred'a" :)
    • 12: CommentAuthormrk
    • CommentTime2 Dec 2020 zmieniony
     

    sun:

    Swoją drogą, było "przeszedłem Fred'a w lewo"

    Dobre, nie znałem. Albo samo nasuwające się: "Twoja stara przechodzi Fred'a w lewo" ;)
    • 13:
       
      CommentAuthorgalu
    • CommentTime2 Dec 2020 zmieniony
     
    Super!

    Jeśli byś chciał potem ogarnąć obsługę mobilnych przeglądarek to się chętnie podzielę wiedzą której musiałem szukać jak zacząłem dorabiać front-end do javascriptowego emulatora Amigi. Obsługa standardów w mobilnym Safari czy Chrome jest taka sama jak w desktopowych browserach, natomiast wychodzą inne problemy i konieczność użycia dodatkowego kodu - np. przy wykorzystaniu Full screen API, Web Audio albo na wyłączenie gestów multitouch czy zapobieganie wygaszaniu ekraniku przy bezczynności. Wszystko to do ogarnięcia - a nawet dużo więcej (np. działają zewnętrzne gamepady, app można uruchamiać "offline" - web manifest, działa nawet pobieranie obrazów dysków z zewnętrznych serwerów czyli byś mógł ściągać giereczki bezpośrednio od Kaza ["cross-site resource sharing"]). :)
    • 14: CommentAuthormrk
    • CommentTime2 Dec 2020 zmieniony
     
    @galu I to jest konkret :) Emulator jak na razie rewelacyjnie mi chodzi w przeglądarce na telefonie (we Fredzie mam wrażenie że scroll jest płynniejszy na telefonie niż na desktopie), ale oczywiście trzeba ogarnąć przynajmniej zrobienie jakiegoś sensownego sterowania (pewnie jakieś strzałki / fire na overlay'u do emulowania joystick'a).
    Na pewno będę się odzywał jak emulator trochę dojrzeje (a jak masz czas i odrobinę chęci by poznać Rust'a to zapraszam po prostu do wrzucania PR'ów na github'ie :)

    Zresztą jeśli chodzi o mobile to jest jeszcze inna opcja którą trzeba będzie przetestować. Z Bevy można budować natywne natywne applikacje pod Android / iOS - na razie pewnie jeszcze nie nadaje się to do produkcyjnego użycia, ale z czasem na pewno to dojrzeje.
    • 15:
       
      CommentAuthorgalu
    • CommentTime2 Dec 2020
     
    A przewidujesz potem jakieś javascriptowe API, żeby podpiąć się do samego silnika emulacji z kodem pisanym w czystym JS (za API wystarczyłby input joyów i klawiatury, coś do ładowania pliku, start, reset, przekazanie konfiguracji samej maszyny i ew. savestate)? Przy okazji - z sejwami też nie ma problemu i jest dobre API do tego (IndexedDB) oraz biblioteki, które w przeźroczysty/wymienny sposób pozwalają zapisywać pliki korzystając z różnych API (File API, serwisy przechowujące pliki w chmurze itd.).

    Odnośnie sterowania to zdradzę jak to u siebie zrobiłem - w większości gier tylko takie sterowanie ma dla mnie sens (na Atari od Alley Cata przez Froggera do Zorro):


    A do gier shoot 'em up alternatywa:
    • 16: CommentAuthormrk
    • CommentTime2 Dec 2020 zmieniony
     

    galu:

    A przewidujesz potem jakieś javascriptowe API, żeby podpiąć się do samego silnika emulacji z kodem pisanym w czystym JS (za API wystarczyłby input joyów i klawiatury, coś do ładowania pliku, start, reset, przekazanie konfiguracji samej maszyny i ew. savestate)?


    Jasne, bardzo łatwo wyeksportować funkcje z WASM'a do javascriptu. Spróbuję coś wystawić w wolnej chwili (choćby tylko funkcję do podawania inputu dla yoy'a na razie) - to będziesz już mógł podpiąć te swoje zabawki :) Wygląda to naprawdę nieźle.
    • 17: CommentAuthormrk
    • CommentTime2 Dec 2020 zmieniony
     
    @galu - wystawiłem na razie do js funkcję:
    set_joystick(port, up, down, left, right, fire)

    przykład użycia zakomentowany w html'u tutaj: ->link<-
    Jakby Ci się udało zrobić jakiś sensowny 'responsywny' CSS działający dobrze na desktopie i mobile oraz podpiąć te kontrolki (pewnie mają sens też tylko na mobile) to była by rewelacja. Fullscreen pewnie też fajnie było by zrobić - ja to robiłem w ten sposób: ->link<- - kontrolki można by dać na jakimś overlay'u nad canvas wtedy.

    Po ściągnięciu pliku html, js i wasm można spokojnie odpalić to sobie lokalnie, trzeba tylko sobie wystawić na lokalnym serwerze http (przynajmniej dla chrome, w firefox dało się jakoś odpalić z file:///)
    • 18:
       
      CommentAuthorjhusak
    • CommentTime2 Dec 2020 zmieniony
     
    Przeszłem, koledzy, przeszłem (Freda w lewo)...

    Swoją drogą, jak będzie to dobrze działać na ifonie, to ci w appstore mogą się pocałować w D...uży zad (nie można umieszczać w appstore emulatorów pozwalających uruchamiać dowolne gry, a nie wiem, czy w ogóle jakichkolwiek emulatorów)
    • 19:
       
      CommentAuthorgalu
    • CommentTime2 Dec 2020
     
    Dzięki, przygotuję! I coś w temacie layoutu i sterowania (np. żeby dobrze działał dotyk to trzeba zablokować systemowe/przeglądarkowe gesty typu double-tap-to-zoom, przesunięcie od lewej krawędzi ekranu w Safari, a w przypadku Fullscreen API - to, czego użyłeś - przypadkowe wychodzenie z tego trybu).

    Oprócz Fullscreen API to i Chrome i Safari oferują też możliwość dodania strony-aplikacji jako ikonki do ekranu domowego (launchera) i wtedy na każdym urządzeniu strona zachowuje się jak normalna pełnoekranowa aplikacja, właściwie to jest najlepsze rozwiązanie dla tego typu aplikacji: ->link<-

    Tu użyte u mnie:
    • 20:
       
      CommentAuthorgalu
    • CommentTime2 Dec 2020
     
    @jhusak: Będzie działać i to nie wbrew Apple a za ich błogosławieństwem bo sami bardzo chętnie wprowadzają potrzebne mechanizmy do Safari (ostatnio sami musieli podpowiedzieć twórcom serwisów streamujących gry "z chmury", że na App Storze ich nie chcą, ale żeby udostępniali je z wykorzystaniem mechanizmów Safari - obsługa WebRTC, gamepadów, WebGL/Audio jest od dawna) :)
    • 21:
       
      CommentAuthorKrótki
    • CommentTime3 Dec 2020 zmieniony
     

    jhusak:

    Haha! Ślad najczęstszego stałego (w temp. pokojowej) pierwiastka we wszechświecie! To tak, jakby to, że oddychasz i wydychasz (m. in.) parę wodną powodowało efekt cieplarniany :D (ojoj, żebym nie podpowiedział komuś, kto to podchwyci).

    Przecież pojęcie "ślad węglowy" nie oznacza literalnie śladu węgla stałego i wyłącznie węgla stałego.

    Forgive me, bo jestem aspołeczny - czy ja poprawnie wyczułem w Twoim poście nutkę teoriospiskowej trolerki?
    • 22:
       
      CommentAuthorjhusak
    • CommentTime3 Dec 2020 zmieniony
     
    @Krótki - ZAWSZE!
    Teorie spiskowe dają wolność intelektualną, o ile nie są bezmyślnie powtarzane.

    Jak wiesz zapewne, termin "teoria spiskowa" powstał, bo ludzie domyślali się prawdy:
    " termin został wymyślony i wprowadzony do szerokiego obiegu kilkadziesiąt lat temu przez CIA po to, by oczerniać ludzi kwestionujących oficjalną wersję zabójstwa JFK (John F. Kennedy – przypis). Kampania CIA spowodowała popularyzację terminu „teoria spiskowa ” i stała się celem kpin i wrogości."

    To cytat z książki "Teoria spisku w Ameryce" Dehavena-Smitha.

    O węglu stałym nie mówiłem jako o stałym, ale aby go wynieść przed wodór, hel i tlen - najczęstsze gazy (w temperaturze pokojowej) we wszechświecie, traktując go niniejszym jako "budulec".

    Poza tym dlaczego, jak widzę, jak wszyscy dokoła kombinują, aby osiągnąć swoje, nie może przekładać się na całość ludzkości? (w sensie, że wszędzie, a nie wszyscy ludzie manipulują). A jak manipulują, to ukrywają. A jak ukrywają, to będą mataczyć.

    Na polskiej wikipedii pod tym hasłem nawet się nie zająknięto na temat wielu TS, które okazały się prawdą.
    • 23: CommentAuthorilmenit
    • CommentTime3 Dec 2020 zmieniony
     
    @jhusak, ale wiesz, że to co w wspomniałeś, że jest książce dehavena-smitha to też propagowana teoria spiskowa? :)
    ->link<-
    • 24:
       
      CommentAuthorjhusak
    • CommentTime3 Dec 2020 zmieniony
     
    Ha! No właśnie, dlatego trzeba śledzić fakty, a nie "teorie". Jak ktoś mi powie (po moich badaniach), że język praindoeuropejski tak ciężko wymyślany to nic innego jak słowiański (w szczególności polski, ale tu nie jestem pewien, badania nie są pełne) to teoria spiskowa,to co mam myśleć?

    Każdy, KAŻDY, jak zacznie to rozkminiać to doznaje olśnienia. I to nie, że czytać innych, bo to jest zawsze manipulacja - ale to, że ma pod ręką taki fajny język i dostęp do słowników i tłumaczy elektronicznych (pomagających w zrozumieniu), a w ogóle się nim nie interesuje. Ba, nawet zakłada, że to jakiś śmieciowy język, a angielski to jest to!
    Diabeł tkwi w szczegółach i potem jest różnie z interpretacją stanu zastanego, ale fundament jest i można go rozkminiać :)

    Robię to od 5 lat i nie przestaje mnie to wszystko zadziwiać.
    Moje odkrycie (potem się okazało, że nie tylko moje) to to, że właściwie każda głoska (z dokładnością do nielicznych zniekształceń) w j. polskim coś znaczy, a nawet kolejność głosek. Wyszło od R, A, a potem poprzez B, CH, Ż(Z), O, P, T, E, I itd. Te wszystkie głoski mają konkretne, łatwo znajdywalne znaczenie. Widać też wyraźne wpływy pisma (przed-starożytnego) na język, jak to, że często wyrazy wspak mają albo to samo znaczenie, albo co ciekawe odwrotne (ale rzadko zupełnie inne), a często np. imiona stanowią kopalnie przymiotów, np. Zofia to wiedza wspak. Filozof to fozolif/wiedzolib/wiedzolub. Afrodyta - zniekształcone - z fal rodita. Herkules/Kargul/Karkul jako taki wielki człowiek. K(G)ark, Herk, to wielki i silny.Zeus/Dzeus/Deus - Dzień. To tak na łatwo. Resta jest albo nie tak oczywista, albo wielooczywista.

    Tak, nasz język ma kilkadziesiąt podstawowych rdzeni, a kilkaset w ogóle (koło 200-300 wg moich obliczeń). Cała właściwie (tak, nawet w Japonii i w Ameryce u Indian są te rdzenie, ale rzadko i w niektórych wyrazach) reszta świata na tym bazuje. Pomijam języki afrykańskie, choć tam czasem też są perełki.
    Może przesadzam, ale ślady tych rdzeni są wszędzie i wykracza to poza rachunek prawdopodobieństwa.

    A to oznacza wiecie co.
    Że to teoria spiskowa.
    • 25: CommentAuthorastrofor
    • CommentTime3 Dec 2020 zmieniony
     
    @galu: Przepraszam PAna co to jest safari ? Co pan ja nie jestem rolnikiem!
    @Kaz: Odnośnie teori spiskowych - poprawiłem skrypt do przenoszenia postów do wątków, dodałęm opcję kopiuj albo przenieś ;)
    • 26: CommentAuthormrk
    • CommentTime3 Dec 2020
     
    PM częściowo zaimplementowane - na tyle by dało się renderować Fred'a: ->link<-

    Brak implementacji kolizji PM skutkuje nieśmiertelnością, więc można sobie chodzić do woli w prawo czy w lewo :) (BTW ciekawych rzeczy o działaniu takiego Freda można się dowiedzieć przy okazji - na przykład to że bohater ginie jak wykryta jest kolizja graczy 0/1 z kolorem czerwonym pola gry)

    PM zaimplementowane także na GPU - główny program podsyła tylko do GPU rejestry GTIA / fragmenty pamięci PM i resztę robi "Fragment Shader". Trikowe będzie wykrywanie kolizji na GPU (samo wykrywanie będzie dość proste, trikowe będzie zwracanie tej informacji z powrotem, ale jakiś pomysł na to mam)
    • 27: CommentAuthorlaoo
    • CommentTime3 Dec 2020
     
    @mrk Wow. Niezły motyw z tym czerwonym kolorem :)

    A są jakieś Compute Shadery w tym WebGL? Nimi by się dało bez problemu.
    • 28: CommentAuthorastrofor
    • CommentTime3 Dec 2020
     
    Fred łąpie zwiechę po zakończeniu 1 levelu ;(
    • 29: CommentAuthormrk
    • CommentTime3 Dec 2020
     

    laoo:

    Niezły motyw z tym czerwonym kolorem :)

    Albo to że Robbo uzyskuje 6 kolorów w linii także dzięki graczom PM :)

    Compute Shader'ów nie ma - ale właśnie cały myk, by wykrywanie kolizji zrobić w trakcie liczenia koloru piksela - bo wtedy właśnie jest już cała potrzebna informacja.

    Pomysł jaki mam to render do dwóch targetów na raz - normalnie na ekran oraz do 'bufora kolizji'. Bufor kolizji można czyścić jak się resetuje stan kolizji w GTIA i potem dopisywać do niego informację o poszczególnch kolizjach. Będzie to trikowe, ale wydaje się robialne (spróbuję zrobić na razie uproszczoną wersję dla Freda tylko, jak będzie działało, można pociągnąć to dalej).
    • 30: CommentAuthormrk
    • CommentTime3 Dec 2020
     
    @astrofor - Dzięki, zerknę. Generalnie jakiś problem widać już na starcie - jak się wejdzie do gry i wciśnie Esc to potem już wariuje (cały czas wraca do startowego ekranu).
    Ale i tak jestem w szoku jak to wszystko działa przy tych uproszczeniach które na razie robię.
    • 31: CommentAuthorastrofor
    • CommentTime3 Dec 2020
     
    Z takim podejściem można zrobić coś w rodzaju extended reality atari game. W sensie gre w grze. Np freda atakują hordy trójwymiarowych komarów do których strzela się kursorem sterowanym myszką. Wszystkie atarowe obiekty i kolizję były by łątwo dostępne dla jakiegoś api, ticki odświeżania ekranu pewnie też Ciężej ze sprzężeniem zwrotnym to kodu gry atari pewnie. Ale na przykład za karę że złąpią go komary mógłby sam chodzić przez jakiś czas w losowych kierunkach - api sterowania jest dostępne. Oczywiście pomysł to bardziej eksperyment myślowy, niż plan do konkretnej realizacji.
    • 32:
       
      CommentAuthorKrótki
    • CommentTime3 Dec 2020 zmieniony
     

    jhusak:

    Jak wiesz zapewne, termin "teoria spiskowa" powstał, bo ludzie domyślali się prawdy:
    " termin został wymyślony i wprowadzony do szerokiego obiegu kilkadziesiąt lat temu przez CIA po to, by oczerniać ludzi kwestionujących oficjalną wersję zabójstwa JFK (John F. Kennedy – przypis). Kampania CIA spowodowała popularyzację terminu „teoria spiskowa ” i stała się celem kpin i wrogości."

    Termin "conspiracy theory" został wymyślony dużo wcześniej, pierwsze wystąpienie udało się odnaleźć w publikacji z roku 1870. Pomysł że został spopularyzowany przez CIA jest doskonałym przykładem bezmyślnie powtarzanej teorii spiskowej.

    jhusak:

    Teorie spiskowe dają wolność intelektualną, o ile nie są bezmyślnie powtarzane.

    "Wolność intelektualną" w dokładnie takim samym znaczeniu daje też np. czytanie baśni, ale wiesz, jakoś nikt nie przychodzi na forum internetowe stwierdzając "Jak wiesz zapewne, cały wszechświat jest symulacją stworzoną w Ultymatorze Omnigenerycznym" tak, jakby był to niezaprzeczalny fakt. EDIT: "nikt" to oczywiście nadużycie z mojej strony, wiem że i tacy ludzie się trafiają.
    • 33:
       
      CommentAuthorjhusak
    • CommentTime3 Dec 2020
     
    Krótki, chodzi o to, żeby nikt Ci nie narzucał, jak masz myśleć, czyli np. "Włącz myślenie wyłącz TV" to już jest przemoc.
    Jeśli narzucam swoje poglądy - to jest przemoc. Jeśli ktoś mi narzuca - to jest przemoc. A jeśli jest konflikt (bo wolność etc) to siadamy i gadamy.

    Ale i na takich jak ja są sposoby - np. podrzucanie fałszywych dowodów :)
    Im więcej czytam i poznaję - tym mniej jestem pewien wszystkiego.

    Bez ludzi, którzy wątpią w jedyną słuszną prawdę obowiązującą, nie byłoby postępu, demaskatorstwa, zagadkowych samobójstw czy dziwnych wypadków, etc. etc.

    Ze swej strony podejrzewam, że alternatywne możliwe scenariusze podnoszone przez myślących mądrych ludzi są w 90% sensowne, dalsza spora ich część to prawda.
    • 34: CommentAuthorSim_Piko
    • CommentTime3 Dec 2020
     
    Nie wiem dlaczego, ale jakoś podoba mi się te robbo bez płynnego scrollu i się teraz tak zastanawiam, jakby wyglądał Boulder Dash czy inne gry z takim 'popsutym' scrollem... :)
    • 35: CommentAuthormrk
    • CommentTime5 Dec 2020
     
    @astrofor Fred ->link<- nie powinien już się wieszać po zakończeniu levelu (nadal z nieśmiertelnością z powodu braku kolizji PM, może dzisiaj uda się coś z tym zrobić).
    • 36:
       
      CommentAuthorgalu
    • CommentTime6 Dec 2020 zmieniony
     
    Na szybko przeniesiony CSS/JS - skrót do strony www dodany do ekranu domowego - jutro podeślę pliki mailem bo mój hosting chyba nie radzi sobie z webassembly (możliwe to?):



    Jak widać jest problem z działaniem samej emulacji na iPhonie. Coś z samym kodem (webassembly) pod Safari na AArch64, bo na x86_64 jest OK (nawet pod symulatorem z iOS SDK, który też jest na x86_64). Masz jakieś inne przykłady w Bevy+webgl2 (inne niż to Atari), żeby sprawdzić?

    (a może jednak nie miałem racji i Apple aktywnie blokuje możliwość emulacji sprzętu konkurencji? ;))

    Aplikacja (Bevy?) ustawia rozmiar canvas z zachowaniem proporcji, ale oblicza go tylko w momencie załadowania strony. Wszystko i tak wygląda OK (w przypadku obrazu Atari), ale docelowo można słuchać na zdarzenie resize (window) i zmieniać dynamicznie albo po prostu renderować w najniższej (384x192?) i zostawić skalowanie przeglądarce.
    • 37: CommentAuthormrk
    • CommentTime6 Dec 2020 zmieniony
     
    @galu - Rewelacja!

    galu:

    Jak widać jest problem z działaniem samej emulacji na iPhonie. Coś z samym kodem (webassembly) pod Safari na AArch64

    WebGL2 jest dostępny na Safari podobno jako eksperymentalny feature, rozumiem że odblokowałeś? Wyżej @jhusak też zgłaszał że nie działa (po odblokowaniu) - nie obiecuję że uda mi się coś poprawić z powodu braku iPhone'a do testów.
    Sporo innych przykładów z Bevy jest tu: ->link<-

    Co do skalowania - racja, na razie jest to źle obsługiwane, poprawi się.

    A co do podsyłania plików - zrób po prostu PR w repo: ->link<- :)
    • 38:
       
      CommentAuthorjhusak
    • CommentTime6 Dec 2020 zmieniony
     
    Dochodzi do tego, że programista mobilny musi mieć iphone, a najlepiej 2, ipada, a najlepiej 2, telefony androidowe kilka różnych, tablety z kilkoma androidami... Bez sensu.
  1.  
    W przypadku Androida można sobie pomóc emulatorami. Jak jest z Apple, nie wiem.
    • 40:
       
      CommentAuthorjhusak
    • CommentTime6 Dec 2020 zmieniony
     
    Też w XCode masz symulator (tak to nazywają) właściwie dowolnego urządzenia przenośnego Apple (nie wiem, czy ipody też), ale tam nie wszystkie rzeczy działają, np. bluetooth chyba albo coś w tym rodzaju, nie pamiętam. Poza tym OpenGL wg niektórych działa sporo wolniej.
    • 41: CommentAuthormrk
    • CommentTime6 Dec 2020 zmieniony
     
    @jhusak @mgr_inz_rafal - jest też dużo lepsze rozwiązanie niż zawalenie całego biurka szrotem do testowania czy używanie emulatorów - szczególnie w projekcie opensource: wystarczy znaleźć developerów którzy będą testowali / poprawiali projekt na poszczególnych platformach :)
    • 42:
       
      CommentAuthorgalu
    • CommentTime6 Dec 2020
     
    Wrzuciłem demo sterowania dotykowego na telefon we Fredzie: ->link<-

    Polecam uruchomienie w trybie "standalone" poprzez Menu > Dodaj do ekranu głównego (Chrome) lub Udostępnij > Do ekranu początkowego (Safari).
    Ale nawet odpalając w karcie przeglądarki są blokowane systemowe/przeglądarkowe gesty typu podwójne tąpnięcie.

    Wystawiłem PR, ale to jeszcze Work in Progress - luźna propozycja.

    Co do problemów pod Safari to pomogę to zdebugować (już nie dzisiaj) - myślę, że to nie samo Bevy czy WebGL2 bo te podlinkowane demka działają OK, tylko coś w kodzie emulatora.
    • 43:
       
      CommentAuthorjhusak
    • CommentTime6 Dec 2020 zmieniony
     
    @mrk ... tak, słówka "wystarczy znaleźć" ...

    Ale po zastanowieniu tak - można apkę testować gratis rozdając ją na jakimś forum, tylko ja mam taki trochę introwertyczny styl bycia i to nie wpada jako pierwsza myśl.
    • 44: CommentAuthormrk
    • CommentTime7 Dec 2020 zmieniony
     
    @galu - dzięki, zerknę dzisiaj na pewno.
    EDIT: właśnie odpaliłem na telefonie - RE-WE-LA-CJA :) Super patent z tym układem klawiszy, przy strzałkach razem ciężko byłoby obsługiwać skosy. Jeszcze poprawienie skalowania (żeby skalował canvas do pełnej szerokości / wysokości - ale tu pewnie muszę poprawić coś też po mojej stronie), opcjonalny fullscreen i będzie bajka :) BTW możesz spróbować podczepić ostatnią wersję z dźwiękiem: ->link<- - niestety jest wredny bug który powoduje szum / pisk przy przełączeniu na inną zakładkę (wystawię Ci pewnie jakieś 'set_mute(bool)' przez API )


    @jhusak - ☝ właśnie widać że to działa :) Jest to kwestia skali - jak zainteresujesz projektem większą ilość osób, na pewno będą wśród nich ludzie którzy nie tylko przetestują na wszystkim co się da, ale i będą podsyłali poprawki / implementowali nowe ficzery.
    • 45:
       
      CommentAuthorgalu
    • CommentTime7 Dec 2020
     
    To jest sterowanie pod większość gier (platformówki, wyścigi, froggery-boulder dashe), ale mam też inne patenty - to niebawem :) Też mam na potrzeby tego emu Amigi klawiaturę ekranową, która działa w sposób bezpośredni (naciśnięcie jest rejestrowane od razu w momencie dotknięcia klawisza + działa multitouch).
    Z kolei kontrolery fizyczne (Bluetooth) lepiej obsłużyć bezpośrednio w pętli głównej emulacji bo API do gamepadów działa na wszystkich przeglądarkach przez polling - można odpytywać kontrolery o stan np. co klatkę animacji.

    Pod mobilnym Chrome i Safari odtwarzać dźwięk przez WebAudio można dopiero w odpowiedzi na interakcję użytkownika (dotyk) - takie zabezpieczenie przed upierdliwymi stronami i reklamami. Należy albo dodać słuchacza na pierwsze dotknięcie ekranu i dopiero wtedy próbować odtwarzać dźwięk (wyrejestrowując słuchacza) albo jeśli emulator będzie miał jakiś ekran główny (menu) to obsłużyć wszystko dopiero pod przyciskiem odpalającym lub wznawiającym emulację.

    3 lata temu pisałem na Androida emulator w oparciu o kod Atari800 i też użyłem ROM-u z Altirry. Przypominam sobie, że Fred się wysypywał po pierwszym lub kolejnym levelu (a ogólnie nie działało lub sprawiało problemy jakieś 5-10% gier, z tych które testowałem; jak dodałem opcję załadowania ROM-ów Atari to problemów już nie było).

    A emulator obsługiwało się tak:

    (filmik się nagrał w 18 FPS-ach, ale widać np. wczytywanie "quicksave'ów", które były zapisywane w formacie Atari800 ale z dołączonym zrzutem ekranu do wygodnego ich przeglądania)
    • 46: CommentAuthormrk
    • CommentTime7 Dec 2020 zmieniony
     

    galu:

    3 lata temu pisałem na Androida emulator

    Właśnie znalazłem stary wątek na forum: ->link<- - wow, naprawdę nieźle to wygląda / wyglądało. Co dalej z tym projektem, apka jest dostępna w sklepie Google?

    Pod mobilnym Chrome i Safari odtwarzać dźwięk przez WebAudio można dopiero w odpowiedzi na interakcję użytkownika (dotyk)
    tak, doszedłem już do tego, wołam sobie audio_context.resume() w obsłudze klawiatury po prostu na razie. Większy problem mam chwilowo z tym że przy zmianie tab'a / zminimalizowaniu przeglądarki dźwięk wydobywa się nadal (ciągły pisk / szum, w zależności od stanu POKEY'a) - trzeba wykrywać przejście apki w tło i wyciszać / wznawiać dźwięk.

    wczytywanie "quicksave'ów", które były zapisywane w formacie Atari800

    Ten format to jedyne co obsługuję na razie - zrzucam sobie plik state z atari800 i 'embeduję' go wewnątrz generowanego WASM'a :) To mi zaoszczędziło implementowania obsługi xex, atr czy czegokolwiek innego.
    • 47: CommentAuthorilmenit
    • CommentTime8 Dec 2020
     
    @galu - świetne projekty (XEmu65 i Omega 500), bardzo szkoda, że nie rozwijane.
    • 48:
       
      CommentAuthorgalu
    • CommentTime9 Dec 2020 zmieniony
     

    mrk:

    Co dalej z tym projektem, apka jest dostępna w sklepie Google?

    XEmu65 jest w Playu i na Githubie, ale chyba nie działa dobrze po zmianach w File API (na pewno pliki trzeba przechowywać w /Downloads, o czym aplikacja chyba nie informuje). Powinienem zaktualizować, ale nie obiecuję bo telefonu z Androidem nie używam i się nie chce :)

    Czy będę w stanie zbudować bevy-atari ze źródeł (może spróbuję dojść do tego dlaczego pod iOS/AArch64 źle się renederuje) po zainstalowaniu Rusta i Bevy, czy coś jeszcze muszę wiedzieć i czy to jest opisane gdzieś?
    • 49: CommentAuthormrk
    • CommentTime9 Dec 2020 zmieniony
     

    galu:

    Czy będę w stanie zbudować bevy-atari ze źródeł


    Bez problemu, Rust ma świetny tool chain. Jedyne czego potrzebujesz to zainstalować ostatnią wersję Rust'a ->link<-

    I w katalogu bevy-atari:
    cargo install cargo-make
    cargo make serve


    W tym momencie na ->link<- powinien być już dostępny emulator.

    Postaram się to opisać jeszcze w README.

    EDIT:
    Właśnie zrobiłem poprawki do Cargo.toml / Makefile.toml by budowanie nie wymagało lokalnej kopii bevy / bevy_webgl2, powyższe polecenia powinny wystarczyć.
    • 50:
       
      CommentAuthorDracon
    • CommentTime10 Dec 2020 zmieniony
     

    Galu:

    XEmu65 jest w Playu i na Githubie, ale chyba nie działa dobrze po zmianach w File API (na pewno pliki trzeba przechowywać w /Downloads, o czym aplikacja chyba nie informuje). Powinienem zaktualizować, ale nie obiecuję bo telefonu z Androidem nie używam i się nie chce

    Mam telefon z Androidem (ósmym) i niestety ale nie chciało mi optymalnie działać Xemu65 - w sensie, że były jakieś kłopoty z ładowaniem ściągniętego romu z katalogu "Downloads" itp., pewnie z powodu ww. zmian w "File Api" albo okolicach. :(
    Autorowi opisałem to oczywiście, ale dotąd nic się nie zmieniło.
    Bez romu niespecjalnie chciało to działać. :(

    Co do głównego wątku to świetna sprawa - autor przybył, nie wiedział, że się (podobno) nie da i (z)robi(ł) to! :)
    Gratuluję i życzę dalszego powodzenia!