Adjusting animations between NTSC and PAL/Dendy...

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
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by FrankenGraphics »

rainwarrior wrote:The relative volumes already vary a lot from system to system. It's even worse when you get Famicom expansions into it. (The balance can even change significantly as the system warms up!)
Wait, you mean the independend channels in the analog sum circuit vary noticably from unit to unit, not counting expansion audio? :shock: I have two PAL units (have had 3) but never thought of it. I know carbon resistors generally have a larger tolerance, but i didn't knew it'd amount to significant changes in perceived volume. This may also be something that has changed over time and/or vary with manufacturers but my experience is that in a batch of 5% tolerance carbon resistors, most of them stay within 0-2.5% with the rare, occasional "dud" in the 2.5-5% range.

Anyway, i don't think it's a case of "make or break", but a case of preferred representation. Even with something as lo-fi as the APU, there's room for a surprising variation of "sound". You'd still want the "master copy" to sound preferable to your ears.
User avatar
rainwarrior
Posts: 8732
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by rainwarrior »

There are two audio outputs, one group is the two squares, the other is the triangle / noise / dpcm. So I think you can rely on precise relative output within a group, at least, but not so much between the two groups, and the relative mix is based on the compound error of both, not just one resistor.

A while back I did a small survey having several people record their machines (different NES and famicom machines) and measured the outputs, and this informed the default balance settings in NSFPlay. I don't remember where I put the files right now, so I can't look up the numbers (wish I'd thrown it up on the wiki or something, might be worth revisiting and doing another survey) but there was a pretty significant range.

Famicom cartridges were even worse. In some cases the same game has been seen with different intentional resistor values, not just deviation within tolerance.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by GradualGames »

Wow, this thread really took off!

I am taking a look at Streemerz. So, it was said above that it is basically timed for PAL but skips every 6th frame on NTSC?

I can't notice it at all..... *edit* But I just reviewed rainwarrior's mentioning about input response. Yeah I guess if I'm skipping my entire frame, I might lose twitchy button presses and screw over the player. I'll have to test and see. *edit* I can't seem to notice much difference control wise. But then there's the factor I'd be timing the game for PAL and NTSC would be the one with the timing adjustment in place...

Other really good points were made, such as platformers changing subtle differences in trajectories and so on. I've already seen this begin to happen as I'm experimenting with tuning the game for PAL. It actually plays pretty good in PAL without adjustment (except for sound of course) so I've just got to weigh all these options. I'm almost through fully refactoring the game (and the game is not even half done so it wasn't a huge job) to tune the timings but...there are so many factors to consider here. It doesn't sound like the collecting community is going to be up in arms one way or the other.

I was also thinking about doing something like implementing threads using mmc3 irqs and have them fire 5 or 6 times a frame or something like that. All my entities are coroutines; seems like one could take another step and have full blown threads. Problem would be balancing using those irqs with split screen irqs for boss fights (guess you'd have to have a list of irqs to fire and which routine to redirect to...split screen management or thread management....), so I'm probably not going to do anything quite this insane, but it is fun to think about. This way one could do the 300hz animation updates but allow the rest of the game logic to take the normal frame length, perhaps.

I recall finding a copy of Neotoxin's source code once upon a time (which unfortunately I appear to have lost) and noticed it mentioned threads in there. I am not sure if that basically meant "coroutine" like I'm currently using in my games, or if they actually did have a real preemptive thread scheduling scheme in place.
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by lidnariq »

FrankenGraphics wrote:I know carbon resistors generally have a larger tolerance, but i didn't knew it'd amount to significant changes in perceived volume. This may also be something that has changed over time and/or vary with manufacturers but my experience is that in a batch of 5% tolerance carbon resistors, most of them stay within 0-2.5% with the rare, occasional "dud" in the 2.5-5% range.
Resistors can change their value dramatically with age. Even if they started as 5% resistors, these NESes and Famicoms are 30-35 years old now, and the resistors could have drifted several more percent.

If any of them were sitting in hot attics for some portion of that time, I'd even say it's guaranteed.

Vishay has a writeup about modern 1% and 0.1% SMT resistors here, indicating that derating after 1 year of worst-case conditions could change an originally-1% resistor by up to 6.5%
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by FrankenGraphics »

Vishay has a writeup about modern 1% and 0.1% SMT resistors here
Interesting... i'll read that tomorrow. Thanks! Though if it's about metal film resistors, does it compare them with carbon ones?
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by lidnariq »

It doesn't seem to, but other sources say that carbon film resistors are approximately like metal film resistors but less precise and less stable. (Hence why carbon film resistors came in 10% and 5% varieties, while 2% and 1% resistors seem to mostly (all?) be metal film)
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by GradualGames »

DRW wrote:
Dwedit wrote:Just run animations twice every 5 frames. Judder is inevitable whenever you need to deal with 50FPS vs 60FPS, so just take the easy way out.
I cannot believe that people seriously suggest a way that basically makes the PAL version the original master version while the NTSC version would be the inferior hackjob.


300 fps would probably be the best attempt, but I doubt that you can cram five or six game logic runs into the time of one actual frame.

10 fps is totally unacceptable.

So, I would say:
Program your game for NTSC and leave it at that.

Music adjustment for PAL is fine so that the game doesn't sound like shit on a PAL console.
And raster effect timing adjustments are of course necessary as well, so that the game doesn't glitch.
And if you use the intensity bits for color overlay, you should also keep in mind that red and green are switched around on PAL.

But it's really not worth the hassle to manually adjust the game to that inferior piece of crap that is the European NES.
Back in the day, people were used to a slower game experience on PAL, so you would be authentic here by not adjusting it.
And today, if people still use that stupid European console, there's nobody to blame but themselves.
After considering all the feedback in this thread including yours DRW I think I'm just going to tune the music for PAL and leave the game to be somewhat slower.

When I got further along in tuning my game for PAL, I began running into funny situations where the adjustment was going to require totally rethinking some entity logic including for bosses...it actually did turn out to be a bigger hassle than I first thought.

I also tried the dropping every 6th frame approach on real hardware, and it looked too jerky to me.

What I've learned from this thread is there's really no correct way to account for PAL. Letting your game be slower with music corrected is one totally acceptable option, and I think for my particular game it's the best option.

Thanks for all the thoughtful feedback everybody.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by tokumaru »

GradualGames wrote:I think I'm just going to tune the music for PAL and leave the game to be somewhat slower.
This is probably the conclusion most people reach when they realize how complex this task is. In fact, I'd say that other than making the PAL version the master and repeating every 5th frame on NTSC, it's impossible to get games working the same at both frame rates. There are better ways to approach this issue, but the NES is too underpowered for any of those.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by Bregalad »

rainwarrior wrote: I would say if using tuned DPCM (e.g. "sunsoft bass") this is critical, but otherwise you shouldn't adjust the pitch at all. It's better to just leave it so that things like the high bit of frequency (e.g. the "A-3 vibrato clicks") keep their quirks in the same place, etc. The music will have exactly the same meaning at ~15/16 pitch.
I find it noticeable when music plays at the wrong pitch. Other people might not care but I do.
Sometimes not even that! I still can't believe this game was released like that!
For Nintendo, gamers from PAL were clearly 2nd class clients until the late 90s. Between horrible 50Hz ports and shitty translations, to manuals which thinks and implies you're stupid. Sony is guilty of this as well, perhaps even worse. But I'm getting off-topic here.

What I wanted to say is that MM3 PAL hironically fixes the music pitch AND tempo (this even create a "glitch" when Protoman appears, as you can hear the music going too far) - but it did not fix raster effects. So in my list 2 and 3 are fixed but not 1.
User avatar
rainwarrior
Posts: 8732
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by rainwarrior »

Bregalad wrote:I find it noticeable when music plays at the wrong pitch. Other people might not care but I do.
Due to having absolute pitch I notice immediately that the pitch is different if I've played the other (or even without absolute pitch it's obvious if you play them back to back in an emualtor)... but the question I have is what makes it "wrong" to you? Simply the fact that it's not the same pitch as the NTSC version?

Like, to me if I compose something and listen to it in two transpositions like this, both sound good to me. There's nothing about one sound that becomes inferior to the other for me, and I'm wondering if this is not the case for you? I really do feel that a small transposition like this is absolutely meaningless without some external reference.

(And by comparison, there is something inferior to me about it if you change the pitch tables to compensate and introduce clicks etc. that weren't in the NTSC version. That's why I think it's better to leave it as-is unless there is some other reference that invalidates it like tuned DPCM samples.)


Changing the tempo I understand as a very meaningful change. Same with changing the speed of the game. There are lots of changes that I do think are significant, but not the pitch change by itself.


Though I would say, in many cases when you have two alternatives for something... sometimes both are pretty decent. Like in my current game, I regularly play it in NTSC, PAL, Dendy, stretched, square PAR, NTSC filtered, 480i, etc. and most of these things the difference is obvious between and I could never simulate one with the other, but that's never my goal. My goal is for it to be good if played on any of these. Even the speed difference, I'm not actually sure if I consider the PAL or NTSC version is the superior speed for the game! It plays fine to me at both speeds, and I think there are acceptable ranges for everything.


I am reminded of the problem of localization, i.e. when you take a game from on language to another, the goal is never to give an exact translation, because it's impossible to do this-- there are always too many differences in culture. You only do exact translations in academic work, like when you're trying to explain a historical document. There the aesthetics don't matter, and you can try to explain a whole civilization in a footnote if you need to. With localizing the game, though, the precise meaning isn't what's important, the goal instead is to make something that is good in that language.


...and I mean I'm not defending bad PAL ports, or bad localizations... there's tons of that. Sometimes the 5/6 slowdown does make it a worse game. Sometimes the attempt to compensate for the 5/6 slowdown also makes it a worse game. Sometimes either is "fine" though-- in some cases the port is even improved just by having more time to fix stuff. There are plenty of things that are obvious unintentional errors, especially bugs, but there is also a whole lot of room for things being a little different but still good.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by Bregalad »

but the question I have is what makes it "wrong" to you? Simply the fact that it's not the same pitch as the NTSC version?
Indeed. It was intended to be played at some pitch, so it's good to reproduce this on PAL. Changing a pitch table is extremely straightforward, so there's no reason not to do it. Basically it's the simplest thing to "port" to PAL NES.
rainwarrior wrote: I am reminded of the problem of localization, i.e. when you take a game from on language to another, the goal is never to give an exact translation, because it's impossible to do this-- there are always too many differences in culture. You only do exact translations in academic work, like when you're trying to explain a historical document. There the aesthetics don't matter, and you can try to explain a whole civilization in a footnote if you need to. With localizing the game, though, the precise meaning isn't what's important, the goal instead is to make something that is good in that language.
Many older games are translations that are so abyssal they are basically random words without any meaning, this has nothing to do with the technical possibility of translating something 1:1 or not. Of course if the game is amazing it'll still be enjoyable despite making no sense text-wise - and in some cases such as "all your base..." the horrible translation is actually enjoyable. But that's completely off-topic.
(And by comparison, there is something inferior to me about it if you change the pitch tables to compensate and introduce clicks etc. that weren't in the NTSC version.
Clicks on vibrato is typically an NTSC-only thing - they happend arround A notes, on PAL that would fall between G and Ab, so usually clicks are avoided - how is removing clicks not a good things ? And besides, good NTSC NES games detune their music slightly on purpose to avoid this ;)

Another issue you forgot to mention is very-high pitched notes where the rounding to integer actually detunes the notes significantly. Changing the pitch table will obviously affect this significantly, for the better or the worse.
User avatar
rainwarrior
Posts: 8732
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by rainwarrior »

Bregalad wrote:Clicks on vibrato is typically an NTSC-only thing - they happend arround A notes, on PAL that would fall between G and Ab, so usually clicks are avoided - how is removing clicks not a good things ? And besides, good NTSC NES games detune their music slightly on purpose to avoid this ;)

Another issue you forgot to mention is very-high pitched notes where the rounding to integer actually detunes the notes significantly. Changing the pitch table will obviously affect this significantly, for the better or the worse.
I don't have a ready survey of vibrato clicks on PAL, but I've seen many Famitracker tracks that are "click free" in NTSC (because they were composed knowing not to do vibrato on A-3 / A-4) and suddenly have new clicks when you put it in PAL mode (equivalent to just replacing pitch table and compensating tempo). It is true that the break point is a little further from the A-440 pitches on PAL, so it could be less likely to happen but only for the case where the vibrato is not very strong. I've done several multi-region music compilation carts at this point, and new clicks in PAL was a significant problem on all of them. So... my experience directly differs on the idea that this is "an NTSC-only thing".


I have seen some people in Famitracker put a temporary pitch detune on an A-3 so they can use wider vibrato on it, but that also has the minor negative effect of putting that note out of tune (and requiring more data, and an engine that supports the detune effect-- not famitone). You could also shift the whole pitch table away from A-440 so it's further away from the base pitch, but again only addresses weak vibrato, and it's not something Famitracker can do. ...or you can transpose your whole track up or down a semitone or two just so the note you want to put vibrato on isn't A anymore-- which is also in the same category of why I think it's acceptable to just use the lowered pitch for PAL: just straight up transposing a whole song up or down after composing it is something that is done ALL THE TIME by professional and amateur composers alike. People even frequently requested a feature for Famitracker to automate that.

As for stuff that actual commercial games do... when I made the NSF import tool, as a consequence I ended up having a really good look at the tuning of a hundred or so games that I tried it with. Nearly every single one was tuned to A-440 (though sometimes the rounding method varied), and the only counter-example I can remember offhand is Drac's Night Out (which has very strange tuning).

So, no I wouldn't say that "good" NTSC games detuned it at all, I don't think any commercial game did this, not for avoiding clicks. Many games had detune effects just for a "chorus" sound (e.g. Startropics is full of this) but that has nothing to do with avoiding vibrato click.


Yes, the difference in precision at high pitches is also a problem, or really the difference in precision at all pitches, but most prominently at high pitches. By keeping the pitch table the same all the same interval relationships are maintained exactly. Replacing the pitch table changes them all. For example, if you use a pitch envelope that's supposed to bend from one note to another... if you replace that pitch table it will be badly out of tune for PAL! You would have to replace the envelope too! It also affects the perceived strength of vibrato as well, and a number of other minor things... I mentioned the clicks as an example because it's well known, but there's like a hundred little issues here and I was not trying to be exhaustive.

I forget if I mentioned before, but the other good reason not to change the pitch tables if you don't need to: you can make a multi-region cart without having 2 copies of the pitch table.


On a side note, what about PAR? Tepples has a theory that Dr. Mario's magnifying glass title screen is supposed to be a perfect circle at the standard NTSC PAR. Does failing to redraw this for the PAL version make it inferior?

Since PAL has a different colour gamut, should PAL versions also adjust their palettes to match the artists original intentions?

Bregalad wrote:Indeed. It was intended to be played at some pitch, so it's good to reproduce this on PAL.
...
rainwarrior wrote:With localizing the game, though, the precise meaning isn't what's important, the goal instead is to make something that is good in that language.
Many older games are translations that are so abyssal they are basically random words without any meaning, this has nothing to do with the technical possibility of translating something 1:1 or not.
I wasn't making a comparison against bad translations, though. I was talking about good localizations, which are never a precisely accurate translation of the original: there are always things that work better if you let them be adapted. The comparison is that your reason that the unadjusted PAL pitch makes it inferior seems to be entirely just that it's not the same as the original version, and my argument is that this is not by itself enough reason to call it wrong.

It's also similar to what I was mentioning about pixel aspect ratio. Technically it's all at the "wrong" aspect if your goal is to match the NTSC version as closely as it could, but in reality anything you do to redraw the art will probably have a detrimental effect. I feel more or less the same way about adjusting the pitch tables-- it changes a lot of relationships in the music, which maybe are more subtle than the PAR case but it's still a random jittering of all the intervals in the piece, which I think are best left intact. Transposition instead of degradation. The pitches are being jittered the same way pixels would if you redrew them with another PAR, just a little less obviously.
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by FrankenGraphics »

rainwarrior wrote:I have seen some people in Famitracker put a temporary pitch detune on an A-3 so they can use wider vibrato on it, but that also has the minor negative effect of putting that note out of tune (and requiring more data, and an engine that supports the detune effect-- not famitone). You could also shift the whole pitch table away from A-440 so it's further away from the base pitch, but again only addresses weak vibrato, and it's not something Famitracker can do. ...or you can transpose your whole track up or down a semitone or two just so the note you want to put vibrato on isn't A anymore-- which is also in the same category of why I think it's acceptable to just use the lowered pitch for PAL: just straight up transposing a whole song up or down after composing it is something that is done ALL THE TIME by professional and amateur composers alike. People even frequently requested a feature for Famitracker to automate that.
Funny you mention this.

Not having access to the detune effect, i've used detuned envelopes to avoid the troublesome flutter in NTSC mode. Sometimes they remain useful outside that context which justifies it, but (as you might remember from a recent discussion), i'm basically overusing instruments, and there's a cap on 3F instruments in famitracker no matter how well they reuse envelopes, so this isn't really viable anymore. I was thinking of hex editing famitracker to "correct" the pitch table in some direction by a few cents (as to achieve "What you hear is what you get" if using a different table outside FT).

Just transposing the songs that use the troublesome notes would be easier, but i try to use a variety of keys as to impose a sense of difference between areas. I'm probably not going to end up using all 12 keys, but having the freedom to move around freely without being afraid of touching the trouble notes is somewhat valuable to me.
Since PAL has a different colour gamut, should PAL versions also adjust their palettes to match the artists original intentions?
Should is a strong word in this context - but just sometimes maybe that could be beneficial. But palette data changes are probably going to differ more than gamut differences, so it'd be if the new colour was somehow closer to what the artist had in mind or would find favourable than was made available in the NTSC version.
lidnariq wrote:These NESes and Famicoms are 30-35 years old now, and the resistors could have drifted several more percent.
Some extrapolated points from this discussion and that paper:
-Carbon resistors are thought to be somewhat like metal film resistors except the manufacture process makes them vary a lot more, so they also have to sample and sort them in classes of tolerances up to 10%.
-Worst case scenario, metal film resistors can drift a lot
-Worst case scenario, under the responsibility outside the component factory, mostly means using the wrong component in wrong application*, and soldering for too long.
-*Basically, use a resistor that is able to dissipate heat/prevent buildup at the rated wattage required. Larger sized resistors = better heat dissipation.
-The single most important factor is heat. Most of all, drift/degradation seems to occur at high internal temperatures. 55 degrees could be a reasonable internal temperature during operation, at which degradation happens over time. Could also be a lot hotter, or colder. The paper is measuring and predicting based on 55 degrees, and 125 degrees.
-Storage temperature would be around 12-30 degrees of ambient heat, depending on environment and storage type?
-The scale of degradation is ppm (parts per millon) over 1000h (usually commercial) to 5000h (usually medical/military). ppms measure anywhere between 20 and thousands depending on alloy, class, hours, and temperature (55 or 125).

It seems to me resistors wouldn't degrade by much at all in normal ambient temperatures. On the other hand, storage time is constantly ticking.
Resistors seem to mostly drift with use/when warmed up, especially when excessively heated. In other words: leaving your nintendo on overnight repeatedly might be mildly bad for your resistors.

If those resistors were hand soldered, there might be deviancy if someone working at the assembly line was inconsistent in timing when soldering, as those levels of heat are well above the point of excess.

While i personally would measure and match resistors in my synth projects if it had some significant bearing towards timing/pitch, filtering or volume (and sometimes counteract temporary in-use drift with thermally coupled thermistors), i doubt the plant making NESes and famicoms had a process for sorting duds out/matching deviances. Likely, they just went with a tolerance class that was acceptable for the task (likely 5% or 10%).

Edit: corrected some typos
Last edited by FrankenGraphics on Mon Dec 04, 2017 7:46 am, edited 1 time in total.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by Bregalad »

rainwarrior wrote: I have seen some people in Famitracker put a temporary pitch detune on an A-3 so they can use wider vibrato on it, but that also has the minor negative effect of putting that note out of tune
I don't see any benefit in detuning only the problematic A notes, it makes much more sense to detune the whole game to me. I'd thought that practice was common but apparently it's not - so I'm guilty of having assumed that. Personally I didn't hesitate to detune my whole sound engine a little to avoid that problem.
just straight up transposing a whole song up or down after composing it is something that is done ALL THE TIME by professional and amateur composers alike.
I had no idea really - I'm a very amateur composeer but I think it's natural to leave song in the keys they came to me. A music tune always sounds quite different when transposed.
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Adjusting animations between NTSC and PAL/Dendy...

Post by FrankenGraphics »

bregalad wrote: I think it's natural to leave song in the keys they came to me.
In performed music, you need to transpose a piece to fit the optimal range of instruments used. The instruments themselves will have different timbre depending on key, and they might be easier or harder to perform depending on key.

For a singer, this is especially true as timbre, ease of performance and delivery changes a lot depending on key.

In a program of musical pieces, performed or recorded, you may want to transpose because you want to achieve a dramatic (or nondramatic) effect between two pieces played in a consecutive fashion without much of a pause.

I think transpositions up to a second are fairly "transparent" if you allow time to pass, but anything beyond that will usually affect the overall impression (ie. the composition feels "dark" or "bright", some countours start to feel accented because of the instruments' musical properties). Also, an open string will sound just slightly different to one held by a finger.

On the NES, i think the most obvious thing to notice is the tri channel with all it quirks. It can sound quite different even after a somewhat modest transposition.

Those with absolute pitch may experience the transposition of a whole song as a bit "painful" because they've gotten used to hearing it in a certain key, and may need time to digest the change.
Or worse, imagine having absolute pitch and be singing in the choir - those, especially amateur choirs, are very prone to slowly and steplessly falling or rising in pitch without the aid of instruments.
Post Reply