-
Hab das Thema nur überfolgen, aber auf den ersten Blick nichts über den XBC gefunden, das ist ein Interface aus den USA mit dem man aus einem GBA einen 32bit microcontroller für einen Bot machen kann! Äusserst interessante sache! Kann auch direkt eine Farbkamera anschließen etc. Ist in den USA momentan der Renner!
Hier mal ein paar links:
http://www.kipr.org/papers/xbc-iros05.pdf
im shop vom botball.org findet man das Interface auch! oder einfach mal googlen! (botballsotre.org is die shop adi)
http://en.wikipedia.org/wiki/XBC
-
wollen wir der einfachheithalber beim "alten" gameboy bleiben? wenn wir ne cartridge hätten mit nem ROM drauf könnte man ja auch rom images drauf schreiben, um mal zu testen obs überhaupt geht. wenn ich es richtig verstanden habe dann kann der prozessor mit standard roms umgehen?
http://www.reinerziegler.de/readplus.htm#4MBit%20home
-
ich find die Idee klasse, vor allem mit der Fernbedienung.
Hab aber zu dem Thema keinen blassen Schimmer... aber ich würde mich sehr freuen, wenn jemand eine ANFÄNGER-Bau/Programmier-Anleitung schreiben würde.
-
habe diesen link gefunden
http://marc.rawer.de/Gameboy/
finde ich echt genial beschrieben
-
Hi!
Die seite is ja wirklich super!!!
muss i morgen gleich mal genauer durchlesen!!.
Bernhard
-
Soweit wie ich das verstanden habe, und wie mir das der rene ziegler geschrieben hat gibts da auch keine großen probleme mit der speicherzuordnung, adressen etc. habe mir bei ebay nen gameboy ersteigert, werde ne cartridge umbauen und erstmal sehen, ob ich n rom drauf geschrieben krieg, und das spiel dann funzt.
-
Ich hab mir die Links durchgelesen und finde alles sehr interessant.
Aber eine Frage habe ich noch.
Gibt es irgend eine Möglichkeit den Gameboy ohne EEProm anzusteuern?
Ist es möglich den Gameboy als reines I/O Gerät eines Mikrokontrollers zu verwenden?
Ich besitze nämlich nur einen ISP Programieradapter und möchte mir für Basteleien nicht umbedingt ein teures Programiergerät kaufen.
mfg Bastlwastl
-
im prinzip schon. aber ich glaube nicht von extern.
da müsstest du an die schnittstelle zum grafiktreiber rangehen, und rausfinden, wie der angesteuert ist. passender wär jetzt wenn man über ne i/o karte mit nem kleinen programm im eeprom ne rs232 softwaremäßig emuliert und dann über rs232 ausgaben auf dem bildschirm macht. sozusagen terminal auf gameboy
-
Weist du eventuell ob jemand sowas schon mal gemacht hat?
mfg Bastlwastl
-
Ich finde auch, daß die Seite eine von den besten ist, die ich je zu diesem Thema gesehen habe.
Aber zu den Roms:
Ich habe mir schon gedacht nen Adapter vom GB-Slot zu CF-Karten zu bauen. Wäre doch dann viel besser als ständiges gebastel.
-
mmhh cf karten haben ja auch daten und adressleitungen.
wie willst du denn eine cf karte beschreiben? raw mit dd unter linux?
-
Beschreiben kann man die über jeden Kartenslot, den es für PCs gibt. Das Problem sehe ich eher darin, die CF nicht in einem Dateisystemformat zu beschreiben, wie es Windows eben macht. Vieleicht ist hier was mit VB möglich.
Unter Linux kenne ich mich leider nicht so gut aus.
-
mit dd hast du die möglichkeit rohdaten auf nen speicher zu schreiben/ zu lesen. also zb dd if=/dev/hda1 of=dateiname liesst dir die erste partition auf der ersten platte, und schreibt sie in die datei "dateiname" umgedreht geht das natürlich auch.
wenn ich das richtig verstanden habe, manipuliert dieses schreibprogramm was auf der seite benutzt wird das rom fileirgendwie beim beschreiben auf nen rom. deshalb bin ich mir nicht ganz sicher ob das auch mit ner cf karte geht. das gebamsel wird das selbe sein, ob du dir ne hardware baust oder ewig mit software rumprobierst, kommt da glaub ich aufs selbe raus. wenn ihc meinen gameboy bekommen habe werd ichs erstmal mit roms probieren, wenn das läuft kann man mit cf karten rumspielen. sonst suchst du dich dämlich nach nem fehler...
-
also, wenn es ein rom-file wäre, wäre es schon das richtige. und notfalls kann man noch nen avr einbringen, welcher das filesystem ausliest (AVR-DOS...gibts schon fix und fertig)
-
mit filesystem würde ich nicht arbeiten, das macht alles viel komplizierter, es sollte hier eigentlich darum gehen, eigene programme für den gameboy zu schrieben, keine ansteuerung der roms.
-
Programme schreiben ist ja auch gut. Und dann? Willsts ja irgendwie in den GB bekommen, oder? Und da willst wirklich für jede Programmänderung ein eprom schießen? Oder mit nem Proggerät rumfummeln um nen Flash zu proggen? Sorry, aber da vergeht mir der Spaß am Coden. Epromsimulator, ok... aber den mußt auch erst mal bauen, es sei denn, du hast den schotter dafür. Und davon abgesehen, sind CF klein und recht günstig.
Nur so ne Idee von mir. Wem das zu komplex ist und lieber gefummel will, bitte. Soll ja Leute geben die lieber mit dem Lötkolben arbeiten, statt Tastatur.
-
also über nen flash mach ich mir keine sorgen.
steckst die fertig aufgebaute karte in nen adapter (bei ebay - wo man GB spiele auf nem NES spielen kann) und dann gehts los mit dem flashen. das ist nicht umständlicher als die CF rauszuziehen, und irgendwo zu beschreiben.
-
-
Leute, lernt auf jeden Fall aus der Erfahrung anderer gemeinschaftlicher Projekte.
Die meisten werden nie was, weil nur gelabert wird. Klar möchte jeder seine Ideen berücksichtigt haben, aber zu den meisten lassen sich pro und contra Argumente finden.
Deshalb setzt Euch lieber einen Stichtag, zu dem die erste Bastelei stehen muß. Hinterher kann man immer noch vieles oder gar alles ändern, wenn die ersten Erfahrungen vorhanden sind.
Bedenkt immer, daß das kein Industrieprojekt ist, bei dem im ersten Anlauf möglichst alles stimmen muß!
-
Achja, macht das so rechtzeitig, daß die Weihnachtsferien für die Experimente genutzt werden können ;)
-
habe mir erstmal bei €bay nen gameboy ersteigert. da bist de mit 15euronen schon dabei... Bin ihc mal gespannt. werde mir bei der nächsten reichelt-bestellung nen flash mitbestellen und dann mal probieren...
Sollte es laufen, werde ich mal ne platine entwerfen... die idee mit dem i/o controller drauf gefällt mir zunehmend...
-
Hallo Leute,
ich arbeite momentan an einem Projekt, welches mit dem Gameboy zu tun hat. An diesem Projekt arbeite ich jetzt seit ca. 2 Monaten (BLL im Fach Informatik) und da ich jetzt erst auf diese Thema hier gestoßen bin wollte ich jetzt einfach mal meine Erfahrungen zum Thema hier schreiben.
Ich habe damit angefangen mich über die Gameboy-Hardware schlau zu machen. Dabei waren die meisten hier aufgezählten Seiten, die bisher echt hilfreich waren. Das Ergebnis war, wie hier auch schon bemerkt, die eingeschränkte Rechenleistung des Classic-GBs, allerdings auch der enorme Vorteil eines Timers, eines Displays, eines parallelen und seriellen Ports, die schon vorhandene (Mini-)Tastatur und einiges mehr.
Die meisten Spiele des Gameboys basieren auf einen (von Nintendo entwickelten) Memory Bank Controller, bei dem es gar nicht so leicht ist ihn anzusteuern (Vorteil ist natürlich die Anhebung der ROM-Größe von 32KB auf bis zu 2MB, sowie auch des RAM).
Meine bisherige Hardware zum auslesen bestand daher aus einem AT90S2313 der mittels zweier 8Bit-Datenlatches den Address-Bus setzen und den Daten-Bus direkt über einen 8Bit-Port am Controller auslesen kann.
Damit habe ich es dann schonmal geschafft ein altes Gameboy-Cartridge auszulesen (Kwirk, Snoopy's Magic Show, ...).
Probleme gabs wie gesagt, bei dem MBC auf den Cartridges (Einteilung in 16KB-Speicherblöcke). Bei den MBC-Karten hab ich immer nur den ersten Speicherblock auslesen können. Die nächsten Blöcke waren nur Wdh. des ersten Blocks. (Wird wohl irgendwann noch klappen - Falls es bei einem von euch klappt bitte schreien und bescheid sagen...).
Beflügelt von diesem Erfolgsergebnis hab ich mir dann mein erstes GB-Modul selbst gebastelt: Ein altes Spiel auseinander genommen, Litze an die Kontakte gelötet und daran ein 32KB-EEPROM angeschlossen, weil ich dies komplett durchaddressieren kann ohne einen anderen IC benutzen zu müssen - Problem: Dieses Modul ist mir komplett auseinander gefallen...(Bild davon folgt)
Es scheint mir also nur sinnvoll (allein) das ROM zu ersetzen und den Rest beizubehalten - mehr RAM ist ja auch sehr praktisch....
Da ich meine weiteren Spiele also nicht auch noch zerhacken wollte hab ich mir Eagle geschnappt und mir ne eigene kleine Platine zusammengeklickt - zwar eher schlecht als recht aber sie funktioniert - und ausgefräst (Das war bisher die erste Platine bei der es richtig funktioniert hat ... noch ein Erfolg...).. Naja mehr brauch ich dazu nicht sagen... Bilder sind unten weiter...
Also hab ich den AVR-Controller so umprogrammiert, damit er jetzt auch ROMs beschreiben kann. Ein ausgelesenes ROM (Kwirk) aufgespielt und siehe da.. es funktioniert....
Jetzt kommt mein Projekt für die Schule: (eine Entwicklungsumgebung für den GB)
Der Assembler (bisher von der E. fertig)... Hmm, da ihr ja auf bestehende Software zurückgreifen wollt vlt. nicht ganz so interessant aber ich will jetzt ja auch ein bisschen angeben :cheesy: :cheesy: :cheesy:
Ohne genug Planung wird so etwas natürlich nichts... Das musste ich selbst auch merken, deswegen ist die erste Version komplett in den Papierkorb geflogen und wurde komplett neu aufgesetzt (Mit nem ausreichenden Konzept, usw.). Damit hab ich dann immerhin schon mein erstes Programm geschrieben...
Code:
.CODEDEFINITION "GB.inc"
.equ StackTop = $FFFE
RST_00:
jp Main
DS 5
RST_08:
jp Main
DS 5
RST_10:
jp Main
DS 5
RST_18:
jp Main
DS 5
RST_20:
jp Main
DS 5
RST_28:
jp Main
DS 5
RST_30:
jp Main
DS 5
RST_38:
jp Main
DS 5
jp irq_VBlank
DS 5
jp irq_LCDC
DS 5
jp irq_Timer
DS 5
jp irq_Serial
DS 5
jp irq_HiLo
DS 5
.org $100
nop
jp Main
DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D
DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99
DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E
;0123456789ABCDEF
DB " "
DB 0,0,0 ;SuperGameboy
DB 0 ;CARTTYPE
;--------
;0 - ROM ONLY
;1 - ROM+MBC1
;2 - ROM+MBC1+RAM
;3 - ROM+MBC1+RAM+BATTERY
;5 - ROM+MBC2
;6 - ROM+MBC2+BATTERY
DB 0 ;ROMSIZE
;-------
;0 - 256 kBit ( 32 kByte, 2 banks)
;1 - 512 kBit ( 64 kByte, 4 banks)
;2 - 1 MBit (128 kByte, 8 banks)
;3 - 2 MBit (256 kByte, 16 banks)
;3 - 4 MBit (512 kByte, 32 banks)
DB 0 ;RAMSIZE
;-------
;0 - NONE
;1 - 16 kBit ( 2 kByte, 1 bank )
;2 - 64 kBit ( 8 kByte, 1 bank )
;3 - 256 kBit (32 kByte, 4 banks)
DW $0000 ;Manufacturer
DB 0 ;Version
DB 0 ;Complement check
DW 0 ;Checksum
; --
; -- Initialize the Gameboy
; --
main:
di ;Disable Interrupts
.wait: ;Wait for V_Blank
ld a,[$FF44] ;LY LCDC compare
cp a,144
jr nc,.wait
ld a,0
ld [$FF40],a ;lcdc
ld a,%11100100 ;set palette to normal
ld [$FF47],a
ld a,0
ld [$FF42],a ;set the scrollx and scrolly
ld [$FF43],a
call clearscreen
ld hl,tiledata
ld de,$8000
ld bc,4096
call ldir ;defined lower in the source..
ld hl,tilemap ;tile map
ld de,$9800
ld bc,1024 ;size of the tilemap
call ldir
ld a,%00000001 ;Enable VBlank-Interrupt
ld [$FFFF],a
ld a,%10010001
ld [$FF40],a ;turn the screen on
ei ;Enable Interrupts
; --
; -- mainloop does nothing
; --
mainloop:
jp mainloop ;neverending loop
; --
; -- clearscreen emties the gb-screen
; --
clearscreen:
ld hl, emptyspace
ld de,$9800
ld bc, 1024
call ldir
ret
; --
; -- ldir - Copies a specified memory-location to another location
; -- Parameters:
; -- - hl: Source
; -- - de: Destination
; -- - bc: Count
ldir:;there is no ldir command
.ldir:
ld a,[hl]
inc hl
ld [de],a
inc de
dec bc
ld a,c
or a,b
jr nz,.ldir
ret
tilemap:
;.include "fontmap.inc"
db "Hallo Roboternetz..............."
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
tiledata:
.include "ibmfont.inc"
; --
; -- Some interrupts
; --
irq_VBLANK:
;ld a,[$FF43]
;inc a
;ld [$FF42],a ;set the scrollx and scrolly
;ld a,104
;ld [$FF43],a
reti
irq_LCDC:
reti
irq_Timer:
reti
irq_Serial:
reti
irq_HiLo:
reti
emptySpace:
ds 1024
Ich weiß ja nicht genau inwieweit ihr euch mit dem GB beschäftigen wollt, aber die Hardware ist echt faszinierend. Steuerungstechnisch auch: Es gibt echt viel Zusatzhardware mit der man super am GB arbeiten kann (z.b. eine Tastatur am seriellen Port des GBs). Am parallelen Port kann man eigentlich soviel machen wie man will.(Ein Software-I2C Bus sollte ja nicht allzuschwer sein...) Von den erweiterung ganz zu schweigen... man muss nur die Ideen alle umsetzen können. Wem der Classic-GB zu langsam ist, kann ja auf den GBA ausweichen. Der ist um einiges schneller und hat ein super Display...
Soviel erstmal von mir... Wer fragen hat kann sie stellen...
Hier mal einige Bilder:
Der Schreiberling:
Bild hier
Das kaputte (umgebaute) GB-Cartridge:
Bild hier
Der Gameboy, welcher gerade ein Programm ausführt:
Bild hier
Das komplett selbstgebaute Cartridge:
Bild hier
-
Woooow. Krass!
Du hast ja wirklich schon was geschafft! Das ist echt mal ein guter Antrieb . . .
Also wenn ich dann mal irgendwann Zeit habe, ein neues Projekt anzufangen, dann wird auf jeden Fall der GB ausgebuddelt. :D
Andun
-
@enoritz: weisst du ob man die rom files die man im netz findet einfach in ein rom programmieren kann? (oder sind die anders adressiert irgenwie?)ich habe einen Flash-Hoschi der die roms beschreiben kann. (standard eeprom programmer) aber bevor ich anfange an der falschen stelle nach fehlern zu suchen......
-
Also wenn du ein simples 32KB-ROM auf ein ROM schreiben willst, ist das gar kein Problem. Bei den MBC-Cartridges (ROM>32KB) bin ich mir nicht ganz sicher, sollte allerdings auch funktionieren. Ich würds mal in nem Emulator (no$gmb z.B.) testen. Wenns dort fehlerfrei läuft, wird es wohl auch auf nem GB funktionieren.
Wie groß ist denn das ROM, dass du aufspielen möchtest?
-
habe ein 512k eeprom (29f040b-90) das werde ich auf ein Marioland-2 cartridge bauen.
die größe des roms wiss ich ned, müsst ich mal schauen, habe einige liegen. auf der cartridge ist ein MBC drauf. der neue rom wird anstelle des alten 1zu1 montiert (reinerziegler.de) ich frage mich halt nur, ob ich die roms auch auf nem stino-progger brennen kann, oder ob ich einen brauche der mit dem mbc umgehen kann..
-
wie ist denn die Pinbelegung von so einer Cartridge?
-
hat sich schon erledigt :)
( http://marc.rawer.de/Gameboy/ )
-
Hallo!
Ich will auch dabei sein. Möchte handheld Speicherosci bauen, also wegen Display und RAM. Kann den Z80 in ASM programmieren, was für schnelle Bildschirmausgaben nutzlich wäre.
MfG
-
Also wenn das Cartridge von Marioland2 benutzt wirst du wohl nich umhin kommen einen Programmer dafür zu verwenden, der mit den MBCs umgehen kann.
Hier wird der Aufbau der Memorymap des Gameboys beschrieben und hier gibts Infos zur programmierung und den MBCs, falls du dir nen Programmer selber bauen willst.
-
nabbend habe das hier mal ganz genau verfolgt
erstens existiert diese projekt noch ?????
zweitens wäre es möglih mit einem gameboy temperaturen auszulesen ??? und auf dem display anzuzeigen ???
hate da an einen DS1621 mikrokontroler gedacht
http://www2.produktinfo.conrad.com/d...atursensor.pdf<-schaut ihr hier[/url]
der vorteil bei einem solchen kontroler
er brauch keinen a/d wandler
er besitzt einen speicher
der temperaturmessbereich entspicht meinen wünschen =P~
mfg bug_er
-
Also für mich existiert das Projekt noch. Ich bin momentan dabei einen Pascal-Slang für den Gameboy zu entwickeln. Bin nur momentan noch am überlegen, wie ich am besten Code-Erzeugung/-Optimierung realisiere (Einen höchst unoptimierten Code kann schon erzeugt werden).
Naja...
Temperaturen messen ist möglich. Soweit es scheint kann der von dir genannte Controller mit dem geeigneten Programm über die serielle Schnittstelle mit dem Gameboy kommunizieren. Das größere Problem ist, ein Cartridge zu basteln. Das ist bei der ganzen Geschichte die größte Arbeit....
-
ahja
was willst du mit dem gb steuern ????
ist es möglich motoren zu steuern ???
welchen serial port meinst du
weis irgendwer wieviel bit übertargung das teil hat ??
-
Der Gameboy hat einen parallelen und einen seriellen Port. Mit dem seriellen Port kannst du z.b. über nen konverter eine verbindung zum pc aufbauen....
Ansteuern kann man mit dem gameboy ja eigentlich alles... ist halt abhängig davon wie leistungsfähig das ganze sein soll... der gb hat nämlich nur eine 8bit-Architektur mit 4MHz Taktfrequenz... Für spielereien ausreichend. Motoren sollten auch gehn....
Es gibt ja ne Menge Beispiele für die Anwendung ... Bei Google findet sich da einiges....
-
das bedeutet wenn der gameboy ne 8 bit strucktur hat das er aufgebaut ist in dem sinne eine parallelports ???
das bedeutet ich werde mich mal dransetzten und einen Cartridge basteln
(ich versuche es aufjeden fall)
-
ok fal es wen interessiert ich habe zu meinem temperatursensor ne andere anleitunge gefunden
zu finden ist die hier
http://home.wtal.de/Mischka/Temperaturschreiber/
kann ich die auf meinem ds1621 kontroler umschreiben ?????
oder ist dies nicht möglich ??
-
hast du schonmal was programmiert?
also erstmal bevor du anfängst mit dem gameboy und temperatursensoren rumzufuchteln kannst du ja mal nen gameboy emulator ziehen und versuchen ein programm drauf zum laufen zu bringen
(und bring zeit mit, grins)
-
jop programmiert habe ich schon allerdings nur mit labview sonst html und ein bischen VB
das ich zeit brauche das ist mir klar ;)
aber von nichts komt nichts
wollte es jetzt mal mit C probieren
-
weiß jemand ob das mit einem GB-Color auch so einfach geht?
-
Mich würde interresieren was ich machen muß um mit einem AVR(z.Bm ATmega8) direkt den Gameboy ansteuern zu können.
Denn um sich in die Rom-programiererei einzuarbeiten und sich die ganze Hardware dafür zu besorgen fehlt mir irgendwie der notwendige Entsiassmus.