****
* FM-7/77/AV エミュレータ、XM7 V3.4L51 for SDL/Linux(amd64)
*  Version 0.3.2 (γレベル / Agar / OpenGL)
*
*  Copyright (C) 1999-2003 ＰＩ．(ytanaka@ipc-tokai.or.jp) 
*  Copyright (C) 2001-2003 Ryu Takegami
*  Copyright (C) 2004 GIMONS
*  Copyright (C) 2010-2012 K.Ohta 
*
* 2012.10.05 Artane. <whatisthis.sowhat@gmail.com>
* HP:
* http://sky.geocities.jp/artanejp/XM7-SDL/
* http://sites.google.com/site/artanejp
* GIT:
* https://github.com/Artanejp/XM7-for-SDL


1.はじめに
 非常に古いマイコンであるFM-7のエミュレータに、XM-7(*0)と言う物があります。
 このエミュレータ自体はWin32上で動くものですが、基本的にLinuxしか使って
いない私にはあれこれもどかしい物がありました。
 そういう事もあって、SDLへの移植をこの一年ちょっと目論んでいたのですが、
GIMONS氏がX11/GTKに移植されていて(*1)、そのコードをベースに弄り始めたの
でした。
(*0) http://retropc.net/ryu/xm7/
(*1) http://www.geocities.jp/kugimoto0715/ 

2.Changelog
  0.3.2 : Win32 ビルド, CPUのFix, 描画周りのFix,　デバッガの追加、その他数知れず。
  　　　　詳しくはgithubのlogを見て下さい(^_^;


3.SDL版の特徴
・XM7 V3.4L51ベースです(但し、描画まわりやダイアログが出来ていない所も
 ある)
・クロスプラットフォームです。但し作者はDebian GNU/LinuxとWindowsでしか
　試していません;-)
・GCC4以降でサポートされた、Vector拡張を使って、CとC++だけで書いてるのに
　高速になってます。 反面、ICCやVC等のGCC以外のコンパイラでは多分ビルド
　できません。(llvm-gccは試してない)
　(see http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html )
・OpenGLの描画機能を使うこともできるので、拡大してもそこそこ高速です。
・Windowsでもmingwがあればビルドできます（が、色々問題がまだあります。)
・SDL版オリジナル機能として、1280x800ドット描画機能や800x[500|600]描画機能
　を追加してあります。(*2)
・Agar Toolkit上にGUIと描画機構を作ってあります。(see http://libagar.org/ )
　OSDもAgarベースです;-)
・CPUコアをアセンブラベースから、sdlmess0136 (*3) にあるCコードベース
　のものに変更。とはいえ、内部構造がかなり違うので元々のアセンブラコード
　からCに移植した部分もかなりあるし、APIが全く違うのでかなり手を入れて
　います。未定義命令対応もしてあります（多分コレでいいという感じですが）
　messのライセンスについてはDoc/mess/license.txtに入れておきました
・複数の描画機構をサポートしてます。(起動時に -d で指定)
　・GNU/Linuxなどではsdlfb/sdlgl/glx
　・Windowsではsdlfb/sdlgl/wgl
・GUIにAgar toolkit ( http://www.libagar.org/ )を使用しています。
・仮想キーボードがつきます。
・多国語に最初から対応しています(GNU Gettext使用)。
　OSD表示は日本語のみですが(；´Д｀)

(*2) PC-88エミュレータであるQuasi88に同等の機能があったので…
(*3) SDLMESS http://rbelmont.mameworld.info/?page_id=163

4.ビルド
 以下の物が、必要です。
・SDL1.2以上
・U*ix系OSの場合にはX Window Systemと開発環境、FontConfigなどなど。
・GCC 4(4.6以降推奨)
・SDL_ttf
・SDL_mixer ( http://www.libsdl.org/cgi/docwiki.cgi/SDL_mixer )
・AGAR ( http://www.libagar.org/ GNU/Linuxの場合 SVN r9399推奨)
・IPA ゴシック一式(ビルド時に変更可能)
・F-Font (F-Font/ 以下にバンドルされてます)
・GNU MAKE
・PKGCONFIG
・libtool
・OpenGLのライブラリ
などなど。

とりあえず、ソースコードのトップディレクトリ（gitの場合は linux-sdl/)で
a. GNU/Linuxなどの場合
   $ ln -s -f config.mak.linux64 config.mak
   $ cd sdl/
   $ ln -s -f makefile.linux64 Makefile
   $ cd ..
   $ make
   $ sudo make install
   ※32bit環境の場合は、linux64をlinux32に置き換えて下さい
   
b. Windowsの場合、MinGWのシェルから、
   $ cp config.mak.mingw32 config.mak
   $ cd sdl/
   $ cp makefile.mingw32 Makefile
   $ cd ..
   $ make
  　makeした後 適切なディレクトリにコピーして下さい 

カスタマイズは、主にconfig.makを変更して下さい。(OS間での差異吸収はまた別）


以下は、デバッグ用に使っています。(でも、最近はテキストエディタで書いてgdbで
直接デバッグしてる気が^_^;)
・Code::Blocks (統合開発環境/  http://www.codeblocks.org/ )

※rXM7のエミュレーションコア(MPU以外Upstreamとほぼ同じを)vm/　に、Agar依存部分
　をui_agar/に、本体をsdl/に、そしてfmgenはfmgen/ にそれぞれ分離しました。

-- 以下、過去の話 --
現状では6809エミュレーションをXM7添付のアセンブラコアで
やっているので、ia32でしかビルドできません。（最終的にはCコア
に移行する予定）
amd64環境の方はクロスビルドする必要がありますが、そのままmake出来
ちゃいます。多分。
-- ここまで --


5.インストール
 a. GNU/Linux等の場合は、make installで /usr/local/share/xm7/
    以下に必要なファイルがインストールされます。Windowsの場合は
    適当なディレクトリに手動コピーして下さい(^_^;
 b. GNU/Linuxの場合、lib/amd64/ 以下のファイルを /usr/local/libにインストール
    してsudo  ldconfigして下さい。現状 amd64のみです。
 c. GNU/Linuxなどの場合は、~/.xm7 ディレクトリを作って、ROM一式をコピー
　　して下さい。3.4L51ベースなので、* KANJI1.ROM が必須です*。
    GNU/Linuxなどファイル名の大文字と小文字を区別する場合、ROMやWAVは大文字の
    ファイル名にして下さい。
    Windowsでmingwシェルを使ってる場合は、~/xm7にROMとフォント(IPA Gothic P
    フォント含む)をコピーして下さい。
    mingwのシェル以外から起動する場合は、インストールしたカレントディレクトリに
    xm7と言うディレクトリを作って、ROMとフォントをコピーして下さい。
 d. xm7(デバッグの場合はxm7.debug)を起動して下さい。準備がOKならF-BASICの画面
    が起動します。
 
6.コマンドラインオプション一覧
  -d drivername
     Set Display driver.
  -f 
     Enable full-screen.
  -W 
     Disable full-screen, windowed.
  -T fontpath
     Set font path.
  -F font-face
     Set alternate UI font-face.
  -S font-size
     Set alternate UI font-size.
  -o font-face
     Set alternate OSD font-face.
  -O font-size
     Set alternate OSD font-size.
  -l load-path
     Set path to load config.
  -s save-path
     Set path to save config.
  -i path
     Set path to save/load config.
  -t font-spec
     Set alternate font-spec.
  -w width
     Set screen width.
  -h height
     Set screen height.
  -? 
     Show help.
		      

7. gitのおさそい
現在、Gitを使用してソースコードを管理しています。
但し、管理権限の関係があるので公開されてるかどうかわかりません（いいかげんでごめんなさい）
$ git clone http://github.com/Artanejp/XM7-for-SDL.git

8.TIPS

a.GNU/Linuxの場合、サウンドドライバとしてALSAを使っていると音飛びなどが
目立つ場合があると思います。
　これは、カーネルのタスクスケジューラの優先度の問題なので、
/etc/security/limits.confを変えてやるとほぼ解消出来ます（重い処理の時
には厳しいですが。)
(例)
---
hoge      -        rtprio          99
hoge      -        nice            -2
---
hogeはユーザ名など。
詳しくは、man limits.conf してみてください。


c.WAVファイル、ROMファイルを~/.xm7/にコピーしたのに動かないときは、
　これらファイルの大文字小文字を見直してください。(※r369現在、WAV演奏機能は殺してあります)

d.Agar使用に伴い、フォントを検索します。が、IPAゴシックのipag*.ttfが必要なのは同じです＿|￣|●
  かえる必要があるときはMakefileもしくはbuildconfig.hを弄ってください

