**** WindowsMobile版ビルドに関して ****


開発環境はVisualStudio2005(Pro) + PocketPC2003 SDKになります。
言語はC++（アンマネージド）、MFC/ATL未使用、CRL使用です。
STLはstd::mapのみ利用しています。


■ターゲット環境
　ARMv4命令セット
　WindowsCE 5.0カーネル
　PocketPC2003 シェルAPI


■プロジェクト
　AngbandTerm-wm (exe) : UI本体
　AngbandCore    (dll) : 変愚蛮怒内部システム及びCRL未対応の標準関数(io.hなど)
　wfc            (lib) : WindowsAPIのラッパークラス群（※）

※開発当初はMFCを使用していたため、MFCっぽい操作ができるようになっています


■ビルド前の準備
　srcディレクトリにオリジナルのソースをShift-JIS/CR+LFに変換したものを
　放り込んでください。
　但し、以下２ファイルはコンパイルを通すために一部変更しています。
　（のでオリジナルで上書きしないでください）

externs.h
 @@ -1228 +1228  @@
 -extern bool clean_shot(int y1, int x1, int y2, int x2, bool friend);
 +extern bool clean_shot(int y1, int x1, int y2, int x2, bool _friend);

※C++ソースからインクルードされるため、friendキーワードと認識されてエラー

z-config.h
 @@ -305 +305 @@
 -#define HANDLE_SIGNALS
 +/* #define HANDLE_SIGNALS */

※WindowsCE系カーネルはPOSIXをサポートしていないっぽいので



■補足説明とか

◆文字列の扱い
　UI側：UNICODE基本
　AngbandCore内部：Shift-JIS

　基本的に変換はCWfcStrクラスを介して行っています。
　CWfcStr内部はCRLのコード変換関数を利用しています。

◆stdFunc.cpp
　WindowsCE用のライブラリから標準関数の一部が抜けてるらしい。あちゃー
　変愚蛮怒でギリギリ動作するレベルでそれっぽい動作をする関数群が含まれています。

◆Win32 for WindowsCE
　基本的に文字列はUNICODEでやりとりするように設計されているようです。
　マルチバイト用のAPIも用意されているように見せかけて、正しく動かなかったり
　そもそもTCHARがwchar_tでないとシンタックスエラー起こしたりと散々です。

　まあ、どうせOS内部的にはワイドキャラなので、アプリ側で文字変換するか
　APIが文字変換するかの違いなので、パフォーマンスに甚大な影響は無さそうです。

◆ARMv4T命令セット
　標準の32bit命令長ではなく16bit命令長でコンパイルしてみたら、
　逆に容量増加してしまった

　……コード圧縮用の命令セットじゃなかったっけ、コレ……

◆__cdecl
　……あれ？これってx86系専用のキーワード……？
　まあ、コンパイラが無視するだろうから別にいいや。（投げ遣り）

◆C++
　済みません。C言語でWindows系アプリ作るの激しく苦手なんです、、、

