Grausames FlipBuffers(), Print und Compilat ansehen

Anfängerfragen zum Programmieren mit PureBasic.
caddy6510
Beiträge: 3
Registriert: 11.03.2008 18:06
Wohnort: Saarland

Beitrag von caddy6510 »

@ Kearu gaman
1) die taktfrequenz unterschiedlicher monitore kann sehr stark variieren.
angefangen von 60/65Hz bis zu 240Hz.
Ja, hat aber nichts mit DoubleBuffering zu tun.
Mit dem "Strahlhinterherzeichnen" schon, stimmt.

Die Strahlposition ist natürlich Sache der Grafikkarte, die mir über den Treiber einfach sagen soll:
"Der Strahl befindet sich jetzt an X/Y". Und da diese ja den Screen aufbaut (..mit 50...bis 240Hz..), kann sie mir auch den
umgerechneten Wert frei Haus liefern.
Und FlipBuffers() müsste genau diese Possibilities bekommen. <)
2) TFTs haben zwar eine taktfrequenz, aber keinen Elektronenstrahl.
da gibts also nix, wo du hinterhermalen könntest.
Mit Elektronenstrahl hast Du recht.
Aber hinterhermalen kann man dann der Geschwindigkeit, mit der das interne RAM des TFTs gefüllt wird.

Und man bekommt bei TFTs sehr wohl die Angabe über X und Y des momentan aktuellen Transistors.
TFTs haben einen (internen) X und Y-Takt.
Gebildet aus dem Main-Clock. Und dem kann man hinterhermalen.

Du kannst ja auch einen modernen TFT über einen Converter an alte Geräte anschliessen.
Die Demos laufen dort ja genauso wie auf den alten Röhrenmonitoren.
Das dürfte dann ja nicht funktionieren.

Und wenn jetzt tatsächlich jemand über solch' einen angeschlossenen Converter programmiert, dann kann er doch genau so
coden, als wenn er einen Röhrenmonitor vor sich hätte. :D
(War nur ein Beispiel...ich häng' nicht am Converter...)
letztendlich scheitert dein vorhaben also an so kleinen aber unbeeinflußbaren faktoren.
du kannst dem spieler deines games schließlich nicht sagen:
kauf dir nen röhrenmonitor und stell ihn auf 120Hz, damit mein game richtig läuft.
(Wieso...manche Hersteller verlangen das tatsächlich... :lol: )

Wie gesagt, hat aber nichts mit Bitmaptauschen zu tun.

Auf den Y-"Strahl", also die vertikale Austtastlücke, wartet "FlipBuffers()" ja auch mit nem TFT dran.
Der Befehl sollte jetzt nur noch die Option bieten, die Bitmap-Areas NICHT umzuschalten und die exakte Strahl-Position abzufragen !

Die momentan leider einzige Lösung scheint tatsächlich zu sein, das FlipBuffers()-Assembler-Äquivalent in der EXE-datei
so zu modifizieren, d.h. Befehle zu kastrieren, dass die Bitmaps nicht getoggelt werden.
Und das ist bei Windows (weils halt Windows ist) so verheddert, dass ich da noch nicht wirklich durchgestiegen bin.
Vor allem, weil ja bei dieser Implementierung des Befehls, alle Grafikbefehle immer in die gerade abgeschaltete Bitmap schreiben.
Dies ist aber sicherlich nur von einem Flag abhängig, das man dann auf einem bestimmten Wert halten, bzw. zum richtigen Zeitpunkt
umschreiben müsste.

Ob ich mir dieses Engineering wirklich antue, steht auf einem anderen Blatt.
Schade ist nur, dass es (noch) nicht drinne ist. :cry:

Danke,Greetz und Frohe Ostern an alle, Caddy :allright:


Ps: Hast Du damals auch Demos etc. gemacht ? Habe hier den VICE-C64-Emu...
..ich bin Oldschoolgeil...Her damit, wenn Du sie noch hast... Alte Scroller sind ein Gedicht...
Der einzig wahre Label ist eine HEXe.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ne, leider hab ich nix mehr von dem alten kram.
ich hatte u.a. ein helicopter-game geschrieben, nicht als scroller sondern mit einzelbildern.
ich hab viel mit neuen zeichensätzen rumgespielt,
hatte mir nen eigenen editor geschrieben,
der den standard-screen editor benutzt,
und nach nem Run die ersten 8x8 zeichen des
screenbuffers ausliest um das neue zeichen abzuspeichern.
man konnte also direkt sternchen und punkte hinmalen,
um das bitmuster festzulegen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Emily
Beiträge: 96
Registriert: 25.01.2008 13:14

Beitrag von Emily »

Entschuldige wenn ich junger hüpfer hier so bei den alten Hasen dazwischenplapper, aber ich habe mich zusammen mit Zaphod mal mit Lightguns beschäftigt und habe da ein paar sachen gelernt, die hier vielleicht interessant sind:

afaik gibt es bei modernen Grafikkarten keine Möglichkeit an die echte "Elektronenstrahl" Position heranzukommen, weswegen es auch keine Lichtgriffel oder Lightguns mehr gibt, auch wenn ein Röhrenmonitor dransteckt. Das ist aber seit VGA so, also brauchst du DOS, Win3 oder Win9x und eine EGA Karte mit entsprechender "Lichtgriffelunterstützung" das war selbst bei den alten Grafikkarten nicht selbstverständlich, die waren ja nicht wie Homecomputer für Fernseher gedacht.

Es gibt auch keine echte "Austastlücke" mehr auf der Softwareseite, nur einen entsprechenden Interrupt. Auf den kannst du dich unter DirectX nicht verlassen, denn der kann Treiberseitig für den Vollbildmodus abgeschaltet werden, dann wird das Bild so schnell refreshed wie es die Grafikkarte hinbekommt, auch wenn das mitten im Zeichnen des Vorigen Bildes passiert, was zu dem berüchtigtem "Tearing" bei schnellen horizontalbewegungen führt.

Aktuelle Basic versionen sind auch nicht dazu gedacht den nutzer nahe an die Hardware zu bringen sondern das Programmieren so einfach wie möglich zu machen.

Wenn du also auf den frontbuffer malen willst, würde ich zu einem C Compiler raten und zu SDL oder allegro, die beide dem nutzer sehr viel mehr kontrolle lassen.

Wenn du tricks anwenden willst, die nur auf Homecomputern funktionieren, dann würde ich auch vom PC abraten und mir lieber einen hochgezüchteten Amiga kaufen.
Johnny was a chemist's son,
But Johnny is no more.
What Johnny thought was H20
was H2SO4.
Antworten