No mapper - only falsh rom cart

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
No mapper - only falsh rom cart
by on (#21574)
Ok, i thought of doing a cart for the NES, cuz i have made one for the GB and SNES HiRom
But when i see the cartridge connector pinout i'm just going crazy :p

Where to connect chr rom pinouts? where to connect prg rom pinouts?

I'm going to use just the first couple of adress lines of a 29F040 (got loads of em) to only use 64 kbytes.

This would be a basic, and most simple version of a devcart, just for basic development purposes, anyone can hep me?

by on (#21578)
So you want to make an NROM-like board. Will you be doing this by desoldering mask ROMs from an existing NROM game PCB or by making your own PCB?

by on (#21586)
A completely new PCB; drawing the tracks on a laminate. So if anybody has some ideas or info on how to do this, please post it ;)

by on (#21592)
It depends on the mapper you want your PCB to have.
If you're gonna use some 29F040 on the PRGROM, that is enough to have almost any mapper out there (exept pirate multicards).
Depending on what you're going to do, you can just connect all adress lines A0-A14 to the connector (NROM, wich is 32kb), or leave some of the higher adress lines go into a mapper chip instead, and having the actual higher adress lines of the ROM adressed by the outputs of that mapper chip in question. This is basically how mapper bankswitching is done, and the exact same thing is appliable to CHRROM, exept that the bigger size without bankswitching is 8kb instead (A0-A12 available, and A13 is here to determinate difference between pattern fetches and name/attribute fetches).
I think a complete doccumentation about the cartridge connector should be done, because just the name of the pins isn't always relevant.

EDIT : Just for a thing, I guess it's harder to do a NES cart that a SNES cart because of all it's mapper and bankwitching stuff. The SNES have only 2 configuarions possible (among the very few games using special chips), the NES have at least a dozen of 'standards' configurations, along with more than two hundreds of different carts layout having ever be made.

The very simplest thing to do is to have one single PRGROM on the CPU bus (A0-A14 and D0-D7 connected together, PRG /CE is the /CE and the other pins are to their 'default' state), having VRAM /CE connected to GND, having VRAM A10 connected to PPU A13 (or PPU /A13, it doesn't matter), having a CIClone on the security pins, and leave everything else unconnected. This will give 32kb PRG without bankswitching, only one screen acessible for name/attribute table, and 64 tiles only usable repeated 8 times on both pattern tables. However, you'd only able to run a few of Membler's titles like that (Munchie Attack, Hot Seat Harry, etc...).

by on (#21597)
Should I make a version of Tetramino that runs in such a limited environment for testing purposes?

by on (#21598)
For a mapper 0 cartridge (NROM), you will need two ROM chips - a 32KB chip to serve as program ROM (PRG-ROM) and an 8KB chip to serve as character ROM (CHR-ROM).

Hooking up the PRG-ROM is fairly easy - use PRG A0-A14 for the address lines and PRG D0-D7 for the data lines. The PRG /CE pin is low whenever a read or write occurs in the PRG-ROM address space ($8000-FFFF). You do not need to use PRG R/W for mapper 0 games since you will not be responding to CPU writes (you can combine it with PRG /CE to prevent the ROM chip from activating during writes to $8000-FFFF, but this isn't necessary for mapper 0).

CHR-ROM is mapped into PPU space at $0000-1FFF. If my understanding is right, the CHR-ROM chip should activate only when CHR A13 and CHR /RD are low. (Be careful not to mix up "CHR A13" and "CHR /A13" here.) Use CHR A0-A12 to determine the address and CHR D0-D7 for the data lines.

You also need to make connections for internal VRAM (or CIRAM, as the pinout I'm looking at calls it). I'm not positive, but I think the CIRAM /CE line should be connected to CHR /A13. Meanwhile, CIRAM A10 should be connected to either CHR A10 or CHR A11, depending on whether the game scrolls horizontally (vertical mirroring, CHR A10) or scrolls vertically (horizontal mirroring, CHR A11).

The SECURITY pins connect to the lockout chip. You must obtain one from another NES cartridge, or disable the one in your NES by cutting pin 4. If you're using a top-loader, then there is no lockout chip in the NES, so you don't need to worry about this.

You do not need to use the EXP pins (they go to the expansion port on the bottom of the NES), nor do you need to use the clock signals (M2 or CLK). The CHR /WR line is useful if you use CHR-RAM instead of CHR-ROM, but no mapper 0 games used CHR-RAM to my knowledge.

by on (#21599)
Bregalad wrote:
EDIT : Just for a thing, I guess it's harder to do a NES cart that a SNES cart because of all it's mapper and bankwitching stuff. The SNES have only 2 configuarions possible (among the very few games using special chips), the NES have at least a dozen of 'standards' configurations, along with more than two hundreds of different carts layout having ever be made.


I agree with that absolutely.

Now my question is:

If there are 2 rom chips (CHR and PRG) do i need to split the rom in a hexeditor?
or can i possible just use one chip, that will act as the prg rom and chr rom?

How big can the PRG rom possibly be? (The CHR ROM can be up to 8 kb right?)

And technical talk isn't my best thing, because I'm not a native speaker, visualising this is a pain in the ass.

Does anybody have some *.PNG's or *.JPG's of the cartridge connector pinout? That would be very easy to do then.

by on (#21600)
mog123 wrote:
If there are 2 rom chips (CHR and PRG) do i need to split the rom in a hexeditor?

Yes. NES ROM files usually start with a 16-byte header (ignore this when extracting the data to put in the chips) followed by the PRG data and last the CHR data. ROM files of CHR-RAM games do not contain any CHR data at the end.

The sizes of these blocks is defined in that 16-byte header. In NROM games, PRG is always 16KB or 32KB, and CHR is always 8KB.

Quote:
or can i possible just use one chip, that will act as the prg rom and chr rom?

I don't think you can, because PRG and data are accessed simultaneously.

Quote:
How big can the PRG rom possibly be? (The CHR ROM can be up to 8 kb right?)

As I said above, 16KB or 32KB in NROM. You can tell just by looking at the size of the ROM file. If it's about 24KB, PRG is 16KB, and if it's about 40KB, PRG is 32KB.

Quote:
Does anybody have some *.PNG's or *.JPG's of the cartridge connector pinout? That would be very easy to do then.

I haven't seen any real images for this, but this document (from the main NESDEV page - lots of useful pinouts there) has a graphical diagram of it.

BTW, instead of hardwiring mirroring in your cart, put a switch so you can pick between vertical or horizontal mirroring. =)

by on (#21601)
Why would i need such a switch, and what is h/v mirroring? I haven't got to that part of NES Assembly.

Tokumaru, on a side note, if I pm'ed you, some of my problems(instead of spamming the board) could you help me resolvce them? I understand your posts the most.

by on (#21602)
dvdmth wrote:
The SECURITY pins connect to the lockout chip. You must obtain one from another NES cartridge

Or from Kevin "kevtris" Horton, right?

mog123 wrote:
Why would i need such a switch, and what is h/v mirroring? I haven't got to that part of NES Assembly.

The NES background is read as a piece of a larger virtual background. Mirroring tells whether your virtual background is one screen wide and two screens tall, or two screens wide and one screens tall. Some games use the "tall" configuration; others use the "wide" configuration.

by on (#21603)
mog123 wrote:
Why would i need such a switch, and what is h/v mirroring?

Just elaborating a bit on what tepples said: The NES "sees" 4 separate screens that compose the full background (arranged as a 2x2 "square"), but the system's internal memory is only enough to hold 2 of them, meaning that 2 of them are mirrors of the other 2. Now, they can be mirrored horizontally (2 different screens one on top of the other, mirrored sideways) or vertically (2 different screens side by side, mirrored the other way).

Depending on the kind of scrolling, each game uses one or the other. Some mappers allow this to be controlled by software, but if that's not the case or if there is no mapper, mirroring is hardwired by soldering the lines indicated by dvdmth (CIRAM A10 to CHR A10 or CHR A11). A simple switch will let you chose between the two modes.

Quote:
Tokumaru, on a side note, if I pm'ed you, some of my problems(instead of spamming the board)

I didn't get a pm... Anyway, spamming the board is cool, someone always benefits from our experiences! =)

BTW, I found dvdmth's post quite comprehensive!

Quote:
could you help me resolvce them? I understand your posts the most.

I'd be glad to help! Keep in mind that I'm no hardware guru though, and my experience with devcarts goes as far as modifying existing boards, unlike others here who have actually built new boards out of nothing.