home *** CD-ROM | disk | FTP | other *** search
/ Fun CD 26 / OTACD26.ISO / archive / game / spoiler / spal34 / HowToSSG.txt < prev    next >
Text File  |  2000-03-07  |  27KB  |  693 lines

  1. 現在グラフィカルにSSGを作成できる SSGEditer
  2. 通称 SEdi(セディ)の作成にも着手しております。
  3. こんな面倒な物が書けるかっ!と言う方は、もう少しお待ち下さい。
  4. (と、ver1.0から書いておきながら未だに出来てないッス(^^;)すみませぬ)
  5. ---------------------------------
  6. 以下はSSGを作ってみたいな~とか思った方必見の
  7. 「SSGの書き方 ver3.4版」でございます。ぜひぜひ一度チャレンジしてみて下さい。
  8. ---------------- SSGの書き方 ----------------
  9.  
  10. SSG for SpoilerAL ver 3.4    //1行目にはこういう文が必ず入ってなきゃダメなの
  11.                 //ver の部分は随時変わるけどね。
  12.  
  13. [script]    //でスクリプトが始まるよ~って教えてあげる
  14.         //"]"の後ろには何も書かないでね
  15.  
  16. [title]        //"]"の後ろに表示されるタイトルを書くの
  17.         //例:[title]テスト用
  18.  
  19. [process]    //"]"の後ろに改造するプロセスを書くの
  20.         //例:[process]TEST.EXE
  21.  
  22. [maker]        //"]"の後ろにメーカーとかソフトハウスとか発売元とかを書くの
  23.         //例:[maker]アリスソフト
  24.  
  25. [creator]    //"]"の後ろにそのSSGを書いた人の名前を書くの
  26.         //例:[creator]あつ
  27.  
  28. [special]    //"]"の後ろにタイトルを特殊順でソートする場合の見だしを書くの
  29.         //普通は書かない方が良いかな。
  30.         //例:[special]対応機種限定
  31.  
  32. [adjustment]    //環境によって、アドレスがずれる場合に用いる。
  33.         //使い方は後述するでし。
  34.  
  35. [hold]    //基本的に、環境によってアドレスがずれるのだが、
  36.         //変化しないアドレスもある場合に用いる。
  37.         //使い方は同じく後述するでし。
  38.  
  39. [note]        //補足とかメモに表示したいことを書き始めるよ~っていう合図
  40.         //"]"の後ろに"wordwrap"と書くと、
  41.         //画面端で自動的に文章を折り返すようになります。
  42.  
  43. [/note]        //メモはココまでで終わりダヨって言う合図
  44.         //"]"の後ろには何も書かないでね
  45.  
  46. [subject]    //"]"の後ろに項目データを書くの
  47.         //説明長くなるから下記参照
  48.  
  49. [back]        //階層項目で下がった階層を1つ戻す
  50.         //階層項目については下記参照
  51.  
  52. [root]        //階層項目で下がった階層をいっきに初期階層まで戻す
  53.         //階層項目については下記参照
  54.  
  55. [/script]    //でスクリプトは終わりだよって教えてあげる
  56.         //"]"の後ろには何も書かないでね
  57.  
  58.  
  59. 前後の空白、タブは無視されるので
  60.     [subject]モキュ:    dir
  61. とか書いてもOKです。
  62. (ただし日本語文字(全角文字)の空白はカットされません)
  63.  
  64. [note]から[/note]で囲んだ中以外なら、
  65. 関係ない文は全てコメントとして無視されます。
  66. [script]
  67. ももももっ        ←コメント
  68.     ももも?    ←コメント
  69. [[/script]        ←コメント
  70. [backもも]        ←コメント
  71. も[subject]        ←コメント
  72. [note]
  73. [back]            ←メモとして表示
  74. [root]            ←メモとして表示
  75. [/note]
  76. [/script]
  77. もももももっ        ←コメント
  78.  
  79. コメントは見やすくなるように、つけようね。
  80. やりすぎるとよけい見にくくなるゾ。
  81.  
  82. -------------- [subject]の説明 ----------------
  83. 項目名に"/"を含ませることはできません。理由は下記参照
  84.  
  85. [subject]項目名:コード
  86. という風に書く。
  87. "項目名"には、その項目の表示名を書く。どんな名前でもOKだよ。
  88. "コード"は今のところ12個。
  89. ★アドレスや最小値などの値(toggle項目のON/OFF時の値以外)は、
  90.  16進数なら頭に"0x"をつけ、10進数ならそのまま書くこと!
  91. ★トグル項目以外の書き換え項目(電卓、リスト、文字項目)の最大値や書き換える値は
  92.  long型(最大0xFFFFFFFF)までにして下さい。もしそれ以上の値を使いたい場合は
  93.  項目を二つに分けるか、私に連絡下さいm(_ _)m
  94.  今のところint以上の値を使って書き換えるのを知らないんで(^^;)
  95. ★コードにデフォルト値がある場合、その値は省略して記述しても構いません。
  96. 例:[subject]体力:calc,0x438CDA,0x00,0x03E7        //2つとも同じ物と解釈される
  97.   [subject]体力:calc,0x438CDA,0x00,0x03E7,signed,little_e
  98.  
  99.  
  100. ◆1つ目は"dir"。階層項目とでも言うのかな。
  101. [subject]項目名:dir
  102. と書けば終わり。
  103. 階層を一段下げてくれます。("新しいフォルダを作る"みたいなもんかな)
  104. [subject]項目1:dir
  105.     [subject]項目2:dir
  106.         [subject]項目3:dir
  107. とかやると、どんどん階層が深くなっていきます。
  108. 最大256階層まで掘れます(笑)
  109. 項目名に"/"を入れると、"/"の前までが項目名になります。
  110. ★"dir"で階層を下げたら、ちゃんと[back]や[root]で
  111.  階層を戻すことを忘れずに。
  112.  
  113.  
  114. ◆2つ目は"calc"。電卓項目とでも言うんでしょう。
  115. 数値を電卓で入力できるようになるよ。
  116. [subject]項目名:calc,開始アドレス,入力できる最小値,入力できる最大値
  117.         ,負値の可否,エンディアンの指定
  118. という風に書く。(実際書くときは改行しちゃダメだよ)
  119. ♪「負値の可否」ってのは、値をsigned(-2,147,483,648~2,147,483,647)として
  120.  扱うかunsigned(0~4,294,967,295)として扱うかを指定するところです。
  121.  "signed"と書けばsignedとして扱いますし、"unsigned"と書けばunsignedとして
  122.  扱います。(デフォルト値は signed )
  123.  (早い話が0よか少ない値を使うかどうかってコト。
  124.  -1以下の値を使っていなくても、大抵のゲームは
  125.  2,147,483,647を越すような値も使っていないから、signedにしとけば問題なし。)
  126. Ψ「エンディアンの指定」には "little_e" もしくは "big_e" を記述します。
  127.  Windowsでは、通常値を格納するとき、
  128.  上位バイトと下位バイトが逆(リトルエンディアン)になります。
  129.  が、あえて反転させたくない場合は、ビッグエンディアンを指定します。
  130.  なお、ビッグエンディアンを指定するときでも、最大値・最小値の値は
  131.  反転させて書かなくて結構です。(デフォルト値は little_e )
  132.  (何のこっちゃ?って人は、何も考えずに "little_e" と記述して下さい(^^;))
  133.  
  134. 項目名に"/"を入れて他の文字も変更することができます。
  135. 一つ目の"/"の前までが項目名、
  136. 項目名の後から二つ目の"/"の前までが現在値名(丁度いい呼び名が思いつかない(^^;)
  137. 現在値名の後から三つ目の"/"の前までが値の固定名
  138. 値の固定名の後から":"までが[]の後ろに入れる補足文字になります。
  139. 例図:    現在値名[現在値]補足文字(Min:0 Max:10)
  140. 省略した場合、現在値名は項目名に、値の固定名は「値の固定」になります。
  141.  
  142. 例:[subject]体力:calc,0x438CDA,0x00,0x03E7,signed,little_e
  143.   [subject]体力:calc,4426970,0,99999,unsigned,little_e
  144.  
  145.  
  146. ◆3つ目は"toggle"。トグル項目(ON/OFF項目)とでも言おう。
  147. ONかOFFしかないデータはこれを使うべし。
  148. [subject]項目名:toggle, 開始アドレス, ONの値, OFFの値
  149. という風に書く。
  150. なお、繰り返し命令はこのトグル項目でのみ使用可能。
  151. 書式は
  152. [subject]項目名:toggle, 開始アドレス, 終了アドレス-ONの値, OFFの値
  153. と書くだけです。
  154. ♪書き込む値(ON/OFF)を、直接文字で記述することもできます。
  155.  書き込む値の前に s をつけると、記述した文字を書き込んでくれます。
  156.  s01山田 <-同じ-> 30318E529363
  157. ‡と、ここまで書くとプログラミングをやってる方の中には「アレはどうするんだ?」
  158.  とか思った方もいるでしょう。そうです、「制御コード」
  159.  (いわいる改行とかタブとかNULL文字です)ってのがありますね。
  160.  しかしご安心下さい、エスケープシーケンスを使えます。
  161.  改行なら"\n"、タブなら"\t"、NULL文字なら"\0"、"\"(円ダラー)なら"\\"でごわす。
  162. ¶賢明な読者諸君(笑)なら、もう一つ疑問に思ったことだろう。
  163.  そう、"-"(ハイフン)を文字として書くと、繰り返し項目と見なされるのではないか?
  164.  へっへっへ、そこら辺も抜かりはありやせんゼ、旦那!
  165.  こいつもエスケープシーケンスの応用でごわす。"\_"と書けばバッチシです。
  166. ∇(とはいっても","(カンマ・コンマ)も使えないんだよね(^^;)
  167.  仕方ないんで苦肉の策。
  168.  "\."(エンダラー+ピリオド)で","(カンマ・コンマ)と見なします。
  169. @ON/OFFの値は、一部のバイトを"?"でマスクして、読み飛ばすこともできます。
  170. 例:現在の値が0x1234であるとき
  171.   [subject]中央2バイトをマスク:toggle,0x0,F??F,0000
  172.   を、ONの値で書き込むと、0xF23Fと書き込まれます。
  173.  
  174. なお、必ずしもと言うわけではありませんがONの値とOFFの値の桁数はそろえた方が
  175. ミスが起こりにくいです(^_^)
  176.  
  177. 項目名に"/"を入れて他の文字も変更することができます。
  178. 一つ目の"/"の前までが項目名、
  179. 項目名の後から二つ目の"/"の前までがトグル値名(丁度いい呼び名が思いつかない(^^;)
  180. 現在値名の後から":"までが値の固定名になります。
  181. 省略した場合、現在値名は項目名に、値の固定名は「値の固定」になります。
  182.  
  183. 例:[subject]お猿人形1を所持:toggle,0x438CD0,01,00
  184.     [subject]お猿人形セットを所持:toggle,0x438CD0,0x438CDF-01,00
  185.   [subject]お猿人形の名前:toggle, 0x438CD0, s猿雄\0, sおさる大王\0
  186.  
  187. ◆4つ目は"list"。リスト項目というヤツです。
  188. キャラの装備とか一覧の中から選ばせたい項目はこれで書く。
  189. [subject]項目名:list,開始アドレス, ファイル名, 行頭の指す値, 公差
  190. という風に書く。
  191.  
  192. ♪"ファイル名"には、選択できる一覧を書いたファイル(拡張子は lst にして、
  193.  そのSSGと同じフォルダに置くこと)の名前の部分だけ(拡張子は省いて良い)を書く。
  194.  リストファイルの名前は他と区別しやすいように、
  195.  タイトルや項目名に似た名前がいいかも。
  196. ♪"行頭の指す値"は、一覧を書いたファイルの、
  197.  1行目の文を選択したときに、メモリに書き込む値を書く。
  198.  たいていのゲームは 0 だが、中には例外もあるだろうから一応ね。
  199. ♪"公差"には、一覧の行と行の間で増す値の量を書く。
  200.  例えば、1行目を選択したら 0 と書き込んで、
  201.  2行目を選択したら 1 、3行目なら 2 という風に書き込む値が変わるなら
  202.  公差には 1 と書く。
  203.  
  204. 項目名に"/"を入れて他の文字も変更することができます。
  205. 一つ目の"/"の前までが項目名、
  206. 項目名の後から":"までが値の固定名になります。
  207. 省略した場合、値の固定名は「値の固定」になります。
  208.  
  209. 例:[subject]右手:list,0x438CDA,test,0x00,0x01
  210.  
  211.  
  212. ◆5つ目は"b_toggle"。バンドルトグル(一括トグル)項目と呼ぶべしっ!
  213. これはtoggleの拡張版(?)みたいなものです。
  214.  
  215. 基本的にtoggle項目は、何バイト分でも書き換えることができます。しかし、
  216. 虫食い(0x00から0x10まで書き込んで、0x10バイト分無視(飛ば)して
  217. 0x20から0x30まで書き込む。)的な書き方ができません。
  218. そこでb_toggle項目の登場と相成るわけです。
  219. 使い方はかーんたん?(ォ
  220. [subject]項目名:b_toggle, 開始アドレス, ファイル名, オフセットか
  221. という風に書く。
  222.  
  223. ♪"ファイル名"には、toggle項目を羅列したファイル(拡張子は chn にして、
  224.  そのSSGと同じフォルダに置くこと)の名前の部分だけ(拡張子は省いて良い)を書く。
  225.  チェインファイルの名前は他と区別しやすいように、
  226.  タイトルや項目名に似た名前がいいかも。
  227. 〒"オフセットか"には"real"か"offset"を指定します。(デフォルトは"real")
  228.  チェインファイルに書かれているアドレスを、ある値からのオフセット
  229.  として記述したい場合に"offset"を指定します。"real"を指定した場合、
  230.  読み書きするアドレスは、チェインファイルに記述したアドレスになります。
  231.  そのため、2つ目のオプションである"開始アドレス"は、"offset"を
  232.  指定しない限り、どんな値でも良い、と言うことになります(^^;)
  233. 例:[subject]オフセットで記述:b_toggle, 0x40000, test, offset
  234.   ↓チェインファイル↓
  235.   0x00,01,00
  236.   0x10,01,00
  237.   実行時に
  238.   0x40000,01,00
  239.   0x40010,01,00
  240.   へ変換される。
  241.  
  242. なお、チェインファイル中のtoggle項目は
  243. [subject]項目名:toggle,
  244. を省いて書きます。つまり、
  245. 開始アドレス, ONの値, OFFの値
  246. (例:0x438CD0,01,00)
  247. もしくは
  248. 開始アドレス, 終了アドレス-ONの値, OFFの値
  249. (例:0x438CD0,0x438CDF-01,00)
  250. という風に書くわけです。
  251. (勿論、文字記述もOKだよっ!)
  252.  
  253. バンドルトグル項目を選択した場合、指定されたチェインファイル中の
  254. toggle処理が全て実行されますので、toggle処理を虫食い的に記述すれば
  255. 虫食い書き換えも可能なわけですね。ハイ。
  256. (空白は無視されますが、コメントは使えません)
  257. チェインファイルの例:
  258. 0x430000,0101,0000
  259. 0x430010,0101,0000
  260. 0x430020,0101,0000
  261.  
  262. 項目名に"/"を入れて他の文字も変更することができます。
  263. 一つ目の"/"の前までが項目名、
  264. 項目名の後から二つ目の"/"の前までがトグル値名(丁度いい呼び名が思いつかない(^^;)
  265. 現在値名の後から":"までが値の固定名になります。
  266. 省略した場合、現在値名は項目名に、値の固定名は「値の固定」になります。
  267.  
  268. 例:[subject]お猿人形1を所持:repeat, OSARU
  269.  
  270. ◆6つ目は"string"。文字項目ってとこかな。
  271. キャラの名前とかを書き換える場合はこれがいいかもね。
  272. [subject]項目名:string,開始アドレス, 最大文字数(バイト単位), 末尾にNULL付加
  273. という風に書く。
  274.  
  275. ♪"最大文字数"には、入力できる文字数の最大値をバイト単位で指定します。
  276. ♪"末尾にNULL付加"に"null"を指定すると、文字書き込み時に
  277.  文末にNULL文字を付加して書き込みます。
  278.  (※最大文字数に注意!
  279.  [subject]項目名:string,開始アドレス, 8, 1
  280.  と書いた場合、書き込まれる最大バイト数は"9"ということになります。)
  281.  "null"以外を指定した場合、NULL文字は付加されません。
  282.  
  283. 項目名に"/"を入れて他の文字も変更することができます。
  284. 一つ目の"/"の前までが項目名、
  285. 項目名の後から二つ目の"/"の前までが現在値名(丁度いい呼び名が思いつかない(^^;)
  286. 現在値名の後から":"までが値の固定名になります。
  287. 省略した場合、現在値名は項目名に、値の固定名は「値の固定」になります。
  288.  
  289. 例:[subject]主人公名:string,0x468000, 0x0F, null
  290.  
  291. ◆7つ目は"b_calc"。バンドルカルク(一括電卓)項目と、訳して下さい(^^;)
  292. 電卓版バンドルトグル項目とでも申しましょうか…
  293. 複数のアドレスへ、任意の値を書き込む場合に使います。
  294. (アイテムがたくさんあって、いちいち入力するのが面倒なときなどは、
  295. コレを使うと楽になりますね)
  296. [subject]項目名:b_calc, 開始アドレス, ファイル名, オフセットか
  297. という風に書くのですが、まんまバンドルトグル項目ですね(^^;)
  298. 注意して欲しいのは、現在の値の代わりに、
  299. 「全ての現在値の平均」を表示するという点です。
  300.  
  301. ♪"ファイル名"や"オフセットか"の指定法も、バンドルトグル項目と同じです。
  302.  
  303. なお、チェインファイル中のcalc項目は
  304. [subject]項目名:calc,
  305. を省いて書きます。つまり、
  306. 開始アドレス, 最小値, 最大値, 負値の可否, エンディアン
  307. (例:0x438CDA,0x00,0x03E7,signed,little_e)
  308. という風に書くわけです。
  309. ただし、チェインリスト内の最小値や最大値、負値の可否やエンディアンは
  310. 全て同じになるようにして下さい。でないとおかしくなります。
  311. 例の如く空白行は無視しますが、コメント文は使えません。
  312.  
  313. 項目名に"/"を入れて他の文字も変更することができます。
  314. 一つ目の"/"の前までが項目名、
  315. 項目名の後から二つ目の"/"の前までが現在値の平均名
  316. (丁度いい呼び名が思いつかない(^^;)
  317. 現在値名の後から":"までが値の固定名になります。
  318. 省略した場合、現在値の平均名は項目名に、値の固定名は「値の固定」になります。
  319.  
  320. ◆8つ目は"t_toggle"。トレーストグル項目の略ですっ☆
  321. 8つ目ともなると、ちょっと特殊な項目になってきますね。
  322. これは、アドレス X の値が M になったとき、アドレス Y の値を N にする。
  323. と言う項目です。
  324. [subject]項目名:t_toggle, 監視元アドレス, 監視元ONの値, OFFは固定か,
  325.                 書き換え先ONの値, 書き換え先OFFの値, 書き換え先アドレス
  326. という風に書く。
  327.  
  328. ♪監視元アドレス:
  329.  ONなのか、監視するアドレス。
  330. ♪監視元ONの値:
  331.  監視元アドレスの値がこの値になったとき、書き換え先アドレスの値を書き換える
  332. ♪OFFは固定か:
  333.  これに"off_hold"を指定すると、監視元アドレスの値が監視元ONの値で[ない]とき、
  334.  書き換え先の値を、「書き換え先OFFの値」に書き換えます。
  335.  デフォルト値である"off_disregard"なら、監視元アドレスの値が監視元ONの値で
  336.  ない限り、書き換えは行いません。
  337. ♪書き換え先ONの値:
  338.  監視元アドレスの値が「監視元ONの値」になったとき、書き換え先アドレスの値を
  339.  この値に書き換えます。
  340. ♪書き換え先OFFの値:
  341.  監視元アドレスの値が「監視元ONの値」でなく、「OFFは固定か」が"off_hold"の場合、
  342.  書き換え先アドレスの値を、この値に書き換えます。
  343. ♪書き換え先アドレス:
  344.  実際に書き換えを行うアドレスです。
  345.  
  346. 項目名に"/"を入れて他の文字も変更することができます。
  347. 一つ目の"/"の前までが項目名、
  348. 項目名の後から":"までが値の固定名になります。
  349. (トレース系は常に値を固定するかそうでないかになります。)
  350.  
  351. 例:[subject]近寄ると逃げる:t_toggle,0x400000,2A,off_disregard,FF,00,0x500000
  352.  
  353. ◆9つ目は"t_list"。トレースリスト項目の略だよっ☆
  354. これはトレーストグルの拡張版みたいな物ですね。
  355. トレーストグルの場合、ONの値というのは1つしか指定できません。
  356. これでは、XのときはK、YのときはLのように、複数の書き換え値に対応できませんね?
  357. そこでトレースリストです!
  358. [subject]項目名:t_list,監視元アドレス,ファイル名,書き換え先アドレス
  359. 何となく察しはついたでしょうか?
  360. そう、ファイル名には書き換え値を記したリスト名(拡張子.lst)を書くんです。
  361. なお、OFF固定はできません。
  362.  
  363. リストの中には
  364. 監視元ONの値,書き換え先ONの値
  365. という書式で必要なだけ羅列してください。
  366. 例によって改行・スペースのみは素通りしますが、他はダメです。
  367.  
  368. 例:[subject]何をしても逃げる:t_list,0x400000,ドラ食え,0x500000
  369.     リスト内
  370.         00,FF
  371.         2A,FF
  372.         50,FF
  373.  
  374.  
  375. 項目名に"/"を入れて他の文字も変更することができます。
  376. 一つ目の"/"の前までが項目名、
  377. 項目名の後から":"までが値の固定名になります。
  378.  
  379.  
  380. ◆10個目は"b_list"。バンドルリストです。
  381. ここまで読んできた方なら、察しが付くかと思います。
  382. 書式は
  383. [subject]項目名:b_list,開始アドレス,lstファイル名,行頭の指す値,公差,chnファイル名,オフセットか
  384. になります。
  385. チェインファイルには、読み書きしたいアドレスだけを連ねます。
  386. (16進なら頭に"0x"を忘れずに!)
  387.  
  388. 例:[subject]属性一括:b_list,0x468000,属性,0,1,属性,real
  389.  
  390.  
  391. ◆11個目は"d_list"。ダブルリストです。
  392. listやb_listは、基本的に小さい順に値が並ぶことになります。
  393. が、値を不定でとびとびに定義したい場合、この項目を使います。
  394. 書式は
  395. [subject]項目名:d_list,開始アドレス,lstファイル名, 最小値, 最大値,lstファイル名
  396. になります。
  397. ※最後はlstファイルです。注意してください。
  398. 最小値・最大値には、使用する値の最小値・最大値を書きます。
  399. 一つ目のリストファイルに表示する名称を。2つ目のリストファイルに値を書きます。
  400.  
  401. 例:[subject]技:d_list,0x486000,技名, 0, 0xFF,技値
  402.  
  403. 技名.lst  |技値.lst
  404. ------+------
  405. なし    |0x00
  406. 唐竹割   |0x0A
  407. 枯木斬   |0x20
  408. デスシックル|0xFF
  409.  
  410. ◆12個目は"bitlist"。ビットリストです。
  411. ここまでのリスト項目は、どれか一つしか選択できません。
  412. (普通はそれで事足りるので)
  413. が、バイトではなく、ビットが立ったか立たないかで管理しているものは、
  414. 複数選択できないと、まずいことがあります。その為に使うのが、この項目です。
  415. 書式は
  416. [subject]項目名:bitlist,開始アドレス,lstファイル名, バイトサイズ
  417. となります。
  418. 「バイトサイズ」には、使用するバイト数を書いて下さい。
  419.  
  420. 例:[subject]所持武器:bitlist,0x486000,武器名,1
  421.  
  422. ---------- [replace]で省エネしよう! -------------
  423. みなさん…アドレスだけ違う、同じよーな項目をたーくさん書いてませんかぁ?。
  424. もっと楽しましょうよぉ(^-^)
  425.  
  426. さて、ver2.6から登場いたしました
  427. [replace]君。
  428. これが便利なんですね~。
  429. 例えば
  430.  
  431. [subject]キャラ1:dir
  432.     [subject]体力:calc,0x400000,0x0,0xFF,signed,little_e
  433.     [subject]知力:calc,0x400010,0x0,0xFF,signed,little_e
  434.     [subject]迫力:calc,0x400020,0x0,0xFF,signed,little_e
  435. [back]
  436. [subject]キャラ2:dir
  437.     [subject]体力:calc,0x400030,0x0,0xFF,signed,little_e
  438.     [subject]知力:calc,0x400040,0x0,0xFF,signed,little_e
  439.     [subject]迫力:calc,0x400050,0x0,0xFF,signed,little_e
  440. [back]
  441.  
  442. という項目があったとしますね?
  443. 体力・知力・迫力は、アドレス以外はキャラ1・キャラ2ともに同じ内容です。
  444. こういう場合は、
  445. ----------------------
  446.     [subject]体力:calc,0x00,0x0,0xFF,signed,little_e
  447.     [subject]知力:calc,0x10,0x0,0xFF,signed,little_e
  448.     [subject]迫力:calc,0x20,0x0,0xFF,signed,little_e
  449. [back]
  450. ----------------------
  451. というファイルを作り、拡張子".ssc"(Spoiler Script Child)で保存します。
  452. ※仮に"status.ssc"というファイル名にしたとしましょう。
  453.  
  454. で、本体のSSGを
  455. [subject]キャラ1:dir
  456.     [replace]0x400000,status,offset
  457. [subject]キャラ2:dir
  458.     [replace]0x400030,status,offset
  459. に書き換えます。
  460. これでファイルサイズは減少、動作は変更前と同じです(^^)
  461.  
  462. ※[replace]を多段に(sscに[replace]を)使うこともできます。
  463.  ただし、永久ループにならないように気を付けて下さいね(^^;)
  464.  
  465.  
  466. ---------- [adjustment]で追尾する! -------------
  467. adjustment----補正、調整の意
  468.  
  469. ぱすてるチャイム以降のアリスソフト系ゲームなど、
  470. 環境によってアドレスが変わってしまう物もありますよね。
  471. そーいう輩には、この[adjustment]を叩き込むべし!
  472.  
  473. [adjustment]モード,基点,値・ファイル名,アドレス下限,アドレス上限,増減値
  474. ちょっと難しいのでよーく読んで下さいね。
  475.  
  476. ・「モード」
  477.  "search"か"dialog"か"heap"か"verison"を指定します。
  478.  "search"を指定した場合、3番目のオプションには直接値を記述します。
  479.  "dialog"を指定した場合、3番目のオプションにはADJファイル名を記述します。
  480.  "verison"を指定した場合、書式が全く変わってきます(^^;)。
  481.  詳細はもう少しあとでね。
  482. ・「基点」
  483.  基点となるアドレスを書く。
  484. ・「値・ファイル名」
  485.  サーチする値、もしくはADJファイル名(拡張子を除く)を書く
  486. ・「アドレス下限,上限」
  487.  サーチする範囲を書く。
  488. ・「増減値」
  489.  サーチする際のステップ量を書く。
  490.  
  491. ★【不変な値があり、それが書き換えたい値に隣接している】:
  492.  自分の環境では 0x500000 にAABBCCDDEEFFという
  493.  (環境によってアドレスは変わるが)内容はいつも変わらない値があるなら、
  494.  
  495. [adjustment]search,0x500000,AABBCCDDEEFF,0x400000,0xFFFFFF,0x1
  496. と書く。すると、ゲーム実行中に何かの項目を選ぶと
  497. 0x500000(基点)から0x400000(下限)まで0x1(増減値)ずつ減らしながら、
  498. AABBCCDDEEFFという値を探していく。見つからなかった場合、
  499. 0x500000(基点)から0xFFFFFF(上限)まで0x1(増減値)ずつ増やしながら
  500. AABBCCDDEEFFという値を探していく。見つかった場合、
  501. そのアドレスと0x500000(基点)との差を求め、補正値として記憶しておく。
  502. で、書き換えるときは、補正値を加算して書き込むわけです。
  503. サーチする値は、なるべく類似性のない物の方が良いでしょう。
  504. ("00000000"とかは厳禁だよっ(^^;))
  505.  
  506. なお、基点や下限・上限には、heapXも指定できます。
  507. 例:[adjustment]search,0x500000,AABBCCDDEEFF,heap2,heap3,0x1
  508. この場合、heap2<0x500000<heap3の範囲でサーチをかけます。
  509.  
  510.  
  511. ※一度値を見つけることが出来たら、
  512.  目的のプロセスが終了しない限り、再度サーチすることはありません。
  513.  
  514.  
  515. ★【不変な値など無い。値を入力して、それをサーチするぜっ!】:
  516.  不変な値がないなど、"search"が使えない場合は別の方法を用います。
  517.  
  518. [adjustment]dialog,0x500000,テスト,0x400000,0xFFFFFF,0x1
  519. と書く。すると、ゲーム実行中に何かの項目を選ぶと
  520. SpoilerALは テスト.adj というファイルを読み込み、解析します。
  521. ADJファイルの書式は以下参照。
  522.  
  523. ---------付録(笑) HowToAdj-------------------
  524. 書式は殆どSSGと同じです。
  525. しかも現段階ではタグも7種類だけ(^^;)
  526.  
  527. ◆[note]から
  528. ◆[/note]
  529. までの間に書いた文字は、メモとして表示されます。
  530.  
  531. ◆[toggle]
  532. [toggle]見出し,ONの名称,OFFの名称,未入力の可否,ONの値,OFFの値
  533. の様に用います。
  534. これを使うと、ON/OFF/不明を選ぶラジオグループを表示します。
  535. ┌見出し──────────────┐
  536. │●ONの名称 ○OFFの名称  ○不明 │
  537. └─────────────────┘
  538. 図で書くとこんな感じでしょうか。
  539. 4番目のオプション「未入力の可否」には"ok"か"no"を指定します。
  540. "ok"を指定すると、「不明」を選べるようになります。
  541. ただし、不明を選んだときは「どんな値が入っていてもいい」という
  542. 意味になりますので、サーチしてもヒットしない可能性が高くなります。
  543.  
  544. ◆[calc]
  545. [calc]名称,未入力の可否,入力できる最小値,入力できる最大値
  546.         ,負値の可否,エンディアンの指定
  547. の様に用います。
  548. これを使うと、値を入力するエディットボックスを表示します。
  549.      _________
  550. 名称[_________]
  551. 表示はこんな感じです。
  552. toggle同様、未入力の可否に"ok"を指定できます。
  553.  
  554. ◆[string]
  555. [string]名称,未入力の可否,最大文字数(バイト単位), 末尾にNULL付加
  556. の様に用います。
  557. これを使うと、文字を入力するエディットボックスを表示します。
  558.      _________
  559. 名称[_________]
  560. 表示はこんな感じです。
  561. toggle同様、未入力の可否に"ok"を指定できます。
  562. 入力した文字が最大文字数に満たない場合、
  563. 不定な値(toggleでいう"??")で補完されます。
  564.  
  565. ◆[radio_calc]
  566. [radio_calc]見出し,行数,最小値,最大値,負値の可否,エンディアンの指定,
  567.             アドレス,...
  568. の様に用います。
  569. ※アドレスは必要な分だけ連ねてください。
  570. これを使うと、一覧の中から一つの値を選ぶラジオグループを表示します。
  571. ┌見出し──────────────────────┐
  572. │●アドレス1の値 ○アドレス2の値 ○アドレス3の値 │
  573. └─────────────────────────┘
  574. 図で書くとこんな感じでしょうか。(行数3の場合)
  575. ※行数2でアドレスが3つある場合、自動的に2段表示します。
  576. 主に予め移動先アドレスが分かっている場合に使います。
  577. 「現在の所持金を選んでください」とかかな。
  578. [adjustment]に記述したアドレスと、選んだアドレスの差が補正値になります。
  579. ※その性質上、他の項目は必要ありませんが、[val]には[val]*.などと指定してください。
  580.  
  581.  
  582. ◆[val]
  583. さて、これで値を入力させるために、
  584. エディットボックスやラジオグループを表示させることは出来ますね。
  585. ではその入力した値を組み合わせて、実際にサーチする値に変換しましょう。
  586.  
  587. 先ほど、adjustmentの説明のために書いた例がありましたね。
  588. [adjustment]dialog,0x500000,テスト,0x400000,0xFFFFFF,0x1
  589. これが実行されたと想定して、説明します。
  590.  
  591. テスト.adj に、
  592. [val]AABBCCDD
  593. と書いたとします。すると、
  594. 0x500000(基点)から0x400000(下限)まで0x1(増減値)ずつ減らしながら、
  595. AABBCCDDという値を探していく。見つからなかった場合、
  596. 0x500000(基点)から0xFFFFFF(上限)まで0x1(増減値)ずつ増やしながら
  597. ………
  598. "search"と一緒やん(^^;)
  599. そーです。これではエディットボックスを出す意味がありません。
  600. エディットボックス等に入力した値を使うには、
  601. [val]*.
  602. などとして使います。
  603. こうすると、サーチする値は「一つ目」の
  604. エディットボックスもしくはラジオグループ(先に書いた方)に
  605. 入力した値でサーチします。
  606.  
  607. "*."は"*0"でも"*u"でも構いません。"*"と何か一文字を書くのです。
  608.  
  609. 仮に
  610. [val]*.*.
  611. [calc]体力,no,0,0xFF,signed,little_e
  612. [calc]気力,no,0,0xFF,signed,little_e
  613. というADJファイルだったとします。
  614. そうすると、サーチする値は、"体力+気力"ということになります。
  615. 体力が 32 気力が 10 なら "200A" ですよ! "2A"じゃありません(^^;)
  616.  
  617. [val]FF*.*.FF
  618. 上記の条件でこうなら、サーチする値は"FF200AFF"になります。
  619.  
  620. なお、"+."ってのもあります。
  621. これが入ると、その次の2文字を16進数と見て、その分だけアドレスを飛び抜かすことが出来ます。
  622. [val]FF+.10FF
  623. だと、FFがあってその11バイト先にFFがある、を意味します。
  624. 255バイト以上飛び抜かしたい場合は、+.FF+.40のように連ねて対処してください。
  625. --------------------------------------
  626. "dialog"を指定すると、
  627. この様にしてはじき出した値を、サーチするわけです。
  628. ちょっと分かりにくい説明だったとは思いますが、
  629. 「ここが分からん!」と言って下されば、出来る限り対応いたします(^^;)
  630.  
  631.  
  632. ★【Heapの範囲によって、アドレスが推移する】:
  633.  アリスソフトのSYSSTEM3.6あたりで有名なアドレス移動ですね。
  634.  
  635. 記述例としては
  636. [adjustment]heap,heap2=0xA90000>0xB9FFFF,heap3=0xBA0000>0x10AFFFF
  637. のようにするです。
  638.  
  639. 上記2つの補正方とはちょいと構文が違いますんで、ご注意あれ。
  640. 分解しますと、
  641. [adjustment]モード,ヒープ番号=開始アドレス>終端アドレス,...
  642. のようになるです。
  643.  
  644. 「モード」はheapですね。
  645. っていうかココを見てどんな補正方か調べているので、
  646. heapを指定しないとHeap補正と見てくれません。
  647.  
  648. で、「Heap番号」です。
  649. Heap2ならheap2、Heap3ならheap3と書くのです。
  650. ただし、DEFAULTHEAPは、heap1になります。Heap補正なのでモジュールエリアは無視です。
  651. で、「開始アドレス>終端アドレス」に関しては…説明不要かと(^^;)
  652. 見たまんまです。
  653. 複数のHeapを対象にしたいときは、そのHeap数だけ","で区切って記述すればいいのです。
  654.  
  655.  
  656. ★【ファイルのVersion情報によって、アドレスが推移する】:
  657.  エミュレータやアプリなど、Version情報を含むファイルに用います。
  658. 書式は
  659. [adjustment]モード, キー名, 値=補正値(,値=補正値,…)
  660. ですにょ。
  661. 記述例としては
  662. [adjustment]version, FileVersion, 3.0=0x0, 3.1=0x500
  663. のようにするにょ。
  664.  
  665. モード:"version"しかあり得ません。
  666. キー名:チェックするバージョン情報のキー名を指定します。
  667.     一般的に、"Comments","CompanyName","FileDescription","FileVersion",
  668.     "InternalName","LegalCopyright","LegalTrademarks","OriginalFilename",
  669.     "PrivateBuild","ProductName","ProductVersion","SpecialBuild"
  670.     などが用いられます。
  671.     メニューの「メモリ・プロセス」からファイルのVersion情報を
  672.     所得できますので、試しに適当なファイルを開いてみると良いでしょう(^^)
  673. 値  :"3.0"や"SpoilerAL"など、キー名に対応した値です。
  674. 補正値:その値であったとき、SSGに記述したアドレスに±する数値を指定します。
  675.  
  676. ※もし対応した値が見つからなければ、補正値には0が適用されます。
  677.  
  678. ------- [adjustment]豆知識 ----------
  679. SSGには
  680. [hold]
  681. というタグを書くことが出来ます。
  682. これは、アドレス移動系のゲームではあるが、
  683. 一部、アドレスが移動しない項目がある場合に使います。
  684. [hold]5
  685. とすると、そのSSG内で5番目の項目をアドレス補正の対象から除外します。
  686. ([dir]や、[replace]で追加される項目数も計算に入れて下さい)
  687. なお、
  688. [hold]next_no
  689. とすれば、その次に書いた項目を補正対象から除外できます。
  690.  
  691. [calc]・[toggle]は合計で16個までに抑えて下さい。
  692. つまり、[val]に"*"が17個以上でてきてはいけません。
  693.