“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

思い出のゲーム達:13.グラディウス2(コナミ)

今回の思い出のゲームは、MSXの、「グラディウス2
MSXオリジナルの続編で、のちにアーケードで出るのはグラディウス「Ⅱ」
www.youtube.com

これぞ、MSX界でコナミは神!と崇められた最高傑作だと思う。
オープニングから度肝を抜かれる。美しいグラフィックに、デチューンが効いた美しいBGM!これが本当にMSXなのかと当時は思った。
このグラディウス2のカートリッジには、拡張音源のSCCが搭載されていた。これによって、内蔵のPSG3音にプラスして5音が鳴っていた。

そして、ゲームを始めると、ステージ1の巨像ステージから美しさに目を奪われた。
パワーアップシステムは、パワーカプセルを取ってゲージに合わせてパワーアップボタンを押すことに変わりはなかった。
ステージの最後には、ボスがでてくるのだが、ビックコアではなく、別のデザインのデカい奴が!
さらに倒すと、コアの中に入ることができ、新しい武器を手に入れることができた!
その中でも凶悪なのが、アップレーザー。二段階にパワーアップでき、二段階目は、リップルレーザーのように広がっていた。

ステージも多彩。巨像→植物→神殿→浮遊大陸→炎→細胞→要塞と進む。
今回は、デモにも出てくる「ヴェノム」が敵のボスなのだが、要塞面までたどり着くと、デモが流れる。惑星グラディウスに向かっているので戻って来いと。ここからなんと、今まで来たステージを逆順にもう一度進む必要があった。
単純に戻るだけでなく、炎面では、レーザーを跳ね返すメイスという敵が出てきたりと一筋縄ではいかない。

巨像ステージをクリアすると、ヴェノム艦が現れる。これが真のボス。
クリアしたときは、長時間かかるのでぐったりしたものだw

この後、沙羅曼蛇やアーケード版グラディウスIIも移植されるのだが、MSXのオリジナルが強く、移植とは言い難いのだが、これはこれですごくおもしろかった。

<余談>
グラディウス2は、発売前にパソコンショップロケテストを行っていた。近くのベスト電器にも置いてあって、友人Kと店頭で数時間プレイしていた記憶がある。
製品版とはステージ構成が違っていた。そして、ゲーム大会も開かれた。友人Kと一緒に参加したけど、結果は全く覚えていないw

36.最後の学園祭でクイズゲーム作った

5年生、最上級生になった時の学園祭。
この前のエントリーで書いたのと同じく、カバラ数秘術をベースにした占いは、ベースのプログラムだけ作ったあとは、後輩たちにひたすらデータ入力させて作らせた。
そうすると、自分たちが暇になる。

そこで、秋葉原で買ってきたMSX turboRを使って何かできないかと考えた。
アクションゲームなどを作る気力も余裕もなかったので、即却下w
当時からクイズが好きで、クイズゲームなら、文字だけ表示すればいいからすぐできね?と、占いと全く同じひらめきwで、4択クイズを作ることにした。
ただ、子供もたくさん来る学園祭。キーボードで選択させると壊されると思った私は、自分で選択ボタンを4つ付けたコントローラを作ろうと決めた。
(部員や同級生には、子供がキーボードの操作をするのは難しいだろ?と言っていたww)

パーツ屋で材料を調達して、半田ごてで配線。コネクタも規格化されていて買いやすいし、配線についても情報が開示されていたので、それほど難しくなくできた。
当日は、大盛況とはいかないまでも、楽しんでもらえている姿を見ることができて、満足できた。
そして、これから先、”RUN”を入力することは無くなった…

35.MSX turboRを買った(パナソニック FS-A1ST)

高専では修学旅行の代わりに、5年生のときに会社訪問をする。
電子系の学科だったので、ソニー富士通に行った。ソニーでは発売直前のMD初号機を見せてもらったり、富士通では言語認識して自動的にテキストに起こすソフトのデモを見たりした。
会社訪問が終わったら、東京で現地解散。その間下級生は試験期間中なので、それが終わるまでに帰ってくればよかった。
もちろん東京観光も楽しみだったが、一番の目的は秋葉原!中古のMSX turboRを買うつもりで来た。

中古PCを扱っている店舗をいくつかめぐって、本体のみ箱なしのこいつを購入。
重たい本体を抱えながら、寝台列車で帰ってきたのは良き思い出♪
f:id:CORO3:20200316002227j:plain

最後のMSX規格のturboRは、アスキー製の16ビットCPUのR800を搭載しており、今までのMSXの倍のクロックスピードで動く。
プログラムの実行速度は、平均10倍高速になるという、夢のようなマシンだった。

<余談>
当時の秋葉原は、まだメイド喫茶もなく、純粋にパソコンやそのソフト、電子工作の部品を見るような街だった。
ふらっと裏道に入ると、マニアックな店がたくさん並んでいた。
関東に就職してからは、毎週のように遊びに行っていたなぁ。

34.C言語 その2

※ 今回の内容は、技術的に解釈を間違えている可能性があります。
  C言語の勉強をしている人は、別のちゃんとしたサイトをお勧めします。

この前のエントリーでも書いた通り、卒業研究は、フローチャートから、C言語のソースを生成するジェネレータ(というには恥ずかしい代物だったが…)を、Turbo Cで開発することなった。
データ構造を担当していた私。複雑なフローチャートでなければ、二分木構造を使えば実現できると考えた。(この辺はGoogle先生に聞いてねw)

二分木は、その名の通り、二方向に枝が伸びていくようにデータをつないでいくアルゴリズム。普通は検索を早く行うための考え方の一つ。
これをC言語で実現するには、構造体を使う。誤解を承知で言うと、変数の塊を自分で定義するものと、ポインタと呼ばれる仕組みを組み合わせる。
このポインタ、C言語のプログラミングで最もハードルが高いと言っても過言ではない。
簡単に言うと、変数の住所(アドレス)を知ってるのがポインタ。
その場所に何のデータがあるかは、知らなくていい。この概念が理解できるまで、なかなか…。
例えばこんな感じ。

#include <stdio.h>

void main() {
    int a;
    int *pos; /* int型のポインタ */

    a=1;
    pos = &a; /* ポインタに変数aのアドレス(&a)を代入する */

    printf("a=%d\n",a); /* aの値を参照 */
    printf("pointer a=%d\n",*pos); /* posのアドレスにある値を参照 */
}

同じ実行結果のように見えるけど、片方は変数がaであるかを知らずに、int型の変数の値が格納されたアドレスをもとに直接メモリの中身を見ている。
サンプルのような使い方は普通しないけど、ポインタを使えば変数のコピーが発生せず、メモリの消費や、プログラムの速度低下を抑えられる。
そして、二分木のような構造は、配列変数とかでもできるけど、間に挿入したり、削除したりするときに、前後のデータとのつながりをポインタの接続先を変えるだけで済むので、効率がいい。

C言語は、メモリの確保と解放が超重要。BASICだと自動的にメモリがなくなれば、エラーで止まるけど、C言語だと管理がちゃんとしていないと、アセンブラと同じようにメモリ破壊を起こして、暴走するプログラムになる。
それでも、BASICとは段違いに実行速度が速いプログラムが作れるから、楽しみながら開発(この頃はそう思っていたが、ずいぶんと低レベルだったw)できた。

<余談>
卒論は最後に、クラス全員の前で発表するんだけど、担当の教授に不幸ごとがあり、当日は居ない。さらにプレゼンの資料作成はしたものの、リハーサルもチェックもなし。ぶっつけ本番で発表したのだが、まぁグダグダに…ほかの教授からの質問にもグダグダな内容で答えてたなぁ。よく卒業できたもんだw