Hello, Guest the thread was viewed278k times and contains 2410 replies

last post from He-Man1982 at the

Denise C64 + Amiga Emulator

  • Habe gerade bei der C64-Emulation in Denise 2.2 unter Linux ein Verhalten festgestellt, dass ich mir nicht erklären kann. Die Eingabe eines Leerzeichens wird ignoriert. Alle anderen Zeichen scheinen zu funktionieren.


    Woran kann das liegen?

  • Was ist das für eine Tastatur? Ich habe Denise schon unter vielen beliebigen Windows-Versionen und Rechnern gestartet - diesbezüglich gab es nie ein Problem.

    Eine Cherry RS 6000. Nix exotisches.

  • Ich habe mir jetzt verschiedene Versionen des Denise angeschaut - 2.2.1, 2.2, sowohl Linux als auch Win32 - und in allen Varianten gibt es keine Reaktion auf die Leertaste.

    Eventuell ist der hier bereits beschriebene Grund für das Problem verantwortlich:

    Denise Amiga 500 Emulation

    Die Priorisierungsfunktion einmal umstellen, falls zusätzlich ein Keyboard-Joystick verwendet wird, bei dem auch die Leertaste mit involviert wird und dann sehen was passiert.

  • Übrigens, vergas noch zu erwähnen.. bei "Optionen / Einstellungen / Allgemein", scheint es bei meinem Core2Duo unverzichtbar zu sein, die "Threaded Emulation" zu aktivieren.

    Diese von Dir, äusserst nützliche "Stellschraube", bewirkt nämlich hier tatsächlich genau das, was deine Intention dahinter war. Sie verhindert (in diesem Fall bei einem Core2Duo)

    "das Stottern beim Navigieren durch die Benutzeroberfläche", was in diesem Fall wohl unverzichtbar ist. Vermute jetzt mal, das ich daher auch keinerlei zusätzl. "Threads" mehr frei habe, richtig?

    Hierzu noch nebeinbei gefragt:...auf was sollte eigentlich die rote Markierung von "Threaded Emulation" hindeuten?

    Diese "Threaded Emulation" ist hauptsächlich dafür gedacht, das man beim Bedienen des Emulators kein Audio Stottern bekommt.

    Wenn du allerdings einen trägen Aufbau der Bedienelemente beim Umschalten der Tabs meinst, dann finde ich es gut, dass die Funktion noch einen weiteren sinnvollen Nutzen hat. habe keine Vorstellung wie sich das auf einem Core Duo anfühlt.

    Die ganze Programmierung ist einfach nicht darauf ausgelegt, optimal auf einem Core Duo zu laufen.

    Die rote Markierung kann mal weg. Die Funktion war in der Anfangszeit etwas kritisch/experimentell und verursachte mitunter Abstürze.

    Was hältst du eigentlich davon, solche Overlays rein optional in die Ansichtsoptionen deines Emu mit einzubauen?

    Mein Fall ist sowas nicht, da ich das Retro Gefühl nur mit Software verbinde.


    das könnte man als zuschaltbaren Shader abbilden. Dazu müsste sich allerdings ein Autor finden.

    siehe neues feature, weiter unten. da habe ich an einigen Stellen eine info für dich hinterlassen.

    ------------------------------------------


    RetroArch (RA) shader support (erstmal nur für D3D11). openGL ist deaktiviert bis zum Umbau. Diese Test Version ist also nur für Windows Leute.


    Es gibt nun im UI "Präsentation" ein Baum Menu mit 3 Einträgen.

    Der erste Eintrag "Übersicht" ist unverändert und für die Einstellung "RGB" und "S/C Video (CPU)" die einzige Anzeige die man hier benötigt.

    Unter dem zweiten Eintrag "Shader" gibt es die Auswahl zwischen internen und externen Shader Verzeichnis. Dies bestimmt im Grunde nur das Start Verzeichnis, wenn ein Shader mittels File Dialog geladen wird.

    Die internen Shader sind die Shader, welche Denise in den vergangenen Versionen enthielt, inkl. Lottes und Trinitron.

    Letztere gibt es nun umfangreicher als externe Shader. Dennoch habe ich diese belassen, für Leute welche die neuen Möglichkeiten nicht nutzen wollen.


    Für die externen Shader sollte man zuerst das RA Shader Verzeichnis finden, welches meist ein Unter Ordner des RA Ordners ist.

    Wenn RA nicht installiert ist, lädt man die aktuellen Shader hier herunter:

    http://buildbot.libretro.com/assets/frontend/


    In einem zu RA separaten Projekt checken die Shader Autoren ihre Arbeit ein und ein Build Bot packt dies dann zusammen.

    Es wird nur die shaders_slang.zip benötigt. Diese glslang Vulkan Shader Dialekte werden dann in SPIRV (cross-API intermediate language) konvertiert und abschließend in den nativen Shader Dialekt des verwendeten Treibers.

    Das ist HLSL für D3D, GLSL für openGL, MSL für Metal. Für Vulkan sind die slang Shader bereits nativ.

    Der Vorteil liegt auf der Hand. Man schreibt den Shader Code nur einmal und kann diesen dennoch in allen Treibern verwenden.


    Dateien mit der Endung "slangp" sind sogenannte Presets, also eine Definition für eine Kette von Shader Passes. "slang" Dateien sind einzelne Shader.

    Shader wie "Mega Bezel" benötigen unter D3D fast eine Minute um einsatzfähig zu sein. Ich konnte in den Einstellungen von RA keine Cache Option finden.

    In Denise gibt es diese. Zudem werden die Shader gebaut ohne das UI zu blockieren. Während der Shader baut, kann Denise ganz normal verwendet werden. Sobald dieser fertig ist, wird es zugeschalten.

    Oder die Fehler entsprechend im UI für Entwickler angezeigt. Wird beim Bau bemerkt, das man den Shader gar nicht wollte, klickt man einfach einen anderen an ohne zu warten bis der Alte fertig ist.

    Ab dem zweiten Bauen eines Shaders wird dann der Cache (deaktivierbar unter Optionen/Video) verwendet. Mega Bezel ist dann innerhalb einer Sekunde einsatzbereit.

    Um zu entscheiden ob der Cache veraltet ist, wird eine Checksumme gebildet. Hat sich also nach einem Update der Code eines Shaders verändert, sollte das erkannt werden und nicht der Cache verwendet werden.

    Im UI gibt es eine Option "Cache leeren". Veraltete Caches können als solche nicht erkannt und somit automatisch gelöscht werden. Diese nehmen dann sinnlos Platz weg.

    Deswegen kann es sinnvoll sein ab und an mal den Cache komplett zu leeren, abhängig davon wieviel Shader man probiert.


    In RA gibt es einige Bugs im Zusammenhang mit D3D11/12 Treibern. Z.b. Shader wie monitor-bloom (gut für Amiga geeignet) unter bezel/koko-aio/Presets-4.1/ zeigen Fehler.

    Der Shader Autor hat eine Option "#define D3D_WORKAROUND" zur Verfügung gestellt, welche einige problematische Features deaktiviert um vernünftig unter D3D zu laufen.

    Das ist in Denise nicht notwendig. Der Shader funktioniert so wie in RA mit Vulkan Treiber.


    Shader Kette:

    Im UI wird bei einem Doppel Klick im Baum Eintrag "Shader" die Shader Kette angezeigt.

    Die meisten Optionen sind eher an Shader Autoren gerichtet.

    Für den Nutzer hilfreich ist jedoch die Schaltfläche "deaktivieren". Auf diese Weise kann ein Shader aus der Kette inaktiviert werden.

    Z.B. aus Performance Gründen oder als schnellen Weg bestimmte Features zu unterbinden. Das geht schneller als die relevanten Parameter zu verändern.

    Z.b. der interne Shader "VIC Glitches". Um diesen zu inaktivieren, müsste man 5 Parameter (AEC, BA, CAS, RAS, PHI) auf 0 setzen und beim Aktivieren wieder die Werte einstellen.

    Da geht es schneller den einzelnen Shader Pass zu inaktivieren. Somit können die Parameter ihren aktuellen Wert behalten.

    Natürlich kann man nicht alle Shader Passes sinnvoll abschalten. Das sieht man dann aber relativ schnell.

    Wenn Shader mit einer Skalierung (siehe Anzeige: 2x usw.) abgeschaltet werden, kann es manchmal notwendig sein, dies im nächsten aktiven Shader in der Kette nachzuholen.

    Artefakte (z.B. Moire Effekt), welche sich aus gedehnten Darstellungen (Röhrenkrümmung) ergeben, können ebenso durch Erhöhung der Skalierung im jeweiligen Pass verringert werden.


    Änderungen an Shader Passes sind nicht umgehend, da jede Änderung Zeit zum Aktualisieren benötigt.

    Man ändert also etwas und die Aktualisierung startet (sichtbar an einem blauen Progress Icon). Da die Aktualisierung das UI nicht blockiert,

    kann man eine weitere Änderung starten, obwohl die Aktualisierung noch nicht abgeschlossen ist.

    Die laufende Aktualisierung wird durch die Neueste ersetzt.


    Shader Parameter:

    Sollte der Shader Parameter haben, erscheint ein dritter Eintrag im Baum Menu, welcher mit einem Doppel Klick geöffnet wird.

    Geänderte Shader Parameter sind sofort sichtbar ohne das der Shader neu bauen muss, wie dies beim Verändern der Shader Kette notwendig wäre.

    Geänderte Shader Parameter werden nicht automatisch gespeichert, so wie es in alten Denise Versionen der Fall ist. Da nun viele Shader zum Einsatz kommen, muss dies nun in einer Datei abgelegt werden.

    Dazu gibt es eine Speichern Schaltfläche mit Datei Dialog.

    Hat man nur Parameter geändert, wird in der Speicher Datei eine Referenz auf den Shader erstellt, gefolgt von den geänderten Parametern.

    Hat man etwas in den Shader Passes verändert oder 2 Shader Ketten kombiniert, recht eine Referenz nicht aus und ein komplettes Preset wird in die Speicher Datei geschrieben.


    Favoriten:

    Geladene Shader können als Favoriten gespeichert werden. Besonders durch die Cache Funktion können diese dann sehr schnell über das Haupt Menu gewechselt werden.


    Performance:

    Shader wie Mega Bezel bestehen aus über 40 Passes. Um zu sehen, wie gut die GPU damit klar kommt, sollte man nicht den Warp verwenden. Denn dieser schaltet den Shader für best mögliche Beschleunigung zeitweise ab.

    Stellt man im Speed Menu auf maximale Geschwindigkeit bleibt alles aktiv und man sieht wie sehr die GPU die CPU ausbremst.



    Shader kombinieren:

    Besonders für den C64 kann eine Kombination aus Denise internen PAL Shadern und einem externen CRT Shader praktisch sein.

    Aus dem Grund gibt es bei den internen Shadern eine Light Variante. Hier sind keine CRT Shader enthalten, sondern nur die Shader für das PAL Encoding/Decoding und Shader, welche die Luma Anomalien des VIC's oder HF Modulator beschreiben.

    Diese können dann mit den viel umfangreicheren externen CRT Shadern über die Schaltflächen Preset voranstellen oder anfügen kombiniert werden.

    Um zu schauen ob der externe Shader bereits PAL Encoding kann, sollte man dieses Demo hier laden.

    https://csdb.dk/release/?id=50556

    Bei PAL, im Gegensatz zu NTSC, werden die benachbarten Linien gemischt.

    Im Demo erkennt man recht gut an den unterschiedlich gefärbten Linien ob dies passiert.


    Für den Amiga macht das Voranstellen des internen "Light" Shaders nur Sinn, wenn man ein S-Video Kabel anstatt RGB simulieren will. Bei RGB gibt es für PAL/NTSC kein unterschiedliches oder besonderes Color Encoding.



    Vorschläge für Shader Autoren:

    Es fehlt immer noch ein Shader für Color Banding (C64) (Luma-Chroma Crosstalk).

    Ticket: https://bitbucket.org/piciji/denise/issues/1/video-old-vic2-chroma-effect-on-odd-chars


    Gabriel_West

    Shader zur Darstellung eines C64/Amiga Monitors mit Laufwerk und eventuell mit Tastatur. Die Laufwerks LED blinkt dann entsprechend.


    Ich werde das später, wenn alles fertig ist, im RA Forum adressieren in der Hoffnung, das ein Shader Autor Interesse zeigt.


    automatische Shader Parameter: (nicht bekannt in RA)

    In RA werden alle Shader Parameter nur durch den Nutzer verändert.

    Ich habe hier jedoch einige Parameter, welche sinnvoller vom Emulator gesteuert werden, z.B. PAL/NTSC, Amiga Interlace/Hires, X/Y des weggeschnittenen Bildes (Border), Zustand Laufwerks LED.



    so geht's weiter

    - damit Linux und Mac wieder funktionieren, ist nun als nächstes der openGL Umbau dran.

    - Gabriel_West : hier schaue ich mal was ich mit den drive sounds im Warp so anstellen kann ... also außer abschalten.

    - danach fixe ich die dazu gekommenen Amiga bugs

    - dann folgt der Metal Treiber inkl. Shader, da openGL schon zu lange "deprecated" unter macOS ist.

    - C64: SuperCPU oder 1581 oder CMD Ramlink/HD oder RS232 User Port Modem oder Vorschlag

    - Amiga ECS Denise (A500+ / A600)

    - Amiga HD


    AW182: es gibt auch einen HQ2/3/4X Shader.

  • nightly:


    - openGL RetroArch shader support


    Gabriel_West

    Ich habe nun mal etwas mit den drive sounds + auto warp + Disk Emulation bei Bedarf rumgespielt.

    Ich konnte kein Programm finden, wo "Disk Emulation bei Bedarf" etwas am Verhalten ändert. Du schriebst, dass es ein generelles Problem ist. Vielleicht sind doch nur einige Programme betroffen ?

    Nenn mir doch mal ein D64, wo es definitiv nachvollziehbar ist. Ich muss es nachstellen können.

    Dennoch habe ich etwas in diesem nightly verändert. Disk Emulation bei Bedarf schaltet nach dem 200 frames keine Kommunikation zum Laufwerk erfolgt ist, die Laufwerks Emulation aus, bis der C64 wieder etwas vom Laufwerk will.

    Normalerweise reichen 200 frames aus, damit das Laufwerk noch dazu kommt den Motor abzuschalten und somit das Laufwerksgeräusch.

    In diesem nightly wird nun das Motorgeräusch, nach Abschaltung der Laufwerks Emulation, deaktiviert, selbst wenn das Laufwerk den Motor nicht rechtzeitig abgeschaltet hat bevor die Laufwerks Emulation ausgesetzt wird.

  • Gar nichts. Dein Virus Programm schägt mal wieder falschen Alarm an. Passiert leider immer wieder. Wahrscheinlich steckt im Header einer der Dateien eine Teilerkennung/Teilsignatur für einen bekannten Virus, den dein Programm in der Datenbank hat..Und schon springt das Teil drauf an.

  • Guten Morgen alle zusammen.


    Heute Morgen wollte ich mir die neue Nightly herunterladen.


    Jedoch meldet mein Antivirus-Programm (Windows Defender) einen Virus in der ZIP-Datei.


    Was ist da los?

    das ist nervig.

    Das Problem trat in der Vergangenheit häufiger auf. Unter Windows wurde bis letztes Jahr GCC Compiler Version 8 verwendet.

    Als ich dann auf die Version 12 umgestellt habe, wurde das Problem nicht mehr kommuniziert.

    bis jetzt ...

    Ich baue die Versionen nicht auf meinem Rechner, sondern der Anbieter AppVeyor übernimmt das.

    Der Vorteil ist, dass die das professionell machen und die Wahrscheinlichkeit eines kompromittierten Systems sehr gering ist.

    Was genau spuckt denn der Defender aus?

  • Und es ist weiterhin kein Virus. Der Defender bei mir spukt das hier aus. Wir mit ein paar weiteren Updates sicher irgendwann verschwinden. Einfach unter Einstellungen für Viren & Bedrohungsschutz einen Außschluß für die Denise.exe machen und der Defender bleibt ruhig.


    Behavior:Win32/DefenseEvasion.A!ml