-
GameBoy Programmierung
Hi,
nachdem ich hier ein- oder zwei Fragen zur Game Boy Programmierung
gelesen habe, hat mich, der uns Roboterbastlern so bekannte Forscherdrang
(oder Spieltrieb, kommt auf die Betrachtungsweise an *g*), gepackt und
ich hab mal ein bischen recherchiert:
Herausgekommen ist folgendes:
Yes, man kann einen GB relativ einfach in Assembler oder C Programmieren.
Man benötigt nur ein selbst programmiertes ROM, praktischerweise zum probieren
ein EEPROM.
Allerdings basiert ein GB Classic auf dem (lägendären) Z80 Prozessor. Das heißt
konkret:
Es gibt einen 16bit Adressbus, einen 8bit Datenbus einen Prozessor mit 4,19 MHz Taktfrequenz
(wobei der Prozessor für jeden Befehl mehr als einen Taktzyklus - anders als bei AVRs - braucht
(Typischerweise 4 pro Befehl)), keine AD - Wandler hat, kein UART (aber sowas
ähnliches) und einen! timer. Außerdem muss man sich extra einen EEPROM - Writer bauen.
Ein EEPROMs mit 512kByte gibt es für 3,50 bei Reichelt, ein AtMega16 kostet 3,95 und schlägt den
GameBoy um längen in der Rechenleistung und Peripherie.
Was macht den GB also interessant?
Er ist nicht billig, schnell oder klein - für solche Anwendungen kauft euch nen AVR- oder MSP-Board.
Aber es macht (mir zumindest) Spass mal ein richtiges Prozessorsystem mit Daten- und Adressbus
kennezulernen. Außerdem wird mindestens jeder zweite Roboter von einem AVR gesteuert, da ist ein GB
schon was besonderes. Vom Display (Der Color hat immerhin 32768 Farben) und WAF ganz zu schweigen :-)
Bevor ich jetzt aber einen Artikel über Programmierung und Hardware des Gameboys schreibe und ihn dann
keiner ließt, möchte ich erstmal wissen ob überhaupt Interesse an dem Thema besteht.
Also schreibt eure Meinung, selbst wenn ihr meint das so ein Teil niemad braucht (aber sowas würde doch niemad sagen, oder :-)
mfg
Thorsten
-
wie schwierig ist es das ding dazu zu bringen etwas auf dem Display auszugeben? gibt es Mögliche Schnittstellen zur Aussenwelt?
Das Display würde mich wirklich interressieren, einen alten GB bekommt man doch recht günstig.
-
jupp mich würde das auch interessieren, weil GB besonders die classics bekommt man hinterher geschmießen.
Das Display würde mich am meisten interessieren.
-
Der entscheidende Vorteil von einem Gameboy im gegensatz zu nem AVR ist eben das Display und die teilweise vorhandene Tastatur. Damit kann man halt doch relativ einfach ein UserInterface machen. und vom Gameboy aus könnte man dann per I2C andere Controller vom Roboter steuern. also wenn du was über die Grafikansteuerung schreibst wär das schon super.
Bernhard
-
Hmmm,
evt keonnte man den GB als eine Art Fernbedienung fuer Befehle/Status nutzen...
Schoenes userinterface drauf und dann per Funk die Befehle zum Robie (da ist dann auch der WAF entsprechend hoch, wenn da nur ein GB im Wohnzimmer rum fligt und keine selbstgebastelte Fernsteuerung).
-
@PSiyou: Die idee ist klasse, gefällt mir. Vorallem wäre die fernbedienung universal:
einfach modul wechseln
gibts compiler (am besteb Basic-compiler ;-) ) und Rohmodule für das Ding?
-
Ein Modul könnten wir ja selbst entwickeln. muss ja nicht viel drauf sein. ein ROM reicht ja und dann eben noch die Übertragungshardware. funk würde ich aber erst mal außen vor lassen. für den anfang reicht auch RS232 oder I2C. das ist dann zwar mit kabel, aber um vieles einfacher.
Bernhard
-
Dachte an Ferbedienung über IR. Wäre doch gut realisierbar.
-
Dann geht aber auch nur sowas wie bei Fernseher. weil IrDa, womit auch bidirektionale Übertargung wie bei RS232 möglich wäre, erfordert einen sehr hohen Programmieraufwand.
man könnte allerdings schon irgendwie schaun, dass man mit IR irgendwas in beide richtungen übertragen kann, aber das wäre dann zu nix und niemanden kompatibel.
Aber ich denke, das Hauptproblem istdass man erst einmal ein vernünftiges Programm für den Gameboy schreibt. den rest kann man dann ja immer noch irgendwann implementieren.
Bernhard
-
Hm, Dachte an RC5 oder RC6 Codierung. Oder RS232 direkt per IR (Wäre am einfachsten). Vieleicht könnte man das SNAP dafür verwenden.
Naja, denke es wird aber nicht so einfach sein mit der Ansteuerung des Displays, da mich ich mir eher sorgen.
Hier gibts ja alles für das Ding: http://www.devrs.com/gb/software.php#appide
-
-
Ok, ich seh schon Interess besteht :-)
Werd mich mal daran machen und im Laufe des Tages mal nen Artikel
zu der benötigten Hardware beginnen. Am besten ich stell das Ding dann ins Wiki.
Vorweg:
Als Basispaltine hab ich nen Altes Spiel genommen und erstmal nen Flachbandkabel an die Kontakte gelötet, damit ich vernüftigt an den Bus komme.
Später könnte man einfach das Rom austauschen, zum basteln ist es so aber angenehmer.
Zum Display:
Es gibt nen recht ausgereiften C - Compiler.
http://gbdk.sourceforge.net/. Gibt sogar printf(), und scanf(). Also kann man das Display schon recht einfach im Textmodus ansteuern. Bei scanf() wird eine Tastatur auf dem Display angezeigt und man kann die Zeichen mit dem Joypad anwählen. Da ist die Arbeit also schon getan und man kann sich auf seine Projekte konzentrieren.
Els Einstieg dachte ich an so etwas wie Multimeter, Logicanalyzer.
Zuerst muss man aber ein Programmer für die Roms bauen, oder man bentutzt einen Simulator für die ersten Versuche.
Hier kann man sich mal die API anschauen:
http://gbdk.sourceforge.net/doc/html/files.html
mfg
Thorsten
-
Also programmer und Anleitungen zu den Cardrdidges gibts hier
http://www.reinerziegler.de/readplus.htm
-
Hallo!
Die seite is ja wirklich super, da findet man ja einiges. Da können wir dann ja auch selber was basteln mit den entsprechenden schnittstellen.
@Thorsten:
die idee is super. freu mich schon drauf ;-)
Bernhard
-
Bei Cadsoft gibts sogar ne Lib für GB-Karten. Leider habe ich nicht die neuste Eagle-vers. :-(
-
Hi,
mit Funk dachte ich eigentlich auch erst mal an RS232, und da koennen wir dann ja einfach das System von roboterhardware ranhaengen ;)
Nur mal schaun wie das mit den Platz hinhaut...
Aber Ihr habt schon recht, erst mal klein anfangen (aber man muss ja auch ein Ziel haben :) )
So werd mir jetzt erst mal Eure tollen Links anschauen....
-
Wieso nicht einen Gamboy Advanced?
Der hat wenigstens einen ARM drin und genügend Rechenpower, auch für Robotik. Und einen kostenlosen Gnu-C++-Compiler gibt es auch. Warum also mit dem alten Kram rumschlagen?
-
weils billiger ist aus schrott was zu machen. Große aufgaben kann man dem ding sowieso nicht stellen denke ich.
-
Habe mich mal mit dem gbdk rumgeschlagen. Ist nicht so mein fall. Ich finde Dragon Basic Besser.
Findet Ihr auf: http://db.zhilaware.starfusion.org/
...und es gibt sogar ein Forum dazu (english): http://forums.zhilaware.starfusion.org/
-
Leider ist von der Seite nicht viel übrig, was dokumentation etc angeht. mir wäre basic schon lieber, weil C lernen ist auf die schnelle doch blöd. und was man mit so nem gameboy alles machen könnte ist schon geil und hat den WOW effekt, grins
-
Dann haben wir ein Problem, mir würde da C besser gefallen, hab nämlig keine Lust Basic zu lernen ;)
-
im prinzip ist doch der compiler egal. der rom bzw die karte ist doch die selbe...
-
aber hier gehts ja gerade darum dass wir einen programmier kurs machen.
-
OKAY, wenn wir bei null anfangen würden, dann wär ich bei C auch dabei
-
Hm, wenn wir von Grund auf anfangen, wäre das für mich auch kein Problem. Aber wie soll stellt ihr euch den Kurs den vor? Ein C Kurs oder ein Gameboykurs?
-
Hmm,
jetzt hab ich da wohl was losgetreten....
(Was ich eigentlich garnicht wollte).
Denke aber einen Kurs mit einfuehrung in die Programmiersprache ist nicht sinnvoll, das kostet zu viel Zeit und bring fuer das eigentliche Problem (GB) nicht wirklich was.
Wuerde halt C bevorzugen weil es Hardware naeher ist (was fuers Verstaendniss des GB ja auch nciht schlecht ist).
Wuerde vorschlagen, wir entscheiden uns entsprechend der Informationsverfuegbarkeit/Entwicklungsumgebung/Foren etc fuer ein Sprache, oder machen ein Umfrage/Abstimmung.
-
also beides wäre schon cool. es gibt bestimmt viele die gerne mal c programmieren würden, aber nicht wissen wo sie anfangen sollte. könnten auch pascal nehmen, grins
-
also von nem allgemeinen Programmier-Kurs halte ich nix, weil es da eh schon viel genug und gutes gibt.
aber ein kurs der speziell die programmierung von nem gameboy behandelt würde mich schon sehr interessieren. evtl auch mit beispielen wie man die hardware ansteuert (z.B. RS232) um mit nem roboter zu kommunizieren.
-
wir können uns doch erstmal auf die Hardware speziealisieren und danach vielleicht zwei neue themen aufbauen das eine Für C und das andere für Basic das wäre doch allgemien besser! weil die hardware bleibt bei beiden gleich!
-
Also, daß C hardwarebezogener ist würde ich nicht unbedingt sagen. Ehrlichgesagt ist es mir egal, ob c oder basic (obwohl ich kein c kann), will einfach was mit dem ding machen können.
-
basic versteht halt vom syntax doch schon eher jemand
weiss nicht wie fähig die c compile sind bzw dragonbasic
-
wenns erklärt wird, ists doch egal denke ich
-
Also ich find auch C besser, da es einfach vielfältiger und besser auszubauen ist, meiner Meinung nach.
Und für Leute, die weder C noch Basic können, ist es besser, wenn sie gleich mit C einsteigen. Da muss man zwar mehr lernen, aber es ist mMn besser.
Andun
-
Ich denke das man für den anfang schon nen compiler wählen sollte, der einiges an hardware unterstützt, ohne das großer programmieraufwand notwendig ist (display, tasten, sound etc)
-
ich hab irgendwie das gefühl, das dieser thread vom thema abkommt.
-
in der tat, aber vielleicht sollten wir erstmal anfangen eine platine mit dem rom zu bauen, bevor wir über den compiler diskutieren. im endeffekt kann ja jeder für sich entscheiden, wie ers macht aber auf gameboy hätte ich schon bock.
-
Wollte mal nachfragen, ob sich etwas in dem sektor tut? Wenn ja, was tutu sich? Hier ist es nämlich so still
-
Also ich Fände es auch ganz interesant so einen Game Boy als Steuerung zu benutzen. Vor allem das Display ist ganz interesant.
Gruss Luca
-
Ja, grad Messtechnisch kann man mit dem Display einiges machen: Oszi, Logic-Analyzer, Spectrum-Analyzer, Mehrkanalmultimeter.....
-
Und womit können wir jetzt anfangen?