肥後もっこすさん
こんにちは。Dripです。
その動作は仕様というかバグかと思います。
HSPが修正されるまでの間、以下のようにgzoomの動作を修正するスクリプトを噛ませて凌ぐと良いかと思います。
HSPが修正されたら#ifdef内のスクリプトを削除することでgzoomの動作はプログラム全体でHSP本来の動作に戻ります。
この修正スクリプトは#ifdefで動作を切り替えていますので、HSP3Dishが読み込まれている間しか機能しません。
もしDishと標準HSP互換のプログラムを組んでいる場合でも同じ動作結果になるかと思います。
#include "hsp3dish.as" //この行をコメントアウトしても描画結果は標準版と同じです。
#ifdef _HSP3DISH //Dishのgzoomの動作を標準動作と合わせるマクロを登録
#undef gzoom
#define gzoom(%1,%2,%3,%4,%5,%6,%7=0) gzoomDish %1,%2,%3,%4,%5,%6,%7
#module
#deffunc gzoomDish int zx,int zy,int id,int px,int py,int sx,int sy,int mode
if zx<0:pos ginfo_cx+zx
gzoom@HSP zx,zy,id,px,py,sx,sy,mode
return
#global
#endif
//動作テスト
buffer 3:picload dir_exe+"\\hsptv\\hsptv_img.png"
gsel 0
redraw 0
gmode 2 //ところで、Dishの場合gzoomはgmodeが効いてしまう。(仕様??)
pos 100,50:gzoom 96,96,3,0,320,64,64
pos 100,150:gzoom -96,96,3,0,320,64,64
color 255:line 0,50,ginfo_winx,50
color 255:line 100,0,100,ginfo_winy
redraw 1
問題を修正してもらうためにHSP3.7βテストのスレッドに報告したほうが良いかもしれません。
ところで、Dish利用時はgzoomではなくcelput命令を利用すればgzoomよりも美しいズームが可能です。
(ピクセルではなく実数での倍率指定によりアンチエイリアスを用いた滑らかなズームになり、gmodeの動作も標準版とある程度互換が取れます。)
celputのようにグリッドに縛られない描画をしたい場合はgrotate命令でも反転描画が可能です。
これらの利用もご検討ください。