更新と描画は完全に分けています。
ただ、1文字ずつ表示するのは全体のループを繰り返さないと
やっぱり出来ないのかなーと思って。

main:
while(メインループ) {
// ステージの更新・描画
}

stage:
// 敵や人の更新
// プレイヤーの更新
// 敵の描画
// プレイヤーの描画

enamy:
update:
// ↑が押されたらtalkCnt
  draw:
// talkCntがあればメッセージ表示処理

common
メッセージ表示処理:
DrawFormatString // ★ここだけをループして処理したい。

かなり抜粋したんですけど、メッセージ処理に文字列渡せば描画してくれることがしたいです。