├── 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
--------------------------------------------------------------------------------