This is all done very easily with HuC! put_string() takes in an X and Y that is the tile offset you want to write at...
3,2 for example would put a letter at 24,16 (each letter is 8x8, so 3 cells from the left is 24, 2 cells down is 16).
You can just write across the screen and increment the X by 1 until you reach screen capacity, and then just bump the Y down and start the whole process over.
The trickiest part in all honesty, will be getting it to happen with a nice frame delay between each letter that you write, so that it looks smooth.
Too fast = why even bother
Too slow = kill me now, this is taking forever to read!
You can store the entire chunk of text in question in an array, like you mentioned, and just step through it one character at a time and write them to screen. Put some sort of line break delimiter in there (* or @ for example). Any time you encounter that character in the array, kick the line down and continue onward. It's really simple if you do it this way.
If you have Insanity, put it in your system with a System Card 2 instead of 3. Watch the CD Error screen. (You can grab the demo from aetherbyte.com and do it in an emulator instead if you want).
Is this what you want to happen? If so, it's pretty easy to set up. If you have trouble with it, I can help out.
I fiddled around and have it doing it in the Protocade light cycle game too. That one plays sound too. So it's all blerpy.