pulse sweep unit behavior when unused?

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems.

Moderator: Moderators

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

pulse sweep unit behavior when unused?

Post by GradualGames » Sat Jan 27, 2018 10:52 am

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: 2749
Joined: Fri May 08, 2015 7:17 pm
Location: DIGDUG
Contact:

Re: pulse sweep unit behavior when unused?

Post by dougeff » Sat Jan 27, 2018 11:31 am

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: 7843
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: pulse sweep unit behavior when unused?

Post by rainwarrior » Sat Jan 27, 2018 11:43 am

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: 22055
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: pulse sweep unit behavior when unused?

Post by tepples » Sun Jan 28, 2018 9:48 am

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: 7951
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: pulse sweep unit behavior when unused?

Post by Bregalad » Mon Jan 29, 2018 12:32 am

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