ゆーさんのソースを元にpeek,pokeバージョンにしてみました。
dialog "",16
if stat=0:end
fileimage=refstr
buffer 1
picload fileimage
xsize=ginfo_winx
ysize=ginfo_winy
screen 0,xsize,ysize
gsel 1
gsel 0:redraw 0
mref vram0, 66;
gsel 1;
mref vram1, 66;
vwidth = ( (xsize*3) + 3 ) & 0xFFFFFFFC;
repeat ysize
index_h = cnt * vwidth;
repeat xsize
index = cnt*3 + index_h;
poke vram0, index, peek(vram1, index); // B
poke vram0, index+1, peek(vram1, index+1); // G
poke vram0, index+2, peek(vram1, index+2); // R
loop
loop
gsel 0:redraw 1
mrefでそれぞれのウィンドウやバッファのVRAMにアクセスできるようにして
あとは1ドットずつ読み込み(peek)と書き込み(poke)を同時にやってるだけです。
vwidth = ( (xsize*3) + 3 ) & 0xFFFFFFFC;
この計算はメモリー上での画像横幅を算出しています。
VRAMに関しての詳しい説明は検索すると色々出て来ると思うので
細かい解説は省略しようと思ったのですが
wikiの解説が比較的簡単で詳しく書いてあるのでリンクを貼っておきます。
https://wiki.hsp.moe/%E5%B0%8F%E3%83%AF%E3%82%B6%EF%BC%8FVRAM%E3%82%92%E7%9B%B4%E6%8E%A5%E6%93%8D%E4%BD%9C%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B.html