mGBA jest emulatorem do uruchamiania gier Game Boy Advance. Jego celem jest bycie szybszym i dokładniejszym niż wiele istniejących emulatorów Game Boy Advance, jak również dodawanie funkcji, których brakuje innym emulatorom. Obsługuje również gry Game Boy i Game Boy Color.
Aktualne wiadomości i pliki do pobrania można znaleźć na stronie mgba.io.
Cechy
- Bardzo dokładna obsługa sprzętu Game Boy Advance.
- Obsługa sprzętu Game Boy/Game Boy Color.
- Szybka emulacja. Działa z pełną prędkością nawet na sprzęcie z niższej półki, takim jak netbooki.
- Porty Qt i SDL dla ciężkiego i lekkiego frontendu.
- Obsługa lokalnego (ten sam komputer) łącza kablowego.
- Detekcja typu zapisu, nawet dla rozmiaru pamięci flash.
- Wsparcie dla kartridży z czujnikami ruchu i dudnieniem (tylko z kontrolerami gier).
- Obsługa zegara czasu rzeczywistego, nawet bez konfiguracji.
- Obsługa czujnika słonecznego dla gier Boktai.
- Obsługa kamer Game Boy i drukarek Game Boy.
- Wbudowana implementacja BIOS-u i możliwość ładowania zewnętrznych plików BIOS-u.
- Obsługa turbo/szybkiego przewijania do przodu przez przytrzymanie klawisza Tab.
- Odwracanie przez przytrzymanie klawisza Backquote.
- Frameskip, konfigurowalny do 10.
- Obsługa zrzutów ekranu.
- Obsługa kodów oszustwa.
- 9 miejsc na save’y. Saveestates są również widoczne jako zrzuty ekranu.
- Nagrywanie wideo, GIF, WebP i APNG.
- Obsługa czytników.
- Przywracalne elementy sterujące dla klawiatur i gamepadów.
- Wczytywanie z plików ZIP i 7z.
- Obsługa łatekIPS, UPS i BPS.
- Debugowanie gry przez interfejs wiersza poleceń i zdalne wsparcie GDB, kompatybilne z IDA Pro.
- Konfigurowalne przewijanie emulacji.
- Wsparcie dla ładowania i eksportowania zrzutów GameShark i Action Replay.
- Core’y dostępne dla RetroArch/Libretro i OpenEmu.
- Tłumaczenia społeczności dla kilku języków przez Weblate.
- Wiele, wiele mniejszych rzeczy.
Mappery Game Boy
Następujące mappery są w pełni obsługiwane:
- MBC1
- MBC1M
- MBC2
- MBC3
- MBC3+RTC
- MBC5
- MBC5+Rumble
- MBC7
- Wisdom Tree (nielicencjonowany)
- Pokémon Jade/Diamond (nielicencjonowany)
- BBD (nielicencjonowany MBC5-like)
- Hitek (unlicensed MBC5-like)
.
Następujące mappery są częściowo obsługiwane:
- MBC6 (brak obsługi zapisu w pamięci flash)
- MMM01
- Pocket Cam
- TAMA5 (brak obsługi RTC)
- HuC-.1 (brak obsługi IR)
- HuC-3 (brak obsługi RTC i IR)
Planowane funkcje
- Obsługa sieciowego połączenia kablowego dla wielu graczy.
- Obsługa kabla łączącego magistralę Dolphin/JOY.
- Miksowanie dźwięku w standardzie MP2k, zapewniające wyższą jakość dźwięku niż sprzęt.
- Obsługa ponownego nagrywania dla przebiegów wspomaganych narzędziami.
- Obsługa skryptów w języku Lua.
- Wszechstronny pakiet debugowania.
- Obsługa adapterów bezprzewodowych.
Obsługiwane platformy
- Windows Vista lub nowszy
- OS X 10.8 (Mountain Lion) lub nowszy
- Linux
- FreeBSD
- Nintendo 3DS
- Nintendo Switch
- Wii
- PlayStation Vita
Inne platformy uniksopodobne, takie jak OpenBSD, są znane z tego, że również działają, ale nie są przetestowane i nie są w pełni obsługiwane.
Wymagania systemowe
Wymagania są minimalne. Każdy komputer, który może uruchomić Windows Vista lub nowszy powinien poradzić sobie z emulacją. Wymagane jest również wsparcie dla OpenGL 1.1 lub nowszego, z OpenGL 3.2 lub nowszym dla shaderów i zaawansowanych funkcji.
Pliki do pobrania
Kod źródłowy można znaleźć na oficjalnej stronie internetowej, w sekcji Downloads. Kod źródłowy można znaleźć na GitHub.
Kontrole
Kontrole są konfigurowalne w menu ustawień. Wiele kontrolerów do gier powinno być domyślnie automatycznie mapowanych. Domyślne kontrolery klawiatury są następujące:
- A: X
- B: Z
- L: A
- R: S
- Start: Enter
- Select: Backspace
Kompilacja
Kompilacja wymaga użycia CMake 3.1 lub nowszego. GCC i Clang są znane jako działające do kompilacji mGBA, ale Visual Studio 2013 i starsze nie są znane z działania. Wsparcie dla Visual Studio 2015 i nowszych pojawi się wkrótce.
Budowanie przez Docker
Zalecanym sposobem budowania dla większości platform jest użycie Dockera. Dostarczono kilka obrazów Dockera, które zawierają wymagany zestaw narzędzi i zależności do budowania mGBA na wielu platformach.
Aby użyć obrazu Dockera do zbudowania mGBA, wystarczy wykonać następujące polecenie w katalogu głównym katalogu mGBA:
docker run --rm -t -v $PWD:/home/mgba/src mgba/windows:w32
W ten sposób powstanie katalog build-win32
z produktami do budowania. Zamień mgba/windows:w32
na inny obraz Dockera dla innych platform, co spowoduje utworzenie odpowiedniego innego katalogu. Następujące obrazy Dockera dostępne na Docker Hub:
- mgba/3ds
- mgba/switch
- mgba/ubuntu:xenial
- mgba/ubuntu:bionic
- mgba/ubuntu:focal
- mgba/ubuntu:groovy
- mgba/vita
- mgba/wii
- mgba/windows:w32
- mgba/windows:w64
*budowanie na Uniksie
Aby użyć CMake do budowania w systemie opartym na Uniksie, zalecane polecenia są następujące:
mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..makesudo make install
To zbuduje i zainstaluje mGBA w /usr/bin
i /usr/lib
. Zależności, które są zainstalowane, zostaną automatycznie wykryte, a funkcje, które są wyłączone, jeśli zależności nie zostaną znalezione, zostaną wyświetlone po uruchomieniu polecenia cmake
po ostrzeżeniu o niemożności ich znalezienia.
Jeśli używasz systemu macOS, kroki są nieco inne. Zakładając, że używasz menedżera pakietów homebrew, zalecane polecenia do uzyskania zależności i budowania to:
brew install cmake ffmpeg libzip qt5 sdl2 libedit pkg-configmkdir buildcd buildcmake -DCMAKE_PREFIX_PATH=`brew --prefix qt5` ..make
Zauważ, że nie powinieneś robić make install
na macOS, ponieważ nie będzie działać poprawnie.
Budowanie dla deweloperów w Windows
MSYS2
Aby budować w Windows dla deweloperów, zalecane jest użycie MSYS2. Postępuj zgodnie z krokami instalacji znalezionymi na ich stronie internetowej. Upewnij się, że używasz wersji 32-bitowej („MSYS2 MinGW 32-bit”) (lub 64-bitowej „MSYS2 MinGW 64-bit”, jeśli chcesz budować dla x86_64) i uruchom tę dodatkową komendę (włączając nawiasy klamrowe), aby zainstalować potrzebne zależności (proszę zauważyć, że wymaga to pobrania ponad 1100MiB pakietów, więc zajmie to dużo czasu):
pacman -Sy --needed base-devel git ${MINGW_PACKAGE_PREFIX}-{cmake,ffmpeg,gcc,gdb,libelf,libepoxy,libzip,pkgconf,qt5,SDL2,ntldd-git}
Sprawdź kod źródłowy, uruchamiając tę komendę:
git clone https://github.com/mgba-emu/mgba.git
Na koniec zbuduj go, uruchamiając te komendy:
mkdir -p mgba/buildcd mgba/buildcmake .. -G "MSYS Makefiles"make -j$(nproc --ignore=1)
Proszę zauważyć, że ten build mGBA dla Windows nie nadaje się do dystrybucji, ze względu na rozproszenie bibliotek DLL, których potrzebuje do działania, ale jest idealny do rozwoju. Jeśli jednak dystrybucja takiej kompilacji jest pożądana (np. do testowania na maszynach, które nie mają zainstalowanego środowiska MSYS2), uruchomienie cpack -G ZIP
przygotuje plik zip ze wszystkimi potrzebnymi bibliotekami DLL.
Visual Studio
Budowanie przy użyciu Visual Studio jest podobnie skomplikowane. Na początek musisz zainstalować vcpkg. Po zainstalowaniu vcpkg będziesz musiał zainstalować kilka dodatkowych pakietów:
vcpkg install ffmpeg libepoxy libpng libzip sdl2 sqlite3
Zauważ, że ta instalacja nie będzie wspierać sprzętowego przyspieszania kodowania wideo na sprzęcie Nvidia. Jeśli ci na tym zależy, będziesz musiał zainstalować CUDA wcześniej, a następnie zastąpić ffmpeg
w poprzedniej komendzie.
Będziesz także potrzebował zainstalować Qt. Niestety ze względu na to, że Qt jest własnością i jest zarządzane przez schorowaną firmę, w przeciwieństwie do rozsądnej organizacji, nie ma już instalatora offline open source edition dla najnowszej wersji, więc będziesz musiał albo wrócić do instalatora starej wersji (który wymaga utworzenia bezużytecznego konta, ale można obejść tymczasowo ustawiając nieważne proxy lub w inny sposób wyłączając sieć), użyć instalatora online (który wymaga konta bez względu na wszystko), lub użyć vcpkg do zbudowania go (powoli). Żadna z tych opcji nie jest dobra. Dla instalatora będziesz chciał zainstalować odpowiednie wersje MSVC. Zwróć uwagę, że instalatory offline nie obsługują MSVC 2019. Dla vcpkg będziesz chciał zainstalować go w taki sposób, co zajmie sporo czasu, szczególnie na komputerach czterordzeniowych lub mniej:
vcpkg install qt5-base qt5-multimedia
Następnie otwórz Visual Studio, wybierz Clone Repository i wpisz https://github.com/mgba-emu/mgba.git
. Kiedy Visual Studio zakończy klonowanie, przejdź do File > CMake i otwórz plik CMakeLists.txt znajdujący się w katalogu głównym wypisanego repozytorium. Od tego momentu mGBA może być rozwijana w Visual Studio podobnie jak inne projekty Visual Studio CMake.
Budowanie toolchaina
Jeśli masz devkitARM (dla 3DS), devkitPPC (dla Wii), devkitA64 (dla Switch), lub vitasdk (dla PS Vita), możesz użyć następujących komend do budowania:
mkdir buildcd buildcmake -DCMAKE_TOOLCHAIN_FILE=../src/platform/3ds/CMakeToolchain.txt ..make
Zastąp parametr -DCMAKE_TOOLCHAIN_FILE
dla następujących platform:
- 3DS:
../src/platform/3ds/CMakeToolchain.txt
- Switch:
../src/platform/switch/CMakeToolchain.txt
- Vita:
../src/platform/psp2/CMakeToolchain.vitasdk
- Wii:
../src/platform/wii/CMakeToolchain.txt
Zależności
mGBA nie ma twardych zależności, jednakże następujące opcjonalne zależności są wymagane dla określonych funkcji. Funkcje zostaną wyłączone, jeśli nie będzie można znaleźć tych zależności.
- Qt 5: dla interfejsu GUI. Qt Multimedia lub SDL są wymagane dla audio.
- SDL: dla bardziej podstawowego frontendu i obsługi gamepada we frontendzie Qt. SDL 2 jest zalecany, ale 1.2 jest obsługiwany.
- zlib i libpng: do obsługi zrzutów ekranu i obsługi savestate-in-PNG.
- libedit: do obsługi debuggera wiersza poleceń.
- ffmpeg lub libav: do nagrywania wideo, GIF, WebP i APNG.
- libzip lub zlib: do ładowania pamięci ROM przechowywanych w plikach zip.
- SQLite3: do obsługi baz danych gier.
- libelf: do ładowania ELF.
SQLite3, libpng, i zlib są dołączone do emulatora, więc nie muszą być najpierw zewnętrznie skompilowane.
Przypisy
Obecnie brakuje następujących funkcji
- OknoOBJ dla trybów 3, 4 i 5 (Bug #5)
Wykrywanie rozmiaru pamięci Flash nie działa w niektórych przypadkach. Można to skonfigurować podczas uruchamiania, ale zalecane jest zgłoszenie błędu, jeśli taki przypadek zostanie napotkany.
10.8 jest wymagany tylko dla portu Qt. Może być możliwe zbudowanie lub uruchomienie portu Qt na wersji 10.7 lub starszej, ale nie jest to oficjalnie wspierane. Wiadomo, że port SDL działa na 10.5 i może działać na starszych.
Copyright
mGBA jest Copyright © 2013 – 2021 Jeffrey Pfau. Jest rozpowszechniana na zasadach Mozilla Public License w wersji 2.0. Kopia licencji jest dostępna w dystrybuowanym pliku LICENSE.
mGBA zawiera następujące biblioteki stron trzecich:
- inih, która jest chroniona prawami autorskimi © 2009 – 2020 Ben Hoyt i używana na licencji BSD 3-clause.
- blip-buf, która jest chroniona prawami autorskimi © 2003 – 2009 Shay Green i używana na licencji Lesser GNU Public License.
- LZMA SDK, który jest własnością publiczną.
- implementacja MurmurHash3 autorstwa Austina Appleby’ego, która jest własnością publiczną.
- getopt dla MSVC, który jest własnością publiczną.
- SQLite3, który jest własnością publiczną.
Jeśli jesteś wydawcą gier i chcesz licencjonować mGBA do użytku komercyjnego, napisz na adres [email protected], aby uzyskać więcej informacji.