HailToDodongo/pyrite64解説:libdragonとtiny3dで実現する次世代のN64エンジニアリング
pyrite64(HailToDodongo氏によるプロジェクト)は、一言で言えば「現代のPCで快適に開発して、実機(N64)で動かすための、モダンなゲームエンジン兼エディタ」です。
トランクス派とブリーフ派の論争に例えると、まさに「開発スタイルのこだわり」が詰まっています。さっそく中身を覗いてみましょう。
N64の開発は、本来なら当時の公式SDK(非常に扱いづらい)や、低レイヤーなC言語の知識が膨大に必要でした。しかし、pyrite64は以下の「良いとこ取り」をさせてくれます。
libdragon & tiny3d の採用
低レイヤーなハードウェア制御を抽象化してくれるライブラリ(libdragon)と、3D描画を容易にする tiny3d をベースにしています。
「作る」と「動かす」の分離
PC上のエディタで直感的にシーンを構築し、それをN64が理解できるバイナリへ変換するパイプラインを提供します。
モダンな開発体験
「アセンブリをガリガリ書くのはちょっと……でも実機で動く喜びは味わいたい」という、わがままなエンジニアの願いを叶えてくれます。
N64開発界隈にも、好みによって大きく2つの派閥があります。
| 項目 | トランクス派 (自由奔放・アセンブリ派) | ブリーフ派 (機能美・エンジン派 / pyrite64) |
| スタイル | 解放感抜群。ハードの全機能を直接叩きたい。 | 適度なホールド感。フレームワークに守られたい。 |
| 開発手法 | 自作のビルドツールとレジスタ操作。 | エディタ(GUI)で配置し、APIで制御する。 |
| メリット | 究極の最適化が可能。 | 開発スピードが速く、バグが少ない。 |
| デメリット | 1つのミスで画面が砂嵐(クラッシュ)。 | ライブラリの制約を受けることがある。 |
pyrite64 は、まさに「しっかりホールドしつつ、機動力も確保するブリーフ派(あるいはボクサーパンツ派)」のためのツールと言えます。
基本的には、libdragonの開発環境が整っていることが前提となります。
環境構築
Dockerを使うのが一番スマートです。
# libdragonのツールチェーンを導入
docker pull ghcr.io/libdragon/toolchain:latest
リポジトリのクローン
git clone https://github.com/HailToDodongo/pyrite64.git
cd pyrite64
ビルド
付属の Makefile を使用します。
make
これで、.z64 形式のROMファイルが生成されます。これをエミュレータ(AresやProject64)または実機(EverDrive等)で動かします。
pyrite64(およびベースのtiny3d)を使うと、3Dモデルの表示が以下のように直感的に書けます。
#include <libdragon.h>
#include <tiny3d.h>
int main(void) {
// 1. システムの初期化(ベルトを締める)
debug_init_isviewer();
display_init(RESOLUTION_320x240, DEPTH_16_BPP, 3, GAMMA_NONE, ANTIALIAS_RESAMPLE);
t3d_init((T3DInitParams){});
// 2. モデルの読み込み(お気に入りのパンツを選ぶ)
T3DModel *model = t3d_model_load("rom:/my_character.t3dm");
while(1) {
// 3. 描画ループ
t3d_viewport_attach(&viewport);
t3d_frame_start();
// モデルを描画位置へ移動してレンダリング
t3d_model_draw(model);
t3d_frame_unlock();
}
}
pyrite64 は、「N64というレトロなハードウェア」を「現代のソフトウェアエンジニアリング」で攻略するための強力な武器です。
GUIエディタでシーンを作りたい
C言語でスマートにロジックを書きたい
実機の実力を引き出したい
そんなあなたにぴったりなプロジェクトです。