【HSP3】構造体を戻り値とするDXライブラリの関数をHSPで呼び出すテスト

ConvWorldPosToScreenPos()のような、そのまま構造体で返る関数をHSPで普通に実行するとクラッシュしてしまいます。
元の引数が
prm1, prm2, prm3
だった場合は、
ret, prm1, prm2, prm3
と第一引数に追加することで、呼び出せるようになります。
retは戻り値を格納するポインタです。あらかじめ領域を確保しておいてください。

ConvWorldPosToScreenPos()のような、そのまま構造体で返る関数をHSPで普通に実行するとクラッシュしてしまいます。
元の引数が
prm1, prm2, prm3
だった場合は、
ret, prm1, prm2, prm3
と第一引数に追加することで、呼び出せるようになります。
retは戻り値を格納するポインタです。あらかじめ領域を確保しておいてください。

// http://sprocket.babyblue.jp/html/hsp_koneta3.htm
#module
#defcfunc todouble int p1
temp = 0.0
lpoke temp, 4, (p1 & 0x80000000) | (((p1 & 0x7fffffff) >> 3) + ((p1 & 0x7fffffff) ! 0) * 0x38000000)
lpoke temp, 0, p1 << 29
return temp
#global
;
#runtime "hsp3cl"
#include "DxLib.as"
;
//
; #func global ConvWorldPosToScreenPos "dx_ConvWorldPosToScreenPos" float,float,float
;
// 1
#func global _ConvWorldPosToScreenPos "dx_ConvWorldPosToScreenPos" var,float,float,float
;
ChangeWindowMode TRUE //
SetDoubleStartValidFlag TRUE //
;
DxLib_Init
;
px = 0.0f
py = 0.0f
pz = 100.0f
;
; VECTOR(12bytes)
dim VECTOR, 3
_ConvWorldPosToScreenPos VECTOR, VGet(px, py, pz)
;
;
mes "ptr:" + stat
mes "ptr:" + varptr(VECTOR)
;
;
mes todouble(vector.0)
mes todouble(vector.1)
mes todouble(vector.2)
;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX