2014年07月27日の日記です



NTSC PAL SECAM  2014-07-27 12:18:23  コンピュータ

サターンのCPU、という記事の中で、CPU の動作クロックが、NTSC のビデオ信号から決められた、と書きました。


NTSC は、日本のアナログテレビで使われていた方式。

簡単に書けば、1秒間に60枚の絵で動きを表現し、1枚の絵は 720x480 ドット程度で表現されます。

この信号を作るための基本的な周波数(搬送波と言います)が、3.58MHz (正確には 3.579545MHz) です。


テレビに出力するにはこの周波数を作り出す回路は必要。

CPU もこの周波数で動くようにすれば、回路を減らしてコストを下げられます。


だから、MSX は 4MHz で動けるはずの Z80 を、わざわざ 3.58MHz に速度を落として駆動します。

スーパーファミコンも同じ 3.58MHz で、ファミコンは半分の 1.79MHz。

記事に書いたサターンでは、8倍の 28.6MHz でした。


ちょうど半分、とか、8倍、というのはデジタル回路で計算しやすいので、CPU を、 NTSC 搬送波の単純な比率で作れるクロックで駆動できれば、クロックを作り出す発振回路や、別々のクロックの部分をつなぐための回路を節約できます。




…という話を書いたら、「PAL では影響を受けるの?」という質問が来ました。

なるほど。僕も詳しく調べたことはありませんでした。


PAL はヨーロッパで普及したアナログカラーテレビの規格です。

NTSC よりも画素が細かく、1枚の絵が 720x576ドット程度で表現されます。

その代り、1秒間の枚数は 50枚に減ります。

(ややこしくなるので詳細は書きませんが、PAL には NTSC とほぼ同じ解像度・秒間枚数の方式もあります。

 以下は、上記に書いたものを PALとして話を進めます)


計算するとわかるけど、1秒間に表示されるドット数は同じです。

これは、電波で伝送できる情報の量が、当時の技術的限界から決まってしまっていたから。


動きを綺麗に見せようとしたのが NTSC で、画像を綺麗に見せようとしたのが PAL 、というわけです。

(もっとも、それを意図したのかどうかは不明。画面枚数は単に交流周波数の影響を受けた気がする)


そして、PAL の周波数は 4.43MHz (正確には 4.433619MHz) 。


…あれ、僕が思ってたのと違う (^^; NTSC と結構違いますね。

PAL版でもCPU速度はたいして変わらない、と聞いたことがあったので、NTSCと周波数変わらないのかと思ってた。


ちなみに、SECAM は、PAL をさらに改良した方式で、色が綺麗に出るようです。

信号の作り方は違うけど、解像度や秒間枚数、搬送波の周波数は同じ。




さて、「CPU 速度はほぼ同じ」と聞いていたのはどういうことだろう。

気になって調べてみました。


NTSCPAL
ファミコン1.791.66
Master System3.583.55
スーパーファミコン3.583.55
メガドライブ7.677.61
コモドール641.020.985
AMIGA7.167.09
MSX3.583.58
サターン28.628.6

単位は MHz。有効数字3桁に丸めています。


ファミコンは、NTSC は搬送波の周波数の半分、PAL は 3/8。

Master System ・スーパーファミコンは、NTSC はそのままで、PAL は 4/5。


周波数を整数で割って遅くするのは、「分周回路」と呼ばれ、よく使われるテクニックです。

もっとも、僕はハード工作は詳しくないので、具体的な回路は良く知らない。


3/8 にするなら、あらかじめクロックを3倍速にしておいて、8で割ればいいんじゃないかな。

8で割るのは2進カウンタで、3bit 目を取り出せばよいだけ。


この場合、ビデオ回路側には3で割ったクロックを供給する必要があるけど、3で割るのはちょっと厄介。

もっとも、2進カウンタは基本なので、8 で割る回路と一部共用できると思う。


4/5 も同じ考え方で、4倍速クロックを、4と5で割る必要がある。こちらの場合も、4は簡単で5は少し厄介。

搬送波か、CPUクロックかの、どちらかは簡単になる分数を選んでいるのが、なかなか巧妙。



しかし、メガドライブは、謎です。

68000 は NTSC の 15/7 、 PAL は…91/53? で駆動されているけど、Z80 部分は Master System 互換。

改造して 68000 だけクロックアップ、っていうのが流行したようなので、68000 のクロックはビデオ信号とは無関係なのかな?

(しかし、それだとなぜ NTSC と PAL で速度が違うのかわからない。ビデオ信号回路とのタイミング合わせが必要で微調整されている?)




ところで、「PAL のゲーム」といえば AMIGA です。いや、個人的にそう思っているだけで、おそらく一般性は無いのですが。

AMIGA はアメリカで作られたマシンですが、ヨーロッパで非常に良く売れました。

そのため、PAL で作られたソフトが多く、NTSC で表示すると縦方向解像度の違いから、画面の下の方が表示されなかったりしたそうなのですね。

最初から「テレビに接続する」ことを前提に考えられたマシンで、日本ではウゴウゴルーガの製作に使われていた、という話が有名です。


AMIGA はコモドール社のパソコンなので、8bit 時代の大ヒット機、コモドール 64 も調べたら、やっぱ PAL 版がありました。


コモドール 64 のクロックは、NTSC の 2/7 と PAL の 2/9 なのだけど、なんでこんな厄介そうな数字で割っているだろう。

AMIGA は、 NTSC は 2倍、 PAL は 8/5 になっています。まぁ、こちらは素直な感じ。



MSX とサターンは謎。NTSC 信号を基準にした速度ですが、PAL 版でも同じだったことになってます。


MSX はパソコンだったので、値段が高くなっても速度を重視したのかもしれません。

(それくらいなら、Z80 を 4MHz で駆動すればよかったのに…)


セガサターンは、もしかしたら、本当は PAL で変わっているのだけど、ヨーロッパではあまり売れなかったので資料がないだけかも。




さて、総じて PAL の方が速度が遅かった、という結果になるのですが、実はこんなものは誤差範囲。

ゲームを作るうえでは、CPU の速度が多少変わったことよりも、1秒間の画面枚数が違うことや、解像度が違うことの方が重要でした。


ファミコンでは、PAL 版で画面上の縦の解像度が 240ラインになっています。

NTSC だと、240ラインを出力するのですが、上下は画面外に隠れてしまい、だいたい224ラインしか見えませんでした。

これが全部見える、という意味です。


また、1秒間の画面枚数が 60枚から 50枚に落ちます。

ゲームは画面書き換えを基準に動いていますから、全体にスローモーションになります。

(逆に言えば、全体がスローモーションになるからこそ、CPU 速度が多少落ちても問題はありません)


MSX や SG-1000 で使われたビデオチップ、TMS9918 は、縦方向解像度が 192 ラインでした。

これは、VRAM の構造上変えられない数字。

MSX は、PAL 版でも縦 192 だったようです。


しかし、Master System では、9918上位互換の独自チップを使っているため、縦方向に NTSC では 224、PAL では 240まで出せたようです。つまり、ファミコンと同等能力を持っています。

(MSX2 は VRAM 構造が変わり、212 まで出るようになった。これは NTSC / PAL とも同じだったようだ)



大抵、ゲーム機はリージョン管理というものがされていて、別の国のゲームは動きません。

だから、PAL 版を NTSC 本体で遊んだり、その逆はできない。


でも、先に書いた AMIGA はパソコンで、特にリージョン管理もありませんでした。

だから、NTSC 本体で PAL のソフトを遊ぶと一部が画面外で見えなかったり、PAL 本体で NTSC ゲームを遊ぶと画面外にゴミが出たりしました。


もっとも、その程度の問題は些細な事、と、画面の速度管理が高度に発達したのも AMIGA の頃から。

画面描き変え枚数に関係なくゲームが楽しめるように、内部的に細かな計算を駆使して、ゲーム速度が変わらない工夫などがあったようです。

(現在の PC でも、CPUやビデオカードの性能に関係なく遊べるように時間管理するのは基本テクニックになっています。)




さて、僕はその昔 ST-V (セガサターン)のゲームを作る会社でゲームを作っていたことがあります。

僕は経験していないのですが、別のラインで作ったゲームが好評で、サターン版を作ることになりました。


普通だと、プログラム一式を家庭用が得意な外注に出して、作ってもらいます。

でも、その時は外注が忙しく、自分たちでやることになった。


移植と言っても基本的に同じハードですから、すぐに対応できました。

でも、「ヨーロッパでも売るから PAL 版お願い」という話になって、おかしなことになった。


元々 PAL 版なんて考えてなかったんです。

業務用だと筐体ごと売っているので、ヨーロッパでも NTSC 周波数のモニタ込みで販売していて、言語などだけ変えればそのまま出せるのです。


画面解像度が高く、その分縦に圧縮して表示されてしまうのは…サターンには拡大・縮小機能があったので、適当な倍率をかけて表示することで対応しました。

224 ドットを 240ドットに引き延ばすので…15:14 ですね。14ラインごとに、同じラインを重複して描くことになる。

画面は非常に汚いのだけど「手間を考えるとやむなし」との判断。



それより大変なのは、ゲーム速度が変わってしまうことでした。


全体にスローモーションがかかったような感じ。NTSC の速度で「気持ちよく感じる」ように調整した動きは、全部間延びして気持ちよくありません。


作成したチームは、なんとか簡単に対応できないかと、こちらもグラフィックのように「数フレームごとに表示を飛ばす」とか試していたのだけど、結局あきらめて「スローモーション」のまま完成としました。


ただし、ゲーム上表示されていた「タイマー」だけは、1秒が1秒でなくなると気持ち悪いので、調整されて1秒ごとにカウントダウンします。

残り時間も調整したようですが、表示が2桁しかなかったため、面によっては上限の 99 で…


動きがスローモーションなのに制限時間は短かったりして、非常に厳しいゲームになったようです。

(もっとも、海外では日本よりも厳しいゲーム設定が好まれるため、「そのまま出してしまえ」と判断)


AMIGA のゲームのように最初から PAL 対応を考えていれば良いのですが、NTSC 用に調整したゲームを急に PAL 対応、というのは難しいのです。


#ヨーロッパの人は一般家庭へのテレビゲームの普及が遅かったのだが、これも原因の一つだったかもしれない。



同じテーマの日記(最近の一覧)

コンピュータ

関連ページ

Z80 vs 6502

サターンのCPU

高柳健次郎の誕生日(1899)【日記 15/01/20】

ドットリ君【日記 15/03/16】

6502 は遅かったのか?【日記 14/07/28】

別年同日の日記

02年 誕生日!

11年 節電その後

12年 続・理系と工学系


名前 内容

あきよし】 情報ありがとうございます。…が、どの機種のことでしょう? 垂直帰線割り込みの意味であれば記事に書いた通りですが… (2014-08-08 05:24:41)

【とおり】 PALとNTSCについては単純に割り込み周期の違いで速度差がでてしまうのです.同期をとってないなら速度は同じですね. (2014-08-07 23:46:11)


戻る
トップページへ

-- share --

4000

-- follow --




- Reverse Link -