Both of the processors are original by Nintendo (well Ricoh) but resemble their NMOS counterparts, not CMOS.
I'm pretty sure there must have been *some* documentation on the NES's hardware... you can't expect everyone to figure out the hardware themselves, as was painfully shown by the Saturn :-(
Sure, there was lots of documentation. Just not from Nintendo. NES was very well documented by 3rd parties. Even in the mid 80s hobbyists in Japan and China had figured out all there was to know about the system. How do you think those overnight developers all made games I mean, the hardware was cloned by 1986! Really! there aren't any secrets to the NES. Studying it's the PCB and disassembling any game nearly reveals it's complete memory map and all hardware attributes, from there people also derived APU and PPU properties. Trust me, tons of people knew how to program the system in the 80s with no help from Nintendo, I even know someone that did. Will ask how he learned.
nintendo itself made eprom prototypes, so i presume there's no official special test kits, or at least, not alot. and as for the snes cpu being compatible with the nes one, the super famicom was suposed to be able to paly famicom games, but the idea was cuted off. still, i don't know why ninty would create a new cpu only because the compatibility was throwed away.
Supposedly by the later days of the NES, Nintendo was shipping it's docs. But by that point all the dev companies had already made their own docs and tools.
Using code from previous games only works if there are previous games...There had to be something for developers to use when they were making the first few games. You can't use code from a previous game if you're making the first game...If I'm missing something here though, please let me know. I love to learn new things .
What bothers me is that (from my limited knowledge) the NES PPU does not seem so straightforward at all, with half of the palette being in another location etc. - the only way to figure that out would be disassembling existing games and a LOT of experimenting - which is quite hard to do if it's 1986 and you have to burn EEPROMs all the time, which was undoubtedly a very expensive and time-consuming process. It just seems so illogical.
The NES PPU isn't straightforward for a layman, but look at the companies making games for the Famicom in the early days: Taito, Namco, etc... they have had lots of experience with arcade PPUs that work similarly to the NES. ie: tile-based graphics, palette indirection tables so that 2-bit graphics characters can have multiple palettes... It's not so odd. Many machines work this way (SNES, PCE, Genesis, Neo-Geo...) And also, weren't there things called ICE (in-circuit emulators) which could replace the CPU and be executed step-by-step? That's one way to watch what games on the NES do.
I imagine ICEs being around, but they are not exactly cheap. I still crave for an Intel X86 ICE but no luck :-(
I don't know what you're getting at but there were no third parties at the Famicom's launch, the original games were all Nintendo. I don't understand why you guys don't think DEVELOPERs, who lived in a day without half their software prewritten for them in libraries, couldn't understand the NES? I mean, the guys in China chemically opened the CPU and PPU, and manually cloned them with electron microscopes, don't take them that lightly. Again, they didn't HAVE to burn EPROMs every time they wanted to test code. SRAM when hardwired to a battery gives the same effect and can be erased and written to in just seconds. Also, there were things called "ROM emulators" maybe I should call it a "EPROM emulator" because it seems nobody is understanding, this is a device that "links" to a computer where the user can send data to SRAM which emulates ROM, these are expensive to a enduser but to a game company they're disposable. Ccovell, help me talk some sense into them! I'll give two examples of people who've done remarkably in figuring out the NES on their own: Marat and Kevin H. In the 80s there were even more people like them because you wouldn't float otherwise in the industry.
A couple of UK based developers did it as well. Ultimate Play the Game (later to be known as RARE) reveresed engineered the Famicom and impressed Nintendo so much that when they finally got a meeting with them Ninty granted them a license. Codemasters did the same, but they didn't get a license and ended up producing their own carts. Nintendo took them to court when they produced the Game Genie, but they lost.
Yeah, the NES is a relatively simple 8-bit machine. The Commodore-64 is much more complex but still many hobbyists made programs for the C64 (well, they DID have documentation from Commodore.) ;-) Licensed developers didn't get a "how to program" manual from Nintendo, but they did have a list of ports, memory addresses, etc... and that's all that is needed. Back in 1998 or so, I got interested in the NES and wanted to program for it. I got this urge one afternoon, so I downloaded docs on 6502 assembly and the NES HW, looked at the source code for existing demos, and by about 2 the next morning, I had a demo that displayed an "Amiga" logo and did square wave sweeps working on an NES emulator. So I went from 0% knowledge to a working (albeit slightly buggy) demo in less than a day. If I could do it in this time, I'm sure the experts in Asia could do it without breaking a sweat. It's not like today, where you need to use some 3-D libraries for games or else go insane making your own from scratch; programming the NES to put a picture on the screen can be done in about 100 bytes of code.
i think the interesting part is you looked at the source code of existing demos and that wasnt what rare or any of the early developers could do cause there was no source code avaiable or do i get that wrong ?
Rare got their source code from commercial games likely, you know, with a disassembler. They don't need it handed to them with comments.
you seem to be possessed by the idea nintendo never gave out any info concerning the nes. why is that so? you are right, the nes is a very simple system and there were people that pulled off crazy shit by reverse-engineering it, but when it comes to the vast majority of average game programmers, i think most of them had neither the time nor the skill to completely reverse-engineer the system. hacking together a little rom that displays a picture is easy to pull off no doubt, but coding an entire game in assembler is a completely different story thats barely possible without explicit and detailed knowledge of the hardware. you are right when you say alot more people were into low-level coding back then compared to now, but that does however not mean that 6502 asm is/was a piece of cake as you seem to suggest by comparing it to html. have you ever coded anything on the nes/snes apart from little slideshow thingies? i bet you havent. nowadays, with the internet and all kind of documentation readily available its easy to be like: "look, the nes is so simple, even my mom could do a demo on it". i dont think it was like that. as an example, take the former snes scene. although there were some individuals that figured out the important stuff fairly quickly, there was so much bullshit spread over the years. remember how long it took them to discover fastrom? or play music using their own spc routines? that was amazing stuff, no doubt. just dont underestimate the trouble involved in reverse-engineering hardware by software only.(without being able to trace and see what the hardware actually does) bottom line: im fairly sure nintendo gave out documentation and if it only was 2 pieces of paper briefly describing each registers function.
d4s, who is your comment about the slideshows aimed at? Because if it's towards me, I have made a couple of actual games on the NES. Feel free to check it out on my old homepage. But about Nintendo's docs, licensed developers DID get some documentation about the NES/Famicom. One guy in the dev scene once got ahold of it, apparently, and wouldn't release the full text, except for a few snippets here and there. Now, how detailed the docs were, we'll never know.
Well, for starters Famicom is my main console of interest, I've spent the last few years searching for development hardware and official documentation, I know a very little bit exists but it's pretty obvious nothing existed on the scale of any other system. I'm not saying it's as easy as HTML, I'm saying pointing out that in the 80s, 6502 was figuratively as popular as HTML is today with hobbiests. I've done a whole ton of work on the NES, but almost all of it was strictly for Famicom Game Doctor development. I can make a slideshow program as well but no Mario grade games. I'm not claiming to be some 6502 much less NES programming guru, I'm determined however to become one some day. If you read my posts, you'd see that I'm saying there was plenty of documentation from third parties. I’m claiming that the NES is simple to professional developers, entities such as Taito and Namco with hundreds of professional engineers at their disposal should have no problem creating a game on the NES when they’ve had a history of putting out games on their own proprietary hardware often far more complex than the NES. As I recall, everyone discovered Fastrom the day Super Star Wars hit Treasure Island or some BBS de jour and nobody could play it on their Magicoms. SNES is an entirely different situation, yes it is far harder to figure out from a software standpoint but why are you limiting reverse engineering to a software standpoint? I'm sure not. I'm very sure that later on Nintendo gave out MMC documents because Nintendo encouraged their licensed developers to use their MMCs. My bottom line is that it's not likely we're going to get some scans of a NES development binder like we have for nearly every other console. When I'm saying houses had no problem reverse engineering the hardware I'm referring to Tengen and Rare, don't criticize me for what they've admitted to. Sure most people can't do what Kevin Horton does, but there still are a lot of people who can! I believe in the 80s, as I said, there were more of them too because understanding the nature of low level computers was a necessity then.
sorry guys, didnt mean to offend anyone, just trying to make my point. i was talking about my own experience here. i started out on snes doing little hacks and a totally messy slideshow and moved onto bigger things recently. you can put together a slideshow with ugly code any time, but if you develop a full-fledged game, you better had built up a library of functions first and have organized and well-structured code, especially when it comes to assembler. thats what i meant. youre a couple of steps ahead of me, though. i havent released any games yet. thats a good point. alright then. just had the feeling you were totally against the idea nintendo ever put out any docs. you may be right when you say that there was more 3rd party than 1st party documentation. i know youre one dedicated famicom and copier enthusiast, i wasnt questioning that.