Namco 163: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (eradicate n106 mentions)
(Redirected page to INES Mapper 019)
 
(53 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:ASIC mappers]]
#REDIRECT [[INES Mapper 019]]
The Namco 129 and 163 with expansion sound are assigned to [[INES Mapper 019|iNES Mapper 19]], while simpler variants using the Namco 175 and 340 ICs have simpler mirroring and are assigned to [[iNES Mapper 210]].
[[Category:Mappers with CHR ROM and CHR RAM]][[Category:Mappers using $4020-$5FFF]][[Category:ASIC mappers]][[Category:Mappers with ROM nametables]][[Category:Mappers with cycle IRQs]][[Category:Mappers with single-screen mirroring]]
 
== Overview ==
* PRG ROM size: Up to 512 KB
* PRG ROM bank size: 8 KB
* PRG RAM: Up to 8 KB
* CHR capacity: Up to 256 KB ROM and/or 32 KB RAM simultaneously [[Category:Mappers with CHR RAM]]
* CHR bank size: 1 KB
* Nametable [[mirroring]]: Controlled by mapper (Mapper 19), hardwired (Mapper 210)
* Subject to [[bus conflict]]s: No
 
== Banks ==
* CPU $6000-$7FFF: 8 KB PRG RAM bank
* CPU $8000-$9FFF: 8 KB switchable PRG ROM bank
* CPU $A000-$BFFF: 8 KB switchable PRG ROM bank
* CPU $C000-$DFFF: 8 KB switchable PRG ROM bank
* CPU $E000-$FFFF: 8 KB PRG ROM bank, fixed to the last bank
* PPU $0000-$03FF: 1 KB switchable CHR bank
* PPU $0400-$07FF: 1 KB switchable CHR bank
* PPU $0800-$0BFF: 1 KB switchable CHR bank
* PPU $0C00-$0FFF: 1 KB switchable CHR bank
* PPU $1000-$13FF: 1 KB switchable CHR bank
* PPU $1400-$17FF: 1 KB switchable CHR bank
* PPU $1800-$1BFF: 1 KB switchable CHR bank
* PPU $1C00-$1FFF: 1 KB switchable CHR bank
 
== Registers ==
 
The 163 has 19 registers within $4800-$5FFF and $8000-$FFFF, while the the 175 and 340 only have 12. Each register occupies a range of $800 bytes, so $4800-$4FFF all refers to one register, $5000-$57FF all refers to another register, and so on.
 
=== Sound Data Port ($4800-$4FFF) r/w (Namco 129,163 only) ===
See [[Namco 163 audio]].
 
=== IRQ Counter (low) ($5000-$57FF) r/w (Namco 129,163 only) ===
7  bit  0
---- ----
IIII IIII
|||| ||||
++++-++++- Low 8 bits of IRQ counter
 
=== IRQ Counter (high) / IRQ Enable ($5800-$5FFF) r/w (Namco 129,163 only) ===
7  bit  0
---- ----
EIII IIII
|||| ||||
|+++-++++- High 7 bits of IRQ counter
+--------- IRQ Enable: (0: disabled; 1: enabled)
 
=== CHR Select 1…4 ($8000-$87FF,$8800,$9000,$9800) w ===
{| class="wikitable"
! Write to CPU address !! 1KB CHR bank affected
|-
| $8000-$87FF || $0000-$03FF
|-
| $8800-$8FFF || $0400-$07FF
|-
| $9000-$97FF || $0800-$0BFF
|-
| $9800-$9FFF || $0C00-$0FFF
|}
'''Note:''' Only on Mapper 19 = Namco 129/163, pages $E0-$FF are CHR-RAM, as long as [[Namco 106#PRG_Select_2_.2F_CHR-RAM_Enable_.28.24E800-.24EFFF.29_w|$E800]].'''6''' is set to 0. If $E800.'''6''' is set to 1, then pages $E0-$FF refer to the last $20 pages of CHR-ROM as you'd expect.
 
=== CHR Select 5…8 ($A000-$A7FF,$A800,$B000,$B800) w ===
{| class="wikitable"
! Write to CPU address !! 1KB CHR bank affected
|-
| $A000-$A7FF || $1000-$13FF
|-
| $A800-$AFFF || $1400-$17FF
|-
| $B000-$B7FF || $1800-$1BFF
|-
| $B800-$BFFF || $1C00-$1FFF
|}
'''Note:''' Only on Mapper 19 = Namco 129/163, pages $E0-$FF are CHR-RAM, as long as [[Namco 106#PRG_Select_2_.2F_CHR-RAM_Enable_.28.24E800-.24EFFF.29_w|$E800]].'''7''' is set to 0. If $E800.'''7''' is set to 1, then pages $E0-$FF refer to the last $20 pages of CHR-ROM as you'd expect.
 
=== Nametable Select 1…4 ($C000-$C7FF,$C800,$D000,$D800) w (Namco 129,163 only) ===
{| class="wikitable"
! Write to CPU address !! 1KB nametable affected
|-
| $C000-$C7FF || $2000-$23FF
|-
| $C800-$CFFF || $2400-$27FF
|-
| $D000-$D7FF || $2800-$2BFF
|-
| $D800-$DFFF || $2C00-$2FFF
|}
{| class="wikitable"
! Value CPU writes !! Behavior
|-
| $00-$DF || Use a 1KB page of CHR-ROM as a nametable
|-
| $E0-$FF || Use the NES's internal nametables (even values for A, odd values for B)
|}
'''Note:''' With mapper 210, a.k.a. Namco 175 or 340, these nametable selection registers have no effect.
 
=== External PRG RAM enable ($C000-$C7FF) w (Namco 175 (340?) only) ===
7  bit  0
---- ----
.... ...E
        |
        +- 1: Enable PRG RAM
 
=== PRG Select 1 ($E000-$E7FF) w ===
7  bit  0
---- ----
MMPP PPPP
|||| ||||
||++-++++- Select 8KB page of PRG-ROM at $8000
|+-------- Namco 129, 163 only: Disable sound if set
++-------- Namco 340 only: Select mirroring
              0: One-screen A
              1: Vertical
              2: Horizontal
              3: One-screen B
 
=== PRG Select 2 / CHR-RAM Enable ($E800-$EFFF) w ===
7  bit  0
---- ----
HLPP PPPP
|||| ||||
||++-++++- Select 8KB page of PRG-ROM at $A000
|+-------- Disable CHR-RAM at $0000-$0FFF (Namco 129, 163 only)
|            0: Pages $E0-$FF are CHR-RAM
|            1: Pages $E0-$FF are the last $20 banks of CHR-ROM)
+--------- Disable CHR-RAM at $1000-$1FFF (Namco 129, 163 only)
              0: Pages $E0-$FF are CHR-RAM
              1: Pages $E0-$FF are the last $20 banks of CHR-ROM)
 
=== PRG Select 3 ($F000-$F7FF) w ===
7  bit  0
---- ----
..PP PPPP
  || ||||
  ++-++++- Select 8KB page of PRG-ROM at $C000
 
=== Write Protect for External RAM AND Sound Address Port ($F800-$FFFF) w (Namco 129, 163 only) ===
7  bit  0
---- ----
KKKK DCBA
|||| ||||
|||| |||+- 1: Write-protect 2kB window of external RAM from $6000-$67FF (0: write enable)
|||| ||+-- 1: Write-protect 2kB window of external RAM from $6800-$6FFF (0: write enable)
|||| |+--- 1: Write-protect 2kB window of external RAM from $7000-$77FF (0: write enable)
|||| +---- 1: Write-protect 2kB window of external RAM from $7800-$7FFF (0: write enable)
++++------ Must = b0100 to enable writes
Also see [[Namco 163 audio]].
 
== IRQ Operation ==
The IRQ is a 15-bit CPU cycle up-counter. $5000 and $5800 provide ''direct'' access to the counter itself (i.e., this isn't a reload value). Games can read and write to these registers in realtime.
 
The IRQ counter increments on each CPU cycle. Upon reaching $7FFF, an IRQ is fired. However, it is unknown if the counter wraps to $0000 afterwards. Reading/Writing to $5000 or $5800 will acknowledge any pending IRQs.
 
== References ==
All of the below are in Japanese:
*[http://forums.nesdev.org/viewtopic.php?p=77795#77795 Naruko's post to the forum]
*[http://unagi.sourceforge.jp/cgi-bin/hiki/hiki.cgi?163_namco Wiki on same]
*[http://d.hatena.ne.jp/na6ko/20110501/1304181038 Naruko's blog's post on mirroring on the 340]
*[http://d.hatena.ne.jp/na6ko/20110430/1304099059 Naruko's blog's post on the write protect register at $F800]

Latest revision as of 19:49, 9 August 2018

Redirect to: