KISS hat gesagt.:
naja, du musst die intern verwendete api nachbilden, wahrscheinlich auch teile der gpu. natuerlich musst du die roms auch dekodieren
am besten du schaust mal in die foren existierender projekte
zb
hier
Mit API und Teilen der GPU wird es nicht getan sein. Was meinst Du mit "Roms dekodieren" ??? Sind die GBA-Roms verschlüsselt? Ich kann mir bei der vebauten Hardware kaum vorstellen, daß sie "ernsthaft" verschlüsselt sind. Außerdem sind die im Internet kursierenden ROM-Images mit Sicherheit nicht mehr verschlüsselt.
Wie auch immer: zunächst mal muß man die CPU komplett emulieren - vermutlich gibt es da zwar schon frei verfügbare Lösungen, aber nicht unbedingt in Java. Ich bezweifle ehrlich gesagt auch, daß Grafik und Sound beim GBA über eine klar definierte Software-Schnittstelle programmiert werden. Ich fürchte, da wird noch direkt im Grafikspeicher und in entsprechende Register der GPU reingeklotzt. Also heißt es auch die gesamte GPU, den Soundprozessor und alle andere Hardware zu emulieren. Dazu kommt u.U. noch das Adreßmapping der Module. War zumindest beim originalen GB ein Graus.
Wenn man WIRKLICH Pech hat, dann müssen Teile der Emulation oder auch alles taktgenau sein. Z.B. beim C64 haben die Programmierer in der Endphase die Hardware so ausgereizt, daß einige Spiele nur dann richtig laufen, wenn sich die emulierte CPU usw. nicht nur "black box"-mäßig so verhält wie die originale, sondern in jedem Taktzyklus das korrekte Verhalten synchron zur restlichen emulierten Hardware zeigt.
Bei älteren Modul-Videokonsolen (Sega Genesis usw.) haben die Softwarehersteller z.B. Kopierschutzverfahren eingebaut, die etwa auf den Zugriffszeiten des Roms basieren. Beim Zugriff aus einem Kopiermodul (RAM) war der Zugriff schneller und die Software lief nicht.
Weiß nicht, wie das beim GBA ist, aber beim SNES haben die Hersteller in die Module später auch noch andere Hardware verbaut. Angefangen mit batteriegepuffertem RAM bis zu 3D-Prozessoren (SuperFX). Muß man dann auch irgendwie nachbilden.
Dazu kommt noch, daß es üblicherweise keine offiziellen Unterlagen gibt, die die exakte Funktionsweise der Hardware beschreiben - insbesondere Nintendo gibt sowas keinesfalls raus. Und die verbauten Chips sind oft Spezialanfertigungen, die in dieser Form nicht auf dem freien Markt erhältlich sind - also bekommt man auch vom Hersteller keine Dokumentation. Frag nicht, was es für ein Spaß ist, die exakte Funktionsweise einer GPU o.ä. per reverse engineering herauszubekommen.
Überhaupt würde ich behaupten, daß Emulatorentwicklung - speziell bei Spielekonsolen und Heimcomputern zumindest am Anfang zu 80% reverse engineering ist.