Zunächst muss ich sagen, dass ich fast keine Erfahrung mit der Programmierung von Mikrocontrollern habe (abgesehen von einigen Arduino-Sachen). Ich habe mit C (und x86 ASM) an einigen Low-Level-Projekten gearbeitet (denken Sie an Kernel-Sachen, eingebettete Systeme), daher denke ich, dass der Software-Teil kein Problem sein sollte.
Da ich versuche, etwas über Mikrocontroller zu lernen, habe ich mir gedacht, dass der beste Weg dazu ein Haustierprojekt ist. Ich habe mich entschieden und möchte Spacewar implementieren ! auf einem Mikrocontroller. Wenn es in den 60er Jahren auf einem PDP1 laufen konnte, sollte es auf einem Mikrocontroller laufen (glaube ich).
Hier ist meine Frage: Könnten Sie mir ein bestimmtes Entwicklungsboard empfehlen, das über einen VGA-Anschluss verfügt, über den ich das Spiel anzeigen kann (nur schwarz / weiß)? Ich plane, eine USB-Tastatur für die Steuerung zu verwenden.
Wäre die VGA-Anzeige (ich brauche nur s / w, 640x480 wäre mehr als genug, ich würde noch weniger verlangen) für ein billiges Board (<= 100 $) unerreichbar?
Irgendwelche Empfehlungen für das Board? Gibt es noch andere Probleme, auf die ich stoßen könnte?
Vielen Dank!
Antworten:
Das Hackvision ist im Wesentlichen ein Arduino, das für die Entwicklung von Retro-Spielen entwickelt wurde. Sie programmieren es mit gewöhnlicher Arduino IDE und es verwendet die TVout-Bibliothek.
TVout ist eine Arduino-Bibliothek, mit der Sie auf einfache Weise monochrome Composite-Videos mit niedriger Auflösung für einen Fernseher erstellen können. Ich habe Hackvision entwickelt, bei dem es sich im Wesentlichen um ein kombiniertes Arduino-Board und einen Gamecontroller handelt. Es verfügt über Audio- / Videoausgänge, die Sie an Ihren Fernseher anschließen. TVout, meine Controller-Bibliothek und Spielbeispiele erleichtern das Schreiben eigener Spiele. Und da die Spiele mit der normalen Arduino IDE geschrieben wurden, ist es für Anfänger in Ordnung. Hackvision wäre für das Originalposter nützlich, da die gesamte Hardware gepflegt wird und die Arduino-Codierung weitgehend verstanden wird.
http://nootropicdesign.com/hackvision/
quelle
Eine MCU, die für die Implementierung von Spacewar geeignet sein sollte, ist der 32-Bit- Parallax-Propeller mit acht Kernen , da jeder Kern über eine Video- und VGA-Schnittstelle verfügt. Was als ebenso komplexe Spiele erscheint, wurde darauf portiert.
Ich erinnere mich, wie ich Spacewar auf einem DEC PDP-12 gespielt habe, auf dem ich vor vielen Jahren einmal gearbeitet habe.
quelle
Wenn Sie bereits ein Arduino-Board haben , können Sie eine TV-Out-Bibliothek wie diese , diese oder jene verwenden . Wie Sie sehen, können Sie diese billigen Boards auch bestellen oder selbst herstellen.
quelle
Wenn Sie Zugriff auf ein analoges Oszilloskop haben, würde ich empfehlen, einen Mikrocontroller mit einigen DACs an das XY des Oszilloskops anzuschließen. Wenn Sie auch das Z (Helligkeit) steuern können, wäre das sogar noch besser. Wenn Ihre DACs schnell genug sind, können Sie den Strahl einfach an den Punkten verweilen lassen, die beleuchtet werden sollen.
quelle
Ich würde nicht unbedingt eine Karte mit einer Videoschnittstelle als Mikrocontroller bezeichnen. Ich weiß (noch) nicht genug darüber, wie Spacewar mit dem Display verbunden ist. Sie könnten einen Asteroiden-Ansatz ausprobieren, bei dem das Programm eine Liste von Anweisungen für die Vektorgrafik-Engine erstellt hat, die selbst eine Art Prozessor mit Anweisungen und Unterprogrammaufrufen usw. war Senden Sie eine Liste mit Videoanweisungen über eine serielle Schnittstelle an einen Host, z. B. ein dummes Terminal, das das Video anzeigt.
Ein anderer Ansatz könnte darin bestehen, nur einen Gameboy-Fortschritt zu erzielen, 16 MHz ARM7, ein Display und Drucktasten. Kostet ungefähr $$ 30or $ $ 40 bei ebay. An Orten wie realhotstuff.com können Sie eine Flash-Kassette erwerben oder eine SD-Karte (Mini, Micro oder Full Size) verwenden. Einige sind schwerer zu bedienen als andere. Ich empfehle auch, nur ein Game-Link-Kabel zu kaufen, damit Sie es abschneiden und zwei serielle Kabel herstellen können. Verwenden Sie möglicherweise so etwas
http://www.sparkfun.com/products/718
oder das ist das, was ich normalerweise benutze
http://www.sparkfun.com/products/449
Schreiben Sie einen Bootloader und lassen Sie ihn von der Kassette booten. Anschließend können Sie Programme über die Seriennummer in den RAM herunterladen und dort ausführen. Dies spart enorm viel Zeit beim Herausziehen der Kassette, dann beim Herausziehen der SD-Karte und beim Mounten. Kopieren Sie die neue Datei die kassette kassette im gba boot und warte, scheitere, starte erneut. Mit dem seriellen Bootloader können Sie die Anweisungen auf der Seite des Entwicklers ein- und ausschalten oder eine Reset-Schaltfläche hinzufügen.
Wahrscheinlich lohnt es sich, nur ein paar Dollar mehr auszugeben und eine gba sp zu verwenden. Sie erhalten ein hintergrundbeleuchtetes Display und ein Netzkabel, damit es immer angeschlossen bleibt. Ein NDS funktioniert aus Sicht der Kassette und der Entwickler, ist jedoch schmerzhafter als das GBA, wenn es darum geht, Ihre Füße nass zu machen. Ja, in beiden Fällen können Sie einfach in eine der vorhandenen Sandboxen fallen und wirklich nichts über den eingebetteten Teil davon lernen. Ich würde mir nicht die Mühe machen, irgendetwas zu tun, das in diesen Fall eingebettet ist. Schreiben Sie einfach eine App auf Ihren Computer und fertig.
Wenn Ihnen der gba-Pfad nicht gefällt, können Sie einen Mikrocontroller in Betracht ziehen und ein Display separat kaufen, erd- oder funkenfrei oder an einem ähnlichen Ort, der leicht zu bekommen ist. Das Oled auf den Stellaris Eval Boards ist wahrscheinlich zu klein, aber Oled wäre wirklich cool. Sie können sich auch einige der Fpga-Boards ansehen, die häufig über VGA-Ports oder LCD-Steuerung usw. verfügen, und Sie können dort einen Mico8- oder Microblaze- oder einen anderen Prozessor einsetzen. Ein größeres Projekt als nur das Schreiben von Software für ein Evaluierungsboard, aber Sie werden in die Kategorie eines Mikrocontrollers mit einem VGA-Port eingestuft.
Ich habe mir die Details nicht angesehen, aber wenn Sie so etwas zu einer anderen Mikrocontroller-Karte hinzufügen, erhalten Sie möglicherweise das Paket, das Sie suchen
http://www.sparkfun.com/products/10329
Oder vielleicht ein stellaris Board mit USB otg und eine Art USB-basierten Videotreiber.
Was verwenden Sie als Basisquelle? Nachdem ich selbst eine statische binäre Übersetzung von Asteroiden durchgeführt habe, klingt zuerst eine Emulation, dann eine Übersetzung aus den pdp1-Quellen / binär wie ein sehr lustiges Projekt.
quelle