mref

特殊なメモリを変数に割り当てる

mref p1,p2

p1=変数名 : 割り当てられる変数名
p2=0~(0) : リソースID (割り当てるメモリ内容)

解説

p1で指定された変数に、p2で指定したメモリ内容を割り当てます。

     値  : 対応するリソース
 --------------------------------------------------
   0~ 7 : ローカルパラメータ#1~8(数値)
    64   : システム変数stat
    65   : システム変数refstr
    66   : ウィンドウ内画像データ(VRAM)
    67   : 現在のウィンドウ情報(BMSCR構造体)
    68   : HSPのシステム情報(HSPCTX構造体)
    69   : パレット情報
    96~ : ウィンドウID0~の情報(BMSCR構造体)

リソースID64,65のシステム変数は、たとえば「mref i,64」とした場合、変数aがシステム変数 statと同等になり、値を代入することができるようになります。これにより、ユーザー定義命令内の計算結果などをシステム変数に反映して、呼び出し元に返すことができます。

リソース66のウインドウ内画像データ(VRAMデータ)は、表示されている画像を内容とする配列変数になります。
これにより、 poke,peek命令などで画像データに直接アクセスが可能になります。

リソース67以降も同様に HSPの内部データに直接アクセスできるようにするものですが、通常は使う必要はありません。 DLLへ渡すためのパラメータ準備のためなど、ごく限られた用途のために用意されているもので、ほとんどの人は使うことはないはずです。

ローカルパラメータは、ユーザー定義命令(#deffunc)で新規に追加された命令のパラメータ内容を取得するためのものです。
パラメータのタイプ(数値、変数、文字列)に従って取得することが可能です。
ローカルパラメータ取得は、HSP2.xまでのパラメーター取得方法との互換のために用意されています。(一部のリソースタイプには互換性がありません。)
HSP3.0以降では、ユーザー定義命令(#deffunc)のエイリアス機能を使用することを推奨しています。

関連項目

dupクローン変数を作成
dupptrポインタからクローン変数を作成
#deffunc新規命令を登録する

サンプル逆引き (2)

libptr.hsp
sample_03_vram_blob.hsp

情報

バージョン3.3
作成日2009/08/01
著作者onitama
URLhttp://hsp.tv/
備考ver3.3標準命令
タイプ内蔵命令
グループ特殊代入命令
対応環境
  • Windows 版 HSP
  • コマンドライン版 HSP
  • HSPLet
移植のヒントHSPLet時、stat/refstr のみ使用可能です。
関数の引数には使用できませんので、3.0 形式の受け取り方をしてください。
hs ファイルhsphelp\i_mem.hs