BlitzBoy - Ein Gameboy Emulator in BlitzBasic
Übersicht

![]() |
JeanBetreff: BlitzBoy - Ein Gameboy Emulator in BlitzBasic |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Zusammen
Ich möchte euch mein aktuelles Projekt vorstellen, an welchem ich nun schon seit einiger Zeit am arbeiten bin. Es handelt sich dabei um einen Gameboy Emulator welchen ich ich in Blitz Basic geschrieben habe. Der Emulator ist schon ziemlich weit fortgeschritten und es lassen sich viele Spiele ohne Probleme spielen. Das Projekt trägt den Namen BlitzBoy. ![]() Der Emulator funktioniert folgendermassen: Insgesamt kann der Gameboy 32 kByte Speicher direkt adressieren. In den unteren 16 kByte befinden sich die ROM Daten, also eigentlich exakt der Inhalt von den .gb Dateien, welche den Bytecode des Spieles beinhalten. In den oberen 16 kByte des Speichers befindet sich der eigentliche Arbeitsspeicher und auch der Grafikspeicher. Nun liest die CPU, welche etwa einem Intel 8080 Prozessor entspricht, einen Befehl aus dem ROM, interpretiert diesen und liest den nächsten Befehl aus, usw. Daneben arbeitet die GPU, welche in einem bestimmen Intervall aus dem Grafikspeicher ein Bild zeichnet. Wer genaueres darüber wissen will, dem empfehle ich folgende Dokumente: Pandocs CPU Doku Auf die CPU Befehle habe ich am meisten Wert gelegt. Diese werden sehr genau interpretiert. Selbst der DAA Befehl (für Dezimalangleichungen) und die Flags bei 16 Bit Arithmetik werden korrekt umgesetzt. Jedoch gibt es trotzdem noch einige Roms, welche nicht korrekt funktionieren. Schuld daran ist meistens der Timer, die GPU oder der Memory Bank Controller. Der Source: (Blitz+ 1.47) https://www.blitzforum.de/upload/file.php?id=12254 Hier findet ihr freie Roms: http://pdroms.de/files/gameboy/ Sollte jemand einen gefundenen Fehler beheben, so wäre ich froh darüber, wenn man mich informieren würde. Ansonsten dürft ihr natürlich mit dem Source machen was ihr wollt. Da ich nicht immer sehr kommentarfreudig war, könnt ihr euch auch bei Unklarheiten an mich wenden. ![]() mfg Achtung Ich habe bewusst darauf verzichtet, lizenziertes Material in meinem Emulator sowie auch in diesem Post zu verwenden. Im Internet gibt es viele Roms von lizenzierten Spielen zu finden, jedoch ist deren Verwendung nicht legal. Desweiteren steht das BlitzForum in keiner Verbindung zu meinem Projekt. |
||
- Zuletzt bearbeitet von Jean am Mi, Feb 06, 2013 12:29, insgesamt 14-mal bearbeitet
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow!
Danke für den Code , werd ich gerne anschauen / testen ![]() Grüsse |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sehr schön.
Ich wollte schon seit längerem wissen, wie es zu einem Emulator kommt und jetzt kommt sowas. Genial ![]() Edit: Die Exe selbst startet. Vom Code aus lässt sich aber nicht starten. " Function Waitevent not found " |
||
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Seven: Kann es sein, dass du BlitzBasic und nicht BlitzPlus verwendest? Ich hätte vielleicht mehr betonen sollen, dass ich BlitzPlus verwendete. | ||
Seven |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ahso, mein Fehler, steht ja auch dort da:)
Ich achtete nur auf die Überschrift. Trotzdem ein gutes Projekt ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meinen allerhöchsten Respekt, funktioniert einwandfrei ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow ich bin beeindruckt.
Als ich im Subforum then Threadtitel las musste ich erstmal laut lachen und dachte es ginge um irgendeinen Noob der nach Sachen fragt die Blitz einfach nicht packen kann (so rein performancetechnisch). Da hab ich wohl dich und Blitzbasic deutlich unterschätzt, Hut ab! |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr coole Sache! | ||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Tornado11 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schöne Sache! Hast du MBC support (1,2.. etc)? Soweit ich das sehe unterstütz du bisher nur 32kb roms?
Ich selber habe auch einen GB Emulator gebastelt (in Java), der schafft jedoch nur den Startibildschirm und eine verbuggte Intro sequenz von Asteroids anzuzeigen... Hast du zum debuggen andere Emulatoren "zu rate" gezogen? Ich habe dazumal darauf verzichtet, doch ich sehe keinen anderen Weg die Bugs (im z80) effizient zu beseitigen. Für alle die auch mal in die Welt der Emulator programmierung einsteigen wollen, denen empfehle ich mit einem Chip-8 Emulator zu beginnen. |
||
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Hubsi
Insgesamt habe ich ca 3 Monate daran gearbeitet. Nicht sehr intensiv, trotzdem bin ich immer wieder dran geblieben. @Tornado11 Momentan unterstützt der Emulator nur MBC1 und natürlich 32 kByte Roms. Da aber die meisten Spiele > 32 kByte den MBC1 verwenden, habe ich es dabei belassen. Als ich den Emulator programmierte, wollte ich zuerst auch alles komplett selber schreiben. Dies gelang mir dann auch mehr oder weniger, jedoch musste ich feststellen, dass z.B. der DAA Befehl nie genau dokumentiert wurde. So musste ich dort auf einen Open Source Emulator zurückgreifen. |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow, Respekt, respekt. Mehr gibts nicht zu sagen. | ||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe den Emulator zwar noch nicht getestet, aber ich finde es sehr interessant, auf welche Weise Du die Hardwarefunktionen implementiert hast. Die ganzen CPU-Befehle umzusetzen ist sicher auch nicht trivial, aber das Zusammenspiel mit der GPU, den Timern, dem Keypad etc. finde ich elegant von Dir gelöst. Respekt! | ||
vertex.dreamfall.at | GitHub |
![]() |
klin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow das sowas überhaupt in BlitzBasic möglich ist. Ich finde es wirklich toll, dass du uns den Src teilst. Nun habe ich endlich eine Vorstellung, wie Emulatoren gemacht werden.
Wirklich eine tolle Arbeit ![]() Ob man es auch auf einen GBA Emulator aufrüsten kann? ![]() Wenn man mal so überlegt, wie "schwer" so ein GB Emulator ist... wie ist es dann bei XBox oder Playstation 1? Klin |
||
![]() |
Tornado11 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Diese "aufrüsten" funktioniert wohl nicht so einfach, da der gba nicht auf der ursprünglichen technik des gb basiert (theoretisch ein verbesserter SNES, jedoch ohne dessen "ungereimheiten"). (Es würde auf das neuschreiben des ganzen Codes herauslaufen)
Schwierigskeitsmässig sieht das etwa so aus (ungefähre Einteilung): ganz einfach: chip-8 einfach: gb moderat: NES mässig komplex: Genesis, GBA, nintendo 64 HLE( high level emulation siehe UltraHLE) komplex: SNES, ps1 ,nintendo 64 ohne hle sehr komplex: saturn, ps2 quelle: http://www.emutalk.net/forums/...f7d3e81224 |
||
![]() |
klin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich wollte mal nachfragen, ob jemand noch den SourceCode zufällig irgendwo hat? Danke, Klin |
||
![]() |
Jean |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe den neuen DL-Link oben eingefügt.
Gruss |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group