# EmSIDしらみつぶし補助ツール
# 0. この仕様書について
この仕様書は「EmSIDしらみつぶし補助ツール」についての要件について定義し、開発の仕様を定めたものである。
# 1. 概要
## 1.0. 名前
名前は「EmSIDしらみつぶし補助ツール」とする
## 1.1. ツール説明
エメラルドのSIDを総当たりで調べるのを少しでも効率化するためのツールである
## 1.2. 原理
エメラルドのTIDはtimer0の値から決定するため, 現在実機での調整の方法が確立されていない. 一方でSIDはTID決定時にTIDと同じ値がseedとして格納され, 通常のLCGから乱数を取得して決定される. したがって, TID決定からSID決定までの時間がわかれば, トレーナーカードに表示されるTIDからが求められる.
TID決定はTN入力終了時, SID決定はTN確定時である. したがって, この間を連打で飛ばしていたのならば, SIDの範囲はかなり絞ることができる. 連打をしていなかったとしても, ふつう長くて数十秒程度, すなわち3000F弱であり, 8192通りすべてを試すよりは少ない範囲を調べるだけで事足りる.
# 2. 要件
## 2.0. 要請される機能
1. TIDと基準フレーム(最速入力の場合の経過時間)の入力欄
2. リストを出力する範囲
3. チェックリスト
4. csv読み込み/csv出力
5. 個体からのPSV逆算
6. PSVからの個体検索
## 2.1. Control
|No.|Control||
|:-|:-|:-|
|1.|NumericUpDown|入力を数値に限定できる,上限・下限の設定が可能.|
|2.|NumericUpDown|同上|
|3.|DataGridView+CheckBox|調べ終わったものはチェックする|
|4.|Button||
|5.|Button+DataGridView|計算結果はDGVで表示|
|6.|Button+DataGridView|同上|
## 2.2. 画面構成
- 上部にTID等の入力コントロール
- メニュー欄からcsv読み込み/出力
- チェックリストが画面左, 逆算/検索は画面右でTabPageで切り替え
## 2.3. 検索機能詳細
チェックリストからSID候補を入力すると, 光るPSVを計算し, 該当する個体を出力. シンクロ対応.
実数値入力から個体値を内部で逆算し, 該当するPSVを出力. InitialSeed 0x0から一定範囲内の条件を課すべきか?