I recently added a feature to NESICIDE [not in the released version yet]. This feature takes any set of "images" of any size (8x8 up to 256x256) and removes redundant "tiles" within the whole set, producing a CHR-ROM out the back-end. I was pretty proud of myself and ready to incorporate the feature into a release. But then I got to thinking...
Duh. There's a number of cases where one might actually need redundant tiles in a single 8KB bank of CHR-ROM [redundant tiles that are redundant between two or more different CHR-ROM are not removed...].
Example: X-marks-the-unused-tile. My redundancy removing algorithm blindly removes all but one of the X's.
I'm sure there are other cases where redundant tiles within an 8KB CHR-ROM might be desirable.
1. When the background page and sprite page have one or more identical tiles between them [weird but possible].
2. When the CHR-ROM is 1, 2, or 4KB bankswitchable and it's necessary [for some reason] to have an identical tile in one or more of the sub-8KB banks.
If you know how I organize CHR-ROM in NESICIDE, it's done by creating a Graphics Bank item. Each Graphics Bank item has a list-view, which can be used to add, remove, or re-arrange any of the available Tiles (here a tile is an 8x8 up to 256x256 image, not an 8x8 hardware tile) into a CHR-ROM. Obviously a 256x256 image of unique tiles won't fit so hopefully what you've drawn is reducible or it'd just plain tell you it can't do it! The tilification is done in real-time as Tiles are added or removed or when Tiles are modified. But of course, the issue is how to best solve the above problems:
1. For the "I want to use this tile as filler, please don't redundantly reduce it" case, I thought perhaps a combo-box selection for each listview line item containing the choices "Fill to next 1KB", ... "Fill to 8KB" would work.
2. For the background-vs-sprite page case, I thought perhaps splitting the list-view into two separate list-views would work. Or an option in the combo-box again, something like "Start 4KB page here".
3. For the identical-tile-in-bankswitched-bank case, I thought perhaps another option in the combobox for each listview line item "Don't remove" or similar.
So the questions. Have I considered all the cases or are there more? Does the combo-box per line item solution make sense or seem cluttery? The default for the combo-box would be "Reduce if possible" or similar phrasing.
I'd appreciate feedback from anyone that may have attempted to use the Graphics Bank in NESICIDE. If the solution to that equation is the empty set, I'll entertain feedback from anyone.
Duh. There's a number of cases where one might actually need redundant tiles in a single 8KB bank of CHR-ROM [redundant tiles that are redundant between two or more different CHR-ROM are not removed...].
Example: X-marks-the-unused-tile. My redundancy removing algorithm blindly removes all but one of the X's.
I'm sure there are other cases where redundant tiles within an 8KB CHR-ROM might be desirable.
1. When the background page and sprite page have one or more identical tiles between them [weird but possible].
2. When the CHR-ROM is 1, 2, or 4KB bankswitchable and it's necessary [for some reason] to have an identical tile in one or more of the sub-8KB banks.
If you know how I organize CHR-ROM in NESICIDE, it's done by creating a Graphics Bank item. Each Graphics Bank item has a list-view, which can be used to add, remove, or re-arrange any of the available Tiles (here a tile is an 8x8 up to 256x256 image, not an 8x8 hardware tile) into a CHR-ROM. Obviously a 256x256 image of unique tiles won't fit so hopefully what you've drawn is reducible or it'd just plain tell you it can't do it! The tilification is done in real-time as Tiles are added or removed or when Tiles are modified. But of course, the issue is how to best solve the above problems:
1. For the "I want to use this tile as filler, please don't redundantly reduce it" case, I thought perhaps a combo-box selection for each listview line item containing the choices "Fill to next 1KB", ... "Fill to 8KB" would work.
2. For the background-vs-sprite page case, I thought perhaps splitting the list-view into two separate list-views would work. Or an option in the combo-box again, something like "Start 4KB page here".
3. For the identical-tile-in-bankswitched-bank case, I thought perhaps another option in the combobox for each listview line item "Don't remove" or similar.
So the questions. Have I considered all the cases or are there more? Does the combo-box per line item solution make sense or seem cluttery? The default for the combo-box would be "Reduce if possible" or similar phrasing.
I'd appreciate feedback from anyone that may have attempted to use the Graphics Bank in NESICIDE. If the solution to that equation is the empty set, I'll entertain feedback from anyone.