SWD 切り替えの回路に不具合があったものの放置していたのをいまさら対応. 原因はICの単なるハンダづけの不良.MCU 用の build で text mode で DMA のあとに文字を打つと1文字無視されることがあるバグの原因調査. 原因はおそらく2つ. 1つ目が5Vの電源投入後…
数日前にシミュレータ上でのテストは通った. 性能とメモリ使用量は課題はあるものの MCU 用にコンパイルして調整することになった.久しぶりとなる MCU 用のコンパイルでは意外なことに 0x1000 bytes だけの RAM は余裕があり、0x6000 bytes の ROM の使用率…
programming の設計はだいたい完成したと2,3日前に思った. その後少し足りない機能を追加して性能を改善した. 昨夜から今夜にかけてはテストをしやすくするためにソースを整理したときに問題が発生した.カートリッジがうまくささってないときのエラー判断が…
前回の DMA descriptor の構成を基礎に programming の task 切り替えを実装途中. ソースコードは大して長くないのに考えることが多すぎて非常に疲れる. 2022年8月のコードはごっそり削除. ソフトのコードでここまで密度が高いのはあまりなくて verilog かい…
今回の並列 programming は下記の順番(上から下)で bus cycle を DMA で一度に連続で動かす. 通常 |page programming r a d l c|l c c $5555 $aa 1 4| 1 $103 c $2aaa $55 1 /| 1 / c $5555 $90 1 /| 1 / c d+0 ww 1 /|$100 / p $5555 $aa 1 4| 1 $103 p $2a…
2022-09-19 の続きです. 4個目の 74595 を追加する回路は10月の時点で完成*1、その後3か月間諸事情により停止、思い出すのに2週間というところで新しいハードウェアの対応が必要最小限でできたのが先週半ばです.今回の対応で 4 spi cycles = 1 memory cycle …
12月下旬から開発作業を再開しているのですがスランプのため以前調査した麻雀(HVC-MJ)の裏技を記事にしました. 意外だったのは Disk の麻雀(FMC-MJA)がどのエミュレータでもちゃんと動くことでした. seesaawiki.jp
リセットボタンを押さずリセット相当の命令(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++ は難しくて使えません. タグを活用する タグは struct/enum/union につけられる名前で、変数や関数名と名前空間が別です. とはいえ struct だけが利用される傾向にあり、いつの…
2016年の更新は大したものではないので実質7年半ぶりでしょうか. ドラクエ4の記事は書いてみたらおもしろくなかったのでそのうち消すと思います.今回は RAM の不定値とか hotswap (電源を入れたままカセットを交換する行為) について説明してます. RAM の不…
dumper/programmer においてあまり重要ではない扱いになっている VRAM A10 と VRAM CS# 端子について最近の考察をお伝えします. カートリッジ自動検出 既存の dumper soft ではカートリッジ自動検出は ROM data の hash (checksum) を算出してやっていますが…
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…
半年前から集中力が続かずあきらめ気味になっていたのですが、わりと新しい 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 演算でした. 該当部は訂正補足お詫びを追加しました.
youtu.becheap さんのアイディアを元にウルで戦闘をしたあとサラひめとウルに戻ってお祝いされる内容を組んでみました. 今回自分のアイテム並べ総当りツールに手をいれてたんですが、重要ではないアイテムの数量は1固定だったので、cheap さんの案のようにア…
cheap さんご提案の内容を確認したら、ポインタ上位8bitに 0x64 (ミスリルかぶと)をいれて普通の会話(会話後 0xa3f8) と組わせてスクリプトポインタ(cpu address $0072) を 0x64f8 に設定していました. そこから cpu address $6506-$650b にあるセーブデータ…
Final Fantasy III - speedrun.com 先日たまたまそのあたりを見ていたら重要なことに気づきました. この部門の名目は「なにをやってもいいがクレジットに(直接)飛ばない」というもので実際にはアイテム溢れなりアイテム変化のバグを駆使した10年前のピロ彦さ…
cheap さんの掲示板に投稿しようとおもったのですが、.pl ファイルが not found で投稿できませんでした. (直してくださったらこの件はそっちに書きます) [引数なし] 00-bf (未調査) FF2 と同じで町人などの移動や方向制御だと思う c0-cf プレイヤーキャラの…
アイテムの並びがわかってもピアノを弾くのが未だ現実的なのですが、いくつか調査しました. 結果は cheap さんが提案したピアノ演奏+かわのたての方法が有力だとわかりました. ピアノ演奏の原理 移動画面の CPU address $0072 (ポインタ)の参照先に data 0xd…
kazzo で flash cartridge へ program して動作確認をしました. kazzo... 自分で作ってなんですが10年も経てばボロは出るわけで使いづらいです. 描画途中に CPU address $2001 bit3:2 = 2'b01 にする 前回 PPU A12 がうまく動かず MMC3 の IRQ counter が想…
疑似スクロール 疑似スクロールはアイテム欄が32個(=16行)あるのに対し1画面で16個(=8行)の表示をしています. よろしくないのは1つのnametableでスクロールしているようにみせているので、上下端でカーソルを動かすとアイテム欄の nametable をすべて描画し…