atarionline.pl Emulacja A800 do osadzenia na AtariOnline.pl - 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:
         
        CommentAuthorgalu
      • CommentTime10 Apr 2024 16:04
       
      Cześć,

      Przy okazji prac nad samodzielnym przeglądarkowym emulatorem różnych retro sprzętów przygotowałem demonstrator webowej emulacji Atari800 do osadzenia np. bezpośrednio na AtariOnline.pl
      Piszę tutaj bo może będzie to zachęta do zerknięcia w kod samego rdzenia emulacji (o szczegółach technicznych napiszę w kolejnym poście).

      Tutaj można odwiedzić "demonstrator" (na razie na desktopowej przeglądarce) ->link<-

      Tutaj filmik:


      Wyobraziłem sobie, że dla zalogowanych użytkowników (lub wszystkich odwiedzających stronę i forum) przy każdym linku do pliku .xex, .atr, .cas itp. automatycznie dodawana byłaby ikonka "emuluj", uruchamiająca emulację w bieżącej karcie przeglądarki (z możliwością zamknięcia emulacji lub przełączenia na tryb "obraz w obrazie" i dalszą lekturę strony). Alternatywnie możnaby ograniczyć się do linków zawierających specjalny atrybut html, np. data-emulation, który dodatkowo możnaby parametryzować nazwą lub konfiguracją docelowej emulowanej platformy.

      Wykorzystany został rdzeń Atari800 z projektu Libretro ( ->link<- ) skompilowany z użyciem Emscripten oraz parę dodatkowych gotowych rozwiązań, o których poniżej. Oznacza to, że jeżeli kod samego rdzenia emulacji (pisany w C) będzie rozwijany to skorzysta na tym nie tylko emulacja w przeglądarce, ale każdy kto używa RetroArch/RetroPie/Batocera/Lakka/Ludo/RetriXGold na dowolnym systemie (używają tego samego kodu/rdzenia)
      Również dodanie obsługi kolejnej retro platformy będzie wyłącznie kwestią dołączenia kolejnego rdzenia (czyli "za darmo" na AOL będzie można wprowadzić emulację ST, Lynksa, 2600, C64, Spectruma albo Amigi). W skrócie chodzi o to, że wszystkie rdzenie libretro będą tak samo "rozmawiać" z front-endem, czyli wystarczy raz napisać obsługę sterowania, interfejs użytkownika i każda platforma skorzysta z tego tak samo.
      • 2:
         
        CommentAuthorgalu
      • CommentTime10 Apr 2024 16:04
       
      Wersja przeglądarkowa libretro-atari800 nie jest aktualnie budowana na ->link<- , aby zbudować ją samodzielnie będziemy potrzebowali m.in. Emscripten SDK (system operacyjny - dowolny).
      Instalacja:
      git clone ->link<-
      cd emsdk
      ./emsdk install 3.1.51
      ./emsdk activate 3.1.51
      source ./emsdk_env.sh


      Sama kompilacja rdzenia:
      git clone ->link<-
      git clone ->link<-
      cd libretro-atari800
      emmake make -f Makefile platform=emscripten


      Wynikiem będzie plik atari800_libretro_emscripten.bc, który przenosimy pod zmienioną nazwą do katalogu RetroArch i budujemy:
      mv atari800_libretro_emscripten.bc ../RetroArch/libretro_emscripten.bc
      cd ../RetroArch
      emmake make -f Makefile.emscripten LIBRETRO=atari800 -j all


      Wynikiem powyższego powinny być dwa pliki: atari800_libretro.wasm i atari800_libretro.js - to właśnie rdzeń emulacji do wykorzystania na stronce.

      Aktualnie najbardziej odczuwalnym ograniczeniem tego rdzenia jest brak obsługi ROM-ów innych niż kilka wybranych z białej listy, w szczególności należałoby dodać obsługę ROM-ów Altirry.
      • 3:
         
        CommentAuthorgalu
      • CommentTime10 Apr 2024 16:04
       
      Użycie rdzenia na stronce: użyłem biblioteki ->link<- , która upraszcza osadzenie i uruchomienie emulacji na stronie, a my możemy zbudować od zera własny interfejsu użytkownika, który w poniższym przykładzie celowo pozostawiłem możliwie minimalistyczny. Pominąłem np. sterowanie dotykowe gdyż niedługo udostępnię rozwijany przeze mnie samodzielny webowy emulator (będzie można wykorzystać część zaproponowanych tam rozwiązań).

      Ten demo-skrypt skleciłem na szybko z myślą o desktopowych przeglądarkach (sprawdziłem pod Safari i Chrome - pod Safari chwilowo nie działa Picture-in-Picture, Chrome z kolei chyba nie obsługuje jakiegoś rozszerzenia webgl wykorzystywanego przez Nostalgista przez co może działać wolniej na słabszych sprzętach).
      Skrypt przelatuje przez linki do obsługiwanych plików, dodaje do nich ikonę emulacji, a gdy użytkownik kliknie na niej to uruchomi emulację. Gdyby osadzić go na AtariOnline to wszystkie linki np. w Katalogu Gier dostałyby ikonkę joysticka odpalającą emulację.

      Pliki (wymagane ROM-y, pliki programów) na potrzeby tej demonstracji pobierane są z serwera atarionline.pl poprzez proxy (które po osadzeniu skryptu na AtariOnline nie będzie oczywiście potrzebne)).

      Aktualnie zamapowane sterowanie (klawiatura): kursory + Z.
      • 4: CommentAuthortebe
      • CommentTime10 Apr 2024 16:04
       
      to teraz jeszcze poproszę program graficzny na tym silniku
      • 5:
         
        CommentAuthorpirx
      • CommentTime10 Apr 2024 22:04
       
      piękne!
      • 6:
         
        CommentAuthorjhusak
      • CommentTime10 Apr 2024 23:04
       
      Jak zwykle @galu pozamiatałeś :)