Recently, I have been figuring out how the text is formatted in the original Super Mario Bros game for the NES, since there was not much I could find on the web. Turns out it actually works like this:
The bytes for the text are just the tile offset starting at the text in the CHR data. You can also use tiles outside of the text region, making it show as garbage. Funnily enough, A shows up as hex value 0A and so on. Soon, I will make a program that can decode and encode the text without having to figure it out.