I've just fixed a bug in a GBA game, the Meteorite Mania quest from Sword of Mana.
When trading items with the NPC, he's supposed to tell you that your bag's full if you have 99 of the item he wants to give you.
That works fine in the original Japanese version.
But for some reason in the English versions, that dialog was left out - and the NPC was not informed
So if you have 99 of the item an empty/invalid dialog will be loaded and the game will soft lock.
Ideally the fix would be to restore the missing dialog, I'd want to do that, but it would require freeing up some space in the dialog data block as there's currently not any room for new dialog.
Some space could be reclaimed by making more use of placeholders:
For example, replace the text "Pikachu" with "{P_25}" from what I remember the game / English translation had quite a few instances where I could do this, placeholders that aren't always being used etc.
If I'm wrong and we can't reclaim (enough) space, then we could move the entire dialog table, the easiest way would be to extend the rom which is overkill.
Another possibility would be to branch to some custom code to use a modified text loading method and read the dialog from somewhere else, as there is free space elsewhere in the rom which could store the new dialog.
But I'd rather not add custom code to free space because there's no guarantee that another person won't use that same free space for their own modification, and thus the two patches break each other. Not a big concern but it's something to consider.
The fix for now is making the NPC's missing "full bag" message only appear if you have 255 (or 100 etc) of the item instead of 99.
The game caps item limits to 99, and so the only way to have a quantity of 255 would be through hacking.
So now the NPC will see you have 99, think that's fine and proceed to give you another one yet the game will not actually increase the count, it will remain at 99.
Better than crashing the game!
Minor bug that probably very few people have ever encountered, but cool to fix something.
When trading items with the NPC, he's supposed to tell you that your bag's full if you have 99 of the item he wants to give you.
That works fine in the original Japanese version.
But for some reason in the English versions, that dialog was left out - and the NPC was not informed
So if you have 99 of the item an empty/invalid dialog will be loaded and the game will soft lock.
Ideally the fix would be to restore the missing dialog, I'd want to do that, but it would require freeing up some space in the dialog data block as there's currently not any room for new dialog.
Some space could be reclaimed by making more use of placeholders:
For example, replace the text "Pikachu" with "{P_25}" from what I remember the game / English translation had quite a few instances where I could do this, placeholders that aren't always being used etc.
If I'm wrong and we can't reclaim (enough) space, then we could move the entire dialog table, the easiest way would be to extend the rom which is overkill.
Another possibility would be to branch to some custom code to use a modified text loading method and read the dialog from somewhere else, as there is free space elsewhere in the rom which could store the new dialog.
But I'd rather not add custom code to free space because there's no guarantee that another person won't use that same free space for their own modification, and thus the two patches break each other. Not a big concern but it's something to consider.
The fix for now is making the NPC's missing "full bag" message only appear if you have 255 (or 100 etc) of the item instead of 99.
The game caps item limits to 99, and so the only way to have a quantity of 255 would be through hacking.
So now the NPC will see you have 99, think that's fine and proceed to give you another one yet the game will not actually increase the count, it will remain at 99.
Better than crashing the game!
Minor bug that probably very few people have ever encountered, but cool to fix something.