ファミコンのプログラム4 (567レス)
1-

357: 名前は開発中のものです。 [sage] 2014/10/20(月) 02:34:56.29 ID:VhFQD/az(1) AAS
だれかギコ猫より分かりやすいサイト作って
もしくは解説コメント付きのソース
358: 名前は開発中のものです。 [sage] 2014/10/27(月) 22:58:49.97 ID:WLPSmV4W(1) AAS
ギコ猫があるだけ恵まれた環境。1990年代のネットはファミコンの
内部資料は英語しか無かったからね。だから普通に挫折した。
359: 名前は開発中のものです。 [sage] 2014/10/28(火) 05:34:41.72 ID:40z/j/Ad(1) AAS
バッ活とファミリーベーシック
360
(2): 名前は開発中のものです。 [sage] 2014/11/05(水) 02:06:14.46 ID:8FC6s1LF(1/5) AAS
Experi9(>>343
343(1): 名前は開発中のものです。 [sage] 2014/10/05(日) 12:06:25.72 ID:TCLHVT3o(1) AAS
東方Projectみたいな画面は作れないか?との興味から作りはじめたのですが、弾丸の表示時点で、CPUの処理能力不足により先が見えてしまいました。

外部リンク[zip]:homepage3.nifty.com

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

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

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

自キャラ、敵キャラ、弾丸以外は、BGで描画しています。
枠内のスクロールは、ハードウェアスクロールとソフトウェアスクロールの併用です。
16x8の範囲でパレット指定や会話ウィンドウの表示に、縦方向のラスタスクロールを駆使しています。
)の改良版をアップしました。

外部リンク[zip]:homepage3.nifty.com

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

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

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

あと、当たり判定実装したり、弾丸の移動処理作ったり、BGM鳴らしてみたりで
処理落ちしないのを確認できたので、性能面で目処が立ったかなというところです。
361: 名前は開発中のものです。 [sage] 2014/11/05(水) 02:20:57.06 ID:8FC6s1LF(2/5) AAS
試作した自己書き換えルーチンその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の節約。
362: 名前は開発中のものです。 [sage] 2014/11/05(水) 02:32:50.39 ID:8FC6s1LF(3/5) AAS
試作した自己書き換えルーチンその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が設定されてリターンします。
363: 名前は開発中のものです。 [sage] 2014/11/05(水) 02:43:06.58 ID:8FC6s1LF(4/5) AAS
ファミコンのプログラム領域はROMだし、メモリも余裕無いから、
自己書き換えルーチンには縁が無いと思っていたのですが、
拡張WRAM使うとなると、有効な手段であるなと。

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

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

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

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

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

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

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

>>367
参考になりました。ありがとうございます。
370: 名前は開発中のものです。 [sage] 2014/11/24(月) 07:57:25.72 ID:+tDgRqjL(1/2) AAS
このスレに常駐して間違いを指摘してる人は何者なのかね?
元ハドソンの中○さん?
371: 名前は開発中のものです。 [sage] 2014/11/24(月) 08:33:08.82 ID:+tDgRqjL(2/2) AAS
もしかしてカル○ャーブ○ーンのあの社長か?
372: 名前は開発中のものです。 [sage] 2014/11/24(月) 19:13:43.16 ID:7xFBwqHN(1) AAS
おい、具体名だすんじゃねえ
373: 名前は開発中のものです。 [] 2014/12/27(土) 07:48:51.33 ID:wLqAfx70(1) AAS
このスレではみなさんからのプログラムの投稿をお待ちしています
374: 名前は開発中のものです。 [sage] 2015/01/05(月) 20:34:21.71 ID:AkF9WUbO(1) AAS
>>83-85は進展無し?と思ってみたらもう2年前か
375
(1): 名前は開発中のものです。 [sage] 2015/01/06(火) 00:58:45.65 ID:uy5dcfqt(1) AAS
CじゃなくてFORTHだったら需要あったんだがなぁ
俺の
376
(1): 名前は開発中のものです。 [sage] 2015/01/19(月) 20:41:58.52 ID:qeXTNQ6P(1) AAS
>>375
FORTHって何ぞ?
377
(1): 名前は開発中のものです。 [sage] 2015/03/03(火) 17:29:58.25 ID:zncA3uK1(1) AAS
>>376
プログラム言語のこと
似たものにMindがある
378: 名前は開発中のものです。 [sage] 2015/03/12(木) 23:44:17.66 ID:kJFL2HEh(1) AAS
>>377
プログラム言語のことだったのね
知らんかった
379
(1): 名前は開発中のものです。 [sage] 2015/03/19(木) 20:54:40.85 ID:h0XRN6RW(1) AAS
前スレを亀レスするけど数をバラバラに設定すると
完成する時としない時があるのは数学的に証明されてる。
完成しない時があると知った時は10才で、その理由を知ったのは30才だったな。
214 名前:名前は開発中のものです。 [sage]: 2008/10/21(火) 23:36:20 ID:7W0HXoP0
空気読まずに投下
外部リンク[zip]:www.lenis.info
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
380: 名前は開発中のものです。 [sage] 2015/03/20(金) 19:57:53.65 ID:SVxvjEKg(1) AAS
>>379
作者らしき人に解けない理由が伝わってないのが悲しいな
>完成形がわからなかったら解けるわけないじゃん!
外部リンク[html]:www34.atwiki.jp
にあるソースを修正しようとしたけどウチの環境じゃうまくコンパイルできなかった
誰か頼んだ
381: 名前は開発中のものです。 [sage] 2015/04/01(水) 23:40:29.90 ID:ii+SttYw(1) AAS
何で数がバラバラだと解けないんだろね
タイルの移動する範囲が狭いからとかそんな理由?
1-
あと 186 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.023s