pulse sweep unit behavior when unused?

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

Post Reply
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

pulse sweep unit behavior when unused?

Post by GradualGames »

I found some old code in ggsound that apparently does nothing to the sweep unit but set the negate flag. Removing all the code which references and uploads this register results in unchanged behavior. I can't remember why I have it in the codebase, except that it must have been something from MetalSlime's original audio tutorial from which I originally learned.

What is the behavior of the sweep unit if you do absolutely nothing to it from startup, or is it advised to at least set it to some nominal value?
User avatar
dougeff
Posts: 3079
Joined: Fri May 08, 2015 7:17 pm

Re: pulse sweep unit behavior when unused?

Post by dougeff »

You need to set the N flag of the sweep register in order for the lowest notes to play (even without a sweep)

Ive noticed that games set the sweep register to $7f, when sweeps are off.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: pulse sweep unit behavior when unused?

Post by rainwarrior »

It's initialized at power on, BUT using a game genie will mess that up. Some of the Mega Man games never touch the sweep registers and have messed up music if you play with a Game Genie.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: pulse sweep unit behavior when unused?

Post by tepples »

You can't play notes in the pulse channels' lowest octave (what FamiTracker calls A-0 through G#1) if the sweep is at the default ($00). From APU Sweep on NESdev Wiki:
If at any time the target period is greater than $7FF, the channel is muted. In particular, if the negate flag is false, the shift count is zero, and the current period is at least $400, the target period will be large enough to mute the channel. (This is why several publishers' NES games never seem to use the bottom octave of the pulse waves.)
Further reading: Google Search: lowest octave site:nesdev.com
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: pulse sweep unit behavior when unused?

Post by Bregalad »

rainwarrior wrote:It's initialized at power on, BUT using a game genie will mess that up. Some of the Mega Man games never touch the sweep registers and have messed up music if you play with a Game Genie.
So this means Mega Man games using the old Capcom sound driver (Mega Man and Mega Man 2) cannot use the lowest octave with pulse waves?
Post Reply