[How-To] Playing Customs on PS4 (BETA)
- This topic has 54 replies, 2 voices, and was last updated 1 year, 3 months ago by John Smith.
-
AuthorPosts
-
December 25, 2018 at 5:32 am #396626
A word of warning: the tools used to build DLC for Rock Band 4 are still unfinished, so keep in mind that errors and bugs may abound. Until this changes consider this a BETA/PRERELEASE. Please report all the issues you run into either in this thread or on GitHub!
1. Prerequisites
- A PS4 with firmware 6.72 or lower (personally, I am on 6.72)
- Rock Band 4, either already installed digitally on the PS4 or as a Blu-Ray copy (it is not possible to install RB4 digitally on 5.07 or lower anymore due to no PSN access)
- A Windows PC or Mac/Linux with Mono installed
2. Before You Begin
The first thing that you must do is set up HEN on your PS4. There are many guides online on how to do this, but the general idea is that you visit a webpage, either in the web browser or by redirecting the user manual, and the webpage automatically jailbreaks your system and sets up a Homebrew ENabler (HEN). This is what allows you to install custom PKGs that the PS4 will accept as DLC.
HEN Guides
Currently HEN is only available for firmwares at or below 6.72, thus the prerequisite.
3. Converting Customs
Songs on Rock Band 4 use a number of new file formats which differ significantly from Rock Band 3 and prior games. Notably, rather than using a MIDI file for the chart, a new “RBMid” format is used which is a sort of pre-compiled chart. For this reason, I have been working on a project called LibForge which is software for converting RB3 format songs to RB4. It is written in C# so it will run on Windows natively or on Mac/Linux with Mono.
- LibForge on Github – if you want to see the source code, submit pull requests, report issues, etc
- LibForge on AppVeyor – use this to download the latest EXEs
LibForge is still considered beta software, and the conversions will not be perfect. Because the new file formats have been reverse engineered by essentially educated guessing, not everything is perfect. Notably, there are some bugs related to vocal harmonies. Guitar, Bass, and Drum tracks, as well as Solo Vocals should be mostly working, however. As more people test and report issues, the quality will improve.
Using ForgeToolGUI (Recommended)
The recommended way to go about converting CONs to PKGs for the PS4 is by using ForgeToolGUI.exe. Extract all the files from the ForgeToolGUI zip from here into a directory of your choosing, and open ForgeToolGUI (it’s the one with the little anvil icon). From there, just hit “Tools” -> “Convert CON to PKG” and follow the steps there:
It will fill in a default ID and description for you, which you can change as long as the ID remains all-caps and 16 characters long. You can also check the “Build for SCEE” checkbox if you are using a European/SCEE version of RB4.
Using ForgeTool (Advanced / Batch Use Only)
If you prefer using the terminal or want to write a batch script, ForgeTool is a command-line program that has a very convenient feature: converting from CONs to PKGs in a single step. The following command will convert a single CON to PKG:
ForgeTool.exe con2pkg C:CustomsCONsSong_rb3con C:CustomsPKGs
You should replace “C:CustomsCONsSong_rb3con” with the path to the CON file you’d like to convert, and “C:CustomsPKGs” with the folder you’d like to put the PKG into. ForgeTool will automagically convert all the files for you and build a PS4 PKG into that folder.
There are some other options you can use with ForgeTool which I’ll detail here:
If you are using an SCEE (European) version of RB4, add the –scee option:
ForgeTool.exe con2pkg --scee C:CustomsCONsSong_rb3con C:CustomsPKGs
If you want to customise the PKG name, add the –id option (the ID must be 16 characters long)
ForgeTool.exe con2pkg --id 16CHARIDENTIFIER C:CustomsCONsSong_rb3con C:CustomsPKGs
If you want to customise the PKG title as displayed on the PS4, add the –desc option:
ForgeTool.exe con2pkg --desc "Custom Song - Artist" C:CustomsCONsSong_rb3con C:CustomsPKGs
You can use any combination of these 3 options, just make sure they are after “con2pkg” and before the CON filename.
Finally, if you provide a folder full of CONs rather than a single CON, it will create a single PKG with multiple songs in it. In this case, you must provide the –id and –desc options.
4. Installing Your PKG
Copy your PKG files over to a USB drive, plug it into your PS4, and go to “Settings” -> “☆Debug Settings” -> “Game” -> “Package Installer” and select the .pkg. Then you should be able to start up RB4 and play it!
That’s all for now, work is still ongoing to make this process more user-friendly and error-free. Please report your successes and failures here.
Happy Holidays, everyone!
December 25, 2018 at 8:15 am #502600I’m so tempted to try this on my launch PS4 console. Thanks for providing this guide to the community. Would love to test how many customs RB4 can have in it’s setlist without worries of a limit cap as we know RB3 has. It’s great to see customs playable on current gen console hardware.
December 25, 2018 at 12:59 pm #502602Planning on making a video tutorial of this for people who prefer a video format tutorial over text-based. Will try to have out before the new year.
December 25, 2018 at 4:10 pm #502603wow i wake up Christmas morning to see this ?
Thanks so much guys – cant wait to try this out in the new year !!!!
Merry Christmas to all !!
December 26, 2018 at 4:35 pm #502615Customs on PS4? Bah gawd…. It’s incredible to me that there are people passionate enough to make this kinda stuff possible. Thank you guys.
Planning on making a video tutorial of this for people who prefer a video format tutorial over text-based. Will try to have out before the new year.
As a no0b with this kinda stuff, video tutorials are a Godsend. Thank you for taking the time to make the tutorial in a video to follow. It’s alot easier to follow along when you can just copy exactly what’s being done right before your eyes step by step.
December 26, 2018 at 4:55 pm #502616Thank you for your great work!!
But for now on it doesnt seems to be working for me. Any video tutorials maybe? Im using powershell (x86) on x64 windows 7 and if I print just “start forgetool.exe” without any params it works for 0,5 seconds and then closes right away. If I add con2pkg it closes with IndexOutOfRangeException error. But if I put all as being told in your manual it wont start at all saying that “there is no param, that will accept agruement “my_path_to_CON_file”. line:1 symbol:6″ – this error is rougly translated form russian (cause my system is in russian d-uh). What can cause this problem? Path IS right I’ve triple-checked it already.
December 26, 2018 at 5:59 pm #502617It’s a Christmas miracle!
December 27, 2018 at 4:19 am #502628I’ve just updated the OP with information on the new GUI for converting customs. Now there is no need to mess with a command line.
December 27, 2018 at 7:43 am #502630I’ve just updated the OP with information on the new GUI for converting customs. Now there is no need to mess with a command line.
Thanks! Going to try it right away when I come back home from work!
December 27, 2018 at 2:15 pm #502631I’m still having troubles to make it work even with GUI version (maybe I’m just dumb, who knows?). Here is log when I’m trying to pick a CON file (dire straits sultans of swing rb3con downloaded from this site). Please note that russian parts of the log are roughly translated in english.
Full information about using operative
(JIT) debugging instead of this dialog window is shown at the end of this message.************** Exception text **************System.NullReferenceException: Object reference does not indicate an object instance.in LibForge.RBSong.Value.FromData(Type t, DataNode d)in LibForge.RBSong.StructValue.FromData(StructType t, DataArray arr)in LibForge.RBSong.Value.FromData(Type t, DataNode d)in LibForge.RBSong.StructValue.FromData(StructType t, DataArray arr)in LibForge.Util.PkgCreator.MakeRBSong(DataArray array)in LibForge.Util.PkgCreator.ConvertDLCSong(DataArray songDta, IDirectory songRoot)in LibForge.Util.PkgCreator.ConvertDLCPackage(IDirectory dlcRoot)in ForgeToolGUI.Inspectors.ConversionInspector.LoadCon(String filename)in ForgeToolGUI.Inspectors.ConversionInspector.pickFileButton_Click(Object sender, EventArgs e)in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)in System.Windows.Forms.Control.WndProc(Message& m)in System.Windows.Forms.ButtonBase.WndProc(Message& m)in System.Windows.Forms.Button.WndProc(Message& m)in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************** Loaded builds **************mscorlibBuild version: 4.0.0.0Version Win32: 4.0.30319.18408 built by: FX451RTMGRELCodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
ForgeToolGUIBuild version: 0.1.132.0Version Win32: 0.1.132.0CodeBase: file:///E:/RB4SONGS/LibForge-0.1.132/ForgeToolGUI.exe
System.Windows.FormsBuild version: 4.0.0.0Version Win32: 4.0.30319.18408 built by: FX451RTMGRELCodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
System.DrawingBuild version: 4.0.0.0Version Win32: 4.0.30319.18408 built by: FX451RTMGRELCodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
SystemBuild version: 4.0.0.0Version Win32: 4.0.30319.18408 built by: FX451RTMGRELCodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
System.Windows.Forms.resourcesBuild version: 4.0.0.0Version Win32: 4.0.30319.1 built by: RTMRelCodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
LibForgeBuild version: 0.1.132.0Version Win32: 0.1.132.0CodeBase: file:///E:/RB4SONGS/LibForge-0.1.132/LibForge.DLL
GameArchivesBuild version: 0.1.132.0Version Win32: 0.1.132.0CodeBase: file:///E:/RB4SONGS/LibForge-0.1.132/GameArchives.DLL
DtxCSBuild version: 1.0.0.0Version Win32: 1.0.0.0CodeBase: file:///E:/RB4SONGS/LibForge-0.1.132/DtxCS.DLL
System.CoreBuild version: 4.0.0.0Version Win32: 4.0.30319.18408 built by: FX451RTMGRELCodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
MidiCSBuild version: 0.1.6678.5394Version Win32: 0.1.0.0CodeBase: file:///E:/RB4SONGS/LibForge-0.1.132/MidiCS.DLL
mscorlib.resourcesBuild version: 4.0.0.0Version Win32: 4.0.30319.1 (RTMRel.030319-0100)CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
************** Оперативная отладка (JIT) **************To turn on operative (JIT) debugging file .config of this app or machine (machine.config) must be set to jitDebugging, set in system.windows.forms.The application must also be compiled withdebuggingExample:With JIT debugging enabled, any unhandled exceptionsent to the JIT debugger registered on this computerinstead of being processed by this dialog box.December 27, 2018 at 2:24 pm #502632Interesting, I can’t reproduce it, but since you’re using a Russian locale my first guess is that it must be some weird issue with using a comma instead of a period as a decimal separator.
December 27, 2018 at 2:35 pm #502633Will be waiting for future realises then. I’ll post here if I would be able to fing solution by myself.
December 27, 2018 at 3:26 pm #502634Ok, that problem should be fixed on the latest release. Thanks for reporting!
December 27, 2018 at 6:22 pm #502639For version 0.1.134 Sultans of Swing works fine! Great! But here is another log (now I’ve tried to convert abba – money downloaded from here http://customscreators.com/index.php?/page/index.html/_/money-money-money-r252 )
Hope it helps! I’ll test more songs tomorrow though
************** Exception text **************System.Exception: Element at index 1 is not an integer.in DtxCS.DataTypes.DataArray.Int(Int32 idx)in LibForge.Util.PkgCreator.MakeRBSong(DataArray array)in LibForge.Util.PkgCreator.ConvertDLCSong(DataArray songDta, IDirectory songRoot)in LibForge.Util.PkgCreator.ConvertDLCPackage(IDirectory dlcRoot)in ForgeToolGUI.Inspectors.ConversionInspector.LoadCon(String filename)in ForgeToolGUI.Inspectors.ConversionInspector.pickFileButton_Click(Object sender, EventArgs e)in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)in System.Windows.Forms.Control.WndProc(Message& m)in System.Windows.Forms.ButtonBase.WndProc(Message& m)in System.Windows.Forms.Button.WndProc(Message& m)in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************rest of the log is same as previous timeDecember 27, 2018 at 6:37 pm #502640This is the log for Arctic Monkeys – Whyd You Only Call Me When Youre High
System.IO.EndOfStreamException: Attempted to seek past the end of the file.in GameArchives.STFS.STFSFileStream.set_Position(Int64 value)in LibForge.Texture.TextureConverter.MiloPngToTexture(Stream s)in LibForge.Util.PkgCreator.ConvertDLCSong(DataArray songDta, IDirectory songRoot)in LibForge.Util.PkgCreator.ConvertDLCPackage(IDirectory dlcRoot)in ForgeToolGUI.Inspectors.ConversionInspector.LoadCon(String filename)in ForgeToolGUI.Inspectors.ConversionInspector.pickFileButton_Click(Object sender, EventArgs e)in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)in System.Windows.Forms.Control.WndProc(Message& m)in System.Windows.Forms.ButtonBase.WndProc(Message& m)in System.Windows.Forms.Button.WndProc(Message& m)in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)And All American Rejects – Nightdrive gives this one************** Текст исключения **************System.IndexOutOfRangeException: The index was outside the bounds of the array.in LibForge.Texture.TextureConverter.MiloPngToTexture(Stream s)in LibForge.Util.PkgCreator.ConvertDLCSong(DataArray songDta, IDirectory songRoot)in LibForge.Util.PkgCreator.ConvertDLCPackage(IDirectory dlcRoot)in ForgeToolGUI.Inspectors.ConversionInspector.LoadCon(String filename)in ForgeToolGUI.Inspectors.ConversionInspector.pickFileButton_Click(Object sender, EventArgs e)in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)in System.Windows.Forms.Control.WndProc(Message& m)in System.Windows.Forms.ButtonBase.WndProc(Message& m)in System.Windows.Forms.Button.WndProc(Message& m)in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)Note: I haven’t played any of successfully converted songs yet on my 5.05 ps4 cause I’m not at home at the time but I keep getting fine PKGs more then errors
-
AuthorPosts
- You must be logged in to reply to this topic.