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 を読み…

自分で作った潜在的なバグ

最近他人が作った潜在的なバグに言及しておりますが、upergrafx のソースコードにも本来ならすぐに起きるはずのバグが起きずに放置、その後の謎の現象となり、調査したら稚拙なバグが2件も見つかってお恥ずかしい限りです. write strobe の正負の論理を間違…

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

CD-ROM の 1 sector のロード時間を規格通り 1/75 秒に設定したところ、ロード時間が早いために問題になっていたソフトが結構直りました. 一方直らなかったソフトの傾向を見ると下記のようでした. ロード時間の前後の処理時間を要求するもの 1 sector のロー…

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

現在の不具合報告に登録してあるソフトの不具合の原因が読み込み時間が実機と違うのでちゃんと動かないというのがある程度わかっています. 別件で mednafen の document を読んでいたら pce_fast module で CD-ROM の読み込み時間を設定で変えられることをし…

9821 のハードディスク相当を復旧する / その4 (終)

Filesystem 関連 前回細かく書いていたのは LBA=0 を PC-98 用, AT 用に調整すれば現行のパソコンから普通にファイルシステムにアクセスできるだろうという考えでした.結論からいいまして下記でした. NEC 5.0 の FAT header のフォーマットが謎で RCF-X 64MB…

PC-9821 のハードディスク相当を復旧する / その2

手元にある Compact Flash は昔デジカメで使っていた RCF-X 64MB です. これは website に http://buffalo.jp/php/lqa.php?id=BUF9612 [コンパクトフラッシュを起動ディスクとして ご利用いただくことはできません。]とありましたので別のメディアも買いまし…

PC-9821 のハードディスク相当を復旧する / その3

(その2はあとでかく) ひとまず Compact Flash で MS-DOS が BOOT できるようになりましたので現行のパソコンから dd で dump してみました. 筆者は開発環境として msys2 を常用していますので dd なり /dev/sdx というデバイスは普段から利用できます. 実デ…

PC-9821 のハードディスク相当を復旧する / その1

やることはよくある IDE コネクタに Compact Flash を接続するやつです.2000年ぐらいにハードオフで本体が 500 円だったから買った PC-9821V16, 周辺機器を買いそろえたら結果としてえらい値段になりました. それからも時々 PC-98 ならではの性能で活躍して…

PCE の入力デバイス用ポートの仕様調査

毎度のごとく公式文書をみたわけではなく、インターネット上に転がっている信憑性の低い情報を元にしていますのでこの情報も信憑性は低いです. 実ソフトの逆アセンブルと分析もいまのところしてません. pinout +5V, GND, D3:0, Q1:0software からの仕様は ad…

じゅうべえくえすとの敵が出る数の解析

メガトンコインRTAという動画でキノコングという敵が1匹でるべきである場面でそれが2匹でる, その原因は5つもバージョン違いだろう. という考察が書かれていました. 5つは多すぎでおかしいと思ったのでそれを調べました. バージョン違いはあるが... 5個の根…

Super System Card の仕様

address は全て21bit絶対表記です. 0x000000-0x03ffff R- ROM (A) 0x040000-0x07ffff R- ROM (A, mirror) 0x080000-0x08ffff -- 未定義 (B) 0x090000-0x0bffff R- RAM (C, mirror, read only) 0x0c0000-0x0cffff -- 未定義 (D) 0x0d0000-0x0fffff RW RAM (C)…

CD Graphics 対応のための調査その3

Subchannel の並びの対応は PC ソフト側 HDL 側共に完了しました. いくつか問題があります. 問題1:回路数限界 HDL のコード上、利用回路数はたいしたことがないはずでしたが、 FIFO を追加したところで EP2C5 に収まらないとエラーが出てしまいました. FIFO …

CD Graphics 対応のための調査その2

データの並びは仕様書通りに channel R からW (bit5:0) を利用します. ここで command と instruction があり、instruction は 6 通り定義されているのに規定外のそれが大量に出てきて解釈に困りました.これはどういうわけか仕様書に書いてないことで, chann…

CD Graphics 対応のための調査その1

CD Graphics (別名 CDG, CD-G, CD+G) を実験として対応してみようかと思います. とりあえず medfenam のソースコードや CD Graphics の仕様書などを見てます. 調べたことを書いていきます. CD-ROM2 fifo CDDA 再生中(CD-ROM read 中でも入りそうですが..?) …

CD-ROM2 の ADPCM 用(にもつかえる) RAM の転送その3

別件の修正です.主に CD-ROM コントローラから ADPCM 用 RAM を書いてしまえる DMA と呼ばれているやつです. 等幅に書いてある部分の左端の数値は 6280 からの絶対address 0x1ff80x の略記,その次がそこに書かれる data で並ぶ場合は連続で書かれます. bios,…

続 CD-ROM2 の ADPCM 用(にもつかえる) RAM の転送

コブラIIとロードス島(1作目)の停止理由をみたところ原因は下記でした. READ(6) コマンドの転送先を題名の RAM に設定 その初期化の一部を BIOS を使わずに直接制御 ADPCM 用(にもつかえる) RAMというまどろこっしい表現はこの RAM へ ADPCM 用の data をい…