Dolphin 5.0

Prerequisites

Guide

  1. In Graphics -> General -> Aspect Ratio make sure you use Auto. That way Dolphin will render the video with correct pixel aspect ratio, and you will not need to stretch the video afterwards to 4:3 or 16:9.
  2. In Graphics -> Advanced check Frame Dumps use FFV1 to get lossless video output.
  3. In Movie check Dump Frames and Dump Audio.
  4. Go to Config -> General and set Speed Limit to Unlimited.
  5. Go to Config -> Paths and Add... the folder you keep GameCube and Wii images in. Hit OK, wait for the game list to get populated, and then select the game you want to run by highlighting it in the list. Otherwise, load the game directly via File -> Open.
  6. Replay the movie by going to Movie -> Play Input Recording and selecting your .dtm file.
  7. When you're done dumping, hit the Stop button in the GUI. The resulting files will be in Dolphin-x64-5.0-ffv1\User\Dump\Frames and Dolphin-x64-5.0-ffv1\User\Dump\Audio.
Audio dump usually consists of 2 files: dspdump.wav and dtkdump.wav. In most games, dtkdump.wav is empty, but there are games that use it, so you'll have to mix them together for those. This can be done in AviSynth with MixAudio:
MixAudio(dspdump, dtkdump, 1.0, 1.0)
Sometimes those audio dumps are also split into 2 more files. It's because Dolphin changes sameplarate on the fly. You'll need to set them to the same samplerate in order to splice them.
If for some reason, you can't preview the AVI in VirtualDub, you can convert the resulting AVI with ffmpeg:

Specifics for later Dolphin 5.0 versions

(TODO: Figure out which versions exactly, but should be around 5.0-10000)
You can set the dumping codec to Ut Video by editing User\Config\GFX.ini with the following in the Settings section:
UseFFV1 = False
DumpCodec = utvideo
Vertex Rounding should be enabled to prevent graphical issues when upscaling. This setting does not affect 1x dumps.
For most Wii games and some GC games, a few blank frames need to be appended at the beginning to properly ensure audio/video sync, which can be done with the following:
a = AVISource("video.avi")
afix = BlankClip(a, 40) + a
AudioDub(afix, WAVSource("audio.wav"))
Double-check with a dump that was started mid-gameplay or during the intro cutscenes to ensure the audio and video are synced properly.
The above is of course not needed for Dolphin 5.0 (pre-5.0-5700, at least).

Antialiasing

There a lot of ways to apply antialiasing, and options will differ in different Dolphin versions and revisions. Here's some basic principles.
  1. In Graphics -> Enhancements select the highest Anisotropic Filtering option.
  2. In Graphics -> Enhancements select the highest Anti-Aliasing option your GPU supports.
    • If supported and works well, this option may be replaced with Post-Processing Effect -> FXAA, which works much faster and gives comparably good results at high resolutions.
  3. Make sure Scaled EFB Copy is enabled.
  4. If you're doing a high definition encode for youtube, increase Internal Resolution to something close to 2160p.
Note that option names for Internal Resolution may not match the exact resolution your video will be in, so to check what internal resolution it actually is in, hit the ScrShot button in Dolphin GUI and see what resolution the image in Dolphin-x64-5.0-ffv1\User\ScreenShots will have. Note that you don't have to match 2160p exactly, because rendering at non-integer scale factors may cause bugs in how the games render video. You'll resize it to your target resolution during encoding in the AVISynth script.
Another issue to be aware of is that Dolphin doesn't allow its window to go beyond your screen resolition.
Some games outright refuse to apply anti-aliasing, because it's how they are configured in Dolphin's game database to prevent desyncs and emulation problems. Dump such games at native resolution and upscale via point-resize or lanczos-resize.

Aspect ratio

Dolphin tries not to render black bars that are present in some games, because that allowes to fill more of the screen with actual data in fullscreen mode. So aspect ratio of the video (ratio between width and height of the frame) may not always match that of the emulated console (namely, 4:3 for GameCube and 16:9 for Wii). Dolphin uses heuristics to determine proper pixel dimensions for any given video frame. So if the video is to be resized, both width and height need to be resized by the same exact factor.
Setting Graphics -> General -> Aspect Ratio to Auto forces correct aspect ratio most of the time, and you don't have to stretch the footage in either dimension to "fix" aspect ratio. However, with some games, Dolphin doesn't properly detect if the current mode is meant to be 4:3 or 16:9, so you may need to ensure the dump doesn't look unnaturally stretched or squished.

Resolution changing on the fly

Some games change resolution on the fly. Usually they have one resolution in gameplay segments and another in the rest of the footage. Aspect ratio (between width and height) may also be different in those segments.
After the game has changed resolution, Dolphin 5.0 stretches the video to whatever the initial resolution was. That means that if aspect ratio of the raw video frame also changes, pixel dimensions will be incorrect across segments.
Newer revisions of Dolphin allow to Dump at Internal Resolution in Graphics -> Advanced, but if the game changes resolution on the fly, that will cause drifting audio-video desync when you splice them back together. Auto-Adjust Window Size in Graphics -> General causes the same problem even if Dump at Internal Resolution is disabled. So use the above workarounds to force gameplay resolution to the entire video (while dumping or in post-production).

Audio sync

Since 5.0-5700, a hardware bug of the GameCube was emulated involving the sample rate. This resulted in the sample rate being changed to 32029/48043Hz. This however was inaccurate, as the GC actually outputs at a non-integer sample rate. Rounding to an integer backfired here, as these sample rates do not have an even CPU cycles per sample rate. So the code ends up actually outputting different sample rates, which were several hertz off (32024.2488139/48040.3301537Hz). Since 5.0-16788, this has been corrected, so the correct sample rates are output and this discrepancy no longer exists (32028.4697509/48042.7046263Hz). However, wav files can only store an integer sample rate in their header, so while the code outputs an accurate sample rate, it is rounded off in the wav header (or more so it's now less than a hertz off from reality).
This program resolves the issue by simply taking wav files and resampling them back to 48000Hz. It will be able to correctly identify the true sample rate from any Dolphin wav file, including pre-5.0-5700 builds. Usage is simple, if you only have a single file you can just drag and drop the file in. If you have multiple files (i.e. split due to changing sample rates) you can give all of them at once, and it will concatenate them together. The order used is the order given, so you probably want to make a simple batch script to give all the files.
fix_gc_audio.exe "path1.wav" "path2.wav" "path3.wav"
Of course, anything before 5.0-5700 along with Wii games on any Dolphin version do not have this issue, so this program isn't super useful. It can be used just for concatenating multiple audio files together, but that's already possible with AviSynth anyways.

Dolphin pre-5.0

Prerequisites

Make sure you get the correct Dolphin version, which should be stated in the submission notes, as different releases are neither sync-stable nor sync-compatible with each other. In versions before 4.0-3595, it is obligatory to fix Dolphin's broken video and audio dumping feature prior to obtaining a capture. Either rely on patched binaries or, as a Windows user, try patching yourself:
For Linux systems Ilari has created a set of patches providing similar functionality; ask on IRC if you need them. In any case applying the patches will likely result in merge conflicts, that have to be resolved manually. Ignoring this step will result in broken audio/video dumps on versions older than 4.0-3595! Some movies may require functionality (like memory card or disk switching) for playback that is not part of any official release. In these cases it is advisable to check the submission notes and discussion thread for provided patches or binaries.
Hint: Before starting the capturing process try to fully sync the run (Follow steps 1, 2 or 3, 7 (without Dump Audio) and 8). This is to make sure possible frustration caused by unnoticed late desyncs is kept to a minimum. Important: Sometimes a movie will desync on a second playback due to files being present that were created on first playback. Keep in mind that these have to be deleted before starting the capture! Check the submission details or discussion thread to be aware of such causes of desync. Should you get graphical glitches (missing/black or otherwise corrupted textures) try a different backend (e.g. OpenGL instead of DirectX) if possible.
Note: Windows Dolphin avsync versions older than 4.0-1711 crash after splitting the first 2GB segment. To overcome that, use one of these:

Guide

The following instructions assume you are using either natt's or Ilari's AVhack. Menu structure as well as names of menu items may change between releases.
To avoid unnecessary hassle ensure you fulfill the assumptions made in step 9, first sentence.
  1. Navigate to Options->Configure. Uncheck Enable Dual Core and Enable Idle Skipping. Set Framelimit to off / Speed limit to Unlimited. Make sure the CPU emulator engine is set to JIT Recompiler.
  2. For some Gamecube games: Navigate to Options->Configure->Gamecube and check Skip BIOS. Some movies require a memory card inserted, while others expect none to be present. Set the Slot options accordingly.
  3. For some Wii games: Navigate to Options->Wiimote Settings. Click Configure for Wiimote 1 and Clear. Also choose or unset the extension controller. These instructions are not required for all games.
  4. Go to Options->Graphics Settings -> Hacks, disable External Frame Buffer (related to movie sync), enable EFB Copies and set it to RAM (and enable Cache if you wish).
  5. Dumping is to be done on highest graphical settings. Navigate to Options->Graphics Settings and check Auto adjust Window Size. From that window navigate to Enhancements and set Internal Resolution to 2x Native, Anti-Aliasing to 16xQ CSAA or equivalent (8x SSAA) and Anisotropic Filtering to 16x (anisotropic filtering leads to graphical glitches with some games. Leave it set to 1x if this is the case.)
    • Linux specifics: For games displaying their content in 16:9 it may be necessary to force widescreen mode at this point: Options->Graphics Settings, set Aspect Ratio to Force 16:9. This however will not suffice because Dolphin will always resize the window to a 4:3 resolution and as the window dimensions determine the video resolution, you have to resize the window to the correct resolution (2x the native 16:9 resolution, i.e. 1536x864) yourself. Ensure the window content (that is without titlebar and other decoration by your window manager) has the correct dimensions with e.g. xwininfo.
    • TODO: Windows specifics: Does the same apply to Windows?
  6. Start the game without any dumping feature enabled. This way Dolphin will resize its window to the correct resolution. Now Dolphin has to be configured to write audio and video data to disk.
  7. Navigate to Options->Graphics Settings and uncheck Auto-adjust Window Size. From that window navigate to Enhancements and set Internal Resolution to 4x Native. Check Dump Frames on the Options->Graphics Settings->Advanced tab / Movie->Dump frames menu.
    • Linux specifics: Check Frame Dumps use FFV1 as well. The Dump Frames option will make Dolphin dump audio too.
  8. Navigate to Options->DSP Settings and choose DSP LLE recompiler as DSP emulator engine. This type of sound emulation requires dsp_coef.bin and dsp_rom.bin to be present in the User\GC\ on Windows or $HOME/.dolphin-emu/GC on Linux directory or you will receive an error message. On Windows check Dump Audio in the Emulation / Movie menu and set Options->DSP / Audio settings->Audio Backend to "No audio output" (sound will be dumped nevertheless).
  9. Assuming the game is in your library and you have started it at least once, choose Play Recording from the Emulation / Movie menu and select the movie file to be captured. On Windows and Dolphin 4.0 select a lossless RGB video codec of your choice and click Ok. Audio and video are now being captured. Should the emulator crash at this point examine the User\Dump\ directory of your Dolphin installation ($HOME/.dolphin-emu/GC on Linux) and create the folders Audio and Frames if either of those are missing.
    • Linux specifics: Important: During the entire video capture no window must overlap with the one showing the actual gameplay, so it is wise to check Keep window on top in Options->Graphics Settings.
  10. To stop the capturing process at the desired end point click Emulation->Stop.
Read on if you want to find out how to deal with the files that have been created for encoding: Dolphin encoding guide

EncodingGuide/VideoDumping/Dolphin last edited by fsvgm777 on 10/22/2024 7:36 PM
Page History Latest diff List referrers View Source