Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Programmierung von Grafikeffekten auf DDR-Computern » Themenansicht

Autor Thread - Seiten: -1-
000
24.11.2024, 13:57 Uhr
Dresdenboy



Hallo zusammen,

obwohl der Austausch zum BIC-Thread gut besucht ist und es auch eine erfreuliche Beteiligung bei Programmier-Themen gibt, dachte ich nach Heikos Ju-Te-6K-Demo-Projekt, dass es ja übergreifende Themen gibt, die je nach Hardware auch auf mehreren Plattformen umgesetzt werden können. Fokus liegt hier natürlich auf Grafikeffekten (ggf. auch Sound) wie sie in Intros/Demos aus der Demoszene u. oft auch in Spielen zu finden sind. Dazu gehören sowohl die Funktionsweise, Optimierungen und Tricks, um diese mit möglichst wenig Taktzyklen pro Bildelement umzusetzen, sowie die Eignung der Plattformen für bestimmte Effekte.

Interessant wären schonmal all jene Computer mit echtem Textmodus, idealerweise noch mit Farbattributen. Alternativ sind auch Vollgrafik-Computer geeignet, wenn diese für Pixelblöcke Farbattribute verwenden. Da ist der Vorteil, dass die zu verändernden Datenmengen überschaubar sind.

Weiterhin sínd Rechner interessant, die spezielle Eigenheiten bzw. Stärken aufweisen. Das wären z.B. Rechner mit dem U82720/µPD7220 (BIC, EC1834, VIS3-Karte usw.) oder dem 6845 u. dessen Klone (KCC), Ju-Te-6K u.a. Rechner mit einzeln schreibbaren Farb-Bildebenen und generell auch Rechner, wo der Bildaufbau irgendwie über Register änderbar ist oder Informationen über das Zeichnen der einzelnen Bildzeilen abgreifbar sind.

Das soll es erst einmal für die Einleitung gewesen sein.

Viele Grüße,
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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
24.11.2024, 14:15 Uhr
ralle



KC85/4 via ESC-Sequenzen. Also Hintergrundfarbe tauschen und so.
https://www.youtube.com/watch?v=xC-nCm-XVBw
war vorher das falsche Video.
Jetzt aber das richtige, ein kleines BASIC: https://www.youtube.com/shorts/4oevv-e8zW8
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700

Dieser Beitrag wurde am 24.11.2024 um 14:25 Uhr von ralle editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
24.11.2024, 17:30 Uhr
kaiOr

Avatar von kaiOr

Hat man genügend RAM im System könnte man eine Art Playback durchführen. Das muss nicht wie hier gleich Vollbild sein und die Bilddaten müssen auch nicht von extern (USB) kommen.
Sondern man könnte auch ein kleines Objekt (3D-Würfel, dynamische Kachel) während des "Ladebalkens" vorberechnen und dann als bewegliches Sprite oder als gefächerten Hintergrund plotten.


Zitat:
Dresdenboy schrieb
U82720/µPD7220 (BIC, EC1834, VIS3-Karte usw.)

Die Inkompatibilität fängt oft schon auf ein und demselben Rechner an.
Wir hatten z.B. neulich einen Thread mit GEDIT (auf A7150).

Zitat:
GRAF11.F50 wurde notwendig, da sich beim Einsatz einzelner
Importexemplare des Schaltkreises GDC (Graphics Display Con-
troller) vom Typ NEC 7220A aufgrund eines bisher nicht be-
kannten und vom Hersteller nicht eindeutig dokumentierten
Verhaltens Fehlfunktionen ergeben, die sich in der ladbaren
Grafikfirmware folgendermassen auswirken:
- fehlerhafte Darstellung des "kleinen" Grafikkursors, des
Rechteckechos (K31) und des Eingabeausschnitts (K15) (hori-
zontale Linien nicht durchgehend, sondern "durchbrochen"),
- fehlerhafte Ausfuehrung der Grafikkommandos K8 (Initiali-
siere Speicherabschnitt) und K9 (Initialisiere Speicheraus-
schnitt)("Streifenmuster" ueber die gesamte Bildschirm-
breite).
Durch eine in GRAF11.F50 vor Ausfuehrung des ersten Grafikkom-
mandos zusaetzlich durchgefuehrte Initialisierung des GDC wird
ein fehlerfreies Verhalten, unabhaengig vom konkret einge-
setzten Schaltkreistyp, erreicht.



MfG

Dieser Beitrag wurde am 24.11.2024 um 17:32 Uhr von kaiOr editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
24.11.2024, 18:12 Uhr
Dresdenboy



@Kai
Ja, Playback kleiner Sequenzen v.a. nicht als Vollbild, sondern geschickt berechnet in wenigen sich wiederholenden Frames sind denkbar. Das kann auch zeichensatzbasiert sein. Gerade auf PETSCII-Rechnern gibt es da einen Trend und auch viel Akzeptanz.

Rechner mit viel Grafikspeicher könnten solche Sequenzen auch gleich in ihrem VRAM lagern. Mit einer leichtgewichtigen Komprimierungen (Ablegen von Bildteilbereichen, die nur gezielt überschrieben werden müssen), ginge da auch etwas, was ein <2 MHz Z80 flüssig schafft.

Bgzl. NEC µPD7220A:
Haben diese Probleme mit dem NEC-Chip vllt. etwas mit den hier dokumentierten Änderungen (siehe von mir gepostetes Bild) zu tun?

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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
24.11.2024, 18:37 Uhr
ralle



Für den Spectrum gibt es eine Videoplayer mit Ton.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
24.11.2024, 19:07 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Zu 000:

KC87 (Farbe) und Z1013 (sw)
Sind geeignete Kandidaten für reinen Textmodus.
Es gibt kaum Demos für diese Systeme.

Hier im Forum gab es das „wormhole“,
Auf meiner Seite findest du 1-Bit-Sound und „Last-KC-Demo“ (große Laufschrift)
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
24.11.2024, 19:31 Uhr
HeikoS



Eine gute Idee! Ich möchte auf eine Demo für den Z1013 hinweisen, die im Juni von Dietmar (u-held) hier vorgestellt wurde. Bisher hat niemand weiter seine Arbeit gewürdigt …

<036> https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=21054

Vielleicht liegt es ja auch daran, dass es auf GitHub veröffentlicht wurde.

https://github.com/duhlig/Z1013_software/tree/main/krtdemo

Ich hatte jetzt schon mehrfach Nachfragen (sogar von höchster Stelle :-) zum Laden von *.bin-, *.wav-Dateien etc. auf GitHub. Vielleicht ist dieser Hinweis ja hilfreich. Wenn auf GitHub ein Link, z.B. https://github.com/duhlig/Z1013_software/blob/main/krtdemo/krtdemo.z80 existiert, kann man die Datei nicht mit „Rechtsklick“ und „Ziel speichern unter“ laden, sondern man muss den Link anklicken und danach auf GitHub den „Download Button“ (Pfeil nach unten, Download raw file, oben rechts) anklicken. Im JKCEMU KRT-Grafik aktivieren und „krtdemo.z80“ auf 100H laden.

Hab’s hier auch mal im JKCEMU aufgezeichnet: https://nextcloud-ext.peppermint.de/s/ooA4LT8BcLeatiF

Grüße, Heiko

Dieser Beitrag wurde am 24.11.2024 um 19:38 Uhr von HeikoS editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
25.11.2024, 19:31 Uhr
Dresdenboy



@Volker:
Die LKCC-Demo habe ich mir angeschaut. Das passt schon ganz gut. Sie braucht offenbar auch nicht einmal viel Code.

Die 1-bit-Sound-Demo schaue ich mir auch noch an. Das Verfahren ist mir manchmal schon begegnet. Ich glaube, das erste Mal auf 286 u. 386 mit PC-Speaker, wo ein Mod-Player die berechneten PCM-Daten ausgab. Spannend wäre hier, die Ausgabe mit dem Bildschirm-Update zu synchronisieren, um zeitlich beides hinzukriegen.

Bzgl. Textmode sind ja auch verschiedene Umsetzungs-Stufen denkbar, je nach Rechner und Bildausgabe-Logik. Von festem monochrom dargestellten Zeichensatz (Nachbildung versch. Helligkeiten über entspr. Zeichen) bis farbig und modifizierbare Zeichen ist ja alles denkbar. Bei PETSCII-Demos auf Commodore PET bis C64 kann man auch die Bandbreite sehen.

@Heiko:
Ich habe mir die Demo mal selbst gezogen und auch im JKCEmu starten können. Das ist schon gut gemacht, v.a. umfangreich.

Und mit schnellen Kreisroutinen kann man da ja schon etwas schönes machen. Vor allem lässt sich noch mehr herausholen, wenn man von generischen Routinen, die alle möglichen Fälle u. Bildschirmränder beachten müssen (da war auch ein kleiner Bug in der Kreisroutine oben am Rand zu sehen) weg geht (bzw. diese nur in schwierigen Situationen nutzt) und eher spezialisierte Routinen schreibt, ginge noch mehr. Gerade auf C64, Amiga u. Co. waren die Dot Tunnel sehr beliebt. Da werden Kreise nur mit z.B. 32 Punkten dargestellt, was für einen Tunnel aus mehreren Kreisen dann schnell genug ist. Die Punkte können auch vorberechnet sein und müssen nur noch entspr. der Position verschoben werden.

VG,
Matthias

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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
25.11.2024, 21:05 Uhr
u-held




Zitat:
Dresdenboy schrieb
da war auch ein kleiner Bug in der Kreisroutine oben am Rand zu sehen



Ich denke, da läuft die Fehlervariable des Bresenham-Algorithmus über. Das zu untersuchen hatte ich aber keine Lust mehr. Betrifft ja nur große Radien. Und die sind nicht so spannend, so lange der Mittelpunkt im Bild liegen muss.

VG,
Dietmar
--
Kompetenz simulieren
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
25.11.2024, 21:56 Uhr
HeikoS




Zitat:
volkerp schrieb
...
Hier im Forum gab es das „wormhole“,
...



Ich konnte das hier im Forum mit der Suche nicht finden. Kann jemand helfen ?

Grüße, Heiko
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
26.11.2024, 11:06 Uhr
Dresdenboy



Ich bekam auf anderem Wege einen Vorschlag für einen Effekt, wie im Film Matrix mit den fallenden Buchstaben ("Digital Rain"). Da es für ein neudeutsch "rapid prototyping" gut in Turbo Pascal umsetzbar war (und damit auch der Algo besser lesbar ist), habe ich es mal für den BIC mit seinen Zeichencodes im Bildspeicher umgesetzt. Da die Textausgaben über eine Prozedur erfolgen, sollte das leicht anpassbar sein. Eine Lösung mit TP-Mitteln (gotoxy und write) ist langsam, mit flackerndem Cursor und reagiert auch nicht bei "keypressed". Da wäre ein direktes Schreiben in den Bildspeicher via mem[addr] sinnvoll und erspart auch die Umrechnung in Zeilen und Spalten.


Quellcode:
program digitalrain;

const len=10;
      max=60;
      width=80;
      height=25;

var pos        : array[0..max] of integer;
    c          : array[0..max] of byte;
    j          : byte;

procedure setchar(p:integer; chr,col:byte);
begin
  if (p<0) or (p>=width*height) then exit; {Position ausserhab des Bildschirms}
  port[$99]:=$49; {CURS: Cursor auf Word im Speicher setzen}
  port[$98]:=p and 255;
  port[$98]:=p shr 8;
  port[$99]:=$20; {WDAT word: Wort schreiben}
  port[$98]:=chr;
  port[$98]:=col;
end;

begin
  clrscr;
  randomize;
  port[$99]:=$4B; {CCHAR: Cursor ausschalten}
  port[$98]:=9; port[$98]:=0; port[$98]:=0;
  for j:=0 to max do               {initiale Zeichen}
    begin
      pos[j]:=random(width*height);        {Bildschirmposition}
      c[j]:=random(255);           {Zeichencode}
    end;
  repeat
    for j:=0 to max do
      begin
        setchar(pos[j],c[j],15);        {weiss}
        setchar(pos[j]-width,c[j],10);  {1 Zeile darueber hellgruen}
        setchar(pos[j]-3*width,c[j],2); {3 Z. darueber gruen}
        setchar(pos[j]-len*width,0,0);  {len Z. darueber loeschen}
        pos[j]:=pos[j]+width;           {naechste Zeile}
        if pos[j]>=(24+len)*width then  {fertig -> neues Zeichen}
          begin
            pos[j]:=random(width);      {Startposition}
            c[j]:=random(255);          {Zeichencode}
          end;                                                                  
      end;
  until keypressed;
  port[$99]:=$4B; {CCHAR: Cursor wieder einschalten}
  port[$98]:=$89; port[$98]:=$20; port[$98]:=$70;
end.



Für die ganzen port-Ausgaben zum Abschalten des Cursors oder Setzen des Zeichens wären für andere Systeme jeweils eine Anpassung bzw, einfach Weglassen des Codes nötig.

Ausgabe:



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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
26.11.2024, 11:15 Uhr
Dresdenboy




Zitat:
HeikoS schrieb

Zitat:
volkerp schrieb
...
Hier im Forum gab es das „wormhole“,
...



Ich konnte das hier im Forum mit der Suche nicht finden. Kann jemand helfen ?


Ich leider auch nicht.

Aber wo wir bei Demos und auch effektreichen Spielen sind (Werke von Moods Plateau u.a.):
https://demozoo.org/productions/?platform=42

In dieser Demo fand ich ein Plasma für den KC 85/4:
https://demozoo.org/productions/185234/

Edit: Hier ist ein großes Plasma für den KC 85/4 in Quantum Leap): https://www.youtube.com/watch?v=JD__IUjtj5o&t=35s

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 26.11.2024 um 12:47 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
26.11.2024, 11:54 Uhr
HeikoS



Moods Plateau sind natürlich bekannt hier, das sind die absoluten Profis - "Crawler" von Moods Plateau ist manchmal aktiv hier. Ab 1:45 gibt es Rasterbars im Abspann ... ;-) ... aber weniger Lines und ohne Hindernisse ...

Grüße, Heiko
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
26.11.2024, 13:13 Uhr
Dresdenboy




Zitat:
HeikoS schrieb
Moods Plateau sind natürlich bekannt hier, das sind die absoluten Profis - "Crawler" von Moods Plateau ist manchmal aktiv hier. Ab 1:45 gibt es Rasterbars im Abspann ... ;-) ... aber weniger Lines und ohne Hindernisse ...

Grüße, Heiko


Das hört sich schon nach demoszene-interner Competition an.

Aber nochmal zu dem Plasma: Die ZX-Lösung, die ich gebaut habe (siehe hier im BIC-Thread, nutzt es ein ähnliches Prinzip wie Moods Plateau in "Quantum Leap": Ein simples Dither-Pattern als Bitmap und Änderung der Attribute.

Was hier noch nicht besprochen wurde, ist ein Plasma (oder anderer helligkeits- bzw. farbbasierter Effekt), für Textmodi, auch monochrom. Das lässt sich gut über entspr. gewählte Zeichen mit mehr oder weniger Pixeln abbilden. Den Rest macht eine flüssige Bewegung.

Hier ist ein Javascript-Beispiel eines Mandelbrot-Rotozoomers in 256 Bytes (Javascript) von Mathieu Henri:
http://www.p01.org/mandelbrot_rotozoom/

Im Vorschaubild werden andere Zeichen verwendet als dann im aktuellen Code. Ggf. musste er den Code an neuere Anforderungen der Browser anpassen. Aber die Grundidee sollte klar werden.

@alle:
Woran bestünde denn mal Interesse? Prinzipiell müsste ich zu sehr vielen Effekten (v.a. aus der Zeit vor den Shadern) die Algos oder Tricks kennen (da mich immer interessierte, wie es funktioniert bzw. ich viel ausprobiert habe) oder ggf. Material finden können.

Ich dachte z.B. an einen Bump-Mapping-Effekt. Bisher habe ich das Ende der 90er in versch. Form in Grafikmodi gemacht (DOS, Java), aber mit Text wäre ja auch denkbar. Hier ein PETSCII-Beispiel:
https://www.youtube.com/watch?v=3FFPCuDqi_g&t=203s

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, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek