ゲーム

1996年発売の「NINTENDO64」上でJavaを動かすことに成功


任天堂が1996年に発売した据え置き型ゲーム機の「NINTENDO64」で、Javaのプログラムを実行することにマイク・コーン氏が成功しています。

Michael Kohn - nintendo64 java
https://www.mikekohn.net/micro/nintendo64_java.php

コーン氏は幼少期にNINTENDO64で遊んでいたというわけではないそうですが、NINTENDO64がCPUにMIPS(カスタム製のVR4300)を搭載しており、SGI Indyをベースとしている点に興味を持ったそうです。コーン氏はJavaで記述したプログラムをマイクロコントローラーやゲーム機にネイティブ実行するための「Java Grinder」というツールを開発しており、これを使うことでPlayStation 2(PS2)でJavaのプログラムを実行することに成功していたため、「同じMIPSをサポートしているNINTENDO64でも比較的簡単にJavaのプログラムを実行させることができるはずと考えていました」と記しています。しかし、NINTENDO64はPS2よりも単純なハードウェアを有しているため実装作業が複雑で、「率直に言ってつらかった」とコーン氏。

コーン氏によると、Java Grinderを使ってNINTENDO64でJavaのプログラムを実行することは、PS2でJavaのプログラムを実行するのにかかった時間と同じく「約2年もの時間が必要だった」としています。ただし、コーン氏は他にもさまざまなプロジェクトに手をつけていたり、長い休憩期間を設けたりしていたため、純粋に2年間にわたってNINTENDO64でJavaのプログラムを実行するためのプロジェクトを進めていたわけではないと説明しています。


コーン氏が最初に行ったのは、RSPモジュールのnaken_asmにアセンブラを追加することでした。この作業について、コーン氏は「これは基本的にMIPSコアを縮小したもので、非常に厄介なベクトル命令をいくつか持っています」「NINTENDO64のRSP設計は革命的でしたが、MMX/SSE/AVXやPS2のような新しいベクター命令セットと比較すると、NINTENDO64での作業はより大変でした」と記しています。

そのため、コーン氏はNINTENDO64のハードウェアを学ぶところからスタート。この結果、naken_asmのGitHubリポジトリの「samples/nintendo64」にいくつかのサンプルを加えることに成功したとのこと。さらに、コーン氏はすべての3D計算を行うために独自のRSPルーチンを作成することに決め、naken_asmのサンプルディレクトリにrsp.asmを作成。任天堂が作成し多くのゲームメーカーが使用していた標準のRSPマイクロコードや、オープンソースのマイクロコードなどもいくつかあったそうですが、naken_asmを作成・使用することに決めた理由を「RSPルーチンがどのように機能するかを自身で学ぶことに興味があったからです」とコーン氏は記しています。

なお、コーン氏が自作したJavaプログラムは画面のクリア、ピクセルのプロット、オーディオの再生、四角形の描画、三角形の描画を行うための「Nintendo64.java」「n64/Rectangle.java」「n64/Triangle.java」という3つのオブジェクトのみだったそうです。

NINTENDO64にはRSPコプロセッサがあり、これを使用して3D回転や投影などを行います。これを実際に触ってみたところ、「RSPのベクトル命令が非常に扱いにくいことがわかった」とコーン氏。RSPのベクトル命令はほとんどの場合16ビットのみで、除算命令はなく、扱いにくい逆数命令と乗算命令のみだそうです。そこで、コーン氏はrsp.asmを用いて画面のクリア、Zバッファーのリセット、テクスチャ・四角形・三角形の処理などを行えるようにしたそうです。


NINTENDO64のRSPの隣にはPS2のGSに似たRDPがあります。RDPはコマンドのリスト(長方形を描写、三角形を描写など)を受け取り、それらを実行しますが、RDPが計算を行うのではなくRSPまたはCPUソフトウェアが計算を行う必要があるとのこと。そこで、NINTENDO64のRDPはPS2のGSに比べて非常に原始的であるとコーン氏。このためのコーディングが「かなり面白くなく、私は燃えつきてしまいました」とコーン氏は記しており、その結果、NINTENDO64でJavaを実行するためのツールに多くの機能を実装することができなかったと説明しています。

実際にJavaプログラムをテストする際には、NINTENDO64のイメージファイルをmicroSDカードから読み取ることができるEV64カートリッジを使用したとコーン氏。なお、NINTENDO64の実機はメルカリで購入したそうです。

以下が実際にNINTENDO64上でJavaを動作させている動画。

Nintendo 64 Java Demo - YouTube


コーン氏は「PS2での作業と同じように、NINTENDO64での作業はあまり面白いものではありませんでした。特に1996年の時点では非常に優れた高度なコンピューターでしたが、簡単なことを実行するためにも多くの作業が必要となりました。ほとんどのゲーム開発者は他の誰かが作成したRSPコードを使用してプログラムを簡単に作成できるようにしましたが、システムをよりよく理解するために自分でこれを作成することを選択しました」と記しています。

この記事のタイトルとURLをコピーする

・関連記事
PlayStation 2上で自作のJavaプログラムを走らせた猛者が登場 - GIGAZINE

NINTENDO64のゲームを解像度最大8倍にしてプレイできるエミュレーターが登場、プレイムービーも公開中 - GIGAZINE

巨大な爆炎を吹き出す金属製の「ヘヴィメタル仕様」なNINTENDO64を自作した猛者が登場 - GIGAZINE

NINTENDO64の貴重なプロトタイプコントローラーの写真が公開される - GIGAZINE

ネットオークションでのNINTENDO64の売上が前年比200%超も増加している - GIGAZINE

AIを用いたマリオカート64の全自動走行がNINTENDO64の実機で成功 - GIGAZINE

in ソフトウェア,   動画,   ゲーム, Posted by logu_ii

You can read the machine translated English article here.