I did a Banjo-Kazooie Spanish translation some time ago. I was able to edit almost everything: texts, graphics, etc. But there was a strange problem when I tried to edit the menus. The slightest change made the game go crazy. It had some random problems like Banjo being uncontrollable, and the Bottles tutorial couldn't be completed. And it wasn't a compression problem, the menus appeared translated perfectly. Debugging for a while, I saw that the game did some kind of CRC check. It generated a value based on the menus and code data, then compared that value with another one. If they were different, the game went crazy. I changed that value it was comparing with, and the problems were fixed, but then appeared some new ones. I couldn't fix it and I couldnt translate the menus.
Now I've started to translate Mario Party. I've managed to make a decompressor/compressor and I've been able to edit the font and some graphics thate were compressed. Then I wanted to change some character widths of the font, and I found the table uncompressed in some part of the ROM. I edited it and... Mario Party turned into a crazy party (well, not as crazy as Banjo-Kazooie). The game has some weird flickering in the intro. Although the character widths and the text appear perfectly. This only happens when I change some byte in that character table.
Debugging, I found again that the game was checking the data at boot time (if I change the character widths in RAM when the game is already booted, everything works fine). Then I found that the code that does this check is from the CIC. So I don't know how to handle this. I thought CIC's purpose was to let the N64 know if the cartridge is original. So I don't know how can affect to the game behaviour. And BTW, I make sure to recalculate both CRCs. The game doesn't boot if I don't.