おもしろそうなので作ってみました。
ポインタとかいろいろ使ってるので使わない方がいいような気がします
#module
#deffunc initAllVariables
mref hspctx, 68
dupptr hsphed, hspctx.0, 96 // hspctx.hsphed
max_val = lpeek(hsphed, 8) // hsphed.max_val
ds_ptr = lpeek(hspctx, 12) // hspctx.mem_mds
dinfo_ptr = lpeek(hspctx, 16) // hspctx.mem_di
dupptr dinfo, dinfo_ptr, lpeek(hsphed, 44) // hsphed.max_dinfo
sdim buf
repeat
char = peek( dinfo, cnt )
if char == 255 : break
if char == 254 : continue cnt + 1 + 3 + 2
if char == 253 {
ds_offset = lpeek(dinfo, cnt + 1) & 0x00ffffff
dupptr varName, ds_ptr + ds_offset, 64, 2
varSize = 0
dupptr pval, hspctx.11 + count * 48, 48, 2 :count++
switch wpeek(pval, 0)
case vartype("int")
varSize = 4
dupptr value, lpeek(pval, 28), 4, 4
swbreak
case vartype("double")
varSize = 8
dupptr value, lpeek(pval, 28), 8, 3
swbreak
case vartype("str")
dupptr size, lpeek(pval, 28)-24, 4, 4 :varSize = size
dupptr value, lpeek(pval, 28), size, 2
swbreak
swend
if 0 != varSize && -1 == instr(varName, 0, "@") {
// 安全のためグローバル変数しか初期化しない
memset value, 0, varSize
}
// buf += ""+ varName +" = "+ value +"\n"
continue cnt + 1 + 3 + 2
}
if char == 252 : continue cnt + 1 + 2
loop
// objmode 2
// mesbox buf, ginfo(12), ginfo(13), 5, 0
return
#global
// なにか代入してみる
a = 100
b = "Hellooooooo"
c = M_PI
initAllVariables
mes a
mes b
mes c