Visual Boy Advance - Einstellung + interne Aufnahme

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Visual Boy Advance - Einstellung + interne Aufnahme

      Anzeige
      Dies ist Anleitung zur Einstellung und Aufnahme des VBA Emulators. Sie dient zur Orientierung und Verbesserung des eben genannten und soll gerade für Let's Player eine durchaus saubere und scharfe Qualität liefern.

      Wenn ihr Verbesserungsvorschläge habt zum Thema Visual Boy Advance oder noch etwas erklärt haben wollt, schreibt einfach dazu. Sollte es etwas sein was wichtig ist, aber mir bisher entgangen ist, so füge ich es entsprechend dem Tutorial hinzu.

      Inhalte:
      1. Wichtige Anmerkung!
      2. Frames und Geschwindigkeit
      3. Speichermethoden der Geräte
      4. Auflösungen von GBA, GB/GBC / Video
      5. Farben / Spezielle GB/GBC Gimmicks
      6. Bild-Filter oder nicht?
      7. Alternativer BIOS: ja oder nein?
      8. Aufnahme über den Emulator und dessen weitere Verarbeitung
      9. Multiplayer / Tausch von Daten (kommt noch)


      1. Wichtige Anmerkung

      Die Einhaltung der in den nächsten Punkten folgenden Angaben dienen lediglich der Verbesserung zur qualitativen Aufnahme, Verarbeitung und Gameplay.
      Jeder ist selbst für seine Aufnahmen verantwortlich und entscheidet natürlich selbst wie er seinen Emulator einstellt oder gar aufnimmt.
      Diese Anleitung soll euch nur ein paar Tipps geben. Ich werde auch entsprechende Ergebnisse via Bild oder Video präsentieren wie es dann aussieht im Nachhinein.

      2. Frames und Geschwindigkeit

      Der erste und wichtigste Punkt wäre es den Emulator dazu zu bewegen keine Frames zu überspringen. Das sollte auf heutigen Rechnern kein Problem darstellen. Aber auch alte Rechner sollten damit keine Probleme haben. Es sei denn das jemand noch mit einem lahmen 233Mhz Rechner mit Win2000 hantiert.

      Unter Options -> Frameskip sollte daher folgendes eingestellt werden:
      • Keine Frameskips (Sprich keine Frame Überspringungen). Also auf 0 stellen
      • Throttle (Drosslung) auf no Throttle stellen
      • Automatic (Sprich automatische Frame Überspringung) deaktivieren
      Damit wird erreicht das keine Frames fehlen und die Emulation nicht gedrosselt wird.

      Unter Options -> Emulator sollten folgende Optionen so aussehen:
      • Synchronize sollte aktiviert sein
      • Real-Time Clock sollte deaktiviert sein
      • Speed-up Toggle sollte deaktiviert sein
      Damit wird die Emulation auf 95% - 100% gehalten

      Die Emulation eines Emulators geschieht mit einer Variablen Framerate. Das bedeutet das sie nicht akkurat der Geschwindigkeit einer echten Konsole entspricht. Daher sind 95% - 100% ein sehr sehr gutes Ergebnis. Vorwiegend wird es aber zwischen 98% und 100% schwanken.

      Das ist für die spätere Art der Aufnahme noch wichtig das man das weiß.

      Der VBA läuft bei der Emulation mit einer max. FPS von 60 FPS
      Das bedeutet das jedes Spiel mit 60 FPS läuft, da kein Frame übersprungen wird.

      Die tatsächliche FPS jedoch für die Roms selbst auf einer original Konsole beträgt ca. 59,701 FPS.
      Diese FPS ist taucht später noch mal auf unter den Punkt 8.

      Da die Emulation so zwischen 95% und 100% liegt, wird die FPS also so zwischen 57 und 60 FPS liegen.

      Hin und wieder kann es zu Soundknacksern kommen. Das passiert immer dann wenn Bild mit Audio synchronisiert werden, damit in der Emulation es auch wieder entsprechend passt. Die sollten aber bei einer Emulation das zwischen 95 und 100% läuft kaum vorkommen.


      3. Speichermethoden der Geräte

      Dieser Punkt beschäftigt sich mit der Emulation des Speichers der für einige Spiele wichtig ist.
      Nicht jedes Spiel wird vom Emulator dem richtigen Speichertyp zugeordnet und das wird vom Spiel entsprechend mit einer Fehlermeldung Quittiert.

      Das kann dann z.B. so aussehen:


      Wenn es also mal dazu kommt das eine Emulation aufgrund von Fehlermeldungen oder auch das verweigern von Savegames ermöglicht das Spiel nicht zu spielen, dann muss der Speichertyp entsprechend gewählt werden.

      Dies kann man unter Options -> Emulation -> Save Type umstellen.
      Standard ist diese Einstellung auf Automatisch mit 128kb Flash Speicher gestellt.

      WICHTIG: Sobald diese Option verändert wird muss entweder der Emulator neu gestartet werden oder die ROM geschlossen und neu geladen werden. Ein Reset bringt keine Änderung

      Sollte bei der Umstellung die Emulation einfrieren, habt ihr möglicherweise einen falschen Speicher gewählt und müsst das Ganze noch mal mit einem anderen Speicher probieren.


      Als Musterlösung für z.B. Classic NES Series Zelda 2 und Dragon Ball - Legacy of Goku hat sich der EEPROM bewährt.

      Sollten Spiele nicht speichern können oder gibt es Ladeprobleme, so sollte die Flashgröße umgestellt werden von 128k auf 64k
      Es gibt nämlich Spiele die haben mit bestimmten Größen Probleme.

      Daher nicht gleich aufgeben, wenn ihr vor so einem Problem sitzt, sondern einfach mal den Speicher der Emulation umstellen.


      4. Auflösungen von GBA, GB/GBC / Video

      Als Grundlegendes sollte man erst mal wissen mit welcher nativen Auflösungen GBA und GB/GBC Spiele laufen. Das dient dazu um im späteren Verlauf auch die beste Qualität erzielen zu können als auch die Aufnahme Datei Größe zu minimieren.

      So hat ...
      • ... der GBA eine native Auflösung von 240x160 Pixel. Das entspricht einer 3:2 Auflösung
      • ... der GB/GBC eine native Auflösung von 160x144 Pixel. Das entspricht einer 10:9 Auflösung


      Warum ist das wichtig zu wissen?
      Weil der Emulator in erster Linie mit diesen Auflösungen ohne Filter das Spiel 1:1 ohne Verluste an Schärfe und Qualität wiedergibt und man so die Aufnahmedateigröße erheblich sparen kann.
      Weil warum mehr aufnehmen, wenn das Spiel nicht mehr gibt.
      Bei größeren Auflösungen nehmt ihr zwars mehr auf, aber auf Kosten von Speicher und höheren Anforderungen an Codec und Festplatte. Auch ist die Verarbeitung eines größeren Videos mit mehr Zeit verbunden.


      Um später die Aufnahme über ein Drittprogramm führen zu können sollte unbedingt unter Options -> Video -> Render Method folgendes eingestellt werden:
      • Direct3D (Ausgabe über Direct 3D, was auch Hooking Fähig ist)
      • D3D Nearest (Unbedingt nutzen. Nicht Bilinear nutzen. Bei Bilinear wird das Bild wieder unscharf. Nearest ist scharf)
      ODER
      • OpenGL (Ausgabe über OpenGL, was ebenfalls Hooking Fähig ist)
      • GL Nearest (Unbedingt nutzen, da scharfe Ausgabe)
      • QL triangle (Fragment Shader, wird für die 3D Nutzung benötigt und beschreibt die Dreiecks Verbindung. Sprich Polygone.)


      DirectDraw bitte nicht nehmen. Diese Darstellung ist nicht Hookbar von Aufnahmeprogrammen und erzeugt auch keine schöne klare Ausgabe.


      5. Farben / Spezielle GB/GBC Gimmicks

      Die maximalen Farben die ein GBA/GBC Rom haben kann ist auf max. 15Bit limitiert. Die niedrigste auf 2Bit beim GB.

      GBA
      GBC
      GB
      15Bit = 2^15 = 32768 Farben
      15Bit = 2^15 = 32768 Farben

      Nur 32 bis 56 gleichzeitig darstellbar, da eine Farbpalette genutzt wird
      2Bit = 2^2 = 4 Farben

      Einmal für Sprites und einmal für die Hintergründe
      Sind bei einem normalen GB alle einheitlich.

      Farben sind Abhängig von der Beschichtung des Displays


      Das bedeutet das selbst der VBA auf einer Grafikausgabe mit 16Bit ausgegeben werden kann, da alle Module mit ihren Farbanzahlen darunter liegen.

      Da man solche Codecs aber nicht zur Verfügung hat und die meisten eh 32Bit verwenden wird die Ausgabe des VBA mit 24Bit + 8Bit Alpha betrieben.
      Das heißt das die native Farbanzahl die zur Ausgabe dient mehr ist als nötig.
      Damit ist es möglich die Aufnahme wirklich nativ zu gestalten.

      Gimmicks

      Als Gimmick lassen sich beim GBC und GB noch ein paar schöne Sachen umstellen.

      So kann man z.B. einen Super SNES Gameboy Adapter emulieren, der bei einigen GB und GBC Spielen einen individuellen Rahmen mit ausgeben kann.
      Um dies nutzen zu können muss man lediglich unter [Options -> GameBoy]
      • Border + Border Automatic aktiv haben
      Das funktioniert wie gesagt nicht bei allen Games. Einige Roms haben dafür einen speziellen Speicher für diese Borders und können selbst bei GB Spielen bis zu 15Bit Farben darstellen. Das Spiel allerdings wird bei GB Spielen lediglich eingefärbt. Sprich die 4 Hauptfarben werden dann anders coloriert.


      Für den GB selbst kann man die 4 Hauptfarben für Sprites und Hintergrund individual festlegen, was natürlich auch ein schönes Gimmick ist. Weil nur Grautöne ist ja auch langweilig. Und es nutzt auf Youtube eh so ziemlich jeder diese Grautöne.

      Dabei gibt es einen Unterschied zur original Konsole.
      Die Original Konsole machte ihr farbliches Display zu nutze. Daher waren die Spiele oftmals in einem grün- oder gelblichen Ton gehalten statt die üblichen Grautöne.

      Um diese ändern zu können geht man unter Options -> GameBoy -> Colors...
      Man hat dort auch schon ein paar vorgefertigte Farben zur Auswahl.

      Um in etwa den Touch des grünlichen Tons zu bekommen stellt man die 4 Farben auf folgende RGB Werte:

      Quellcode

      1. 1 Farbe - 232 248 200
      2. 2 Farbe - 136 192 112
      3. 3 Farbe - 40 104 56
      4. 4 Farbe - 0 16 8



      6. Bild-Filter oder nicht?

      Als Bild-Filter werden Pixel Filter bzw. Point Filter oder aber auch Effekte bezeichnet. Sie dienen zur optischen Aufwertung wie man die Spiele sehen möchte.

      Die Filter machen unter Umständen das Bild komplexer und somit steigt auch die Dateigröße der Aufnahme.
      Wer sparen will sollte daher keinen Filter nutzen. Wem das nicht stört, nutzt halt eins.

      Optimal ist es wenn kein Filter genutzt wird und die Spiele in ihrer nativen Auflösung aufgenommen werden (siehe dazu Punkt 4).

      Damit ist es möglich A) Speicherplatz zu sparen, B) Festplatten zu schonen, C) Aufnahmecodec nicht sonderlich zu beanspruchen (CPU) und D) Verarbeitungszeiten zu verkürzen. Und als Krönung ist es dann auch noch möglich, sollte man in RGB aufgenommen haben, mit einem eigenen Punkt-Skalierer das Video aufzuwerten für YT.


      7. Alternativer BIOS: ja oder nein?

      Ein BIOS an sich ist für die Emulation für den VBA oder anderen GameBoy Emulator meistens nicht nötig, da sie mit einem selbstgeschriebenden System arbeiten um Spiele abspielen zu können.
      Daher sind original BIOSe für diese Emulatoren eher als Gimmick zu sehen um das Startlogo für den Gameboy samt Ton ausgeben lassen zu können, bevor das eigentliche Spiel startet.

      Man kann mit ihnen auch nix weiter anfangen, es sei denn das man ein richtiger Pro-Modder ist und Hardwaretechnisch sehr versiert in dem Gebiet ist.

      Da das Downloaden oder verbreiten von BIOS'en für Konsolen illegal ist, biete ich hier auch keine Links zu diesen an.
      Wer sie dennoch möchte kann mich gerne kontaktieren für Links zu diesen. Oder macht sich selbst mit Google auf die Suche.

      Was ich aber tun kann ist euch die jeweiligen Videos dafür als RGB Material anzubieten die ihr dann entsprechend an euren Videos anbringen könnt.
      mediafire.com/file/ajahtm07rdko39r/GBA_BIOS_Video.7z

      Diese Videos sind in der nativen Auflösung entsprechend.
      Hier mal ein Video wie das dann auf YT aussieht, wenn man sie entsprechend noch behandelt hat. (Es handelt sich dabei immernoch um die Videos in dem Link den ich eben gab)





      8. Aufnahme über den Emulator und dessen weitere Verarbeitung

      Die Aufnahme über den Emulator selbst ist immer zu 100% ohne CPU Schwankungen verzeichnet.
      Das heißt das selbst wenn eure Emulation während der Aufnahme auf 10% runter bricht bleibt diese Aufnahme zu 100% immer im Original Tempo.

      Sprich wenn ihr 5sek eine Emulations FPS von 10 habt, dann bleibt die Aufnahme immernoch auf seine 60 FPS und hat für diese Zeit eine Aufnahmezeit von vllt. 1sek.

      Bei einer Beschleunigung der Emulation gilt dies auch. Jedoch lauft man hier auf die Gefahr hin das Frames fehlen, sodass die Aufnahme recht stockend rüber kommt.

      Eine interne Aufnahme über den Emulator könnt ihr unter Tools -> Record -> Start AVI Recording machen
      Beachtet das solch eine Aufnahme nix für Leute ist die eine Live Kommentar dazu machen wollen.

      Diese Aufnahmen eignen sich eher für Guides oder Walkthroughs.

      Problem ist vor allem die Asynchronität zwecks des oben genannten Vorgangs der Aufnahme.

      Die Codec Auswahl erfolgt über VFW Codecs und kann frei gewählt werden.
      Aufgenommen wird immer ohne Filter in der nativen Auflösung mit 60 FPS.

      Diese FPS passt aber nicht. Wie in Punkt 2 angesprochen laufen original Roms mit einer FPS von ca. 59,701.

      Daher muss das Video auf die Audiospur nach der Aufnahme nachsynchronisiert werden

      Am besten geht dies mit folgenden AVISynth Skript:

      Quellcode

      1. AVISource("F:\Aufnahme\GBA.AVI")
      2. Sync(0)
      3. # ===================================
      4. # Längenanpassung von Video und Audio
      5. # ===================================
      6. # clip0 - Clip sollte Video und Audio haben!!!
      7. # order - Gibt an auf was angepasst werden soll
      8. # 0 (Standard) - Videolänge wird auf Audiolänge angepasst
      9. # 1 - Audiolänge wird auf Videolänge angepasst
      10. # x - Infoanzeige für die Berechnung
      11. # infosize - Schriftgröße für die Infoanzeige
      12. Function Sync(clip clip0, int "order", int "infosize") {
      13. order = Default(order, 0)
      14. infosize = Default(infosize, 18)
      15. return (order == 0) ? \
      16. clip0.AssumeFPS(clip0.framecount / (clip0.audiolengthf / clip0.audiorate)) : (order == 1) ? \
      17. clip0.AssumeSampleRate(round(clip0.audiolengthf / (float(clip0.framecount) / (float(clip0.frameratenumerator) / float(clip0.frameratedenominator))))) : \
      18. clip0.Subtitle("Input FPS = " + string(clip0.frameratenumerator) + " / " + string (clip0.frameratedenominator) + " = " + string(clip0.framerate) + "\nInput Samplerate = " + string(clip0.audiorate) + "Hz\n\nOrder 0\nSync Video to Audio with new Samplerate\n" + string(clip0.audiolength) + " Samples / (" + string(clip0.framecount) + " Frames / (" + string(clip0.frameratenumerator) + " / " + string (clip0.frameratedenominator) + ") FPS )\n= " + string(round(clip0.audiolengthf / (float(clip0.framecount) / (float(clip0.frameratenumerator) / float(clip0.frameratedenominator))))) + "Hz\n\n" + "Order 1\nSync Audio to Video with new Framerate\n" + string(clip0.framecount) + " Frames / (" + string(round(clip0.audiolengthf)) + " Samples / " + string(clip0.audiorate) + "Hz)\n= " + string(clip0.framecount / (clip0.audiolengthf / clip0.audiorate)) + " FPS" , size = infosize, lsp=1)
      19. }
      Alles anzeigen
      Die entsprechende Funktion findet sich auch im Sagaras Skriptmaker im Plugin Verzeichnis in der Datei Blend.avsi wieder.

      Ladet man dieses Plugin entstehen nur noch diese Zeilen für das gesamte Skript:

      Quellcode: Video zu Audio (SSM Plugin Blend.avsi)

      1. Import("C:\Program Files(x86)\Sagaras Scriptmaker\Plugins\Blend.avsi")
      2. AVISource("F:\Aufnahme\GBA.AVI")
      3. Sync(0)
      Damit wird das Video auf Audio synchronisiert und man kommt auf eine gesammt FPS von ca. 59,701

      Skaliert man diese nativen Auflösungen auch noch mit Nearest Neightbour oder einem beliebigen Punkt Skalierer, so kann man selbst eine 144p oder 160p Auflösung auf das 12x fache skalieren ohne Verluste am Video zu haben.