Famicom cartridge technical information

Bandai FCG-2

概要

FCG-2 は Bandai 製造のカートリッジ内部に使われたメモリコントローラ。キャラクタとIRQの複雑な制御を可能としたが、セーブデータのインタフェースがないのでゲームの再開に長いパスワードを入力させられるものが多い。

wiring infomation

PCB

  • name: DORAGON2
  • device: FCG-2 + Program ROM + Charcter ROM

memory controller

[label]
BANDAI 88 FCG-2
S 8849 3T

[pinout]
Shrink PDIP-42pin
 1 ? ?                 |42 s +5V
 2 i CPU PHI2          |41 ? ?
 3 i CPU A13           |40 o Program ROM A17?
 4 i CPU A14           |39 o Program ROM A15
 5 i CPU A3            |38 o Program ROM A14
 6 i CPU A2            |37 o Program ROM A16
 7 i CPU A1            |36 i CPU D7
 8 i CPU A0            |35 i CPU D6
 9 i CPU ROMSEL#       |34 i CPU D5
10 i CPU D0            |33 i CPU D4
11 i CPU D1            |32 i CPU D3
12 i CPU D2            |31 o CPU IRQ#
13 i CPU R/W           |30 o VRAM A10
14 i PPU RD#           |29 o Charcter ROM A17?
15 o Charcter ROM A15  |28 o Charcter ROM A14
16 o Charcter ROM A12  |27 o Charcter ROM A13
17 i PPU A10           |26 o Charcter ROM A11
18 i PPU A11           |25 o Charcter ROM A16
19 i PPU A12           |24 o Charcter ROM A10
20 i PPU A13           |23 o Charcter ROM EN#
21 s GND               |22 ? ?

Program ROM

[label]
NEC JAPAN
D23C1010AC T23
8849KX778

[logical assignments]
A16:14 = Program ROM A16:14
A13:0  = CPU A13:0
D7:0   = CPU D7:0
EN#    = CPU ROMSEL#
  • crc32: 0x7fb799fd
  • pinout は 28pin 128KB の標準的な配線

Charcter ROM

[label]
NEC JAPAN
D23C1010AC T22
8849KX777

[logical assignments]
A16:10 = Charcter ROM A16:10
A9:0   = PPU A9:0
D7:0   = PPU D7:0
EN#    = Charcter ROM EN#
  • crc32: 0x5fe39059
  • pinout は 28pin 128KB の標準的な配線

edge connector

主要な配線のみ記載
CPU IRQ# = CPU IRQ#
VRAM A10 = VRAM A10
VRAM CS = PPU A13#
Sound out = Sound in

software specification

memory map / register

[CPU - read]
$8000-$bfff Program ROM bank #0 (switchable)
$c000-$ffff Program ROM bank #1 (fixed)

[CPU - write]
$6000 Charcter ROM bank #0 register
$6001 Charcter ROM bank #1 register
$6002 Charcter ROM bank #2 register
$6003 Charcter ROM bank #3 register
$6004 Charcter ROM bank #4 register
$6005 Charcter ROM bank #5 register
$6006 Charcter ROM bank #6 register
$6007 Charcter ROM bank #7 register
  bit7:0 Charcter ROM A17:0 (#0-#7 で同じ)
$6008 Program ROM bank #0 register
  bit4:0 Program ROM A17:14
$6009 Nametable register
  bit1:0 VRAM A10 connection (0:PPU A10, 1:PPU A11, 2:0, 3:1)
$600a IRQ control register
  bit0   PHI2 counter control (0:stop, 1:increment)
$600b IRQ countner register #0
  bit7:0 PHI2 counter value bit7:0
$600c IRQ countner register #1
  bit7:0 PHI2 counter value bit15:8
$600d-$600f unknown
$6010-$7fff mirror area, same as $6000-$600f
$8000-$ffff Program ROM data (デコード不備, バス衝突)

古い解析文書では $6000-$ffff まで register と書かれているが、都合良くひとまとめにするための誤った解釈。 FCG-1 と FCG-2 では $6000-$7fff に register を持つ。
write map $8000-$ffff は ROM からデータが出てきて CPU との出力に衝突する。この領域に register がないので問題にならない。
各 register の write strobe に関与する信号は CPU A15:13 と CPU R/W で φ2 は見ていない。φ2 は IRQ 向けカウンタのみに使用する。

[PPU - read]
0x0000-0x03ff Charcter ROM bank #0
0x0400-0x07ff Charcter ROM bank #1
0x0800-0x0bff Charcter ROM bank #2
0x0c00-0x0fff Charcter ROM bank #3
0x1000-0x13ff Charcter ROM bank #4
0x1400-0x17ff Charcter ROM bank #5
0x1800-0x1bff Charcter ROM bank #6
0x1c00-0x1fff Charcter ROM bank #7
0x2000-0x23ff system VRAM (nametable register)
     0:0x000-0x3ff, 1:0x000-0x3ff, 2:0x000-0x3ff, 3:0x400-0x7ff
0x2400-0x27ff system VRAM (nametable register)
     0:0x400-0x7ff, 1:0x000-0x3ff, 2:0x000-0x3ff, 3:0x400-0x7ff
0x2800-0x2bff system VRAM (nametable register)
     0:0x000-0x3ff, 1:0x400-0x7ff, 2:0x000-0x3ff, 3:0x400-0x7ff
0x2c00-0x2fff system VRAM (nametable register)
     0:0x400-0x7ff, 1:0x400-0x7ff, 2:0x000-0x3ff, 3:0x400-0x7ff

[PPU - write]
0x2000-0x2fff system VRAM bank (read と同じ)