プログラミング
Windows CE Dreamcast Community Edition (wince-dc)
Windows CE Dreamcast Community Edition (wince-dc) (github.com)
要約
wince-dcは、セガDreamcastに搭載されていたWindows CE 2.12を、マルチタスク対応のウィンドウ表示デスクトップとして利用可能にするプロジェクトです。標準的なブータブルDreamcastディスクに、TCP/IPスタック(開発中)や各種ユーティリティ(エクスプローラー、タスクマネージャーなど)を統合しています。SH-4 PEコンパイラやCEイメージツールチェーンもリポジトリに含まれており、CMakeから直接ブータブルディスクイメージを生成できます。
全文翻訳
Windows CE Dreamcast Community Edition
本物の、ウィンドウ表示のWindows CEデスクトップ — Sega Dreamcast上で動作します。
Dreamcastは、リテールゲームが起動し、決して公開されなかった、削減されたWindows CE 2.12を搭載していました。Windows CE Dreamcast Community Editionは、そのディスク上の同じCEランタイムを取り込み、実際に使用できるものに変えます:マルチタスクウィンドウ表示デスクトップと、ブロードバンドアダプター経由の進行中のTCP/IPスタック — すべて標準のブータブルDreamcastディスクに焼き付けられています。完全に自己完結型です:SH-4 PEコンパイラと、CEイメージの全ツールチェーンがこのリポジトリにバンドルされています。1回のcmake呼び出しで、ソースからブータブルディスクが生成されます。
GD I。プラットフォームビルダーなし、SDKのインストールなし、CDキーなし。
スクリーンショット
デスクトップ
マルチタスク
アイコン、スタートメニュー、タスクバー、マウスカーソル
タスクマネージャー、ディスクをブラウズするエクスプローラー、ライブ時計 — 各アプリは独自のプロセスです
機能
DCWinデスクトップシェル — PVR2 / Direct3D上で合成されたウィンドウ表示、マルチタスクデスクトップ:ウィンドウの移動/リサイズ/最小化/最大化、スタートボタン、タスクバー、マウスカーソル。各アプリは独自のCEプロセスで実行されます。
組み込みアプリ — エクスプローラー(\、\Windows、\CD-ROMをブラウズし、バイナリを起動)、タスクマネージャー(ライブプロセス+RAMビュー)、時計、電卓、メモリテスター、winsockネットワークテスター。
ストックCEスタック上のネットワーキング(開発中) — ユニバーサルリンクシム(mppp.dll)は、ストックmicrostk.exe + winsock.dllがダイヤルアップPPPではなくイーサネット上で実行できるようにすることを目的としており、DHCP/ARP/DNSはシムで処理されます(DHCPオプション6 → Dreamcast独自のフラッシュISP設定 → 公共リゾルバ)。ブロードバンドアダプターとW5500 / MACRAW over SPIトランスポートの両方のリンクバックエンドは、まだ開発中であり、エンドツーエンドでは動作していません。
自己完結型CMakeビルド — バンドルされたSH-4 cl.exe + CEイメージツール(makeimg、romimage、…)。リテール(サイレント)またはデバッグ(シリアルコンソール)イメージ、および標準のブータブルGDIを生成します。
ビルド
前提条件:CMake ≥ 3.20とジェネレーター(Ninja)。Visual Studioにバンドルされているペアはそのまま動作します — VSの他のものは使用しません。PowerShellはディスクイメージングステップ(Windowsホスト)に使用されます。
# 設定(ninjaがPATHにない場合は-DCMAKE_MAKE_PROGRAMをninjaに設定)
cmake -G Ninja -S . -B build
# 1) SH-4モジュールのみ -> build/modules/ (dcspi.dll, mppp.dll, dcshell.exe, dcw* アプリ)
cmake --build build
# 2) ブータブルOSイメージ -> build/0winceos.bin
cmake --build build --target image
# 3) フルチェーン -> build/disc/disc.gdi
cmake --build build --target gdi
ビルドオプション
オプション
デフォルト
効果
-DKERNEL=retail|debug
retail
retail = サイレントカーネル。debug = チェック済み(アサートが多い)カーネル。ブートログのみを変更します。
-DDLLS=retail|debug
retail
retail = ストックOS DLL(実際のゲームが実行されるもの)。debug = チェック済み(アサートが多い)DLL。これらは一部のタイトル(例:DirectDraw/DDHAL)を壊すため、システムDLLのバグを追跡している場合以外は、これをリテールにしてください。
-DAUTORUN=<exe>
dcshell.exe
起動時に起動するプログラム(HKLM\init\Autorun)。パスにはフォワードスラッシュを使用してください。例:-DAUTORUN=/CD-ROM/DC.EXE をディスクバイナリの自動起動に使用します。
-DEXTRADATA=<dir>
(なし)
ディスクの\CD-ROMに配置されるフォルダの内容(例:ゲームのファイル)。相対パスはリポジトリルートに対して解決されます。OSイメージは常に0WINCEOS.BINで優先されます。
# 例:ディスク上のゲームを含む、動作中のリテールDLL(チェック済みDLL)を介したSCIFシリアルコンソールイメージ
cmake -S . -B build -DKERNEL=debug -DEXTRADATA=path/to/game
cmake --build build --target gdi
実行
ビルドは、実際のDreamcastハードウェアで起動する標準のマルチトラックbuild/disc/disc.gdiを生成します:
GDEMU / MODE / USB-GD-ROM — disc.gdiとそのトラックファイルをSDカード/イメージにコピーし、メニューから選択します。
焼かれたディスク — GD-R / GDEMU-exactレイアウトの場合、toolchain/make-gdi-real.ps1を使用して実際のCEゲームGDIに対して再構築します(元のIP.BIN +トラックジオメトリと一致します)。
デフォルトイメージはDCWinデスクトップに直接起動します。診断のために、-DKERNEL=debugでビルドし、Dreamcastシリアル(SCIF)コンソールを監視してください。
リポジトリレイアウト
パス
内容
CMakeLists.txt, cmake/
ビルド全体(モジュール→イメージ→GDI)
shell/
DCWinデスクトップシェル、PVR2/D3Dコンポジター、およびクライアントアプリ
net/netif/
ユニバーサルmppp.dllリンクシム(BBA + W5500バックエンド、DHCP/ARP/DNS)
drivers/dcspi/
W5500用の再利用可能なSPIトランスポート(SCIハードウェアSPI + SCIFビットバンギング)
toolchain/
wrap-image.ps1 / make-gdi.ps1 / make-gdi-real.ps1 + ビルドREADME
vendor/sh-toolchain/
SH-4 PEコンパイラ + CEヘッダー
vendor/wcesdk/
バンドルされたCE 2.12 SDK:ヘッダー、ライブラリ、イメージツール、OSモジュール、カーネル
ビルドの内部についてはtoolchain/README.mdを参照してください。
注記
このプロジェクトは、Sega "Dragon" Windows CE for Dreamcast SDK(バンドル済み)に基づいています。シェル、ネットワーキングシム、SPIドライバーはオリジナルワークです。CEカーネルとシステムモジュールはストックSDKバイナリです。バンドルされたSDKバイナリを、この研究プロジェクトの精神を超えて再配布しないでください。