the thing i really hope for is that this lets us finally upgrade the game's input code. more joysticks, more axes, more buttons, and more things to bind them to.
I'm not really sure how well this new code will handle input code changes, in all honesty. The original pilot file rewrite that I was working on before was part of a massive rewrite which included new input code. So the new input code was designed from the start for maximum flexibility and in turn the original pilot file rewrite was able to take full advantage of those changes in order to handle pretty much any degree of input setup. This new code doesn't have that luxury, so it is still somewhat bound to the existing control/input setup.
I did leave some room in the new format for a bit of upgrading without breaking anything though. The big thing with the new code is that it's sectioned off and has safeguards to help prevent corruption. This means that stuff can be added and removed from pilot files without really breaking anything. So even if the some extra has to be added to the pilot files in order to add support it shouldn't require breaking the pilot files to get it working. Builds previous to new input code could still read the new pilots, but the extra control information would be lost.
Joysticks and axes, probably needs more than just this. But adding bindable commands, I think that's definitely more feasible now. In fact I think it was feasible before. I've had a FotG pilot with a new key bind added to it, and it's been working fine going between builds that do and don't support the new bind. I would have probably sought to get the changes committed earlier this year but with the new pilot code on the horizon I decided to wait for that.
It does break pilots actually. It will save the number of binds to the pilot file on save, but there is no error checking on read to make sure that too many binds aren't read back. So in a build without the extra bind(s), reading a pilot file with them, it can write past the end of the Control_config[] array. You only got away with it because Control_config[] is CCFG_MAX+1 in size. And I'm not sure exactly what the +1 is for, so something might have been messed up in there and you didn't realize it.
The new pilot code does fix that oversight though.
