zkn_sort_personal_make.plの使い方


■概要
図鑑で使用する下記データを生成する。
・高い順に並べたデータ(sort_high)
・低い順に並べたデータ(sort_short)
・重い順に並べたデータ(sort_heavy)
・軽い順に並べたデータ(sort_light)
・全国図鑑順に並べたデータ(sort_zenkoku)(使用しない)
・地方図鑑順に並べたデータ(sort_chihou)
・五十音順に並べたデータ(sort_aiueo)
・地方図鑑番号(chihou_no)(使用しない)
・頭文字番号(initial)
・五十音順ファイルのどこからアが始まるか、イが始まるか、…を記したデータ(インクルードして使う)(sort_aiueo_idx)


■場所
resource\zukan_data\zkn_sort_personal_make.pl


■必要な入力ファイル
(1) personal_wb.csv
ShiftJIS
引数で渡す。
FileMakerから出力したファイル。


■必要なツール
なし


■使い方
perl zkn_sort_personal_make.pl personal_wb.csv


■出力ファイル
(1) zkn_sort_high.dat
高い順に並べたデータ
出力フォーマットは「MONSNOとFORMNOを出力するタイプ」。
MONSNO 0番なし。
フォルムが複数存在するものはフォルムごとに値が異なるので、全フォルム分のデータを出力している。

(2) zkn_sort_short.dat
低い順に並べたデータ
出力フォーマットは「MONSNOとFORMNOを出力するタイプ」。
MONSNO 0番なし。
フォルムが複数存在するものはフォルムごとに値が異なるので、全フォルム分のデータを出力している。

(3) zkn_sort_heavy.dat
重い順に並べたデータ
出力フォーマットは「MONSNOとFORMNOを出力するタイプ」。
MONSNO 0番なし。
フォルムが複数存在するものはフォルムごとに値が異なるので、全フォルム分のデータを出力している。

(4) zkn_sort_light.dat
軽い順に並べたデータ
出力フォーマットは「MONSNOとFORMNOを出力するタイプ」。
MONSNO 0番なし。
フォルムが複数存在するものはフォルムごとに値が異なるので、全フォルム分のデータを出力している。

(5) zkn_sort_zenkoku.dat
全国図鑑順に並べたデータ
出力フォーマットは「MONSNOを出力するタイプ」。
MONSNO 0番なし。
1<= <=MONSNO_END(ゲノセクト)の合計(MONSNO_END)個のデータ。

MONSNOをそのまま使うことにしたので、使用しなくなった。

(6) zkn_sort_chihou.dat
地方図鑑順に並べたデータ
出力フォーマットは「MONSNOを出力するタイプ」。
MONSNO 0番なし。
1<= <=MONSNO_END(ゲノセクト)の合計(MONSNO_END)個のデータ。

地方図鑑に登場しないポケモンもこのファイルには含まれている(地方図鑑番号0番扱いなので前半に集中している)ので、
それは除いて使用して下さい。

(7) zkn_sort_aiueo.dat
五十音順に並べたデータ
出力フォーマットは「MONSNOを出力するタイプ」。
MONSNO 0番なし。
1<= <=MONSNO_END(ゲノセクト)の合計(MONSNO_END)個のデータ。

(8) zkn_chihou_no.dat
地方図鑑番号
[例]
1のバイナリ値(ツタージャの地方図鑑番号は1)

0のバイナリ値(今回の地方図鑑に登場しないポケモン(例 フシギダネ)の地方図鑑番号)

1以上の数字のとき、地方図鑑に登場し有効な番号
0のとき、地方図鑑に登場しない

リトルエンディアンのu16
monsno 0番あり(0)
0<= <=MONSNO_END(ゲノセクト)の合計(MONSNO_END+1)個のデータ

poke_personal.h/cppに地方図鑑番号を得る関数が用意されたので、使用しなくなった。

(9) zkn_initial.dat
頭文字番号
[例]
ファイルの1バイト目(0バイト開始)に27のバイナリ値がある(フシギダネのフは27)

monsno順
monsno 0番あり($initial_to_no_unknown)
u8(u8だからリトルエンディアンとかない)

# 頭文字番号
%initial_to_no_tbl =
(
  "ア"=>0,  "イ"=>1,  "ウ"=>2,  "エ"=>3,  "オ"=>4,
  "カ"=>5,  "キ"=>6,  "ク"=>7,  "ケ"=>8,  "コ"=>9,
  "サ"=>10, "シ"=>11, "ス"=>12, "セ"=>13, "ソ"=>14,
  "タ"=>15, "チ"=>16, "ツ"=>17, "テ"=>18, "ト"=>19,
  "ナ"=>20, "ニ"=>21, "ヌ"=>22, "ネ"=>23, "ノ"=>24,
  "ハ"=>25, "ヒ"=>26, "フ"=>27, "ヘ"=>28, "ホ"=>29,
  "マ"=>30, "ミ"=>31, "ム"=>32, "メ"=>33, "モ"=>34,
  "ヤ"=>35,           "ユ"=>36,           "ヨ"=>37,
  "ラ"=>38, "リ"=>39, "ル"=>40, "レ"=>41, "ロ"=>42,
  "ワ"=>43,                               "ヲ"=>44,
  "ン"=>45, 
);
$initial_to_no_unknown   = 46;  # 不明な頭文字のとき

(10) zkn_sort_aiueo_idx.h
五十音順ファイルzkn_sort_aiueo.datのどこからアが始まるか、イが始まるか、…を記したデータ(インクルードして使う)
[例]
#define ZKN_SORT_AIUEO_IDX_START_I  (21)
#define ZKN_SORT_AIUEO_IDX_END_I    (29)
イが始まるのはZKN_SORT_AIUEO_IDX_START_Iから。
ZKN_SORT_AIUEO_IDX_START_I<= <ZKN_SORT_AIUEO_IDX_END_Iにイのデータがある。

#define ZKN_SORT_AIUEO_IDX_NONE  (0xFFFF)
ZKN_SORT_AIUEO_IDX_NONEのときはその頭文字を持つ名前がない(「を」と「ん」)。


■出力フォーマット
・MONSNOとFORMNOを出力するタイプ
    リトルエンディアンのu16でMONSNO
    リトルエンディアンのu16でFORMNO
    ( (FORMNO << 10) | (MONSNO << 0) )してひとまとめにしてu16に入れておく
    |15 14 13 12 11 10|09 08 07 06 05 04 03 02 01 00|
    |     FORMNO      |           MONSNO            |
    |  0<=      <64   |        0<=      <1024       |

  [例]
  ( (1 << 10) | (201 << 0) )のバイナリ値(アンノーンの1番目(0始まり)のフォルムデータの位置)

・MONSNOを出力するタイプ
    リトルエンディアンのu16

  [例]
  201のバイナリ値(アンノーン)


■改善の必要がある点
(1) C言語プログラムで使用できる頭文字番号を定義したファイルを出力したほうがいい
zkn_initial.datと値が変わらないようにするため。

(2) 未使用ファイルは出力しないようにしたい
ゲームで使用していないファイル
  zkn_sort_zenkoku.dat
  zkn_chihou_no.dat
は、出力しないようにしておいたほうが、不要な混乱を避けられると思う。


以上。
