文字列のリフレイン - 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 の倍数の文字数でなくても動きます。