(NOOB) good MMC chip explanations/tutorials?

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

User avatar
toggle switch
Posts: 139
Joined: Fri Sep 30, 2016 8:57 pm

Re: (NOOB) good MMC chip explanations/tutorials?

Post by toggle switch »

i don't mean to be overly sarcastic here, but think about how embarrassing it would be if your NES game felt outdated! :shock:
puppydrum64
Posts: 160
Joined: Sat Apr 24, 2021 7:25 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by puppydrum64 »

lidnariq wrote: Mon May 17, 2021 7:38 pm
puppydrum64 wrote: Mon May 17, 2021 7:04 pm There are just a lot of things that NROM can't do and that's always going to make me feel like my game is "outdated."
You're selling both yourself and the simple mappers short with that sentiment: the majority of games for the NES and Famicom use things barely any better (NROM, UNROM, ANROM, MMC1), at most relying on CHR RAM for fancy effects. Thinking that you have to have fancy nametable mirroring or sophisticated CHR banking to make a compelling game is foolhardy, and an instance of Perfect being the enemy of the Good Enough.
Even when developing on NESMaker, which uses a really complex mapper chip,
NESmaker targets an oversize version of UNROM. It's really nothing fancy. The only significant difference is that now you literally cannot buy mask ROMs for cheaper than Flash, so UNROM512 can support self-programming.
You make a good point. But boy do these parallax effects look good.
vrc6_game.nes
(64.02 KiB) Downloaded 87 times
EDIT: Fixed a bug but forgot to assemble it prior to attaching the file.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by lidnariq »

puppydrum64 wrote: Tue May 18, 2021 8:57 pm You make a good point. But boy do these parallax effects look good.
"9 sprites on a scanline" flag for the top split, "sprite 0" for the bottom split, and if you use the 2006-2005-2005-2006 scrolling sequence you can imply some vertical parallax too. That way you can have a scrolling pattern that's longer than just what fits in 16 banks.
Fiskbit
Posts: 891
Joined: Sat Nov 18, 2017 9:15 pm

Re: (NOOB) good MMC chip explanations/tutorials?

Post by Fiskbit »

DMC IRQ can also be used for timing splits, and while it's a bit intimidating to set up, it's ultimately not that bad once you figure it out.
User avatar
nin-kuuku
Posts: 67
Joined: Tue Jan 24, 2017 1:23 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by nin-kuuku »

Reminder: Battletoads is basicly 256k NROM game with CHR RAM. No scanline IRQs or CHR banks. And it's The Ultimate NES Special Effect Game.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: (NOOB) good MMC chip explanations/tutorials?

Post by tokumaru »

You can do a lot of interesting visual effects on the NES without using complex mappers... In addition to Battletoads, I can also mention Bee 52, which has some of the most impressive parallax effects on the system.

Sword Master looks absolutely stunning for an NES game (it could arguably pass for an early 16-bit title!), and even though it uses an MMC3, most of its effects could be pulled off with just CHR-RAM and no special mapper.

Bucky O'Hare is another game full of special effects, many of which can be replicated without the aid of a mapper.
puppydrum64
Posts: 160
Joined: Sat Apr 24, 2021 7:25 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by puppydrum64 »

nin-kuuku wrote: Wed May 19, 2021 3:57 am Reminder: Battletoads is basicly 256k NROM game with CHR RAM. No scanline IRQs or CHR banks. And it's The Ultimate NES Special Effect Game.
My understanding is they achieved their parallax effects by manually counting CPU cycles. The absolute madlads.
puppydrum64
Posts: 160
Joined: Sat Apr 24, 2021 7:25 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by puppydrum64 »

tokumaru wrote: Wed May 19, 2021 5:22 am You can do a lot of interesting visual effects on the NES without using complex mappers... In addition to Battletoads, I can also mention Bee 52, which has some of the most impressive parallax effects on the system.

Sword Master looks absolutely stunning for an NES game (it could arguably pass for an early 16-bit title!), and even though it uses an MMC3, most of its effects could be pulled off with just CHR-RAM and no special mapper.

Bucky O'Hare is another game full of special effects, many of which can be replicated without the aid of a mapper.
Both Sword Master and Bucky O'Hare used CHR bank swapping (I adapted their technique into my game) but I'm guessing your point is that you can do it without that.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: (NOOB) good MMC chip explanations/tutorials?

Post by tepples »

See also previous topic Homebrew complexity, which discusses what's achievable by one person in spare time.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: (NOOB) good MMC chip explanations/tutorials?

Post by tokumaru »

puppydrum64 wrote: Wed May 19, 2021 6:17 amI'm guessing your point is that you can do it without that.
Yes, my point is that CHR-RAM can sometimes make up for the lack of CHR bankswitching, meaning that certain special effects are possible even without a mapper.

Just because a game uses a specific mapper, that doesn't mean that the mapper is necessary for everything the game does.
puppydrum64
Posts: 160
Joined: Sat Apr 24, 2021 7:25 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by puppydrum64 »

tokumaru wrote: Wed May 19, 2021 7:14 am
puppydrum64 wrote: Wed May 19, 2021 6:17 amI'm guessing your point is that you can do it without that.
Yes, my point is that CHR-RAM can sometimes make up for the lack of CHR bankswitching, meaning that certain special effects are possible even without a mapper.

Just because a game uses a specific mapper, that doesn't mean that the mapper is necessary for everything the game does.
Speaking of mappers I can't get my VRC6 test rom to work on ASM6. This is what I've come up with for the header (I'll list the constants below as well)

Code: Select all

PRG_COUNT 		= 2 ;1 = 16KB, 2 = 32KB
CHR_COUNT		= 4 ;1 = 8KB, 2 = 16KB, ETC
MIRRORING		= %0001
MAPPER_LOW		= $80
MAPPER_HIGH		= $10		;together these make mapper 24
FAMICOM_NES		= %0000
PLAY_CHOICE_TEN	= %0010
VS_SYSTEM		= %0001

	.db "NES", $1a ;identification of the iNES header
	.db PRG_COUNT ;number of 16KB PRG-ROM pages
	.db CHR_COUNT ;number of 8KB CHR-ROM pages
	.db MAPPER_LOW|MIRRORING ;mapper bottom 4 bits and mirroring
	.db MAPPER_HIGH|FAMICOM_NES	  ;mapper top 4 bits, NES
	.dsb 8, $00 ;clear the remaining bytes

	.base $10000-(PRG_COUNT*$4000)	;$8000, switchable 16k PRG-ROM bank
	; BANK CONTENTS GO HERE
	.pad  $BFFF
	
	
	
	
	.base $C000						;8K switchable PRG-ROM bank
	; BANK CONTENTS GO HERE
	.pad  $DFFF
	
	.base $E000						;8K fixed PRG-ROM bank

Reset:

; reset code left out for brevity

NMI:

;nmi code left out for brevity

IRQ:
     rti

MainGameLoop:

   JMP MainGameLoop

;----------------------------------------------------------------
; interrupt vectors
;----------------------------------------------------------------

	.org $fffa

	.dw NMI
	.dw Reset
	.dw IRQ

;----------------------------------------------------------------
; CHR-ROM banks
;----------------------------------------------------------------

	.incbin "astrobirds_00.chr"
	.incbin "astrobirds_01.chr"
	.incbin "astrobirds_02.chr"
	.incbin "astrobirds_03.chr"
	
 

;EOF

ASM6 will assemble this but it doesn't load in Mesen. I had a similar problem with ASM3 running a VRC6 rom and I don't think I really learned what I did wrong the first time.

EDIT: Forgot to list mirroring (it's in the source file so that's not the issue)
User avatar
dougeff
Posts: 3079
Joined: Fri May 08, 2015 7:17 pm

Re: (NOOB) good MMC chip explanations/tutorials?

Post by dougeff »

.pad $BFFF

I believe this would be 1 byte too small, try

.pad $c000

The same with the other .pad
nesdoug.com -- blog/tutorial on programming for the NES
puppydrum64
Posts: 160
Joined: Sat Apr 24, 2021 7:25 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by puppydrum64 »

Alright, that worked! Thank you so much!
Vikrinox
Posts: 4
Joined: Fri May 07, 2021 5:03 am
Location: Köttbulls land

Re: (NOOB) good MMC chip explanations/tutorials?

Post by Vikrinox »

nia-prene wrote: Sat May 15, 2021 4:51 pm I think you already have your answer, and to that effect I am sorry I am not answering your questions. I thought I would share my experience from when I was asking questions like this.
I don't mind at all, infact im quite happy to know im not alone in things this and that im welcome enough here to get some genuine feedback and opinions. i do realize i lack some much needed knowledge about these things before i attempt to make anything even remotely close to a game. But i was more really looking to make something thats more a proof of concept than anything. Im thinking some sort of slideshow program that can load in new nametables with up/down and tilesets with left/right or something. I know its probably the lamest and most worthless use of the MMC3 and other chips like it, but ive always found that building pyraminds upside down is my way of doing things.

in either case. Thank you for the response and for opening my eyes a little bit more :^)
puppydrum64
Posts: 160
Joined: Sat Apr 24, 2021 7:25 am

Re: (NOOB) good MMC chip explanations/tutorials?

Post by puppydrum64 »

lidnariq wrote: Tue May 18, 2021 9:15 pm
puppydrum64 wrote: Tue May 18, 2021 8:57 pm You make a good point. But boy do these parallax effects look good.
"9 sprites on a scanline" flag for the top split, "sprite 0" for the bottom split, and if you use the 2006-2005-2005-2006 scrolling sequence you can imply some vertical parallax too. That way you can have a scrolling pattern that's longer than just what fits in 16 banks.
You mean the bugged sprite overflow flag in $2002? Also how does the 2006-2005-2006-2005 thing work?
Post Reply