Wiiで『Plants vs. Zombies』がネイティブ動作! 88MBのメモリーとGX描画を攻略した非公式移植が完成

Wiiで『Plants vs. Zombies』がネイティブ動作! 88MBのメモリーとGX描画を攻略した非公式移植が完成

PopCap Gamesが2009年に発売したタワーディフェンスゲーム『Plants vs. Zombies』を、Wiiで動作させる非公式移植が完成しました。

開発を手掛けたのはOptiJuegos氏。同氏は日本時間の8月13日、Wii上で実際にゲームが動作している映像とともに、移植作業が完了したことをXとRedditで報告しています。

さっき、Wii用のPlants vs. Zombiesの移植を終えたよ!

この移植で一番面倒だったのは、何と言ってもコンソールのエンディアンさ。PowerPCはビッグエンディアンだから、コードのいろんな部分をそれに合わせて変えなきゃいけなかったんだ。

そのあと、OpenGXのレンダリングを直すのはそんなに難しくなかったよ!

●開発者の投稿(Reddit)
https://www.reddit.com/r/PlantsVSZombies/comments/1vmo9eg/plants_vs_zombies_ported_to_the_wii/

公式には発売されなかったWii版が非公式に実現

『Plants vs. Zombies』はPC向けに発売された後、ニンテンドーDSやXbox 360、PlayStation 3、PlayStation Vitaなど、様々なゲーム機へ移植されてきました。しかし、幅広いユーザー層を持ち、ポインター操作も利用できるWii向けには、なぜか公式版が発売されていません。

今回公開されたのは、ゲームをWii向けにネイティブ移植した非公式バージョンです。PC版をストリーミングしたり、別のハードウェアをエミュレーションしたりしているわけではなく、WiiのPowerPCプロセッサーとグラフィックス機能を使ってゲームを動作させています。

先に開発されたPS2版の移植をベースに制作

OptiJuegos氏によると、今回のWii版は、同氏が先に手掛けたPlayStation 2版の移植を基礎にしています。

●OptiJuegos氏によるPS2版プロジェクト
https://github.com/OptiJuegos/pvz-ps2

PS2版では、コミュニティーによって進められている『Plants vs. Zombies』のデコンパイルプロジェクトをベースに、コンソール向けのメモリー使用量削減やレンダラーの変更などが行われていました。

これらの最適化をWii版でも利用できたため、移植作業そのものはそれほど複雑ではなかったとのこと。ただし、Wii特有のハードウェアに対応するため、いくつかの大きな問題を解決する必要がありました。

OpenGLの代わりにWii独自の「GX」を使用

移植作業で特に大きな問題になったのが、グラフィックスの描画です。PC向けのプログラムではOpenGLが広く利用されていますが、Wiiは一般的なOpenGLには対応しておらず、任天堂独自のグラフィックスAPIである「GX」を使用します。

本来ならば、ゲームのレンダラーをGX向けに書き直す必要がありますが、今回の移植では「OpenGX」と呼ばれるラッパーが利用されています。OpenGXは、ゲーム側から送られてくるOpenGL形式の描画命令を、WiiのGXで処理できる命令へ変換する役割を持っています。

開発者によると、ネイティブのGXレンダラーを一から作る方法と比較すると最適な実装とはいえないものの、実際の動作は良好で、十分なパフォーマンスが得られているとのことです。

PowerPCのビッグエンディアンにも対応

もうひとつの問題が、データを読み書きするときのバイト順です。一般的なPCで使用されているx86系プロセッサーは、数値データを下位バイトから並べる「リトルエンディアン」を採用しています。

それに対して、Wiiに搭載されているPowerPCプロセッサーは、上位バイトから並べる「ビッグエンディアン」を使用します。この違いに対応しないままプログラムを動かすと、ファイルから読み込んだ数値やメモリー上のデータが正しく解釈されず、ゲームの動作やグラフィックスに問題が発生します。

そのため、Wii版では多くのコードを修正し、ビッグエンディアン環境でも正しくデータを扱えるようにする必要があったそうです。

88MBのメモリーに収めるため不要なデータを解放

Wiiが利用できるメインメモリーは、24MBのMEM1と64MBのMEM2を合わせた合計88MBです。一見すると『Plants vs. Zombies』は比較的軽い2Dゲームに見えますが、実際にはキャラクターのアニメーションや背景、サウンド、インターフェースなど、多数のデータをメモリー上に展開しています。

そこでWii版では、PS2版の移植用に開発された「Asset Cleaner」が利用されています。これは、その場で使用していない画像やサウンドなどのアセットをメモリーから解放し、限られた容量の中でゲームを動作させるための仕組みです。

その代わり、ステージを読み込むときなどにデータを再度読み込む必要があるため、一時的に処理が引っ掛かる場合があるとのこと。開発者も若干のカクつきが発生する可能性があると説明しています。

現時点では一般向けの配布方法は未発表

OptiJuegos氏はWii版の完成と動作映像を公開していますが、記事執筆時点ではWii向けの実行ファイルやソースコード、詳しい導入手順などは公開されていません。公開されているGitHubリポジトリも、現在は土台となったPS2版のプロジェクトが中心で、Wii版のビルドは掲載されていないようです。

また、操作方法についても詳細は明らかにされておらず、Wiiリモコンのポインター機能に対応しているかは不明です。

ベースとなったPS2版プロジェクトにはゲーム本体のデータが含まれておらず、プレイするには正規に入手した『Plants vs. Zombies: Game of the Year Edition』のデータが必要です。Wii版についても、使用するゲームデータや導入方法の正式な説明を待つ必要があります。

見た目はシンプルな2Dゲームながら、Wii独自のGX描画、PowerPCのビッグエンディアン、わずか88MBのメモリーといった複数の壁を乗り越えて実現した今回の移植。一般向けのビルドやソースコードが公開されるのか、今後の続報にも注目したいところです。

ABOUT US
アバター画像
retrogamer