ファミコンSTGを作ってみました。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KEYONN_

ファミコンSTGを作ってみました。

#1

投稿記事 by KEYONN_ » 15年前

C言語で作ったので、処理速度は恐ろしく遅いですが、
一応、シューティングっぽいゲームに仕上がっています。
縦スクロールで、敵は3種類、ボスはスコアが5000以上で現れます。
サウンドは矩形波をメインサウンドとサウンドエフェックトに使用し、
ノイズ波を爆発音にしました。

※敵や敵の弾に当たると即ゲームオーバーです。

実行には、ファミコン(NES)エミュレータが必要です。

ハイスコアを競うゲームです。

ひよこ

Re:ファミコンSTGを作ってみました。

#2

投稿記事 by ひよこ » 15年前

やってみましたが、意外と処理が重いです。自分のパソコンのメモリが少ないからですかね。
私がゲーム出来ないせいか、1200点くらいで負けます。ボスも見れません。
時間制のほうが私はいいと思います。

しかし、よく出来てました。制作お疲れ様です。
次回作、楽しみに待ってます。
環境
エミュレータ VirtuaNES
OS Windows Vista Home premium CPU Core 2Duo(2.1GHz)

KEYONN_

Re:ファミコンSTGを作ってみました。

#3

投稿記事 by KEYONN_ » 15年前

>>ひよこさん
プレイしていただき、ありがとうございます。

http://hp.vector.co.jp/authors/VA042397/nes/index.html
ファミコンのCPUは、1.79MHzで、メモリも2kByteしかないので、
このゲームが原因だと思います。

このゲームが重い原因は、安易に線形探索を行ってるからでしょう。
というか、それしか知らないです。→(探索アルゴリズム)

ひよこ

Re:ファミコンSTGを作ってみました。

#4

投稿記事 by ひよこ » 15年前

メモリも2kByte
>>それしかないんですか、開発も大変ですね。
>>自分のSTGがメモリを無駄に使っているのを考えるとメモリの贅沢だと思いました。

3000点くらい、いったのでついでに言わせてもらえると、
ゲームの最初と、自機がやられた時の、画面のゆれ?絵のゆれみたいなものは仕様でしょうか?

KEYONN_

Re:ファミコンSTGを作ってみました。

#5

投稿記事 by KEYONN_ » 15年前

>>ひよこさんへ

>>3000点くらい、いったのでついでに言わせてもらえると、
おお、おめでとうございます。
アイテムが1000点に達した時と、3000点の時に上から降ってきます
ので、取っておいたほうがいいですよ。

>>ゲームの最初と、自機がやられた時の、画面のゆれ?絵のゆれみたいなものは仕様でしょうか?
これは、僕が一般的な画面の書き換え方を知らない為に起こる現象だと思います。

あと、このげームの高速化の為にもっと検索速度の速い、探索アルゴリズムを探してみたいと考えています。

softya

Re:ファミコンSTGを作ってみました。

#6

投稿記事 by softya » 15年前

遊んでみました。めちゃ重いです(^^ゞ
STGは苦手なので、ボスまでたどり着けません&あとEASYはなぜか選べません?
ファミコンでのシューティングなので懐かしい感じがしましたよ。

書き換えが見えるのは、裏で書き換えてから切り替えていないからでしょう。
別のネームテーブルに新しいパターンを作っておいて、コントロールレジスタ1 でネームテーブルアドレス指定を切り替えてやれば一瞬で切り替わりますよ。
それと背景のつなぎ目あたりで一瞬スクロールがおかしくなります。バグがあるかもしれません。

klos

Re:ファミコンSTGを作ってみました。

#7

投稿記事 by klos » 15年前

なんだか懐かしかったです(*^^)

VirtuaNes 0.97
nesterJ 0.51b
NNNesterJ 0.23
で、遊んでみました。
FAMTASIA 5.1では不安定、というかほぼ動かない・・・古いエミュレータだから仕方ないかもです。
皆さん書かれてるように、やはり重いですね(^^; 弾を連射する時が・・・。

気になった点を。
(1)一定以上の点数になると、またゼロに戻るのでしょうか?
    正確な点数は分かりませんが、2万点近くは行けました。
    ただし、もっと高い点数になると、ゼロに戻って一周するようです。
(2)ボスに1度でも弾を当てるとボスの機体が常に爆発している状態になります。
    これは仕様でしょうか?
(3)画面の端にはみ出ると、反対側から現れる。
    バグのようにも思えますが、使い方次第ではゲームに面白みを加える事ができそうですね。
    左右や後ろ方向に発砲する機能を付ければ、反対側から現れて敵機を撃墜・・・
    なんて事もできそうです。
    シューティングゲーム、作る事もやる事もあまりないのですが、面白い機能という事で。
(4)ゲームが終わる時にハイスコアを表示してほしい
    1発当たると即ゲームオーバーなので、「あれ、今何点だったっけ?」なんて事があります。
    まだ開発途中のようなので、今処理は暫定的なものかもしれませんね。
    その場合はお節介失礼しました。

でも、懐かしのピコピコ音が聞けて良かったです(*^^)
ファミコンゲームの開発となると資料が少ないでしょうが、楽しみながら続けてくださいね。

バグ

Re:ファミコンSTGを作ってみました。

#8

投稿記事 by バグ » 15年前

ボスを倒した瞬間にいきなりGameOverになるのはビックリしますw

けんたろうちゃん

Re:ファミコンSTGを作ってみました。

#9

投稿記事 by けんたろうちゃん » 15年前

すごいですねー。ホントにすごいです。
C言語からファミコンプログラムができるなんて知りませんでした(アセンブラとかにも興味ありますが)。

KEYONN_

Re:ファミコンSTGを作ってみました。

#10

投稿記事 by KEYONN_ » 15年前

>>softyaさんへ
>EASYはなぜか選べません?
タイトル画面でセレクトボタンを押してください。

>書き換えが見えるのは、裏で書き換えてから切り替えていないからでしょう。
>別のネームテーブルに新しいパターンを作っておいて、
>コントロールレジスタ1 でネームテーブルアドレス指定を切り替えてやれば一瞬で切り替わりますよ。
そ、そうなんですか…。知りませんでした。

>それと背景のつなぎ目あたりで一瞬スクロールがおかしくなります。バグがあるかもしれません。
バグですね。0x2005辺りでの指定がまずかったんだと思います。

>>klosさんへ
>(1)一定以上の点数になると、またゼロに戻るのでしょうか?
そうです。実は、スコアにあてられている変数は、unsigned char型の8ビット変数です。だから、25500点が
最高点で、それを過ぎると、0に戻ります。10桁目と1桁目はダミーです。

>(2)ボスに1度でも弾を当てるとボスの機体が常に爆発している状態になります。
連射してるからそう見えるのかもしれませんが、実際は違います。
EASYとHARDだと、ボスとの当たり判定が変わってきます。
EASYだと、当たり判定で自機弾が消えません。
HARDだと、当たり判定で自機弾が消えます。
多分、EASYで、自機弾が消えない分のフレーム数だけダメージを与えている為、
そう見えるのでしょう。

>(3)画面の端にはみ出ると、反対側から現れる。
これは、あまり想定していなかった事です。単なる怠けです。

>(4)ゲームが終わる時にハイスコアを表示してほしい
これは考えておきます。

>>バグさんへ
>ボスを倒した瞬間にいきなりGameOverになるのはビックリしますw
そうですね。。音楽だけでも変えるべきだったでしょうか…。

>>けんたろうちゃんさんへ
>すごいですねー。ホントにすごいです。
>C言語からファミコンプログラムができるなんて知りませんでした
>(アセンブラとかにも興味ありますが)。
cc65という海外の6502(ファミコンのCPU名)の開発環境です。
http://www.cc65.org/
ブルジョアソフトウェア研究所というWebサイトでサンプルがダウンロードできるので
もし興味がおありなら、やってみてはいかがでしょうか?
http://hp.vector.co.jp/authors/VA042397/index.html

閉鎖

“C言語何でも質問掲示板” へ戻る