-
移植しようと思った
移植しようと思ったのは1996年の9月頃だろうか。
移植するのを「VICTORofBATTLE」(以下VOB)にしようと考えたのは、
マイコンBASICマガジン(以下ベーマガ)で、高い評価を受けていたし、
格闘ゲームをやったことのない僕は格闘ゲームとはいかなるものかと思ったから。
まぁ、面白そうだから遊んでみようと思ったわけである。
-
問題点がいっぱい
N88-BASIC(以下N88)で作られたVOBを、VisualBasic(以下VB)
移植しようと思ったのはいいが、解決しなければならない問題点があった。
CONSOLE命令がわからない、GET、PUT命令をどうするか、何色を使用しているのか等。
僕はこれらの問題に1つずつ対処していかなければならなかった。
-
キャラクタデータをどうするか
VOBでは、キャラクタ作成用プログラムというのがあった。
それによってゲーム中使用されるキャラクタ用画像データを作り出していた。
ここで問題なのは原作で作成されるデータの形式。
といいたいとこだが、それはVBで扱うための関数がないので、そんなことを知ってもあまり意味が無い。
重要なのは元の画像がどのようなものかということ。
これは原作のプログラムをほとんどそのままVB用のプログラムに書き換えることによって、
表示することができた。
(変えた部分で重要なのは解像度だと思う。
原作のVOBでは解像度が640×200だが、VB版のVOBでは解像度が640×400になっている。
そのため原作の1ドットがVBでは1×2ドット分になっている。)
-
キャラクタデータの保存
どんなキャラを使用しているかということはわかったが、
それをどう保存すればよいかわからなかった。
まず、VBで取り込むことのできる(僕が取り込み方を知っている)画像ファイルはビットマップファイルだけだった。
それで、ビットマップ形式で保存するということはすぐに決まった。
その次に、どのようにしてビットマップ形式で保存するか考えた。
ベーマガのVisualBasic研究所(以下VB研)では、ビットマップのフォーマットが、紹介され、
ビットマップを扱ったプログラムも作成していたので、それを参考にして、保存ルーチンを作った。
当時VB研で使っていたVBのバージョンが2.0(僕が使っているのは4.0)であったこともあり、
保存用の関数のあつかいに手間取るが、何とか完成した。
しかし、それからしばらくした後、本屋で立ち読みをしていたら、
ビットマップを保存するのにSavePicture関数という関数をつかっていた。
家に帰り、ヘルプで調べたところ、この関数を使えば簡単にビットマップを保存できることがわかった。
あ、あの苦労は何だったんだーーーー。
僕は心の中で叫んだ。
まあ人生こんなこともあるさ。
そう思いながら作成したプログラムを書き換える。
こうしてキャラクタ作成プログラムが完成した。
-
なんとか完成
その後、メインプログラムの制作にとりかかる。
こちらの方は比較的簡単だった。
CONSOLE、SCREEN等はほとんど無視。
これがわからなくても何とかなるだろうと考えた。
GET、PUTはAPI関数のBitBltを使うことで対処。
必殺技等の演出等、画像処理でわからない部分は自分で想像して作った。
このようにして何とかVB版VICTORofBATTLEの完成。
しばらく遊ぶこととなる。
-
新たな問題
完成はしたものの、開発途中から気になっていた問題があった。
それは色の問題。
原作のVOBで使用している色は16色なのだが、ベーマガに掲載された写真は白黒なので色番号に対応する色がわからない
僕は、これがVBのQBColor関数で得られるものと(色番号の順番は違うが)同じであると推定した。
QBColor関数とは、QBColor(10)のように0〜15の番号を指定することで色をあらわす値を得る関数。
この場合は16進数で00FF00を返し、これは緑になる。
N88の色番号とQBColorでの色番号とが一致しないことは、はじめから気づいていた。
でも、色番号に対応している色を、正確には把握していなかった。
<表1>、<表2>は、N88、QBColor関数での、色番号に対応する色。
そして、<表3>は、最初に完成したVB版VOBでの色番号に対応する色。
<表1>N88での色番号に対応する色(実際とは少し異なる)
色番号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
色 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<表2>QBColor関数での色番号に対応する色(実際とは少し異なる)
色番号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
色 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<表3>VB版VOBでの色番号に対応する色(実際とは少し異なる)
色番号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
色 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N88での色をどうやって知ったかというと、N88BASICforWindowsを使って調べたから。
でも最初のVB版VOBでは、どの番号がどの色に対応するのかだけに注目していて、
明暗に関してはかんがえなかった。
ベーマガに掲載された写真(白黒)をみてなんかおかしいなぁと感じはじめてよく調べたら、
N88では<表1>のようになっていた。
そして色を修正。
やっと本当の完成といえる。
原作を見ていないんで、まだ違うところがあるかもしれないけど。
と思ったら、やはり色が違っていた。
メインプログラム中で色番号に対するRGB値を変更していたのだ。
当時はN88BASICを全く知らなかったということで勘弁してください。
-
新キャラ
ベーマガ1998年6月号107ページのDr.Dの言葉
「欲をいえば、移植にはプラス・アルファが欲しかったところじゃがな。」
ではVOBの移植にあたってプラス・アルファは考えなかったのか。
実は考えた。
「KAGE」(ベーマガの読者なら誰だかわかるだろう)という新キャラを追加したのだ。
グラフィックデータも作成し、リーチの超短い波動拳のような必殺技も考えた。
それではなぜ投稿したプログラムにはこのキャラが追加されていなかったのか。
それはソースを短くするため。
打ち込む側の手間を少しでも減らそうと思ったのだが、あまり変わらなかったようだ。
追加しとけばよかったかな。
-
最後に
ベーマガ創刊200号記念プログラムコンテストで、173票(1998年6月5日現在)も獲得する事ができました。
投票してくださった皆さん、ありがとうございます。m(__)m
今度はオリジナルの作品で勝負したいと思っています。
これからもよろしくお願いします。