ファミコンのプログラム4 (567レス)
1-

235
(1): 名前は開発中のものです。 [sage] 2014/05/20(火) 00:15:36.83 ID:sHOtKBex(1) AAS
>>140
140(8): 名前は開発中のものです。 [sage] 2014/04/10(木) 21:41:45.23 ID:hnCuty6F(2/2) AAS
開発途中で、まだゲームの体裁になっていないけど、自作のソフトをさらしてみる。
src.zipにソース一式入っているので、参考頂ければ幸いです。

外部リンク[zip]:homepage3.nifty.com

十字キーでカーソル移動、Aボタンが時計回り、Bボタンが反時計回りに宝石を回します。
宝石が4個以上つながったら消滅します。
宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす
このスレッドで新しい演出ジャンルに出会えたのは嬉しいね

>>199
199(8): 名前は開発中のものです。 [sage] 2014/05/10(土) 19:06:34.44 ID:ShrxaRho(2/4) AAS
ちなみに作りたいカセットとはこれです.
この1週間ちょっと頑張ってインプリしてました.
アセンブラなんか普段いじらないので,めちゃくちゃです.
でも,このスレはちょくちょく見てるので,恩返しに公開します.
外部リンク[zip]:sayonari.com
綺麗に書き直したかったですが,しばらくいじれそうにないので,
皆さんに託します.

FCEUXではちゃんと動くんですが,ROMに焼いて,
FC互換機(GCC NEXT)で動かすと,
スプライトがチラチラと画面中に散らばって表示されます.

メモリ管理とかちゃんとしてないし,変なところに書き込んだり,
PPUアクセスのタイミングがむちゃくちゃだったりとかが原因だと思います.
互換機じゃなくて正規版本体ならちゃんとうごくのかな・・.
土管避けるの難しいけど楽しいね
BGの判定は凄いと思う
どんどん成長してゆくのが楽しみ
236
(3): 140 [sage] 2014/05/28(水) 20:00:45.64 ID:pcO3WytB(1/2) AAS
ジョイパッドの読み取りルーチンをリファクタリングしたら結構コンパクトになった。
6502のアセンブラは奥深い。

Joypad_Update:
lda #$01
sta $4016
lsr a ; same as lda $00 & sec
sta $4016

ror a ; same as lda $80 & clc
sta <JOYPAD
sta <JOYPAD+1
.1
lda $4016
and #$03
; clc
sbc #0
ror <JOYPAD
lda $4017
and #$03
; clc
sbc #0
ror <JOYPAD+1
bcc .1

rts

>>235
ありがとうございます。
237
(1): 140 [sage] 2014/05/28(水) 20:07:39.22 ID:pcO3WytB(2/2) AAS
あ、

sta <JOYPAD
ror a ; same as lda $80 & clc
sta <JOYPAD+1

として、JOYPADには$00入れないと不味いね。
238
(1): 名前は開発中のものです。 [] 2014/05/29(木) 00:32:25.75 ID:Ix+yqrZv(1) AAS
>>237 (clcと)sbc #0をcmp #1にすればsta <JOYPADは不要
239: 140 [sage] 2014/05/29(木) 01:07:17.19 ID:Lo1UVUXb(1) AAS
>>238
ああ、確かに。さらに小さくなりました。
ありがとうございます。
240
(1): 名前は開発中のものです。 [sage] 2014/06/04(水) 21:11:42.02 ID:Wpb6i0Ha(1) AAS
RevolvingGemsのゲーム本体部分が出来ましたので公開します。

外部リンク[zip]:homepage3.nifty.com

残りはタイトル画面と遊び方画面を実装して終わる予定。
241: 名前は開発中のものです。 [sage] 2014/06/04(水) 21:35:20.41 ID:EpTIlg4F(1) AAS
すげー
242
(1): 名前は開発中のものです。 [sage] 2014/06/04(水) 23:51:21.70 ID:78Tpkbjc(1) AAS
商用レベルのできだと思う。
気になるのは、連鎖がどんどん発生しやすすぎではないのかなと
243
(1): 名前は開発中のものです。 [sage] 2014/06/05(木) 01:19:37.09 ID:9NxYghum(1) AAS
>>242

連鎖しやすいのは、6方向に対して6種類の駒しかないので
仕様上、確率的につながり易いのが原因です。
駒の種類を増やせれば良いのですが、パレットが足りないw

最初は3個つながったらで実装していたのですが、
あまりにも連鎖が続くので4個にしています。
それでも消せなくなることが無く延々と続けられるので、時間制に逃げました。

作って思ったのは、ぷよぷよの仕様は絶妙なバランスなんだなぁと。
244
(1): 名前は開発中のものです。 [sage] 2014/06/05(木) 23:11:37.79 ID:hfWG3l/O(1) AAS
追加された音楽がスタートで変更できるのは、個人的にうれしいですね!
後、セレクトボタンはどんな効果があるのでしょうか?(効果音だけ?)
245
(3): 131 [sage] 2014/06/06(金) 19:17:42.85 ID:5n3Zcu9W(1/2) AAS
131です。あの後、
いろいろ注意深く書き込みを見ていたのですが
人に意見されるってすごく大事だと思いました。

ちなみに、cc65でオセロとShootingGameSampleを作ったのと、
nesasmでブロック崩しを作ったのも
自分です。

今までは自分はチキンで人に意見言われるだけで、
むっつりと黙っていましたが、これからは
もっと能動的に動きたいです。

ファミコンのブロック崩しをソース付きで晒すので
汚いし、ロジック的におかしいところばかりですが、
見てやってください。

僕はカービィやマリオ、くにおくんのファミコン少年の一人の
つもりなのでファミコンは、ホント好きですし、このスレッド
を最初から見ています

外部リンク[zip]:www1.axfc.net
246
(3): 131 [sage] 2014/06/06(金) 21:24:59.35 ID:5n3Zcu9W(2/2) AAS
こんな事書き込みたくて書き込むわけじゃないですけど、
ファミコンの正常動作って何ですか?
どうすれば正常動作っていうんですか?

いつまにか、このスレッドは本物のROMと同じように動かす為に努力してる
人たちを称え、褒めてきました。

正常動作って定義がどこにあるかはファミコンで動作すれば分かるんじゃないですかね。
それ以外を異常動作というなら、エミュレータはほぼ全て異常動作ですよ。
247
(1): 名前は開発中のものです。 [sage] 2014/06/06(金) 22:02:30.07 ID:4Zl9JWw3(1) AAS
>>243
始まった瞬間操作する前に勝手に連鎖するってのだけでも
どうにかならないかな
初期配置のみパターンで持つとか
248: 名前は開発中のものです。 [sage] 2014/06/06(金) 22:51:57.22 ID:kdjIsC0c(1) AAS
>>246
そうですよエミュは異常動作ですよ
実機で動かないのを言い訳してるだけにしか聞こえませんね
249
(1): 131 [sage] 2014/06/07(土) 03:42:43.36 ID:hwRmu2MG(1/8) AAS
本当に実機で試したのか知りたいですが、
自分の言いたい事は実機で動かない事の言い訳じゃなくて、

ファミコンのプログラミングが1つの古代技術でそれが通用するのはあくまでファミコンのみ
という事なんですが**が素晴らしいとか**の技術は優れているとかのある意味
マニアックな話の流れになっているというか、

ぶっちゃけ、自分の作ったファミコンゲームは技術的には全然優れてないので、
優れた技術を持った人たちに憧れたみたいなところがあります。
250: 131 [sage] 2014/06/07(土) 03:52:27.88 ID:hwRmu2MG(2/8) AAS
**には、ラスタースクロールやスプライトダブラー、
FFの高速スクロール、BGの高速書き換え、パレットアニメーション
を入れてください。
251: 131 [sage] 2014/06/07(土) 09:33:01.78 ID:hwRmu2MG(3/8) AAS
cc65の作ったやつは(REVERSI,SHOOTING GAME SAMPLE)動く自信がないですが、
nesasmで作ったやつも(IWA WO OTOSE,BLOCK)動かないんですかね。
252
(1): 名前は開発中のものです。 [sage] 2014/06/07(土) 10:52:19.34 ID:0OqTmEOh(1/5) AAS
>>244
スタートとセレクトは、サウンド系の開発用にテストできるように追加していた機能で
今回スタートを少し改良して選曲出来るようにしました。
セレクトは、効果音を作る時以外は意味を成さないので、次の完成版では削除する予定です。
253: 名前は開発中のものです。 [sage] 2014/06/07(土) 11:09:37.37 ID:0OqTmEOh(2/5) AAS
>>247
初期配置をパターンで持つのは、バリエーションを作るのが大変なので、
採択したくないですね。

代わりに内部で連鎖が止まるまで処理を繰り返して、
そこからゲーム開始するよう実装してみます。
254
(1): 名前は開発中のものです。 [sage] 2014/06/07(土) 11:18:00.96 ID:0OqTmEOh(3/5) AAS
>>249
私も最終目標は実機で動作させてみることなのですが、
そこまでの道が遠い状態です。

一応、動作させるための目処は立っていて、材料とかもそろえたのですが
ROMライターから自作せねばならないため、いつになるかわかりません。

実機で動作したのを確認して初めて、ファミコンのプログラムを作ったと、
胸張って言えるかと個人的には思っています。
255: 131 [sage] 2014/06/07(土) 14:24:42.36 ID:HAL7UNXv(1/2) AAS
>>254

ネットカフェから書き込みです。

そうですね。ファミコンの実機で動いたら感動しますし、
実機で動かしたいです。

ファミコンの実機は持っているのですが、ROMライターや
EEPROM、同軸ケーブル、ビデオデッキ、自分用のテレビ
256: 131 [sage] 2014/06/07(土) 14:27:25.94 ID:HAL7UNXv(2/2) AAS
など問題が山積しているので、現段階では難しいです。
257
(2): 名前は開発中のものです。 [sage] 2014/06/07(土) 15:48:51.46 ID:0OqTmEOh(4/5) AAS
>>245
一通り読んでみました。

.bank 0 ; バンク0
.org $0300 ; $0300から開始、スプライトDMAデータ配置
Paddle00_Y: .db 0 ; スプライト#1 Y座標
Paddle00_T: .db 0 ; スプライト#1 ナンバー

WRAM領域の$0300にデータ定義の記述があるが、
ビルド出来ているのであろうが、記述としてはまぎわらしいので

Paddle00_Y = $0300
Paddle00_T = $0301

と記述した方が良い

.memclearloop
  sta [$00],y
  iny
  cpy #255
  bne .memclearloop
254までしかループしていない。cpy #255が不要
258
(1): 名前は開発中のものです。 [sage] 2014/06/07(土) 15:49:29.84 ID:0OqTmEOh(5/5) AAS
>>257

続き

VBlank直後に行うべき処理と、ゲーム本体の処理を分離したほうが良い。

パッドとボールの座標と、スプライトの座標は別に持っておき、
パッドとボールの座標をスプライトデータに反映するにように
実装した方が、プログラムの書き方としては綺麗だと思う。

VBlankのタイミングを考えずに、スプライトとBGの表示をOFF/ONにして
VRAMを書き換えるのはやめた方が良いと思う。
nestopiaとかでも普通に表示できていたけど、書き換え量が多くなると
画面がちらつくのでは?

  jsr Pad_Check

ソース上に Pad_Check が見つからない。

lda #0 ;これはROMなので出来ないので、こうする
sta STAGE1,x ;〃

ROMに0を書き込む意図がわからない。

VRAM書き込み先のアドレスをブロックの座標から
計算しているが、ブロックの配置位置が有限個であれば
表引きで求める方法もある。
(Y座標だけでも表引きにすると処理が結構簡素化します)
259: 131 [sage] 2014/06/07(土) 17:02:04.46 ID:hwRmu2MG(4/8) AAS
ギコ猫さんのところで、覚えた技術ばかりという理由は
英語が出来ないという理由なのですが、これは理由になってないみたいですね。

?英語が出来ない

?英語の技術情報が分からない

?日本語だけの技術情報に頼る
の無限ループなので、英語を中学英語から
やり直したいと思います。

ちょうど良い本がアマゾンで見つかったので
外部リンク:www.amazon.co.jp

あと、スプライトの定義のその定義の仕方は知らなかったです。
でも、ある意味スプライトDMAのアドレスを考えれば当たり前なんでしょうけど。

iny cpy bneの間違いは、間違えて覚えていました。

ギコ猫さんとこはパレットの読み込み時に
ldx #0
.loop
lda ourpal,x
sta $2007
inx
cpx #32
bne .loop
みたいにやっていたのですがよく考えれば、0-31までを読み込んでいたんですね。
これは、引き算の小学一年レベルの間違えですね。差がNの時、合計数は、N+1になるという事なんでしょう。

つづく
1-
あと 308 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s