diff --git a/CHANGELOG.md b/CHANGELOG.md
index 835bf4f..2b03401 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,123 @@
+# 1.0.0 (2026-06-05)
+
+
+### Bug Fixes
+
+* accent contrast color would sometimes result in illegible text ([f37bc0c](https://github.com/alexman25/MAGE-Themes/commit/f37bc0c9f81a41a3a39291b2382234f1586aaf6c))
+* add edit palette button to experimental graphics editor ([0c4f459](https://github.com/alexman25/MAGE-Themes/commit/0c4f45932af912074b298670f2f848057ff6a340)), closes [#90](https://github.com/alexman25/MAGE-Themes/issues/90)
+* adjust about page ([acc8fe6](https://github.com/alexman25/MAGE-Themes/commit/acc8fe63863594321e8bd5d0c987273c592d3663))
+* auto setup ([2634db3](https://github.com/alexman25/MAGE-Themes/commit/2634db30cef955d7268cf15c7fa0511942cbf99b))
+* bookmarks become uneditable when opening bookmark window without prior bookmark selection ([6a51150](https://github.com/alexman25/MAGE-Themes/commit/6a51150a5a40e831cc08deedb3b46b3ca98556db))
+* bookmarks do not get dropped off at the desired location ([6fc9b67](https://github.com/alexman25/MAGE-Themes/commit/6fc9b6786ee14dfa3df6183480c88da0d356027a))
+* buttons on the "new update available" form do not scale correctly ([cd58920](https://github.com/alexman25/MAGE-Themes/commit/cd5892011862fec1ce8ee32bd3a61046b499ea95))
+* changing a theme directly after opening the preferences menu sets every color to the background color ([7b705b3](https://github.com/alexman25/MAGE-Themes/commit/7b705b3b732e3dd4501a25cc9a87134efd80a10a))
+* changing themes in room editor changes the background color of the tileset view ([e898a15](https://github.com/alexman25/MAGE-Themes/commit/e898a153d0af52854c85c3ddd0b7d56f3f8433d2))
+* clipdata cannot be placed without a tile selection ([c8c4ec9](https://github.com/alexman25/MAGE-Themes/commit/c8c4ec93fe7263068f7d84c3540d3581f3b192b0)), closes [#68](https://github.com/alexman25/MAGE-Themes/issues/68)
+* color behind bg3 option does not display the current color after reload ([c83fb1f](https://github.com/alexman25/MAGE-Themes/commit/c83fb1fde05069578fd40770786e6fb5c4983d03))
+* crash on auto door setup ([acf651e](https://github.com/alexman25/MAGE-Themes/commit/acf651e612c016d86eba6eeb66fa87fc0dde47b5))
+* credits editor crashes if no text is commited in an edit ([31b90ca](https://github.com/alexman25/MAGE-Themes/commit/31b90caf32e0cd07bc8405e147653238078170d7))
+* credits editor documentation missing ([9a1cebf](https://github.com/alexman25/MAGE-Themes/commit/9a1cebfbc249ead9d1f9d533ddb4647eef2c179e))
+* data would sometimes not be four byte aligned ([7e954e3](https://github.com/alexman25/MAGE-Themes/commit/7e954e3e4ae00392e7c3eaa30424dc9233e0852b))
+* demo test does not respect TestRom path ([8e953d6](https://github.com/alexman25/MAGE-Themes/commit/8e953d6e44e39138cc28d3b9f98e226aef9641f8))
+* door-id-overlays do not respect number base preference ([79a710c](https://github.com/alexman25/MAGE-Themes/commit/79a710c86619fbaaccc28c6b55383620e999e33c)), closes [#58](https://github.com/alexman25/MAGE-Themes/issues/58)
+* help viewer does not follow links to internal documentation correctly ([497e819](https://github.com/alexman25/MAGE-Themes/commit/497e81934f511c887da7ff6be510343c368bf371))
+* help viewer theming results in illegible headers ([e3b2342](https://github.com/alexman25/MAGE-Themes/commit/e3b23423e796500ba04a9f417dccc25167460376))
+* hybrid compilation crashes if no lines are written to stdout ([5aed32d](https://github.com/alexman25/MAGE-Themes/commit/5aed32db9ffb48bf0b5b30faefe01b63e75bd95b))
+* importing a tileset with a different height may squash the tile view until resize ([7ce6425](https://github.com/alexman25/MAGE-Themes/commit/7ce6425536520022fcee1f127ad98cf6ac7f8d85))
+* large area image exports can crash the program ([0ae6e4a](https://github.com/alexman25/MAGE-Themes/commit/0ae6e4af4637d07d803637f0edff558b3995bf19))
+* list view control is not themed correctly ([f021ebe](https://github.com/alexman25/MAGE-Themes/commit/f021ebeade2f6e1c9ec233cb440f5351aec55ff2))
+* map editor does not discard changes after manually saving and swapping maps ([876628b](https://github.com/alexman25/MAGE-Themes/commit/876628b756fe184e0bfc2cbdc94d1bdc0a4230e3))
+* map editor does sometimes not discard changes when swapping maps ([fb7b2b9](https://github.com/alexman25/MAGE-Themes/commit/fb7b2b9398946c200fc70bbc8f5e59556cf8c596))
+* map editor is missing button to edit map graphics ([d20ec30](https://github.com/alexman25/MAGE-Themes/commit/d20ec3028269eb9b26322be84f7c2f3abc221544))
+* map editor is missing selected tile-id display ([fd9d4a8](https://github.com/alexman25/MAGE-Themes/commit/fd9d4a8a2b9d6c8117c4616a87b818407a03ed76))
+* map editor is missing unexplored (visual) map type for metroid fusion ([2becb87](https://github.com/alexman25/MAGE-Themes/commit/2becb879030ba7b4ed7b5b973b16cb5acfecea02))
+* OAM assembly export is missing colon and should use static labels ([afce28c](https://github.com/alexman25/MAGE-Themes/commit/afce28c5819fcf4e1572781c360615861a830fa4))
+* oam editor no longer crashes after playing an animation and selecting a part ([5294e31](https://github.com/alexman25/MAGE-Themes/commit/5294e3123235af4c4a7d80a93e6ddbdbc3fba498))
+* oam editor no longer crashes after removing a frame and saving ([fd9fc31](https://github.com/alexman25/MAGE-Themes/commit/fd9fc314317b21065992427455c70ae62f277ee2))
+* oam editor now properly opens default OAM even if repointed ([e515853](https://github.com/alexman25/MAGE-Themes/commit/e515853c6b90193355e6e264cecc195b32730161))
+* oam editor: palette loading can lead to an out of bounds error ([a405b58](https://github.com/alexman25/MAGE-Themes/commit/a405b58eaf691356bdf7dea58ea1c1a07b331bf4))
+* oam editor: removed unused menu bar ([6fb166c](https://github.com/alexman25/MAGE-Themes/commit/6fb166c55531843acb6c78b38df261f2eaa97cc5))
+* OAM export as assembly missing "OAM_" prefix ([8bba2f8](https://github.com/alexman25/MAGE-Themes/commit/8bba2f83f613a561fb71d1a9942531aee862f046))
+* OAM repointing now saves repointed sprites in the project file ([8deb2fa](https://github.com/alexman25/MAGE-Themes/commit/8deb2fa553d211b37cbc35bfb95b2203290349f1))
+* outlines of text boxes behave correctly ([d70f8a6](https://github.com/alexman25/MAGE-Themes/commit/d70f8a66f0bb818a33ba521f7c5d383931c997e4))
+* picking a color in unused graphics editor space crashes the program ([cb3d723](https://github.com/alexman25/MAGE-Themes/commit/cb3d723ed25a978a0a2797c493bb4630205b801b))
+* project bookmarks cannot be properly renamed ([d1c10d9](https://github.com/alexman25/MAGE-Themes/commit/d1c10d91728fee687751fbe985d2b1c9762875a3))
+* quick theme switcher is now always enabled ([c7ffae3](https://github.com/alexman25/MAGE-Themes/commit/c7ffae3960d924ef7976d45e4efd9fa98bd592db))
+* remove new helpviewer for new implementation later on ([65868a8](https://github.com/alexman25/MAGE-Themes/commit/65868a89588c1b2fa715745794a935c1445a9961))
+* some editor shortcuts do not respect the editor choice preference ([d15c989](https://github.com/alexman25/MAGE-Themes/commit/d15c9891f839c3cd089ddccdcc6e7530a9b3da1e))
+* switching roms leads to multiple backups being created during auto-backup ([9d5553c](https://github.com/alexman25/MAGE-Themes/commit/9d5553c5db1862921b063c18b390258df63c571b)), closes [#33](https://github.com/alexman25/MAGE-Themes/issues/33)
+* testing a room sometimes selects tourian in the area selector ([8217711](https://github.com/alexman25/MAGE-Themes/commit/8217711a1c498adfd43e4bab31f39a702850d842)), closes [#47](https://github.com/alexman25/MAGE-Themes/issues/47)
+* tile table editor might resize lz77 bg to 256x256 ([5594c6d](https://github.com/alexman25/MAGE-Themes/commit/5594c6d93a181594458852509bda2b9a13fccba0)), closes [#37](https://github.com/alexman25/MAGE-Themes/issues/37)
+* tile table import dialog opens on wrong button ([4dc854a](https://github.com/alexman25/MAGE-Themes/commit/4dc854a2f7923ba1bc38c22eda7a84915a88007a))
+* tiles cannot be placed in TTE when shift is applied ([fa96af1](https://github.com/alexman25/MAGE-Themes/commit/fa96af12436c6f2d31527758e64fb5d1bb799567)), closes [#69](https://github.com/alexman25/MAGE-Themes/issues/69)
+* values cannot be set for global bookmarks ([354e237](https://github.com/alexman25/MAGE-Themes/commit/354e2376bd78e408533b485e70d60c0f75dbea66))
+* values of internal bookmarks can't be highlighted with the mouse ([f775444](https://github.com/alexman25/MAGE-Themes/commit/f77544494c0df89c710ca44255bc2859dbaeb053))
+* version string contains a trailing 0 in about page ([a169c7a](https://github.com/alexman25/MAGE-Themes/commit/a169c7abfe6023263f32de28e4883bbaf490d361))
+* weapon editor: controls visually overlapping ([37fadda](https://github.com/alexman25/MAGE-Themes/commit/37fadda4a817f5739c695bb2c6c58654efb1a6b9))
+
+
+### Features
+
+* "save with ctrl+s" and more shortcuts added ([9d2e399](https://github.com/alexman25/MAGE-Themes/commit/9d2e399954802ac54053c516a96a107ec03742d8))
+* [#82](https://github.com/alexman25/MAGE-Themes/issues/82) added transparency dialog and button to header editor. ([798dab0](https://github.com/alexman25/MAGE-Themes/commit/798dab08f9a826ef6379099be7a63f81ee40281c))
+* add elevator shortcuts to clipdata shortcuts ([8d52a50](https://github.com/alexman25/MAGE-Themes/commit/8d52a5020c7675cfcf2883ed3e24ab99e1bc4432))
+* add icons to the menu bar items ([3684e50](https://github.com/alexman25/MAGE-Themes/commit/3684e5040078227f5de1193a102eec26c3a73e49))
+* add legacy documentation for old editors ([1f6ca93](https://github.com/alexman25/MAGE-Themes/commit/1f6ca931795bf025a38ed549b1ef7b5a9f4f055e))
+* add multiple emulators and choose between them ([437ee80](https://github.com/alexman25/MAGE-Themes/commit/437ee80c8971a2bbf61654ae66e3d16b1ff2b416))
+* add unsaved changes check to sprite editor ([840ac9b](https://github.com/alexman25/MAGE-Themes/commit/840ac9b1678608db6796b821b5da29b451aa8d15))
+* added button to edit graphics in tile table editor ([f0f3533](https://github.com/alexman25/MAGE-Themes/commit/f0f3533d3cbf9d51860ba2fb5bcf13225f6dc178))
+* added credits editor ([d8d0766](https://github.com/alexman25/MAGE-Themes/commit/d8d0766af8a88fc675a3033d2db003526e028c9f))
+* added documentation for the new tile table editor ([5112d25](https://github.com/alexman25/MAGE-Themes/commit/5112d2514bc5d83f072ed990315eb4432d7865b5))
+* added hatches to clipdata shortcuts ([7af22d5](https://github.com/alexman25/MAGE-Themes/commit/7af22d57f097f3012b99f3db5a097126ce6e546e))
+* added hexsanitized and hexsanitizedmaxvalue properties to customcontrols flattextbox ([aba257d](https://github.com/alexman25/MAGE-Themes/commit/aba257dcdb4eda320e4d26da8b897ac73ef6bb06))
+* added new controls to bookmarks to reduce context menu usage ([c65275d](https://github.com/alexman25/MAGE-Themes/commit/c65275d6762e1471a3aa2ded4f14666f6c3b73b2))
+* added outlines to the tilesets in the tileset dialog ([374936c](https://github.com/alexman25/MAGE-Themes/commit/374936cee794d71332066a50d4ee3557b23588e1))
+* added settings to area image export ([e771003](https://github.com/alexman25/MAGE-Themes/commit/e77100380c9307909849459d3f080123273abcdc))
+* added tweak manager ([4efa88e](https://github.com/alexman25/MAGE-Themes/commit/4efa88e80c0ed4adead46692cf53917163cdb123))
+* adjusted clipdata naming and font spacing (alexman25) ([dcb1ab4](https://github.com/alexman25/MAGE-Themes/commit/dcb1ab4603fb226811c5711307c868dbd990dfb9))
+* automatic update check ([9f60048](https://github.com/alexman25/MAGE-Themes/commit/9f60048eb72d771b6998a643a5f959eeb0fa26c1))
+* backup name format can be specified ([51da9b6](https://github.com/alexman25/MAGE-Themes/commit/51da9b61c44041eed40df5e48a986f20cba83fbf))
+* backups can be saved under a ./backups/ directory ([b086e1f](https://github.com/alexman25/MAGE-Themes/commit/b086e1f2b4562743b81f6d837fc9a8711becce4e))
+* backups can be set to be created periodically ([233eb28](https://github.com/alexman25/MAGE-Themes/commit/233eb2828bd19bb7e35b25d89f6b75028be62503))
+* bookmarking feature, create bookmarks to store offsets ([f06a91a](https://github.com/alexman25/MAGE-Themes/commit/f06a91abbc2e5ccd5d24dd3176da934091767779))
+* change Test-ROM path ([31eeca8](https://github.com/alexman25/MAGE-Themes/commit/31eeca8d54849c55480ac72ae9d4562fc229855b)), closes [#22](https://github.com/alexman25/MAGE-Themes/issues/22)
+* choose to include symbol file with Test-ROM ([7fd0e8d](https://github.com/alexman25/MAGE-Themes/commit/7fd0e8db6451cebba6677f28798920b6835d17a2))
+* choose whether to check for updates ([dde1b4d](https://github.com/alexman25/MAGE-Themes/commit/dde1b4d31f436b2e08e334d615185597b32f6ab9))
+* context menus are themed ([d453df4](https://github.com/alexman25/MAGE-Themes/commit/d453df4f326b246afdc7f8cfeffa501f9783291e))
+* display room outlines in the map editor [experimental] ([1851882](https://github.com/alexman25/MAGE-Themes/commit/185188293328b92f274cf0b8cacae9228b2c6adf))
+* export and import OAM from and to MAGE ([f85b9d1](https://github.com/alexman25/MAGE-Themes/commit/f85b9d1852784987cf47949bfcac2d0e8911968b))
+* export area as pixel image ([6fcb518](https://github.com/alexman25/MAGE-Themes/commit/6fcb5188d35a87eb2814c760c1937a730482d575)), closes [#80](https://github.com/alexman25/MAGE-Themes/issues/80)
+* export OAM as animated .gif ([27b19d1](https://github.com/alexman25/MAGE-Themes/commit/27b19d152fdb42a195a37ed12596b4e2d8ce7361))
+* export OAM as assembly ([27fcca7](https://github.com/alexman25/MAGE-Themes/commit/27fcca70fa01c1ec232ff8d712be4d487c0d4aac))
+* export room as pixel image ([48d9da0](https://github.com/alexman25/MAGE-Themes/commit/48d9da0000e55059df03f65d52d22dce70bf145c))
+* export tile table as image ([a35f970](https://github.com/alexman25/MAGE-Themes/commit/a35f9707c9b3cff8c0bdc7d4d50ec861949e4050))
+* hybrid rom compilation ([5621751](https://github.com/alexman25/MAGE-Themes/commit/5621751b2eda16ef444a1f75bb0cb1bbd8a36bb1))
+* import and export credits compatible with ConCons Credits Crediter ([7cbf53d](https://github.com/alexman25/MAGE-Themes/commit/7cbf53d2c18f786db129ecbbf72271f5040129d8))
+* import oam as assembly ([6d45261](https://github.com/alexman25/MAGE-Themes/commit/6d452618c65b8e4caae703c0ed2958cefaf4aa17))
+* modify freezing resistance for ZM in the sprite editor ([d070fdd](https://github.com/alexman25/MAGE-Themes/commit/d070fddabdb63f2a53382eb5c48e0a327c08edea))
+* moved bookmarks button from "Options" to "Tools" ([0ae574b](https://github.com/alexman25/MAGE-Themes/commit/0ae574b6e537e06d4fc50d9fa9d5aca0a4af6158))
+* moved new map editor out of experimental ([a223ec8](https://github.com/alexman25/MAGE-Themes/commit/a223ec8a1f6d4e86a2c5486d0e6fd1063f622728))
+* new graphics editor [experimental] ([284b26e](https://github.com/alexman25/MAGE-Themes/commit/284b26e0824ff9ccf2594ecdd20e740d5a1de381))
+* new help viewer ([b6ec802](https://github.com/alexman25/MAGE-Themes/commit/b6ec8020b05f288cabffae2ed1cfb356d12bb809))
+* new map editor [experimental] ([24eec3a](https://github.com/alexman25/MAGE-Themes/commit/24eec3aaed57dd88bcfa71751a419eb0626794dc))
+* new options menu ([88fcfca](https://github.com/alexman25/MAGE-Themes/commit/88fcfca9a6013f0ef50c52fa0d2700a480a5408b))
+* rearranged clipdata shortcuts ([d122c0b](https://github.com/alexman25/MAGE-Themes/commit/d122c0b3c361b477cef5bc7255f02eda1520857b))
+* renamed "Minimap Editor" to "Map Editor" ([4793e14](https://github.com/alexman25/MAGE-Themes/commit/4793e14c8c8c4974dab618fc2efa1045479568a4))
+* renamed "Minimap Tile Builder" to "Map Tile Builder" ([f623761](https://github.com/alexman25/MAGE-Themes/commit/f62376138ab82cdfc9e94edb872885fe51985b54))
+* repointed resources get saved in bookmarks ([842f108](https://github.com/alexman25/MAGE-Themes/commit/842f108fcbff3372802eccaf176fdc03d7dcaeba))
+* resizeable panels display a handle ([462ab82](https://github.com/alexman25/MAGE-Themes/commit/462ab8238d9e7b464d0841c058222e24c58e62fb))
+* room editor layout changes: tileset display can be resized ([9d42740](https://github.com/alexman25/MAGE-Themes/commit/9d42740dc39106cd25b39b923cb72d13a9316109))
+* room editor selection is animated (might be removed again later) ([54c59a6](https://github.com/alexman25/MAGE-Themes/commit/54c59a6157ec4e96b111cfb5cffc80aa1e18641c))
+* select multiple rooms to exclude at once in area export ([8ecbd43](https://github.com/alexman25/MAGE-Themes/commit/8ecbd4362b958521c46fb6d0bef4d3f965c5c0f9))
+* select palette row for oam editor gfx preview ([90db9b1](https://github.com/alexman25/MAGE-Themes/commit/90db9b185e11072fcb7ee09cc049494237b568dd))
+* test rom with hybrid rom compilation ([5083dac](https://github.com/alexman25/MAGE-Themes/commit/5083dacc27d8b8e5baa6bbdc1c3944199eb23519))
+* tile table editor moved out of experimental features ([29db761](https://github.com/alexman25/MAGE-Themes/commit/29db761f45edc22a25cff82ce167149ba912f215))
+* toggle usage of common sprite graphics in oam editor ([b090c0e](https://github.com/alexman25/MAGE-Themes/commit/b090c0efdbad7249f635733ac0cc76588ca5ab57))
+* update docs ([9963347](https://github.com/alexman25/MAGE-Themes/commit/99633470191bc32dbfb1a7ac609360d8cfdb26e5))
+* upgrade to .NET version 10 ([9b1a4c4](https://github.com/alexman25/MAGE-Themes/commit/9b1a4c4773c52e4e38c968375cadea4bc8333044))
+* use shift+scroll to scroll horizontally ([6a4a112](https://github.com/alexman25/MAGE-Themes/commit/6a4a112d85c354c4a902e2c3caf02a3b99cb6a94))
+* zoom in room editor tileset ([716145e](https://github.com/alexman25/MAGE-Themes/commit/716145e7949044a743574e8f9a9569f0175da040))
+
# [1.16.0](https://github.com/ConConner/MAGE-Themes/compare/v1.15.0...v1.16.0) (2026-05-11)
diff --git a/mage/App.config b/mage/App.config
index b9f8c1b..152b21f 100644
--- a/mage/App.config
+++ b/mage/App.config
@@ -94,6 +94,12 @@
+
+
+
+
+
+
diff --git a/mage/Editors/FormHeader.Designer.cs b/mage/Editors/FormHeader.Designer.cs
index 43f272e..d3d4d2b 100644
--- a/mage/Editors/FormHeader.Designer.cs
+++ b/mage/Editors/FormHeader.Designer.cs
@@ -52,6 +52,7 @@ private void InitializeComponent()
label_BG3scroll = new System.Windows.Forms.Label();
label_transparency = new System.Windows.Forms.Label();
groupBox_BGdata = new System.Windows.Forms.GroupBox();
+ btn_transparency_preset = new System.Windows.Forms.Button();
btn_tileset_preset = new System.Windows.Forms.Button();
btn_bg3_prop = new System.Windows.Forms.Button();
btn_bg0_prop = new System.Windows.Forms.Button();
@@ -95,7 +96,7 @@ private void InitializeComponent()
lbl_spring = new System.Windows.Forms.ToolStripStatusLabel();
lbl_offset = new System.Windows.Forms.ToolStripStatusLabel();
button_close = new System.Windows.Forms.Button();
- btn_transparency_preset = new System.Windows.Forms.Button();
+ comboBoxMuslist = new System.Windows.Forms.ComboBox();
groupBox_BGdata.SuspendLayout();
groupBox_spritesetData.SuspendLayout();
groupBox_misc.SuspendLayout();
@@ -106,6 +107,8 @@ private void InitializeComponent()
//
textBox_tileset.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_tileset.DisplayBorder = true;
+ textBox_tileset.HexSanitized = false;
+ textBox_tileset.HexSanitizedMaxValue = -1;
textBox_tileset.Location = new System.Drawing.Point(102, 40);
textBox_tileset.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_tileset.MaxLength = 32767;
@@ -130,7 +133,7 @@ private void InitializeComponent()
label_tileset.Location = new System.Drawing.Point(7, 44);
label_tileset.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_tileset.Name = "label_tileset";
- label_tileset.Size = new System.Drawing.Size(48, 17);
+ label_tileset.Size = new System.Drawing.Size(44, 15);
label_tileset.TabIndex = 0;
label_tileset.Text = "Tileset:";
//
@@ -138,6 +141,8 @@ private void InitializeComponent()
//
textBox_BG0pointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG0pointer.DisplayBorder = true;
+ textBox_BG0pointer.HexSanitized = false;
+ textBox_BG0pointer.HexSanitizedMaxValue = -1;
textBox_BG0pointer.Location = new System.Drawing.Point(225, 40);
textBox_BG0pointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG0pointer.MaxLength = 32767;
@@ -160,6 +165,8 @@ private void InitializeComponent()
//
textBox_BG1pointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG1pointer.DisplayBorder = true;
+ textBox_BG1pointer.HexSanitized = false;
+ textBox_BG1pointer.HexSanitizedMaxValue = -1;
textBox_BG1pointer.Location = new System.Drawing.Point(225, 70);
textBox_BG1pointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG1pointer.MaxLength = 32767;
@@ -182,6 +189,8 @@ private void InitializeComponent()
//
textBox_BG2pointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG2pointer.DisplayBorder = true;
+ textBox_BG2pointer.HexSanitized = false;
+ textBox_BG2pointer.HexSanitizedMaxValue = -1;
textBox_BG2pointer.Location = new System.Drawing.Point(225, 100);
textBox_BG2pointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG2pointer.MaxLength = 32767;
@@ -204,6 +213,8 @@ private void InitializeComponent()
//
textBox_BG3pointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG3pointer.DisplayBorder = true;
+ textBox_BG3pointer.HexSanitized = false;
+ textBox_BG3pointer.HexSanitizedMaxValue = -1;
textBox_BG3pointer.Location = new System.Drawing.Point(225, 130);
textBox_BG3pointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG3pointer.MaxLength = 32767;
@@ -226,6 +237,8 @@ private void InitializeComponent()
//
textBox_CLPpointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_CLPpointer.DisplayBorder = true;
+ textBox_CLPpointer.HexSanitized = false;
+ textBox_CLPpointer.HexSanitizedMaxValue = -1;
textBox_CLPpointer.Location = new System.Drawing.Point(225, 160);
textBox_CLPpointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_CLPpointer.MaxLength = 32767;
@@ -248,6 +261,8 @@ private void InitializeComponent()
//
textBox_BG0prop.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG0prop.DisplayBorder = true;
+ textBox_BG0prop.HexSanitized = false;
+ textBox_BG0prop.HexSanitizedMaxValue = -1;
textBox_BG0prop.Location = new System.Drawing.Point(287, 41);
textBox_BG0prop.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG0prop.MaxLength = 32767;
@@ -270,6 +285,8 @@ private void InitializeComponent()
//
textBox_BG1prop.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG1prop.DisplayBorder = true;
+ textBox_BG1prop.HexSanitized = false;
+ textBox_BG1prop.HexSanitizedMaxValue = -1;
textBox_BG1prop.Location = new System.Drawing.Point(287, 71);
textBox_BG1prop.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG1prop.MaxLength = 32767;
@@ -292,6 +309,8 @@ private void InitializeComponent()
//
textBox_BG2prop.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG2prop.DisplayBorder = true;
+ textBox_BG2prop.HexSanitized = false;
+ textBox_BG2prop.HexSanitizedMaxValue = -1;
textBox_BG2prop.Location = new System.Drawing.Point(287, 100);
textBox_BG2prop.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG2prop.MaxLength = 32767;
@@ -314,6 +333,8 @@ private void InitializeComponent()
//
textBox_BG3prop.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG3prop.DisplayBorder = true;
+ textBox_BG3prop.HexSanitized = false;
+ textBox_BG3prop.HexSanitizedMaxValue = -1;
textBox_BG3prop.Location = new System.Drawing.Point(287, 130);
textBox_BG3prop.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG3prop.MaxLength = 32767;
@@ -338,7 +359,7 @@ private void InitializeComponent()
label_BG0.Location = new System.Drawing.Point(178, 44);
label_BG0.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_BG0.Name = "label_BG0";
- label_BG0.Size = new System.Drawing.Size(38, 17);
+ label_BG0.Size = new System.Drawing.Size(34, 15);
label_BG0.TabIndex = 0;
label_BG0.Text = "BG 0:";
//
@@ -348,7 +369,7 @@ private void InitializeComponent()
label_BG1.Location = new System.Drawing.Point(178, 74);
label_BG1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_BG1.Name = "label_BG1";
- label_BG1.Size = new System.Drawing.Size(38, 17);
+ label_BG1.Size = new System.Drawing.Size(34, 15);
label_BG1.TabIndex = 0;
label_BG1.Text = "BG 1:";
//
@@ -358,7 +379,7 @@ private void InitializeComponent()
label_BG2.Location = new System.Drawing.Point(178, 104);
label_BG2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_BG2.Name = "label_BG2";
- label_BG2.Size = new System.Drawing.Size(38, 17);
+ label_BG2.Size = new System.Drawing.Size(34, 15);
label_BG2.TabIndex = 0;
label_BG2.Text = "BG 2:";
//
@@ -368,7 +389,7 @@ private void InitializeComponent()
label_BG3.Location = new System.Drawing.Point(178, 134);
label_BG3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_BG3.Name = "label_BG3";
- label_BG3.Size = new System.Drawing.Size(38, 17);
+ label_BG3.Size = new System.Drawing.Size(34, 15);
label_BG3.TabIndex = 0;
label_BG3.Text = "BG 3:";
//
@@ -378,7 +399,7 @@ private void InitializeComponent()
label_CLP.Location = new System.Drawing.Point(178, 164);
label_CLP.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_CLP.Name = "label_CLP";
- label_CLP.Size = new System.Drawing.Size(33, 17);
+ label_CLP.Size = new System.Drawing.Size(31, 15);
label_CLP.TabIndex = 0;
label_CLP.Text = "Clip:";
//
@@ -408,6 +429,8 @@ private void InitializeComponent()
//
textBox_BG3scroll.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_BG3scroll.DisplayBorder = true;
+ textBox_BG3scroll.HexSanitized = false;
+ textBox_BG3scroll.HexSanitizedMaxValue = -1;
textBox_BG3scroll.Location = new System.Drawing.Point(102, 100);
textBox_BG3scroll.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_BG3scroll.MaxLength = 32767;
@@ -430,6 +453,8 @@ private void InitializeComponent()
//
textBox_transparency.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_transparency.DisplayBorder = true;
+ textBox_transparency.HexSanitized = false;
+ textBox_transparency.HexSanitizedMaxValue = -1;
textBox_transparency.Location = new System.Drawing.Point(102, 70);
textBox_transparency.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_transparency.MaxLength = 32767;
@@ -454,7 +479,7 @@ private void InitializeComponent()
label_BG3scroll.Location = new System.Drawing.Point(7, 104);
label_BG3scroll.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_BG3scroll.Name = "label_BG3scroll";
- label_BG3scroll.Size = new System.Drawing.Size(69, 17);
+ label_BG3scroll.Size = new System.Drawing.Size(62, 15);
label_BG3scroll.TabIndex = 0;
label_BG3scroll.Text = "BG3 scroll:";
//
@@ -464,7 +489,7 @@ private void InitializeComponent()
label_transparency.Location = new System.Drawing.Point(7, 74);
label_transparency.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_transparency.Name = "label_transparency";
- label_transparency.Size = new System.Drawing.Size(88, 17);
+ label_transparency.Size = new System.Drawing.Size(80, 15);
label_transparency.TabIndex = 0;
label_transparency.Text = "Transparency:";
//
@@ -512,6 +537,16 @@ private void InitializeComponent()
groupBox_BGdata.TabStop = false;
groupBox_BGdata.Text = "Background Data";
//
+ // btn_transparency_preset
+ //
+ btn_transparency_preset.Image = Properties.Resources.toolbar_patches;
+ btn_transparency_preset.Location = new System.Drawing.Point(144, 70);
+ btn_transparency_preset.Name = "btn_transparency_preset";
+ btn_transparency_preset.Size = new System.Drawing.Size(23, 23);
+ btn_transparency_preset.TabIndex = 20;
+ btn_transparency_preset.UseVisualStyleBackColor = true;
+ btn_transparency_preset.Click += btn_transparency_preset_Click;
+ //
// btn_tileset_preset
//
btn_tileset_preset.Image = Properties.Resources.toolbar_patches;
@@ -576,6 +611,8 @@ private void InitializeComponent()
//
textBox_effectYpos.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_effectYpos.DisplayBorder = true;
+ textBox_effectYpos.HexSanitized = false;
+ textBox_effectYpos.HexSanitizedMaxValue = -1;
textBox_effectYpos.Location = new System.Drawing.Point(102, 160);
textBox_effectYpos.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_effectYpos.MaxLength = 32767;
@@ -600,7 +637,7 @@ private void InitializeComponent()
label1.Location = new System.Drawing.Point(7, 164);
label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label1.Name = "label1";
- label1.Size = new System.Drawing.Size(80, 17);
+ label1.Size = new System.Drawing.Size(72, 15);
label1.TabIndex = 0;
label1.Text = "Effect Y pos:";
//
@@ -610,7 +647,7 @@ private void InitializeComponent()
label_effect.Location = new System.Drawing.Point(7, 134);
label_effect.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_effect.Name = "label_effect";
- label_effect.Size = new System.Drawing.Size(43, 17);
+ label_effect.Size = new System.Drawing.Size(40, 15);
label_effect.TabIndex = 0;
label_effect.Text = "Effect:";
//
@@ -618,6 +655,8 @@ private void InitializeComponent()
//
textBox_effect.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_effect.DisplayBorder = true;
+ textBox_effect.HexSanitized = false;
+ textBox_effect.HexSanitizedMaxValue = -1;
textBox_effect.Location = new System.Drawing.Point(102, 130);
textBox_effect.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_effect.MaxLength = 32767;
@@ -656,7 +695,7 @@ private void InitializeComponent()
groupBox_spritesetData.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
groupBox_spritesetData.Name = "groupBox_spritesetData";
groupBox_spritesetData.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3);
- groupBox_spritesetData.Size = new System.Drawing.Size(239, 168);
+ groupBox_spritesetData.Size = new System.Drawing.Size(239, 134);
groupBox_spritesetData.TabIndex = 1;
groupBox_spritesetData.TabStop = false;
groupBox_spritesetData.Text = "Spriteset Data";
@@ -667,7 +706,7 @@ private void InitializeComponent()
label_second.Location = new System.Drawing.Point(7, 104);
label_second.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_second.Name = "label_second";
- label_second.Size = new System.Drawing.Size(54, 17);
+ label_second.Size = new System.Drawing.Size(49, 15);
label_second.TabIndex = 0;
label_second.Text = "Second:";
//
@@ -677,7 +716,7 @@ private void InitializeComponent()
label_first.Location = new System.Drawing.Point(7, 74);
label_first.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_first.Name = "label_first";
- label_first.Size = new System.Drawing.Size(35, 17);
+ label_first.Size = new System.Drawing.Size(32, 15);
label_first.TabIndex = 0;
label_first.Text = "First:";
//
@@ -687,7 +726,7 @@ private void InitializeComponent()
label_default.Location = new System.Drawing.Point(7, 44);
label_default.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_default.Name = "label_default";
- label_default.Size = new System.Drawing.Size(52, 17);
+ label_default.Size = new System.Drawing.Size(48, 15);
label_default.TabIndex = 0;
label_default.Text = "Default:";
//
@@ -728,6 +767,8 @@ private void InitializeComponent()
//
textBox_defaultPointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_defaultPointer.DisplayBorder = true;
+ textBox_defaultPointer.HexSanitized = false;
+ textBox_defaultPointer.HexSanitizedMaxValue = -1;
textBox_defaultPointer.Location = new System.Drawing.Point(69, 40);
textBox_defaultPointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_defaultPointer.MaxLength = 32767;
@@ -750,6 +791,8 @@ private void InitializeComponent()
//
textBox_defaultSpriteset.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_defaultSpriteset.DisplayBorder = true;
+ textBox_defaultSpriteset.HexSanitized = false;
+ textBox_defaultSpriteset.HexSanitizedMaxValue = -1;
textBox_defaultSpriteset.Location = new System.Drawing.Point(152, 40);
textBox_defaultSpriteset.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_defaultSpriteset.MaxLength = 32767;
@@ -772,6 +815,8 @@ private void InitializeComponent()
//
textBox_secondEvent.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_secondEvent.DisplayBorder = true;
+ textBox_secondEvent.HexSanitized = false;
+ textBox_secondEvent.HexSanitizedMaxValue = -1;
textBox_secondEvent.Location = new System.Drawing.Point(194, 100);
textBox_secondEvent.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_secondEvent.MaxLength = 32767;
@@ -794,6 +839,8 @@ private void InitializeComponent()
//
textBox_secondPointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_secondPointer.DisplayBorder = true;
+ textBox_secondPointer.HexSanitized = false;
+ textBox_secondPointer.HexSanitizedMaxValue = -1;
textBox_secondPointer.Location = new System.Drawing.Point(69, 100);
textBox_secondPointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_secondPointer.MaxLength = 32767;
@@ -816,6 +863,8 @@ private void InitializeComponent()
//
textBox_secondSpriteset.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_secondSpriteset.DisplayBorder = true;
+ textBox_secondSpriteset.HexSanitized = false;
+ textBox_secondSpriteset.HexSanitizedMaxValue = -1;
textBox_secondSpriteset.Location = new System.Drawing.Point(152, 100);
textBox_secondSpriteset.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_secondSpriteset.MaxLength = 32767;
@@ -838,6 +887,8 @@ private void InitializeComponent()
//
textBox_firstEvent.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_firstEvent.DisplayBorder = true;
+ textBox_firstEvent.HexSanitized = false;
+ textBox_firstEvent.HexSanitizedMaxValue = -1;
textBox_firstEvent.Location = new System.Drawing.Point(194, 70);
textBox_firstEvent.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_firstEvent.MaxLength = 32767;
@@ -860,6 +911,8 @@ private void InitializeComponent()
//
textBox_firstPointer.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_firstPointer.DisplayBorder = true;
+ textBox_firstPointer.HexSanitized = false;
+ textBox_firstPointer.HexSanitizedMaxValue = -1;
textBox_firstPointer.Location = new System.Drawing.Point(69, 70);
textBox_firstPointer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_firstPointer.MaxLength = 32767;
@@ -882,6 +935,8 @@ private void InitializeComponent()
//
textBox_firstSpriteset.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_firstSpriteset.DisplayBorder = true;
+ textBox_firstSpriteset.HexSanitized = false;
+ textBox_firstSpriteset.HexSanitizedMaxValue = -1;
textBox_firstSpriteset.Location = new System.Drawing.Point(152, 70);
textBox_firstSpriteset.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_firstSpriteset.MaxLength = 32767;
@@ -903,8 +958,6 @@ private void InitializeComponent()
// groupBox_misc
//
groupBox_misc.Controls.Add(btn_open_map);
- groupBox_misc.Controls.Add(label_music);
- groupBox_misc.Controls.Add(textBox_music);
groupBox_misc.Controls.Add(label_mapY);
groupBox_misc.Controls.Add(label_mapX);
groupBox_misc.Controls.Add(textBox_mapX);
@@ -913,7 +966,7 @@ private void InitializeComponent()
groupBox_misc.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
groupBox_misc.Name = "groupBox_misc";
groupBox_misc.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3);
- groupBox_misc.Size = new System.Drawing.Size(107, 168);
+ groupBox_misc.Size = new System.Drawing.Size(107, 134);
groupBox_misc.TabIndex = 2;
groupBox_misc.TabStop = false;
groupBox_misc.Text = "Miscellaneous";
@@ -932,10 +985,10 @@ private void InitializeComponent()
// label_music
//
label_music.AutoSize = true;
- label_music.Location = new System.Drawing.Point(7, 138);
+ label_music.Location = new System.Drawing.Point(19, 360);
label_music.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_music.Name = "label_music";
- label_music.Size = new System.Drawing.Size(45, 17);
+ label_music.Size = new System.Drawing.Size(42, 15);
label_music.TabIndex = 0;
label_music.Text = "Music:";
//
@@ -943,7 +996,9 @@ private void InitializeComponent()
//
textBox_music.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_music.DisplayBorder = true;
- textBox_music.Location = new System.Drawing.Point(62, 134);
+ textBox_music.HexSanitized = false;
+ textBox_music.HexSanitizedMaxValue = -1;
+ textBox_music.Location = new System.Drawing.Point(70, 356);
textBox_music.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_music.MaxLength = 32767;
textBox_music.Multiline = false;
@@ -967,7 +1022,7 @@ private void InitializeComponent()
label_mapY.Location = new System.Drawing.Point(7, 67);
label_mapY.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_mapY.Name = "label_mapY";
- label_mapY.Size = new System.Drawing.Size(49, 17);
+ label_mapY.Size = new System.Drawing.Size(44, 15);
label_mapY.TabIndex = 0;
label_mapY.Text = "Map Y:";
//
@@ -977,7 +1032,7 @@ private void InitializeComponent()
label_mapX.Location = new System.Drawing.Point(7, 30);
label_mapX.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_mapX.Name = "label_mapX";
- label_mapX.Size = new System.Drawing.Size(50, 17);
+ label_mapX.Size = new System.Drawing.Size(44, 15);
label_mapX.TabIndex = 0;
label_mapX.Text = "Map X:";
//
@@ -985,6 +1040,8 @@ private void InitializeComponent()
//
textBox_mapX.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_mapX.DisplayBorder = true;
+ textBox_mapX.HexSanitized = false;
+ textBox_mapX.HexSanitizedMaxValue = -1;
textBox_mapX.Location = new System.Drawing.Point(62, 27);
textBox_mapX.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_mapX.MaxLength = 32767;
@@ -1007,6 +1064,8 @@ private void InitializeComponent()
//
textBox_mapY.BorderColor = System.Drawing.Color.FromArgb(188, 188, 188);
textBox_mapY.DisplayBorder = true;
+ textBox_mapY.HexSanitized = false;
+ textBox_mapY.HexSanitizedMaxValue = -1;
textBox_mapY.Location = new System.Drawing.Point(62, 63);
textBox_mapY.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
textBox_mapY.MaxLength = 32767;
@@ -1043,7 +1102,7 @@ private void InitializeComponent()
label_room.Location = new System.Drawing.Point(20, 421);
label_room.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_room.Name = "label_room";
- label_room.Size = new System.Drawing.Size(46, 17);
+ label_room.Size = new System.Drawing.Size(42, 15);
label_room.TabIndex = 0;
label_room.Text = "Room:";
//
@@ -1053,7 +1112,7 @@ private void InitializeComponent()
label_area.Location = new System.Drawing.Point(20, 392);
label_area.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
label_area.Name = "label_area";
- label_area.Size = new System.Drawing.Size(38, 17);
+ label_area.Size = new System.Drawing.Size(34, 15);
label_area.TabIndex = 0;
label_area.Text = "Area:";
//
@@ -1064,7 +1123,7 @@ private void InitializeComponent()
comboBox_room.Location = new System.Drawing.Point(70, 418);
comboBox_room.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
comboBox_room.Name = "comboBox_room";
- comboBox_room.Size = new System.Drawing.Size(182, 25);
+ comboBox_room.Size = new System.Drawing.Size(182, 23);
comboBox_room.TabIndex = 4;
comboBox_room.SelectedIndexChanged += comboBox_room_SelectedIndexChanged;
//
@@ -1075,7 +1134,7 @@ private void InitializeComponent()
comboBox_area.Location = new System.Drawing.Point(70, 389);
comboBox_area.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
comboBox_area.Name = "comboBox_area";
- comboBox_area.Size = new System.Drawing.Size(182, 25);
+ comboBox_area.Size = new System.Drawing.Size(182, 23);
comboBox_area.TabIndex = 3;
comboBox_area.SelectedIndexChanged += comboBox_area_SelectedIndexChanged;
//
@@ -1092,19 +1151,19 @@ private void InitializeComponent()
//
statusLabel_changes.BorderStyle = System.Windows.Forms.Border3DStyle.Etched;
statusLabel_changes.Name = "statusLabel_changes";
- statusLabel_changes.Size = new System.Drawing.Size(13, 17);
+ statusLabel_changes.Size = new System.Drawing.Size(12, 17);
statusLabel_changes.Text = "-";
//
// lbl_spring
//
lbl_spring.Name = "lbl_spring";
- lbl_spring.Size = new System.Drawing.Size(306, 17);
+ lbl_spring.Size = new System.Drawing.Size(311, 17);
lbl_spring.Spring = true;
//
// lbl_offset
//
lbl_offset.Name = "lbl_offset";
- lbl_offset.Size = new System.Drawing.Size(46, 17);
+ lbl_offset.Size = new System.Drawing.Size(42, 17);
lbl_offset.Text = "Offset:";
//
// button_close
@@ -1118,23 +1177,24 @@ private void InitializeComponent()
button_close.UseVisualStyleBackColor = true;
button_close.Click += button_close_Click;
//
- // btn_transparency_preset
+ // comboBoxMuslist
//
- btn_transparency_preset.Image = Properties.Resources.toolbar_patches;
- btn_transparency_preset.Location = new System.Drawing.Point(144, 70);
- btn_transparency_preset.Name = "btn_transparency_preset";
- btn_transparency_preset.Size = new System.Drawing.Size(23, 23);
- btn_transparency_preset.TabIndex = 20;
- btn_transparency_preset.UseVisualStyleBackColor = true;
- btn_transparency_preset.Click += btn_transparency_preset_Click;
+ comboBoxMuslist.FormattingEnabled = true;
+ comboBoxMuslist.Location = new System.Drawing.Point(112, 356);
+ comboBoxMuslist.Name = "comboBoxMuslist";
+ comboBoxMuslist.Size = new System.Drawing.Size(255, 23);
+ comboBoxMuslist.TabIndex = 8;
//
// FormHeader
//
AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
ClientSize = new System.Drawing.Size(382, 473);
+ Controls.Add(comboBoxMuslist);
Controls.Add(statusStrip);
+ Controls.Add(label_music);
Controls.Add(label_room);
+ Controls.Add(textBox_music);
Controls.Add(label_area);
Controls.Add(comboBox_room);
Controls.Add(comboBox_area);
@@ -1229,5 +1289,6 @@ private void InitializeComponent()
private System.Windows.Forms.Button btn_bg1_prop;
private System.Windows.Forms.Button btn_tileset_preset;
private System.Windows.Forms.Button btn_transparency_preset;
+ private System.Windows.Forms.ComboBox comboBoxMuslist;
}
}
\ No newline at end of file
diff --git a/mage/Editors/FormHeader.cs b/mage/Editors/FormHeader.cs
index ea039e3..f8f635b 100644
--- a/mage/Editors/FormHeader.cs
+++ b/mage/Editors/FormHeader.cs
@@ -18,12 +18,18 @@ public partial class FormHeader : Form
private ByteStream romStream;
private bool loading;
private Status status;
+ private bool syncingMusic;
// constructor
public FormHeader(FormMain main)
{
InitializeComponent();
+ LoadMusicComboobox();
+
+ comboBoxMuslist.SelectedIndexChanged += comboBoxMuslist_SelectedIndexChanged;
+ textBox_music.TextChanged += textBox_music_TextChanged;
+
//Theming
ThemeSwitcher.ChangeTheme(Controls, this);
ThemeSwitcher.InjectPaintOverrides(Controls);
@@ -42,6 +48,85 @@ public FormHeader(FormMain main)
comboBox_area.SelectedIndex = main.Room.AreaID;
comboBox_room.SelectedIndex = main.Room.RoomID;
+
+ }
+
+ private void LoadMusicComboobox()
+ {
+ comboBoxMuslist.Items.Clear();
+
+ string text = Muslist.ReadSelectedMusiclist();
+
+ if (string.IsNullOrWhiteSpace(text))
+ return;
+
+ string[] lines = text.Split(
+ new[] { "\r\n", "\n" },
+ StringSplitOptions.None
+ );
+
+ foreach (string rawLine in lines)
+ {
+ string name = rawLine.Trim();
+
+ if (name == "")
+ name = "(blank)";
+
+ comboBoxMuslist.Items.Add(name);
+ }
+ }
+
+ private void UpdateMusicDropdownFromTextbox()
+ {
+ if (syncingMusic)
+ return;
+
+ syncingMusic = true;
+
+ try
+ {
+ ushort musicId = Hex.ToUshort(textBox_music.Text);
+ int index = musicId;
+
+ if (index >= 0 && index < comboBoxMuslist.Items.Count)
+ comboBoxMuslist.SelectedIndex = index;
+ else
+ comboBoxMuslist.SelectedIndex = -1;
+ }
+ catch
+ {
+ comboBoxMuslist.SelectedIndex = -1;
+ }
+
+ syncingMusic = false;
+ }
+
+ private void comboBoxMuslist_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (syncingMusic)
+ return;
+
+ if (comboBoxMuslist.SelectedIndex == -1)
+ return;
+
+ syncingMusic = true;
+
+ textBox_music.Text = Hex.ToString((ushort)comboBoxMuslist.SelectedIndex);
+
+ syncingMusic = false;
+
+ if (!loading)
+ status.ChangeMade();
+ }
+
+ private void textBox_music_TextChanged(object sender, EventArgs e)
+ {
+ UpdateMusicDropdownFromTextbox();
+
+ if (loading)
+ return;
+
+ status.ChangeMade();
}
private void comboBox_area_SelectedIndexChanged(object sender, EventArgs e)
@@ -140,6 +225,7 @@ public void FillValues()
textBox_effect.Text = Hex.ToString(effect);
textBox_effectYpos.Text = Hex.ToString(effectY);
textBox_music.Text = Hex.ToString(music);
+ UpdateMusicDropdownFromTextbox();
lbl_offset.Text = $"Offset: {Hex.ToString(offset)}";
diff --git a/mage/Editors/FormHeader.resx b/mage/Editors/FormHeader.resx
index a612109..dcd497e 100644
--- a/mage/Editors/FormHeader.resx
+++ b/mage/Editors/FormHeader.resx
@@ -121,7 +121,7 @@
17, 17
- 58
+ 25
diff --git a/mage/FormMain.cs b/mage/FormMain.cs
index 2f9c33b..9c90bd2 100644
--- a/mage/FormMain.cs
+++ b/mage/FormMain.cs
@@ -287,6 +287,10 @@ private void InitializeSettings()
Sound.SoundPacksPath = Settings.Default.soundPackPath;
Sound.SoundPackName = Settings.Default.soundPackName;
+ //Music list paths
+ Muslist.MusiclistsPath = Settings.Default.musiclistsPath;
+ Muslist.MusiclistName = Settings.Default.musiclistName;
+
// Bookmarks
try { ZMGlobalBookmarks = BookmarkManager.DeserializeCollections(Settings.Default.ZMglobalBookmarks); }
catch { ZMGlobalBookmarks = new(); }
@@ -341,6 +345,10 @@ private void SaveSettings()
Settings.Default.soundPackPath = Sound.SoundPacksPath;
Settings.Default.soundPackName = Sound.SoundPackName;
+ //Music lists
+ Settings.Default.musiclistsPath = Muslist.MusiclistsPath;
+ Settings.Default.musiclistName = Muslist.MusiclistName;
+
//Bookmarks
Settings.Default.ZMglobalBookmarks = BookmarkManager.SerializeCollections(ZMGlobalBookmarks);
Settings.Default.MFglobalBookmarks = BookmarkManager.SerializeCollections(MFGlobalBookmarks);
diff --git a/mage/Options/PageLists.cs b/mage/Options/PageLists.cs
index cec88a0..838add0 100644
--- a/mage/Options/PageLists.cs
+++ b/mage/Options/PageLists.cs
@@ -18,6 +18,7 @@ public static class PageLists
new() { Name = "Soundpacks", Page = new PageSoundpacks(), RequiresROM = false },
new() { Name = "Updates", Page = new PageUpdates(), RequiresROM = false },
new() { Name = "Advanced", Page = new PageAdvanced(), RequiresROM=false },
+ new() { Name = "Music Lists", Page = new PageMusiclists(), RequiresROM=false },
};
public static List ProjectOptionsPages = new()
diff --git a/mage/Options/PagesApplication/PageMusiclists.Designer.cs b/mage/Options/PagesApplication/PageMusiclists.Designer.cs
new file mode 100644
index 0000000..89af68f
--- /dev/null
+++ b/mage/Options/PagesApplication/PageMusiclists.Designer.cs
@@ -0,0 +1,159 @@
+namespace mage.Options.Pages
+{
+ partial class PageMusiclists
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ grp_info = new System.Windows.Forms.GroupBox();
+ txb_preview = new mage.Theming.CustomControls.FlatTextBox();
+ lst_muslists = new System.Windows.Forms.ListBox();
+ btn_select_path = new System.Windows.Forms.Button();
+ textBox_path = new mage.Theming.CustomControls.FlatTextBox();
+ group_Musiclists = new System.Windows.Forms.GroupBox();
+ grp_info.SuspendLayout();
+ group_Musiclists.SuspendLayout();
+ SuspendLayout();
+ //
+ // grp_info
+ //
+ grp_info.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ grp_info.Controls.Add(txb_preview);
+ grp_info.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ grp_info.Location = new System.Drawing.Point(167, 58);
+ grp_info.Name = "grp_info";
+ grp_info.Padding = new System.Windows.Forms.Padding(6, 6, 6, 3);
+ grp_info.Size = new System.Drawing.Size(267, 253);
+ grp_info.TabIndex = 6;
+ grp_info.TabStop = false;
+ grp_info.Text = "List Preview";
+ //
+ // txb_preview
+ //
+ txb_preview.BorderColor = System.Drawing.Color.Black;
+ txb_preview.DisplayBorder = false;
+ txb_preview.Dock = System.Windows.Forms.DockStyle.Fill;
+ txb_preview.Location = new System.Drawing.Point(6, 22);
+ txb_preview.MaxLength = 32767;
+ txb_preview.Multiline = true;
+ txb_preview.Name = "txb_preview";
+ txb_preview.OnTextChanged = null;
+ txb_preview.Padding = new System.Windows.Forms.Padding(3, 3, 1, 2);
+ txb_preview.PlaceholderText = "";
+ txb_preview.ReadOnly = true;
+ txb_preview.ScrollBars = System.Windows.Forms.ScrollBars.None;
+ txb_preview.SelectionStart = 0;
+ txb_preview.Size = new System.Drawing.Size(255, 228);
+ txb_preview.TabIndex = 0;
+ txb_preview.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ txb_preview.ValueBox = false;
+ txb_preview.WordWrap = true;
+ //
+ // lst_muslists
+ //
+ lst_muslists.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ lst_muslists.Dock = System.Windows.Forms.DockStyle.Fill;
+ lst_muslists.Font = new System.Drawing.Font("Segoe UI Semilight", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ lst_muslists.FormattingEnabled = true;
+ lst_muslists.ItemHeight = 15;
+ lst_muslists.Location = new System.Drawing.Point(6, 22);
+ lst_muslists.Name = "lst_muslists";
+ lst_muslists.Size = new System.Drawing.Size(146, 228);
+ lst_muslists.TabIndex = 5;
+ lst_muslists.SelectedIndexChanged += lst_muslists_SelectedIndexChanged;
+ //
+ // btn_select_path
+ //
+ btn_select_path.Image = Properties.Resources.toolbar_open;
+ btn_select_path.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ btn_select_path.Location = new System.Drawing.Point(6, 6);
+ btn_select_path.Name = "btn_select_path";
+ btn_select_path.Size = new System.Drawing.Size(155, 23);
+ btn_select_path.TabIndex = 4;
+ btn_select_path.Text = "Set Musiclists Path";
+ btn_select_path.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ btn_select_path.UseVisualStyleBackColor = true;
+ btn_select_path.Click += btn_select_path_Click;
+ //
+ // textBox_path
+ //
+ textBox_path.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ textBox_path.BorderColor = System.Drawing.Color.Black;
+ textBox_path.DisplayBorder = false;
+ textBox_path.Location = new System.Drawing.Point(167, 6);
+ textBox_path.MaxLength = 32767;
+ textBox_path.Multiline = true;
+ textBox_path.Name = "textBox_path";
+ textBox_path.OnTextChanged = null;
+ textBox_path.Padding = new System.Windows.Forms.Padding(3, 3, 1, 2);
+ textBox_path.PlaceholderText = "";
+ textBox_path.ReadOnly = true;
+ textBox_path.ScrollBars = System.Windows.Forms.ScrollBars.None;
+ textBox_path.SelectionStart = 0;
+ textBox_path.Size = new System.Drawing.Size(267, 46);
+ textBox_path.TabIndex = 7;
+ textBox_path.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ textBox_path.ValueBox = false;
+ textBox_path.WordWrap = true;
+ //
+ // group_Musiclists
+ //
+ group_Musiclists.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left;
+ group_Musiclists.Controls.Add(lst_muslists);
+ group_Musiclists.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
+ group_Musiclists.Location = new System.Drawing.Point(6, 58);
+ group_Musiclists.Name = "group_Musiclists";
+ group_Musiclists.Padding = new System.Windows.Forms.Padding(6, 6, 3, 3);
+ group_Musiclists.Size = new System.Drawing.Size(155, 253);
+ group_Musiclists.TabIndex = 8;
+ group_Musiclists.TabStop = false;
+ group_Musiclists.Text = "Musiclists";
+ //
+ // PageMusiclists
+ //
+ AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
+ Controls.Add(group_Musiclists);
+ Controls.Add(textBox_path);
+ Controls.Add(grp_info);
+ Controls.Add(btn_select_path);
+ Name = "PageMusiclists";
+ Padding = new System.Windows.Forms.Padding(3);
+ Size = new System.Drawing.Size(440, 317);
+ grp_info.ResumeLayout(false);
+ group_Musiclists.ResumeLayout(false);
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox grp_info;
+ private Theming.CustomControls.FlatTextBox txb_preview;
+ private System.Windows.Forms.ListBox lst_muslists;
+ private System.Windows.Forms.Button btn_select_path;
+ private Theming.CustomControls.FlatTextBox textBox_path;
+ private System.Windows.Forms.GroupBox group_Musiclists;
+ }
+}
diff --git a/mage/Options/PagesApplication/PageMusiclists.cs b/mage/Options/PagesApplication/PageMusiclists.cs
new file mode 100644
index 0000000..a6dcac8
--- /dev/null
+++ b/mage/Options/PagesApplication/PageMusiclists.cs
@@ -0,0 +1,113 @@
+using mage.Theming;
+using System;
+using System.ComponentModel;
+using System.IO;
+using System.Windows.Forms;
+
+namespace mage.Options.Pages;
+
+[ToolboxItem(false)]
+public partial class PageMusiclists : UserControl
+{
+ private string currentFilePath = "";
+
+ public PageMusiclists()
+ {
+ InitializeComponent();
+
+ txb_preview.ReadOnly = false;
+
+ LoadMusicListNames();
+
+ Disposed += PageMusiclists_Disposed;
+ }
+
+ private void LoadMusicListNames()
+ {
+ SaveCurrentMusicList();
+
+ lst_muslists.Items.Clear();
+ txb_preview.Text = "";
+
+ textBox_path.Text = Muslist.MusiclistsPath;
+
+ if (!Directory.Exists(Muslist.MusiclistsPath))
+ return;
+
+ int selectIndex = -1;
+ int count = -1;
+
+ foreach (string file in Directory.GetFiles(Muslist.MusiclistsPath, "*.txt"))
+ {
+ count++;
+
+ string name = Path.GetFileName(file);
+ lst_muslists.Items.Add(name);
+
+ if (name == Muslist.MusiclistName)
+ selectIndex = count;
+ }
+
+ lst_muslists.SelectedIndex = selectIndex;
+ }
+
+ private void btn_select_path_Click(object sender, EventArgs e)
+ {
+ SaveCurrentMusicList();
+
+ FolderBrowserDialog dialog = new FolderBrowserDialog();
+
+ if (dialog.ShowDialog() != DialogResult.OK)
+ return;
+
+ Muslist.MusiclistsPath = dialog.SelectedPath;
+ textBox_path.Text = dialog.SelectedPath;
+
+ currentFilePath = "";
+
+ LoadMusicListNames();
+ }
+
+ private void lst_muslists_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ SaveCurrentMusicList();
+
+ int index = lst_muslists.SelectedIndex;
+
+ if (index == -1)
+ {
+ Muslist.MusiclistName = "";
+ currentFilePath = "";
+ txb_preview.Text = "";
+ return;
+ }
+
+ Muslist.MusiclistName = lst_muslists.Items[index].ToString();
+
+ currentFilePath = Path.Combine(Muslist.MusiclistsPath, Muslist.MusiclistName);
+
+ if (!File.Exists(currentFilePath))
+ {
+ txb_preview.Text = "";
+ return;
+ }
+
+ txb_preview.Text = File.ReadAllText(currentFilePath);
+ }
+
+ private void SaveCurrentMusicList()
+ {
+ if (currentFilePath == "")
+ return;
+
+ if (!File.Exists(currentFilePath))
+ return;
+
+ File.WriteAllText(currentFilePath, txb_preview.Text);
+ }
+
+ private void PageMusiclists_Disposed(object sender, EventArgs e)
+ {
+ SaveCurrentMusicList();
+ }
+}
\ No newline at end of file
diff --git a/mage/Options/PagesApplication/PageMusiclists.resx b/mage/Options/PagesApplication/PageMusiclists.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/mage/Options/PagesApplication/PageMusiclists.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mage/Properties/Settings.Designer.cs b/mage/Properties/Settings.Designer.cs
index fb88c80..21fdca2 100644
--- a/mage/Properties/Settings.Designer.cs
+++ b/mage/Properties/Settings.Designer.cs
@@ -380,5 +380,29 @@ public string MFglobalBookmarks {
this["MFglobalBookmarks"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string musiclistsPath {
+ get {
+ return ((string)(this["musiclistsPath"]));
+ }
+ set {
+ this["musiclistsPath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string musiclistName {
+ get {
+ return ((string)(this["musiclistName"]));
+ }
+ set {
+ this["musiclistName"] = value;
+ }
+ }
}
}
diff --git a/mage/Properties/Settings.settings b/mage/Properties/Settings.settings
index 244a761..cd60d40 100644
--- a/mage/Properties/Settings.settings
+++ b/mage/Properties/Settings.settings
@@ -92,5 +92,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mage/Utility/Muslist.cs b/mage/Utility/Muslist.cs
new file mode 100644
index 0000000..953faa5
--- /dev/null
+++ b/mage/Utility/Muslist.cs
@@ -0,0 +1,27 @@
+using System.IO;
+
+namespace mage;
+
+public static class Muslist
+{
+ public static string MusiclistName { get; set; } = "";
+ public static string MusiclistsPath { get; set; } = "";
+
+ public static string GetSelectedMusiclistPath()
+ {
+ if (MusiclistsPath == "" || MusiclistName == "")
+ return "";
+
+ return Path.Combine(MusiclistsPath, MusiclistName);
+ }
+
+ public static string ReadSelectedMusiclist()
+ {
+ string path = GetSelectedMusiclistPath();
+
+ if (path == "" || !File.Exists(path))
+ return "";
+
+ return File.ReadAllText(path);
+ }
+}
\ No newline at end of file
diff --git a/mage/mage.csproj b/mage/mage.csproj
index 71ad7a4..b4384d3 100644
--- a/mage/mage.csproj
+++ b/mage/mage.csproj
@@ -1,7 +1,7 @@
net10.0-windows
- 1.16.0
+ 1.0.0
WinExe
false
publish\
@@ -16,7 +16,7 @@
false
true
1
- 1.16.0
+ 1.0.0
false
true
true
@@ -46,6 +46,9 @@
Form
+
+ UserControl
+
UserControl