So, let me start by saying, I've already gotten pretty far in my attempts to make this work myself. It's really the last "impossible 4%" that I'm completely stuck on. So, to go down the list of what I've done, and how I did it.
First off, Gibbed's vpp extractor works just fine for this game, and the vpp's you want to modify start with Music_
Second, extracting the xwb's seems to work best using vgstream (I used the cli version for Linux)
Third, I used ffmpeg to match to wav files and converted them from opus, to a wav file with the same properties as the original result from vgstream
Fourth, I then extracted and adjusted the music.xtbl in misc and misc2 to reflect the new music times with the modded music and repacked them with Gibbed's tools (game loads without issue with these replaced so long as -c and -b is added as a flag)
Fifth, and this is where things start to go wrong, I got ahold of XACT2 and created a new xsb and xwb, but this is where the problems begin. For starters, I have absolutely no idea how they ordered the cue, and it's very clear from the results, they did use some kind of ordering. Then there's the issue of their compression method, only when using XACT3 does the size come close, but given the files are shorter in length compared to most of their songs, something tells me this is wrong, I should end up with a smaller file, not a larger one.
Finally, I compress the stations (I'm modifying K12 so I can play it on stream without concern, so Music_Other2 in this case), and put it into the packfiles folder, and the game boots, all the other stations work, but K12 is now nothing but comercials. Which tells me, the vpp is correct, the game can read it, but it's the xsb and/or xwb that is wrong.
I am at a loss for what to do, as there's SO many options involved with even creating an xsb in the first place, never mind what I might be doing wrong (if I even am) with the xwb, that's creating the problem in the first place. Any help would be appreciated.
Edit:
And for my own record, attached is the order the files show up in, in the original xsb
Code:
976K12_A_TWI_REQ2976K12_A_YMF_RESPONSE2976K12_A_YMF_RESPONSE1976K12_A_YMF_REQ2976K12_A_YMF_REQ1976K12_A_YMF_OUTRO2976K12_A_YMF_OUTRO1976K12_A_YMF_INTRO2976K12_A_YMF_INTRO1976K12_A_TWI_RESPONSE2976K12_A_TWI_RESPONSE1976K12_A_TWI_REQ1976K12_A_TWI_OUTRO2976K12_A_TWI_OUTRO1976K12_A_TWI_INTRO2976K12_A_TWI_INTRO1976K12_A_QYS_RESPONSE2976K12_A_QYS_RESPONSE1976K12_A_QYS_REQ2976K12_A_QYS_REQ1976K12_A_QYS_OUTRO2976K12_A_QYS_OUTRO1976K12_A_QYS_INTRO2976K12_A_QYS_INTRO1976K12_A_ILL_RESPONSE2976K12_A_ILL_RESPONSE1976K12_A_ILL_REQ2976K12_A_ILL_REQ1976K12_A_ILL_OUTRO2976K12_A_ILL_OUTRO1976K12_A_ILL_INTRO2976K12_A_ILL_INTRO1TWISTED_PSYCHATRONIXSTYLESOFBEYOND_SUBCULTURESTRATUS_YOUMUSTFOLLOWSKYNET_STINGRAYSKYNET_CATHERINEWHEEL 1RHYTHMN DIVISION_UZIKOMABONES_TWISTED STREETSKOMABONES_QUESTO E SPORCOILS_WESTCOASTILS_TINY TONYILS_ILL LOGICFREQNASTY_AMPEDEVILNINE_WEHAVETHEENERGYDIESELBOYANDKAOS_BARRIERBREAK 1CARO_MY LITTLE PONY976K12_WX_SUNNY3976K12_WX_SUNNY2976K12_WX_SUNNY1976K12_WX_STORM3976K12_WX_STORM2976K12_WX_STORM1976K12_WX_PCLOUDY2976K12_WX_PCLOUDY1976K12_WX_MED_RAIN3976K12_WX_MED_RAIN2976K12_WX_MED_RAIN1976K12_WX_LT_RAIN3976K12_WX_LT_RAIN2976K12_WX_LT_RAIN1976K12_WX_HVY_RAIN3976K12_WX_HVY_RAIN2976K12_WX_HVY_RAIN1976K12_WX_CLOUDY2976K12_WX_CLOUDY1976K12_WX_90976K12_WX_85976K12_WX_81976K12_WX_75976K12_WX_72976K12_WX_68976K12_WX_63976K12_WX_59976K12_WX_56976K12_WX_48976K12_SWEEPER_9976K12_SWEEPER_8976K12_SWEEPER_7976K12_SWEEPER_6976K12_SWEEPER_5976K12_SWEEPER_4976K12_SWEEPER_3976K12_SWEEPER_2976K12_SWEEPER_1976K12_NEWSTOSS_5976K12_NEWSTOSS_4976K12_NEWSTOSS_3976K12_NEWSTOSS_2976K12_NEWSTOSS_1976K12_HELLO_5976K12_HELLO_4976K12_HELLO_3976K12_HELLO_2976K12_HELLO_1976K12_GENREQ_24976K12_GENREQ_23976K12_GENREQ_22976K12_GENREQ_21976K12_GENREQ_20976K12_GENREQ_19976K12_GENREQ_18976K12_GENREQ_17976K12_GENREQ_16976K12_GENREQ_15976K12_GENREQ_14976K12_GENREQ_13976K12_GENREQ_12976K12_GENREQ_11976K12_GENREQ_10976K12_GENREQ_8976K12_GENREQ_7976K12_GENREQ_6976K12_GENREQ_5976K12_GENREQ_4976K12_GENREQ_3976K12_GENREQ_2976K12_GENREQ_1976K12_C_WHTE_RESPONSE2976K12_C_WHTE_RESPONSE1976K12_C_WHTE_REQ2976K12_C_WHTE_REQ1976K12_C_WHTE_OUTRO2976K12_C_WHTE_OUTRO1976K12_C_WHTE_INTRO2976K12_C_WHTE_INTRO1976K12_C_WC_RESPONSE2976K12_C_WC_RESPONSE1976K12_C_WC_REQ2976K12_C_WC_REQ1976K12_C_WC_OUTRO2976K12_C_WC_OUTRO1976K12_C_WC_INTRO2976K12_C_WC_INTRO1976K12_C_TT_RESPONSE2976K12_C_TT_RESPONSE1976K12_C_TT_REQ2976K12_C_TT_REQ1976K12_C_TT_OUTRO2976K12_C_TT_OUTRO1976K12_C_TT_INTRO2976K12_C_TT_INTRO1976K12_C_TS_RESPONSE2976K12_C_TS_RESPONSE1976K12_C_TS_REQ2976K12_C_TS_REQ1976K12_C_TS_OUTRO2976K12_C_TS_OUTRO1976K12_C_TS_INTRO2976K12_C_TS_INTRO1976K12_C_SUB_RESPONSE2976K12_C_SUB_RESPONSE1976K12_C_SUB_REQ2976K12_C_SUB_REQ1976K12_C_SUB_OUTRO2976K12_C_SUB_OUTRO1976K12_C_SUB_INTRO2976K12_C_SUB_INTRO1976K12_C_STIN_RESPONSE2976K12_C_STIN_RESPONSE1976K12_C_STIN_REQ2976K12_C_STIN_REQ1976K12_C_STIN_OUTRO2976K12_C_STIN_OUTRO1976K12_C_STIN_INTRO2976K12_C_STIN_INTRO1976K12_B_RD_RESPONSE2976K12_B_RD_RESPONSE1976K12_B_RD_REQ2976K12_B_RD_REQ1976K12_B_RD_OUTRO2976K12_B_RD_OUTRO1976K12_B_RD_INTRO2976K12_B_RD_INTRO1976K12_B_MLP_RESPONSE2976K12_B_MLP_RESPONSE1976K12_B_MLP_REQ2976K12_B_MLP_REQ1976K12_B_MLP_OUTRO2976K12_B_MLP_OUTRO1976K12_B_MLP_INTRO2976K12_B_MLP_INTRO1976K12_B_CW_RESPONSE1976K12_B_CW_REQ2976K12_B_CW_REQ1976K12_B_CW_OUTRO2976K12_B_CW_OUTRO1976K12_B_CW_INTRO2976K12_B_CW_INTRO1976K12_B_BAR_RESPONSE2976K12_B_BAR_RESPONSE1976K12_B_BAR_REQ2976K12_B_BAR_REQ1976K12_B_BAR_OUTRO2976K12_B_BAR_OUTRO1976K12_B_BAR_INTRO2976K12_B_BAR_INTRO1976K12_B_AMP_RESPONSE2976K12_B_AMP_RESPONSE1976K12_B_AMP_REQ2976K12_B_AMP_REQ1976K12_B_AMP_OUTRO2976K12_B_AMP_OUTRO1976K12_B_AMP_INTRO2976K12_B_AMP_INTRO1
Edit2:
I may have been mislead about needing XACT2, as XACT3 can infact create an xsb, and the file size is where it actually should be, looks like they used 80% quality for the creation of the xwb's.
Edit3:
Next in the list of differences I can't really account for, in my xwb, this is the header
Code:
Hex:44 4E 42 57 00 00 00 2C 00 00 00 2A 00 00 00 34 00 00 00 60 00 00 00 94 00 00 13 38 00 00 13 CC 00 00 1B E4 00 00 2F B0 00 00 33 40 00 00 68 00 05 01 18 00 00 09 00 01 00 00 00 CD 4D 75 73 69 63 20 4B 31ASCII:DNBW...,...*...4...`.......8...Ì...ä../°[emailprotected]............ÍMusic K1
In Volitions xwb
Code:
I may have been mislead about needing XACT2, as XACT3 can infact create an xsb, and the file size is where it actually should be, looks like they used 80% quality for the creation of the xwb's.Edit3:Next in the list of differences I can't really account for, in my xwb, this is the header[CODE]Hex:44 4E 42 57 00 00 00 2C 00 00 00 2A 00 00 00 34 00 00 00 60 00 00 00 94 00 00 13 38 00 00 13 CC 00 00 1B E4 00 00 2F B0 00 00 33 40 00 00 68 00 05 01 18 00 00 09 00 01 00 00 00 CD 4D 75 73 69 63 20 4B 31ASCII:DNBW...,...*...4...`.......8...Ì...ä../°[emailprotected]............ÍMusic K1
In Volitions xwb
Code:
Hex:44 4E 42 57 00 00 00 27 00 00 00 30 00 00 00 60 00 00 00 90 00 00 13 38 00 00 13 C8 00 00 20 CC 00 00 00 00 00 00 00 00 00 00 38 00 06 3A 30 00 00 08 00 01 00 00 00 CD 4D 75 73 69 63 20 4B 31 32ASCII:DNBW...'...0...`.......8...È.. Ì..........8..:0........ÍMusic K12
The difference isn't subtle, and I have no idea where they come from.
Edit4:
After painstakingly recreating the xsb, it needs to be set to ordered to export correctly, but there's still differences that makes it not work, I have no more ideas