PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein Projekt : AVR Spielkonsole



junk_sandy
20.03.2007, 22:01
Hallo!
Letztes Jahr hatte ich mit jemanden die Idee man könne eine sehr simple Spielkonsole Mithilfe von AVRs realisieren.Leider ist der Kontakt abgebrochen, obwohl wir in der selben Stadt wohnen :-k
Egal.
Nach längerer Pause hab ich weiter recherchiert und nun endlich ein Konzept aufgestellt.
Das ganze soll mit 2 ATMega8515 und einem schnellen SRAM aufgebaut werden.
Der erste AVR übernimmt die Berechnungen des Spiels und füllt den RAM mit Bilddaten. Der Zweite erzeugt aus den Bilddaten ein BAS-Signal für den Fernseher. Ein Farbsignal wäre mit AVRs kaum in der nötigen Geschwindigkeit für eine vernünftige Spielkonsole zu erzeugen, aber ein S/W Bild sollte eigentlich kein so großes Problem sein.
Bei einer Auflösung von 224x160x 2bit hätte man einen etwas besseren Gameboy,aber ich denke ein realistisches Ziel.
Das nimmt dann schonmal 9kb in Anspruch, aber da das Ganze auch noch Ruckelfrei sein soll, brauch ich wohl das doppelte, sodass eine Art virtuelles Bild vom Spielprozessor bearbeitet wird und das andere ausgegeben wird. So muss der Hauptprozessor nicht erst auf den Grafikprozessor warten.
So weit das Konzept. Nun habe ich mit AVRs nicht so viel Erfahrung und hoffe ihr könnt mir helfen.
Wenn ich so durch die Gegend google find ich nicht sehr viel über den ATMega8515.
Evtl. habt ihr was darüber. Wie man externen RAM anschließt und anspricht weiß ich nicht genau, denn so ein Problem hatte ich noch nie. :-k

Und was noch wichtiger wäre : Weiß jemand wie man einen ISP-Kabel für USB bastelt? Mag keine 40 Euro bei reichelt dafür ausgeben...oder muss ich das? Hab nur dumme FireWire und USB anschlüsse an meinem Laptop. :-&

Also ich hoffe ihr habt noch Ideen und Anregungen für das Projekt.

alter Mann
20.03.2007, 23:07
Hallo,

zu dem ISP Kabel kann ich nicht viel sagen, denke aber, das dafür ein Chip notwendig ist, der die USB-Kommunikation übernimmt. Soweit ich weiss, kann das auch ein AVR übernehmen.

Das Ram sollte, vielleicht eine dual-Channel ausführung sein, damit ein Controller die daten reinschreiben kann, während der andere Zeitgleich oder zeitversetzt das auslesen kann und das Bild darstellt. damit würde sich das werkeln mit zwei Bildspeichern erübrigen denke ich mal.

Wie wäre es, als Grafikprozessor einen VIC aus dem guten alten C64 zu nehmen? Zugegeben, der ist nicht gut zu bekommen, aber ich denke mal, da gibt es ähnliche Grafikchips mit ähnlichen Eigenschaften. Das würde zumindest schon mal die Arbeit ersparen, den auch noch zu programmieren 8)

Und vielleicht sollten noch mehr Controller eingesetzt werden für Spezialfunktionen wie zum Beispiel I/O Funktionen u.Ä. Weil wenn man einen externen Speicher an den 8515 anschliesst, bleiben nicht all zu viele Ports für andere Aufgaben frei.
Mit einem SPI-Netzwerk sollte das auch für zeitkritische Funktionen ohne grössere Probleme machbar sein denke ich.

Im Grossen und Ganzen finde ich die Idee nicht schlecht. Einem Prozessor wie dem Z80, der z.B im Gamboy eingebaut ist, kann der 8515 rein Leistungsmässig zwar nicht ganz das Wasser reichen, aber für eine einfache Spielekonsole sollte es allemal reichen. Das einzige, was ich daran vermisse ist ein I²C Interface um externen EEPROM-Speicher anzusprechen, auf dem man unterschiedliche Programme ablegen kann.

Da erinnere ich mich daran, einmal gesehen zu haben, wie jemand einen kompletten Computer aus C-Mos Bausteinen aufgebaut hat, inklusive CPU und Grafikprozessor. Auf diesem teil lief das Basic des C64 oder ein eigenes Betriebssystem. Ich finde nur leider den Link nicht mehr.

Florian

[Edit]
Ich habe eben in diesem Tread
https://www.roboternetz.de/phpBB2/viewtopic.php?t=28874
folgenden Link gefunden:
http://www.ulrichradig.de/home/index.php/cpld/8bit_c_graka
Eine Grafikkarte für VGA-Monitore zum Anschluss an AVR's

junk_sandy
21.03.2007, 12:25
Das mit dem externen ROM fände ich auch schnieke, dann könnte man Spielmodule dafür bauen.
Aber ich dachte die AVRs können keinen externen Programmspeicher ansprechen.
Evtl. sollte ich wirklich einen Prozessor verwenden.
Ein Z80-Mikrocomputer aufzubauen ist auch nicht das Problem, könnte man drüber nachdenken.

Die Grafikkarte von Ulrich Radig hat dummerweise den Haken, dass sie ein CPLD verwendet. Und ich kann absolut kein SMD löten und hab auch kein Geld um das löten zu lassen, also fallen solche Schmankerl leider weg.
Einen VIC zu bekommen ist denke ich unmöglich außer wenn man nen C64 ausschlachten würde (aber wer würde sowetwas tun???)

Am liebsten würde ich ja auf 16 bit Controller/Prozessoren ausweichen, da ich eigentlich ehr Programmierer bin, lass ich mir gern Luxus in Sachen Speicher, da muss man bei 8 bit schon sehr aufpassen. Auch Grafikmäßig wäre eine 16bit Maschine eine bessere Grundlage.

Spurius
21.03.2007, 14:43
Hi,
wegen dem ISP: Schau mal auf www.fischl.de

p_mork
21.03.2007, 16:49
Hallo junk_sandy,

hier sind ein paar Links, die Dir helfen könnten:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=23833&highlight=videoterminal
http://www.rickard.gunee.com/projects/video/pic/howto.php
http://jkdesign.de/avrproject/Die%20MAHPONG%20Seite.htm

Mit dem Videoterminal des ersten Links habe ich sogar schon mal selbst eine sehr einfache Spielkonsole gebastelt.

Das mit 224 Pixel und 2bit Auflösung kannst Du leider vergessen, denn dann müsstest Du die Pixel mit ca. 4,3 MHz ausgeben, wenn Du jedoch nur ein bit Auflösung nimmst, könnte es hinkommen, weil man dafür das interne SPI-interface benutzen könnte. Somit wären es für den AVR nur ca. 500KHz Pixeltakt, was bei 20MHz CPU-Freq. durchaus realistisch ist.

Was Du vllt machen könntest wäre, ein GraKa mit Logigbausteinen zu bauen. Das vertikale Timing könnte dann der uC übernehmen, die einzelnen Pixel ausgeben könnten dann die TTL-Gatter. Mit einem RGB-Pal-Wandler(gibts bei Reichelt für 2€ glaub ich, hab leider die Bstlnr vergessen).
könnte es sogar ein Farbbild werden. Schau mal hier, vllt hilfts Dir ja etwas: http://mycpu.eu/

MfG Mark

alter Mann
21.03.2007, 18:23
Hallo noch mal,

externen Programmspeicher können die AVR's nicht ansprechen, wie wäre es denn mit einem Bootloader, der das eigentliche Programm in den Arbeitsspeicher lädt, z.B. von einer SD-Karte. Das geht über das SPI-Interface und ein Bootloader hat im internen Flash genug Platz.

Das Problem mit dem SMD-Löten ist garnicht so gross, wie es aussieht. Und wenn Du es garnicht hin bekommst, vielleicht kennst Du ja jemanden, der die paar Bauteile auf die Platine bekommt. Auf jeden Fall wäre es eine Überlegung wert, die Grafikkarte zu bauen und zu verwenden, das erspart viel Aufwand auch beim Programmieren.

Wenn Du Linux nehmen möchtest, dann würde ich eher auf einen Embedded Prozessoer wie Geode oder ARM ausweichen, da gibt es schon fertige Portierungen oder zumindest ansätze für und das ganze Handling wird einfacher. Aber ich finde die Sache mit 8Bit AVR's hat auch ihren Reiz.

Florian

junk_sandy
22.03.2007, 08:54
Altern Mann, deine Lösung finde ich wirklich knorke.
Am liebsten würd ich aber Programme, klassisch dann von einem ROM-Chip lesen. Eigentlich unpraktisch da der ROM ja gebrannt werden muss, aber eben klassisch und hat Stil. ^^
Nur die Sache mit der Grafik. Eine Farbgrafikkarte würde mich auch mehr reizen als schwarz weiß.
224x160 Pixel will ich aber auf jeden fall anstreben und auch nicht unterbieten.
Allerdings stößt man ja schon früh auf die Grenzen des RAMs wenn ein AVR den Grafikspeicher beschreiben soll.
Da müsste ich den VRAM schon in Bänke unterteilen und das ganze über einen RAM-Controller verwalten, was sicherlich die Sache nicht schneller machen wird.
Die Bilderzeugung aus TTL und Analogbausteinen ist auch nicht das Problem.
Wenn jemand einen günstigen RGB-PAL-Converter IC findet wäre ich saufroh.
Die Bilderzeugung im RAM müsste auch ein extra Controller übernehmen. Z.B. wie beim SNES. Die Haupt-CPU steuert hier nur die Sprites an die im VRAM schon vorliegen und vorgeladen wurden aus dem ROM.
Am besten man macht das mit einem DMA-Controller...kennt ihr da welche im DIP oder DIL Format?

Ich merk schon, das ganze wird immer komplexer. :-k

p_mork
22.03.2007, 15:54
RGB->PAL: TDA8501 bei Reichelt für 3€.



externen Programmspeicher können die AVR's nicht ansprechen, wie wäre es denn mit einem Bootloader, der das eigentliche Programm in den Arbeitsspeicher lädt, z.B. von einer SD-Karte. Das geht über das SPI-Interface und ein Bootloader hat im internen Flash genug Platz.
AVRs können wegen ihrer Harvard-Architektur keine Programme aus dem Arbeitsspeicher ausführen, sondern NUR aus ihrem Flash-Speicher. Da musst Du schon einen ARM nehmen, was ich Dir auch empfehle, denn diese sind relativ günstig(LPC2xxx, gibts bei Reichelt) und haben auch ein externes Speicher-Interface. Da wäre nur das Problem mit der Bauform. Eine möglichkeit wäre noch vllt, eine normale PC-Grafikkarte mit einem fbas-Ausgang zu nehmen. Soweit ich weiss werden alle PC-GraKas bei einer Auflösung von 640*480 Pix. bzw Textmodus gleich angesteuert, damit jedes BIOS mit jeder GraKa in der Boot-Phase klarkommt. Genaueres ist mir jedoch nicht bekannt.

MfG Mark

junk_sandy
22.03.2007, 16:13
Hab ich mir schon gedacht, dass ich wohl auf einen anderen Controller ausweichen muss.
Ein ARM ist sicher eine gute Lösung. DIL-Adapter gibts auch.
Aber diese Controller haben mir schon fast zu viel Leistung, da versuch ich immer schnell mehr rauszuholen und geb mich mit dem Mindesten nicht mehr so recht zufrieden.
Naja muss ich mich halt zügeln.
OK, also ein ARM als Hauptcontroller...leider sind die Dinger doch bissl teurer als die AVRs.

Nen LPC2106 wäre nich verkehrt. Hat schonmal 64kb RAM onboard. Von Olimex gibts ein bestücktes Header Board im DIL-40 Format.

Eine fertige Grafikkarte zu verwenden find ich allerdings ein bisschen langweilig. Soll schon ein Eigenbau sein der ein FBAS Signal erzeugt.
(Da haben wirs...FBAS kaum für nen ARM entschieden kommt ein F dazu)

[-(

alter Mann
22.03.2007, 17:05
Hallo,



AVRs können wegen ihrer Harvard-Architektur keine Programme aus dem Arbeitsspeicher ausführen, sondern NUR aus ihrem Flash-Speicher.


Stimmt, daran hatte ich garnicht gedacht. Aber wie wäre es, wenn im Flash eine art Interpreter steckt, der im Modul untergebrachten Code wie Levelmaps, Grafiken und Ablaufprogramme nur ausführt?
Zugegeben, das wird dann etwas unflexibel, aber man kann ja den Code im Flash immer wieder an neue Bedürfnisse anpassen und entsprechend erweitern.




Eine fertige Grafikkarte zu verwenden find ich allerdings ein bisschen langweilig. Soll schon ein Eigenbau sein der ein FBAS Signal erzeugt.

Da wüsst ich schon nicht, wie ich anfangen soll. ich bin eher ein Mensch der digital arbeitet :cheesy:

Aber muss es unbedingt eine Grafikkarte sein? Wie wäre es mit einem kleinen LC-Dispay? Die gibt's auch in bunt und das ganze wird etwas transportabler.

Florian

junk_sandy
22.03.2007, 22:43
LCD...ne. Fad. Ne. Muss schon ne Glotze sein. Der Reiz is ja die Schwierigkeit.
Und nen Interpreter muss auch nich sein, dann nehm ich halt nen ARM oder 2 ARMe und knüppel mir da was zusammen.
Ich denk mit nem ARM und nen RGB->PAL Converter kann man ganz gut ne Spielkonsole mit Farben auf TV machen, oder?

junk_sandy
23.03.2007, 09:04
http://www.albotronic.de/Produkte/TS1/TS-1.html

Hier wird auch eine TTL-Grab-Graka verwendet.
Also, ich denke nun steht mein Konzept.

Eine normale RGB-Graka muss ersteinmal reichen. Die meisten TVs machen das ja auch mit.
Irgendein AVR macht die Synchronisation in der Graka und die TTLs erzeugen das Bild aus einem schnellen RAM.
Hauptprozessor wird ein ARM der über einen Bootloader das Programm von einer Spielkassette (oder erstmal SD-Karte) ließt.
Joypads werd ich dann noch basteln mit asynchronen Schieberegistern um PINs zu sparen.

Harty123
22.01.2012, 18:14
Sowas gibts übrigends schon fix und fertig:

www.uzebox.org

und auch schon kostenlose Spiele dazu:


http://www.youtube.com/watch?v=Da3OIHtX8d8