Why did they choose the 2A03 as the CPU for the NES?
Moderator: Moderators
-
- 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?
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?
Re: Why did they choose the 2A03 as the CPU for the NES?
The 6502 was chosen for three reasons:
- 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.
- 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."
- As we discussed earlier, the 6502 is better than the Z80 at indexed addressing modes, which are important for moving multiple actors around.
Re: Why did they choose the 2A03 as the CPU for the NES?
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.tepples wrote:the 6502 is better than the Z80 at indexed addressing modes, which are important for moving multiple actors around.
Re: Why did they choose the 2A03 as the CPU for the NES?
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.
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.
Re: Why did they choose the 2A03 as the CPU for the NES?
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.
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.
Re: Why did they choose the 2A03 as the CPU for the NES?
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
Re: Why did they choose the 2A03 as the CPU for the NES?
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.
-
- Posts: 1565
- Joined: Tue Feb 07, 2017 2:03 am
Re: Why did they choose the 2A03 as the CPU for the NES?
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
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
Re: Why did they choose the 2A03 as the CPU for the NES?
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".)Oziphantom wrote:What I want to know is why the didn't use a 65C02 in the GB
- 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.
Re: Why did they choose the 2A03 as the CPU for the NES?
http://www.nintendo.co.uk/Iwata-Asks/Su ... 16037.htmltepples 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."
Re: Why did they choose the 2A03 as the CPU for the NES?
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)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
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.
Re: Why did they choose the 2A03 as the CPU for the NES?
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.AWJ wrote: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)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