THPConv-Guide

From Super Mario Galaxy wiki
Revision as of 13:36, 15 May 2023 by HummingOwl (talk | contribs) (Created page with "This guide is created specifically to make THP videos for SMG1. Other games that support THP can have a different THP setup. <!-- ##### --> <!-- TOOLS --> <h1>Required Tools</h1> * FFmpeg ([https://web.archive.org/web/20200901234146/https://ffmpeg.zeranoe.com/builds/win32/static/ Win32 older builds], for Linux you can use your package manager) * THPConv.exe (with dsptool.dll, [https://archive.org/details/WiiDevelopmentPackage/ Wii SDK]) * [https://github.com/Master...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This guide is created specifically to make THP videos for SMG1. Other games that support THP can have a different THP setup.


Required Tools

  • THPConv.exe (with dsptool.dll, Wii SDK)
  • Wine (for Linux users)


Steps

Open a CMD in the same place the video you want to convert is and type the following command (Fig. 1):

path\to\ffmpeg.exe -i [input_video] -vf scale="[width]:[height]" -r [fps] [temp_video]
  • [input_video] is the video of your choice to convert. Can be any video format.

  • [width] is the width the [temp_video] will have. Cannot exceed 672 pixels.

  • [height] is the height the [temp_video] will have. There is no limit on this value.

  • [fps] are the frames per second the [temp_video] will have. Frame rates can be from 1.0 to 59.94.


File:Example.jpg
Fig. 1 - Create temp video



NOTE 1: All this information is extracted from the Wii SDK docs for THPConv.

NOTE 2: SMG uses 59.94 fps and 640x368 video dimensions for all THP files in the MovieData folder. Use path\to\ffmpeg.exe -i [THP video file] to see it yourself.

NOTE 3: if you use different frame rates than 59.94 the video on SMG1 will play slower or faster but not at its "normal" speed.

NOTE 4: You can use different values for the width and height of the video, be sure they follow the rules said above and that the dimensions are a multiple of 16.

NOTE 5: To get a better video resolution on the final THP video you can use the following flags on the above command -preset veryslow -b:v 21M (file size will increase a lot as -b:v sets the bitrate of the output video). 21M was selected because of the bitrates of the OG THP videos on the MovieData folder (you can select any value you want, M means megabyte).



Create a folder named temp in the same place the [temp_video] is and then type the following command (Fig. 2 and 3):

path\to\ffmpeg.exe -i [temp_video] temp\output%03d.jpg

This will dump all the frames the [temp_video] has into JPG images.


File:Example.jpg
Fig. 2 - Create temp folder


File:Example.jpg
Fig. 3 - Dump temp video frames into folder



NOTE 6: JPG or JPEG can be used, the only restriction the THPConv docs say is that they need to be in the :baseline DCT format (which ffmpeg automatically converts them to with the above command).

NOTE 7: The minimum frames a THP video can have without breaking the game is 21. Tested with PrologueA.thp in Riivolution.

NOTE 8: Very low width and height values for the THP video (16x16 for example) will allow to show :blue rectangles on the screen when reproducing the associated cutscene. Tested it very little so I am unsure if this happens all the time.

NOTE 9: To get a video resolution similar to the [temp_video] on your THP video you can use the following flag on the above command -q:v 1.



Then, to get the audio part of the video execute (Fig. 4):

path\to\ffmpeg.exe -i [temp_video] -acodec pcm_s16le -ar 32000 [WAV_audio].wav
  • [WAV_audio].wav is the name of the WAV audio file to use with THPConv.

This will convert the audio of the [temp_video] in a WAV audio using the pcm_s16le format.


File:Example.jpg
Fig. 4 - Create WAV audio file



NOTE 10: WAV audios are the only audio input THPConv can process. Specifically non-compressed 16-bit PCM data ones.

NOTE 11: WAV audios can be Mono or Stereo, they are both supported by THPConv.

NOTE 12: the -ar 32000 sets the frequency of the WAV audio. 32000 Hz is needed for the audio in SMG1 since different values make the audio sound at a higher or lower pitch.



Finally, to get the THP converted file we do (Fig. 5):

path\to\THPConv.exe -j temp\output*.jpg -s [WAV_audio].wav -r 59.94 -d [Output THP].thp -v
File:Example.jpg
Fig. 5 - Create THP file with THPConv



NOTE 13: the -j flag is used to select the JPEG sequential frames that are going to be used in the THP video.

NOTE 14: the -s flag is used to select the WAV audio to be used in the THP video (optional).

NOTE 15: the -r flag is used to set the frame rate of the THP video. If you want your video to reproduce normally on SMG1 use 59.94 as frame rate. If omitted THPConv will set the frame rate of the THP video to 29.97 fps.

NOTE 16: the -d flag is used to set the THP file creation path and name.

NOTE 17: the -v flag is used to print more info on the CMD when THPConv is converting the JPG frames and WAV audio into a THP video (optional).

NOTE 18: to check more info on the commands THPConv has, check its documentation (Wii SDK).



Now you can replace the THP file with the one you want from your SMG1 dump and test the video on game!



NOTE 19: You can use VLC Media Player to play/test THP videos as well as FFmpeg to convert THP videos to other video formats (you can't convert to THP with FFmpeg).

NOTE 20: When testing the THP video on console it is better to not use Riivolution but rather pack the THP into the WBFS file and run said WBFS in a USB Loader. Due to either Riivolution file copying velocity or how inefficient the THP processing algorhythm/video format is (or a combination of both) the video can't be reproduced at its normal speed when being replaced by Riivolution.


Thanks to Lord-Giganticus for his guidence and EmilyTheDemon for her enthusiasm. Tutorial based on the Luma's Workshop Wiki