I haven't found any way of switching between the english and japanese text yet and it doesnt look like it was ever programmed in so you'll probably need to extract the english dialogue and replace the japanese dialogue.
That would be a shame if the game wasn't programmed for both languages despite the script being there. However, even if Arcadia453 changed each pointer from the Japanese dialogs to the English counterparts (which is probably what he'll have to do), this wouldn't necessarily change how the font's width of the Japanese characters are displayed to how the English font width should be displayed would it? Meaning, the game also may not be programmed to display a VWF, right?
Just put -$4000. The sample command files demonstrate this ability.
Not in the current build in the Utilities section its not. Using minus in that version didn't work for me either hence my ugly work around.
So it's not just me.
Just make a copy of the ROM and test to see if negative offsets work properly.
No dice. It just outputs other non-text data which is not part of the script or crashes the program. Unless I'm doing this wrong, which I think I am (and I've never used Cartographer before but I think I understand all the commands as I can get a script dump of my game, just not with the POINTER_RELATIVE method).
Here's what I'm doing:
#BLOCK NAME: Navi Hints 1 (POINTER_RELATIVE)
#POINTER TABLE START: $1AC830
#POINTER TABLE STOP: $1AC859
#POINTER SIZE: $04
#POINTER SPACE: $04
#POINTER ENDIAN: LITTLE
#ATLAS PTRS: YES
#BASE POINTER: -$3FE7F080 //subtract $3FE7F080 to each pointer to get
#TABLE: Navi Hints.tbl //the string address
This is just a small section of the table I was using as a test to see if I could get a dump of what I need this way. The pointers are 32bit (which is probably the part confusing me) and there are 4 bytes of code between each pointer. The first pointer located at address 001AC830 has a value of 4C D5 06 80 which points to a string at address 0016ED0C.
If I take the string address' last two bytes ED 0C and reverse them, 0C ED and add 3FE8 it gives me the first two bytes of the pointer 4C D5. If I take the string address' first two bytes 00 16, and reverse them, 16 00 and add F080 it gives me the last two bytes of the pointer 06 80.
Now if I take the whole string address (00 16 ED 0C) and reverse it (0C ED 16 00) and add 3F E7 F0 80, it gives me the whole pointer value of 4C D5 06 80 (which is the correct pointer but in the amount I was adding, I had to subtract 1 from the second byte based on what I wrote above). This is what I understand based on all the documents I've read here which did help me find these type of pointers.
So wouldn't that mean that taking the pointer value 4C D5 06 80 and subtracting 3F E7 F0 80 give me the string address of 0016ED0C (but reversed)? In my scenario, shouldn't -$3FE7F080 be my BASE POINTER? I also tried -$F0803FE7 but both of those crashes the program (out of range?). Maybe I'm not understanding this right or I'm looking at it wrong.