One of the big 3H dataminer is DeathChaos. I got interested in their stuff when I saw that they datamined the learnsets of 3H units before they were released in the DLC. 99% of the time dataminers have a github where they document how to get their findings.
Anyway, I had the same question you did. To figure this out, you consult
https://docs.google.com/spreadsheet...ulVos3j8dtPBr0mDB-vLWib54/edit#gid=1616992074 made by 3096 and find out that the last update to nx/data/fixed_persondata.bin was in the final dlc patch 4. So you dump the romfs of dlc 4 (easy to do in yuzu, simply right click the rom, but on a switch I believe you will need hactool or something) and you will find files such as DATA0.bin and DATA1.bin with extractIndexNum.py
https://github.com/three-houses-research-team/Throne-of-Knowledge/blob/master/extractIndexNum.py. It will the 12th bin or named something like 12.bin I believe. There used to be a .bat script that you simply clicked on and it autorenamed files to their
index number (in this case 12) - actual filename (in this case fixed_persondata.bin) , but I believe that one didn't really work, at least for me and it doesn't seem to be on that github anymore.
When we normally open up something like a bin file we'll usually do that in a hex editor because there are no specialised readers that can open it up. There's a special type of hex editor called the 010 editor by sweetscape which lets people write these mini script things that will automagically locate what sections contain interesting data and will read that data into a format that people can understand. After loooking through
https://github.com/three-houses-research-team/010-binary-templates you find that fixed_persondata.bin by DeathChaos sounds awfully similar to PersonData.bt. PersonData.bt also seems to have all sorts of interesting fields such as SkillListStructure etc in it which further makes you suspicious that this is the right .bt file. PersonData.bt also has
File: Person.bin at the top of it, so maybe this isn't it? But anyway, let's experiment.
You try opening fixed_persondata.bin in 010 editor and nothing is highlighted. So you go to Templates/Open Template and open up your downloaded
PersonData.bt template. You open up your fixed_persondata.bin. Now there's a tiny menu under the
fixed_persondata.bin light blue tab called
Run Template: PersonData.bt. You click that template from the dropdown menu and voila, it says Template executed successfully which means this is most likely our correct file.
Go to view/inspector windows and make sure your Variable window is showing. If you expand struct File file, there are a lot of interesting names there:
View attachment 199400
Let's check the spell list for Aelfric.
He's character id 1044 according to Falo's save editor.
You open up the spell list table and find...
View attachment 199401
It ends there. But for some reason the characters don't match up?
So you go back onto DeathChaos' discord, search for anyone with a PersonData.bt who can reveal the pertinent information and find out that on 23/01/2020 HeartlessSeph made a personal revision called PersonData_-_Revised.bt available at
https://cdn.discordapp.com/attachments/604337130650730498/669680280365432832/PersonData_-_Revised.bt
Which you load into your 010 editor.
You now have some npcs.
You have Sothis, who now has an invisible name, who has no spell list.
View attachment 199402
Rhea, who has spells.
View attachment 199403
Jeralt who has some spells
View attachment 199404
Aelfric who has some spells
View attachment 199406
So that's how I found my answer. In each character block, you will also find growths and stats. NPC characters won't have supports, as evidenced when you load your save file with them injected.
Even though NPC characters may not have spells, you might be able to give them spells with falo's save editor (save editing be a lot easier than romhacking, probably). What you basically do is export the .character file to your hex editor of choice as in my example here
https://gbatemp.net/threads/fire-emblem-three-houses-general-hacking.544144/page-150#post-8962018 There is a list of spells and what ids correlate with them in
https://github.com/three-houses-research-team/010-binary-templates/blob/master/3H_WepEnums.bt under enum<ubyte> SpellID. Simply, use a decimal to hex converter
https://www.rapidtables.com/convert/number/decimal-to-hex.html to get the right values, edit em in and reimport the .character file.