VRAM で文字列リフレインを gcopy でタイル状にコピーされる裏ワザを使って

文字列のリフレイン - Gonbeiの日記 - gonbeiグループ で VRAM と gzoom を使って文字列のリフレインをしていますが、HSP3ラウンジ HSP3.0a 版のバグ?の No.13 の gcopy でタイル状にコピーされるという裏ワザを使ってできないかなとやってみました。

#module
#deffunc refrain str _text, int n, var dest
    if( n <= 0 ) : dest = "" : return
    text = _text
    len = strlen( text )
    bufWidth = len * n
    osel = ginfo_sel
    buffer 29, bufWidth, 1, 1
    mref vram, 66
    memcpy vram, text, len
    gmode 1, bufWidth - len, 1
    pos len, 0
    gcopy ginfo_sel
    sdim dest, bufWidth + 1
    memcpy dest, vram, bufWidth
    gsel osel
    return
#global

refrain "こんにちは!", 1024, dest
mesbox dest, 640, 480

出来てます。パレットモードにしたので 3 の倍数とかで幅を調整する必要はありません。これは 12 の倍数の文字数でなくても動きます。

インフォメーション

公開日時
2007年12月11日 午前7時15分53秒
最終更新日時
2007年12月20日 午後10時4分18秒
カテゴリ
HSP