FrontPage  Index  Search  Changes  Login

基本編

対応ハード

hongkong fc

  • CPU area flashmemory, SRAM 書き込み可能
    • 4Mbit 書き込み2分
  • PPU area flashmemory, SRAM 書き込み可能

onajimi

  • CPU area flashmemory, SRAM 書き込み可能
    • flashmemory の書き込みがあまりにもおそいので動作未確認
  • PPU area SRAM 書き込み可能, flashmemory 不可
    • PPU A13 と PPU /RD が同じ出力になっているので flash memory の書き込み不可
    • パラレルポートの空いている線を充てれば大丈夫だが、あまりにもおそい

各メモリデバイスの特徴

EPROM

データの消去
イレーサにいれてしばらく待つ
データの安定度
高, 過度な紫外線をあてない限り大丈夫
書き込み時間
そこそこ
接続
ソケットにつければ取り外し可能だが、ケースに収まらない。よって長期的な保存に不可
入手
全てのサイズにおいて容易。価格も手頃。

SRAM

データの消去
Write を行う
データの安定度
低, 電池が切れたり、振動などで予期せぬ write になったらデータが消える
書き込み時間
早い
入手
256K までなら dip でも入手が容易で価格も手頃。1M, 4M になると入手が難しくなる。8M 以上は存在しない。

flash memory

データの消去
Write Command を行う
データの安定度
高, 誤って偶然 program mode になることはとても少ない。
書き込み時間
そこそこ
接続
ソケットにつければ EPROM と同じ。cartridge からの信号だけで書き込み/動作ができればケースにも収まる
入手
dip は全体的に入手困難。

flash memory command とバンク切り替え

flash memory へのデータの書き込みは command address に指定データを3-6回書き込むことによって反映される。command address はデバイスによって異なるが、0x02aaa + 0x05555 か 0x002aa + 0x00555 のどちらか。

0x02aaa + 0x05555 の組み合わせ

Program ROM memory bank の size は 0x2000 or 0x4000 なので、0x02aaa と 0x05555 専用バンクが必要。これと書き込み専用バンクの3つの可変バンクが必要。CPU area に 3つ以上の可変バンクがあるのは下記。

  • MMC5
  • VRC1,4,7

VRC7 memory bank

cpu address|rom address    |page|task
$8000-$9fff|0x02000-0x03fff|1   |write 0x02aaa
$a000-$bfff|0x04000-0x05fff|2   |write 0x05555
$c000-$dfff|n * 0x2000     |n   |write area
$e000-$efff|末尾           |fix |boot area

このため、この flash memory を使えるマッパはかなり限られる。Charcter ROM memory bank については 4 つ以上ある方が普通なので特に問題はない。

0x002aa + 0x00555 の組み合わせ

0x002aa と 0x00555 は1つのバンクに収まるので2つの可変バンクがあれば flash memory の全領域の書き込みが可能。2 つの可変バンクを持っているマッパは多いのでかなり活用価値がある。

  • MMC3
  • VRC2,6
  • namcot 163 などなど

MMC3 CPU memory bank

cpu address|rom address    |page|task
$8000-$9fff|0x00000-0x01fff|0   |write 0x002aa or 0x00555
$a000-$bfff|0x04000-0x05fff|n   |write area
$c000-$efff|末尾           |fix |boot area

可変バンクが1つ

flash memory と mapper に同時に write 信号が来ると、書き込みは絶対にできない。対策として write enable control register 回路を追加する。これによって全領域に書き込みができるが、効率は悪い。

書き込みシーケンス (0x20000回以上繰り返し)

  • コマンド書き込み (3-6回繰り返し)
    • write enable = mapper
    • バンクにコマンド書き込みアドレスを出す
    • write enable = flash memory
    • コマンド書き込み
  • データ書き込み
    • write enable = mapper
    • バンクにデータを書き込むアドレスを出す
    • write enable = flash memory
    • address = data

追加回路は設計途中で、動作未確認。また unagi 0.5.2 のスクリプト仕様では実装不可能。

可変バンクが0

ここの頃になると mapper は logic IC を組み合わせた単純なものになる。書き込みバス競合が発生するのでwrite enable control register 回路が必要。

この手の低機能マッパは高機能マッパで動くようにプログラムを書き直すのも簡単なので、こちらをすすめる。

SRAM

flash memory の場合はバンク切り替えの意味合いで write がきてもコマンドでなければ無視される。SRAM の場合は、データが書き換えられる。よって、write enable control register 回路が必須になる。

flash memory との主な違い:

  • コマンドを書く必要がないので書き込みが早い。
  • コマンドを書く必要がないのでバンク数制限がない。
  • バッテリーバックアップをする必要がある。電池が切れたら終わり。
Last modified:2008/12/20 06:11:49
Keyword(s):
References:[FrontPage]