Piszę sobie przeglądarkowy front-end do różnych emulatorów - używam go i na iPhonie i iPadzie i na kompie. Aktualnie wykorzystywane są wyłącznie rdzenie z projektu Libretro i niedawno udało się uruchomić również rdzeń Atari 800. Napiszę potem więcej szczegółów jak to uruchomić we własnym projekcie oraz co w samym rdzeniu jest jeszcze do poprawienia, a teraz napiszę kilka zdań o owym front-endzie, który w tym roku na 100% udostępnię (będę też za tydzień na Silly Venture, więc zainteresowanym chętnie pokażę na żywo):
Tutaj iPhone:
Tutaj desktop:
Mam tam załadowane listy wszystkich produkcji na obsługiwane platformy, więc dostęp do dowolnego softu na dowolnej platformie jest błyskawiczny. Plików nie trzymam ani na urządzeniu ani na serwerze, tylko pobieram z zewn. serwera - w tej formie tego rozwiązania z wiadomych względów nie udostępnię, ale napiszę jak takie listy samemu wygenerować z dołączonych skryptów :) Jest też możliwość wczytania pojedynczego pliku z "dysku", ale to nie ma być podstawowy sposób korzystania z tego softu.
Sterowanie NAPRAWDĘ zoptymalizowane pod dotyk, ale jak wykryje kompa z klawiaturą lub podłączonego pada to zachowa się odpowiednio.
Wszystkie rdzenie emulacji obsługują rewind (cofanie czasu w dowolnym momencie - np. wpadniemy w przepaść to możemy się cofnąć o kilka sekund, co zastępuje quicksave'y). Oprócz tego zostanie dodana obsługa tradycyjnych savestate'ów.
Interfejs użytkownika nawiązujący do starych czasów, ale ma to dodatkowy ukryty cel który zdradzę przy okazji premiery. Dodaję tam bonusowo mało potrzebne bajery (np. przeglądarkę wikipedii albo player modułów) :)
Działa też na Androidzie (Chrome). Wymaga dodania do ekranu domowego (na kompie można będzie używać bez tego).
To jest świetne i bardzo fajnie działa. Jakby się dało jeszcze upewnić/zrobić, żeby obsługiwało kontrolery (takie podłączane przez adaptery, a na Androidzie - np. przez bluetooth) to by dało się pograć bardziej poważnie!
Kontrolery przez bluetooth działają - też na iPhone/iPadzie (np. te od PS4/PS5). Na początku będzie inny problem bo niektóre klawisze na klawiaturze w Libretro/ReatroArch są na sztywno przypisane do emulowanego joysticka (np. Z do strzelania), ale to szybko się oczywiście poprawi. Na razie się skupię na dokończeniu front-endu.
Bajer polega na tym, że jak coś działa z jednym rdzeniem (np. kontrolery, savestate’y, shadery, przewijanie do przodu i w tył) to znaczy, że zadziała z wszystkimi rdzeniami - jest wspólne API i ustandaryzowany zestaw funkcji. Parę miesięcy temu robiłem podejście z wykorzystaniem różnych emulatorów (np. użyłem javascriptowego portu a800 4.x ze strony 8bitworkshop ->link<- swoją drogą być może brakuje mu tylko pełnej obsługi ładowania wieloblokowych XEX/ATR, ale bez tego 99% softu się nie wczytywało) i jednak chcąc podpiąć emulację każdej kolejnej platformy roboty byłoby sporo. A tutaj wystarczy skompilować rdzeń i dorzucić go do aplikacji. Oczywiście Libretro to jest rozwiązanie skrojone pod graczy, w dodatku ten rdzeń a800 nie jest w pełni “natywny” (dla libretro) i wymaga poprawek, ale na tę chwilę to chyba dobra droga.
Dźwięk brzmi źle bo chyba trzeba dopiero nałożyć tę poprawkę ->link<- (dopiero się tym zajmę)