gcopyをHSPで再現してみると以下のようになりました。
#module #deffunc pcopy int p1,int p2,int p3,int p4,int p5 sel=ginfo_sel pos_x=ginfo_cx pos_y=ginfo_cy repeat p5 :y=cnt repeat p4 gsel p1 pget p2+cnt,p3+y r=ginfo_r g=ginfo_g b=ginfo_b gsel sel color r,g,b pset pos_x+cnt,pos_y+y await loop await loop return #deffunc vcopy int p1,int p2,int p3,int p4,int p5 sel=ginfo_sel pos_x=ginfo_cx pos_y=ginfo_cy gsel p1 mref vram1, 66 sx31=(ginfo_sx*3+3)&0xfffffffc sx91=ginfo_sy*sx31-sx31 gsel sel mref vram2, 66 repeat p5 :y=cnt repeat p4 index =sx91-y*sx31+cnt*3 index1=index-p3*sx31+p2*3 index2=index-pos_y*sx31+pos_x*3 poke vram2,index2+2,peek(vram1,index1+2) poke vram2,index2+1,peek(vram1,index1+1) poke vram2,index2 ,peek(vram1,index1+0) loop loop redraw 1 return #global buffer 1 color rnd(256),rnd(256),rnd(256) boxf repeat 100 color rnd(256),rnd(256),rnd(256) circle rnd(ginfo_sx),rnd(ginfo_sy),rnd(ginfo_sx),rnd(ginfo_sy) loop screen 0 pos 0,0 :gcopy 1,0,0,640/2,480 pos 640/2,0 :pcopy 1,640/2,0,640/2,480 wait 100 cls wait 10 buffer 1 color rnd(256),rnd(256),rnd(256) boxf repeat 100 color rnd(256),rnd(256),rnd(256) circle rnd(ginfo_sx),rnd(ginfo_sy),rnd(ginfo_sx),rnd(ginfo_sy) loop screen 0 pos 0,0 :gcopy 1,0,0,640/2,480 pos 640/2,0 :vcopy 1,640/2,0,640/2,480
1回目はpsetで再現して、
2回目はvramで再現してみました。
スクリプトが見難い点はご了承ください
vramでやった方がもちろん速いのですが、
DLLを自作して使用したら、これより速くなりますか?
(実際作っているのは標準命令にない命令で、計算もたくさん使います)
計算速度、描画速度などどれくらい速くなるものですか?
もしよければgcopyをC言語で(DLL用に)再現したスクリプトを貼ってください