You’re correct in saying that there are memory limitations to support data. I’m not sure if you’re familiar with RAM character data structs, but they’re essentially what hold the data for each character throughout the game, including their class, stats, inventory, weapon levels, whether they’ve moved this turn, and yes, supports.
This is not the same as save data, however. Whenever save data is updated (after movement, battle, etc), it copies a bunch of data from these character structs (among other things), and efficiently packs what it needs to save into the .sav file.
If you want to allocate more data for supports, you would need to jump both of these hurdles. Save data sounds scary, but you’re in luck because Stan’s Expanded Modular Save hack would make this trivial.
Making more room in the RAM character struct (or potentially elsewhere in RAM) would be more difficult. This is what support data here looks like in vanilla. (Taken from Teq’s Better Notes.txt -> Character struct):
Location | Type | Data stored |
---|---|---|
0x32 | Byte | Support #1 |
0x33 | Byte | Support #2 |
0x34 | Byte | Support #3 |
0x35 | Byte | Support #4 |
0x36 | Byte | Support #5 |
0x37 | Byte | Support #6 |
0x38 | Byte | Support #7 (For non-player units, has char byte of leader) |
0x39 | Byte | Bitfield; each bit is a support partner (in the order they appear in) and is set if a support has been obtained in that chapter |
(Wow this table thing is kind of neat in Discourse. I just happened upon it/it autogenerated when I copy/pasted.)
Anyway, each RAM character struct is 0x48 bytes long, and it’s kinda packed except for 2 free bytes. As is, this doc suggests there’s room for 7 supports, though I had some interesting occurrences with the 7th byte when working with my Support Rework. For example, it’s unioned with enemy leader bytes, and apparently vanilla doesn’t clear that byte after you change an enemy’s allegiance to a player.
If you can’t put extra support data within the character struct, you can put it elsewhere in RAM similarly to what the Skill System has done with where it stores rallies/debuffs. Both options would require editing any functions that read/set support data. Either one would require using Expanded Modular Save to ensure that this new data gets saved/loaded from your save file.
So in short, allocating more space for supports is definitely possible but potentially difficult depending on how many supports you want to add.