Vectrexというと聞きなじみないですがバンダイの光速船と聞くと「あぁ」と思う方はオサーンです。
Vectrexは当時で唯一ベクタースキャンモニタを使用したコンシューマ機で当時5万円以上くらいしたかと思います。
もちろん周りで持ってる人などいませんでしたし、当時で遊んだことなど一度もありません。
~なんでVectrexなの?~
Youtubeを見ていた時にVectrexの動画を見ました。
「あぁ、こんなコンシューマ機あったなあ」と思いましたが、当時は触ったこともありませんし
自分が業界に入った時にはラインの中に選択肢すらなかったので興味本位で遊べる環境というものを
探りました。
そこでParaJVEというエミュがあること、CPUは6809でとりあえず自分持ってるアセンブラが
対応していること、Vectrexをまとめているサイトであるvectrexmusium.comにてサンプルがあることから
Vectrexで何か作れないかと思いました。
~HELLO WORLD(実行編)~
まずはサンプルをアセンブルしてROMバイナリとして認識させるところからスタートです。
サンプルは「HELLO WORLD」。文字を出力するだけのものです。
http://www.playvectrex.com/designit/chrissalo/hello1.asm
アセンブルしてできたバイナリをエミュに読ませてみる。実にあっけないほど簡単に実行できました。
~HELLO WORLD(解析編)~
次にソースの解読です。とおもったらHELLO WORLDのソースコード自体の解説は
すでにvectrexmusium.comにありました。問題は英文だということ…。
orgが0なので$0000からヘッダー部があり、
ヘッダ部が終わったアドレスから実行ソースが書かれていますが
ヘッダ部に実行アドレスの指定がないことからヘッダ部の次が自動的に実行のトップアドレスになるようです。
文字を表示するだけですがループが存在しておりループの中で文字列の表示をリクエストしていることから
表示は毎回リクエストする必要があることが読み取れます。
ビームヘッドのリキャブレートや文字の出力はBIOSROMを呼んでいるようです。
ということは本格的に組もうとなるとBIOSROMの理解が必須になるということになります。
BIOSのリファレンスもvectrexmusium.comにあります。
~さらにサンプルを実行してみる~
次のサンプルを実行しようとすると問題が起きました。
それはBIOSのヘッダファイルを必要としていたからです。
これは見当たらなかったので自作するしかありません。
BIOSのリファレンスからラベルとアドレスを全て抽出しequしてヘッダファイルを作成しました。
この辺は使用するアセンブラに合わせる必要があるのでどっちみち自作だったでしょう。
「COMMANDERと戦いたかった」はこういったサンプルで画面の出力、ジョイパッドの入力、サウンドの出力を
確かめつつアプリを完成させたものなのです。