dqiv-nds-en-script-patcher
dqiv-nds-en-script-patcher copied to clipboard
Information request, minor bugs, an oddity
Enemy names aren't capitalized; why is Master Kung's? If the enemy names and item names are capitalized in the file that holds them, will they be read?
Is there a detailed set of notes/breakdowns for what opcodes do with the scripting system? Also, a big thing for me so far in playing this is that the way text is formatted in conversations is really irritating. If there's an opcode for the current speaker, instead of doing "Alena*: This is a fabricated line", why not just do "*:" unless the opcode is different than the last time it appeared in that box?
I tried to do some reverse engineering of my own, but I don't have a current loader for NDS and the last time I did anything useful for NDS it was when no$gba was still the top option.
Enemy names aren't capitalized; why is Master Kung's? If the enemy names and item names are capitalized in the file that holds them, will they be read?
I believe these strings are read directly from the English script files, so if it's already capitalized there it would be the same in-game. I think it should be possible to patch those files to capitalize names, just time-consuming to make sure only the correct names are capitalized. This is something I can look into in the future when I have time to revisit this, or would accept a PR which adds this.
Actually, now that I think about it, some name strings may be hardcoded in the actual game code rather than in .mpt
script files accessible by my patch, so it may not be straightforward to change those. The first step would be to grep over the .mpt
files to see if strings like "foo dog" are present, if so my script can be updated to capitalize them. If not, they're in the game code and would need a different way of patching.
Is there a detailed set of notes/breakdowns for what opcodes do with the scripting system?
I included notes on how my script is interpreting the different control characters in this section of the README: https://github.com/concreted/dqiv-nds-en-script-patcher#approach This captures my best understanding of what the control codes mean and how the script handles them. I have not found any other documentation on the scripting system unfortunately.
If there's an opcode for the current speaker, instead of doing "Alena*: This is a fabricated line", why not just do "*:" unless the opcode is different than the last time it appeared in that box?
It's been a while but I think having the current speaker name repeated every time is how it works in Japanese, so I kept it that way for parity. That said it should be possible to strip duplicates of the current speaker out during patching. I would definitely consider adding that as an option, or would take a PR adding that.
I'd forgotten how the DS works. It's a bit of a headache of a system. Things of mild interest:
Overlay 4, 5, 7, 8, 10-14, and 17-23 are shared by the US and JP releases. Out of these, 0, 2, 3, 6, 15, and 16 are of the most interest. I'm not sure what any of them do.
I haven't had time to dig into the actual reverse engineering much, but I figure I'll update this with notes as I go. I genuinely have no idea what I'm at this point and I'm afraid to ask.
The ARM7 code for the game is identical between versions, which isn't a big surprise. In Data, /ACT, /CAMERA, /DATE, /EFFECT, /FIELD, /MASK, /MONSTER, /PAM, /PARAM, are /SOUND are all identical.