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

commandline options für testbench #219

Closed mrdudz closed 2 years ago

mrdudz commented 2 years ago

Hy!

Um besser (bzw überhaupt) mit der VICE Testbench zu funktionieren wären folgende Kommandozeilen-Optionen noch super:

--console um ohne jeden screenoutput zu laufen (zur not geht auch minimized, ganz ohne wäre aber schöner) --palette um eine bestimmte palette auszuwählen (damit Screenshots vergleichbar werden) --filter um den CRT filter zu deaktivieren (ebenso)

(wie du die nennst ist natürlich egal :))

Weiterhin ist ein Screenshot, der beim Verlassen automatisch mit --exitscreenshot generiert wird, offenbar nicht mit dem angezeigten Bild identisch, das kann man zb mit den als "selftest" bezeichneten Test [*] nachvollziehen. Wenn man den Emu so aufruft wie es die Testbench tut:

emu64.exe --warp --debugcart --nosplash --minimized --limitcycles 10000000 --exitscreenshot c64-pass.prg-emu64.png --autostart c64-pass.prg

dann ist im Screenshot noch der halbe Rahmen blau - was er aber nicht sein sollte. Das verwundert etwas, weil das bei jedem anderen Emu funktioniert :) Ich rate mal das du zwischen Emulation und GUI einen Buffer hast für die Videodaten, und die ein bischen der Emulation "hinterherhinken" - beim exitscreenshot müsste also erstmal der Buffer komplett "geleert" werden bevor der Screenshot erzeugt wird.

Insbesonders letzteres verhindert derzeit dass man die Testbench überhaupt auf Emu64 loslassen kann - was ich wirklich gerne mal wieder tun würde :)

[*] Der Test liegt hier: https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/testbench/selftest/

ThKattanek commented 2 years ago

Hi, werde ich mir alles ansehen und versuchen es Zeitnah zu implementieren. Die Option --minimized gibt es schon, werde aber versuchen das nur ausgaben über die Konsole kommen. Glaube es gibt dafür schon ein Issue (noGui oder so :P ) Mit dem Screenshot schaue ich mir auch an, ich glaube ich warte wirklich bis ein komplettes Bild fertig ist :) Werde ich dafür beheben, also das bei --exitscreenshot der wirklich aktuelle Stand ausgegeben wird.

ThKattanek commented 2 years ago

Kleine Frage noch. Möchtest du bei --palette eine pal-datei übergeben oder nur sagen welche von Emu64 genutzt werden soll als 1 - x und 0 für die Userpalette z.b. ?

mrdudz commented 2 years ago

Es reicht eine definierte Palette auswählen zu können, welche das ist ist eigentlich egal, die bring ich dann dem Tool bei das die Screenshots vergleicht (bzw muss ich garnicht, wenn ich zb Pepto auswählen kann)

ThKattanek commented 2 years ago

Ok dann weiß ich Bescheid. Ja Pepto ist schon enthalten. Video CRT kann man jetzt mit --video-filter-off temporär abschalten.

ThKattanek commented 2 years ago

Jetzt der Exit Screenshot. Bei mir ist das sporadisch, Vor allem sieht das sehr komisch aus, als wenn bei der Konvertierung was schief läuft. Hab das unter Linux getestet und dann noch die windows version mit wine. Merkwürdig c64-pass prg-emu64_0 Scheinbar OK c64-pass prg-emu64_1

mrdudz commented 2 years ago

DAS Verhalten hab ich auch schon gesehen, im Moment sieht das hier aber anders aus, eher als ob er den Screenshot zu einem Zeitpunkt mitten im Frame macht, wo die Rahmenfarbe noch nicht umgeschaltet ist, zb: c64-fail crt-emu64

ThKattanek commented 2 years ago

Wird das selbe Problem sein. Dachte auch erst das es vom umschalten der Farbe kommt. Aber meine Screenshots sehen eher nach einem Konvertierungsproblem aus, aber warum mitten im Frame. Das schaue ich mir dann Morgen Abend an was da los ist. Aber prinzipiell hatte es ja mal funktioniert, zumindest wo ich es damals implementiert hatte. Muss mal schauen ob ich danach mal was am Screenshot gefrimelt hatte.

ThKattanek commented 2 years ago

Auf mein Lappi sieht das so aus, ohne Angabe eines prg's. Eindeutig Konvertierungsfehler. c64-pass prg-emu64

ThKattanek commented 2 years ago

Fehler gefunden und gefixt. Ich habe das jetzt einige male durchgespielt und immer waren die Shots ok. Kannst du das bitte bei dir mal testen und mir ne Rückmeldung geben :)

c64-pass prg-emu64

mrdudz commented 2 years ago

Das scheint korrekt zu sein jetzt!

Nun sehe ich aber gleich noch ein Problem - eventuell habe ich die Option übersehen: Der Screenshot ist um Faktor 2 skaliert, ich brauche aber den unskalierten Screen. Wenn ich mich recht erinnere war das auch mal so :)

ThKattanek commented 2 years ago

Ja stimmt da war was. Zur Not kannst du das direkt im Emu64 einmal abschalten "Texturgröße verdoppenl". Dann hält er das über die emu64.ini und es sollten 1:1 Images raus kommen. Aber ich werde mir da mal ein Kommando ausdenken. --no-texture-double oder so ;)

mrdudz commented 2 years ago

Die ini resette ich ja mit Absicht jedes mal, damit da nicht aus versehen irgendwas drin steht was ich nicht haben will :) Da wäre eine Option dafür schon toll :)

ThKattanek commented 2 years ago

Nee is klar, kommt. Bin schon dabei :)

ThKattanek commented 2 years ago

Mit --double-texture-off sollte es jetzt funktionieren. c64-pass prg-emu64

mrdudz commented 2 years ago

Funktioniert! Prima :) Wenn du noch -no-gui ranbastelst wäre es perfekt :)

Um noch mehr Tests zu unterstützen wären weitere Optionen nötig

Das deckt dann glaube ich alles ab was emu64 derzeit Emuliert.

Ansonsten wäre noch gut zu wissen welchen VICII und welche CIA du als "Vorbild" nimmst, dann kann ich die Tests die nicht zur gewünschten Variante passen ausfiltern.

ThKattanek commented 2 years ago

--no-gui war glaube ich etwas komplizierter umzusetzen, aber ich schaue es mir noch mal an. Wenn die Tests dann laufen, musst du mir nur noch erklären wie ich die Ergebnisse dann nutzen kann um die Emulation im Emu64 genauer hinzu bekommen. Gibt ja doch die eine oder andere Baustelle die ich gerne mal in Angriff nehmen würde :)

ThKattanek commented 2 years ago

Die anderen Sachen baue ich noch ein.

mrdudz commented 2 years ago

Nunja, du weisst dann was nicht (richtig) funktioniert.... wie du dann was fixen musst hängt natürlich davon ab was kaputt ist :) Die Tests erlauben dir in erster Linie zu erkennen ob bzw was kaputt ist, und ob irgendeine Änderung wieder was anderes unbeabsichtigt kaputt gemacht hat :)

ThKattanek commented 2 years ago

Das mit den Änderungen die wieder was anderes kaputt machen, kenne ich zu gut. Da kann man sich ganz schön schnell im Kreis drehen. Ja ich denke auch ich kann es gut nutzen um zu erkennen wo es noch klemmt :+1:

ThKattanek commented 2 years ago

Schon wieder um 2:00, aber ich denke ich habs. --nogui funktioniert bei mir und auch unter Windows. Hoffe es läuft auch stabil. Kannst ja mal testen wie es damit läuft. Wenn i.O. würde ich issue #106 zu machen.

ThKattanek commented 2 years ago

"Bei mir" heist Kubuntu 21.10

ThKattanek commented 2 years ago

Gerade noch gesehen, wenn --minimized zusammen mit --nogui übergeben wird erscheint in der Taskleiste kurz emu64. Ohne --minimized läufst völlig im Hintergrund. Das werde ich noch fixen. --minimized macht ja auch kein Sinn bei --nogui.

Ach ja wenn du --nogui benutzt braucht du --nospalsh nicht mehr. Schließt das mit ein ;)

ThKattanek commented 2 years ago

So das ist jetzt auch gefixt. Man kann --minimized und --nogui zusammen benutzen ohne aufblinken in der Taskleiste. So jetzt ist aber Schluss für heute. Viel Spaß beim testen.

ThKattanek commented 2 years ago

Werde mal die 3 anderen Kommandos noch implementieren. --enable-georam, --enable-reu -> Zur Zeit sind GEORAM und REU von der Größe her fest und können nicht verändert werden. REU=16MB und GEORAM=2MB --set-sidtype 0=MOS-6581 1=MOS-8580 Das implementieren dürfte jetzt nicht so lange dauern.

ThKattanek commented 2 years ago

So alle 3 Kommandos sind jetzt implementiert. Viel Spass beim Testen. Ich gehe jetzt erstmal Vitamin D tanken. :) P.S. Commit für --set-sidtype wird hier oben nicht angezeigt. habe statt #219 #119 im commit angegeben. :p

ThKattanek commented 2 years ago

Wenn alles soweit funktioniert könnte man den Issue dann hier erstmal zu machen. Neu Bugs dann in extra issues ;)

ThKattanek commented 2 years ago

Wenn das jemand unter Windows Testen will, habe ich die Pakete hier mal ran gehangen. emu64_5.0.19-25-g4c83b40_win_x64.zip emu64_5.0.19-25-g4c83b40_win_x32.zip

mrdudz commented 2 years ago

Zur Zeit sind GEORAM und REU von der Größe her fest und können nicht verändert werden

Oh. Das würde ich nicht so machen - nicht wenige Programme kommen nicht damit klar wenn die REU bzw GEOram grösser als erwartet sind. Die (meissten) Tests gehen auch von 512k bzw 256k aus

ThKattanek commented 2 years ago

Ok. Werde das dann auch zeitnah einbauen. Werde dafür aber eigene issues anlegen.

mrdudz commented 2 years ago

OK, so weit eingebaut, Testbench läuft... in ner Stunde oder so gibts ein Ergebnis :)

ThKattanek commented 2 years ago

Hoffe du hast --minimized rausgeschmissen. Habe den im engeren Verdacht für die Abstürze. :) Bin aber auch noch am Testen.

ThKattanek commented 2 years ago

Hab's im emu64-hooks.sh gerade gesehen. :+1:

mrdudz commented 2 years ago

so, ist durchgelaufen, ein paar Probleme gibt es noch

georam tests schlagen fehl, georam wird nicht erkannt:

emu64 --reset-ini --video-filter-off --double-texture-off --set-palette 7  --enable-georam  --autostart ../memory-expansions//c64-georam-emd.prg

reu tests ebenso:

emu64 --reset-ini --video-filter-off --double-texture-off --set-palette 7 --enable-reu --autostart ../memory-expansions//c64-reu-emd.prg
ThKattanek commented 2 years ago

Viel zum nachschauen aber danke für deine Hinweise, die bringen das ganze hier weiter und ich habe keine Langeweile :P

ThKattanek commented 2 years ago

Ich habe alle Probleme in einzelne Issues aufgeteilt. Werde hier jetzt zu machen, wegen der Übersichtlichkeit. Die neuen commandline options funktionieren ja soweit. Und für die Abstürze gibt es ja auch schon ein eigenes Issue.