●その1. | スクリプト編 |
スクリプトの解説
では、セーブデータを書きかえるスクリプト、savew.asを説明します。
このスクリプトの構造は非常に単純です。
(1)ファイルを読み込む
(2)初期設定
(3)画面を作る
(4)値を書きこんでファイルに書き出す
という4ブロックに分かれています。
(1)ファイルを読み込む
screen 0,400,400,0 |
font "MS ゴシック",16,0 |
配列にアドレスデータいれます。
たとえば”船山望美”では、wt.0.0から4バイトがクリア情報のアドレスになります。
また、その中の各CGの情報はwt.1.0からwt.2.0のアドレスになります。
2番目の数字の0がキャラクター番号になります。
昔のBASICと配列の添え字を付ける順番が逆になっていますので、注意してください。
また、画面上のチェック用にwfを定義しておきます。
(3)画面を作る
*gamen |
画面を作っていきます。
「pos 140,60:chkbox "クリア",wf.0 」
とすることで、配列wf.0の内容に応じて画面上のチェックボックスが表示されます。
表示前に「wf.0=1」などとしておけば、最初からチェックしている状態になります。
objsaize命令で表示されるオブジェクト(部品)のサイズを決めて、
pos命令で表示位置を決めています。
指定のアドレスに1度書きこむタイプのクリア情報などはwf.0からwf.7が、
アドレスからアドレスへの書きこみはwf.8からwf.15が割り当てられています。
(4)値を書きこんでファイルに書き出す
*kakikomi_all |
「書きこみ」ボタンを押すと、書きこみをはじめます。
最初に1度だけ書きこめばいいタイプのデータを書きこみます。
サブルーチン「*kakikomi1」を呼んでいますが、
そこでは変数bufに、変数adの場所から4バイトに”01 00 00 00”を
書きこんでいます。
次の2重のrepeat-loopではアドレス-アドレスの書きこみをしています。
引き算で長さを出した後、4バイト単位なので4で割っています。
その時「wrct=(wt.2.cnt-wt.1.cnt) >> 2 」 というように「>>(ビットシフト)」で
変数を2ビット分シフトすることで4分の1にしています。
シフトは、2進数の状態で右に動かす命令です。
たとえば、値が10だった場合、2進数では
1010 コレを右に1回シフトすると
101 と一番下の0が消えてしまいます。
値は5になり、2で割ったのと同じ事になります。
あまりは消えてしまいます。
フラグを見て、1の場合はループ回数分書きこみをしています。
フラグが0の場合はcontinue命令でループの先頭に戻ります。
書き換えが終了すると、bssave命令で保存します。
以上でG2sys.savの書き換えが終りました。
●その2. EXEファイル作成編へ移動
■HSPでセーブデータを書きかえる2へ戻る