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

開発日記 (UNROM 互換設計)

リセットボタンを押さずリセット相当の命令(jmp ($FFFC))を実行させる回路を設計途中. これはおそらくレジスタが5個いるので先述の SLG46826 で組んでみることにした. リセットについては後日記載する予定. (もう1個書きたいネタがあるが私の余裕が足りてな…

開発日記

PLD を試した 最初は SLG46620 で内部回路を組んでみた. この場合は特に問題なく組めたのだが、 Programming の手段が専用の Programmer が必要で、基板につけたMCUから programming できないことが判明. その programmer も入手できないので詰んだ.つぎによ…

開発日記

回路の改訂案 前回の回路までは address bus と data bus をシフトレジスタの 74595 で制御していたのですが、PHI2, ROMSEL#, RD#, WR# といった memory strobe の生成は MCU の GPIO (ソフトウェアで操作)とタイマ出力を 74139 と 7404 で生成していました.…

開発日記

DMA descriptor 前回の下記の記述について. ソフトが生成した descriptor は DMAC によって更新されてしまうこれは DMA の最後のサイクルに 2 度か 3 度同じ出力をするために、同じ descriptor を流用したところで想定とは違う動作をしていたために DMAC に…

開発日記

DMA descriptor 用途によって分かれる descriptor 群をあらかじめ3通り用意しておいて、DMAC->BASEADDR だけを書き換えようという案. これを作るのに手間取った. シミュレータ上はそれとなくできたが、MCU で動かすと下記の問題が判明. DMAC->BASEADDR は DM…

開発日記

USB 受信 前回の通りで実装に成功. PCKSIZE を調整することで受信処理の効率化と安定化を確認. 受信側の汎用バッファはなくなったが、送信側の汎用バッファは0x200bytesも確保しているので RAM の 1/8 を浪費していることが判明. そのうち減らす. 0x80000 + …

開発日記

flash programming に成功. sector erase 0x10000 bytes, back switch 8 times 込みで 0x10000 bytes の転送で 16 秒かかっている. おそいし、USBの受信が安定していない. USB 受信 64 bytes を超えるPCからの送信はMCU 側の処理が多くなると、USB 受信パケ…

開発日記

近況 諸事情で休止期間が入っていますが、MCU からのファミカセ操作の続きです.今月にはいってからブートローダの作成、タイムアウトの実装、ROM dump が実装できました. ROM dump は DMA を利用するのでかなり早いです. 0x80000+0x40000 bytes の dump が 3…

開発日記

近況 先週ぐらいから MCU のソースに手を入れて専用ソフトで通信するプロトコルの策定とそれの C ソースの実装をしています. memory read, memory write に関してはそれでできています.flash memory programming になると、programming の空き時間があるので…

C のソースの変なかきかた

C++ のほうがテンプレート活用で変なかきかたできるんでしょうけど、私には C++ は難しくて使えません. タグを活用する タグは struct/enum/union につけられる名前で、変数や関数名と名前空間が別です. とはいえ struct だけが利用される傾向にあり、いつの…

約5年半ぶりにファミコンの技術情報サイトを更新しました

2016年の更新は大したものではないので実質7年半ぶりでしょうか. ドラクエ4の記事は書いてみたらおもしろくなかったのでそのうち消すと思います.今回は RAM の不定値とか hotswap (電源を入れたままカセットを交換する行為) について説明してます. RAM の不…

VRAM A10 と VRAM CS#

dumper/programmer においてあまり重要ではない扱いになっている VRAM A10 と VRAM CS# 端子について最近の考察をお伝えします. カートリッジ自動検出 既存の dumper soft ではカートリッジ自動検出は ROM data の hash (checksum) を算出してやっていますが…

mruby のビルドの手順

https://na6ko.hatenadiary.jp/entry/2021/06/10/213745 の続きです. 目的: require が必要なのでコンパイルが必要. 環境: msys2-mingw64 でのビルド. mattn/mruby-require fts.h が不要. msys2-mingw64 でビルドできる. git clone https://github.com/mruby…

ROM dumper からの ROM 以外へのアクセス

半年前から集中力が続かずあきらめ気味になっていたのですが、わりと新しい MCU とファミコンカセットをつなぐ機器の第1回試作が終わりました. 第5回ぐらいまで試作はある予定なので完成する自信が全くありません. ですので期待しないでください.今回はPCとM…

くだらない英語の例

wget (ソフト名)を使ってファイルをダウンロードしました I wget'ed a file. I wgot a file. くだけた英語で Email を出しましたは I emailed と名詞を動詞にすることがある. くだけた英語で wget を使いましたは emailed に従うと矛盾が発生する.米国人曰く…

訂正しました

command 0xf3 と 0xf5 bit 変更は XOR 演算ではなく AND 演算でした. 該当部は訂正補足お詫びを追加しました.

FF3 のメモリ破壊応用例

youtu.becheap さんのアイディアを元にウルで戦闘をしたあとサラひめとウルに戻ってお祝いされる内容を組んでみました. 今回自分のアイテム並べ総当りツールに手をいれてたんですが、重要ではないアイテムの数量は1固定だったので、cheap さんの案のようにア…

FF3 のメモリ破壊とスクリプトポインタ

cheap さんご提案の内容を確認したら、ポインタ上位8bitに 0x64 (ミスリルかぶと)をいれて普通の会話(会話後 0xa3f8) と組わせてスクリプトポインタ(cpu address $0072) を 0x64f8 に設定していました. そこから cpu address $6506-$650b にあるセーブデータ…

FF3 の Any % no credits warp 部門への問題提議

Final Fantasy III - speedrun.com 先日たまたまそのあたりを見ていたら重要なことに気づきました. この部門の名目は「なにをやってもいいがクレジットに(直接)飛ばない」というもので実際にはアイテム溢れなりアイテム変化のバグを駆使した10年前のピロ彦さ…

FF3 のスクリプトデータの解析

cheap さんの掲示板に投稿しようとおもったのですが、.pl ファイルが not found で投稿できませんでした. (直してくださったらこの件はそっちに書きます) [引数なし] 00-bf (未調査) FF2 と同じで町人などの移動や方向制御だと思う c0-cf プレイヤーキャラの…