Show page source of kazzo_ja #50650

== famicom bus simulator kazzo ==

= 概要
既存の famicom 用の吸い出し器は設計が古いので現在のPCで使えなかったりや「吸い出し」に特化されすぎていました。2009 年初旬に開発した flash memory cartridge には複雑な機能が必要なため、正確に write も行える機器を設計することにしました。

コンセプトは下記です。
  * 制御線を制御しやすくする
  * PC とのインターフェースを USB にする
  * 入手しやすい部品を選ぶ
  * 部品点数と配線数を減らす

吸い出しも当然行えますが、それ以上の機能を有しているため、 bus simulator としました。

== お願い
kazzo + flash memory cartridge はソフト開発における実機確認作業の効率化を目的として製作しました。いわゆるマジコンの場合はこれを名目としてソフトの違法コピーを助長しておりますが、 kazzo は名目ではなく本当にそれを目的にしています。

マジコン的な使い方も可能ですが、その目的では効率やコストがとても悪いです。

AVR, USB, flash memory などハードウェア/ソフトウェア技術関連や自作ソフト開発などの技術活性化につながるところからのご紹介は大歓迎です。

混乱とモラルの低下を防ぐために、上記以外の目的でのリンクはご一報の上ご連絡下さい(事後連絡は不可)。非公式ツールなので、怒られたら終わります。

== flash memory cartridge
既存の ROM カートリッジから ROM を取り外して、flash memory をつけたものです。
  * 書き込みは kazzo に接続し、データを転送できます。ROM ライタは必要ありません。
  * 読み込みは通常の ROM カートリッジと同じです。
  * 書き込み用スイッチや IC ソケットはありません。
  * 部品の取り替えがないので、ケースに収められます。

flash memory cartridge は既存のハードを利用しますので、エミュレーションやシミュレーションで問題になる再現度は100%です。ソフト開発時の実機確認に非常に便利です。

== サポート機能
full support
  * USB 1.1 communication
  * ROM cartridge bus simulation
   * ROM dumpping
   * flash memory erasing/programming
   * VRAM mirroring auto decect
   * charcter memory type auto decect

typical support
  * ROM cartridge bus simulate
   * CPU region work RAM access (MMC5 W-RAM is not supported)

unsupport
  * disk drive access

= ハードウェア
[[Embed(kazzo_pcb_rev1.0.png)]]
== 部品リスト
{{{
:U1   :ATmega164P or ATmega16
:U2   :74HC574
:CN1  :type B female USB socket
:CN2  :3x2 ピンヘッダ, 2.54 mm spacing
:CN3  :30x2 pin エッジコネクタ, 2.54 mm spacing
:R1,R2:68 ohm 抵抗
:R3   :1.5 kohm 抵抗
:R4   :30 kohm 抵抗
:D1,D2:3.6 V ツェナーダイオード
:X1   :16.0 MHz セラミック発振子 (セラロック)
:C1,C2:0.1uF セラミックコンデンサ
:CP1  :10uF 電解コンデンサ
:JP1  :トグルスイッチ
:JP2  :プッシュスイッチ
}}}
== 回路図
kazzo_schematics.png (852x752, coming soon!)

== 配線表
kazzo ファームパッケージの readme.txt を参照。

= ファームウェア
== 配布パッケージ
配布パッケージには下記が含まれています。
  * ファームウェアイメージ (hex file)
  * 回路図, 配線表, 部品表
  * ソースコード
  * Windows driver

kazzo.0.1.0.zip (coming soon!)

== USB について
  * ライブラリに [http://www.obdev.at/products/vusb/ V-USB] を standards licence で使用しています。
  * ベンダ ID/デバイス ID には V-USB 共有 ID を使用しています。
  * Windows driver に [http://libusb-win32.sourceforge.net/ libusb-Win32] を使用しています。

V-USB が無ければ低価格、少数部品で構成することはできませんでした。素晴らしいライブラリを提供していただき感謝です。

= クライアント
配布パッケージには下記が含まれています。
  * unagi 実行ファイルと readme
  * anago 実行ファイルと readme
  * anago 用スクリプト

== unagi
unagi 0.6.x は kazzo をサポートし、従来の機能とスクリプトがそのまま使えます。またパラレルポート経由の既存のハードをサポートしますが、それらでは flash memory programming mode を使用できません。

パラレルポートハードのサポートは unagi 0.6.x のみで、それ以降は使用できません。

== anago
anago は unagi のソースコードを流用しつつ、実験的な機能を盛り込んだものです。スクリプトエンジンに [http://squirrel-lang.org/ Squirrel] を使用しているのでスクリプトが高機能になっています。

anago の最大の特徴は flash memory programming で CPU/PPU 領域を同時に書き込むことが出来ます。これにより書き込み時間が短くなりました。

= kazzo キットのご案内
kazzo は自作も可能ですが、プリント基板と部品をすべて揃えたキットを販売予定です。また dip の flash memory も販売予定です。