Dandy Dungeon, or the joy of ripping from Unity APKs by TerminaZeal at 11:17 AM EST on February 21, 2017
So we have a treasure of civilization here: the soundtrack to mobile game Dandy Dungeon, the latest project by Yoshiro Kimura (Little King's Story, Chulip, even No More Heroes) directing an eclectic musical team who, as far as I know, hadn't made a name for themselves in VGM, but damn if they don't fit right in.
Have a listen to the modern semi-enka JP title screen: https://www.youtube.com/watch?v=BRoFORNoTwc
Or to the one other sample available on the official website: https://www.yamadakun.jp/player/sound/bgm02.mp3
I tried to extract the music myself and only later learned about the actual PITA that is Unity music ripping.
Want to teach a man to fish, in case there's updates that add to the soundtrack later?
If you don't feel like holding a seminar for neophytes, you can benefit all of humankind and have a go at it yourself. I uploaded the APK in a neutral space: https://www.sendspace.com/file/cbg050
Let me know if a better upload method is required.
I haven't made much mention of my own gratitude on the matter because I felt it's such a matter of course, but either way: my serious thanks for any help you can provide.
APK's can be easily opened up with WinRAR to explore and extract their contents.
1) Extract APK file 2) Download Unity Studio 3) Run Unity Studio and point it towards the folder with the data files.
In this case it is "assets\bin\Data"
4) Once Unity Studio has loaded the files, sort them by file type by clicking on the word "Type" in the type column.
5) Select all of the audio clips you wish to export and go to Export > Selected assets and choose a directory to export the files.
No matter what directory you choose, Unity Studio will make a new folder in your chosen directory called "AudioClips".
These files are in .FSB format which comes from Firelight Technologies. The codec used for these particular sounds is vorbis but they can also be many other codecs. MP3 and vorbis being the most common types used.
Now you can use id-daemon's FSB Audio Extractor to convert them into .wav files.
by TerminaZeal at 11:56 PM EST on February 21, 2017
Incredible!!
I expected very little, maybe even nothing, when I cast this selfish bottle into a very specialized sea.
But I shouldn't tell you this, because when I say that you exceeded my every expectation, I want you to feel how grateful I am, not think "was that such a high bar to clear, though?" like the straight man of a Japanese comedy duo.
I'll keep your empowering explanation close to my heart, or at least in my toolbox. May the time you kindly took out of your day to write it also serve anyone else who wanders by with the same sort of question. (On that front, I can at least boast that I included every relevant keyword in the title for easy reference.)
@TerminaZeal - "I expected very little, maybe even nothing, when I cast this selfish bottle into a very specialized sea." Why are some of your phrases so symbolic and overblown at times?
by TerminaZeal at 12:06 PM EST on February 22, 2017
The pared-down answer!
I think it's because I learned how to relate to people without being a jerk by projecting the facade of a non-threatening theatrical farce, misguided though that approach may be. Despite this, I'm a very sincere person.
For what it's worth, I enjoyed reading the effusive appreciation.
by TerminaZeal at 12:30 PM EST on February 22, 2017
I appreciate that. I really do put my heart into it; it's the least I could do!
by TerminaZeal at 6:31 PM EST on February 22, 2017
Ok! We have a situation here! I'm not one to look a gift trout in the mouth, so I was going to keep quiet until I solved this on my own and amazed everyone with a full, tagged rip, but it doesn't look like I'll manage.
The streams did not contain every piece of music in the game. All dungeon and character themes, for example, were missing. In an effort to put the guidance I received to good use, I started by looking at other areas of the APK. Nothing else anywhere was designated by Unity Studio as an audio file.
Then, I figured the game might be downloading its missing music semi-live or unpacking it somewhere from something at runtime. So I installed an Android emulator (Nox App Player), toggled its "rooted" setting and looked through every place applications are known to store their data.
There were no apparent audio files (and no room for them either! 20 MB!) in the data I extracted from the emulator, but it did contain a .csv file with a list of the missing BGM: http://pastebin.com/RyQ3WKSP. It was nice to have proof that I wasn't a crazy person imagining things, although I could have done without the mild spoilers for probable future updates.
The fact that both existing and not-yet-released tunes were listed there bolstered my uninformed belief that the game was somehow streaming some of its audio resources from The Cloud, so I installed Wireshark because I heard you can reconstruct files from captured packets. Before I could zero in on the exact communications to do this to, though, I realized files could only be exported from insecure protocols such as plain HTTP and FTP.
And that's where my new fishing skills ultimately flounder, so to speak.
It's a shame! I was so looking forward to using my shiny new rod! It was hard and I got real busy with it, but I only ended up making a mess.
If content streaming/protection technology has advanced beyond our current ability to overcome it without specialized decryption tools, I'll make my peace with this state of affairs.
If I missed something obvious or went completely astray, let me know! Either way, I'm grateful for what I've learned in this project.
Google Play downloads additional data (APK expansion files) alongside the APK from Google Play either at the same time you install the app onto your device or whilst running the app.
I don't have a phone that can support that screen size so I get an error when attempting to run it.
Someone needs to download the game and run it and it should pull down additional data onto the device which is probably where the rest of the music is stored.
Additional data should be found in this folder: <shared-storage>/Android/obb/<package-name>/
by TerminaZeal at 5:21 PM EST on February 23, 2017
Cool find! I did as you suggested, but I ran into unexpected failures all the way through. The fundamental issue is that Dandy Dungeon doesn't seem to create its own obb folder!
To make sure I could even see obb folders and their up-to-two-files contents, I tried out two download-heavy games: Mobius Final Fantasy and its voice-acted 3D cutscenes for time-limited events, and Show By Rock. I figured all that J-pop has to go somewhere.
They both created obb folders. However, at various points starting from right after installation and including after additional in-app downloads and during gameplay, songs and cutscenes, there was never any content visible in the folders.
(By the way, I performed every step on two devices: my own phone and the Nox emulator (rooted). Every time I looked for files, I did it through both Solid Explorer and using swiFTP in case some obscure permissions or file display trickery (see also: how MTP works) were getting in the way.)
Even if I picked two bad examples of games that don't use their obb folders (why do they make them, then?) and it's not the case that none of my devices can see, let alone unpack, obb files, DD doesn't make one, so the rest of the music might be secreted YET elsewhere!