Der Programmier-Thread

PSN-Name: leckt mich an meinem haarigen hintern ihr haufen!
Spielt gerade: perl(pc); div. KOFs (ps3); GT6(ps3); sfIV(div.);
das macht die sache doch kein stück besser. gerade wenn für dritte was von meinen spielereien abhängt sollte ich mir 2x überlegen was ich wann mache...

btw. mir ist vorhin noch ein mogelweg zur darstellung eines fortschritsbalkens bei nur einer datei eingefallen... der ist aber so dämlich das ich ihn für mich behalte :ugly:
 
Spielt gerade: BF3, FIFA11, GR:FS
Naja es ist eine Diplomarbeit für ihn bzw. die Schule, also will er da was anständiges haben. Für ihn insofern da er für die ganze Administration usw. in der Schule verantwortlich ist.
Es ist aber eher eine Zusammenarbeit mit ihm, wir hatten noch nie viel mit PHP zu tun, deshalb greift er uns auch etwas unter die Arme wenn wir mal ne Zeit lang wo festhängen...
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
Man kann aber auch genausogut TuxGuitar nehmen, wenn es nur darum geht Tabs zu lesen. Wobei ich bezweifle, dass er dafür extra nen Iphone emulieren wollte xD

Aber Assembler ist schon was schönes :D Total dumme Sprache, aber irgendwie auch cool^^ Besonders bei unseren Aufgaben. Da denkt man sich teilweise, dass die Tutoren größere BVB-Fans sind als man selbst xD
 
PSN-Name: chrizeliq
Assembler...

Ich hab vorgestern mal wieder damit begonnen meinen Gameboy-Emulator weiterzubauen. Vor zwei Jahren habe ich mich ein paar Tage damit beschaeftigt, Informationen ueber das System gesucht (es gibt einige gute Docs im Netz) -- mir gehts dabei primaer um den Lerneffekt. Habe noch nie einen Konsolen-Emulator geschrieben, und der Gedanke ein Computersystem komplett zu verstehen ist recht verlockend. Es gibt im Low-Level-Bereich durchaus noch mehr Dinge die ich noch lernen kann und auch lernen will.

Ich dachte mir Gameboy wird schon nicht so komplex sein... spaeter musste ich dann feststellen, dass das Instruction-Set der Gameboy-CPU doch nicht ganz ohne ist, es sind wohl um die 500 Befehle...

Das erste was ich vor zwei Jahren gemacht habe ist die Grafikausgabe... also noch keine Emulation der CPU etc... ich habe einfach mal geschaut wie im Speicher die Grafiken hinterlegt sind, die ROM-Datei in den Speicher geladen und mit etwas C-Code und OpenGL angezeigt... das Ergebnis ist recht motivierend, weil ich so recht schnell die Tiles aus Zelda anzeigen konnte...


Aber ein Emulator ist das natuerlich noch nicht. Also habe ich damit begonnen die CPU nachzubauen. Mein Ziel war es den Startscreen von Tetris anzeigen zu koennen... nach und nach habe ich immer mehr Instruktionen eingebaut, aber von der Anzeige war ich noch weit entfernt. Gameboy-Spiele machen am Anfang viel Initialisierung, Speicher rumkopieren, VRAM befuellen, etc.

Auch kam ich schnell an die Grenzen meines C-Programms: Jede Instruktion war eine eigene C-Funktion die ueber eine Listenstruktur mit den jeweiligen Befehls-Infos verknuepft war... sehr simpel... aber mit der Zeit sehr umstaendlich. Wenn man genau schaut, machen (wie in Assembler ueblich) die meisten Befehle eigentlich das gleiche... nur die Register und Speicheradressen unterscheiden sich. Also muss ein anderer Ansatz her.

Vor zwei Jahren habe ich dann damit angefangen das Programm auf C++ umzuschreiben... ueber Templates und Referenz-Objekte kann ich so eine Instruktion wie z.B. "LD" 1x programmieren und der Template-Code kann mir das jeweils als 8bit und 16bit-Version erstellen jeweils dann von und zu beliebigen Registern oder Adressen im Speicher. Nach einiger Zeit ist das Projekt leider eingeschlaffen...

Vorgestern habe ich es wieder weitergemacht. Inzwischen habe ich etwa 40 Befehle realisiert und im Grunde ist mein Emulator sogar ein echter kleiner Debugger und Disassembler mit Breakpoints etc...


Das ist auch notwendig, weil ich ohne solche Debugging-Moeglichkeiten eigentlich keine Moeglichkeit haette zu pruefen, ob der Emulator richtig emuliert.

Jetzt habe ich den ersten grossen Schritt geschafft: Er emuliert ein Hello-World Gameboy-ROM:


Mal schauen ob ich im naechsten Schritt den Tetris-Startscreen angehen kann... aber es ist nicht so einfach. Es ist doch relativ komplex und es fehlt noch extrem viel: Mapped Memory, Spezialregister (IO/LCD-Bildschirm etc), Interrupts, Eingabe, Scrolling, Korrektes Timing, etc...

Aber ich glaube wenn man den Befehlssatz einigermassen komplett hat und ein gescheites Speichersystem, dann ist der Rest nicht mehr so schwer...
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
Wow nicht schlecht! Da denkt man das ein Gameboy schon nicht so schwer sein kann und dann sieht man erstmal, wie "mächtig" das Teil ist. Haben an der Uni auch mit Kollegen über nen Emulatornachbau nachgedacht. Aber mit dem Ziel das Link-Kabel auf dem Handy per Bluetooth emulieren zu können :D Daraus ist erstmal nix geworden, weil die Klausuren anstehen.

Dann mach weiter! Dann kann ich demnächst ja Pokemon auf deinem Emulator zocken :ugly: ;)
 
Top