Spacewar auf Mikrocontroller


7

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!


Ist Ihr Ziel, eine originalgetreue Kopie von Spacewar zu erstellen? oder um mehr über das Fahren eines VGA-Displays zu erfahren?
Toby Jaffey

originalgetreue Kopie von Spacewar!, aber ich versuche so viel wie möglich zu lernen, damit VGA nett wäre. Alternativ könnte ich andere Methoden verwenden, um die Daten an meinen Laptop zu senden und von dort aus eine Anzeige zu simulieren, aber das wäre nicht so cool :)
nvm

2
Ich verlasse mich in diesem Fall auf Leon Heller, aber bei einigen Gelegenheiten hat er den Parallax-Propeller erwähnt. Nun, ich habe einen schreienden Deal auf ihrem Entwicklungsboard und es hat einen eingebauten VGA-Port. Von den Videos, die ich gesehen habe, wäre ich nicht überrascht, wenn sie das Senden von Videosignalen sehr einfach machen. Hör zu!
Dave

2
Wenn Sie sich für einen Propeller entscheiden, beachten Sie, dass es viel einfacher ist, PS / 2-Tastaturen und -Mäuse daran anzuschließen als an USB.
AndrejaKo

Antworten:


5

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/


Können Sie uns weitere technische Details zu Ihren Aktivitäten mitteilen? Es klingt interessant, aber mein Ziel ist es, immer Antworten zu vermeiden, bei denen die andere Site die Details kennen muss, obwohl Ihr Produkt ohne Ihre Site nicht verfügbar wäre und eine andere Tüte Würmer mitbringt.
Kortuk

Bearbeiten Sie es in, machen Sie Ihre Antwort gründlicher und vollständiger!
Kortuk

Was meine Bedürfnisse angeht, ist dies die Antwort, auf die ich gehofft habe. Tolle Arbeit, das sollte so viel Spaß machen: D. Die Preisspanne ist großartig, es ist Arduino, also * nix-freundlich, die Beispiele sehen soooo cool aus. Es tut mir leid, dass ich Ihre Antwort nur einmal positiv bewerten kann.
NVM

1
whoa. das ist schlecht. nicht schlecht bedeutet schlecht, aber schlecht bedeutet gut.
Dave

8

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.


Je mehr Beiträge ich von Ihnen über dieses Mikro lese, desto mehr möchte ich mein Entwicklungskit verwenden. Parallax hatte sie kürzlich für 119 US-Dollar im Angebot! Verwenden Sie ViewPort?
Dave

1
Zur Hölle, kümmere dich nicht um das Entwickler-Kit, kaufe einfach ein Protoboard und einen Prop-Clip (oder ein USB-Protoboard) - das sind $ 50
Connor Wolf

Oder kaufen Sie eines der neuen 20-Dollar-QuickStart-Kits. Sie sind momentan nicht vorrätig. obwohl. Ich habe zwei davon. Ich benutze ViewPort nicht.
Leon Heller

4

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.


Können Sie mir etwas näher erläutern, warum die TV-Bibliothek großartig ist?
Kortuk

Ich finde es faszinierend, Videosignale in reiner Software mit genauem Timing ohne externen Videochip zu erzeugen, und es gefällt mir. Es hat seinen Nutzen. Wenn Sie herum googeln, werden Sie feststellen, dass die Farbe auch auf diese Weise erzielt wird. Bei einem externen RAM handelt es sich nicht nur um eine Farbleiste, sondern um einen echten TV- oder VGA-Zeichen- und Grafikgenerator. Eine weitere faszinierende AVR-Verwendung ist ein USB-Gerät in reiner Software.
Avra

2

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.


[Spacewar! auf Oszilloskop] ( processors.wiki.ti.com/index.php/…
davidcary

1

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 $$30Ör$$ 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.


Wenn Sie ein nds herumliegen und eine gba bekommen, empfehle ich den ez flash 3 in 1, stellen Sie sicher, dass er die GBA-Größe hat. Um loszulegen, können Sie es zunächst auf dem nds programmieren (naja, dafür benötigen Sie auch eine Kassette mit Steckplatz 1, für jede gibt es viele 20-Dollar-Kassetten). Sobald Sie einen Bootloader haben, können Sie ihn über die gba neu programmieren. Das Unternehmen verfügt über eine Open Source-Bibliothek zur Ausführung dieser Aufgaben.
old_timer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.