Transistor Texture Ripper

From my Reddit post here:

I finished transistor and I loved it so much I wanted to see all of the files that made up the game. Usually developers leave stuff in there by accident and you can find cool stuff! Most of the time I can’t do this because its too difficult or it takes too long.

Luckily, Transistor is written using the .NET framework, and like all .NET apps, you can decompile them really easily. Luckily, Supergiant didn’t obfuscate the code, so I was able to read it really easily and extract every single texture from the game’s files.

Obviously, I can’t post the actual files anywhere: there’d be copyright issues all over that. I’ll post a small portion of some of the more interesting ones scaled down (like what wikipedia does). Imgur album.

Instructions follow.Instructions to do it yourself (I’m working on Linux):

  1. Get and install MonoDevelop or Visual Studio, whichever you’re more capable with. If you’ve got no idea what that is, just choose Visual Studio (Get the Express edition).
  2. Make a new C# Project called “TransistorTest” in the program you just installed.
  3. Download this source I mashed together here. If you know anything about programming don’t open it.
  4. Adjust OUT_DIR on line 388 to be where you want the files to go to. Make a new directory somewhere.
  5. You’ll probably see quite a few errors at this stage. Now we need to fix the references. In the “Solution Explorer” there should be some way to add references. Maybe a references folder of some kind? Right click it and then “Add Reference…”.
  6. You’ll need to add 2 .NET Assemblies at this stage. So click browse or something along those lines to open a file selector. Select “Engine.dll” and “MonoGame.Framework.SDL2.dll” in the Transistor root directory (Where ever transistor is installed). On windows “MonoGame” may be “XNA” or something similar. Either will do. You will also need to add the built in assembly “System.Drawing”.
  7. Enable unsafe code in project properties.
  8. Build the program now (Build -> Build All). You’ll now need to copy the exe you just made into the Transistor Root directory (where all the DLLs are). You’ll need to figure out where it is but that shouldn’t be too hard. Look for the project folder and then look amongst the files under “Debug”. Copy out “TransistorTest.exe”. Move it into the transistor root directory.
  9. Try running it. If it fails (it did for me), copy out all the files in “Transistor/lib64” into the root directory of the install.
  10. You’ll get a black box with output like this:
    Loading Package: Blink
    Reading: bin\Win\Atlases\Blink_Textures00.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Blink_Textures00.dds
    Loading Package: Boat_world
    Reading: bin\Win\Atlases\Cinematic\Bridge_Tiling_01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Cinematic/Bridge_Tiling_01.png
    Reading: bin\Win\Atlases\Obstacles\Environmental\fog_01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Obstacles/Environmental/fog_01.png
    Reading: bin\Win\Atlases\Cinematic\Camerata_Grant_01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Cinematic/Camerata_Grant_01.png
    Reading: bin\Win\Atlases\Cinematic\Camerata_Royce_01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Cinematic/Camerata_Royce_01.png
    Reading: bin\Win\Atlases\Cinematic\Camerata_Sybil_01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Cinematic/Camerata_Sybil_01.png
    Reading: bin\Win\Atlases\Tilesets\Highrise\Highrise_Glow_01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Tilesets/Highrise/Highrise_Glow_01.png
    Reading: bin\Win\Atlases\Cinematic\Camerata_Asher_01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Cinematic/Camerata_Asher_01.png
    Reading: bin\Win\Atlases\Boat_world_Textures00.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Boat_world_Textures00.dds
    Reading: bin\Win\Atlases\Boat_world_Textures01.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Boat_world_Textures01.dds
    Reading: bin\Win\Atlases\Boat_world_Textures02.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Boat_world_Textures02.dds
    Reading: bin\Win\Atlases\Boat_world_Textures03.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Boat_world_Textures03.dds
    Reading: bin\Win\Atlases\Boat_world_Textures04.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Boat_world_Textures04.dds
    Reading: bin\Win\Atlases\Boat_world_Textures05.dds
    Ripped: /home/matthew/Documents/TransistorUnpacked/bin/Win/Atlases/Boat_world_Textures05.dds

    Except with /home/matthew/Documents/TransistorUnpacked/ changed to whatever OUT_DIR was set to.

  11. At this stage, you’ve unpacked all the files. Now we need to convert the .dds files to something easier, like PNGs.
  12. Install ImageMagick. On windows get ImageMagick-6.9.0-2-Q16-x86-dll.exe. On Linux just use your package manager.
  13. On Linux, the following command recurses through all files in the unpacked directory and converts them to PNGs.
    find TransistorUnpacked -name "*.dds" | xargs -I {} convert {} {}.png

    On Windows its going to be more difficult… Put the following in a bat file (replace OUT_DIR with where the files are)

    cd OUT_DIR for /R %%f in (*.dds) do convert "%%f" "%%f.png" 
  14. Done! Take a look at the cool pics!

TL;DR: Imgur album.

Leave a Reply

Your email address will not be published. Required fields are marked *