ふいにPC-98HA(HANDY98)が起動するようになってから1週間が経つ。
当初は「きまぐれに電源が入るいつもの感じ」と思って期待もしていなかったけれど、まさか1週間連続して動くようになるとは想定外だった!
ちゃんと動くようになった原因はなんだろう??
思い当たるのは、専用のACアダプタ(PC-98HA-12)を使ってる…くらいしかない。
その後、レジューム機能(電源切る直前の状態を覚えてくれてる)も使えるようになり、本体としてはかなり安定した状態だ(^^)
このHANDY98、ずっと安定して使えるといいなぁ…!(^o^)
これだけ安定していると、せっかくだから何か作りたくなるよね!
ちょうど週末に差し掛かるところだったので、いっちょ環境整えてみるか!(^-^)
PC-98HA開発環境
開発言語
PC-98HAの開発環境としては何が考えられるだろうか?
PC-9801互換ではないけれど、MS-DOSという意味ではきちんとしたものが乗っている。
そしてMS-DOS汎用であれば、開発言語は山のような選択肢がある。
それでもパッと思いつくのはMASMによるアセンブラ、そしてC言語による開発かな…。
16ビットCPUなワケだし、基本はC言語での開発を主体にしつつ、どうしてもってところだけアセンブラ化するのが良いだろう!
よし、開発言語はC言語を中心としよう(^-^)
開発環境
MS-DOSで使用できるC言語としてはLSI C-86(試食版)がある。
LSI C-86(試食版)自体はMS-DOS上で動くソフトウェアだ。
そうなるとここんとこお気に入りのWine上で動かす事が出来ない…多分(T-T)
MS-DOSの環境を用意するとなると、私的にはDOSBoxが慣れている。
DOSBoxは、Mac上のファイルを読み書きできる機能があってとても便利だ!
Macで編集、DOSBoxでコンパイルって方法がなんなく出来る。
実行環境
DOSBoxでコンパイルして出来上がったEXEファイルを、どうやってPC-98HAへ持っていくか…。これはもうエミュレータを使うのはラクなのは分かるけれど、そのエミュレータへデータを渡す方法が簡単ではない。
エミュレータを試してみたが、メモリカードやRAMディスクへデータを置く方法もぱっと分からなかったので、これはもうフロッピーディスクイメージ(D88)の中にファイルを入れて渡すのが簡単だと判断した!
つまりコンパイルして出来上がったEXEファイルを、D88ファイルの中にコピーしてエミュレータにセットすれば、エミュレータからはフロッピードライブの中にファイルがある…という事だ(^-^)
D88ファイル自体はフォーマットが公開されている。
ツールを作るためにはD88のフォーマットとは別に、FAT12の構造を知る必要がある。
これはもう1980年代に散々実験を繰り返していたので、暗記とまではいかないが悩むことがないくらいの理解力はあった(^^)
よっしゃ、Macで編集、DOSBoxでビルド、エミュレータで実行の環境が出来た!
なにか作ってみたいけど…
せっかく開発環境の用意が出来たんだから、何か作ってみたくなる!
最近は平日が激務状態になっているので、時間は土日しかない(T-T)
じっくり作る時間もないので、過去に作ったとか、データのみを利用するか、どうするか…。
そんな事を考えてる時に、はたと1980年代にモノクロ640x400環境で作ったものがある事を思い出した!
8086(というかV20)のアセンブラで書いてあるものだけど、これをC言語に置き換えてみたらどうだろう…と思った。
3x年前とはいえ、自分が書いたものなので解析は必要ないし、アルゴリズムは頭に入ってる。
よーし、これを移植してみるかー!(^-^)
ぐはっ!!!
久しぶりに当時のソースコード見たけど……うん、思うところあるよねww
今コレの中身を参考にしても仕方ないので、用意されてる関数を参考にしながら作っていこう(^^;
アセンブラで書いていたものをC言語に移植していくと、とにかくアセンブラでは面倒な計算が、C言語では演算子1つ2つで解決してしまうのが簡単で良い!(^^)
15分もしたら文字が表示出来るようになってきた。
作っていくと、デバッガが使えないのをどうしようかと悩むようになってきた…。
SYMDEBを使うかprintfでデバッグしていくしかないが、不用意に画面にprintfしてもかき消されてしまうのでどうしたものかと…(^^;;
仕方ないけど、今回は小規模という事もあって「なるべくバグが出ないように」気をつけながら作業する事としたww
ある程度ゲームが動くようになってきたところで、実機で動かしてみたくなった!
実機で動かすためには、コンパイルして出来上がったEXEファイルをPCMCIAのSRAMカードへコピーする必要がある。うちではMacから直接SRAMカードへ書く方法がないので、一旦PC/AT互換機を経由してコピーする事になる。
手順が面倒なので、あんまり何度もしたくない(^^;;
おお〜!実機で動いた!速度もエミュレータで動かした時と一緒だ!
おわりに
それなりの規模となるものをエミュレータおよび実機で動かす事が出来た!
プログラムとテキスト化したデータを含めても1200行前後のモノ。
出来上がったEXEファイルは13KB程度だ(^^)
土日でやる作業としては、まぁこんなもんだ(^^;;
その後、友人がモノクロ背景のデータを作ってくれたので、それはぜひ入れなくては…と思っているが、ゲームとして完成まで作り込むことはしないかも(^^;;
細かいレポートは書ききれていないので、別ブログか、ここに追記していこうと思う。
ではまた次回!(^-^)ノ