----------------------------------------------------------------------------------------------------------------------- v47.0 GUI Changes: - Support high DPI screen scaling up to 216 DPI which is 225% scaling in Windows 10 Scale and layout settings. This requires the included "DPI modules" which are installed on the first boot of the script into the folder that the user selects upon prompt. These modules are not optional, they are now required for the script to function. - Change Process Selected [!] button into a [$] and create [Exit Without Saving] button which now uses the [!]. This button can be enabled on [Debug] tab using [Show a [!] button near "Exit" that closes without saving]. - Redesign the [Preferences] tab in Options. Options have been split between [CTT-PS Behavior] and [GUI Elements]. - Adjust the PowerShell console window buffer/screen size to 100 characters wide and 20k lines long. I used to use similar settings long ago before the PS console was hidden by default, but removed that code in a rewrite. - Add a warning message that pops up in an "OK" window that alerts the user to use [Expert Mode] when attempting to add textures to the [Process Selected] dialog that are not Dolphin ("tex1_") textures when the CTT-PS mode is set to [Dolphin Mode]. This warning only pops up once per session so it is not spammed if several textures are dropped onto the window at a time. This warning will only show again when the script is closed and reopened. - Allow showing/hiding the triforce button on the Combine and Split operation windows with a right click. Just so it's not forgotten later, this isn't saved to the script/settings file, so it only lasts for the current session. - Dozens of little tweaks to line things up across the original GUI (96 DPI) as well as the new DPI settings. Functional Changes: - The script now saves options to an external ini file [StoredOptions.ini] by default rather than saving options directly to the script. The old behavior of saving directly the script is still possible by unchecking the option [Store/load saved changes in "CTT-PS Data" folder] found under the Preferences tab of the Options menu. - Custom Texture Tool PS now uses a global [Data] folder that can be selected by the user on first boot, or within the Option menu on the [Tool Paths] screen. This data folder is used to hold the DPI profiles, temporary folder, the "StoredOptions.ini" file, a resource pack database, and it can be a place to put the supported programs. - While not new to this version, adding the [Force Create Mipmaps] flag (_mm#) to the end of textures forces generating mipmaps for that texture, the # defines the number of mipmaps created. It is now possible to leave the # portion blank and just use (_mm) to force generating the maximum number of mipmaps for that texture. - Show the [Force Create Mipmaps] option when in Dolphin Mode. It appears that textures that are not mipmap textures dumped by Dolphin ("m" in the filename) work with mipmaps. Not suggested to use this option with entire packs as it is a waste of hard drive space to create mipmaps for textures that don't need them (such as UI textures). - Rewrote the logic that centers the PowerShell console on launch so that it works across all DPI settings. - Add a wildcard (*) to xBRZ [ScalerTest*.exe] to allow newer versions that are named [ScalerTest_Windows.exe]. - Update the built-in "Help" documentation to include all the new changes, operations, and features. - Add a check when pressing [Start] that prevents the master loop from starting if the script is in the same path as the [Tools Master Path], or if the [Input/Output Paths] are set there which prevents an infinite loop. This used to be checked during the loop when validating textures (Special Cases), but has now been removed. If any of the variations of this error is triggered, an error message will pop up explaining which situation caused it. - Remove option [Skip Texture if Output Exists]. A new option has been added to the [Preferences] menu called [Overwrite textures in the output path if they already exist] which does the same thing for all textures. - Change the way the "last path" is remembered when selecting images or programs from the Get-File window. Rather than use a global path for all selections, each has its own unique way of attempting to retrieve this value so multiple "last paths" can exist. If there is no last path, in each case it will default to the scipt location. Operation Changes: - Create a new mode [Metroid Prime]. This contains operations specific to Metroid Prime 2 (for now at least). - Add operation to Metroid Prime Mode to sort fonts into categories based on their color. - Add operation to Metroid Prime Mode that allows cloning 4 base textures using the sorted fonts. - Add a new operation called [Seperate/Combine Texture RGBA Channels]. This allows splitting a texture into images that contain only the individual channel data, and it allows combining images using individual channel data. - In the Phyre Mode option [Create Phyre Textures] allow force converting DXT1 source textures with alpha to DXT5. - The top-left selection window used in the auto-arrange feature for Mario64/Zelda64 tile textures found in the [Combine Textures] operation will now default to the folder that the textures were dropped from. - Preserve logos in [Resource Pack Manager] so they are only generated once per formatting selection. Bug Fixes: - Fix Start, Cancel, and Auto-Scroll buttons/option to not be displaced/missing if resizing the Texture List, switch to Docked mode, then switch back to Window mode. This bug has existed since Docked mode was added to this script. - Fix [Disable GPU] when using Waifu2x-Caffe. The command used was wrong and the texture was not created. - Fix an issue when selecting ESRGAN that sometimes didn't actually change the filter to ESRGAN. - Fix pixel color data being lost from fully transparent pixels when creating PNG images which can cause issues. - Fix infinite loop with Combine Textures auto-arrange top-left selection if selecting a texture not in the stack. - Fix Phyre Mode option [Create Phyre Tetures] to not reverse the red and blue channels for DDS RGBA. - Fix textures flipping in operations that shouldn't be affected by the [Flip Resulting PNG Texture] option. - Fix [Unhandled Exception] error with the [Process Selected] menu when using [Disable Generating Previews]. - Fix DXT1/BC1 textures to allow using 1-bit alpha when using Compressonator to generate them. - Fix the DDS option [Search Flags] to not keep the underscore from the flag when renaming the textures. - Fix [Split Combined Multi-Texture] to clear the temporary folder between runs which caused errors. - Fix weird issue with generating watermark preview. Cancelling the operation caused future previews to fail. - Fix removing the trailing semicolon in the [Message] section when scanning textures that have issues. - Fix an error that could briefly pop up when first loading the script when checking for Python. - Fix [Process Selected] button from flickering when changing operations that support or do not support it. - Fix dialog state [flicker] when adding textures to [Process Selected] and [Basic Image Viewer]. ----------------------------------------------------------------------------------------------------------------------- v46.2 - Make [PNG Alpha Pixel Manipulation] custom pixel options a bit more robust. - Fix [Process Selected] option (and sub-options) to work with several operations it did not previously work with. ----------------------------------------------------------------------------------------------------------------------- v46.1 - Add an option to [PNG Alpha Pixel Manipulation] to customize the color/alpha data of fully transparent pixels. - Fix the tooltip for the [Debug] options. The first half of it was cut off. ----------------------------------------------------------------------------------------------------------------------- v46.0 - Add support for creating and processing bitmap BMP images. Only 24-bit and 32-bit bitmaps will most likely work. - When checking [Tools Master Path], search root of all hard disks for [CTT-PS Programs] instead of just [C:\]. - Add a weblink icon next to [Tools Master Path] that provides links (3 mirrors) to the programs pack. - Renamed Texture Path to [Input Path]. This felt more fitting since some input files may not be textures. - Added a new operation [Resize Textures with Specific Resolution]. What this does is pretty self explanatory: it forces all images to be created using a specific resolution. This could be useful in niche situations. - When creating DDS, the actual program that was used is now displayed in the [Message] area of the texture list. - Input DDS textures will now transfer the same header type (DX9/DX10) to the output DDS texture unless forced. - Added DDS compression type [Passthrough]. If the input texture is DDS, the output DDS texture will use the same block compression format. If the input texture is anything else, it will use the [DDS Fallback] compression. - DDS texture block compression format can now be forced to BC1 (DXT1). Not suggested for images with transparency! - When in [Expert Mode], allow creating SRGB variants of BC1-BC3 and BC7. BC4-BC6 will instead use [signed] variants. - Rename Old Dimensions to [Dump Dimensions] and New Dimensions to just [Dimensions] on the Texture List window. - Rename Old Aspect to [Dump Aspect] and New Aspect to just [Aspect] on the Texture List window. - Rename the option [Do not Resize TIFF Mipmaps] to [Internal TIFF are Not Mipmaps] since this function has changed. - [Internal TIFF are Not Mipmaps] now scales internal images with the amount of resolution change to the first image. - The mipmap option [External Mipmaps] now also affects TIF/TIFF images. I meant to do this last version, but forgot. - Always remove the mipmap [_mm#] flag if used when creating DDS textures even if [Search Flags] is not enabled. - Do not attempt to flip JPG textures if the option to flip PNG textures is enabled. - PKG Tools used in [Phyre Mode] when extracting or repacking is now ran in a separate thread (prevents GUI hang). - Added an option in [Phyre Mode] in both [Convert/Create] operations to only scan phyre textures or headers. - Add support for bitmap phyre images (.bmp.phyre). These are basically the same as (.png.phyre) with minor differences. - Prevent adding textures to the texture list when creating phyre textures that are missing the header file. - Fix entering an infinite loop that freezes the GUI when processing phyre textures that may end up being unsupported. - Fix issue preventing SFTGAN from working. I am not sure for how long it has been broken. - Fix potential issues when creating DDS textures with the DX10 header which could lead to image corruption. - Fix GUI hanging when running the operation [PNG Alpha Pixel Manipulation] on textures while a texture is processed. - Fix updating the [Status] and [Message] fields on the texture list when a file is copied. - Fix up various small nearly unnoticeable issues (label/checkbox/button spacing, tooltips, etc.) ----------------------------------------------------------------------------------------------------------------------- v45.0 - Add support for generating to and from TIF/TIFF and TGA images when in [Expert Mode]. This requires TexConv. - Compressonator is only used when creating DDS textures from PNG images. It is not used for TIF/TIFF and TGA. - Added TIFF and TGA to the exclusions tab. [TIFF] here will exclude both [TIF] and [TIFF] file extensions. - Make TGA and TIF/TIFF images work with the [Basic Image Viewer]. Expert Mode is forced when using the viewer. - Added option [Do not Resize TIFF Mipmaps] to the [Additional Options] button (found in Convert/Rescale operations). This option allows creating multi-layer TIFF images using the full resolution of lower levels, rather than using progressively smaller [mipmap] levels. Lower levels are determined by (_mip1, _mip2, etc). This option also works when converting TIFF to PNG; lower layers will be converted using the full resolution of the [mipmap]. - Lots of changes to the texture generation logic. Fixes many minor/rare issues (especially with PNG images). - Allow importing the tool [OxiPNG] instead of [OptiPNG]. OxiPNG is much faster than OptiPNG. - The operation [Extract DDS Interal Mipmaps] is now called [Extract Internal Mipmaps] and works on TIFF images. - ToCS Mode has been renamed to [Phyre Mode], but still contains ToCS specific options. I have tested working with Final Fantaxy X/X2 textures and it is possible to change them using the convert/create phyre options. - Adjusted the text boxes for Phyre PKG Tool path selections to match those found in Expert and Dolphin modes. - Add a [box] to the Process Selected menu to hold the current operation for the sake of aesthetics. - Rearranged some items on the exclusions tab and adjusted the size of some elements for congruency. - Weblink icons on the [Tool Paths] tab that are associated with multiple programs now open a dropdown menu to select the webpage to desired program. This allows selecting between OptiPNG/OxiPNG and Waifu2x-Caffe/Waifu2x-CPP. - Reversed the order of the [+] and [-] text zoom buttons on the [Help] menu to align with the keyboard positions. - Removed the warning text when checking [in-place] when using the option [Create Material Maps With Ishiiruka Tool]. - Fix validating DDS images. I'm not sure if it was broken last version or in v45.0 betas, but it works now. - Fix an issue where every other mipmap could be inverted when creating PNG mipmap textures and flipping/swizzling. - Fix the long standing issue where converting textures using TexConv can cause the image to come out [darker]. - Fix automatically setting the Temp Folder to [AppData\Temp] if the current path set in the script is invalid. - Fix exporting a phyre engine image as PNG in the [Basic Image Viewer] (Trails of Cold Steel / FFX/FFX2 Remaster). - Fix the triforce button on the [Split Textures] option to reset the toggleable help text when clicked. ----------------------------------------------------------------------------------------------------------------------- v44.0 - Drop support for importing options from almost all versions of CTT-PS below v43.0. This had to be done because of the change from apostrophes to quotes for strings. Paths with apostrophes in their name would not store correctly. - Support the more up-to-date branch of waifu2x-cpp by DeadSix27: https://github.com/DeadSix27/waifu2x-converter-cpp - Increase the range for waifu2x-cpp noise to 3 (from 2), and allow setting [0] for both caffe and cpp. - Finish adding support for converting icon files (.ico) to PNG format using [Convert] while in [Expert Mode]. The functionality is pretty basic, it's just meant to quickly create a PNG image (or images) from an icon file. - Remove stupid [sleeps] when starting up, not sure what I was thinking. Booting the script should now be faster. - Fix the long standing issue where converting BC7 to PNG using TexConv caused the image to come out [brighter]. - Fix enabling the [Process Selected [!]] buttons when adding ImageMagick to the script for the first time. - Fix Process Selected from counting up invalid texures (textures without [tex1") while in Dolphin Mode. Dragging and dropping a non-Dolphin image would fail, and cause future generated previews to fail when adding Dolphin images. - Fix a bug that allowed texture [Status] to be overwritten in the [Texture List]. Many of the more relevant status messages were hidden due to this bug, so in most cases when textures failed, it was impossible to know why. ----------------------------------------------------------------------------------------------------------------------- v43.2 - Add support for processing icon files (.ico) when in [Expert Mode]. This is very untested and was meant for the next major release version, but a few bugs popped up that demanded a quick fix and icon support was already in there. - Fix Waifu2x-CPP. I was using the command line [-noise_level] which works for caffe, but cpp requires [--noise_level]. - Fix the script overwriting tool variables when starting if the CTT-PS Programs folder is available. For example, if waifu2x-caffe and waifu2x-cpp are found, it would choose [caffe] on start up even if [cpp] was manually chosen. - Fix adjusting the dialog size when pressing the [?] button on the [Combine Textures: Zelda Options] menu. ----------------------------------------------------------------------------------------------------------------------- v43.1 - My webhost was randomly shut down, so I uploaded to a new host. Update website in [About] page to the new address. - Renaming textures on the combine textures grid now swaps names with a texture if an existing texture name is used. - In Combine Multiple Textures, vastly increase the speed textures will be auto-arranged when adding to the grid. - Add an option to the combine textures zelda options to allow selecting the [top-left] texture. This is useful for Super Mario 64 backgrounds which also have overlapping pixels but wrap around on the x-axis (there is no top-left). - If auto-arrange when adding textures to the grid has multiple matches, allow selecting which match to use. - Update the tooltips and the help entry for [PNG Alpha Pixel Manipulation]. Descriptions have [to the point] info. ----------------------------------------------------------------------------------------------------------------------- v43.0 - Holding shift, control, or alt when clicking on text boxes (Texture Path, Output Path, etc.) have their values automatically cleared. A preference has been added which can be disabled to always enable this behavior. - Unified the [Combine/Split] operations. Values are shared between them, and loading a CTT file loads it for both. - Overhauled the [Combine Textures] GUI (the grid array). Buttons have been made flatter, the index is now shown, button size is now configurable, textures can be selected and moved around, along with other configuration options. - The (.ctt) file created with [Combine Multiple Textures] can now be reloaded into [Combine] to reload all textures and fill out the grid array if it's been built before. The (.ctt) file also holds more information than before. - The Grid Array can now go as high as 40 columns, 40 rows for an insane 1600 segments (do not do this). - It is now possible to combine and split textures while simulating [pixel overlap]. For example, Zelda OoT skyboxes have a single row/column of pixels that overlap between textures. New settings were added to automate this overlap. - Also added the ability to remove garbage pixels when combining, and add back garbage pixels when splitting. - In the Combine Multiple Textures operation, the file extension is no longer used on the [Output Name]. Also allow a bunch of characters in the name that were not previously compatible: . _ , ! ( ) { } + = ` , @ $ # % - When using the combine textures GUI, an option has been added to attempt to auto-arrange Zelda: OoT skybox (or other box type textures). This only works on tiles that have duplicate pixels along the edges (32 textures 64x32 for OoT). All 32 textures must be dropped onto a button at once, and the option must be enabled (triforce button menu). - Fix a very rare bug where the script could delete itself when saving if the PS console was visible and closed. - Fix an issue with the [Tools Master Path] that could prevent [Process Selected] menu from functioning. - Fix several stored options (mostly booleans) not importing correctly when using [Import Stored Options]. - Fix grabbing ImageMagick, Python, and 7-zip from the registry if the paths are set but invalid. - Fix storing settings that could break loading the script by replacing apostrophes (') with quotes ("). - Fix updating ESRGAN and SFTGAN path textboxes on the [Tool Paths] menu when importing stored options. ----------------------------------------------------------------------------------------------------------------------- v42.0 - Add the ability to load a global [Programs] folder that contains almost all programs the script uses. This can be downloaded from the CTT-PS forum post on the Dolphin emulator forums in the [Custom Textures] section. - Remove ImageMagick's ability to create RGBA and ARGB DDS textures. Long ago I threw a few test cases at it and added a workaround, but lately all images are corrupt. Creating RGBA and ARGB DDS textures now requires TexConv. - Clear all default paths for the external tools. This should make it easier to determine what tools are missing. - Slightly increased the horizontal resolution of the [Options] menu so the visible paths fit more neatly. - When in [ToCS Mode], add back support for thesupersonic16's PKG Tool for those who have issues with Sewer56's tool. - Also add an error message when extracting/packing PKG files and the PKG did not successfully extract/pack. - Default the [ToCS Mode] options to always override the [Texture Path] and instead use the output folders. - Automatically repair DDS textures that have the mipmap flag set higher than 1, but don't actually have mipmaps. - Rewrite even more tooltips. Last update nailed about 3/4 of them, and this update I cranked out the last 1/4. - Replace the [Donate] tab with an [About] tab. The shameless donation section is still available for those feeling generous, and I also added a section with some information about the tool. There is now also a [Special Thanks" section that includes anyone who has influenced the development of this script in even the smallest way. - Fix ESRGAN/SFTGAN potentially not working for some users. Using [Invoke-Expression] to use -ErrorVariable was not working as intended. I discovered referencing Error[0] is not only just as, if not more effective, it's cleaner too! - Fix several bugs when converting ToCS phyre images to PNG. Another case of I'm not sure how it was working at all. - Fix ToCS Mode [Create Phyre Textures From PNG/Phyre] to update the texture list when textures are processed. - Fix loading the correct tooltips for the [DDS Format] depending on the CTT-PS Mode set (Dolphin/Expert/ToCS). - Fix not adding *Search Flags* to the fallback compression, which could make it so there is no fallback compression. ----------------------------------------------------------------------------------------------------------------------- v41.0 - It is now possible to [Import Stored Options] by dropping an old CTT-PS version onto the [Options] button. - Reverse the ordering of the [Preferences] tab and the [Exclusions] tab on the Options menu. - Renamed several of the Operations within [PNG Alpha Pixel Manipulation] to better describe what they do. - Add a new operation to PNG Alpha Pixel Manipulation to remove invisible white pixels found within a texture. - Add a preference to disable directory recursion of the [Texture Path] when running any operation. - Add tooltip for the [Names/Phrases] section of the [Exclusions] tab found in the Options menu. - The [Process Selected] menu has received an overhaul. Several options have been added and elements moved around. - Add a checkbox in [Process Selected] to disable generating previews when adding textures (speeds up adding). - Add the ability to overwrite textures in-place when using [Process Selected], and/or keep the original file. - Add a [Create Preview] button to the [Add Watermark] operation. Pressing it will generate a preview in a small window on the UI. This tiny window is useless on its own, but can be clicked to open a larger preview window. - Add [Run Custom Code] button to Options [Debug] menu. This should not ever be needed by users. This lets me run PowerShell code while the GUI is active. I can use it to test features or help me modify the GUI in real time. - Add a method to remove any empty folders found from the [Output Path] after running any operation. I have no idea if someone would prefer that this didn't happen, so an option to disable this feature was added to [Preferences]. - Replace the [Change Output Folder] button in [Process Selected] to a checkbox, button, and textbox. - Fix [Expert Mode] and [ToCS Mode] to have the proper Texture List headers when loading the script in these modes. - Fix potential issues when using the [In-Place] option when manipulating alpha in PNG textures. - Fix [Basic Image Viewer] PS console error when canceling selecting an image using a button click. - Fix [Process Selected] to properly generate previews for DDS images when dropping a folder full of DDS images. - Rewrite and/or reformat many of the tooltips for Operation specific options to have less horizontal width. - Updated the [Help] dialog with more detailed descriptions of all the new features. ----------------------------------------------------------------------------------------------------------------------- v40.1 - Rewrite/refactor the upscale filter code. This should hopefully fix a ton of bugs that were reported + ones I found. - Fix a desync that happens when running the xBRZ upscaling filter that caused the image to fail to be created. ----------------------------------------------------------------------------------------------------------------------- v40.0 Main Changes: - Resource Pack [ZIP] files can now be compressed using the checkbox on the Resource Pack Manager. - Add a new [Mipmap Option] to completely disable mipmap generation. This could already be done, but this is easier. - Add support for ESRGAN and STFGAN upscaling filters. These require Python v3.6+ and Nvidia CUDA. - Add a tab to Options named [Exclusions]. Here options can be found to disable processing textures. - Add a tab to Options named [Misc]. Here buttons to all the [Additional Options] from various operations can be found. - Add Auto-Install section for ESRGAN and SFTGAN in the Options dialog on the [Misc] tab. - Create path links for Python, ESRGAN, and STFGAN on the [Tool Paths] menu. - The [Seamless Method] when applying upscaling filters to textures once again checks images for transparency rather than an alpha channel. It also uses a faster method using texture segments rather than tiling the image 9 times. The default state is now [Disabled] since the seamless method can introduce noise along the edges of a texture. - Add back the Web Link icons to the [Tool Paths] menu with a new look. Disable clicking on title to open the link. - Updated the much neglected [Help Menu] with all the new stuff from the past few versions. - Also add two new icons to the Help Menu, a label for the zoom features, and a new option to adjust the list size. - Implement new methods for grabbing ImageMagick, 7-Zip, and now Python from the registry. The variables for these options in the script's header should now just hold a blank value ('') to trigger these checks. - All images can now be converted to JPG. Previously I blocked images that had an alpha channel). GUI Changes: - Add [Open Folder] buttons to the Texture and Output Paths, rather than click the groupbox header. - Various appearance changes to the Options menu. As mentioned above, a few new tabs have been added. - The [Upscale Factor as Target] option in [Apply Upscaling Filter to All Textures] is now hidden in [Expert Mode]. - Change the [Quick Help] button to match the size of the [Operation] dropdown menu. - Show slightly different properties on the [Texture List] depending on the selected [CTT-PS Mode]. While ToCS Mode had its own properties for awhile, Expert Mode did not, and showed useless data such as [Old Dimensions]. - Clean up the code for importing and storing options. This was left in kind of a mess since the rewrite. - Add totals for some operations to the Texture List after all textures are processed. For example, when optimizing with OptiPNG, display the total storage recovered. Or when removing alpha channels, display the total removed. Bug Fixes: - Fix missing messages when selecting the [Texture Path] or [Output Path] via the [...] buttons. - Fix importing boolean values into the script. All other variable types seemed to be working. - Fix Texture/Output Path button positions when switching between [Window] and [Docked] Texture List modes. - Fix resource pack database to not be copied into generated packs if CTT-PS is the root folder. - Fix tooltip issues with Ishiiruka Tool and OptiPNG (found on the Tool Paths menu). - Fix other dialogs from being accessed from the Options dialog when opening it with the [Options] button. - Fix [Basic Image Viewer] falling behind the main window when opening it a second time in a single run. - Fix [DDS Fallback] and [Flag Removal] to not disable when switching CTT-PS Modes and DDS Format is *Search Flags*. ----------------------------------------------------------------------------------------------------------------------- v39.5 - Revert back to using 7-Zip when creating resource packs. It seems .NET Framework compresses no matter what. - Unfortunately this means that the texture list will once again not populate as textures are being zipped. ----------------------------------------------------------------------------------------------------------------------- v39.4 - When creating/updating resource packs, populate the texture list with files as they are zipped. - Changing the GameID on the Resource Pack Manager will now update the actual GameID folder when in [Update] mode. - Moved the Basic Image Viewer to the bottom of the list, just above the Resource Pack Manger. - Fix [Create a Resource Pack] to actually add the textures to the zip file (epic fail). - Fix resource pack option [Only Create Manifest.json] to show the output path instead of the texture path. - Fix dragging and dropping an output path onto the resource pack manager output path. - Fix a few of the operation option headers descriptions in [ToCS Mode]. ----------------------------------------------------------------------------------------------------------------------- v39.3 - Removed the 7-Zip requirement to create resource packs. ZIP files are now created using .NET Framework. - All zip operations are now threaded so the dialog does not freeze up when archiving or extracting. - Add a new operation to the Resource Pack menu that allows updating an existing resource pack. - Resource Packs can now be stored in a database file and selected from a dropdown menu on the manager. ----------------------------------------------------------------------------------------------------------------------- v39.2 - Add an option to the Resource Pack GUI to import a resource pack [zip] or [manifest.json] file. - When adding images to the [Basic Image Viewer], modify the file select menu to allow selecting all file types. - Fix disabling the main Options button and the Texture/Output path on the Resource Pack dialog when creating. - Fix various options saving the [last accessed path] when selecting external files. ----------------------------------------------------------------------------------------------------------------------- v39.1 - Hopefully fix all issues dealing with the temporary path. - Reinsert missing functions for overriding the master input and output path. - Prevent adding non-Dolphin textures to the [Process Selected] menu while in Dolphin Mode. ----------------------------------------------------------------------------------------------------------------------- v39.0 - Massive refactor. Eliminated all the scattered boot code that runs when the script is first launched. Everything is now in functions and ran from an [Initialization] block. I expect new and interesting bugs to pop up. - Removed support for Nvidia Texture Tools. TexConv + Compressonator together makes it have no practical use. - Revamped the default GUI to have most options contained within in a single window (docked mode untouched). - Change the names of the Texture List modes. Always Visible is now [Window] and Hide When Idle is now [Hidden]. - The options window, now shared across docked and undocked (previously only displayed in docked mode), is no longer a child window to the main window. This means that it does not need to be closed before accessing other windows. - Move Paths, Preferences, Restore Defaults, and Imported Stored Options to the [Options] window. - Add all programs to the list on the [Tool Paths] window that were missing (7-Zip, ToCS PKG Tool). - Add preference to minimize all visible dialog windows when minimizing any dialog window. - Add [Debug] tab to options menu that exposes the hidden options of this script. This is something I've been meaning to do for awhile (especially for my own convenience). Because they can be dangerous, a warning was put in place. - Remove the debug option that toggles the double buffer fix for texture list flicker (it's now always on). - Redesign the GUI for creating Resource Packs. It is now wider vs. taller, and Input/Output paths have been added. - Prevent illegal characters from being entered into the resource pack ID and zip name. - Reinstate a bunch of old code for the PowerShell console (center it, give it an icon, set the window size). - Fix some window layering issues when toggling the GUI [Top-Most Window] preference. - Fix [Export as PNG] button on the Basic Image Viewer if exporting a non-Dolphin texture in [Dolphin Mode]. - Fix double buffering when VisualStyles are disabled. This once again allows [Classic Windows] look to be an option. - Fix ToCS Mode operation [Create Phyre Textures from PNG/Phyre] option [File Extension] to properly save the value. - Fix typo in default path to Ishiiruka Tool (TexturEncoder.exe fixed to TextureEncoder.exe). - Fix toggling [Disable GPU] on the [Extra Options] menu when toggling it on the waifu2x menu when using Waifu2x-CPP. - Fix [Save options on close] option to not force saving the Texture and Output paths at random. ----------------------------------------------------------------------------------------------------------------------- v38.0 - Fix a bug with mipmap levels being flipped incorrectly when certain mipmap options were toggled on along with the Flip PNG Result option. This also affected the Basic Image Viewer when decoding ToCS phyre images. - Hide the Process Selected button [!] for operations that do not benefit from it. - Launching the [Basic Image Viewer] no longer hides other CTT-PS windows and can be used while setting up some of the other options of the script. The viewer is not threaded, so loading a texture will still freeze the window. - Disable the minimize buttons when running any operation. Sometimes the main dialog and texture list dialog windows refuse to maximize when an operation is in progress. This is to hopefully prevent that annoyance. - Added a help topic for Dolphin Resource Packs (although I doubt anyone will need the help, it's there just in case). - Make the [Help] dialog 100 pixels wider by default. It can still be squished and stretched. ----------------------------------------------------------------------------------------------------------------------- v37.0 - Add a feature to generate Dolphin Resource Packs. This can be found at the bottom of the [Operations] list while in Dolphin Mode. Creating a resource pack requires a valid installation to 7-Zip. ----------------------------------------------------------------------------------------------------------------------- v36.3 - Hopefully fix all issues when using Waifu2x-Caffe to upscale textures. - Update many of the [ToCS Mode] options and fix several issues. This was needed for my latest ToCS texture packs. ----------------------------------------------------------------------------------------------------------------------- v36.2 - Fix generating DDS textures. The pixel array was off by one causing the texture to become corrupt. ----------------------------------------------------------------------------------------------------------------------- v36.1 - Fix a serious issue where converting large textures to DDS could cause PowerShell to consume several GB of RAM. - Fix updating the texture lists in the [Basic Image Viewer] and [Process Selected] dialogs. When using the arrow buttons to navigate the list, the selected item on the texture list is now updated to match the current index. - Fix the clear button on [Combine Multiple Textures]. I think I broke it when doing a clean-up in v36.0. - Fix [Calculate Textures VRAM Requirement] to reset the default message displayed when an invalid path is entered. - If a [~bg.png] file is tossed into the script's directory for a background image, don't copy it when converting. ----------------------------------------------------------------------------------------------------------------------- v36.0 - Drag and Dropping a folder onto the [Process Selected] window will now keep the folder structure when processing. - PNG Alpha Pixel Manipulation will now also modify alpha pixels for all mipmaps included with the texture. - Force a [safe] Temporary Folder name when starting the script (it must contain [CTT-PS_Temp"). If it's been edited in the script's header, users could force an [unsafe] value for it, which could lead to destroying personal files. - Fix setting the upscale factor for xBRZ. I was trying to use an integer as a string and failed to convert it. - Fix a race condition (I think) when applying upscale filters to textures using any filter or options. - Fix hiding waifu2x options button when switching to xBRZ from waifu2x (other options had no issue). - Fix switching and updating the texture list mode when options are imported or restored from defaults. - Fix importing the [Temporary Folder] from any version of this script. If the imported temporary folder matches the default, if it set to the default, or if it is invalid, the method to grab the folder is rewritten to the header. - Fix several issues with the operations in [ToCS Mode] (which I might be needing again soon). - Fix the location of the texture list operation panel. It was off by 5 pixels when launching in [Always Visible]. - Fix the debug option [DisableDoubleBuffer] for what it's worth. Somehow the toggle was deleted and it was always on. ----------------------------------------------------------------------------------------------------------------------- v35.0 - Add a new CTT-PS option called [Texture List], which can hide the list or dock it into the main window. - [Process Selected] dialog can now be accessed via a [!] button that is found to the right of the [Start] button. It should be noted that holding [Control] while pressing [Start] no longer brings up this menu for obvious reasons. - Update the Process Selected dialog to show texture information and a list that shows all images in the stack. - Allow adding a custom background image for a docked texture list. Simply put a [~bg.png] file in the script folder. - The log file will now only display enabled options if they are used in the selected operation. - Debug variable [DialogUpdateRate] now also affects the rate of the pause loop since actions take place when paused. - All tooltips appear 25% faster than before, while some crucial ones appear even faster than that. - Various improvements to the log file. I could explain them all, but just assume that it's better now. - Fix [Process Selected] to allow overriding the [Output Path]. It was currently not working and using the default. - Fix issues with operations that override the [Texture Path]. They could often fail restoring the original path. - Fix a few more issues with importing options with legacy values (meaning, variables that now use different values). ----------------------------------------------------------------------------------------------------------------------- v34.5 - Update the [DDS Tool] and [DDS Format] lists if the tool paths are valid when importing stored options. - Once again support changing the [TempFolder], and allow importing the TempFolder from older versions of CTT-PS. - Fix [Process Selected] left/right buttons, and properly clear the texture array when the window is closed. - Fix all remaining bugs with [Import Stored Options]. ImageMagick path can now be changed successfully. - Fix adding the [Add Tool..] option to the DDS Tool list when not all programs are found. - Fix not adding the BC7 format (and all the other DDS formats in Expert Mode) when TexConv isn't found. ----------------------------------------------------------------------------------------------------------------------- v34.4 - Fix importing ImageMagick path. For real this time... ----------------------------------------------------------------------------------------------------------------------- v34.3 - Make sure Importing Stored Options works on every old version of CTT-PS. ----------------------------------------------------------------------------------------------------------------------- v34.2 - Fix Rescale Textures not including the label of the format on the output folder. - Redesign the way options are imported into the script and the way they are stored when the script is closed. - The [Quick Help] button no longer closes the [Help Window] if it is already open when pressed. - If ImageMagick is not found, disable both start buttons. They can be enabled by linking the ImageMagick path. - Fix selecting an Operation after changing the CTT-PS Mode. It could lose the index and the options not show up. ----------------------------------------------------------------------------------------------------------------------- v34.1 - Fix waifu2x [Conversion Mode] from defaulting to [Noise_Scale] which has been replaced with [Both]. This caused the selected option to show up blank on the waifu2x menu. Also fixed [Restore Defaults] from setting the bad value. - Make waifu2x maximum noise reduction 3 when no waifu2x app is selected. Fixes an issue with Import Stored Options. ----------------------------------------------------------------------------------------------------------------------- v34.0 - Drop support for ImageMagick v6 and PowerShell v2. I apologize if this causes inconvenience, but going forward ImageMagick v7 is required and PowerShell v3 is the minimum working version. Both can be easily updated though. - All Standard and Advanced options have been merged into a single list called [Operations]. The selection buttons have been removed, and the [Quick Help] button is now shown through a mouse over event (and can be disabled). - The PowerShell console has been replaced with a fancy new texture list GUI that allows more control when textures are being processed. The console still appears for a brief moment on load, but it is no longer possible to use it to display progression. It shouldn't be missed, the GUI window does everything the console could do and more. - The xBRZ upscaling filter can now be set to 16x like all other filters (old max was 6x). This is accomplished by applying the 6x filter, followed by a 2x or 3x filter to that result, and finally the image is rescaled. - Calculate Textures VRAM Requirement now uses the [Texture Path]. A custom path can still be applied. - The [Basic Image Viewer] has been completely recoded but will still function the same. The properties window will now expand when the data exceeds the width, and clearing the viewer no longer completely resets the window. - Add an [Export PNG] button to the Basic Image Viewer. This will allow exporting the currently loaded image as a PNG file. This can be useful if viewing several BC7 or ARGB8 textures and the original PNGs no longer exist. - Selecting a [CTT] file will now try to pick the texture from the CTT file's location, rather than the stored path. - Added a new Advanced Option [PNG Alpha Pixel Manipulation]. This provides several different operations to modify alpha pixels found in textures. Some textures use alpha in odd ways to create different in-game effects. - Allow dropping an older CTT-PS version onto the [Import Stored Options], rather than manually search for it. - The Advanced Option [Extract Internal DDS Mipmaps] will now extract to the output path rather than overwrite the textures directly. An [In-Place] option has been added to restore the old behavior of modifying textures directly. - Add a [Clear] button to the [Combine Multiple Textures] texture selection dialog that removes all selected textures. - Pop-up GUI windows now have a green icon instead of reusing the blue icon used on the main dialog window. - Fix the [Manual Rescale] option to not hide texture details in the console when other modes are being used. - Fix a bug affecting texture header validation. All [tex1] textures would pass even if they were corrupt or unknown. - Updated and added several topics to the [Help] menu. It has been out of date for quite some time. Also replaced every instance of [dynamic] mipmap with [arbitrary] mipmap, and removed options that no longer exist. ----------------------------------------------------------------------------------------------------------------------- v33.0 - If the output path exceeds 260 characters when creating textures, alert the user why the texture was not created. - The option [Scan Dolphin Textures For Issues] will now automatically remove any spaces found in a texture name. - Increase Upscale Factor maximum limit to 16x when applying upscale filters to textures. xBRZ still has a max 6x. - Improvements to the interface for the [Split Combined Multi-Texture] option. Options are now arranged in the order of steps users should take if they are loading a [.ctt] file or blindly selecting an image to split. - When splitting textures, allow dragging and dropping a [.ctt] file onto the button or a texture onto the text bar. - Rename Texture Options to [DDS Texture Options] because all options found here only affect DDS textures. - Add a status message to the log when skipping textures with the Extra Option [Skip Texture if Output Exists]. - Fix texture hashes triggering false flags when [Search Flags] is used when creating DDS textures. A texture hash can start with [_bc6] for example, and force the script to create the texture with BC6 compression. - Fix the [Process Selected] option (hold Control when pressing Start). It has been completely broken for some time. - Fix a bug that could add extra overhead when converting certain DDS formats to PNG when using Compressonator. ----------------------------------------------------------------------------------------------------------------------- v32.0 - Add a new option when applying upscaling filters named [Upscale Factor as Target]. This option only works on Dolphin textures. What this does is allow upscaling an image to a specific upscale factor relative to the original texture dimensions, exactly how [Rescale Textures With New Scaling Factor] works. The resulting upscale factor of textures will always equal the Upscale Factor in this mode. So a 2x, 4x, 5x, or 7x texture will all be resized to 8x. - Increase the texture upscale size limit to 16384x16384 for a maximum of 32768x32768 (2x upscale). - Move Waifu2x options to their own window. This is accessible via a button when selecting waifu2x. - Fix applying upscaling filters to grayscale images once and for all. The result should never lose transparency. - Fix the script loading the last selected option when it was previously closed. For some reason when adding new modes I started to encounter various GUI bugs. I'm still not sure what is going on, but I have a work-around in place. ----------------------------------------------------------------------------------------------------------------------- v31.3 - Fix an error message that pops up briefly when starting the script. - Disable [Debug] mode, I accidentally had it enabled by default. - Add a debug option to always add BC7 to the selection lists. ----------------------------------------------------------------------------------------------------------------------- v31.2 - Fix textures sometimes being flipped when they shouldn't have been when converting in some situations. - Add an [Extra Option] to allow selecting the preferred program to convert complex DDS formats to PNG. ----------------------------------------------------------------------------------------------------------------------- v31.1 - Fix the requirements for adding certain compression types to the list, and fix BC7 not showing up in Dolphin Mode. ----------------------------------------------------------------------------------------------------------------------- v31.0 - Fix a long standing bug where DDS textures were not regenerated if the texture already exists in the output path. - Add support for creating L8, A8, and LA8 while in Expert Mode. - Add support for converting L8, A8, LA8, and RGB8 textures to other formats. - Fix hiding Dolphin specific options if the script is loaded in Expert Mode. - Fix generating uncompressed DDS mipmaps with ImageMagick. It fails to pad the final mipmap with at least 4 bytes if the image did not have transparency. In this situation, I add 1 extra byte with the value FF (meaning fully opaque). - Add [ToCS Mode] which allows converting and working with phyre textures from Trails of Cold Steel I and II. It is unfortunate that this did not really pay itself off. Many textures with increased resolution are cut off in-game and do not scale down to fit the area the original resolution. While it has it's uses, it is mostly pointless. ----------------------------------------------------------------------------------------------------------------------- v30.0 - Removed [Allow All Images] and replaced it with [CTT-PS Mode]. Currently there are only two modes: [Dolphin Mode] and [Expert Mode], which works similar to how Allow All Images did (Expert would be if it was toggled to on). This allows me to expand what the tool is capable of in the future, while still being somewhat simple for Dolphin packs. - All DDS compression modes have been named to the DX10 BC (block compression) naming scheme. BC1 - DXT1, BC3 - DXT5, etc. ARGB32 was also renamed to ARGB8, which seems to be more widely recognized (but means the same thing). - Added a bunch of new DDS compression formats in Expert Mode: BC2, BC4, BC5, BC6, and uncompressed RGBA8. - DX10 header support. When the script finds a DX10 header, it is no longer converted to a DX9 header automatically. - It is now possible to force textures to be generated with the DX10 header in expert mode. This is not suggested for uncompressed textures in Dolphin, as they do not seem to work. ARGB8 for example, does not load with a DX10 header. - The script now writes all DDS headers so they remain consistent with every tool and follow Microsoft's standard. - Add a new set of options when converting or rescaling textures called [Extra Options]. This includes options that allow skip creating textures if the output exists, flipping the texture, and Disable GPU Acceleration was moved here. When any of these options are enabled, a red light will display to remind that these options are enabled. - Do not count PNG mipmaps for non-Dolphin textures on the title bar if the images contain the [_mip] flag. - Show the Direct-X header type of an image when loaded into the [Basic Image Viewer] in the Format section. - Added a new [_mm#] flag to force the number of mipmaps for a specific texture. For example, a texture with the name [TexName_mm3.png] will generate 3 mipmaps for that texture. If custom mipmaps are supplied, they should NOT contain the flag, mipmap 1 should be named [TexName_mip1.png] for example. The flag does not work on folders. When textures are converted to PNG, the flag is always removed. When converting to DDS, it respects the [Flag Removal] setting. - Increase the number of mipmaps that can be forced with [Max MipMap Levels] to 15 (from 9), and add a fail safe. ----------------------------------------------------------------------------------------------------------------------- v29.4 - Display the full version of ImageMagick on the title bar when the script is first loaded. - Fix upscaling filter seamless method to preserve transparency when dealing with some grayscale images. - Remove [Lancos] upscaling filter. IM renamed the option, but rather than fix it I removed it. ----------------------------------------------------------------------------------------------------------------------- v29.3 - Fix the rare situation of finding false postives when searching for alpha channels during texture initialization. - When removing alpha channels from textures, also search for mipmap levels and remove it from them too if found. ----------------------------------------------------------------------------------------------------------------------- v29.2 - A new advanced option is available called [Add/Remove Arbitrary Mipmap Suffix]. This searches for Dolphin mipmap textures, and will automatically add or remove the [_arb] suffix from the texture name. This modifies textures directly within the [Texture Folder], so it should be used with caution. It is not an option that is suggested for entire texture packs, but rather a handful of WIP textures that were selected to quickly modify the suffix. ----------------------------------------------------------------------------------------------------------------------- v29.1 - Replace an [in] check when creating watermarks that doesn't work in PowerShell v2.0. - Update the description of [Remove Alpha Channel From Opaque Textures]. I forgot to remove the part about DDS images. ----------------------------------------------------------------------------------------------------------------------- v29.0 - Converting DDS BC7 textures to PNG now uses Compressonator, and falls back to TexConv if it's unavailable. - When the script reads a texture, only check PNG images for the existence of an alpha channel, rather than looping through every pixel attempting to find transparent pixels. For the majority of this script, this will not have any impact on resulting images, while offering an ENORMOUS speed up when working with PNG textures. The functionality of searching for transparent pixels is still used in [Remove Alpha Channel From Opaque Textures] which I highly suggest using at least once to flesh out false positives: meaning, alpha channels in textures that don't need them. - When generating missing mipmaps, use the previously generated mipmap level as a base for the next mipmap instead of the top level. The result is basically the same as before, but overall generation speed is greatly reduced. The previous level is only selected when the mipmap does not change, and will not interfere with any mipmap options. DDS will always the final available mipmap, so this method is only used for DDS when no mipmaps are provided. - Remove the [Fast Mipmaps] function from the script. From now on, it will only use my custom mipmap building method. With the optimizations above, custom mipmaps are nearly as fast as the [fast] method was. This is not the reason I removed it however, certain tools just don't have the control that I need. Compressonator does not generate levels down to 1x1, and Nvidia Tools does not allow specifying a number. My custom mipmap method of combining them gives me full control over the number of mipmap levels that get generated, and allows applying a sharpening filter. - Speed up error checking DDS textures by using the mipmap flag in the header rather than counting extracted mipmaps. - Omit the [_arb] suffix when creating watermarks on textures. It's just useless noise when creating short names. - Fix mipmaps not showing up in the [Basic Image Viewer] for DDS textures when [Force New Mipmaps] is enabled. - Update the [Basic Image Viewer] to also show the texture format. This is most useful for DDS BC7/ARGB32 textures. - Rename [Remove Invalid Mipmaps] to [Remove Invalid Mipmaps From Dolphin Textures], and only search [tex1] images. - Rework [Remove Alpha Channel From Opaque Textures] to only work on PNG images that have an alpha channel and contain transparent pixels. Before it only checked for transparency, and not the channel's existence so false positives were possible. It no longer works on DDS, it was originally designed for DXT1/DXT5 and before BC7 and ARGB32 support. - Fix [Hide Weblink Icons] from displaying an error message and messing up the Nvidia Tools icon when toggling. - More tooltip updates to better describe some things, basically useless filler for this changelog. ----------------------------------------------------------------------------------------------------------------------- v28.1 - Allow adjusting the quality of BC7 images that are created with Compressonator (thanks Techie Android). - Rename [User Defined] compression to [*Search Flags*] so it better describes what the option actually does. - When applying upscaling filters to textures, also upscale any mipmaps that are found with the texture. ----------------------------------------------------------------------------------------------------------------------- v28.0 - Remove multiple redundant alpha checks when working with PNG textures. This fixes a regression, I used to have two functions that got dimensions: one just got dimensions, the other much more info. I removed the dimensions version and replaced all instances with the other. This caused a major slowdown because of alpha checks, but is now fixed. - Improve the accuracy of calculating textures prefetched RAM / VRAM requirement (should now match Dolphin exactly). - The console window will now report the aspect ratio in its own category, rather than after the dimensions. - Also show the original dimensions and original aspect in parenthesis after the custom texture values. - Changes to the log file. Dimensions for original and custom texture are bundled into the same value in the form of custom dimensions (original dimensions). Aspect ratio now has its own field, and follows the same rule. - Do not show [original] texture values in console and log for non-Dolphin textures (dimensions, aspect, scale). - When using user defined DDS compression, alert the user that all flags are being removed from folders after all textures have been converted. Depending on the number of folders in the pack, this process can take some time. - Only run the function to remove flags when DDS is selected. Before it was always attempting to remove flags. - Drop support for the old [.nrm] material map. Ishiiruka has used the [.mat] suffix for some time now. - Tons of code clean-up, refactoring, and optimizations. As always, I expect new bugs to appear. ----------------------------------------------------------------------------------------------------------------------- v27.7 - Fix hiding the additional options for waifu2x when selecting the xBRZ filter when waifu2x is currently selected. ----------------------------------------------------------------------------------------------------------------------- v27.6 - Replace Nvidia DDS Utilities with Nvidia Texture Tools. It can encode BC7 DDS textures but it is very slow when using the CPU to create textures. I have not been able to get CUDA working yet which should speed things up. - Add option [Disable GPU Acceleration] when converting/rescaling textures. This can be useful for virtual machines. - Removed a long standing garbage work-around that I hope won't affect anything. At one point I found a few DXT1 DDS images that TexConv could not read. So I created a work-around to recreate the image with ImageMagick, but this also required running tests. This was done for every texture when using either Compressonator or TexConv, and ultimately slowed down the entire process of converting textures. Only time will tell if some other workaround will be needed. - Add reporting more enabled options in the log file header that have been added over time. ----------------------------------------------------------------------------------------------------------------------- v27.5 - Allow ImageMagick to be able to create ARGB32 textures. Apparently it can do this, and it can do it well. - If the selected DDS tool is no longer found when loading the script, instead default the tool to ImageMagick. - Fix a bug that adds an additional set of BC7 and ARGB32 options to [DDS Fallback] when adding TexConv to the script. ----------------------------------------------------------------------------------------------------------------------- v27.4 - Rewrote the flag removal code because it had some inherent flaws. When using [User Defined] compression, if a path contained multiple flags that were also folders, only the first flag folder would be properly removed. For example, the path [Folder\_ARGB32\SubFolder\_BC7\], the BC7 folder will not be removed, and the contents of the folder were not shifted back to [SubFolder]. The new code now handles any number of flags, although a max of 2 is suggested. ----------------------------------------------------------------------------------------------------------------------- v27.3 - When using TexConv to create ARGB32 textures, use B8G8R8A8 instead of R8G8B8A8 to match the D3D9 equivalent. This fixes a bug where blue=red and red=blue on some setups or Dolphin versions (potentially only Ishiiruka). ----------------------------------------------------------------------------------------------------------------------- v27.2 - Calculating textures VRAM requirement now only works on Dolphin textures unless [Allow All Images] is checked. - Also count the number of each file type (PNG, JPG, DDS) when calculating VRAM and display it at the end. - Update all download links to ImageMagick to use the new links offered on it's site. ----------------------------------------------------------------------------------------------------------------------- v27.1 - Add an option to automatically remove compression flags when using [User Defined] compression. ----------------------------------------------------------------------------------------------------------------------- v27.0 - A new Standard Option has been added named [Calculate Textures VRAM Requirement], which does just that. - Add a new DDS Compression type option: User Defined. This allows setting a flag in the texture path to force the compression used when creating DDS. The available flags are _DXTC (or _DXTN), _DXT5 (or _BC3), _BC7, or _ARGB32. For example, convert all textures to BC7 in [C:\Textures\Environment_BC7\] or [C:\Textures\_BC7\Environment]. The script will only look for and use these flags when DDS Compression is set to [User Defined]. - Renamed the [DDS Compression] option ARGB_8888 to [ARGB32] (aka: DXGI_FORMAT_R8G8B8A8_UNORM). - Allow adding a DDS program from the [DDS Creation Software] dropdown box by selecting [Add Tool...]. - Allow adding xBRZ or Waifu2x from the [Upscale Filter] dropdown box by selecting [Add Filter...]. - Setting the paths for Ishiiruka Tool and OptiPNG have also been added to the [Standard] options that use them. - List keyboard shorcuts for 'Pause' and 'Cancel' in the console window when processing textures with any option. - Rather than show the generic [Processing textures...] message, display the operation (ex: [Filtering textures..."). - When cancelling processing with the Escape key, the script will now ask to delete the partially generated folders. - Slightly increased the default size of the help dialog (the window that shows when pressing [Help] or [Quick Help"). - Fix [Rescale Factor] allowing 0.00 which causes division by 0 errors. Instead allow a minimum of [0.01]. - Fix creating mipmaps when applying an upscaling filter to DDS textures while simultaneously converting them to PNG. - Fix toggling [Hide Weblink Icons] check box. There was a bug causing the labels to be arranged incorrectly. - Fix the arrangement of the Weblink icons so that they open the page that matches the corresponding tool. - Fix importing the background color and path to Nvidia DDS Utilites when using the [Import Stored Options] button. - Fix adding DDS Utilities to the list if the path is updated after the tool has already been launched. - Updated various tooltips and rewrote many item descriptions in the built in [Help] document. ----------------------------------------------------------------------------------------------------------------------- v26.2 - Rename the option Force Internal DDS Mipmaps to [Force Create Mipmaps]. - Allow forcing mipmaps when creating non-Dolphin PNG textures when [Force Create Mipmaps] is checked. - Remove the [Seamless Crop %] option. Rather than making it configurable, it is always set to 75%. - Allow setting the output format when applying upscaling filters to textures. - Add compatibility for BC7 and uncompressed DDS textures when applying upscaling filters to textures. - Navigating textures and mipmaps in the [Basic Image Viewer] is now possible using the arrow keys. - Added a clear button to the image viewer that allows clearing all images that were added. - Fixed a typo in the [Quick Guide] in the help menu (a line break was needed). ----------------------------------------------------------------------------------------------------------------------- v26.1 - Fix [Rescale Textures With New Scaling Factor] to actually be able to properly work with decimals. - Creating textures as ARGB_8888 now requires a valid path to TexConv (rather than Compressonator). - Updated various tooltips to make the options they explain more clear. ----------------------------------------------------------------------------------------------------------------------- v26.0 - Add full support for uncompressed DDS textures. Viewing and converting to other formats requires TexConv. - DDS textures can now be created as uncompressed ARGB_8888. This requires a valid path to Compressonator. - Added a new mipmap option named [Max Mipmap Levels] which allows forcing the number of mipmaps generated. - Fix forcing the PNG color type when upscaling textures using Point, Cubic, or Lancoz filters. - Mipmaps can now be automatically handled for non-Dolphin textures when [Allow All Images] is enabled. To create a texture with custom mipmaps, simply supply the mipmap textures with the mip suffix (texture.png, texture_mip1.png, texture_mip2.png, etc). If the option [Force Internal DDS Mipmaps] is checked, it will ignore included mipmaps and generate new ones from the top level. - Allow navigating to the Texture and Output Paths by clicking on the groupbox header (if the paths exist). - The option Scan Textures for Issues has been renamed to [Scan Dolphin Textures For Issues]. - The option Rescale Textures at Fixed Integer has been renamed to [Rescale Textures With New Scaling Factor]. This option now allows rescaling images with a decimal, and I do not suggest doing this outside of special circumstances. I needed to downscale a PC texture pack, and setting something like [0.50] effectively allows downscaling it by a %. - The option [BC7 Texture Viewer] has been renamed to [Basic Image Viewer] since it actually supports multiple formats. ----------------------------------------------------------------------------------------------------------------------- v25.2 - Force DDS dimensions into the nearest multiple of four to avoid D3D11 Dolphin crashes. Example: 129x129 > 132x132. - Do not allow the tool to attempt to select DDS Utilities to create DDS textures when it isn't installed. - Hide the BC7 option unless a valid path to TexConv is found. This is because Compressonator fails at creating some textures (still not sure why), and TexConv is needed as a fallback path since it's the only other program for BC7. ----------------------------------------------------------------------------------------------------------------------- v25.1 - Fix setting the output path when converting/rescaling if a non-texture file was copied before a texture is created. - Added a work-around for Compressonator generating BC7 textures with bad headers, which Dolphin refuses to load. ----------------------------------------------------------------------------------------------------------------------- v25.0 Texture Generation: - Creating DDS textures with custom mipmaps and extracting internal mipmaps is now done with my own methods rather than relying on DDS Utilities. This removes DDS Utilties as a requirement to creating DDS textures. - Fully support all aspects of BC7 textures. All formats can be converted to BC7, and BC7 can be converted to almost all other formats. BC7 textures can be created with dynamic internal mipmaps (different images); they can also be extracted and are preserved when converting to other formats. While all my test cases (finally) passed, there still may be issues with some textures. I made a LOT of guesses based on experiments that just happened to work. - The [DDS Generating Program] now works more as a preferred option than actually relying on that program to do all the conversions. All other DDS programs will serve as a fallback to the one that was selected. I do suggest having multiple programs if using Compressonator as it randomly fails at creating some images. - DDS images containing a DX10 header that are compressed with DXT1, DXT3, or DXT5 have their headers converted to the older DX9 header (meaning the DX10 part of the header is stripped, and FourCC is set to the block compression type). This happens automatically whenever a DDS image with a DX10 header is read. The reason I do not support DX10 headers for these images directly is so they can be manipulated with tools that don't support it (like DDS Utilities). DX10 headers are supported for BC7 textures however, but only TexConv can manipulate them. - Also support processing DDS textures that are in DXT3 format. There really is never any reason to use this one, so I never supported it in the script. In theory, it should have no issues so there's no reason not to add support. - Allow BC7 textures to work with the [Process Selected] option (this was actually really easy to implement). - When converting or rescaling textures to DDS format, also show the selected block compression type on the folder. - Removed the workaround to fix Ishiiruka DDS color textures that have a missing material map. Instead the texture is now directly fixed. It was a bad flag (I think?) set in the header all along (bug in Ishiiruka Tool?). - Rewrote the entire texture generation logic (this took way too long). As always, please report any bugs! Changes: - Moved TexConv further up the list in the paths menu since it is now far more relevant than it was. - Replace the option [DDS Mipmap Type] with a new option called [External DDS Mipmaps]. Generating DDS internal mipmaps is now the default behavior of the script. External mipmaps can still be force generated by checking this option. - Report the amount of time it took to process the entire loop when running any option. - Removed the Advanced Option [Fix PNG Textures Potentially Broken by OptiPNG]. I think by now it's lost its use. - Added a [Default] color to the background colors. This defaults to [Black] on PS v2 and [DarkMagenta] on PS v3 and up. - Update various tooltips and help topics regarding BC7 textures. - New Advanced Option [BC7 Texture Viewer]. This does exactly what you might think it would do, and allows the viewing of BC7 images. Decoding images can be slow (they are converted to PNG so they can be viewed), and it is suggested to only use it to verify that BC7 images are being created correctly. Outside of that, it has little use. - Fixed several issues with GUI elements scaling badly when Windows DPI scaling is set to 125% size. PowerShell v2.0 Fixes (Windows 7) - Default the background color to [Black]. I never realized [DarkMagenta] was so awful in Powershell v2. - The GUI will now scale properly in all instances. This came at the cost that the bottom right corner will give the impression that all GUI windows can be resized, but the size of the windows are locked. - Fix detecting the [Spacebar] press to pause the script when it is actively performing an operation. - Fix the [Quick Help] button. Apparently I was using syntax that isn't supported until PowerShell v3. - Fix setting the PowerShell window icon. There was a space where there shouldn't have been, and v2 is picky. - Fix an error message that popped up when using the [Combine Multiple Textures] option. ----------------------------------------------------------------------------------------------------------------------- v24.1 - Fix an error that prevented the script from working in PowerShell v2. ----------------------------------------------------------------------------------------------------------------------- v24.0 - THIS IS AN EXPERIMENTAL FEATURE: Allow creating DDS textures with BC7 block compression. At the moment Dolphin does not even support this compression format, so I can not test it. There may be issues that I don't know about. BC7 requires using either Compressonator or TexConv as the texture generation tool. BC7 has higher quality than DXT5, but has the limitation that custom mipmaps cannot be used (at least with this tool). Hopefully this changes in the future. - DDS textures with DX10 headers are currently not supported. While they might work if they use DXT1/DXT5 compression, I prefer to create a proper implementation that could potentially support processing BC7 textures in the future. When attempting to process these textures, an error message is now displayed that says that it is in an unsupported format. - New option [Force Internal DDS Mipmaps] has been added to the Texture Options. This option becomes available when 'Allow All Images' is checked. When enabled, non-Dolphin images that are converted to DDS will have internal mipmaps generated for them. This makes the script useful for texture projects outside of Dolphin (such as PC texture packs). - Upscaling textures with xBRZ can be annoying if many textures have an incorrect sRGB profile. A pop-up appears that pauses the script until [OK] is pressed. Added a background process that watches for this window and automatically presses Enter on it when running ScalerTest. This does not always work because Windows does not allow forcing tasks to the front (it just blinks on the taskbar). For the best result, close all active windows and only run the script. - Only display the DDS Creator tools that currently have a valid path set in the Paths menu. If the path to a tool is updated while the script is running, the tool will be added to the dropdown box without having to restart the script. - The PowerShell Console and Help Dialog now have custom icons that match the CTT-PS main window. - Move the toggle for enabling/disabling the log file to the [Preferences] section. - Created better tooltips for both Compressonator and TexConv in the [Configure Paths] menu. - Removed [Force DXT5] option. It has been replaced with the dropdown box to select the compression format. The new option allows the old behavior of DXT1/DXT5, DXT5 Only, or BC7 (which is not (yet?) used by Dolphin). - Removed the [Max Width/Height Upscale] options and internally use the largest possible selectable value of 32768. - Removed waifu2x-caffe model [UKBench]. It has not functioned for some time (maybe they dropped support?). - Fix a warning that appeared when optimizing textures with OptiPNG when the [Optimize In-Place] option is enabled. - Fix the (incorrect) message displayed when attempting to run the script and the ImageMagick install path isn't found. - Fix the position of the mipmap options. They needed a slight bump to the right by 2 pixels. - Fix a pause that happened that required a key press to continue when importing stored options. ----------------------------------------------------------------------------------------------------------------------- v23.2 - Allow paths with apostrophes for the Texture and Output paths. I think I blocked these for the wrong reason. The script defaults the Texture path to its current location. If the script is in a path with an apostrophe, it will not even load up. So as a fail safe, I probably mistakenly blocked the texture/output paths from having an apostrophe altogether. Once the script is loaded, apostrophes will no longer fail, so there is no reason to block them. - Add ImageMagick to the list of programs that can generate DDS textures. It is not suggested to use ImageMagick as it creates low quality DDS images. I mostly added it to run some tests with it, then decided to just leave it there. - Fix the appearance of the final message for options that display texture counts (repaired, optimized, etc.). ----------------------------------------------------------------------------------------------------------------------- v23.1 - Compressonator seems to randomly fail at some images, and I'm not sure why. Add a fallback to DDS Utilities if the image was not created, which will fallback to ImageMagick if for some reason that fails too. Before the script would only fallback if special conditions were met, now it will only fallback if the image fails to be created. - Only update the path to Compressonator on exit if the path was manually forced. This prevents the line that pulls the value from the registry from being overwritten if the user presses the [Restore Defaults] button. - Default the waifu2x model to the higher quality version of [anime style art]. I meant to do this before but forgot. ----------------------------------------------------------------------------------------------------------------------- v23.0 New Stuff: - Added support for two more DDS generating programs: AMD Compressonator and Microsoft DirecXTex TexConv. While DDS Utilities creates nice DXT5 textures, it creates lesser quality DXT1 textures. Compressonator creates higher quality textures overall, for both DXT1 and DXT5. TexConv creates worse quality textures than both programs, but is much faster than the other two. A dropdown box has been added to the options menu select which program to use. - Overhauled the [Options] menu and split it into 3 categories: Texture Options, Mipmap Options, and CTT-PS options. Added a button to the bottom of the options menu to configure the paths to tools and the temporary folder. - Calculate sharpening values instead of using fixed values when textures are resized or when mipmaps are created. This has the potential to create higher quality textures when they are rescaled and create higher quality mipmaps. - Missing lower mipmap levels are now generated from the lowest mipmap found in the provided mipmap chain, instead of always using the base texture. This preserves the intended mipmap effect if the pack provides dynamic mipmaps. - New Mipmap Option [Create Missing From Top Level]. This restores the old behavior of using the base texture to generate missing mipmap levels. This option is not suggested for general use, as this behavior was always wrong. - New Advanced Option [Extract DDS Internal Mipmaps]. This does exactly what it's title denotes and has little use. Extracted textures are created directly in the texture pack. This operation can not be undone, so make back ups! - Add an option to change the background color of the PowerShell console. There are seven colors available to choose from: DarkMagenta (Default), Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, and DarkGray. - Help dialog now has icons similar to CHM files. This should make it somewhat easier on the eyes. Changes: - Starting with Dolphin v5.0-3506, DDS internal mipmaps are now supported! Internal is now the default mipmap type, and External is still an option. The Both setting remains, but it's no longer suggested to create both types. - Remove mipmap options [Force New Mipmaps] and [DDS Mipmap Type] from the options they were found in. These options can now be found on the main Options menu in the [Mipmap Options] group, and affect all operations globally. - Remove [Material Format] from the Global Options. DDS color textures created with Ishiiruka Tool now directly work with Dolphin and no longer need converted. Dolphin is still not compatible with material maps however. - GUI text boxes that represent paths can now be manually edited. The path to the corresponding tool must succeed. - Rename Standard/Advanced [Description] button to [Quick Help] to better represent what the button actually does. - Switch the order of [Convert Textures to Another Format] and [Rescale Textures at Fixed Integer]. I've wanted to do this for a while, but didn't feel like putting in the time. It makes more sense to me that the option to convert textures comes before rescale since both options essentially [convert], and rescale offers even more options. - Change [Auto-Rename Output] options to check boxes, and default the text to the last folder found in [Texture Path]. Also allow spaces in the text box, and add a [-] button to the right of the text box that clears the current text. - Rename rescaling option Allowed Scaling to [Rescale Condition], and rename the All selection to [Always]. - Remove the [Existing] choice from the rescale textures at fixed integer [Rescale Format] menu. After giving it some thought, I believe that all textures in the same pack should be created with the the same image format. - Change [Seamless Crop %] to use integers instead of decimals to represent the percentage to crop before upscaling. - Change default value for Waifu2x-Caffe noise reduction to 2 (so it matches CPP and allows me to remove some checks). - Reworked GUI option for [Split Combined Multi-Texture]. Loading a CTT file will now make it impossible to alter other options while it is loaded. The same button to load a CTT File can also be used to release it. - Restructured the [Help] dialog and added in all the most recent changes and additions to the available options. Fixes: - Fix several issues with DDS mipmap generation. External mipmaps were created in multiples of four, but now mipmaps will match the dimensions of PNG/JPG (something like 3x3 is possible). Internal mipmaps were being created with the correct dimensions, but an extra 1x1 mipmap was generated if the texture has strange dimensions (like 704x704). - Fix broken logic when applying the seamless method using [All] when upscaling textures with alpha pixels. The short version is: the seamless method was not being applied to textures with alpha pixels even when set to [All]. - Fix a rare issue where generated Ishiiruka color textures could be created with the wrong dimensions. - Fix generating a watermark on Ishiiruka color textures that are smaller than 256 pixels in width. This was not in any way related to the issue that was fixed above (although it helped me to find that particular issue). - Fix Waifu2x model/OpenCL options from appearing on other upscaling filter menus when selecting the path to Waifu2x. - Fix reporting some stuff to the console and log when textures are skipped when optimizing with OptiPNG. - Fix [Combine Multiple Textures] to remember selected textures when changing the 'Standard' or 'Advanced' option. - Fix [Split Combined Multi-Texture] to remember all information when changing the 'Standard' or 'Advanced' option. - Fix [Process Selected] button to be able to choose DDS/JPG images, although I highly suggest drag and dropping. The reason is that .NET Framework Open File dialogs only allow selecting a single type of file at a time, and other files can only be selected by selecting the [type] from the drop down menu. This also happens in the waifu2x selection menu. - Fix GUI popping up for a split second when forcing a running script closed with [Alt+F4] or [Control+C]. - Fix the repair message for [Auto-Repair Dimensions] when using [Convert Textures to Another Format]. - Tons of code refactoring, tons of rewriting, tons of new stuff. I expect many new bugs to pop up from this! ----------------------------------------------------------------------------------------------------------------------- v22.2 - Fix adding images to the Process Selected menu (hold Control when pressing Start) and the Combine/Split options. I must have done something that I thought would work that I never tested. Obviously it didn't work and broke stuff. ----------------------------------------------------------------------------------------------------------------------- v22.1 - When applying upscaling filters with ImageMagick (Point/Cubic/Lancoz), force PNG output to 8bpp. ----------------------------------------------------------------------------------------------------------------------- v22.0 - If ImageMagick was not found when pressing [Start], display a warning dialog and do not start the loop. - Remove the [Word Wrap] option from watermarking textures. The name will now always be word wrapped. - Fix [Process Selected] to not also run on the generated previews when adding DDS textures. - Also fix the option to properly remove temporary DDS previews if the option was cancelled with the [X] button. - Display the icon used for CTT-PS on the Process Selected, Pause, and Yes/No dialogs. - Turn most [ERROR] messages into [Warning] messages since most of them were not technically an error. - When [Material Map Format] is set to Dolphin, and trying to convert a [_lum] color texture, show a Notice that says why the texture failed rather than a Powershell error. The 'failed to create' warning will still show. - Code: Various small optimizations, remove dead code, and rewrite most function calls to be more 'Powershelly'. ----------------------------------------------------------------------------------------------------------------------- v21.3 - When rescaling textures, fix scale output with an integer instead of a decimal when [Allowed Scaling] is changed. - Slightly change the log output of [Status] when optimizing textures with OptiPNG. - Catch pressing 'Control+C' and 'Alt+F4' when the loop is running and cleanly exit the Powershell console. - Allow pressing 'Space' to pause the main loop and show a small GUI window to allow resuming it. ----------------------------------------------------------------------------------------------------------------------- v21.2 - Fix changing the output format when rescaling or converting that I broke with the last fix. ----------------------------------------------------------------------------------------------------------------------- v21.1 - Fix changing the Material Map Format that's been broken since v13. How shameful I didn't catch this sooner. ----------------------------------------------------------------------------------------------------------------------- v21.0 - Added a few workarounds for dialogs when windows scaling is set to 125%. Setting to 150%+ will still look strange on some menus, which can look different depending on the operating system. All elements are now visible however. - Add [Force DDS DXT5] to the [Global Options] group on the Options panel. This forces DXT5 when creating DDS textures. - Remove redundant check an for alpha channel that further speeds up processing DDS textures (not so much for PNG). - Rename Disable Stored Options to [Enable Stored Options] and move it to the [CTT-PS Options] group. Obviously now that it has been renamed, it does the opposite of what it did before. This is because all CTT-PS options should have [enabled] as the default and all [Global Options] disabled as the default to avoid initial confusion. - Remove all references to [Script Mode] since it has been long destroyed. - Update the built-in help dialog with all recent changes and additions. - Code indentation is now 2 spaces rather than a tab. No I did not do this manually (for the most part). ----------------------------------------------------------------------------------------------------------------------- v20.1 - Revert all that crap for DPI settings. Fix the actual bug causing the tool to not scale properly. It will still have issues at 125% (which might be somewhat fixed later), but 150% and up should work properly. ----------------------------------------------------------------------------------------------------------------------- v20.0 - Add a terrible work-around for monitor DPI settings from 125%-200%. Any higher will not work at all. - Holding Control while pressing Start will now allow selecting individual textures to process. This small and simple menu allows dragging and dropping images or manually selecting them from a path. The currently selected option is used when processing textures, and the results will be generated in the output path in a [-SelectedTextures-] folder. The output path can be temporarily changed for this option only, and is set back to what it was when processing is done. - Even more code optimizations and refactoring which should bring a tiny bit more speed. - Fix generating a black texture using the watermark option when a material map is found but Ishiiruka tool was not. - Fix copying an Ishiiruka DDS color texture missing a material map as [corrupt] if it failed to be repaired. - Fix some issues when analysing DDS external lower mipmap levels. ----------------------------------------------------------------------------------------------------------------------- v19.0 - Enormous speed-up when analyzing PNG files. As the script became more complex, more uses of ImageMagick [identify" were needed to check texture attributes. Some of these attributes can be pulled from the header which is much faster. - Validate PNG/DDS textures by checking the first 8 bytes of the header rather than my previous mess. This will fail if the image has a corrupted header, which is what I intend. It will not catch all cases of image corruption however. - New methods for testing images for an alpha channel, and testing whether or not the image has transparency. - Tons of little changes that helped speed, that has no user impact, that I forgot to write down. ----------------------------------------------------------------------------------------------------------------------- v18.1 - Read PNG and DDS dimensions from the image headers rather than the convoluted mess I was using. - Fix texture count including textures that were not Dolphin textures when [Allow All Images] is disabled. ----------------------------------------------------------------------------------------------------------------------- v18.0 - Force output of PNG color type depending on input image. 0-Gray, 4-GrayA, 2-RGB, or 6-RGBA. This prevents textures from being output as (3-Indexed) which has the chance to not work in Dolphin for some reason. - When scanning textures for issues, and repair and/or copy is checked, log if the texture was repaired or copied. - When converting to PNG, also report the depth and color space the texture was converted to (Ex: 32-Bit RGBA). - When rescaling textures, show the converted format, color type (PNG), and compression (DDS) in the console and log. - When optimizing a texture with OptiPNG is auto-skipped because a channel is less than 8bpp, report the channel. - When fixing texures potentially broken by OptiPNG, skip Ishiiruka textures (textures with material maps). - PNG grayscale images with RGB color space will now be converted with grayscale color space (if possible). - Fix detection of alpha channel in grayscale textures. This was always being detected as [true]. - Add a new CTT-PS option [More Console Colors] which enables additional colored text in the PowerShell console. - Implement a new method for the check/repair for DDS Ishiiruka color textures that have a missing material map that happens during texture validation. The old method broke after implementing the new method for getting dimensions. - Only create the [CTT_Generated] folder if an option specifically outputs textures to that folder. ----------------------------------------------------------------------------------------------------------------------- v17.1 - Fix some textures coming out completely transparent when using [Repair Textures Potentially Broken By OptiPNG]. - Also fix the output of textures to not have an alpha channel if they do not contain any transparent pixels. ----------------------------------------------------------------------------------------------------------------------- v17.0 - Remove [Script Mode], meaning the old text based menus. The GUI is superior, and cleaned out 3K+ lines of code. - Remove the [GUI Enabled] option since there is now only a GUI. - Move the [Help] button to where the [Script Mode] button used to be. - Add a [Description] button to where the Help button used to be. This button opens the [Help] menu and automatically selects the topic that matches the currently selected Standard or Advanced Option. - Rework OptiPNG yet again. It appears indexed textures can have issues with Dolphin, so CTT-PS will not allow OptiPNG to run on indexed textures and it will not allow the results to become indexed. Also fix an issue where OptiPNG was NOT being blocked when the test for less than 8-bit depth failed on any color channel. I suggest testing your packs! - Rework OptiPNG Repair advanced option. It will now also convert indexed textures back into RGB. - Add the [Hide OK Textures] checkbox to all Advanced Options that make use of it. - New method for retrieving dimensions which works with DDS textures, which is much faster than ImageMagick. This provides a significant speed-up when working with DDS textures. If this fails, it falls back to the old methods. - Hide the console window when shutting down the script. In my Windows 7 VM, I noticed it took 6-10 seconds to update all options. This could be the VM being slow, or it's Windows 7 that is slow. Whatever, hide the Powershell console until options are properly updated and the script closes properly. This way the user won't force close the PS window. - Fix toggling the console window on/off when checking/unchecking the [Always Show Console] option. - Prevent all files included with CTT-PS from being copied when checking [Copy Non-Texture Files]. ----------------------------------------------------------------------------------------------------------------------- v16.0 - Counting textures before processing the main loop is over 300% faster than before (seriously, I benchmarked it). - When applying upscaling filters, force generating lower mipmap levels for mipmap (m) textures. Apparently this was already being done for DDS textures because of the way I created them, but not for PNG and JPG textures. - Updated the appearance of the header in the log file. The selected master option is now separate from sub-options. - Fix the label of Scale-Fix Threshold not toggling disabled status when checking [Attempt Repairs]. - Fix copying non-texture files that may contain [tex1] prefix. This has been an issue since this tools conception dating back to the batch versions. Some users may have PSD/XCF files they want copied into the generated pack. - Also allow copying batch scripts when [Copy Non-Texture Files] is selected. Not sure why I blocked it. - When scanning textures for issues, DDS Ishiiruka textures that include a material map that have missing internal or external mipmaps will no longer be detected as an issue if the Mipmap type is set to [External] or [Both]. - Increase default of Aspect-Fix Threshold to 0.05 so more textures with minor aspect differences are repaired. - Load PNG/JPG images using .NET instead of COM to retrieve dimensions. I have no idea if this will fix any false positives detecting corruption (or create new issues), so please report if this has any obvious negative side effects. - Massive code clean-up. As a side effect, a few [bugs] may have been fixed (or maybe new ones introduced :P). ----------------------------------------------------------------------------------------------------------------------- v15.1 - Fix applying an upscaling filter to textures that are not using the [Seamless Method]. ----------------------------------------------------------------------------------------------------------------------- v15.0 - The X button on the PowerShell window can no longer be clicked. Close it using the GUI's X or Exit button. - Add a checkbox next to the Texture and Output paths that allows saving these paths when the script is closed. - Allow selecting the upscale model for waifu2x-caffe when using [Apply Upscaling Filter to All Textures]. - Fix even more issues with commas as decimals. This prevented textures from being repaired correctly, and the GUI's numeric up/downs were not setting and saving the values properly when dealing with comma based decimal values. - Fix an error message when attempting to set the console window position when running multiple instances of CTT-PS. Running multiple instances should NEVER be done, but I'm running out of bugs and this annoys me while developing. - Play the windows chime when the Yes/No dialog pops up when cancelling a process or pressing [Restore Defaults]. - Lots of code refactoring, the stuff nobody cares about and probably leads to new bugs popping up. ----------------------------------------------------------------------------------------------------------------------- v14.0 - Fix texture count of the number of processed files when dealing with (.mat) material maps. - Fix a bug when generating material map '_lum' textures into a path that already contains these '_lum' textures. - Fix a bug with [Restore Defaults] setting a bad value for noise reduction when a valid path points to Waifu2x-CPP. - Add a confirmation (yes/no) dialog when pressing the [Restore Defaults] button. - When using [Auto-Repair Dimensions] while converting textures, alert which textures were auto-repaired and log it. - Update the tooltips for waifu2x [Disable GPU] and [Enable OpenCL] to better explain their functions. - Do not allow enabling both [Disable GPU] and [Enable OpenCL] at the same time if using Waifu2x-CPP. - Rename GUI [Internal Options] to [Global Options] so their purpose is less ambiguous. - Slightly adjust the [Auto-Rename] box under the [Convert Textures] option to better line up with the other options. ----------------------------------------------------------------------------------------------------------------------- v13.0 - Rename [DDS Material Format] to [Material Map Format] as it actually does affect PNG materials as well. Also update all information on this option to better explain what it actually does in its entirety. - On the Scan Textures GUI menu, also disable [Force New Mipmaps] if [Attempt Repairs] isn't checked. - Also move DDS Mipmap Type to the top of the right hand column. The reason is this option is used to know which type of DDS Mipmaps to scan for, so it cannot be disabled if 'Attempt Repairs' isn't checked (which would create a weird gap). - Allow drag/drop tool executables (or paths to the executables) into the corresponding text box on the Options panel. - Watermark [Text Length] is forced to 6 if it's anything lesser (aside from 0 which means to use the entire name). - Fix tooltip for [Output Format] when [Converting Textures] to not read as the [Manual Rescale] tip. Broke in v11.0. - Reverse order of [DDS Mipmap Type] and [Force New Mipmaps] in the advanced option [Generate New Mipmaps]. - Reworded several of the GUI tooltips and fixed various typos in all kinds of places. - Updated the CTT-PS Help document to reflect changes made since v12.0, and reworded some of the information. - Code: Phase out and remove the [CopyAllScreenText] function as it is now broken in the latest version of PowerShell. This function was only used in the script menus and is no longer needed. All script menus are no longer [progressive]. - Three new secrets have been hidden in some very non-obvious locations. Good luck finding them! ----------------------------------------------------------------------------------------------------------------------- v12.2 - Fix changing values with numeric up/downs (such as rescale factors). - Fix changing output formats that I so carelessly broke in the last version. ----------------------------------------------------------------------------------------------------------------------- v12.1 - Fix saving the filter selection in GUI mode. What an embarrassing bug to release with. - Fix saving the selected font/background color in the GUI Watermark menu. - Fix updating the Scale-Threshold on both menus when it's changed on either menu. - Slightly rework the logic behind checkbox states to not be so stupid. ----------------------------------------------------------------------------------------------------------------------- v12.0 General Changes: - All stored options are now written to the script when it is closed, rather than updating it whenever an option was changed. THIS WILL NOT WORK IF THE POWERSHELL WINDOW IS CLOSED. The script must be exited from the GUI by pressing the [Exit] button or the [X] button in the corner. If in Script Mode, it must be closed from the main menu. - Rewrote the way options are imported with [Import Stored Options]. The new method should be slightly faster. - Added restoring all options to their default values. This can be done with a button on the GUI Options panel, or from the Internal Options menu while in Script Mode. Note that paths are not restored to their default values. GUI Changes: - Allow dragging and dropping a folder into the [Texture] and [Output] paths text box. - Fix selecting a color when using the option [Add Identifying Watermark to All Textures]. - It is now possible to disable storing options with a checkbox found in the [Options] menu. - The script will now remember the last selected standard and advanced option when it is closed and reopened. - Enable the [Minimize] box on the GUI main window which allows minimizing CTT-PS GUI to the taskbar. - Gray out (disable) options that are not used unless other options are enabled (ex: Scale/Aspect requires [Repair"). - Added an [Internal Option] to toggle forcing CTT-PS GUI over top of all other open windows. - Reversed the order of [Auto-Repair Dimensions] and [Scale-Fix Threshold] in the option [Convert Textures to Another Format]. This made more sense to me because Scale-Fix does not do anything unless Auto-Repair is enabled. ----------------------------------------------------------------------------------------------------------------------- v11.0 General Changes: - Ishiiruka Tool v0.9.6 is now required for working with material maps. Support for the new naming format (.mat) and emissive (.lum/_lum) has been added. The old format (.nrm) is still detected as well, but no longer created. This version relies on v0.9.6 behavior as it works around a few bugs, so if Ishiiruka Tool is updated the script may also need to be updated to reflect any changes that fixes the bugs I've worked around. - When creating material maps (.mat) from materials (bump/spec/nrm/lum), it will now report the actual materials used. - It is now possible to apply upscaling filters to DDS textures. Note this will take longer than PNG/JPG textures. - Silenced any error messages that appear during the main loop if a file no longer exists that the loop detected. - Fixed a serious issue with [Generate New Mipmaps] that would delete DDS textures if DDS Utilities was not found. - Advanced Option [Generate New Mipmaps] now preserves dynamic mipmaps and is now affected by [Force New Mipmaps]. The old behavior of this option did not preserve dynamic mipmaps and always forced new mipmaps from the top layer. - Fixed DDS Mipmap Type when using the option [Generate New Mipmaps"; 'External' didn't replace 'Internal' mipmaps. - The Advanced Option [Remove Invalid Mipmaps] can now also remove invalid internal mipmaps from DDS textures. - [Material Conversion] renamed to [DDS Material Format] since it only ever and always will affect only DDS materials. - [Remove Invalid Mipmaps From the Pack] option renamed to the simpler [Remove Invalid Mipmaps]. - [Remove Alpha Channel From Non-Transparent Textures] option renamed to [Remove Alpha Channel From Opaque Textures]. - The maximum rows and columns for the texture array (used in Combine/Split options) has been reduced to 18 (from 24). - The texture array values (rows/columns) and texture output name (Split option) are now saved with the script. GUI Changes: - The main GUI dialog is no longer forced over top of all other open windows. - Added an option to auto-rename the output folder when rescaling or converting textures. - [Combine Multiple Textures] and [Split Combined Multi-Texture] are now implemented in the GUI. - The [Help] button is now functional. This opens up a dialog that mimics the style of Compiled HTML Help (CHM) files. This dialog covers enough topics and is thorough enough that it has completely replaced the [ReadMe] file and all the included CTT-PS guides. The dialog can be opened while simultaneously browsing through the options of CTT-PS. - The texture selection GUI for [Combine Multiple Textures] has been completely overhauled. It will now show a preview of the selected image in the selection button. The buttons are also now set up as a grid to easily verify that the final texture that will be created is correctly assembled. Dragging and dropping images onto the buttons is also possible. - The [Default Path] will now be remembered from the last selected texture when using [Combine Multiple Textures]. - Fixed the offset of some of the [...] buttons that are found next to the various [*Path] options. - Fixed the console to report the correct path (instead of the script's path) when processing textures in GUI mode. - Fixed [Create Material Maps With Ishiiruka Tool] to search for Ishiiruka Tool instead of OptiPNG when starting. - Added the [Force New Mipmaps] and [DDS Mipmap Type] options to the Advanced Option [Generate New Mipmaps]. - Formatted all tooltips to be horizontally shorter so there is less chance they run off the screen. - Added several more tooltips to some of the buttons and other elements that were missing them. Special Changes: - Automatically attempt to position the PowerShell console window to the center of the user's screen. This will not work on Windows 7 with PowerShell v2, update PowerShell to v5.0 if you want this feature. This works by calculating the position based on the primary monitor's resolution. The PowerShell console should always open on the primary display. I can't guarantee it will always show up on the primary display so this method may have the chance to fail. This can be disabled by editing the script and changing [AutoCenterConsole] to $false as its not exposed on the GUI. - The [PS.Double.Click] registry mod is now built into the script and has been added to the GUI as an Internal Option. - Added an Internal Option do hide the PowerShell console while not in use, and show it while textures are processed. - CTT-PS will now start without ImageMagick installed. This does not mean the script is usable without it. When any option is ran, the same prompt that appeared at start-up in older versions will appear in the console window and alert the user ImageMagick was not found, offer a web page link, and also provide the ability to select the install folder. - Allow cancelling the current process using the [Escape] key. The loop will be interrupted when the operation being performed on the current texture is finished. If rescaling/converting/upscaling, this may take a few seconds. This is preferred over just clicking the [x] in the PowerShell console as this method will cleanly exit the loop and wipe out any partial packs that were created from this script (Example: Converting to DDS, ConvertedTextures is deleted). This feature does not work when using [Combine Multiple Textures] or [Split Combined Multi-Texture] options. - Added notice messages for several cases where DDS Utilities is required rather than having PowerShell spit out error messages that means nothing to the user. This includes creating DDS textures and checking/extracting internal mipmaps. ----------------------------------------------------------------------------------------------------------------------- v10.0 - A proper fix has been included for Windows 7/PowerShell v2 Open File and Open Folder dialog issues. This means that Windows 7 users will be able to select folders via a GUI for the first time, and the Open File menu will be correct. - The script now has a GUI built with .NET framework. [Mostly] all features of the text based menus are implemented. - Text based menus still exist, simply press the [Script Mode] button to switch to the PowerShell console. - It's also possible to switch back to the GUI with the option [Switch to GUI Mode] from the main menu. - Defaulting to GUI can be enabled/disabled with the [Options] tab on the GUI, or the [Internal Options] in script mode. - Input and Output paths can be selected with the GUI. The text based menus will still use the folder the script is in. - Advanced Options [In-Place] for OptiPNG and Material Maps are now part of the [Standard Options] while using the GUI. - All folders this script generates will now be located in a folder named [~CTT_Generated] in the output folder. - It is now possible to disable creating the log file within the GUI [Options] or the script's [Internal Options]. - The Internal Option [Material Map Format] has been renamed to [Material Conversion] to better exemplify its purpose. ----------------------------------------------------------------------------------------------------------------------- v9.7 - Added a GUI for selecting textures in the [Combine Multiple Textures] option. This method should work in most cases but is far from perfect. If the array contains more than 128 textures then the entire button array will not fit on the screen. This shouldn't be a problem because I doubt any game will come close to having a texture grid of 128+ textures. - If textures were selected and rows or columns was updated, remember the textures that were selected. - Fix a bug that wiped out the current texture when attempting to re-select a texture, but no texture was selected. ----------------------------------------------------------------------------------------------------------------------- v9.6 - Added 2 new Advanced Options: [Combine Multiple Textures] and [Split Combined Multi-Texture]. The first option allows selecting multiple textures to combine into a single image. Using this option will generated a (.ctt) file along with the texture that can be used in the latter option to split the texture. It is not necessary to use this file to split textures, as the number of textures created are calculated from the number of rows and columns selected by the user. ----------------------------------------------------------------------------------------------------------------------- v9.5 - Fix updating the script when selecting an output format when rescaling textures. - Added configuration menus for the [Scan Textures For Issues] and [Convert Textures to Another Format] options. - Moved [Hide Okay Textures], [Ignore Duplicates], and [Allow NotHD Textures] from the Internal Options to the new menu for [Scan Textures For Issues]. Also moved [Copy Non-Textures] to the new menus for [Rescale] and [Convert]. - DDS Auto-Repair is now just [Auto-Repair] and can be found on the new configuration menu for Option 3. This will now automatically repair dimensions for all textures instead of just DDS textures using the integer part of the scale. - When error checking DDS textures, the script will no longer report missing mipmaps if there is less than 5 missing mipmaps. The reason for this is my calculations that search down to 1x1 conflicts with the number of mipmaps that ImageMagick creates, and it conflicts with the number of mipmaps Tino generates with Ishiiruka Tool. There should never be more than 5 missing mipmaps if the texture was created properly, so this is the only compromise I can come up with. - Don't copy a useless [nvdxt_scratch.tmp] if it's somehow left over when creating DDS textures. Usually this file can only keep existing if the script was closed while converting textures to DDS, otherwise it's automatically removed. ----------------------------------------------------------------------------------------------------------------------- v9.4 - Fix texture counts again. I forgot to consider PNG material maps with mipmap levels. ----------------------------------------------------------------------------------------------------------------------- v9.3 - Material maps will no longer be calculated into the texture count shown on the title bar. The reason for this is like mipmaps, they are a supplement texture and do not have any actions applied to them individually. - Added a configuration menu for the [Rescale Textures at Fixed Integer] option. - Moved the Internal Option [Manual Rescale] to the new rescale textures menu. - When a texture is skipped using [Manual Rescale] it is no longer copied. I used to do this because I didn't want the script to create [incomplete] packs, but this option should not be used to create complete packs. - A new option has been added when rescaling textures to configure when textures will be upscaled/downscaled. - Fixed a bug that was introduced in v9.2 when importing Internal Options that affected the [Waifu2x Conversion Mode]. - Updated the ReadMe so it's appearance is consistent across all browsers (Internet Explorer, Firefox, Chrome, Edge). ----------------------------------------------------------------------------------------------------------------------- v9.2 - Fix the texture counts in the title bar when [Allow All Images] is enabled in the Internal Options. - Fix double backslash bug when selecting a new Temp Folder that contains only the root of a directory (ex: [C:\"). - Display the [Add Identifying Watermark] menu on it's own page instead of using a progressive menu. - Allow selecting the type of textures to apply the seamless method to, and allow disabling it altogether. - Reduce the crop value of the seamless method back to 90%, and make the value configurable in the filters menu. - Impose the limits of the selected filter, and display these limits on the menu. xBRZ for example can only upscale by a factor of 6x. Also hide specific waifu2x options that do not work with the selected version of waifu2x. - Fix the input value that is fed to waifu2x-caffe when setting the [Disable GPU] option to [true]. - When waifu2x is selected as the current filter, display the version that was selected in the Internal Options. - When using waifu2x-Caffe, allow selecting the model that is used when upscaling. - Remove the ability to configure the output depth from the waifu2x menu when using waifu2x-caffe. Apparently textures created with 16-bit depth do not work in Dolphin, and I really don't want this script creating [broken] textures. - When an invalid help option is entered, reset the menu instead of displaying a useless blank box. - Fix logging a missing bar/current path in a subsequent run when running the script on a single texture folder. - Also display the filtering method in the log file [Enabled Options] sections. ----------------------------------------------------------------------------------------------------------------------- v9.1 - Reworked texture validation to catch Dolphin textures when the Internal Option [Allow All Images] is enabled. This prevents a few issues that I found, especially when working with mipmap textures or mipmap levels (mip1, mip2, etc). - Redesigned the upscaling filters menu and removed a bunch of filters that were probably never used. - Allow JPG images to be upscaled with the various upscaling filters. DDS may come in the future. - Added registry settings (found in the [docs] folder) to open PowerShell scripts with a double click. ----------------------------------------------------------------------------------------------------------------------- v9.0 - The option [Allow All Images] is now fully implemented and exposed in the Internal Options. This option will allow almost every function of this script to work on any image including watermarks, OptiPNG, converting to other formats, and applying the various upscaling filters. Error checking/repairing will not work on non-Dolphin textures. - When upscaling with the waifu2x filter, allow forcing the method used for seamless textures. - Allow a quicker exit to the script by pressing [Enter] when nothing is entered at the Main Menu. - More typos fixed and better descriptions in some help options. ----------------------------------------------------------------------------------------------------------------------- v8.7 - Simplified all [Status] messages printed to the log file. - Fix a typo in the watermark menu and the waifu2x menu ("begin] not [being"). - Report/log counts for textures: that have issues, repaired, copied, optimized with OptiPNG, invalid mipmaps removed, textures with forced mipmaps, removed alpha channels, and textures fixed potentially broken by OptiPNG. - Fix error checking DDS internal vs. external mipmaps for good this time. Not sure if I ever really fixed it, but it should now only check for the type of mipmaps that is selected in the Internal Options setting [DDS Mipmap Type]. - Any process that can flag a texture as [OK] will no longer print these textures to the log file if the Internal Option [Hide OK Textures] is set to true: Remove Invalid Mipmaps, Remove Alpha Channel, and Fix OptiPNG Textures. - A secret option 'AllowAllImages' can be set '$true' in the script's header. This does what it says, and allows any non-texture image to pass the script's validation. This is not nearly fully implemented yet, so expect TONS of errors. This option does work to the point that it will successfully generate DDS textures from -any- PNG/JPG/DDS image. ----------------------------------------------------------------------------------------------------------------------- v8.6 - Fix all kinds of stuff dealing with Ishiiruka textures that have been broken since v8.1. - Reverted some of the changes from v8.1 dealing with DDS mipmap generation. - Reverted the default setting of [Force New Mipmaps] back to [False] for safety reasons. ----------------------------------------------------------------------------------------------------------------------- v8.5 - Fix language decimal issue (commas vs. periods) when applying upscaling filters to textures. - Decrease the crop amount to 95% (from 97%) so there are more pixels to work with on smaller textures. - Limit the montage/crop/filter/crop method to textures equal to or above 24x24. I doubt there are many (if any) seamless textures that are smaller than these dimensions. And the filtering method probably wouldn't help much anyway. ----------------------------------------------------------------------------------------------------------------------- v8.4 - Removed all the ugly (In-Place) text from the Advanced Options, and made it more clear that all options do this. - New Advanced Option [Remove Alpha Channel From Non-Transparent Textures] will check textures to see if they contain both an alpha channel and transparent pixels. If an alpha channel is found, and transparent pixels are not, then the alpha channel is removed from the texture. As with all Advanced Options, this is done in-place. This option is most useful with PNG textures, using this script to convert to DDS will already remove the alpha channel if not used. - When applying filters, the montage/crop/filter/crop method will now only take place if an image does not have any transparent pixels. This does not mean alpha channel, a texture can have an alpha channel enabled and still be opaque. - When applying filters, the montage/crop/filter/crop method has been improved so that it crops 97% (from 90%) of the overhang before applying the chosen filter. This should slightly decrease the amount of time it takes to run an image through the desired filter when processing environment textures; or basically any textures without transparency. - Most menus now use [0] to return to the main menu. The letter [B] is still used in the Manual Resale menu. - Watermark generation and waifu2x menus now require nothing to be entered to proceed (which is faster). - Fix the help description of waifu2x [OpenCL] option. Was a copy/paste job and forgot to update it. ----------------------------------------------------------------------------------------------------------------------- v8.3 - Added waifu2x to the list of possible filters to apply when upscaling/filtering textures with Option 7. - The script is compatible with either waifu2x-caffe or waifu2x-cpp. The path can be chosen in the Internal Options. - A new method is applied when filtering textures that preserves the edges of seamless textures. Textures are now tiled 9 times, cropped, filtered, then cropped again to preserve the edges of seamless textures. This adds a little bit of time to the overall conversion, which can most likely be improved on in the future. For now it does work on all textures. - The filter that was applied is now appended to the output directory. Example: ~FilteredTextures(3xBRZ) - Fix an error that can pop up when using certain upscaling filters which caused the upscale to fail. - Removed the restriction of applying upscaling filters to only textures with the original dimensions. - Because the above restriction was removed, there was the possibility that this could tool could be misused to create insanely large textures. To protect the users from themselves, textures must be smaller than 4096x4096 and the resulting dimensions must be lower than 8192x8192. If the resulting dimensions are higher, a smaller scaling value is calculated. If a smaller scaling value does not reduce the resulting size below that value, then the texture will be skipped. ----------------------------------------------------------------------------------------------------------------------- v8.2 - Fixed DDS mipmap generation and watermark generation [Rename-Item] error on older PowerShell versions. - Fixed some more descriptions when using the help options from the Internal Options menu. ----------------------------------------------------------------------------------------------------------------------- v8.1 - The focus of this version was rewriting the texture generation logic. This code was directly translated from the batch version long ago, and hasn't been touched, as the old saying goes: If it's not broken, don't fix it. Although it wasn't broken, it never felt complete. The new system can handle several more cases, all changes below. - DDS textures that are detected as [corrupt] have an additional layer of testing added if Ishiiruka Tool is found. - If a texture passes the test mentioned above, it is recreated as PNG with Ishiiruka Tool, then recreated once more with ImageMagick so it becomes compatible with this script (or whatever image program). - DDS conversions should overall be slightly faster, especially when dealing with mipmap textures. The old slow code path is still taken if mipmap levels are provided. This can be averted with the option [Force New Mipmaps]. - The Internal Option [Force New Mipmaps] is now enabled by default, as it forces the faster code path as mentioned above. This option is a special case scenario anyway, as it's only useful to disable it for dynamic mipmaps. - Fix large DDS textures that are generated with ImageMagick to not always generate internal mipmaps. - DDS textures with internal mipmaps are now preserved when converting DDS textures to other formats. If both internal and external mipmaps are supplied, priority is given to the internal mipmaps due to internal dynamic mipmaps. - With these changes comes the small price that the threshold for generating DDS textures with Nvidia Tools has been lowered to images below 4096x4096 (old limit was 8192x4096). Large textures are instead created with ImageMagick. - Removed the [Notice] message that appears when ImageMagick is used to generate DDS textures. - The Advanced Option [Generate New Mipmaps (In-Place)] will now also work on material map textures. - Added more logging events to all Advanced Options so it doesn't leave blank areas in the log file/console. - Changed the awful order of some of the Advanced Options to what I think is the most useful to the least useful. - Added all the most recent options to the list that the Log file displays in the header titled [Enabled Options]. ----------------------------------------------------------------------------------------------------------------------- v8.0 - It is required to update to Ishiiruka Tool v0.9 to handle all new features when working with material map textures. - A new Internal Option [Material Map Format] controls how to handle material map textures. If set to [Ishiiruka], it will generate material maps normally for Ishiiruka. If it is set to [Dolphin], the textures will not be created with material maps, but any DDS color textures created with Ishiiruka Tool will be converted to a Dolphin compatible format. - Add support for xBRZ ScalerTest by Zenju. It can be selected in the option [Apply Upscaling Filter to Base Textures]. - The path to the ScalerTest can be set in the Internal Options, or when attempting to use the xBRZ filter. - Implemented possibly the fastest possible method for counting the correct number of textures before the loop starts. - Generating a watermark on DDS Ishiiruka color textures is now possible if Ishiiruka Tool v0.9 is found. If it is not found, then the old method of generating the textures as a black image with the watermark will be used instead. - Completely skip error checking DDS textures for missing internal mipmaps if [DDS Mipmap Type] is set to [External]. ----------------------------------------------------------------------------------------------------------------------- v7.4 - Allow importing Internal Options from other versions of the script so they don't have to be changed every version. - When error checking, do not check for missing external mipmaps if [DDS Mipmap Type] is set to [Internal]. - DDS textures that are missing external mipmaps will now display [External Mipmaps Missing] to avoid confusion. - When selecting the Temp Folder in the Internal Options, force the final path to include [\CTT-PS_Temp]. I didn't realize how dangerous setting this folder could be. In its old state, it could wipe out an entire directory! - Add [Notice] and [Message] texts when generating Mipmaps in-place using the Advanced Option. - Updated any remaining built-in help descriptions that needed updating based on any recent changes. ----------------------------------------------------------------------------------------------------------------------- v7.3 - Fix an issue that can happen when running OptiPNG on textures (Option 6) that already exist in the output path. - In the rare situation a watermark is to be generated on a DDS texture created with Ishiiruka Tool, instead create a black texture. This is because DDS textures created with Ishiiruka Tool are not compatible with ImageMagick and fail. This should be okay because watermarked textures should only be used to identify where the texture shows up in-game. - The title bar progress will now display the current operation that is taking place on the current texture. - Calculate the title bar completion percentage in a way that is far less idiotic than the way I was originally. - Improve the title bar accuracy to 100%, meaning it will only count textures that have actions applied to them in the main loop. Before the value was also counting mipmap levels. Although they get processed in the main loop, they do not have any actions applied to them individually, so now a texture and all mipmap levels count as a single texture. ----------------------------------------------------------------------------------------------------------------------- v7.2 - Fix a stupid bug with the loop to count files missing the base path. ----------------------------------------------------------------------------------------------------------------------- v7.1 - Fix a long standing issue that could allow random files to pass texture validation (such as PSD and XCF files). - The title bar will now display the progress of the current task in the form of: current/total (complete%). It should be noted that this adds slightly more processing time for the loop to initialize. The time it takes depends solely on the number of files in the pack (usually less than a second but can take maybe up to 4-5 seconds). Also, the number of files displayed is an approximate number, as it counts all PNG/DDS/JPG images whether they are a texture file or not. The reason is performance, validating every file individually would add much more time to the initialization. Although it is an approximate number (as it counts non-texture images), it is 100% accurate in how many files are processed. ----------------------------------------------------------------------------------------------------------------------- v7.0 - Add support for using ImageMagick v7. Figured I'd bump the script to this version to match it. :P - The title bar on the PowerShell console window will now also display the installed version of ImageMagick. - Found one more array initialization that I missed using [New-Object] for when doing OptiPNG related tasks. - Fix OptiPNG descriptions to show the proper default number for tests (which is now 3 and not 5). - When creating material maps from bump/spec/nrm textures using the Advanced Option, only remove the files if the textures were created. This probably wasn't an issue (as the textures should always be created), but just to be safe. - Fixed a bug when selecting the ImageMagick folder when ImageMagick is not found. - Also allow changing the ImageMagick path via the script by entering ?? at the main menu. ----------------------------------------------------------------------------------------------------------------------- v6.0 - A new option has been added to the Main Menu: [Apply Upscaling Filter to Base Textures]. This option allows upscaling and applying a filter to textures that are dumped by Dolphin. This option does not work on textures with a resolution higher than the dimensions of the original texture. It's not a replacement for actual retexturing, as the results are not fantastic, and it should only be used in special case circumstances. - Force the console window size for PowerShell v2 to the same size used in PowerShell v3-5. - The console window can now remember up to 20,000 lines (up from the default 2,000 lines). - Added a few more cases of the work-around for the [Open Folder] dialog not working with PowerShell v2. - Modified the [ManualRescale] menu. The new method should be much friendlier than the old one. - Reduced the base number of OptiPNG tests to 3. Defaulting to 5 tests just adds unnecessary time. - When a corrupted or non-texture file is copied, the console will now display the path it originated in. - Removed any remaining compatibility with ImageMagick v7 betas. When v7 is released, I'll support it once again. - Added further accessibility for obtaining/selecting ImageMagick v6 with the menu (when v6 is not found). - Fix recent changes that caused instances of [thumbs.db] to be copied as non-texture files. - The [Advanced Functions] menu now has a built-in help description when entering [8?] at the main menu. - Refactored a huge chunk of the menu code which was almost half of the script. This was a long time coming, it was a poorly coded mess that I just kept adding onto. The menu rewrite way back in v2.5 was a failure that couldn't be maintained. This rewrite I was able to reduce the script by over 500 lines. There may be new bugs from this! - Recoded the way arrays are initialized using New-Object instead of a loop. This method is supposed to be much faster than using a loop, so it might reduce a little bit of overhead when working with 100s-1000s of textures. ----------------------------------------------------------------------------------------------------------------------- v5.5 - The number of tests that OptiPNG runs is now once again configurable in the Internal Options. - OptiPNG will no longer run on material maps (nrm) or the parent texture (just to be safe). - Fixed all cases that dealt with paths. Not sure how I missed so many potential issues until now. - A prompt will now appear to select Ishiiruka Tool if not found when using the Advanced Option [Generate Material Maps]. - When attempting to convert to JPG, textures with a material map are now skipped since they will most likely fail. - Modified more cases of [Notice] messages to now display in the color [Magenta'. ----------------------------------------------------------------------------------------------------------------------- v5.4 - This is what happens when I really just want to get something done and rush things. Fixed even more instances of commands needing [-LiteralPath], this time when deleting files with [Remove-Item]. ----------------------------------------------------------------------------------------------------------------------- v5.3 - Fixed a long oversight in the script with instances of [Get-ChildItem] that needed [-LiteralPath]. This could have affected and prevented mipmap generation and textures created with OptiPNG. There may have been other places as well. ----------------------------------------------------------------------------------------------------------------------- v5.2 - When OptiPNG creates a texture with any color channel that is less than 8bpp, the texture is skipped. - The number of tests performed by OptiPNG is now fixed to 5. This is no longer configurable, and the menu was removed. - Generating textures in place with OptiPNG has been moved to the Advanced Functions menu. - New option in Advanced Functions to repair textures potentially broken by OptiPNG using older versions of the script. ----------------------------------------------------------------------------------------------------------------------- v5.1 - Work-around [Open] dialog issues with PS v2 that freezes the script when selecting paths to Ishiiruka Tool or OptiPNG. - Also work-around [Open Folder] dialog issue with PS v2 by allowing the user to enter/paste in a new path. - Removed the ability to generate material maps in-place using Option 4. Functionality moved to [Advanced Functions]. - The Advanced Function to generate mipmaps will not work with Ishiiruka textures, so they are now skipped. - Added additional error checking to test if textures/material maps are successfully created with Ishiiruka Tool. - Updated some of the built-in help descriptions. ----------------------------------------------------------------------------------------------------------------------- v5.0 - The script now requires a minimum of Ishiiruka Tool v0.8 for working with material textures. - Finally converting all instances of material maps should now work using Ishiiruka Tool. - Generated mipmap levels will now be even between material maps and color textures. - External mipmaps will no longer be created for DDS textures generated with Ishiiruka Tool. - DDS color textures generated with Ishiiruka Tool will now work with this script if the material (nrm) is supplied. - When textures are created with Ishiiruka Tool, the script will now report the format as 'Ishiiruka' instead of DXT1/DXT5. - Fixed the case of running scan textures > repair; bump/spec/nrm textures will now always be created as a material map. - Added additional console messages for when material maps are created or copied, and when creating Watermarks on textures. - Material/color textures must once again be in the same format (v4.1 allowed different formats). This is technically a regression, and [might] be fixed in the future. It felt like too much work to reimplement in this version. ----------------------------------------------------------------------------------------------------------------------- v4.3 - Nothing worth mentioning. ----------------------------------------------------------------------------------------------------------------------- v4.2 - Added a condition to copy a material map rather than generate it if the output would be the same. - Small bug fixes. ----------------------------------------------------------------------------------------------------------------------- v4.1 - Allow working with combined material maps that have a different extension than the color texture. - Fix a bug that generated an extra material if the texture was not a mipmap texture. ----------------------------------------------------------------------------------------------------------------------- v4.0 - Added full support for rescaling/converting already existing PNG material maps using Ishiiruka Tool. - Fixed an issue with decimals when doing division. I recently learned some countries use commas instead of periods. - Scrapped the old ReadMe, typed up a brand new one with less colors and hopefully more informative. - Completely removed the internal options for [Alternate Log Format] and [Incremental Logs]. - Tons of code changes once again, please report any bugs that may be a result of this. ----------------------------------------------------------------------------------------------------------------------- v3.9 I didn't want to release this version until Tino added some more options to Ishiiruka Tool, but v3.2 was creating bad material maps when converting to DDS. Plus I didn't want all these changes to sit in purgatory while I wait. - Added support for generating material maps with Ishiiruka Tool from (bump), (spec), and (nrm) textures. It is important to note that material map (nrm) textures that have already been generated with Ishiiruka Tool are NOT converted when using the options to convert a pack to another format! For now these textures are skipped until Tino updates his tool to allow converting PNG material maps to DDS, and possibly the option to rescale material maps. When Ishiiruka Tool supports these options, I will enable this functionality in the script and update it to v4.0. - New Advanced Option [Generate New Mipmaps] which allows generating new Mipmaps directly within the texture pack. - Categorized the options in the Internal Options menu to make them slightly easier to understand their purpose. - The folder when rescaling textures now contains (PNG), (DDS), or (JPG) if a conversion method was forced. - Removed the Internal Options for alternate log format and incremental logs. I don't think anyone used these options, and the default methods feel far superior. These options are still hidden in the script header if someone really wants them. - Selecting paths for ImageMagick, DDS Utilities, OptiPNG, Ishiiruka Tool, or a Temp Folder is now done through a GUI. - Entered paths for OptiPNG and Ishiiruka Tool must contain the exe file (if editing the script instead of Internal Options). - Fixed setting the wrong paths to [stitch] and [detach] when selecting a new path for DDS Utilities (if it was not found). - Too many other small bug fixes and code/cosmetic changes to make a list of. ----------------------------------------------------------------------------------------------------------------------- v3.2 - Combined Options 1-4 into a single option. A sub-menu will now appear that allows repairing/copying bad textures. - Added a new menu called [Advanced Options] that will contain options that modify the texture pack directly. - Advanced Option [Remove Invalid Mipmaps] will find and delete mipmaps that do not belong to actual mipmap textures. - Texture validation will no longer pass lower mipmap levels that do not belong to actual mipmap [m] textures. - Preliminary work on adding support for Tino's Ishiiruka Tool. The tool does not yet support command line input, so it is disabled for now until Tino adds support for CLI. ----------------------------------------------------------------------------------------------------------------------- v3.1 - Fixed a bad bug with texture validation that invalidated paletted textures (possibly others). This means that packs that were converted to DDS from CTT-PS v2.5-v3.0 may be missing a few textures! Please regenerate your packs! ----------------------------------------------------------------------------------------------------------------------- v3.0 - Added support for handling Ishiiruka normal maps: meaning the already combined 'normal', 'bump' and 'spec' texture that can be created using the tool found on post 3 of the Ishiiruka board. - Normal maps are handled like standard textures, meaning all error checking and mipmap generation also applies to them. - Detecting [Dolphin Duplicates] was refined to check for an actual integer so it will not detect normal maps. - When any mipmap textures are copied during error checks, the script will now also copy existing mipmap levels. ----------------------------------------------------------------------------------------------------------------------- v2.5 - The other half of the script was rewritten in this version (menu code), hence the increase to v2.5. - Improved the accuracy of detecting the proper scale to use (width vs. height) when auto-repairing a texture. - Fixed a (bug?) when setting ScaleFixThreshold. I'm honestly not sure how it was still working at all. - Active menu descriptions are now displayed in yellow text (which helps center attention on the active menu). - If the path to OptiPNG is not set and Option 7 is selected, the menu to choose a new path will now pop up here. - If DDS Utilities are not found when selecting DDS, allow going back to Main Menu rather than close script. ----------------------------------------------------------------------------------------------------------------------- v2.0 - About half of the script was rewritten in this version (main functions code), hence the increase to v2.0. - Issue [NotHD] is now detected if either dimension falls below the original (instead of needing both). - Fixed console reporting the number of missing DDS Internal Mipmaps when error checking DDS mipmap textures. - The folder when converting textures to another format now contains (PNG), (DDS), or (JPG) instead of the file extension. - The same change as above was applied to the console and log files (will show (PNG) instead of (.png) for example). - Textures created with a watermark will now be forced into PNG format to avoid text corruption in DDS files. - Fixed converting packs into JPG format which I accidentally broke in v1.7. ----------------------------------------------------------------------------------------------------------------------- v1.7 - Slightly reduced the sharpening strength for some cases when textures are rescaled when repairing or converting. - Hide an error message that pops up if ImageMagick or DDS Utilities are not found in the Windows registry. - Hopefully fixed all remaining typos in the help sections of the script. - Reworked mipmap generation for DDS textures. Before, the original texture dimensions were used when calculating the number of levels and mipmap dimensions. Now, DDS mipmap dimensions are calculated using a multiple of four of the current dimensions. This really only affects textures with odd scaling values (non-int-scale/non-mult-4), meaning, textures with [bad] dimensions. For example, a 768x768 [m] texture now gets a proper [2x2] mipmap and not two [1x1] mipmaps... Before: 768x768, 384x384, 192x192, 96x96, 48x48, 24x24, 12x12, 8x8, 4x4, 1x1, 1x1 After : 768x768, 384x384, 192x192, 96x96, 48x48, 24x24, 12x12, 8x8, 4x4, 2x2, 1x1 This also improves calculations for textures with [bad] dimensions. For example, a 578x578 [m] texture... Before: 580x580, 292x292, 148x148, 72x72, 36x36, 20x20, 12x12, 4x4, 2x2, 1x1 After : 580x580, 292x292, 148x148, 76x76, 40x40, 20x20, 12x12, 8x8, 4x4, 2x2, 1x1 In the example above, descending layers have [better] dimensions and an additional level is created which fills the rather large gap between 12x12 and 4x4. Because of the nature of DDS, it is impossible to always have mipmaps that are a perfect halve of the previous level. The new method should create a better transition between mipmap dimensions for DDS textures in nearly all cases. ----------------------------------------------------------------------------------------------------------------------- v1.6 - Maybe fixed issues creating DDS textures with internal mipmaps. Not sure if it was broken, but it looked like it. - Fixed the error message that should appear when entering invalid values for Option 5 (rescale textures). - Fixed a few issues when running Option 5 with the option [ManualRescale] enabled. - Much better description when checking the help for the [DDS Mipmap Type] internal option. - Tons more code cleanup, optimizations, and refactoring. Please notify me if any new bugs popped up from this. ----------------------------------------------------------------------------------------------------------------------- v1.5 - Fixed NotHD texture detection to detect lower than 1x1 scales. - Fixed a bunch of potential issues involving repair thresholds (ScaleFix/AspectFix). - Miscellaneous code cleanup. ----------------------------------------------------------------------------------------------------------------------- v1.4 - Fixed an issue that could prevent a texture from being created if it matched certain conditions. - Fixed the explanation of the the [DDS Mipmap Type] option to better explain its new functionality. ----------------------------------------------------------------------------------------------------------------------- v1.3 - Removed the 'DDS Mipmap Menu' when converting textures to DDS using option 5 or 6 from the main menu. - All DDS Mipmap handling (repair/convert) is now handled with the Internal Option [DDS Mipmap Type]. - New Internal Option [Allow NotHD Textures] to disable checks for textures with original dimensions. - Fixed [Copy Non-Texture Files]. This broke in beta when I added the converted extension to the folder name. - Added help options to the watermark menu to better describe each option. ----------------------------------------------------------------------------------------------------------------------- v1.2 - Added a special case to default [0] when no input is entered when configuring watermark [Text Length]. - Fixed a silly mistake when checking the width for watermarks (checked for [<= 256] instead of [< 256"). Everything still worked as intended however, so there should be no change in behavior. - Improvements to several help descriptions when entering a ? after an input value. - Minor miscellaneous code cleanup. ----------------------------------------------------------------------------------------------------------------------- v1.1 - A new option has been added to add watermarks to textures using part or all of the texture's name. Credits go to [uncleiroh] for the idea and [MeleeHD] for bringing it to my attention. ----------------------------------------------------------------------------------------------------------------------- v1.0 - Initial release. All features included from the now deprecated Custom Texture Tool v5.0 Batch version. ------------------------------------------------------------------------------------------------------------------------