svi ファイル作成方法

svi ファイル作成方法
このページの構成について
[Emu & Rom Info]セクションについて
[Page*No]セクションについて
svi ファイル作成についての Tip & Error 時の対処
まず使用できるオブジェクトは今のところ 7 つあります。
S サイズ ラベル & テキストボックス
M サイズ ラベル & テキストボックス
L サイズ ラベル & テキストボックス
ラベル & コンボボックスセット
ラベル & チェックボックス
コメント用ラベル
ボタンオブジェクト
の 7 つです。
それぞれについては各項目で説明しますが、S,M,L のラベル & テキス
トボックスについてはほとんど同じですので S サイズの項に詳細が記
述してあります。
また、上記のオブジェクトと使用するにあたっての設定が必要になりま
す。まずはそのセクションの説明から。
* [ ] で囲まれた物をセクションといいます。
[Emu&RomInfo]セクションについて
このセクションで指定できるものには以下のものがあります。後半にサ
ンプルがありますのでよくわからない場合はサンプルを使用して実際に
試されることをお勧めします。
Emulator
この項目ではウィンドウのタイトルバーに表示する文字列を指
定できます。省略可です。
RomName
ここでは画面のメニューバーのすぐ下にあるダークグレイの表
示エリアに表示する文字列を指定できます。省略可です。
TotalPageNum
ここでは svi ファイルが使用するページ数を指定します。一ペー
ジ目から開始です。省略できません。
SBoxNum
S サイズのラベルとテキストボックスオブジェクト(以下 S サイズ
のオブジェクト)の最大数を指定します。開始は 0 からです。こ
の値がベースとなりますので、1 ページ目で 20 個、2 ページ目
で 30 個使用している場合は 29 という指定になります。また個
の値はピッタリではなくても構いませんが、値が大きいほどルー
プ回数が多くなりますので処理速度の低下の原因となります。
省略すると 0 になります。
MBoxNum
SBoxNum と同じように M サイズのオブジェクトの最大読み込み
数を指定します。省略すると 0 になります。
LBoxNum
SBoxNum と同じように L サイズのオブジェクトの最大読み込み
数を指定します。省略すると 0 になります。
CBoxNum
SBoxNum と同じように C サイズ(ラベル & コンボボックス)のオ
ブジェクトの最大読み込み数を指定します。省略すると 0 になり
ます。
ChkBoxNum
ChkBoxNUM はチェックボックス(BYT)の最大使用数を指定しま
す。
LblNum
LblNum はラベルオブジェクト(コメント用)の最大使用数を指定し
ます。
[Page*No]セクションについて
このセクションはページを管理します。 [Page*No]の * にはページ番号
が入ります。
また使用できる最大ページ数は[Emu & Rom Info]セクションの
TotalPageNum で指定した数です。ただし 255 以下。
S サイズラベル&テキストボックスの使用方法に
ついて
具体的な使用方法を説明します。また M サイズオブジェクト、L サイズ
オブジェクトも使用方法は全く同じです。注意しなければいけないのは
それぞれのオブジェクトサイズが異なることです。
フォーマットは
オブジェクト No = 表示モード , 表示位置(Left) , 表示位置(Top) , ラベ
ル表示文字列 , アドレス , バイト長 [ , 最大値 , 最小値 ]
というフォーマットになります。
オブジェクト No
SBoxNum で指定した番号が最大の値となります。0 から開始で
す。
表示モード
DEC - 10 進表示で指定された部分を表示します。
DER - 10 進表示ですが、実際には通常のならびの物に
使用します。
HEX - 16 進で表示します。
HER - 16 進で表示します。DER と同じく実際には通常の
並びの 16 進数に使用します。
*注:)
ゲーム画面上で 999 という値があった場合それを 16 進数に
変換してセーブするというのが市販ソフトなどの通常のデータ
の保存方法だと思われます。ただし、Intel 系(x86)CPU では逆
から記述されていくことになります。
ex.
関数電卓
999 -> 03E7 ( 3E7 )
Intel 系 CPU
999 -> E703
というような違いが生じます。そのため、Savie では Intel 系
CPU の記述方法を通常の表記とし、
DEC モードでは E703 = 999
と扱うようにしています。が、通常表記(関数電卓と同じ)のもの
も存在することがわかったので、こちらを DER というモードにし
ました。
DER モードでは E703 = 59139
というように扱われます。 HEX , HER も同様です。
同様というのは、DEC=十進数の Decimal の DEC なんですが、
DER の R は DEC の逆なので Reverse の R に最後の一文字
を
置き換えただけです。
表示位置 Left
ウィンドウの Leftt 位置をピクセル単位で指定します。(10 進で)
(いわゆる左からどれだけかです^^;)
表示位置 Top
ウィンドウの Top の位置をピクセル単位で指定します。(10 進
で)
(いわゆる上からどれだけ)
ラベル表示文字列
編集する値の名前、題?です。
アドレス
編集する値の位置を 16 進で指定してください。省略する場合は
+xxx という形式で
16 進で指定してください。
バイト長
値が何バイトでひとつの値なのかを示します。たとえば バイナリ
ーファイル上で E7 03 で1つの値だと十進で 999,E7 でひとつの
値だと 231 ということになります。
最大値(省略可)
最大値を指定できます。DEC,DER モードなら10進数で、
HEX,HER モードなら 16 進数で指定してください。
最小値(省略可)
最小値を指定できます。DEC,DER モードなら10進数で、
HEX,HER モードなら 16 進数で指定してください。
注:)
ここで、最大値、最小値を設定すると省略された場合の値チェ
ックよりも優先されます。
例えば以下のように指定した場合
S63= DEC,L+0000,T+4160,熟練値,+124,1
S64
:S サイズの 64 個目(開始 0 は 10 進数表示
DEC
:オブジェクト
L+0000
:ウィンドウ Left 位置は基準点より+0 ピクセル
T+4160
:ウィンドウ Top 位置は基準点より+4160 ピクセル
熟練値
:ラベルに表示される文字列は
+124
:データのある位置は基準点より(16 進数!!)
1
:バイト長は 1Byte
というように指定したことになります。
#基準点とは???
基準点とは一番最初に省略せずに指定したウィンドウ位置(Left,Top)、
アドレスのことを示します。指定方法は
S0 = DEC,L0150,T00220,LV,101,1
というように指定すると、これ以降新たに基準点を指定するまでこの基
準点をもとに + ,-指定ができます。
上記のように指定してから
S1 = DEC,L+000,T+0320,Exp,+2,3
これを実行すると実際には
S1 = DEC,L0150,T0540,Exp,103,3
と指示していることになります。
また読み込む順番は S -> M -> L -> C という順番に敢えてして
います。
#もともとは Index -> オブジェクト という順序でループしていたのです
が、こうすると
#S0 -> M0 -> L0 -> C0 -> S1 -> M1 -> L1 -> C1 -> S2 ->....
#となっていまい、定義の際に混乱するためです。
M サイズオブジェクトについて
基本的に S サイズオブジェクトと同じです。変わるのはオブジェクト No
が
M*
という指定になり、最大使用数は MBoxNum に依存するということで
す。
わかりにくいですか(^^;具体的に言うと
S1 = DEC,L0150,T0540,Exp,103,3
を
M1 = DEC,L0150,T0540,Exp,103,3
にすると M サイズのオブジェクトになります。
L サイズオブジェクトについて
基本的に S サイズオブジェクトと同じです。変わるのはオブジェクト No
が
L*
という指定になり、最大使用数は MBoxNum に依存するということで
す。
あとはMサイズオブジェクトの説明をよみませう。
コンボボックスオブジェクト(略称 CBox or C サ
イズオブジェクト)について
最大の難関です。説明するよりもサンプルを見たほうが早いかもしれま
せん。ちらっと目を通したらサンプルを見てみましょう。
基本的な指定方法は
オブジェクト番号 = 最大アイテム数,表示位置(Left),表示位置(Top),ラ
ベル表示文字列,アドレス,バイト長,セクション名
です。今までの S,M,L オブジェクトより指定する項目が多いこと、表示
モード指定が無くアイテム数指定が同じ位置にあることに注意してくだ
さい。
オブジェクト番号
CBox の場合は
C*
です。これでもうわかりますね?
最大アイテム数
コンボボックスに設定する項目の最大数です。SBoxNum のコン
ボボックス専用のものと考えていただければ・・・。これも
SBoxNum と同じようにここの値によってループ回数が決定する
のでその辺は考慮して下さい。ただし、最大値は 255 です。そ
れより大きくすると強制的に 50 に制限します。
#はっきり言って 255 とかホントに項目を入れると使い物になら
ない(^-^;)
表示位置(Left)
ウィンドウの Leftt 位置をピクセル単位で指定します。(10 進で)
表示位置(Top)
ウィンドウの Leftt 位置をピクセル単位で指定します。(10 進で)
ラベル表示文字列
編集する値の名前、題?です。
アドレス
編集する値の位置を 16 進で指定してください。省略する場合は
+xxx という形式で
バイト長
値が何バイトでひとつの値を表すのかを示します。
セクション名
どのセクションから項目設定するのかを指定します。例えば、
C0 = 21,L+5600,T+0000,職業,-1,1,ジョブ
とすると[ジョブ]というセクションからコンボボックスの項目を設
定します。またアイテムの最大数は 22 個になります。
ここからは CBox 用のセクションについて。
上の例で[ジョブ]というセクションが指定されています
が、具体的には[ジョブ]セクションは以下のようになりま
す。
---ここから--[ジョブ]
I0 =00,たまねぎけんし
I1 =01,せんし
I2 =02,モンク
I3 =03,しろまどうし
I4 =04,くろまどうし
I5 =05,あかまどうし
・
・一部略
・
I20=14,けんじゃ
---ここまで--もうおわかりでしょうが、
I*
がコンボボックスの項目番号となります。で
アイテム番号 = 書きこみ&読み込むする値 , 対応する文
字列
となります。
アイテム番号
コンボボックスオブジェクトの指定時に指定した最大アイテム数
が最大値となります。
もちろん 255 までという制限がつきます。
書きこみ&読み込む値
実際にファイルから読み出したり、書きこんだりする値です。16
進表で指定します。
対応する文字列
<書きこみ&読み込む値 >に対応する文字列です。コンボボック
スにはこの文字列が表示されます。
チェックボックスオブジェクト(Byte 単位編集)
ここのチェックボックスを使用して編集できるものは以下のような物が
対象となります。
1Byte の値を 2 進数であらわした("FF"なら 1111 1111)状態でフラグと
して使用されている場合に有効なオブジェクトです。
つまり あるソフトで以下のような表が成り立つ場合に視覚的に値を変
更できます
2 進数
表示する文字列
16 進
数
0000 0001
A
01
0000 0010
B
02
・
・
・
0000 0011
A+B
03
・
・
・
1111 1110
A+B+C+D+E+F+G+H+I・・・+Z
FE
1111 1111
B+C+D+E+F+G+H+I・・・+Z
FF
またこのオブジェクトを使用するには何ビット目の値が何を表現するの
かを svi ファイルを作る方が理解している必要があります。そのため、
それなりの 2 進数、16 進数についての理解が必要となります。
また、どのフラグが何を表現しているか?ということを調べるには以下
の表が埋めることによってわかると思いますので参考にしてください。
2 進数
16 進数
表示する文字列
0000 0001
01
<この欄を埋めてください>
0000 0010
02
<この欄を埋めてください>
0000 0100
04
<この欄を埋めてください>
0000 1000
08
<この欄を埋めてください>
0001 0000
10
<この欄を埋めてください>
0010 0000
20
<この欄を埋めてください>
0100 0000
40
<この欄を埋めてください>
1000 0000
80
<この欄を埋めてください>
この表を埋めることができると始めて有効にチェックボックスが使用で
きるようになります。
さらに[Emu & Rom Info]セクションで
ChkBoxNUM = * ( * は数値)
と指定している必要があります。これは最大使用数です。これを元にル
ープしますので値が大きくなるほど遅くなります。
まずは記述フォーマットを
BYT* = E11111111 , Top , Left , セクション名 , アドレス
とします。またこのオブジェクトは 1Byte 単位での編集しかできません。
BYT *
オブジェクト名+番号 という表現です。C0 などが BYT0 になった
だけです。
E11111111
このオブジェクト固有のフラグです。何ビット目をあらわすチェッ
クボックスを有効か、無効にするかということができます。
例えば
E00000001
と指定すると 最下位 BIT をあらわすチェックボックスしか有効に
なりません。
送れましたが ON = 1 ,OFF = 0 です。
Left
もう必要無いでしょう。どこにオブジェクトを配置するかです。
Top
どこにオブジェクトを配置するかです。
セクション名
それぞれのフラグにつける名称を指定したセクション名を指定し
ます。
詳細は後ほど。
アドレス
どの位置の Byte を編集するかです。指定は 16 進数です。
というようにして使用してください。
また、0000 0000 でどのチェックボックスが対応してるかは
左に行くほど位置が下がります。意味わかりませんね(^-^;
最下位のビット(1 番右のこと) = 1 番上のチェックボック
ス
最上位のビット(1 番左のこと) = 上から 8 番目のチェック
ボックス
という指定です。またチェックボックスに
チェックがついているものが = 1
チェックがついていないものが = 0
をあらわします。
チェックボックス(BYT)の名称指定セクションの
指定方法。
上記のセクション名のところに任意の文字列を指定してください。
で
[(指定した文字列)]
L0 = チェックボックス 1 番目(上から)の名称
L1 = チェックボックス 2 番目(上から)の名称
L2 = チェックボックス 3 番目(上から)の名称
L3 = チェックボックス 4 番目(上から)の名称
L4 = チェックボックス 5 番目(上から)の名称
L5 = チェックボックス 6 番目(上から)の名称
L6 = チェックボックス 7 番目(上から)の名称
L7 = チェックボックス 8 番目(上から)の名称
というように指定してください。
コメント用ラベルオブジェクトについて
これはラベルのみ使用して、なにか注意事項などがあれば記述するこ
とができます。
さらに外枠のボーダーのスタイル、幅、表示位置(左寄せなど)を指定で
きる用にしました。
まず、[Emu & Rom Info]セクションに
LblNum = *(*は数値)
と使用したいラベルの最大数を記述してください。
その後、[Page*No]セクションに
CMT* = ボーダースタイル , Left , Top , コメント [ , 幅 , 表示位置 ]
の形式で記述してください。また [ ] に囲まれている部分は省略可能で
す。
ただし省略時は
幅 : 2000 , 表示位置 : 左寄せ
がデフォルトで使用されます。
ボーダースタイル
ここには 0 か 1 を指定してください。それぞれの動作は以下の
通りです。(ボーダーとは境界線です。)
0 = ボーダーなし
1 = ボーダーあり
また、最初はボーダーあり( 1 )で svi を作り完成したらなし( 0 )
にするとよいかもしれません。好みに応じて使用してください。
Left
どこにオブジェクトを配置するかです。
Top
どこにオブジェクトを配置するかです。
コメント
なにか svi を使用する際の注意事項などを記述してください。最
大で 256Byte までだと思いますが、確かではありません(^-^;
幅
オブジェクトのの幅です。デフォルト = 2000 です。
表示位置
右寄せ、左寄せ、中央表示を指定できます。
0 = 左寄せ
1 = 右寄せ
2 = 中央表示
です。
以上です。
ボタンオブジェクトについて
このオブジェクトは一括して、値を書きこみたいときに使用します。
たとえば、 01 h から 0F h までの値を(もちろんバイナリーファイルでの
話。)
すべて FF にしたい時や、 任意の値を設定したいときに便利です。
まず、例のごとく [Emu & Rom Info]セクションに
ButtonNum = *
と各ページ中の最大ボタン使用数を指定してください。
各ページとは 1 ページ目([Page1Data]セクション)の中で1つも使用され
て
いなくても、2 ページ目([Page2Data]セクション)の中で 10 個使用されて
いたら
ここは
ButtonNum = 10
となります。
その後、使用したいページ([Page*Data]セクションの中で)
BTN* = ボタンを押されたときに行う値設定の指定の数 ,
ボタンの位置(Left) , ボタンの位置(Top) , ボタン名[ , セ
クション名]
となります。
ボタンを使用するときは、
BTN0 = 5,L00150,T00300,テスト1
のようにして下さい。
また、セクション名が省略されるとボタン名をセクション名として使用し
ます。
このため、上記の例ではセクション名が省略されているので
テスト1
がセクション名として使用されます。
従って
[テスト1]
BItem0 = 10,10
BItem1 = 11,1112
BItem2 = 13,13
BItem3 = 14,14
BItem4 = 20,FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF
というように、自分が指定したセクション名でセクションを作ってくださ
い。
順序が逆になってしまいましたが、セクションの中では
BItem* = 値を設定する位置 ( 16 進) , 書きこむ値 ( 16 進 )
というように記述します。
注意していただきたいのは
値を設定する位置 ( 16 進) , 書きこむ値 ( 16 進 )
を足した文字列の長さが 256Byte(全角 128 文字)を越さないようにして
下さい。
さらに 書きこむ値 ( 16 進 ) に含まれる半角スペースは無視されます
ので
見やすいように適当に半角スペースを入れると便利です。
また、 * には ボタンを押されたときに行う値設定の指定の数 で
指定した値より小さい値を設定してください。
ボタンを押されたときに行う値設定の指定の数 が読みこむ最大数と
なるためです。
svi ファイル作成にあたってのまめちしき
すべてを理解してからじゃないとわからないはず。
短い物を作成してちょこっとずついろいろやってみましょう(^^;;;
S,M,L,C の Top は +320 ずつでちょうどよい。
SBox の後ろにピッタリつけるには +1650
MBox の後ろは
LBox の後ろは
CBox の後ろは+2700
Error が出たら・・・
表示されないと思ったらまず svi ファイルを疑ってください。凝っ
たものを作ると自然とミスがあります。S0 が2つあったりすると
もうダメです。また SBoxNum なども確認して見ましょう。追加し
たくせに使用できる最大値を増やしてないとかよくあります。
オーバーフローしたら Byte 長と表示モードを確認しましょう。
"DEC"モードでの最大表示可能 Byte 長は 4Byte までです(今
のところ)。必要なら"HEX"モードで。
死んだと思ったら強制終了して下さい。もしかするとコンボボック
スに項目を設定するのに時間がかかっているだけかもしれませ
ん。