WindowsCE SDK for Dreamcast

"Dragon" のアーキテクチャを推測

1999年2月5日

← 戻る  

■ Dragon とは?

SegaRally2 すでに何度か触れているように、Dragon は、WindowsCE の Dreamcast 向けパッケージである。WindowsCE Handheld PC Version というのは、ハンドヘルドPC 向けの WindowsCE パッケージである、というように、WindowsCE は、対象とするハードウエアによって、自由に OS カーネルや、付属の DLL の構成を選択することができる。このあたりの自由度の高さが、WindowsCE の Windows95/98/NT に対する優位性につながっている。

 簡単に言えば、「Dragon = WindowsCE for Dreamcast」と思っても、ユーザーである我々には大差はないだろう。

 今回は、Dragon のアーキテクチャについて、現時点で手に入る情報を元に語ってみたい。


■ Dragon アーキテクチャ

 例えば車なら、ホンダにはホンダの車の作り方や哲学というものがある。OS も同じで、マイクロソフトにはマイクロソフトのやり方や、作り方というものがある。

 それが、一般的にいうところの、Windows アーキテクチャということになるのだが、WindowsCE でも、考え方はほとんど同じである。となると、Dreamcast 用の WindowsCE でもほとんど構成は同じと考えられる。

 という仮定の元に、ブロック図を描いてみた。上が実際のゲームコード、下が Dreamcast のハードウエアに直接関係ある部分である。

 Dragon

 ざっとした見方を説明すると、まず、Dreamcast のボードというハードウエアの上に、WindowsCE カーネル、GD-ROM のファイルにアクセスするためのファイルシステム、そして、サウンドやグラフィックや入力部分をコントロールするための Device Driver の3つの低レイヤーのプログラムが載っている。それより、上にあるプログラムは直接ハードウエアをコントロールすることはなく、すべて、こういったカーネルや Device Driver と呼ばれるプログラムを呼び出すことで、音を鳴らしたり、GD-ROM のファイルを読み込んだりするのである。

 もちろん、Dreamcast でも、これまでのスーパーファミコンなどのように、直接プログラムがハードウエアをコントロールすることも可能である。ハードウエアの限界性能を引き出すには、この方法が一番なのだが、最近の高性能なハードウエアで、ハードの直接コントロールなどという手法を用いると、プログラマーがハードウエアを学習するだけで1年や2年が軽く経ってしまう。

 昔は、直接コントロールするコードを、アセンブラと呼ばれるほとんど判読不能な方法で、天才と呼ばれたプログラマーたちがゲームを作っていた。今でも、そういう面はあるのだが、ゲームの規模も大きくなってきて、1からハードウエアの勉強はしてられない。天才と呼ばれる人々が何人も、何年もかかって1本のゲームソフトを作り出す時代になったのだ。 しかも、そういった細かいハードウエアの制御方法などを知らなくても、極端な話、ハードの限界性能を引き出さなくても、セガ・ラリー2 のようなすごいゲームが作れてしまうほど、Dreamcast というのはポテンシャルのあるマシンなのだ。

 さて、その上に、Direct Draw, Direct Sound, Direct Input, Direct Play と呼ばれる 「Direct」のつくコンポーネントがあることが分かる。これらは、マイクロソフトの 「DirectX」と呼ばれる技術で、ゲームプログラムからみると、ハードウエアの違いを吸収してくれる、また、ハードウエアの側から見ると、簡単にハードウエアの限界性能を引き出してくれる素晴らしいコンポーネントである。

 しかも、たとえば、この Direct Draw などは、デスクトップの Windows98 などと、かなりの割合で互換性があるために、Windows 用で、Direct X を利用して作ったゲームは、Dreamcast には移植しやすいし、その逆もまた真なのである。これまでは、パソコンで遊ぶしかなかった緻密な「信長の野望」のようなシミュレーションゲームが、Dreamcast でも遊べるようになるというのは、このあたりの技術が支えている、マジックなのである。

■ それぞれのコンポーネントの役割と特徴

 さて、上記の説明に出てこなかった部分について、詳細を掲載しておこう。

項目 内容
カーネルモジュール WindowsCE Kernel

ゲームの作成に必要な部分だけを切り出して、500KB 以下といわれている、非常に小さなカーネル。

ファイルシステム GD-ROM と ISO9660 レベル2 をサポートする。

また、Windows NT Kernel 譲りのメモリマップド・ファイルアクセスと、非同期 I/O をサポートする。非同期 I/O は、同時に複数のファイルの読み取りを、最大限のパフォーマンスで提供できる優れた I/O 制御の仕組みである。

また、ビジュアルメモリと呼ばれる NVRAM へのアクセスもこのコンポーネントの役割である。NVRAM へのアクセスは、通常のフロッピーディスクのように扱われる。

グラフィック 【含まれるコンポーネント】
Direct Draw, DirectShow, Direct3D IM mode, UserGDI
DirectX5 customized for Dreamcast

Direct Draw

平面描画用のコンポーネント。ただし、Execution Mode という全画面描画モードしか利用できない。ウインドウの描画や、各画面のオーバーラップなどはサポートしていない。

Direct3D IM mode

ポリゴン・セットを与えることでそれを高速描画するためのコンポーネント
画像の回転や視点変更のトランスフォーメーション、光源設定を含むライティング、実際のポリゴン計算と描画を行うレンダリングの要素を含んでいる。パソコン用の Direct3D RM (Retain Mode) - 3D グラフィックデータを与えることで、簡単に 3D グラフィックスを扱える高機能なコンポーネントは、高速性に欠けるため、Dreamcast 用には移植されておらず、Dragon には、含まれていない。

DirectShow

MPEG などの映像再生機能を持っている。

UserGDI

デスクトップの Windows では、ウインドウ描画やマウスなどを担当する部分だが、Dreamcast では、ほとんど機能がない。Internet Explorer などのブラウザを動かすのに必須な部分があるという感じ。

全体的な特徴としては、CPU SH4, グラフィックアクセラレーターチップ PowerVR2 用にチューニングされていることが挙げられる。

コントローラー Direct Input

日本語入力、キーボード・ソフトウエアキーボードサポート含む (?)
ただし、それぞれの GUI 部分 (見えるグラフィックの部分) は各ゲームでサポートする必要がある。

サウンド Direct Sound

デジタルサウンドの入出力を行うコンポーネント。

通信ライブラリ Direct Play、Winsock、RAS, PPP, TCP/UDP
通信対戦、チャット

TCP/IP と UDP をサポートした通信を行う Winsock ライブラリと、電話をかけてダイヤルアップ接続するための機能のみを厳選した RAS API (Remote Access API) が用意されている。いずれも、PPP 経由で通信を行う。

今後重要になる対戦ゲームに活躍するコンポーネントだ。電子メールや、ブラウザなどもこのコンポーネントがないと動かない。非常に重要なモジュールだ。

C runtime 基本的に従来のマシンと比較すると桁違いに高性能な Dreamcast では、アセンブラ言語ではなく、C言語を使ったゲームソフト開発も可能だ。ちなみに、Play Station に採用されている MIPS 系のチップは、33MHz、これに対して、Dreamcast の SH-4 は、200MHz である。この10倍近い違いが、開発者を助ける反面、できることがあまりにも多くて、開発者にとってはうれしい悲鳴だ。
開発環境 Windows NT4.0 SP3
Visual C++ for Dreamcast (Dragon SDK)

■ 感想・コメントは、Windows CE FAN の掲示板 (BBS) 

へお願いします。


関連リンク

■ 更新状況

Written by けいたん

(C)1998 Windows CE FAN 

GO HOME