This is a really hard problem, but a solution probably needs to cover at least this:
From the user:
The location of the start of blank space to move arrays to. The block needs to be within a single bank for SNES, not sure what for others, just to ensure pointers work right.
Which arrays to move and what their new lengths should be.
Obstacles:
Enough blank space must be available for all moved things to fit. At least on SNES, things that were part of one bank probably need to stay within one bank. Not sure what similar restrictions may apply to other consoles.
Arrays that are referenced with the same ID (e.g. weapon/armor/item indexes in 7th Saga) need to be kept contiguous. So if one gets moved, all must be moved.
Parallel arrays must be expanded in tandem.
String pointers need to stay alive. Either everything must start out pointing to a dummy string, or copy the old strings to the start of the empty block and update them. (for absolute pointers they can be left in place). Modifiers in the updated map need to be changed too.
Index pointers need to stay alive, which probably means an index should always be moved along with its target.
Any code that references the start of the array needs to be updated. This is probably the user's problem and would require a debugger to find.
Should it be up to the user to build the new map first, and then the program just dumps with one map, patches with the other, and its their fault if it doesn't do what they expect? That's probably the easiest way to get the functionality in there, but automatic remapping would be a really nice thing to have...in the far future.
This is a really hard problem, but a solution probably needs to cover at least this:
From the user:
Obstacles:
Should it be up to the user to build the new map first, and then the program just dumps with one map, patches with the other, and its their fault if it doesn't do what they expect? That's probably the easiest way to get the functionality in there, but automatic remapping would be a really nice thing to have...in the far future.