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 »

Well, by this logic, if a homebrewer made a new game and decided not to adjust the speed, wouldn't that become your authentic experience as well?
Yeah, basically, but it's also a bit more complicated. I've enjoyed homebrew on my PAL nes, and they have served as great entertainment on gettogethers. But unlike when i was a child, there's now the awareness that it plays differently on different systems, so part of that experience is wondering how it'd play on the NTSC. The difference in game speeds might also make a difference for streamed gaming and the audiences' expectancies, in arranged charity speedruns (not that the most important thing is who wins, but anyway) if one is used to PAL speed and the other to NTSC.


Some games may suffer from different timing windows worse than others, like something requiring consecutive timed button presses when swinging a golf club, or if the characters' animation hints at something you're supposed to tap, press or hold in a rythm.

Thinking about it, there's a "secret" to always-successful bomb jumps in metroid which is syncing the taps to the music. I wonder if that's exact or good enough between both NTSC and PAL.

I think making major game play challenges comparable (if not 1:1), like game speed, regardless of system is a worthy cause for those who want to pursue it, even if i think it's mostly a bonus and in no way essential.
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

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

Post by rainwarrior »

Bregalad wrote:[*]Music pitch adjusted
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.
User avatar
DRW
Posts: 2225
Joined: Sat Sep 07, 2013 2:59 pm

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

Post by DRW »

tepples wrote:More countries used PAL 50 Hz or SECAM than NTSC or PAL-M.
It's not about the countries, it's about the market share of the NES and the general perception.

As a pop culture icon, the NES is mostly perceived in its American form:

When you hear the "Super Mario Bros." theme, you never hear the screwed-up PAL version.
Everybody knows "Contra", but nobody really gives a shit about "Probotector".
When they released "Balloon Fight" on the virtual console, people complained that European gamers got the 50 Hz version.
Also, the speed of the NES matches the 60 Hz that is used in arcades.

Same with Nintendo itself:

Nintendo of Japan is the mother company.

Nintendo of America was lead by the Japanese boss' son-in-law and it's influential for many things that later became popular.
For one, "Donkey Kong" was only programmed because the American branch needed a fresh new game.
And they are the ones who came up with the name Mario.

Now, who was Nintendo of Europe? A bunch of Bavarians who liked to include stupid in-jokes or sexual allusions into the German translations of games.

Also, Nintendo's arcade conversions can only be fully enjoyed on an NTSC machine because American and European arcade games run on 60 Hz.


That's why I would never program a game natively for PAL and then adjust it for NTSC with some half-assed workarounds. The main game is always the NTSC version.

It would be a different story when it comes to C64 games.
Hojo_Norem wrote:The thing is, GradualGames wants to make his game auto adjust for different systems.

The first few posts are helpful comments on how this could be achieved...

... then one comes along saying, in a nutshell "Don't bother. Code for NTSC. PAL is crap."
You're free to suggest more ways to convert a game from NTSC to PAL.

The only other way I know:

Make the playfield five times as big in memory. (I.e. one on-screen pixel is five virtual pixels in memory.)

Calculate all movement based on this larger playfield.

I.e. if a character in a normal game moves two on-screen pixels per frame, let him move 10 virtual pixels in NTSC and 12 virtual pixels in PAL per frame.

Same with the animations:
Pretend that there are five times as many animation frames. If your characater has three running animation images, make an array of 15 animations and distribute the three animation frames evenly in this array.
Use the array in a circular way (i.e. if you're at entry 15, go back to entry 1) to determine the next animation: On NTSC, increment the index of the array by 5 everytime a change is necessary. On PAL by 6.

Do your game logic calculations, like collision checks, normally, once per frame, based on the current character positions after the calculations.

Afterwards, convert all character positions back to actual screen coordinates for output.

I have no idea how playing this would feel, though.
tokumaru wrote:Ironically enough, it was the guy who usually complains when we don't stick to answering exactly what he asks in his own threads! :lol:
That's not quite comparable. If I ask a question about suggestions like "Game with a human female main character that is recognizable as a female" and people suggest "Ms. Pac-Man", "Bird Week" or "Metroid", then I'm of course pissed.

But if I'm asking a technical question about some programming issue that I want to do and people say that my line of thought is too complicated and that actual games did a much easier approach than what I have in mind, I often agreed with them and took the easier route.

So, the easier route for this specific problem is: We have 2017. People have access to NTSC versions of the consoles and games. Everybody who strives for authenticity will get a 60 Hz console anyway. People who still use PAL are the ones who accept that games run slower. So, why bother with them? They don't care that "Super Mario Bros." doesnt play at full speed, so they won't care whether your game plays at full speed. Adjusting a game to play exactly alike on both consoles is investing time and energy into a niche market of a niche market.
Last edited by DRW on Sat Dec 02, 2017 5:10 pm, edited 1 time in total.
My game "City Trouble":
Gameplay video: https://youtu.be/Eee0yurkIW4
Download (ROM, manual, artworks): http://www.denny-r-walter.de/city.html
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

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

Post by tepples »

Or to put it another way:

DRW is open to "describe the goal" analysis aimed at rooting out XY problems when the question is technical, but not when it involves what the d20 System's Open Game License refers to as "product identity": setting, characters, and the like. Do I understand you correctly?
User avatar
DRW
Posts: 2225
Joined: Sat Sep 07, 2013 2:59 pm

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

Post by DRW »

tepples wrote:Do I understand you correctly?
Basically yes.

When I program a game, there's a lot I can learn from more experienced developers, so sometimes it's necessary to stop people from overambition.

But when I ask about stuff like specific game characteristics for a game that I want to buy, this has nothing to do with learning or experience.
If I want a game with a woman, then I want a game with a woman. People don't need to tell me: "I guess you're probably just looking for a good platformer. How about "Mega Man III"?"
No, it's not about a platformer. Don't tell me what game I'm looking for. I know what I want better than anybody else.
My game "City Trouble":
Gameplay video: https://youtu.be/Eee0yurkIW4
Download (ROM, manual, artworks): http://www.denny-r-walter.de/city.html
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 music will have exactly the same meaning at ~15/16 pitch.
I thought the cycle reset noise during a vibrato occured consistently one semitone above on PAL compared to NTSC.

On a more elusive and maybe less important note; I don't think that the scale of the APU is equal-tempered (if you can call it a temperament since it would not really be intentional). Wouldn't there be an ever so slight difference impacting our perception and emotional feedback? Or is the non-equal temperament shifted proportionately, too? I tried to google and look on the wiki after APU notes in cents but couldn't find it.

Also, i might fool myself but i could sometimes swear some harmonies change their emotional value more than subtly after i've transposed a piece. Part of it is probably timbre (had been easier to detect with sines), but anyway...
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

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

Post by tepples »

Though General MIDI provides theoretical pitch bend resolution down to 1/4096 of a semitone, the ear can't hear pitch differences smaller than 6 cents, where a cent is 1/100 of a semitone or 1/1200 of an octave. This means a period or frequency ratio of less than 2^(6/1200) = 1.00335 to 1 will sound like the same pitch. Thus to differ audibly, frequencies have to differ by more than 1 part in 1/(2^(6/1200) - 1) = 288.

The entries in a table generated using a typical equal temperament period table generator script differ by less than half a period unit from the true frequency. This means the approximations will be accurate enough for all periods greater than 144, as half a period value is less than 6 cents. These periods correspond to pitches below the G an octave and a half above middle C. And there's probably at least another octave or two of headroom before the rounding error starts to become noticeably objectionable to anyone without both perfect pitch and obsessive-compulsive personality disorder (OCPD).*

Besides, the whole tuning scale can be sharp or flat, as long as all notes are sharp or flat by the same amount. For example, if an NTSC NES tuning scale is used on a Dendy, all frequencies will be multiplied by 1.773448/1.789773 = 0.9909, making the Dendy log(1.773448/1.789773) / log(2) * -1200 = 16 cents flat. But most people have only relative pitch, such that people hear intervals, not absolute frequencies. If the whole scale is 16 cents flat across the board, only those with perfect pitch and OCPD will care. The same is true of the quick-and-dirty "add 1 semitone" compensation that Pently uses on a PAL NES. The PAL NES plays log(1.662607/1.789773) / log(2) * -1200 = 128 cents flat, and raising everything by a semitone compensates for only 100 of those cents, leaving the whole table 28 cents flat yet internally consistent.


* OCPD is formerly called anal retentiveness. Not to be confused with OCSO, the Orange County Sheriff's Office.
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

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

Post by rainwarrior »

FrankenGraphics wrote:
rainwarrior wrote:The music will have exactly the same meaning at ~15/16 pitch.
I thought the cycle reset noise during a vibrato occured consistently one semitone above on PAL compared to NTSC.
One semitone and ~15/16 are approximations of the same ratio here, which is just their respective clock speeds.

So, if you "do nothing" and just let your music play at the new pitch all the "clicks" will be at the same relative pitch they were in the original. Especially if you worked to avoid vibrato clicks, not adjusting the pitch will prevent you from producing new ones.

FrankenGraphics wrote:On a more elusive and maybe less important note; I don't think that the scale of the APU is equal-tempered... I tried to google and look on the wiki after APU notes in cents but couldn't find it.
The APU doesn't have a scale. You can use it to produce whatever tuning you like, but it doesn't have high precision accuracy. Almost all NES music uses tuning tables in its software that are some approximation of equal temperament, usually at A-440 on the NTSC version at least.

If you wanted a different temperament you can easily rewrite the tables in your player, but due to the low precision most of the usual differences between temperaments have a hard time coming through.

Here's a demonstration I made a while ago of just intonation on the NES, compared to equal temperament:
harmonic_series_compare.nsf
(5.93 KiB) Downloaded 145 times
It's hard to do just intonation well, though, since the frequency divider is kind of in direct opposition of making rational frequency relationships. Works better on an accumulator based chip (e.g. N163, C64).


The DPCM sample playback rates are an exception; they seem to have been intended for an A-440 equal temperament (on both NTSC and PAL) but they botched the loop length implementation, and even if they hadn't the precision is so low that it's not very well tuned anyway (the PAL even has two mistakes in it). Basically as it is the actual tuning is still up to you and how you use the samples.

FrankenGraphics wrote:Also, i might fool myself but i could sometimes swear some harmonies change their emotional value more than subtly after i've transposed a piece. Part of it is probably timbre (had been easier to detect with sines), but anyway...
If you play something, and then play the same thing transposed immediately, you are comparing the two. That is not the same as just hearing it at a lower pitch on its own. Absent of direct comparison, most humans lack the sense required to know it's even changed pitch. Within a moderate amount, especially just a semitone, it's effectively identical.

A lot of people associate keys with moods/emotions etc. but it's just sentimental rubbish for the most part. On some instruments there's mechanical differences between various keys, of course (e.g. how does that open G sound on a violin), and on non equal tempered tuning the intervals do sound different in various keys, but that's no longer just a simple transposition that's an actual change-- you could reverse-transpose that tuning and get the same effect at the original pitch.

Some people with the absolute pitch sense do have associations with various keys, but even here this is personal/subjective/sentimental. I actually do have absolute pitch, but as soon as I started experimenting with tunings "between" the 12 notes all associations like that melted away for me.
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: Especially if you worked to avoid vibrato clicks, not adjusting the pitch will prevent you from producing new ones.
That's really useful to know.

But I believe that would pose a problem for percussion. Kicks, toms and snare tones would come off as more soft compared to a NTSC rendition. If this new softer sounds unacceptable to the author, the alternatives seem to be 1)adjusting pitch (and flutter corrections) anyway, or 2)releasing 2 separate versions.
If you play something, and then play the same thing transposed immediately, you are comparing the two.
Yeah, i recognise this, but that's not really what i meant. I meant transposing and coming back to it a while later when the memory has cleared, something i do sometimes to not disorient myself. The difference i've thought i've heard might just have been pavlovian, though, unless the even temperament of famitrackers' driver has inaccuracies audible enough which now appears unlikely.
tepples wrote:Orange County Sheriff's Office
please tell me they were called a police department before someone took notice
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

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

Post by rainwarrior »

FrankenGraphics wrote:But I believe that would pose a problem for percussion. Kicks, toms and snare tones would come off as more soft compared to a NTSC rendition. If this new softer sounds unacceptable to the author, the alternatives seem to be 1)adjusting pitch (and flutter corrections) anyway, or 2)releasing 2 separate versions.
It's a 15/16 pitch reduction, that's all. How much more "soft" do you really think that makes something? This is insignificant, IMO. This is well below the threshold of the many other variations that are involved already. (Aside from NTSC vs PAL differences you've already got balance variations even in the same region, the huge difference in sound between RF out vs composite etc.)

If it was a bigger drop by 3/4 or something like that I'd say it's pretty important to adjust the pitch, but it's not. It's very slight, and because of that I think the advantages of leaving it as-is are pretty strong.

BTW the noise frequencies are all reverse-adjusted by roughly that 15/16 ratio on the PAL hardware, so if you use tuned noise in a way that's relative to the other channels' pitches it again becomes critical to adjust the pitch. (i.e. the noise frequencies are the "same" on NTSC or PAL, no pitch drop.) It's the same situation as DPCM on this, if you're relying on Noise or DPCM tuning you have no choice but to compensate. (I'll never forgive Nintendo for failing to implement PAL DPCM rates on Wii U's VC.)

There are a bunch of other little differences that will manifest whatever you do, e.g. do you tick your macros at a 6/5 rate to compensate the 50/60 Hz difference (and end up skipping frames) or do you leave them slower but more continuous? (Both of these work well in a lot of situations, especially if planned for.) Or as you're suggesting, build a whole new version for PAL. That's the most effort version, but in general I think the "easier" automated versions can be more than adequate, and also allows a multi-region ROM without changing any data.
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 »

How much more "soft" do you really think that makes something?
Not sure what i think (i'm probably obsessing over details), but for comparison a semitone lower makes a somewhat decisive difference to wether the tri support for the snare gets a smack that's carried through the mix or not. It's definitely not the end of it if this isn't compensated, but it does mean a change in the % noise / % tone balance of the composite drum sound than originally planned. Ultimately, this is dependent on the total composition and mix so it might not matter less in some other composition, and it's still a pretty small matter on its own anyway.
User avatar
Dwedit
Posts: 4922
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

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

Post by Dwedit »

DRW wrote: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.
Streemerz had the PAL version as the master, because the Flash game ran at 50FPS. It repeated every 5th frame to make it 60FPS.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
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 »

Dwedit wrote:Streemerz had the PAL version as the master, because the Flash game ran at 50FPS. It repeated every 5th frame to make it 60FPS.
TBH, I never noticed.
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

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

Post by rainwarrior »

FrankenGraphics wrote:Not sure what i think (i'm probably obsessing over details), but for comparison a semitone lower makes a somewhat decisive difference to wether the tri support for the snare gets a smack that's carried through the mix or not. It's definitely not the end of it if this isn't compensated, but it does mean a change in the % noise / % tone balance of the composite drum sound than originally planned. Ultimately, this is dependent on the total composition and mix so it might not matter less in some other composition, and it's still a pretty small matter on its own anyway.
Well, if you have constructed a very careful balance that's fragile enough that less than 10% difference in volume will make or break the mix, it is not robust enough for hardware deployment. The NES is just not accurate in that way. Only emulators are stable and precise enough for this, and it's a frequent reason you get people saying "only play this NSF in --- player, it doesn't sound good in any others."

Like, if I'm dealing with high fidelity recording/composition I love to make very subtle mixes, and I understand the goal there, just you can't actually rely on a real NES to do that, and that's before any regional differences or even thinking about clones. 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!) Similarly nobody really emulates the effect of RF output but it completely changes the sound too when it's used. As well, the nonlinear volume curves widely used in NES emulators aren't even entirely accurate, to my tests!

Same deal with tuning, like if you wanted to try an experiment in "well temperament" for some arrangement of Bach's preludes/fugues, the NES is the wrong place to do it because its pitch precision just won't cut muster. The relative tuning of the NES and emulators is accurate and stable, at least-- that much you can rely on, just its inputs don't have that much precision.

(Same as trying to use subtle hue relationships as a substitute for intensity on the visual side, or checkerboard dither...)

Actually Bach is a good example for how to write things that stand up well when your orchestration isn't precise. Orchestral separation, counterpoint and independence of lines, etc. his stuff has been played by every piece of chiptune hardware under the sun and it generally plays quite well. When orchestrating for the NES, listen to it with channels muted, and with a channel mixer with things turned up and down randomly, make sure it still works when things aren't as precise.
User avatar
DRW
Posts: 2225
Joined: Sat Sep 07, 2013 2:59 pm

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

Post by DRW »

Dwedit wrote:
DRW wrote: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.
Streemerz had the PAL version as the master, because the Flash game ran at 50FPS. It repeated every 5th frame to make it 60FPS.
I know that some games do this. (Especially games by Europeans.) I just don't understand how this can actually be an advice for a developer:
"Design the game around the inferior hardware that is used by fewer players and that mostly only gets used by players who don't care for accuracy or speed differences anyway. Then make some hackjob that results in choppy scrolling when the game gets played on the main hardware."
My game "City Trouble":
Gameplay video: https://youtu.be/Eee0yurkIW4
Download (ROM, manual, artworks): http://www.denny-r-walter.de/city.html
Post Reply