I looked at the original J ROM:
Text does not appear to be compressed at all. But it does undergo some processing.
If you look at the pattern tables in FCEUX, you'll see that textual characters start at tile $A0.
The text itself is stored as follows:
bytes 00-5F = output tiles $A0-$FF normally (ex, $44 will output the numerical '0' tile, $5F is a space, etc)
bytes 60-7F = will output tiles $00-$1F -- which are not text so this will probably output garbage and shouldn't be used
byte 80 = will likely cause the game to crash or behave strangely. Do not use
bytes 81-DF = output tiles $A1-$FF with a little " character above them (tile $CD). So byte 11 will output つ ... but byte $91 will output づ
bytes E0-EA = output tiles $F0-$FA with a little circle character above them (tile $CC). So byte 51 will output ひ... but byte E1 will output ぴ
bytes EB-FF are control codes, and are used to do special things. I haven't figured them all out, but you can probably tinker with them by experimenting.
EB = I have no idea what this does -- it seems to prep something in memory. Maybe it's used in combination with a different control code?
F4 = Print a character's name. Whose name is determined by a byte following the F4. So "F4 00" would print character 0's name. "F4 01" would print character 1's name
FC = New Line + something else????
FD = New Line + something else????
FE = New Line
FF = End of String
the rest = ??? Like I say you can play with them to figure them out if you want. If interested the code for text processing effectively starts at 0x3C403