>>499 入手したんでざっと目を通したが
ファミコンの仕様が全く理解出来ていない層がターゲットで
8ビット機の基本的な仕様やプログラム技術をファミコンに則して書いてあるのが8割
残り2割の副題にある限界突破技術にいたっては
・ドルアーガのマップ生成アルゴリズム(遠藤発言に図解つけた程度)
・スプライト反転やパレット違いによるキャラ数節約
・ラスタスクロール
・ドラクエのカタカナ制限や復活の呪文のパラメーター節約
のみの紹介で
最初期のベースボールやF1レース等、当時のプログラミングの常套手段であり
限界なんてちっとも突破してない
ファミコンの門外漢が調べて書いた感は否めないが
ファミコンプログラムに興味がある人がギコファミに行く前に
読んでおくべき入門書だと思う
>>502 そうか…。残念極まりないな。
入門書として立ち読み程度かなこれは。
帰ってきたら届いてたんでパラパラと読んでる。たしかに初心者向けっぽい。
でもわりと丁寧に書いてあって好感は持てる作りだよ。
これが売れればまたこういう企画の本が出しやすくなるだろうし、
応援したい気持ちになったから買って損したとは思わなかったな。
いくら丁寧でもタイトル詐欺はアカンやろ
編集者が悪いんだろうけど
Amazonはまだ届きません
俺も読んだけど4章のドルアーガの部分は面白かったな
知らない情報だったし
ただ、「驚くべき発想」と思えるほどじゃなかったけど
その手の情報が好きで調べてた人には新鮮味のある情報はないと思う
konozama炸裂だな
PCMを上手く使って音源の限界突破とか、バンク切り替えを使った
多重スクロールとか、最後期のファミコンの限界突破した技術が
紹介されてると良かったのにね。
ラスタースクロールはちゃんとやり方が紹介されてるなら良さそうだけど。
1ページ満たない程度の「0爆弾」概念の説明があるだけ
あたかも4方向スクロールにネームテーブル4画面モードが必要かのような記載してるくらいなので
マトモにFCでプログラミングしたことない人だよ
0爆弾の説明も透明なスプライトを配置するって書いてるけど、
それだとスプライトヒット検出のビット立たないしなあ
立ち読みしたけど、既にWindowsとかで基本的なゲームプログラム書ける若い人が、ちょっとした昔話を読み物として見る為の本だな。
>松浦健一郎, 司ゆき 著
よく書店で見かけるし、何冊か買ったことあるけど、この著者って、深くもないし広くもない、そのジャンルの入り口レベルの、内容浅めのガイド本を量産するタイプの作家さんだよ。
一から十まで説明されないと分からない人や、すぐパクって使えるサンプルコードを期待する人には、この著者の本は根本的に向かないよ。
つーか、FCの技法って、ガイド本が無いと分からないようなのあるの?
任天堂とコナミのバンクコントローラなら、NesDevWikiの資料だけで十分足りると思うけど。
で、Windowsでプログラムしてる奴には反転やパレットチェンジが驚くべき発想なの?
Amazonのその後の方が気になる
ファミコンを知らない人がタゲなのに、本の締めが「ファミコンに縛られるな」って。
「技術に学べ」っていう主題からも離れてるしw
517 :
名前は開発中のものです。:2010/11/01(月) 04:40:00 ID:5svKJOru
>ファミコンに縛られるな
まさにおまえらのことだな
制限の中で作るっていう遊びじゃねーの
「アセンブラわかる俺カコイイ」をやりたいだけだろ
できない人にはそんなにカッコよく見えるんだw
ちょーかっけよーw
>>515 あーごめん今日届いたよ
ちなみにamazonで予約注文するの初めてなんだけど発売日に届かないって普通なの?
一応26日に注文したんだけどね
俺はセブンイレブンだが、まだ届かんよorz
今日イトー○ーカドーで買ってきたw
FC関連メインで書かれてる書籍なんて新鮮だし、内容も結構濃いめでオススメ
まぁ…技術的な面ではあまり参考にならなかったんだけども…^^;
>PCMを上手く使って音源の限界突破とか、バンク切り替えを使った
多重スクロールとか、最後期のファミコンの限界突破した技術が
紹介されてると良かったのにね。
うん。そうだね(´・ω・)
わたくしも期待してたっぽいですよ
質問なんだが、バッテリーバックアップありのカセットで
リセットボタンを押しながら電源を切るのはなんで?
プログラム的にリセットを押す必要ってあるの?
ハードウェア的に必要があるのよ坊や。
ここだけの話、調べるのにはGoogleってサイトを使うといいらしい。
簡単に説明すると、電源切って電圧がゼロになるまでの間、CPUは暴走する
運が悪いとセーブデータが書かれたRAMをめちゃめちゃに書き換える
リセット押してる間はCPUから全てのROM/RAMが切り離される(これはファミコンに限った話ではない
これでセーブデータは無事(かもしれない)という寸法さ
PC-98でワープロしてても、電源切るときにリセット押してた人もいたけどね
ああ、こいつ、ふぁみこんやってるな、などと思った
逆に、リセット押さないで電源を切って下さいってソフトが
なかったっけ?多分ナムコのだったと思う。
SFCはリセット押さずに電源切りゃいいんだよな
おかげで今でもこんがらがる
>>529も言ってるがファミコンでも一部リセットを押さずに普通に電源切れってのがあるよ。
ファミコンのバッテリバックアップ対応の一部のソフトだけだと思う>リセット押しながら
オク終了時に3万ぐらいになってる悪寒
ウチに2期生のヤツ、あるぜw
役立ってないなら処分した方がいいんじゃね?
お前自身のようにw
俺、HALにいたからファミコンの開発教材持ってるよ
>>534 わざわざ自分から反感を買うような発言するかなあ
同門として恥ずかしいからやめてくれ
ん?なんで持ってるの書いたくらいで叩かれてるんだ?
高値で売ろうとする方が問題なんじゃねーの?
>>538 読んでみたいなって人の目の前で無意味な「俺持ってるアピール」するから
ウザがられるのではないでしょうか。
自分の言動が他人にどう受け取られるか、もう少し意識してみてください。
だからどうしたって感じだけどわざわざ噛み付くことでもない
>>533 そんな価値あるの?
入札すら無いと思うが・・・
持ってるならPDFにして公開しちゃえ。
ひけらかして自尊心満たすような奴が公開する訳ないだろjk
ファミコンのハードウェア解説ならまだしもただの6502の本じゃん。
ちょっとググればそのくらいの情報あるんじゃないのか?
546 :
名前は開発中のものです。:2010/11/07(日) 09:12:44 ID:HDppbbCs
お前ら見てるといかにも乞食って感じがする
頑張れよ、乞食ども
その本はその程度の価値しかないのだ。
学生時代の思い出の教科書なので、バラしてデータ化は無いです。
しかも、見知らぬ誰かの為に金を出して…なんて、ありえん。
6502の本は別に教科書として購入したし、ファミコンのハードウェアの
解説はそれなりにあったはず。ただ、目的がマッパー0サウンド特殊での
制作用の為、どのみちネットに出回ってる資料と大差ないと思います。
今は実家にあるのと、早々にプログラム関係は諦めてたので、
詳しい事は良く覚えてません。BG関係とかスプライト、
本体の仕様に関する部分はそれなりに書いてあった気がする。
>>534の書き込みをして興味がありそうなら、こういう事を書こうと
思っただけだったが、書き方が悪かったみたいで正直スマンかった。
それより、何で誰も
>>536に反応しないかな。
どーでもいいからスルーしてたけど
「 それより 」の一言が思慮の浅さを物語ってるな
高卒とかと仕事としたこと無いから知らんけどこんなバカなのか
開発機材と開発教材を間違えたのか?開発教材ってなんだ?
ID:beoP2MPcは何でそんなに必死なん?
HALは今でも専門学校をやってるし、ファミコンを教えてた時期もある。
たまたまHALのテキストを手に入れて持ってるけど、かなり充実してるよ。
>>552 ひとこと多い人のようですね。
反省の念があるならこのスレのために自重していただけませんか。
お願いします。
549と553は言葉尻捕まえて何でそんなに喧嘩腰なんだぜ?
(中)ってことは(上)と(下)もあるのか
(中)だけで意味あるのかな?
重要なことは(上)と(下)に書かれていて
(中)には大したことは書かれてないとかだったら
このスレの住人爆死だろ?
(大)(中)(小)かもしれん
本のサイズが違うとか
(強)(中)(弱)
よ…弱で
出前で不意に松・竹・梅で聞かれると困惑するよね
松竹梅が値段のランクだって事が解ってるなら、
安いの普通の高いので答えれば良いじゃん。
見栄をはるから困惑するんだよw
松竹梅
↓
寿司
↓
回転寿司
↓
>>532 でループ荒らしを狙ってるな?
なんて悪知恵の賢い奴らだこんちくしょう
街灯に?とかPOWとかつけとくのかな。
以前、スーマリを逆アセして解説してたサイトを見た記憶があるんだが
URLを忘れてしまった。誰が教えてくれないかな。
infoseek
infoseek終了したね
俺の10年近くあったサイトも自然消滅
570 :
sage:2010/12/05(日) 02:05:26 ID:iJ3bZDCd
ちょっと力試しにマリオブラザーズのプログラムを逆アセして
C で書き直そうと思うんですが、似たようなことした/してる人っていますか?
RAM の変数配置がわかると早く進むと思うんですが。
とりあえず $0500-$0503 は乱数生成のワークですね。
マリオブラザーズとか無謀だろ・・・
個人で楽しむなら良いとして、公開するなら法的にアウトじゃないの?
573 :
570:2010/12/05(日) 12:04:25 ID:iJ3bZDCd
まぁ公開はできないと思います。残念ですが。。。
↓RAM の用途をシェアするのは問題ないですかね?
0009: PPU $2000 に書いた値
000A: PPU $2001 に書いた値
0020: 1 frame 処理完了フラグ
これもアウトということであれば以後自重します。
お前はともかく俺はチキンレースがしたいわけじゃないんだ
自重しとけ
解析の力試しじゃなくプログラミングの力試しなら題材間違ってると思う
ん? そうか?
俺はそうは思わないけど。 好きな題材の方が問題の対処能力は上がるだろ。
自分で解析したいほど好きではないんじゃね
ゲームの解析は色々とやったけど、アセンブラからC言語にするのは色々と大変だな。
データの構造体をCで都合の良いように作り直す事が多い。
func()やswitchで対応できないケースもしばしば出てくるので。
スーマリ全部Cにするのはかなり大変そう、ベタで半年仕事じゃないかな。
支離滅裂カシオン
凄いと思われる仕事がしたい・・・
元々良く出来たPCEのグラディウス弄って何が楽しいんだか
そして全く需要もない
逆アセするならFFだろうな
天才プログラマのテクニックを盗み取れ
一生を費やすことになるかもしれんが
インドの方が組んだやつが難解すぎて解けないってのはFFだっけ?
一連のナーシャ作品を見ると、彼のファミコンでのプログラムは
既にAPPLE][で6502自体を使い尽くしていたので
PPU周りの活用に重きを置いていたんじゃないかと思う
FF1の最後のTHE ENDの文字で疑似ビットマップ処理を実装したりとか
ドラクエに対抗して徹底的にグラフィック指向にしたとかいうけど
ナーシャの存在に因るところが大きいと思う
でも大半は15パズルみたいにナーシャの暴走による勝手な実装だったりしてw
バグ多くね?
584 :
名前は開発中のものです。:2010/12/10(金) 03:11:56 ID:nzG0PJWG
585 :
名前は開発中のものです。:2010/12/10(金) 04:41:23 ID:a6ZNbjsA
金銭の提供とか変だと思ったら
そこってハックロムやコピー品を販売してるわ。
メーカーの著作権ばかりかここのコミュニティーにも
迷惑を掛ける犯罪行為なのでスルーして下さい。
586 :
名前は開発中のものです。:2010/12/10(金) 14:40:50 ID:nzG0PJWG
>584
なるほど・・解決しました。
新年初カキコ。
今年も元気にアセンブラに取り組みたいのが抱負だね。
OH!スバラシー
x64で動かなかったのでイチイチVPC使ってました
Solsticeとかで発音してる音って普通にFamiTrackerでも作れますかね?
サンプリングやDPCMみたいなやつってどう鳴らしたらいいんでしょうか?
solsticeはDPCM使ってなかったと思うけど
データ量の問題で敢えてDPCMは使わずに
1BitサンプリングをPSGで鳴らしてる場合が結構あるしね
>593
ファミコンのゲームでありましたっけ。
それともマーク3などのPSGPCMのこととか。
595 :
名前は開発中のものです。:2011/02/26(土) 23:32:59.47 ID:+EggAFA+
最初期容量(24kb)でシューティングを作っているのですが、
感想をもらえるとうれしいです。
http://cblk.web.fc2.com/nesfeder.zip 作りかけのままで失礼ですが、これからは
ステージを作っていこうと思っています。
BGパレットがめちゃくちゃですが
そのうち解決したいです。
ちなみに趣味としてちょこちょこ作ってたら、
もう1年も経ってましたw
596 :
名前は開発中のものです。:2011/02/26(土) 23:34:39.19 ID:+EggAFA+
背景によってはステータスが見えにくいから、白文字に黒い影にした方が良さそう。
更にステータスのスプライトを1フレーム単位で交互に表示しているのを、
ゆっくりにした方が良さそう。
高速点滅させると擬似半透明化して薄く見えてしまうけど、
低速点滅だと表示されてる間ははっきり認識出来る仕組み。
ゲームについては、最初は敵本体と敵の弾の速度を今の1/2くらいにしても良さそう。
。
ショットはBボタンにしてほしい
砲台はこわせるようにしてほしい
定期的にボスを出してほしい
ReadMe的なものがないのでどれが未完成でどれがバグなのかよくわからない
601 :
名前は開発中のものです。:2011/02/27(日) 16:29:22.14 ID:RQRk8aBC
なるほど…
いままで、構造が1パターンだったので、
ボスなどを作ってみようと思いました。
それからステータスも見にくいので、
改善しようと思います。
ステータスですが、本当はラスタースクロールで
BG表示を試みましたが、うまくいかずスプライト表示。
さらに横並び制限で点滅。
いろいろと指摘してくださり、参考になりました。
ありがとうございます!
>>595 第一印象はゼビウスっぽいと思ったw
二人同時プレイがいいねぇ。攻撃が激しくなるとスプライト的に辛そうだけど。
画像はこれから変わるのかもしれないけど、背景は少し暗めにするか、グラデーションにしてチラつきを減らすと敵の弾が見やすくなるかも。
Bボタンショットで、Aボタンで対地攻撃にするとさらにゼb…ん?スプライトに対地攻撃の照準があるね。実装予定かな?
ショットのパワーアップがあるなら | | を ||| にするみたいに、見てわかるようになるといいなぁ。
GAME OVER等の文字が点滅せず欠けてる。
604 :
名前は開発中のものです。:2011/03/01(火) 14:33:23.60 ID:wo9m9Mxh
やはりスプライトがキツイので、
敵の数を増やすのではなく、強くしていこうと思います。
605 :
名前は開発中のものです。:2011/03/02(水) 23:01:10.42 ID:7G0D5KdX
>>604 の者です。
ラスタースクロールを使ったスコア表示に挑戦しています。
0爆弾は成功したのですが、Y座標の更新がうまく反映できません。
X座標はうまくいくのですが、誰か教えてくれるとうれしいです。
2chに頼ってしまってすいません。
>>605 Y座標の画面表示中変更は$2005のスクロールレジスタだけ
では不可能なので、$2006も書かないといけません。
ステータス表示をやるなら、上側でやるより下側でやると
$2006を書くだけで済むので簡単だよ。
(烈火などのようなスコア表示)
>>606 デビルワールドのように上下両方表示で縦スムーズスクロールって可能?
>>607 可能だよー。
とりあえず例だけ。
3分割なので2回スクロール値を変える必要があるけど、
1回目のスクロール値指定でこれをやる。
lda $2002 ; 2度書きレジスタリセット
lda #ページ選択など
sta $2000 ; $2006なら2回書く
lda #X座標
ldx #Y座標
ldy #((Y座標<<2) & $E0)|(X座標
>>3)
sta $2005
stx $2005
sta $2005
sty $2006
609 :
名前は開発中のものです。:2011/03/04(金) 17:13:37.16 ID:jPGtTARS
うまくいきました、ありがとうございます!
そういえば、Yスクロールして
下にスコア表示があるゲーム多いですね。(マリオ3とかカービィ等)
とても、高い完成度です!うらやましいです。
とくに、玉の座標の移動が、様々な角度に移動しているところが!
数学が得意でない私は、縦横か、X+1,Y+1などの斜め移動しかできないです。
自分もがんばりたいっす。
>>608 ラスタースクロールで散々悩んでいたのが解決しました。ありがとうございます。
ただやり方は分かったものの理屈が気になる。
the skinny on nes scrollingを読むとY座標の値はスキャンライン開始時に
読み込まれないみたいだが、どうしてこういう仕様になったんだろう。
$2006(の2回目)では全部読み込めるのなら毎回全部読んでもよさそうなものだが。
>>611 詳しくは loopy-2005.txt を読んだ方がわかりやすいかも。
初期の頃はこれがわかってなかったから、ディスク版ゼルダ
みたいに縦スクロール時カク付いてたのかなーとか。
613 :
611:2011/03/07(月) 02:28:05.00 ID:rvld/IIa
>612
loopy-2005.txtってのはthe skinny on nes scrollingと同じ文書みたいですね。
なんで2005→2006と書かなきゃいけないのかはわかったけれど
どうしてそんな変な仕組みになっているのかが分からなくて。
614 :
608:2011/03/07(月) 05:15:29.14 ID:pR0zl8o+
>>613 回路をケチっただけかもしれんし、どうしてかそうしたかは
作った人しかわからんのじゃないかなぁ…。
ソフトウェア的に2度書きのメリットって思い付かないし、多分回路ケチってる気がした。
0x2000〜0x2007 と言う事はつまり、PPU内部には3bitのレジスター用アドレスデコーダーがある。
そして基板回路図見たら確かにPPUからはレジスター用の入力ピン (アドレスバス) が3本だけ出てた。
→ もし2度書きレジスターを個別にすると、中途半端に4bitのアドレスデコーダーと4本の入力ピンが必要になる。
大抵ペアで書くと想定されるレジスター同士を2度書きレジスターとしてまとめてでも3bitに収めた方が、コストダウン出来るのかな?
当時だと回路規模とかパッケージの問題も考えられそうね。
元々定価1万円以内で開発してた名残じゃないかな
結局1万円じゃ収まらなかったけど
618 :
611:2011/03/09(水) 23:56:47.54 ID:BVg4P99x
あ、二度書きの事じゃなくて、1ラインごとにXの値だけでなくYも
2005から読み込んでれば2005→2005→2005→2006なんて面倒な
書き方をせずに済んだんじゃないかなってことを言いたかったんだけど、
自己解決しました。
それだとXスクロールだけしたいときでもラインが進むごとにYの値を
進めてかなきゃいけなくて凄くめんどくさいことになる。
MMC3のIRQ割り込みって、
何か特別な初期化など必要ですか?
G-NES、FCEUXなんかだと、動いているように見えるんですが、
Nintendulator、NestopiaだとIRQ割り込みすらしてくれない。
自己解決。
コントロールレジスタの
パターンアドレス指定をBGとスプライトで
同じアドレスを指定していただけでした。
おもしろかったよー
悪魔城とかロックマンの分割ぽい縦スクとか
たまたまこのスレ覗いてるレベルの俺にはパンチアウトは理解出来んかったw
最後のドラクエ4の船のアイデアが凄いわ
伝説のクソゲーことチーターマン2くらいは作ってみたいものだ
>>621でFF1のTheEndが取り上げられてないのが残念…
あれはBGとスプライトの使い分け関係ないじゃん
>>621 こういうのって、良いねえ。
手品の種明かしを見てるみたいで。
BGとスプライトの使い分け関係ないけど
QIXとプリンスオブペルシャのテクニックはすげぇと思った
BGの下にスプライトが隠れるのは
地道にプログラムしてるのかと思うと泣けてくる
フラグ1つ変更すればBGの後ろに表示される
それをわかった上でそのフラグ管理を個別にキチンとしていることを言ってるのでは?
それだと泣けてくる理由がわからない
設定はBG一律に対してだから、壁とか柱とか常に監視して
重なるBGの種類に合わせて随時切り替えなければならない
スターソルジャーで白い星の上に、BGスクロールの壁、
その上に自機や敵や玉、場合によっては壁の下に潜る自機かなあ
スクロールが一定の速度だからまだ管理しやすいのか
スプライト単位で指定できるから
星は常時BGより背面で固定、敵や弾はBGより前面で固定
フラグ管理しているのは自機だけだね
>>635 知ってるって
そんなのアタリ判定で体力ゲージ減らす処理と大差ない
うむ、言われてみればそうだなあ
飛び跳ねるアイテムがBGとか変態だわ…
これアイテムの位置ごとに別の背景キャラを用意して
毎フレーム書き換えてるわけ?
スプライト発明後しか知らない人には珍しいのだろうね
あー、スプライトの発明か。その辺の話も知りたいなあ
あとスプライトなしでキャラクタベースでキャラクタ書き換えのみってのも見たことない
始めて見たゲームだが、音楽も凝ってるな
なんか勘違いしてるな。PCGの概念も理解してないくせにBGって単語使いたいだけだろ。
いや、勘違いでした。申し訳ないです。
>>646 全画面別キャラ出すのってMMC5でできるのか。
ちょっとこの休みに勉強してみようかな。
>>650 スプライトなし、スクロールもなしか…。
グラフィックって機械ごとに特色あって面白いなあ。
BG書き換えがすごい言われ方してるけど
単に88や98でゲーム作る時の手法でしょw
このスレだとBGとグラフィック面は同じ扱いなの?
わかってないのに知ったかしてる人が居るからな
PCGとBGは時代やスペックが違うだけで全く同じものだというのに
普通はビットマップスクリーンがグラフィック面
一部のPCのみテキストプレーン3枚で合成って言うだけで
実質これはビットマップスクリーン
潤沢なメモリが使えない当時のもので
ビットマップとか以前の設計でしょ
BGの(テーブルでなくて)パターン書き換えは座標計算負荷が高くなるから
その点でP-MANは無茶してるな
メモリの問題はかなり重要だったけど
速度面でも有利だったからね
PC98、88オンリーの知識じゃ話かみ合わんがなw
別に面白いゲームを移植してもらえないマイナー機を使ってたなんて自慢しなくてもいいよ。
646です。あげますでなく、上げますです。
どせいさん見たいな言葉遣いになってしまった。
>651さまへ
PPUのレジスタで1フレーム分非表示にしている間に
BGを書き換えているのでMMC5以外でもきますよ。
>>659 別に持ってなくても、知ってる人もいるよ。
おめえが勉強不足の情弱なだけに見える。
ノイズの波形の式がわからない。
擬似乱数を、一定カウント毎に更新して、
擬似乱数の最上位ビットを一定数で乗算したのを
波形にしてるんだけど、ノイズというより矩形波に近い
音が出てしまう。
>>663 それはファミコンプログラムと言うよりエミュな話では?
Nesterあたりのソースを見れば早いよ。 Real Time Noise って書いてある所。
おお、エミュレータのオープンソースなのがあるのか。
ありがとう
>>661 なんだ、知ってるだけで実際には使ったことは無いのか。
口汚く罵る事は知っていても、実戦せずに知っているだけの知識を得る作業は勉強ではないと知らないんだね。
可哀相に。
自分以外がすべて敵に思えるらしいw
なんて言うんだっけこういうの
ROMカートリッジを作るとかは別のスレになるのかぃ?
リバース落としました。
おもしろいです。
>>668 少なくともここじゃないが該当する板は分からん
ぶっちゃけ他に適切な板があるとも思えんし
スレ違い覚悟でここに書くしかない気がする
まあ「カートリッジを作るにあたってのマッパーの扱い」
とかに絞ればプログラミングも関わってくるけど
あんまり細分化しすぎてもなあ…
最近このスレ見るようになったけど、数名は住人がいるようで嬉しいよ。
俺、ファミコンの色とか音色とか大好きなんだよね。
virtuanesをVS2010でビルドすると、
m_CheatCode.erase( &m_CheatCode[no] );
という行に対して、
error C2664: 'std::_Vector_iterator<_Myvec> std::vector<_Ty>::erase(std::_Vector_const_iterator<_Myvec>)' : 1 番目の引数を 'CHEATCODE *' から 'std::_Vector_const_iterator<_Myvec>' に変換できません。(新しい機能 ; ヘルプを参照)
みたいなエラーが出るんだけど、何がダメなのか教えてくだせえ。
そして、この場合どう修正するのが正しいのか。
コメントアウトすれば特に問題無く動くんだけど。
それはファミコンのプログラムじゃなくね?
>>673 サンクス。何かウンコだらけのスレだけど除いてみるよw
>>675 C++の言語仕様の話だけど、じゃあどこで聞けば良いのかと
エミュレータかよ
製作者のBBSにでも質問して笑われてなさい
vectorのiteratorはポインタであると仮定してるから処理系によっては通らないんだろう
つかム板池
YY-CHRがあまりにも使いづらくて使い方わかんないし、
作った本人が簡単だとか言ってるのにそれでもわかんないから作ってみた。
http://grgsiberia.web.fc2.com/python/tool/niefp.zip 簡単に言うと、PNGからNES用のスプライトやBGなどを吐き出すPythonスクリプト。
EDGEと連携出来たら楽だろうな、と思って作った。
EDGEで出力したPNGやパレットであれば確実に対応してるんじゃないかと思う。
詳しい使い方などはreadme.htmlで。
あと、Python2.6以降じゃないと動かないけど、Pythonは便利だから入れといて損はないよ。
まあファミコンのアーキテクチャーを根本的に理解できてないから
わからないのだろうねw
分かってることとツールが使いやすいかどうかは別
YY-CHRは相当分かりづらいツールだし
コピペするにも2つ立ち上げるとか変則な方法が必要
使い慣れたツールを使えるならそれが一番だわな
俺もEdgeとPlatinumを使うためにそれぞれコンバータ作ったわ
yy-chrはパレットの扱い方が理解できるかで使い勝手が変わるな。
コピペは単体でもできるし、Edgeとかの他のソフトともできる。2つ立ち上げる必要はなくね?
>BGパターンテーブルは$0000から、スプライトパターンテーブルは$1000からなのね
とか言ってるくらいだから全然理解してないでしょ
>>681 最近、NESASMやり始めたばかりだけど、
それでもあの使いづらさは異常だと思うよ。
お絵かきソフトが普通にできることができないってのは苦痛。
>>684 できればギコ猫のサンプルを普通に表示する方法を教えて欲しいです。
この段階で3時間もかけてどうしてもわからないので諦めました。
687 :
684:2011/05/10(火) 02:50:38.62 ID:8v8HWfqX
>>686 まずNASMに通すpal(インデックス)と一般的なpalファイル(RGB)は違うのを理解して欲しい。
YY-CHRはpalファイルを自動で読もうとするけど、RGB形式で読み込むので、palからリネームが必要。
だけど、拡張子datにしとけばインデックスとしてのパレットとして読み込むので…
@ギコ猫のサンプルにpalファイルがあったらとりあえず拡張子をdatに直す。
AYY-CHRでbkgかsprファイルを開く。
B画像形式を「2BPP NES」に合わせる。この時点で画像が表示できる。
C必要ならDATパレット(右側中段のパレット)を選択する。これで目的のパレットで画像が表示される。
以上。
bkgやsprをchrやnesにリネームしたらBの手順も飛ばせるので、ファイルを開くだけで読み込みから表示まで完了した状態になる。
YY-CHRのnetのほう使ってるのかね?
netのほうはまだ使用に耐えないかもな。
C++のほうが現状では完成度は高い。
それでパレットセットを有効にすればやりたいことができるかもしれない。
>>687 うわぁ……thx……。
こりゃあガチでわからない……。
>>688 普通にC++版のはず。
とりあえず読み込み・書き込みまではできたので普通には使えてる。
yychrはペイントで書いた絵をコピペしてバイナリにするのにしか使ってないなあ
あと背景並べてみる機能は便利そう
キーオフの長さとレジスタの値の関係がよくわからんな。
長さがダブってる値もあるし。
692 :
名前は開発中のものです。:2011/06/02(木) 23:25:50.04 ID:derAo68s
質問すみません。
YYCHRで作成したキャラクタをプログラムで指定する際はどのようにすればよいのでしょうか
具体的にはギコ猫さんの所でgiko005.asmでコンパイルしたら、顔だけの部分を自作で適当な胴体を付けたいということです。
>>692 スプライトの事かな?
8x16のスプライトを使うといいかも
それと、コンパイルじゃなくて、アセンブラだから、アセンブルというよ
sta $2004
>>692 NESファイルの構造を知らない→iNESヘッダ を学び、NESファイルの構造を学ぶ
nesasmの.incbin文を知らない→それを学ぶ
960byte+64byte==1kb==$400byteをネームテーブルに書き込むやり方を
教えてください。
696 :
名前は開発中のものです。:2011/06/04(土) 16:52:17.95 ID:kkzItymk
たしか、$2000〜がネームテーブル
PPUだから、CPUから直接書き込めません。
IOポート$2006,$2007を使って書き込みます。
lda (上位8bit)
sta $2006
lda (下位8bit)
sta $2006
lda (書き込む数値)
sta $2007
こんな感じで
Cから入ったんならそうだろアスペか?
ファミコンのCってどんな感じ?
GBのはインテジャーが8ビットで萎えたw
8bit CPUなんだから、よほど特殊な事情がない限り、整数も8bitで扱う癖を付けた方がいいよ。
メモリの無駄。消費クロックの無駄。メモリ1バイトは血の一滴。特にゼロページは無駄にしたら目が潰れる。
C言語で作るのも意欲的だと思うのでいいと思う。
C言語でプログラムを作るのがどのになるのか、おもしろい方向に
発展して欲しいと思う。
ぶっちゃけ、処理の仕方自体はあんまりかわらない。
石ごとにニモニック覚えんで済むという以外で、あんまりメリットないのよね。
制限きついから、どうせ対象となる石に依存しきった記述しなけりゃならないし。
糞真面目にCだけで処理書いてたら、転送速度間に合わなかったりするし。
だもんだから、無駄を許容出来る部分ではCを使うと楽になる部分がないこともない、という程度でしかない。
コンパイラが吐きだしてくるコードを眺めてると、自然と、こう、手直ししたくてたまらない気分になってくる。
C使うならそれなりに使えるメモリにも速度的にも(ついでにレジスタ本数的にも)余裕がある16bit CPUからがいい。
703 :
名前は開発中のものです。:2011/06/06(月) 16:13:19.03 ID:Oa9bfVz8
>>696 それはギコ猫さんでのgiko017.asmの253行目の
lda #$3
もしくは258行目の
and #8
のどちらかが該当するということでしょうか。
いろいろためしてみます。ありがとうございました。
>>694 iNESヘッダや.incbin文について解説されているサイトをご存知ないでしょうか。
言語は英語でも大丈夫です。
705 :
名前は開発中のものです。:2011/06/06(月) 22:39:28.65 ID:jjMKLWTE
>>704 ありがとうございます。参考になりますので、勉強させていただきます。
それと申し訳ございませんが
8x16のスプライトの指定の仕方を伺いたいのですが、どのようにすればよいのでしょうか。
>>703のやり方ではできませんでした。
inesヘッダーの仕様すら自分で見つけられんようじゃなあ…
707 :
名前は開発中のものです。:2011/06/06(月) 23:34:53.67 ID:jjMKLWTE
>>706未熟者で大変ご申し訳ございません。
しばらく、nesdevにある仕様書等をすべて読んできます。
8*16のスプライト指定は、 lda #%00*00000などのように、
1バイトの二進数で右から6個めのビット(*のついている部分)を1で指定します。
そして、その値をsta $2000とすればOKです。
ちなみに、6個目以外のビットもPPUの動作などを指定しているビットですから
これからゆっくり覚えてゆくとよいのではないでしょうか。
710 :
名前は開発中のものです。:2011/06/07(火) 19:23:07.65 ID:OiB+Zvrc
各スプライトごとに設定できたら良かったのに
なんだゆとりか
712 :
名前は開発中のものです。:2011/06/08(水) 22:31:02.95 ID:o9YZ1MtB
ハード的にそうもいかないのかな…
713 :
名前は開発中のものです。:2011/06/08(水) 22:44:05.82 ID:o9YZ1MtB
シューティングを作ってるのですが、
弾は8x8で自機は16x16だから、8x8モードで作ってます。
だけど、スプライト量オーバーでちらつきが…
でも、スプライトダブラーを使いこなせればマシになるかも
妄想中にすまんがファミコンでダブラは実用的じゃないよ
言葉覚えたてで使ってる程度なんだろうけど
STGじゃ速度的にまあ無理だな
あまり激しく動かないようなものなら2倍くらいならいけるけど
アクション性が高いゲームならチラツキ表示位が限度
716 :
名前は開発中のものです。:2011/06/09(木) 02:56:30.03 ID:ZNyOPZa+
それ違法だからね
無知は免罪符にならないからもうちょっと勉強したほうがいいよいろいろと
Yah○○知恵ヲクレのノリで
自分で考えないで馴れ合ってれば質問が解決できると思ってる
ゆとり野郎へ
C言語すらやったことない基礎力の無さで
知ったかぶって、メーカーの一握りのプロフェッショナルにしか使えない高等技術で目の前の問題を解決しようとするなよ
質問の仕方がめちゃくちゃ
.incbin分からない時点でこのスレじゃ戦力外
ゆっくりC言語と、資格試験の基本情報技術者の勉強をしてこい
ちゃんと基礎力つければ、今のお前の疑問は簡単に自己解決できるようになる
その方が遠回りのようで近道だ
719 :
名前は開発中のものです。:2011/06/09(木) 22:19:24.70 ID:xU0DCCre
>>718 「メーカーの一握りのプロフェッショナルにしか使えない高等技術」ってやつに
非常に興味があるな。
そろそろ、まとめサイトがあればいいのかも。
と思ったりします。言いだしっぺだけど。
722 :
名前は開発中のものです。:2011/06/10(金) 21:04:39.90 ID:L/dg/kr8
>>718 もしかしたら…
スプライトダブラを持ちかけたのは私ですが、
incbinの質問をした人とは別人です。
紛らわしかったかもしれません。
incbinは、指定したファイルを読み込み、
現在のアドレスから書き込んでくれます。
説明ヘタかもしれませんが、
.incbin "test.bin"
(test.binの内容:00 01 02 03)
と
.db $00,$01,$02,$03
は同じものだと考えれば一応OK
ファミコンスレッドをもっと明るい話題でもってこうぜ
>>721 まとめサイトよろしくぅ
遅ればせながら8*16スプライトモードの補足を忘れてました。
スプライトのタイルのPPUアドレスを$0000、BGのタイルのPPUアドレスを$1000
に設定しないと8*16モードが反映されません。
設定方法はスプライトをモードを指定したsta $2000と同く、
lda #%***ab*** とa,bと、印の付いてるビットを指定操作して、
sta $2000 とします(*の記号は他にPPUを制御するビットを表現)
*aはBGのアドレス設定のビットです。
BGのアドレスを、0で$0000,1で$1000のアドレスに設定します。
*bはスプライトのアドレス設定ビットです。
スプライトアドレスを、0で$0000,1で$1000のアドレスに設定します。
8*16モードのときは aの部分を1 bの部分を0 に設定します。
またyy-chaでキャラクタを作成のとき、スプライトの256個のタイルを先に置き、
次にBG向けのタイルを256個を置きます。
目安はyy-chaの左側にある、タイル一覧です。
一度に表示されるタイル数が256なので、256のタイルを目安にして1ページと
して、右のバーを一番下まで引き落とすと、BG用の2ページ目となります。
>>723 wikiで作れたらいいなという妄想なんです。(´・ω・`)
あったら便利ですものね(`・ω・´)
725 :
名前は開発中のものです。:2011/06/11(土) 01:37:09.28 ID:mwwXcWkS
即削除。(´・ω・`)
727 :
名前は開発中のものです。:2011/06/11(土) 09:22:42.74 ID:mwwXcWkS
動画の設定を間違えて投稿したので、すぐ削除しました。
ただいまエンコード中…
728 :
名前は開発中のものです。:2011/06/11(土) 11:36:00.69 ID:mwwXcWkS
724
>スプライトのタイルのPPUアドレスを$0000、BGのタイルのPPUアドレスを$1000
そんな条件はないずらよ。
730 :
名前は開発中のものです。:2011/06/11(土) 23:02:22.10 ID:mwwXcWkS
>>729 オレも変だなと思ってたw
ってか説明も下手くそだよな
そうでしたっけ。勘違いでしたね。
後、いやぁ、説明へたですみません。
文章の練習してきます・・・・。
おお、私のちょっとしたつぶやきを具体化してくださったとは。
まとめwikiをつくっていただいたと張りがたいことです。
>>730 おおー乙ですー
いろいろ書きたいことはあるんで暇を見つけて書きたいな
>>730 乙ですー
自作ゲーム置き場もあるんですね。
こういうのって勝手に自作ゲーム置いても良いものなんすかね?
736 :
名前は開発中のものです。:2011/06/14(火) 21:28:18.75 ID:Wwg17utS
>>736 wikiて編集は自由なんですね。
見るばかりで編集ルールとか気にした事なかったので知りませんでした。
ありがとうございます。
wiki支援て事で自作ゲームをupしてみました。
バグだらけの迷路ゲームですが、一応クリアはできます。
wikiにどんどん自作ゲームが増えると良いですね。
Wikiのリンク集にちょっと書いてみた
実は俺の愛用エミュでも動かなかった。
動くエミュの方が多いから黙ってた。
何年も開発が停まってるVirtuaNESなんかで動作確認だけはやめような
それだと実機でまず動かないから
音源の再現性が高いとかいわれてるけど単にデフォルトの音質設定が
高品質で設定されてるだけだし
以前
>>662の中見た記憶だけど
NMI使わず、$2002のreadでゲームループ作ってて
PPU書き込み作法めちゃくちゃだった
動かなくて当然
確かにそんなに正確ではないけど
VirtuaNESで動かないなら相当ヤバイ
でももし実機で動いたら動く方が正しいんだよな。
実機で2002のリードでVSYNC待ちループ作ると、
2002のリード中にVSYNCが着ても衝突でクリアされてしまい、
毎秒60回抜ける筈が、45回くらいしか抜けなくなるんだよね。
NMIルーチンって、割り込み禁止・許可か、レジスタ退避・復帰で囲むようにしなくても安全かね?
なんか、昔、割り込みルーチンを書くときに、自分で割り込み禁止に設定したような記憶があるんだけど。
ハンドラ内で使用するレジスタの退避復帰は当然要るな。
他の割り込みをマスクするかは自由っしょ、
スタックを浅くしたい為に他の割り込みが多重化しないように抑制する場合もある。
そういやポーリングでvsync待ちしてるタイトルってあったのかな
素人がプログラムできる環境じゃねえから
749 :
名前は開発中のものです。:2011/07/08(金) 18:15:56.41 ID:uG0IBAE+
スレ違いかもしれませんが、失礼いたします。
yychrで作成したキャラクタをアセンブラで指定する際は
どのように指定すればよいのでしょうか。
え
ゆとりは100レス前も読めない
>>747 亀だが。
メインループをVsync割り込みルーチンの外に置いて、帰線期間中かどうかのフラグだけVsync割り込みルーチン内で立てて、
そのフラグを見て、メインループ側からグラフィックを描画する、PCで言うところの可変フレームレートみたいな実装のこと?
それなら、マイクロニクスが下請けした作品(例えば、カプンコが販売した1942とか魔界村)は、確かそんな感じの実装だったはず。
だから、ここの開発作品は、フレームレートやスクロールにムラがあるというか、要するにガクガクしてる。
マイクロニクスが下請けして作った奴(カプコンのアーケード移植モノ)とか、確かそういう実装だったハズ。
ポーリングつっても、単にVsyncを検出して、そこで描画するというだけなので、PCの可変フレームレートのゲームみたいに画面が波打ってる。
753 :
752:2011/07/09(土) 14:49:27.79 ID:srxnGWiC
ごめん、なんか下書きまで一緒に書きこんでしまった。
スレチだと思いますが、ファミコンのソフトって、当時どんな機材で開発されてたんでしょうか?
やはり出始めのPC-98あたりですか?
ファミリーベーシックとファミコン
回路図も紙に手書き。
ノートに書かれたコードをガリガリと書いていく。まずはアルゴリズムレベルで破綻していないかどうか精査。
大丈夫そうならリストをハンドアセンブルしていく。キャラクタも方眼紙に手書きして、16進表記へ手書きで変換。
ファミコンでの動作テストに移るためにSレコードフォーマットに変換しながら打ち込む。打ち込んだものはデータレコーダで保存しておく。
MZ-700のプリンタポートに繋がれた、基盤むき出しな手作り臭漂うライタでROM焼き。
わりと酷使される殺菌灯とタイマをくっつけた手作りイレーサ。
半泣きでROMライタとテスト基盤の間を抜き差ししてまわるデバッグ期間。
繰り返しているうちにライタへROM逆差し。こんな事もあろうかと、と取り出した予備のROMも逆差しして士気崩壊。
作業中うっかりこぼしたせいで持ち込み禁止になったUCC缶コーヒーとカップスター。
なんてこたぁない。全部俺の根拠レスな妄想。
>>757 一生懸命想像しながら読んだ俺に謝れよ(´・ω・`)カス
皆さん、アセンブラは何を使用されてます?
今でもNESASMが定番なんでしょうか。
761 :
名前は開発中のものです。:2011/08/06(土) 16:38:50.63 ID:l3JzaYIg
cc65付属のアセンブラに、NESASMの.bankに対応するものある?
今使ってるPCを25年前の俺に渡したくて仕方がない。
今書き込んでいるのが25年前の俺自身かも。
>>762 苦労したみたいだな、よければ当時の惨状を聞かせてくれないか?
767 :
名前は開発中のものです。:2011/08/20(土) 22:46:13.36 ID:qwhhZo9X
今使ってるPCを過去の自分に見せたら
未来に自分のやってることがいかに下らないかわかって
ゲーム作りたくなくなる
今のFPSとかをファミコンやってるころ見たらもうファミコンなんか出来ない
日本語でおk
FPS
ファミコン
ベクトル全然違うもん並べてる時点でお察し
>>767 残念
高性能なPCを送ったとしてもその時代に今のゲームはない
つか今やってもファミコンは面白いよ
771 :
名前は開発中のものです。:2011/08/21(日) 02:38:13.86 ID:JDIcjB+K
>>771 デモっていかにそれっぽく見せるかだから馬鹿正直にテクスチャで回転なんかさせないよ
見た感じではBGをラスターで縦伸縮して両脇の箱の縁はスプライトの移動でってところかな
実物見てきた もっと単純で全パターン用意して切り替えただけのアニメだった
それでもファミコンとしてはスゴイ技術なんだけどね
ファミコンにはDPCMがあるやん
市販というか勝手に作ったROMだと実機でも64MBitくらいまでのものもあるから
垂れ流してるだけじゃ
>ワンダースワンのFF4は画面歪ませて立体演出
まあファミコンでもこれは出来るだろうな
ファミコンにAIRのOP移植で鳥の詩PCMで流してたのあったな
>>1 wsのff4は見たことないけどラスターを間引くってこと?
そういうレースゲームがファミコンにもたくさんありますね。
Vサインしてる箱の回転アニメは
アニメパターンはすべて画像としてBATに転送してあってチップのアトリビュートを
転送してアニメしてるんじゃないだろか。
この処理速度で計算してテクスチャを表示するなんてファミコンには不可能。
アニメは全部BATを書き換えてやってるんでしょう。
ファミコンはマッパーによっては画像をVRAM転送するまでもなくロム切り替えで
VRAMから見えるから絵の転送時間はかからない。PCEやメガドラでは出来ない芸当。
>>775 それの絵のバージョンが
>>771なんでしょう。
音を鳴らすには
・波形データを直にDPCMへ。ざらつく。容量巨大に
・レジスタに直にログデータ。デモでよく使われる手法。容量大きくなる。
・MMLを内部で処理して音楽を流す。プログラム的に難易度が高くなる。容量節約。
市販ゲームからパクったMML処理プログラムとか組み込んで何か作ろうとしたけど
ダメでした。FCはゲームを作るにもデモを作るにも難易度が高すぎる。
>>778 何年か前にAIRデモのソース見たけど
レジスタ直接にログデータでした。
DB $FE,$10,$15.......みたいなのをPSGのレジスタに流し込む
>>779 ネームテーブル見れば一発でわかるっての
アクスレイかよ
一応凸型に湾曲してるように見えるけど、
わざわざ平面に戻そうとするからその時は凹型に見えるな
このFF4って画面上下別々にラスタースクロール処理してんの?
言ってる意味が分かるけど分からないフリをしてやると
ライン毎のYスクロール値にVLINE-cosを適用してるだけだぞ
787 :
名前は開発中のものです。:2011/10/23(日) 19:29:59.24 ID:81xQfjml
まとめwikiいらない?
要る
そろそろ、何か書き込まんとね。wiki
誰かDPCMのフォーマットについて詳しく教えてくれ
自分でリサーチすらもできない程度の奴が理解できるとは思えません
なんじゃフォーマットって。
アドレスと長さと音程を指定するだけだけど。 サンプルデータの1で+2、0で-2電圧が変化する。
794 :
>>791:2011/12/04(日) 00:35:50.87 ID:2Aubg80L
>>793 フォーマットじゃないな、アルゴリズムか
例えばの話だけどの三角波を出したかったら、
7E 7E 7E 7E 7E 7E 7E 7E 00 00 00 00 00 00 00 00
のデータをループ再生すればいいってこと?
自分でwavファイルから変換するプログラム作って確かめろ
高周波が含まれていると追従できなくなるはず
低めの音だけに限る
ところで最近のこのスレのゆとり住人は
市販ゲームをなぜ調べない?
製品にいくらでもヒントが眠っているだろ
自分でプログラム作る気がないなら
他人のDPCM変換ツールをブラックボックスとして使えよ
796 :
>>791:2011/12/04(日) 03:30:11.97 ID:2Aubg80L
>>795 悪かった
もう一度全ての資料及びゲームのROMデータを調べなおしてみる
>>795 犯罪行為をすすめてんじゃねえよ、ハッカー気取りの糞が。
どこのメーカーも当たり前にやってたけど言葉にして言うもんじゃないよな
法律なんてあったっけ?
ダビングと同じで個人で使用するなら別に問題は無い。
ただし配った地点で犯罪。
リバースエンジニアリングは犯罪(キリッ
って言いたいんじゃないの
そんな法律はないが
805 :
名前は開発中のものです。:2011/12/11(日) 17:35:03.96 ID:jaMIVBp3
嘘吐けこの野郎おまえらなんか違法ダウンロードしまくりだろうが私はやってませんみたいな態度とりやがって
807 :
名前は開発中のものです。:2011/12/11(日) 18:17:41.58 ID:jaMIVBp3
>>806 romカセットを持っている状態で同じデータをどっかからダウンロードしたら違法?
ここは○ジ○ンなんかが出てくるより、5年以上前から自力で吸い出してる人しかいないがな。
この板の他のゆとりスレとは違うんだよ。
ということで
>>794はキチゆとりということで二度と書き込むなよ。
>>730需要なし、ゆとり症の典型コピペ。
>>809 判例が無いから何とも言えない筈だけど?
>>810 著作権法に照らし合わせると黒だったはずだが
自前で吸い出したのならともかく
>>811 だから、その根拠を言ってみてくれ。 絵画に例えてもいいぞ。
ここまでコピペ
つまらんから別スレでやれや
お前らはここをどんなスレにしたいんだよ
>>816 ときどき誰かが自作ソフトを投下してくれるのを哀願して待つ乞食供の巣窟
>>815 俺を待つのはいいけど、そんなにがっつきなさんなw
おじさんこまっちゃうよ
とりあえず、複製権読んで落ち着きなさい
ファイナルファンタジーの飛行艇に影が付いてるのがどうして難しかったんでしょうか
820 :
名前は開発中のものです。:2011/12/17(土) 16:35:16.57 ID:VZSM0cA6
821 :
名前は開発中のものです。:2011/12/17(土) 16:38:06.01 ID:VZSM0cA6
↑のファイルは転載とかご自由にどうぞ
役立たないだろうけど
>>820 fceuで動作しました
車のようなキャラが上下左右に動きました
報告まで
日記はチラシの裏でやってくれ
824 :
うろ覚えだけど:2011/12/18(日) 19:36:54.57 ID:4dl3E88q
>>820 >> mainLoop:
の下
>> lda $2002
>> bpl mainLoop
は要らない。
スプライトやBGに書き込むときは、$2001でそれぞれの表示をオフにすること。
BGのスクロールをリセット。
VBlankから出る前に表示をオン。
>> jmp NOTHINGdown
こういうやりかただと、この先キーの複数同時押しに対応できない予感。
if-elseの構造をよく考えて分岐命令を組み立てること。
825 :
名前は開発中のものです。:2011/12/21(水) 18:32:49.55 ID:hZ3qyhWY
>>824 ありがとうございます。
キー入力は「キー入力からスプライトの変更」ではなく、
「スプライトの分岐にキー入力」と組み込むようにしました。
相変わらず、方向キーに従ってスプライトの向きが変わる所で苦戦しています。
流れとしては、
スプライト初期化の時点でリセット後に表示されるべきスプライトの初期化を行う。
NMI割り込み中に、各キー入力に対応したスプライトの表示や座標の設定、
タイルの選択を行う。
割り込み復帰。
という流れで合っていますよね。
>>825 各タイミングは良好。
VRAMやSPRRAMへの転送は出来ていた。
8x16のスプライトを使ってたのね。
move.spr内のタイルについて
#3, #5はいいけど
#7, #9, #11(, #13)の配置が合理的じゃないね。
奇数番号に配置するのは気持ち悪くないかな。
828 :
名前は開発中のものです。:2011/12/29(木) 17:44:35.60 ID:iN0eE6WX
>>826 ありがとうございます。
タイルは奇数と偶数番号の違いによって起こる弊害がよくわからなかったので、このままにしてあります。
>>820でいっていたように十字キーに合わせた向きにスプライトが変化させようとしています
苦戦しつつもコードを書いてみたのですが、
実際のところアセンブルしても、何も表示されないというどうしたらいいかさっぱりになってしまいました。
PPU制御レジスタのタイミング等も問題無いはずなのに。
ファイル類をupしますが、原因が分かるかたがいらしたら教えていただければ幸いです。
http://www.dotup.org/uploda/www.dotup.org2443609.zip.html ちなみに上記ファイル内の.nesを実行しても白い画面が出るだけです。
スプライトは8x8の4つつなぎで16x16を表示させようとしています。
また、ほかにもコード上の間違いなどありましたらアドバイスをお願いします。
教えて君で失礼しました。
>>828 うわぁ…めちゃくちゃになってる。
G-NESのデバッガやメモリビューアーなど使ってないな?⇒
>>455-458 jsrでサブルーチン呼ぶ方法と(jsrはスタックに復帰アドレスを積む)、
rtsでサブルーチンから復帰する仕組み(rtsはスタックから復帰アドレスを取り出す)、
jmp命令の置き方、
NESASMのラベルやローカルラベルの意味、
理解してないね。
いくらラベルを書いても、CPUは勝手にジャンプしてくれないよ。
ラベルはアセンブラだけが理解するから。
161-164行目
jsr .sprite2
.sprite2
こういうのが全部おかしい。
move3.asmはかなりの修正が必要なので、
古いソースを使うなどソースコードの規模縮小して、
jsrとrtsの実験して挙動を徹底的に理解してからだ。
830 :
名前は開発中のものです。:2012/01/02(月) 13:09:32.77 ID:lSsFyPQm
831 :
名前は開発中のものです。:2012/01/02(月) 17:47:39.54 ID:X3dxf4vn
832 :
名前は開発中のものです。:2012/01/02(月) 19:09:13.80 ID:n94y3PyC
>>830 だけど、解決したかも
少ししたらソース上げます
日記でやってくれ
834 :
名前は開発中のものです。:2012/01/03(火) 01:48:08.06 ID:+lUngSpx
>>834 そんなゴミコードいらん
他人の書いたコードを読むよりも自分でコード書いたほうがはるかに学習できる
つーか、ロダのファイルが流れたらそれまでじゃねえか
いいからお前はブログにでもしこしこ成果を書き連ねておきなさい
そのほうが後でトレースできるだろうが
ここはお前だけのスレじゃねえんだよ
透明あぼーんの機能って便利だな
835が見えない
単に自分のエゴを他人の為という大義名分で隠してるだけだよぉ
>>830 >>G-nes >>わからずじまいでした
日本語エミュのデバッガがわからないなら、基礎力ないね。
甘えるなら見限るよ。
ブレークポイント
ステップ実行
デバッガを自分でいじって使い方を体で覚えろよ。
わからなきゃググる。
数日で流れるアップローダもやめるように。
>>834 >>入力する向きによって移動速度が変わってしまうのはなぜでしょうか
そういうのを特定するのにデバッガを使うわけ。
ブレークポイントを張ってプログラムの実行を止める。
ステップ実行を使って1命令ずつ動かしてレジスタとメモリを観察する。
ブレーク張る該当コードがどのアドレスにあるかわかりにくいので、
.fnsファイルを見るか、
メモリビュアからわかりやすいように目印を入れる⇒db "AAAAAAAAAAA"とかnop nop nop nop nopとか。
move1〜5について
jmp mainLoop(←NMIベクタの示す先)っていうのは99.9%ありえない、sta $4014を繰り返してしまっている。
sta $4014はNMI直後に1回やるだけ。
>>www.dotup.org2463818.zip.html
move2〜5はスタックが崩壊(スタックオーバーフロー)している。
メモリビューアーで$100-&1FF見れば一目瞭然。
こんなのうpられても添削以前にゴミコードと呼ばれるオチ。
迷惑がられてることに気が付かんのか、このチビデブハゲは
スレタイ通りなんだから、こんな流れもいいんじゃね
このスレが
>>839の成長を見守るスレだったのならそれでいいかも知れんが
ここは日記帳じゃないんで、そういうことしたいなら別の場所でやれと
何するスレなんだろう
個人的には応援したいが、
blogやwikiでやってくれた方が、後で同じ事する人の役に立つかもしれんね。
今のようにやってたら、ログは残ってもASMソースは見れなくなるし。
>>839 短期間に何度も「●●を直したからアップロードした。そっちを見てくれ」ってのは、スレの私用と取られてもしかたないよ。
スレには問題で詰まった時、ある程度動くものができた時にでもアップロードするといい。
擁護しているヤツに限って何の知識も持っていないのが笑えるw
私用、私物化ってことか
なるほどね
私は、がんがん発言してくれる人がもっと多く出ないかな、と思っている。
むしろ、私物化してしまうくらいのパワーを持った人が出てこないかと。
ひたすらめげない、純粋な彼は凄い。839氏も。
最後に、俺が言えることは・・.equは=で代用できるということと、
Vblankは2回待つ取りこぼしがなくていい感じということ位です。
あんまり冴えないけど。
しまった,839ではなくて838氏であった。
そりゃ単なるエゴだよ
持たざる側が言っても説得力ないっす
ならおれもゴミとおっさんの思い出話をうpして駄レスで埋めていい?
一応モノはあげてるから私物化しても問題ないんでしょ
まあ、文字通り中身はただのゴミだけどな
暴れてる奴はただの基地外なんだから黙って透明あぼーんにぶちこめばいい
MMC5のサンプルって、もう無いんでしょうか?
今、作ってるんですけど、どうしてもBank切り替えで止まってしまうんで
参考にしたいんですが
855 :
名前は開発中のものです。:2012/01/07(土) 23:16:36.56 ID:K3N5UYpY
>>854 nesdevのフォーラムのどっかにあったような気がする
間違えてたらごめん
止まるってそんなに特別なことしてないだろ
根本的な把握不足じゃね?
PRGのバンク切り替えごときで止まるなら
先にMMC1でもやっとけ
$E000-$FFFFだっけ?をチェンジしたときにどういう構成で.asmに書いておかなきゃならないか
から学習しろ
bank0から3は切り替えられるんだけど
4を切り替えると止まるんです
MMC1とMMC3は、もうやりました
>>858 nintendulator
のデバッガを使ってみたら?
どうせ切り替えた先のバンクに割り込みベクタ書いてないとかいう話でないの?
実行中の領域切り替えるとそれ用の書き方していないと大概暴走するけど
まさかこんな初歩的なことじゃないよね。
どんなレベルの人かわからないから一応書くけど、理解してたらスマン。
単純すぎるミスでした
バンクの数え間違いでした
すいません
いい加減このスレの方向性をきめろ
アセンブラを知ったばかりの初心者の質問にも答えるようなものなのか、
初心者お断りの硬派プログラマーのためのようなものなのか
初心者から玄人までどうぞ。
メトロイドのソースがあったんだけど
これ見たら勉強になるよね?(´・ω・`)
それぞれが節度ある行動をしてくれれば問題ない
そもそも決めたところで出てってくれるのか?
それならID:Gg6iC/E0がいないスレに1票
ここが
>>864の言う通りのスレだと思ってたら
なんか
>>794あたりから荒れだして
一体なにするスレなのかよくわからんってだけ
ちょっとイライラしてたのは謝る
進行遅いんだしなんでもいいんじゃない?
そいつのレベルに合わせて教えるだけ。
最低限試そうともしないで甘えるなら突っぱねる、
それはいつの2ちゃんでも同じ掟だ。
>>794の場合、NesDevの資料読んでないか理解出来てないし、
>>797のソース読んでないのが明らかだったから駆除された。
本当に厳しくいうなら「NESエミュのソース読めば?」
6502の命令の挙動が分からないなら、
6502の資料に乗ってるC言語のサンプルを見る、
x86〜i386、CASLUあたりのアセンブラ関連書籍を見る、
本来の最低ラインだぞ。
そこまで努力するのは大変だから、多少は近道ヒントを出すがな。
ファミコンで3Dワイヤーフレーム表示を実現してるのってElite以外にあったのかな
GBのXとかX68kのスターウォーズとかPC-88のシルフィードとか
個人的にワイヤーフレーム表示は未来を感じさせるから好きだ
ただの擬似ワイヤーフレームです
好きな割に何もわからないのですね
>>872 擬似だろうと本物のワイヤフレームだろうと、
「ワイヤフレーム表示を行う」ことに意味があるのがわかっていないようだなw
意味も意義も無いからな
プレイヤーには内部処理とか全く関係ないからな・・・
意味以前にデザインの問題ならここで語る必要ないよね
夜遅くなってしまいましたが、nsfのmckアプロダにならって
プログラム用のアプロダを設置してみました・・・。
ぜひ使ってみてください。ここなら、しばらくはサンプルを残せるはずです・・・。
ttp://loda.jp/2a03/
どうなんだろうな
このスレにそこまでプログラム等をあげるやつがいるかどうか
作品を出し合うmckスレと違って
デバッガすら使えない底辺層が動きませんって持ってくるだけだからなあ
キチンと作ってるなら自分で公開するだろうし
どんどん出してゆくきっかけが大事だす。
投稿する勇気とプログラムを作り遂げるやる気があれば怖くない!
ろだ乙ー。
折角だから、昔ちょっと思いついてデモを作ったらNNNesterJでしかまともに動かなくて
仕様調べるのめんどくさくてそのままにほったらかしてた物を上げてみる。
ttp://loda.jp/2a03/?id=3 8×12の文字が出るだけ。ゴミが出るけど気にしない。
やっぱりDLしてる人もUPしてる人も少ないね
LODA.JPも終わるみたいだし・・・・
「2a03」じゃ、どっかの音楽サイトみたいじゃん。
よくドラクエを作る時にフォントが足りなかったって聞くけど
後期の作品だとどの作品見てもフォントが足りないようには
見えなかったんだけど、何か解決策が見つかったの?
容量が解決しただけじゃね?
>>887 その辺がよく分からないんだけど
結局グラフィックに割り当てた分、使えなくなるフォントが出るんだから
容量が増えても解決しなくない?
解決なんかしちゃいない。
平仮名は全部使えるが、カタカナは使い回しまくり。
IRQ割り込みをうまく使えば、
なんとかなりそうではあるな。
このスレ的に部外者なら仕方ないが
パターンテーブル見てこないゆとりバカうぜえ
類は友を呼ぶから底辺層隔離した方がいいわマジで
まず
>>891は最高に頭が悪そうだから隔離対象だな
そして誰も居なくなった
このスレってゆとりとおっさんを除いたら
誰もいなくなると思うの
20代後半以前と30代前半以降をオミットするのか?
世代関係なく日記書いたり場をわきまえないカスが叩かれる
いまのところそれが若年層に多く見られるってだけ
まともな奴だっているだろ?いないの?
>>893 ヒント教えてもらっても、礼をいうどころか、こうやって捨て台詞吐いて勉強をやめるのがゆとり。
>>898 ヒントどころかまるで間違った発言がか?www
こうやって自分が間違っていることにすら気付かないで
偉そうに勘違いしているのがゆとり。
ゆとりって何?2ちゃん用語?
な、自分で調べられないド低脳が居着いてるだろ
インダイレクトY(Xも)を使わないと、てっきり960回ネームテーブルに出力できない
と思っていたが、ギコ猫さんのソースを少し改造したやつで
lda #$20
sta $2006
lda #$00
sta $2006
lda #$01 ; 1番(レンガ)
; 120*8=960回出力する
ldx #120 ; Xレジスタ初期化
ldy #8 ; Yレジスタ初期化
.loadNametable2
sta $2007 ; $2007に書き込む
dex
bne .loadNametable2
ldx #112 ; Xレジスタ初期化
dey
bne .loadNametable2
とやれば出来ることが分かった。
よく考えればC言語で2重ループで掛け算の計算できるから当たり前といえば当たり前だが
九九の掛け算ね。
>>904 お前も相当馬鹿なんだな
少なくとも
>>887は正解ではない
>>889が最初の正解
なんでこんなレベルが低いのばかり住み着いちゃったんだか
そりゃ当然、類は友を呼ぶってやつだろうな
なんでみんなそんなにイライラしているの?
CHRRAMは特殊なのを除いて2KしかないからIRQからのバンク切替はできないし
町中とかウインドウ方式だとそもそもライン単位では無理
旧メーカー社員が紛れてるんだろ
腹いせだよ、腹いせ
>>905 解決したとは読み取れないように書いたと思うんだが。
MMC5のデカいフォントのゲームでは
「容量が解決」も間違ってはいない。
>>902 もっと簡単に
sta $2007
をいくつか並べのもアリだよ
ファザナドゥなんかはその会話で使うフォントだけをCHRRAMに転送してるね
一つ一つのメッセージが短く少ないならこういう方法もアリだけど
ドラクエほどメッセージ量が多いと逆にレスポンスが悪くなっちゃう
8bit機は制約が大きいからデザインとプログラミングは不可分だよね
913 :
名前は開発中のものです。:2012/02/11(土) 16:40:46.31 ID:XH8T0Uvm
質問失礼します。
現在シューティングゲームを作ってみているのですが、BGの当たり判定で止まっています。
@ A B C
とブロックがあった場合、スプライトの弾がぶつかったら消滅というコードをくんでいるのですが、
スプライトと違い座標を用いた方法以外で、衝突判定を見る方法はないものでしょうか
ブロックと弾にカウンタを置いて、弾のカウンタとand演算等で分岐をとも思ったのですが、
ブロックの数によっては汎用性がなさそうなので、なにかあれば教えて下さい
>>913 座標を使う以外にやりようはない。
基本は当たり判定を取りたい座標をブロックのサイズで除算。
除算をまじめにやるとしょぼいCPUでは遅いので、ブロックのサイズを
2^nにしてシフトで出来るようにする。
すり抜け対策とかドット単位当たり判定とかは説明がめんどいので
考えてくださいw
915 :
名前は開発中のものです。:2012/02/11(土) 23:11:04.33 ID:XH8T0Uvm
>>914 あぁなるほど徐算でしたか、感覚としては因数分解みたいな感じですね
ありがとうございます。
一応確認なんですが、私は当たり判定ではcmpによるネガティブフラグで判定をしていますが、その調子で大丈夫ですよね
実際に作って確かめてみることが一番でしょう
何事も試行錯誤です
ずいぶんマニュアル人間だな ゆとり教育の弊害か
918 :
名前は開発中のものです。:2012/02/12(日) 00:56:09.91 ID:gUUDEgxL
>>917 インデックスレジスタを用いた擬似的乗徐算を乗徐算と意識していなかったから
と言い訳しておきます
胸張って言い訳する神経が理解できませんが逆ギレみたいなものなのでしょうか?
ちと気になったんだけど除算の除の漢字はわざと間違ってるんかな?
既に知っているやつが居ないかどうか確かめるのはいいことだ。
各人が車輪の再発見をしなきゃいけないなんて無駄もいいとこ。
持ち歌がまたひとつ消えてしまった遠藤
>>912 そういやGBのゼルダがそのやり方っぽいな
というかもしかしてGBはみんなそのやり方なのかな
GBでカタカナに制限があるゲームって見ない気がする
>>923 GBはファミコンでいうCHR-RAMしかないからじゃないかな
カートリッジにCPU側のバスしか出ていない設計だったかと
>>923 キャラクタをROMとして提供したゲーム機はファミコンくらいでしょう。
任天堂ハードにおいても。他ハードは、VRAMに展開する方式だし。
あとはネオジオくらいかな
家庭用って言っていいのかわからんけど
ラスタスクロール割り込みでCHR-ROMバンク切り替えをして256パターン
以上を表示できる仕組み登場したことはおもしろいですわ。ファミコンが
発売された当初は想定されていないことだったでしょうけど。これがあった
から、10近くは持ったのでは?と思っとりますよ。
通信アダプタでもその仕組みはあったよね。
アダプタに16KBのCHR-RAMと漢字ROM(第一水準?)を搭載したおかげで、
標準で日本語表示と4色のフルグラフィック表示に対応してた。
(バンク切り替えのタイミング管理の方法は知らないけど、
多分ハードウェア側で任意のラインでIRQ生成する機能があったと予想)
ゲームソフトがでなかったのが非常に悔やまれる・・・
ディスクシステムを使える機能(?)も結局使われてないし・・・
これを見たとき、ファミコンとディスクシステムとキーボードと通信アダプタが
合体すれば、どんな楽しみ方ができるだろうと妄想してたよ
ラスターでCHRバンク切り替えるだけだと1ラインごとに256パターンしか
出せない気がするんだが、それでどうやって漢字表示してたんだろう
結局キャラクタ自体も書き換える必要があるのかな
ファミコンの解像度は256x240で、
1パターンは8x8ドットで構成されるのだから、
ファミコンの一つの画面上に出せるパターン数は
32(横に並ぶパターン)x30(縦に並ぶパターン)=960パターンとなる。
ファミコンのPPUが一度に参照できるキャラクタは256個までなので、
画面描画中に3回バンク切り替え等の処理をする必要がある。
(大体32、64、128ライン目描画後のH-BLANK時)
漢字自体は、CPU空間に存在するROM・RAMからデータを読み、
I/Oを通して、PPU空間のRAMに書き込む。
画面全体を重複なく別々のキャラクタで敷き詰めておいて
定義側を書き換えて表示させるってことか
最近プログラマじゃない人種が居ついてるな。
お前の言うプログラマってのがデバッガすら使えないで動きませんって言ってるレベルの奴なら
そうなんじゃね?
935 :
名前は開発中のものです。:2012/02/23(木) 22:29:16.92 ID:9OQqfVZC
任天堂が大嫌いで反社会的な行為としてROM基板含めて自作ファミコンソフト作ってるわ
決死隊ですか
>>929
ラグランジュポイントも8K以上のCHR-RAMを積んでいたのかと考えている
あの画像と、日本語フォントは512パターンで生成できなそう。VRC7はMMC5
の如く、Ex-RAMを使って2バイト指定でBGパターンを指定できるみたいなこと
はできなそうだし
ラグランジュポイントは普通の8KiBのCHR-RAM仕様だよ。
文字関係(数字、ステータス表示に使う最小限の英字、ひらがなとカタカナを全文字、その他少々)で、都合約2KiB使ってる。
あとの2KiBが、マップとかのBG側のグラフィック用だけど、不足する場合でも、文字を置いてあるバンクは基本的に温存。
そのかわりスプライトのパターンを2KiBしか使わない。
それで浮かせたCHR-RAM領域を、バンク切り替えでBG側に持ってきて間に合わせてるだけ。
ヴィジュアルシーンのグラフィックとかは、デザインや演出上の工夫で、技術的に特に変わったことはやってない。
939 :
938:2012/02/25(土) 20:03:31.39 ID:Abu3C86F
補足
当然だけど、常に
>>938みたいにスプライトのパターンをケチって間借してるわけじゃなく、
普通にBGとスプライトで4KiBずつ分けあって、単に画面が暗転した際にパタンテーブルを書き換えるとか、
平凡にやりくりしてる状況の方がむしろ大半なので念のため。
941 :
名前は開発中のものです。:2012/02/27(月) 17:29:23.40 ID:d2Rr2gFY
必要もなくモジュール内でJSR/RTSを多用してクロック浪費してるプログラム見ると、無性に書き直したくなってくる。
モジュール化
変換じゃなくて壊す側がおかしくないか?
>>941 ・CrashBlock_Routine:でbcs, bccを使ってるのが敗因。 0<= 弾の中心座標 <8 の論理を構築できてない。
bpl, bmiを使った方が大小関係が直感的に分りやすい。
その際、lda <Bullet_Y_Center → cmp Block001y,x のように不等式で挟まれる側を先にレジスタにロードした方がやりやすいはず。
またadc, sbcと違い、cmp系の前にはclcは必要ない。
・ゲームループがまずく、infinityLoop:内のルーチンの実行回数のフレームレートが一定でない、不安定動作のおそれあり。以下のループが無難。
__ここでNMI有効にせよ__
infinityLoop: ;VBlankを待つ間は無限ループ
jmp infinityLoop
mainLoop: ;メインループ
__ここでNMIを無効にせよ__
;BGとスプライトの表示をOFF
lda #%00000110
sta $2001
lda #$3 ;スプライト描画のためのDMA転送
sta $4014
jsr BlockDisappear ;ブロック消滅;$2006-$2007への書き込みはNMI直後に、VBlankが終わる前になるべく早めに
jsr SetScroll ;スクロールセットもVBlankが終わる前になるべく早めに
;BGとスプライトの表示をON
lda #%00011110
sta $2001
jsr PadGet ;パッド入力チェック
jsr NormalBullet ;弾丸発射
jsr PlayerSpriteMove ;機体の移動
jsr CrashBlock ;ブロックと弾丸の当たり判定
jsr BulletPositionConvert ;弾丸の座標をタイル番号に変換
__ここでNMI有効にせよ__
NMIEnd:
rti
946 :
名前は開発中のものです。:2012/03/22(木) 16:43:43.53 ID:NBlMXw6A
簡単にROM作る方法ない?
947 :
名前は開発中のものです。:2012/03/22(木) 16:44:38.63 ID:NBlMXw6A
簡単にROM作る方法ない?
それは物理的にかい?
949 :
名前は開発中のものです。:2012/03/24(土) 23:29:09.53 ID:pi7aftbx
そう言う感じ
950 :
名前は開発中のものです。:2012/03/25(日) 01:14:37.28 ID:c32Eu5AG
形式判明してるカセット分解して、ROM引っこ抜いて、代わりにソケット取り付けて、ROMライタで焼いた自作ROMを差し込む。
という話じゃなくて?
951 :
名前は開発中のものです。:2012/03/25(日) 17:19:57.67 ID:W0Y8frQC
誰かいますか?
ttp://ll.la/Rv~l ファミコンプログラミングがやりたくて、
試しにN106で全画面表示をやってみたんですが、
G-NESだとうまく表示できなくて……
VirtuaNES、nestopiaだと期待通り動くんですが……
上のURLにソースコードと、各環境で実行したSSをupしました。
詳しい方、原因とか教えてくれませんか?
G-NESのエミュレ−トが不完全なだけ
953 :
名前は開発中のものです。:2012/03/25(日) 23:12:13.63 ID:Ih97tOjy
>>947 自作のnesをfdsファイルに変換して、fdsloadrでRAMアダプタに転送したことならある
(市販のnesをfdsファイルに変換するのは無理っぽい)
>>951です。
>>952 返信ありがとう。
環境によってIRQカウンタの進み方が微妙に違うっぽいです。
初回にとりあえず1フレーム描画して、IRQカウンタの速度を取得しようと思います。
あと、
>>951にupしたコードだと、VBLANK終了待ちに$2002のbit7を見たりしてますが、
これじゃVBLANKの検出ってできないんですね……。
(x,y)=(0,0)にゼロスプライトを置いて、それを見るように変えています。
なかなかむずかしいですね……。
何がしたいのか知らんが実機の挙動が唯一の正解だろ
スレ違い
ブランチ命令って、ブランチしてもしなくても2(+1)サイクルなの?
(+1)と書いてあるじゃん
いや、(+1)はページ境界またいだときの増分サイクル。
言葉足らずだったごめん。
ページ境界をまたがないとき、
ブランチしてもしなくても2サイクルなの?
分岐なしで素通りしたら、2サイクル(オペコードと続く相対アドレスの読み込みにかかる時間)
ページ境界跨がない分岐をしたら、3サイクル(↑に加えて、下位8ビット分のアドレス計算で1サイクル追加)
ページ境界を跨いで分岐をしたら、4サイクル(↑に加えて、上位8ビット分のアドレス計算でさらに1サイクル追加)
だったはず。
うおおお詳細な説明ありがとう
何故、一部の命令でページ境界またぐと
1サイクル増えるのかも知らなかったんで、勉強になった
そういう仕組みだったのね
963 :
名前は開発中のものです。:2012/04/23(月) 15:19:07.79 ID:/vOkL049
質問なんですが、マッパー0にて
PRGROM領域を32KBにして
$C000以降にもプログラムを書きたい場合には、ヘッダを
inesprg 2
にする以外には
どうすればいいでしょうか
プログラム領域を8KB単位に区切って.bankを指定してやればいい。
.bank 0
.org $8000
<ここにコード書く>
.bank 1
.org $a000
<ここにコード書く>
.bank 2
.org $c000
<ここにコード書く>
.bank 3
.org $e000
<ここにコード書く>
>>964 ありがとうございますッ
勉強になりましたッ
みんな生きてる?
いや死んでる
生きてるよ。
2ヵ月ぶりか。
じゃあ、お言葉に甘えてスルーさせていただく
このスレで発表したら自分の捨てブログみたいなのを一緒に貼ってもらって
コメントはそっちで付けるという風にしたら?
またキチガイ君が暴れだしちゃうから
>>970 右から2列目のブロックがアタリ判定が無くて消せない
何も無いところでボールが跳ね返る
>>973 プレイありがとうございます。
>>右から2列目のブロックがアタリ判定が無くて消せない
何故、ブロックを固定式(左上から5行、32列)
にしたかというと、1つの8x8ピクセルのブロックから当たり判定を行うにあたり、
全然バラバラに配置したブロックだと座標を取得しずらかったからです。
なのでメモリの$300と$400に160個ずつ座標が取得してあるはずです。
その値の代入の際に不手際があったのだと思われます。
たとえば0から+8ずつ32回代入すると一番右端のブロックは256になってしまいますね。
>>何も無いところでボールが跳ね返る
これは、仕様です。今のところ開発では半分ほどゲームオーバーの処理を終えてますが、
アップロードするかは未定です。
な、言うだけムダだろ?
何が な なんだ
誰に同意を求めてるんだこのキチガイは
MMC5の
ネームテーブル拡張とか
8x8単位のパレット指定とか
ハードウェア的にどうなってるのかさっぱりわからん
$2000のbit6が関係してるのかな?
おお、サンクス
$2000のbit6は関係ないんだね
2C02の14-17ピンにこんな秘密があったなんて・・・
ネームテーブルのインデックス拡張はまあ納得
確信はもてないんだけど、8x8単位のパレット指定は
PPU内部のRAMにアクセスする時も
アドレスラインから信号が出ていることを利用してるのかな?
$3F00から$3F1Fまで全部#$00にしてれば
MMC5からデータを出力してもいけそうな気がする
どちらにせよMMCはReadEnable信号かアドレス線かその辺を利用して
PPUと同期してるとしか考えられないな・・・・
結構勉強になったわ
ごめんミス
8x8単位のパレット指定は
$3F00-$3F1Fとそれほど関係ない
自己解決したか?一応書く…
>>979 パレット拡張のところは勘違いしてるっぽいな。
MMC5カートリッジが$3F00-$3F1Fの値をいじる訳ではないし、その制限の壁は越えられない。
$3F00-$3F1FはPPU内部だけで参照出来る(あなたが言ったような例外もあったはずだけど利用はできないよ?)。
ttp://nesdev.parodius.com/mmc5-e.txt <ExGrafix Mode>
bit PPpppppp
PP: use character palette number
pppppp: use background CHR-PAGE number index=4k
たかだか2bitのパレット指定。
ということで
Memory fetch phase 1 thru 128
-----------------------------
1. Name table byte
2. Attribute table byte
3. Pattern table bitmap #0
4. Pattern table bitmap #1
の2.のタイミングでMMC5カートリッジがAttribute table byteを出力してるだけだと思う。
8x8毎にAttributeを指定できるというだけ。
こっちの方が解かり易い?
ttp://wiki.nesdev.com/w/index.php/PPU_rendering
中本さん見てる?
ありがとう
>>979を書いてたときなんか勘違いしてた
朝風呂入ってもう一度考えてたら
>>980ということになった
とりあえずこれで理解できた・・・と思う
そんな英文解説をどうやって理解できるの?
すごいわ。
専門用語がわかれば中学英語程度でも理解できる