Bregalad wrote:Wow ! Your new format looks pretty decent.
However, I've some minor problems with it :
- What on earth are those PPU types ? I've never heard of that. Normally, a NES game should work with all PPU revisions, huh ?
The Vs. system games use a bunch of different PPUs to prevent arcade operators from burning a new set of EPROMs to update their games.
The differences are approximately like so:
RP2C03x, RC2C0x:
Standard RGB palette, very similar to that of the regular PPU found in NTSC consoles... however 1 or 2 colours were changed on a few of them.
RP2C04-000x
These PPUs have scrambled palettes and extra colours. A good example of this would be Vs. Ice climber or Vs. SMB, or Vs. Gradius... all three use various forms of the RP2C04 PPU, and if you play these games with the regular palette, it looks like an acid trip
Each of the four PPUs has a different scrambling of the palette, and a few differences in the colours. I have dumped all four bit for bit accurately using a special device I made.
RP2C05-0x
These five PPUs have the stock palette (as far as I know, except I have not seen 2 of the chips). The difference here is register 2000h and 2001h are flipped around. Also, reading 2002h returns the usual three bits in D5 to D7 (VBL, sprite overflow, sprite 0 hit) but the lower 5 bits are different depending on the -0x revision. Games check these bits, and crash or fail to start if they are wrong.
- Why CHR-RAM could be battery backed ? I don't see much interest with that. What game could have any use of this ? To save space, a game would write all its save to the CHRRAM ? That make no sense to me, while technically possible.
That bicycling game cart,
Racermate does. It has 64K of CHR RAM- 32K is battery backed, the other 32K is not. They store all the stats and such in this RAM. Why they battery backed CHR RAM, I don't know... but it DOES exist
- Why CHR-RAM/SRAM size could be less than 8kb (exept 0kb) ? I doubt any 128-byte RAM chips are used in any NES game. I think less bits would do for the RAM size.
Because the EEPROMs used on some Japanese games are only 128, 256, or 512 bytes. Also, the MMC6 RAM is only 1K. This covers all possible bases, and costs nothing to implement. Having a range of 128 bytes to 1Mbyte is very decent IMO and shouldn't be a problem.
- More info on what exactly "submappers" would look like would be welcome.
Yeah I was kinda holding off until I got some feedback.. but here is where it's really needed.
For example, there are multiple kinds of MMC1 cartridges- "regular", 16K of WRAM (8K battery backed, 8K not), Dragon Warrior 3/4 (512K of PRG ROM), and games which require WRAM to always be enabled ("The Money Game" and a few others, Japanese only).
So the submapper for MMC1 would be something like...
0 - normal MMC1.
1 - 16 WRAM present (a few Koei games do this)
2 - 512K of PRG ROM present (DW3, DW4)
3 - WRAM write protection disabled
It might be better to make the "WRAM protection disabled" a bit, so it could be turned on and off by itself, regardless of the other modes. The 16K of WRAM and 512K of PRG ROM though are mutually exclusive, since they use CHR ROM mapper bits.
- Why don't put a bit that tells if the cartridge is american on japanese ? Both are NTSC and there isn't much difference in emulation issues, but I guess it would still be cool to have that.
Something like 3 bits :
000 -> Japan, NTSC
001 -> America, NTSC
010 -> Europe, PAL
011 -> (Australia ?), PAL
100 -> Pirate/Homebrew/Unlicenced, NTSC
110 -> Pirate/Homebrew/Unlicenced, PAL
111 -> Pirate/Homebrew/Unlicenced, support both video standards
Maybe, but that doesn't directly help emulation per se. I'm not opposed to such things though.
Emulators could just look the middle bit to know if they must emulate PAL or NTSC, or have a more complex system to emulate all regions... ?
Yah... I'm not 100% sure about regioning... The only thing really enforcing regions is the lockout chip, and NTSC/PAL.
Other than this, it looks great.
EDIT : Totally outtopic, but I'm very curious to know wich games use EEPROM instead of RAM+Battery to hold saves. Wich mapper support that ? Are those licenced games or only pirate games ?
That is mapper 16. Yes, licensed games by Bandai... I'm not 100% sure on titles at the moment, but there's around 10-12 that use it. There are two kinds of EEPROM they support- I^2C and a different, similar format. Look up the datasheet for the 24C02 to get an idea of what they are doing.
I emulate both styles of EEPROM in my console and it works great.
Unfortunately, mapper 16 is really something like 5 or 6 different mappers :-/