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 での高解像度対…

CD-ROM2 読み込み高速化パッチ

概要 Super System Card の CD-ROM data 読み込み処理にパッチをあててロード時間を短くします ROM の hack をします. UGX-01 では使えません. 本物の Super System Card にも使えません. パッチなしで Virtual CD drive speed = fast で問題があったソフト…

MAME についているソフトリストの間違い探し

こちらのリストの管理上、 MAME に付属している hash/pcecd.xml を抽出して csv ファイルを作っている. ここでいくつか間違いがあるので直してみた. やっていると母国語が英語であろう人が書いた日本語の解釈に困ることがある気がしてきた. 基本ルール なぜ…

CD-ROM 高速転送機能の開発断念

ST0 命令の実行結果を EXTBUS から観測できないという理由で断念します. いままでの経過 CD-ROM2 の転送(読み込み)速度を上げただけでも CPU のほうが相対的におそくなるので限界があるというのを以前から知っていました. そこで CD-ROM2 の data port を独…

Namco 340 を使ってるファミカセ基板の flash 化

ファミスタハッカーの方からご依頼を受けて作りました. 163 とは異なりかなり単純化されているので改造作業の難易度は普通です. ただし改造できる基板の入手難易度は高いです. 配線 基板の型番は CS 0003 で違うものは via の位置が異なる可能性が高いです. …

CD-ROM2 の読み込み時間の厳密な再現の必要性 / その4

前回 ADPCM memory controller の改修でシャーロックホームズの探偵講座が動くようになりました. しかし内部の動画の再生で読み込みが早くてそれの調整をしていました. こういう調整は特定のソフトにだけ専用のその場しのぎのパラメータを振ることで短期的に…

ADPCM memory controler の改修

前回 ADPCM 用 fifo の深さが 0x400 word ありましたが、他の fifo と比べて更新頻度がとても遅いので fifo の深さを 0 M4K で最小の深さの 4 word にしました.4 word にしたところで dead lock している場所が見つかったので直しました(厳密には知っていた…

EP2C5の内部資源削減おわり

sound_mixer 618 lc, 4 M4K -> 456 lc,3 M4K (注:sound_mixer の外に移動したものもあるので単純比較しづらい) sound mixer は sound clock 側の処理を cpu clock 側での移動をしました. これによって cpu clock 側から sound clock 側へ制御データを渡す必…

data port の分離準備

CD-DA と CD-ROM の fifo の統合は試してみたところ、 CD-DA 再生中に制御コマンドで読み込む data に CD-ROM fifo を使っているので簡単に統合できないということが判明しました. 各 command の制御を自分のファームウェア(C)のソースコードをみながらここ…

EP2C5の資源不足を切り詰める

前回の異様に遅い data packet の対策ですが、異様に遅いとはいわないものの転送途中に fifo が空になる状態を見つけてしまいました. そこで 0x200 byte の深さの 1 data sector 0x800 byte まで増やしてみようという試みです.しかし資源不足が深刻なため無…

SDCard の不調

開発をしている機材で動作がおかしいメモリーカードがたまにあります. 公開当初はこちらの実装が悪いので修正というのが多かったのですが、最近2例メモリーカードの方が悪いというのがありましたので掲載いたします. 注意 記載での使用モードは SPI mode で…

CD-ROM2 の読み込み時間の厳密な再現の必要性 / その3

David Shadoff さんの実測と再現ルーチンのおかげで、問題となっていた多数のソフトの動作の改善がみられました. 用語の規定 この文章内では下記といたします. SEEK TIME: 読み込みコマンドを受けてから光学ヘッドが移動する時間. READ TIME: 1 frame を読み…