12/02/25 00:46:14.68 0truvwjh
>>929
ラグランジュポイントも8K以上のCHR-RAMを積んでいたのかと考えている
あの画像と、日本語フォントは512パターンで生成できなそう。VRC7はMMC5
の如く、Ex-RAMを使って2バイト指定でBGパターンを指定できるみたいなこと
はできなそうだし
938:名前は開発中のものです。
12/02/25 19:17:11.50 Abu3C86F
ラグランジュポイントは普通の8KiBのCHR-RAM仕様だよ。
文字関係(数字、ステータス表示に使う最小限の英字、ひらがなとカタカナを全文字、その他少々)で、都合約2KiB使ってる。
あとの2KiBが、マップとかのBG側のグラフィック用だけど、不足する場合でも、文字を置いてあるバンクは基本的に温存。
そのかわりスプライトのパターンを2KiBしか使わない。
それで浮かせたCHR-RAM領域を、バンク切り替えでBG側に持ってきて間に合わせてるだけ。
ヴィジュアルシーンのグラフィックとかは、デザインや演出上の工夫で、技術的に特に変わったことはやってない。
939:938
12/02/25 20:03:31.39 Abu3C86F
補足
当然だけど、常に>>938みたいにスプライトのパターンをケチって間借してるわけじゃなく、
普通にBGとスプライトで4KiBずつ分けあって、単に画面が暗転した際にパタンテーブルを書き換えるとか、
平凡にやりくりしてる状況の方がむしろ大半なので念のため。
940:名前は開発中のものです。
12/02/26 00:39:33.07 US8Vrh37
>>938
解説サンクスなり
職人芸だったわけね
941:名前は開発中のものです。
12/02/27 17:29:23.40 d2Rr2gFY
URLリンク(loda.jp)
上は当たり判定で、スプライトの座標をタイルに変換させる。でもたまにルーチンで誤変換起こしてしまってる
デバッグしてもよく分からない
原因すらわからねぇ
942:名前は開発中のものです。
12/02/28 11:32:31.06 FLxgWkDL
必要もなくモジュール内でJSR/RTSを多用してクロック浪費してるプログラム見ると、無性に書き直したくなってくる。
943:名前は開発中のものです。
12/02/28 13:11:12.77 DEMYa7pD
モジュール化
944:名前は開発中のものです。
12/02/28 21:05:59.53 FLxgWkDL
変換じゃなくて壊す側がおかしくないか?
945:名前は開発中のものです。
12/02/28 22:42:52.32 ac5+J/w/
>>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:名前は開発中のものです。
12/03/22 16:43:43.53 NBlMXw6A
簡単にROM作る方法ない?
947:名前は開発中のものです。
12/03/22 16:44:38.63 NBlMXw6A
簡単にROM作る方法ない?
948:名前は開発中のものです。
12/03/23 05:49:38.45 EKmbrKmy
それは物理的にかい?
949:名前は開発中のものです。
12/03/24 23:29:09.53 pi7aftbx
そう言う感じ
950:名前は開発中のものです。
12/03/25 01:14:37.28 c32Eu5AG
形式判明してるカセット分解して、ROM引っこ抜いて、代わりにソケット取り付けて、ROMライタで焼いた自作ROMを差し込む。
という話じゃなくて?
951:名前は開発中のものです。
12/03/25 17:19:57.67 W0Y8frQC
誰かいますか?
URLリンク(ll.la)
ファミコンプログラミングがやりたくて、
試しにN106で全画面表示をやってみたんですが、
G-NESだとうまく表示できなくて……
VirtuaNES、nestopiaだと期待通り動くんですが……
上のURLにソースコードと、各環境で実行したSSをupしました。
詳しい方、原因とか教えてくれませんか?
952:名前は開発中のものです。
12/03/25 17:49:36.89 sx4Vwb9x
G-NESのエミュレ-トが不完全なだけ
953:名前は開発中のものです。
12/03/25 23:12:13.63 Ih97tOjy
>>947
自作のnesをfdsファイルに変換して、fdsloadrでRAMアダプタに転送したことならある
(市販のnesをfdsファイルに変換するのは無理っぽい)
954:名前は開発中のものです。
12/03/26 21:41:21.79 q32IwSYQ
>>951です。
>>952
返信ありがとう。
環境によってIRQカウンタの進み方が微妙に違うっぽいです。
初回にとりあえず1フレーム描画して、IRQカウンタの速度を取得しようと思います。
あと、>>951にupしたコードだと、VBLANK終了待ちに$2002のbit7を見たりしてますが、
これじゃVBLANKの検出ってできないんですね……。
(x,y)=(0,0)にゼロスプライトを置いて、それを見るように変えています。
なかなかむずかしいですね……。
955:名前は開発中のものです。
12/03/26 23:40:41.01 uRvDMM79
何がしたいのか知らんが実機の挙動が唯一の正解だろ
956:名前は開発中のものです。
12/03/31 14:42:03.41 upBLiWOt
>>337と>>343のzipファイルが正常に解凍できません。
どうやればいいのでしょうか?
957:名前は開発中のものです。
12/03/31 18:44:20.80 lM09VNG1
スレ違い