Games und Programmierung

Fragen zu Programmiersprachen und Software für den Hive und die Propellerchips
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Games und Programmierung

Beitrag von drohne235 »

Ich habe mal zwei absolut geniale Tutorials von bamse ins Wiki verlinkt:

http://hive-project.de/wiki/code:grafik-treiber

Die beiden Tutorials beschreiben den Aufbau eines eigenen TV-Treibers. Ich habe die letzten beiden Tage damit experimentiert - die Möglichkeiten sind toll. Hab aus dem Stand einen Treiber gebastelt mit der geilen AUflösung von 188 x 244 :twisted: aber dafür mit einem Byte pro Pixel und damit mit der gesamten Palette von 86 Farbe pro Pixel gleichzeitig. Wenn ich das richtig sehe, kann man eine solche Grafik auch über den Bus aus dem eRam holen - mit Finescrolling und vektorisierten Zeilen usw. Letzteres muß ich mal nach dem Urlaub (1 Woche) testen.

Das zweite Tut beschreibt einen TV-Treiber mit 376 x 240 Pixeln auch mit voller Palette, also einem Byte pro Pixel. Dieser Treiber ist aber Tilebasiert mit 47 x 30 Tiles zu je 8 x 8 Pixeln. Finescrolling in X & Y-Richtung sowie bewegte Sprites sind auch beschrieben. Absolut genial der Treiber. Das ist doch was für Janaha und sein Nethack! Der Treiber arbeitet mit einer Cog als Videorenderer und vier Cogs als Scanlinerenderer, die je eine Zeile in ihrem eigenen cRam vorberechnen und dann in einen Zeilenpuffer schiebt. Ansonsten gibt es noch die Tilemap von ~1,9 KByte und der Rest ist für die Tiles frei. Genial finde ich. :) Und es ist wirklich gut beschrieben.

Zum testen habe ich mir übrigens in meinen PC eine alte TV-Karte eingebaut und kann per AV-Eingang das Hivebild mit VLC bequem auf meinem LCD anzeigen. Das ist beim programmieren sehr bequem und man hat nicht noch einen Moni auf dem Tisch stehen. Die Experimente erinnern mich sehr stark an meine alte Zeit mit dem Atari XL - dort hatte man ja den Antic-Chip als einfachen Video-Koprozessor zur Verfügung. Dieser Antic hatte ein echtes eigenes Programm im Hauptspeicher und man konnte zeilenweise das Bild programmieren. Es gab sogar Sprungbefehle, so das man schnell ganze Zeilenbereiche umschalten konnte ohne ein Byte der Grafik zu verschieben.

Mit dem Propeller kann man jetzt nicht nur zeilenweise den Bildaufbau programmieren, sondern bis auf Pixelebene. In meinem Treiber ist die unterste Ebene, quasi die innerste Schleife des Treibers, die Pixelausgabe mit einem Byte pro Pixel! Die meisten kennen ja noch die Geschichten mit den senkrechten Farbbalken bei den alten Retros, die über das Zeileninterrupt erzeugt wurden. Ich habe ein Demo am Hive gebastelt, wo diese Zeilen senkrecht stehen, indem nach jedem Pixel der Farbwert inkrementiert wird - rein algorithmisch, also völlig ohne Bildspeicher in Echtzeit erzeugt. Macht wirklich Spaß damit zu spielen, da kommt echtes Retrofeeling auf. :)

Das Ganze ist auch super um PASM zu lernen, da man so im Gegensatz zu anderen Problemen gleich Erfolg oder Misserfolg sieht, ganz ohne Debugger oder Emulator. Und die Prinzipien sind bei TV vergleichbar mit VGA, so das man in beiden Fällen von den Experimenten profitiert.

Ich hab mal ein paar Screens angehängt und einen Mitschnitt (Achtung 10 MB!), da sich das alles ja auch bewegt.
Dateianhänge
vlcsnap3.png
vlcsnap2.png
vlcsnap1.png
driver 1.wmv
(10.9 MiB) 8133-mal heruntergeladen
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Games und Programmierung

Beitrag von drohne235 »

Im Urlaub hab ich nochmal ein wenig gerechnet und nachgedacht: Wahrscheinlich könnte man bis 256x200 Pixel bei 8bpp (86 Farben) über den Bus holen, dann wird es einfach mit den Zugriffszeiten vom eRAM zu eng. Dabei ist der Bus zu 75% ausgelastet. Die Einblendung der Sprites hab ich schonmal getestet, allerdings bei 376 x 240: Da die lCog's nur eine begrenzte Zeit pro Zeile haben, sind nebeneinander liegend (Extremfall) 8 Sprites möglich. Verteilt über den Bildschirm kann man problemlos 20 Sprites mit 16x16 Pixeln (auch 86 Farben) einblenden. Was darüber hinaus geht, führt zu kleinen Artefakten im Hintergrund. Bei geringerer Auflösung entsprechend mehr Sprites. Bei dem kleinen Demo hat man noch über 22 KByte hRAM für Tiles und Spritedaten frei.

Das Scrolling ist übrigens ruckelfrei auf dem Screen, das ist nur bei der AUfnahme so zuppelig geworden.
Dateianhänge
20sprites.wmv
(3.03 MiB) 8119-mal heruntergeladen
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: Games und Programmierung

Beitrag von Rainer »

Hi drohne235,

bin beeindruckt. Saubere Leistung :)

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Games und Programmierung

Beitrag von drohne235 »

Ich hab schon ein wenig bereut, dass ich unbedingt mit einem Schach anfangen musste. Die TV-Treiber und und Ideen in Richtung Arcade machen da wesentlich mehr Spaß, da kommt echtes Retrofeeling auf. Was mir momentan noch ein wenig fehlt ist eine Möglichkeit Grafiken zu konvertieren, z.Bsp. von BMP in das spezielle Format wie man es auf dem Hive braucht. Ich hab schon überlegt, ob es nicht das beste ist gleich ein Tool auf dem Hive selbst zu programmieren und keinen Konverter.Einen kleinen Sprite und Tileeditor. Das hätte den Vorteil, das man es gleich richtig auf dem Hive sieht, ohne erste Farbpaletten und nichtquadratische Pixel und ähnliches anpassen zu müssen. Na mal schauen wie es mich packt... :)
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Games und Programmierung

Beitrag von drohne235 »

Ich hätte ja nicht gedacht, dass folgedes funktioniert: Wolfenstein 3D auf einem Propellerchip.

http://www.youtube.com/watch?v=6vp5krplhxE

Auch interessant: SID-Player

http://forums.parallax.com/forums/defau ... 5&m=401999
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
lohrermopper
Beiträge: 91
Registriert: Fr 5. Jun 2009, 18:39
Wohnort: Tief im Spessartwald

Re: Games und Programmierung

Beitrag von lohrermopper »

drohne235 hat geschrieben: Ich hätte ja nicht gedacht, dass folgedes funktioniert: Wolfenstein 3D auf einem Propellerchip.

http://www.youtube.com/watch?v=6vp5krplhxE
...
Hallo,

da steckt wohl doch mehr dahinter, als nur ein Propeller-Chip.
Siehe:
http://www.propgfx.co.uk/
;)
Anscheinend gibt es inzwischen sehr viele Entwicklungsboards und Retro-Computer Projekte mit Propeller-Mikrokontroller.
:|
Grüße
LohrerMopper.
P.S.: Ich kann mich dunkel erinnern, daß Wolfenstein auf einem 286er mit 12 MHz recht gut gelaufen ist. :geek:
"Etwas nicht tun zu können, ist kein Grund es nicht zu tun!" (ALF)
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Games und Programmierung

Beitrag von drohne235 »

Ist definitiv nur ein Propeller: propGFX ist ein Projekt, um eine Grafikkarte für Mikrocontroller zu entwickeln - aber auf dieser Grafikkarte ist genau ein Propeller, den man dann über diverse Schnittstellen ansprechen kann, um Informationen per Video oder VGA auszugeben. ;)
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
DJLinux

Re: Games und Programmierung

Beitrag von DJLinux »

Von der Integer Rechenleistung her ist das kein Problem.
Es kann aber nicht VGA sein (nur vier farben in 16 Pixel) die blauen Wandtexturen würden gehen aber nicht mit den weiteren Farben des Propeller Logos oder da wo Wände mit dem Boden oder der Decke auf einander treffen.

Für TV ist mir das Video zu "sauber" gecaptured selbst eine gute TV Karte mit VideoIn produziert meist mehr Schnee oder andere Pixel-Artefakte.

none gefaked greetings :lol:

Joshy
Benutzeravatar
laserjones
Beiträge: 291
Registriert: Fr 19. Jun 2009, 10:38
Wohnort: Hennef
Kontaktdaten:

Re: Games und Programmierung

Beitrag von laserjones »

Hier sind die Specs des PropGFX: http://www.propgfx.co.uk/forum/Blah.pl?m-1192484350/

Sie verwenden demnach zumindest einen externen Video-Encoder. Außerdem ist der Propeller leicht übertaktet (96 MHz).

Grüßchen,
Jörg
Momentan ist richtig, momentan ist gut – nichts ist wirklich wichtig, nach der Ebbe kommt die Flut. (Herbert Grönemeyer)
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Games und Programmierung

Beitrag von drohne235 »

Hmm, hab auch nochmal genauer hingeschaut: Auf der Homepage steht "Check out our latest demo on the Hybrid - Wolfenstein 3D" als Überschrift zu dem Wolfenstein-Video. Offensichtlich gibt es drei Platinen - PropHybrid, PropGFX und PropGFX Lite (http://www.propgfx.co.uk/forum/Blah.pl). Zum PropHybrid findet man die techn. Spezifikationen hier:

http://www.propgfx.co.uk/forum/Blah.pl?m-1193793130/
http://www.propgfx.co.uk/Hybrid/Docs/Hy ... Manual.pdf

Die PropHybrid scheint ein ähnliches Projekt wie die Hydra zu sein, nur noch zusätzlich ein SD-Laufwerk. Ansonsten ein Prop und nur Ausgang für Video - sieht man gut im PDF.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Antworten