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