2021-01-01から1年間の記事一覧

敵の弾+自機死亡と、敵のコリジョンを追加した。敵の弾のスプライトはミサイルの空きの3つだけになるかと思ったけど、敵最大数を8に制限してたのでちょうど8つ空いてたが、処理の都合で6個までにしておいた。 スプライト個数は、 - 自機 4x2 = 8個 - オプシ…

カプセル実装完了。 死んだ敵が変な形で赤になって画面上から復活するバグでだいぶ悩んだが、死亡時のタイプを間違えて1にしているという凡ミスだった。 だいぶゲームっぽくなったので、ここまでできると欲が出てくる。敵の追加、弾の追加、死亡の追加、背景…

ポケコンVX-4資料

ここからのリンク先は現時点でもかなり死んでる。 大抵はInternet Archivesで見れると思うが、このリンク元が死んだら追跡は困難になりそう。 いつかこれも死んだ時のために記録しておく luckleo.cocolog-nifty.com 21/04/25追記 こんにちは。HD61700クロス…

IRQ待ちに失敗してタイムアウトする原因、有効なレーザーの本数をカウントしてIRQ終了でその本数まで待つ仕組みのレーザー本数計算が1フレーム早いみたいで、本数の変わり目の1フレームだけ化けてたので、1フレずれてる理由はちゃんと調べてないけど1フレー…

nopをあわせて実機でもずれなくなったがレーザーの背景が下に1ピクセルずれてた件、理由はわからないけど辻褄合わせに1ピクセルずらしてるコードがあったので消したらいけた。 画面が細かく振動する問題、IRQの終了フラグが取れずにタイムアウトしてるようだ…

実機に合わせてレーザーIRQのNOPを調整。 画面右端にいて横8dotしかレーザーがない状態にしても、どこかにレーザーが出るタイミングがある。しかも、なぜかXのスクロール値に依存した場所に出てる気がする。 スクロールタイミングとIRQの同期が取れてないの…

ミサイルのコリジョンを実装。BG8枚の末端がおかしい問題も解決したので、いずれレーザーコピー側にもフィードバックしないと。 速度はギリギリ間に合ってる。劇的な最適化は根本対応しないと難しいので、これで逃げ切りたいところ。

敵2が死んだときに変なバンク切り替えが入るバグの原因が発覚。 バンク切り替えのテストコードが残ってて、そこで即値を入れているつもりが5番のアドレスの内容に切り替える、と書いてしまっていたせいで、敵2の0番が死んでる時にたまたま5番のアドレスが…

ミサイルを実装。これが入るだけでだいぶそれっぽくなる 敵とのコリジョンを入れても心配してたほどは重くならなかった。ついでに0ページの<を入れてなかったとこにいっぱい入れたので結果として早くなったくらい。 今更だけど、yレジスタをインデクスにす…

二重スクロール対応!思ったより簡単にできてよかった。 バンク割り当ての概念がいまいちわかってないけど、キャラ側は1/4画面単位でバンクになるのでスプライト(4)+通常BG(4)+32ドットスクロール分0~8(4x8)で、合計40バンクという計算になるっぽい。 .ines…

次フレームのIRQのパラメータを設定する関数はIRQの後で動かさないといけないので、最後のIRQが終わった後にフラグを立ててそのフラグを待つようにしたいだけなのに、オプションのソート後の処理が複雑すぎてうまく判定できなくてずっと詰まってる。 ソート…

見かけておおーってなったやつ。よく読んでいないけど元スレッド https://t.co/rIhsFfYrHk は13年も前という。未定義命令の使用もあってか、手元のMMC1 Flashカートリッジ+赤白前期FCでは動かず。 — 門真 なむ (@num_kadoma) 2021年4月1日 エミュでRAMがゼロ…

ひとまず、敵がちゃんと回転するようになった 上下Flipのスプライト描画ルーチンを使うとめちゃくちゃバグるのでだいぶ悩んだが、スプライト描画ルーチンの引数にAレジスタをスプライト番号にしてたら、Aレジスタは簡単に壊れるのでおかしなスプライト番号を…

forums.nesdev.com デバッガシンボル使えるのか

敵が出て動くように。レーザーで一閃してちゃんと爆発すると嬉しい。だいぶゲームっぽくなった あとはジャンプテーブルをいっぱい作ってステート分けしていけば大丈夫か CPU負荷はダメージ判定を入れたけど思ったほどは重くならなかった。スプライト表示が重…

スプライトのドット絵を描いた。敵や爆発は適当目コピだけど、16x16の4色くらいだとサクッと描けて楽しい。グラディウスのアニメパターンとかほんとよくできてるなぁ。自機は以前のドット絵→ボクセル→ドット絵にした時に学んだことが活かせた感じ 適当にやっ…

BGがなぜかbanc1.の$b000に置かないと動かなかった理由はこれだ。これで$a000に置けるので連続した領域における forums.nesdev.com NESASM forces you to organize your code in 8KB banks, whether or not you actually use bankswitching - thus, for a 32…

レーザーのnameTableの裏画面コピー処理をスクロール対応しようとしてる 32個固定コピーなのはそのままでも良くて、Xスクロール値を見て適切な画面からコピーしてくる処理を挟む、単純なアルゴリズムで良さそうということは分かったが、レーザーのバッファコ…

http://nesdev.com/mmc3.txt

Tofu Racerメンテ

Tofu Racer | フリーゲーム投稿サイト unityroom @Nao_u_ 突然すみません、Tofu Racer1の方のDownHillですがランキングがうまく表示されなさそうです。 pic.twitter.com/41nIkLASa0 — 水猫 (@aqua_cats) 2021年3月17日 Tofu Racerのランキングが死んでるとい…

実機でおかしくなるのはバンク切り替えの問題ではなかった。 色々削ってみてるけどなんかずれてる。 Yスクロールの値が定期的にズレるっぽい雰囲気。 レーザーの書き込みではないし、スクロールのネームテーブル書き込みを止めてもダメで、レーザーの本数を…

バンク切り替え一応動いたが、実機でおかしくなる。 lda #%01000010 sta $8000 で、左$0000がBGで右$1000がObjにすれば BGとOBJの左右を入れ替えるとIRQのカウンタがズレるらしく( MMC3 - Nesdev wiki)、実機とNestopiaで盛大に絵が壊れる。そういう製品はな…

スクロールが実装できた、 バンク切り替えで何ができるかを先に調べておかないと、二重スクロール実装時に手戻りが発生しそうなのでそっちから実装するのが良さそうだけど、MMCのバンク周り、なんで動かないのかがよくわからなくて思ったよりややこしい。 fo…

ファミコン実機でアンドアジェネシスを浮かせる+BG回転

最初の考え( https://t.co/IFeeU9XSIr )に従って、FCでアンドアジェネシスが浮遊するデモを作りました。プログラムは自作ですが、キャラやマップの都合上、FC版からの差分(xdelta3 用)の公開になります: https://t.co/cNxoqeLeD7 — 門真 なむ (@num_kadoma) …

レーザーが同じ高さだったら一行下を上書きコピーして まだ2個目以降がちょっとバグってるみたいだけどぱっと見でそれっぽく動くようになった。 レーザーの技術デモとしてはこれで最初のゴールに来れたけど、あとは - スクロール (4画面くらい?) - 多重スク…

ようやく5本のレーザーの縦座標がピクセル単位で合わせられた。IRQに渡す時の計算に謎の1+y*3のオフセットを入れればうまく動いたが、このオフセットがなぜ必要なのかはちゃんと把握できてない。 8ピクセルの斜め棒を置くと縦に何ピクセルずれてるかわかるの…

FF3のスクロール

自分がエラッタに悩まされていただけで、正攻法で行けると判断。8倍速の滑らかなスクロール。 pic.twitter.com/aC3AIwrNHH — 宮内悠介 (@chocolatechnica) 2018年10月30日 というわけで結論。ノーチラスの8倍速スクロールにFCのバグは必要ない。 — 宮内悠介 …

NESレーザー進捗:バブルソート

レーザーのY座標でソートして順番にIRQに流し込むことでオプションがどこにあってもレーザーが出るようになった。 バブルソートをさくっと五分くらいで書けたのはヒューマンリソースマシンで鍛えられたおかげだなぁ。 $2001の最下位ビットでモノクロにできる…

NESレーザー進捗

レーザー出すのがだいぶ形になってきた。 オプションは256バイトのリングバッファにXYを入れて128フレーム前まで見れるように。ちょうど1ページに収めるとコードもシンプルで良い ラスター後の座標がズレる問題は、NMIの中で全てを処理しようとしていたのが…

NESASM .db rows limited to 24 bytes per line. Why? - nesdev.com NESASMは横80文字以上は無視されてる?.byteでネームテーブル配列書いたら壊れてる気配 ファミコンのプログラム4 普段はG-NESの使いやすいデバッガでデバッグ。使いやすいVirtuaNESやNNNe…