エレ玩 Konyaの開発記録

アクセスカウンタ

zoom RSS dsPIC33Fでプーヤンもどき

<<   作成日時 : 2010/03/16 22:36   >>

驚いた ブログ気持玉 14 / トラックバック 0 / コメント 7

 久々の更新です。年明けから何だかとっても忙しく、纏まった時間がとれませんでした。
これから年度末に向け、さらに忙しくなると思うので、ここらで頑張って更新しておきます。

さて、新型ゲーム機はPIC24FとdsPIC33Fの乗せ替えが可能ですが、今までPIC24Fばかりを使っていました。
ようやくdsPIC33Fを試します。
とは言え、時間もあまり無いことですし、サクサクと作ることを楽しみたいところです。
よって、今回はDMAやDACといった新しい機能には挑戦せず、dsPIC33Fの高速動作、大容量RAMの感触をつかむことにします。

PIC24FとdsPIC33Fの動作速度、RAM容量の違いは以下となります。

   PIC24F = PIC24FJ64GA002-I/SP
   dsPIC33F = dsPIC33FJ128GP802-I/SP


  最大動作周波数 : PIC24F 32MHz - dsPIC33F 80MHz
  内蔵RAM容量   : PIC24F  8kByte - dsPIC33F 16kByte



そして、今回のもどきはプーヤンです。
かわいいキャラが特徴のコミカルシューティングで、操作は2方向ジョイスティックと1ボタン。ブタママを上下に動かし、ショットボタンで矢を撃ち、オオカミを倒します。
私が中学生の頃に発表されたアーケドゲームですが、ゲームセンターではあまり遊んだ覚えがなく、やり込んだのは後年発売されたファミコン版でした。
良くできていたと記憶しています。

なぜツインスティックのゲーム機に2方向+1ボタンのゲームを移植するのかと思うでしょう?
私はかわいいキャラがちょこまか動くゲームに、たまらなくを感じてしまうのです。


移植にあたり、まず問題になったのが画面サイズです。
オリジナルでは縦256x横224ドットの画面サイズですが、本ゲーム機のLCDは128x128ドットと約1/4の画面サイズしかありません。よって、そのままの画面構成で移植することはできません。

パックマンもどきのときも同様の問題がありましたが、各キャラクタを1/4サイズ(16x16→8x8ドット)とすることでクリアしていました。しかし、プーヤンはかわいいキャラが売りのため、安易に小さくはできません。

残された手は一つ、キャラサイズを変えずに画面スクロールで対応するしかありません。
ブタママは縦にしか動かないので縦方向のみスクロールし、横方向は寸詰まりの画面構成とします。

実際の画面です。横方向は寸詰まりのため、オオカミとの距離が近くなります。

画像

画像



画面スクロールするなら、PIC内にVRAM(VideoRAM)を確保したくなります。
毎回言っているような気がしますが、スクロールするためにはその都度、背景の書き直し、キャラの重ね合わせが必要で、これをLCDモジュール内のVRAMで行うと描画タイミングが制御できず、画面がチラツク可能性があります。
PIC内のVRAMで背景、全キャラを書込み、その後にLCDへ一括転送すればチラツキを抑えることができます。

VRAMにはdsPIC33Fの16kbyteRAMの半分、8kbyteを割り当てることにしました。
画面サイズが128x128ドットなので、

 8192byte ÷ (128x128) = 0.5byte

1ドット当たり0.5byte(4bit)割当てることができます。
ってことは1ドット当たり16色を表現することができ、予め16色のパレットを設定しておけば4096色中任意の16色を表示することができます。 (LCDの描画モードが4096色(12ビット)設定の場合)

16色では貧弱な絵しか表示できない?
いやいや、この貧弱さがレトロくささとなり、良い味を出すのです。

画像


この方式では、1byte(1アドレス)で横2ドット分のデータを指定するため、横方向の奇数座標からの書き込みにはデータの加工が必要となり、処理が面倒になります。
横方向の書込みは偶数座標から開始することにし、キャラの移動も2ドット単位に制限することとします。
背景スクロール、キャラ重ね合わせの詳細は以前の記事、方式3を1ドット=0.5byteにしたものとなります。



動画です。
製作途中のため、音なし、お肉なし、面クリアなし。



さすが、dsPIC33Fです。
PIC24Fでの「ゼビウスもどき」の時と違い、スクロールゲームが作れそうです。
80MHzでの動作と、大きく確保したVRAMが効いていますね。



未完成ながら、ソースコード等を公開します。

  回路図(リンク先回路図にdsPIC33FJ128GP802-I/SPを搭載しています)

  プロジェクトファイル一式 (MPLAB IDE v8.46で作成)
  dsPIGY10_Poo_00.lzh

  プロジェクト作成時は下のように各ファイルをAdd fileしてください。

画像




今回はここまで。お疲れさまでした。


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 14
驚いた 驚いた 驚いた 驚いた 驚いた 驚いた 驚いた 驚いた
面白い 面白い 面白い 面白い
ナイス ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(7件)

内 容 ニックネーム/日時
いつも更新を楽しみに見ています。
自分も電子工作が趣味で、PICではないですがARMマイコンやFPGAなどをいじって楽しんでいます。Konyaさんのブログを見つけたときは、内容がハイレベルでびっくりしました。PICなどの小型機を使い性能を限界まで引き出してゲームを作りだすという技術に趣味を超えた技術者魂すら感じます。

今回の記事をみて自分ももっと頑張らなくてはと感じました。
Konyaさんもこれからもがんばってください。応援しています。
dbluejp
2010/03/18 12:43
お褒めの言葉ありがとうございます。
私はこじんまりとしたシステムでちまちまと節約するのが好きなようです。
好きこそものの・・・ ですね。
個人的にはARMやFPGAを使う方が凄いと思っております。
こちらこそ応援していますので共に頑張りましょう!
Konya
2010/03/18 23:27
ミンティヤを使っているところが、すごくおもしろいです
今年中一になるのですが、ぼくにもG&W作れますか?
それにプログラムはどうしていますか
MM
2010/04/01 09:48
若い方に興味を持ってもらって嬉しい限りです。
>ぼくにもG&W作れますか?
MMさんの電子工作に対する知識、経験が分からないので答えるのが難しいのですが、回路図が読めるのなら必要な道具、部品さえあれば「お手軽G&W」は作成できます。
回路図が読めないとしても地道に勉強すれば大丈夫です。
ただ、私のサイトでは解説が不十分なので、もっと丁寧に解説しているサイトで基礎を学んでください。
>プログラムはどうしていますか?
何を聞きたいのかイマイチ分からないので、質問内容を想像して回答します。

・プログラミング環境は?
PICには"MPLAB"と言う無料のプログラミング環境があり、
G&Wはその環境内でアセンブラ言語(ASM30)を使いコーディングしています。
・作成したプログラムをPICに書き込むには?
作成したアセンブラをビルドし、Hexファイルを作ります。
これをPICKit2と言う機器でPICにHexファイルを書き込みます。

ミンティアでの工作は薄いケースに様々な部品を詰め込むため、専用基板の作成や細かいハンダ付けが必要となり、少し高度な知識、テクニックが必要となります。
しかし、地道に経験を積めば必ずできるようになります。
是非是非、頑張って作りあげてください。
Konya
2010/04/02 22:38
G&W(マンホール)の回路図教えてください
お願いします
MM
2010/04/23 21:20
Konyaさん、はじめまして。
趣味で電子工作を時々しているド素人です。

秋月で気圧センサーユニットをその参考回路部品と一緒に、
衝動買いして、何ヶ月もまともに動かず大変な目に遭いました。

ようやく18F2550じゃ駄目な事に気がつき、国内で手に入れられない18LF2550を、
海外から通販で入手。今度は参考プログラムが、全く参考にならない事を知って、呆然!
オッチョコチョイの素人なんで、いつもこうなるはめに!

とあるサイトの参考プログラムを18LF2550用に修正して、
ようやく動く様になりました。殆ど意地ですね!

今では、16F886に回路、ソフトを修正して動いております。

で、今度はこれをグラフィック表示したくなって・・
でもいったい、ハンディの気圧グラフィック表示器が何の役に立つか?
てな事は、一切考えない事にして下さいね。

いろいろLCDを仕入れてみた物の、
ちょうど良い製作記事が見つかりませんでした。

そしてやっと、ここにたどり着きました。
ここの全てが参考になり、感動の嵐です。

PICを使用している事。
電源を電池駆動の3V系で統一していること。
ハンディで持ち歩けること。

SPIを内部ユニットに頼らず、
アセンブラでパタパタやって繋げていること等々・・

そして、ハード、ソフトの両方を公開してくれているのが本当に助かります。
早速、いろいろ部品を調達しました。
いろいろとゲームを楽しみながら、
自分のやりたい事を達成したいと思っています。

でも、いつになる事やら・・趣味だから・・ま、いいか!
トンちゃん
2010/06/04 15:00
トンちゃんさん、コメントありがとうございます。
また、返信が遅くなってしまい申し訳ございません。

いろいろと苦労しながら楽しんでいる御様子、共感致します。
悩んで、苦労して、動いた時が最高ですよね。
趣味の工作は、仕事と違いタイムリミットが無いためじっくり、ダラダラと悩めるところが良いところです。
その代わり未完成の作品が増えてしまうのですが...

今後、いろいろと情報交換宜しくお願いします。
Konya
2010/06/19 23:22

コメントする help

ニックネーム
本 文
dsPIC33Fでプーヤンもどき エレ玩 Konyaの開発記録/BIGLOBEウェブリブログ
文字サイズ:       閉じる