Hello, Guest the thread was called113k times and contains 1945 replays

last post from AW182 at the

Denise 1.0.x Emulator

  • Wird der C128 noch kommen?

    kurze Antwort: nicht durch mich

    lange Antwort:

    Ich ziehe meine Motivation für dieses Projekt aus Erinnerungen mit dem C64/Amiga. Zum C128 habe ich keinen Bezug und die Software dafür macht es nicht besser. Zudem fehlt mir einfach die Zeit.


    Denise ist von Anfang an als Multi Emulator konzipiert. Jedoch will ich das bei weitem nicht in dem Stil wie RetroArch betreiben und mich auf Computer anstatt Spielkonsolen fokussieren.

    Ein Emulator Interface generiert die grafische Nutzer Oberfläche. Natürlich stößt das Konzept schnell an Grenzen, da jedes System individuelle Elemente enthält. Vieles an Arbeit, wie das Verwalten von Disketten, Emulator Optionen, PAL Konfigurationen, Border, Memory Init Pattern, Firmware, ... trifft auf jeden Computer gleichermaßen zu und kann somit schnell und automatisiert generiert werden.

    Um zum Ende zu kommen, nach der Amiga Emulation des Grundgerätes möchte ich das obige Konzept soweit stehen haben, das Interessierte neue Kerne hinzufügen können. Zum warm werden vielleicht einen C16 Kern.

    Das wäre die einzige Chance außer C64/Amiga 500/Amiga 1200 weitere Emulatoren in Denise zu präsentieren.


    Ich glaube, wir "müssen" deswegen Erkenntnisse austauschen. Wenn Du das hinbekommen hast, must Du ja zwangsläufig über MFM auf Disketten recht viele Erkenntnisse haben... ich brauche Infos wegen Implementierung in g64conv...

    Ich habe das halbe Atari Forum durchgelesen. Im Atari wird der WD1772 verwendet und somit im Zusammenhang mit kommerzieller Software und Kopierschützen. Sag einfach was du genau brauchst.

    Grundsätzlich gibt es nur 3 MFM Patterns, die der Controller liest/schreibt.

    101 -> 4 micro

    1001 -> 6 micro

    10001 -> 8 micro

    Das gilt für alle Tracks. Speedzonen gibt es nicht. Um Bit Shifting auf den inneren Tracks zu verhindern und somit die Langlebigkeit der Disks zu erhöhen, verwendet der Controller Write Precompensation.

    Hierbei wird der Flusswechsel je nach eingehendem Bitmuster um 128 nano nach recht oder links verschoben.


    Der Controller sucht nach Sync Pattern 0xA1 und 0xC2 mit fehlendem Clock Bit. Nur dadurch kann bei den folgenden Daten sicher gesagt werden ob er gerade ein Daten oder Clock Bit liest.

    Code
    1. data 0xA1 1 0 1 0 0 0 0 1
    2. MFM sync 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 ?
    3. - (removed clock bit)


    Das fehlende Clock Bit erzeugt ein pattern, was niemals aus Daten erzeugt werden kann. Somit kann das Sync Pattern nicht zufällig in den Sektor Daten fälschlicherweise gefunden werden.

    Das gilt aber nicht für 0xC2.

    .....

  • Mir ist dazu nur https://en.wikipedia.org/wiki/Modified_frequency_modulation bekannt, was allerdings als Basis hoffentlich einigermaßen brauchbar ist.


    Um besser argumentieren zu können, versuche ich mal eine Analogie zu GCR. Mit dem Wikiartikel hätte man dann die einzelnen Bits am Rauströpfeln, wobei neben 0 und 1 auch der Wert "syncmark" vorkommen kann (in A1 das Bit, wo das Clockbit auf 0 statt auf 1 steht). So weit so gut. Und dann hört mein Wissen auf.


    Analog zum GCR müsste man daraus ja Sektorheader und Sektordaten extrahieren sowie Prüfsummen berechnen und prüfen... und im Idealfall (nein, eigentlich für ein universelles Tool notwendig) die Sektorgröße erkennen... kann ja verschieden groß sein. Was im Wesentlichen einer Formatbeschreibung des "Sektors" bedarf (also raw, nicht auf Nutzdatenebene).


    Und ganz wichtig: Welche Fehler kann der in der 1570/1571/1581 eingesetzte Controller liefern... während ich alles andere eher allgemein für MFM behandeln möchte, muss man an der Stelle wohl doch auf konkrete Fehler zurückgehen - die U2+/U64 wird die bei der 1571 wohl nur durchschleusen, und Du hast ja die selbe G71 Erweiterung...


    PS: Ich gehe davon aus, dass die von Dir o. g. Zeiten für Double Density sind, für High bzw. extra density sind andere Zeiten anzunehmen.


    Nachtrag: Ich sollte hier noch zwei oder drei MS-DOS formatierte 5,25" DD Originale haben (Buchdisketten von Data Becker und anderer Verlag) - damit könnte icg die Dekodierung dann ja gegentesten. Muss ja dasselbe rauskommen wie Kryoflux's dtc.exe liefert...


    Nachtrag 2: Alternativ habe ich aber auch noch einen Kryofluxdump der 1581 Test-/Demodiskette... auch den müsste man dekodiert bekommen... mit evtl. anderen Zeiten.

  • nightly (das aktuellste, Beschreibung '...Win7' ignorieren)


    - ungarisch Übersetzung


    - Load ":*" unter Sonstiges als Option zuschaltbar. (wenn zugeschalten bleibt Regel, dass Load "*" verwendet wird, wenn erste Datei kein PRG ist, bestehen)


    - Option unter Sonstiges um bei einem Doppelklick auf ein Disk image oder eine Datei im Disketten Vorschaufenster den virtuellen Autostart auszulösen.


    - im Disk Vorschau Fenster ist die Auswahl Zeile nun im C64 Look. Deaktivierbar unter den globalen Einstellungen.


    - Slider zur Steuerung der Trägheit des Schrittmotors (experimentell, nur für bestimmte User und VICE Testbench... bringt keinen Mehrwert für D64 Programme, erhöht nur die Gefahr, dass was nicht funktioniert)


    - in der Ansicht zur Konfiguration von nicht initialisiertem Speicher sind Buttons für schnelles Wechseln von Standard Profilen. Alle bekannten Programme, die davon abhängig sind, laufen mit der einen oder

    anderen Konfiguration.


    - Controller Eingaben werden nun auch angenommen, wenn das Emu Fenster keinen Fokus hat bzw. nicht on Top ist. Für Tastatur Eingaben wird weiterhin Fokus benötigt.

    Wer das nicht möchte, hat 2 Möglichkeiten: entweder den Hotkey zum Pausieren der Emulation oder die globale Einstellung zum automatischen Pausieren des Emulators bei Fokus Verlust.


    - Just In Time Polling (JIT)

    Dies ist nun Standard mäßig aktiviert. Deaktivierbar unter dem Tab Sonstiges.

    Folgendes wird aus PAL Sicht beschrieben.


    bisheriges Polling:

    Aller 20 ms werden immer an der gleichen Position zwischen 2 Bildern sämtliche Eingaben aller aktiven Geräte geprüft.


    JIT:

    Hier entscheidet die Software, wann geprüft wird. Fragt das Programm z.B. auf Zeile 100 die Eingabe ab, werden direkt davor alle Geräte auf Änderungen geprüft.

    Auf diese Weise vergeht mehr Zeit und ein möglicher Tastendruck kann noch erfasst und in diesem Frame registriert werden. Beim normalen polling würden jetzt weitere 20 ms vergehen,

    bis der Tastendruck von der Software registriert wird.

    Zudem kann nun mehrfach pro Frame ein veränderter Eingabe Zustand erkannt werden. Der Slider "Mindest Wartezeit zwischen Eingabe Abtastungen" regelt, wieviel Zeit zwischen 2 Abtastungen mindestens vergehen muss.

    Es gibt wohl Controller mit einer polling Rate von einer Milli Sekunden. Für solche Controller sollte der Slider entsprechend niedriger eingestellt werden um einen Vorteil daraus zu ziehen.


    Synchronisationsquelle für JIT:

    Damit JIT Sinn macht, ist es nötig nach einigen Bildzeilen zur Echtzeit zu synchronisieren. Z.B. reicht es nicht aus, nur VSYNC zu verwenden.

    Das Bild würde in 1 oder 2 ms gebaut und im Anschluss durch VSYNC 18 ms gewartet werden. Das hätte den gleichen Effekt, wie ein deaktiviertes JIT, da viel zu wenig Zeit zwischen den Bildzeilen vergeht.

    Mindestens Audio Sync ist dringend notwendig für JIT. Der Audio Puffer wird mehrere Male pro Frame an den Audio Treiber übergeben und gewartet bis wieder Platz ist, somit vergeht die richtige Menge Echtzeit.

    Um die Anzahl Bildzeilen, nach denen zur Echtzeit synchronisiert wird, zu verkürzen und somit die Effizienz von JIT zu steigern, sollte unter dem Tab Audio das "SID Sample Intervall" reduziert werden.

    Bei einem Intervall von 1 wird ca. aller 4 Bildzeilen zur Echtzeit synchronisiert.

    Bei einem Intervall von 18 wird ca. aller 70 Bildzeilen zur Echtzeit synchronisiert.

    Ein niedriges Sample Intervall verbessert neben der Audio Qualität auch die Effizienz von JIT und ich vermute es sorgt bei FreeSync Monitoren (ohne VSYNC) für weniger Schwankungen in den FPS.

    Später wird Beam Racing eine alternative Synchronisationsquelle für JIT.

    Sicherlich bringt JIT nicht soviel wie runAhead, verbraucht aber so gut wie keine zusätzlichen Ressourcen.


    JIT und runAhead (RA):

    Äußerst schwierig zu beurteilen, ob JIT das Ergebnis hier verbessert oder nicht.

    Aus meiner Sicht sind beide Techniken nicht gut kombinierbar. JIT sorgt zwar dafür, das die Eingabe Geräte näher an der tatsächlichen Raster Position erkannt werden aber das angezeigte Bild ist bei RA der Zustand,

    welcher aus der Eingabe einiger frames in der Vergangenheit entstanden ist. Das bedeutet, dass das Frame wo JIT eigentlich seine magic ausspielen müsste, un-gedrosselt berechnet wird, da dies nicht das Anzeige Bild ist.

    Aus diesem Grund gibt es unter Sonstiges im Bereich 'RA' eine neue Checkbox: 'JIT unterdrücken bei aktivem runAhead'. (Default: aktiviert)

    Auf diese Weise muss JIT nicht ständig deaktiviert werden, wenn RA aktiviert wird und umgekehrt. Ein aktives JIT läuft also immer nur dann, wenn RA inaktiv ist.

    Möchte man JIT für RA nutzen, sollte der Haken entfernt werden.


    weitere Vorteile durch JIT:

    Es gibt sogar Programme, deren korrekte Emulation von JIT abhängig ist. (extrem selten sowas)

    WWF2 (Anmerkung: zumindest eine Version ist von einem bestimmten Ausgangszustand des Arbeitsspeichers abhängig, läuft also nicht auf jedem C64 )

    Dieses Programm hat kein Problem, wenn es ohne Speeder geladen wird.

    Bei verwendetem Jiffy allerdings kommt es vor, das nach dem Titel Bild und der Player Auswahl nicht weitergeladen wird. Der Motor wird einfach nicht mehr eingeschalten.

    Gegengetestet auf einem echten C64 mit echtem Laufwerk(+Jiffy) fällt auf, dass in ca. 7/10 Versuchen erfolgreich weiter geladen wird.

    Es hängt hier vom Timing des Tastendruckes ab. In Denise ohne JIT klappt es nur selten.

    Mit JIT verhält es sich wie auf dem Original. In VICE funktioniert das auch korrekt. In HOXS funktioniert es zu oft.

    Wenn ich Denise minimiere, kommt es hin und wieder vor, dass der Ton glitcht und das Audio total distortet ist.

    Maximiere ich Denise wieder, ists wieder ok und schicke ich es dann wieder in den Tray, bleibts auch einwandfrei.

    ich schaue mal.

  • - Option unter Sonstiges um bei einem Doppelklick auf ein Disk image oder eine Datei im Disketten Vorschaufenster den virtuellen Autostart auszulösen.


    Kurz zur Funktion "Doppelklick im Datei Dialog startet per Virtual Device Traps" noch folgendes. Damit kann man quasi jetzt festlegen, ob man standardmäßig mit den Virtual Traps, also ganz schnell, laden will oder nicht. Aktiviert man dies im Menue "Sonstiges", dann macht der Doppelklick auf ein d64, oder auch der Doppelklick auf ein File innerhalb eines d64-images, das, was auch der "VDT Autostart" Klickbutton im Multi-Loader macht, nämlich, ein File mit den Virtual Device Traps extrem schnell zu laden.


    Alternativ-Lademöglichkeit ist dann immer der "Autostart" Klickbutton im Multi-Loader, wenn beispielsweise eine Software nicht richtig mit den Virtual Traps funktioniert (sehr selten, aber kann vorkommen). Dann markiert man solch ein File und klickt auf den "Autostart" Button und es wird normal geladen, oder mit Speeder-Kernel oder mit AutoWarp, wie man es eben bei sich eingestellt hat.


    Hat man diese neue Funktion nicht aktiviert, dreht sich das Verhalten um und es ist so, wie es bisher immer war. Dann macht der Doppelklick das, was der "Autostart" Klickbutton im Multi-Loader macht und will man dann aber dennoch einmal etwas mit den Virtual Device Traps laden, also hier dann die Alternativ-Lademöglichkeit nutzen, dann markiert man das zu ladende File und drückt dann den "VDT Autostart" Button.


    Somit kann es sich jeder ganz nach Wunsch einstellen und man hat dennoch immer beides direkt klickbereit. Bei mir sind nun die VDT, aufgrund der sehr schnellen Ladezeit gepaart mit ihrer hohen Kompatibilität (normaler Kernel bleibt aktiv), auf den Doppelklick gelegt, der meine gewohnte Art ist, Files im Emu zu starten. Sollte in seltenen Fällen mal was nicht damit laufen, kommt der "Autostart" Klickbutton zum Einsatz.

  • Was ich im letzten Eintrag noch vergessen hatte zu erwähnen - auch für User die "Drag and Drop" bevorzugen statt dem Doppelklick, kann man "Virtual Device Traps" standardmäßig dafür aktivieren und zwar hier im Software Menue





    Was nun auch möglich ist mit dem Denise, da das Emu-Fenster keinen Fokus mehr benötigt, um darin mit einem Controller lenken zu können, das sind so schöne Sachen wie:


    - zwei User können an einem PC, in zwei zugleich laufenden Denise Emu-Fenstern, verschiedene Spiele zur gleichen Zeit spielen. Man muss nur verschiedene Controller in beiden Emulatoren auswählen. Besonders gut zu nutzen, wenn man dazu auch noch zwei Monitore dranhängen hat.


    und


    - man kann schöne Tests machen mit dem RunAhead undsoweiter, indem man mit demselben Joystick in beiden Emu-Fenstern zugleich das gleiche Spiel lenkt und sich den gelenkten Spielersprite und dessen Position am Screen dann ansieht und vergleicht, einmal mit RA und einmal ohne usw. Ganz wie man will.

  • sehr viel aber die Zeit habe ich dafür noch nicht.

    Wenn es das Feature in Denise geben würde und in keinem anderen Emulator würden wahrscheinlich einige Leute mehr Denise ausprobieren, die das aktuell noch nicht getan haben. Aus dieser Perspektive könnte es Sinn machen, das Feature vorzuziehen.

  • - 1541C Emulation läuft nun. Aufgrund der Drive Sound Emulation hört man gut, dass der Track Zero Sensor funktioniert. Der gefürchtete :-) Kopf Anschlag bleibt aus.


    - JAM in Status Zeile. Nun werden Software Fehler, wo nur noch ein Reset hilft in der Status Zeile angezeigt. Es lohnt also nicht noch zu warten in der Hoffnung, dass sich das Programm wieder fängt. Laufwerks CPU JAM's werden mit Benennung des Devices (8,9,10,11) von C64 CPU JAM's unterschieden. Ein JAM der Laufwerks CPU muss nicht das Ende bedeuten.

  • Eben ein bisschen mit den neuen Floppy-Sounds im Denise herumgespielt. Standardmäßig höre ich die gar nicht im Denise, weil dort immer mein AutoWarp für schnelleres Laden aktiviert ist, aber ich wollte es einfach mal ausprobieren, wie das so klingt. Hört sich auf jedenfall witzig und ziemlich realistisch an, vor allem wenn man Tools wie den Disk-Exerciser (Disk Head Corrector) durchlaufen lässt oder eine Diskette formatiert. :)


    Eine Sache fiel mir noch auf, weiß nicht ob das so gehört? Wenn man mit JiffyDOS eine Diskette schnellformatiert per @N: Befehl im BASIC, dann hört zwar die Floppy-LED, wenn der Vorgang beendet ist, nach ein paar Sekunden auf zu blinken und der Trackzähler bleibt dann auch stehen, man hört aber dieses leise Schleifgeräusch der Floppy dann noch und das hört auch nicht wieder auf, obwohl die Formatierung an sich schon längst fertig ist und auch funktioniert hat. Mangels eines echten JiffyDOS kann ich es nicht nachstellen auf echter Hardware, ob es da auch so ist. Aber vielleicht kann das mal jemand überprüfen?

  • Standardmäßig höre ich die gar nicht im Denise, weil dort immer mein AutoWarp für schnelleres Laden aktiviert ist, aber ich wollte es einfach mal ausprobieren, wie das so klingt.

    Wie wäre es hiermit? :whistling:


    Oh, Denise, dooby doo

    I'm in love with you

    Denise, dooby doo

    I'm in love with you

    Denise, dooby doo

    I'm in love with you

    Denise, Denise

    Oh, with your eyes so blue

    Denise, Denise

    I've got a crush on you

    Denise, Denise

    I'm so in love with you

    Oh, when we walk

    It seems like paradise

    And when we talk

    It always feels so nice

    Denise, Denise

    I'm so in love with you

    Your my dream and I'm in heaven

    Every time I look at you

    When you smile it's like a dream

    And I'm so lucky

    'Cause I found a girl like you

    Oh, Denise, dooby doo

    I'm in love with you

    Denise, dooby doo

    I'm in love with you

    Denise, dooby doo

    I'm in love with you

    Denise, Denise

    Oh, won't you hold me tight

    Denise, Denise

    Oh, can we kiss goodnight

    Denise, Denise

    I'm so in love with you

    Oh, Denise, dooby doo

    I'm in love with you

    Denise, dooby doo

    I'm in love with you

    Denise, dooby doo

    I'm in love with you

    Denise, dooby doo

  • Eine Sache fiel mir noch auf, weiß nicht ob das so gehört? Wenn man mit JiffyDOS eine Diskette schnellformatiert per @N: Befehl im BASIC, dann hört zwar die Floppy-LED, wenn der Vorgang beendet ist, nach ein paar Sekunden auf zu blinken und der Trackzähler bleibt dann auch stehen, man hört aber dieses leise Schleifgeräusch der Floppy dann noch und das hört auch nicht wieder auf, obwohl die Formatierung an sich schon längst fertig ist und auch funktioniert hat. Mangels eines echten JiffyDOS kann ich es nicht nachstellen auf echter Hardware, ob es da auch so ist. Aber vielleicht kann das mal jemand überprüfen?

    nicht nötig, das funktioniert mit Motor Abschaltung.

    Du hast sicherlich "Disk Emulation bei Bedarf" aktiviert. Die Disk Emulation wird deaktiviert, wenn eine zeit lang keine Kommunikation zwischen Laufwerk und C64 statt findet.

    Beim Formatieren übergibt der C64 den Befehl einmalig an die Floppy und kümmert sich nicht mehr darum. Der Nutzer hört ja am Motor Geräusch bzw. LED, wann fertig.


    Nachtrag: Die Dauer ohne Kommunikation bis zur Abschaltung der Floppy Emulation ist in der Regel lang genug um nach dem Laden von Programmen noch die Motor Abschaltung mitzubekommen.


  • Welches Medikament hattest du da überdosiert eingenommen? *lol* :P


    nicht nötig, das funktioniert mit Motor Abschaltung.

    Du hast sicherlich "Disk Emulation bei Bedarf" aktiviert.

    Ah okay, damit hängt das zusammen. Nachdem "Disk Emulation bei Bedarf" deaktiviert war, schaltet es dann korrekt ab, eben mal ausprobiert. Wundert mich etwas, dass es bei einem normalen Formatieren ohne Jiffy, auch dann korrekt abschaltet, wenn die Funktion "Disk Emulation bei Bedarf" aktiviert ist. Nur mit Jiffy schaltet es dann nicht richtig ab. Hängt das dann auch mit der Dauer der Kommunikation zusammen und weil die durch das schnellere Jiffy dann irgendwie verkürzt ist?

  • Wenn ich Denise minimiere, kommt es hin und wieder vor, dass der Ton glitcht und das Audio total distortet ist.

    freesync oder standard Monitor ?

    was alles aktiv? vsync, audio sync, DRC, FPS Limiter

    Fenster oder nur Vollbild ?

    wie oft passiert das gefühlt ?

    wie wird minimiert? per icon im Fenster?

    Möglichkeit bekannt das Problem gezielt auszulösen?

  • - an nem Fernseher

    - Optionen siehe Screenshot

    - Fenster

    - so ungefähr bei jedem 6., 7. mal

    - per _ im Fenster, manchmal passierts auch alleine dadurch, dass das Fenster den Fokus verliert (aber selten)

    - Nein, gezielt, also wirklich reproduzierbar durch Vorgehen xy ist es nicht... das ist ja das Dumme.


    Steck da auch nicht zu viel Mühe rein, ist mir halt mal aufgefallen. Wenns passiert, ist es nach minimieren, vergrössern, minimieren ja wieder ok.

  • Ich hatte eben die Denise Version 1.1.1 unter macos big sur 11.6 gestartet. Denise reagierte auf keine Tastatureingaben. Gibt es da was zu beachten?

  • @He-Man1982

    bei Sachen die sich schlecht nachstellen lassen, kommt man am Besten mit Ausschluss Verfahren weiter.

    Deaktiviere doch mal DRC und schaue ob das Problem sich dadurch löst.

    Den Stör Faktor könnte man dann beim Minimieren automatisch deaktivieren und natürlich wieder zuschalten, wenn die Anwendung hervor geholt wird.


    Ich hatte eben die Denise Version 1.1.1 unter macos big sur 11.6 gestartet. Denise reagierte auf keine Tastatureingaben. Gibt es da was zu beachten?

    Ja. Ab Catalina fragt eine App beim ersten Zugriff auf die Tastatur, ob man das erlauben möchte. Verweigert man dies, muss es nachträglich unter "Sicherheit" wieder erlaubt werden.

    Möglicherweise gibt es eine Möglichkeit, dass zu umgehen. Ich schaue mal.


    Man möchte den Nutzer so vor Keyboard logger schützen.

  • @He-Man1982

    bei Sachen die sich schlecht nachstellen lassen, kommt man am Besten mit Ausschluss Verfahren weiter.

    Deaktiviere doch mal DRC und schaue ob das Problem sich dadurch löst.

    Den Stör Faktor könnte man dann beim Minimieren automatisch deaktivieren und natürlich wieder zuschalten, wenn die Anwendung hervor geholt wird.

    Ich hab mir (nutze aktuell Win11, upgrade von Win10) eine "Desktop anzeigen" Verknüpfung auf den Desktop gelegt.

    Klicke ich die, kommt halt der Desktop hervor, klicke ich nochmal drauf, stellt es den vorherigen Screen wieder her, also in diesem Fall das laufende Denise. Hier kann ichs reprodozieren, egal ob die DRC an oder aus ist... Nach einigen Malen hervorholen/verstecken kommts zur distorted Audio.


    Edit: Nur ums erwähnt zu haben: Die geschriebenen WAV-Files sind aber einwandfrei, wenn das Problem auftritt. Diese sind also nicht beeinflust.