001
17.11.2024, 19:48 Uhr
Dresdenboy
|
Hallo Heiko,
das ist ja mal ein Thema für mich.
Zwar habe ich den KCC hier noch nicht aufgebaut, aber zu einigen Fragen kann ich durchaus schon etwas sagen, da sie v.a. eher generischer Natur sind (Bildaufbau in den meisten älteren Computern für CRTs und damit verbundene Demoeffekte).
Zu den Linien: Wie auch im Videotext erwähnt, sind das Rasterbars, gut bekannt von C64 usw. Dabei werden ganz allgemein gesagt Palettenfarben zeilenweise neu zugeordnet. Meist werden z.B. die Hintergrundfarbe, die Randfarbe oder beide geändert, wobei dafür z.B. nur ein Palettenindex in ein Register geschrieben werden muss. Damit reichen Rasterbars auch über die Fläche mit aktiv dargestellten Pixeln hinaus. Die Verzerrungen darin deuten auf ein ungenaues Timing hin, wonach der Anfang der Zeile nicht gut getroffen wird und die Farbänderung dann im sichtbaren Bereich erkennbar wird und sich auch nicht stabil verhält. Das gut und sauber hinzubekommen ist eine Kunst. Mehr Farben sind dann natürlich einfach, da man ja ständig neue Farben aus der gesamten Palette auswählen kann. Auf mancher Hardware sind sie leichter dank entspr. Unterstützung/Signale umzusetzen, z.B. dank Wert der akt. Zeile in einem Register, ein Rasterinterrupt (Hauptschwierigkeit: Aufruf innerhalb unterschiedlich lang ausgeführter Befehle), Copper u.ä. Chips, Bit in einem Register, welches den Horizontal Retrace/Blank anzeigt. Letzteres geht auch auf EGA und VGA oder sogar dem NEC µPD7220. Für VGA unter DOS habe ich das mal in einem 31 Byte Intro genutzt: https://www.youtube.com/watch?v=qHvDrGMzdyA
Mit Quelltext kann ich nicht dienen, aber ggf. mal danach suchen. Jedenfalls wird hier Maschinencode eine Rolle spielen. Die spannenden Teile (z.B. für die Rasterbars) kann man ggf. in einem Emulator mit Debugger identifizieren.
Für den Rest der Demo wurde von der Geschwindigkeit her wohl viel BASIC verwendet. Teils wird noch mit der Bildstartadresse gespielt, um das Bild hoch/runter zu bewegen. Der Tunnel funktioniert vmtl. mit Palettenrotation. Da werden also Strukturen gezeichnet (ungünstig von vorn nach hinten, besser wäre von hinten nach vorn wg. Verdeckung) und dann wird die rote Farbe durch die verwendeten 16 Farben rotiert.
Bzgl. Funktion der Rasterbar-Bewegung: Für eine Analyse der Scrollbewegung (mit Gummiband-Effekt) von Handytests auf YT hatte ich mal ein Python-Script geschrieben, was das Video (heruntergeladen bzw. per Screengrabbing aufgezeichnet) in Einzelbildern analysiert und eine bestimmte Spalte aus den Bildern herausliest und diese Spalten aufeinanderfolgender Bilder in X-Richtung nebeneinander legt. Dann könnte man schon mehr erkennen. Eine Vorfilterung nach der lilanen Linie wäre denkbar. Im nächsten Schritt könnte man auch eine approximative Suche nach der Funktion ausprobieren.
P.S.: Du nutzt ja auch Geogebra. Das fand ich mal spannend und nutzte/zeigte es auf Arbeit. Seitdem hat es sich da intern ein unter ein paar Leuten verbreitet. Obwohl wir nie geschafft hatten, über unsere Rechtsabteilung die Lizenzierung umzusetzen (das wären nur 75€ gewesen, aber frag nicht. ).
P.P.S.: Ich fand letztens zufällig eine Seite, die ein paar einfache Demoeffekte, oft sogar in BASIC umgesetzt, erklärt: http://www.petesqbsite.com/sections/tutorials/graphics.shtml In der Vergangenheit gab es dieses Wissen meistens über Diskmags. Aber da müssten auch noch Texte existieren. Warte... ich weiß. Bei Hugi gab es viel, was jetzt auch noch online leicht abrufbar ist: https://www.hugi.scene.org/online/ für die gesamten Diskmags sowie https://www.hugi.scene.org/online/coding/hugi%20se%204%20-%20index%20sorted%20by%20topic.htm für die Coding-Artikel.
VG, Matthias -- ___________________________________ Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ... Dieser Beitrag wurde am 17.11.2024 um 20:03 Uhr von Dresdenboy editiert. |