退屈な学生たちは、TI-84 Plus CE電卓でソニック2を楽しむことができるようになりました。

Table of Contents

退屈な学生たちは、TI-84 Plus CE電卓でソニック2を楽しむことができるようになりました。

レトロインタビューほんの数週間前、ソニック・ザ・ヘッジホッグ 2 が TI-84 Plus CE グラフ電卓に移植されました。

電卓でレトロゲームをプレイするのは目新しいことではありません。テトリス、ブレイクアウト、さらにはスーパーマリオブラザーズ 3 までもが、テキサスインスツルメンツ社の人気電卓にファンによって移植されています。

しかし、青いハリネズミをフィーチャーしたゲームがテレビ画面に登場したことはこれまでありませんでした。しかし、GitHubユーザーのgrubbyplaya(別名grubbycoder)が、1992年の『ソニック・ザ・ヘッジホッグ2』をこのデバイスに移植しました。これは、私たちが知る限り、この電卓でプレイできる最初のソニック系プラットフォームゲームです。ソースコードとバイナリが公開されていますが、これは完全に非公式です。

開発者が移植を思いついたのは、This Does Not Compute YouTubeチャンネルで電卓ゲームの歴史を扱った動画を見たことがきっかけでした。ミニドキュメンタリーで、TIの電卓の一部が8ビットのZilog Z80と16/32ビットのMotorola 68000 CPUを採用していたことが紹介され、grubbycoderの注目を集めました。これらのチップはセガのマスターシステムやジェネシス(北米以外ではメガドライブ)にも採用されていたため、これらのゲーム機からTIの電卓にソニックを移植するのは、かなり楽しい作業になるはずです。

「セガのレトロゲーム機が使用していたプロセッサはマスターシステムではZ80、ジェネシスではM68Kと、すでに知っていたので、本当に興味をそそられました」とプログラマーは移植に関する資料の中で述べている。

「それとは別に、自分だけの電卓ゲームを作りたい、あるいは少なくとも既存のゲームを移植したいと思っていました」とgrubbycoder氏はThe Registerに語った。「Doomは84 Plus CEのストレージに収まるには少し大きすぎたので、それが8ビットから16ビットの範囲のゲームにこだわった理由の一つです。もちろん、後になって16ビットゲームは除外しました。」

私は本当に自分の電卓ゲームを作りたかった、少なくとも既存のものを移植したかった

しかし、grubbycoderはセガメガドライブ版の『ソニック2』を移植せず、8ビットのセガ・マスターシステムとゲームギア向けに作られたバージョンを使用しました。これは、68000 CPUを搭載したTIの大型電卓では、68000ベースのメガドライブ版のゲームを表示するのに十分な画面解像度がなかったためです。

対照的に、Zilog eZ80 チップ (基本的には 24 ビットの Z80 に追加の機能が付いたもの) を搭載した TI-84 Plus CE は 320 x 240 ピクセルのディスプレイを備えており、これは 8 ビットのマスター システムおよびゲーム ギア バージョンには十分すぎるほどです。

TI-84 Plus CEを選択したことで、grubbycoderにとって移植可能なソニックゲームの選択肢は限られていました。現在、マスターシステムで完全に分解されたソニックゲームは『ソニック・ザ・ヘッジホッグ2』のみなので、彼はそれを移植することにしたのです。

「ソニック1 8ビットやソニック トリプルトラブルなど、人々が本当に求めている他のゲームのほとんどは、部分的な逆アセンブリしかありません」とgrubbycoderは言う。「もし私がそれらの移植を始めたら、仕事のほとんどはゲーム全体のリバースエンジニアリングに費やされるでしょう。」

分解されたゲームを移植することさえ困難だった

理論上は、TI-84 Plus CEは8ビット版ソニックゲームに最適に思えます。eZ80のクロック周波数は48MHzで、マスターシステムのZ80A(3.58MHz)をはるかに上回ります。また、RAM容量は256KBで、マスターシステムのRAM 8KBとVRAM 16KBの10倍以上です。

しかし、これらのハードウェアの優位性は、eZ80の実際のクロック速度を12MHzまで低下させる可能性のある待機状態、64KBを超えるデータは複数のファイルに分割しなければならないファイルサイズ制限、そしてコンソールのようなグラフィックアクセラレーションが全くないことによって損なわれています。これらの不足を補うために、追加の処理能力を活用する必要があります。

さらに、TI-84 Plus CEは、ゲームコードがセガコンソールのI/Oポートと想定されるポートにアクセスしようとするとクラッシュします。例えば、ゲームがコンソールのオーディオシステム、カラーパレットハードウェア、VRAMにアクセスしようとするとクラッシュします。これらのI/Oアクセスは、クラッシュを防ぎ、『ソニック2』を期待通りにプレイするために、電卓上で再ルーティングと変換を行う必要がありました。

さらに、grubbycoder は、TI 計算機用に、自身の移植のベースとなった Sonic 2 逆アセンブリ プロジェクトで使用されているものとは異なるアセンブラを使用する必要があり、互換性の障害が発生しました。また、彼は Z80 や TI-84 Plus CE の専門家ではありませんでした。

「当初、私は Z80 アセンブリについて初心者レベルの知識しか持っていませんでした。そのため、いくつかの処理に関して非常に愚かな決定を下してしまい、それが後で痛い目に遭いました」と彼は言います。

「マスター システムのエミュレーション機能の複雑さが増すにつれて、TI-84 Plus CE がどのように動作するかについて中程度の知識がようやく身に付きました」と grubbycoder 氏は語ります。

逆アセンブリ ソースからゲームをアセンブルすることが最初のタスクであり、TI 対応の SPASM-ng アセンブラがその作業のほとんどを実行しましたが、grubbycoder は、すべてが TI-84 Plus CE と互換性があることを確認するために 20,000 行のコードを確認する必要がありました。

結局のところ、I/Oアクセスの回避はそれほど難しくありませんでした。電卓のハードウェアがメモリマップドI/Oリクエストをサポートしていたからです。ポート側は、I/Oポートリクエストが電卓のメモリマップドI/Oアドレスに送信されるよう調整し、互換性レイヤーとして機能するグルーコードを追加するだけで済みました。ゲームはセガのハードウェア上で動作し、通信しているように見えますが、実際にはTIの電卓とやり取りしているのです。

grubbycoder 氏は、「ほとんどはちょっとした不便さに過ぎませんでした」と述べ、ビデオ カラー パレットがハードウェア変換レイヤーで実装するのが最も複雑だったと指摘しています。

残念ながら、移植版にはマスターシステムのように動作しない部分が2つありました。まず、マスターシステムはROMバンキングを用いてメモリマップ上のデータチャンクを必要に応じてスワップイン/スワップアウトしていました。これは、旧式のコンソールが一度に扱えるデータ量が64KBしかなく、ゲームがそれよりもはるかに大きいためです。TI-84 Plus CEでは、この動作は比較的遅くなります。これは、必要に応じてフラッシュストレージからRAMにデータをコピーするためです。256KBのRAMを搭載していても、すべてのバンクを一度にメモリに格納するには十分なスペースがなかったためです。

もう一つの問題はレンダラーでした。TI-84 Plus CEにはグラフィックアクセラレーションハードウェアがほとんど搭載されていなかったためです。eZ80に搭載された16ビット乗算命令は、グラフィックスの位置を計算するという点で、ソフトウェアによるスプライトやタイルの描画を高速化するのに役立ちました。

とはいえ、タイルベースの背景処理は難題でした。セガのコンソールハードウェアは、ソニックのレベルを素早く配置したりスクロールしたりするための豊富な機能を提供しており、その加速を電卓のeZ80でエミュレートする必要がありました。

ソニック

開発中の移植版グラフィックソフトウェアレンダラーのスクリーンショット

Grubbycoder は、TI の VRAM 内の 56KB フレームバッファと、タイルのレンダリング時間を 8 分の 1 に短縮するキャッシュ システムを使用してこれを実装し、ゲームを実際にプレイできるようにしました。

Ti-84 Plus CE でのソニック・ザ・ヘッジホッグ 2 のイントロ。

ポートを起動してイントロレンダリングを取得する

完璧な移植ではありませんが、全体的には問題なく動作し、クールなプログラミングプロジェクトと言えるでしょう。しかも、オリジナル版とそれほど違いはありません。「技術的には、84 Plus CE版はオリジナルの8ビット版『ソニック2』のコードの90~95%を保持しています」とgrubbycoderは述べています。 

電卓にはスピーカーがないため音声は出ませんが、音声コードとマテリアルを削除したことで、少なくともゲームサイズは小さくなりました。フレームレートは、マスターシステムのユーザーが60fpsでプレイしていた場合よりも低いです。「テストでエミュレートした84 Plus CEでは、通常ビルドで約53%の速度で動作します」と開発者は述べています。

このゲームには 74 パーセントの速度で実行される高速モデルがありますが、このバージョンには敵やボス、さらにはレベルの終わりを示すゴールポストさえ存在せず、最初のレベルさえも完了できないことを意味します。

「速度低下はほぼ完全に ROM バンキングによるもので、具体的にはソニック、すべてのバッドニック、およびゲーム内のすべてのギミックのロジックを含むバンクのスワップインによるものです」と grubbycoder 氏は言います。

「計算機に待機状態がなければ、まったく問題にはなりませんが、他の解決策としては、それらのバンクを 84 Plus CE の 24 ビット モードで実行するように変換し、一度にすべてをロードするのではなく、ジャンプするだけになるようにする方法があります。」

しかし技術的には、もし退屈な学生が電卓しかいじる手段がない状態で『ソニック・ザ・ヘッジホッグ2』を最初から最後までクリアしたいと思っていて、多少のフレームレートの悪さを我慢できるなら、それは十分可能です。とはいえ、最近ではNspireのようなArm CPUコアを搭載したハイエンド電卓でも、Genesisシリーズのゲームを実際にプレイできるので、最高の電卓ゲーム体験を求める人にとっては、Nspireの方が良い選択肢になるかもしれないとgrubbycoderは述べています。

それでも、開発者は2015年モデルのTI-84 Plus CEにさらに多くのソニックゲームを追加することを検討しています。「将来的には、あまり知られていないソニックゲームを電卓用にリメイクしたいと思っています」と彼は語っています。

「誰もが知っているプラ​​ットフォームゲームではありませんが、Tiger Electronics の LCD ゲームや Sonic Adventure Gamebook シリーズをリメイクすることに最も興味があります。」®

Discover More