├── 3DSRE.ico ├── 3DSRE.png ├── 3DSROMEDITOR.csproj ├── App.config ├── Crypto.cs ├── FileRW.cs ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── GetGarc.dll ├── GlobalVars.cs ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── Temp.cs ├── Utils.cs ├── bin ├── Debug │ ├── 3DSROMEDITOR.exe │ ├── 3DSROMEDITOR.exe.config │ ├── 3DSROMEDITOR.pdb │ ├── 3DSROMEDITOR.vshost.exe │ ├── 3DSROMEDITOR.vshost.exe.config │ ├── 3DSROMEDITOR.vshost.exe.manifest │ └── GetGarc.dll └── Release │ ├── 3DSRE │ ├── 3DSROMEDITOR.exe │ ├── CRR0.dll │ ├── Crypto.dll │ ├── Garc.dll │ └── README.txt │ ├── 3DSROMEDITOR.exe │ ├── 3DSROMEDITOR.exe.config │ ├── 3DSROMEDITOR.pdb │ ├── 3DSROMEDITOR.vshost.exe │ ├── 3DSROMEDITOR.vshost.exe.config │ ├── 3DSROMEDITOR.vshost.exe.manifest │ ├── CRR0.dll │ ├── Crypto.dll │ ├── Garc.dll │ └── Release.rar ├── mini.ico └── obj ├── Debug ├── 3DSROMEDITOR.csproj.FileListAbsolute.txt ├── 3DSROMEDITOR.csproj.GenerateResource.Cache ├── 3DSROMEDITOR.csprojResolveAssemblyReference.cache ├── 3DSROMEDITOR.exe ├── 3DSROMEDITOR.pdb ├── DesignTimeResolveAssemblyReferences.cache ├── DesignTimeResolveAssemblyReferencesInput.cache ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs ├── _3DSROMEDITOR.Form1.resources └── _3DSROMEDITOR.Properties.Resources.resources └── Release ├── 3DSROMEDITOR.csproj.FileListAbsolute.txt ├── 3DSROMEDITOR.csproj.GenerateResource.Cache ├── 3DSROMEDITOR.csprojResolveAssemblyReference.cache ├── 3DSROMEDITOR.exe ├── 3DSROMEDITOR.pdb ├── DesignTimeResolveAssemblyReferences.cache ├── DesignTimeResolveAssemblyReferencesInput.cache ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs ├── _3DSROMEDITOR.Form1.resources └── _3DSROMEDITOR.Properties.Resources.resources /3DSRE.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/3DSRE.ico -------------------------------------------------------------------------------- /3DSRE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/3DSRE.png -------------------------------------------------------------------------------- /3DSROMEDITOR.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {AD50B294-8009-48A7-B368-B73E83E164CE} 8 | WinExe 9 | Properties 10 | _3DSROMEDITOR 11 | 3DSROMEDITOR 12 | v4.5 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 3DSRE.ico 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | Form 54 | 55 | 56 | Form1.cs 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Form1.cs 65 | 66 | 67 | ResXFileCodeGenerator 68 | Resources.Designer.cs 69 | Designer 70 | 71 | 72 | True 73 | Resources.resx 74 | 75 | 76 | SettingsSingleFileGenerator 77 | Settings.Designer.cs 78 | 79 | 80 | True 81 | Settings.settings 82 | True 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 99 | -------------------------------------------------------------------------------- /App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Crypto.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Runtime.InteropServices; 7 | using System.Windows.Forms; 8 | using System.IO; 9 | using System.Security.Cryptography; 10 | 11 | namespace _3DSROMEDITOR { 12 | class Crypto { 13 | 14 | [DllImport("Crypto.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] 15 | private static extern int cryptRomFS(string path, string prodCode, string romname, uint romfsOff, uint fsSize, int mode); 16 | //private static extern int rehashRomfs(string path, string prodCode); 17 | 18 | internal static int romFS(string path, string prodCode, string romname, uint romfsOff, uint fsSize, int mode) { 19 | return cryptRomFS(path, prodCode, romname, romfsOff, fsSize, mode); //mode: 0=decrypt romfs and write to dir; 1=encrypt romfs and write to rom; 20 | // 2=no crypt and write to dir; 3=no crypt and write to rom 21 | } 22 | 23 | internal static int calculateRomFS(string path, string prodCode) { 24 | Temp.rehashRomfsTEMP(path, prodCode); 25 | return 0; 26 | } 27 | 28 | internal static int calculateNCCH(string path, string prodCode) { 29 | uint hashBuffSize = 0; 30 | if (GlobalVars.inst.romfsSuperhashSize == 0) return -2; 31 | byte[] buff = new byte[hashBuffSize]; 32 | byte[] hash = new byte[0x20]; 33 | FileStream fr = new FileStream(path + prodCode + "-romfs.bin", FileMode.Open, FileAccess.Read); 34 | fr.Seek(0, SeekOrigin.Begin); 35 | fr.Read(buff, 0, buff.Length); 36 | SHA256Managed Hasher = new SHA256Managed(); 37 | hash = Hasher.ComputeHash(buff); 38 | 39 | if (GlobalVars.inst.rom != null) { 40 | using (Stream fw = File.Open(GlobalVars.inst.rom, FileMode.Open, FileAccess.ReadWrite)) { 41 | fw.Position = GlobalVars.NCCH + 0x1E0; 42 | fw.Write(hash, 0, 0x20); 43 | fw.Position = 0x1000 + 0x1E0; 44 | fw.Write(hash, 0, 0x20); 45 | fw.Close(); 46 | } 47 | } else { 48 | MessageBox.Show("Super Hash: " + BitConverter.ToString(hash).Replace("-", "")); 49 | } 50 | fr.Close(); 51 | return 0; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /FileRW.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using System.Runtime.InteropServices; 9 | 10 | namespace _3DSROMEDITOR { 11 | class FileRW { 12 | 13 | //DLL Imports 14 | [DllImport("Garc.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] 15 | public static extern void writegarc(string inFile, string outFile, int garcOff, int len); 16 | 17 | internal static void writeGarcFile(int index) { 18 | writegarc(GlobalVars.inst.romPath + GlobalVars.inst.productCode + "-romfs.bin", GlobalVars.inst.romPath + GlobalVars.inst.productCode + "-" + index.ToString("D3") + ".GARC", GlobalVars.inst.garcOffs[index], GlobalVars.inst.garcOffs[index + 1] - GlobalVars.inst.garcOffs[index]); 19 | } 20 | 21 | internal static void packGarcFile(int index) { 22 | uint off = (uint)GlobalVars.inst.garcOffs[index]; 23 | uint size = index >= GlobalVars.inst.garcOffs.Length - 1 ? (uint)(GlobalVars.inst.romfsSize - GlobalVars.inst.garcOffs[index]) : (uint)(GlobalVars.inst.garcOffs[index + 1] - GlobalVars.inst.garcOffs[index]); 24 | MessageBox.Show("Off=0x" + off.ToString("X") + " | Size=0x" + size.ToString("X")); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | using System.Net; 2 | using System.IO; 3 | using System.Reflection; 4 | 5 | namespace _3DSROMEDITOR { 6 | partial class Form1 { 7 | /// 8 | /// Required designer variable. 9 | /// 10 | private System.ComponentModel.IContainer components = null; 11 | 12 | /// 13 | /// Clean up any resources being used. 14 | /// 15 | /// true if managed resources should be disposed; otherwise, false. 16 | protected override void Dispose(bool disposing) { 17 | if (disposing && (components != null)) { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() { 30 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 31 | this.treeView1 = new System.Windows.Forms.TreeView(); 32 | this.title = new System.Windows.Forms.Label(); 33 | this.toolStrip1 = new System.Windows.Forms.ToolStrip(); 34 | this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton(); 35 | this.openToolStrip = new System.Windows.Forms.ToolStripMenuItem(); 36 | this.exitToolStrip = new System.Windows.Forms.ToolStripMenuItem(); 37 | this.toolStripDropDownButton2 = new System.Windows.Forms.ToolStripDropDownButton(); 38 | this.makeRSFFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 39 | this.buildRomfs = new System.Windows.Forms.ToolStripDropDownButton(); 40 | this.rebuildRomFS = new System.Windows.Forms.ToolStripMenuItem(); 41 | this.openRom = new System.Windows.Forms.OpenFileDialog(); 42 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 43 | this.infoBox = new System.Windows.Forms.TextBox(); 44 | this.statusLbl = new System.Windows.Forms.Label(); 45 | this.openRomfs = new System.Windows.Forms.OpenFileDialog(); 46 | this.helpBut = new System.Windows.Forms.ToolStripDropDownButton(); 47 | this.aboutBut = new System.Windows.Forms.ToolStripMenuItem(); 48 | this.toolStrip1.SuspendLayout(); 49 | this.groupBox1.SuspendLayout(); 50 | this.SuspendLayout(); 51 | // 52 | // treeView1 53 | // 54 | this.treeView1.Location = new System.Drawing.Point(12, 25); 55 | this.treeView1.Name = "treeView1"; 56 | this.treeView1.Size = new System.Drawing.Size(225, 350); 57 | this.treeView1.TabIndex = 0; 58 | this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_Afterselect); 59 | // 60 | // title 61 | // 62 | this.title.AutoSize = true; 63 | this.title.Location = new System.Drawing.Point(12, 9); 64 | this.title.Name = "title"; 65 | this.title.Size = new System.Drawing.Size(0, 13); 66 | this.title.TabIndex = 1; 67 | // 68 | // toolStrip1 69 | // 70 | this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 71 | this.toolStripDropDownButton1, 72 | this.toolStripDropDownButton2, 73 | this.buildRomfs, 74 | this.helpBut}); 75 | this.toolStrip1.Location = new System.Drawing.Point(0, 0); 76 | this.toolStrip1.Name = "toolStrip1"; 77 | this.toolStrip1.Size = new System.Drawing.Size(704, 25); 78 | this.toolStrip1.TabIndex = 2; 79 | this.toolStrip1.Text = "toolStrip1"; 80 | // 81 | // toolStripDropDownButton1 82 | // 83 | this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; 84 | this.toolStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 85 | this.openToolStrip, 86 | this.exitToolStrip}); 87 | this.toolStripDropDownButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton1.Image"))); 88 | this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta; 89 | this.toolStripDropDownButton1.Name = "toolStripDropDownButton1"; 90 | this.toolStripDropDownButton1.Size = new System.Drawing.Size(38, 22); 91 | this.toolStripDropDownButton1.Text = "File"; 92 | // 93 | // openToolStrip 94 | // 95 | this.openToolStrip.Name = "openToolStrip"; 96 | this.openToolStrip.Size = new System.Drawing.Size(103, 22); 97 | this.openToolStrip.Text = "Open"; 98 | this.openToolStrip.Click += new System.EventHandler(this.openToolStrip_Click); 99 | // 100 | // exitToolStrip 101 | // 102 | this.exitToolStrip.Name = "exitToolStrip"; 103 | this.exitToolStrip.Size = new System.Drawing.Size(103, 22); 104 | this.exitToolStrip.Text = "Exit"; 105 | this.exitToolStrip.Click += new System.EventHandler(this.exitToolStrip_Click); 106 | // 107 | // toolStripDropDownButton2 108 | // 109 | this.toolStripDropDownButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; 110 | this.toolStripDropDownButton2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 111 | this.makeRSFFileToolStripMenuItem}); 112 | this.toolStripDropDownButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton2.Image"))); 113 | this.toolStripDropDownButton2.ImageTransparentColor = System.Drawing.Color.Magenta; 114 | this.toolStripDropDownButton2.Name = "toolStripDropDownButton2"; 115 | this.toolStripDropDownButton2.Size = new System.Drawing.Size(49, 22); 116 | this.toolStripDropDownButton2.Text = "Tools"; 117 | // 118 | // makeRSFFileToolStripMenuItem 119 | // 120 | this.makeRSFFileToolStripMenuItem.Name = "makeRSFFileToolStripMenuItem"; 121 | this.makeRSFFileToolStripMenuItem.Size = new System.Drawing.Size(149, 22); 122 | this.makeRSFFileToolStripMenuItem.Text = "Create RSF file"; 123 | this.makeRSFFileToolStripMenuItem.Click += new System.EventHandler(this.makeRSFFileToolStripMenuItem_Click); 124 | // 125 | // buildRomfs 126 | // 127 | this.buildRomfs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; 128 | this.buildRomfs.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 129 | this.rebuildRomFS}); 130 | this.buildRomfs.Image = ((System.Drawing.Image)(resources.GetObject("buildRomfs.Image"))); 131 | this.buildRomfs.ImageTransparentColor = System.Drawing.Color.Magenta; 132 | this.buildRomfs.Name = "buildRomfs"; 133 | this.buildRomfs.Size = new System.Drawing.Size(47, 22); 134 | this.buildRomfs.Text = "Build"; 135 | // 136 | // rebuildRomFS 137 | // 138 | this.rebuildRomFS.Name = "rebuildRomFS"; 139 | this.rebuildRomFS.Size = new System.Drawing.Size(159, 22); 140 | this.rebuildRomFS.Text = "Re-build RomFS"; 141 | this.rebuildRomFS.Click += new System.EventHandler(this.rebuildRomFS_Click); 142 | // 143 | // groupBox1 144 | // 145 | this.groupBox1.Controls.Add(this.infoBox); 146 | this.groupBox1.Location = new System.Drawing.Point(243, 25); 147 | this.groupBox1.Name = "groupBox1"; 148 | this.groupBox1.Size = new System.Drawing.Size(442, 350); 149 | this.groupBox1.TabIndex = 3; 150 | this.groupBox1.TabStop = false; 151 | this.groupBox1.Text = "Rom Information"; 152 | // 153 | // infoBox 154 | // 155 | this.infoBox.BorderStyle = System.Windows.Forms.BorderStyle.None; 156 | this.infoBox.Location = new System.Drawing.Point(6, 19); 157 | this.infoBox.Multiline = true; 158 | this.infoBox.Name = "infoBox"; 159 | this.infoBox.ReadOnly = true; 160 | this.infoBox.Size = new System.Drawing.Size(430, 325); 161 | this.infoBox.TabIndex = 0; 162 | // 163 | // statusLbl 164 | // 165 | this.statusLbl.AutoSize = true; 166 | this.statusLbl.Location = new System.Drawing.Point(12, 378); 167 | this.statusLbl.Name = "statusLbl"; 168 | this.statusLbl.Size = new System.Drawing.Size(0, 13); 169 | this.statusLbl.TabIndex = 4; 170 | // 171 | // helpBut 172 | // 173 | this.helpBut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; 174 | this.helpBut.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 175 | this.aboutBut}); 176 | this.helpBut.Image = ((System.Drawing.Image)(resources.GetObject("helpBut.Image"))); 177 | this.helpBut.ImageTransparentColor = System.Drawing.Color.Magenta; 178 | this.helpBut.Name = "helpBut"; 179 | this.helpBut.Size = new System.Drawing.Size(45, 22); 180 | this.helpBut.Text = "Help"; 181 | this.helpBut.ToolTipText = "Help"; 182 | // 183 | // aboutBut 184 | // 185 | this.aboutBut.Name = "aboutBut"; 186 | this.aboutBut.Size = new System.Drawing.Size(152, 22); 187 | this.aboutBut.Text = "About"; 188 | this.aboutBut.Click += new System.EventHandler(this.aboutBut_Click); 189 | // 190 | // Form1 191 | // 192 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 193 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 194 | this.ClientSize = new System.Drawing.Size(704, 400); 195 | this.Controls.Add(this.statusLbl); 196 | this.Controls.Add(this.groupBox1); 197 | this.Controls.Add(this.toolStrip1); 198 | this.Controls.Add(this.title); 199 | this.Controls.Add(this.treeView1); 200 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 201 | this.Name = "Form1"; 202 | this.Text = "3DS Rom Editor"; 203 | this.toolStrip1.ResumeLayout(false); 204 | this.toolStrip1.PerformLayout(); 205 | this.groupBox1.ResumeLayout(false); 206 | this.groupBox1.PerformLayout(); 207 | this.ResumeLayout(false); 208 | this.PerformLayout(); 209 | 210 | } 211 | 212 | private int checkUpdate() { 213 | int r = 0; 214 | try { 215 | WebRequest wr = WebRequest.Create(new System.Uri("http://reisyukaku.org/prog/3DSRE-ver.txt")); 216 | WebResponse ws = wr.GetResponse(); 217 | StreamReader sr = new StreamReader(ws.GetResponseStream()); 218 | string currVer = GlobalVars.Version; 219 | string newVer = sr.ReadLine(); 220 | r = (currVer.Contains(newVer)) ? 0 : -1; 221 | } 222 | catch (WebException e) { 223 | System.Console.WriteLine(e.ToString()); 224 | } 225 | return r; 226 | } 227 | #endregion 228 | 229 | private System.Windows.Forms.TreeView treeView1; 230 | private System.Windows.Forms.Label title; 231 | private System.Windows.Forms.ToolStrip toolStrip1; 232 | private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1; 233 | private System.Windows.Forms.ToolStripMenuItem openToolStrip; 234 | private System.Windows.Forms.ToolStripMenuItem exitToolStrip; 235 | private System.Windows.Forms.OpenFileDialog openRom; 236 | private System.Windows.Forms.GroupBox groupBox1; 237 | private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton2; 238 | private System.Windows.Forms.Label statusLbl; 239 | private System.Windows.Forms.TextBox infoBox; 240 | private System.Windows.Forms.ToolStripDropDownButton buildRomfs; 241 | private System.Windows.Forms.ToolStripMenuItem rebuildRomFS; 242 | private System.Windows.Forms.OpenFileDialog openRomfs; 243 | private System.Windows.Forms.ToolStripMenuItem makeRSFFileToolStripMenuItem; 244 | private System.Windows.Forms.ToolStripDropDownButton helpBut; 245 | private System.Windows.Forms.ToolStripMenuItem aboutBut; 246 | } 247 | } 248 | 249 | -------------------------------------------------------------------------------- /Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.IO; 11 | using System.Threading; 12 | using System.Runtime.InteropServices; 13 | using System.Reflection; 14 | 15 | namespace _3DSROMEDITOR { 16 | 17 | public partial class Form1 : Form { 18 | 19 | //DLL Imports 20 | [DllImport("Garc.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] 21 | public static extern IntPtr getgarcs(string file); 22 | 23 | public Form1() { 24 | if (checkUpdate() == -1) MessageBox.Show("A newer version of this software exists."); 25 | InitializeComponent(); 26 | } 27 | 28 | //Variables 29 | private const int NCSD = GlobalVars.NCSD; 30 | private const int NCCH = GlobalVars.NCCH; 31 | private int seleNode; 32 | bool romfsEnc = true; 33 | 34 | private void openToolStrip_Click(object sender, EventArgs e) { 35 | treeView1.Nodes.Clear(); 36 | if (openRom.ShowDialog() == DialogResult.OK) { 37 | GlobalVars.inst.rom = openRom.FileName; 38 | GlobalVars.inst.romPath = openRom.FileName.Substring(0, openRom.FileName.LastIndexOf("\\")) + "\\"; 39 | 40 | BinaryReader b = new BinaryReader(File.Open(GlobalVars.inst.rom, FileMode.Open)); 41 | 42 | //Idiot proofing 43 | b.BaseStream.Position = NCSD + 0x100; 44 | string ncsdMagic = b.ReadBytes(0x4).bytes2str(); 45 | b.BaseStream.Position = NCCH + 0x100; 46 | string ncchMagic = b.ReadBytes(0x4).bytes2str(); 47 | if (String.Compare(ncsdMagic, "NCSD") == -1 || String.Compare(ncchMagic, "NCCH") == -1) { 48 | MessageBox.Show("Error: No NCSD or NCCH detected."); 49 | return; 50 | } 51 | 52 | //Set length 53 | b.BaseStream.Position = 0; 54 | GlobalVars.inst.ncsdSize = (int)b.BaseStream.Length; 55 | 56 | //Set Product Code 57 | b.BaseStream.Position = NCCH + 0x150; 58 | GlobalVars.inst.productCode = (b.ReadBytes(0xA)).bytes2str(); 59 | treeView1.Nodes.Add(GlobalVars.inst.productCode); 60 | 61 | //Set ROMFS offset and size 62 | b.BaseStream.Position = NCCH + 0x1B0; 63 | GlobalVars.inst.romfsOff = NCCH + (b.ReadBytes(0x4)).getU32() * 0x200; 64 | 65 | b.BaseStream.Position = NCCH + 0x1B4; 66 | GlobalVars.inst.romfsSize = (b.ReadBytes(0x4)).getU32() * 0x200; 67 | 68 | b.BaseStream.Position = NCCH + 0x1B8; 69 | GlobalVars.inst.romfsSuperhashSize = (b.ReadBytes(0x4)).getU32() * 0x200; 70 | 71 | b.BaseStream.Position = GlobalVars.inst.romfsOff; 72 | romfsEnc = (b.ReadBytes(0x4)).getU32() != 1128683081 ? true : false ; //Look for IVFC magic 73 | 74 | b.Close(); 75 | 76 | new Thread(() => { 77 | if (!File.Exists(GlobalVars.inst.romPath + GlobalVars.inst.productCode + "-romfs.bin")) { 78 | //Dump decrypted ROMFS 79 | if(romfsEnc){ 80 | if (!File.Exists(GlobalVars.inst.romPath + GlobalVars.inst.productCode + "0.romfs.xorpad")) { MessageBox.Show("Error: RomFS xorpad not found."); return; } 81 | ThreadSafe(() => statusLbl.Text = "Decrypting RomFS..."); 82 | if (Crypto.romFS(GlobalVars.inst.romPath, GlobalVars.inst.productCode, GlobalVars.inst.rom.Substring(GlobalVars.inst.romPath.Length), GlobalVars.inst.romfsOff, GlobalVars.inst.romfsSize, 0) == -1) { MessageBox.Show("Error decrypting RomFS"); return; } 83 | 84 | }else{ 85 | ThreadSafe(() => statusLbl.Text = "Dumping contents..."); 86 | if (Crypto.romFS(GlobalVars.inst.romPath, GlobalVars.inst.productCode, GlobalVars.inst.rom.Substring(GlobalVars.inst.romPath.Length), GlobalVars.inst.romfsOff, GlobalVars.inst.romfsSize, 2) == -1) { MessageBox.Show("Error dumping RomFS"); return; } 87 | } 88 | } 89 | ThreadSafe(() => statusLbl.Text = "Loading RomFS..."); 90 | loadGarcs(); 91 | ThreadSafe(() => statusLbl.Text = "Done!"); 92 | }).Start(); 93 | } 94 | } 95 | 96 | private void addTreeBranch(string tree, string[] branches) { 97 | List tna = new List(); 98 | ContextMenuStrip docMenu = new ContextMenuStrip(); 99 | 100 | //Create some menu items. 101 | ToolStripMenuItem importLbl = new ToolStripMenuItem(); 102 | importLbl.Text = "Import"; 103 | ToolStripMenuItem exportLbl = new ToolStripMenuItem(); 104 | exportLbl.Text = "Export"; 105 | 106 | //Add the menu items to the menu. 107 | docMenu.Items.AddRange(new ToolStripMenuItem[]{importLbl, 108 | exportLbl}); 109 | docMenu.ItemClicked += new ToolStripItemClickedEventHandler( 110 | docMenu_Clicked); 111 | 112 | for (int i = 0; i < branches.Length; i++ ) { 113 | TreeNode treeBranch = new TreeNode(branches[i]); 114 | treeBranch.ContextMenuStrip = docMenu; 115 | tna.Add(treeBranch); 116 | } 117 | TreeNode[] array = tna.ToArray(); 118 | TreeNode treeN = new TreeNode(tree, array); 119 | treeView1.Invoke((MethodInvoker) (() => treeView1.Nodes[0].Nodes.Add(treeN))); 120 | } 121 | 122 | void docMenu_Clicked(object sender, ToolStripItemClickedEventArgs e) { 123 | ToolStripItem item = e.ClickedItem; 124 | 125 | if(item.Text == "Import"){ 126 | ThreadSafe(() => statusLbl.Text = "Packing GARC..."); 127 | FileRW.packGarcFile(seleNode); 128 | ThreadSafe(() => statusLbl.Text = "Done!"); 129 | }else if (item.Text == "Export"){ 130 | ThreadSafe(() => statusLbl.Text = "Writing GARC..."); 131 | FileRW.writeGarcFile(seleNode); 132 | ThreadSafe(() => statusLbl.Text = "Done!"); 133 | } 134 | } 135 | 136 | private void treeView1_Afterselect(object sender, TreeViewEventArgs e) { 137 | 138 | seleNode = e.Node.TreeView.SelectedNode.Index; 139 | 140 | if(e.Node.Text == "NCSD"){ 141 | ThreadSafe(() => infoBox.Text = "NCSD:" + Environment.NewLine 142 | + "Image size: " + GlobalVars.inst.ncsdSize + " bytes (0x" + GlobalVars.inst.ncsdSize.ToString("X") + ")" + Environment.NewLine); 143 | } 144 | else if (e.Node.Text == "NCCH") { 145 | ThreadSafe(() => infoBox.Text = "NCCH info here!"); 146 | } 147 | else if (e.Node.Text.StartsWith("GARC")) { 148 | ThreadSafe(() => infoBox.Text = "GARC " + seleNode + " info here!"); 149 | } 150 | } 151 | 152 | void loadGarcs() { 153 | IntPtr g = getgarcs(GlobalVars.inst.romPath + GlobalVars.inst.productCode + "-romfs.bin"); 154 | 155 | //get length of array 156 | int[] temp = new int[1]; 157 | Marshal.Copy(g, temp, 0, 1); 158 | 159 | //copy array using length 160 | GlobalVars.inst.garcOffs = new int[temp[0]+1]; 161 | Marshal.Copy(g, GlobalVars.inst.garcOffs, 0, temp[0]+1); 162 | GlobalVars.inst.garcOffs = GlobalVars.inst.garcOffs.Skip(1).ToArray(); 163 | 164 | //convert int[] to string[] and format 165 | string[] garcStrs = new string[GlobalVars.inst.garcOffs.Length]; 166 | for (int i = 0; i < GlobalVars.inst.garcOffs.Length; i++) { 167 | garcStrs[i] = "GARC " + i.ToString("D3") + " [0x" + GlobalVars.inst.garcOffs[i].ToString("X8") + "]"; 168 | } 169 | 170 | //load tree view 171 | addTreeBranch("NCSD", new string[] { }); 172 | addTreeBranch("NCCH", garcStrs); 173 | } 174 | 175 | private string parseGarcInfo(uint off) { 176 | if (!File.Exists(GlobalVars.inst.romPath + GlobalVars.inst.productCode + "-romfs.bin")) { return null; } 177 | BinaryReader b = new BinaryReader(File.Open(GlobalVars.inst.romPath + GlobalVars.inst.productCode + "-romfs.bin", FileMode.Open)); 178 | b.BaseStream.Position = (long)off; 179 | string str = "Magic: " + Encoding.ASCII.GetString(b.ReadBytes(4)) + "\r\n" + "Header size: " + (b.ReadBytes(4).getU32()).ToString("X8"); 180 | b.Close(); 181 | return str; 182 | } 183 | 184 | 185 | private void exitToolStrip_Click(object sender, EventArgs e) { 186 | if (Application.MessageLoop) { Application.Exit(); } else { Environment.Exit(1); } 187 | } 188 | 189 | private void rebuildRomFS_Click(object sender, EventArgs e) { 190 | string romfs = null; 191 | if(GlobalVars.inst.romPath == null && GlobalVars.inst.productCode == null){ 192 | if (openRomfs.ShowDialog() == DialogResult.OK) romfs = openRomfs.FileName; 193 | GlobalVars.inst.romPath = romfs.Substring(0, openRomfs.FileName.LastIndexOf("\\")) + "\\"; 194 | string pcode = romfs.Substring(romfs.LastIndexOf("\\") + 1); 195 | GlobalVars.inst.productCode = pcode.Substring(0, pcode.IndexOf("-romfs.bin")); 196 | } 197 | new Thread(() => { 198 | ThreadSafe(() => statusLbl.Text = "Calculating RomFS Hashes..."); 199 | if (Crypto.calculateRomFS(GlobalVars.inst.romPath, GlobalVars.inst.productCode) == -1) { MessageBox.Show("Error calculating RomFS hashes"); return; } 200 | ThreadSafe(() => statusLbl.Text = "Calculating Super Hashes..."); 201 | if (Crypto.calculateNCCH(GlobalVars.inst.romPath, GlobalVars.inst.productCode) == -1) { MessageBox.Show("Error calculating NCCH hashes"); return; } 202 | if (romfsEnc) { 203 | ThreadSafe(() => statusLbl.Text = "Encrypting RomFS..."); 204 | if (Crypto.romFS(GlobalVars.inst.romPath, GlobalVars.inst.productCode, GlobalVars.inst.rom.Substring(GlobalVars.inst.romPath.Length), GlobalVars.inst.romfsOff, GlobalVars.inst.romfsSize, 1) == -1) { MessageBox.Show("Error encrypting RomFS"); return; } 205 | } 206 | else { 207 | ThreadSafe(() => statusLbl.Text = "Encrypting RomFS..."); 208 | if (Crypto.romFS(GlobalVars.inst.romPath, GlobalVars.inst.productCode, GlobalVars.inst.rom.Substring(GlobalVars.inst.romPath.Length), GlobalVars.inst.romfsOff, GlobalVars.inst.romfsSize, 3) == -1) { MessageBox.Show("Error encrypting RomFS"); return; } 209 | } 210 | }).Start(); 211 | ThreadSafe(() => statusLbl.Text = "Done!"); 212 | } 213 | 214 | private void ThreadSafe(MethodInvoker method) { 215 | if (InvokeRequired) 216 | Invoke(method); 217 | else 218 | method(); 219 | } 220 | 221 | private void makeRSFFileToolStripMenuItem_Click(object sender, EventArgs e) { 222 | MessageBox.Show("No."); 223 | } 224 | 225 | private void aboutBut_Click(object sender, EventArgs e) { 226 | MessageBox.Show("3DSRE by Reisyukaku" + Environment.NewLine 227 | + "Version: " + GlobalVars.Version + Environment.NewLine); 228 | } 229 | } 230 | } 231 | 232 | -------------------------------------------------------------------------------- /Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 125 | 126 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 127 | YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG 128 | YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 129 | 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw 130 | bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc 131 | VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 132 | c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 133 | Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo 134 | mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ 135 | kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D 136 | TgDQASA1MVpwzwAAAABJRU5ErkJggg== 137 | 138 | 139 | 140 | 141 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 142 | YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG 143 | YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 144 | 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw 145 | bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc 146 | VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 147 | c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 148 | Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo 149 | mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ 150 | kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D 151 | TgDQASA1MVpwzwAAAABJRU5ErkJggg== 152 | 153 | 154 | 155 | 156 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 157 | YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG 158 | YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 159 | 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw 160 | bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc 161 | VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 162 | c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 163 | Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo 164 | mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ 165 | kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D 166 | TgDQASA1MVpwzwAAAABJRU5ErkJggg== 167 | 168 | 169 | 170 | 171 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 172 | YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG 173 | YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 174 | 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw 175 | bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc 176 | VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 177 | c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 178 | Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo 179 | mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ 180 | kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D 181 | TgDQASA1MVpwzwAAAABJRU5ErkJggg== 182 | 183 | 184 | 185 | 122, 17 186 | 187 | 188 | 262, 17 189 | 190 | 191 | 192 | AAABAAEAICAAAAEAIADbAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAAlw 193 | SFlzAAALEwAACxMBAJqcGAAAAY1JREFUWIXtlz1u20AQhb83u6RlwJWbFAaSFEFygBzGZ80R3LtzBFiF 194 | 4DpIAtkidyYFZYpyYSuIsSziKYe7895wflcRwZxis6K/EQAywLfPX+NXt+FHmzjLDblo+KoHioHLxwsq 195 | GQUkBD6cCzmS6BJEBNJOv8svc0MSOfZ2tl3hcnktXV18Chf8TKIrD5zTVvEc4HcOrGu2ACz6QhepGjjA 196 | goylfvC4McPdX7jyuqIIjF24CSiVe4IVx0LbUdF7V5VAyQkz06hYVK5KSZgPlQhAtrpJGBFY+D7ukqg9 197 | GyyxB7Q4AemZ468nyRO9An15/y42SpiLNhv3XqoQEOLUwO415IBbsI16fSAINg42DXmobhUEgWlShlT8 198 | A49y4HIpdeJ/QCAmXs+xntkOGYDSzxWCcYGojj/vSnbStvMSKO6YJq03N/X4mBnL7yvlqTKlf5+GbbPg 199 | 5mZ59EDJj6WXcqL0L/eB1e16NP7h48VB2vads7o9HhzARoNHVMAU/KmUUliv7/56lOrtbfjfE/gDI0yg 200 | cl10+QUAAAAASUVORK5CYII= 201 | 202 | 203 | -------------------------------------------------------------------------------- /GetGarc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/GetGarc.dll -------------------------------------------------------------------------------- /GlobalVars.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace _3DSROMEDITOR { 8 | public sealed class GlobalVars { 9 | public static GlobalVars inst = new GlobalVars(); 10 | 11 | private GlobalVars() { } 12 | public const string Version = "0.0.1a"; 13 | 14 | //Important Offsets 15 | public const int NCSD = 0x0; 16 | public const int NCCH = 0x4000; 17 | public string rom { get; set; } 18 | public string romPath { get; set; } 19 | 20 | public int ncsdSize { get; set; } 21 | public string productCode { get; set; } 22 | 23 | public uint romfsOff { get; set; } 24 | public uint romfsSize { get; set; } 25 | 26 | public int[] garcOffs { get; set; } 27 | public int seleNode { get; set; } 28 | public uint romfsSuperhashSize { get; set; } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace _3DSROMEDITOR { 8 | static class Program { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | static void Main() { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new Form1()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("3DSROMEDITOR")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("3DSROMEDITOR")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("47ab147a-4798-4818-a5f8-2c8bb071da63")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("0.0.1.0")] 36 | [assembly: AssemblyFileVersion("0.0.1.0")] 37 | -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace _3DSROMEDITOR.Properties { 12 | 13 | 14 | /// 15 | /// A strongly-typed resource class, for looking up localized strings, etc. 16 | /// 17 | // This class was auto-generated by the StronglyTypedResourceBuilder 18 | // class via a tool like ResGen or Visual Studio. 19 | // To add or remove a member, edit your .ResX file then rerun ResGen 20 | // with the /str option, or rebuild your VS project. 21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 24 | internal class Resources { 25 | 26 | private static global::System.Resources.ResourceManager resourceMan; 27 | 28 | private static global::System.Globalization.CultureInfo resourceCulture; 29 | 30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 31 | internal Resources() { 32 | } 33 | 34 | /// 35 | /// Returns the cached ResourceManager instance used by this class. 36 | /// 37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 38 | internal static global::System.Resources.ResourceManager ResourceManager { 39 | get { 40 | if ((resourceMan == null)) { 41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("_3DSROMEDITOR.Properties.Resources", typeof(Resources).Assembly); 42 | resourceMan = temp; 43 | } 44 | return resourceMan; 45 | } 46 | } 47 | 48 | /// 49 | /// Overrides the current thread's CurrentUICulture property for all 50 | /// resource lookups using this strongly typed resource class. 51 | /// 52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 53 | internal static global::System.Globalization.CultureInfo Culture { 54 | get { 55 | return resourceCulture; 56 | } 57 | set { 58 | resourceCulture = value; 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace _3DSROMEDITOR.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Temp.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Security.Cryptography; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace _3DSROMEDITOR { 10 | class Temp { 11 | 12 | private static string romfs_file = null; 13 | private static string patched_file; 14 | private static string crr_file; 15 | private static bool opened_romfs = false; 16 | private static bool opened_crr = false; 17 | private static UInt64 doffset_0; 18 | private static UInt64 doffset_1; 19 | private static UInt64 doffset_2; 20 | private static UInt64 hoffset_0; 21 | private static UInt64 hoffset_1; 22 | private static UInt64 hoffset_2; 23 | private static UInt64 length_0; 24 | private static UInt64 length_1; 25 | private static UInt64 length_2; 26 | private static uint[] bsize; 27 | private static UInt64 master_size; 28 | 29 | private static ulong align(ulong input, ulong alignsize) { 30 | if (input == 0) return 0; 31 | return ((input - 1) / alignsize + 1) * alignsize; 32 | } 33 | 34 | internal static void rehashRomfsTEMP(string path, string prodCode) { 35 | 36 | romfs_file = (path == null && prodCode == null) ? "" : path + prodCode + "-romfs.bin"; 37 | bool valid = true; 38 | bsize = new uint[3]; 39 | byte[] buffer = new byte[0x200]; 40 | using (FileStream fs = new FileStream(romfs_file, FileMode.Open, FileAccess.Read)) { 41 | fs.Read(buffer, 0, buffer.Length); 42 | fs.Close(); 43 | } 44 | if (BitConverter.ToUInt32(buffer, 0) != 0x43465649) //IVFC 45 | { 46 | valid = false; 47 | romfs_file = ""; 48 | } 49 | if (valid) { 50 | int lastdot = romfs_file.LastIndexOf('.'); 51 | patched_file = romfs_file.Substring(0, lastdot) + "_patched" + romfs_file.Substring(lastdot); 52 | opened_romfs = true; 53 | master_size = BitConverter.ToUInt64(buffer, 0x8); 54 | uint baseoffset = 0x60; 55 | bsize[0] = (uint)(1 << (int)(BitConverter.ToUInt32(buffer, 0x1C))); 56 | bsize[1] = (uint)(1 << (int)(BitConverter.ToUInt32(buffer, 0x34))); 57 | bsize[2] = (uint)(1 << (int)(BitConverter.ToUInt32(buffer, 0x4C))); 58 | ulong bodyoffset = align(baseoffset + master_size, bsize[2]); 59 | ulong bodysize = BitConverter.ToUInt32(buffer, 0x44); 60 | doffset_2 = bodyoffset; 61 | length_2 = align(bodysize, bsize[2]); 62 | 63 | hoffset_1 = align(bodyoffset + bodysize, bsize[2]); 64 | hoffset_2 = hoffset_1 + BitConverter.ToUInt32(buffer, 0x24) - BitConverter.ToUInt64(buffer, 0xC); 65 | 66 | doffset_1 = hoffset_2; 67 | length_1 = align(BitConverter.ToUInt64(buffer, 0x2C), bsize[1]); 68 | 69 | doffset_0 = hoffset_1; 70 | length_0 = align(BitConverter.ToUInt64(buffer, 0x14), bsize[0]); 71 | } 72 | patchHash(); 73 | } 74 | 75 | 76 | private static void patchHash() { 77 | if (File.Exists(patched_file)) { 78 | File.Delete(patched_file); 79 | } 80 | File.Copy(romfs_file, patched_file); 81 | byte[] buffer = new byte[bsize[2]]; 82 | byte[] goodhash = new byte[0x20]; 83 | byte[] hashbuffer = new byte[0x20]; 84 | int times2 = (int)(Math.Ceiling(length_2 / (double)bsize[2])); 85 | int times1 = (int)(Math.Ceiling(length_1 / (double)bsize[1])); 86 | int times0 = (int)(Math.Ceiling(length_0 / (double)bsize[0])); 87 | SHA256Managed Hasher = new SHA256Managed(); 88 | try { 89 | using (FileStream fs2 = new FileStream(romfs_file, FileMode.Open, FileAccess.Read)) { 90 | using (FileStream fs = new FileStream(romfs_file, FileMode.Open, FileAccess.Read), fs3 = new FileStream(patched_file, FileMode.Open, FileAccess.ReadWrite)) { 91 | fs.Seek((long)doffset_2, SeekOrigin.Begin); 92 | fs2.Seek((long)hoffset_2, SeekOrigin.Begin); 93 | 94 | for (int i = 0; i < times2; i++) { 95 | fs.Read(buffer, 0, (int)bsize[2]); 96 | fs2.Read(goodhash, 0, 0x20); 97 | hashbuffer = Hasher.ComputeHash(buffer); 98 | if (!Enumerable.SequenceEqual(goodhash, hashbuffer)) { 99 | fs3.Seek(fs2.Position - 0x20, SeekOrigin.Begin); 100 | fs3.Write(hashbuffer, 0, 0x20); 101 | } 102 | } 103 | fs.Close(); 104 | fs3.Close(); 105 | } 106 | fs2.Close(); 107 | } 108 | File.Delete(romfs_file); 109 | File.Copy(patched_file, romfs_file); 110 | using (FileStream fs2 = new FileStream(romfs_file, FileMode.Open, FileAccess.Read)) { 111 | using (FileStream fs = new FileStream(romfs_file, FileMode.Open, FileAccess.Read), fs3 = new FileStream(patched_file, FileMode.Open, FileAccess.ReadWrite)) { 112 | fs.Seek((long)doffset_1, SeekOrigin.Begin); 113 | fs2.Seek((long)hoffset_1, SeekOrigin.Begin); 114 | for (int i = 0; i < times1; i++) { 115 | fs.Read(buffer, 0, (int)bsize[1]); 116 | fs2.Read(goodhash, 0, 0x20); 117 | hashbuffer = Hasher.ComputeHash(buffer); 118 | if (!Enumerable.SequenceEqual(goodhash, hashbuffer)) { 119 | fs3.Seek(fs2.Position - 0x20, SeekOrigin.Begin); 120 | fs3.Write(hashbuffer, 0, 0x20); 121 | } 122 | } 123 | fs.Close(); 124 | fs3.Close(); 125 | } 126 | fs2.Close(); 127 | } 128 | File.Delete(romfs_file); 129 | File.Copy(patched_file, romfs_file); 130 | using (FileStream fs2 = new FileStream(romfs_file, FileMode.Open, FileAccess.Read)) { 131 | using (FileStream fs = new FileStream(romfs_file, FileMode.Open, FileAccess.Read), fs3 = new FileStream(patched_file, FileMode.Open, FileAccess.ReadWrite)) { 132 | fs.Seek((long)doffset_0, SeekOrigin.Begin); 133 | fs2.Seek((long)hoffset_0, SeekOrigin.Begin); 134 | for (int i = 0; i < times0; i++) { 135 | fs.Read(buffer, 0, (int)bsize[0]); 136 | fs2.Read(goodhash, 0, 0x20); 137 | hashbuffer = Hasher.ComputeHash(buffer); 138 | if (!Enumerable.SequenceEqual(goodhash, hashbuffer)) { 139 | fs3.Seek(fs2.Position - 0x20, SeekOrigin.Begin); 140 | fs3.Write(hashbuffer, 0, 0x20); 141 | } 142 | } 143 | fs.Close(); 144 | fs3.Close(); 145 | } 146 | fs2.Close(); 147 | } 148 | File.Delete(romfs_file); 149 | File.Copy(patched_file, romfs_file); 150 | File.Delete(patched_file); 151 | } 152 | catch (IOException exceptionsad) { 153 | 154 | } 155 | } 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /Utils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace _3DSROMEDITOR { 8 | public static class Utils { 9 | 10 | public static uint getU32(this byte[] b) { 11 | uint result = 0; 12 | for (int byteP = 0; byteP < 4; byteP++) result |= ((uint)b[byteP]) << (8 * byteP); 13 | return result; 14 | } 15 | 16 | public static uint getU64(this byte[] b) { 17 | uint result = 0; 18 | for (int byteP = 0; byteP < 8; byteP++) result |= ((uint)b[byteP]) << (8 * byteP); 19 | return result; 20 | } 21 | 22 | public static string bytes2str(this byte[] str) { 23 | return Encoding.ASCII.GetString(str); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /bin/Debug/3DSROMEDITOR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Debug/3DSROMEDITOR.exe -------------------------------------------------------------------------------- /bin/Debug/3DSROMEDITOR.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /bin/Debug/3DSROMEDITOR.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Debug/3DSROMEDITOR.pdb -------------------------------------------------------------------------------- /bin/Debug/3DSROMEDITOR.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Debug/3DSROMEDITOR.vshost.exe -------------------------------------------------------------------------------- /bin/Debug/3DSROMEDITOR.vshost.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /bin/Debug/3DSROMEDITOR.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /bin/Debug/GetGarc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Debug/GetGarc.dll -------------------------------------------------------------------------------- /bin/Release/3DSRE/3DSROMEDITOR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/3DSRE/3DSROMEDITOR.exe -------------------------------------------------------------------------------- /bin/Release/3DSRE/CRR0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/3DSRE/CRR0.dll -------------------------------------------------------------------------------- /bin/Release/3DSRE/Crypto.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/3DSRE/Crypto.dll -------------------------------------------------------------------------------- /bin/Release/3DSRE/Garc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/3DSRE/Garc.dll -------------------------------------------------------------------------------- /bin/Release/3DSRE/README.txt: -------------------------------------------------------------------------------- 1 | Usage: 2 | 1. Open rom (if decrypted, you're fine, if not, make sure xorpad is '0.romfs.xorpad') 3 | 2. edit dumpted romfs 4 | 3. Hit Rebuild Romfs 5 | 4. ??? 6 | 5. Profit 7 | 8 | Other features: 9 | - Hitting Rebuild Romfs without loading a rom will allow you to select a romfs to rehash. -------------------------------------------------------------------------------- /bin/Release/3DSROMEDITOR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/3DSROMEDITOR.exe -------------------------------------------------------------------------------- /bin/Release/3DSROMEDITOR.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /bin/Release/3DSROMEDITOR.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/3DSROMEDITOR.pdb -------------------------------------------------------------------------------- /bin/Release/3DSROMEDITOR.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/3DSROMEDITOR.vshost.exe -------------------------------------------------------------------------------- /bin/Release/3DSROMEDITOR.vshost.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /bin/Release/3DSROMEDITOR.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /bin/Release/CRR0.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/CRR0.dll -------------------------------------------------------------------------------- /bin/Release/Crypto.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/Crypto.dll -------------------------------------------------------------------------------- /bin/Release/Garc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/Garc.dll -------------------------------------------------------------------------------- /bin/Release/Release.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/bin/Release/Release.rar -------------------------------------------------------------------------------- /mini.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/mini.ico -------------------------------------------------------------------------------- /obj/Debug/3DSROMEDITOR.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\bin\Debug\3DSROMEDITOR.exe.config 2 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\bin\Debug\3DSROMEDITOR.exe 3 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\bin\Debug\3DSROMEDITOR.pdb 4 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Debug\_3DSROMEDITOR.Form1.resources 5 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Debug\_3DSROMEDITOR.Properties.Resources.resources 6 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Debug\3DSROMEDITOR.csproj.GenerateResource.Cache 7 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Debug\3DSROMEDITOR.exe 8 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Debug\3DSROMEDITOR.pdb 9 | c:\users\adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Debug\3DSROMEDITOR.csprojResolveAssemblyReference.cache 10 | -------------------------------------------------------------------------------- /obj/Debug/3DSROMEDITOR.csproj.GenerateResource.Cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/3DSROMEDITOR.csproj.GenerateResource.Cache -------------------------------------------------------------------------------- /obj/Debug/3DSROMEDITOR.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/3DSROMEDITOR.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /obj/Debug/3DSROMEDITOR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/3DSROMEDITOR.exe -------------------------------------------------------------------------------- /obj/Debug/3DSROMEDITOR.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/3DSROMEDITOR.pdb -------------------------------------------------------------------------------- /obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /obj/Debug/_3DSROMEDITOR.Form1.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/_3DSROMEDITOR.Form1.resources -------------------------------------------------------------------------------- /obj/Debug/_3DSROMEDITOR.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Debug/_3DSROMEDITOR.Properties.Resources.resources -------------------------------------------------------------------------------- /obj/Release/3DSROMEDITOR.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Release\_3DSROMEDITOR.Form1.resources 2 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Release\_3DSROMEDITOR.Properties.Resources.resources 3 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Release\3DSROMEDITOR.csproj.GenerateResource.Cache 4 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\bin\Release\3DSROMEDITOR.exe.config 5 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\bin\Release\3DSROMEDITOR.exe 6 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\bin\Release\3DSROMEDITOR.pdb 7 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Release\3DSROMEDITOR.exe 8 | C:\Users\Adam\documents\visual studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Release\3DSROMEDITOR.pdb 9 | C:\Users\Adam\Documents\Visual Studio 2013\Projects\3DSROMEDITOR\3DSROMEDITOR\obj\Release\3DSROMEDITOR.csprojResolveAssemblyReference.cache 10 | -------------------------------------------------------------------------------- /obj/Release/3DSROMEDITOR.csproj.GenerateResource.Cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/3DSROMEDITOR.csproj.GenerateResource.Cache -------------------------------------------------------------------------------- /obj/Release/3DSROMEDITOR.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/3DSROMEDITOR.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /obj/Release/3DSROMEDITOR.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/3DSROMEDITOR.exe -------------------------------------------------------------------------------- /obj/Release/3DSROMEDITOR.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/3DSROMEDITOR.pdb -------------------------------------------------------------------------------- /obj/Release/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /obj/Release/_3DSROMEDITOR.Form1.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/_3DSROMEDITOR.Form1.resources -------------------------------------------------------------------------------- /obj/Release/_3DSROMEDITOR.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Reisyukaku/3DSRE/f234cfbe8e6034e2d3963995a948eb2d74d6c855/obj/Release/_3DSROMEDITOR.Properties.Resources.resources --------------------------------------------------------------------------------