SNES は 8 ビットのデータバスと、2 つのアドレスバスを持つ。
アドレスバスはそれぞれ、"アドレスバスA"、"アドレスバスB" と呼ばれている。
これは、SNES にのみ適用可能なメモリマップである。

***データバス [#idd8703d]
"LoROM", "HiROM" 等の異なる種類のカートリッジが
アドレスバス A に配置される。
カートリッジは、/CART 信号がアクティブな時に反応する。
どちらのバスのアドレスにも反応できるが、
片方はマップされない。
同様に、拡張ポートにデバイスが接続された時、
アドレスバス B の何もマップされていないレジスタに反応するだろう。

データバスは 8 ビット幅のバス。
データバスにデータがセットされていない時に読み込み動作を行うと、
最後にバスにセットされた値が代わりに読み込まれる。
これは、"[[オープンバス>IO ポート (メイン)#wc8d7a54]]" と呼ばれている。
WRAM は、/WRAM 信号がアクティブな時はアドレスバス A に、
レジスタ 0x2180 〜 0x2183 を通してアドレスバス B に配置される。

|ライン|カートリッジ|拡張|h
| D0  |  19  |   11|
| D1  |  20  |   12|
| D2  |  21  |   13|
| D3  |  22  |   14|
| D4  |  50  |   15|
| D5  |  51  |   16|
| D6  |  52  |   17|
| D7  |  53  |   18|
APU は、アドレスバス B の 0x40 〜 0x7F に配置される。

***アドレスバス A [#h655d94b]
PPU1 と PPU2 は、アドレスバス B の [[0x2100>IO ポート (メイン)/0x2100]] 〜 [[0x213F>IO ポート (メイン)/0x213F]] に配置される。

アドレスバス A は 24 ビット幅のバスで、
読み込み・書き込みライン (/RD と /WR)、
2 つの補助ライン (/CART と /WRAM) を一緒に使う。
このバスは、カートリッジ端子のみではなく
WRAM も接続されている。
表の、"スピード" 列はその領域のメモリのアクセス速度を表す。
SNES のマスタークロックは約 21MHz である
(おそらく、1.89e9/88 Hz に近い)。
CPU の内部動作サイクルは常に 6 マスターサイクルで、
Fast メモリアクセスサイクルは 6 マスターサイクル、
Slow メモリアクセスサイクルは 8 マスターサイクル、
XSlow メモリアクセスサイクルは 12 マスターサイクルかかる。

|ライン|カートリッジ|h
| A0  |  17  |
| A1  |  16  |
| A2  |  15  |
| A3  |  14  |
| A4  |  13  |
| A5  |  12  |
| A6  |  11  |
| A7  |  10  |
| A8  |   9  |
| A9  |   8  |
| A10 |   7  |
| A11 |   6  |
| A12 |  37  |
| A13 |  38  |
|バンク|アドレス|スピード|マッピング|h
|$00-$3F|$0000-$1FFF|Slow|アドレスバス A + /WRAM (ミラー : $7E:0000-$1FFF)|
|~|$2000-$20FF|Fast|アドレスバス A|
|~|$2100-$21FF|Fast|アドレスバス B|
|~|$2200-$3FFF|Fast|アドレスバス A|
|~|$4000-$41FF|XSlow|内部CPUレジスタ (注 1 参照)|
|~|$4200-$43FF|Fast|内部CPUレジスタ (注 1 参照)|
|~|$4400-$5FFF|Fast|アドレスバス A|
|~|$6000-$7FFF|Slow|アドレスバス A|
|~|$8000-$FFFF|Slow|アドレスバス A + /CART|
|$40-$7D|$0000-$FFFF|Slow|アドレスバス A + /CART|
|$7E-$7F|$0000-$FFFF|Slow|アドレスバス A + /WRAM|
|$80-$BF|$0000-$1FFF|Slow|アドレスバス A + /WRAM (ミラー : $7E:0000-$1FFF)|
|~|$2000-$20FF|Fast|アドレスバス A|
|~|$2100-$21FF|Fast|アドレスバス B|
|~|$2200-$3FFF|Fast|アドレスバス A|
|~|$4000-$41FF|XSlow|内部CPUレジスタ (注 1 参照)|
|~|$4200-$43FF|Fast|内部CPUレジスタ (注 1 参照)|
|~|$4400-$5FFF|Fast|アドレスバス A|
|~|$6000-$7FFF|Slow|アドレスバス A|
|~|$8000-$FFFF|注 2|アドレスバス A + /CART|
|$C0-$FF|$0000-$FFFF|注 2|アドレスバス A + /CART|

|ライン|カートリッジ|h
|  A14  |  39|
|  A15  |  40|
|  A16  |  41|
|  A17  |  42|
|  A18  |  43|
|  A19  |  44|
|  A20  |  45|
|  A21  |  46|
|  A22  |  47|
|  A23  |  48|
|  /RD  |  23|
|  /WR  |  54|
| /CART |  49|
| /WRAM |  32|
注 1 : 内部 CPU レジスタ用のアドレスは、
アドレスバス A の外にある可能性があり、
CPU はデータバスを無視する。
データバスが全てのメモリ領域を無視するかということと、
これらのアドレスが実際にレジスタなのかは不明。
同様に、CPU の書き込みがデータバスに現れるのかどうかも不明。
現在のところ、アドレスと書き込みはバスに現れるだろうと
考えられている。読み込みは現れたり現れなかったりする。
実際にマップされているレジスタのビットのみがデータバスで無視される。
(例えば、データバスは [[0x4211>IO ポート (メイン)/0x4200-0x421F#p4211]] のビット 7 だけを無視する)

**65816 HiRomモード [#w00649b2]
注 2 : CPU レジスタ [[0x420D>IO ポート (メイン)/0x4200-0x421F#p420D]] のビット 0 がセットされている時、
スピードは Fast になり、セットされていない場合は Slow になる。

***Mode 20: LoROM メモリモデル (32k バンク) - 最大 24Mbit [#xcf6e19d]

|バンク|アドレス|内容|ミラーバンク|h
|0x00-0x2F|0x0000-0x1FFF|RAM|0x7E|
|0x00-0x2F|0x2000-0x2FFF|I/Oポート (PPU1, APU)||
|0x00-0x2F|0x3000-0x3FFF|I/Oポート (SFX, DST, etc)||
|0x00-0x2F|0x4000-0x41FF|I/Oポート (PAD)||
|0x00-0x2F|0x4200-0x5FFF|I/Oポート (PPU2, DMA, etc)||
|0x00-0x2F|0x6000-0x7FFF|未使用||
|0x00-0x2F|0x8000-0xFFFF|ROM||
|0x30-0x3F|0x0000-0x1FFF|RAM||
|0x30-0x3F|0x2000-0x2FFF|I/Oポート (PPU1, APU)||
|0x30-0x3F|0x3000-0x3FFF|I/Oポート (SFX, DSP, etc)||
|0x30-0x3F|0x4000-0x41FF|I/Oポート (PAD)||
|0x30-0x3F|0x4200-0x5FFF|I/Oポート (PPU2, DMA, etc)||
|0x30-0x3F|0x6000-0x7FFF|バッテリーバックアップRAM||
|0x30-0x3F|0x8000-0xFFFF|ROM||
|0x40-0x6F|0x0000-0xFFFF|ROM||
|0x70-0x77|0x0000-0xFFFF|バッテリーバックアップRAM||
|0x78-0x7D|0x0000-0xFFFF|未使用||
|0x7E|0x0000-0x1FFF|RAM||
|0x7E|0x2000-0xFFFF|RAM||
|0x7F|0x0000-0xFFFF|RAM||
|0x80-0xEF|0x0000-0xFFFF|バンク0x00-0x6Fのミラー||
|0xF0-0xFF|0x0000-0xFFFF|ROM||
|0x00-0x2F|0x0000-0x1FFF|下位RAM|0x7E|
|~|0x2000-0x2FFF|I/Oポート (PPU1, APU)|0x00-0x3F|
|~|0x3000-0x3FFF|I/Oポート (SFX, DSP, etc)|0x00-0x3F|
|~|0x4000-0x41FF|I/Oポート (PAD)|0x00-0x3F|
|~|0x4200-0x5FFF|I/Oポート (PPU2, DMA, etc)|0x00-0x3F|
|~|0x6000-0x7FFF|予約済み|0x00-0x3F|
|~|0x8000-0xFFFF|Mode 20 ROM||
|0x30-0x3F|0x0000-0x1FFF|下位RAM|0x7E|
|~|0x2000-0x2FFF|I/Oポート (PPU1, APU)|0x00-0x3F|
|~|0x3000-0x3FFF|I/Oポート (SFX, DSP, etc)|0x00-0x3F|
|~|0x4000-0x41FF|I/Oポート (PAD)|0x00-0x3F|
|~|0x4200-0x5FFF|I/Oポート (PPU2, DMA, etc)|0x00-0x3F|
|~|0x6000-0x7FFF|予約済み||
|~|0x8000-0xFFFF|Mode 20 ROM|0x80-0xBF|
|0x40-0x5F|0x0000-0x7FFF|予約済み||
|~|0x8000-0xFFFF|Mode 20 ROM|0xC0-0xEF|
|0x60-0x6F|0x0000-0x7FFF|予約済み||
|0x70-0x77|0x0000-0x7FFF|Mode 20 SRAM (256Kバイト)||
|~|0x8000-0xFFFF|予約済み||
|0x78-0x7D|0x0000-0xFFFF|予約済み||
|0x7E|0x0000-0x1FFF|下位RAM|0x00-0x3F|
|~|0x2000-0x7FFF|上位RAM||
|~|0x8000-0xFFFF|拡張RAM||
|0x7F|0x0000-0xFFFF|拡張RAM||
|0x80-0xDF|0x0000-0xFFFF|バンク0x00-0x5Fのミラー|0x00-0x5F|
|0xE0-0xFF|0x0000-0xFFFF|予約済み||

***Mode 21: HiROM メモリモデル (64k バンク) - 最大 48Mbit [#ra16827f]

|バンク|アドレス|内容|ミラーバンク|h
|0x00-0x2F|0x0000-0x1FFF|下位RAM|0x7E|
|~|0x2000-0x2FFF|I/Oポート (PPU1, APU)|0x00-0x3F|
|~|0x3000-0x3FFF|I/Oポート (SFX, DSP, etc)|0x00-0x3F|
|~|0x4000-0x41FF|I/Oポート (PAD)|0x00-0x3F|
|~|0x4200-0x5FFF|I/Oポート (PPU2, DMA, etc)|0x00-0x3F|
|~|0x6000-0x7FFF|予約済み|0x00-0x3F|
|~|0x8000-0xFFFF|Mode 21 ROM (0xC0-0xEFより)|0xC0-0xEF|
|0x30-0x3F|0x0000-0x1FFF|下位RAM|0x7E|
|~|0x2000-0x2FFF|I/Oポート (PPU1, APU)|0x00-0x3F|
|~|0x3000-0x3FFF|I/Oポート (SFX, DSP, etc)|0x00-0x3F|
|~|0x4000-0x41FF|I/Oポート (PAD)|0x00-0x3F|
|~|0x4200-0x5FFF|I/Oポート (PPU2, DMA, etc)|0x00-0x3F|
|~|0x6000-0x7FFF|Mode 21 SRAM (128Kバイト)||
|~|0x8000-0xFFFF|Mode 21 ROM (0xF0-0xFFより)|0xF0-0xFF|
|0x40-0x5F|0x0000-0xFFFF|Mode 21 ROM||
|0x60-0x6F|0x0000-0x7FFF|予約済み||
|0x70-0x77|0x0000-0x7FFF|Mode 20 SRAM (256Kバイト)||
|~|0x8000-0xFFFF|予約済み||
|0x78-0x7D|0x0000-0xFFFF|予約済み||
|0x7E|0x0000-0x1FFF|下位RAM|0x00-0x3F|
|~|0x2000-0x7FFF|上位RAM||
|~|0x8000-0xFFFF|拡張RAM||
|0x7F|0x0000-0xFFFF|拡張RAM||
|0x80-0xBF|0x0000-0xFFFF|バンク0x00-0x3Fのミラー|0x00-0x3F|
|0xC0-0xFF|0x0000-0xFFFF|Mode 21 ROM||

**SPC 700 [#yafa1af3]
|アドレス|内容|h
|0x0000-0x00EF|RAM|
|0x00F0-0x00FF|I/Oポート (DSP)|
|0x0100-0x7FFF|RAM|
|0x8000-0xFFBF|RAM?|
|0xFFC0-0xFFFF|ROM(起動用)|


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS