I've been a little busy recently, but just to keep this up to date, I did figure out the first part of that table of tables. I had the obvious idea that I could divide the total file length by 2048 to get the number of sectors. Then I multiplied the decimal of the 2-byte word from the pair I talked about in my last big post by 2048 (in scientific mode to avoid rounding), and the results were the same. So that definitely points to the sector that each "sub-file" starts at. I also found two more similar tables in the dump that correspond to the hex code at the start of the other two .bin files in the SECT folder of the .iso. So now I'm absolutely positive that this is one of the tables that I'm looking for.
EDIT: Ignore what I said in this paragraph here before if you saw it. The second word is the length of the sub-file. So the table heading each .bin file in the .iso tells the game what sector a sub-file starts on and how long it is. It does not give any indication of how it decides where to put it in RAM. I may still be able to change these values to add a sector and have it load properly though, I don't know. Still something I'd hope to avoid.
This is all probably important, but doesn't really help me with the original problem. I found the pointer table for sub-files, but not the pointer table for pointer tables within a sub-file that I assume exists. That brings me back to the start of the sub-file, which looks like some kind of table, but I've yet to figure out how it works, since it doesn't ascend consistently all the way through.
EDIT: Starting with the first number on the "table", it ascends every other word, while the words in between are more random. This may be another location/size kind of thing.
April 20, 2016, 04:11:10 am - (Auto Merged - Double Posts are not allowed before 7 days.)
EDIT 2: My guess was correct. The word-pair table within a sub-file gives the location (relative from the start of the sub-file) and length of each "asset" (text, images, etc.) contained in that sub-file (no adjustment). So each sub-file uses the same sort of indexing structure that each .bin file uses. As it turns out, there is a whole bunch of code preceding the text pointer table and text itself that is a part of that "asset". I don't know what all that code does, but hopefully it's not important for my purposes. I think this is as far as it goes. I don't think an individual asset contains a table for tables, at least no that I've noticed. So I guess my question is, does this sound like I've found all the tables I need to start trying to alter text size? Maybe add a few bytes and change the subfile tables to give the right offsets and lengths? Start messing with Cartographer and Atlas? I'm not sure what my best next move is.
Also, thanks to STARWIN. The addresses are based on a 2048 filesize, which was part of why I couldn't figure the table out before.
April 20, 2016, 01:52:35 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
EDIT 3: GOT IT! I'm still not sure about adding sectors and changing file size, but I added 4 bytes to a sentence of text, deleted 4 bytes of the 0x8C buffer at the end of the sub-file to keep the file size the same, altered the text and asset pointers, and inserted the updated file into the iso. The game worked normally from startup, and the new text displayed.
So now my to-do list is down to:
1. Learn Cartographer and Atlas so I don't have to manually alter all the hex code
2. (Maybe optional) Learn how to rebuild an iso with altered file sizes, in case a particular sub-file doesn't have enough extra space at the end for additional text