Wie den Zsnes aufnehmen? Mehrere Möglichkeiten zum Ergebnis.

  • Einige Windows 8 User unter euch werden es gewiss schon mitbekommen haben das der [lexicon]Zsnes[/lexicon] nicht hookbar ist von Aufnahmeprogrammen, da Triple Buffering nicht seine Funktion erfüllt. Und einige andere Windows User wie Win7, WinVista und WinXP werden gemerkt haben das Triple Buffering den Emulator etwas ausbremsen tut.


    Ich zeige euch hier nun mehrere mögliche Alternativen, mitunter auch Triple Buffering als auch ohne, die Spiele im Emulator aufzuzeichnen.



    Weg #1: Triple Buffering (Nicht Nativ):


    Triple Buffering (deu. Dreifach Puffer/Speicher) beschreibt ein Konzept in der Computergrafik, bei dem der Framebuffer
    des Video-RAM bei Grafikkarten in drei Bereiche unterteilt wird. Ziel des Verfahrens ist es, die bei gleichzeitiger Verwendung von [lexicon]VSync[/lexicon] (vertikale Synchronisation) und Doppelpufferung (double buffering) auftretenden Nachteile während des Bildaufbaus zu kompensieren.
    Der Unterschied zwischen Doppel- und Dreifachpufferung liegt in der Einteilung des Framebuffers. Während bei der Doppelpufferung der Framebuffer aus zwei Pufferspeichern (Front- und Backbuffer) besteht, sind es derer drei bei der Dreifachpufferung (ein Frontbuffer und zwei Backbuffer).


    Also funktioniert hier der Hook von Aufnahmeprogramm deshalb da er hier den Backbuffer abgreifen kann, der vorher nicht vorhanden war. Im nun befindlichen 2ten Backbuffer kann nun gehookt und die Frames abgegriffen werden.


    Funktionieren tut dies im [lexicon]Zsnes[/lexicon] nur wenn man eine [lexicon]Auflösung[/lexicon] wählt wo Filter nutzbar sind.


    Dabei gibt es beim [lexicon]Zsnes[/lexicon] mehrere Abkürzungen:
    D - Allow Filter / Lasse Filter zu
    S - Stretch / Strecken
    R - Keep 8:7 Ratio / Behalte 8:7 Verhältnis bei
    W - Windowed / Im Windows Fenster
    F - Fullscreen / Im Vollbild


    Passend für jeden User sind die Custom Auflösungen die ganz unten in der Liste bei Video zu finden sind.


    Wichtig halt ist für Triple Buffering die Nutzung der Filter. Da die Filter bei einer Custom [lexicon]Auflösung[/lexicon] nur bei Vollbild nutzbar sind, wird automatisch halt auch eine Vollbildauflösung notwendig sein.


    Eine 8:7 Ratio (Seitenverhältnis) ist ein typisches Standard Seitenverhältnis für [lexicon]Snes[/lexicon] Games (Original). (Muss jeder für sich wissen ^^)


    Unter Filter ist dann Triple Biffering zu finden und kann dann aktiviert werden.


    Nun sollten Aufnahmeprogramme wie [lexicon]Fraps[/lexicon], [lexicon]DXTory[/lexicon], [lexicon]MSI Afterburner[/lexicon] und Co. den Znes aufnehmen können.




    Weg #2 Desktopaufnahme (Nicht Nativ):


    Klar, Weg Nummer 2 ist die Aufnahme via Desktop. Sprich ohne Hooking. Auch hierbei darf der [lexicon]Zsnes[/lexicon] im Vollbild laufen und mit Filter arbeiten.


    Desktopaufnahmen gehen z.B. mit:
    [lexicon]MSI Afterburner[/lexicon] (Riva Tuner = Application Detection Level auf None stellen)
    [lexicon]Fraps[/lexicon] (Nur via Windows Aero = DWM Mode)
    Virtual Dub (Screen Capture)
    [lexicon]Camtasia[/lexicon] Screen Recorder (Bitte hier geeigneten [lexicon]Codec[/lexicon] verwenden dann)



    Weg #3 Intern via Mencoder und FFV1 [BGR32] ([lexicon]Lossless[/lexicon]) (Nativ):


    Weg Nummer 3 ist schon kniffliger, dafür aber absolut Nativ. Was mein ich mit Nativ? Nativ ist wenn in der [lexicon]Auflösung[/lexicon] aufgenommen wird den die Romgrafiken hergeben. Nativ ist, wenn es im Original Seitenverhältnis auch ist. Und es ist auch die [lexicon]FPS[/lexicon] damit gemeint die bei [lexicon]Snes[/lexicon] Games bei 60/1,001 [lexicon]FPS[/lexicon] liegt. Sprich 59,94 [lexicon]FPS[/lexicon].


    Wenn diese native [lexicon]Auflösung[/lexicon] auch noch [lexicon]Lossless[/lexicon] in der Farbunterabtastung 4:4:4 aufzunehmen ist, dann hat man im Endeffekt ein hübsches Video was man sehr sehr schön hochpolieren kann und die Qualität somit der ersten beiden genannten Wege in den Schatten stellt.


    ACHTUNG!!! Leider hat dieser Weg nur einen Nachteil. Die Spiele müssten für ein [lexicon]Let's Play[/lexicon] nachkommentiert werden, da es bei dieser Art der Aufnahme keine Framedrops geben wird.


    Was ist zu tun?
    Als erstes werdet ihr ein paar Tools brauchen:

    • Mencoder (Zur interner Video-Aufzeichnung) [ACHTUNG: Es darf keine neuere Version sein]
      Download
    • [lexicon]AVISynth[/lexicon] (Entweder via dem [lexicon]SSM[/lexicon] installieren lassen oder auf http://avisynth.nl/index.php/Main_Page#Official_builds sich die passende Version runterladen und installieren)
    • [lexicon]MeGUI[/lexicon] wäre schön zu besitzen, da hier alle [lexicon]AVISynth[/lexicon] Filter dabei sind die gebraucht werden. (BassVideo und FFMS2)

    Ihr entpackt die mencoder.7z mit WinRar oder 7zip und kopiert die beiden Datein "mencoder.exe" und "pthreadGC2.dll" direkt in euer [lexicon]ZSnes[/lexicon] Verzechnis.



    Sind beide Files im [lexicon]Zsnes[/lexicon] Verzeichnis, so startet und beendet ihr den [lexicon]ZSnes[/lexicon] um folgende Datein erzeugen zu lassen:



    Hier öffnen wir nun mit dem normalen Windows Editor die Datei "zmovie.cfg" und ändern die Zeile
    md_ffv1="-ovc lavc -lavcopts vcodec=ffv1:vstrict=-2:aspect=4/3"
    in
    md_ffv1="-ovc lavc -lavcopts vcodec=ffv1:vstrict=-2:format=bgr32"




    Damit wird mencoder angeordnet, das er die Frames nicht in 4:3 strecken soll wie vorher angegeben war, sondern Original Seitenverhältnis beibehält und er speichert FFV1 nicht in YV12 ab, sondern in BGR32 alias RGB32. RGB24 gibt es leider nicht als Auswahlformat bei Mencoder.


    Nun öffnet ihr euren [lexicon]ZSnes[/lexicon] und stellt ihn wie gewohnt ein wie ihr es haben wollt.


    Als nächstes müsst ihr ein Spiel starten/laden um dann unter "Misc" in die "Movie Opt" zu gelangen




    Jetzt wirds interessant.
    Links (siehe letztes Bild oben) seht ihr den Tab "Control" und rechts den Tab "Dumping". Beides gehört zusammen, aber beides baut aufeinander auf.


    Im Tab "Control" könnt ihr für ein Spiel bis zu 10 Filme aufnehmen. Dies entspricht aber einer Makroaufzeichnung des Spieles. Das bedeutet: Sobald ihr unter Control ein Movie recorden tut, wird dies Makromäßig im Verzeichnis der Rom als zmv aufgezeichnet. Sprich die zmv wird am Ende der Aufnahme nur wenige KB besitzen. Beendet die Makroaufzeichnung, sobald ihr mit dem Dumpen beginnen wollt.


    Ist die Makroaufnahme erfolgt, könnt ihr diese Aufzeichnungen als richtiges Video dumpen lassen. Dafür ist dann der Tab "Dumping" da. Hier wählt ihr eure Makroaufzeichnung die ihr bei Control angelegt habt aus (0 - 9) und könnt dann das Video dumpen lassen.


    Da wir nun FFV1 eingestellt haben in der CFG, nutzen wir auch gleich die FFV1 Auswahl und lassen Audio nur an sich dumpen. (VORSICHT: Nicht mit Video mergen lassen, weil Mencoder dann eine MP3 daraus machen wird.)
    Stellt es am besten so ein wie auf dem rechten Bild gezeigt wird.


    Die Dumping Length sollte am besten so lang sein wie die Makroaufnahme der zmv Datei.


    Habt ihr alles so, könnt ihr das Video dumpen lassen. Dies kann dann einige Minuten in Anspruch nehmen, da die Makroaufzeichnung dann noch mal durchlaufen wird.
    Es sollten zwei Datein danach entstehen. Einmal die "Video.avi" und einmal die "Audio.[lexicon]wav[/lexicon]".


    - Ab hier kann auch ein Tool verwendet werden was ganz unten dieses Tutorials als Anhang zu finden ist -


    Nun müssen diese beiden Files noch entsprechend angepasst und zusammengesetzt werden. Weil ich glaube kaum das NLEs was mit FFV1 anfangen können. ^^ Darum machen wir nun aus dem Video ein UTVideo und reparieren auch gleich noch die falsch geschriebene [lexicon]WAV[/lexicon] Datei (32bit float).


    Das können wir mit [lexicon]AVISynth[/lexicon] und den Filtern von [lexicon]MeGUI[/lexicon] erledigen.


    Dazu erstellen wir uns ein AVS Skript:


    Dieses Skript kann dann mit FFMpeg in UTVideo und [lexicon]pcm[/lexicon] signed 16Bit little Endian gespeichert werden.
    FFMpeg Befehl dazu:
    ffmpeg.exe -i FFV1_merged.avs -c:v utvideo -c:a pcm_s16le -map 0 FFV1_to_UTVideo_merged.avi


    Damit hättet ihr ein natives komprimiertes [lexicon]Lossless[/lexicon] RGB24 UtVideo [lexicon]Zsnes[/lexicon] Aufnahme.



    Weg #4 Intern via Mencoder und RAWVideo [BGR24] ([lexicon]Lossless[/lexicon]) (Nativ):


    Die Aufnahme geschieht auf gleichen Weg wie der beschriebene Weg #3, nur das man jetzt statt FFV1, RAWVideo wählt.



    Dies erzeugt dann eine "rawvideo.bin", sowie eine "audio.[lexicon]wav[/lexicon]"


    Die rawvideo.bin ist nun so kodiert, das man Spezifische Angaben machen muss die zur Auslesung der Bildinformationen dienen. Diese RAW (deu. Roh) Speicherung erfolgt beim [lexicon]Zsnes[/lexicon] absolut unkomprimiert [lexicon]Lossless[/lexicon] statt.


    Aufgabe ist es nun dieses Video zu dekodieren. Auch hier hilft uns [lexicon]AVISynth[/lexicon] wieder weiter.


    - Ab hier kann auch ein Tool verwendet werden was ganz unten dieses Tutorials als Anhang zu finden ist -


    Um die zu dekodierenden spezifischen Informationen zu finden brauchen wir ledeglich nur die "zmovie.cfg" zu öffnen und werden dort fündig.



    Die spezifischen Angaben sind halt:
    Breite: 256
    Höhe: 224
    [lexicon]FPS[/lexicon]: NTSC: 59649/995 und PAL: 50/1 (Sehr Wichtig, da dies Nachjustiert werden muss)


    Ein zusätzliches [lexicon]AVISynth[/lexicon] Plugin wird nun Notwendig


    Das folgende [lexicon]AVISynth[/lexicon] Skript sieht dann so aus:


    NTSC Version:


    PAL Version:


    Dieses Skript kann dann mit FFMpeg in UTVideo und [lexicon]pcm[/lexicon] signed 16Bit little Endian gespeichert werden.
    FFMpeg Befehl dazu:
    ffmpeg.exe -i RAW_merged.avs -c:v utvideo -c:a pcm_s16le -map 0 FFV1_to_UTVideo_merged.avi



    PS: Wenn ihr die FFV1 Methode und die RAWMethode mit den gleichen Makrovideo austestet, werdet ihr zum Schlussstrich bei dem UTVideo absolut identische Files haben.



    Tools:


    Eine bereits fertig konfiguriertes zmovie.cfg + Mencoder + [lexicon]AVISynth[/lexicon] Plugins + FFMpeg + Batchdatein die automatisch dann via ffmpeg ein Video erstellen habe ich mal samt Emulator zusammengefasst und hochgeladen.


    HINWEIS: Bitte die Ordnerstrucktur des [lexicon]ZSnes[/lexicon] Verzeichnis so belassen nach dem entpacken, da sonst die Batchdatein nicht mehr funktionieren!

    • [lexicon]ZSnes[/lexicon] v1.5.1 MovieMod: Download

    Sobald in FFV1 oder RAWVideo aufgenommen wurde, kann mit den Batchdatein im Unterordner die Videos encodiert werden mit UTVideo.





    Wie ihr dann aufnehmen wollt, liegt ganz bei euch.


    Ein paar Beispiele die man dann mit den Nativen Videos dann anstellen kann mit den richtigen Resizern ^^ :


  • Nutze persönlich zwar lieber Snes9x da er eine hübschere [lexicon]GUI[/lexicon] hat aber ein (wie immer) sehr umfangreiches Tutorial...


    Evtl. wär eine kurze Zusammenfassung für Leute die nicht die Hintergründe interessiert nützlich? So in etwa "5 Schritte zur fertigen AVI"?


    // EDiT: Zudem sehe ich gerade, [lexicon]ZSNES[/lexicon] ist extrem ungenau was die Emulation angeht, snes9x erreicht fast 90% Genauigkeit... Quelle

  • @TbMzockt
    Der Snes9x steht hier aber nicht zur Diskusion. Ich hab den [lexicon]ZSnes[/lexicon] deswegen ausführlich beschrieben, weil jedesmal im Forum die gleichen blöden Fragen kommen wie z.B. "[lexicon]DxTory[/lexicon] erkennt [lexicon]zsnes[/lexicon] nicht? Was tun?", "Wieso geht Triplebuffering nicht, hab Win8?", "Wie kann ich den [lexicon]ZSnes[/lexicon] am besten aufnehmen?", "Problem beim aufnehmen von [lexicon]ZSNES[/lexicon] mit [lexicon]FRAPS[/lexicon]", usw.


    Somit kann man sich das Gerede darum sparen und die Geschichte mit diesem Emulator abkürzen.


    Finde den Snes9x an sich auch besser, vor allem deshalb da ich da kein Mencoder brauche und die Games gleich mit einem geeigneten VFW [lexicon]Codec[/lexicon] intern capturen kann. Auch das andere Aufnahmeprogramme das Ding hooken können dank der Direct3D oder OpenGL Geschichte. Auch das ich Pixel Shader verwenden kann intern und auch die Möglichkeit für Netzwerkgames habe.


    Und trotzdem gibt es noch bessere Emulatoren für [lexicon]Famicom[/lexicon] Games als den Snes9x und [lexicon]ZSnes[/lexicon]. Die beiden bereits genannten sind ja nur die bekanntesten wo sogar die gleichen Entwickler beteiligt waren auch.


    Evtl. wär eine kurze Zusammenfassung für Leute die nicht die Hintergründe interessiert nützlich? So in etwa "5 Schritte zur fertigen AVI"?


    5 Schritte? ^^ Und dann noch kurz? xD


    Hmm...

    • Beigefügten Emulator downloaden
    • Emulator + Spiel starten
    • Makro aufzeichnen
    • Makro Aufzechnung als Video dumpen
    • Gedumptes Video und Audio via beigefügter [lexicon]Batch[/lexicon] zusammensetzen lassen und in UTVideo und [lexicon]PCM[/lexicon] signed 16bit little endian encoden

    Reicht das schon? ^^ Kurz und Bündig. Weiß nur nicht ob damit jemand was anfangen kann xD

  • Den ganzen Aufwand kannst du dir auch sparen indem du einfach den Emulator snes9x statt [lexicon]zsnes[/lexicon] benutzt. Funktioniert einwandfrei und lässt sich einwandfrei aufnehmen.


    Der Snes9x steht hier aber nicht zur Diskusion. Ich hab den [lexicon]ZSnes[/lexicon] deswegen ausführlich beschrieben, weil jedesmal im Forum die gleichen blöden Fragen kommen wie z.B. "[lexicon]DxTory[/lexicon] erkennt [lexicon]zsnes[/lexicon] nicht? Was tun?", "Wieso geht Triplebuffering nicht, hab Win8?", "Wie kann ich den [lexicon]ZSnes[/lexicon] am besten aufnehmen?", "Problem beim aufnehmen von [lexicon]ZSNES[/lexicon] mit [lexicon]FRAPS[/lexicon]", usw.


    Somit kann man sich das Gerede darum sparen und die Geschichte mit diesem Emulator abkürzen.


    Finde den Snes9x an sich auch besser, vor allem deshalb da ich da kein Mencoder brauche und die Games gleich mit einem geeigneten VFW [lexicon]Codec[/lexicon] intern capturen kann. Auch das andere Aufnahmeprogramme das Ding hooken können dank der Direct3D oder OpenGL Geschichte. Auch das ich Pixel Shader verwenden kann intern und auch die Möglichkeit für Netzwerkgames habe.


    Ohne Worte.


    Edit:
    Und vor allem sollteste mal an deine eigene Nase fassen: DxTory erkennt zsnes nicht? Was tun?


    Weil ich nutz den Snes9x schon seit Jahren. Damals war der sogar noch in Entwicklung gewesen.


    Aber wie gesagt... Dieses Tutorial hier gilt für Leute die hier im Forum Threads eröffnen mit [lexicon]ZSnes[/lexicon] Emulator Aufnahmeproblemen kommen (so wie du z.B.) und biete somit Alternativen an Spiele an diesen Emulator dennoch aufnehmen zu können. Und genau das haste nicht gerafft wo du dein Beitrag geschrieben hast ;D Bzw. warst zu faul mal weiter zu lesen, weil dann hätteste dir dein Beitrag sogar sparen können ^^

  • Kannste auch machen. Aber ein Emulator innerhalb eines emulierten Systems abzuspielen ist nicht grad optimal. Zumal der [lexicon]Zsnes[/lexicon] ja nun wirklich aus der Steinzeit kommt.


    Kannst es gerne so machen, wenn du denkst das es so für dich in Ordnung ist. Ich würde das für mich persönlich so nicht machen wollen. Einfach auch aus der Sicht das oftmals der Ton nicht richtig hinhaut und Virtuelle Maschienen oftmals nur mit DirectDraw arbeiten können statt Direct3D bzw. OpenGL.


    Performanter wäre es wirklich den Snes9x zu verwenden. Der ist sein [lexicon]Zsnes[/lexicon] Vorgänger deutlich weiter voraus. Zumal auch die gleichen Entwickler beteiligt waren.

  • Kannste auch machen. Aber ein Emulator innerhalb eines emulierten Systems abzuspielen ist nicht grad optimal. Zumal der [lexicon]Zsnes[/lexicon] ja nun wirklich aus der Steinzeit kommt.


    Kannst es gerne so machen, wenn du denkst das es so für dich in Ordnung ist. Ich würde das für mich persönlich so nicht machen wollen. Einfach auch aus der Sicht das oftmals der Ton nicht richtig hinhaut und Virtuelle Maschienen oftmals nur mit DirectDraw arbeiten können statt Direct3D bzw. OpenGL.


    Performanter wäre es wirklich den Snes9x zu verwenden. Der ist sein [lexicon]Zsnes[/lexicon] Vorgänger deutlich weiter voraus. Zumal auch die gleichen Entwickler beteiligt waren.


    Den Snes9x benutze ich selber auf dem Handy und würde ihn auch fürs Aufnehmen verwenden. Aber mir kam grade der Gedanke und wollt mal nachfragen ^^

  • Den Snes9x benutze ich selber auf dem Handy und würde ihn auch fürs Aufnehmen verwenden. Aber mir kam grade der Gedanke und wollt mal nachfragen


    Wie gesagt, kannste gerne machen. Wäre aber zum einen nicht grad Optimal, zum anderen auch mit viel Umständen verbunden.


    Machst dir das halt somit komplizierter als es ist, weil es gibt ja durchaus bessere Mittel und Wege. Man muss ja nun nicht ein emuliertes System in einen emulierten System starten.
    Meist haste halt dann viele Schererein mit Ton und Bild und das muss ja nicht sein sich damit noch rumzuärgern. Dann lieber ein passenden Emulator nutzen. ^^

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!