// 4TAB-sjis
/**********************************************************************
	"ALICE SOFT System3.x" compatible scenario decoder SD35
													DR3.2/CDDA
													
	デーコーダ部分のドキュメント															
**********************************************************************/

・概要
	ALICE SOFT のSyetem3.x 互換のシナリオデコーダです。
	機種依存部の実装(CGraphicDriver_XXXX, COffScreen_XXXX etc.)と、
	アプリケーションプログラムが必要です。
	x86系（というかリトルエンディアン）じゃないとだめかも

・動作確認リスト( WIN32 + DR3.1 )
	- (c)ALICE SOFT -
		NVSYSTEM-mini + Test.adv ( アリスCD Ver1.0 )	：ＯＫ
		アトラク＝ナクア(アリスの館４５６）				：ＯＫ 途中で突然落ちたこと有り(DR3.1)
		デアボリカ										：だいたいＯＫ クリア報告募集中
		鬼畜王ランス									：だいたいＯＫ クリア報告募集中
		零式(アリスの館４５６）							：ダンジョンに潜るところまで
		人間狩り(アリスの館４５６）						：無限ループに入ることがある？
		ママトト										：チュートリアルの途中まで
		かえるにょ・ぱにょ～ん							：アリスの館だけ

		system3.6---
		まもりがみさま									：全然ダメ スクロールが変
		ぱすてるチャイム								：全然ダメ スクロールが変

	- その他公開されているもの -

・使い方
	//
	CScenarioDecoder *lpSD		= new CScenarioDecoder( "files.lst");
	CGraphicView	 *lpView	= m_lpSD->GetGrpDriver();
	lpView->SetLocalInfo( (void *)機種依存データ );
	lpSD->Run();
	
	他に、ALSD::CGraphicViewのマウス、K/B等のメッセージハンドラを
	呼び出すコード(アプリケーション側）と
	機種依存部の実装も必要なら行う
		ALSD_XXXX::CGraphicDriver_XXXX	(DR1/NV-M 以降)
		ALSD_XXXX::COffScreen_XXXX		(DR1/NV-M 以降)
		ALSD_XXXX::CCDPlayer_XXXX		(DR3.2/CDDA 以降)
	//	ALSD_XXXX::CSoundDriver_XXXX
	//	ALSD_XXXX::CMIDIDriver_XXXX
	//	ALSD_XXXX::CNetworkDriver_XXXX

・内部動作仕様
	  オフスクリーンは32bit固定で、WWコマンドによるカラー数は
	無視されます。8bitなゲームの動作はまだ考えてないです(^^;;;
	  ＃パレットエミュレートが楽か？＜遅そう
	  ６万色モードで動作可能なソフトは特に問題ないようです。

	  CE/CD系のエフェクト・影データ指定時の精度は6bitです。
	速すぎるものについてはデフォルトのウェイトがに30ms程度かけてる
	ものもあります。(16,17,22,23 etc.

	  CE/CD No.16はなんとなくオリジナルと異なります。
	でも、No.17見るとこっちであってるような気が...		

	  全角＞半角の機能は手抜きのためカナが変換できません...オィ
	  半角＞全角変換にはバグがあるようです。

・オリジナル(System3.5)の疑問と対処

	  SDKマニュアルでは、選択肢の縦方向行間は４ドットとなっている
	が、２ドットのような気がする
		-２ドットで実装した。

	  CE No.21 横ライン外→内で、奇数Yサイズを指定するとオリジナル
	  では、真ん中の１ライン分転送されない
	    -たぶんオリジナルのバグ...
		-20番は最後の１ラインが転送されない

	  QDの時配列変数のセーブフラグは無視され全保存される？
		-現状セーブデータに互換性無いのでフラグは無視
	  
	  CE/CDのフェードインは転送元が真っ黒だと、CCと同じ動きをする？
	  (NVSYSTEM-mini Ver.1.00-00/NVSYSTEM.ADV/67行)
		-１回目の転送時に全部黒だったらループから抜ける
		-3.5だと１回も転送してないような感じ。3.6準拠。

	  MS 全角５０文字して、半角にして出力すると．．．OK
	  (NVSYSTEM-mini Ver.1.00-00/NVSYSTEM.ADV/90行)
		-128x5000をデフォルトで確保するようにした。
		-領域再確保コマンドも倍サイズで採る。

	  G cali,caliは６万色モードでも使えるらしい。
		-スプライトカラーが指定されていたら影データ使用するようにする。
	
・開発環境
	MS WindowsNT4.0SP4MPS + VisualC/C++ 6.0SP3
	gcc x.x-beos-9xxxxx(BeOS R4.51 for INTEL)
	mwcc(BeOS R4 for PPC)

・参考資料
	・SYSTEM3.5 SDK ( (c)ALICE SOFT )
	・SYSTEM 3.5&3.6 DIS COMPILER ( Ｔ．ＨＡＳＥＧＡＷＡ氏 )
	・xsystem35( Masaki Chikama氏)

・履歴
-1999.02.11 DR1/NV-M
・NVSYSTEM-mini(ALICE SOFT)＋サンプルが動いた。

-1999.05.03 DR2/Pre_AT=NK
・アトラク＝ナクアをとりあえず動かす版
・足りないコマンドとCE/CDの足らないエフェクトの実装
・シナリオファイルをキャッシュしてページジャンプ／コールを高速化
・CD/CE のwait調整(Win32版で行った)
・SD35B pre alpha版としてリリース

-1999.05.05 DR2.1/LETI-ko
・デアボリカ起動確認版(PCを部分実装しただけ
  キャッシュに載せるために使ってるのかな？

-1999.05.23 DR2.2/KANAMI
・鬼畜王ランス対応版
・メッセージ・選択の透過を実装
・Ｊコマンドのバグフィックス
・セーブロードのバグを直したのでデアボのも一緒に直ってるといいなぁ

-1999.05.29 DR3/KT
・木坂寿宏氏によるmwcc/ppc用修正を取り込み。（多謝
・DR2.2で反応が鈍くなっていたIK6を修正
・COffScreen_BeOSでアンチエイリアスの文字にじみの修正（元コード木坂氏による

-1999.07.31 DR3.1/PreV
・Ｖコマンドの対応
・その他もろもろのコマンドの追加
・BeOSで発生していたビットマップ転送のデットロックの回避
・B4コマンドの修正
・エンディアンの差違吸収

-1999.08.21 DR3.2/CDDA
・ppcでコンパイルできない部分の修正
・CD-DA再生対応

