SFC風来のシレン研究ノート

元々ブロマガでやってたやつ

【補足】道具命名による肉入手の文字数について

twitterで頂いたご質問について。

Q:「ダ8_0@」で任意のレベルの肉が出せるのに「ー01」や「ぞ02」が別に書かれている(しかも何故か3文字だけ)のは何故でしょうか?

A:名付けはE0から始まる11バイトの行動
E0 XX ?? YY YY YY YY YY YY FF FF
なのですが、
(参考:http://oyasen20.tripod.com/action.html

どうやらこの3バイト目の??は、
3文字目(すなわち3つ目のYY=6バイト目)のメモリと同一のようなのです。
(多分レジスタの設定ミス)

デバッグ開始のE1から並べると
E1:E0:命名道具番号:3文字目:1文字目:2文字目:3文字目・・・
となり、3文字目の効果が2箇所に現れてしまいます。

そしてこれはデバッグの意味合い上
E1:(05以上は道具指定):(使われない):道具カテゴリ:カテゴリ内番号:(以降はカテゴリによって異なる)
と解釈されます。

肉以外のアイテムは「道具カテゴリ」:「カテゴリ内番号」:「修正値」

の順で高々3つのパラメータで指定できるため、
これらを3-1-2文字目に対応させればうまくいきます。

ところが、肉は普通に指定する場合
道具カテゴリ肉(9)」:「中分類カテゴリ0」:「キャラコード」:「レベル
と4つの指定が必要になります。
結果、道具カテゴリとレベルが同じ3文字目のメモリに対応してしまうため、
通常のやり方ではまともに指定することができません。
(レベル9の肉しか作れない)

そこで、回避策として二通りの方法があります。
1:文字コード80「ダ」以降は選択キャンセルを意味するので、
  1文字目にこれを指定すると「1回目の3文字目の選択」をキャンセルでき、
  (3文字目):(1文字目キャンセル):2文字目:3文字目:4文字目:5文字目
  の5文字で4つのパラメータを指定できる

2:肉以外のカテゴリを指定してから、
  カテゴリ内順位が肉の番号E0になるような大きいコードを入力して
  強引に肉を選ぶ

しかし2には制限があり、カテゴリ毎に肉の道具番号E0を取れる値は決まっています。

例えば「矢」(カテゴリ8)を指定した場合、
初期値である「木の矢」はアイテムコード10hなので、
カテゴリ内の順番としてE0を指定するためには
順番コードとしてD0を入力する必要があります。

しかし前述の通り、80h以上の文字はキャンセルを意味してしまうため、
80より大きい番号の指定はできません。

このように、ある程度アイテムコードの初期値が大きいカテゴリでしか、
アイテムコードE0は指定出来ないことになります。

カテゴリは0(草)~9(肉など)までありますが、
これが可能なカテゴリは1~4、7に限られます。

これは、3文字で表現できる肉のレベルが2~5、8に限られることを意味し、
レベル1の肉はどうしても5文字必要になってしまいます。

(逆にレベル4,5,8も3文字で行けますが、
 表が煩雑になるので略してます。需要も小さいですし)

もちろん5文字使えば任意のレベルが指定できるわけですが、
TAS的な需要としては3文字も重要な場合もあり得るので併記しました。


以上が、3文字と5文字、及び任意レベルと特定レベルが混在している理由でした。

あーややこしい。