├── .gitignore ├── README.md ├── SuperTileMapper ├── .vs │ └── SuperTileMapper │ │ └── v14 │ │ └── .suo ├── SuperTileMapper.sln └── SuperTileMapper │ ├── About.Designer.cs │ ├── About.cs │ ├── About.resx │ ├── App.config │ ├── Be.Windows.Forms.HexBox │ ├── AssemblyInfo.cs │ ├── Be.Windows.Forms.HexBox.csproj │ ├── BuiltInContextMenu.cs │ ├── ByteCharConverters.cs │ ├── ByteCollection.cs │ ├── BytePositionInfo.cs │ ├── DataBlock.cs │ ├── DataMap.cs │ ├── DynamicByteProvider.cs │ ├── DynamicFileByteProvider.cs │ ├── FileByteProvider.cs │ ├── FileDataBlock.cs │ ├── FindOptions.cs │ ├── HexBox.bmp │ ├── HexBox.cs │ ├── HexBox.resx │ ├── HexBox.snk │ ├── HexCasing.cs │ ├── IByteProvider.cs │ ├── MemoryDataBlock.cs │ ├── NativeMethods.cs │ ├── Properties │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ └── Util.cs │ ├── CGRAMEditor.Designer.cs │ ├── CGRAMEditor.cs │ ├── CGRAMEditor.resx │ ├── Data.cs │ ├── Emulator.cs │ ├── ExportData.Designer.cs │ ├── ExportData.cs │ ├── ExportData.resx │ ├── ImportData.Designer.cs │ ├── ImportData.cs │ ├── ImportData.resx │ ├── OAMEditor.Designer.cs │ ├── OAMEditor.cs │ ├── OAMEditor.resx │ ├── OBJEditor.Designer.cs │ ├── OBJEditor.cs │ ├── OBJEditor.resx │ ├── PPURegEditor.Designer.cs │ ├── PPURegEditor.cs │ ├── PPURegEditor.resx │ ├── PPURegEditor2.Designer.cs │ ├── PPURegEditor2.cs │ ├── PPURegEditor2.resx │ ├── Program.cs │ ├── Project.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── DataSources │ │ └── Data.datasource │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── SNESGraphics.cs │ ├── SuperTileMapper.Designer.cs │ ├── SuperTileMapper.cs │ ├── SuperTileMapper.csproj │ ├── SuperTileMapper.csproj.user │ ├── SuperTileMapper.resx │ ├── TilemapEditor.Designer.cs │ ├── TilemapEditor.cs │ ├── TilemapEditor.resx │ ├── Util.cs │ ├── VRAMEditor.Designer.cs │ ├── VRAMEditor.cs │ ├── VRAMEditor.resx │ ├── bin │ ├── Debug │ │ ├── SuperTileMapper.exe │ │ ├── SuperTileMapper.exe.config │ │ ├── SuperTileMapper.pdb │ │ ├── SuperTileMapper.vshost.exe │ │ ├── SuperTileMapper.vshost.exe.config │ │ └── SuperTileMapper.vshost.exe.manifest │ └── Release │ │ ├── SuperTileMapper.exe │ │ ├── SuperTileMapper.exe.config │ │ ├── SuperTileMapper.pdb │ │ ├── SuperTileMapper.vshost.exe │ │ ├── SuperTileMapper.vshost.exe.config │ │ └── SuperTileMapper.vshost.exe.manifest │ └── obj │ ├── Debug │ ├── Be.Windows.Forms.HexBox.resources │ ├── DesignTimeResolveAssemblyReferences.cache │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── SuperTileMapper.About.resources │ ├── SuperTileMapper.Be.Windows.Forms.HexBox.Properties.Resources.resources │ ├── SuperTileMapper.CGRAMEditor.resources │ ├── SuperTileMapper.ExportData.resources │ ├── SuperTileMapper.ImportData.resources │ ├── SuperTileMapper.OAMEditor.resources │ ├── SuperTileMapper.PPURegEditor.resources │ ├── SuperTileMapper.Properties.Resources.resources │ ├── SuperTileMapper.SuperTileMapper.resources │ ├── SuperTileMapper.TilemapEditor.resources │ ├── SuperTileMapper.VRAMEditor.resources │ ├── SuperTileMapper.csproj.FileListAbsolute.txt │ ├── SuperTileMapper.csproj.GenerateResource.Cache │ ├── SuperTileMapper.csprojResolveAssemblyReference.cache │ ├── SuperTileMapper.exe │ ├── SuperTileMapper.pdb │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ └── Release │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── SuperTileMapper.About.resources │ ├── SuperTileMapper.CGRAMEditor.resources │ ├── SuperTileMapper.ExportData.resources │ ├── SuperTileMapper.ImportData.resources │ ├── SuperTileMapper.OAMEditor.resources │ ├── SuperTileMapper.PPURegEditor.resources │ ├── SuperTileMapper.Properties.Resources.resources │ ├── SuperTileMapper.SuperTileMapper.resources │ ├── SuperTileMapper.VRAMEditor.resources │ ├── SuperTileMapper.csproj.FileListAbsolute.txt │ ├── SuperTileMapper.csproj.GenerateResource.Cache │ ├── SuperTileMapper.exe │ ├── SuperTileMapper.pdb │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs └── testdata ├── bytes.bin ├── empty.bin ├── emulator ├── Bizhawk.State ├── bSNES.bst ├── lsnes.lsmv ├── snes9x.state └── zsnes.zst ├── mariokart ├── cgram.bin ├── mariokart.stm ├── oam.bin ├── ppuregs.bin └── vram.bin ├── sd2snes ├── cgram.bin ├── oam.bin ├── ppuregs.bin ├── sd2snes.stm └── vram.bin ├── smb3battle ├── cgram.bin ├── oam.bin ├── ppuregs.bin ├── smb3battle.stm └── vram.bin ├── smw ├── cgram.bin ├── oam.bin ├── ppuregs.bin ├── smw.stm └── vram.bin ├── testOutput.bin ├── tetrisattack ├── cgram.bin ├── oam.bin ├── ppuregs.bin ├── tetrisattack.stm └── vram.bin └── words.bin /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Aa][Rr][Mm]/ 27 | [Aa][Rr][Mm]64/ 28 | bld/ 29 | [Bb]in/ 30 | [Oo]bj/ 31 | [Ll]og/ 32 | 33 | # Visual Studio 2015/2017 cache/options directory 34 | .vs/ 35 | # Uncomment if you have tasks that create the project's static files in wwwroot 36 | #wwwroot/ 37 | 38 | # Visual Studio 2017 auto generated files 39 | Generated\ Files/ 40 | 41 | # MSTest test Results 42 | [Tt]est[Rr]esult*/ 43 | [Bb]uild[Ll]og.* 44 | 45 | # NUNIT 46 | *.VisualState.xml 47 | TestResult.xml 48 | 49 | # Build Results of an ATL Project 50 | [Dd]ebugPS/ 51 | [Rr]eleasePS/ 52 | dlldata.c 53 | 54 | # Benchmark Results 55 | BenchmarkDotNet.Artifacts/ 56 | 57 | # .NET Core 58 | project.lock.json 59 | project.fragment.lock.json 60 | artifacts/ 61 | 62 | # StyleCop 63 | StyleCopReport.xml 64 | 65 | # Files built by Visual Studio 66 | *_i.c 67 | *_p.c 68 | *_h.h 69 | *.ilk 70 | *.meta 71 | *.obj 72 | *.iobj 73 | *.pch 74 | *.pdb 75 | *.ipdb 76 | *.pgc 77 | *.pgd 78 | *.rsp 79 | *.sbr 80 | *.tlb 81 | *.tli 82 | *.tlh 83 | *.tmp 84 | *.tmp_proj 85 | *_wpftmp.csproj 86 | *.log 87 | *.vspscc 88 | *.vssscc 89 | .builds 90 | *.pidb 91 | *.svclog 92 | *.scc 93 | 94 | # Chutzpah Test files 95 | _Chutzpah* 96 | 97 | # Visual C++ cache files 98 | ipch/ 99 | *.aps 100 | *.ncb 101 | *.opendb 102 | *.opensdf 103 | *.sdf 104 | *.cachefile 105 | *.VC.db 106 | *.VC.VC.opendb 107 | 108 | # Visual Studio profiler 109 | *.psess 110 | *.vsp 111 | *.vspx 112 | *.sap 113 | 114 | # Visual Studio Trace Files 115 | *.e2e 116 | 117 | # TFS 2012 Local Workspace 118 | $tf/ 119 | 120 | # Guidance Automation Toolkit 121 | *.gpState 122 | 123 | # ReSharper is a .NET coding add-in 124 | _ReSharper*/ 125 | *.[Rr]e[Ss]harper 126 | *.DotSettings.user 127 | 128 | # JustCode is a .NET coding add-in 129 | .JustCode 130 | 131 | # TeamCity is a build add-in 132 | _TeamCity* 133 | 134 | # DotCover is a Code Coverage Tool 135 | *.dotCover 136 | 137 | # AxoCover is a Code Coverage Tool 138 | .axoCover/* 139 | !.axoCover/settings.json 140 | 141 | # Visual Studio code coverage results 142 | *.coverage 143 | *.coveragexml 144 | 145 | # NCrunch 146 | _NCrunch_* 147 | .*crunch*.local.xml 148 | nCrunchTemp_* 149 | 150 | # MightyMoose 151 | *.mm.* 152 | AutoTest.Net/ 153 | 154 | # Web workbench (sass) 155 | .sass-cache/ 156 | 157 | # Installshield output folder 158 | [Ee]xpress/ 159 | 160 | # DocProject is a documentation generator add-in 161 | DocProject/buildhelp/ 162 | DocProject/Help/*.HxT 163 | DocProject/Help/*.HxC 164 | DocProject/Help/*.hhc 165 | DocProject/Help/*.hhk 166 | DocProject/Help/*.hhp 167 | DocProject/Help/Html2 168 | DocProject/Help/html 169 | 170 | # Click-Once directory 171 | publish/ 172 | 173 | # Publish Web Output 174 | *.[Pp]ublish.xml 175 | *.azurePubxml 176 | # Note: Comment the next line if you want to checkin your web deploy settings, 177 | # but database connection strings (with potential passwords) will be unencrypted 178 | *.pubxml 179 | *.publishproj 180 | 181 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 182 | # checkin your Azure Web App publish settings, but sensitive information contained 183 | # in these scripts will be unencrypted 184 | PublishScripts/ 185 | 186 | # NuGet Packages 187 | *.nupkg 188 | # The packages folder can be ignored because of Package Restore 189 | **/[Pp]ackages/* 190 | # except build/, which is used as an MSBuild target. 191 | !**/[Pp]ackages/build/ 192 | # Uncomment if necessary however generally it will be regenerated when needed 193 | #!**/[Pp]ackages/repositories.config 194 | # NuGet v3's project.json files produces more ignorable files 195 | *.nuget.props 196 | *.nuget.targets 197 | 198 | # Microsoft Azure Build Output 199 | csx/ 200 | *.build.csdef 201 | 202 | # Microsoft Azure Emulator 203 | ecf/ 204 | rcf/ 205 | 206 | # Windows Store app package directories and files 207 | AppPackages/ 208 | BundleArtifacts/ 209 | Package.StoreAssociation.xml 210 | _pkginfo.txt 211 | *.appx 212 | *.appxbundle 213 | *.appxupload 214 | 215 | # Visual Studio cache files 216 | # files ending in .cache can be ignored 217 | *.[Cc]ache 218 | # but keep track of directories ending in .cache 219 | !?*.[Cc]ache/ 220 | 221 | # Others 222 | ClientBin/ 223 | ~$* 224 | *~ 225 | *.dbmdl 226 | *.dbproj.schemaview 227 | *.jfm 228 | *.pfx 229 | *.publishsettings 230 | orleans.codegen.cs 231 | 232 | # Including strong name files can present a security risk 233 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 234 | #*.snk 235 | 236 | # Since there are multiple workflows, uncomment next line to ignore bower_components 237 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 238 | #bower_components/ 239 | 240 | # RIA/Silverlight projects 241 | Generated_Code/ 242 | 243 | # Backup & report files from converting an old project file 244 | # to a newer Visual Studio version. Backup files are not needed, 245 | # because we have git ;-) 246 | _UpgradeReport_Files/ 247 | Backup*/ 248 | UpgradeLog*.XML 249 | UpgradeLog*.htm 250 | ServiceFabricBackup/ 251 | *.rptproj.bak 252 | 253 | # SQL Server files 254 | *.mdf 255 | *.ldf 256 | *.ndf 257 | 258 | # Business Intelligence projects 259 | *.rdl.data 260 | *.bim.layout 261 | *.bim_*.settings 262 | *.rptproj.rsuser 263 | *- Backup*.rdl 264 | 265 | # Microsoft Fakes 266 | FakesAssemblies/ 267 | 268 | # GhostDoc plugin setting file 269 | *.GhostDoc.xml 270 | 271 | # Node.js Tools for Visual Studio 272 | .ntvs_analysis.dat 273 | node_modules/ 274 | 275 | # Visual Studio 6 build log 276 | *.plg 277 | 278 | # Visual Studio 6 workspace options file 279 | *.opt 280 | 281 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 282 | *.vbw 283 | 284 | # Visual Studio LightSwitch build output 285 | **/*.HTMLClient/GeneratedArtifacts 286 | **/*.DesktopClient/GeneratedArtifacts 287 | **/*.DesktopClient/ModelManifest.xml 288 | **/*.Server/GeneratedArtifacts 289 | **/*.Server/ModelManifest.xml 290 | _Pvt_Extensions 291 | 292 | # Paket dependency manager 293 | .paket/paket.exe 294 | paket-files/ 295 | 296 | # FAKE - F# Make 297 | .fake/ 298 | 299 | # CodeRush personal settings 300 | .cr/personal 301 | 302 | # Python Tools for Visual Studio (PTVS) 303 | __pycache__/ 304 | *.pyc 305 | 306 | # Cake - Uncomment if you are using it 307 | # tools/** 308 | # !tools/packages.config 309 | 310 | # Tabs Studio 311 | *.tss 312 | 313 | # Telerik's JustMock configuration file 314 | *.jmconfig 315 | 316 | # BizTalk build output 317 | *.btp.cs 318 | *.btm.cs 319 | *.odx.cs 320 | *.xsd.cs 321 | 322 | # OpenCover UI analysis results 323 | OpenCover/ 324 | 325 | # Azure Stream Analytics local run output 326 | ASALocalRun/ 327 | 328 | # MSBuild Binary and Structured Log 329 | *.binlog 330 | 331 | # NVidia Nsight GPU debugger configuration file 332 | *.nvuser 333 | 334 | # MFractors (Xamarin productivity tool) working folder 335 | .mfractor/ 336 | 337 | # Local History for Visual Studio 338 | .localhistory/ 339 | 340 | # BeatPulse healthcheck temp database 341 | healthchecksdb 342 | 343 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 344 | MigrationBackup/ 345 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SuperTileMapper 2 | 3 | This is a general Super NES Tilemap Editor. It allows you to edit VRAM, CGRAM, OAM, & PPU Registers easily. 4 | 5 | The main goal is to be able to build background tilemaps by pasting together tiles. Eventually, a graphics drawing editor will be included as well. Another possiblity is an HDMA editor and previewer. 6 | -------------------------------------------------------------------------------- /SuperTileMapper/.vs/SuperTileMapper/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/.vs/SuperTileMapper/v14/.suo -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.23107.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SuperTileMapper", "SuperTileMapper\SuperTileMapper.csproj", "{B09934CC-950B-4C63-8265-463D7CD0A936}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {B09934CC-950B-4C63-8265-463D7CD0A936}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {B09934CC-950B-4C63-8265-463D7CD0A936}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {B09934CC-950B-4C63-8265-463D7CD0A936}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {B09934CC-950B-4C63-8265-463D7CD0A936}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/About.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Linq; 6 | using System.Reflection; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | 10 | namespace SuperTileMapper 11 | { 12 | partial class About : Form 13 | { 14 | public About() 15 | { 16 | InitializeComponent(); 17 | this.Text = String.Format("About {0}", AssemblyTitle); 18 | this.labelProductName.Text = AssemblyProduct; 19 | this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion); 20 | this.labelCopyright.Text = AssemblyCopyright; 21 | this.labelCompanyName.Text = AssemblyCompany; 22 | this.textBoxDescription.Text = AssemblyDescription; 23 | } 24 | 25 | #region Assembly Attribute Accessors 26 | 27 | public string AssemblyTitle 28 | { 29 | get 30 | { 31 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); 32 | if (attributes.Length > 0) 33 | { 34 | AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0]; 35 | if (titleAttribute.Title != "") 36 | { 37 | return titleAttribute.Title; 38 | } 39 | } 40 | return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase); 41 | } 42 | } 43 | 44 | public string AssemblyVersion 45 | { 46 | get 47 | { 48 | return Assembly.GetExecutingAssembly().GetName().Version.ToString(); 49 | } 50 | } 51 | 52 | public string AssemblyDescription 53 | { 54 | get 55 | { 56 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false); 57 | if (attributes.Length == 0) 58 | { 59 | return ""; 60 | } 61 | return ((AssemblyDescriptionAttribute)attributes[0]).Description; 62 | } 63 | } 64 | 65 | public string AssemblyProduct 66 | { 67 | get 68 | { 69 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false); 70 | if (attributes.Length == 0) 71 | { 72 | return ""; 73 | } 74 | return ((AssemblyProductAttribute)attributes[0]).Product; 75 | } 76 | } 77 | 78 | public string AssemblyCopyright 79 | { 80 | get 81 | { 82 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); 83 | if (attributes.Length == 0) 84 | { 85 | return ""; 86 | } 87 | return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; 88 | } 89 | } 90 | 91 | public string AssemblyCompany 92 | { 93 | get 94 | { 95 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false); 96 | if (attributes.Length == 0) 97 | { 98 | return ""; 99 | } 100 | return ((AssemblyCompanyAttribute)attributes[0]).Company; 101 | } 102 | } 103 | #endregion 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Security.Permissions; 5 | using System.Runtime.InteropServices; 6 | 7 | // 8 | // General Information about an assembly is controlled through the following 9 | // set of attributes. Change these attribute values to modify the information 10 | // associated with an assembly. 11 | // 12 | [assembly: AssemblyTitle("Be.Windows.Forms.HexBox")] 13 | [assembly: AssemblyDescription("hex edit control (C# DOTNET)")] 14 | [assembly: AssemblyConfiguration("")] 15 | [assembly: AssemblyCompany("Be")] 16 | [assembly: AssemblyProduct("Be.Windows.Forms.HexBox")] 17 | [assembly: AssemblyCopyright("")] 18 | [assembly: AssemblyTrademark("")] 19 | [assembly: AssemblyCulture("")] 20 | 21 | // 22 | // Version information for an assembly consists of the following four values: 23 | // 24 | // Major Version 25 | // Minor Version 26 | // Build Number 27 | // Revision 28 | // 29 | // You can specify all the values or you can default the Revision and Build Numbers 30 | // by using the '*' as shown below: 31 | 32 | [assembly: AssemblyVersion("1.6.0.*")] 33 | 34 | // 35 | // In order to sign your assembly you must specify a key to use. Refer to the 36 | // Microsoft .NET Framework documentation for more information on assembly signing. 37 | // 38 | // Use the attributes below to control which key is used for signing. 39 | // 40 | // Notes: 41 | // (*) If no key is specified, the assembly is not signed. 42 | // (*) KeyName refers to a key that has been installed in the Crypto Service 43 | // Provider (CSP) on your machine. KeyFile refers to a file which contains 44 | // a key. 45 | // (*) If the KeyFile and the KeyName values are both specified, the 46 | // following processing occurs: 47 | // (1) If the KeyName can be found in the CSP, that key is used. 48 | // (2) If the KeyName does not exist and the KeyFile does exist, the key 49 | // in the KeyFile is installed into the CSP and used. 50 | // (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. 51 | // When specifying the KeyFile, the location of the KeyFile should be 52 | // relative to the project output directory which is 53 | // %Project Directory%\obj\. For example, if your KeyFile is 54 | // located in the project directory, you would specify the AssemblyKeyFile 55 | // attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] 56 | // (*) Delay Signing is an advanced option - see the Microsoft .NET Framework 57 | // documentation for more information on this. 58 | // 59 | [assembly: AssemblyDelaySign(false)] 60 | 61 | //[assembly: AssemblyKeyFile("../../HexBox.snk")] 62 | //[assembly: AssemblyKeyName("")] 63 | 64 | //[assembly:IsolatedStorageFilePermission(SecurityAction.RequestRefuse, UserQuota=1048576)] 65 | //[assembly:SecurityPermission(SecurityAction.RequestRefuse, UnmanagedCode=true)] 66 | //[assembly:FileIOPermission(SecurityAction.RequestOptional, Unrestricted=true)] 67 | 68 | [assembly:CLSCompliant(true)] 69 | 70 | [assembly:ComVisible(false)] -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/Be.Windows.Forms.HexBox.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Local 5 | 9.0.30729 6 | 2.0 7 | {26C5F25F-B450-4CAF-AD8B-B8D11AE73457} 8 | Debug 9 | AnyCPU 10 | 11 | 12 | 13 | 14 | Be.Windows.Forms.HexBox 15 | HexBox.snk 16 | JScript 17 | Grid 18 | IE50 19 | false 20 | Library 21 | Be.Windows.Forms 22 | OnBuildSuccess 23 | 24 | 25 | 26 | 27 | 28 | 29 | 3.5 30 | true 31 | false 32 | v4.0 33 | publish\ 34 | true 35 | Disk 36 | false 37 | Foreground 38 | 7 39 | Days 40 | false 41 | false 42 | true 43 | 0 44 | 1.0.0.%2a 45 | false 46 | true 47 | 48 | 49 | 50 | bin\Debug\ 51 | false 52 | 285212672 53 | false 54 | 55 | 56 | DEBUG;TRACE 57 | Be.Windows.Forms.HexBox.xml 58 | true 59 | 4096 60 | false 61 | 62 | 63 | false 64 | false 65 | false 66 | false 67 | 4 68 | full 69 | prompt 70 | AllRules.ruleset 71 | false 72 | 73 | 74 | bin\Release\ 75 | false 76 | 285212672 77 | false 78 | 79 | 80 | TRACE 81 | 82 | 83 | false 84 | 4096 85 | false 86 | 87 | 88 | true 89 | false 90 | false 91 | false 92 | 4 93 | none 94 | prompt 95 | BasicCorrectnessRules.ruleset 96 | false 97 | 98 | 99 | 100 | System 101 | 102 | 103 | System.Data 104 | 105 | 106 | False 107 | 108 | 109 | 110 | System.Windows.Forms 111 | 112 | 113 | System.XML 114 | 115 | 116 | 117 | 118 | Code 119 | 120 | 121 | Component 122 | 123 | 124 | Code 125 | 126 | 127 | 128 | Code 129 | 130 | 131 | Code 132 | 133 | 134 | Code 135 | 136 | 137 | Code 138 | 139 | 140 | Code 141 | 142 | 143 | Code 144 | 145 | 146 | 147 | Component 148 | 149 | 150 | 151 | 152 | Code 153 | 154 | 155 | Code 156 | 157 | 158 | Code 159 | 160 | 161 | True 162 | True 163 | Resources.resx 164 | 165 | 166 | 167 | 168 | HexBox.cs 169 | Designer 170 | 171 | 172 | ResXFileCodeGenerator 173 | Resources.Designer.cs 174 | 175 | 176 | 177 | 178 | 179 | False 180 | .NET Framework 3.5 SP1 Client Profile 181 | false 182 | 183 | 184 | False 185 | .NET Framework 2.0 %28x86%29 186 | true 187 | 188 | 189 | False 190 | .NET Framework 3.0 %28x86%29 191 | false 192 | 193 | 194 | False 195 | .NET Framework 3.5 196 | false 197 | 198 | 199 | False 200 | .NET Framework 3.5 SP1 201 | false 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/ByteCharConverters.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// The interface for objects that can translate between characters and bytes. 9 | /// 10 | public interface IByteCharConverter 11 | { 12 | /// 13 | /// Returns the character to display for the byte passed across. 14 | /// 15 | /// 16 | /// 17 | char ToChar(byte b); 18 | 19 | /// 20 | /// Returns the byte to use when the character passed across is entered during editing. 21 | /// 22 | /// 23 | /// 24 | byte ToByte(char c); 25 | } 26 | 27 | /// 28 | /// The default implementation. 29 | /// 30 | public class DefaultByteCharConverter : IByteCharConverter 31 | { 32 | /// 33 | /// Returns the character to display for the byte passed across. 34 | /// 35 | /// 36 | /// 37 | public virtual char ToChar(byte b) 38 | { 39 | return b > 0x1F && !(b > 0x7E && b < 0xA0) ? (char)b : '.'; 40 | } 41 | 42 | /// 43 | /// Returns the byte to use for the character passed across. 44 | /// 45 | /// 46 | /// 47 | public virtual byte ToByte(char c) 48 | { 49 | return (byte)c; 50 | } 51 | 52 | /// 53 | /// Returns a description of the byte char provider. 54 | /// 55 | /// 56 | public override string ToString() 57 | { 58 | return "ANSI (Default)"; 59 | } 60 | } 61 | 62 | /// 63 | /// A byte char provider that can translate bytes encoded in codepage 500 EBCDIC 64 | /// 65 | public class EbcdicByteCharProvider : IByteCharConverter 66 | { 67 | /// 68 | /// The IBM EBCDIC code page 500 encoding. Note that this is not always supported by .NET, 69 | /// the underlying platform has to provide support for it. 70 | /// 71 | private Encoding _ebcdicEncoding = Encoding.GetEncoding(500); 72 | 73 | /// 74 | /// Returns the EBCDIC character corresponding to the byte passed across. 75 | /// 76 | /// 77 | /// 78 | public virtual char ToChar(byte b) 79 | { 80 | string encoded = _ebcdicEncoding.GetString(new byte[] { b }); 81 | return encoded.Length > 0 ? encoded[0] : '.'; 82 | } 83 | 84 | /// 85 | /// Returns the byte corresponding to the EBCDIC character passed across. 86 | /// 87 | /// 88 | /// 89 | public virtual byte ToByte(char c) 90 | { 91 | byte[] decoded = _ebcdicEncoding.GetBytes(new char[] { c }); 92 | return decoded.Length > 0 ? decoded[0] : (byte)0; 93 | } 94 | 95 | /// 96 | /// Returns a description of the byte char provider. 97 | /// 98 | /// 99 | public override string ToString() 100 | { 101 | return "EBCDIC (Code Page 500)"; 102 | } 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/ByteCollection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using System.Collections; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Represents a collection of bytes. 9 | /// 10 | public class ByteCollection : CollectionBase 11 | { 12 | /// 13 | /// Initializes a new instance of ByteCollection class. 14 | /// 15 | public ByteCollection() { } 16 | 17 | /// 18 | /// Initializes a new instance of ByteCollection class. 19 | /// 20 | /// an array of bytes to add to collection 21 | public ByteCollection(byte[] bs) 22 | { AddRange(bs); } 23 | 24 | /// 25 | /// Gets or sets the value of a byte 26 | /// 27 | public byte this[int index] 28 | { 29 | get { return (byte)List[index]; } 30 | set { List[index] = value; } 31 | } 32 | 33 | /// 34 | /// Adds a byte into the collection. 35 | /// 36 | /// the byte to add 37 | public void Add(byte b) 38 | { List.Add(b); } 39 | 40 | /// 41 | /// Adds a range of bytes to the collection. 42 | /// 43 | /// the bytes to add 44 | public void AddRange(byte[] bs) 45 | { InnerList.AddRange(bs); } 46 | 47 | /// 48 | /// Removes a byte from the collection. 49 | /// 50 | /// the byte to remove 51 | public void Remove(byte b) 52 | { List.Remove(b); } 53 | 54 | /// 55 | /// Removes a range of bytes from the collection. 56 | /// 57 | /// the index of the start byte 58 | /// the count of the bytes to remove 59 | public void RemoveRange(int index, int count) 60 | { InnerList.RemoveRange(index, count); } 61 | 62 | /// 63 | /// Inserts a range of bytes to the collection. 64 | /// 65 | /// the index of start byte 66 | /// an array of bytes to insert 67 | public void InsertRange(int index, byte[] bs) 68 | { InnerList.InsertRange(index, bs); } 69 | 70 | /// 71 | /// Gets all bytes in the array 72 | /// 73 | /// an array of bytes. 74 | public byte[] GetBytes() 75 | { 76 | byte[] bytes = new byte[Count]; 77 | InnerList.CopyTo(0, bytes, 0, bytes.Length); 78 | return bytes; 79 | } 80 | 81 | /// 82 | /// Inserts a byte to the collection. 83 | /// 84 | /// the index 85 | /// a byte to insert 86 | public void Insert(int index, byte b) 87 | { 88 | InnerList.Insert(index, b); 89 | } 90 | 91 | /// 92 | /// Returns the index of the given byte. 93 | /// 94 | public int IndexOf(byte b) 95 | { 96 | return InnerList.IndexOf(b); 97 | } 98 | 99 | /// 100 | /// Returns true, if the byte exists in the collection. 101 | /// 102 | public bool Contains(byte b) 103 | { 104 | return InnerList.Contains(b); 105 | } 106 | 107 | /// 108 | /// Copies the content of the collection into the given array. 109 | /// 110 | public void CopyTo(byte[] bs, int index) 111 | { 112 | InnerList.CopyTo(bs, index); 113 | } 114 | 115 | /// 116 | /// Copies the content of the collection into an array. 117 | /// 118 | /// the array containing all bytes. 119 | public byte[] ToArray() 120 | { 121 | byte[] data = new byte[this.Count]; 122 | this.CopyTo(data, 0); 123 | return data; 124 | } 125 | 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/BytePositionInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Represents a position in the HexBox control 9 | /// 10 | struct BytePositionInfo 11 | { 12 | public BytePositionInfo(long index, int characterPosition) 13 | { 14 | _index = index; 15 | _characterPosition = characterPosition; 16 | } 17 | 18 | public int CharacterPosition 19 | { 20 | get { return _characterPosition; } 21 | } int _characterPosition; 22 | 23 | public long Index 24 | { 25 | get { return _index; } 26 | } long _index; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/DataBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Be.Windows.Forms 4 | { 5 | internal abstract class DataBlock 6 | { 7 | internal DataMap _map; 8 | internal DataBlock _nextBlock; 9 | internal DataBlock _previousBlock; 10 | 11 | public abstract long Length 12 | { 13 | get; 14 | } 15 | 16 | public DataMap Map 17 | { 18 | get 19 | { 20 | return _map; 21 | } 22 | } 23 | 24 | public DataBlock NextBlock 25 | { 26 | get 27 | { 28 | return _nextBlock; 29 | } 30 | } 31 | 32 | public DataBlock PreviousBlock 33 | { 34 | get 35 | { 36 | return _previousBlock; 37 | } 38 | } 39 | 40 | public abstract void RemoveBytes(long position, long count); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/DynamicByteProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Be.Windows.Forms 5 | { 6 | /// 7 | /// Byte provider for a small amount of data. 8 | /// 9 | public class DynamicByteProvider : IByteProvider 10 | { 11 | /// 12 | /// Contains information about changes. 13 | /// 14 | bool _hasChanges; 15 | /// 16 | /// Contains a byte collection. 17 | /// 18 | List _bytes; 19 | 20 | /// 21 | /// Initializes a new instance of the DynamicByteProvider class. 22 | /// 23 | /// 24 | public DynamicByteProvider(byte[] data) : this(new List(data)) 25 | { 26 | } 27 | 28 | /// 29 | /// Initializes a new instance of the DynamicByteProvider class. 30 | /// 31 | /// 32 | public DynamicByteProvider(List bytes) 33 | { 34 | _bytes = bytes; 35 | } 36 | 37 | /// 38 | /// Raises the Changed event. 39 | /// 40 | void OnChanged(EventArgs e) 41 | { 42 | _hasChanges = true; 43 | 44 | if(Changed != null) 45 | Changed(this, e); 46 | } 47 | 48 | /// 49 | /// Raises the LengthChanged event. 50 | /// 51 | void OnLengthChanged(EventArgs e) 52 | { 53 | if(LengthChanged != null) 54 | LengthChanged(this, e); 55 | } 56 | 57 | /// 58 | /// Gets the byte collection. 59 | /// 60 | public List Bytes 61 | { 62 | get { return _bytes; } 63 | } 64 | 65 | #region IByteProvider Members 66 | /// 67 | /// True, when changes are done. 68 | /// 69 | public bool HasChanges() 70 | { 71 | return _hasChanges; 72 | } 73 | 74 | /// 75 | /// Applies changes. 76 | /// 77 | public void ApplyChanges() 78 | { 79 | _hasChanges = false; 80 | } 81 | 82 | /// 83 | /// Occurs, when the write buffer contains new changes. 84 | /// 85 | public event EventHandler Changed; 86 | 87 | /// 88 | /// Occurs, when InsertBytes or DeleteBytes method is called. 89 | /// 90 | public event EventHandler LengthChanged; 91 | 92 | 93 | /// 94 | /// Reads a byte from the byte collection. 95 | /// 96 | /// the index of the byte to read 97 | /// the byte 98 | public byte ReadByte(long index) 99 | { return _bytes[(int)index]; } 100 | 101 | /// 102 | /// Write a byte into the byte collection. 103 | /// 104 | /// the index of the byte to write. 105 | /// the byte 106 | public void WriteByte(long index, byte value) 107 | { 108 | _bytes[(int)index] = value; 109 | OnChanged(EventArgs.Empty); 110 | } 111 | 112 | /// 113 | /// Deletes bytes from the byte collection. 114 | /// 115 | /// the start index of the bytes to delete. 116 | /// the length of bytes to delete. 117 | public void DeleteBytes(long index, long length) 118 | { 119 | int internal_index = (int)Math.Max(0, index); 120 | int internal_length = (int)Math.Min((int)Length, length); 121 | _bytes.RemoveRange(internal_index, internal_length); 122 | 123 | OnLengthChanged(EventArgs.Empty); 124 | OnChanged(EventArgs.Empty); 125 | } 126 | 127 | /// 128 | /// Inserts byte into the byte collection. 129 | /// 130 | /// the start index of the bytes in the byte collection 131 | /// the byte array to insert 132 | public void InsertBytes(long index, byte[] bs) 133 | { 134 | _bytes.InsertRange((int)index, bs); 135 | 136 | OnLengthChanged(EventArgs.Empty); 137 | OnChanged(EventArgs.Empty); 138 | } 139 | 140 | /// 141 | /// Gets the length of the bytes in the byte collection. 142 | /// 143 | public long Length 144 | { 145 | get 146 | { 147 | return _bytes.Count; 148 | } 149 | } 150 | 151 | /// 152 | /// Returns true 153 | /// 154 | public bool SupportsWriteByte() 155 | { 156 | return true; 157 | } 158 | 159 | /// 160 | /// Returns true 161 | /// 162 | public bool SupportsInsertBytes() 163 | { 164 | return true; 165 | } 166 | 167 | /// 168 | /// Returns true 169 | /// 170 | public bool SupportsDeleteBytes() 171 | { 172 | return true; 173 | } 174 | #endregion 175 | 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/FileByteProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Byte provider for (big) files. 9 | /// 10 | public class FileByteProvider : IByteProvider, IDisposable 11 | { 12 | #region WriteCollection class 13 | /// 14 | /// Represents the write buffer class 15 | /// 16 | class WriteCollection : DictionaryBase 17 | { 18 | /// 19 | /// Gets or sets a byte in the collection 20 | /// 21 | public byte this[long index] 22 | { 23 | get { return (byte)this.Dictionary[index]; } 24 | set { Dictionary[index] = value; } 25 | } 26 | 27 | /// 28 | /// Adds a byte into the collection 29 | /// 30 | /// the index of the byte 31 | /// the value of the byte 32 | public void Add(long index, byte value) 33 | { Dictionary.Add(index, value); } 34 | 35 | /// 36 | /// Determines if a byte with the given index exists. 37 | /// 38 | /// the index of the byte 39 | /// true, if the is in the collection 40 | public bool Contains(long index) 41 | { return Dictionary.Contains(index); } 42 | 43 | } 44 | #endregion 45 | 46 | /// 47 | /// Occurs, when the write buffer contains new changes. 48 | /// 49 | public event EventHandler Changed; 50 | 51 | /// 52 | /// Contains all changes 53 | /// 54 | WriteCollection _writes = new WriteCollection(); 55 | 56 | /// 57 | /// Contains the file name. 58 | /// 59 | string _fileName; 60 | /// 61 | /// Contains the file stream. 62 | /// 63 | FileStream _fileStream; 64 | /// 65 | /// Read-only access. 66 | /// 67 | bool _readOnly; 68 | 69 | /// 70 | /// Initializes a new instance of the FileByteProvider class. 71 | /// 72 | /// 73 | public FileByteProvider(string fileName) 74 | { 75 | _fileName = fileName; 76 | 77 | try 78 | { 79 | // try to open in write mode 80 | _fileStream = File.Open(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.Read); 81 | } 82 | catch 83 | { 84 | // write mode failed, try to open in read-only and fileshare friendly mode. 85 | try 86 | { 87 | _fileStream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 88 | _readOnly = true; 89 | } 90 | catch 91 | { 92 | throw; 93 | } 94 | } 95 | } 96 | 97 | /// 98 | /// Terminates the instance of the FileByteProvider class. 99 | /// 100 | ~FileByteProvider() 101 | { 102 | Dispose(); 103 | } 104 | 105 | /// 106 | /// Raises the Changed event. 107 | /// 108 | /// Never used. 109 | void OnChanged(EventArgs e) 110 | { 111 | if(Changed != null) 112 | Changed(this, e); 113 | } 114 | 115 | /// 116 | /// Gets the name of the file the byte provider is using. 117 | /// 118 | public string FileName 119 | { 120 | get { return _fileName; } 121 | } 122 | 123 | /// 124 | /// Returns a value if there are some changes. 125 | /// 126 | /// true, if there are some changes 127 | public bool HasChanges() 128 | { 129 | return (_writes.Count > 0); 130 | } 131 | 132 | /// 133 | /// Updates the file with all changes the write buffer contains. 134 | /// 135 | public void ApplyChanges() 136 | { 137 | if (this._readOnly) 138 | { 139 | throw new Exception("File is in read-only mode."); 140 | } 141 | 142 | if(!HasChanges()) 143 | return; 144 | 145 | IDictionaryEnumerator en = _writes.GetEnumerator(); 146 | while(en.MoveNext()) 147 | { 148 | long index = (long)en.Key; 149 | byte value = (byte)en.Value; 150 | if(_fileStream.Position != index) 151 | _fileStream.Position = index; 152 | _fileStream.Write(new byte[] { value }, 0, 1); 153 | } 154 | _writes.Clear(); 155 | } 156 | 157 | /// 158 | /// Clears the write buffer and reject all changes made. 159 | /// 160 | public void RejectChanges() 161 | { 162 | _writes.Clear(); 163 | } 164 | 165 | #region IByteProvider Members 166 | /// 167 | /// Never used. 168 | /// 169 | public event EventHandler LengthChanged; 170 | 171 | /// 172 | /// Reads a byte from the file. 173 | /// 174 | /// the index of the byte to read 175 | /// the byte 176 | public byte ReadByte(long index) 177 | { 178 | if(_writes.Contains(index)) 179 | return _writes[index]; 180 | 181 | if(_fileStream.Position != index) 182 | _fileStream.Position = index; 183 | 184 | byte res = (byte)_fileStream.ReadByte(); 185 | return res; 186 | } 187 | 188 | /// 189 | /// Gets the length of the file. 190 | /// 191 | public long Length 192 | { 193 | get 194 | { 195 | return _fileStream.Length; 196 | } 197 | } 198 | 199 | /// 200 | /// Writes a byte into write buffer 201 | /// 202 | public void WriteByte(long index, byte value) 203 | { 204 | if(_writes.Contains(index)) 205 | _writes[index] = value; 206 | else 207 | _writes.Add(index, value); 208 | 209 | OnChanged(EventArgs.Empty); 210 | } 211 | 212 | /// 213 | /// Not supported 214 | /// 215 | public void DeleteBytes(long index, long length) 216 | { 217 | throw new NotSupportedException("FileByteProvider.DeleteBytes"); 218 | } 219 | 220 | /// 221 | /// Not supported 222 | /// 223 | public void InsertBytes(long index, byte[] bs) 224 | { 225 | throw new NotSupportedException("FileByteProvider.InsertBytes"); 226 | } 227 | 228 | /// 229 | /// Returns true 230 | /// 231 | public bool SupportsWriteByte() 232 | { 233 | return !_readOnly; 234 | } 235 | 236 | /// 237 | /// Returns false 238 | /// 239 | public bool SupportsInsertBytes() 240 | { 241 | return false; 242 | } 243 | 244 | /// 245 | /// Returns false 246 | /// 247 | public bool SupportsDeleteBytes() 248 | { 249 | return false; 250 | } 251 | #endregion 252 | 253 | #region IDisposable Members 254 | /// 255 | /// Releases the file handle used by the FileByteProvider. 256 | /// 257 | public void Dispose() 258 | { 259 | if(_fileStream != null) 260 | { 261 | _fileName = null; 262 | 263 | _fileStream.Close(); 264 | _fileStream = null; 265 | } 266 | 267 | GC.SuppressFinalize(this); 268 | } 269 | #endregion 270 | } 271 | } 272 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/FileDataBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Be.Windows.Forms 4 | { 5 | internal sealed class FileDataBlock : DataBlock 6 | { 7 | long _length; 8 | long _fileOffset; 9 | 10 | public FileDataBlock(long fileOffset, long length) 11 | { 12 | _fileOffset = fileOffset; 13 | _length = length; 14 | } 15 | 16 | public long FileOffset 17 | { 18 | get 19 | { 20 | return _fileOffset; 21 | } 22 | } 23 | 24 | public override long Length 25 | { 26 | get 27 | { 28 | return _length; 29 | } 30 | } 31 | 32 | public void SetFileOffset(long value) 33 | { 34 | _fileOffset = value; 35 | } 36 | 37 | public void RemoveBytesFromEnd(long count) 38 | { 39 | if (count > _length) 40 | { 41 | throw new ArgumentOutOfRangeException("count"); 42 | } 43 | 44 | _length -= count; 45 | } 46 | 47 | public void RemoveBytesFromStart(long count) 48 | { 49 | if (count > _length) 50 | { 51 | throw new ArgumentOutOfRangeException("count"); 52 | } 53 | 54 | _fileOffset += count; 55 | _length -= count; 56 | } 57 | 58 | public override void RemoveBytes(long position, long count) 59 | { 60 | if (position > _length) 61 | { 62 | throw new ArgumentOutOfRangeException("position"); 63 | } 64 | 65 | if (position + count > _length) 66 | { 67 | throw new ArgumentOutOfRangeException("count"); 68 | } 69 | 70 | long prefixLength = position; 71 | long prefixFileOffset = _fileOffset; 72 | 73 | long suffixLength = _length - count - prefixLength; 74 | long suffixFileOffset = _fileOffset + position + count; 75 | 76 | if (prefixLength > 0 && suffixLength > 0) 77 | { 78 | _fileOffset = prefixFileOffset; 79 | _length = prefixLength; 80 | _map.AddAfter(this, new FileDataBlock(suffixFileOffset, suffixLength)); 81 | return; 82 | } 83 | 84 | if (prefixLength > 0) 85 | { 86 | _fileOffset = prefixFileOffset; 87 | _length = prefixLength; 88 | } 89 | else 90 | { 91 | _fileOffset = suffixFileOffset; 92 | _length = suffixLength; 93 | } 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/FindOptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Defines the type of the Find operation. 9 | /// 10 | public enum FindType 11 | { 12 | /// 13 | /// Used for Text Find operations 14 | /// 15 | Text, 16 | /// 17 | /// Used for Hex Find operations 18 | /// 19 | Hex 20 | } 21 | 22 | /// 23 | /// Defines all state information nee 24 | /// 25 | public class FindOptions 26 | { 27 | /// 28 | /// Gets or sets whether the Find options are valid 29 | /// 30 | public bool IsValid { get; set; } 31 | /// 32 | /// Gets the Find buffer used for case insensitive Find operations. This is the binary representation of Text. 33 | /// 34 | internal byte[] FindBuffer { get; private set; } 35 | /// 36 | /// Gets the Find buffer used for case sensitive Find operations. This is the binary representation of Text in lower case format. 37 | /// 38 | internal byte[] FindBufferLowerCase { get; private set; } 39 | /// 40 | /// Gets the Find buffer used for case sensitive Find operations. This is the binary representation of Text in upper case format. 41 | /// 42 | internal byte[] FindBufferUpperCase { get; private set; } 43 | /// 44 | /// Contains the MatchCase value 45 | /// 46 | bool _matchCase; 47 | /// 48 | /// Gets or sets the value, whether the Find operation is case sensitive or not. 49 | /// 50 | public bool MatchCase 51 | { 52 | get { return _matchCase; } 53 | set 54 | { 55 | _matchCase = value; 56 | UpdateFindBuffer(); 57 | } 58 | } 59 | /// 60 | /// Contains the text that should be found. 61 | /// 62 | string _text; 63 | /// 64 | /// Gets or sets the text that should be found. Only used, when Type is FindType.Hex. 65 | /// 66 | public string Text 67 | { 68 | get { return _text; } 69 | set 70 | { 71 | _text = value; 72 | UpdateFindBuffer(); 73 | } 74 | } 75 | /// 76 | /// Gets or sets the hex buffer that should be found. Only used, when Type is FindType.Hex. 77 | /// 78 | public byte[] Hex { get; set; } 79 | /// 80 | /// Gets or sets the type what should be searched. 81 | /// 82 | public FindType Type { get; set; } 83 | /// 84 | /// Updates the find buffer. 85 | /// 86 | void UpdateFindBuffer() 87 | { 88 | string text = this.Text != null ? this.Text : string.Empty; 89 | FindBuffer = ASCIIEncoding.ASCII.GetBytes(text); 90 | FindBufferLowerCase = ASCIIEncoding.ASCII.GetBytes(text.ToLower()); 91 | FindBufferUpperCase = ASCIIEncoding.ASCII.GetBytes(text.ToUpper()); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexBox.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexBox.bmp -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexBox.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexBox.cs -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexBox.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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | False 125 | 126 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexBox.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexBox.snk -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/HexCasing.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | /// 8 | /// Specifies the case of hex characters in the HexBox control 9 | /// 10 | public enum HexCasing 11 | { 12 | /// 13 | /// Converts all characters to uppercase. 14 | /// 15 | Upper = 0, 16 | /// 17 | /// Converts all characters to lowercase. 18 | /// 19 | Lower = 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/IByteProvider.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/IByteProvider.cs -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/MemoryDataBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Be.Windows.Forms 4 | { 5 | internal sealed class MemoryDataBlock : DataBlock 6 | { 7 | byte[] _data; 8 | 9 | public MemoryDataBlock(byte data) 10 | { 11 | _data = new byte[] { data }; 12 | } 13 | 14 | public MemoryDataBlock(byte[] data) 15 | { 16 | if (data == null) 17 | { 18 | throw new ArgumentNullException("data"); 19 | } 20 | 21 | _data = (byte[])data.Clone(); 22 | } 23 | 24 | public override long Length 25 | { 26 | get 27 | { 28 | return _data.LongLength; 29 | } 30 | } 31 | 32 | public byte[] Data 33 | { 34 | get 35 | { 36 | return _data; 37 | } 38 | } 39 | 40 | public void AddByteToEnd(byte value) 41 | { 42 | byte[] newData = new byte[_data.LongLength + 1]; 43 | _data.CopyTo(newData, 0); 44 | newData[newData.LongLength - 1] = value; 45 | _data = newData; 46 | } 47 | 48 | public void AddByteToStart(byte value) 49 | { 50 | byte[] newData = new byte[_data.LongLength + 1]; 51 | newData[0] = value; 52 | _data.CopyTo(newData, 1); 53 | _data = newData; 54 | } 55 | 56 | public void InsertBytes(long position, byte[] data) 57 | { 58 | byte[] newData = new byte[_data.LongLength + data.LongLength]; 59 | if (position > 0) 60 | { 61 | Array.Copy(_data, 0, newData, 0, position); 62 | } 63 | Array.Copy(data, 0, newData, position, data.LongLength); 64 | if (position < _data.LongLength) 65 | { 66 | Array.Copy(_data, position, newData, position + data.LongLength, _data.LongLength - position); 67 | } 68 | _data = newData; 69 | } 70 | 71 | public override void RemoveBytes(long position, long count) 72 | { 73 | byte[] newData = new byte[_data.LongLength - count]; 74 | 75 | if (position > 0) 76 | { 77 | Array.Copy(_data, 0, newData, 0, position); 78 | } 79 | if (position + count < _data.LongLength) 80 | { 81 | Array.Copy(_data, position + count, newData, position, newData.LongLength - position); 82 | } 83 | 84 | _data = newData; 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/NativeMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Runtime.InteropServices; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | internal static class NativeMethods 8 | { 9 | // Caret definitions 10 | [DllImport("user32.dll", SetLastError=true)] 11 | public static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight); 12 | 13 | [DllImport("user32.dll", SetLastError=true)] 14 | public static extern bool ShowCaret(IntPtr hWnd); 15 | 16 | [DllImport("user32.dll", SetLastError=true)] 17 | public static extern bool DestroyCaret(); 18 | 19 | [DllImport("user32.dll", SetLastError=true)] 20 | public static extern bool SetCaretPos(int X, int Y); 21 | 22 | // Key definitions 23 | public const int WM_KEYDOWN = 0x100; 24 | public const int WM_KEYUP = 0x101; 25 | public const int WM_CHAR = 0x102; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34003 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 Be.Windows.Forms.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Be.Windows.Forms.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/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 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Be.Windows.Forms.HexBox/Util.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Be.Windows.Forms 6 | { 7 | static class Util 8 | { 9 | /// 10 | /// Contains true, if we are in design mode of Visual Studio 11 | /// 12 | private static bool _designMode; 13 | 14 | /// 15 | /// Initializes an instance of Util class 16 | /// 17 | static Util() 18 | { 19 | // design mode is true if host process is: Visual Studio, Visual Studio Express Versions (C#, VB, C++) or SharpDevelop 20 | var designerHosts = new List() { "devenv", "vcsexpress", "vbexpress", "vcexpress", "sharpdevelop" }; 21 | using (var process = System.Diagnostics.Process.GetCurrentProcess()) 22 | { 23 | var processName = process.ProcessName.ToLower(); 24 | _designMode = designerHosts.Contains(processName); 25 | } 26 | } 27 | 28 | /// 29 | /// Gets true, if we are in design mode of Visual Studio 30 | /// 31 | /// 32 | /// In Visual Studio 2008 SP1 the designer is crashing sometimes on windows forms. 33 | /// The DesignMode property of Control class is buggy and cannot be used, so use our own implementation instead. 34 | /// 35 | public static bool DesignMode 36 | { 37 | get 38 | { 39 | return _designMode; 40 | } 41 | } 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/CGRAMEditor.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 | 132, 17 125 | 126 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Data.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | 10 | namespace SuperTileMapper 11 | { 12 | public static class Data 13 | { 14 | public const int VRAM_SIZE = 2 * 0x8000; 15 | public const int CGRAM_SIZE = 2 * 0x100; 16 | public const int OAM_SIZE = 2 * 0x110; 17 | 18 | private static byte[] VRAM = new byte[VRAM_SIZE]; 19 | private static byte[] CGRAM = new byte[CGRAM_SIZE]; 20 | private static byte[] OAM = new byte[OAM_SIZE]; 21 | private static short[] PPURegs = new short[0x34]; 22 | 23 | public static byte[] GetVRAMArray() 24 | { 25 | return VRAM; 26 | } 27 | 28 | public static byte[] GetCGRAMArray() 29 | { 30 | return CGRAM; 31 | } 32 | 33 | public static byte[] GetOAMArray() 34 | { 35 | return OAM; 36 | } 37 | 38 | public static Color GetFixedColor() 39 | { 40 | int r = (PPURegs[0x32] & 0x001F) << 3; 41 | int g = (PPURegs[0x32] & 0x03E0) >> 2; 42 | int b = (PPURegs[0x32] & 0x7C00) >> 7; 43 | return Color.FromArgb(r, g, b); 44 | } 45 | 46 | public static Color GetCGRAMColor(int c) 47 | { 48 | int i = (2 * c) & 0x1FF; 49 | int r = (CGRAM[i] & 0x1F) << 3; 50 | int g = ((CGRAM[i] & 0xE0) >> 2) | ((CGRAM[i + 1] & 0x03) << 6); 51 | int b = (CGRAM[i + 1] & 0x7C) << 1; 52 | return Color.FromArgb(r, g, b); 53 | } 54 | 55 | public static void SetCGRAMColor(int c, Color color) 56 | { 57 | int i = (2 * c) & 0x1FF; 58 | int val = ((color.B >> 3) << 10) | ((color.G >> 3) << 5) | (color.R >> 3); 59 | CGRAM[i] = (byte)val; 60 | CGRAM[i + 1] = (byte)(val >> 8); 61 | Project.unsavedChanges = true; 62 | } 63 | 64 | public static int GetCGRAMByte(int b) 65 | { 66 | return 0xFF & CGRAM[b & 0x1FF]; 67 | } 68 | 69 | public static int GetCGRAMWord(int w) 70 | { 71 | int b = (2 * w) & 0x1FF; 72 | return 0xFFFF & (CGRAM[b] | (CGRAM[b + 1] << 8)); 73 | } 74 | 75 | public static void SetCGRAMByte(int b, int d) 76 | { 77 | CGRAM[b & 0x1FF] = (byte)d; 78 | Project.unsavedChanges = true; 79 | } 80 | 81 | public static void SetCGRAMWord(int w, int d) 82 | { 83 | int b = (2 * w) & 0x1FF; 84 | CGRAM[b] = (byte)d; 85 | CGRAM[b + 1] = (byte)(d >> 8); 86 | Project.unsavedChanges = true; 87 | } 88 | 89 | public static int GetVRAMByte(int b) 90 | { 91 | return 0xFF & VRAM[b & 0xFFFF]; 92 | } 93 | 94 | public static int GetVRAMWord(int w) 95 | { 96 | int b = (2 * w) & 0xFFFF; 97 | return 0xFFFF & (VRAM[b] | (VRAM[b + 1] << 8)); 98 | } 99 | 100 | public static void SetVRAMByte(int b, int d) 101 | { 102 | VRAM[b & 0xFFFF] = (byte)d; 103 | Project.unsavedChanges = true; 104 | } 105 | 106 | public static void SetVRAMWord(int w, int d) 107 | { 108 | int b = (2 * w) & 0xFFFF; 109 | VRAM[b] = (byte)d; 110 | VRAM[b + 1] = (byte)(d >> 8); 111 | Project.unsavedChanges = true; 112 | } 113 | 114 | public static int GetOAMByte(int b) 115 | { 116 | int i = b & 0x3FF; 117 | return 0xFF & OAM[i < 0x200 ? i : 0x200 + (i & 0x1F)]; 118 | } 119 | 120 | public static int GetOAMWord(int w) 121 | { 122 | int i = (2 * w) & 0x3FF; 123 | int b = i < 0x200 ? i : 0x200 + (i & 0x1F); 124 | return 0xFFFF & (OAM[b] | (OAM[b + 1] << 8)); 125 | } 126 | 127 | public static void SetOAMByte(int b, int d) 128 | { 129 | int i = b & 0x3FF; 130 | OAM[i < 0x200 ? i : 0x200 + (i & 0x1F)] = (byte)d; 131 | Project.unsavedChanges = true; 132 | } 133 | 134 | public static void SetOAMWord(int w, int d) 135 | { 136 | int i = (2 * w) & 0x3FF; 137 | int b = i < 0x200 ? i : 0x200 + (i & 0x1F); 138 | OAM[b] = (byte)d; 139 | OAM[b + 1] = (byte)(d >> 8); 140 | Project.unsavedChanges = true; 141 | } 142 | 143 | public static int GetPPUReg(int i) 144 | { 145 | return 0xFFFF & PPURegs[i]; 146 | } 147 | 148 | public static void SetPPURegBits(int i, int mask, int d) 149 | { 150 | PPURegs[i] = (short)((PPURegs[i] & ~mask) | (mask & d)); 151 | Project.unsavedChanges = true; 152 | } 153 | } 154 | } 155 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/ExportData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace SuperTileMapper 13 | { 14 | public partial class ExportData : Form 15 | { 16 | string name; 17 | byte[] source; 18 | string destination; 19 | int srcOffset = 0; 20 | int len; 21 | int defLen; 22 | 23 | public ExportData(String loc, byte[] arr, int amount = -1, int step = -1, int arrStep = -1, int arrOffset = -1, int endian = -1) 24 | { 25 | name = loc; 26 | source = arr; 27 | defLen = amount; 28 | 29 | InitializeComponent(); 30 | groupBox1.Text = groupBox1.Text.Replace("", loc); 31 | label2.Text = label2.Text.Replace("", loc); 32 | 33 | textBox2.Text = "$" + Util.DecToHex(defLen == -1 ? 0 : defLen, 0); 34 | comboBox1.SelectedIndex = step == -1 ? 0 : step; 35 | comboBox2.SelectedIndex = arrStep == -1 ? 1 : arrStep; 36 | textBox3.Text = "$" + Util.DecToHex(arrOffset == -1 ? 0 : arrOffset, 4); 37 | comboBox3.SelectedIndex = endian == -1 ? 0 : endian; 38 | } 39 | 40 | private void button1_Click(object sender, EventArgs e) 41 | { 42 | this.Close(); 43 | } 44 | 45 | private void button3_Click(object sender, EventArgs e) 46 | { 47 | DialogResult result = saveFileDialog1.ShowDialog(); 48 | if (result == DialogResult.OK && saveFileDialog1.FileName != "") 49 | { 50 | destination = saveFileDialog1.FileName; 51 | try 52 | { 53 | if (defLen < 0) 54 | { 55 | len = source.Length; 56 | textBox2.Text = "$" + Util.DecToHex(len, 0); 57 | } 58 | 59 | textBox1.Text = destination; 60 | textBox2.Enabled = true; 61 | textBox3.Enabled = true; 62 | comboBox1.Enabled = true; 63 | comboBox2.Enabled = true; 64 | comboBox3.Enabled = true; 65 | button2.Enabled = true; 66 | } 67 | catch (Exception) 68 | { 69 | 70 | } 71 | } 72 | } 73 | 74 | private void button2_Click(object sender, EventArgs e) 75 | { 76 | try 77 | { 78 | int transfer = comboBox1.SelectedIndex; 79 | int endian = comboBox3.SelectedIndex; 80 | 81 | if (transfer >= 8) throw new Exception("Must insert 'bytes' or 'words' only!"); 82 | if (comboBox2.SelectedIndex >= 2) throw new Exception("Must access 'bytes' or 'words' only from " + name + "!"); 83 | if (endian >= 2) throw new Exception("Must use 'little endian' or 'big endian' only!"); 84 | if (!Util.TryHexOrDecToDec(textBox2.Text, out len)) throw new Exception("Unknown value for number of bytes or words to extract!"); 85 | if (!Util.TryHexOrDecToDec(textBox3.Text, out srcOffset)) throw new Exception("Unknown value for " + name + " offset!"); 86 | 87 | if (transfer >= 3) len *= 2; 88 | if (comboBox2.SelectedIndex == 1) srcOffset *= 2; 89 | 90 | if (len > source.Length) throw new Exception("Amount of data to extract exceeds the size of " + name + "!"); 91 | if (srcOffset >= source.Length) throw new Exception("The source address exceeds the size of " + name + "!"); 92 | 93 | // Trust me on this voodoo, I used k-maps 94 | int srcStep = transfer >= 4 ? 2 : 1; 95 | int destStep = (transfer % 3 >= 1) && (transfer < 6) ? 2 : 1; 96 | bool endianFlip = (endian == 1) && (transfer == 0 || transfer == 3); 97 | if (transfer == 4 || transfer == 6 + endian) srcOffset++; 98 | int destOffset = (transfer % 3 == endian + 1 && transfer < 6) ? 1 : 0; 99 | int destSize = len * (transfer == 1 || transfer == 2 ? 4 : (transfer >= 6 ? 1 : 2)) / 2 + ((endian == 1 && transfer % 3 == 0 && len % 2 == 1) ? 1 : 0); 100 | 101 | byte[] destArr = new byte[destSize]; 102 | for (int i = 0, j = 0; i < len; i += srcStep, j += destStep) 103 | { 104 | destArr[j + (endianFlip ? Util.Endianness[j % 2] : 0) + destOffset] = source[(srcOffset + i) % source.Length]; 105 | } 106 | File.WriteAllBytes(destination, destArr); 107 | 108 | this.DialogResult = DialogResult.OK; 109 | this.Close(); 110 | } 111 | catch (Exception ex) 112 | { 113 | MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 114 | } 115 | } 116 | 117 | private void ExportData_Load(object sender, EventArgs e) 118 | { 119 | 120 | } 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/ExportData.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/ImportData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace SuperTileMapper 13 | { 14 | public partial class ImportData : Form 15 | { 16 | string name; 17 | byte[] destination; 18 | byte[] source; 19 | int destOffset = 0, srcOffset = 0; 20 | int len; 21 | int defLen; 22 | 23 | public ImportData(String loc, byte[] arr, int amount = -1, int step = -1, int fileStep = -1, int fileOffset = -1, int arrStep = -1, int arrOffset = -1, int endian = -1) 24 | { 25 | name = loc; 26 | destination = arr; 27 | defLen = amount; 28 | 29 | InitializeComponent(); 30 | groupBox1.Text = groupBox1.Text.Replace("", loc); 31 | label3.Text = label3.Text.Replace("", loc); 32 | 33 | textBox2.Text = "$" + Util.DecToHex(defLen == -1 ? 0 : defLen, 0); 34 | comboBox1.SelectedIndex = step == -1 ? 0 : step; 35 | comboBox2.SelectedIndex = fileStep == -1 ? 0 : fileStep; 36 | textBox3.Text = "$" + Util.DecToHex(fileOffset == -1 ? 0 : fileOffset, 4); 37 | comboBox3.SelectedIndex = arrStep == -1 ? 1 : arrStep; 38 | textBox4.Text = "$" + Util.DecToHex(arrOffset == -1 ? 0 : arrOffset, 4); 39 | comboBox4.SelectedIndex = endian == -1 ? 0 : endian; 40 | } 41 | 42 | private void ImportData_Load(object sender, EventArgs e) 43 | { 44 | 45 | } 46 | 47 | private void button1_Click(object sender, EventArgs e) 48 | { 49 | this.Close(); 50 | } 51 | 52 | private void button2_Click(object sender, EventArgs e) 53 | { 54 | try 55 | { 56 | int transfer = comboBox1.SelectedIndex; 57 | int endian = comboBox4.SelectedIndex; 58 | 59 | if (transfer >= 8) throw new Exception("Must insert 'bytes' or 'words' only!"); 60 | if (comboBox2.SelectedIndex >= 2) throw new Exception("Must access 'bytes' or 'words' only from file!"); 61 | if (comboBox3.SelectedIndex >= 2) throw new Exception("Must access 'bytes' or 'words' only from " + name + "!"); 62 | if (endian >= 2) throw new Exception("Must use 'little endian' or 'big endian' only!"); 63 | if (!Util.TryHexOrDecToDec(textBox2.Text, out len)) throw new Exception("Unknown value for number of bytes or words to insert!"); 64 | if (!Util.TryHexOrDecToDec(textBox3.Text, out srcOffset)) throw new Exception("Unknown value for file offset!"); 65 | if (!Util.TryHexOrDecToDec(textBox4.Text, out destOffset)) throw new Exception("Unknown value for " + name + " offset!"); 66 | 67 | if (transfer >= 3) len *= 2; 68 | if (comboBox2.SelectedIndex == 1) srcOffset *= 2; 69 | if (comboBox3.SelectedIndex == 1) destOffset *= 2; 70 | 71 | if (len > destination.Length) throw new Exception("Amount of data to insert exceeds the size of " + name + "!"); 72 | if (srcOffset >= source.Length) throw new Exception("The source address exceeds the size of the file!"); 73 | if (destOffset >= destination.Length) throw new Exception("The destination address exceeds the size of " + name + "!"); 74 | if (srcOffset + len + ((endian == 1 && len % 2 == 1) ? 1 : 0) > source.Length) throw new Exception("The amount of data to insert exceeds the size of the file!"); 75 | // I don't know why anyone would import an odd amount of bytes via big endian but who knows? 76 | 77 | // Trust me on this voodoo, I used k-maps 78 | int srcStep = transfer >= 4 ? 2 : 1; 79 | int destStep = (transfer % 3 >= 1) && (transfer < 6) ? 2 : 1; 80 | bool endianFlip = (endian == 1) && (transfer == 0 || transfer == 3); 81 | if (transfer == 4 || transfer == 6 + endian) srcOffset++; 82 | if (transfer % 3 == endian + 1 && transfer < 6) destOffset++; 83 | 84 | for (int i = 0, j = 0; i < len; i += srcStep, j += destStep) 85 | { 86 | destination[(destOffset + j) % destination.Length] = source[srcOffset + i + (endianFlip ? Util.Endianness[i % 2] : 0)]; 87 | } 88 | 89 | this.DialogResult = DialogResult.OK; 90 | this.Close(); 91 | } catch (Exception ex) 92 | { 93 | MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 94 | } 95 | } 96 | 97 | private void button3_Click(object sender, EventArgs e) 98 | { 99 | DialogResult result = openFileDialog1.ShowDialog(); 100 | if (result == DialogResult.OK) 101 | { 102 | string file = openFileDialog1.FileName; 103 | try 104 | { 105 | source = File.ReadAllBytes(file); 106 | 107 | if (defLen < 0) 108 | { 109 | len = source.Length >= destination.Length ? destination.Length : source.Length; 110 | textBox2.Text = "$" + Util.DecToHex(len, 0); 111 | } 112 | 113 | textBox1.Text = file; 114 | textBox2.Enabled = true; 115 | textBox3.Enabled = true; 116 | textBox4.Enabled = true; 117 | comboBox1.Enabled = true; 118 | comboBox2.Enabled = true; 119 | comboBox3.Enabled = true; 120 | comboBox4.Enabled = true; 121 | button2.Enabled = true; 122 | } catch (Exception) 123 | { 124 | 125 | } 126 | } 127 | } 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/ImportData.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/OAMEditor.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/OBJEditor.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/PPURegEditor.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/PPURegEditor2.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/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 SuperTileMapper 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new SuperTileMapper()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Project.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 | 9 | namespace SuperTileMapper 10 | { 11 | public static class Project 12 | { 13 | public static string currentFile = null; 14 | public static bool unsavedChanges = false; 15 | public static byte[] watermark = new byte[] { 0x53, 0x75, 0x70, 0x65, 0x72, 0x54, 0x69, 0x6C, 0x65, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72 }; 16 | 17 | public static void NewProject() 18 | { 19 | for (int i = 0; i < Data.VRAM_SIZE; i++) Data.SetVRAMByte(i, 0); 20 | for (int i = 0; i < Data.CGRAM_SIZE; i++) Data.SetCGRAMByte(i, 0); 21 | for (int i = 0; i < Data.OAM_SIZE; i++) Data.SetOAMByte(i, 0); 22 | for (int i = 0; i < 0x34; i++) Data.SetPPURegBits(i, 0xFFFF, 0); 23 | 24 | Data.SetPPURegBits(0x00, 0x000F, 0x000F); // full brightness 25 | Data.SetPPURegBits(0x1B, 0xFFFF, 0x0100); // identity 26 | Data.SetPPURegBits(0x1E, 0xFFFF, 0x0100); // matrix 27 | Data.SetPPURegBits(0x30, 0x0030, 0x0030); // disable color math 28 | 29 | unsavedChanges = false; 30 | currentFile = null; 31 | } 32 | 33 | public static void SaveProject(string filename) 34 | { 35 | try 36 | { 37 | int headerSize = 0x100; 38 | byte[] data = SaveVersion0(); 39 | byte[] everything = new byte[headerSize + data.Length]; 40 | everything[0] = 0; // version 41 | watermark.CopyTo(everything, 1); 42 | data.CopyTo(everything, headerSize); 43 | 44 | File.WriteAllBytes(filename, everything); 45 | unsavedChanges = false; 46 | currentFile = filename; 47 | } 48 | catch (Exception e) 49 | { 50 | MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 51 | } 52 | } 53 | 54 | private static byte[] SaveVersion0() 55 | { 56 | byte[] data = new byte[Data.VRAM_SIZE + Data.CGRAM_SIZE + Data.OAM_SIZE + 2 * 0x34]; 57 | 58 | int locationVRAM = 0; 59 | int locationCGRAM = locationVRAM + Data.VRAM_SIZE; 60 | int locationOAM = locationCGRAM + Data.CGRAM_SIZE; 61 | int locationPPUReg = locationOAM + Data.OAM_SIZE; 62 | 63 | data[0x10] = (byte)locationVRAM; 64 | data[0x11] = (byte)(locationVRAM >> 8); 65 | data[0x12] = (byte)(locationVRAM >> 16); 66 | data[0x13] = (byte)(locationVRAM >> 24); 67 | data[0x14] = (byte)locationCGRAM; 68 | data[0x15] = (byte)(locationCGRAM >> 8); 69 | data[0x16] = (byte)(locationCGRAM >> 16); 70 | data[0x17] = (byte)(locationCGRAM >> 24); 71 | data[0x18] = (byte)locationOAM; 72 | data[0x19] = (byte)(locationOAM >> 8); 73 | data[0x1A] = (byte)(locationOAM >> 16); 74 | data[0x1B] = (byte)(locationOAM >> 24); 75 | data[0x1C] = (byte)locationPPUReg; 76 | data[0x1D] = (byte)(locationPPUReg >> 8); 77 | data[0x1E] = (byte)(locationPPUReg >> 16); 78 | data[0x1F] = (byte)(locationPPUReg >> 24); 79 | 80 | Data.GetVRAMArray().CopyTo(data, locationVRAM); 81 | Data.GetCGRAMArray().CopyTo(data, locationCGRAM); 82 | Data.GetOAMArray().CopyTo(data, locationOAM); 83 | for (int i = 0; i < 0x34; i++) 84 | { 85 | int val = Data.GetPPUReg(i); 86 | data[locationPPUReg + 2 * i + 0] = (byte)val; 87 | data[locationPPUReg + 2 * i + 1] = (byte)(val >> 8); 88 | } 89 | 90 | return data; 91 | } 92 | 93 | public static bool TryOpenProject(string filename) 94 | { 95 | try 96 | { 97 | byte[] raw = File.ReadAllBytes(filename); 98 | 99 | for (int i = 0; i < watermark.Length; i++) 100 | { 101 | if (raw[i + 1] != watermark[i]) 102 | { 103 | throw new Exception("This is not a valid SuperTileMapper file!"); 104 | } 105 | } 106 | 107 | byte version = raw[0]; 108 | 109 | switch (version) 110 | { 111 | case 0: OpenVersion0(raw); break; 112 | default: throw new Exception("This is not a valid SuperTileMapper file!"); 113 | } 114 | 115 | unsavedChanges = false; 116 | currentFile = filename; 117 | return true; 118 | } catch (Exception e) 119 | { 120 | MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 121 | return false; 122 | } 123 | } 124 | 125 | private static void OpenVersion0(byte[] raw) 126 | { 127 | int headerSize = 0x100; 128 | int locationVRAM = headerSize; 129 | int locationCGRAM = locationVRAM + Data.VRAM_SIZE; 130 | int locationOAM = locationCGRAM + Data.CGRAM_SIZE; 131 | int locationPPUReg = locationOAM + Data.OAM_SIZE; 132 | 133 | if (raw.Length != locationPPUReg + 2 * 0x34) 134 | { 135 | throw new Exception("This is not a valid SuperTileMapper file!"); 136 | } 137 | 138 | for (int i = 0; i < Data.VRAM_SIZE; i++) Data.SetVRAMByte(i, raw[locationVRAM + i]); 139 | for (int i = 0; i < Data.CGRAM_SIZE; i++) Data.SetCGRAMByte(i, raw[locationCGRAM + i]); 140 | for (int i = 0; i < Data.OAM_SIZE; i++) Data.SetOAMByte(i, raw[locationOAM + i]); 141 | for (int i = 0; i < 0x34; i++) 142 | { 143 | int regLow = 0xFF & raw[locationPPUReg + 2 * i + 0]; 144 | int regHigh = 0xFF & raw[locationPPUReg + 2 * i + 1]; 145 | int regWord = (regHigh << 8) | regLow; 146 | Data.SetPPURegBits(i, 0xFFFF, regWord); 147 | } 148 | } 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/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("SuperTileMapper")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SuperTileMapper")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 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("b09934cc-950b-4c63-8265-463d7cd0a936")] 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("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Properties/DataSources/Data.datasource: -------------------------------------------------------------------------------- 1 |  2 | 8 | 9 | SuperTileMapper.Data, SuperTileMapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 10 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 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 SuperTileMapper.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SuperTileMapper.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 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 SuperTileMapper.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/SuperTileMapper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace SuperTileMapper 13 | { 14 | public partial class SuperTileMapper : Form 15 | { 16 | public static VRAMEditor vram; 17 | public static CGRAMEditor cgram; 18 | public static OAMEditor oam; 19 | public static PPURegEditor2 ppu2; 20 | public static TilemapEditor tmap; 21 | public static OBJEditor obj; 22 | 23 | public SuperTileMapper() 24 | { 25 | InitializeComponent(); 26 | } 27 | 28 | private void toolStripMenuItem1_Click(object sender, EventArgs e) 29 | { 30 | 31 | } 32 | 33 | private void Form1_Load(object sender, EventArgs e) 34 | { 35 | tmap = new TilemapEditor(); 36 | tmap.Close(); 37 | obj = new OBJEditor(); 38 | obj.Close(); 39 | vram = new VRAMEditor(); 40 | vram.Close(); 41 | cgram = new CGRAMEditor(); 42 | cgram.Close(); 43 | oam = new OAMEditor(); 44 | oam.Close(); 45 | ppu2 = new PPURegEditor2(); 46 | ppu2.Close(); 47 | 48 | Project.NewProject(); 49 | RedrawAllWindows(); 50 | } 51 | 52 | private void vRAMEditorToolStripMenuItem_Click(object sender, EventArgs e) 53 | { 54 | if (vram.IsDisposed) 55 | { 56 | vram = new VRAMEditor(); 57 | } 58 | vram.Show(); 59 | } 60 | 61 | private void cGRAMEditorToolStripMenuItem_Click(object sender, EventArgs e) 62 | { 63 | if (cgram.IsDisposed) 64 | { 65 | cgram = new CGRAMEditor(); 66 | } 67 | cgram.Show(); 68 | } 69 | 70 | private void oAMEditorToolStripMenuItem_Click(object sender, EventArgs e) 71 | { 72 | if (oam.IsDisposed) 73 | { 74 | oam = new OAMEditor(); 75 | } 76 | oam.Show(); 77 | } 78 | 79 | private void pPURegistersToolStripMenuItem_Click(object sender, EventArgs e) 80 | { 81 | if (ppu2.IsDisposed) 82 | { 83 | ppu2 = new PPURegEditor2(); 84 | } 85 | ppu2.Show(); 86 | } 87 | 88 | private void tilemapEditorToolStripMenuItem_Click(object sender, EventArgs e) 89 | { 90 | if (tmap.IsDisposed) 91 | { 92 | tmap = new TilemapEditor(); 93 | } 94 | tmap.Show(); 95 | } 96 | 97 | private void oBJEditorToolStripMenuItem_Click(object sender, EventArgs e) 98 | { 99 | if (obj.IsDisposed) 100 | { 101 | obj = new OBJEditor(); 102 | } 103 | obj.Show(); 104 | } 105 | 106 | private void exitToolStripMenuItem_Click(object sender, EventArgs e) 107 | { 108 | if (ContinueUnsavedChanges()) 109 | { 110 | Application.Exit(); 111 | } 112 | } 113 | 114 | private void SuperTileMapper_Resize(object sender, EventArgs e) 115 | { 116 | bool vis = (WindowState != FormWindowState.Minimized); 117 | if (!vram.IsDisposed && vis) vram.Show(); 118 | if (!vram.IsDisposed && !vis) vram.Hide(); 119 | if (!cgram.IsDisposed && vis) cgram.Show(); 120 | if (!cgram.IsDisposed && !vis) cgram.Hide(); 121 | if (!oam.IsDisposed && vis) oam.Show(); 122 | if (!oam.IsDisposed && !vis) oam.Hide(); 123 | if (!ppu2.IsDisposed && vis) ppu2.Show(); 124 | if (!ppu2.IsDisposed && !vis) ppu2.Hide(); 125 | if (!tmap.IsDisposed && vis) tmap.Show(); 126 | if (!tmap.IsDisposed && !vis) tmap.Hide(); 127 | if (!obj.IsDisposed && vis) obj.Show(); 128 | if (!obj.IsDisposed && !vis) obj.Hide(); 129 | } 130 | 131 | private void aboutToolStripMenuItem_Click(object sender, EventArgs e) 132 | { 133 | About about = new About(); 134 | about.ShowDialog(); 135 | } 136 | 137 | private void RedrawAllWindows() 138 | { 139 | SNESGraphics.UpdateAll(); 140 | if (vram != null && vram.Visible) vram.RedrawAll(); 141 | if (cgram != null && cgram.Visible) cgram.RedrawAll(); 142 | if (oam != null && oam.Visible) oam.RedrawAll(); 143 | if (ppu2 != null && ppu2.Visible) ppu2.RedrawAll(); 144 | if (tmap != null && tmap.Visible) tmap.RedrawAll(); 145 | if (obj != null && obj.Visible) obj.RedrawAll(); 146 | } 147 | 148 | private bool ContinueUnsavedChanges() 149 | { 150 | if (Project.unsavedChanges) 151 | { 152 | DialogResult confirm = MessageBox.Show("You have unsaved changes. They will be lost if you continue.", "Unsaved Changes", MessageBoxButtons.OKCancel); 153 | return confirm == DialogResult.OK; 154 | } 155 | return true; 156 | } 157 | 158 | private void newToolStripMenuItem_Click(object sender, EventArgs e) 159 | { 160 | if (ContinueUnsavedChanges()) 161 | { 162 | Project.NewProject(); 163 | saveProjectToolStripMenuItem.Enabled = false; 164 | RedrawAllWindows(); 165 | } 166 | } 167 | 168 | private void openToolStripMenuItem_Click(object sender, EventArgs e) 169 | { 170 | if (ContinueUnsavedChanges()) 171 | { 172 | DialogResult result = openFileDialog1.ShowDialog(); 173 | if (result == DialogResult.OK) 174 | { 175 | if (Project.TryOpenProject(openFileDialog1.FileName)) 176 | { 177 | saveProjectToolStripMenuItem.Enabled = true; 178 | RedrawAllWindows(); 179 | } 180 | } 181 | } 182 | } 183 | 184 | private void saveProjectToolStripMenuItem_Click(object sender, EventArgs e) 185 | { 186 | Project.SaveProject(Project.currentFile); 187 | } 188 | 189 | private void saveProjectAsToolStripMenuItem_Click(object sender, EventArgs e) 190 | { 191 | DialogResult result = saveFileDialog1.ShowDialog(); 192 | if (result == DialogResult.OK && saveFileDialog1.FileName != "") 193 | { 194 | Project.SaveProject(saveFileDialog1.FileName); 195 | saveProjectToolStripMenuItem.Enabled = true; 196 | } 197 | } 198 | 199 | private void revertUnsavedChangesToolStripMenuItem_Click(object sender, EventArgs e) 200 | { 201 | if (ContinueUnsavedChanges()) 202 | { 203 | if (Project.currentFile == null) 204 | { 205 | Project.NewProject(); 206 | } else 207 | { 208 | Project.TryOpenProject(Project.currentFile); 209 | } 210 | RedrawAllWindows(); 211 | } 212 | } 213 | 214 | private void importEmulatorStateToolStripMenuItem_Click(object sender, EventArgs e) 215 | { 216 | if (ContinueUnsavedChanges()) 217 | { 218 | DialogResult result = openFileDialog2.ShowDialog(); 219 | if (result == DialogResult.OK) 220 | { 221 | if (Emulator.TryImportEmulator(openFileDialog2.FileName)) 222 | { 223 | saveProjectToolStripMenuItem.Enabled = true; 224 | RedrawAllWindows(); 225 | } 226 | } 227 | } 228 | } 229 | } 230 | } 231 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/SuperTileMapper.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ShowAllFiles 5 | 6 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/SuperTileMapper.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 | 133, 17 122 | 123 | 124 | 288, 17 125 | 126 | 127 | 403, 17 128 | 129 | 130 | 543, 17 131 | 132 | 133 | 679, 17 134 | 135 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/TilemapEditor.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/Util.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace SuperTileMapper 9 | { 10 | public static class Util 11 | { 12 | public static int[] Endianness = new int[] { 1, -1 }; 13 | 14 | public static int[,,] OBJsizes = new int[,,] { 15 | { {8,8}, {16,16} }, 16 | { {8,8}, {32,32} }, 17 | { {8,8}, {64,64} }, 18 | { {16,16}, {32,32} }, 19 | { {16,16}, {64,64} }, 20 | { {32,32}, {64,64} }, 21 | { {16,32}, {32,64} }, 22 | { {16,32}, {32,32} } 23 | }; 24 | 25 | public static int HexOrDecToDec(string val) 26 | { 27 | if (val[0] == '$') 28 | { 29 | return int.Parse(val.Substring(1), System.Globalization.NumberStyles.HexNumber); 30 | } else 31 | { 32 | return int.Parse(val); 33 | } 34 | } 35 | 36 | public static bool TryHexOrDecToDec(string val, out int result) 37 | { 38 | try 39 | { 40 | result = HexOrDecToDec(val); 41 | return true; 42 | } catch (Exception) 43 | { 44 | result = -1; 45 | return false; 46 | } 47 | } 48 | 49 | public static string DecToHex(int val, int digits) 50 | { 51 | int mask = digits == 0 ? -1 : ~(-1 << (4 * digits)); 52 | string hex = (val & mask).ToString("X"); 53 | int idx = digits - hex.Length; 54 | return "00000000".Substring(0, idx < 0 ? 0 : idx) + hex; 55 | } 56 | 57 | public static int Clamp(int val, int min, int max) 58 | { 59 | return (val < min ? min : (val > max ? max : val)); 60 | } 61 | 62 | public static double Clamp(double val, double min, double max) 63 | { 64 | return (val < min ? min : (val > max ? max : val)); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/VRAMEditor.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 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.exe -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.pdb -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.vshost.exe -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.vshost.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Debug/SuperTileMapper.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.exe -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.pdb -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.vshost.exe -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.vshost.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/bin/Release/SuperTileMapper.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/Be.Windows.Forms.HexBox.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/Be.Windows.Forms.HexBox.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.About.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.About.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.Be.Windows.Forms.HexBox.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.Be.Windows.Forms.HexBox.Properties.Resources.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.CGRAMEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.CGRAMEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.ExportData.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.ExportData.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.ImportData.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.ImportData.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.OAMEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.OAMEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.PPURegEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.PPURegEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.Properties.Resources.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.SuperTileMapper.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.SuperTileMapper.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.TilemapEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.TilemapEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.VRAMEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.VRAMEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Debug\SuperTileMapper.exe.config 2 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Debug\SuperTileMapper.exe 3 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Debug\SuperTileMapper.pdb 4 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.Properties.Resources.resources 5 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.csproj.GenerateResource.Cache 6 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.exe 7 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.pdb 8 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.SuperTileMapper.resources 9 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.VRAMEditor.resources 10 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.ImportData.resources 11 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.ExportData.resources 12 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.CGRAMEditor.resources 13 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.About.resources 14 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.OAMEditor.resources 15 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.PPURegEditor.resources 16 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\Be.Windows.Forms.HexBox.resources 17 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.Be.Windows.Forms.HexBox.Properties.Resources.resources 18 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.TilemapEditor.resources 19 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.csprojResolveAssemblyReference.cache 20 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Debug\SuperTileMapper.exe.config 21 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Debug\SuperTileMapper.exe 22 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Debug\SuperTileMapper.pdb 23 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.csprojAssemblyReference.cache 24 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.About.resources 25 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\Be.Windows.Forms.HexBox.resources 26 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.Be.Windows.Forms.HexBox.Properties.Resources.resources 27 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.CGRAMEditor.resources 28 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.ExportData.resources 29 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.ImportData.resources 30 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.OAMEditor.resources 31 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.OBJEditor.resources 32 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.PPURegEditor.resources 33 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.SuperTileMapper.resources 34 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.Properties.Resources.resources 35 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.TilemapEditor.resources 36 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.VRAMEditor.resources 37 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.csproj.GenerateResource.cache 38 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.csproj.CoreCompileInputs.cache 39 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.exe 40 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.pdb 41 | C:\Users\Alex\Documents\Visual Studio 2017\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Debug\SuperTileMapper.PPURegEditor2.resources 42 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.csproj.GenerateResource.Cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.csproj.GenerateResource.Cache -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.exe -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/SuperTileMapper.pdb -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.About.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.About.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.CGRAMEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.CGRAMEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.ExportData.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.ExportData.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.ImportData.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.ImportData.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.OAMEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.OAMEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.PPURegEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.PPURegEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.Properties.Resources.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.SuperTileMapper.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.SuperTileMapper.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.VRAMEditor.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.VRAMEditor.resources -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Release\SuperTileMapper.exe.config 2 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Release\SuperTileMapper.exe 3 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\bin\Release\SuperTileMapper.pdb 4 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.About.resources 5 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.CGRAMEditor.resources 6 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.ExportData.resources 7 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.ImportData.resources 8 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.OAMEditor.resources 9 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.PPURegEditor.resources 10 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.SuperTileMapper.resources 11 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.Properties.Resources.resources 12 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.VRAMEditor.resources 13 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.csproj.GenerateResource.Cache 14 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.exe 15 | C:\Users\Alex\Documents\SuperTileMapper\SuperTileMapper\SuperTileMapper\obj\Release\SuperTileMapper.pdb 16 | -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.csproj.GenerateResource.Cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.csproj.GenerateResource.Cache -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.exe -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/SuperTileMapper.pdb -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /SuperTileMapper/SuperTileMapper/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/SuperTileMapper/SuperTileMapper/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /testdata/bytes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/bytes.bin -------------------------------------------------------------------------------- /testdata/emulator/Bizhawk.State: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/emulator/Bizhawk.State -------------------------------------------------------------------------------- /testdata/emulator/bSNES.bst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/emulator/bSNES.bst -------------------------------------------------------------------------------- /testdata/emulator/lsnes.lsmv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/emulator/lsnes.lsmv -------------------------------------------------------------------------------- /testdata/emulator/snes9x.state: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/emulator/snes9x.state -------------------------------------------------------------------------------- /testdata/emulator/zsnes.zst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/emulator/zsnes.zst -------------------------------------------------------------------------------- /testdata/mariokart/cgram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/mariokart/cgram.bin -------------------------------------------------------------------------------- /testdata/mariokart/mariokart.stm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/mariokart/mariokart.stm -------------------------------------------------------------------------------- /testdata/mariokart/oam.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/mariokart/oam.bin -------------------------------------------------------------------------------- /testdata/mariokart/ppuregs.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/mariokart/ppuregs.bin -------------------------------------------------------------------------------- /testdata/mariokart/vram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/mariokart/vram.bin -------------------------------------------------------------------------------- /testdata/sd2snes/cgram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/sd2snes/cgram.bin -------------------------------------------------------------------------------- /testdata/sd2snes/oam.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/sd2snes/oam.bin -------------------------------------------------------------------------------- /testdata/sd2snes/ppuregs.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/sd2snes/ppuregs.bin -------------------------------------------------------------------------------- /testdata/sd2snes/sd2snes.stm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/sd2snes/sd2snes.stm -------------------------------------------------------------------------------- /testdata/sd2snes/vram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/sd2snes/vram.bin -------------------------------------------------------------------------------- /testdata/smb3battle/cgram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smb3battle/cgram.bin -------------------------------------------------------------------------------- /testdata/smb3battle/oam.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smb3battle/oam.bin -------------------------------------------------------------------------------- /testdata/smb3battle/ppuregs.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smb3battle/ppuregs.bin -------------------------------------------------------------------------------- /testdata/smb3battle/smb3battle.stm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smb3battle/smb3battle.stm -------------------------------------------------------------------------------- /testdata/smb3battle/vram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smb3battle/vram.bin -------------------------------------------------------------------------------- /testdata/smw/cgram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smw/cgram.bin -------------------------------------------------------------------------------- /testdata/smw/oam.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smw/oam.bin -------------------------------------------------------------------------------- /testdata/smw/ppuregs.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smw/ppuregs.bin -------------------------------------------------------------------------------- /testdata/smw/smw.stm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smw/smw.stm -------------------------------------------------------------------------------- /testdata/smw/vram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/smw/vram.bin -------------------------------------------------------------------------------- /testdata/testOutput.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/testOutput.bin -------------------------------------------------------------------------------- /testdata/tetrisattack/cgram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/tetrisattack/cgram.bin -------------------------------------------------------------------------------- /testdata/tetrisattack/oam.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/tetrisattack/oam.bin -------------------------------------------------------------------------------- /testdata/tetrisattack/ppuregs.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/tetrisattack/ppuregs.bin -------------------------------------------------------------------------------- /testdata/tetrisattack/tetrisattack.stm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/tetrisattack/tetrisattack.stm -------------------------------------------------------------------------------- /testdata/tetrisattack/vram.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/tetrisattack/vram.bin -------------------------------------------------------------------------------- /testdata/words.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IsoFrieze/SuperTileMapper/9108e7f4eaa8fbe3b2debfdd0d534c4de469a848/testdata/words.bin --------------------------------------------------------------------------------