lib8001

PC-8001実機を使っていた当時、ゼビウスのようなゲームを作りかけたんですが、ドット単位のBGスクロールだけ作って遅すぎて無理と諦めたことがあります。
今ならエミュレータでクロックを上げれば速度の問題は解消できるので、作ってみたくなりました。
若ければN-BASICとアセンブラで書くかもしれませんが、もう無理です。
そこでSDCCでクロス開発することにしました。
#当時コンパイラなんて夢の環境だったなぁ
せっかくなのでN-BASICのROMなしで、ベアメタルプログラミングで行きます。64kBフルに使えるし。
さらに、汎用性の高い部分をライブラリとして分離し、その上でゲームを構築します。

ライブラリの機能は以下の通りです。
画面制御 40/80桁 20/25行 モノクロ/カラー
文字表示
アトリビュート操作
カーソル表示
テキスト/セミグラフィックによる点、線分、矩形、矩形塗りつぶし、円描画
文字入力
RTC操作
さらにゲーム用に以下の機能があります。
ダブルバッファVRAM
整数の三角関数、平方根
擬似スプライト(アニメーション、当たり判定)
BEEPまたはSN76489AによるMML演奏
標準のPC-8001にSN76489Aなんて乗っていませんでしたが、私は独自仕様の拡張ユニットを作り、実機につないで使っていたので、それを再現しています。
独自拡張部分はCocoa8001で利用できます。

Cocoa8001にはタイムプロファイラ機能があり、そのためのアドレス一覧出力もできます。
本ライブラリの他に、SDCCのライブラリprintf(),rand()なども使えます。

https://github.com/kwhr0/lib8001

sdccバージョン3.7以上でビルドできます。

(2023/05/14更新)
sdccバージョン4.2以上では(--sdcccall 0を付加しても)正常に動作しません。

(2024/02/04更新)
sdccバージョン4.4以上に対応しました。
バージョン3.7〜4.1も引き続き使用できますが、
バージョン4.2と4.3はコンパイラのバグのため正しく動作しません(報告して修正してもらいました)。

#3626 Necessary cases are deleted in switch

xevious8001

lib8001上でPC-8001用ゼビウスを作りました。
https://github.com/kwhr0/xevious8001

ビルド済みのインテルヘキサも用意しました。
https://github.com/kwhr0/xevious8001/releases

macにCocoa8001をダウンロードし、上記ファイルを開けば遊べます。
N-BASICのROMもフォントファイルも必要ないので、ぜひ遊んでみてください。
https://github.com/kwhr0/Cocoa8001/releases

PS4のコントローラが使えます。
なお、Cocoa8001のクロック設定は両方20MHz(以上)にしてください。