[過去ログ] ファミコンのプログラム3 (985レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): 2008/06/23(月)17:38 ID:z53SrIuZ(1) AAS
前スレ、何もしねぇカスどもの集まりだったよな。
でも900すぎてホンモノが現れたみたいだ。
もう要らねぇと思ってたけど、そいつらの為に立てたよ。
905
(1): 2012/02/09(木)23:46 ID:aYrAEr2k(1) AAS
>>904
お前も相当馬鹿なんだな
少なくとも>>887は正解ではない
>>889が最初の正解

なんでこんなレベルが低いのばかり住み着いちゃったんだか
906: 2012/02/09(木)23:51 ID:EYsae1tP(1) AAS
そりゃ当然、類は友を呼ぶってやつだろうな
907: 2012/02/10(金)00:00 ID:kmTaVqDA(1) AAS
なんでみんなそんなにイライラしているの?
908: 2012/02/10(金)00:07 ID:c+T5Rrwm(1) AAS
CHRRAMは特殊なのを除いて2KしかないからIRQからのバンク切替はできないし
町中とかウインドウ方式だとそもそもライン単位では無理
909: 2012/02/10(金)09:50 ID:T98mZ9CI(1) AAS
旧メーカー社員が紛れてるんだろ
腹いせだよ、腹いせ
910: 2012/02/10(金)23:56 ID:Bkz01ci5(1) AAS
>>905
解決したとは読み取れないように書いたと思うんだが。

MMC5のデカいフォントのゲームでは
「容量が解決」も間違ってはいない。
911: 2012/02/11(土)03:02 ID:DMNaSAjw(1/2) AAS
>>902
もっと簡単に

sta $2007

をいくつか並べのもアリだよ
912
(1): 2012/02/11(土)03:31 ID:8uSTaWoM(1) AAS
ファザナドゥなんかはその会話で使うフォントだけをCHRRAMに転送してるね
一つ一つのメッセージが短く少ないならこういう方法もアリだけど
ドラクエほどメッセージ量が多いと逆にレスポンスが悪くなっちゃう

8bit機は制約が大きいからデザインとプログラミングは不可分だよね
913
(1): 2012/02/11(土)16:40 ID:XH8T0Uvm(1/2) AAS
質問失礼します。
現在シューティングゲームを作ってみているのですが、BGの当たり判定で止まっています。

@ A B C

とブロックがあった場合、スプライトの弾がぶつかったら消滅というコードをくんでいるのですが、
スプライトと違い座標を用いた方法以外で、衝突判定を見る方法はないものでしょうか
ブロックと弾にカウンタを置いて、弾のカウンタとand演算等で分岐をとも思ったのですが、
ブロックの数によっては汎用性がなさそうなので、なにかあれば教えて下さい
914
(1): 2012/02/11(土)19:08 ID:DMNaSAjw(2/2) AAS
>>913
座標を使う以外にやりようはない。

基本は当たり判定を取りたい座標をブロックのサイズで除算。

除算をまじめにやるとしょぼいCPUでは遅いので、ブロックのサイズを
2^nにしてシフトで出来るようにする。

すり抜け対策とかドット単位当たり判定とかは説明がめんどいので
考えてくださいw
915: 2012/02/11(土)23:11 ID:XH8T0Uvm(2/2) AAS
>>914
あぁなるほど徐算でしたか、感覚としては因数分解みたいな感じですね
ありがとうございます。

一応確認なんですが、私は当たり判定ではcmpによるネガティブフラグで判定をしていますが、その調子で大丈夫ですよね
916: 2012/02/11(土)23:29 ID:bvbq0wS4(1) AAS
実際に作って確かめてみることが一番でしょう
何事も試行錯誤です
917
(1): 2012/02/11(土)23:38 ID:qaTR3LgQ(1) AAS
ずいぶんマニュアル人間だな ゆとり教育の弊害か
918: 2012/02/12(日)00:56 ID:gUUDEgxL(1) AAS
>>917
インデックスレジスタを用いた擬似的乗徐算を乗徐算と意識していなかったから

と言い訳しておきます
919: 2012/02/12(日)02:17 ID:/ainxqCj(1) AAS
胸張って言い訳する神経が理解できませんが逆ギレみたいなものなのでしょうか?
920: 2012/02/12(日)05:02 ID:E+fNx3cK(1) AAS
ちと気になったんだけど除算の除の漢字はわざと間違ってるんかな?
921: 2012/02/12(日)09:07 ID:aKdW3vVV(1) AAS
既に知っているやつが居ないかどうか確かめるのはいいことだ。
各人が車輪の再発見をしなきゃいけないなんて無駄もいいとこ。
922: 2012/02/13(月)00:48 ID:lzhnxno4(1) AAS
持ち歌がまたひとつ消えてしまった遠藤
923
(2): 2012/02/13(月)01:49 ID:+XSjeNKo(1) AAS
>>912
そういやGBのゼルダがそのやり方っぽいな
というかもしかしてGBはみんなそのやり方なのかな
GBでカタカナに制限があるゲームって見ない気がする
924: 2012/02/13(月)05:57 ID:P3L21QRY(1) AAS
>>923
GBはファミコンでいうCHR-RAMしかないからじゃないかな
カートリッジにCPU側のバスしか出ていない設計だったかと
925: 2012/02/18(土)10:25 ID:YR3CrAXp(1) AAS
>>879のろだ3月で終了だぞ
926: 2012/02/18(土)23:48 ID:E8fj6J+Z(1) AAS
>>923
キャラクタをROMとして提供したゲーム機はファミコンくらいでしょう。
任天堂ハードにおいても。他ハードは、VRAMに展開する方式だし。
927: 2012/02/19(日)01:38 ID:up1P9huo(1) AAS
あとはネオジオくらいかな
家庭用って言っていいのかわからんけど
928: 2012/02/19(日)16:42 ID:HsfNQTml(1) AAS
 ラスタスクロール割り込みでCHR-ROMバンク切り替えをして256パターン
以上を表示できる仕組み登場したことはおもしろいですわ。ファミコンが
発売された当初は想定されていないことだったでしょうけど。これがあった
から、10近くは持ったのでは?と思っとりますよ。
929: 2012/02/19(日)18:20 ID:h5opwI+K(1/2) AAS
通信アダプタでもその仕組みはあったよね。
アダプタに16KBのCHR-RAMと漢字ROM(第一水準?)を搭載したおかげで、
標準で日本語表示と4色のフルグラフィック表示に対応してた。
(バンク切り替えのタイミング管理の方法は知らないけど、
多分ハードウェア側で任意のラインでIRQ生成する機能があったと予想)

ゲームソフトがでなかったのが非常に悔やまれる・・・
ディスクシステムを使える機能(?)も結局使われてないし・・・
省2
930: 2012/02/19(日)20:55 ID:U6dbhp2V(1) AAS
ラスターでCHRバンク切り替えるだけだと1ラインごとに256パターンしか
出せない気がするんだが、それでどうやって漢字表示してたんだろう
結局キャラクタ自体も書き換える必要があるのかな
931: 2012/02/19(日)21:53 ID:h5opwI+K(2/2) AAS
ファミコンの解像度は256x240で、
1パターンは8x8ドットで構成されるのだから、
ファミコンの一つの画面上に出せるパターン数は
32(横に並ぶパターン)x30(縦に並ぶパターン)=960パターンとなる。
ファミコンのPPUが一度に参照できるキャラクタは256個までなので、
画面描画中に3回バンク切り替え等の処理をする必要がある。
(大体32、64、128ライン目描画後のH-BLANK時)
省2
932: 2012/02/19(日)22:06 ID:yDN7dT+T(1) AAS
画面全体を重複なく別々のキャラクタで敷き詰めておいて
定義側を書き換えて表示させるってことか
933: 2012/02/19(日)23:12 ID:7lUDE9va(1) AAS
最近プログラマじゃない人種が居ついてるな。
934: 2012/02/20(月)00:01 ID:jCs3Lday(1) AAS
お前の言うプログラマってのがデバッガすら使えないで動きませんって言ってるレベルの奴なら
そうなんじゃね?
935: 2012/02/23(木)22:29 ID:9OQqfVZC(1) AAS
任天堂が大嫌いで反社会的な行為としてROM基板含めて自作ファミコンソフト作ってるわ
936: 2012/02/24(金)23:13 ID:aLx23JaI(1) AAS
決死隊ですか
937: 2012/02/25(土)00:46 ID:0truvwjh(1) AAS
>>929
ラグランジュポイントも8K以上のCHR-RAMを積んでいたのかと考えている
あの画像と、日本語フォントは512パターンで生成できなそう。VRC7はMMC5
の如く、Ex-RAMを使って2バイト指定でBGパターンを指定できるみたいなこと
はできなそうだし
938
(2): 2012/02/25(土)19:17 ID:Abu3C86F(1/2) AAS
ラグランジュポイントは普通の8KiBのCHR-RAM仕様だよ。
文字関係(数字、ステータス表示に使う最小限の英字、ひらがなとカタカナを全文字、その他少々)で、都合約2KiB使ってる。
あとの2KiBが、マップとかのBG側のグラフィック用だけど、不足する場合でも、文字を置いてあるバンクは基本的に温存。
そのかわりスプライトのパターンを2KiBしか使わない。
それで浮かせたCHR-RAM領域を、バンク切り替えでBG側に持ってきて間に合わせてるだけ。
ヴィジュアルシーンのグラフィックとかは、デザインや演出上の工夫で、技術的に特に変わったことはやってない。
939: 938 2012/02/25(土)20:03 ID:Abu3C86F(2/2) AAS
補足
当然だけど、常に>>938みたいにスプライトのパターンをケチって間借してるわけじゃなく、
普通にBGとスプライトで4KiBずつ分けあって、単に画面が暗転した際にパタンテーブルを書き換えるとか、
平凡にやりくりしてる状況の方がむしろ大半なので念のため。
940: 2012/02/26(日)00:39 ID:US8Vrh37(1) AAS
>>938
解説サンクスなり
職人芸だったわけね
941
(1): 2012/02/27(月)17:29 ID:d2Rr2gFY(1) AAS
外部リンク:loda.jp

上は当たり判定で、スプライトの座標をタイルに変換させる。でもたまにルーチンで誤変換起こしてしまってる

デバッグしてもよく分からない
原因すらわからねぇ
942: 2012/02/28(火)11:32 ID:FLxgWkDL(1/2) AAS
必要もなくモジュール内でJSR/RTSを多用してクロック浪費してるプログラム見ると、無性に書き直したくなってくる。
943: 2012/02/28(火)13:11 ID:DEMYa7pD(1) AAS
モジュール化
944: 2012/02/28(火)21:05 ID:FLxgWkDL(2/2) AAS
変換じゃなくて壊す側がおかしくないか?
945: 2012/02/28(火)22:42 ID:ac5+J/w/(1) AAS
>>941
・CrashBlock_Routine:でbcs, bccを使ってるのが敗因。 0<= 弾の中心座標 <8 の論理を構築できてない。
 bpl, bmiを使った方が大小関係が直感的に分りやすい。
 その際、lda <Bullet_Y_Center → cmp Block001y,x のように不等式で挟まれる側を先にレジスタにロードした方がやりやすいはず。
 またadc, sbcと違い、cmp系の前にはclcは必要ない。
・ゲームループがまずく、infinityLoop:内のルーチンの実行回数のフレームレートが一定でない、不安定動作のおそれあり。以下のループが無難。

__ここでNMI有効にせよ__
省22
946: 2012/03/22(木)16:43 ID:NBlMXw6A(1/2) AAS
簡単にROM作る方法ない?
947
(1): 2012/03/22(木)16:44 ID:NBlMXw6A(2/2) AAS
簡単にROM作る方法ない?
948: 2012/03/23(金)05:49 ID:EKmbrKmy(1) AAS
それは物理的にかい?
949: 2012/03/24(土)23:29 ID:pi7aftbx(1) AAS
そう言う感じ
950: 2012/03/25(日)01:14 ID:c32Eu5AG(1) AAS
形式判明してるカセット分解して、ROM引っこ抜いて、代わりにソケット取り付けて、ROMライタで焼いた自作ROMを差し込む。
という話じゃなくて?
951
(1): 2012/03/25(日)17:19 ID:W0Y8frQC(1) AAS
誰かいますか?

外部リンク:ll.la

ファミコンプログラミングがやりたくて、
試しにN106で全画面表示をやってみたんですが、
G-NESだとうまく表示できなくて……

VirtuaNES、nestopiaだと期待通り動くんですが……

上のURLにソースコードと、各環境で実行したSSをupしました。
省1
952
(1): 2012/03/25(日)17:49 ID:sx4Vwb9x(1) AAS
G-NESのエミュレ−トが不完全なだけ
953: 2012/03/25(日)23:12 ID:Ih97tOjy(1) AAS
>>947
自作のnesをfdsファイルに変換して、fdsloadrでRAMアダプタに転送したことならある
(市販のnesをfdsファイルに変換するのは無理っぽい)
954: 2012/03/26(月)21:41 ID:q32IwSYQ(1) AAS
>>951です。

>>952
返信ありがとう。
環境によってIRQカウンタの進み方が微妙に違うっぽいです。
初回にとりあえず1フレーム描画して、IRQカウンタの速度を取得しようと思います。

あと、>>951にupしたコードだと、VBLANK終了待ちに$2002のbit7を見たりしてますが、
これじゃVBLANKの検出ってできないんですね……。
省2
955: 2012/03/26(月)23:40 ID:uRvDMM79(1) AAS
何がしたいのか知らんが実機の挙動が唯一の正解だろ
956: 2012/03/31(土)14:42 ID:upBLiWOt(1) AAS
>>337>>343のzipファイルが正常に解凍できません。
どうやればいいのでしょうか?
957: 2012/03/31(土)18:44 ID:lM09VNG1(1) AAS
スレ違い
958: 2012/04/22(日)13:28 ID:22nDGbXy(1/2) AAS
ブランチ命令って、ブランチしてもしなくても2(+1)サイクルなの?
959: 2012/04/22(日)16:18 ID:x+Av2sLm(1) AAS
(+1)と書いてあるじゃん
960: 2012/04/22(日)17:21 ID:22nDGbXy(2/2) AAS
いや、(+1)はページ境界またいだときの増分サイクル。
言葉足らずだったごめん。

ページ境界をまたがないとき、
ブランチしてもしなくても2サイクルなの?
961: 2012/04/22(日)19:52 ID:4jO4E/1L(1) AAS
分岐なしで素通りしたら、2サイクル(オペコードと続く相対アドレスの読み込みにかかる時間)
ページ境界跨がない分岐をしたら、3サイクル(↑に加えて、下位8ビット分のアドレス計算で1サイクル追加)
ページ境界を跨いで分岐をしたら、4サイクル(↑に加えて、上位8ビット分のアドレス計算でさらに1サイクル追加)
だったはず。
962: 2012/04/23(月)06:49 ID:XUn2WlEg(1) AAS
うおおお詳細な説明ありがとう

何故、一部の命令でページ境界またぐと
1サイクル増えるのかも知らなかったんで、勉強になった
そういう仕組みだったのね
963: 2012/04/23(月)15:19 ID:/vOkL049(1) AAS
質問なんですが、マッパー0にて
PRGROM領域を32KBにして
$C000以降にもプログラムを書きたい場合には、ヘッダを
inesprg 2
にする以外には
どうすればいいでしょうか
964
(1): 2012/04/23(月)16:44 ID:iUjnyHkr(1) AAS
プログラム領域を8KB単位に区切って.bankを指定してやればいい。
.bank 0
.org $8000
<ここにコード書く>

.bank 1
.org $a000
<ここにコード書く>
省6
965: 2012/04/23(月)16:51 ID:Jr0Oiqmo(1) AAS
>>964
ありがとうございますッ
勉強になりましたッ
966: 2012/06/26(火)23:00 ID:dKkI9P+Q(1) AAS
みんな生きてる?
967: 2012/06/26(火)23:07 ID:Mm6viaGL(1) AAS
いや死んでる
968: 2012/06/27(水)20:59 ID:3QSG7wMg(1) AAS
生きてるよ。
969: 2012/06/28(木)03:04 ID:Ap+z5IPf(1) AAS
2ヵ月ぶりか。
970
(1): 2012/07/23(月)18:20 ID:UpRCw62k(1/2) AAS
ブロック崩し(アセンブラ版)を作ってました。
あんまり大した出来じゃないけど、見てください。
外部リンク[zip]:www1.axfc.net
pass:なし
971: 2012/07/23(月)19:37 ID:8OEeXxja(1) AAS
じゃあ、お言葉に甘えてスルーさせていただく
972: 2012/07/23(月)20:07 ID:qcJjYm+C(1) AAS
このスレで発表したら自分の捨てブログみたいなのを一緒に貼ってもらって
コメントはそっちで付けるという風にしたら?
またキチガイ君が暴れだしちゃうから
973
(1): 2012/07/23(月)21:18 ID:GE5kmtkE(1) AAS
>>970
右から2列目のブロックがアタリ判定が無くて消せない
何も無いところでボールが跳ね返る
974: 2012/07/23(月)21:38 ID:UpRCw62k(2/2) AAS
>>973
プレイありがとうございます。
>>右から2列目のブロックがアタリ判定が無くて消せない
何故、ブロックを固定式(左上から5行、32列)
にしたかというと、1つの8x8ピクセルのブロックから当たり判定を行うにあたり、
全然バラバラに配置したブロックだと座標を取得しずらかったからです。
なのでメモリの$300と$400に160個ずつ座標が取得してあるはずです。
省5
975: 2012/07/25(水)00:52 ID:z4RF2/U1(1) AAS
な、言うだけムダだろ?
976: 2012/07/25(水)09:11 ID:c+m1zKC6(1) AAS
何が な なんだ
誰に同意を求めてるんだこのキチガイは
977
(1): 2012/07/25(水)21:12 ID:BHYk1dC8(1) AAS
MMC5の
ネームテーブル拡張とか
8x8単位のパレット指定とか
ハードウェア的にどうなってるのかさっぱりわからん
$2000のbit6が関係してるのかな?
978: 2012/07/26(木)00:25 ID:qWhbLsW5(1) AAS
>>977
外部リンク:wiki.nesdev.com (loopyppu.zipの咀嚼版)を読む
NTSC 2C02 technical reference, by Brad Taylor を読む
Ntd_8bit.jpg 回路図を読む

これらが理解出来たころには、うすうす実現可能な事に気付ける
979
(2): 2012/07/26(木)23:06 ID:5MJlJbZb(1) AAS
おお、サンクス

$2000のbit6は関係ないんだね
2C02の14-17ピンにこんな秘密があったなんて・・・

ネームテーブルのインデックス拡張はまあ納得

確信はもてないんだけど、8x8単位のパレット指定は
PPU内部のRAMにアクセスする時も
アドレスラインから信号が出ていることを利用してるのかな?
省5
980
(1): 2012/07/27(金)08:18 ID:7+iQSIOi(1) AAS
ごめんミス

8x8単位のパレット指定は
$3F00-$3F1Fとそれほど関係ない
981: 2012/07/27(金)21:18 ID:sQ8tA8mC(1) AAS
AA省
982: 2012/07/28(土)08:56 ID:GyT0u9/H(1) AAS
中本さん見てる?
983: 2012/07/28(土)09:01 ID:80Z4yq/U(1) AAS
ありがとう
>>979を書いてたときなんか勘違いしてた
朝風呂入ってもう一度考えてたら>>980ということになった
とりあえずこれで理解できた・・・と思う
984: 2012/07/28(土)12:56 ID:oeXoY4Qd(1) AAS
そんな英文解説をどうやって理解できるの?
すごいわ。
985: 2012/07/28(土)13:55 ID:Nq3GjYH8(1) AAS
専門用語がわかれば中学英語程度でも理解できる
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.161s*