PCエンジンのプログラミング

突然ですが、PCエンジン用のプログラムを自作してみたいと思います。関連する知識が全くない状態からのスタートです。

まず最初にCC65が開発に使えるのでは、と思っていたのですが、CC65のドキュメントを読んでも使い方が良くわかりません、、、。ドキュメントには「Some useful resources on PCE coding:」というリンクを貼られていたのですが、その中の一つがこちら。

www.zeograd.com

「HuC」というPCエンジン用のCコンパイラがありました。これを使ってみます。CC65とは無関係ですね。開発は2005年で終わっています。バージョンが一杯ありますが、「huc-3.21-win.zip」をダウンロードしてみました。windows版ですが、DOS版との違いがわかりません。

 

f:id:nicotakuya:20201120225123p:plain

HuCを展開する

ZIPファイルを展開して、huc-3.21-winフォルダをCドライブの最上位ディレクトリに置いてみました。これでインストールは完了です。

binフォルダ内のEXEファイルは実行しようとすると「WindowsによってPCが保護されました」と出てしまうので、事前に解除しないといけません。

どうプログラムしたらいいのか、よくわからないので、docフォルダのドキュメントを読むと、「PONGが参考になる」という感じの一文を発見。そこで検索すると、次のページがヒットしました。

www.magicengine.com

こっちのHuC(huc_dos_142.zip)はタイムスタンプが2000年で、バージョンが5年ほど古いです。DEMOSフォルダにサンプルプログラムとして「PONG」と「SCROLL」が付属しています。これらのソースだけ頂くことにします。ソースの中に拡張子が「PCX」というファイルありますが、これはタイルマップ用の画像ファイルです。

 

f:id:nicotakuya:20201120224512p:plain

ビルド用バッチファイル

ビルド用のバッチファイルを作ります。「PCE_INCLUDE」はHuCに指定するヘッダファイルのパスです。

「SRCFILE」はコンパイルしたいソースのファイル名。

「huc」はCコンパイラ。「pceas」はアセンブラの意味です。

バッチファイルを実行すると、PONGをリビルドします。そのままだとファイルが見つからないというエラーが出るので、ソースをちょっと直します。

#include "../huc.h"

#include "huc.h"

こんな感じです。

あと、PCXファイルが見つからないというエラーが2件出るので、ファイル名を直します。

「RACKETLE.PCX」→「RACKETLEFT.PCX」

「RACKETRI.PCX」→「RACKETRIGHT.PCX」

こんな感じです。逆にソースのファイル名を直してもいいです。

うまくビルドできたら、ROMイメージの「PONG.PCE」が生成されます。

 

f:id:nicotakuya:20201120224601p:plain

サンプルのPONGをリビルド

PONG.PCEをPCエンジンエミュレータで実行した様子。

なぜかスコア表示がおかしくなってしまいました。原因は不明です。そのうち直したいと思います。

 

f:id:nicotakuya:20201120224756p:plain

サンプルのscrollをリビルド

先ほどのバッチファイルを修正して、「SCROLL」もリビルドして、実行してみました。こっちは問題なく動きました。

現時点ではエミュレータで動かしていますが、そのうちPCエンジンの実機でも動かしてみたいです。