ThKattanek / emu64

C64 Emulator
https://www.thorsten-kattanek.de/index.php/projekte/emu64
GNU General Public License v2.0
37 stars 5 forks source link

C64 Fenster wird nicht erzeugt, FreeBSD 12.1 #192

Closed Zirias closed 4 years ago

Zirias commented 4 years ago

Hallo, ich habe hier einen Bugreport: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=245395 -- kann es selbst leider nicht nachvollziehen. Anhand der xwininfo Ausgabe sieht man, dass das Fenster wirklich komplett fehlt, und nicht etwa einfach versteckt (bzw unmapped) ist. Habe hier im Moment keine Idee, wo man suchen kann -- ich kann das Problem ebenfalls auf FreeBSD 12.1 nicht nachvollziehen.

Werde noch nach einem kompletten emu64.log fragen, vielleicht kann man damit eingrenzen, was schiefgeht.

ThKattanek commented 4 years ago

Mahlzeit :) Das C64 Fenster wird mittels SDL2 erzeugt und ist kein Bestandteil von Qt. Ich denke das beim erzeugen des SDL Window etwas schief läuft. Die Log könnte erstmal helfen. Eventuell muss ich das loggen etwas erweitern bzw verfeinern um den Fehler noch besser einzugrenzen. Aber schauen wir erstmal was er schickt evtl. reicht das ja schon.

Zirias commented 4 years ago

Log kopiert vom FreeBSD PR:

*** Emu64 FreeBSD Binary File ***

Emu64 Version: 5.0.18

>> Data Path = /usr/local/share/emu64
>> System Temp Path: /tmp
>> Emu64 Temp Verzeichnis existiert nicht und wird erstellt./tmp/emu64
>> Emu64 Temp Path: /tmp/emu64
>> Screenshot Path = /home/ingo/.config/emu64/screenshots
>> INI System wurde erzeugt: /home/ingo/.config/emu64/emu64.ini
>> INI System was created: /home/ingo/.config/emu64/emu64.ini
>> Sprachmenü wurde erstellt.de
>> Translator wurde installiert: Systemsprache = de
<< Ein RomSet-Verzeichnis ist nicht vorhanden
>> Ein neues RomSet-Verzeichnis wurde erstellt
>> romsetPath = /home/ingo/.config/emu64/romsets/
<< Das Screenshot Verzeichnis ist nicht vorhanden
>> Ein neues Screenshot Verzeichnis wurde erstellt
>> VideoPal Klasse wurde installiert
>> C64 Klasse wurde gestartet...
>> GfxPath = /usr/local/share/emu64/gfx/
>> SDL2 wurde installiert
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil1.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis1.png
>> SDL_Audio wurde installiert
     -Audio Driver: (null)
     -Audio Channels: 2
     -Audio Buffersize: 882
     -Audio Sample Bit Size: 16
     -Audio Sample Is Float: 0
     -Audio Sample Is Signed: 0
     -Audio Sample Is Little Endian: 1
>> SDL Subsytem Joystick wurde erfolgreich geoeffnet
<< SDL konnte keinen Joystick/Gamepad erkennen
>> InfoWindow wurde erzeugt
>> VideoCrtSetupWindow wurde erzeugt
>> FloppyWindow wurde erzeugt
>> TapeWindow wurde erzeugt
>> C64KeyboardWindow wurde erzeugt
>> CrtWindow wurde erzeugt
>> DebuggerWindow wurde erzeugt
>> SetupWindow wurde erzeugt
>> C64SpeedWindow wurde erzeugt
>> ShowC64KeyMapWindow wurde erzeugt
>> VideoCaptureWindow wurde erzeugt
>> SidDumpWindow wurde erzeugt
>> OscilloscopeWindow wurde erzeugt
>> Aktuelle Screenshotnummer wurde geladen
>> DebuggerWindow wurde mit C64 Klasse verbunden
>> C64SpeedWindow wurde mit C64 Klasse verbunden
>> CRT LED wurde mit CrtWindow verbunden
>> Alle C64 Roms geladen
>> C64 Key-Matrix wurde mit Virtual Keyboard verbunden
>> Tabelle für alle Floppy Laufwerke wurde erzeugt
>> Alle Floppy Lauferke in Tabelle eingetragen
>> SDL Window Close Event mit MainWindow verknuepft
>> C64Class LimitCycelsEvent mit MainWindow verknuepft
>> C64Class DebugCartEvent mit MainWindow verknuepft
>> ChangeFloppyImage Event mit MainWindow verknuepft
>> FloppyWindow LoadIni wurde ausgefuehrt
>> SetupWindow LoadIni wurde ausgefuehrt
>> CrtWindow LoadIni wurde ausgefuehrt
>> TapeWindow LoadIni wurde ausgefuehrt
>> C64 Tastatur Mapping aus INI geladen
>> Emu64 wurde initialisiert

>> Splashsreen wurde geschlossen.
>> C64 Emulation wird gestartet.
>> C64Thread wurde gestartet.
>> SDLThread Start.
>> SDLThread: InitGrafik Start.
    InitGrafik: Warten bis Vic-Refresh angehalten wurde.
>> SDL Audiostream wurde getartet.
>> C64 Emulation wurde gestartet.
>> Hardreset wurde ausgefuehrt.
ThKattanek commented 4 years ago

Ok! Es sieht so aus als ob kein Sound bei ihm läuft. Er hängt in der Warteschleife, wo er darauf wartet das kein VIC Refresh mehr ausgeführt wird. Dort kommt er nicht weiter. Die Emulation findet direkt im Audiostream statt um ein bestmögliche Latenz hin zu bekommen. Also wenn der Audiostream nicht läuft, läuft auch keine Emulation. Augenscheinlich läuft aber der Audiostream lau Log. Wobei ich noch mal schauen muss ob ich das richtig abfrage. Bring mal bitte in Erfahrung ob bei der Floppy der Track auf 129 stehen bleibt. Sollte bei einem Reset auf 1 gehen und der Floppysound sollte zu hören sein. Wenn nicht liegt es zu 100% am Sound der bei ihm nicht geht. Was wir dann weiter eingrenzen müssen warum das so ist. Screenshot_20200407_193042

KarlBSD commented 4 years ago

Hallo, ich bin jetzt auch hier. Bei mir ist der Fehler aufgetreten. Prinzipiell funktioniert der Sound an meinem Laptop, bei emu64 höre ich allerdings nichts, auch keine Laufwerksgeräusche. Ich starte emu64, dann schalte ich das Floppy mit Adresse 8 ein. Die LEDs gehen nun an. Ich klicke das Floppysymbol an, um ein Diskimage auszuwählen. Die Kopfzeile des Direktories erscheint dann in dem blauen Feld, die Trackanzeige zeigt "12" an. Wenn ich nun im Menü Softreset oder Hardreset aufrufe passiert nichts. Ich höre keine Laufwerksgeräusche und die Anzeigen bleiben unverändert.

Zirias commented 4 years ago

Ok wenn das am SDL sound liegt, versuche mal

export SDL_AUDIO_DRIVER=oss

bevor du den emu64 (aus der gleichen Konsole) startest. Ändert das was?

KarlBSD commented 4 years ago

Das bringt leider keine Änderung.

Zirias commented 4 years ago

Hm, Sound funktioniert aber generell auf der Maschine? Was sagt cat /dev/sndstat?

KarlBSD commented 4 years ago

ingo@merope:~ % cat /dev/sndstat Installed devices: pcm0: <Realtek ALC293 (Analog)> (play/rec) default pcm1: <Realtek ALC293 (Analog)> (play/rec) pcm2: <Intel Skylake (HDMI/DP 8ch)> (play) No devices installed from userspace.

Ich habe ein bisschen mit dem Programm audacity rumgespielt. Dort kann ich mit dem eingebauten Mikrophon aufnehmen und auch wieder abspielen. Es sind folgende Werte eingetragen: Host: OSS Wiedergabe: /dev/dsp Aufnahme: /dev/dsp1

Zirias commented 4 years ago

Ja, das sieht alles gut aus ... dann mal sehen was Thorsten noch für eine Idee hat :)

ThKattanek commented 4 years ago

So Feierabend ;) Hallo Karl und Felix. Wie ich sehen habt ihr schon mal abgeklärt ob Sound überhaupt auf dem Rechner funktioniert. Wie ich mir schon gedacht habe, läuft der Sound nicht im Emu64, deshalb auch keine C64 Emulation. Dann werde ich jetzt erst einmal versuchen den Initialisierungsvorgang des SDL Audio detaillierter zu loggen um den Fehler besser eingrenzen zu können. Ich denke mal das der Emu64 Tag 5.0.18 benutzt wird? Wenn ja werde ich von da erstmal ein Branch starten.

Zirias commented 4 years ago

Richtig, der Port holt den Source vom Release-Tag. Wenn du Testläufe mit mehr Debugging brauchst kann ich den Port anpassen, um ne andere git revision zu holen (natürlich nicht im offiziellen Port) :)

ThKattanek commented 4 years ago

Ich habe erstmal einen Lokalen Branch von Tag 5.0.18 abgezweigt (issue#192), werde diesen dann auch Online stellen wenn ich denke das wir erstmal wieder Testen können.

ThKattanek commented 4 years ago

Ich habe 2 kleine Tests eingebaut. Zum einen prüfe ich ob die Audio Callback angesprunegen wird, das sieht man auf der Konsole, deshalb emu64 zum testen über die Konsole starten. Es sollte in regelmäßigen abständen "SDL Audio Callback". Das andere wird in der emu64.log angezeigt, hier lasse ich nur den letzten Fehler anzeigen, nach dem ich den Audio Stream starte. Der Branch issu#192 ist Online.

ThKattanek commented 4 years ago

Was ihr noch testen könnt, ist auch mal den letzten stand vom master zu nehmen. Hier habe ich auch noch einiges an dem SDL Audio geschraubt und einiges überarbeitet, evtl. läuft ja der Stand schon bei Karl.

Zirias commented 4 years ago

@KarlBSD kriegst du den Port selbst so angepasst, dass er die Testversion von Thorsten zieht und baut, oder soll ich dafür n kleinen Patch hier posten?

ThKattanek commented 4 years ago

Bitte unbedingt auch mal den aktuellen Stand von master testen :)

KarlBSD commented 4 years ago

Ich habe heute Mittag mal den aktuellen Master-Stand runtergeladen und gebaut. Also, ohne Port, nur gmake und make. Das Bauen hat funktioniert, aber emu64 ist, wie bisher auch, ohne Mainwindow.

KarlBSD commented 4 years ago

Ich glaube, im Logfile gibt es kaum Änderungen:

*** Emu64 FreeBSD Binary File ***

Emu64 Version: 5.0.18

>> Data Path = /usr/local/share/emu64
>> System Temp Path: /tmp
>> Emu64 Temp Verzeichnis existiert nicht und wird erstellt./tmp/emu64
>> Emu64 Temp Path: /tmp/emu64
>> Screenshot Path = /home/ingo/.config/emu64/screenshots
>> INI System wurde erzeugt: /home/ingo/.config/emu64/emu64.ini
>> INI System was created: /home/ingo/.config/emu64/emu64.ini
>> Sprachmenü wurde erstellt.de
>> Translator wurde installiert: Systemsprache = de
>> Ein RomSet Verzeichnis ist vorhanden
>> romsetPath = /home/ingo/.config/emu64/romsets/
>> Das Screenshot Verzeichnis ist vorhanden
>> VideoPal Klasse wurde installiert
>> C64 Klasse wurde gestartet...
>> GfxPath = /usr/local/share/emu64/gfx/
>> SDL2 wurde installiert
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil1.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis1.png
>> SDL_Audio wurde installiert
     -Audio Driver: (null)
     -Audio Channels: 2
     -Audio Buffersize: 882
     -Audio Sample Bit Size: 16
     -Audio Sample Is Float: 0
     -Audio Sample Is Signed: 0
     -Audio Sample Is Little Endian: 1
>> SDL Subsytem Joystick wurde erfolgreich geoeffnet
<< SDL konnte keinen Joystick/Gamepad erkennen
>> InfoWindow wurde erzeugt
>> VideoCrtSetupWindow wurde erzeugt
>> FloppyWindow wurde erzeugt
>> TapeWindow wurde erzeugt
>> C64KeyboardWindow wurde erzeugt
>> CrtWindow wurde erzeugt
>> DebuggerWindow wurde erzeugt
>> SetupWindow wurde erzeugt
>> C64SpeedWindow wurde erzeugt
>> ShowC64KeyMapWindow wurde erzeugt
>> VideoCaptureWindow wurde erzeugt
>> SidDumpWindow wurde erzeugt
>> OscilloscopeWindow wurde erzeugt
>> Aktuelle Screenshotnummer wurde geladen
>> DebuggerWindow wurde mit C64 Klasse verbunden
>> C64SpeedWindow wurde mit C64 Klasse verbunden
>> CRT LED wurde mit CrtWindow verbunden
>> Alle C64 Roms geladen
>> C64 Key-Matrix wurde mit Virtual Keyboard verbunden
>> Tabelle für alle Floppy Laufwerke wurde erzeugt
>> Alle Floppy Lauferke in Tabelle eingetragen
>> SDL Window Close Event mit MainWindow verknuepft
>> C64Class LimitCycelsEvent mit MainWindow verknuepft
>> C64Class DebugCartEvent mit MainWindow verknuepft
>> ChangeFloppyImage Event mit MainWindow verknuepft
>> FloppyWindow LoadIni wurde ausgefuehrt
>> SetupWindow LoadIni wurde ausgefuehrt
>> CrtWindow LoadIni wurde ausgefuehrt
>> TapeWindow LoadIni wurde ausgefuehrt
>> C64 Tastatur Mapping aus INI geladen
>> Emu64 wurde initialisiert

>> Splashsreen wurde geschlossen.
>> C64 Emulation wird gestartet.
>> SDLThread Start.
>> SDLThread: InitGrafik Start.
    InitGrafik: Warten bis Vic-Refresh angehalten wurde.
>> C64Thread wurde gestartet.
>> SDL Audiostream wurde getartet.
>> C64 Emulation wurde gestartet.
>> Hardreset wurde ausgefuehrt.
ThKattanek commented 4 years ago

Ok, dann haben wir das auch erst mal ausgeschlossen. Dann machen wir mit dem branch issue#192 weiter. Einfach mal den auschecken und bauen. Dort habe ich 2 kleine Änderungen drin, um den Fehler hoffentlich weiter eingrenzen zu können. Siehe hier: https://github.com/ThKattanek/emu64/issues/192#issuecomment-611022576

KarlBSD commented 4 years ago

issue #192 habe ich ausprobiert. Weiterhin bekomme ich kein Mainwindow. Ich bekomme auch keine Ausgaben auf die Konsole - innerhalb von ca. 10min. Hier das Logfile:

*** Emu64 FreeBSD Binary File ***

Emu64 Version: 5.0.18

>> Data Path = /usr/local/share/emu64
>> System Temp Path: /tmp
>> Emu64 Temp Path: /tmp/emu64
>> Screenshot Path = /home/ingo/.config/emu64/screenshots
>> INI System wurde erzeugt: /home/ingo/.config/emu64/emu64.ini
>> INI System was created: /home/ingo/.config/emu64/emu64.ini
>> Sprachmenü wurde erstellt.de
>> Translator wurde installiert: Systemsprache = de
>> Ein RomSet Verzeichnis ist vorhanden
>> romsetPath = /home/ingo/.config/emu64/romsets/
>> Das Screenshot Verzeichnis ist vorhanden
>> VideoPal Klasse wurde installiert
>> C64 Klasse wurde gestartet...
>> GfxPath = /usr/local/share/emu64/gfx/
>> SDL2 wurde installiert
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil1.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis1.png
>> SDL_Audio wurde installiert
     -Audio Driver: (null)
     -Audio Channels: 2
     -Audio Buffersize: 882
     -Audio Sample Bit Size: 16
     -Audio Sample Is Float: 0
     -Audio Sample Is Signed: 0
     -Audio Sample Is Little Endian: 1
>> SDL Subsytem Joystick wurde erfolgreich geoeffnet
<< SDL konnte keinen Joystick/Gamepad erkennen
>> InfoWindow wurde erzeugt
>> VideoCrtSetupWindow wurde erzeugt
>> FloppyWindow wurde erzeugt
>> TapeWindow wurde erzeugt
>> C64KeyboardWindow wurde erzeugt
>> CrtWindow wurde erzeugt
>> DebuggerWindow wurde erzeugt
>> SetupWindow wurde erzeugt
>> C64SpeedWindow wurde erzeugt
>> ShowC64KeyMapWindow wurde erzeugt
>> VideoCaptureWindow wurde erzeugt
>> SidDumpWindow wurde erzeugt
>> OscilloscopeWindow wurde erzeugt
>> Aktuelle Screenshotnummer wurde geladen
>> DebuggerWindow wurde mit C64 Klasse verbunden
>> C64SpeedWindow wurde mit C64 Klasse verbunden
>> CRT LED wurde mit CrtWindow verbunden
>> Alle C64 Roms geladen
>> C64 Key-Matrix wurde mit Virtual Keyboard verbunden
>> Tabelle für alle Floppy Laufwerke wurde erzeugt
>> Alle Floppy Lauferke in Tabelle eingetragen
>> SDL Window Close Event mit MainWindow verknuepft
>> C64Class LimitCycelsEvent mit MainWindow verknuepft
>> C64Class DebugCartEvent mit MainWindow verknuepft
>> ChangeFloppyImage Event mit MainWindow verknuepft
>> FloppyWindow LoadIni wurde ausgefuehrt
>> SetupWindow LoadIni wurde ausgefuehrt
>> CrtWindow LoadIni wurde ausgefuehrt
>> TapeWindow LoadIni wurde ausgefuehrt
>> C64 Tastatur Mapping aus INI geladen
>> Emu64 wurde initialisiert

>> Splashsreen wurde geschlossen.
>> C64 Emulation wird gestartet.
>> SDLThread Start.
>> SDLThread: InitGrafik Start.
    InitGrafik: Warten bis Vic-Refresh angehalten wurde.
>> C64Thread wurde gestartet.
>> SDL Audiostream wurde getartet.
>> C64 Emulation wurde gestartet.
>> Hardreset wurde ausgefuehrt.
KarlBSD commented 4 years ago

Noch ein Frage, damit ich nichts falsch mache: Auf der Seite: https://github.com/ThKattanek/emu64 Mit dem Button ganz links wähle ich "issue#192" aus. Dann klicke ich auf den grünen Button ganz rechts ("Clone or download") und lade das Zip-File herunter. Dann habe ich die richtige Version?

ThKattanek commented 4 years ago

Ja genau so! Ich habe auch noch etwas geändert das man sieht das du die richtige Version genommen hast. In der Log steht dann ... Emu64 Version: 5.0.18_issue_192_01. Die 01 werde ich bei jedem update erhöhen, damit wir immer sehen das du mit der richtigen Version testest. Wichtig wäre jetzt ob die Konsolenausgabe funktioniert, wie oben beschrieben. :)

KarlBSD commented 4 years ago

Ich habe emu64 noch mal gebaut und ausprobiert. Kein Mainwindow und keine Ausgabe auf die Konsole:

 *** Emu64 FreeBSD Binary File ***

Emu64 Version: 5.0.18

>> Data Path = /usr/local/share/emu64
>> System Temp Path: /tmp
>> Emu64 Temp Path: /tmp/emu64
>> Screenshot Path = /home/ingo/.config/emu64/screenshots
>> INI System wurde erzeugt: /home/ingo/.config/emu64/emu64.ini
>> INI System was created: /home/ingo/.config/emu64/emu64.ini
>> Sprachmenü wurde erstellt.de
>> Translator wurde installiert: Systemsprache = de
>> Ein RomSet Verzeichnis ist vorhanden
>> romsetPath = /home/ingo/.config/emu64/romsets/
>> Das Screenshot Verzeichnis ist vorhanden
>> VideoPal Klasse wurde installiert
>> C64 Klasse wurde gestartet...
>> GfxPath = /usr/local/share/emu64/gfx/
>> SDL2 wurde installiert
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil1.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis1.png
>> SDL_Audio wurde installiert
     -Audio Driver: (null)
     -Audio Channels: 2
     -Audio Buffersize: 882
     -Audio Sample Bit Size: 16
     -Audio Sample Is Float: 0
     -Audio Sample Is Signed: 0
     -Audio Sample Is Little Endian: 1
>> SDL Subsytem Joystick wurde erfolgreich geoeffnet
<< SDL konnte keinen Joystick/Gamepad erkennen
>> InfoWindow wurde erzeugt
>> VideoCrtSetupWindow wurde erzeugt
>> FloppyWindow wurde erzeugt
>> TapeWindow wurde erzeugt
>> C64KeyboardWindow wurde erzeugt
>> CrtWindow wurde erzeugt
>> DebuggerWindow wurde erzeugt
>> SetupWindow wurde erzeugt
>> C64SpeedWindow wurde erzeugt
>> ShowC64KeyMapWindow wurde erzeugt
>> VideoCaptureWindow wurde erzeugt
>> SidDumpWindow wurde erzeugt
>> OscilloscopeWindow wurde erzeugt
>> Aktuelle Screenshotnummer wurde geladen
>> DebuggerWindow wurde mit C64 Klasse verbunden
>> C64SpeedWindow wurde mit C64 Klasse verbunden
>> CRT LED wurde mit CrtWindow verbunden
>> Alle C64 Roms geladen
>> C64 Key-Matrix wurde mit Virtual Keyboard verbunden
>> Tabelle für alle Floppy Laufwerke wurde erzeugt
>> Alle Floppy Lauferke in Tabelle eingetragen
>> SDL Window Close Event mit MainWindow verknuepft
>> C64Class LimitCycelsEvent mit MainWindow verknuepft
>> C64Class DebugCartEvent mit MainWindow verknuepft
>> ChangeFloppyImage Event mit MainWindow verknuepft
>> FloppyWindow LoadIni wurde ausgefuehrt
>> SetupWindow LoadIni wurde ausgefuehrt
>> CrtWindow LoadIni wurde ausgefuehrt
>> TapeWindow LoadIni wurde ausgefuehrt
>> C64 Tastatur Mapping aus INI geladen
>> Emu64 wurde initialisiert

>> Splashsreen wurde geschlossen.
>> C64 Emulation wird gestartet.
>> SDLThread Start.
>> SDLThread: InitGrafik Start.
    InitGrafik: Warten bis Vic-Refresh angehalten wurde.
>> C64Thread wurde gestartet.
>> SDL Audiostream wurde getartet.
>> C64 Emulation wurde gestartet.
>> Hardreset wurde ausgefuehrt.
Zirias commented 4 years ago

Blöde Frage, aber hast du die lokal gebaute Version auch installiert? sonst liegt ja in /usr/local immer noch die offizielle Release aus den ports ... :)

ThKattanek commented 4 years ago

Sieht nicht wie die Test Version aus. In der Log müsste die von mir oben genannte Version stehen. Und in der Log nach >> SDL Audiostream wurde getartet. Ein simples Error: Kann es sein das dann auch die aktuelle master Version auch nicht wirklich getestet wurde ?

KarlBSD commented 4 years ago

Gute Frage! ;-) Das hatte ich zuerst auch falsch gemacht, weil das anders funktioniert, als ich das unter Windows gewohnt bin. Ich starte (mit ./emu64) die Version, die ich gebaut habe. Aber bei den Logfiles bin ich schon durcheinander gekommen. Ältere Logfiles sollte man gleich löschen. Das hier ist das aktuelle Logfile:

*** Emu64 FreeBSD Binary File ***

Emu64 Version: 5.0.18_issue_192_01

>> Data Path = /usr/local/share/emu64
>> System Temp Path: /tmp
>> Emu64 Temp Path: /tmp/emu64
>> Screenshot Path = /home/ingo/.config/emu64/screenshots
>> INI System wurde erzeugt: /home/ingo/.config/emu64/emu64.ini
>> INI System was created: /home/ingo/.config/emu64/emu64.ini
>> Sprachmenü wurde erstellt.de
>> Translator wurde installiert: Systemsprache = de
>> Ein RomSet Verzeichnis ist vorhanden
>> romsetPath = /home/ingo/.config/emu64/romsets/
>> Das Screenshot Verzeichnis ist vorhanden
>> VideoPal Klasse wurde installiert
>> C64 Klasse wurde gestartet...
>> GfxPath = /usr/local/share/emu64/gfx/
>> SDL2 wurde installiert
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil1.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis1.png
>> SDL_Audio wurde installiert
     -Audio Driver: (null)
     -Audio Channels: 2
     -Audio Buffersize: 882
     -Audio Sample Bit Size: 16
     -Audio Sample Is Float: 0
     -Audio Sample Is Signed: 0
     -Audio Sample Is Little Endian: 1
>> SDL Subsytem Joystick wurde erfolgreich geoeffnet
<< SDL konnte keinen Joystick/Gamepad erkennen
>> InfoWindow wurde erzeugt
>> VideoCrtSetupWindow wurde erzeugt
>> FloppyWindow wurde erzeugt
>> TapeWindow wurde erzeugt
>> C64KeyboardWindow wurde erzeugt
>> CrtWindow wurde erzeugt
>> DebuggerWindow wurde erzeugt
>> SetupWindow wurde erzeugt
>> C64SpeedWindow wurde erzeugt
>> ShowC64KeyMapWindow wurde erzeugt
>> VideoCaptureWindow wurde erzeugt
>> SidDumpWindow wurde erzeugt
>> OscilloscopeWindow wurde erzeugt
>> Aktuelle Screenshotnummer wurde geladen
>> DebuggerWindow wurde mit C64 Klasse verbunden
>> C64SpeedWindow wurde mit C64 Klasse verbunden
>> CRT LED wurde mit CrtWindow verbunden
>> Alle C64 Roms geladen
>> C64 Key-Matrix wurde mit Virtual Keyboard verbunden
>> Tabelle für alle Floppy Laufwerke wurde erzeugt
>> Alle Floppy Lauferke in Tabelle eingetragen
>> SDL Window Close Event mit MainWindow verknuepft
>> C64Class LimitCycelsEvent mit MainWindow verknuepft
>> C64Class DebugCartEvent mit MainWindow verknuepft
>> ChangeFloppyImage Event mit MainWindow verknuepft
>> FloppyWindow LoadIni wurde ausgefuehrt
>> SetupWindow LoadIni wurde ausgefuehrt
>> CrtWindow LoadIni wurde ausgefuehrt
>> TapeWindow LoadIni wurde ausgefuehrt
>> C64 Tastatur Mapping aus INI geladen
>> Emu64 wurde initialisiert

>> Splashsreen wurde geschlossen.
>> C64 Emulation wird gestartet.
>> SDLThread Start.
>> SDLThread: InitGrafik Start.
    InitGrafik: Warten bis Vic-Refresh angehalten wurde.
>> C64Thread wurde gestartet.
>> SDL Audiostream wurde getartet.
Error: Invalid audio device ID
>> C64 Emulation wurde gestartet.
>> Hardreset wurde ausgefuehrt.
ThKattanek commented 4 years ago

Ok ich sehe jetzt einen Fehler wenn der Audio Stream gestartet wird. "Invalid audio device ID" Das ist zwar nicht schön aber da kann ich weiter ansetzen. Kannst du bitte noch mal den aktuelle master ausprobieren, da ich dort schon einiges an dieser Stelle geändert hatte.

Zirias commented 4 years ago

Danke euch für das Engagement, ich hoffe das ist so isolierbar, dass ich dann bis zum nächsten Release einen "hotfix" in den Port aufnehmen kann :) So macht port maintaining Freude wenn Upstream und User so toll mithelfen :)

KarlBSD commented 4 years ago

Die master-Version bleibt schon vorher hängen, wenn das Fenster mit dem Logo angezeigt wird:

*** Emu64 FreeBSD Binary File ***

Emu64 Version: 5.0.18

>> Data Path = /usr/local/share/emu64
>> System Temp Path: /tmp
>> Emu64 Temp Path: /tmp/emu64
>> Screenshot Path = /home/ingo/.config/emu64/screenshots
>> INI System wurde erzeugt: /home/ingo/.config/emu64/emu64.ini
>> INI System was created: /home/ingo/.config/emu64/emu64.ini
>> Sprachmenü wurde erstellt.de
>> Translator wurde installiert: Systemsprache = de
>> Ein RomSet Verzeichnis ist vorhanden
>> romsetPath = /home/ingo/.config/emu64/romsets/
>> Das Screenshot Verzeichnis ist vorhanden
>> VideoPal Klasse wurde installiert
>> C64 Klasse wurde gestartet...
>> GfxPath = /usr/local/share/emu64/gfx/
>> SDL2 wurde installiert
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil1.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis1.png
>> Alle Audio Devices:
     -Audio device 0: /dev/dsp
     -Audio device 1: /dev/dsp0
     -Audio device 2: /dev/dsp1
     -Audio device 3: /dev/dsp2
<< ERROR: Fehler beim installieren von SDL_Audio
ThKattanek commented 4 years ago

Ja, so ist das eigtl. auch richtig, weil er dort schon ein Problem hat das Audio zu initialisieren. Das hatte ich nach dem 5.0.18 Release schon mal angepasst. Ich werde einen neuen Branch vom aktuellen master anlegen und nicht ab 5.0.18. Ich werde den Fehler, den SDL2 zurückgibt dann im log ausgeben. Melde mich dann gleich zurück wenn ich das habe. Dann sehen wir weiter aber dann sind wir jedenfalls auf den richtigen weg und schon an der richtigen stelle :)

ThKattanek commented 4 years ago

Felix so muss das doch sein :)

ThKattanek commented 4 years ago

So ich habe den branch issue#192 nun vom letzten master commit gestartet und eine kleine Erweiterung eingebaut, die die SDL2 Fehlermeldung auch mit ins log ausgibt. Bitte mal starten und log wieder hier rein. Ich sehe aber schon, das du mehrere Audio devices hast, emu64 nimmt aktuell immer device 0 das könnte schon der Knackpunkt sein.

ThKattanek commented 4 years ago

Bei mir unter Kubuntu ist nur ein Audio Device emu64.log Auszug:

Alle Audio Devices: -Audio device 0: Starship/Matisse HD Audio Controller Analog Surround 2.1

KarlBSD commented 4 years ago

Hier ist das aktuelle Logfile:

*** Emu64 FreeBSD Binary File ***

Emu64 Version: 5.0.18

>> Data Path = /usr/local/share/emu64
>> System Temp Path: /tmp
>> Emu64 Temp Verzeichnis existiert nicht und wird erstellt./tmp/emu64
>> Emu64 Temp Path: /tmp/emu64
>> Screenshot Path = /home/ingo/.config/emu64/screenshots
>> INI System wurde erzeugt: /home/ingo/.config/emu64/emu64.ini
>> INI System was created: /home/ingo/.config/emu64/emu64.ini
>> Sprachmenü wurde erstellt.de
>> Translator wurde installiert: Systemsprache = de
>> Ein RomSet Verzeichnis ist vorhanden
>> romsetPath = /home/ingo/.config/emu64/romsets/
>> Das Screenshot Verzeichnis ist vorhanden
>> VideoPal Klasse wurde installiert
>> C64 Klasse wurde gestartet...
>> GfxPath = /usr/local/share/emu64/gfx/
>> SDL2 wurde installiert
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/pfeil1.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis0.png
>> Folgendes Bild wurde erfolgreich geladen --- /usr/local/share/emu64/gfx/kreis1.png
>> Alle Audio Devices:
     -Audio device 0: /dev/dsp
     -Audio device 1: /dev/dsp0
     -Audio device 2: /dev/dsp1
     -Audio device 3: /dev/dsp2
<< ERROR: Fehler beim installieren von SDL_Audio
SDL_Error: Fragment size must be a power of two
ThKattanek commented 4 years ago

Wenn ich das jetzt richtig verstanden habe, soll laut SDL2 Doku die Audiopuffergröße eine 2er Potenz sein. Ich habe immer 882 gesetzt, was keine 2er Potenz ist und das lief auch immer (bis jetzt) !? Ich habe die Puffergröße jetzt mal auf 1024 gesetzt. Schauen wir mal ob das der Knackpunkt war. Es darf wieder getestet werden. :) Aber ich geh jetzt erstmal ins Bett. Bis morgen.

Zirias commented 4 years ago

Also falls das irgendwie weiter hilft: FreeBSD verwendet ein OSS-kompatibles Interface und eigentlich ist es immer richtig, /dev/dsp zu verwenden, das ist das default-device, das man falls nötig auch per sysctl ändern kann. Aber eigentlich sollte SDL das schon automatisch richtig machen.

ThKattanek commented 4 years ago

Ahhh OSS benötigt glaube ich auch immer die 2er Potenz, hatte ich irgendwo gerade gelesen. Das könnte das dann auch gewesen sein. Also 1024 als Puffergröße sollte dann funktionieren. Ich bin gespannt.

Zirias commented 4 years ago

@ThKattanek eventuell liegst du da sogar richtig, falls "Fragment size" tatsächlich die Puffergröße ist. Ich verwende auf meinem System den sndio (ein simpler sound daemon), und dem ist das vielleicht im Gegensatz zum nativen OSS interface egal ....

Zirias commented 4 years ago

Wow, falls es das ist muss ich definitiv einen kleinen Patch zum Port packen, denn OSS direkt zu verwenden dürfte auf FreeBSD weit verbreitet sein :) Nochmal vielen Dank, ich hoffe wir können dann morgen tatsächlich die Issues schließen! (y)

KarlBSD commented 4 years ago

Die letzte Version von heute Nacht tut leider gar nichts bei mir. Emu64 beendet sich sofort wieder. Es wird kein Logfile geschrieben und ich habe auch keinen core-Dump gefunden.

ThKattanek commented 4 years ago

Merkwürdig, habe lediglich die Länge des Sounpuffers von 882 auf 1024 geändert. Es sieht so aus als ob eine alte Emu64 Instanz noch im Speicher hängt, und Emu64 sich sofort selber beendet. Also kein Absturz, das ist so gewollt. Emu64 soll man nur einmal starten können, aber mit weiteren aufrufen, kann man die laufende Instanz weitere Comandos von außen geben, also quasi fernsteuern. Also möchte man aber trotzdem mehrere Emu64 starten macht man das mit folgendem aufruf. ./emu64 --multiple-instance Du kannst auch noch --reset-ini mit übergeben dann wird gleich noch die emu64.ini gelöscht.

ThKattanek commented 4 years ago

Das muss helfen, da wo er vorher beendet hat weil SDL Audio nicht initialisiert werden konnte, muss eine Fehler Meldung gekommen sein "Fehler beim Installieren der C64 Klasse". Sieht man auch schön an der emu64.log da fehlt komplett die Beendigung des emu64. Konnte das hier nachstellen. Also ./emu64 --multiple-instance sollte helfen. Hättest du den Rechner neu gestartet wäre es auch gegangen ;)

Zirias commented 4 years ago

Noch eine kleine Idee: hat sich in der Version noch mehr geändert als nur das emu64 binary? Denn dann würde ja das starten aus dem source tree eventuell nicht funktionieren. Ich könnte in dem Fall mal einen Patch für den Port erstellen, ob es dann geht :) Falls es aber an der "single instance" Implementierung liegt hilft vorher ein ganz einfaches killall emu64 :)

ThKattanek commented 4 years ago

Das geht natürlich auch mit killall emu64! Ist natürlich die bessere Variante bei einem Absturz. Ich bin schon dabei, dieses Fehlverhalten des Emu64 zu fixen. Also der Absturz wenn die C64 Klasse nicht initialisiert werden kann.

ThKattanek commented 4 years ago

Es hat sich nur die binary geändert.

ThKattanek commented 4 years ago

So, habe das jetzt gefixt. Lade das aber noch nicht hoch, wir warten jetzt erstmal den Test ab mit der Puffergröße.

KarlBSD commented 4 years ago

Es geht!

2020-04-11-112828_1920x1080_scrot

Das da noch ein Prozeß im Hintergrund lief, habe ich wohl übersehen. Nachdem ich Emu64 beendet habe, lies er sich auch wieder ganz normal, ohne zusätzlichen Parameter starten.

Zirias commented 4 years ago

Super Leute .... war das jetzt ein diff gegen master oder gegen den Branch von 5.0.18? Ich würde das gern mit einem Patch im Port lösen (es sei denn 5.0.19 käme jetzt morgen raus oder so)

Zirias commented 4 years ago

Ich kann das Problem jetzt auch bei mir endlich reproduzieren (mit SDL_AUDIODRIVER=oss), also @ThKattanek ich schätze du kannst das issue schließen :) Vielen Dank nochmal. Ich bastle jetzt daran, den minimalen Change in die 5.0.18 zurückzuführen um meinen Port zu aktualisieren.

ThKattanek commented 4 years ago

Super! War ne harte Nuss aber mit System kommt man der Sache eigtl. immer auf den Grund! Felix, ich werde im laufe des Tages noch ein Update hochladen und das ganze dann in den master überführen. Aber der kleine Patch reicht erst einmal denke ich (882 -> 1024). Werde evtl. demnächst eine Version 5.0.19 releasen, da dort doch recht wichtige Dinge im Audio Bereich gefixt wurden. Mal kucken was ich über Ostern noch einbauen kann was ich zeitlich schaffe, dann könnte nach Ostern das neue Release raus. Aber mal schauen.