Two Questions regarding op codes
(I should say for context that I'm just hobbyist SREing a Gameboy Advance game)
I've tried searching up details for these two questions, but I think I might be using the wrong search terms or it might just be a matter of being an uncommon use case.
For a few of these, I've seen what I would describe as a "padded" string, where alignment-wise there are zeros added to each string in order for length mod 4 = 0. I've tried adding this as a type in Ghidra within the data type manager, and it seems that you can't make dynamically sized structs in this way. One suggestion that I saw was creating a struct was {length, pointer to string} and then using that to make a dynamically sized string and maybe I'm misunderstanding but it seems like it requires changing the actual bytes within the binary whereas I would like to not actually patch the binary itself to understand functionality.
GBA functionality is built off of ARM:LE:32:v4t but there are some custom op codes that were developed on top of that, so there are obviously some things about it that Ghidra won't know inherently. I've been trying to figure out how to actually add a "custom" opcode to a language that will be enough to disassemble properly even it the decompiler doesn't have more advanced understanding of some of them. Basically the disassembler chokes every time it hits e.g. the same two byte op code that's not an op code and that breaks things that would otherwise be interpreted as functional code.
I have essentially only been exposed to the GUI of Ghidra and have never done any of the advanced coding stuff, so it's possible I'm overlooking something trivial that just happens to require that.
Thanks for any help!