ImageMagitek is a work-in-progress .NET library for retro videogame system graphics.
TileShop now runs on .NET 6 and requires the .NET 6 x64 Desktop Runtime to be installed
Reintroduced viewing and editing support for direct color images and arrangers Added codec support for Rgba24, Rgba32, N64 Rgba32, N64 Rgba16, and Bmp24 Re-enabled support for PSX 16 and 24bpp codecs Reimplemented "New Project From Existing File" menu option Added rotate and flip operations for Scattered Arrangers (square elements only, enable in appsettings.json via enableArrangerSymmetryTools)
Add hot key descriptions to tooltips Improved resource removal dialog appearance
Fixed a bug where copying pixels from a subimage would always copy pixels offset from the upper left corner of the originating arranger Fixed Recent Projects listing when a new Project has been added Fixed zoom in editors when using ctrl+mouse wheel Fixed a bug where Recent Projects would list the old, missing project locations after renaming or moved Fixed UTF-16 XML header to UTF-8 Fixed a bug related to scattered arranger resizing Fixed a bug where changing a Palette's FileColorSource endian could be mismatched between read and write operations when toggling via GUI Fixed a regression bug where non-square elements could not be encoded Fixed a regression bug where non-square direct arrangers could not be saved Renamed Bgr12 to Bgr9
Added FF5 monster sprite sample to show programmatic use of ImageMagitek for command line and WPF apps Add plugin sample for Marmalade Boy's font
Add Flood Fill tool to PixelEditor Add Recent Projects menu option Resource nodes in Project Tree can now directly navigate to the resource's XML file in Windows Explorer Add Endian option for File Color Sources Add initial implementation for Bgr12 (Game Gear) and Bgr6 (Master System) color models Add Element Layouts for Sequential Arrangers
Toolbar improvements to all editors Improved toolbar button styling Sequential Arrangers now hide the Palettes ComboBox if there is only one global Palette Removed delete button from numeric input boxes
Fixed the loading of ZeroIndexTransparent setting in Palette Editor Fixed a crash when adding a new Palette Fixed a bug where a Project could be opened multiple times simultaneously Fixed a bug where renaming a Resource did not trigger a resorting of items in the Project tree Fixed a crash when discarding a modified Pixel Editor Fixed a bug where Arranger shortcuts to select all Elements would not enable the edit button Fixed author attributions in global Palette JSON files
TileShop's XML resources are now contained within individual XML files rather than one XML file for an entire project. This was done to promote extensibility and upcoming import/export features. All old, single file projects must be recreated or manually transitioned to the new XML system. The existing project samples have been updated. "name" attribute removed from resources. Now the filename will be used to infer the resource name. The project name itself is no longer included in resource path keys.
Color Sources are a palette system feature that allows the user to specify palette colors coming from a file, a user-defined native color (RGBA), or a user-defined foreign color (Bgr15, NES, etc) based on the palette's color model. They can be mixed-and-matched within a single palette, so scenarios like non-contiguous palettes and directly specifying palette colors from an emulators are possible. This information is stored in the Palette's XML resource.
Added default codec associations for .gbc, .gba, .ncgr, .ncbr Palette FileOffsets are now in hexadecimal in TileShop's Palette Editor Improved error messages when XML parsing fails due to XSD schema validation errors Improve XML errors when a resource can't be loaded due to a missing referenced palette
File extensions for default codecs in appsettings.json are now case insensitive Fix a bug regarding creating a ScatteredArranger from a SequentialArranger with single layout
Transitioned to multiple file projects
-f
force overwrite flag for Export
and ExportAll
is now the more explicit --overwrite
Added --log
option to TileShopCLI to redirect logs
Added -f
and r
options to Import
and ImportAll
to skip missing files and bad resource keys respectively
TileShop is now bundled with TileShopCLI -- a command line tool to automate importing/exporting of TileShop project resources Upgraded to .NET 5 so users will need to upgrade their runtime. The Pixel Editor has been reimplemented as a document tab. Multiple can be opened simultaneously.
Added Zero Index Transparency flag to Add New Palette dialog. Reworked Palette Editor dialog to better show its source and zero index transparency. Added app icon to taskbar. Added menu option to Open Data File As New Project. This is experimental and may be removed when the project structure is redesigned.
Fix a bug where Drag+Drop did not paste onto the correct elements when non-square pastes were pasted. Added more checks to restrict mouse operations to within the ScatteredArranger editor image bounds to fix an exception. Fixed a bug where resizing a ScatteredArranger would not update its ArrangerPixelSize.
Added support for XML pattern codecs which are based on Feidian Added support for viewing and editing contiguous, in-game NES Palettes
Importing an image now automatically updates the display of opened Scattered Arrangers Saving a Palette now automatically updates the display of opened Scattered Arrangers Removed focusability from most SequentialArranger toolbar items because they interfered with hotkeys Small redesign of "Add New Palette" dialog Add height/width labels to "Add a Scattered Arranger" dialog
Fixed a crash when AssociatePalette was used without any project palette resources Fix resizing of arrangers for non-element-resizing codecs Fixed some bugs where flowcodecs did not properly respect mergepriority upon encoding elements (this affected the GBA codec and maybe some others) Fixed byte down hotkey for the + in Sequential Arrangers.
This will require existing project files containing custom palettes to be hand-edited. All sample projects have been updated. The following changes were made:
All existing codecs contained within TileShop have been updated to the new XML codec spec.
Fully redesigned for a much better experience Element-aligned and pixel selections Pastes now show an image preview of the pending paste instead of an ambiguous purple overlay Pending Pastes are now applied with the Enter key or by creating a new selection Many related fixes to editing selections
Scrollbar for fast file browsing for Sequential Arrangers Automatically refreshes image when pixel data has changed via the Pixel Editor Undo/Redo added to ScatteredArrangers for the following operations: Delete Selection, Apply Paste, Apply Palette, Resize Added 8x8 Gridlines for Single Arrangers
Color Picker changes to the correct palette when a color is picked Pixel Editor can now make selections Element-aligned Gridlines for edited pixel selections Added Scrolling for large pixel images Show hovered pixel information
Tooltips are now shown when hovering disabled controls Open arrangers automatically when added to project Undo/Redo/Save hotkeys (Ctrl+Z, Ctrl+Y, Ctrl+S) Gridlines for Single Arrangers and edited pixel selections
Fixed an exception when dragging mouse to apply palettes to individual elements Fixes to keep project synchronized when adding resources Fix create new arranger from selection adding to the wrong project Fixed the menu close option for Pixel Editor Fixed a crash when edit selection triggered an edited pixel arranger to be saved/discarded Fixed Gridlines after resizing a Scattered Arranger Prevent drag+dropped element images across projects
Large performance enhancements when drawing to large arrangers in the Pixel Editor
Sequential Arrangers are now view-only and no longer accept pastes of any type. You can still edit the pixels in the Pixel Editor. This may be reworked in the future.
Scattered Arrangers still accepts element pastes but no longer accepts pixel pastes. This was done to eliminate conflicts when the Scattered Arranger Editor contained modified pixels, but the Pixel Editor saved conflicting pixel data. Additionally, the option to paste as pixels or as elements was confusing and poorly presented.
The Pixel Editor only accepts pixel pastes and is now the exclusive way to modify pixel data.
To summarize, Sequential Arranger - Views, Scattered Arranger - Arranges, Pixel Editor - Edits Pixels Data.
Project files now require all arrangers to have a defaultpalette attribute
Exceptions related to modifying Scattered Arrangers (resizing, removing elements, etc) have been fixed Fixed automatic loading/saving of GUI-related settings such as theme, main window size, etc. More layout settings will be saved in a future version.
Close All Projects is now enabled if you create a new project Increased width of TextBoxes within the Resize Scattered Arranger dialog
Apply Palette can now apply the current palette to an entire selection by clicking the selection
Extensive User Interface makeover with light/dark theme, new icons, and more modern styled controls Merged TitleBar and Menu to save vertical screen space Changed the Color Remapper dialog to have a horizontal layout instead of vertical Some menu options were removed or moved to account for multiple projects
Added support for opening multiple, independent projects at once Improved project saving -- Project XML should always be in sync now without manual saving Detect and save/unload editors when they are no longer available due to the project being closed Added Element Inspector to Scattered Arranger Editor to inspect the source of the image and palette data used Associating a Scattered Arranger with a Palette can now be done with a button in the editor (previously only drag and drop from the Project Tree) Added ability to reset selected elements in Scattered Arranger Editor with the Delete key Added support for multiple global default Palettes (Add to _pal and edit appsettings.json. New global palettes coming in a later version) Added GBA 4bpp Codec Better performance while scrolling Sequential Arranger Editors (reduced memory allocations and copies) Top-level exception handler now shows a Message Box instead of exiting the application upon errors
Some old project files may not load correctly due to the multiple global default Palettes changes
Bug fix for importing single layout arrangers
Implemented undo/redo for the pixel editor. Added import image into existing arrangers Project files now use relative disk paths instead of absolute paths for DataFile Locations. New hotkey and context menu to select the entirety of an arranger New hotkey to edit selection Hotkeys for codec changing and expanding/shrinking arrangers were changed New context menu option within sequential arrangers to add selections as a new scattered arranger
Schemas are no longer mislocated due to the project file being outside of the TileShop directory Disabled zero area selections and fixed related editing crash