2021-01-01から1年間の記事一覧
アイテムの並びがわかってもピアノを弾くのが未だ現実的なのですが、いくつか調査しました. 結果は 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 をすべて描画し…
先日別の方が普通にプレイしている姿をみてて、スタートボタンを押してからメニューがでるまでに毎度1度秒以上かかるのが気になったので改修してみました.ROM の CRC32 は 0x57E220D0 のものです. 遅い原因 画面描画を止めずに vblank を待って限られた時間…
自己紹介 筆者は個人事業主で、電子回路とそれに関わるファームウェア開発を主としております.2021年になってから半導体の供給不足が問題となり状況は毎月悪化していて回復の見込みがなく、ソフトウェア開発の仕事を募集いたします. 得意分野 6502, 68000, Z…
FF3 のゲーム開始前 ルールとして許可されているなら address 0x00f9 へ data 0xdd を仕込むことができます. 簡単な調査で見つかったのは address 0x00f9 を 1P のキー入力として使えるのは(superがない)魂斗羅と F1 センセーションの2本でした.data 0xdd は…
他の作業がスランプのためファミコンソフトの解析をしてごまかしてます... script data の解析 エンディング呼び出しだけ調べてましたが他のも調べました. data 0x00 から 0xbf (1 byte) キャラの移動と方向転換、あとは初期化ができるかもしれません. datab…
楽しかった TAS は終わりで mruby の構築をはじめます. いままでは pacman -S mruby でとってこれるバイナリパッケージを使ってましたが、 require が使えないことが大変によろしくないのでコンパイルをすることにしました. 一連の流れ git clone https://gi…
先週土曜日に完成しました. https://www.nicovideo.jp/watch/sm38840650詳細はこっち. http://tasvideos.org/7136S.html今回の TAS を通じてわかったのは最適化作業はつまらなく Lua 言語がマジに作れば作るほど貧弱の2点です.前回ここにかいた 67 回の AB …
前回のイベント番号で CPU address $0072 の script (scenario) pointer へ設定される値は下記です. イベント番号@ pointer の table は CPU address $0d:$bfc0 にあり正規の値は 0 から 0x19 でそれを超えると MMC1 の bank 境界をまたぎます. ROM FF3 同様…
原理説明 (簡素) 2人目がブリンクの本を武器として熟練度を上げたときに CPU address $62BA に data 0x0f (10 進数で 15) が代入される. CPU address $62BA は聖堂で復活するときに起きるイベント番号で 0x0f は皇帝が出てきて最終戦となる. イベント番号が…
anago 相当の flash programmer を mruby で作ってみようとしました. anago で最近気になったことを直してみようと調べてみました. GUI でデバイスを動かすときにスレッドをまともに扱っていない → 適切な直し方は知っているが C++ でつくるのめんどい flash…
mruby でエラーの行番号を出す方法を下記を参考にいれました. API ドキュメントは読んでないので本当にいいのか保証がありません. https://tyfkda.github.io/blog/2013/09/21/mruby-backtrace.htmlソースコードは整備ができましたので公開いたします. プロジ…
ICE40 専用ではなく汎用の 8 pin memory programmer を作ることにしました. 24 系 I2C EEPROM と 25 系 SPI flash のピン配置 1つの socket で対応ということで下記にしました. socket SPI flash I2C EEPROM 1 AD4 8 +3.3V |1 CS# 8 Vcc |1 A0 8 Vcc 2 DO 7 …
https://dev.upergrafx.com/sf2message/ 気になったので ROM image から抜き出しました. いくつか仕様をかきます. 位置、色、改行の制御は抜きました. 改行=文字列の終端です. ----xxxx----, #x はわたしが独自にいれました. 濁音/半濁音記号とかな文字は分…
d2xx と libftdi1 の共有 d2xx のほう. static int x_ft_write(void *tt, uint8_t *data, int length) { struct d2xx *t = tt; DWORD rc; FT_STATUS s = FT_Write(t->h, data, length, &rc); assert(s == FT_OK); return rc; } static int x_ft_read(void *t…
Radiant Programmer の処理速度がとても遅い理由 実際に動くまでに約10秒かかる理由 FTDI 提供の libmpsse を自分でプログラムを書いてみたら、libmpsee の関数を呼ぶだけで3秒もかかった. それらを3つぐらい呼んでいることが原因かもしれない.FT_SetLatency…
core/bug_api.php: 2180 function bug_format_id( $p_bug_id ) { #$t_padding = config_get( 'display_bug_padding' ); $t_padding = 3; $t_string = sprintf( '%0' . (int)$t_padding . 'd', $p_bug_id ); return event_signal( 'EVENT_DISPLAY_BUG_ID', $t…
昨日書いた回路で SS が双方向で共有信号でないので tristate buffer は経由せず AD4 = SS 直結としました. その回路を組んだところちゃんと動きませんでした.理由は Radiant Programmer が出す波形が CRESET_B を L レベルのまま FT232H から SPI を操作し…
UPduino を昨年少し触っていてある程度使い勝手がわかったのですべて自分で設計した基板を動かしはじめました. いまのところは programming の部分で停滞しているのでその先の動作にはまだ至りません. FT232H と ADbus UPduino では FT232H を利用していまし…
前回は外部デバイスに対してでしたが内部の話です. Wavpack Tiny Decoder (CPUの性能不足) tiny decoder は Makefile を調整して ARM 用にしたぐらいですが、リンクも問題なく、動かすことができました.ソースツリーに含まれている ARM 用のアセンブラソース…
ASF (メーカー提供のライブラリ)なしでやってます. I2S (断念) master clock を入力もしくは内部の GCLK を利用し SCK (BCLK), FS (LRCK) を出すのはそんなに難しくありません. そこから data を出すのにつまってしまい、適切な解決方法が不明で断念となりま…
前回 libFLAC を組み込めるか検討しましたが大変そうなのでやめました. そのあと... とても長い間やる気をなくしてしまいました. WavPack を利用する 別途同目的の規格を探していたところ、 WavPack のダウンロードページに https://www.wavpack.com/downloa…
ブラウザの右下にでてくる top へ戻るボタンは PC で見るときには home キーを押せば代用できるので邪魔という理由でサンプルをいれたり都度消したりしてたが全部消すには程遠いのでスクリプトで網羅生成することにした. 簡単な解析 いまでの user style she…