Now that I got the extremely long side tangent of the table standard
mostly out of the way, I've gone back to this.
As you can see from this image
, I've now got the program set up revolving around a project tree. How it works right now is you select the file/s to dump from. Then you add any combination of building blocks you'd like. The building blocks (StringTable, PointerTable, PointerTableTree, PointerTree, AutoDiscoveryTable, PointerList, Pointer, and String) available cover all possible functions my dumper is able to do. Any combination of those items can be added to the files to dump whatever you need in the fashion necessary.
This by itself could be tedious depending on the situation. For instance, my Herc4 example contains decompressed data files 'decompX.bin'. In each one I simply want to dump the contents. I don't want to have to add StringTables to all of those files individually. So, I have a shortcut option 'Add to all Files' so I can add a newly defined building block to all files at once. That solves that. All of the building blocks will generate and dump associated subblocks or strings that may be necessary. So now whether you're dumping from a single ROM file, or various other data files, you can set up and dump sanely so far. It seems OK for the situations I've tried with it.
Where I have once again backed myself into a user interface design corner comes with insertion. With this hierarchy, how do I insert? By default the hierarchy is set up to insert directly back into the same files and places the data came from. Maybe that's OK for a single basic ROM, but that's not desirable for data files or any relocation. How would I go about inserting all those strings into a new set of files other than 'decompX.bin'? How would I go about putting all of those strings directly back into a single ROM file instead of multiple dump files? You can't just start with a clean slate and redefine all file and tables because you want to keep the dump hierarchy, all those strings, and the text edits you just made. I couldn't think of any sensible way to easily accomplish such simple insertion variations. That makes me think my hierarchy perhaps should not descend from files as it does. However, when I go down that line of thinking, it seems to make the dumping interface more complicated if it does not descend from files. I thought of having the file be simply an attribute to the building blocks. However, it seems to make logical sense to me to just select a bunch of files and tell it what to dump from them rather than create a bunch of blocks (that may all dump from the same file) and tell it the same file all the time.
It's true, engineers do suck at user interfaces.
Any ideas? I can see why everybody else just uses an external command file and skips all this.