Arcade Cabinet

自作したゲームコントローラを紹介します

NEW !
テーマ:

C言語(SGDK1.21)を用いて大好きなギャラクシアンをメガドライブに勝手移植しました。
去年の7月にC言語の勉強を開始し、CPUパワーが桁外れに異なるWindows(Core i7)環境でのプログラミングから始めたので、メガドライブのプログラミングは処理落ちにだいぶ苦しみました。


WindowsでのプログラミングはC++で、クラスの構築についてだいぶ悩んだのですが、C言語のポインタは中途半端な理解のみで、極力ポインタを使わない方針で行っていました。また、 C++でクラス構築よりオブジェクト指向を取り入れると、メンテナンス性の高いコーディングができるとのことでしたが、SGDKはC言語しか使えません。

メガドライブのプログラミングの勉強を始めて 2ヶ月、また処理速度の観点から、プログラミングは、環境に応じて重要視するべきことが異なることがわかってきました。

とにかく昔のCPUは遅いです!というか最近のCPU速すぎです。

 C言語ではクラスが作れないので、構造体や関数を多用していますが、構造体を関数に渡す場合も、直接構造体を引数として渡していました。参考書には、「構造体はデータが大きいので普通はあまり使わない。」「構造体のポインタを引数にすることで、構造体のポインタのアドレスデータだけを渡すと、やりとりするデータが少なくなり、処理速度が速くなる。」と書いてあります。書かれている通り引数をポインタにすると劇的に速度が向上しました。
また、「関数も必要以上に小さい関数を作りすぎると、速度が低下する。」とのこと、1-2回の関数呼び出しなら問題ないですが、for文で48回(エイリアンの数)ループすると無視できないかもしれません。さらにネストが深く複雑になれば、どこに処理時間がかかっているか分かりにくくなります。
メガドライブのような古いプラットフォームでは、小さな関数はあまり作らず、大きな関数に展開した状態の方が良いのかもしれません。
その他にも「必要な処理、条件分岐は必要な場合に1回のみに」など、様々な工夫を凝らしながらソースを改良して行っていますが、実はこの作業とても楽しいです!!!


そんなことを考えながら、以前から愛用しているこの2冊を改めて読んでみると、たくさんの発見がありました。
C言語の勉強にSGDKは最高です!


左はアーケードのギャラクシアンで、右は勝手移植したメガドライブ版ギャラクシアンです。何度も何度もプレイし比べて改良を重ねていっています。
妻にプレイしてもらったところ、違いがわからないと言ってくれました。が、全然まだまだです・・・

AD
いいね!した人  |  コメント(1)  |  リブログ(0)

AD

Ameba人気のブログ

Amebaトピックス

      ランキング

      • 総合
      • 新登場
      • 急上昇
      • トレンド

      ブログをはじめる

      たくさんの芸能人・有名人が
      書いているAmebaブログを
      無料で簡単にはじめることができます。

      公式トップブロガーへ応募

      多くの方にご紹介したいブログを
      執筆する方を「公式トップブロガー」
      として認定しております。

      芸能人・有名人ブログを開設

      Amebaブログでは、芸能人・有名人ブログを
      ご希望される著名人の方/事務所様を
      随時募集しております。