レスありがとうございます。
>es_bufferは2画面のどちらに転送するのかといった問題
というのがよく分かりませんでしたが、DirectX表示中もHSP標準バッファで裏作業できるので、
HSPとDirectXの切り替えコストはあまり考えなくてもいいというか、
そもそも毎フレームでes_cls~es_syncの繰り返しをかけてるので…?
同じく検証はしていませんが、以下は自分の想像なので間違えがあれば指摘してやってください。
まずURLのせていいか分かりませんが以下のサイトさんを参考にします。
http://www.tcn.zaq.ne.jp/akasy005/hsp2.htm
>gcopy 0,0,0,32,32: 2453ms
>gcopy 0,0,0,64,64: 3200ms
>gcopy 0,0,0,160,160:13925ms
(※抜粋、すべてパレットモードとのこと)
条件はいろいろ違うので一概には言えないでしょうが上記データを信用すると、
同じ面積をコピーする場合、小さく複数回より大きく一回ですませた方が速そうです。
自分の案ではマップ作画はステージデータを読込んだ直後に1回だけで、
後はそのバッファを保持しておくだけなので、
たとえば640×480を32×32ずつのセルで埋めるとした場合300回のgcopyが必要ですが
es_bufferの方がかなりコストがかかるとしてもgcopy300回よりは速そうな気がしたんです。
<適当なサンプルというか手順>
#include "hspdx.as"
;// 初期化など
screen 0,640,480,0
redraw 0
buffer 2,640,480,0
;// ID2にデータやチップファイルを読込んでマップ全体を作画(実際は解像度以上)
es_ini
es_screen 640,480,32,,useWindowMode,useDirect3D
repeat
es_cls
;// キー判定や位置計算など
gsel 2
es_buffer 2,0,$000000,1,useDirect3D
es_copy 2,0,0,640,480
;// 自機や敵などその他の描画
es_sync
await
loop
;// 後略