﻿■実装予定

【優先度：高】
パレット検出で00番パレットを飛ばす影響？で、16色パレットの2番目から検出することがある。16色目以降がパレットではない場合に、後ろを合わせるように検出アドレスを修正する。

【優先度：低】
	ファイル側のパレットセレクタのサイズを可変にする。高さを2倍にして情報量を増やしたい
	用語の変更/統一 (ほかのツールを参考にする)


■更新履歴
	機能ではなく処理の変更記録なので、客観的にわかりにくいかもしれません。

2021/06/05
	パレットタイプのIndexedをNESとMSX1に分けた。
	パレットチェックの有効無効は、パレットタイプ別の設定から全体の設定(表示中のパレットタイプでパレットチェックするか)に変更。
	MSX1の固定パレットの読み込みに対応。NES/MSX1の固定パレットの切り替えに対応。
	MSX2のパレットに対応「9bit R3G3B3」を使う
		パレットチェックはRGB汎用ビットマスク処理で使用不可ビットを検出する
		パレット検出は汎用パレット検出処理(パレットチェック結果を参照)を使う
			[済]パレットチェックのボタンの統合。MSX2も対応できるように。
			[済]GUI周りの修正。パレットタイプ、パレットチェックのボタンの追加・削除、ヒントの修正。
			[済]パレット検出でMSX2などの2バイト以上の場合に1バイトずれたアドレスを検出することがあったのを修正。
2021/05/23
	アドレスを表示する設定を「非表示」から「表示」に切り替えたときに、ウィンドウのレイアウトが崩れるのを修正
	パレットチェックのヒントを追加

2019/12/10 ver.0.9
	[済]GUI倍率変更可能にしたい (設定画面での変更に対応。YY-CHRと同様に2～5を指定可能。デフォルトは2)
	RGBエディタコントロール
		[済]RGBエディタをサイズ指定可能にする。内部でカラーバーのサイズを計算し、定数を使わないようにする
	確認ダイアログ
		[済]変更されたファイルを閉じるときの保存確認ダイアログ(開く・閉じる)の実装
		[済]変更されたファイルをリロードするときの確認ダイアログの実装
		[済]ファイルが他プロセスから更新された時のリロードを確認するダイアログの実装
	設定
		[済]設定画面を追加
		[済]設定画面でOKを押したときと終了時の設定保存と、起動時の設定読み込みに対応
		[済]設定項目の説明を追加する(英語のみ)
		[済]32ビット以外でもRGBエディタにAを表示するかの設定を追加
	検出
		[済]NESの検出で同じ色が3/4続くときは検出を飛ばす。
		[済]NESの検出で0D-3D,0E-3E,1F-3Fを怪しいパレットとして検出を飛ばす。
		[済]SNES/PAL検出で連続する00を飛ばす。未使用領域でパレットテーブルの検出位置がずれるので…。
		16bit以上のパレット検出
				LV1実装済: 全ビット有効なので、パレット単体では判別ができない。連続する色が4回出現したらそれはパレットではないものとする。
				LV2実装済: 16色をセットとして考え、セット中にほぼ明・暗・中間色が各1色以上含まれることを条件とする。RGB平均を1/4した値で判別するといいかも
	言語
		[済]英語での動作確認、英語で起動する方法を追加する(DEBUGビルドのみ。パラメータ-en)

2019/12/01
	RGBエディタコントロール
		ColorBitを編集するが、OKを押さずにほかのパレットを選択したとき、
		[済]①再読み込みするまではColorは変化していて(異常)、表示上は変化していない。(正常)
			アドレス移動で再読み込みすると変更前の値から変化していない。(正常)
				RGBエディタで、未確定時に参照ColorBitを直接更新しているのがダメ。OKボタンで確定なので、編集対象はエディタ用のColorBitにコピーして、コピーを編集して、OKボタンで元のColorBitに反映するのが正しい。
		[済]②同じ色が二つあるときに、RGBエディタで片方変更してOKせずに、もう片方を選択したときにプレビューの色が変化しない(異常) 再度2色を選択すると、変化する(正常)
				→選択イベントでBackColorを設定してRefreshしてなかった。プレビュー設定はRefresh→PaintでColorBitを描画が正しいので、BackColor設定からRefreshに変更する。
	検索画面
		メイン画面で1色をコピー、検索画面で貼り付けすると、4色貼り付けになって、3色の黒が張り付けられる。コピーした色だけ張り付ける。
		起動直後の検索画面で部分貼り付けするとnull参照が発生する。初期化時にデータ領域を作成する。
		[済]検索・検出結果を表示するとき、パレットセレクタで見つかった検索結果を選択する
			[済]検索結果を中央に出せるようにする(位置を設定できるようにする)
		[済]検索で?を含めて検索したときに、データの最後まで検索して見つからなくてもファイルの最後に見つかったような動作をしていたのを修正


2019/11/26 ver.0.8
	デバッグ用にプロパティエディタを追加(CommonLibから呼び出すだけ)
	パレット形式対応
		[済]16bitパレットの読み込みに対応する。ColorBitの処理を作成する
		[済]不正なパレットをColorBitで未使用ビットの読み込みでチェックするようにした。
	コントロール関連
		[済]ColorBitクラスはビット数指定ではなくパレットタイプ指定に変更する、Colorやバイナリ変換も作り直し。
		[済]ColorBitで16/32ビットなどのバイナリ読み込みに対応する。パレットエディタやYY-CHRのパレット読み込みもColorBitクラスの処理を使うよう変更
		[済]RGBエディタコントロールをARGBに対応させる。コントロールのプロパティで制御可能。このパレットエディタでは常時表示。YY-CHRでは非表示。
		[済]RGBエディタの目盛りの描画幅やタイミングが正しくない。ディスプレイ外で再描画するとずれることがあった
		[済]RGBエディタの目盛り数がきっちりになったので、半目盛り繰り上げの計算は全般(ColorBit)で削除する
	画面表示
		[済]RGBエディタのテキストボックスが24ビット向けで32ビットの時にはみ出すので広くする
		[済]アドレス入力系・16進数入力系のコントロールのフォントをLucidaConsole9ptに変更
		[済]TextBoxでコピー/貼り付けしたのに、Formのパレットのコピー/貼り付け処理が動く。マウスの右クリックメニューからは正常にコピペ可能。TextBoxはFormのコピペ対象外にする

2019/11/22
	パレット検索
		[済]検索パレットのラベルを作る
		[済]ファイルを開くときに検索中のデータをクリアするようにした
		[済]パレットセレクタの右クリックで？マークをつけれるようにする
		[済]パレットセレクタコントロールでラベル表示中に色が見にくいので、ラベルの黒縁を少し透過するようにした
		[済]検索パレットで？マークをつけたら、部分一致検索をできるようにする
		[済]検索ダイアログもコピペできるようにする。
			2画面起動でROMとステートファイルを開き、検索ダイアログにコピペすることにより、ステートファイルの読み込み機能の実装を省略できる？
	エラーダイアログを表示する
		[済]ダイアログクラスを用意する
		[済]ダイアログに表示するリソースを定義する

2019/11/21
	F3パレット一致検索を実装する
		[済]GUIを作る
		[済]インデックスもRGBもパレットはいったんバイトデータ化して一致検索する
		[済]前後検索は、検索パターンデータを変えず、前後に一致検索する
		[済]検索パターンデータがなければ前後検索(F3/Shif+F3)でも通常の検索パターンの設定ダイアログを表示する
	ヒント表示を追加
		[済]パレット検出失敗時で見つからないとき：テーブル検索を外す
		[済]パレット検索で見つからないとき：部分一致検索の方法
	パレットセレクタ
		マルチセレクトの内枠(黒)を追加する

2019/11/20
	Undo/Redoの実装
		[済]バッファ管理クラスを作る
			バッファ情報は(アドレス：変更前バイト配列：変更後バイト配列)
			Undoは変更前から、Redoは変更後から値を張り付ける
		[済]エディタの変更は張り付けと同じ処理(バイト配列の書き込み)を使うよう変更する。変更の共通処理にする。
		[済]変更の書き込みをする共通処理は、Undo管理クラスの書き込み処理を使うよう変更する。
		[済]ファイルを開くときにバッファをクリアする
		[済]インデックスのエディタはインデックス変化でファイルに書き込みではなく、MouseUpで書き込む。
	UX改善系
		[済]バイナリエディタのように、ファイル表示の左側にアドレスを表示する。(設定で隠せるようにするが、デフォルトで表示する)
		[済]RGBエディタコントロールのマウスでRGBをまたがない設定の追加
	ヒント表示は状況によって変更する
		[済]ファイル側パレットセレクタ：右ドラッグで範囲選択
		[済]エディタ：編集禁止モード
		[済]パレット検出成功時：結果についての注意点

2019/11/19
	エディタ部分の編集機能をつける。
		[済]エディタの編集結果をファイルデータに書き込む処理を実装する
		[済]RGBエディタの変更時にプレビューやHexなどを更新する
		[済]RGBエディタのリセットも実装する
	編集禁止モード
		[済]タイトルに(編集禁止)を表示する
		[済]インデックスエディタ(パレットセレクタ)がEnabled=falseの時にMouseDownを無効にする。その時の表示色はグレーにする
		  RGBディタのEnabled=falseの表示色を変更する (ReadOnlyと同じ色にはしている。ラベル無し) 背景色を黒から変更する
	コピーと貼り付けに対応する。
		[済]ファイル側のパレットセレクタは、複数パレットを選択可能にする(範囲コピーのために)
		[済]インデックスパレットはインデックス、RGBパレットはHEX値をテキストでコピーする。複数パレットの選択時は、スペースで区切る。
		[済]貼り付けはテキストから張り付ける。
			編集禁止モードの影響を受ける。
			splitで分割し、Trim。Convertでhexに変換できれば数値化してbyte配列に変換してコピーする。
			データなしの場合や、分割や数値変換に失敗したら警告音を出して処理をキャンセルする
	アドレス移動
		[済]アドレスボタンはデータが読み込まれた後に有効にする
		[済]選択中のアドレスから上下ボタンを押せるかも判定する

2019/11/18
	[済]パレット検出機能(パラメータを指定しない検索)を実装する。
		NES向けのパレット検出の実装
			LV2実装済：40未満のバイトデータが4つ連続する場合、「0X、(1Xまたは2X)、3X」のデータが3つ含まれる場合はパレットとして認識する
				以下を検出したフラグを立てる。
					OK : 00-3Fパレット
					NG : 40-FFパレット
					0F : 0Fパレット 黒・一般的な背景色指定(背景色は0Fではないこともある)
					0X : 00-0Fパレット
					1X : 10-1Fパレット
					2X : 20-2Fパレット
					3X : 30-3Fパレット
				以下の検出フラグの組み合わせをNESパレットとして検出する
					0F ((0X|1X) (2X|3X))
					0F (0X (1X|2X) 3X)
					0F (0X 1X)
			LV3実装済：パレットとして認識したデータの後ろに、最低3回パレットデータが検出できる場合、パレットテーブルとして認識する
		SNES向けのパレット検出の実装
			LV1実装済：15bitなので16bit目が1になっていたらNGとして赤×をつける。
			LV2実装済：1パレット2バイトなので、1バイトずらして正常値か判定する。正常になるならずらすことを推奨するか、自動でずらす。
						連続する色が4回出現したらそれはパレットではないものとする。
			LV3実装済: 16色をセットとして考え、セット中にほぼ白、ほぼ黒の2色が含まれることを条件とする。RGBを1/64した値で判別するといいかも
	[済]連続してパレットを検出した場合だけ結果に表示する「パレットテーブルを検出する」設定を追加
	[済]日本語のリソースを追加
	[済]編集禁止設定を追加する。ファイルを開いたときのデフォルトは編集禁止にする。

2019/11/17
	作成開始
		GUIの作成がだいたい完了
		ファイルを8bitインデックスまたは、15bit～32bitRGBのパレットとして表示する実装が完了
		インデックスパレットと、RGBパレットのエディタの実装が、変更データの更新を除く部分は完了
		NES向けのパレットチェックの実装中
			LV1実装済：40以上に赤い×をつけて、非パレット部分を認識しやすくした


