X



ファミコンのプログラム4
0001名前は開発中のものです。
垢版 |
2012/07/29(日) 14:19:03.64ID:a5QeqSA0
■過去スレ

ファミコンのプログラム
http://pc8.2ch.net/test/read.cgi/gamedev/1013696305/

ファミコンのプログラム2
http://pc11.2ch.net/test/read.cgi/gamedev/1135099156/

ファミコンのプログラム3
http://toro.2ch.net/test/read.cgi/gamedev/1214210285/

■関連サイト

MagicKit Homepage
http://www.magicengine.com/mkit/
すずめ愛好会
http://web.archive.org/web/*/http://vsync.org/ns/index.html
ギコ猫でもわかるファミコンプログラミング
http://gikofami.fc2web.com/
わいわいの巣
http://www.geocities.jp/yy_6502/
mck hogehoge
http://takamatsu.cool.ne.jp/dutycycle/
NES info, programs, and demos
http://nesdev.parodius.com/
pgate1@crystal
http://crystal.freespace.jp/pgate1/
cc65 @ wiki
http://www34.atwiki.jp/cc65/
0002名前は開発中のものです。
垢版 |
2012/07/29(日) 14:19:59.97ID:a5QeqSA0
■ソフトウェア開発者のサイト

NES Hack Factory
http://www.geocities.jp/kz_s6502/
D-Soft
http://aqube.kir.jp/dsoft/index.html
OBONO's Web Site
http://homepage3.nifty.com/obono/
Family Assembler
http://fuguri23.hp.infoseek.co.jp/FamAsm/
nurvle.com(NES)
http://www.ash.ne.jp/~nurv/nes/
peacemay.net
http://peacemay.net/
ファミコンソフト開発のおへあ
http://stargate.game-server.cc/fc/
第7サプライヤー
http://seventhxevo.xxxxxxxx.jp/seventh/
0003名前は開発中のものです。
垢版 |
2012/07/29(日) 17:33:33.81ID:h8AqcaeO
マリオ2ってスコアなどのパラメータ表示に
ディスクシステムのタイマー割り込み利用してたんだね
1だと0爆弾だったのに

なんかどのサイトにも
ディスクシステムのIRQタイマに関する記述があまりないんだよね・・・
どのアドレスを使うかはわかってんだけど
1カウントが何秒位なのかの載ってるとこがない・・・

自分で測った感じだと
カウンタに65535(MAX)を設定してみたところ
11フレーム中に5回割り込みが発生した

1回の割り込み毎に2.2フレームであるから
1/60*2.2=0.036666・・・秒、つまり
65,535カウント≒36,666,667n秒 よって
1カウント≒560n秒位
0005名前は開発中のものです。
垢版 |
2012/07/29(日) 17:52:48.30ID:h8AqcaeO
>>4 ディスクシステムのスーパーマリオブラザーズ2

でも>>3の計算だと少し精度が甘いからラスタスクロールとか使うときは
NMIが起きるごとに再設定した方が確実だろうね

それからRAMアダプタに入ってる水晶は21.47727MHzだったから
21,477,270*0.00000056≒12
つまり12分周されたクロックが入ってるっぽい
(つまりファミコンのMPUと同じ1.79MHz)

あとタイマーへのクロックを何分周するか変えられないのだろうか
$4022になにか知らないオプションもありそうな気がしてならない
0006名前は開発中のものです。
垢版 |
2012/07/29(日) 18:11:08.04ID:hixC6Gva
>ディスクシステムのスーパーマリオブラザーズ2

そういえばそんなのあったな
すまんボケまくったw
0007名前は開発中のものです。
垢版 |
2012/07/29(日) 18:15:32.39ID:hixC6Gva
結局はエミュのソース見ちゃえばいいんですよ
ディスクシステムなら日本人エミュ作者のがいい
0008名前は開発中のものです。
垢版 |
2012/07/29(日) 18:39:34.34ID:hixC6Gva
見てきたらCPU同様の1.79MHzのカウンタのようです
CPUのクロックは12分周が基本だから
それ以上でもそれ以下でもメリットは無いでしょ
0009名前は開発中のものです。
垢版 |
2012/07/29(日) 19:03:19.68ID:h8AqcaeO
>CPUのクロックは12分周が基本だから
>それ以上でもそれ以下でもメリットは無いでしょ

まあそうなんだけどね
0011名前は開発中のものです。
垢版 |
2012/08/02(木) 00:39:42.04ID:pHdQmVv7
なんでファミコンは描画中
PPUアドレス空間にアクセスできないようにしたんだろうね・・・
やはりコストからか
0013名前は開発中のものです。
垢版 |
2012/08/15(水) 01:00:01.72ID:NFZzBwkk
アクセスはできるけど$2006自体が現在の画面描写位置そのものだから
画面表示が引きずられちゃう
0015名前は開発中のものです。
垢版 |
2012/08/24(金) 23:47:20.82ID:fbm4SP4s
>>14
あの頃のPCだとほとんど同じような感じだったと思うけどな
MSXとか感覚的にはファミコンとほぼ同じというかもっと簡単だけど
あの頃は個人レベルでハードウェアの隅々まで理解できる環境が多かったな
0016名前は開発中のものです。
垢版 |
2012/08/29(水) 00:13:52.29ID:dCbNSnnq
0爆弾で画面2分割し、
上は縦スクロール、下は固定(「沙羅曼蛇」のような画面)に挑戦しています

0番スプライトを画面左端に持ってきて、左端8ピクセルを$2001で隠すと
$2002のヒット検出はできないでしょうか

ためしにやった所
G-NES:できる   VirtuaNES:できる
実機(AV仕様):できていない(下画面が描画されない。左端クリップ無ければできる)
おそらく実機PPUの仕様かと想像しています。
0017名前は開発中のものです。
垢版 |
2012/08/29(水) 09:34:26.48ID:XGVG2N0d
マッパー変更してIRQ使えるやつで
やるってことじゃだめなのか?

実機でできないなら、できないものなんだろ
0spriteを1dotだけのものにするとか、回避策はいろいろあるだろう
0019名前は開発中のものです。
垢版 |
2012/08/29(水) 18:07:15.63ID:KHvPZkYe
単純に考えると、
・クリップ領域から出るように、左から9ピクセル目に仕掛ける
・1つ前のラインの右端に仕掛ける。
のどちらかで出来ると思うんだけど。

クリップ領域に0爆弾置いたら不発になるのは、0爆弾はスプライトを表示するタイミングに依存してるからでないの。
つまり、クリップした区間ではスプライトの表示処理自体がスキップされるとかそういう理由で。
俺、0爆弾なんて使わないから想像なんで違ってたらすまんが。
0021名前は開発中のものです。
垢版 |
2012/08/29(水) 19:00:35.13ID:V0VP3qcd
すごくザックリ&うろ覚えで申し訳ないのだけど、

背景ピクセルの上に0番スプライトのピクセルを重ねて、ピクセルを描画。

→ このとき、描画したピクセルが透明色でなければ、
  $2002の[6]番目のビットが立つ。
→ このとき、描画したピクセルが透明色ならば、
  $2002の[6]番目のビットは立たない。

って感じじゃなかったっけ?
クリップで強制的に透明色にされた背景ピクセル+強制的に透明色にされた透明スプライト=透明色

なので、0爆弾がヒットしないんじゃないかと。
実機もないし、エミュで試してもいないので、想像ですまん。

てか、過疎っぽく見えて、読んでる人いるんですねw
002216
垢版 |
2012/08/29(水) 21:37:22.64ID:3N5g/q8u
ありがとうございます
やっぱり0スプライトを左端、というのは
いい方法じゃないですね

右端に置くとか、IRQ割り込みとかでやってみます
0番スプライトでやるとなると、BGもひと工夫が必要ですね
0023名前は開発中のものです。
垢版 |
2012/08/30(木) 00:13:48.09ID:2dcDlWaJ
>>16
ヒット検出しないのが正解だろうね。 実機でそうなったんだし。
上から覆い隠してる訳ではなくキャラクタを表示していない(と俺は考えてる)のだから、ヒットしなくて当然と思うけど。
左端がダメとかは、関係ない。横スクロールの指定はいつでもできる。
0024名前は開発中のものです。
垢版 |
2012/08/30(木) 04:48:24.33ID:YFBZ+1yV
検出してからレジスタ叩いてるクロック分だけ画面描画進んでるから
次のラインまで最低でも12クロックはズレたままでしょ
ライン単位での描画しかサポートされてないエミュだと再現できないけど
0025名前は開発中のものです。
垢版 |
2012/08/30(木) 23:09:45.06ID:mbhkbHVJ
>>23 がはぼ正しい
>>20 はどちらかというと間違い HBlank中が必須というわけではない

>>24 のようにCPUがフェッチ&デコード&実行&ライトやってる時間にも、PPUのドットは結構動くことに注意

普段はG-NESの使いやすいデバッガでデバッグ。
使いやすいVirtuaNESやNNNesterJでおおまかな確認。
際どいタイミングが必要なデバッグはFCEUXとNintendulator。
Nestopiaでタイミングの最終動作確認。
0027名前は開発中のものです。
垢版 |
2012/08/31(金) 23:35:00.18ID:gnF3SCUx
0爆弾の設置場所は捨てライン用意するならどこでもいいけど
右端なら画面に影響は出ないわな
0028名前は開発中のものです。
垢版 |
2012/10/10(水) 21:49:54.07ID:Z4BAuN6X
ファミコンゲーム作ってみたいんだけど時間がないんだよなー
現実的な問題がな
0029名前は開発中のものです。
垢版 |
2012/10/11(木) 19:34:39.57ID:9I6Jco6V
プログラミングにアセンブラから入った身だから
最初のうちはなれていたけど
CとかC++とかASに触れていくにつれて
面倒になっていったな・・・
0030名前は開発中のものです。
垢版 |
2012/10/12(金) 00:52:25.78ID:Z8DOmKFZ
ASってのはFlashですか?
あぁそれはありますよね…。感覚というか形態が違いますからね…アセンブラは
0031名前は開発中のものです。
垢版 |
2012/10/12(金) 01:31:47.39ID:EPkxezrz
そうActionScript(2.0だけどw)

最初のうちは高級言語のクラスとかオブジェクト指向とか全く理解できなくて、
アセンブラ至上主義で6502とか8080とか8086とかいろいろ手を出してたんだけどね・・・

6502向けのCコンパイラとかいいのないよね
てかそもそも8bitCPUに高級言語使うのもおかしな話だけどさ

某C言語が使えたポケコンは、全然速くなかったよ
さすがにBASICよりは速かったけど・・・
0036名前は開発中のものです。
垢版 |
2012/10/18(木) 18:23:21.69ID:VBrCRfaf
同じ6502でもPCエンジンだと、ハドソンが優秀なCコンパイラ作ってたりしたんだろか?
0037名前は開発中のものです。
垢版 |
2012/10/18(木) 19:42:59.84ID:l5n3aOad
SFC末期やプレイステーション頃まではC言語に出番はなかった。

C言語だけでリアルタイム処理なゲームを作って動かせる、それを配布できるってことは、今で考えるよりもずっと贅沢な事。
個人ユーザ中心のホビー分野ではそれなりに需要あったんだろうけど。
それとFDみたいに安いメディアかつ少数生産で済む16bit世代なPCゲーとか。

8bit機だと非力すぎる上にどうせ機種依存バリバリな処理系しかないからCで書いても他で流用のしようがない。
使うことにデメリットは多くても、メリットになる部分が全くと言っていいほど無い。

メガドラは時期的に言ってアセンブリ言語手書きだと思われる。
人間が手書きしても全然苦にならない整然としたアーキテクチャだったし、セガが発売したゲームがどれもROM容量ケチってるあたり、C言語使って容量無駄に使うことが許されたとは思えない。
0039名前は開発中のものです。
垢版 |
2012/10/18(木) 23:13:52.20ID:63+xOnKC
ただ単に、
当時は、ハードメーカーから提供されているのが
アセンブラだけとかだったからだろう。
プログラムといえば、BASICかアセンブラという時代なんだから、
c言語がなくてもしょうがない
0043名前は開発中のものです。
垢版 |
2012/11/04(日) 21:10:23.38ID:vueKXrfu
最近MMC1AとMMC1Bをいじったけど、電源投入時はバンクサイズ16kモードで後半の16kは最終バンクで確定してるみたい
よく言われるように16k毎にベクターやリセットルーチンとかを設置する必要はなく、
32k毎の設置で一切問題はなかったので、リセットで偶数バンクが後半16kにあてがわれることはない模様

ファイナルファンタジーや三國志とかを見ると最終バンク以外にリセット等のベクタを置いていないから
バンクサイズ16kで後半最終バンクFIXモードだと不定になることはなさそうな感じ
無印のMMC1が手元になく確認していないのでひょっとしたら仕様変更があったのかもしれないけど

それとbit7立ててバンクの初期化って古いエミュだと実装されていないから
GNESとかVirtuaNES使ってると理解できないのはしかたがないと思う
0044名前は開発中のものです。
垢版 |
2012/11/13(火) 20:19:26.33ID:CAAAMru1
話割ってしまうけど、自作したデータを既存のROM内のデータと交換して売るのって違法なの?売っているのを見たことないんだが。
0045名前は開発中のものです。
垢版 |
2012/11/14(水) 20:00:04.73ID:ukh7V0Cy
カートリッジは意匠があるからやるなら基板むき出しか。
でも動作保障とかめんどいからキット販売がせいぜいか。
0046名前は開発中のものです。
垢版 |
2012/11/15(木) 16:13:50.41ID:oP0LY2A3
>>36
pcエンジンエミュレータ「MagicEngine」の作者が作ったものを
バージョンアップしたコンパイラHuC
http://www.zeograd.com/
HuC使ったけどすごく重いです
stgを作ろうとしたんだけれど
タスクを自機弾10、敵3、敵がばらまき弾8方向くらいで処理オチしてやる気無くなた
この程度のゲーム30fps20fpsにする意味無いし
エミュもリアル本体並み程度の能力しかないから処理落ちします

処理落ちしても良いアドベンチャーならまだしも
日本語表示の壁が
最大容量もPCEは2メガバイトが限界

古いHuCは多少軽いし、マジックエンジンHPからダウンロードできますが
機能が足りないです
0049名前は開発中のものです。
垢版 |
2012/12/20(木) 20:27:31.68ID:Og5HQO4K
NESはファミコンと違ってカセットに音源積めないから
そういう方向に進化せざるをえなかったのかな
0050名前は開発中のものです。
垢版 |
2012/12/23(日) 01:13:37.02ID:fIW1BS2m
クソゲと酷評されるソルスティスだが面白かったね
主人公キャラクタがオブジェに隠れる演出はすごいよ〜
0052名前は開発中のものです。
垢版 |
2012/12/23(日) 07:05:53.14ID:X9VTHfNw
曲とデモプレイ画面しか見たことなかったが…。

キャラと重なるBGオブジェを、重なっているときだけスプライトにしてるのかと思ってた…。
でも素直にそうやっちまうと、スプライト用のパレットが足りなくなるのね。
ほんと凄まじい発想だわ…


もっと派手な演出なら、既出だろうがRareのBattletoadsも良いな。
https://www.youtube.com/watch?v=-1UwbUencb4

しっかりした2重スクロールは、PCエンジン以降でしか見たことない気がする。
0054名前は開発中のものです。
垢版 |
2012/12/25(火) 16:58:20.87ID:XIb3z3nT
ずっと気になってて最近確認した物に関連する話題が出てたので…。

スプライトモード8x16の時、普通指定するのとは逆のキャラ番号(偶数なら奇数、
奇数なら偶数)を指定すると、BGバンクのキャラがスプライトで出ます。

また、このBGバンクのスプライトを他の表示するスプライトよりも優先度を上げ、
BGより優先度を下にすると、他のスプライトはこのスプライトより下、つまり
BGより下に表示されます。
BGより下に表示されるのでパレットコストは必要ありません。

これを効果的に使えば細かいマスク処理が出来るはず。
横並びが厳しいので使い所は限られると思いますが…。

自分もソルスティスはコレを使ってるのかと思ってたんですが違いましたね。
何か問題があるのか、単にこの方法を知らなかったからなのかは分かりませんが。

PCエンジンでは使われてたらしいけど、ファミコンでこの方法を使ってるゲームはあるのかな?
0055名前は開発中のものです。
垢版 |
2012/12/25(火) 17:17:14.81ID:XIb3z3nT
具体的には(分かりにくいけど)こんな感じ
http://www.dotup.org/uploda/www.dotup.org3771924.png

上にスプライトで表示してるのを4枚、下の同じキャラの岩の所にも
BGより優先度下にして表示してあります。

シルバーホークがBGの地形より下、BGのボスより上に表示されてます。
柱に隠れる演出とかにも使えるかと。
0057名前は開発中のものです。
垢版 |
2012/12/25(火) 21:55:26.03ID:kWjHNajW
ていうか、全然分からない。(8*16スプライトの仕様はおいといて)
スプライトの優先度とBGの前後の関係は、まずスプライト番号の若いものが最優勢され、
1番目のsprがbgの裏、2番目がbgの表だったら、2番のsprは1番に重なる部分は1番に消されて、表示されない。
1番sprからはみ出た部分だけがBGの表に見える。

がんばれゴエモン外伝のオープニングで、えびす丸がドアから出るシーン、スプライト優先度をうまく使ってる。
0058名前は開発中のものです。
垢版 |
2012/12/26(水) 00:28:12.82ID:9XrAfUmn
シルバーホークとか固有名詞を当然のように出されても伝わらない
いまどきダライアスとか言ってるのってリタイアしたキチガイ互助会の方なのかな
0061名前は開発中のものです。
垢版 |
2012/12/26(水) 06:31:02.45ID:CVnOhUO6
>>54-55
結局BGをスプライトにしてるから、VRAMの余裕はできても、
スプライトパレットの余裕はできないんじゃね?
0062名前は開発中のものです。
垢版 |
2012/12/26(水) 07:20:36.29ID:CVnOhUO6
あとソルスティスのデモ画面、パターンテーブルで見たけど、
CHR-RAMは極めるとすごいな。

弱点としては、VBLANK時に1フレームあたり
10キャラくらいしかロードできないんだっけ。
扱い方が難しいところも燃えるなぁ。
0063名前は開発中のものです。
垢版 |
2012/12/31(月) 23:43:32.17ID:dplgqzsF
CHR-RAM直打ちでいちいちキャラクタを書き換えているのが
ソルスティスの技術。上位オブジェクトの重なりと非描画判定は凄い。

後にラグランジュポイントはCHR-RAMって8KBなんかな。あのパターン
量を見ると8KBではなさそう。
セリフ用の文字画像部分を足して16KB搭載かつセリフウィンドウ部分
で割り込みバンク切り替えしているんじゃないかと推測しとるんだけど。
それともただのCHR-RAMなのだろうか。
0064名前は開発中のものです。
垢版 |
2013/01/01(火) 12:13:51.02ID:wi03Ie1H
>>63
ラグランジュポイント、CHR-RAMの実体は8K
ttp://bootgod.dyndns.org:7777/profile.php?id=3643
ただし、参照配置換え可能。
普通のCHR-RAMならBGを4K、SPRを4Kと固定で、$0000か$1000に配置するけど、
参照配置換え可能ならばBG、SPRそれぞれ0〜8Kまで1K(page)単位で柔軟なサイズ変更が出来る。
割り込みかけて途中で参照を変える、と。
SPR:BG = 1:7〜3:5、位じゃないのかな。
0066名前は開発中のものです。
垢版 |
2013/01/02(水) 01:00:10.06ID:sqh/nOWC
>>65
あ り え な い 。それは。
バストダンジョンでリリカのおっぱい値を800近くまで調教強化してやらないと、そのフラグは立たない。
仮にフィリオナをメンバーから外してリリカを集中調教しても、アナルバイブが使えないその段階では
スカリバーはまだ手に入れられないはず。 妄 想 で つ か ?
とりあえずアンダー草原で淫獣マリリスを大量に調教して淫度をどんどん稼いどけ。
展開が不安ならバックアップ取っておくのを忘れんなよ。説教くさくなってスマソ・・・。ついな・・・。
0070名前は開発中のものです。
垢版 |
2013/01/06(日) 16:49:46.39ID:vL3Xl6d1
63です。本気の解説ありがとうござんす。
RAMのバンク切り替えの様なもの、というかメモリ参照の位置が変更
できるなんて想像の斜め上を行っていたとは・・。驚きました。
0071名前は開発中のものです。
垢版 |
2013/01/06(日) 19:38:07.98ID:Nbv6CYGv
64です。CHR-RAMなのは知っていたけど、
63の書き込みを見て調べた結果に驚きました。
ROMを乗せるはずのところに、一工夫してRAMを乗せるとこうなるのですね。

( ;∀;)イイハナシダナー
0074名前は開発中のものです。
垢版 |
2013/01/13(日) 21:44:45.31ID:SvwqFKWD
某サイトに$4018-$401Aにもレジスタがある(ミラーではなく)みたいな記述があるんだけど
誰か何のことか分かる人いる?
今調べてるんだけど出てこない・・・
0078名前は開発中のものです。
垢版 |
2013/01/13(日) 23:55:52.07ID:SvwqFKWD
>>75
有益な情報をありがとう
ファミコンのプログラムはもうずっと前からしてるがこれははじめて知った・・・
0079名前は開発中のものです。
垢版 |
2013/01/14(月) 01:42:33.45ID:9rveIWjC
>>78
これらを使用していたソフトが無いから、任天堂からの資料にも書いて
いなかったんだと思う

使いどころを考えてみたら、DPCMのを鳴らす前のプチノイズが出ない
ようにしたり出来るかもって位かなあ?
0081名前は開発中のものです。
垢版 |
2013/01/14(月) 10:39:53.71ID:tzjT4Zjb
>>75
やっぱり
NesDev界隈には回路の写真から解析しちゃう人いるんだな
色付きの線で実に説明上手だ

祭りだワショーイ

>>80
オープンバスって「レジスタに繋がってないただのアドレス」
という意味でいい?
0083名前は開発中のものです。
垢版 |
2013/01/14(月) 23:45:03.97ID:XSpdI2pt
ちょっと質問なんだけど、アセンブラってみんな何使ってる?

ファミコン用のCライクな言語のコンパイラを作っていて、
とりあえずnesasm向けのasmを出力してるんだけど、
リンクとか考えるとcc65のアセンブラのほうが高機能っぽいので現在迷い中・・・
0084名前は開発中のものです。
垢版 |
2013/01/15(火) 00:44:21.46ID:bZUsNHpr
Cライクってのがわからん
このスレにCは需要無い

Cでやるならcc65のCを使うでしょ


x86のCコンパイラが吐く自動変数っぽい仕組みのを
nesasmで書けるマクロ組んでみたけど
遅くて使い物にならなかった
008583
垢版 |
2013/01/15(火) 10:34:28.65ID:DThX962j
>> 84

自分が見た範囲だとnesasm使ってる人が多そうだけど、それ以外にもメジャーなアセンブラがあって、
そっちのほうが便利だったら乗り換えたいなというくらいの気持ち。
nesasmは、リンク機能がないのが直近の不満なんでそれ書いた。


> 遅くて使い物にならなかった
cc65が出力するasmを見て、このままだと遅すぎて使えないってのは同意。
工夫すれば実用的(アセンブラの1/2くらい?)にはなりそうなのでちょっと作ってみてるというところ。
といっても、割り込みや速度が必要なコードはasmで書かないとだめなのは諦めてる。

> このスレにCは需要無い
高級言語の需要はなさそうだなぁというのはわかってて、そういうの作ってるっていうのを書いたのは、
もしかしたら興味あるひとがいたらいいな、という下心はすこしありましたw
0088名前は開発中のものです。
垢版 |
2013/02/04(月) 21:07:41.31ID:fkuzgt9B
/:/: FAMILY NEWS
 2013年1月25日、48時間でゲーム作れやぁという世界規模のイベント
global game jamが日本で開催された。
 様々な作品が発表される中、札幌会場では、何とファミコンのゲームも
開発されたという。それが、これ。

ttp://globalgamejam.org/2013/famicom-nes-regeneration-project

 小規模の作品ではあるがしっかりと動く模様だ。開発はハンドアセンブラ
で製作、というから驚きである。48時間の多くは、ファミコンの仕様調査に
費やされたとのこと。なんとも変態的な情熱である。
0092名前は開発中のものです。
垢版 |
2013/03/02(土) 00:41:19.83ID:hFHJmNkE
 ファミコン用の音楽ドライバを見つけたぜ。cc65でコンパイルした
libファイルを組み込んで鳴らしい。使い方はまったく解らん。内部構造
とかは詳しく解説してはあるヘルプが付いてるけどね。ちなみに、これ
用のmmlコンパイラも付属しているよ。
ttp://shaw.la.coocan.jp/nsdl/
0094名前は開発中のものです。
垢版 |
2013/04/18(木) 23:16:17.58ID:IMzwu5mh
>>92
すごい.
なによりも,この開発者さんの情熱が凄い.
ぜひ使わせてもらおう.
0096名前は開発中のものです。
垢版 |
2013/07/16(火) NY:AN:NY.ANID:V4wzSO+/
初歩的なこと聞くけどBGのネームテーブルとかスプライトデータ64*4
のデータを見ること出来る?スーパーマリオで土管に乗るとかPPUのデータ
から判定してるかな?まさかCPUのRAM0x0000-0x07ffに入れてそれを見てる
ってことはないよね?
0098名前は開発中のものです。
垢版 |
2013/08/06(火) NY:AN:NY.ANID:3KQG/adI
マリオブラザーズなら
VRAMのデータで当たり判定してたはず
画像ハックすると永久落下とか?

こんなのは例外で
スーパーマリオなど普通はCPU空間のRAMに仮想地形を作る
0100名前は開発中のものです。
垢版 |
2013/08/17(土) NY:AN:NY.ANID:uCbYKHDz
>>98
>VRAMのデータで当たり判定してたはず
>画像ハックすると永久落下とか?

自機の移動先座標のドット色情報で当たり判定してたベーマガの投稿プログラムを思い出した
0101名前は開発中のものです。
垢版 |
2013/10/13(日) 05:30:26.19ID:2zt6NDsD
スクロールなしの固定画面で
走査線割り込みによってパレットを書き換えて色数を増やしている
ソフトの代表例を教えてください
0107名前は開発中のものです。
垢版 |
2013/10/28(月) 15:22:51.38ID:mnXgpw7y
キラキラスターナイトの音楽って当初はmckで作ってログなんだってな。
音楽で800kbとかワロタ。
最終的には92のサウンドドライバにさしかわったそうだ。
0112名前は開発中のものです。
垢版 |
2013/11/27(水) 22:25:07.60ID:AIPgO1s0
108です、ポートピア連続殺人事件のバイナリを見ていて
文章の後からなずFCになっているので
文章のサブルーチンからリターンするコードがFCなのかな?と思ったのです
未定義というのはユーザー定義で自由に使えるということなのでしょうか?
だとすれば中村光一氏が定義したのかな?と思います
0114名前は開発中のものです。
垢版 |
2013/11/27(水) 23:17:01.96ID:H3/K2JY+
ただ単に、文章の最後を表すために、FC使っているだけ。
ちなみに、ポートピアなら、固有名詞にも特定の値を当てはめて、
容量を節約している。
0116名前は開発中のものです。
垢版 |
2013/11/29(金) 23:43:36.26ID:+yLhVUXN
>>112
君はまず命令とデータの区別をつけるところからだな
あと未定義というのは何らかの既定の動作はするが使い道が無いということ
他と同じ動作だったり、ナンセンスな動作だったり、何かを破壊したり
0117名前は開発中のものです。
垢版 |
2013/12/28(土) 09:38:36.09ID:NXkYsMWn
6502の未定義命令表ってどっかに落ちていたような・・・
とはいっても2a03とオリジナルで違うような気もする
0118名前は開発中のものです。
垢版 |
2014/02/25(火) 00:48:36.47ID:PEseuuNL
同人でファミコンゲーだしてみたいので勉強中
実機でできるようになるまで遠いなぁ
0119名前は開発中のものです。
垢版 |
2014/03/11(火) 21:45:52.01ID:xOOt/lks
BG読書き時のレジスタアクセス等の手順を日本語で正しく説明しているサイトってないかね?
0120名前は開発中のものです。
垢版 |
2014/03/11(火) 23:17:40.95ID:Ee7AGpD7
古い情報を掲載してるとこしか知らない。
どこかで詰まってて表示できないとかトラブル抱えてるならソースファイルちょっと見せて?
0121名前は開発中のものです。
垢版 |
2014/03/12(水) 00:28:23.93ID:WZH/SRI7
ロジックは正しいハズなのにBG表示上手く行かねーって時あるけど
そういう時って大抵「ブランク期間中に全ての処理を一括でやらせて終わるのを待つ」的なロジックだったりする

ファミコンさんって割とレトロで非力な環境なので、毎フレームBG全書き換えできるほど速度早くないっていう。
なので、BG書き換え期間中は非表示にして、書き換え終了後にのみ表示する設定にすると、うまくいく事がある。
0122名前は開発中のものです。
垢版 |
2014/03/12(水) 01:37:23.21ID:sVRc03+V
スクロールレジスタ戻してないに1票
0124名前は開発中のものです。
垢版 |
2014/03/20(木) 16:18:48.51ID:NcrvcaHS
スレチかもしれんがSFCのことについて聞きたい。
65816でCOP命令ってあるよね、あれ普通のソフトウェア割り込み命令とどう違うの?
てかコプロセッサ使用時にどう使えばいいの?
0125名前は開発中のものです。
垢版 |
2014/03/20(木) 23:57:41.03ID:nDoqvjBg
別枠で跳び先用意してるだけで、仕組み自体はソフトウェア割り込みそのもの。
意味があるかは別として、コプロセッサを使う以外の処理にも使用できる。(使用頻度が高いルーチンの呼び出しとか)
コプロセッサは、COP命令発行後、割り込みベクタを参照して飛んだ先のルーチンで、普通にI/O叩いて使う。
パラメータ渡したり、処理に違いをつけたかったら、レジスタで処理番号渡してルーチン側で分岐とか、
スタックにパラメータ積んどくとか。

ちょっと昔のパソコンで浮動小数点演算ユニット使うのとあんまり変わらない。(というかそのものか)
0130名前は開発中のものです。
垢版 |
2014/03/31(月) 23:12:27.47ID:2ZMIQNqL
ネトウヨ「国際司法際はチョン」

なのに竹島問題もハーグで決着つけようとかいってるジャップwwww
0133131
垢版 |
2014/04/04(金) 16:51:41.09ID:stHAjJOS
>>132
動作確認ありがとうございます。
0135131
垢版 |
2014/04/07(月) 06:20:21.08ID:ANvPoB1w
ありがとうございます。あと、透明な敵が現れるバグがあるのと、
静岡県立沼津工業高校の校歌を使っています。
0138名前は開発中のものです。
垢版 |
2014/04/09(水) 17:36:23.74ID:Aiee0k4j
6502プログラミングの基礎はどうやって勉強するんだろ
アセンブラ言語そのものは分かるけど実装技術が・・・
0139名前は開発中のものです。
垢版 |
2014/04/10(木) 21:35:34.35ID:hnCuty6F
>プログラミングの基礎
6502のCPUの割り込みベクタとかの仕様を確認理解して、
他人が書いたソースコードを読んでいくのが良いかと。

ファミコン(古いゲーム機)のプログラミングは、初期化の後、
VSYNC待ち→1フレーム分の処理
の繰り返しとなる独特のプログラム構造を理解する必要があるかな。
0140名前は開発中のものです。
垢版 |
2014/04/10(木) 21:41:45.23ID:hnCuty6F
開発途中で、まだゲームの体裁になっていないけど、自作のソフトをさらしてみる。
src.zipにソース一式入っているので、参考頂ければ幸いです。

http://homepage3.nifty.com/~kyoske/nes/RevolvingGems.zip

十字キーでカーソル移動、Aボタンが時計回り、Bボタンが反時計回りに宝石を回します。
宝石が4個以上つながったら消滅します。
0141名前は開発中のものです。
垢版 |
2014/04/12(土) 04:57:10.26ID:IdgE9LS/
おお、すげぇ

宝石がヌルヌル流れるのがいいね。
なんでわざわざラスターしてるのかとおもったら、パレットのために必要なのか。
勉強になる・・・
0142名前は開発中のものです。
垢版 |
2014/04/12(土) 13:04:08.62ID:BjcqFb8t
すごい
仕事がコンピュータに関係ない仕事で趣味だけでここまで作ったのなら偉いと思われるレベル
当時のベーマガに投稿していれば採用されたと思う
0143名前は開発中のものです。
垢版 |
2014/04/12(土) 16:34:03.45ID:D7Ld43hD
>>140
なかなか出来が良さそう
.macro 〜 .endm (引数付きで)
.func
なんかも使うと楽になる場合もあるよ

>>140
ttp://wiki.nesdev.com/w/index.php/Controller_port_registers
$4017への書き込み(W)によるstrobe(コントローラーのリセット行為)は無意味、
そもそも出力ポートにつながってないかと。
strobe行為は$4016だけで十分。

$4016のbit0が1か0かで、
Tコン、Uコン、bothのコントローラーの中のTC4021BP(シフトレジスタのIC)の、
パラレル、シリアルの各モードが変わる。
1→0で押しボタンのパラレルデータがシフトレジスタに取り込まれて、
シリアル化されたということだ。

シリアル化されたデータは
Tコンは$4016の読み込み(R)で、
Uコンは$4017の読み込み(R)で、
それぞれ独立にシフトされる。

ttp://green.ap.teacup.com/junker/116.html この回路図もいいな
ttp://nesdev.com/Ntd_8bit.jpg

>>141
パレットはいじってないよ?
0145141
垢版 |
2014/04/13(日) 00:08:08.07ID:KkvqpUBo
>>143
>パレットはいじってないよ?
パレットというか、アトリビュートテーブル?
ラスターしないとパレットの違う宝石が水平に8ドットずれの位置で表示できないよね
0146名前は開発中のものです。
垢版 |
2014/04/13(日) 16:38:48.65ID:SW34DfG1
ラスタスクロールでずらす、って発想すごいなー。
こういう使い方初めて見た。勉強になりました。

当時もこういう使い方あったのかな?
ヘックスマップの戦略シミュとかでも使えそうだ。
0147名前は開発中のものです。
垢版 |
2014/04/13(日) 21:10:32.33ID:mdytbhuJ
>>146
理解力なさすぎ
いくらでもある

スプライト0ヒットで同期とった分割スクロール
  スーパーマリオ、エキサイトバイク
ラスタースクロールの塊
  F-1レースのカーブ演出、ドラクエVとWの旅の扉、rstrdemo.zip(VirtuaNES作者による)
IRQで同期とったスクロール(これが無ければゲームにならぬ)
  >>140、ロックマン3(武器、ボス選択、ワイリーステージ高速リフト)
  http://nozomi.2ch.net/test/read.cgi/gameurawaza/1352627490/143


>>145
色だけがズレるわけじゃない、BGそのものがズレる。
>>140の作品やいろいろなゲームの
G-NESのIRQライン表示をみてみ、ネームテーブル表示みながら。
無機能初期カセットのスプライト0ヒットのゲームでは何も表示されないけど
0148145
垢版 |
2014/04/14(月) 00:05:28.57ID:Ye30GFaz
>>147
なんでそんな否定からはいるのさ?

「アトリビュートテーブルの制限で、パレットが2x2BGキャラクタごとにしか
指定できないのを回避するために、ラスターでずらしてるのね」
まで言わないと伝わらない?
あなたの発言をみると、ファミコンの知識はあるのは分かるので、
ちょっと考えれば想像できると思うんだが。

146もラスターで「位置をずらす」んじゃなくて、「パレットの制限を回避」
するって発想を褒めてるんだろ。


まぁ、喧嘩したいわけじゃないんで、そこんとこご理解を(^^
0149146
垢版 |
2014/04/14(月) 00:18:00.10ID:BSoZ156l
>>147
メイン画面とステータス部の分割、疑似3D、疑似多重スクロール、
ゆらゆら燃える炎、巨大ボス、
そこに挙げてくれた例含めて実際に見て知ってるし、仕組みも理解できる。
理解できないのは、コズミックイプシロンくらいなもんでさ。
http://www.youtube.com/watch?v=C8F39OhAiRc#t=25

でも16*16ドットのブロックを行ごとに8ドットずつずらして表示、なんて使い道は見たことなかった。
その発想がすごいって話よ。
0150145
垢版 |
2014/04/14(月) 00:44:20.53ID:Ye30GFaz
補足。
ラスターに関して147の言ってることは技術的に正しいんだけど、
他人がそれを理解してないのを前提に、否定してるのが、ちょっとカチンときたということ。
(145も146もこの件に関して技術的に勘違いはしてないと思う)

>>140 とか >>131 とか手を動かしてるひとを応援してるんで、こんなレスでスレを汚してごめんよ。

>>146
当時のこういう使い方はあったのかは気になるね。
ヘックスといったら信長の野望くらいしか記憶にないなぁ・・・あれは4x4だから問題ないし。
0151名前は開発中のものです。
垢版 |
2014/04/14(月) 13:15:26.05ID:PHq3J+m9
>>149
似たようなのでテトラスターもあるね

コズミックイプシロンは横にラスタースクロールもしているけど、ベースの
アイデアとしてはBGのバンク切り替えアニメと同じことで実現してる

1ラインずつ別バンクに切り替えて絵を組み上げていく感じ
0152名前は開発中のものです。
垢版 |
2014/04/14(月) 18:55:50.61ID:dbr8gs6R
140です。

>143
strobeの件、情報ありがとうございます。
ソースに反映したいと思います。

>144
回転時のアニメーションは確かに落下時より遅いので修正します。
パラメータいじるだけなので、修正は難しくありません。

>149
>151
コズミックイプシロン見てみましたが、縦方向にも若干スクロールして立体感出しているみたいですね。
BGのバンク切り替えとの複合技でスゲーなと思います。


今作っているソフトも、2x2ブロック毎にずらしてあげれば
HEX表示できるな と思いつき実証の意味で作っています。
あと、1色共通で2色で描けば、1パレットで2種類、
3パレットで6種類の駒が表示できるなと。


ラスター割り込みは、他にもネタがあります。
例えば、8ドット毎に8ドット縦にずらせば、16x8ドット単位で
BGのパレット指定ができるなとか。
0153名前は開発中のものです。
垢版 |
2014/04/14(月) 18:57:07.18ID:Ye30GFaz
コズミックイプシロン、初めて知ったけど、たしかにすごいね・・・
デバッガで見るまで、どうやってるか想像もできんかった。

しかも、この手の3Dビュー系のゲームは個人的にはいまいち面白くないのが
多いけど、ゲームとしても楽しいw

good luck!
0154名前は開発中のものです。
垢版 |
2014/04/14(月) 19:22:56.78ID:PHq3J+m9
>>152
カーソル枠でまわる宝石が▽と△の時でカーソル枠の上と下を少し
狭くしたほうがわかりやすいかなと思いました
0155名前は開発中のものです。
垢版 |
2014/04/14(月) 19:58:14.37ID:BSoZ156l
>>151
テトラスターは知らなかったんで見てきた。おんなじ感じっす。
それにしても、バンク切り替えでやるのか…すげーな。
ちゃんと地形の模様になってんだもん、良く考えついたもんだ。

いま手元にないんでアレだけど、そのうちデバッガで見てみたい。


>>152
思いついたのか、発想力すげー…。
0156名前は開発中のものです。
垢版 |
2014/04/14(月) 20:06:28.23ID:dbr8gs6R
>>154
最初、指摘の通り、カーソル枠を台形にして、▽か△かわかるようにしたのですが、
カーソル移動時にうねうねカーソルの形が変わるのが気持ち悪く感じたので、
今のただの四角にしています。
0157名前は開発中のものです。
垢版 |
2014/04/14(月) 21:32:22.23ID:qn3GgaV0
>>148-150 >>131
自演気持ち悪い

わかってないからってファビョって「他人」を弁護?w

>>148
>「アトリビュートテーブルの制限で、パレットが2x2BGキャラクタごとにしか
>指定できないのを回避するために、ラスターでずらしてるのね」
>まで言わないと伝わらない?

伝わってるからそれは違うって言ってるんだけどね

手を動かしていてもね
延々と即値でスプライト初期化してたから変な奴と思ったらやっぱりな




ずらしてパレット指定の限界突破という謎技術を語ってる人が他にもいるようだけど
0158145
垢版 |
2014/04/14(月) 22:05:09.05ID:Ye30GFaz
>>131 の名誉のために、131と私は別人だよ。
スレのためにもう返事はしないし、あなたが正しいってことでいいよ(^^
0159名前は開発中のものです。
垢版 |
2014/04/14(月) 22:40:16.03ID:Ye30GFaz
>>140 さんに質問です。

勉強にソースを読ませてもらってます〜
タスクのなかが下記のようなフローになっていると思うのですが理解あってますか?

...
jsr Yeild
...Vcmd_SequenceDataなど BG書き込み予約系処理、完了時はzフラグで判定...
jsr Yeild_Eq
(zフラグが立っていた場合は jsr Yieldの直後から再実行)
(zフラグが立っていない場合は、下に抜ける)
...

また、あってるとしたら、こういうフローっていうのは
8bitなアセンブラだとわりとよくある手法ですか?


C言語脳なので、pla pla とかで返りアドレス捨ててるの見て、
どこに帰るんだ〜、とか、しばらく混乱してました(^^;

不躾な質問ですいませんが、お暇だったら見て頂ければ幸いです。
0161名前は開発中のものです。
垢版 |
2014/04/15(火) 00:19:44.09ID:Rogly49M
>>159 さん

> タスクのなかが下記のようなフローになっていると思うのですが理解あってますか?
> (zフラグが立っていた場合は jsr Yieldの直後から再実行)
> (zフラグが立っていない場合は、下に抜ける)

Yesです。


> また、あってるとしたら、こういうフローっていうのは
> 8bitなアセンブラだとわりとよくある手法ですか?

あまりないかと思います。
ゲーム屋として仕事したことはないので、どのような手法が一般的かは
知らないのですが、現在の進捗状態を番号で管理してジャンプテーブルで
飛ぶみたいな話は聞いたことがあります。

私の場合は、各処理を分解してジャンプテーブルで呼び出すのが
面倒そうだったので、次の呼び出し先のアドレスで管理する方式としました。
0165名前は開発中のものです。
垢版 |
2014/04/15(火) 00:52:17.35ID:4gJhlsqp
すいません、書き込み順の前後で混乱しました。160さんの指摘で正解ですね。

>>161
なるほど〜。ジャンプテーブルより柔軟性がありそうですね。
あと、継続っぽくてカッコイイ。

ありがとうございます
0166名前は開発中のものです。
垢版 |
2014/04/18(金) 18:15:30.91ID:jpWSPUfh
画面表示中にパレットを書き換えるサンプルプログラムつくってみたので、興味があるひとはみてみてね。
自分は、情報がなくてけっこう試行錯誤したので。

http://www1.axfc.net/u/3224863

メタルスレイダーグローリーのIRQ割り込みを参考にしたんだけど、
7ラインくらい表示ができないのはしかたないのか。
もっといい方法とかあったら、教えてくだしあ。
0168166
垢版 |
2014/04/19(土) 02:10:32.86ID:ENCcy0CN
>>167

うん。

たぶん、ラスター使えるようになってラスターでパレット変更もできるぜぃ、
と思って試した人(過去の俺とか)は、なぞのゴミが表示されて悩まされてると思う。
そのゴミをHBlankに押し込めるために、16byteの書き換えに7lineも画面表示を消してるって感じです。
0169名前は開発中のものです。
垢版 |
2014/04/19(土) 09:55:49.50ID:5+3bbh99
>>168
そうですか。知ってたらあれですが、3Dホットラリーはもろ見えてます。
ttp://img.gamefaqs.net/screens/b/3/c/gfs_18759_2_2.jpg
0170名前は開発中のものです。
垢版 |
2014/04/19(土) 13:11:45.50ID:ENCcy0CN
あ、ほんとだw
実は、3Dホットラリーの名前は以前でてたんで画面見たんだけど、
上2パレット、下2パレットくらいでやってるんじゃない?とおもって、スルーしてた。
ちゃんとパレット書き換えしてたのねw 失礼しますた
0171名前は開発中のものです。
垢版 |
2014/04/21(月) 00:26:08.69ID:/pAmCg0v
ゴミなんて消してやんよ
って思ったら
意外と無理だった


if ((!IsRendering) && ((VRAMAddr & 0x3F00) == 0x3F00))
PalIndex = Palette[VRAMAddr & 0x1F];

こんな仕様しらんがな
nintendulatorのPPU.cppより
0172名前は開発中のものです。
垢版 |
2014/04/21(月) 10:13:40.71ID:LbIV6qH+
おお、こういう原理だったのか。トンクス >>171

ttp://forums.nesdev.com/viewtopic.php?t=1209
コレみて、なんとなくパレットカキコミすると色が出るのは、理解してたんだけど、
細かい挙動はよくわかってなかった。
0173名前は開発中のものです。
垢版 |
2014/04/21(月) 10:17:13.69ID:LbIV6qH+
ちなみに、これってハードウェア的にはどういう原理なの?
詳しい人いたら教えて。
0175名前は開発中のものです。
垢版 |
2014/04/21(月) 23:59:09.10ID:/pAmCg0v
>>166を改造させてもらった

ttp://www1.axfc.net/u/3227965.zip

ゴミ消した


パレットの0x0dは使えないよ
垂直同期のパルスみたいな電圧になるから
0176名前は開発中のものです。
垢版 |
2014/04/22(火) 00:47:42.57ID:Ncm5fcM0
レンダリング止めていればBGの色が出ると思ってた

>>166のおかげで本気出せていろいろ勉強になったわ
>>172系のやつへの理解向上
レベルが一気に3あがった!

rtiの戻り書き換えだとか組み終わった後に
ttp://forums.nesdev.com/viewtopic.php?t=6484
full_palette.s
の偶奇同期を見つけた
この簡潔なソースで横ブレの無さのキモさといったら


>>173
BGのレンダリングは内部で$3f00へアクセスするんだろうけど
そのバグ挙動なのかね
ttp://wiki.nesdev.com/w/index.php/Visual_2C02
これ結局まだいじったことないんだけど、使いこなせれば理解できるのかな!?



ところで、また謎現象を見つけてしまった
ttp://wiki.nesdev.com/w/index.php/PPU_registers#Bit_0_bus_conflict
ttp://forums.nesdev.com/viewtopic.php?p=112424#p112424
0177166
垢版 |
2014/04/22(火) 03:41:30.42ID:+4JN+sCM
>>175
おおお、これは技術の粋が詰まったコードですね!素晴らしい!!
私もレベル3上昇して、レベル4になった〜

クロック管理が神々しく緻密・・・
ちなみに、ゲームでこのテクニックを使うとすると、IRQが入りそうなタイミングで
メインスレッドはnop連打になってないとダメという認識でおk?
とすると、実用は難しいけど、、、
ジャストアイデアとしては
2、3ラインくらい前にIRQいれて、一時的にメインスレッドをnop連打ループに切り替えて、
終わったらまたもとのメインスレッドに戻すというのは可能かな?
考えるだけで、脳髄が痛い・・・



>パレットの0x0dは使えないよ
一部の黒はつかっちゃだめというのは聞いてたんだけど、反対におぼえてたみたい(^^;
今後は0x0f使います〜


>>176 の情報も含めて、いろいろありがたい(^^
やっぱり、コードは晒してみるものだなぁ・・・
0178166
垢版 |
2014/04/22(火) 03:55:38.11ID:+4JN+sCM
いままでの自分の致命的な間違いに気づいた・・・
nopは2クロックだったのね。1クロックだとばっかり思ってた(^^;

よくいままでのコードうごいてたなぁw
0180名前は開発中のものです。
垢版 |
2014/04/22(火) 20:21:50.77ID:SP0raU7v
>>175

ソース読ませてもらったけど、
ldy #0
sty $2001
で、PPUのレンダリング止めると、PPUのバスが空くので
その間は自由にVRAMアクセスできたと理解していたんだが
違っていたかな?

そうであれば、HBlank待つ必要ないので、パレット書き換えで
非表示になるライン数を減らせると思う。

あと、割り込み時にはiフラグが立った状態でルーチンが
呼ばれるので sei は要らないと思う。

http://wiki.nesdev.com/w/index.php/CPU_interrupts#IRQ_and_NMI_tick-by-tick_execution
0181名前は開発中のものです。
垢版 |
2014/04/22(火) 20:38:14.58ID:SP0raU7v
>>173

PPUのデータのバス(信号線)が1組で、PPUのレンダリング中はVRAMからデータを読み出している。
CPUがVRAMアクセスのためにPPUアドレスを設定するレジスタ($2006)とPPUがネームテーブルにアクセスするアドレスのレジスタが兼用のため、CPUがパレットのアドレスを書き込むとPPUはパレットデータを読み出してレンダリングすることになる。

と理解しているのですが、間違っていたら指摘お願いします。>他の人
0182166
垢版 |
2014/04/22(火) 20:46:59.02ID:+4JN+sCM
>>180

>で、PPUのレンダリング止めると、PPUのバスが空くので
>その間は自由にVRAMアクセスできたと理解していたんだが
>違っていたかな?
そう思ってたんだけど、PPUのアドレスレジスタが0x3f**だと、
**の色(=ゴミ)が出力されるっていうのが、171のコード片の意味。
0183166
垢版 |
2014/04/22(火) 20:59:26.06ID:+4JN+sCM
>>181
なるほど〜、
ハードウェアは素人(簡単なワンチップマイコンをいじったくらい)
なんで、解説してもらえて助かるっす。ありがと〜

用語があってるかわからないけど、バスコンフリクトってやつでいいのかな?
あとチップに損傷を与えたりはしないのかしら・・・
まぁ、あとは電子回路関係の情報で調べてみます。
0184166
垢版 |
2014/04/22(火) 21:04:00.85ID:+4JN+sCM
連投でスマソ

>>181
追加で疑問。
そうすると、0x3f**以外のアドレスでも、そのアドレスのVRAMデータの色が出力されそうなんだけど、
0x3f**以外ではそうはならないみたいなんだよね・・・
これはレジスタ兼用でもそうならないものなのかな?
0186名前は開発中のものです。
垢版 |
2014/04/22(火) 23:13:05.47ID:SP0raU7v
>>184

The PPUDATA read buffer (post-fetch)
ttp://wiki.nesdev.com/w/index.php/PPU_registers#The_PPUDATA_read_buffer_.28post-fetch.29

ここに $0000-$3effは内部リードバッファから返すが、$3f00-$3fffは(PPU内部の)データバスに直接配置されている
と書かれているので、この辺りの差で挙動が変わるっぽいですね。
0187名前は開発中のものです。
垢版 |
2014/04/22(火) 23:47:45.15ID:Ncm5fcM0
>>180
>seiは要らない
しまった、モロ立ってた
どうも

>>181
パレット$3fxxは通常はPPU内部アクセス、つまり擬似NTSC信号を生成する回路とのやりとりであって
普通のPPU空間には出力されないとどこかに書いてあった気がする

ttp://nesdev.com/2C02%20technical%20reference.TXT
- palette RAM is accessed internally during playfield rendering (i.e., the
palette address/data is never put on the PPU bus during this time).

ttp://wiki.nesdev.com/w/images/d/d1/Ntsc_timing.png
画像の通りパレットのアクセスはない

しかしこういう挙動もある、これはレンダリング止めた場合だろう?
Additionally, when the programmer accesses palette RAM via $2006/7, the
palette address accessed actually does show up on the PPU address bus, but
the PPU's /RD & /WR flags are not activated.
この辺あやしいね
0188名前は開発中のものです。
垢版 |
2014/04/22(火) 23:59:55.97ID:Ncm5fcM0
>>177
今回はjmp *にしてもHBlankに収まるっぽく大丈夫なようですが

127 line目で
$2001のレンダリングオフにする瞬間の
PPU tickのばらつきが
249〜254 nop連打の場合
249〜257 jmp連打の場合

ばらつきが3dot分増えることになります

市販ゲームのIRQ関係もゴミだらけだし気にすることはない

直前に入れるのはいいアイディアだね
0189名前は開発中のものです。
垢版 |
2014/04/23(水) 17:56:22.78ID:eYt0ULQB
>>186 >>187
なるほど、、、
まだ理解してないけど、このあたり読めばわかる気がしてきた。ありがと

しかし、PPUのアドレスレジスタの兼用さえなければ、レンダリング中に読み書きできて
BGアニメーションとかもっと便利だったろうにって思ってたけど、
Ntsc_timing.png みるかぎり、ひっきりなしにアクセスしてるんだね・・・
とするとメモリポートが2つないとだめだから、結局は無理だったのか。

>>188
了解。
sei/cliさえしなければ最大6クロックだから、6*3=18dot(nopにくらべて12dot大きく)
ずれるのが許容できればおkってことね。
許容できるのか、計算するのが大変だけど(xx
0190名前は開発中のものです。
垢版 |
2014/04/23(水) 20:09:45.06ID:yop1NMPn
この現象で分った事。
パレットの04 08 0Cは00とは別の値を格納できるが、実用上何も使われていないと言う事(合ってるよね?)。
0191名前は開発中のものです。
垢版 |
2014/04/23(水) 21:35:50.97ID:bXRTGLw+
↑あってるっぽい
ただしスプライトの四の倍数とは共有か

void _fastcall Write7 (int Val)
{
if ((VRAMAddr & 0x3F00) == 0x3F00)
{
register unsigned char Addr = (unsigned char)VRAMAddr & 0x1F;
Val = Val & 0x3F;

Palette[Addr] = (unsigned char)Val;
if (!(Addr & 0x3))
Palette[Addr ^ 0x10] = (unsigned char)Val;
0192名前は開発中のものです。
垢版 |
2014/04/24(木) 07:57:06.72ID:RDg08ToE
流れぶったぎるようで申し訳ないけど、デバッガ機能が一番使いやすいNESエミュはどれですか?
0193名前は開発中のものです。
垢版 |
2014/04/24(木) 10:17:47.73ID:TazbtZqQ
>>192
FCEUXがおすすめ。
(読/書/実行)ブレークポイント、スキャンラインごとのVRAM内容表示、RAMウォッチ あたりの機能をよく使ってる。
0195名前は開発中のものです。
垢版 |
2014/04/24(木) 21:06:44.07ID:Ozv2HHx1
ブレークポイントの使いやすさは
G-NESじゃないか
よっぽどトリッキーなコーディングしないならこれで十分


G-NES は使いやすい、指定行まで実行がStepOverを兼ねる
FCEUX はログ機能が最強、シンボル機能搭載、エミュ精度も結構よい
Nintendulator はデバッガ付きではエミュの精度が最強かな、使いにくい
0196名前は開発中のものです。
垢版 |
2014/04/24(木) 23:37:48.91ID:d8WjRMEc
>>191
そう、スプライトと共通(04=14、…)
僕は実機で確認したけど、nendoかnestopiaと同じなら間違いないだろうな。
古いネット上のドキュメントとか間違ってたりするから100%鵜呑みにしない方がいいよ(エミュのソースも)。
0197名前は開発中のものです。
垢版 |
2014/04/25(金) 00:53:39.01ID:ffWieyHe
G-NESは使ってなかったから、ちょっと触ってみた。
デバッガは、FCEUXとG-NESほぼ同等やね。
ちょっとわかりにくいけど、アドレスクリックして"Seek To"で指定行まで実行もできるし。
(この機能が超欲しかったけど、いま探すまでアドレスクリックで指定できるの気付かなかったw)

しかし、FECUXのシンボル情報って吐き出してくれるコンパイラあるのかな・・・
使えれば便利そうなんだけど。
0198名前は開発中のものです。
垢版 |
2014/05/10(土) 18:53:04.15ID:ShrxaRho
マッパー0のカセットを何本か作りたいんですが
既存のソフトのHVC-NROM-256K-02基板からICを外すのが面倒なので
プリント基板だけを通販しているところとかないですかね?
もしくは,CADデータとか.
0199名前は開発中のものです。
垢版 |
2014/05/10(土) 19:06:34.44ID:ShrxaRho
ちなみに作りたいカセットとはこれです.
この1週間ちょっと頑張ってインプリしてました.
アセンブラなんか普段いじらないので,めちゃくちゃです.
でも,このスレはちょくちょく見てるので,恩返しに公開します.
ttp://sayonari.com/famicom/FamilyBird.zip
綺麗に書き直したかったですが,しばらくいじれそうにないので,
皆さんに託します.

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

メモリ管理とかちゃんとしてないし,変なところに書き込んだり,
PPUアクセスのタイミングがむちゃくちゃだったりとかが原因だと思います.
互換機じゃなくて正規版本体ならちゃんとうごくのかな・・.
0200名前は開発中のものです。
垢版 |
2014/05/10(土) 19:40:22.36ID:WvHa+XO0
そこまでやって正規版FCを持っていないというのが謎過ぎる
高いわけじゃないんだから普通に買えばいいのに
0202名前は開発中のものです。
垢版 |
2014/05/10(土) 20:52:41.78ID:ShrxaRho
>>201
すごい!かなり軽減されました.しかしまだチラチラがあります.
しかしさすがのアドバイスありがとうございます.勉強になります.
0204名前は開発中のものです。
垢版 |
2014/05/10(土) 23:12:04.05ID:ShrxaRho
>>200
ファミコン本体は実家にはいっぱいあるんですが,今の家にはなくて,
急遽必要になったので,とりあえず,ヤフオクで互換機を送料込み900円で落札しました.
その後,今もですが,正規版ファミコンをどれにしようかと,ヤフオクでキョロキョロしてます.
互換機は今日届きました

>>203
これは,FlappyBirdっていう人気アプリのオマージュですが,それも土管で即死です

ROMライターのLEAPER-3Cのドライバが64bitWin7では動かなかったので焦りましたが,
VirtualPC上のXPmodeというやつで,そのOSからLEAPER-3Cが使えたので
良かったです(´ρ`)
0205名前は開発中のものです。
垢版 |
2014/05/11(日) 01:44:45.44ID:HiLhu8FK
非VBlanc期間がループで一切の処理をしていないからDMA転送がVblank内に収まってないんじゃないかね
通常は非VBlank期間にキー入力だのスプライトのデータ準備だのデータを用意しておいて
Vblank期間は描画処理だけを行うようにする
0206名前は開発中のものです。
垢版 |
2014/05/11(日) 02:54:20.00ID:Mnx9Nf8g
>>205
ありがとうございます!
チャレンジしてみましたが,上手く実装できませんでした(´ρ`)
どの処理をどこでやればよいか・・・.
もう時間的に頭が働いていないのかも.とりあえず寝ます.
0207名前は開発中のものです。
垢版 |
2014/05/11(日) 04:04:19.91ID:YECX6XhP
>>199
なかなか、ファミコンらしい可愛いグラフィックやね。
nesdevでflappy bird作った奴いないの?みたいなスレがあったから、貼るのもおもしろいかも
http://forums.nesdev.com/viewtopic.php?f=2&;amp;t=11103

ちなみに、Nestopiaでもバグってるっぽいので実機の前にこっちでデバッグしたら楽かもしれない。
残念なことにデバッグ機能はほとんどないけど・・・
0208名前は開発中のものです。
垢版 |
2014/05/11(日) 04:53:13.07ID:Mnx9Nf8g
>>207
nestopia情報ありがとうございます!
試してみましたが,パレットがおかしくなるバグはありますが,
実機互換機で起こるチラチラ飛び散りバグは出ません.
正規本体でもでないかな.正規本体早く買おうかな.

nesdevにも凸したいと思います(〃゜ω゜〃)
0209名前は開発中のものです。
垢版 |
2014/05/11(日) 08:18:39.15ID:IEErYv9U
>>208
最初のロゴでスプライトのゴミが出るのはメモリの初期化をして
いないからだと思う

パレットがおかしいとかスクロールがぶれるとかそういうのは恐らく
表示期間中にPPUに書き込みしてるんじゃないかな
0212名前は開発中のものです。
垢版 |
2014/05/11(日) 14:28:37.07ID:rGvGrR+8
>>199
タイミングめちゃくちゃ&画面ゴミ&遷移時ちらつき&各PPU系メモリ初期化すらできない
こういった初心者はG-NESだけ使ってればいい
そもそも仕組みをちゃんと理解していればこういった不具合を起こすことはない

最近うpる人っていつもこういう傾向だけど、わざと間違えてレス貰う釣りなの?
見た目綺麗だけど不器用で挙動めちゃくちゃなソースの人多いね、BGオンする前にVBlank待たずにチラつかせたりとか
最低限NESTECJ.TXTかndox200.zip理解しとけよ
 ・スプライトメモリの初期化をしていない、Y座標(0xef <= y <=0xff)とするとスプライトはオフになる、Reset:とシーン#1入り口等でやれ
 ・NMI直後にJSR PadGetやる暇はない、まずSPRDMA。プログラムのあちこちにSPRDMAがばら撒かれているのはおかしい
 ・シーンチェンジのVRAM初期化から離脱するときに、VBlankを逃してVRAMに書き込んでる
 ・あなたは当分.macroは使用禁止、これは上級者向け
 ・シーン#1の初期化でPPU $23be-$23bfへ書き込めていない
 ・シーンチェンジの瞬間に下記と同じ理由でカクついていると思う

   シーン#0の初期化の際
inc <BGUPDATED
.g2
jmp EndBG もうこの時点で123ライン程度経過している、つまりブラウン管のど真ん中描画中に
   こんなことをやっている
sta VRAMADDR  これはゴミがでるね
sta SCROLL  カクつくね
lda #%00011110 ; スプライトとBGの表示をONにする
sta PPUCTL1 カクつくね
   この次の箇所へ提案…
パッドはここにおけばいいはず
各〜_playはたぶんここでいい
snddrv_playはここでいい
rti

各シーン初期化最後の inc <BGUPDATED 直後にNMIオンにして大胆にrtiしちゃえばすこしマシになるかな
根本解決にはならないけど
0213名前は開発中のものです。
垢版 |
2014/05/11(日) 14:29:39.56ID:rGvGrR+8
>>199
もう構造的に破綻しているけど
この先スクロールゲームにするなら
今の構造のままだともっと破綻する

理想的には
バッファに命令語を用意しておき
NMI直後に命令語を読み取ってVRAMに書き込む
こういうスタイルじゃないとね

構造が悪いからデバッグの難度も上がる
小規模なうちに治さないと


シーンが増えると結局テーブルジャンプや間接ジャンプ( jmp [mem] )、こういった関数ポインタを使わないとやってられないと思う、
デカくなったswitch文のアセンブラでの効率のよい実装のことね。
cmp #n の比較地獄をしていたら、デカくなればなるほど後の方は遅くてやってられない。
シーンが続き番号でないなら比較地獄も免れないけど


>>198 >>200 LEAPER-3C
謎な奴だよなw
IC引っこ抜くよりCADデータある方が時短になるのかw
エミュでデバッグできないやつが、実機ROM焼きしてたら、ますます時間無駄にすると思うけど

>>201
姑息な手かと思ったら、少し根拠あったのね > Obscure details of OAMADDR
0214名前は開発中のものです。
垢版 |
2014/05/11(日) 15:05:47.12ID:/Ki7K6oz
ファミコンは画面周りがややこしいからなぁ
自分も昔は資料が少なかったこともあって
BGを正常に表示できるようになるまでけっこうな時間を要したな
0215名前は開発中のものです。
垢版 |
2014/05/11(日) 17:55:22.28ID:vl3SyvU7
原理的にはむしろ単純だろ
なぜそうなるかの理解がないから理不尽に受け取るだけで
0217名前は開発中のものです。
垢版 |
2014/05/11(日) 21:03:39.07ID:QGu2c1mG
惜しいなあ、技術的にはいいこと書いてるハズなのに口調で台無し
必要もなく刺々しい言葉「しとけよ」「やれ」などを使ったかと思えば
「釣りなの?」「と思う」などと子どもじみた表現が混ざる

いい歳こいて言葉を選べないって、それはもう恥ずかしい事だよ
書き込む前にきちんと自分の書いた文章、推敲したするべきだよ
自分も、他人も、傷つけないために
0218名前は開発中のものです。
垢版 |
2014/05/11(日) 21:45:37.94ID:hyDhkYCi
>>199
□ゲームについて
全体的に良い感じにまとまっていると思いました。
ただ、ミス即ゲームオーバーなので、残機制かライフ制にした方が少し長く遊べて楽しいかなと思います。
あと、果物などのアイテムを出して取ればボーナス点が入るとか。

□プログラムについて
BG書き換えについては、VBlankを深く考えていない実装になっているので、ここから立て直すのはきついと思いました。
205さんの指摘のように、PPUに転送するデータを一旦バッファに入れてVBlank中に転送するフレームワークを作って移行する方が早いかと。
VBlank中にPPUに転送できるデータ量は限界があるので、BG書き換えの実装部分はそれを配慮した作りに直さないと駄目ですね。
0219名前は開発中のものです。
垢版 |
2014/05/11(日) 23:13:04.21ID:rGvGrR+8
>>217
ゆとりメンタルなやつは2ちゃん見なきゃいいんじゃない?

お前らは延々と即値でスプライトのバッファ初期化して、
100レス前も読めずNMI使えず$2002のポーリングでループ作ってるアホと同類だろ?w
何度同じこと言われても改善しようとしないやつw

前スレの>>700あたりから湧いてる


画面カクついてる時点で釣りかと思ったし
全部のシーンを厳密に検証する気はないから「思う」と書いただけでね



こういう書き込みも増えたね

>〜エミュで動作しました、バグってました
そりゃ画面がカクついていたり、
ソフトリセット、ハードリセット時に挙動が乱れたりするのは誰が見てもバグだよな

>>218
つくりはじめたばかりのやつが、まとまってるのか?
0220199
垢版 |
2014/05/11(日) 23:30:36.97ID:Mnx9Nf8g
皆さんご親切に本当に有難うございます.実際にプログラミングしながら勉強することで,
たくさん吸収出来てます!!

>>212
親切にソースチェック&修正案ありがとうございます.
こういう方が即レスくれるのも,さすがこのスレという感じです.
プログラムは,何も考えずに,ここまでとりあえずという感じなので,
皆さんから頂いた意見と,わかったことを入れて,プログラムし直したいとおもいます.

>>218
PPUへのアクセスに時間がかかるし,BG描画後にVRAM周りにアクセスするとヤバイ
っていうことを知らずに実装していった結果が今のプログラムです.
ご指摘のように,バッファに用意→転送にすることと, VBlankの時間を考慮した
実装にしたいです.


ソース公開は恥ずかしかったですが,頑張って出して良かったです!
想定よりも,皆さんからレスを頂けて嬉しいです.頑張ります!
0221名前は開発中のものです。
垢版 |
2014/05/12(月) 00:09:07.80ID:jaOM61/S
>NMI使えず$2002のポーリングでループ作ってる
初心者でこれやらかす奴はたぶん某サイトの影響受けてるだろ
あそこは全体的に説明が不足しすぎてるよ
更新も長いこと止まってるし、当てにするのはやめたほうがいい

Nesdevの日本語資料理解するだけでもだいぶ変わるし
他にも今ではNES関連資料のサイトなんていっぱいある
特にI/Oレジスタについてはサイトによって書いてあること違ったりするから
一つのサイトに拘らず色々見るといい
0222名前は開発中のものです。
垢版 |
2014/05/12(月) 00:13:00.90ID:p9javgur
>>220
BG描画後にVRAMアクセスがNGではなくて、
非VBlank中にVRAMアクセスするのがNGなんです。(画面が乱れる)
短いVBlank中にVRAMを書き換えるために、バッファにデータを溜め込んでおいて、
VBlank(NMI)割り込みに入ったらすぐにバッファのデータを転送しろってことです。
あと、もちろんですが、スプライトのDMA転送もVBlank中に行わなければなりません。
0223名前は開発中のものです。
垢版 |
2014/05/12(月) 08:39:01.88ID:Wk7QwTB6
>>199 みたいな、打たれてもへこたれないヤツは2ch向きだね。ガンバレ!

>>217 の意見には同意だけど、そういうヤツもいるのが2chの味なのかなぁ
自分に対して >>213 みたいな反応されたときは、頭来たけどなw
修行が足りない
0225名前は開発中のものです。
垢版 |
2014/05/12(月) 10:39:31.18ID:cuBtqyJP
当時のRAMはデュアルポートではないから読んでいる最中に書き込みはできない
単純な構造だよね?

で、画面を描画している最中は(BGもOBJも)データをVRAMから読み出している真っ最中だから
そこで無理やりデータを書き込むと、今まで画面描画時に参照していたVRAMのアドレスが置き換えられてしまうため
元の描画処理を継続することができなくなり画面の表示が破綻してしまう

表示周りをいじる際VBlank期間中にアクセスしなければならないのはこういう理由
0229名前は開発中のものです。
垢版 |
2014/05/13(火) 19:16:50.69ID:srI4FW40
RIKIがパソファミの安藤に媚び売っててワロタ
ロジックボム組み込んだりする基地外なのを知らんのか近頃のもんは
0230名前は開発中のものです。
垢版 |
2014/05/13(火) 20:10:15.51ID:f3qQ/xjJ
パソファミ作者はメールでの対応が最悪レベル
自分の非を認めないどころか人を犯罪者扱いしたりするキ○○イ
おまけにホンコンのソース盗用疑惑もあるしな ホントどうしようもねぇよ 
素人にはこれしかないから売れるんだろうけど それが余計にたち悪いね
0231名前は開発中のものです。
垢版 |
2014/05/15(木) 00:00:39.68ID:HB8Kbvvq
>>229
>>ロジックボム
そういう噂を聞いたから
その後にちょっとだけ調べたけど
プリンタポートでないI/Oポートに向けて
x86のout命令が発せられてたような、ないような
windows98なら簡単に発動するのかな
より堅牢なOSであるwindows2000にしてたから
効果なしっぽかったけど

近頃のもんが吸出しやROM焼き実機動作させてるのをよく見かけるようになったけど
ソソハメさんの名前がなぜあまり挙がらないか理由をよく認識しておいた方がいい>もっと近頃のもんたちへ
0233名前は開発中のものです。
垢版 |
2014/05/15(木) 05:14:14.01ID:gGlXRPO1
すみません、吸出しというのは英語では何というのでしょうか?スペルを教えて下さい
0235名前は開発中のものです。
垢版 |
2014/05/20(火) 00:15:36.83ID:sHOtKBex
>>140
宝石のラスタスクロール凄いね。あと、スプライト吹雪は気持ちいいっす
このスレッドで新しい演出ジャンルに出会えたのは嬉しいね

>>199
土管避けるの難しいけど楽しいね
BGの判定は凄いと思う
どんどん成長してゆくのが楽しみ
0236140
垢版 |
2014/05/28(水) 20:00:45.64ID:pcO3WytB
ジョイパッドの読み取りルーチンをリファクタリングしたら結構コンパクトになった。
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
ありがとうございます。
0237140
垢版 |
2014/05/28(水) 20:07:39.22ID:pcO3WytB
あ、

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

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

ttp://homepage3.nifty.com/~kyoske/nes/RevolvingGems070.zip

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

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

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

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

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

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

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

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

http://www1.axfc.net/u/3252687.zip
0246131
垢版 |
2014/06/06(金) 21:24:59.35ID:5n3Zcu9W
こんな事書き込みたくて書き込むわけじゃないですけど、
ファミコンの正常動作って何ですか?
どうすれば正常動作っていうんですか?

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

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

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

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

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

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

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

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

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

ファミコンの実機は持っているのですが、ROMライターや
EEPROM、同軸ケーブル、ビデオデッキ、自分用のテレビ
0256131
垢版 |
2014/06/07(土) 14:27:25.94ID:HAL7UNXv
など問題が山積しているので、現段階では難しいです。
0257名前は開発中のものです。
垢版 |
2014/06/07(土) 15:48:51.46ID:0OqTmEOh
>>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が不要
0258名前は開発中のものです。
垢版 |
2014/06/07(土) 15:49:29.84ID:0OqTmEOh
>>257

続き

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

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

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


  jsr Pad_Check

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


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

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

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

@英語が出来ない

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

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

ちょうど良い本がアマゾンで見つかったので
ttp://www.amazon.co.jp/%E4%B8%AD%E5%AD%A6%E3%83%BB%E9%AB%98%E6%A0%A16%E5%B9%B4%E5%88%86%E3%81%AE%E8%8B%B1%E8%AA%9E%E3%82%92%E7%B7%8F%E5%BE%A9%E7%BF%92%E3%81%99%E3%82%8B-CD%E4%BB%98-CD-BOOK-%E5%B9%B3%E5%B1%B1/dp/4860641663

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

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

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

つづく
0260131
垢版 |
2014/06/07(土) 17:29:43.93ID:hwRmu2MG
>>257-258
VBlankとゲーム本体処理を分離ということはNMIを使うって事ですね。他の方も言ってましたが

スプライトと実際の座標を別に持つというのは、以前やったことがあるのですが、クソ汚いソースになってしまいましたが、少しだけわかってきた気がします。こんな感じですかね。
>>261に書きます。


VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。

Pad_Checkは、他の方が作られたソースなので、あえて外しました。ROMに0を書き込んだ意図は、恐らくないです。気づかないまま放置してしまいました。

ブロックの配置位置が有限個ならテーブル化できるんですか?今度やってみます。

アドバイスありがとうございます!!ホント助かりました。知らなかった事や理解出来なかった事が分かってよかったです。
0261131
垢版 |
2014/06/07(土) 17:30:36.51ID:hwRmu2MG
.org $300 ;データ定義
Sprite:
Sp00_Y: $0300
Sp00_T: $0301
Sp00_S: $0302
Sp00_X: $0303
01_Y: $0304
01_T: $0305
01_S: $0306
01_X: $0307
...

ldx #0
.SetObjAxis2RealAxis ;スプライト座標を実際の座標に代入する
lda Sprite+0,x
sta Real_Y,x
lda Sprite+3,x
sta Real_X,x
inx
inx
inx
inx
cpx #(4*4) ;4つのスプライトを代入する
bne .SetObjAxis2RealAxis
0262131
垢版 |
2014/06/07(土) 17:32:41.18ID:hwRmu2MG
間違えました。


.org $300 ;データ定義
Sprite:
Sp00_Y= $0300
Sp00_T= $0301
Sp00_S= $0302
Sp00_X= $0303
01_Y= $0304
01_T= $0305
01_S= $0306
01_X= $0307
...

ldx #0
.SetObjAxis2RealAxis ;スプライト座標を実際の座標に代入する
lda Sprite+0,x
sta Real_Y,x
lda Sprite+3,x
sta Real_X,x
inx
inx
inx
inx
cpx #(4*4) ;4つのスプライトを代入する
bne .SetObjAxis2RealAxis
0263名前は開発中のものです。
垢版 |
2014/06/07(土) 17:38:24.41ID:YYdbZPoT
英検三級、即ち中学卒業程度の英語力とgoogle翻訳があれば十分。
海外サイトの情報も何も全部理解する必要はないし、図、表、技術用語さえわかれば殆ど問題ない。
それに今では日本語資料も充実していると思うし、あえてギコ猫のところだけを参考にすることもないだろう。

初心者のうちは他人が作ったソースを見てよく理解し、そこからいろいろ学ぶのもいいだろう。
公開されているソースによっては丁寧に説明が細かく書いてあるものもある。
0264131
垢版 |
2014/06/07(土) 18:21:24.08ID:hwRmu2MG
>>263

英検3級は持ってますが、かなり文法が怪しいです。単語に関しては最も初期の「萌えたん」を
P-StudySystemを自作問題集を作って覚えた程度です。

1つ1つの単語が読めても何を言いたいのかわからないので、今持っているくもん中学英文法
という本をゆっくりと確実にやる事にします。

初心者というにも、初めてから時間がかかり過ぎてる面はあるのですが、
恐らく他の方の作ったソースを断片的にしか分かっていないというのはあると思います。

google翻訳に関しては、使うブラウザがchromeなので、標準で使えます。
0266名前は開発中のものです。
垢版 |
2014/06/08(日) 02:10:46.27ID:CkZRo6BG
>>260

> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。

VBlankの意味を理解していない節があるので、まずは、ブラウン管の話からします。
機知の情報かも知れませんが聞いてください。

ブラウン管の裏から電子銃で電子を飛ばし、ブラウン管表の蛍光面を発光します。
真っ直ぐ飛ばしただけでは、ただの点なので、磁界をかけて電子が飛ぶ方向を変えて
左上から右へ水平方向に線を書くように発光させ、再び左端に戻ってさっきより
ちょっと下の位置で同じように水平方向の線を発光させます。
これを画面下まで繰り返して、再び左上に戻ります。
これをすばやく繰り返すことで、ブラウン管の蛍光面全体に画像を表示します。(ラスタスキャン方式)
電子の飛ばし先が右端から左端に戻る期間を水平帰線消去期間(HBlank期間)、
下端から上端に戻る期間を垂直帰線消去期間(VBlank期間)と呼びます。
0267名前は開発中のものです。
垢版 |
2014/06/08(日) 02:12:41.17ID:CkZRo6BG
>>266

続き

VBlank期間は、一瞬で戻るのではなく、NTSC(日本のアナログ放送の信号規格)の場合
20本分の横線を描くぐらいの時間があります。この間、電子銃から電子は飛びません。

非VBlank期間は、ファミコンのPPUは画像の信号を作るため、
CHR-ROMからパターンを読み込んだり、VRAMからネームテーブルや
属性情報を読み込んでいて、PPUの信号線(PPUバス)を占有しています。

VBlank期間は、PPUが画像の信号を作らないので、PPUバスは開放されており
CPUはPPUを介してPPUバスにつながっているVRAMにアクセスできます。

「VBlank待ちの直後にVRAMの書き換えを行え」というのは、PPUが映像信号を
作るのに邪魔にならないタイミングでVRAMにアクセスしなさいということです。
0268名前は開発中のものです。
垢版 |
2014/06/08(日) 02:53:09.19ID:CkZRo6BG
>>267

続き

非VBlank期間中にCPUがVRAMにアクセスできる方法があります。
PPUレジスタ $2001 のbit3とbit4を0にして、BGとスプライトを非表示にすることです。
画像の信号を作るためのPPUのCHR-ROMやVRAMへのアクセスが止まるので
PPUバスが開放され、CPUはPPUを介してVRAMにアクセスできます。

代わりに、画面に何も表示されない箇所が現れることになります。
BGとスプライトを非表示にするタイミングにばらつきがあると、
画面がちらつく現象となります。

> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。

ファミコンの設計による制限であるため、仕様と言えば、その通りです。
0269名前は開発中のものです。
垢版 |
2014/06/08(日) 02:54:30.27ID:CkZRo6BG
>>268

続き

同世代の他のパソコンとかでは、表示中にもCPUからVRAMにアクセスできるものが
あるのに、ファミコンで出来ないのはなぜ?

→画面表示用の信号線とCPUからVRAMにアクセスする信号線が別になっているためです。
 VRAMもデュアルポートメモリという、アクセスの口が2つある特別なRAMを使っています。
 ファミコンのWRAMやVRAMに使われているのは、アクセスの口が1つのシングルポートメモリです。
→信号線も増えるため、基板上の配線が複雑化し、基板のサイズや層が増えてコスト増になる可能性があります。

ファミコンのVRAMにデュアルポートメモリを使わなかったのはなぜ?

→コスト削減のためです。
 一般的にアクセスポートが余分にあるデュアルポートメモリの方がシングルポートメモリより部品代が高くなります。
 また、WRAMとVRAMに同じ部品を使うことで、大量に発注し部品メーカーに単価の引き下げを交渉できます。

とりあえず、わかりやすく説明したつもりですが、間違いなどがありましたら
フォローお願いします。>All
0270131
垢版 |
2014/06/08(日) 06:24:49.26ID:RIyNgnKh
>>266

VBlankに関しては、「ファミコンの驚くべき発想力」という本の78ページ前後に
記述がありました。が、>>266さんの説明の方がより詳しく説明しているように
見えます。

HBlank期間のHはホライゾン?(水平)の略でしょうね。VBlankのVは、バーチカル(垂直)
の略な気がします。

NTSCとPALの違いも知らなかったのですが、日本は、NTSCだったんですね。

VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由が
あったんですか。

非VBlank期間中にCPUがVRAMにアクセスできる方法、これは知っていましたが、
欠点は知りませんでした。
0271名前は開発中のものです。
垢版 |
2014/06/08(日) 07:01:43.99ID:Jc27w7xL
Horizontal Blankingですかね

かつてはPPUの特定のバージョンのみで発生する不具合なんてのもありました
スクロールレジスタがある値の時、VRAMアドレスレジスタを触ると背景色が化けるというもの・・
0272131
垢版 |
2014/06/08(日) 10:50:38.68ID:RIyNgnKh
PPUの特定バージョンというのが分かりませんが、製造されたファミコン本体
ですか?それともエミュレータか何かですか?

スクロールレジスタは、$2005の二度書きレジスタですよね。
0273名前は開発中のものです。
垢版 |
2014/06/08(日) 15:26:42.07ID:25kxI5vs
RPGやなんかでフィールドから街へフィールドから戦闘への場面変更で一旦ブラックアウトするのは
画面初期化して書き直す時間を稼ぐためでもあったんだろうか?
0274名前は開発中のものです。
垢版 |
2014/06/08(日) 15:31:42.31ID:Eog1TIRJ
製造ロットによるがファミコンの中には2つのカスタムLSIが入っている。
一つはRP2A03というもの もう一つがRP2C02というもの。
前者がCPUとAPUやI/Oポート周りで、後者がPPU。
PPUがRP2C02なのはNTSC出力のものだけで、PALならRP2C03、RGBならRC2C05など。
型番の後に続くアルファベット(例:RP2C02EのE)がバージョンを表している。
特定バージョンというか、初期型に不具合が多かった。

ちなみに製造後期になるとデコーダやインバータも1チップのカスタムLSIにまとめられる。
でもなぜかSRAMがSOPからDIPに戻ってる。入手先が限られてきたのかな?
0275名前は開発中のものです。
垢版 |
2014/06/08(日) 17:20:23.01ID:2cLvFL4/
>>273
スクロールは基本的にネームテーブルを2枚とも使うので
表示されていない方を裏画面として使うのはちょっとめんどくさい

だから場面転換時には画面表示を一旦オフにする必要はあるけど
画面全体を書き換えるにしても数フレームだからほぼ一瞬で終わる

わざわざ時間稼ぎしなければならないほどでもないので
フェードなりの画面効果は演出を目的としてると思っていい
0276名前は開発中のものです。
垢版 |
2014/06/08(日) 18:14:36.81ID:QSuHGJdX
>>269
同世代のパソコンなどのVRAMはシングルポートのDRAMだよ

CPUをウェイトで止めたり、DMAで勝手にCPUが止まったり、アクセスするタイミングを
工夫して見かけ上同時に読み書き出来るようにしてあったり、VDPが調停してくれたり
色々あるけども
0277名前は開発中のものです。
垢版 |
2014/06/08(日) 20:16:46.77ID:p43hB49G
>>245-246
名乗り出なくてもバグだらけのキ○ガイプログラムだからすぐわかるよ。
人の言うことを聞かないで数年間NMI使えないで、いつも同じバグ出して、「正常動作の定義は?」って逆ギレ。愚痴キ○ガイ消えてくれ。

・あちこちでゼロページ < 忘れすぎ → auto-zeropageが施された改造版のnesasmあるよ

・なにをしているのかよくわからない。ROMに書き込んではいけない。実機動作を狙ってるなら
lda #0  ;これはROMなので出来ないので、こうする
sta STAGE1,x   ;〃

・Aボタン押したときのデューティ比的な音バグ(数年間放置されたバグ
誤 lda APU_REG0_DUTY_875
誤 ora APU_REG0_COUNT_ON  ←  PadStat = $20 と重複!
誤 ora APU_REG0_FIX_ON
正 lda #( APU_REG0_DUTY_875 | APU_REG0_COUNT_ON | APU_REG0_FIX_ON )


誤 lda APU_REG1_FRQCHG_ON
正 lda #APU_REG1_FRQCHG_ON

・既に指摘があるようにcmpが変。loadのフラグの変化とブランチのフラグ条件を理解していない。
lda なんたら
cmp #0
beq または bne

・jsr Pad_Check は 他人 >>236 の? 算術sbc使ってるから変だと思ったけど


パッと見でこれだけミスしてて、どこにまともに動く要素があるわけ?氷山の一角だろう。
今回も 「.dw 0; VBlank割り込み」見てまたお前かとやる気を失ったけど、BLOCK.symが同梱されていたので捗った。
0278名前は開発中のものです。
垢版 |
2014/06/08(日) 20:24:54.45ID:p43hB49G
NMI使えない、各種メモリやレジスタの初期化していない奴って
ギコ猫の前半章のコピペ&拡張だったんだな
後半章ばかり見てたから原因がわからなかった>>221

言い訳にもならないけどね
他人のソース調べればわかることだから

後半章のソースも問題あり

>>270
指摘されると、「私は〜知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの?
「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」
(レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。

>>273
ゲームによる。
特にCHRがRAMでドラクエVやWのようにROM容量がきつくて圧縮されたゲームは遅い。
数10フレームかかる。
エミュのパレットをハックしてネームテーブルビュワー見ると展開のスピードを見やすい。

・戦闘画面に移行するとき
  CHRのパターンテーブルがRAMな場合は普通に書き換えるだけで時間がかかる。
  書き換える前にPRG内の画像圧縮を展開するだろうからもっと時間がかかる。
・マップ画面に移行するとき
  マップとマップチップの展開に時間がかかる

市販のゲームは限られたRAMやROMのスペースで展開と転送をこなさなければならず
我々が専用のルーチンで高速転送するのとはわけが違う場合もある

全部ROMで持ってるゲームならもっと速くて10フレーム程度かな
0279131
垢版 |
2014/06/09(月) 18:51:10.28ID:Sx48Gggw
>>277

NMIは使わなかったのは、確かにギコ猫のコピペだからと使い方を知らないからです。
いろいろ問題があったのは、事実ですし、バグがあったのも事実です。
何と言ったら良いか分かりませんが、ガッカリさせてすみませんでした。

みなさん、wという笑いや嘲笑の意味の文字を使っていないので、自分の為を思って
書き込んでいるのが見て取れます。

>>あちこちでゼロページ < 忘れすぎ → auto-zeropageが施された改造版のnesasmあるよ
どうもアドバイスありがとうございます。

>>・なにをしているのかよくわからない。ROMに書き込んではいけない。実機動作を狙ってるなら
>>lda #0  ;これはROMなので出来ないので、こうする
>>sta STAGE1,x   ;〃
ROMは書き込めないということは知っていましたが、放置したバグの結果であることは
この前言ったはずです。


>>・Aボタン押したときのデューティ比的な音バグ(数年間放置されたバグ
>>誤 lda APU_REG0_DUTY_875
>>誤 ora APU_REG0_COUNT_ON  ←  PadStat = $20 と重複!
>>誤 ora APU_REG0_FIX_ON
>>正 lda #( APU_REG0_DUTY_875 | APU_REG0_COUNT_ON | APU_REG0_FIX_ON )
ありがとうございます。どうしてボタンを押すと変な音なのか分かりませんでした。
何か原因があるとは思っていましたが何が原因かは全くわかりませんでした

>>・ 誤 lda APU_REG1_FRQCHG_ON
>>正 lda #APU_REG1_FRQCHG_ON
これもありがとうございます。

つづく
0280131
垢版 |
2014/06/09(月) 18:53:26.51ID:Sx48Gggw
>>・既に指摘があるようにcmpが変。loadのフラグの変化とブランチのフラグ条件を理解していない。
>>lda なんたら
>>cmp #0
>>beq または bne
これは言えてますね。単純な頭なので、単純に考えていました。

>>・jsr Pad_Check は 他人 >>236 の? 算術sbc使ってるから変だと思ったけど
はい、他人のソースを使いました。


>>パッと見でこれだけミスしてて、どこにまともに動く要素があるわけ?氷山の一角だろう。
>>今回も 「.dw 0; VBlank割り込み」見てまたお前かとやる気を失ったけど、BLOCK.symが同梱されていたので捗った。
えーとこれも失敗してしまいましたね。ファミコン開発は思ったより難しいんですね。

>>278 :名前は開発中のものです。:2014/06/08(日) 20:24:54.45 ID:p43hB49G
>>NMI使えない、各種メモリやレジスタの初期化していない奴って
>>ギコ猫の前半章のコピペ&拡張だったんだな
>>後半章ばかり見てたから原因がわからなかった>>221
はい、そうです。ギコ猫の前半章の主に9章のコピペです。

>>言い訳にもならないけどね
>>他人のソース調べればわかることだから
他人のソースを調べるという事がどんなに重要か分かりました。

>>後半章のソースも問題あり

>>270
>>指摘されると、「私は〜知ってましたが、あえてやりませんでした」 じゃなんでNMI使えないの?
>>「VBlank待ちの直後にビデオメモリの書き換えをするのはそういう理由があったんですか。 」
>>(レトロ)ゲームのプログラムに興味ある人はみんな知ってるよ。Direct3Dだって垂直同期の概念あるでしょ。
”NMI”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。
0281131
垢版 |
2014/06/09(月) 18:55:00.34ID:Sx48Gggw
>>236さんのソースではなく、ネット上に公開されていたソースを使いました。
0282131
垢版 |
2014/06/09(月) 18:57:30.62ID:Sx48Gggw
変数に
>>・ 誤 lda APU_REG1_FRQCHG_ON
>>正 lda #APU_REG1_FRQCHG_ON
の違いって何ですか?
0283名前は開発中のものです。
垢版 |
2014/06/09(月) 20:17:24.32ID:dEpln6L7
実機で検証してくれたことに対して
>本当に実機で試したのか知りたいですが
って何気に失礼だよなこいつ
0284266
垢版 |
2014/06/09(月) 20:51:16.15ID:oKltYKig
>>280

> ”NMI”という言葉を知っていても言葉を忘れていたのと、使い方を知らないからです。

131さんには申し訳ないが、
まずは、WikipediaでCPUの割り込みについて勉強してきた上で

ttp://ja.wikipedia.org/wiki/%e5%89%b2%e3%82%8a%e8%be%bc%e3%81%bf_(%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf)

1) NMIとVBlankの違い
2) ファミコンのプログラミングでNMIとVBlankを混在しても話が通る理由
3) .org $FFFA .dw 0 .dw Start .dw 0 というソースを見た他人が呆れる理由

を、自分なりの理解や考えで説明してもらえるかな。
0285131
垢版 |
2014/06/09(月) 21:16:45.44ID:Sx48Gggw
言い訳になっちゃうかわかりませんが、できたら明日の朝に書き込みます。
ホント自分は基地外なのと、頭が痛いし熱いのでこのままほおっておくと
風邪をこじらすので、すみませんが、失礼します。

リアルが充実してる人たちがうらやましいです。
0286266
垢版 |
2014/06/09(月) 21:30:37.71ID:oKltYKig
>>285
別に急がなくてもいいよ。その代わり自分でちゃんと考えること。
体お大事に。
0287名前は開発中のものです。
垢版 |
2014/06/09(月) 21:32:44.17ID:fvy3sA+P
頭の悪い高校生なんだから察してやれよ
こいつ高校の名前を自分から暴露するような奴だぞ

しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに
色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ
0288名前は開発中のものです。
垢版 |
2014/06/09(月) 21:38:04.12ID:dEpln6L7
自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは
自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな
近所でネコの惨殺死体がなければいいけど
0289名前は開発中のものです。
垢版 |
2014/06/10(火) 03:34:36.85ID:OhR24Wq5
多くのエミュレータの再現目標は「市販ゲームが動作すること」であって
不完全なプログラムが「実機と同じように動作しない」というレベルでの再現には至っていません
ファミコン程度の規模であっても完全再現するエミュレータはいまだに存在していません

たとえばファミコンでは電源投入時にRAMの内容が不定であり
すべての市販ソフトでは確実に動作させるために必ずRAMを上書き消去するなど、必ずそれを前提とした実装がされています

しかしエミュレータの中には通電直後のRAMの初期値が&amp;H00に設定されているものがあり
初期値が何であれRAM内容を消去するように実装されている市販ゲームは問題なく動作しますが
RAMの初期値が&amp;H00になっているものであるとして組まれた不完全なプログラムだと
そのエミュレータでは動作するが実機では意図した動作をしないという問題に陥ってしまいます

同様ににVBlank期間が実機より長めに設定されているエミュレータも存在しています
VBlank期間が長いことで市販ゲームを動作させることに影響はありませんが
そのエミュレータ固有のVBlank期間を基準として作成された自作プログラムは
実機上だとプログラマの意図通りの動作をしないことになります

このようにエミュレータ上のほぼすべての挙動において、実機ほどシビアではなく動作してしまう方向に緩く設計・再現されているため
実機の挙動を意識せずにエミュレータを基準として作成された自作プログラムの多くは
結果として実機で動かないものになってしまいます
0290名前は開発中のものです。
垢版 |
2014/06/10(火) 03:38:20.96ID:OhR24Wq5
マッパーが電源投入時に選択するバンクですが
通常、実機ではハードワイヤードされている最終バンク以外の選択可能バンクは第1バンクが選択されるケースがほとんどですが
多くのエミュレータはなぜか先頭から順番通り昇順に選択されます
市販プログラムは必ず初期バンクを設定するように実装されているため問題なく動作しますが
バンクの並びをアテにした不完全なプログラムはエミュレータでは動くが実機では動かないというケースが起こります

>>240のプログラムはCHRバンクの初期設定がされていないので
CHRバンクが未設定でも順並びに選択されるようなエミュレータでは問題なく動作しているように見えますが
実機だとスプライト側のバンクがすべてバンク0になっているので、宝石落下時のスプライトがBG用のCHRで表示されてしまっています
0292131
垢版 |
2014/06/10(火) 07:44:01.93ID:rVY6XcCX
>>287 :名前は開発中のものです。:2014/06/09(月) 21:32:44.17 ID:fvy3sA+P
>>頭の悪い高校生なんだから察してやれよ
>>こいつ高校の名前を自分から暴露するような奴だぞ

>>しかしまぁ基地外って自覚あるなら5年ぐらいROMってればいいのに
>>色々と知識が欠けすぎててこのスレで質問できるレベルにすら至ってないわ

以前チャタリングに関して質問したり、ネームテーブルが固定画面で960もあるから
どうやって書き込むのかと質問した者でもあるのですが、それではマズイんですか。
あと、これはおかしい話なんですが、このスレッドのパート1からROMってました。
もう10年も前の話ですよね。

>>288 :名前は開発中のものです。:2014/06/09(月) 21:38:04.12 ID:dEpln6L7
>>自分の理解不足を棚に上げて正常動作の定義がおかしいなどと言い張るのは
>>自分を肯定するために社会を逆恨みする典型的秋葉原通り魔みたいな思考回路だよな
>>近所でネコの惨殺死体がなければいいけど
猫や犬は可愛いので、そんな事しません。小さい子供に馬鹿にされても黙ってしまうような
性格なので。あと、その時は、自分でも実力が足りない自覚が無かったんです。

逆ギレ云々言った人たちには悪いですが、切れたのは事実ですが、本音と建前を
使い分けるのが日本人の美徳じゃないですかね。

そもそも、逆ギレと決めつけるあたり、あなたたちは
叱ったのではなく、怒ったと考えてよろしいでしょうか。

>>284
途中ですみませんが、
1)NMIは、ハードウェア割り込みの一種でマスク不可能な割り込み、
VBlankはブラウン管の電子銃が下端から上端に戻る際の割り込み。
0293名前は開発中のものです。
垢版 |
2014/06/10(火) 08:52:45.01ID:FVxA7Fkb
NMIとVBlの正確なタイミングが分からないんだよな。
同時だと動かない市販タイトルがある。
0294名前は開発中のものです。
垢版 |
2014/06/10(火) 11:40:26.64ID:CuFktdyJ
10年もこのスレ見ててそのレベル・・・そして技術資料すら理解できない英語力・・・
最早かわいそう過ぎて同情するわ・・・
0295131
垢版 |
2014/06/10(火) 12:27:03.05ID:21YAZMo1
他のパソコンから書き込みです。

なんというか、僕が素直じゃなくてしかも怒りっぽくて
先人の知恵を学ばないという姿勢が悪いと思っています。
低能という言葉がありますが、まさに自分がそうだと思っていますよ。
自他ともに認める低能です。ファミコンのCPUより遅い動作周波数
なので。>>246は撤回します。まことにすみませんでした。

ごめんなさい
0296131
垢版 |
2014/06/10(火) 18:17:23.08ID:rVY6XcCX
>>284
2)
VBlankに入った時に必ずNMIの割り込みが訪れるからでしょうか

3)
本来ならばメインループにNMIを使うべきだからでしょうか
VBlankにポーリング?という言葉を初めて知りました。
0297名前は開発中のものです。
垢版 |
2014/06/10(火) 22:38:25.24ID:iI+cGjJO
>>245
ところで
NES Assembler (v3.21, 2005/04/09, Denki Release)
これどこで手に入れたの?
かなりレアなバージョンぽくて見つからない。


 RAMの初期化、スプライトメモリの初期化
以前誰かに指導してるでしょ、あちこちの他人ソースでも示されているし
 スプライトONにしているデモプログラムでスプライトメモリ初期化してないのは論外なんだよ
だからG-NESのスプライトメモリビュワー使えって
 未初期化メモリにアクセスしたら他の言語のコンパイラは警告出すでしょ
逆にファミコンほどの原始的なハードで、なぜ0フィルされると思った?
0フィル傾向が強いエミュだってハードリセット、ソフトリセットで挙動違うわけだしね
0300名前は開発中のものです。
垢版 |
2014/06/11(水) 00:54:21.08ID:vuASjJOE
1)Vblankは厳密には割り込みそのものではない。語源を考えればわかる。
 あとマスク不可能な割り込みでは説明不足。
2)ファミコンにおいてNMIは必ず訪れるものか。
 もし必ず訪れるのならあんたが今まで書いてきたプログラムはどうなる。
 $0000から命令を実行しまくる羽目になってるだろ。
3)それならばなぜNMIを使うべきか。

全体的に不正解および説明不足そして調査不足、理解や考えも不足。
わからない言葉があったらまず目の前のPCで調べろ。
あと自虐がまるでへそを曲げた子供のようでみっともない。自虐は反省とは違う。
しばらくROMって頭冷やすことをおすすめする。
0301131
垢版 |
2014/06/11(水) 04:31:31.45ID:FDPL1IKA
分かりました。しばらくROMることにします。
ただ、僕は本当に低能ですよ。何しろ、IQが69なんで
(test the nation)
0302名前は開発中のものです。
垢版 |
2014/06/11(水) 19:10:46.06ID:HuzB/5/t
言葉選べない奴ってみっともないなぁ
上級者気取ってふんぞり返って偉そうに他人に説教しとるが相変わらずガキ丸出し
これが一人だけやってるんだから目立つわな

いいかげんさあ、そのチンピラみたいな恥ずかしい態度で人に接するのはおよしなさいよ
0303名前は開発中のものです。
垢版 |
2014/06/11(水) 19:14:38.42ID:HuzB/5/t
まあ、こういう苦言を呈してあげても
前みたいに自分の口汚さを正当化するための言い訳しか言わないで
何が悪いのか理解出来ないまま同じ事を繰り返し続けるんだろうけど

他人に反省促す前に、自分がまず反省して態度改めなよ
0304名前は開発中のものです。
垢版 |
2014/06/11(水) 20:42:36.74ID:QsOFOWgt
多重人格らしき
”リバーシ君” が湧いてから同時期湧いて来た子たち

”YY-CHRとNESASMが使いづらい君”
”NESASMが難しいからC言語で組もうよ君”
”iNESヘッダや.incbinのことはわからないけど、nesdevの仕様書すべて読んできます君”
能書き”ダブラ君”
三日坊主の”まとめwiki君”
”DPCMの仕様教えて君”
”www.dotup.org大好き君”
スタックぶちこわしてても ”PPU制御レジスタのタイミング等も問題無いはずなのに。 君”
”デバッガ使えません君”

こんな初歩の初歩教えるのが上級者扱いなのか
だから自演て言われてるのに

ゴミみたいな不良動作のプログラムのアップロードに対し
わずか数時間で
”fceuで陽性かくにん よかった”
とレスが付くのも特徴

追い込まれると
〜とは別人だけど、と枕詞をつけて自己弁護
0305266
垢版 |
2014/06/12(木) 01:31:23.63ID:VinxFlKC
>>292 >>296

1)
NMIの説明はまぁ正解。300さんの指摘の通りVBlankを割り込みと言い切るのは誤り。
NMIは割り込みの種類を示す言葉でVBlankは映像信号に関する言葉であり、そもそもカテゴリが違う。

2)
私が考えていた正解は、
PPUから出るVBlank期間を示す信号線が、CPUのNMI割り込みの入力ピンにつながっているから
300さんが「必ず訪れる」は誤りと言っているのは、VBlank期間に入ったときに
VBlank期間を示す信号線に信号を出すか出さないかをPPUで制御できるため

3)
NMIを使用するかどうかは別に問題ではない。
NMIとIRQのベクタ(割り込み時に実行されるアドレス)に0が設定されているから。
PPUなどのレジスタの設定を誤り割込みを受け付ける状態になった場合に
何が書かれているかわからない0番地をプログラムが走ることになり、
安全性を考慮しておらず、知識不足であることが読み取れるから。
割り込みを使わないのであれば、すぐに rti で戻るルーチンのアドレスをベクタに設定するべき。

Nmi:
  rti
Irq:
  rti

  .org $FFFA
  .dw Nmi
  .dw Start
  .dw Irq
0306名前は開発中のものです。
垢版 |
2014/06/12(木) 01:36:18.33ID:VinxFlKC
>>290

指摘ありがとうざいます。
初期化するよう処理に反映します。

#やっぱり実機で確認できる環境欲しいな
0307名前は開発中のものです。
垢版 |
2014/06/12(木) 02:17:39.78ID:VinxFlKC
>>301
ROMてても知識は身に付かないだろうし、お題を出すのでプログラミングの経験を積んでみてはどうだろうか。

第1ステップ
スタック、メモリ、PPUなどの初期化を行い、VBlank待ちのループを行う、基本のプログラムを実装する。
NMIの割り込みも実装し、NMIの割り込みの度に、$ffのメモリを1増加させる。
割り込み処理でないVBlank待ちのループでは、$ffのメモリを監視して255から0になる度に$feのメモリを1増加させる。
エミュレータのメモリビュアーで約4秒ごとに$feのメモリの値が1増加することを確認する。

第2ステップ
BG画面を16x16サイズのブロックで画面いっぱいに埋める。
パレットの設定を行う。
画面にゴミが出ないように全スプライトを画面外(Y>=240)の位置に表示する。
第1ステップのプログラムを改良する。
割り込み処理ではないVBlank待ちのループで、VRAMに書き込みたいデータを用意してバッファに格納する。
NMI割り込みで、スプライトデータのDMA転送の実行とバッファに格納されたデータをVRAMに書き込む処理を行う。

プログラムを書く際に、他人のソースを参照するのは良いが、コピペは絶対行わないこと。
必ず目で見て手打ちすること。
書いたソースは、何度も読み直して、処理を説明できるぐらいまで理解すること。

プログラムが出来たら内容をレビューしたいので、批判にめげずに公開して欲しいと思う。
0309131
垢版 |
2014/06/12(木) 16:17:30.84ID:kfJUEFGs
書き込みたい気持ちはありますが、大分経って事態が鎮静化
してから書き込みたいです。あと、少なくとも今から
100レス程度は様子を見ながら、今から同時にお題を解いてみます。

というのも技術的な指導ならゲーム開発技術板のスレッドなので分かります。
しかし、自分の未熟な部分があるのは自分でも分かるのですが、
明らかに何度も自分の人格を否定していてスレ違いになってるのもあります。
0310131
垢版 |
2014/06/12(木) 16:19:26.08ID:kfJUEFGs
それがどうした?悪いのはお前だろと言われればそうなのですが
これが何度も続くようなら、明らかにいじめとしか思えないのです。
いじめと思うのは間違っていると思うのなら、どうして簡単に何度も
いろんな欠点や粗を探してこうも傷つけたがるのですか?

あと、自演と言っている人へ、
自演をしているように見えるのは、明らかにおかしいですね。
IPアドレスを2chの運営元に頼んでもらって調べれば分かる
とは思います。IPアドレスが分かるという事は、書き込んだ場所も
特定されます。
ファミコンのプログラムを公開する書き込んでから家から出かけて
帰ってきてから同じパソコンで書き込んだ事くらい見抜けると思うのですが。
0313131
垢版 |
2014/06/12(木) 22:17:28.55ID:kfJUEFGs
まってください。静岡県民が多いのは、俺が周囲から基地外呼ばわり
されてるのと、症状のせいだと思いますよ。

それと、自演と決めつるのはまだ早いです。なぜなら、
専門用語を知らない人間が自分を弁護できると思いますか?

そして、恐らくその症状のせいで、うざったく思うから
このスレで叩かれているのだと思います

これで最後にします。100レス待ちます
0316名前は開発中のものです。
垢版 |
2014/06/13(金) 19:00:31.08ID:KxCbS2Qo
>>315
何のソフトかにもよるが原則不可能と思っていいだろう
マッパー0相当のソフトだってアドレスの手直しが要る分相当な作業量になる
0318名前は開発中のものです。
垢版 |
2014/06/13(金) 21:03:18.07ID:KxCbS2Qo
理解力と相当な根気が要るだろうな
絶対アドレス参照の命令で$6000以降参照のものをすべて書き換えなきゃいけないのだから
0321名前は開発中のものです。
垢版 |
2014/06/13(金) 21:36:22.79ID:KxCbS2Qo
64Kバイトといわれている 実際にはもっと少ないけど
というか厳密には1バイト単位のような定まった容量はなかったはず

もし片面8Kバイト(64Kビット)だとしたらドンキーコングすら収まらないよ
というかこれぐらい調べれば出てくるのでまず調べようね
0322名前は開発中のものです。
垢版 |
2014/06/13(金) 22:34:15.19ID:AgN9/sjS
>>321
ディスクシステムのソフトには、名作が多いのでリンクの冒険、ドラキュラ2など海外版を所有してますが、ディスクシステムでしか遊べないソフトがあるので、ROM化出来たらなと思いました。音源も積んで。って誰かやってないですかね?
0323名前は開発中のものです。
垢版 |
2014/06/13(金) 23:03:40.54ID:KxCbS2Qo
かつてmdc5linkerというものがあった(ROM化の際にはこれの個別パッチが参考になるかもしれない)
ただし悪用が多すぎてサポートは終了した、ディスク>カセット変換したものを売りさばくような輩が続出した
事実、ある時期ヤフオクで本来ディスクでしか出ていないソフトがカセットとして出品されている例が多数確認できた

というか普通にディスクシステムでやれば?
一体ROM化ってなんのため?ディスク持ってるならディスクシステムでやればいいじゃん
ROM化前提なら吸出しも完了してるだろうしバックアップも万全、なのにあえてROM化しようとする意図がわからない

どの道、音源までサポートした上でROM化するにはいろんな知識が要る
ディスク音源と互換性のあるチップは存在しないため、RAMアダプタ内のもの(ただし非常に大きい、64pinDipだったかな?)を使用するか、もしくは
新たにFPGAなどのPLDを使って実装するか・・・方法はあるがディスク音源如きにそこまでする人がいるかどうか
0324名前は開発中のものです。
垢版 |
2014/06/13(金) 23:55:45.03ID:D3ve8EiV
>>323
ディスクシステムは、ツインファミコンもそうですが、ベルトの劣化もありますし、ヘッドも劣化するでしょう。
0325名前は開発中のものです。
垢版 |
2014/06/14(土) 00:13:40.26ID:dYYokVoB
>>324
http://fcs.main.jp/archives/fcs_road/Diskbelt/diskbelt2.html
知っているかもしれないがこういう方法もある。

バックアップについてはエミュが嫌なら、FDSLOADRという、
PCを仮想ディスクドライブとして使えるようにするソフトがある。ただ数年前の記憶では、相当PCの機種を選ぶソフトだった。
それからDOSベースのソフトのため現代のNT系OSじゃ動かないから、古いWin9x系の動くPCが必要になる。
更にRAMアダプタとの接続のためPCが双方向通信可能なパラレルポートを持っている必要がある。
これを使うとPCに存在するFDSファイルをRAMアダプタに転送できる。
0327名前は開発中のものです。
垢版 |
2014/06/14(土) 00:25:39.56ID:TXG/RYzX
>>325
アドバイスありがとうございます。今思いついたんですが、ディスクのRAMアダプターを改造してMicroSDカードに入っているディスクのイメージを転送できるに出来たらいいのになあ
0328名前は開発中のものです。
垢版 |
2014/06/14(土) 16:29:21.64ID:+sFuyt6O
機械語の知識(開発ができるレベル)と、
論理回路の知識(設計ができるレベル)に加えて、
電子工作を行えるスキルが必要
あと、英語力(データシートとか、ほとんど英語)。
0329名前は開発中のものです。
垢版 |
2014/06/14(土) 21:38:32.26ID:L1L59kK3
131氏は何が嫌われてるか分かってないんだろうな
何か指摘されたら「あ、はい俺が悪いですさて、」くらいの勢いで
全く態度を変えず話を続けるのがどれだけ人を無視した行為か
理解できないんだろうからもう書き込むなって言われてるんだよ
0331名前は開発中のものです。
垢版 |
2014/06/22(日) 12:04:05.94ID:FYXz9cFX
Vblank(NMI)発生待ちじゃなくてVblank(NMI)終了待ちの書き方がわからない。
$2002読めばVblank中でも即座にスキャンラインの頭に戻るのかな?
0332名前は開発中のものです。
垢版 |
2014/06/22(日) 12:46:49.11ID:RkNLcYOw
普通は終了待ちなんてしないと思うが・・・
あるとすればフレームIRQをVblank終了間際に起こすようにするとか、かな?
試していないからできるかどうかわからないけど
0334名前は開発中のものです。
垢版 |
2014/06/22(日) 21:47:58.16ID:SUkUlJAf
何だかんだ、がんばっているんだし応援しようと思う
完成を楽しみに待っています〜
0335名前は開発中のものです。
垢版 |
2014/06/26(木) 01:45:41.89ID:Mvj8DjXQ
RevolvingGemsで予定していた実装が全て出来たので公開します。

指摘を受けていた
・ゲーム開始時に消滅が発生しないよう駒を配置
・初期化時にCHR-ROMのバンクセレクトを明示的に行う
の処理も盛り込んでいます。

あと、フレームワーク部分(main.asm)も処理を見直して結構手が入っています。

ttp://homepage3.nifty.com/~kyoske/nes/RevolvingGems100.zip

ここまでお付き合いして頂きありがとうございました。
0339131
垢版 |
2014/07/02(水) 17:15:28.00ID:b6UJAuU+
ここを見てても本当に良いのだろうか?という気持ちと
ヤジでいまだに言ってくる人がいて、不快感しか湧かない
ので、ここはまず、書き込みも見ることも辞める事にします。

なのでいさぎよく、このスレから出ていく事にします。

ちなみに、「逃げる理由が出来て良かったな」とか書き込みそうなんで
言っておきますが、言う人は何とでも言うので仕方ないと思います。

最後まで不快感をお互いに感じあってしまい、すみませんでした。
0343名前は開発中のものです。
垢版 |
2014/10/05(日) 12:06:25.72ID:TCLHVT3o
東方Projectみたいな画面は作れないか?との興味から作りはじめたのですが、弾丸の表示時点で、CPUの処理能力不足により先が見えてしまいました。

http://homepage3.nifty.com/~kyoske/nes/Experi9.zip

Experi9.nes .. 160発表示版
Experi9x.nes .. 負荷可視化板
Experi8_noshot.nes .. 弾丸非表示版

Select+下 でスクロール開始、Select+左右 で画面モード切替です。

弾丸の最大数を96に落として、仕切り直す予定。

自キャラ、敵キャラ、弾丸以外は、BGで描画しています。
枠内のスクロールは、ハードウェアスクロールとソフトウェアスクロールの併用です。
16x8の範囲でパレット指定や会話ウィンドウの表示に、縦方向のラスタスクロールを駆使しています。
0344名前は開発中のものです。
垢版 |
2014/10/06(月) 04:59:32.10ID:6+tpiQ9J
ジェムの人キター

消えてる時間が結構長いのでかなりスプライトが見難いですねぇ

BGは相変わらずえらいことになってますが、負荷軽減でパレットはあきらめて
MMC5の画面分割機能の使用を考えてみても良いかも
0345名前は開発中のものです。
垢版 |
2014/10/06(月) 23:47:50.82ID:5bZUXl8p
>>344
160発を56個のスプライトで表示しているので、
大体3フレームに1回の表示でちらつきが目立ちます。

次の版は、96発にスペックを落とすので、
2フレームに1回の表示になるので多少は改善されるはず。

MMC5は魅力的なのですが、最終目標が実機での動作なので
勿体無くないMMC3で頑張ろうと思っています。
あと、負荷は弾丸の処理が半分以上占めているので
MMC5を使っても状況はあまり変わらないかと思います。

すでに96発MAXに書き換えて、弾丸1つ辺り5byteの領域から
8byteに増えて、Tile番号と属性値が保持できるようになったので
処理が軽くなりました。
弾丸の角度の変化が無ければ、Bombの下辺りまでの
処理時間で済んでいます。
0346名前は開発中のものです。
垢版 |
2014/10/07(火) 04:35:07.91ID:3yj7hFfS
>>345
1/2フレーム表示ならグラIIのミサイルなどで使ってましたね
欲を言えばですが、弾数が少ないときは1/1フレームで表示出来たら
いいかも

試しに割り込み無しにしたところ18ライン分くらい処理が減ってました
MMC5自体は光栄のゲームで結構出回ってるので入手は簡単かと
思いますが、今更変えるのもあれですね…

期待してますので頑張ってください
0347名前は開発中のものです。
垢版 |
2014/10/09(木) 21:46:13.35ID:44sWDsnn
NESASMでアセンブルしたNESファイルは自作カートリッジに焼く時もそのまま使えるんですか?
0348sage
垢版 |
2014/10/09(木) 21:50:10.76ID:hFc1Ndfq
RevolvingGems 1.00を実機で動かしたら不具合が出たので、
今さらですが調べて直してみました。

・タイトル画面の表示が乱れる
ウエイトが足りず、割込み処理での最後の$2006への書込みが
HBLANK中に行われていないようので、user.asmのUser_Irq_Title:直後に
nopを(余裕を持たせて)3つ追加して乱れを消しました。

・あそびかたを選ぶと止まる
タイトルで設定された割込みが無効化できずに発生し続けているようです。
Guide_Init:でIRQ_FNC+1を0にしたことで、
Irq:のjsr IRQ_FNC-1が飛ばされるため、
User_Irq_Title:中での割込みの無効化が動かないのが原因と思います。
user.asm 474行目のsta IRQ_FNC+1をコメントアウトして動くようになりました。
0350名前は開発中のものです。
垢版 |
2014/10/09(木) 21:56:48.11ID:hFc1Ndfq
>>347
kazzo+anagoのような環境だと直接NESファイルを使って書けますね。
ROMライタで直接書き込む場合だとPRGとCHRへの分割が必要かと。
0352名前は開発中のものです。
垢版 |
2014/10/09(木) 23:56:08.22ID:EgCI09Ne
>>348
実機での動作確認ありがとうございます。

>タイトル画面の乱れ
割り込みが入ってから110clk目に最後の$2006を書いていたのですが、
nop3つ追加ということで、116clk目が正解ということですね。
今のやつも直さないと。

>あそびかたを選ぶと止まる
VBlank中にIRQ_FNCを更新する仕組みを追加します。
0353名前は開発中のものです。
垢版 |
2014/10/10(金) 00:27:59.23ID:giiUNY1I
>>352
MMC3だとラスタの260ppu_clk辺りで割込み発生みたいなので、
そこから次ラスタの表示期間終了の256ppu_clkまでの、
(341-260)+256=337ppu_clk = 112.3cpu_clk
が必要な待ち時間だと思います。
sta $2006を確実にHBLANKに入れるために+4clkしましたが、
書込みが最後の1clkに行われるとすれば、数クロック削れるかもしれません。
0354名前は開発中のものです。
垢版 |
2014/10/10(金) 21:22:02.81ID:giiUNY1I
>>352
追実験して、nopは一つでも乱れは消えました。
割込み発生から最後のsta $2006完了までが112clkになるので、
ちょっとぎりぎりな感じはしますが。
0355名前は開発中のものです。
垢版 |
2014/10/11(土) 11:53:25.77ID:JCcDlcCt
>>353
ttp://wiki.nesdev.com/w/index.php/MMC3#Hardware
Regarding PPU A12 rises:
If the BG uses $0000, and the sprites use $1000, then the IRQ will occur after PPU cycle 260 (as in, a little after the visible part of the target scanline has ended).
If the BG uses $1000, and the sprites use $0000, then the IRQ will occur after PPU cycle 324 of the previous scanline (as in, right before the target scanline is about to be drawn).
When using 8x16 sprites: When there are less than 8 sprites on a scanline, the PPU makes a dummy fetch to tile $FF for each leftover sprite. In 8x16 sprite mode, tile $FF corresponds to the right pattern table ($1000).


PPUアドレスバスA12がスキャンラインカウンタのクロックとなっている。
The counter is clocked on each rising edge of PPU A12, no matter what caused it, so it is possible to (intentionally or not) clock the counter by writing to $2006
BGとSPRをどっちに配置するかで、立ち上がり、立下りが変わるので、
IRQが起きる位置とライン数が変わるようだ。
0356名前は開発中のものです。
垢版 |
2014/10/13(月) 07:14:58.66ID:khCfiiiQ
>>354
追試ありがとうございます。
clkを伸ばした場合、エミュレータでどうなるか確認したのですが
こちらでは1clk伸ばしただけでも乱れが発生しました。
実機向けとエミュレータ向けの2つのバイナリを用意する必要があるようです。
0358名前は開発中のものです。
垢版 |
2014/10/27(月) 22:58:49.97ID:WLPSmV4W
ギコ猫があるだけ恵まれた環境。1990年代のネットはファミコンの
内部資料は英語しか無かったからね。だから普通に挫折した。
0360名前は開発中のものです。
垢版 |
2014/11/05(水) 02:06:14.46ID:8FC6s1LF
Experi9(>>343)の改良版をアップしました。

http://homepage3.nifty.com/~kyoske/nes/Experi10.zip

結局のところ、ファミコン本体の2KBのWRAMだけでは
性能面を向上させつつ、やりくりするのは難しいとわかったので
MMC3の拡張WRAMを解禁、弾丸のワーク領域をそちらに移しました。

本体のWRAMに余裕が出来たので、マップの仮想バッファを
倍に増加して、既存の処理を最適化して負荷を下げました。

色々なテーブルを乗せている関係で、共通ルーチン用のプログラム領域の
サイズが足りないか不安になってきたのですが、拡張WRAMの空き領域に
プログラムを転送すれば良い事に気づき、さらにRAMに転送するんだから
自己書き換えルーチンにできるな、ということで、自己書き換えで性能が
上がりそうなルーチンを試作してみました。

あと、当たり判定実装したり、弾丸の移動処理作ったり、BGM鳴らしてみたりで
処理落ちしないのを確認できたので、性能面で目処が立ったかなというところです。
0361名前は開発中のものです。
垢版 |
2014/11/05(水) 02:20:57.06ID:8FC6s1LF
試作した自己書き換えルーチンその1

ClearExtWorkMemory:
ldy #$60
lda #$00
tax
.1:
sty SMCLabel(.2+2)
.2:
sta $6000,x
inx
bne .2
iny
cpy #$68
bne .1
rts

SMCLabelは、転送先のアドレスに変換するユーザ関数です。
sta $6000,xの$60を書き換えています。
Indirect Indexモード 6clkに対して、Absolute Indexモード 4clkで
((6clk-4clk)*256-4clk)*8 = 4064clkの節約。
0362名前は開発中のものです。
垢版 |
2014/11/05(水) 02:32:50.39ID:8FC6s1LF
試作した自己書き換えルーチンその2

Shot_Alloc:
 ldx SMCLabel(.2+1)
.1:
 lda SH_X,x
 bmi .9
 lda Round96+1,x
 tax
.2:
 cpx #0
 bne .1
 .db $24 ; bit <$b8 (set v-flag)
.9:
 clv
 lda Round96+1,x
 sta SMCLabel(.2+1)
 rts

cpx #0の#0の部分を書き換え。
弾丸の空きを検索するルーチンで、次回の検索時は空きを検出した
次の場所から検索を始める処理となっています。
Round96は、0,1,2,...94,95,0,1,..と定義されているテーブルで
lda Round96+1,x で (x+1)%96 の計算をしています。
ゼロページの$b8には、$6cが格納されており、bit <$b8 でv-flagが設定されます。
空きがない場合にv-flagが設定されてリターンします。
0363名前は開発中のものです。
垢版 |
2014/11/05(水) 02:43:06.58ID:8FC6s1LF
ファミコンのプログラム領域はROMだし、メモリも余裕無いから、
自己書き換えルーチンには縁が無いと思っていたのですが、
拡張WRAM使うとなると、有効な手段であるなと。

ただ、よく考えないと自己書き換えやっても効果を得られないので
どのようなパターンが有効か思考する必要ありだなというところです。
0364名前は開発中のものです。
垢版 |
2014/11/05(水) 11:50:49.69ID:kV2Q14jG
>>360
おお、スプライトも見易くなりましたね。

実機(MMC3B)でExperi10.nes焼いて動かしてみましたが、BGが結構
崩れています。

Experi10_irq114.nesですとBGが崩れはしませんが東方の文字の中心あたり
からチラチラしています。
また、東方を知らないのでわかりませんが会話表示とスクロールをするとたまに
BGが崩れるようです。
(バンク切り替えに失敗したような感じで別の絵が出てました)

参考になれば
0365名前は開発中のものです。
垢版 |
2014/11/05(水) 18:36:12.45ID:8FC6s1LF
>>364
実機での確認ありがとうございます。

会話画面表示時のBG崩れは、IRQのCHR-BANKの切り替えと
メイン処理のPRG-BANKの切り替えの衝突です。

PRG-BANKの切り替えは弾丸の移動量や角度算出のテーブル引きで使用しており、
会話画面では行わなくなるので、現在そのままにしています。
0367名前は開発中のものです。
垢版 |
2014/11/09(日) 03:54:20.59ID:/2f/mjgU
セレクトボタンを押しながら上下でバックグラウンドのスクロール量調整
同じく左右で会話画面、ボスHPゲージ消去などができる
0368名前は開発中のものです。
垢版 |
2014/11/18(火) 00:24:39.88ID:sul/9y5g
今月号(先月号から?)のゲーラボに、ファミコンソフト開発って記事が載ってた
初歩的な奴だったから、今月号からかも。立ち読みしかしてないけど
0369名前は開発中のものです。
垢版 |
2014/11/22(土) 00:37:26.95ID:6HaTj4+E
ゲーラボのファミコン開発は1回のみなのかな
DSみたいに連載して欲しいなーと思う
好奇心的な需要が有るんではないかと思ったり

>>360
弾幕が素晴らしいです。ファミコンでは史上初?なのではないでしょうか
BGのIRQスクロールも面白いです。

>>367
参考になりました。ありがとうございます。
0370名前は開発中のものです。
垢版 |
2014/11/24(月) 07:57:25.72ID:+tDgRqjL
このスレに常駐して間違いを指摘してる人は何者なのかね?
元ハドソンの中○さん?
0373名前は開発中のものです。
垢版 |
2014/12/27(土) 07:48:51.33ID:wLqAfx70
このスレではみなさんからのプログラムの投稿をお待ちしています
0379名前は開発中のものです。
垢版 |
2015/03/19(木) 20:54:40.85ID:h0XRN6RW
前スレを亀レスするけど数をバラバラに設定すると
完成する時としない時があるのは数学的に証明されてる。
完成しない時があると知った時は10才で、その理由を知ったのは30才だったな。
214 名前:名前は開発中のものです。 [sage]: 2008/10/21(火) 23:36:20 ID:7W0HXoP0
空気読まずに投下
ttp://www.lenis.info/~axyz/15puzzle0.1.zip
C言語で15パズルとサウンド再生やってみました。

218 名前:名前は開発中のものです。 [sage]: 2008/10/30(木) 20:55:16 ID:thi/0x4l
ってゆーか解けないよね?コレ

219 名前:名前は開発中のものです。 [sage]: 2008/10/31(金) 10:50:22 ID:WqELvFXJ
なんだ、解けないの俺だけかと思ってたw

220 名前:名前は開発中のものです。 [sage]: 2008/11/01(土) 13:16:36 ID:K21w4wpQ
俺もだwww

221 名前:名前は開発中のものです。 [sage]: 2008/11/01(土) 13:54:44 ID:OhOXRJQv
11と12と15をくるくる回してるのは俺だけじゃなかったのか

222 名前:214 [sage]: 2008/11/02(日) 00:09:23 ID:q5gp0DGO
しまった。完成形がわからなかったら解けるわけないじゃん!
0123
4567
abcd
efgh
の形が完成形です。・・・解いても何も起こりませんがw
0381名前は開発中のものです。
垢版 |
2015/04/01(水) 23:40:29.90ID:ii+SttYw
何で数がバラバラだと解けないんだろね
タイルの移動する範囲が狭いからとかそんな理由?
0382名前は開発中のものです。
垢版 |
2015/04/02(木) 10:16:16.24ID:Jr0GAhV2
他のスレでバカと言われた自分がこのスレでは解けない時が半分あると指摘した人間です。

大学の理数系の初年度程度で履修する偶置換、奇置換等の行列の基礎理論。
まぁ「偶置換 奇置換 行列 15パズル」でググってみて下さい。
0383名前は開発中のものです。
垢版 |
2015/04/02(木) 10:31:03.98ID:Jr0GAhV2
追伸
数十年前は、この説明が表紙に書かれていた数学啓蒙誌をその説明だけの理由で買いました。
喫茶店で飲むコーヒー4杯ほどの価格なので、それと比較するとイイ時代になりました。

昔は数学バカだったかも知れません。そして今は何と言うバカなんでしょうかと。
0385名前は開発中のものです。
垢版 |
2015/04/07(火) 16:26:58.65ID:Tz4O69qO
数学啓蒙誌の価格なら流石にそこまで高くない、5桁の数引いた4桁位かな。
ところで1杯が3000円ってどの辺りで飲むコーヒーだろう。

その他「偶置換 奇置換 行列 15パズル」でググるyaneurao氏のも出てくる。
http://d.hatena.ne.jp/yaneurao/20050821

図があって判り易い感じかと。
0387名前は開発中のものです。
垢版 |
2015/06/12(金) 17:08:22.25ID:pQsOmKIP
初期のほとんどのゲームでラスタースクロールを使うときに
0爆弾使ってるけどDPCMタイマ割り込みは使えなかったんだろうか
あれを使ってラスタースクロールを実現したゲームってないのだろうか
0388名前は開発中のものです。
垢版 |
2015/06/12(金) 18:51:23.46ID:yYky0Qic
>>387

「ファミコン 技術」でぐぐると
じぇみに広野氏が語るファミコンソフトの開発技術
というtogetterがでてくるのであるが、それによると、
ガーディック外伝 でDMCのDMA終了割り込みを使ったが
一部の機種(ツインファミコン?)で割り込みが発生しなかったとのこと。
0389名前は開発中のものです。
垢版 |
2015/06/12(金) 21:33:53.52ID:yvckrC4h
>>387
使ってるゲームはあるよ
ロマンシアとか海外のゲームでいくつか

>>388
それも正しいのか微妙
CPUに内蔵された機能なのにツインの一部の機種だけで起こるとか
ありえるのかね
0390名前は開発中のものです。
垢版 |
2015/06/12(金) 21:54:06.55ID:pQsOmKIP
へー興味深い、ツインファミコンじゃなくてあるとすれば考えられるのは初期型ファミコンじゃないかな
あれ音源周りの仕様が後期のロットとは若干違ったはずだしね ただし
時期によってICにヒートシンクついてたりメモリがSOPだったり複数の標準ロジックICが一つのカスタムLSIに置き換わってたり
さらには主要ICのマイナーバージョンも変わってるから他のロットの固有の問題でもおかしくないとは思う

しかしそうか割り込みがかからないものがあるとは・・・
もし使うんなら使用可否の確認ルーチンを使う必要があるのか
0391名前は開発中のものです。
垢版 |
2015/06/12(金) 22:46:29.41ID:rYOjWPPG
なるべく無音になるようなデータを用意しないといけないし、初期ではROM容量的にできないかもね。
0393名前は開発中のものです。
垢版 |
2015/06/20(土) 19:48:15.52ID:JHwpVc0c
2番目のサイトのパレット、
>実際には12色の中に同じ色を入れないといけなかったりして、12色フルに使うことはできないでしょう。
の解説希望。俺の仕様ではこんな制約はないんだが。
0394名前は開発中のものです。
垢版 |
2015/06/22(月) 00:32:17.02ID:Wqz2EZzo
>>393

1パレット3色の組み合わせで指定するので
ソフト制作の都合上、別々のパレットに同じ色を指定することもよくあり
常に異なる25色(SP12色+BG12色+背景色)を同時発色している訳ではない

と解釈しているけど、どう読んだ?
0395名前は開発中のものです。
垢版 |
2015/06/24(水) 23:39:15.30ID:kRbpr0Nr
>>394
ハードレベルでできない としか読めないけど。
記憶を頼りに書いて間違ってたとか、逆に割と正確な所もあったりして微妙。
0396名前は開発中のものです。
垢版 |
2015/06/25(木) 22:06:34.05ID:Xz0r0Jej
>>395
ひっかかっているのは、「最大25色出せる、というのはあくまでも理論上の話。」という文でしょうか?
「論理上」と言い切るのは私も間違いだと思います。「事実上」と表現するかな。

「論理上」の前の文に「パレットの色が重複してしまう」と条件が書いてあり、
パレットの色を重複して指定するのは、3色の組のパレットで
色指定するというハードウェアの仕様に起因することなので、
ハードウェアの制限と言われても間違いじゃないなと思います。

ただ、サイト先の文章からは、ハードレベルでできない と推測に至る表現は無いかと思います。

異なる25色を同時発色しているゲームの具体例出せないし、
自分が作っているソフトもパレットの色重複しているので
何とも言えないが正直なところ。
0397名前は開発中のものです。
垢版 |
2015/06/26(金) 06:50:59.42ID:T0jrUs0a
>>396
スペック上問題なく出来るのに理論上とか書くから誤解されると思うよ。
最大値は〜色です。という説明だけでいい。「事実上」はいらない。

実際のゲームでは、というくだりから色の重複について画像を入れるなどで
説明すればいいと思うし、そっちのほうがわかりやすいだろう。
0398名前は開発中のものです。
垢版 |
2015/07/07(火) 01:41:06.59ID:c0/ULPSH
バックアップを兼ねて制作途中版をアップしました。

東方老桜夢 ver0.10
ttp://homepage3.nifty.com/~kyoske/nes/TouhouRououmu010.zip

セレクト画面、自機移動+ショット、アイテム、1面中ボス手前までのステージデータを実装。
自機のボム、ボス戦、会話処理などは、これからです。まだ先は長いな。

例によってソース添付していますので、興味がある人はどうぞ。
0400398
垢版 |
2015/07/11(土) 00:36:16.58ID:ErBuIZGc
>>399
何かコメントしてくれるだけでも助かります。
ひとり黙々と作っているのは辛いので。
0401398
垢版 |
2015/07/11(土) 00:55:51.34ID:ErBuIZGc
皆さんに1つアドバイスして欲しいことがあるのですが、よろしいでしょうか。

Aボタン=ショット Bボタン=ボム で実装を進めているのですが、
ショットを押したまま、ボムを使おうとする場合にA押しながらBを押す操作になります。

赤白ファミコンの場合には、AボタンBボタンが真横に並んでいるので
そんなに押しにくくはないのですが、newファミコンの場合には、
Aボタン右上Bボタン左下に並んでいて押しにくく感じました。

コンフィグで他のボタン割り当ても選択できるようにすることを考えているのですが、
こういうボタン割り当てがよいのではというアドバイスを頂きたいです。

ちょっと考えたネタとしては、

・Bボタン=ショット STARTボタン=ボム Aボタン=低速移動
・Iコン、IIコン2つ持ちで、IIコンのボタンでボム

ってのがあります。
0402名前は開発中のものです。
垢版 |
2015/07/11(土) 20:55:40.95ID:LzhqW5i3
ショットはBボタンじゃないと操作し辛いと思う
Iコン、IIコン2つ持ちはゲーム性を損ないそうなので反対
自分の知ってる弾幕シューティングだとショットボタン連打=高速移動
ショットボタン押しっぱなし=低速移動なので、それがいいかな

Bボタン=ショット(押しっぱなしで低速移動)
Aボタン=ボム
START+SELECT同時押し(もしくはSELECT押しながらSTART)=リセット
0403398
垢版 |
2015/07/12(日) 08:06:56.67ID:eipwc+As
>>402
最初、Bボタン=ショットで実装していたのですが、セレクト画面を追加した時に
A=決定&A=ボムだと、誤って連打したり、操作方法がわからないので適当に押したりした場合に
ボムを消費してしまうのでまずいなと、変更した経緯があります。
B=決定&B=ショットにするか検証して、問題なければ元に戻す方向でいきたいと思います。

start+selectの両方押しは取り入れたいと思います。

Iコン IIコン2つ持ちは、401の書き込みあと色々やってみたのですが、
どのように持ってもIIコンのボタンが押しにくかったのでボツにします。

newファミコンのコントローラの場合、startとBボタンの組み合わせも操作しやすいのに気付きました。
start=Aボタン=ボム Bボタン=ボム にするのもありかなと考えています。
0404名前は開発中のものです。
垢版 |
2015/07/12(日) 12:33:35.60ID:mpg+Vwo9
決定ボタンを連打してたらゲームが始まっててボムを消費してしまうのは
様式美だから気にしなくてもいいと思う

細かいことだけど>>402
START+SELECT同時押し(もしくはSTART押しながらSELECT)=リセット
の間違いだった

>>403
>start=Aボタン=ボム Bボタン=ボム
Bボタン=ショットってこと?
0405名前は開発中のものです。
垢版 |
2015/07/12(日) 15:35:29.97ID:rjppu/hS
セレクト画面の選択はスタートも効くようにしておけばいいんじゃね

個人的にはボムがどっち側か選択出来るといいな
0406398
垢版 |
2015/07/12(日) 15:40:36.97ID:eipwc+As
>>404
>>start=Aボタン=ボム Bボタン=ボム
>Bボタン=ショットってこと?

すみません。
start=Aボタン=ボム Bボタン=ショット
でした。
0407398
垢版 |
2015/07/12(日) 15:43:28.70ID:eipwc+As
>>405
コンフィグでのボタン割り当ての変更は実装する予定です。
0409名前は開発中のものです。
垢版 |
2015/07/12(日) 21:42:13.52ID:eqQNtVxD
2A03はDPCMデータをどのタイミングでフェッチしてるんだ
DPCM再生したらプログラムの実行速度遅くなるとかあるのか
0410398
垢版 |
2015/07/13(月) 01:54:36.60ID:ETla0kQ9
>>408
色々考えて、今のところ、start または ショット(デフォルトBボタン) を決定、
ボム(デフォルトAボタン)をキャンセルに割り当てる方向で行こうかと思っています。
0411398
垢版 |
2015/07/13(月) 02:02:23.75ID:ETla0kQ9
>>409
英文で申し訳ないですが、nesdev wiki の記事によるとDPCMデータを読み込む時に最大4サイクルCPUが停止(ストール)するようです。

ttp://wiki.nesdev.com/w/index.php/APU_DMC#Memory_reader
0412名前は開発中のものです。
垢版 |
2015/07/13(月) 21:38:14.47ID:8PTgB6y3
>>411
最大4って事は4ではない事もあるのか。別の所では1サイクルとか書いてあった。
>>409
SMB3の左下の方のちらついてる部分が、DPCM音に合わせて右にずれる。
0415名前は開発中のものです。
垢版 |
2015/08/06(木) 22:57:03.34ID:QTHdQd4i
東方老楼夢やってみましたがすごいですね。
今後の進展に期待しています。
少し気になったことですが、実機だと自機選択の画面でカーソルを
上下に動かすたびに全体的に画面が少し揺れますね。
0416398
垢版 |
2015/08/07(金) 23:39:37.38ID:YUPlB/cK
>>415
実機で画面が揺れるのを確認しました。
PPUにデータを送ることに影響して、IRQ割り込みのカウンタが何かずれているのかも。
バグ表に記録しておきます。ありがとうございます。

>>414
やってみましたが、裏側のパッドのボタンが押しっぱなしになるか、押しにくいのどちらかでした。
0417398
垢版 |
2015/08/08(土) 00:31:25.10ID:BI5FjCuz
机上調査レベルですが、実機で画面が揺れる(ピクンと跳ねる)のは、
・PPUへのデータ転送処理より先にIRQカウンタの設定をしている
・パレットの書き換えでPPUアドレスの$3fxxにアクセスしている
のが原因っぽいです。

$3fxxにアクセスするのでPA12のアドレス線が0→1に変化。
これをMMC3が拾ってIRQカウンタをカウントダウンすることで、
1ライン早くIRQ割り込みが発生して、画面がずれると推測しました。
0418名前は開発中のものです。
垢版 |
2015/08/09(日) 16:51:22.40ID:0ksNtoFR
さっしーを本気でブスと思ったことはない、むしろ美人な方
ブスだけど
0419名前は開発中のものです。
垢版 |
2015/08/09(日) 19:24:44.04ID:ShkksTPS
何故、急にさっしーが出て来た?

ともかく美人の範囲には入らない、美人は石原さとみ、佐々木希、エリカ様あたり。
0420名前は開発中のものです。
垢版 |
2015/08/10(月) 20:22:03.98ID:L65BKpn6
>>396
中の人でしょうか。
色が重複してしまう理由が書かれていないのです(ファイアーの色をマリオとルイージから取ってこなければならない理由)。
重複しないように設定したいのだが、ハードの制約で重大な問題が生じる為重複させなければならない と読み取れます。

確かに市販タイトルを少し調べてみましたが全て異なる色を使用しているのは見つかりませんでしたが。
それは、総合的なデザイン上の問題だと思います。
画面上に、「マリオ、ルイージ、レディ、ファイア」の4キャラしか出てこないゲームなら、全てに異なる色を設定しても問題ないでしょう。
0421名前は開発中のものです。
垢版 |
2015/08/12(水) 20:57:19.05ID:vHA00r0T
>>420

>中の人でしょうか。

違いますよ。

>色が重複してしまう理由が書かれていないのです

「別々のパレットから個別に色を選択してスプライトを
表示することはできない」というパレットの仕様を
説明したいがために、わざと色が重複する例を
出しているだけと私は解釈しています。

397さんの指摘のように、先に25色発色できるのを提示してから
重複する例を出す構成にするのが誤解を生まない方法だと
思います。

>重複しないように設定したいのだが、ハードの制約で重大な問題が生じる為重複させなければならない と読み取れます。

「理由なく色が重複する例を出した」から
「重大な問題が生じる為重複させなければならない」という考えに至るのが
私の考え方と違うようです。
25色発色できるとも書いてあるし、重複させなければならないと
断言する文言も無いので、私はそう解釈はしませんでした。

総合的なデザイン上の問題 という指摘については同意です。
0422名前は開発中のものです。
垢版 |
2015/11/02(月) 19:23:11.78ID:Lz25rOrT
ファミコンのプログラムに興味出たんだけどアセンブラやるならnesasmとcc65はどっちがオススメ?
0424名前は開発中のものです。
垢版 |
2015/11/03(火) 00:48:13.34ID:dgydVfeg
cc65はca65つーアセンブラも付属してるよ。

>>422
ca65もnesasmも結果として作れるソフトに差はない。
なので、そういう質問するレベルなら簡素なnesasmで十分だと思う。
0425422
垢版 |
2015/11/04(水) 00:04:33.96ID:MG7aGI5u
皆さんありがとう
プログラミングは初心者です
公式で配布しているnesasmは64bitで使えないみたいだから、まだ更新しているca65の方がマシかなと思った
自分の探し方が悪いのか?
0426名前は開発中のものです。
垢版 |
2015/11/04(水) 01:29:45.57ID:jDbZfAAt
nesasmはソース付いてるから、自前でビルドして64Bit版nesasm作ってもいいのだが、面倒くさいなら、
MS-DOS Player
ttp://homepage3.nifty.com/takeda-toshiya/msdos/index.html
とか使えば、配布されてるnesasmのバイナリも、そのまま64Bit版Windowsのコマンドプロンプトの中で動くと思う。
0427422
垢版 |
2015/11/04(水) 01:38:18.31ID:MG7aGI5u
ありがとうございます
そのソフト別の意味で面白そう
なるほど、自分でビルドしても良いのか
勉強がてらやってみます
0431名前は開発中のものです。
垢版 |
2015/11/27(金) 22:00:09.01ID:AEiSUGo8
VBlank待ちで$2002読んだ後VBlank中にスプライト書き込むプログラム書いたけど実機だと
左から右にスプライトを動かそうとするとスムーズに動いてくれない。ドンキーコングとか市販のソフトみたいに綺麗に動かすには
何を気をつけたらいいですか?
0432名前は開発中のものです。
垢版 |
2015/11/27(金) 22:46:48.97ID:BXn0P/af
普通は$2002を使ったVblank待ちを常用するようなことはしない、ギコ猫〜のサイトでも見たのかな?
詳しくはこのスレの上のほうにあるレスを見てね
0434名前は開発中のものです。
垢版 |
2015/12/16(水) 22:25:48.20ID:+xc8/nu+
>>1
アプリ倉庫だったところ
http://www6.atpages.jp/~appsouko/
0435名前は開発中のものです。
垢版 |
2015/12/27(日) 12:38:46.49ID:/47Z3a2E
東方老桜夢のver0.20をアップしました。

ttp://homepage3.nifty.com/~kyoske/nes/TouhouRououmu020.zip

1面ボスまでの実装、ボムは未実装です。

プログラム構造的には、色々と変更中です。
当初は8KBのバンク1個にステージデータを格納する算段だったのですが、一番短い1面で現地点で5〜6KBぐらいのデータになったので、複数のバンクに分散して持つように変更しています。
弾丸パターンのデータが思いのほか大きかった。会話データはこれからだし。

あと、415さんの報告してくれたバグを元に実機判定を行うことで実機用とエミュ用に分けてたnesファイルを一本化できました。感謝です。
0437名前は開発中のものです。
垢版 |
2016/01/17(日) 16:27:08.58ID:X7lsGmSN
8BIT MUSIC POWER

http://riki2riki.com/html/0_sample_8bit.html
http://www.gamespark.jp/article/2015/10/20/61077.html
https://www.youtube.com/watch?v=tb4ec90zWf4

プログラムが凄すぎる。

CrystalMarkみたいなスプライト量。
 YouTube30fpsの動画では4倍というのがいまいちよくわからない。チラつきだけで4倍表示させてるのか?
 DMAでスプライトダブラー行為するにはBGとSPR両方オフにしないと出来ないという噂だがどこかでオフになっている感じがしない。
 音楽部分で消費するクロック数は、VBLANK内か近傍に収めているだろうね、それとも下の方のラインでjsrしてるのか?。
 割り込み使うとレジスタ退避などでクロックを浪費するから極力使いたくないだろう。
 当初、sprite quadrupler スプライト クワドラプラー かと思ったが違うよな。
 計算で位置求めるのは不可能だろうし、横並びのところはスプライト循環もやってるだろうし、
 データ丸ごとテーブルで持ってるかな、そうなら長時間収録はできない。

パターンテーブルを4.5バンク切り替えてる?のか、全画面で複雑な絵。
 絵1枚で0x2000バイトのパターンを3.5面分総とっかえってことかな。
 どこでCHRバンクチェンジしているのか意識させない、バンクチェンジのノイズを抑えているようだ。
 こちらはクロック数が切迫していないから、割り込みは使い放題かな。
0439名前は開発中のものです。
垢版 |
2016/01/26(火) 08:49:51.39ID:+RbTUT9y
>>435
ファミコンでも弾幕張れるんだなと関心してしまった
所でVirtuaNES v0.97でプレイすると表記が色々ズレるんだけれどもこのエミュレータでは正常に出来ないということかな?
0440名前は開発中のものです。
垢版 |
2016/01/27(水) 19:47:28.79ID:8OkpSUkH
>>439
VirtuaNES 0.97で確認してみました。

東方老桜夢ver0.20では、実機/エミュ判定を行っていてIRQ割り込みの頭で、実機/エミュ別にnopを入れてタイミングを調整しています。
実機 nop 2個、エミュ nop 0個となっているのですが、VirtuaNESでは、nop 3個で画面が安定しました。
実機は nop 3個でも安定した画面になるので nopを増やすのは問題ないのですが、
VirtuaNES は、実機/エミュ判定で、エミュと判断されているため、実機側に判定させる何かしらの手立てが必要な状況です。
Aボタンを押した状態で立ち上げたら実機側とするといった方法でも構いませんでしょうか?
0441名前は開発中のものです。
垢版 |
2016/01/27(水) 23:31:46.97ID:iuhjgLDC
ほう、実機判定してるんだ。

 VirtuaNESにあわせる必要はない。
使いやすさは最高だが、エミュレーション精度はいまや時代遅れだからだ。
 対しPPUクロック精度で書かれたより新しいエミュは
動作が重いという罠もある。
0442名前は開発中のものです。
垢版 |
2016/01/28(木) 00:04:07.25ID:aAl7ptEy
>>441

では、申し訳ありませんが、VirtuaNES対応は宿題とさせていただきます。

実機判定は、VBlank期間中にMMC3のIRQを発生させれるかを行っています。
FCEUX Nestopia NNNesterJ で動作確認しましたが、この判定をパスしたのは Nestopia だけでした。
再現性が高いという評判は流石と思いました。
0443名前は開発中のものです。
垢版 |
2016/01/28(木) 00:08:59.07ID:4HlAPjuX
しかし1クロック単位を考慮しなきゃならんソフトが多いってのもなぁ
ファミコンはホントに難儀なハードだよ
普通は表面だけをマネできればいいが、ファミコンの場合そうもいかないのがな
0445名前は開発中のものです。
垢版 |
2016/01/29(金) 08:12:40.13ID:IhMTdY1w
>>444
ありがとうございます。
ヘルプにタイル状に分割して描画とあったので、ボスの体力ゲージなどの狭いライン間隔での割り込み部分が
どうななるのか気になったのですが、問題なく表示されるのを確認しました。
0446名前は開発中のものです。
垢版 |
2016/02/02(火) 21:14:25.02ID:Xla8KbIU
ニコ動(sm28114684)に 8BIT MUSIC POWER の動画が投稿されていたので見たけど、
スプライト量4倍は、8x16モードで(8x8に対して2倍×偶数/奇数フレームで時間軸に分散で2倍 っぽい。

画面止めて、移動するオブジェクトの数を数えたけど、64個以内に収まっている。
オブジェクトの移動は、円軌道や微妙な加速減を行っているようで、それなりに負荷はありそう。でも無理のない範囲。
0447名前は開発中のものです。
垢版 |
2016/02/04(木) 23:53:35.30ID:FG4y3IED
 
お世話になります。
私、責任者の加茂と申します。以後、宜しくお願い致します。
http://homepage2.nifty.com/e-d-a/scurl/ays.html
 
 http://homepage2.nifty.com/e-d-a/scurl/SW-pos.html
 http://homepage2.nifty.com/e-d-a/scurl/SW-sp.html
 http://homepage2.nifty.com/e-d-a/scurl/SW-BB8.html
 
浪速建設様の見解と致しましては、メールによる対応に関しましては
受付しないということで、当初より返信を行っていないようで、今後につい
てもメールや書面での対応は致しかねるというお答えでした。
 http://www.o-naniwa.com/
このように現在まで6通のメールを送られたとのことですが、結果一度も
返信がないとう状況になっています。
 
 http://homepage2.nifty.com/e-d-a/scurl/ia-1-4.html
 http://homepage2.nifty.com/e-d-a/scurl/ia-2-1.html
 http://homepage2.nifty.com/e-d-a/scurl/ia-3-2.html
 
私どものほうでも現在までのメール履歴は随時削除を致しております
ので実際に11通のメールを頂戴しているか不明なところであります。
 
●クリスタル通り122号室住人
●浪速建設 女事務員 南野 東条  ●アパマンショップ八尾店 加茂正樹
 
!!!!!!!!!!!!!!!
0448名前は開発中のものです。
垢版 |
2016/02/10(水) 05:21:21.77ID:Tj88U3ce
ハードの話だからスレチかもしれないんだけどさ、ファミコンをTVに直接つなぐと壊れるとか言っている人がいたけど、どうしたら壊れるのかよくわからん
ファミコンのRF出力には常時5Vの直流成分があるから、せいぜい1V程度の入力を前提としたアンテナ端子につなぐと壊れるってことか?
壊れるとしたら直流カット用のコンデンサか?でもまず名の知れたメーカーのテレビがそんなに耐圧の低いコンデンサ使うことってあるのか?
同じ形の端子のBSなんかじゃ15Vあるしフールプルーフの観点からも、まともな企業がその程度で壊れるテレビを作るとは考えにくいとおもうんだが
0449名前は開発中のものです。
垢版 |
2016/02/10(水) 21:24:34.51ID:t1JpI2XH
>>448

ググったら、次のサイトが見つかった。

ttp://d.hatena.ne.jp/Narr/20110406

RFスイッチを通す前提で回路を組んでいるので、RFを直結するといった保証の範囲外の使われ方をした場合に
どうなるかわからない、最悪テレビが壊れる可能性もある。
ってところのようです。
0451名前は開発中のものです。
垢版 |
2016/02/11(木) 00:53:37.94ID:bMdTUmpq
>>450
なんでRF出力をテレビにつなぐとファミコンの回路中の抵抗がやられるんだ?
ファミコンの中の7805が壊れるようなことでもない限りファミコン本体側の部品に過電流が流れるってまずないだろ
0453名前は開発中のものです。
垢版 |
2016/06/04(土) 14:03:05.70ID:rVuJza+k
東方老桜夢 ver0.30をアップしました。
http://homepage3.nifty.com/~kyoske/nes/TouhouRououmu030.zip

ボムとゲームオーバー処理、タイトル画面を実装しました。

技術面でのトピックは、BG処理を背景&エフェクトの2レイヤー構造から
WRAM上のバッファの内容を表示する2レイヤーを加えた4レイヤー構造に
変更したことでしょうか
新規に追加したレイヤーの1つを使ってプレイヤーのボムを表示しています。
BGなので8ドット単位でしか絵が移動しませんが、思ったより悪くは無い感じでした。
残りの1レイヤーはまだ先の話になりますがボス敵で使う予定です。
0455名前は開発中のものです。
垢版 |
2016/06/15(水) 21:52:17.36ID:niJUc+BD
>>449のサイトから色々有用な情報を得られたけど、全体的にだいぶ捻くれた書き方してんな
なんかWeb上のファミコン関係の技術者って心に闇抱えてる人が多いような気がするわ
Offgaoとか、某FPGA実装の人とか、安藤信明とか
0462名前は開発中のものです。
垢版 |
2017/12/24(日) 01:27:33.19ID:a9Y1KqFd
ファミコンディスクシステム掲示板 FDS BOARD ディスクシステムを偲ぶ
http://park19.wakwak.com/~fantasy/cgi-bin/fdsboard/read.cgi?mode=all&list=tree&no=20
ディスクBASIC: まさやんのゲームいぢり
http://gameidiri.cocolog-nifty.com/blog/2007/02/basic_f283.html
Converting Super Mario Bros. to FME-7/Sunsoft 5B?
http://forums.nesdev.com/viewtopic.php?f=10&;t=11000&start=15
Talk:Sunsoft FME-7
http://wiki.nesdev.com/w/index.php/Talk:Sunsoft_FME-7
0463名前は開発中のものです。
垢版 |
2017/12/24(日) 12:43:40.15ID:a9Y1KqFd
ディスクシステムでDPCMって鳴らせるか調べてみたら、
$C000〜$DFF9にDCPMを配置して鳴らすことはできそうだな
0465名前は開発中のものです。
垢版 |
2017/12/25(月) 05:28:22.37ID:W4zhaDYT
ディスクシステム(任天堂)のBIOSとシャープ ツインファミコンのBIOSって若干違うんだな。
Nintendoって表示されるかFamicomって表示されるかの違いだけど。
ディスクシステム(任天堂)のBIOSは40KBのNESイメージのものもあるけど、
シャープ ツインファミコン版を作ろうと思ったら、ディスクシステム(任天堂)の
ROMをシャープ ツインファミコンのものに置き換えてから吸出し機で吸わないと駄目かな?
0469名前は開発中のものです。
垢版 |
2017/12/25(月) 23:16:46.03ID:W4zhaDYT
バッ活パート11掲載「ROMゲームをディスクシステムで実行」ってのがあるようだ、
RAMアダプタを改造すれば、ROMのゲームをディスクに入れて遊べるようだな。
これはNROM(マッパー0)かCNROM(マッパー3)のゲームが対応しているようだ。
海賊晩でFDSのゲームをROMに入れたものがあるけど。これは$6000から
プログラムを配置できるマッパーを使用しちえる。どちらも基本的にアドレスを変換せずに
起動できる点がポイントだろう。普通にNES→FDSやFDS→NESをやろうと
思うと大抵アドレス変換が必要で大幅なプログラム変更の為気の遠くなるような
作業が必要だ。
0470名前は開発中のものです。
垢版 |
2017/12/27(水) 01:41:54.27ID:QYUKoYbX
255 :名無しさん@お腹いっぱい。:2013/12/29(日) 07:21:45.79 ID:qrYjRNG4
3. FDSラブ
2013年09月16日 22:35
いや、待てよ?
「その後、ハードやアダプターなど、とっかえひっかえしてみたが、まったく改善されず。」
ハード、つまりファミコン本体は変えてみた(≒ファミコン本体のSRAMを交換した)けど改善されず、アダプター、つまりRAMアダプターも変えてみたけどそれもだめ、ACアダプターも&quot;とっかえひっかえ&quot;しただろうけど、無駄だった…。
うーん、ここは一発、昔の記事で紹介された東京都板橋区の「ファミコンショップクラブハウス」に行ってみたらいかがでしょうか。
ttp://ogclub.u.cnet-ta.ne.jp/
せっかくなのでついでにちょっと、僕の熱い想いを語らせていただきます。
かつてオロチさんが「2012年いまだにファミコンを修理してくれるゲームショップが存在した!」で紹介してからというもの、このお店に月イチで行って、ゲームを買いつつ、優しく面白い店長とよく話をします。
オロチさんが紹介していなければ、僕はもしかしたらここを知らないまま、彼と一生会うこともなく、孤独…というのは大げさかもしれませんが、それでも寂しい人生だったかもしれません。
僕ね、まだ酒は飲めません。
一部ではゆとりだガキだ何だと叩かれます。
けど僕は小学生の時からファミコンが物凄い好きで、小中学校では一時期いじめにも遭って、孤独感に押し潰されて自殺も考えました。
けどやっぱりね、類は友を呼ぶと言うじゃないですか。
オロチさんのこのサイトを見るようになってからというもの、店長や&quot;マサさん&quot;とかいろんな人に出会い、人生は豊かになりました。
マサさん、僕はここにいますよ。
オロチさん、今までずっと休まず記事を書き続け、あの時あの店を紹介してくれて、本当にありがとうございます。
これからも更新がんばってください!
0471名前は開発中のものです。
垢版 |
2017/12/27(水) 02:34:19.62ID:QYUKoYbX
256 :名無しさん@お腹いっぱい。:2013/12/29(日) 19:02:14.68 ID:SqfJyfl2
どうも、ファミコンディスクシステムを愛するFDSラブです。
最初は千歳烏山オルパでの友達に合わせて、面白いファミコンネタを交えつつオルパの素晴らしさを発信していきたかった。
僕はそう考えて、俗に言うリア充さんという人みたいなノリでTwitterを始めたわけなのですが、昨日は大変でした。
0475名前は開発中のものです。
垢版 |
2017/12/31(日) 18:24:45.05ID:/rN76OKL
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

9WHJ0HLWTF
0476名前は開発中のものです。
垢版 |
2018/01/02(火) 22:10:24.29ID:slJhAaJH
ほす
0477名前は開発中のものです。
垢版 |
2018/01/16(火) 06:49:08.11ID:J/0RzKgi
http://egg.5ch.net/test/read.cgi/software/1488728381/191
191 名前:名無しさん@お腹いっぱい。[] 投稿日:2017/05/28(日) 23:24:05.12 ID:8S5QOMSD0
>>190
Mesen (100%) ≧ Bizhawk (100%) > puNES (98.08%) > MyNes (87.82%) > Nintendulator (85.26%) > VirtuaNES (35.26%) > nesterJ (29.49%)

http://tasvideos.org/EmulatorResources/NESAccuracyTests.html
http://emulation.gametechwiki.com/index.php/Mesen
https://www.mesen.ca/#Compatibility
0478名前は開発中のものです。
垢版 |
2018/01/19(金) 00:29:11.92ID:VhnRMljT
ファミコンはBGとスプライトの優先順位の指定をスプライト側で設定しますが
これだとスプライトの下に表示したいBGキャラと
スプライトの上に表示したいBGキャラが隣接している場合で
スプライトがその両方にまたがっている場合に
スプライトの上に表示したいキャラに差し掛かった時点でスプライトの
優先表示を変えてしまうと、スプライトの下に表示したいBGキャラの部分でも
BGキャラが上に表示されてしまうと思いますが、どういう処理をすればいいですか?

色々とVDPの仕様を調べると、セガマークIIIなどは、優先順位のフラグをBG側が
持っているので、何も考えなくても思った通りの優先順位で表示されそうですが
ファミコンのようにスプライト側で優先順位を持っていると、優先順位が逆のBGに
スプライトがまたがっている場合、どうしたらいいか分かりません。
0479名前は開発中のものです。
垢版 |
2018/01/19(金) 03:13:04.92ID:KfOVG5Sv
パターン1
表示したいスプライトより優先度が高いスプライトをBGの裏においてマスクする
例)スーパーマリオの土管に入るときなど

パターン2
BGの後ろにしたいところに優先度の高いスプライトを8枚置き、8枚を越える
スプライトが出せない事を利用して目的のスプライトを消す
例)ゼルダのダンジョンなど

パターン3
表示したいスプライトのキャラそのものをBGデータに重なっているところだけ透過
したキャラに書き換える
例)ソルスティス/ナイトロアーなど

好きなの選んで
0480名前は開発中のものです。
垢版 |
2018/01/19(金) 13:00:25.60ID:VhnRMljT
>>479
ありがとうございます。そういった感じの解決法なんですね。
でも、なんだかスプライト側が優先順位のフラグを持っているのは
面倒な気もするのですが、スーファミでも変わらず同じ仕様のようですし
何かメリットがあるのですか?

BG側が優先順位のフラグを持っていれば、BGキャラを表示する時点で
フラグを設定する以外の事はしなくても済みますので、この方が便利で
合理的に感じます。
ところがスプライト側がフラグを持っている場合、スプライトキャラが移動するたびに
BGキャラとの重なりチェックをしなければならず、そのBGキャラがスプライトの上に
表示されるべきBGキャラならばフラグを設定し、そうでなければまたフラグを戻すといった
処理がキャラを移動するたびに発生します。しかも、上記のように
優先順位が逆のBGキャラをまたいでいる場合は、様々な工夫が必要です。
それにもかかわらず、スーファミでもこの仕様を継承したということは
この方法にもメリットがあるはずですが、さっぱり思いつきません。
0481名前は開発中のものです。
垢版 |
2018/01/19(金) 16:13:46.37ID:k1Q0LT6K
BGにフラグをもたせるメモリの空きなどないしハードウェアも複雑になる
描写位置に合わせて処理が必要になるスプライト側に機能を集約させることで単純化し
工業製品として価格が抑えられるなら十分なメリットになるだろ

スーファミは当初ファミコンのソフトがそのまま動かせるように
互換性を考慮した設計だったが途中で諦めたからその名残
0482名前は開発中のものです。
垢版 |
2018/01/19(金) 22:43:04.95ID:KfOVG5Sv
>>480
出来る事出来ない事がそれぞれで違って一長一短ある
BG2枚以上ならスプライト側のほうが何かと便利かな
0483名前は開発中のものです。
垢版 |
2018/01/19(金) 23:52:01.21ID:VhnRMljT
>>481
ファミコンはVRAMが2KBしかないので
よく考えたらそうですね、パレットですら4キャラで1つに
節約してるくらいですし。
何かソフトウェア技術的なメリットがあるのかと思って
ここ3か月くらいずっと考えてたんですけど、思いつかなかったもので
ここで聞いてみました。

>>482
スプライト側がフラグを持った方がいい場合もあるのですか?
自分はまったく思いつかないのですが・・・。
スプライト側がフラグを持つと、プログラマ側が色々な処理を
しなければならず面倒ですけど、BG側がフラグを持ってくれると
プログラマは何もしなくてよくてメリットしかないように思います。
0484名前は開発中のものです。
垢版 |
2018/01/20(土) 04:11:54.78ID:B+xNcX3y
>>483
BGにフラグの場合はスプライトより上にしたBGよりスプライトを
上にする事が不可能になる

今更そんなメリットデメリットを議論したところで変わらないから
工夫して使うしかないよ
0485名前は開発中のものです。
垢版 |
2018/01/20(土) 13:13:58.39ID:z5GTrIKv
ようやく>>478氏の内容が理解できた。
なんで優先度をそんなコロコロ変えるのか全く理解できなかったが、マリオの土管の事か。
ああいうのは、本来別の最前面スプライトやBG面を2毎持たせて前面のBG面?としてやるものだと思いますが。
BG=背景なんだから、それを基準(固定して)にするのが普通の考えだと思う。
0486名前は開発中のものです。
垢版 |
2018/01/20(土) 16:39:03.41ID:xRcWre4I
>>484
おお、なるほど。そこは思いつきませんでした。
確かに今更仕様について考えても意味ないんですけど
どうも気になってしまって。

>>485
この仕様を考えるきっかけになったのが、立体交差の橋を
くぐるという処理なんですけど、橋の下に入るときに、スプライトは
1ドット単位で動くので、どのタイミングで優先順位を切り替えたら
いいかと悩んだのが原因でして。
橋に1ドットでもくぐった瞬間に切り替えると、その手前の地面のBGも
上になってしまうのでキャラが半分消えておかしくなるし、完全に8キャラ分橋の下に
移動してから切り替えると、その8ドットが動く間はキャラが橋の上に表示されて
しまうので。
0487名前は開発中のものです。
垢版 |
2018/01/20(土) 16:50:55.67ID:xRcWre4I
そう言えばイースの立体交差はどうだったろうと思って
調べてみたら、ファミコン版はそもそも立体交差が省略されて
無くなっていたという。

RPGで森に入ると下半身が隠れるというのも同じような処理ですけど
ハイドライドではよく見てみると、森から出るときとか地面のBGがキャラの上になってしまってますね。
速いからよく分からないけど、ちゃんと処理してると思ったら思い出補正だったようで。
ファイナルファンタジーだとキャラがきれいに矩形に消えてるので
BGを上にしてるんじゃなくて、単にスプライト消してるだっけっぽいですね。
0488名前は開発中のものです。
垢版 |
2018/01/20(土) 17:03:49.81ID:xRcWre4I
結局の所、1ドット単位で動くキャラに対して上に何かを
表示したい場合、1キャラ分動き終わった場合は別として
移動中はスプライトで上書きしかないのですね。
さっき動画で見たんですけど、カラテカでキャラが柱の向こう側を
通る時も、柱にスプライトのマスクが出現する処理でした。

だとすると、このBGがスプライトの上に表示できるという仕様は
移動するキャラに対して使用するような想定では作られていないということか。
根本的にそこの理解が足りなかった。
0489名前は開発中のものです。
垢版 |
2018/01/20(土) 17:20:16.21ID:xRcWre4I
あ、念のために書いておくと、立体交差の橋というのは
下が透ける部分(透明色)があって、そこからはスプライトキャラが見えます。
完全にキャラが見えなくなってしまうのであれば、それこそスプライトのマスクで
済むので。
0490名前は開発中のものです。
垢版 |
2018/01/20(土) 19:11:23.32ID:xRcWre4I
なんか連続で書いて申し訳ないですけど、>>484さんが
教えてくれた利点は結構大きいな。
これができないとスーマリ3とかのBGの裏側に回った時に
自キャラだけ裏側でってのが出来なくなる。
0491名前は開発中のものです。
垢版 |
2018/01/20(土) 19:15:39.26ID:1nTTD0qr
BGパレットの0番が背景色だから
スプライトのプライオリティビットを立てると
この部分が透過扱いになるのよ
0492名前は開発中のものです。
垢版 |
2018/01/20(土) 19:36:10.53ID:xRcWre4I
>>491
その仕様はもちろん理解しています。
ファミコンはBG・スプライトにかかわらず
パレットの0番色は強制透過色ですよね。
0493名前は開発中のものです。
垢版 |
2018/01/20(土) 19:52:33.42ID:xRcWre4I
説明が下手過ぎて何か勘違いさせてしまったかもしれません。
透過色の原理は理解してます。

まあ簡単に書くと、表示優先順位が逆のBGキャラをスプライトがまたいでいる時
つまり移動中は優先順位をどう指定しても表示がおかしくなるので
BGと同じスプライトを自キャラスプライトに上書きするしかなさそうだな
面倒だなこれ、BGがフラグ持ってくれてたらこの処理いらないのになぁ
なんでスプライト側がフラグ持ってるんだろ?これ何か利点あるの?ってのが
出発点でした。
0494名前は開発中のものです。
垢版 |
2018/02/17(土) 07:40:03.31ID:G/oBdhuK
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0497名前は開発中のものです。
垢版 |
2018/05/14(月) 19:07:58.17ID:Y/0tmHJq
453です。久しぶりに来ました。

>>459
Mesenの存在を知った時、東方老桜夢を試してみたのですが
プログラムに仕込んでいる実機判定でエミュと判断されたので
Nestopiaに負けてんじゃんで止まっています。
実機判定にパスすれば普通に動作するようです。


東方老桜夢の公開サイトはinfoweb閉鎖に伴いさくらサーバに移動しています。
現在、ver0.51を公開しています。
0498名前は開発中のものです。
垢版 |
2018/08/08(水) 22:21:13.26ID:zmi562yC
最近開発を始めようと思ってファミコンの勉強を始めたものです。優しい方がいたら是非教えて欲しいことがあります
CPUアドレス空間の$2006ってR/WしたいPPUのアドレス空間のアドレスを上位ビットと下位ビットの二回に分けて書き込むと思うのですが、この2バイトのアドレスの情報ってPPU内部のどこのレジスタに保存されているのでしょうか。

例えば同じように2回書き込む$2005では、スプライトのy座標とx座標はそれぞれPPUのOAMのbyte1とbyte2に保存されていると思うのですが、、
0499名前は開発中のものです。
垢版 |
2018/08/08(水) 22:52:05.26ID:zmi562yC
すみません、多分自己解決しました
NesdevのPPU Scrollingのページにtレジスタとかvレジスタとか色々書いてあったのに気づきました
0500名前は開発中のものです。
垢版 |
2018/08/09(木) 20:06:38.45ID:KCGkcXa3
tレジスタやvレジスタは、動作を説明するために書いてあって、実際にPPU内部に存在するかは
はっきりしていないと思います。ただ、この動きをするためには、このようなレジスタが必要だろうなと
推測されるので、説明にあるレジスタに該当する回路はあると思います。

あと、$2005 に書き込むにはBGのスクロール位置なので、OAMは関係しません。
0501名前は開発中のものです。
垢版 |
2018/08/09(木) 23:53:25.84ID:D70dxmCk
釣りにしては有能すぎる。

ファミコンの回路図見るのが一番。

もっと言えば
PPU内部の回路解析しちゃった外人もいるはず。
0502名前は開発中のものです。
垢版 |
2018/08/12(日) 12:57:39.31ID:iZHULsCi
回路図見たけど2度書きレジスタについては全然見えてこないな。
tやvという概念さえ知ってれば無問題。
0507名前は開発中のものです。
垢版 |
2019/04/21(日) 15:14:08.08ID:d83f6FYN
/i/|ii!//|!/!i/´i/   .|i |/ノ        i\i!゙、:iヽ|:::|  ヽ 'i  ! ヾi |'!ヽ::::||::::::/:::::::::::::::::::::ヽ
i i 川i!ハ/" _!   | │        川 ヾ:ii ゙'∨     |    ゙ヾiヽヽ;||:::::i':::::::::::::::::::::::::
ノ ノ/リ,,,,,,二三テ=''" ヽノ        ル |ノノヽヾ ノ  、,,,ノ,、     iヽ:::||:::::i'::::::::::::::::::::::::::::
 /   ̄ ´~~゙''''    ゙''‐- ..,,         ,, ‐'    `゙ヾミッ、,,   ヽ::|::::/::::::::::::::::::::::::::::
,,イ|                i'        i"         `'‐='   `'|/i!:::::i::::::::::::::::::::::::
 i | :::::::ヽ::::ヽ::::::ヾ::    ゙、        l       〃:::::       i//::::ハ::::::::::::::::::i:::
  i i \\\\\ヽ     )       ヽ        ′′′   / /:::::/:::::::::::::::::::|::::
!  | i            ,,ィノ         <         :::: :    /:::::/:::::::::::::::::::/::::
i!  i i!            /i/    ,r''''‐y'''.;、  \             /:::::/:::::/::::::::::::/:::::
゙i!  | i          /⌒' 、 Y:::::::::''::;;;;'.;.Y'⌒゙i           /::::::/::::::/::::::::::::/::::/i
 i  i ゙!         ん、,,__ヽノ:::::::::::::::::::;;;;;{,__,,,r''          /:::::::/::::::/::::::::::::/:::://
゙、ii! ゙| i           ノ  ゝ;;;:::::::::::::::::::;ノ 。 `i          //:::::/:::::/::::::::::::/::::::/:::
ヾ!トl ゙iU          i  。l '゛..  ‐ー:::::i    |         //::::::/::::::/::::::/:::/:::::i!::::::
 iiミ! ハ             i  l ,,,,::: :::;;;;;...{ ° ゙、       //::::://::::/::::::/:::::/::::i::::ii::
 i!ヾ!i ゙、!         , '  |::: ::::ヽ   ..}     |゙ヽ......,.,.,.,,,///://::://::::/::::://::::i::::リ::
 !ヽヾi  i゙、  ___,,,/   }:: :  ;;;::: ::::::::}     レWノ'レi/、//::/:://:/:::/::/:::ハ:i |::
0509名前は開発中のものです。
垢版 |
2019/06/09(日) 07:44:04.55ID:AOOhsRYQ
>>508
どこで
0510名前は開発中のものです。
垢版 |
2019/11/30(土) 12:39:15.72ID:KE4+YyOy
なんか同人シューティングカセットが出たみたいだが、
末期のマシン語で作られたベーマガ投稿作品みたいだ
0511名前は開発中のものです。
垢版 |
2019/11/30(土) 22:10:01.18ID:TFMRzxLb
キラキラスターナイトのプログラム使って作ってるらしいなそれ
おにぎり食べるやつとかアドベンチャー的な作品とか
ファミコン界隈が「自分で新作を作って売る」方向になってきてるな
0517名前は開発中のものです。
垢版 |
2020/06/17(水) 23:06:58.98ID:mf6rc7jM
>>515
なんだこりゃ色多すぎ嘘くせー
と疑ってしばらく観察してたけど
特に色数の制約超えてなさそうだね

当初は絵のパターンが足りなくならないように減らすために
ブロックまで含めた1枚絵を描いているのかと思ったけど違うかな

パターンの繰り返しが単調にならないように上手な絵を描いているね

スーファミのように今にも背景が多重スクロールしそうな色
0519名前は開発中のものです。
垢版 |
2020/06/21(日) 18:17:10.21ID:PlLzwQn6
ゲームラボのSM調教師瞳の記事に興味深い記述があった
音源チップをデュアルCPUのように使って音楽を流しながらグラフィックを解凍させたんだと
そんなことできるの?
0520名前は開発中のものです。
垢版 |
2020/09/22(火) 01:46:47.41ID:wZ3fIRJG
aitendo に40ピンのカードエッジコネクタの基板が売ってるのに60ピンのが無かったから60ピンの発売希望お願いしてみたらあっさり快諾してくれた。
来月頭くらいには入荷しそうだって。
ファミカセの制作に使えるか注目しててね。
0521名前は開発中のものです。
垢版 |
2020/10/04(日) 22:28:40.56ID:yRmpXbbC
RP2A03 の命令セット確認しなおしてみたんだけど、
オリジナルならゼロページでクロック数短縮できるところをわざわざ潰して NOP とかにしてる?
なんで?
0525名前は開発中のものです。
垢版 |
2021/06/12(土) 15:34:08.80ID:qCHr7uRi
「創世記・ファーミー」でファミコンのプログラムを製作できます
と宣伝にあったけど、実際に作った人がいたのかと。
0527名前は開発中のものです。
垢版 |
2021/06/12(土) 18:58:48.83ID:qCHr7uRi
レスどうもです。バックアップはできたと思うけど他スレからの抜粋です。
PC98等に接続して独自にソフト開発ができるようにする予定もあったんだけど
実現せずにフェードアウトしたとか。とは言え開発した方がいるのかと質問しました。

因みに最近ディスクシステムの内容をWindows間で8秒(←QDの仕様)で転送する
ハード・ソフトを製作しましたがFM-7も使います。回路図と6809コードは公開予定です。
Windows側に持って来れば「cc65」が使えるので現在下調べしてます。ただFM-7の他に
部品代は6000円程かかります。とは言え「創世記・ファミー」よりは安いです。

喜んで「FM-7」をオクで入手したけど騙しだったと言うことにはならないようにします。
尚、「FM-77」の方が拡張コネクタ数の関係で良いです。「77AV」ではNGかも知れません。
0529名前は開発中のものです。
垢版 |
2021/06/12(土) 21:30:42.83ID:akTl1DCi
ROMカートリッジをディスクシステムにバックアップしたのは覚えてる

ファミー本体の後部にRS-232Cっぽいコネクタはあったけど、ファミコン+ファミーだけではBOOTできないっぽいから、
パソコンと繋いで開発するにはディスクシステム側に起動ディスクが必要な気がするよ
0530名前は開発中のものです。
垢版 |
2021/06/12(土) 23:00:11.74ID:qCHr7uRi
「創世機・ファミー」を使う際にディスクシステム側に起動ディスクが必要が否かは判りません。
下の画像では「創世機・ファミー」側に何か「CPU」があれば起動ディスクは必要しない感じです。
ttps://bakutendo.net/blog-entry-415.html

因みに「ディスクシステム解析ツール」と仮にしましたが(1番目の画像は、これでバックアップ)
ttps://imgur.com/a/qCPoTqz

3番目の画像の「RAMアダプター接続基板」はFM-7の6809を使い「QD」を操作します。
また4番目の画像の「新基板202106」はFM-7を使い、Windows間でデータ転送します。
6502のコードは全く使わなくても「QD」は操作できます。実際にMZ-1500はZ80です。
0531名前は開発中のものです。
垢版 |
2021/06/12(土) 23:46:26.20ID:qCHr7uRi
>>529
>ファミー本体の後部にRS-232Cっぽいコネクタ
RS-232Cです。PC-98(PC-88)のRS-232Cと接続してデータ転送か
コマンドを送出したと思います。
0533名前は開発中のものです。
垢版 |
2021/06/13(日) 09:40:04.40ID:8TZNHBpa
>>532
URLがバグった
Stunt Kidsとかいうゲームです
0534名前は開発中のものです。
垢版 |
2021/07/03(土) 01:03:34.45ID:nQGwm9V9
quartz.nesという音色エディタをお持ちの方いませんか?
うpしてくださったら御礼します(3行)
0535名前は開発中のものです。
垢版 |
2021/07/03(土) 15:40:17.46ID:LiL8bHG9
2行で応えます。もしかして「行」は「桁(けた)」の間違いではと。
それにしても999円では安過ぎ、持ってないけど。更に著作権侵害ではと。
0536名前は開発中のものです。
垢版 |
2021/11/30(火) 23:18:51.36ID:8EsryYEI
新作ファミコン版『パックマンCE』、Switch『ナムコットコレクション』10本収集特典に
https://japanese.engadget.com/namcot-103008491.html?guccounter=1&;guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAADf2ioFYZStJiDe7plAVCKT8tq2ySE4YuM8j5HYtKMjuZuBNZHF-0TXdnYm5zdMm68EpGG29r4BbTmw2IUdNbcGd2neW6JcGzGCZmSDs_sVYENGKH29ECX2CPWZoRdMIxlmJ95ojdyR6EcJe0nuvaEdmjlrji3YfdDZn1lDC8KWZ

6月18日発売のニンテンドースイッチ『ナムコット コレクション』には、10本のゲームを揃えた収集特典として、ファミコン版『PAC-MAN Championship Edition』(パックマンCE)が用意されていることが分かりました。

『パックマンCE』は2007年にXbox 360で発売されたのち、現在も多機種でシリーズが続く新生パックマン。

収集特典の新作パックマンCEは、ナムコットブランドによるナムコのファミコンゲームが
『ファミスタ’94』で終了してから10数年後のゲームを、さらに13年経った2020年に、
ファミコンで動く新作として先祖返り移植した作品です。通し番号は『ファミスタ’94』の「83」
に続く「84」。

パックマンCE ファミコン版ってどっかで誰かが作ってたの見たことあるけど、
それにそっくりだった。その動画は現在非公開になったいるようだ。

パックマンCE
http://www.nicovideo.jp/watch/sm3844058

これが公式採用されたのかな?
0537名前は開発中のものです。
垢版 |
2021/12/15(水) 22:26:41.89ID:rXCCGY2z
>>536
特典発表のちょい前に、動画が非公開になったので、そういうことでしょうね。
作ったのはcoke774さんで、近年は、スーパーカセットビジョンで色々ソフトを作られています。
0538名前は開発中のものです。
垢版 |
2021/12/23(木) 23:31:34.53ID:B6eQICGp
「ゲームで金儲けする時代止められない」CCPゲームズ代表インタビュー

「CCPゲームズ」のヒルマ・ベーガー代表は14日、オンラインインタビューで最近、
話題に浮上した「プレイトゥオン(Play to Earn 遊んで儲けるゲーム)」について
「世界のゲーム業界には、すでにゲームアイテムを取り引きする2次市場が存在する」とし
「儲かるゲームは以前にもあったし、これからも止められない流れになる」と診断した。
CCPゲームズは、世界的な人気ゲーム「イブオンライン(Eve Online)」を開発・運営する。
イブオンラインは、世界で4000万人以上が楽しんでいる。
CCPゲームズは最近、NFT(代替不可能トークン)コンテンツを披露し、注目を集めている。
「アライアンス・トーナメント」というゲーム内の大会商品でNFTコンテンツを配った。
0539名前は開発中のものです。
垢版 |
2022/03/15(火) 21:29:28.09ID:+prqqqiR
ハード側のイメージができないので質問させてください。

mapper 206のCHRバンク切り替えは400byte毎に小分けで切り替えられますが、
市販ゲームのプログラムを覗くと、例えばAのシーンでは$0000-$1FFFまで毎フレーム同じバンクを指定し続けています。
ゲームとして必要なタイミングでのみバンクを切り替えればいいのに毎フレーム同じバンクを指定して負荷ってかからないのでしょうか?

エミュとかでPPUのメモリを覗くとCHA-ROMのデータが$0000-$1FFFに展開されていますが、
これはCPUに命令されたタイミングで1byteずつコピーしているのでしょうか?

メモリに展開?されたなら、CHA-ROMを引っこ抜いてもバンク切り替えが起きない限りグラフィックはバグらなさそうなイメージがあります。
ここら辺が全くイメージできません。

拙い文章で申し訳ございませんがよろしくお願いします。
0540539
垢版 |
2022/03/15(火) 21:51:26.58ID:+prqqqiR
物は試しとゲーム動作中にCHAROMを引っこ抜いたところグラフィックがバグりました。

エミュではPPUメモリ$0000-$1FFFにコピーされているように見えるけど、
実際のハードでは、メモリは無くPPUとCHAROMのアドレス線が接続されているだけなんでしょうか?
バンク切り替えというのもアドレス線の接続先をコントロールするICに信号を送っているだけなので
仮に毎フレーム同じバンク番号を指定し続けても負荷はかからないと…。
0541540
垢版 |
2022/03/15(火) 22:18:10.46ID:+prqqqiR
連投すみません。
ROM領域と言われるチートコードでは干渉不可な場所と
RAM領域と言われる干渉可な場所があることを思い出しました。

PPUの0000から1FFFはROM領域という訳で、多分それはアドレス線で接続されており。
常にCHA ROMと同期しているイメージな気がしました。

自己解決してしまったと思います。お騒がせしました。
0542名前は開発中のものです。
垢版 |
2022/03/15(火) 22:31:36.87ID:AYr/3bBN
>>539-541
少なくとも >>539 の時点ではバンク切り替えがどういうものか理解できてないように見える
それが >>541 で自己レスするまでに調べて理解できたってことなんだろうか?
0543名前は開発中のものです。
垢版 |
2022/03/15(火) 23:00:02.57ID:+prqqqiR
>>542
お騒がせします。あまり理解は出来て無いと思います。
エミュのメモリビューワでPPUメモリを覗くと、$0000-$1FFFまでずらっと展開されてるので
あたかもCHAROMのデータをPPUがコピーして記憶しているかのように錯覚してました。(エミュ上なので書き換えられるし)
実際のハードでは、PPUが記憶してるとかではなくアドレス線A0〜A12線($0000-$1FFF)がCHAROMに直結してるだけというイメージと理解しました。
悪魔城ドラキュラはPRGからグラフィックを「RAM」にデータをコピーしているというワードを見て気がつきました。

プロアクションリプレイを使ってメモリとかを書き換えて我流で学んで来たため知識がぐちゃぐちゃです。
ROMとRAMの意味から学び直してきます。
0546名前は開発中のものです。
垢版 |
2022/03/29(火) 22:57:50.51ID:SFxLAwoX
>>543
こういう風に繋がっているけど、どのように動作するかイメージわく?

PPUのアドレス線 PA0 〜PA9 → CHR-ROMのアドレス線 A0〜A9 に接続
PPUのアドレス線 PA10〜PA12 → Mapperのチップに接続(バンクレジスタの選択)
PPUのアドレス線 PA13 → CHR-ROMのCEに接続(PPUアドレス $0000-$1fffの時にCHR-ROMの出力が有効になる)
Mapperのチップのバンクレジスタの出力 6bit → CHR-ROMのアドレス線 A10〜A15 に接続
PPUのデータ線 PD0〜PD7 → CHR-ROMのデータ線 D0〜D7 に接続
0548名前は開発中のものです。
垢版 |
2022/03/30(水) 17:00:46.31ID:k60dhdk1
>>546
プロアクションリプレイでソフトをバイナリでいじって改造しようってレベルの奴に
ハードウエアの配線から説明しようってのが無理すぎる気がするが

知りたいこともそんなことじゃないだろうし
0549540
垢版 |
2022/10/02(日) 11:40:37.85ID:jA1jUXrd
>>546
今気づきました。ありがとうございます。
あの後、勉強&ファミコンの分かりやすい回路図を見つけて理解できました。

バンク切り替えは、PRG命令でCPUのデータバスとアドレスバスからhi/loが出る→ロジックICが受ける→ロジックICがEPROMのA15等をhiに固定し見たいデータに切り替える。

ファミコンは無いけどROMが複数個で構成されてるタイプであればOEをうまく切り替えて見たいデータに切り替える。
0550名前は開発中のものです。
垢版 |
2022/10/03(月) 00:36:52.02ID:rpanlh78
半年越えのレスで草
0553名前は開発中のものです。
垢版 |
2023/02/09(木) 23:54:06.26ID:dE2T0xrU
PALTEST.NES( http://nesdev.com/paltest.zip)をディスクシステム用fdsに変換しました。
プログラムはc000から少しだけなのでそのままコピペして、nmi等アドレスをdffa~に入れるだけで動くはずです。
実際動かすと、数秒間正常動作するのですが、約5秒後フリーズしてしまいます。
どうしてフリーズしてしまうのか全く分かりません。
原因と対策方法が分かる方ご教示お願いします。
0554名前は開発中のものです。
垢版 |
2023/02/17(金) 23:33:48.29ID:hIJVoStd
>>553
いろいろ条件不明
その書き方だとダンプ部分をずらしただけ?じゃ全然無理だね

*.nes用のソースコードをそのままコピペで.orgずらして
*.nesファイル作ってくれる簡易アセンブラでアセンブルしたとしても
*.fdsじゃ到底動かないよ


*.fds形式内部のファイル群と開始アドレスなどとブートの仕組み理解しないとね
https://www.nesdev.org/wiki/Family_Computer_Disk_System
block01 *NINTEND○-HVC*等が記載されたディスク情報
block02 ファイル数
block03 ファイルヘッダ(ブートに必要なKY○DAKU-ネームテーブルファイル、CHR、PRG、PRGのセーブデータ)
block04 block03の直後のファイルの実データ


CC65(CA65アセンブラ)用のサンプルコード
Github repository: Simple FDS example for ca65

裏技か
Forum post: Skipping the FDS license screen
0555名前は開発中のものです。
垢版 |
2023/02/21(火) 00:44:39.67ID:G+AkrGuB
>>554
レスありがとう
よく読んでください、数秒間正常動作すると書きました。fdsファイルと移植に問題はありません。

で、自己解決しました。
レスを投稿する


ニューススポーツなんでも実況