はじめに

このページは、HVC-001モジュールの実装に関する情報をまとめたものです。
このモジュールは、下記サイトを参考に作成していますので、詳細は下記サイトを参照してください。




PPU

レジスタ一覧

アドレス レジスタ名 R/Wbit7bit6bit5bit4bit3bit2bit1bit0
$2000PPU制御1 W V PHB S I NT
$2001PPU制御2 W R GBSPRBGSPLBGLGRY
$2002PPUステータス R V HITOVR
$2003スプライトRAMアドレス W ADDR
$2004スプライトRAMデータ W DATA
$2005スクロール位置 W POS
$2006VRAMアドレス W ADDR
$2007VRAMデータ R/WDATA
$4000矩形波CH1音色・音量 W DLER
$4001矩形波CH1スイープ W FSHR
$4002矩形波CH1周波数下位 W F
$4003矩形波CH1周波数上位 W CF
$4004矩形波CH2音色・音量 W DLER
$4005矩形波CH2スイープ W FSHR
$4006矩形波CH2周波数下位 W F
$4007矩形波CH2周波数上位 W CF
$4008三角波音量 W FL
$400A三角波周波数下位 W F
$400B三角波周波数上位 W CF
$400Cノイズ音量 W LER
$400Eノイズ周波数 W RF
$400Fノイズキー W C
$4010DPCM制御1 W IRF
$4011DPCM制御2 W F
$4012DPCM制御3 W F
$4013DPCM制御4 W L
$4014スプライトDMA W ADDR
$4015音声チャンネル制御 W DNTS2S1
$4015キー音ステータス R DNTS2S1
$4016コントローラ1制御 W EXPC
$4016コントローラ1ステータス R WTEXPS
$4017コントローラ2制御 W MIEXPC
$4017コントローラ2ステータス R EXPS


マッパー5(MMC5)

仕様

プログラムROM サイズ 最大1024KB
バンクサイズ 8/16/16+8/32KBから選択
キャラクターROM サイズ 最大1024KB
バンクサイズ 1/2/4/8KBから選択
ワークRAM サイズ 最大64KB※2
バンクサイズ 8KB
アドレス $6000-$7FFFの他、プログラムROMバンク$8000-$FFFFに割り当て可
拡張RAM モード 以下から選択
  • 第3のネームテーブル
  • 分割画面のネームテーブル
  • 16384パターン表示モード時の上位6Bitと8x8毎のパレット2Bit
  • CPUアクセス可能なRAM
サイズ 1KB
アドレス 拡張RAMのモードにより、マッピングされるアドレスが異なる
  • CPU時 $5C00-$5FFF
  • PPU時 ネームテーブルに割り当てているアドレス
ネームテーブルレイアウト設定あり 以下を自由にレイアウト可能
  • 本体内蔵のネームテーブル2つ
  • 拡張RAMを
  • 指定パターンで塗り潰し
画面分割 あり 指定位置から左側、又は右側に拡張RAMの内容を表示
水平方向は8dot、垂直方向は1dot単位で指定※3
割り込み あり スクリーン上の絶対行指定とPCMの終了
乗算器 あり 8bitx8bit(ウェイトなし)
拡張音源 あり 矩形波2ch + PCM(8bit DAC)
※1MMC5はスプライトと背景用のパターンデータを別々に定義することが可能。
スプライト用に512、背景用に256(8KBバンク時のみ512)パターンを使用可。
※232KBのRAMを2つサポート可。
※3y方向は1dot単位で指定できるが、8の倍数でない時に特殊な表示となるため、綺麗なスクロールは無理(演出などで使用できるかも)


レジスタ一覧

アドレス レジスタ名 R/Wbit7bit6bit5bit4bit3bit2bit1bit0
$5000矩形波1コントロール W DUTYKEENARATE
$5002矩形波1周波数下位 W FREQ
$5003矩形波1周波数上位 W KEYFREQ
$5004矩形波2コントロール W DUTYKEENARATE
$5006矩形波2周波数下位 W FREQ
$5007矩形波2周波数上位 W KEYFREQ
$5010PCMステータス R IRQ
$5010PCM設定 W ENAMODE
$5011PCMデータ W DAC
$5015拡張音源ステータス R KEY2KEY1
$5015拡張音源設定 W ENA2ENA1
$5100プログラムROMマッピングモード W MODE
$5101キャラクターROMマッピングモードW MODE
$5102ワークRAM書き込み保護1 W WP1
$5103ワークRAM書き込み保護2 W WP2
$5104拡張RAMモード W MODE
$5105ネームテーブルマッピング W NT3NT2NT1NT0
$5106塗り潰しパターン W PATTERN
$5107塗り潰し属性 W ATTR
$5113ワークRAMマッピング W CHIPBANK
$5114プログラムバンク1 W ROMBANK
$5115プログラムバンク2 W ROMBANK
$5116プログラムバンク3 W ROMBANK
$5117プログラムバンク4 W ROMBANK
$5120スプライト用バンク1 W BANK
$5121スプライト用バンク2 W BANK
$5122スプライト用バンク3 W BANK
$5123スプライト用バンク4 W BANK
$5124スプライト用バンク5 W BANK
$5125スプライト用バンク6 W BANK
$5126スプライト用バンク7 W BANK
$5127スプライト用バンク8 W BANK
$5128背景用バンク1 W BANK
$5129背景用バンク2 W BANK
$512A背景用バンク3 W BANK
$512B背景用バンク4 W BANK
$5130ワークRAMバンク上位ビット W HI
$5200画面分割設定 W ENADIRXPOS
$5201画面分割y座標 W YPOS
$5202画面分割キャラクターROMバンク W BANK
$5203割り込み発生行 W LINE
$5204割り込みステータス R PENFRM
$5204割り込み設定 W ENA
$5205被乗数・演算結果下位 R/WMUL
$5206乗数・演算結果上位 R/WMUL


ワークRAM管理

32KBRAMを2つサポートし、最大64KBまで実装可。
8KBを1バンクとし、CPUアドレス$6000-$7FFF、プログラムバンクのアドレスへマッピング可。



プログラムROM管理

▼マッピングモード($5100)

ビット
76543210
MODE
3
書き込み
初期値

MODE プログラムバンクのマッピングモード。
プログラムバンクの切り替えは、MODEを指定後、プログラムバンク設定1-4へ書き込みにより行われる。
説明
0 32KB
1 16KB
2 16KB + 8KB x 2
3 8KB

addressモード0モード1モード2モード3
$8000 $5114
$A000 $5115
$C000 $5116
$F000 $5117

▼プログラムバンク設定1($5114)

ビット
7 6543210
ROMBANK
1 プログラムバンク数-1
書き込み
初期値

▼プログラムバンク設定2($5115)

ビット
7 6543210
ROMBANK
1 プログラムバンク数-1
書き込み
初期値

▼プログラムバンク設定3($5116)

ビット
7 6543210
ROMBANK
1 プログラムバンク数-1
書き込み
初期値

▼プログラムバンク設定4($5117)

ビット
7 6543210
ROMBANK
1 プログラムバンク数-1
書き込み
初期値

ROM マッピング対象。
説明
0ワークRAM
1プログラムROM
BANK マッピング対象のバンク番号で、。


キャラクターROM管理

▼マッピングモード($5101)

ビット
76543210
MODE
書き込み
初期値

MODE プログラムバンクのマッピングモード。
MODEを変更しても、キャラクターバンクは切り替わらない。
プログラムバンクの切り替えは、プログラムバンク設定1-4を使用すること。
説明
0 32KB
1 16KB
2 16KB + 8KB x 2
3 8KB

スプライト用マッピングモード毎のバンク
addressモード0モード1モード2モード3
$0000 $5120
$0400 $5121
$0800 $5122
$0C00 $5123
$1000 $5124
$1400 $5125
$1800 $5126
$1C00 $5127

背景用マッピングモード毎のバンク
addressモード0モード1モード2モード3
$0000 $5128
$0400 $5129
$0800 $512A
$0C00 $512B
$1000
$1400 $0000-$0FFF ミラー
$1800
$1C00

▼スプライト用キャラクターバンク設定1($5120)

ビット
7 6543210
BANK
書き込み
初期値

▼スプライト用キャラクターバンク設定2($5121)

ビット
7 6543210
BANK
書き込み
初期値

▼スプライト用キャラクターバンク設定3($5122)

ビット
7 6543210
BANK
書き込み
初期値

▼スプライト用キャラクターバンク設定4($5123)

ビット
7 6543210
BANK
書き込み
初期値

▼スプライト用キャラクターバンク設定5($5124)

ビット
7 6543210
BANK
書き込み
初期値

▼スプライト用キャラクターバンク設定6($5125)

ビット
7 6543210
BANK
書き込み
初期値

▼スプライト用キャラクターバンク設定7($5126)

ビット
7 6543210
BANK
書き込み
初期値

▼スプライト用キャラクターバンク設定8($5127)

ビット
7 6543210
BANK
書き込み
初期値

▼背景用キャラクターバンク設定1($5128)

ビット
7 6543210
BANK
書き込み
初期値

▼背景用キャラクターバンク設定2($5129)

ビット
7 6543210
BANK
書き込み
初期値

▼背景用キャラクターバンク設定3($512A)

ビット
7 6543210
BANK
書き込み
初期値

▼背景用キャラクターバンク設定4($512B)

ビット
7 6543210
BANK
書き込み
初期値


拡張RAM

拡張RAMは、いくつかのモードがあり、CPUからのみアクセス可能なモードと、PPUからのみアクセス可能なモードがあります。
CPUからアクセスできる時は、5C00-$5FFFへマッピングされ、PPUからアクセスできる時はネームテーブルへマッピングしているアドレスからアクセスします。

また、モード毎の使用目的は以下になります。