Here are the current issues when importing a "pack":
- The "pack" contains its own ID, and this has to match with the folder it's in or things will go awry.
- The title is not updated until you re-save or duplicate the file.
- The author (and possibly other metadata) are missing.
The first of these can be fixed by modifying the "pack" alone, the latter two will require modification of mgr.bin (in the jb folder). I think there might also be other random errors such as things going missing and/or game freezing, which are probably related to these.
The mgr.bin isn't too bad, once you un-gzip it it's just a sequence of 3700 312-byte-structs of information (title, ID in which to find the actual record data, etc.), and a bunch of stuff I haven't figured out. Then mgr2.bin isn't too different, it's 1500 320-byte-structs. This is currently only used to hold the three songs that came with the V2 update? Maybe it can also be used to extend 3700 to 5200 songs, I don't know.
To that end, here's how you can help with this investigation. Assuming you have an extdata dump, grab
jb_reader, place it in your jb folder and run it. It doesn't modify anything except creating a jb_contents.csv file (which can be opened with excel or notepad). Alternatively, send me a copy of your jb folder and I can analyse it.
I'm investigating things like:
- Is the Zeros column always 0?
- What are the Flags for mgr.bin? (I think 0x800000 is to make it hidden, and some of it determines if there's lyrics or vocals???)
- What is Unk1 or Unk2 in mgr.bin?
- What are the 8 extra bytes used for in Mgr2Extra?
- What are the Flags in each "pack"? (I think 0x01 means it's received from another 3DS?)
- Which of the values/bits are modified for official/DLC/tomato songs?
If you're not sure what to look for, here's a
sample CSV output (after making it pretty)
The goal is to have something that can easily import songs (without these issues), I'm aiming by the end of March maybe. Beyond that I'm looking at importing BDX files as well, as the file format isn't too different.