famicom ROM cartridge utility - unagi
client version 0.6.x
by 鰻開発協同組合
公式サイト http://unagi.sourceforge.jp/

--はじめに--
famicom ROM cartridge のデータ転送を行います。 ハードウェアは国内で有
名な2種類に対応しています。

--特徴--
他の読み出しプログラムではマッパ別の対応はプログラムに内蔵されており、
未対応のマッパの追加ができるのはプログラマだけでした。unagi ではマッパ
対応をスクリプトに記載することによってユーザーが追加することができます。
バンク切り替えの仕様をしることによって技術的な興味がわくかもしれません。

コマンドラインでの無味乾燥なインタフェースによりビギナーお断りとなって
おります。

--動作環境--
パラレルポートと読み出しハードを接続した Windows 環境
* Windows XP にて動作確認しています。たぶん Win95 までなら大丈夫。
* パラレルポートアドレスは 0x0378 固定です。USB 接続のものは使えるか分
  かりません。
USBと読み出しハードを接続した Windows 環境
GIVEIO.SYS をインストールした環境
* パッケージには含まれていませんので別途用意してください。

cmd.exe, rxvt などのコマンドラインシェル

--ハードウェアの選択--
クライアントについている unagi.cfg をテキストエディタで編集して使用す
るハードを選んでください。行頭に # がついているものは無視されます。

== hongkong fc での問題 == 
キャラクタROM/RAM 判定の PPU_RAMFIND が正しく動作しない場合やキャラク
タROM領域の書き込みが安定しない場合はコメントを外して試してみてくださ
い。根本的な対処方法は不明です。

--コマンドライン引数--
unagi.exe [mode] [script file] [target file] ...
== d ROM DUMP MODE ==
ROM イメージを作成します。
unagi.exe d [script file] [dump file] [flag] [mapper]
script file - 対応するマッパの ROM スクリプトファイルを指定します。
dump file   - 出力する ROM イメージファイルを指定します。
以下は、通常は必要ありません。
flag        - 出力するヘッダを設定します。複数の場合はスペースをいれずに              記述します。
  S カートリッジに backup RAM がついている場合
  V スクリプトの設定を無視して mirroring を Vertical にする
  H スクリプトの設定を無視して mirroring を Horizonal にする
  _ mapper変更だけを適用する場合
mapper      - スクリプトの設定を無視してマッパ番号を設定します。

== r RAM READ MODE ==
バックアップ RAM イメージを PC 上に作成します。
unagi.exe r [script file] [dump file]
script file - 対応するマッパの RAM スクリプトファイルを指定します。
dump file   - 出力する RAM イメージファイルを指定します。

== w RAM WRITE MODE ==
バックアップ RAM イメージをカートリッジへ転送します。
unagi.exe w [script file] [ram file]
script file - 対応するマッパの RAM スクリプトファイルを指定します。
ram file    - 入力する RAM イメージファイルを指定します。

== f flashmemory/SRAM PROGRAM MODE ==
カートリッジ上の ROM を flashmemory か SRAM に交換した上で、ROM イメー
ジデータを代替デバイスに転送するモードです。制限は多いですが、一応動作
実績があります。

--スクリプト仕様--
ROM dump script パッケージの syntax.txt を参照してください。

--ライセンス--
unagi クライアントのバイナリとソースコード(例外有り)は下記が適用されま
す。unagi スクリプトは naruko が作成したものは下記が適用されます。
GNU General Public License v2

例外物
- GIVEIO.SYSアクセスライブラリに含まれる giveio.c, giveio.h
えふ・ぴー・じー・えー・ぱーく管理人の「さとう」さんのご厚意によりソー
スコードも配布ソースに含めてよい許可をいただいております。二次配布など
の取り扱いはさとうさんの許可を得てください。

- GIVEIO.SYS
配布パッケージにも含めませんし、作者が誰なのかもわからないのでパッケー
ジに含めないでください。

- client_test.c
実験的なソースが入っているのと、なくても RELEASE ビルドは可能なこと、
無断転用でのトラブルを防ぐために非公開にしました。個別に要望があれば
ソースは公開します。

--謝辞--
* 資料提供をしてくれた color さん, VirtuaNES のソース, nesdev
* GIVEIO.SYSアクセスライブラリのさとうさん
* ハードウェアを貸してくれたカシオン
* アイコンを描いてくれたひろひろきさん
* プログラミング環境の mingw と rxvt
* 各種実験に協力してくださっているばくてんさん

--使用ライブラリ--
[LibUSB-Win32]
Copyright (c) 2002-2004 Stephan Meyer, <ste_meyer@web.de>
Copyright (c) 2000-2004 Johannes Erdfelt, <johannes@erdfelt.com>
Copyright (c) Thomas Sailer, <sailer@ife.ee.ethz.ch>
[opendevice.c]  (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
