Why did they choose the 2A03 as the CPU for the NES?

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
DementedPurple
Posts: 318
Joined: Mon Jan 30, 2017 5:20 pm
Location: Colorado USA

Why did they choose the 2A03 as the CPU for the NES?

Post by DementedPurple »

After watching the Did You Know Gaming video about the NES, they mentioned that when they were deciding what CPU to use for their Famicom, they wanted to have it be able to play their arcade games and they wanted to just have to change the memory addresses and be able to port them just like that. However they decided to go with the 2a03. Why didn't they go with the z80? I know that they used the 2a03 because it had built in audio, but if it was a custom chip, then why did they choose to go with a 6502 core instead of a more practical z80? was it because of price?
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by tepples »

The 6502 was chosen for three reasons:
  1. 6502 is smaller than the Z80, allowing Ricoh to fit audio onto the same die rather than having to make a multi-chip package with a Z80 on one die and a PSG on the other.
  2. Security by obscurity, as Nintendo's competitors in Japan were more familiar with Z80 than with 6502. This was disclosed in an interview (key word "stone"), but the link has since become dead, and "This URL has been excluded from the Wayback Machine."
  3. As we discussed earlier, the 6502 is better than the Z80 at indexed addressing modes, which are important for moving multiple actors around.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by tokumaru »

tepples wrote:the 6502 is better than the Z80 at indexed addressing modes, which are important for moving multiple actors around.
And yet a shitload of Z80-based game machines exist, and apparently programmers in Japan were more acquainted with the Z80 in general, so I don't think that memory indexing was something Nintendo gave much thought to when making this decision.
User avatar
Punch
Posts: 365
Joined: Sat Feb 16, 2013 11:52 am

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by Punch »

I think that the main (maybe only) factor was this one: cost. Correct me if I'm wrong but the 6502 was significantly cheaper compared to the competition? Remove patent circuitry and you have it even cheaper...

I mean even Donkey Kong had a Z80 so I can't imagine any practical reasons for not choosing it instead.
This is a block of text that can be added to posts you make. There is a 255 character limit.
User avatar
MottZilla
Posts: 2837
Joined: Wed Dec 06, 2006 8:18 pm

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by MottZilla »

Cost is the most likely reason. It would have been a very high priority.

Using a customized Z80 would have cost more as tepples pointed out. Isn't there similar speculation that the reason the SNES used the 65816 over the 68000 also being cost related? Although atleast in the case of the SNES you could argue for sticking with the familiar CPU instruction set. That or rumored backward compatibility.
User avatar
Myask
Posts: 965
Joined: Sat Jul 12, 2014 3:04 pm

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by Myask »

I've seen a few reasons floated around here for why Ricoh. Other decisions, not so much.
  • Shortage/exhaustion of other IC/processer producers
  • connections/nepotism
Haven't been able to re-exhume where those were stated, though.
niconii
Posts: 219
Joined: Sun Mar 27, 2016 7:56 pm

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by niconii »

Page 2 of this interview explains that Ricoh was the only company with the necessary manufacturing capacity available at the time, due to PCs getting big in Japan. It also mentions that it was Ricoh's engineers who apparently recommended the 6502, though it doesn't go into much detail as to why.
Oziphantom
Posts: 1565
Joined: Tue Feb 07, 2017 2:03 am

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by Oziphantom »

The 6502 core could be stolen if they dropped a single feature ;) so they didn't even have to pay the license fee on the 6502
The 6502 was cheaper to make originally
The 6502 has a better architecture that lets it do more at a slower clock speed. A 1.8Mhz 6502 will beat the 3.5Mhz Z80 but now your bus and ROM and RAM chips only need to be good for 1.8Mhz operation and not 3.5Mhz, which makes them cheaper
The 6502 was known by Iwata and hence they could employ him ;)

What I want to know is why the didn't use a 65C02 in the GB
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by tepples »

Oziphantom wrote:What I want to know is why the didn't use a 65C02 in the GB
I can speculate three reasons why the Lynx was the only major handheld of its era to use a 65C02. (That is, unless you consider the TurboExpress, Supervision, or GameKing "major".)
  • First, as I understand it, the Game Boy was largely a Sharp design, and Sharp already had its own 8080-clone microprocessor core "LR35902" for use in custom 8-bit MCUs. Japanese companies on the whole prefer to work with other Japanese companies.
  • Second, the 65C02 was newer and had more essential features still covered by patents. It's not like the 6502, where BCD addition and subtraction were the only patented parts.
  • Third, between the design of the Famicom and the design of the Game Boy, there was a movement among national governments to grant copyright-like exclusive rights in "mask works" (integrated circuit layouts), in addition to the exclusive rights already granted under patent law.
cyc
Posts: 20
Joined: Tue May 26, 2009 5:39 am

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by cyc »

tepples wrote:Security by obscurity, as Nintendo's competitors in Japan were more familiar with Z80 than with 6502. This was disclosed in an interview (key word "stone"), but the link has since become dead, and "This URL has been excluded from the Wayback Machine."
http://www.nintendo.co.uk/Iwata-Asks/Su ... 16037.html
AWJ
Posts: 433
Joined: Mon Nov 10, 2008 3:09 pm

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by AWJ »

Oziphantom wrote:A 1.8Mhz 6502 will beat the 3.5Mhz Z80 but now your bus and ROM and RAM chips only need to be good for 1.8Mhz operation and not 3.5Mhz, which makes them cheaper
No, that's not true. A 6502 requires a memory system that can respond in half a clock cycle. A Z80 only requires memory to respond in one-and-a-half clocks on instruction fetches, or two clocks on normal reads and writes. A 1.79 MHz 6502 needs a memory system that can respond in 280ns (minus latency from the address decoding, etc.) A 3.58 MHz Z80 needs 420ns to operate without any wait states, or 560ns to operate with a wait state on instruction fetches (as in the MSX)

On the other hand, the fact that the 6502 only accesses memory on alternating phases means that it can perfectly share a bus with another device. That's how the Apple II and the various Commodore machines work: the CPU can freely read or write "VRAM" (really just the portion of regular RAM that's shared with the video hardware) at any time. On the Z80-based ZX Spectrum, the CPU may be halted for up to 6 clocks whenever it accesses shared VRAM outside of VBlank or HBlank.
User avatar
Memblers
Site Admin
Posts: 4044
Joined: Mon Sep 20, 2004 6:04 am
Location: Indianapolis
Contact:

Re: Why did they choose the 2A03 as the CPU for the NES?

Post by Memblers »

AWJ wrote:
Oziphantom wrote:A 1.8Mhz 6502 will beat the 3.5Mhz Z80 but now your bus and ROM and RAM chips only need to be good for 1.8Mhz operation and not 3.5Mhz, which makes them cheaper
No, that's not true. A 6502 requires a memory system that can respond in half a clock cycle. A Z80 only requires memory to respond in one-and-a-half clocks on instruction fetches, or two clocks on normal reads and writes. A 1.79 MHz 6502 needs a memory system that can respond in 280ns (minus latency from the address decoding, etc.) A 3.58 MHz Z80 needs 420ns to operate without any wait states, or 560ns to operate with a wait state on instruction fetches (as in the MSX)
That's what I thought too, until I started using an NMC27C32Q-45 EPROM as part of my Cheapocabra devkit (a modified Game Genie), and that's 450ns. I was skeptical at first, but kevtris said that would be fast enough, and indeed it works every time. What gives, Nintendo? Makes me wonder if they ever even tried for 2.68Mhz on the CPU. I can only speculate they were worried about heat, since they did have heatsinks on some of the older PPUs.
Post Reply