What does it mean to be Mapper 28 compatible?

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

Post Reply
paetramon
Posts: 1
Joined: Thu Jan 10, 2019 7:37 am

What does it mean to be Mapper 28 compatible?

Post by paetramon » Thu Jan 10, 2019 7:45 am

I'm very new to NES homebrew development, but I saw this NESDev competition (https://forums.nesdev.com/viewtopic.php?f=34&t=17743) ending at the end of January that I'm very interested in trying to get an entry into. One of the requirements for the competition is that the game is Mapper 28 compatible which I've gathered is so that the multicart they create at the end of January works right with multiple games on it. What I haven't figured out is how you make a game Mapper 28 compatible? It also says that there can be no PRG-RAM, do they mean that I can't bank switch to access more memory or use the NRAM on the cart? (Also if that last sentence makes no sense can someone also help with my understanding of bank switching and NRAM?)

Thank you!

User avatar
gauauu
Posts: 660
Joined: Sat Jan 09, 2016 9:21 pm
Location: Central Illinois, USA
Contact:

Re: What does it mean to be Mapper 28 compatible?

Post by gauauu » Thu Jan 10, 2019 8:22 am

paetramon wrote:I'm very new to NES homebrew development, but I saw this NESDev competition (https://forums.nesdev.com/viewtopic.php?f=34&t=17743) ending at the end of January that I'm very interested in trying to get an entry into. One of the requirements for the competition is that the game is Mapper 28 compatible which I've gathered is so that the multicart they create at the end of January works right with multiple games on it. What I haven't figured out is how you make a game Mapper 28 compatible?
If you make your game to use one of the mappers that it mentions, you'll generally be ok:
NROM
CNROM
BNROM
UNROM
AOROM
It also says that there can be no PRG-RAM, do they mean that I can't bank switch to access more memory or use the NRAM on the cart? (Also if that last sentence makes no sense can someone also help with my understanding of bank switching and NRAM?)
You can bank switch, and use ROM from multiple banks, but you can't use a mapper with expansion RAM (other than CHR-RAM). SRAM or additional WRAM, for example, are not allowed.

tepples
Posts: 21755
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: What does it mean to be Mapper 28 compatible?

Post by tepples » Thu Jan 10, 2019 8:38 am

paetramon wrote:What I haven't figured out is how you make a game Mapper 28 compatible?
Two ways.
  1. The simpler way is to use one of the supported discrete mappers: NROM (0), UNROM (2), CNROM (3), AOROM (7), BNROM (34), or UNROM (Crazy Climber variant) (180).
  2. The other, more flexible way is to use Action 53 mapper (28) directly. This method lets your game switch nametable mirroring among horizontal, vertical, and 1-screen. A compo entry using this approach must write to the outer bank register ($81) only once during hardware init; this allows the game to run by itself in an emulator while allowing the menu builder to patch out the write for multicart inclusion. When it writes to $80, bits 5 and 4 must also specify the correct game size, which in the case of compo entries is usually $1x for 64 KiB.
paetramon wrote:It also says that there can be no PRG-RAM
It means your program should not read or write $6000-$7FFF, as the production cartridge does not have RAM there.

Hokum_52
Posts: 4
Joined: Wed Jan 23, 2019 8:58 am

Re: What does it mean to be Mapper 28 compatible?

Post by Hokum_52 » Thu Jan 24, 2019 8:29 am

Thanks for the answer, wrapping my head around this issue is one of the reasons why I've joined this forum in the first place. Now, I'm going to the next issue: actually understanding how RAM works...

User avatar
tokumaru
Posts: 11467
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: What does it mean to be Mapper 28 compatible?

Post by tokumaru » Thu Jan 24, 2019 11:46 am

Hokum_52 wrote:Now, I'm going to the next issue: actually understanding how RAM works...
Each byte of RAM has an address you use to access it (i.e. $0000, $0001, $0002, ..., $07FF), and you can write and read values to/from these addresses. These values are used by your program to keep track of the state (i.e. everything that changes) of your game. Some CPU instructions write to RAM, others read from it, and others don't access RAM at all. This is basically all there is to know about RAM. :wink:

Post Reply