アーケード用ストリートファイターIIの日本語文字列

https://dev.upergrafx.com/sf2message/ 気になったので ROM image から抜き出しました. いくつか仕様をかきます. 位置、色、改行の制御は抜きました. 改行=文字列の終端です. ----xxxx----, #x はわたしが独自にいれました. 濁音/半濁音記号とかな文字は分…

ICE40 の spi programmer と jtag debugger その4

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…

ICE40 の spi programmer と jtag debugger その3

Radiant Programmer の処理速度がとても遅い理由 実際に動くまでに約10秒かかる理由 FTDI 提供の libmpsse を自分でプログラムを書いてみたら、libmpsee の関数を呼ぶだけで3秒もかかった. それらを3つぐらい呼んでいることが原因かもしれない.FT_SetLatency…

mantisbt のID が 7 桁で多すぎる

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…

ICE40 の spi programmer と jtag debugger その2

昨日書いた回路で SS が双方向で共有信号でないので tristate buffer は経由せず AD4 = SS 直結としました. その回路を組んだところちゃんと動きませんでした.理由は Radiant Programmer が出す波形が CRESET_B を L レベルのまま FT232H から SPI を操作し…

ICE40 の spi programmer と jtag debugger その1

UPduino を昨年少し触っていてある程度使い勝手がわかったのですべて自分で設計した基板を動かしはじめました. いまのところは programming の部分で停滞しているのでその先の動作にはまだ至りません. FT232H と ADbus UPduino では FT232H を利用していまし…

SAMD21 で各種ソフトを動かしてみたが性能不足で評価終了

前回は外部デバイスに対してでしたが内部の話です. Wavpack Tiny Decoder (CPUの性能不足) tiny decoder は Makefile を調整して ARM 用にしたぐらいですが、リンクも問題なく、動かすことができました.ソースツリーに含まれている ARM 用のアセンブラソース…

SAMD21 のドライバを書いてみる

ASF (メーカー提供のライブラリ)なしでやってます. I2S (断念) master clock を入力もしくは内部の GCLK を利用し SCK (BCLK), FS (LRCK) を出すのはそんなに難しくありません. そこから data を出すのにつまってしまい、適切な解決方法が不明で断念となりま…

CD image を可逆/非可逆圧縮して保存する

前回 libFLAC を組み込めるか検討しましたが大変そうなのでやめました. そのあと... とても長い間やる気をなくしてしまいました. WavPack を利用する 別途同目的の規格を探していたところ、 WavPack のダウンロードページに https://www.wavpack.com/downloa…

webブラウザの top へ戻るボタンを消すまどろこっしい手順

ブラウザの右下にでてくる top へ戻るボタンは PC で見るときには home キーを押せば代用できるので邪魔という理由でサンプルをいれたり都度消したりしてたが全部消すには程遠いのでスクリプトで網羅生成することにした. 簡単な解析 いまでの user style she…

MAME から無劣化動画を作る (かなり面倒くさい)

MAME の AVI 作成機能ではなくて MNG 作成機能から lossless の動画を作りました. 10年前に試したところ AVI 作成機能は圧縮一切なしの超巨大ファイルを作るし、 MNG は対応しているソフトが当時も今も皆無です. MAME で入力を記録する mame [gamename] -rec…

libFLAC 続き

malloc, calloc, realloc, fclose が残っていましたので除去しました. 一応PCで動いているみたいですが ROM と RAM の消費量は下記となりました. 0x3870 .text libflac.a(stream_decoder.o) 0x1158 .text libflac.a(bitreader.o) 0x0b24 .text libflac.a(for…

libFLAC の自作 PC 向けソフトへの利用、および MCU 向けの調査

説明の順番をすっとばしますが、 FLAC の一連のソースコードやドキュメントはとても丁寧です. いままでみた有名なプロジェクトのソースコードの中でもきれいで感動しました. configure (automake) からのビルド なにもよまずにやってみましたが、 memset_chk…

試作の検討

これは趣味として試作をするものであるので売り物を作る訳ではありません. 前作の性能の限界とその対策 MCU block が FPGA の内部ロジック使用量の半分を超えている FPGA のパッケージが大きい,単価も少し高い ソフトウェア部がPC用,6502用,MCU用の3つに分か…

mruby/c をリンクする

mruby/cの呼び出し サンプルのコードをテキトーに張りました. #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include "mrubyc.h" int hal_write(int fd, const void *buf, int nbytes) { return 1; } int hal_flush(int fd) { return 1; } static const uint8_t #if defin</stdint.h></stdlib.h></stdio.h>…

mruby/c をコンパイルする

設計を考えていて MCU を決める事が最優先事項なので、mruby/c を導入してみました. 2週間ぐらい前に試したらリンクさえ通らなかったのですが、手順をやり直しました. 目的 MCU 側のクロスコンパイラで mruby/c をリンク、簡単な動作をみて実用に値するかが…

Squirrel を久しぶりに使う

今の開発には大変疲弊しており気分転換に別の事をやることにしました. 割と重要なのが自作パッチ当てツールです.これは15年ぐらい前にテキトーに作ったものを使っていて、気に入らない部分がたくさんあるけど致命的な理由がなくなんとかなっていたのですが、…

pukiwiki のファイルアップロードを複数でもできるようにする

最近 pukiwiki を設置し、いままでの文書を移行中です. そこでファイルのアップロードが1個ずつでかったるいので書き換えました.コードは php のサイト https://www.php.net/manual/ja/features.file-upload.multiple.php からぱくってきました. $ diff puki…

memory base driver for 6280 3/3

同名の記事 1/3 の "メモリデータの受信" を高速化できました. 2/3 の "書き込みルーチン" はいろいろ試しましたが劇的な効果は得られなかったので前回の物が最適のようです.コードは read_optimize が 1,2,4,8 で異なるマクロを使ってます. read_optimize e…

memory base driver for 6280 2/3

write driver は RAM の data をまるまるコピーではなく通信経路からの fifo のコピーとしたかったのですが、既存の機能を使い回すということで前者でてっとりばやく実装することにしました. 書き込みルーチン 先日の serial_send を使ったら処理時間がえら…

memory base driver for 6280 1/3

自前の資料を基に作りました. 対象はネイティブの IO port 経由です. 別の組み込み MCU を使う場合は設定条件をよくみて SPI 機能を使うとよいでしょう.こういうシフトレジスタの処理だけならアセンブラで書くのはとても楽しいです. 送信ルーチン serial_sen…

KOCD2001 MB128 driver

こちらのが前回よりプログラムがきれいです. ただしやってることはほとんど同じでした. ec1b8: jsr lc08e ;send 10x3+3 bits, check detection bits bcc lc1c0 lda #$FF rts lc1c0: ;operation = read ldx #$01 ldy #$01 jsr lc070 ;send address ldx <$8d l…

ADCD3001 A.III memory base 128 driver

解析しました. (2020年1月28日更新: コードの読み間違いが原因のactivation * 3 とその後の不明の 3 bits を削除) ;ADCD3001 A.III memory base 128 driver ;bits |send data |meaning ;10 |0001_0101_01|activation ;1 |p |set operation read or write ;10…

PCEのCDの型番の採番ルール

リストをみていると2通りあるようです. 発売社名+CD+年+用途+連番 TJCD9001 TJ: 発売社名. 基本2文字だが、ハドソンだけ H の1文字を使っている. CD 9: 年. 198x か 199x の1桁目を示す. 1988 から 1996 までで 7 は存在していないようだ. 0: おそらく用途. …

ユナ1作目の型番

MAME の pcecd.xml で謎だったものを実物で確認しました. HCD5078 銀河お嬢様伝説ユナ HuVIDEO同梱再販版 銀河お嬢様伝説ユナの(1作目, PCE)は 1992 年に発売された DISC 1枚のパッケージが HCD2031 で、 1995 年に発売された DISC 2 枚のパッケージが HCD50…

作りかけの展示モードとシステムカードのパッチ

UperGrafx は何度か展示会に出しているのですが、ゲームの切り替えが手動であるために展示時間やタイトルに偏りがあるので自動で切り替えることにしました. またゲームを遊ばないが動かしたいというユーザーも一定数いる気がしますので有用な機能かもしれま…

Mingw系のgccで生成される exe ファイルの main() の argv の文字コード

タイトルが長い... 筆者は msys2 を常用し開発作業をしています. 昨日コマンドラインの引数 (main() の argv) にUTF-8の日本語文字列を渡しても正常に動かないケースがあり原因を調べました. そもそも日本語文字列をターミナルで使うということが10年間ぐら…

高解像対応をやりたいその3

1080p を対応した後に整数を可変に循環させて平均として小数倍をだすというアイディアを教えてもらったので実装しました. 理想的な pixel aspect ratio にそしてある程度近づけることができました. *1各種欠点は消せてませんが下記の2解像度でそれぞれ2種類…

高解像度対応をやりたいその2

複数の解像度用のパラメータを切り替える仕組みを事前につくり、実験をしてみました. 実験内容はゲーム画面ではなく単純なテストパターンをだすだけです.結果は 1600x1200 が映らない以外はわりと良好でした. 4:3 の画面でも音声の転送は(なぜか)うまくでき…

高解像度対応をやりたいその1

UperGrafx プロジェクトは 10月18日から20日に米国オレゴン州ポートランドで開催される Portland Video Game Expo に間借りして出展する予定です. → https://www.retrogamingexpo.com/ 出展準備があまり進んでおらず出展内容は UGX-01/UGX-02 での高解像度対…