エレ玩 Konyaの開発記録

アクセスカウンタ

zoom RSS PIC24Fでパックマンもどき(効果音実装編)

<<   作成日時 : 2008/05/06 17:54   >>

面白い ブログ気持玉 2 / トラックバック 0 / コメント 8

 PIC24FとNokia128x128カラーLCDで作るパックマンもどき。
今回は効果音の実装です。

画像


効果音の出し方については、以前のPIC24Fでインベーダもどき(ハード&ソフト編 効果音を出す)で解説しています。
効果音の周波数設定については、ひたすらカット&トライです。

試せども、試せども理想の音は出ず・・・
そしてあきらめる・・・・

では、見て聞いてください。
そしてガッカリしてください!!

 PIGC__PAC_02.wmv

どうでしたか? ガッカリして頂けましたか?
でも安心してください。
一番ガッカリしているのは私です!!

     ・
     ・
     ・

動画で気付いた方もいるかもしれませんが、アカベイ以外のモンスター移動ルーチンも追加しました。

ただし、適当に作ったところもあり、また検証もしていないので正しい動作をしているか不明です。

特にグズタの動作はいい加減です。
グズタの追跡モードの動作定義は以下ですが、

  パックマンから半径約130ドット外ではアカベイと同じ追跡方法、
  半径内ではパックマンの移動に関係なく動く


「パックマンの移動に関係なく動く」とはどう動くのですか?
とりあえず、画面中央あたりをうろつくようにしています。

また、半径は√(パックマン.X−グズタ.X)^2 +(パックマン.Y−グズタ.Y)^2で求めると思うのですが、
ルート演算が面倒なので (大きい方のX−小さい方のX)+(大きい方のY−小さい方のY)で求めています。
つまり半径ではなく、XとYの距離を足しただけの数値に、「130ドット」を適当に補正して比較しています。

これで勘弁してください・・・

それから、目玉状態でモンスターハウスに戻れないバグは、モンスターのみの一方通行を一時的に解除することで逃げています。

これで勘弁してください・・・


では、今回のプロジェクトファイル一式です。

PIGC_PAC_02.lzh (MPLAB IDE v8.01で作成)

各ファイルは下のようにAdd Fileしてください。(前回までのPIGC_PAC_00/01と同じです)

画像



残すところ、コーヒーブレイクデモのみです。
多分、次回が「PIC24F でパックマンもどき」の最終回となるでしょう。

同じネタばかりでいい加減、飽き飽きですがもう少しお付き合いください。

では、また。


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(8件)

内 容 ニックネーム/日時
ガッカリどころかバッチリでは
ないでしょうか!

1チップマイコンにここまで詰め
込んだとしたら、おつりが来る位
充分では?という気がします。
っていうか、私にはとても…
という感じです。

音声出力はPWMで矩形波出力で
しょうか?それにしても音声と
キャラの動きが並行して動くのが
すごい緻密です!

PICにPSGやFM音源が
付いていればもっと楽なんで
しょうけどねー。

そういえばグズタ。探してみた
んですが、130ドット以内では
どんな動きになるのでしょうね?
私もわからず仕舞いでした…

あと、目玉状態で帰る道ですが、
私が調べた範囲ではやっぱり一方
通行を無視するのが正解のよう
な気がします。

それにしても、PIC1個で
ここまでとは!
nekosan
2008/05/07 00:38
nekosanさん、いつもコメントありがとうございます。

おっしゃる通りPWMで矩形波出力です。
PSGやFM音源搭載でゲーム製作に特化した1チップマイコンがあれば使ってみたいですね〜
一般にはあまり売れないかもしれませんが・・

グズタや目玉状態の調査ありがとうございます。とりあえずはこのままとしておきます。

残すところはコーヒーブレイクデモのみです。
心は既に次のゲームに移っているのですが、もう一頑張りです。
Konya
2008/05/07 07:55
いい雰囲気でてます。GOODですね。本来は複雑な音なんでしょうが、ここまで音が鳴ればすばらしいです。

秋月にヤマハ音源IC(YMZ294)というのが500円で売ってますが、これどうなんでしょうね。
「3系列の矩形波発生器と、1系列のノイズ発生器、エンベロープ発生器を内蔵、5V単一電源 18pinDIP 」とのこと。

でもPIC1個というのがミソなので、今回のもので、いいような気がします。
すん
2008/05/08 16:09
YMZ294ですが、ぐぐってみたら音のサンプルを載せいているサイトがありました。
http://www.mbin.jp/~masa-u/electron/ymz294/#SOUND
うーん、すばらしいです。
すん
2008/05/08 18:34
ムービーを拝見していて「これは!」
と思ったところが、イジケの音と
モンスターを食べる音が重なっている
(和音?)ことなのですが、これは
結構凝ったことをやっているような
気がしますが、いかがですか?

回路図から想像すると、PWMは1個
しか使ってないかと思うのですが、
それで和音って…

幾つかの音を、時分割してちょっとずつ
出力しているのでしょうかね?

画面動きと複数の音がスムーズに処理
されていて、かなり力の入ったところ
では無いかと思うのですが…

私もすんさんご紹介のヤマハのIC、
いつか使おうと思って以前秋月で仕入れ
て置いたのですが、まだ道具箱に入れた
ままになってます…

和音が簡単に出て、パーカッションも
重ねられるので便利なICですよね。
nekosan
2008/05/08 20:06
 すんさん、nekosanさん、こんばんは。
私もYMZ294買ってます!
そして死蔵しています・・・

電源5VなのがPIC24FやNokia LCDと合わせ難くて使わなかったのですが、すんさん紹介のサイトを聞くと、確かに使う価値はありますね。
見事にファミコンサウンドです。

また、nekosanさんのおしゃるような高度な事はしていません。
PWMは2個使い、それぞれ独立した周波数を発信しているだけです。
オープニングの音楽も一応、和音なんですが、
なんとも微妙な音を出していますね。
Konya
2008/05/08 23:29
そうなんですか。2つ使って
いるんですか。

伺ってばかりで申し訳ないの
ですが、PWMは直接ピンに
出力しているのではなく、
割り込みのトリガに使って
いる感じなのでしょうかね?

2つのタイマー回しておいて、
割り込みかかったタイミングで
出力ピンのオン/オフを切り替
える、なんて感じで…。

複数のタスクをOSの力借りずに
リアルタイムで切り替えるのは
なかなか骨折れるでしょうね。

特に音声なんて、ちょっとずれると
音が変わっちゃったり…

リアルタイムOSとかっていうのを
使うとそこらへんが楽にできるので
しょうかねぇ?
nekosan
2008/05/09 23:29
PWMは直接ピンに出力してますし、割込みのトリガにもなっています。

PIC24FのPWMはピンのオン/オフ制御をしつつ、1周期毎の割込み発生が可能です。

また、あらかじめサウンドデータとして周期(周波数)と振幅回数を設定しておきます。

割込み時に振幅回数をカウントし設定回数に達した場合は次のサウンドデータを読み出し、終了コードの場合はPWM停止、それ以外の場合は読み出した周期を設定しPWM出力します。

これを2系統のPWMで行っています。
かなり早い周期を設定すると、割込み回数も激増するためゲームの処理落ちが発生するでしょうし、もう一方のPWMに干渉して、nekosanさんの考え通り音色を変えてしまうでしょう。

しかしプログラム自体は割込み処理を書くだけなので簡単です。
あとはPICまかせ、処理落ちしないことを祈るだけです。
私らしい、行き当たりばったりプログラムです。
Konya
2008/05/10 00:48

コメントする help

ニックネーム
本 文
PIC24Fでパックマンもどき(効果音実装編) エレ玩 Konyaの開発記録/BIGLOBEウェブリブログ
文字サイズ:       閉じる