[register global assignments]
CPU address $b003 の register bitfield が記載されていますが、下記と解釈した方が良さそうです。
Code: Select all
bit7 backup RAM (0:disable, 1:enable) #global
bit5:2 depened on bit1:0 #global
bit1:0 VRAM, VROM bank mode #global
Code: Select all
bit5 must be set 1 (inactive register?)
bit4 must be set 0 (PPU 0x2000-0x2fff is RAM)
bit3:2 nametable A10 output select (0:PPU A10, 1:PPU A11, 2:0, 3:1)
[mode 1]
Code: Select all
bit5 charcter ROM capacity expansion bit (1:max 2Mbit, 0:max 4Mbit)
bit4 nametable memory select 0:chracter ROM, 1:cartridge VRAM or system VRAM?
bit3:2 inactive register
RAM はファミコン本体の VRAM またはカートリッジ内部に増設した VRAM の片方を使用できると思います。VRC6 の pinout を見る限り、VRAM A10 専用の出力がないので、市販品のカートリッジでは 25pin の charcter A10 が VRAM A10 に配線されているものと思われます。(要確認)
カートリッジ内部に VRAM を増設した場合はファミコン内部 VRAM を無効にするので、カードエッジの VRAM CS# は +5V にするものと思われます。
VRAM バンクは bank0-bank7 までの記述がありますが、"外部VRAM 64K-SRAM 使用時"のときであって、 2Mbit まで搭載が可能できるかもしれません。
[mode 1-0, charcter memory max 2Mbit]
1-0 の 1 は bit1:0, 0 は bit5 を指します。
PPU memory map
Code: Select all
0x0000-0x07ff CR0 / charcter ROM bank #0
0x0800-0x0fff CR1 / charcter ROM bank #1
0x1000-0x17ff CR2 / charcter ROM bank #2
0x1800-0x1fff CR3 / charcter ROM bank #3
0x2000-0x23ff CR4 / nametable ROM/RAM bank #0
0x2400-0x27ff CR5 / nametable ROM/RAM bank #1
0x2800-0x2bff CR6 / nametable ROM/RAM bank #2
0x2c00-0x2fff CR7 / nametable ROM/RAM bank #3
Code: Select all
A17:11 = CRx7:1
A10 = PPU A10 (CRx0 is discarded)
A9:0 = PPU A9:0
Code: Select all
A17:10 = CRx7:0
A9:0 = PPU A9:0
bit5 = 1 の場合の仕様が公式資料ではよくわからなくて、実際に動かさないとわかりません。
PPU memory map
Code: Select all
0x0000-0x1fff mode 1-0 と同じらしい
0x2000-0x2fff よくわからない
Code: Select all
A18:11 = CRx7:0, (=Chracter A17:10)??
A10:0 = PPU A10:0??
sheet 18/18 の 「VROM バンクについて」の記述では name table ROM bank を 0x400 byte 単位で管理できるような記述があるが、私はうまく理解できない。
「VRAM について」は脱字があって、本来は「VRAM バンクについて」だと思われる。配線方法で定義が変えられると書いてあるので address bus を shift するか否かを基板設計者に任せているものと思われる。
[mode 2]
Code: Select all
bit5 must be set 1 (inactive register?)
bit4 nametable memory select (0:ROM, 1:RAM)
bit3:2 nametable register select
Code: Select all
0x0000-0x03ff CR0 / charcter ROM bank #0
0x0400-0x07ff CR1 / charcter ROM bank #1
0x0800-0x0bff CR2 / charcter ROM bank #2
0x0c00-0x0fff CR3 / charcter ROM bank #3
0x1000-0x17ff CR4 / charcter ROM bank #4
0x1800-0x1fff CR5 / charcter ROM bank #5
Code: Select all
A17:10 = CRx7:0
A9:0 = PPU A9:0
Code: Select all
A17:11 = CRx7:1
A10 = PPU A10
A9:0 = PPU A9:0
PPU memory map (nametable area)
Code: Select all
0x2000-0x23ff CR6 / nametable RAM/ROM bank #0
0x2400-0x27ff CR7 / nametable RAM/ROM bank #1
0x2800-0x2bff CR6 / nametable RAM/ROM bank #2
0x2c00-0x2fff CR7 / nametable RAM/ROM bank #3
PPU memory map (nametable area)
Code: Select all
0x2000-0x23ff CR6 / nametable RAM/ROM bank #0
0x2400-0x27ff CR6 / nametable RAM/ROM bank #0
0x2800-0x2bff CR7 / nametable RAM/ROM bank #2
0x2c00-0x2fff CR7 / nametable RAM/ROM bank #3
Code: Select all
A17:10 = CRx7:0
A9:0 = PPU A9:0
未記載。2-2 では CR6, 2-3 では CR7 が nametable にが割り当てられているかもしれない?
[mode 3]
(消しました)