Re: Learning MMC1
Posted: Wed Sep 19, 2018 4:39 pm
No! Stop! Halt! Cease and desist! That is equally confusing, just in a different way. But this doesn't matter!tepples wrote:Would the following be correct and concise?Code: Select all
$E000-FFFF: [.... ...L] L = Serial load register (LSB first) Internal register after fifth write to $E000-FFFF: [W PPPP] W = WRAM Disable (0=enabled, 1=disabled) P = PRG Reg
Foremost, and THE MOST IMPORTANT OVERLOOKED FACT: we don't know what documentation the OP was looking at when he made this thread because he didn't reference it. But I can tell from the syntax/formatting that it's probably Disch's mapper document for MMC1. Let's see if I'm right: http://www.romhacking.net/documents/362/ -- file 001.txt within the zip. Yep, I'm right.
Two: https://wiki.nesdev.com/w/index.php/MMC1 (our iNES_Mapper_001 page redirects there as well) contains its own version/description of these registers, which is different (read: different terminology compared to Disch's docs), but that's OK because it's generally consistent. So is Disch's doc, actually, because his 001.txt doc has a section titled "Notes" that explains the MMC1's behaviour (keep reading). So, I believe the OP did not read the doc, but instead skimmed it. Bzzzt! :-)
He should probably read the Wiki page, as user unregistered said. (That's probably the best post in this thread so far!)
Three: said Wiki page contains a section called "Registers" which has a very well-written 2-paragraph description of the behaviour at the very top. The description uses both words and code, and is excellent at describing how the MMC1 behaves (that its registers are single-bit due to simple use of a shift register). This section does not need changing: it reads just fine and can be comprehended by programmers and hardware people alike, including those who are new. It's a great section. The subsequent register descriptions are indicators make a lot more sense once reading aforementioned paragraphs. If those paragraphs still don't make sense, Disch's docs (section "Notes") actually goes through things step-by-step in a more hand-holding way for programmers.
In summary: there is nothing to change, but instead just point the user to some documentation that's more clear in this particular case: the Wiki page. Disch's docs are still relevant/applicable/legitimate for the most part, but they require the person to read them. The Wiki pages are the same way: you have to read.