「VRC VI VRAM,VROM バンク仕様について」をみて、わかったこととわからなかったことがありますので記載します。不明点は確認が必要ですが、現時点ではなにもしていません。(気が向いたら調査します)
[register global assignments]
CPU address $b003 の register bitfield が記載されていますが、下記と解釈した方が良さそうです。
[mode 0]
bit4=1 にして nametable 領域から ROM データがでるか確認した方が良さそうです。
[mode 1]
mode1,2,3 はカートリッジ内部の PPU 側の ROM (Charcter ROM) を charcter と nametable として兼用可能です。VRAM もバンク制御ができるようになっているようです。
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
charcter ROM address assignment with CR0 to 3
nametable ROM/RAM address assignment with CR4 to 7
[mode 1-1, charcter memory max 4Mbit]
bit5 = 1 の場合の仕様が公式資料ではよくわからなくて、実際に動かさないとわかりません。
PPU memory map
charcter ROM address assignment with CR0 to 3
No. 17/18 に (ハード的に外部で接続の変更が必要)と書かれているのは ROM への address bus は 1bit shift する必要があるからだと思われる。
sheet 18/18 の 「VROM バンクについて」の記述では name table ROM bank を 0x400 byte 単位で管理できるような記述があるが、私はうまく理解できない。
「VRAM について」は脱字があって、本来は「VRAM バンクについて」だと思われる。配線方法で定義が変えられると書いてあるので address bus を shift するか否かを基板設計者に任せているものと思われる。
[mode 2]
PPU memory map (charcter area)
charcter ROM address assignment with CR0 to 3
charcter ROM address assignment with CR4 and 5
[mode 2-0 (2=bit1:0, 1=bit3:2)]
PPU memory map (nametable area)
[mode 2-1]
PPU memory map (nametable area)
nametable ROM/RAM address assignment with CR6 and 7
[mode 2-2, 2-3]
未記載。2-2 では CR6, 2-3 では CR7 が nametable にが割り当てられているかもしれない?
[mode 3]
(消しました)
[register global assignments]
CPU address $b003 の register bitfield が記載されていますが、下記と解釈した方が良さそうです。
Code:
bit7 backup RAM (0:disable, 1:enable) #global
bit5:2 depened on bit1:0 #global
bit1:0 VRAM, VROM bank mode #global
bit5:2 depened on bit1:0 #global
bit1:0 VRAM, VROM bank mode #global
[mode 0]
Code:
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)
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)
bit4=1 にして nametable 領域から ROM データがでるか確認した方が良さそうです。
[mode 1]
Code:
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
bit4 nametable memory select 0:chracter ROM, 1:cartridge VRAM or system VRAM?
bit3:2 inactive register
mode1,2,3 はカートリッジ内部の PPU 側の ROM (Charcter ROM) を charcter と nametable として兼用可能です。VRAM もバンク制御ができるようになっているようです。
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:
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
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
charcter ROM address assignment with CR0 to 3
Code:
A17:11 = CRx7:1
A10 = PPU A10 (CRx0 is discarded)
A9:0 = PPU A9:0
A10 = PPU A10 (CRx0 is discarded)
A9:0 = PPU A9:0
nametable ROM/RAM address assignment with CR4 to 7
Code:
A17:10 = CRx7:0
A9:0 = PPU A9:0
A9:0 = PPU A9:0
[mode 1-1, charcter memory max 4Mbit]
bit5 = 1 の場合の仕様が公式資料ではよくわからなくて、実際に動かさないとわかりません。
PPU memory map
Code:
0x0000-0x1fff mode 1-0 と同じらしい
0x2000-0x2fff よくわからない
0x2000-0x2fff よくわからない
charcter ROM address assignment with CR0 to 3
Code:
A18:11 = CRx7:0, (=Chracter A17:10)??
A10:0 = PPU A10:0??
A10:0 = PPU A10:0??
No. 17/18 に (ハード的に外部で接続の変更が必要)と書かれているのは ROM への address bus は 1bit shift する必要があるからだと思われる。
sheet 18/18 の 「VROM バンクについて」の記述では name table ROM bank を 0x400 byte 単位で管理できるような記述があるが、私はうまく理解できない。
「VRAM について」は脱字があって、本来は「VRAM バンクについて」だと思われる。配線方法で定義が変えられると書いてあるので address bus を shift するか否かを基板設計者に任せているものと思われる。
[mode 2]
Code:
bit5 must be set 1 (inactive register?)
bit4 nametable memory select (0:ROM, 1:RAM)
bit3:2 nametable register select
bit4 nametable memory select (0:ROM, 1:RAM)
bit3:2 nametable register select
PPU memory map (charcter area)
Code:
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
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
charcter ROM address assignment with CR0 to 3
Code:
A17:10 = CRx7:0
A9:0 = PPU A9:0
A9:0 = PPU A9:0
charcter ROM address assignment with CR4 and 5
Code:
A17:11 = CRx7:1
A10 = PPU A10
A9:0 = PPU A9:0
A10 = PPU A10
A9:0 = PPU A9:0
[mode 2-0 (2=bit1:0, 1=bit3:2)]
PPU memory map (nametable area)
Code:
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
0x2400-0x27ff CR7 / nametable RAM/ROM bank #1
0x2800-0x2bff CR6 / nametable RAM/ROM bank #2
0x2c00-0x2fff CR7 / nametable RAM/ROM bank #3
[mode 2-1]
PPU memory map (nametable area)
Code:
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
0x2400-0x27ff CR6 / nametable RAM/ROM bank #0
0x2800-0x2bff CR7 / nametable RAM/ROM bank #2
0x2c00-0x2fff CR7 / nametable RAM/ROM bank #3
nametable ROM/RAM address assignment with CR6 and 7
Code:
A17:10 = CRx7:0
A9:0 = PPU A9:0
A9:0 = PPU A9:0
[mode 2-2, 2-3]
未記載。2-2 では CR6, 2-3 では CR7 が nametable にが割り当てられているかもしれない?
[mode 3]
(消しました)