Creating list of titles shipping with DVOJ files

Discussion in '3DS - Homebrew Development and Emulators' started by neobrain, Aug 13, 2015.

  1. neobrain

    neobrain -

    Apr 25, 2014
    Hi everyone,

    I'm currently reverse-engineering the DVOJ file format, which is used to store compiled shader object files. This format has some interesting debug information compared to the more common SHBIN/DVLB format. Hence, by REing it I imagine we can get some nice insights into the official shader compilation process (without looking at the SDK, of course...), which in turn might be useful for developing our own shader compilers in the future. DVOJ files use file extensions like "obj", "vso", or "gso", and more importantly always start with the character sequence "DVOJ" (hence the format name).

    However, while SHBIN shaders can be found in lots of games, I have yet a hard time to find more applications which ship with DVOJ files. Here is a list of titles known so far:
    • OlliOlli ships with four tiny DVOJs (debugfont.vso, font.vso, minihud.vso, simple_tex.vso)
    • Wario Land 3 ships with a file called nwgfx_ParticleGShader.obj

    My question to the community is: Can we expand this list so that I can acquire more data points for testing? For testing if any of your titles contain a DVOJ file, you will need to extract its romfs and exefs from a decrypted game image, and then perform a fulltext search for the byte sequence "DVOJ" on all files. This is somewhat technical, so I'll do my best to boil it down for users who have ctrtool:
    • ctrtool <game_image> --romfs=romfs_file --exefsdir=exefs_dir
    • ctrtool romfs_file --romfsdir=romfs_dir
    • Linux users: "grep DVOJ exefs_dir/*; find romfs_dir -type f -print | xargs grep DVOJ". If either of these commands prints any matches, please report the title in this thread (along with the filenames that matched). If the output is empty, the tested title doesn't ship with any DVOJ files.
    • Windows users: I don't know any nice way to do the same check (suggestions welcome!); I might eventually take an hour of to write a small utility application to for that instead. Until then, maybe try to look out for directories called "shader" in your romfs and files ending with ".obj" or ".gso" or ".vso". You should be able to open these files in notepad then, and you'll see a lot of gibberish, but if it's indeed what I'm looking for, the first four characters should be "DVLE".

    If you're sure you did everything correctly, you can also report applications which don't include any DVOJs, so that others can spend their time on testing other games than that ;)

    Thanks in advance!

    Games tested, but which don't contain any DVOJ content:
    • Pokemon Alpha Sapphire
    • Steel Diver Sub Wars
    • Zelda OoT 3D
    Last edited by neobrain, Aug 15, 2015
  2. marc00077

    marc00077 GBAtemp Regular

    May 21, 2014
    Netherlands Antilles
    Ok so I have alpha saphire decrypted and in the romfs/shaders folder there are 4 shbin files, are you interested on those or shbin contain for sure no DVOJ's? I don't know how to search for those things because I'm on windows :(

    And btw if there's no shaders folder... where do we have to search?
  3. neobrain

    neobrain -

    Apr 25, 2014
    Thanks for testing! SHBINs are indeed not what I'm looking for (the SHBIN format is well-understood already). As for games without a shaders folder, you can still try to find all files with an ".obj", ".vso", or ".gso" extension.

    I'll create a list of tested games tomorrow, and will make sure to include PAS on that list ;)
    marc00077 likes this.
  4. clank

    clank Advanced Member

    Jan 24, 2015
    As marc00077 said, in Alpha Sapphire I also can't find any DVOJ nor DVLE, and those four .shbin inside romfs/shader start with DVLB.