GBA Emulator machen - wie geht das?

Status
Nicht offen für weitere Antworten.

thomas.g

Bekanntes Mitglied
Hi,

ich habe jetzt das Grundgerüst meines MediaPlayers fertig gestellt.
Nun möchte ich ein Feature einbauen, welches erlaubt, GBA Roms abzuspielen, doch ich habe keine Ahnung wie ich da am besten beginnen sollte.

Klar möchte ich das selbst programmieren aber am besten wäre natürlich ein Tutorial oder zumindest eine kleine Anleitung dazu von Vorteil .....

Ich würde mich sehr über Antworten die mir helfen freuen!

PS: Sobald der MediaPlayer fertig ist, stelle ich ihn zum Download bereit! (Linux, und Windows kompatibel)

thx
 

thomas.g

Bekanntes Mitglied
ja, war mal so ne idee für ein Feature, doch ich bin mir nicht sicher ob das so geht, wäre aber toll wenn!
 

KISS

Bekanntes Mitglied
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
 

0xdeadbeef

Top Contributor
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.
 

0xdeadbeef

Top Contributor
Ich habe nicht behauptet, daß es unmöglich ist. Es gibt einen Haufen Emulatoren, die in Java geschrieben sind. Allerdings sind das meist Portierungen von Emus in C.
Ich wollte nur verdeutlichen, daß das nichts ist, was man sich in eins, zwei Wochen aus dem Ärmel leiert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ThoraxLaneus Minecraft MCP-Client mit Optifine fertig machen in IntelliJ klappt nicht ganz Spiele- und Multimedia-Programmierung 6
L Schriftschatten dunkler machen Spiele- und Multimedia-Programmierung 2
X LWJGL | Parent.isDisplayable() must be true | wie kann man das zu true machen? Spiele- und Multimedia-Programmierung 0
P g.translate(x,y); rückgängig machen Spiele- und Multimedia-Programmierung 2
R Pong -Reruns möglich machen Spiele- und Multimedia-Programmierung 2
aze Java 3D:Screenshot machen.Komische Farben Spiele- und Multimedia-Programmierung 3
M BufferedImage blass machen Spiele- und Multimedia-Programmierung 5
G wie kann ich jar dateien fürs handy kopatibel machen Spiele- und Multimedia-Programmierung 3
E JLabel zum anklicken machen? Kugeln selektieren? Spiele- und Multimedia-Programmierung 21
S Wie kann ich das Zeichnen der Grafik feiner machen? Spiele- und Multimedia-Programmierung 9
A Mauszeiger unsichtbar machen Spiele- und Multimedia-Programmierung 1
Fabel TicTacToe MiniMax Algorithmus geht nicht Spiele- und Multimedia-Programmierung 4
Z Minecraft Multiplayer geht nicht Spiele- und Multimedia-Programmierung 2
R Laufbewegung geht nicht.. Spiele- und Multimedia-Programmierung 1
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
A Jogl-Projekt unter 32-Bit kompiliert und unter 64-Bit ausführen, geht das überhaubt ?? Spiele- und Multimedia-Programmierung 9
R Probleme mit JPanel!KeyListener geht nicht Spiele- und Multimedia-Programmierung 6
A Patter Array Eintrag vergleichen geht nicht!!! Spiele- und Multimedia-Programmierung 3
D Mühle geht nicht Spiele- und Multimedia-Programmierung 10
Pithecanthropus Sound geht nicht Spiele- und Multimedia-Programmierung 6
Developer_X Texturing-geht das auch anders? Spiele- und Multimedia-Programmierung 5
R Nachträgliches ändern von Vertex Arrays. Wie geht das? Spiele- und Multimedia-Programmierung 3
S Behavior deaktivieren/aktivieren - erster Klick geht nicht Spiele- und Multimedia-Programmierung 2
G java3dgamesSDK geht nicht. Spiele- und Multimedia-Programmierung 2
B sound mit behavior geht nicht Spiele- und Multimedia-Programmierung 4
D complexObj.setAppearance(paneAppearance) geht nicht Spiele- und Multimedia-Programmierung 8
J Es geht um JAVA 2D Spiele- und Multimedia-Programmierung 12
B Wie geht das ?? Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen


Oben