mGBA ist ein Emulator zum Abspielen von Game Boy Advance Spielen. Er soll schneller und genauer sein als viele bestehende Game Boy Advance-Emulatoren und bietet darüber hinaus Funktionen, die anderen Emulatoren fehlen. Er unterstützt auch Game Boy und Game Boy Color Spiele.
Aktuelle Nachrichten und Downloads können auf mgba.io gefunden werden.
Features
- Hochpräzise Game Boy Advance Hardware-Unterstützung.
- Game Boy/Game Boy Color Hardware-Unterstützung.
- Schnelle Emulation. Bekannt dafür, dass sie auch auf Low-End-Hardware wie Netbooks mit voller Geschwindigkeit läuft.
- Qt- und SDL-Ports für ein schwergewichtiges und ein leichtgewichtiges Frontend.
- Lokale (derselbe Computer) Link-Kabel-Unterstützung.
- Speichertyperkennung, auch für Flash-Speichergröße.
- Unterstützung für Cartridges mit Bewegungssensoren und Rumble (nur mit Gamecontrollern nutzbar).
- Echtzeituhrunterstützung, auch ohne Konfiguration.
- Solarsensor-Unterstützung für Boktai-Spiele.
- Unterstützung für Game Boy Kamera und Game Boy Drucker.
- Eigene BIOS-Implementierung und die Möglichkeit, externe BIOS-Dateien zu laden.
- Turbo-/Schnellvorlauf-Unterstützung durch Halten der Tabulatortaste.
- Rückspulen durch Halten der Backquote.
- Frameskip, konfigurierbar bis zu 10.
- Screenshot-Unterstützung.
- Cheat-Code-Unterstützung.
- 9 Savestate-Slots. Savestates können auch als Screenshots angezeigt werden.
- Video-, GIF-, WebP- und APNG-Aufnahmen.
- e-Reader-Unterstützung.
- Wiederverwendbare Steuerelemente für Tastaturen und Gamepads.
- Laden von ZIP- und 7z-Dateien.
- IPS-, UPS- und BPS-Patch-Unterstützung.
- Spieldebugging über eine Befehlszeilenschnittstelle und GDB-Fernunterstützung, kompatibel mit IDA Pro.
- Konfigurierbares Zurückspulen der Emulation.
- Unterstützung für das Laden und Exportieren von GameShark- und Action Replay-Snapshots.
- Cores für RetroArch/Libretro und OpenEmu verfügbar.
- Gemeinschaftlich bereitgestellte Übersetzungen für mehrere Sprachen über Weblate.
- Viele, viele kleinere Dinge.
Game Boy Mapper
Die folgenden Mapper werden vollständig unterstützt:
- MBC1
- MBC1M
- MBC2
- MBC3
- MBC3+RTC
- MBC5
- MBC5+Rumble
- MBC7
- Weisheitsbaum (nicht lizenziert)
- Pokémon Jade/Diamant (nicht lizenziert)
- BBD (nicht lizenziert MBC5-wie)
- Hitek (unlizensiert MBC5-ähnlich)
Die folgenden Mapper werden teilweise unterstützt:
- MBC6 (fehlende Flash-Speicher-Schreibunterstützung)
- MMM01
- Pocket Cam
- TAMA5 (fehlende RTC-Unterstützung)
- HuC-1 (fehlende IR-Unterstützung)
- HuC-3 (fehlende RTC- und IR-Unterstützung)
Geplante Funktionen
- Unterstützung für vernetzte Multiplayer-Link-Kabel.
- Unterstützung für Delphin/JOY-Bus-Link-Kabel.
- MP2k-Audiomischung, für eine höhere Klangqualität als bei Hardware.
- Unterstützung für die Wiederaufnahme von Tool-Assist-Läufen.
- Lua-Unterstützung für Scripting.
- Eine umfassende Debug-Suite.
- Unterstützung für drahtlose Adapter.
Unterstützte Plattformen
- Windows Vista oder neuer
- OS X 10.8 (Mountain Lion) oder neuer
- Linux
- FreeBSD
- Nintendo 3DS
- Nintendo Switch
- Wii
- PlayStation Vita
Andere Unix-ähnliche Plattformen, wie z.B. OpenBSD, sind dafür bekannt, dass sie ebenfalls funktionieren, sind aber ungetestet und werden nicht vollständig unterstützt.
Systemanforderungen
Die Anforderungen sind minimal. Jeder Computer, auf dem Windows Vista oder neuer läuft, sollte in der Lage sein, die Emulation zu verarbeiten. Unterstützung für OpenGL 1.1 oder neuer ist auch erforderlich, mit OpenGL 3.2 oder neuer für Shader und erweiterte Funktionen.
Downloads
Downloads können auf der offiziellen Website, im Bereich Downloads gefunden werden. Der Quellcode kann auf GitHub gefunden werden.
Steuerung
Steuerungen sind im Einstellungsmenü konfigurierbar. Viele Gamecontroller sollten standardmäßig automatisch zugewiesen werden. Die Standard-Tastatursteuerungen sind wie folgt:
- A: X
- B: Z
- L: A
- R: S
- Start: Enter
- Select: Backspace
Kompilieren
Das Kompilieren erfordert die Verwendung von CMake 3.1 oder einer neueren Version. Es ist bekannt, dass sowohl GCC als auch Clang zum Kompilieren von mGBA funktionieren, aber Visual Studio 2013 und älter funktionieren bekanntermaßen nicht. Unterstützung für Visual Studio 2015 und neuer ist in Vorbereitung.
Docker building
Der empfohlene Weg, um für die meisten Plattformen zu bauen, ist die Verwendung von Docker. Es werden mehrere Docker-Images bereitgestellt, die die erforderliche Toolchain und Abhängigkeiten für die Erstellung von mGBA auf mehreren Plattformen enthalten.
Um ein Docker-Image für die Erstellung von mGBA zu verwenden, führen Sie einfach den folgenden Befehl aus, während Sie sich im Stammverzeichnis eines mGBA-Checkouts befinden:
docker run --rm -t -v $PWD:/home/mgba/src mgba/windows:w32
Dies erzeugt ein build-win32
-Verzeichnis mit den Erstellungsprodukten. Ersetzen Sie mgba/windows:w32
durch ein anderes Docker-Image für andere Plattformen, wodurch ein entsprechendes anderes Verzeichnis erzeugt wird. Die folgenden Docker-Images sind auf Docker Hub verfügbar:
- 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
*nix building
Um CMake zum Bauen auf einem Unix-basierten System zu verwenden, sind die empfohlenen Befehle wie folgt:
mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..makesudo make install
Dies wird mGBA in /usr/bin
und /usr/lib
bauen und installieren. Abhängigkeiten, die installiert sind, werden automatisch erkannt, und Funktionen, die deaktiviert sind, wenn die Abhängigkeiten nicht gefunden werden, werden nach der Ausführung des Befehls cmake
nach Warnungen darüber, dass sie nicht gefunden werden können, angezeigt.
Wenn Sie unter macOS arbeiten, sind die Schritte etwas anders. Unter der Annahme, dass Sie den Homebrew-Paketmanager verwenden, lauten die empfohlenen Befehle, um die Abhängigkeiten zu erhalten und zu erstellen:
brew install cmake ffmpeg libzip qt5 sdl2 libedit pkg-configmkdir buildcd buildcmake -DCMAKE_PREFIX_PATH=`brew --prefix qt5` ..make
Beachten Sie, dass Sie unter macOS kein make install
ausführen sollten, da es nicht richtig funktionieren wird.
Windows developer building
MSYS2
Um unter Windows für die Entwicklung zu erstellen, wird die Verwendung von MSYS2 empfohlen. Folgen Sie den Installationsschritten, die Sie auf deren Website finden. Stellen Sie sicher, dass Sie die 32-Bit-Version („MSYS2 MinGW 32-Bit“) verwenden (oder die 64-Bit-Version „MSYS2 MinGW 64-Bit“, wenn Sie für x86_64 bauen wollen) und führen Sie diesen zusätzlichen Befehl (einschließlich der geschweiften Klammern) aus, um die benötigten Abhängigkeiten zu installieren (bitte beachten Sie, dass dies das Herunterladen von über 1100MiB an Paketen beinhaltet, so dass es eine lange Zeit dauern wird):
pacman -Sy --needed base-devel git ${MINGW_PACKAGE_PREFIX}-{cmake,ffmpeg,gcc,gdb,libelf,libepoxy,libzip,pkgconf,qt5,SDL2,ntldd-git}
Sehen Sie sich den Quellcode an, indem Sie diesen Befehl ausführen:
git clone https://github.com/mgba-emu/mgba.git
Bauen Sie ihn schließlich, indem Sie diese Befehle ausführen:
mkdir -p mgba/buildcd mgba/buildcmake .. -G "MSYS Makefiles"make -j$(nproc --ignore=1)
Bitte beachten Sie, dass dieser Build von mGBA für Windows aufgrund der vielen DLLs, die er zum Ausführen benötigt, nicht für den Vertrieb geeignet ist, aber perfekt für die Entwicklung ist. Wenn jedoch die Verteilung eines solchen Builds erwünscht ist (z.B. zum Testen auf Rechnern, auf denen die MSYS2-Umgebung nicht installiert ist), kann durch Ausführen von cpack -G ZIP
eine Zip-Datei mit allen erforderlichen DLLs erstellt werden.
Visual Studio
Die Erstellung mit Visual Studio ist ähnlich kompliziert. Um zu beginnen, müssen Sie vcpkg installieren. Nach der Installation von vcpkg müssen Sie mehrere zusätzliche Pakete installieren:
vcpkg install ffmpeg libepoxy libpng libzip sdl2 sqlite3
Beachten Sie, dass diese Installation keine hardwarebeschleunigte Videokodierung auf Nvidia-Hardware unterstützt. Wenn Sie sich dafür interessieren, müssen Sie vorher CUDA installieren und dann ffmpeg
im vorherigen Befehl ersetzen.
Sie müssen auch Qt installieren. Da Qt von einer kränkelnden Firma und nicht von einer vernünftigen Organisation betrieben wird, gibt es leider kein Offline-Installationsprogramm für die neueste Version der Open-Source-Edition, so dass Sie entweder auf ein Installationsprogramm für die alte Version zurückgreifen müssen (das verlangt, dass Sie ein ansonsten nutzloses Konto erstellen, aber Sie können die vorübergehende Einstellung eines ungültigen Proxys oder die anderweitige Deaktivierung des Netzwerks umgehen), das Online-Installationsprogramm verwenden (das in jedem Fall ein Konto erfordert) oder vcpkg verwenden, um es (langsam) zu erstellen. Keine dieser Möglichkeiten ist großartig. Für das Installationsprogramm müssen Sie die entsprechenden MSVC-Versionen installieren. Beachten Sie, dass die Offline-Installer MSVC 2019 nicht unterstützen. Für vcpkg müssen Sie es wie folgt installieren, was vor allem auf Computern mit vier Kernen oder weniger eine Weile dauern wird:
vcpkg install qt5-base qt5-multimedia
Nächste öffnen Sie Visual Studio, wählen Sie Clone Repository und geben Sie https://github.com/mgba-emu/mgba.git
ein. Wenn Visual Studio mit dem Klonen fertig ist, gehen Sie zu File > CMake und öffnen Sie die Datei CMakeLists.txt im Stammverzeichnis des ausgecheckten Repositorys. Von dort aus kann mGBA in Visual Studio ähnlich wie andere Visual Studio CMake-Projekte entwickelt werden.
Toolchain-Erstellung
Wenn Sie devkitARM (für 3DS), devkitPPC (für Wii), devkitA64 (für Switch) oder vitasdk (für PS Vita) haben, können Sie die folgenden Befehle zur Erstellung verwenden:
mkdir buildcd buildcmake -DCMAKE_TOOLCHAIN_FILE=../src/platform/3ds/CMakeToolchain.txt ..make
Ersetzen Sie den Parameter -DCMAKE_TOOLCHAIN_FILE
für die folgenden Plattformen:
- 3DS:
../src/platform/3ds/CMakeToolchain.txt
- Switch:
../src/platform/switch/CMakeToolchain.txt
- Vita:
../src/platform/psp2/CMakeToolchain.vitasdk
- Wii:
../src/platform/wii/CMakeToolchain.txt
Abhängigkeiten
mGBA hat keine festen Abhängigkeiten, jedoch sind die folgenden optionalen Abhängigkeiten für bestimmte Funktionen erforderlich. Die Funktionen werden deaktiviert, wenn die Abhängigkeiten nicht gefunden werden können.
- Qt 5: für das GUI-Frontend. Qt Multimedia oder SDL werden für Audio benötigt.
- SDL: für ein einfacheres Frontend und Gamepad-Unterstützung im Qt-Frontend. SDL 2 wird empfohlen, aber 1.2 wird unterstützt.
- zlib und libpng: für Screenshot-Unterstützung und Savestate-in-PNG-Unterstützung.
- libedit: für Kommandozeilen-Debugger-Unterstützung.
- ffmpeg oder libav: für Video-, GIF-, WebP- und APNG-Aufnahmen.
- libzip oder zlib: zum Laden von ROMs, die in Zip-Dateien gespeichert sind.
- SQLite3: für Spiel-Datenbanken.
- libelf: zum Laden von ELF-Dateien.
SQLite3, libpng und zlib sind im Emulator enthalten und müssen daher nicht erst extern kompiliert werden.
Fußnoten
Derzeit fehlende Funktionen sind
- OBJ-Fenster für die Modi 3, 4 und 5 (Bug #5)
Die Erkennung der Flash-Speichergröße funktioniert in einigen Fällen nicht. Diese können zur Laufzeit konfiguriert werden, aber es wird empfohlen, einen Bug zu melden, wenn ein solcher Fall auftritt.
10.8 wird nur für den Qt-Port benötigt. Es kann möglich sein, die Qt-Portierung auf 10.7 oder älter zu bauen oder laufen zu lassen, aber dies wird nicht offiziell unterstützt. Es ist bekannt, dass die SDL-Portierung auf 10.5 funktioniert, und möglicherweise auch auf älteren Versionen.
Copyright
mGBA ist Copyright © 2013 – 2021 Jeffrey Pfau. Es wird unter der Mozilla Public License Version 2.0 vertrieben. Eine Kopie der Lizenz ist in der verteilten LICENSE-Datei verfügbar.
mGBA enthält die folgenden Bibliotheken von Drittanbietern:
- inih, die unter dem Copyright © 2009 – 2020 Ben Hoyt steht und unter einer BSD 3-Klausel-Lizenz verwendet wird.
- blip-buf, die unter dem Copyright © 2003 – 2009 Shay Green steht und unter einer Lesser GNU Public License verwendet wird.
- LZMA SDK, das gemeinfrei ist.
- MurmurHash3-Implementierung von Austin Appleby, die gemeinfrei ist.
- getopt für MSVC, das gemeinfrei ist.
- SQLite3, das gemeinfrei ist.
Wenn Sie ein Spielehersteller sind und mGBA für die kommerzielle Nutzung lizenzieren möchten, senden Sie bitte eine E-Mail an [email protected] für weitere Informationen.