Gonbei さんにまたまた便乗されちゃいました(うれしいです)。
先日のエントリーの文字列のリフレイン。これを VRAM と gzoom を使ってやってます。
正規表現置換で画像処理(HSP) - Gonbeiの日記 - gonbeiグループやvramをinstrしてあたり判定 - Gonbeiの日記 - gonbeiグループ、HSP3ラウンジ ■ 質問以外の どうでもいいスレ 2007の No.48 なんかを見て前から気になっていたんですが、ちょうどいい機会。
VRAM をテキストとして処理したり利用したりするので簡単なものをとりあえずやってみました。減算コピーで小文字アルファベットだけで構成されたテキストを大文字化(小文字アルファベット以外の文字も巻き添えになってしまうし)。
#module
#defcfunc to_upper str _text
text = _text
len = strlen( text )
bufWidth = len / 3 + ( len \ 3 != 0 )
osel = ginfo_sel
buffer 29, bufWidth, 1
mref vram, 66
memcpy vram, text, len
gmode GMODE_SUB, bufWidth+2, 2, 256
color 32, 32, 32
grect bufWidth / 2, 0, 0
memcpy text, vram, len
poke text, len
gsel osel
return text
#global
mes to_upper("thequickbrownfoxjumpsoverthelazydog")
mes to_upper("konnnitihakonnnitihaAA")
にしても、このテクニックって黒魔術だなぁ。(参照:プログラ魔法学に関する考察 - 西尾泰和のはてなダイアリー)
少しスクリプト修正。 12 の倍数に丸めていましたが、高さが 1 の場合は 4 の倍数を気にする必要はないみたいです。あと 3 で割るのを忘れていました。あと念のために grect する幅を少し大きくしたり。