ファミコンのプログラム3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。
2008/06/23(月) 17:38:05ID:z53SrIuZでも900すぎてホンモノが現れたみたいだ。
もう要らねぇと思ってたけど、そいつらの為に立てたよ。
0880名前は開発中のものです。
2012/01/19(木) 23:12:11.02ID:7gbjzQb6このスレにそこまでプログラム等をあげるやつがいるかどうか
0881名前は開発中のものです。
2012/01/19(木) 23:58:29.93ID:hHtCo2gVデバッガすら使えない底辺層が動きませんって持ってくるだけだからなあ
キチンと作ってるなら自分で公開するだろうし
0882名前は開発中のものです。
2012/01/20(金) 00:30:36.45ID:Zdogrnih投稿する勇気とプログラムを作り遂げるやる気があれば怖くない!
0883名前は開発中のものです。
2012/01/21(土) 06:07:37.03ID:9bEmjgCC折角だから、昔ちょっと思いついてデモを作ったらNNNesterJでしかまともに動かなくて
仕様調べるのめんどくさくてそのままにほったらかしてた物を上げてみる。
ttp://loda.jp/2a03/?id=3
8×12の文字が出るだけ。ゴミが出るけど気にしない。
0884名前は開発中のものです。
2012/02/04(土) 01:29:41.51ID:2Pu07awTLODA.JPも終わるみたいだし・・・・
0885名前は開発中のものです。
2012/02/04(土) 22:13:10.59ID:hU4F/CcW0886名前は開発中のものです。
2012/02/05(日) 20:23:38.13ID:frUzAJqn後期の作品だとどの作品見てもフォントが足りないようには
見えなかったんだけど、何か解決策が見つかったの?
0887名前は開発中のものです。
2012/02/05(日) 21:51:04.38ID:7qDYFAai0888名前は開発中のものです。
2012/02/05(日) 22:22:17.86ID:frUzAJqnその辺がよく分からないんだけど
結局グラフィックに割り当てた分、使えなくなるフォントが出るんだから
容量が増えても解決しなくない?
0889名前は開発中のものです。
2012/02/05(日) 22:32:48.60ID:DiMK2dc4平仮名は全部使えるが、カタカナは使い回しまくり。
0890名前は開発中のものです。
2012/02/05(日) 22:59:50.38ID:Ov8gxOpfなんとかなりそうではあるな。
0891名前は開発中のものです。
2012/02/05(日) 23:03:34.78ID:ruANVDhiパターンテーブル見てこないゆとりバカうぜえ
0892名前は開発中のものです。
2012/02/06(月) 00:01:10.58ID:3h/dwAAc0893名前は開発中のものです。
2012/02/06(月) 00:10:28.33ID:3GeCH5V30894名前は開発中のものです。
2012/02/07(火) 00:31:08.33ID:WdJ6o1Xs0895名前は開発中のものです。
2012/02/08(水) 17:08:46.34ID:hRRRpEP8誰もいなくなると思うの
0896名前は開発中のものです。
2012/02/08(水) 20:06:57.16ID:4ST7s66W0897名前は開発中のものです。
2012/02/08(水) 21:24:51.91ID:4qeAEpGeいまのところそれが若年層に多く見られるってだけ
まともな奴だっているだろ?いないの?
0898名前は開発中のものです。
2012/02/08(水) 22:55:49.87ID:8Q9CDJtMヒント教えてもらっても、礼をいうどころか、こうやって捨て台詞吐いて勉強をやめるのがゆとり。
0899名前は開発中のものです。
2012/02/08(水) 23:14:06.21ID:gpqJUScRヒントどころかまるで間違った発言がか?www
こうやって自分が間違っていることにすら気付かないで
偉そうに勘違いしているのがゆとり。
0900名前は開発中のものです。
2012/02/08(水) 23:20:34.86ID:Y8a3Hkms0901名前は開発中のものです。
2012/02/09(木) 00:29:33.61ID:/kEIoADq0902名前は開発中のものです。
2012/02/09(木) 17:43:44.55ID:VhURgzOjと思っていたが、ギコ猫さんのソースを少し改造したやつで
lda #$20
sta $2006
lda #$00
sta $2006
lda #$01 ; 1番(レンガ)
; 120*8=960回出力する
ldx #120 ; Xレジスタ初期化
ldy #8 ; Yレジスタ初期化
.loadNametable2
sta $2007 ; $2007に書き込む
dex
bne .loadNametable2
ldx #112 ; Xレジスタ初期化
dey
bne .loadNametable2
とやれば出来ることが分かった。
よく考えればC言語で2重ループで掛け算の計算できるから当たり前といえば当たり前だが
0903名前は開発中のものです。
2012/02/09(木) 17:51:31.17ID:VhURgzOj0904名前は開発中のものです。
2012/02/09(木) 23:22:19.98ID:XoK1fOva>>後期の作品だとどの作品
後期ってドラクエV、Wのこと意図してるの?
ドラクエだけの話なら、TだけがCHRがROMで、U,V,WはCHRはRAMなんだけど。
>>フォントが足りないようには 見えなかったんだけど
IからWでカタカナが入れ替わったり多少の変更があるけど、
フォントとウインドウのパーツ数の合計に差はない。
エミュやYY-CHRでパターンテーブル見てない奴の勝手な感想。
ファミコン後期って言いたかったのかな?
どちらかに当てはめれば>>887 >>889 >>890 >>891 >>892全部正解
ということで質問自体がおかしい。
>>902
初歩過ぎる、ミスって904回になってる、日記乙
最近この辺の板、スマホのバカ発見器のバカ増えてる?こんなの立てちゃったり
http://toro.2ch.net/test/read.cgi/tech/1328227395/
0905名前は開発中のものです。
2012/02/09(木) 23:46:22.24ID:aYrAEr2kお前も相当馬鹿なんだな
少なくとも>>887は正解ではない
>>889が最初の正解
なんでこんなレベルが低いのばかり住み着いちゃったんだか
0906名前は開発中のものです。
2012/02/09(木) 23:51:41.58ID:EYsae1tP0907名前は開発中のものです。
2012/02/10(金) 00:00:58.29ID:kmTaVqDA0908名前は開発中のものです。
2012/02/10(金) 00:07:48.56ID:c+T5Rrwm町中とかウインドウ方式だとそもそもライン単位では無理
0909名前は開発中のものです。
2012/02/10(金) 09:50:24.25ID:T98mZ9CI腹いせだよ、腹いせ
0910名前は開発中のものです。
2012/02/10(金) 23:56:20.92ID:Bkz01ci5解決したとは読み取れないように書いたと思うんだが。
MMC5のデカいフォントのゲームでは
「容量が解決」も間違ってはいない。
0911名前は開発中のものです。
2012/02/11(土) 03:02:16.61ID:DMNaSAjwもっと簡単に
sta $2007
をいくつか並べのもアリだよ
0912名前は開発中のものです。
2012/02/11(土) 03:31:32.37ID:8uSTaWoM一つ一つのメッセージが短く少ないならこういう方法もアリだけど
ドラクエほどメッセージ量が多いと逆にレスポンスが悪くなっちゃう
8bit機は制約が大きいからデザインとプログラミングは不可分だよね
0913名前は開発中のものです。
2012/02/11(土) 16:40:46.31ID:XH8T0Uvm現在シューティングゲームを作ってみているのですが、BGの当たり判定で止まっています。
@ A B C
とブロックがあった場合、スプライトの弾がぶつかったら消滅というコードをくんでいるのですが、
スプライトと違い座標を用いた方法以外で、衝突判定を見る方法はないものでしょうか
ブロックと弾にカウンタを置いて、弾のカウンタとand演算等で分岐をとも思ったのですが、
ブロックの数によっては汎用性がなさそうなので、なにかあれば教えて下さい
0914名前は開発中のものです。
2012/02/11(土) 19:08:00.50ID:DMNaSAjw座標を使う以外にやりようはない。
基本は当たり判定を取りたい座標をブロックのサイズで除算。
除算をまじめにやるとしょぼいCPUでは遅いので、ブロックのサイズを
2^nにしてシフトで出来るようにする。
すり抜け対策とかドット単位当たり判定とかは説明がめんどいので
考えてくださいw
0915名前は開発中のものです。
2012/02/11(土) 23:11:04.33ID:XH8T0Uvmあぁなるほど徐算でしたか、感覚としては因数分解みたいな感じですね
ありがとうございます。
一応確認なんですが、私は当たり判定ではcmpによるネガティブフラグで判定をしていますが、その調子で大丈夫ですよね
0916名前は開発中のものです。
2012/02/11(土) 23:29:41.07ID:bvbq0wS4何事も試行錯誤です
0917名前は開発中のものです。
2012/02/11(土) 23:38:43.03ID:qaTR3LgQ0918名前は開発中のものです。
2012/02/12(日) 00:56:09.91ID:gUUDEgxLインデックスレジスタを用いた擬似的乗徐算を乗徐算と意識していなかったから
と言い訳しておきます
0919名前は開発中のものです。
2012/02/12(日) 02:17:00.92ID:/ainxqCj0920名前は開発中のものです。
2012/02/12(日) 05:02:51.58ID:E+fNx3cK0921名前は開発中のものです。
2012/02/12(日) 09:07:11.43ID:aKdW3vVV各人が車輪の再発見をしなきゃいけないなんて無駄もいいとこ。
0922名前は開発中のものです。
2012/02/13(月) 00:48:33.85ID:lzhnxno40923名前は開発中のものです。
2012/02/13(月) 01:49:33.22ID:+XSjeNKoそういやGBのゼルダがそのやり方っぽいな
というかもしかしてGBはみんなそのやり方なのかな
GBでカタカナに制限があるゲームって見ない気がする
0924名前は開発中のものです。
2012/02/13(月) 05:57:30.53ID:P3L21QRYGBはファミコンでいうCHR-RAMしかないからじゃないかな
カートリッジにCPU側のバスしか出ていない設計だったかと
0925名前は開発中のものです。
2012/02/18(土) 10:25:42.97ID:YR3CrAXp0926名前は開発中のものです。
2012/02/18(土) 23:48:26.97ID:E8fj6J+ZキャラクタをROMとして提供したゲーム機はファミコンくらいでしょう。
任天堂ハードにおいても。他ハードは、VRAMに展開する方式だし。
0927名前は開発中のものです。
2012/02/19(日) 01:38:31.81ID:up1P9huo家庭用って言っていいのかわからんけど
0928名前は開発中のものです。
2012/02/19(日) 16:42:10.96ID:HsfNQTml以上を表示できる仕組み登場したことはおもしろいですわ。ファミコンが
発売された当初は想定されていないことだったでしょうけど。これがあった
から、10近くは持ったのでは?と思っとりますよ。
0929名前は開発中のものです。
2012/02/19(日) 18:20:39.95ID:h5opwI+Kアダプタに16KBのCHR-RAMと漢字ROM(第一水準?)を搭載したおかげで、
標準で日本語表示と4色のフルグラフィック表示に対応してた。
(バンク切り替えのタイミング管理の方法は知らないけど、
多分ハードウェア側で任意のラインでIRQ生成する機能があったと予想)
ゲームソフトがでなかったのが非常に悔やまれる・・・
ディスクシステムを使える機能(?)も結局使われてないし・・・
これを見たとき、ファミコンとディスクシステムとキーボードと通信アダプタが
合体すれば、どんな楽しみ方ができるだろうと妄想してたよ
0930名前は開発中のものです。
2012/02/19(日) 20:55:13.09ID:U6dbhp2V出せない気がするんだが、それでどうやって漢字表示してたんだろう
結局キャラクタ自体も書き換える必要があるのかな
0931名前は開発中のものです。
2012/02/19(日) 21:53:51.47ID:h5opwI+K1パターンは8x8ドットで構成されるのだから、
ファミコンの一つの画面上に出せるパターン数は
32(横に並ぶパターン)x30(縦に並ぶパターン)=960パターンとなる。
ファミコンのPPUが一度に参照できるキャラクタは256個までなので、
画面描画中に3回バンク切り替え等の処理をする必要がある。
(大体32、64、128ライン目描画後のH-BLANK時)
漢字自体は、CPU空間に存在するROM・RAMからデータを読み、
I/Oを通して、PPU空間のRAMに書き込む。
0932名前は開発中のものです。
2012/02/19(日) 22:06:17.26ID:yDN7dT+T定義側を書き換えて表示させるってことか
0933名前は開発中のものです。
2012/02/19(日) 23:12:49.32ID:7lUDE9va0934名前は開発中のものです。
2012/02/20(月) 00:01:31.48ID:jCs3Ldayそうなんじゃね?
0935名前は開発中のものです。
2012/02/23(木) 22:29:16.92ID:9OQqfVZC0936名前は開発中のものです。
2012/02/24(金) 23:13:20.04ID:aLx23JaI0937名前は開発中のものです。
2012/02/25(土) 00:46:14.68ID:0truvwjhラグランジュポイントも8K以上のCHR-RAMを積んでいたのかと考えている
あの画像と、日本語フォントは512パターンで生成できなそう。VRC7はMMC5
の如く、Ex-RAMを使って2バイト指定でBGパターンを指定できるみたいなこと
はできなそうだし
0938名前は開発中のものです。
2012/02/25(土) 19:17:11.50ID:Abu3C86F文字関係(数字、ステータス表示に使う最小限の英字、ひらがなとカタカナを全文字、その他少々)で、都合約2KiB使ってる。
あとの2KiBが、マップとかのBG側のグラフィック用だけど、不足する場合でも、文字を置いてあるバンクは基本的に温存。
そのかわりスプライトのパターンを2KiBしか使わない。
それで浮かせたCHR-RAM領域を、バンク切り替えでBG側に持ってきて間に合わせてるだけ。
ヴィジュアルシーンのグラフィックとかは、デザインや演出上の工夫で、技術的に特に変わったことはやってない。
0939938
2012/02/25(土) 20:03:31.39ID:Abu3C86F当然だけど、常に>>938みたいにスプライトのパターンをケチって間借してるわけじゃなく、
普通にBGとスプライトで4KiBずつ分けあって、単に画面が暗転した際にパタンテーブルを書き換えるとか、
平凡にやりくりしてる状況の方がむしろ大半なので念のため。
0940名前は開発中のものです。
2012/02/26(日) 00:39:33.07ID:US8Vrh37解説サンクスなり
職人芸だったわけね
0941名前は開発中のものです。
2012/02/27(月) 17:29:23.40ID:d2Rr2gFY上は当たり判定で、スプライトの座標をタイルに変換させる。でもたまにルーチンで誤変換起こしてしまってる
デバッグしてもよく分からない
原因すらわからねぇ
0942名前は開発中のものです。
2012/02/28(火) 11:32:31.06ID:FLxgWkDL0943名前は開発中のものです。
2012/02/28(火) 13:11:12.77ID:DEMYa7pD0944名前は開発中のものです。
2012/02/28(火) 21:05:59.53ID:FLxgWkDL0945名前は開発中のものです。
2012/02/28(火) 22:42:52.32ID:ac5+J/w/・CrashBlock_Routine:でbcs, bccを使ってるのが敗因。 0<= 弾の中心座標 <8 の論理を構築できてない。
bpl, bmiを使った方が大小関係が直感的に分りやすい。
その際、lda <Bullet_Y_Center → cmp Block001y,x のように不等式で挟まれる側を先にレジスタにロードした方がやりやすいはず。
またadc, sbcと違い、cmp系の前にはclcは必要ない。
・ゲームループがまずく、infinityLoop:内のルーチンの実行回数のフレームレートが一定でない、不安定動作のおそれあり。以下のループが無難。
__ここでNMI有効にせよ__
infinityLoop: ;VBlankを待つ間は無限ループ
jmp infinityLoop
mainLoop: ;メインループ
__ここでNMIを無効にせよ__
;BGとスプライトの表示をOFF
lda #%00000110
sta $2001
lda #$3 ;スプライト描画のためのDMA転送
sta $4014
jsr BlockDisappear ;ブロック消滅;$2006-$2007への書き込みはNMI直後に、VBlankが終わる前になるべく早めに
jsr SetScroll ;スクロールセットもVBlankが終わる前になるべく早めに
;BGとスプライトの表示をON
lda #%00011110
sta $2001
jsr PadGet ;パッド入力チェック
jsr NormalBullet ;弾丸発射
jsr PlayerSpriteMove ;機体の移動
jsr CrashBlock ;ブロックと弾丸の当たり判定
jsr BulletPositionConvert ;弾丸の座標をタイル番号に変換
__ここでNMI有効にせよ__
NMIEnd:
rti
0946名前は開発中のものです。
2012/03/22(木) 16:43:43.53ID:NBlMXw6A0947名前は開発中のものです。
2012/03/22(木) 16:44:38.63ID:NBlMXw6A0948名前は開発中のものです。
2012/03/23(金) 05:49:38.45ID:EKmbrKmy0949名前は開発中のものです。
2012/03/24(土) 23:29:09.53ID:pi7aftbx0950名前は開発中のものです。
2012/03/25(日) 01:14:37.28ID:c32Eu5AGという話じゃなくて?
0951名前は開発中のものです。
2012/03/25(日) 17:19:57.67ID:W0Y8frQCttp://ll.la/Rv~l
ファミコンプログラミングがやりたくて、
試しにN106で全画面表示をやってみたんですが、
G-NESだとうまく表示できなくて……
VirtuaNES、nestopiaだと期待通り動くんですが……
上のURLにソースコードと、各環境で実行したSSをupしました。
詳しい方、原因とか教えてくれませんか?
0952名前は開発中のものです。
2012/03/25(日) 17:49:36.89ID:sx4Vwb9x0953名前は開発中のものです。
2012/03/25(日) 23:12:13.63ID:Ih97tOjy自作のnesをfdsファイルに変換して、fdsloadrでRAMアダプタに転送したことならある
(市販のnesをfdsファイルに変換するのは無理っぽい)
0954名前は開発中のものです。
2012/03/26(月) 21:41:21.79ID:q32IwSYQ>>952
返信ありがとう。
環境によってIRQカウンタの進み方が微妙に違うっぽいです。
初回にとりあえず1フレーム描画して、IRQカウンタの速度を取得しようと思います。
あと、>>951にupしたコードだと、VBLANK終了待ちに$2002のbit7を見たりしてますが、
これじゃVBLANKの検出ってできないんですね……。
(x,y)=(0,0)にゼロスプライトを置いて、それを見るように変えています。
なかなかむずかしいですね……。
0955名前は開発中のものです。
2012/03/26(月) 23:40:41.01ID:uRvDMM790956名前は開発中のものです。
2012/03/31(土) 14:42:03.41ID:upBLiWOtどうやればいいのでしょうか?
0957名前は開発中のものです。
2012/03/31(土) 18:44:20.80ID:lM09VNG10958名前は開発中のものです。
2012/04/22(日) 13:28:39.16ID:22nDGbXy0959名前は開発中のものです。
2012/04/22(日) 16:18:06.49ID:x+Av2sLm0960名前は開発中のものです。
2012/04/22(日) 17:21:10.63ID:22nDGbXy言葉足らずだったごめん。
ページ境界をまたがないとき、
ブランチしてもしなくても2サイクルなの?
0961名前は開発中のものです。
2012/04/22(日) 19:52:17.64ID:4jO4E/1Lページ境界跨がない分岐をしたら、3サイクル(↑に加えて、下位8ビット分のアドレス計算で1サイクル追加)
ページ境界を跨いで分岐をしたら、4サイクル(↑に加えて、上位8ビット分のアドレス計算でさらに1サイクル追加)
だったはず。
0962名前は開発中のものです。
2012/04/23(月) 06:49:12.90ID:XUn2WlEg何故、一部の命令でページ境界またぐと
1サイクル増えるのかも知らなかったんで、勉強になった
そういう仕組みだったのね
0963名前は開発中のものです。
2012/04/23(月) 15:19:07.79ID:/vOkL049PRGROM領域を32KBにして
$C000以降にもプログラムを書きたい場合には、ヘッダを
inesprg 2
にする以外には
どうすればいいでしょうか
0964名前は開発中のものです。
2012/04/23(月) 16:44:47.09ID:iUjnyHkr.bank 0
.org $8000
<ここにコード書く>
.bank 1
.org $a000
<ここにコード書く>
.bank 2
.org $c000
<ここにコード書く>
.bank 3
.org $e000
<ここにコード書く>
0965名前は開発中のものです。
2012/04/23(月) 16:51:12.56ID:Jr0Oiqmoありがとうございますッ
勉強になりましたッ
0966名前は開発中のものです。
2012/06/26(火) 23:00:34.30ID:dKkI9P+Q0967名前は開発中のものです。
2012/06/26(火) 23:07:03.84ID:Mm6viaGL0968名前は開発中のものです。
2012/06/27(水) 20:59:08.12ID:3QSG7wMg0969名前は開発中のものです。
2012/06/28(木) 03:04:51.03ID:Ap+z5IPf0970名前は開発中のものです。
2012/07/23(月) 18:20:09.87ID:UpRCw62kあんまり大した出来じゃないけど、見てください。
http://www1.axfc.net/uploader/Sc/so/364523.zip
pass:なし
0971名前は開発中のものです。
2012/07/23(月) 19:37:38.05ID:8OEeXxja0972名前は開発中のものです。
2012/07/23(月) 20:07:44.15ID:qcJjYm+Cコメントはそっちで付けるという風にしたら?
またキチガイ君が暴れだしちゃうから
0973名前は開発中のものです。
2012/07/23(月) 21:18:41.03ID:GE5kmtkE右から2列目のブロックがアタリ判定が無くて消せない
何も無いところでボールが跳ね返る
0974名前は開発中のものです。
2012/07/23(月) 21:38:36.66ID:UpRCw62kプレイありがとうございます。
>>右から2列目のブロックがアタリ判定が無くて消せない
何故、ブロックを固定式(左上から5行、32列)
にしたかというと、1つの8x8ピクセルのブロックから当たり判定を行うにあたり、
全然バラバラに配置したブロックだと座標を取得しずらかったからです。
なのでメモリの$300と$400に160個ずつ座標が取得してあるはずです。
その値の代入の際に不手際があったのだと思われます。
たとえば0から+8ずつ32回代入すると一番右端のブロックは256になってしまいますね。
>>何も無いところでボールが跳ね返る
これは、仕様です。今のところ開発では半分ほどゲームオーバーの処理を終えてますが、
アップロードするかは未定です。
0975名前は開発中のものです。
2012/07/25(水) 00:52:40.09ID:z4RF2/U10976名前は開発中のものです。
2012/07/25(水) 09:11:46.39ID:c+m1zKC6誰に同意を求めてるんだこのキチガイは
0977名前は開発中のものです。
2012/07/25(水) 21:12:44.94ID:BHYk1dC8ネームテーブル拡張とか
8x8単位のパレット指定とか
ハードウェア的にどうなってるのかさっぱりわからん
$2000のbit6が関係してるのかな?
0978名前は開発中のものです。
2012/07/26(木) 00:25:20.67ID:qWhbLsW5ttp://wiki.nesdev.com/w/index.php/PPU_scrolling#Use_of_Loopy_V_during_rendering (loopyppu.zipの咀嚼版)を読む
NTSC 2C02 technical reference, by Brad Taylor を読む
Ntd_8bit.jpg 回路図を読む
これらが理解出来たころには、うすうす実現可能な事に気付ける
0979名前は開発中のものです。
2012/07/26(木) 23:06:38.81ID:5MJlJbZb$2000のbit6は関係ないんだね
2C02の14-17ピンにこんな秘密があったなんて・・・
ネームテーブルのインデックス拡張はまあ納得
確信はもてないんだけど、8x8単位のパレット指定は
PPU内部のRAMにアクセスする時も
アドレスラインから信号が出ていることを利用してるのかな?
$3F00から$3F1Fまで全部#$00にしてれば
MMC5からデータを出力してもいけそうな気がする
どちらにせよMMCはReadEnable信号かアドレス線かその辺を利用して
PPUと同期してるとしか考えられないな・・・・
結構勉強になったわ
レス数が950を超えています。1000を超えると書き込みができなくなります。