Posts by PiCiJi

    Quote

    Aber vor allem stellt sich mir die Frage, ob der Emu überhaupt noch "Reserve" hat um z.B. eine komplexe Demo laufen zu lassen, wenn er im "ready prompt" den Kern schon voll auslastet. Muss ich halt mal testen.

    der Leistungs Unterschied zwischen prompt und komplexen Demo ist überschaubar. Der Emulator synchronisiert jeden Halbzyklus, egal ob die Anwendung komplex ist oder nicht. ;-)
    Ich habe auf meinem alten Core I5 von 2011 je nach Software zwischen 120 - 140 fps mit einem emulierten Diskettenlaufwerk.
    Ja der Emulator hat ein Grundumsatz wie ein Body Builder beim Nichts tun :-) Das ist hauptsächlich meiner Motivation für dieses Projekt geschuldet, nämlich übertrieben hoher Genauigkeit und gut lesbarer Quellcode. Mir ist bewusst, das es nicht für jedes notebook in Hinsicht auf Leistung geeignet ist.


    Quote

    base init ok
    keyboard ok
    mouse ok

    hmm, das habe ich nicht erwartet. Wie zum Geier geht das dann? Eigentlich sollte es bei dem Log laufen. Ich melde mich diesbezüglich, wenn mir was neues einfällt.


    Quote

    Eigentlich hätte ich erwartet, dass minimiert die Anwendung normal weiterläuft. Ist halt beim Musik hören störend
    Ansonsten läuft die Software bei mir sehr gut.

    kannst du ja umstellen.

    Quote from angryking

    "Sid Hazard" ist ja standardmäßig deaktiviert, aber auch ohne und mit neuem Build läuft 1 Core hier einfach immer auf 100% (Gesamt 25%). Ohne Fokus 12.5%
    Aktiviere ich "Sid Hazard", geht die Gesamt CPU Nutzung hoch (auf 37.5%) , also auf einem weiteren Kern. Ohne Fokus 25%

    ja gut bemerkt. Der Emulator spawnt 2 extra threads, der erste für "Sid Hazard" und der zweite für die floppy emulation (also ein thread für alle emulierten floppy).
    Der neue Build verhindert, das bei Aktivierung von Sid Hazard bei ausgeschalteter Emulation (nur User Interface aktiv) der Thread den idle Modus verlässt und einen Core komplett frisst.
    Ich vermute du meinst mit Leerlauf, wenn die emulation zwar läuft aber nur der Basic Screen zu sehen ist.


    Wird die Emulation gestartet, verlassen beide threads jeweils den idle Modus wenn Sid Hazard aktiviert ist/wird bzw. wenn bei Anzahl Disketten Laufwerke mindestens eins ausgewählt ist.
    Beide threads laufen dann unter Voll Last, bedeutet 2 cores auf 100% und der eigentliche emulations core kommt auch noch hinzu. (dieser verursacht jedoch keine Vollast bei pal/ntsc Geschwindigkeit)


    Du hast Recht, das muss nicht sein. Das hatte ich nicht mehr auf dem Schirm. Die threads warten mit maximaler Leistung auf Anweisungen vom Haupt thread.
    Ich baue das so um, das die benötigten threads in den idle Modus wechseln, wenn der Haupt thread das Kommando an das User Interface zurück gibt.
    Das passiert nach jedem frame um die inzwischen aufgelaufenen User Eingaben abzuarbeiten. Alternativ kann der idle Modus auch aktiviert werden, wenn die Kommunikation zwischen c64 und floppy aufhört.
    Letzteres könnte aber die Gesamt Geschwindigkeit reduzieren, wenn zu oft von bzw. in den idle Modus gewechselt wird.
    zurück ans Reißbrett :-)

    Quote from angryking

    Nö, es ist so, dass ich im gesamten Emu gar nichts schreiben kann, auch in keinem Dialog Feld. Meine Tastatur ist nirgends verfügbar. Alles tot.

    der direct input Treiber gilt nur als initialisiert wenn Maus und Keyboard ok sind. Möglicherweise lag es bei dem Rechner an der Maus und nicht am Keyboard. Ich habe es derart umgebaut, dass er auch als initialisiert gilt, wenn eines der beiden Geräte nicht erkannt wurde. Außerdem loggt er an kritischen Stellen. Könntest du bitte die Version aus dem Anhang dieses Postings mit dem Treiber Direct Input 8 nochmal testen. und mir den Eintrag im log file zukommen lassen. Es befindet sich unter user/AppData/Roaming/denise/log.txt.
    Anhang: musste zip in 3 parts splitten und umbenennen, da der uploader zip als suffix erwartet. zum Entpacken alle 3 Dateien derart umbenennen: Denise.001.zip in Denise.zip.001


    Quote from pastors

    Mir ist noch aufgefallen, wenn Denise minimiert in der Taskleiste ausgeführt wird, dann stockt der Sound.

    Mit Stocken meinst du stoppen oder klingt verzehrt? Unter Einstellungen gibt es eine Option "pausiere Emulator bei Fokus Verlust". Damit sollte er minimiert schweigen.


    zum Thema Cpu Nutzung schreibe ich gleich was. (wird mehr)

    Quote

    Ah Ok, greift also auf die OS Layouts zu. Dachte, das wären interne Emulator Settings.

    beides. Buchstaben und Zahlen vom OS. Deswegen sind y und z nur vertauscht, wenn das layout im OS umgestellt wird. Alles andere wird im Emulator über scancodes geregelt. scancodes beschreiben die Position (layout unabhängig) der Taste, nicht die eigentliche Beschriftung. Das französische azerty layout ist ziemlich umständlich. Zahlen werden dort mit gedrückter shift Taste ausgelöst.

    Vorallem das Keymapping ist ein ziemlicher krampf. Bis ich die '*' Taste auf die linke Umschalttaste gelegt hatte

    Wenn man auf das bestehende mappt, wird es ergänzt. Nach maximal 4 mappings wird automatisch gelöscht.
    Wahrscheinlich erwarten hier die meisten, das es das Bestehende ersetzt.
    Um nicht 3 sinnlose mappings durchzuführen, kann die Löschen Funktion verwendet werden.

    Quote from angryking

    Nö, es ist so, dass ich im gesamten Emu gar nichts schreiben kann, auch in keinem Dialog Feld. Meine Tastatur ist nirgends verfügbar. Alles tot.

    seltsam. Unter dem Schnelltasten List Feld alle Eingabe Treiber probiert? Irgend ein besonderes Tastatur Modell ?



    Quote from angryking

    Weiter fällt mir auf, der Emu verbrennt fast meine CPU, selbst im Leerlauf.

    Wenn im System Menu das Feature "Sid Hazard" aktiviert ist, verbraucht er besonders viel power. Außerdem verbraucht er in diesem Modus Ressourcen selbst im Leerlauf, weil der thread dafür nicht gestoppt wird. Das muss ich noch ändern.
    Sid Hazard kostet unproportional viel Mehr Leistung in Bezug auf den praktischen Gewinn. Ist wirklich kaum zu empfehlen für die allgemeine Nutzung.


    Bei allen, die den emu das erste Mal benutzen, also noch keine settings Datei existiert, wird für das englische keyboard layout automatisch gemappt. Ich hab keine zuverlässige Plattform unabhängige Möglichkeit gefunden, das im OS eingestellte Tastatur layout auszulesen.


    Quote from Retro-Nerd

    Mir ist nur aufgefallen das die UK/US/FR Layouts nicht die korrekten Tasten, die sich vom DE Layout unterscheiden, belegen. Ist irgendwie alles das DE Layout.

    das funktioniert nur richtig, wenn du im OS das entsprechende keyboard layout nach installierst und aktivierst. Ich habe zum Test in Linux,Windows und OSX jeweils alle 4 layouts eingespeichert. Das zu Testen war ein Krampf.

    entweder beim mapping beide Tasten zugleich drücken oder das Element zweimal mappen.
    mit dem und/oder button kann danach entschieden werden ob beide Tasten gedrückt werden müssen oder eine von beiden.
    nach jedem remapping werden die Elemente neu sortiert mit dem Ziel das eine längere "und" Kombination (max. 4 Tasten) keine kürzere mit auslöst.

    1.0.3
    -----
    added more control port devices
    - mouse 1351, mouse neos, paddles, magnum light phaser, stack light rifle, inkwell lightpen, stack lightpen
    - dual Gun Sticks support
    - multi mice support [windows raw input driver only at the moment]
    - fast swap of connected control port devices


    keyboard auto assignable [free assigning of single keys is still possible]
    - french, german, uk and us keyboard layouts supported
    - macOS keyboard layouts supported
    - virtual keys added [means: single key triggers key combination of emulated keyboard ]


    savestate support
    - save/load your program at any position ( even possible while disk/tape is loading )
    - method 1: standard save/load file dialog
    - method 2: hotkeys for save / load / slot up / slot down
    - assign save slots per game
    - Note: hotkeys can be assigned not only to keyboards


    added custom ic logic (C64C)
    french translation added
    - thanks Ben


    bugfixes
    [sid] fixed osc3 register read
    [sid] accidently delayed Triangle/Sawtooth output for 6581 instead of 8580
    [via] reworked shift emulation: fixes vmax4 galaxian thunder mountain


    https://sourceforge.net/projects/deniseemu/files/v%201.0.3/


    Ich habe neben dem win64 build ein macOS build hinzugefügt.

    Einfach gesagt wird bei der Methode nach jeder emulierten scanline die Grafikhardware bemüht diese darzustellen. Normalerweise wird ein frame voll berechnet und anschließend an
    die Graka gesandt.
    cooles feature, keine Frage. Möglicherweise verschiebe ich die Prioritäten nochmal.
    Ja ich stelle für meine Ati im Catalyst Control Center für pal emulation auf 50 Hz um. Ich habe 2 Monitore die jeweils 50 Hz vertragen.
    Ich reagiere allergisch auf tearing. Schon vor 15 Jahren habe ich erst den emulator mit einem game, von dem ich weiß das es sauber scrollt, geeicht.
    Auf einem crt Monitor habe ich mit einem tool wie powerstrip 59,94 Hz für ntsc eingestellt. Diese Fein Justierungen sind heute auf LCD's nicht mehr möglich.
    Deswegen kommen features, wie 'dynamic rate control' und 'beam racing' ins Spiel.
    Wenn ich das richtig verstanden habe, ist es bei der beam racing Methode nicht mehr nötig 50 Hz für pal einzustellen um sauberes scrolling zu bekommen.
    Alles zu seiner Zeit. Jetzt baue ich erstmal die savestates fertig. Die Grundfunktionen gehen vor.

    Stimmt im Vollbild nerven die schwarzen Balken auf einem 16:9
    Da fällt mir ein der Autor von higan hat den Typen, welcher das beam racing "erfunden" hat, komplett ignoriert. Der hat ihn fast angefleht, das in higan einbauen zu dürfen.
    Ich muss doch mal schauen was da nun raus gekommen ist.

    Über die Beam Racing Methode habe ich gelesen, angeblich nur 5 % Geschwindigkeitseinbuße. Klingt auf jeden Fall interessant. (vsync ohne vsync)
    gsync oder freesync sollte auch ohne aktiviertes vsync perfektes scrolling liefern. Jedoch habe ich keinen solchen Monitor.
    vsync ist der größte input lag Verursacher. Die Bildschirm Wahl hat hierauf auch Einfluss.


    Kommandozeilen support ist sicher auch noch ein Thema.

    Als ich den Quellcode von higan durchgeschaut habe, entschied ich mich die png overlays nicht zu übernehmen. Ich dachte die wären nur für handhelds interessant. Ok gut zu wissen, das jemand so nostalgisch unterwegs ist.
    Ja exclusives Vollbild existiert für OpenGL nicht. In diesem Modus ist die Windows UI Schicht komplett ausgeblendet. Context Menu, Haupt Menu, Einstellungs Fenster sind nicht mehr zu erreichen. Es muss erst wieder in die Windows Ansicht zurückgeschalten werden.
    D3D ist unter Windows erste Wahl würde ich sagen.
    Die cg shader, welche RetroArch verwendet, sollten auch in D3D funktionieren. die Higan shader (glsl) sind exclusive für OpenGL.

    keinen Schimmer mehr, warum die bml extension nicht erkannt wird. Ich fixe das im nächsten release.


    Zudem wird noch die Option: Anzeige Bildschirm x2, x3, ... benötigt.
    Einige shader erwarten das die Bildgröße 2 hoch N ( a power of two) ist. Aktuell läßt sich die Bildgröße nur durch Ziehen am Fensterrand verändern.

    Hallo,


    danke, ich werde das Projekt mal etwas näher beleuchten indem ich die Reihenfolge der künftigen Arbeitschritte einordne.


    next release 1.0.3: (Januar)
    ----------------------
    [1] automatische Tastatur Layout Zuweisung (c64, amiga)
    - us, uk oder german layout auswählbar (später mehr, Interesse abhängig)
    - mac Tastatur Unterschiede werden berücksichtigt
    - dennoch alles frei konfigurierbar
    - virtuelle Tasten werden unterstüzt: z.b. hat der C64 nur 2 Richtungstasten runter und rechts)
    links und oben müssen mittels shift aktiviert werden. Aktuelle Tastaturen haben alle 4 Richtungstasten.
    Eine Taste kann somit auf dem emulierten System eine Kombination auslösen.


    [2] C64 Maus 1351, Maus Neos, Magnum Light Phaser, Stack Light Rifle, Gun Stick, Inkwell Lightpen, Stack Lightpen, Paddles Unterstützung
    - damn, ich habe hieran fast 2 Monate verbraten. Schließlich soll es auf den 3 wichtigen Betriebsystemen funktionieren.
    - windows raw input Maus Treiber habe ich in diesem Zuge multi mice support spendiert. Light guns/pens können am
    c64 nur in port 1 betrieben werden. Ausnahme sind die Gun Sticks, welche dual verwendet werden können.
    Es ist also möglich 2 Mäuse mit diesem Treiber zu mappen.
    - analog Joypads können ebenso verwendet werden. Jedoch sind diese nicht so präzise wie eine Maus. Die Qualität der Analog Achsen
    schwankt mit dem Preis des Joypads.
    - für light gun/pen emulation kann auch der Windows Mauszeiger direkt verwendet werden. Dies hat den Vorteil das der einfach weicher
    läuft als der selbst berechnete. Die Beschleunigung des Windows Mauszeiger läuft wie gewohnt über Bord Mittel des Betriebssystemes.
    Die Beschleunigung des selbst berechneten kann angepasst werden (unter Menupunkt: Schnelltasten)


    [3] snapshots (arbeite ich aktuell dran)
    - Spielstände an beliebiger Stelle generieren und laden.
    - es wird eine portable Spielstand Datei und eine nicht portable Pfad Datei geben.
    in der Pfad Datei sind die Pfade der verwendeten Disketten / Kasetten / Modul Abbilder enthalten.
    Bei Vorhandensein dieser optionalen Pfad Datei versucht der Emulator die Abbilder einzulegen bevor er den Spielstand einlädt.
    Grundsätzlich könnte somit während des Lade Prozesses gespeichert werden. Fehlt die Pfad Datei oder sind die Pfade nicht mehr
    gültig können die Abbilder immer noch manuell eingelegt werden. Sind keine Abbilder eingelegt, ist das auch kein Problem solange
    nicht nachgeladen werden muss.
    - Limitation: Es kann auch gespeichert werden, wenn der Emulator auf Diskette / Kasette schreibt. Um die snapshots klein zu halten, sind
    jedoch keine vollständigen Abbilder enthalten. In dem Fall würde das spätere Laden des Spielstandes das Abbild nicht zurücksetzen. Es würde
    das geschrieben werden was bereits geschrieben ist. (physischer Schreibvorgang findet statt, wenn der Emulator den Track wechselt )


    [4] openal Treiber mit deployen
    - openal ist typischer weise nicht beim Endanwender installiert.
    es sollte legal sein die dynamic libraries mit auszuliefern.


    [5] Fehlermeldung einblenden, wenn bios Dateien nicht vorhanden sind
    - Ich weiß die anderen c64 Emulatoren liefern diese mit aus.
    Von der Rechtslage her sind diese abandonware, heißt dem Rechteinhaber ist es Latte.
    Das kann sich aber ändern, gerade jetzt wo so viele neue c64 games enstehen.
    Ich habe Bedenken später deswegen eine auf'n Deckel zu kriegen. ... hmm


    release 1.0.4:
    --------------
    [1] refactoring aller bestehenden audio Treiber
    - das scrolling des selbst berechneten Mauszeiger ist unter Linux/Osx etwas ruckig. Das liegt hauptsächlich daran,
    das der audio Treiber die Anwendung in unregelmäßigen Abständen blockiert.


    [2] dynamic frequency correction
    - das feature ist in RetroArch zu finden. Hierbei korrigiert der Emulator ständig das Verhältnis zwischen eingehenden und
    ausgehenden Frequenzen. Somit ist ein perfektes scrolling möglich. Mittels vsync und audio sync läßt sich bei korrekter
    Bildwiederholfrequenz (50 Hz bei pal) ein flüssiges scrolling erreichen. Das Bild scrollt etliche Sekunden korrekt und plötzlich
    ist ein kurzes Zucken zu erkennen. Das liegt daran, das es nicht exakt 50 Hz bzw. 60 Hz sind. Die Werte aktueller Bildschirme stimmen
    nicht 100% mit denen von Röhren überein. Zudem enstehen Last-Schwankungen, verursacht durch das Betriebssystem und anderer parallel
    zum Emulator laufender Software.
    Im Sinne der Frequenz Korrektur wird ständig geprüft wieviel samples im audio Puffer noch nicht abgespielt wurden. Der Audio Treiber
    spielt jedes sample mit einer bestimmten Dauer (entsprechend der sample rate) ab, bevor er das nächste aus dem Puffer holt.
    vsync blockiert den Emulator solange bis die Zeitdauer für die Anzeige eines Bildes abgeschlossen ist.
    audio sync blockiert den Emulator damit die sample rate eingehalten wird.
    Die exakte emulation generiert die Anzahl samples, welche der Frequenz der damals verwendeten Röhren entsprechen.
    Dadurch arbeiten vsync und audio sync geringfügig gegeneinander.
    Anschließend gelangen die samples in einen resampler, welcher diese auf die finale sample rate wandelt. (44100 Hz in der Regel)
    Durch das Wissen wieviel samples noch abgespielt werden müssen, kann das Verhältnis ständig korrigiert werden.
    Unterm Strich bedeutet das, das die emulation 1% - 2% schneller/langsamer läuft als das original um die Frequenz Unterschiede
    zu aktuellen Monitoren zu überwinden. Diese Geschwindigkeitsänderung sollte für einen Menschen nicht spürbar sein. Dafür
    bekommt man auch über den gesamten Zeitraum ruckelfreies scrolling.


    [3] frei auswählbare und vordefinierte Farb Paletten für den c64


    release 1.0.5:
    --------------
    [1] RetroArch shader support


    Aktuell werden glsl shader und native directx shader unterstüzt.
    Zudem werden die manifest Dateien der higan shader library unterstüzt. (wenn manifest.bml in manifest umbenannt wird)
    Es ist kein Problem einzelne Shader einzubinden, wenn die shader Version zur opengl Version passt.


    Emulatoren wie Higan oder RetroArch verwenden hingegen shader, welche aus multiplen shader Typen bestehen.
    (fragment, geometry, vertex, pixel shader)
    Zudem werden bestimmte presets definiert um den shader zu parametrisieren. Das ist nicht
    allgemein gültig, sondern Emulator individuell. Sogenannte manifest Dateien steuern dies.
    Ich möchte cg Shader Unterstützung hinzufügen. cg Shader funktionieren für opengl und directx gleichermaßen.
    Zudem möchte ich die manifest Dateien von RetroArch unterstützen. Somit wird die gesamte RetroArch
    shader library anwendbar sein, hoffe ich :-)


    release 1.0.6:
    --------------
    Vermutlich werde ich zu diesem Zeitpunkt die amiga emulation vorantreiben. Ich habe vor ca. 5 Jahren eine
    erste amiga emulation fertig gestellt. (nicht veröffentlicht) Die Qualität reicht jedoch nicht an die jetzige c64 emulation heran.
    Es wird alles von Grund auf neu programmiert.
    In Sachen c64 liegt der Fokus klar auf dem Expansionsport.
    easy flash, super cpu, REU
    gefolgt vom user port:
    speed dos, 4 player adapter ...


    Da gibt es etliche Erweiterungen für den c64. Was ist da im Interessantesten?