スーパーバグファミコン再現したエミュを作成する

Imaha486さんのところでほぼ解析が完了しておりましたので
こちらではざざっと導入方法だけ書いておきます。

スーパーバグファミコンをエミュで再現する | Irregular child 2nd
https://i486.mods.jp/ichild/super_bug_snes

スーファミのエミュといえばSnes9xが有名、ソースコードも公開されているのですがWindows版のコンパイル環境の構築がよくわからないので
https://github.com/snes9xgit/snes9x/wiki/Compiling

ここではAresをいじくることにします。
https://ares-emu.net/

変更箇所は1か所だけ、MSYS2をインストールすることがメインとなります。

※インストール先をCドライブ、「¥」マークが「\」(バックスラッシュ)になっていますが適宜読み替えてください

MSYS2をインストール

Windowsに開発環境を構築するために下記を参考に、MSYS2をインストールする

MSYS2の導入 – 東京大学工学部 精密工学科 プログラミング応用 I・II
http://www.den.t.u-tokyo.ac.jp/ad_prog/msys2/

GitHub – ares-emulator
https://github.com/ares-emulator/ares?tab=readme-ov-file#windows-building

インストールが終わったら複数あるMSYS2の中からMSYS2 MSYS を起動し、

MINGW64の場合は

pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-SDL2

CLANG64の場合は

pacman -S mingw-w64-clang-x86_64-toolchain mingw-w64-clang-x86_64-SDL2

をインストール。
両方ともインストールして問題ない。

インストールしたらMSYS2のウィンドウを閉じて、今度はMSYS2からMSYS2 MINGW64又はMSYS2 CLANG64インストールした方を起動

LibrashaderサポートにRustのインストールが必要だが、ここでは無視(makeのオプションにlibrashader=falseを追加)

ソースの取得、編集

aresのリポジトリからソースコードを取得し、

git clone https://github.com/ares-emulator/ares.git

aresフォルダの中(インストール先のC:\msys64\home\アカウント名の中にある)のares\sfc\cpuにあるio.cppをテキストエディタ等で開き42行目の

case 0x4215: return io.rddiv.byte(1); //RDDIVH

case 0x4215: return 0xff; //io.rddiv.byte(1); //RDDIVH

に書き換える。

又は

書き換え済みのソースコードを取得。

git clone https://github.com/Nekokabu/ares.git

※もしgitがないよ!とエラーが出る場合は
pacman -S git
してインストールする。

コンパイル

cd ares

でディレクトリを移動して

make -j4 librashader=false

※もしxxxxがないよ!とエラーが出る場合は
pacman -S xxxx
してインストールする。

コンパイル済みの実行ファイルは
C:\msys64\home\アカウント名\ares\desktop-ui\out
とかにあるので実行して確認する。

※FF6の戦闘シーン、本来は32の経験値が16711712になってしまうのは
32 = 0x000020
16711712 = 0xFF0020
ゲーム中でどういう計算をしているかまではわかりませんが、割り算した商の上位が入るRDDIVHというレジスタがどんな計算をしていても値が必ず0xFFになってしまう不具合が起こっているようです。

Division – SNESdev Wiki
https://snes.nesdev.org/wiki/Division
IO ポート (メイン)/0x4200-0x421F – SNES Spec – atwiki(アットウィキ)
https://w.atwiki.jp/snesspec/pages/275.html#p4215

Polymega買った

Polymegaを入手し国内のN64タイトルを全部インストールしてみました。

Polymega(ポリメガ)はCDドライブを搭載し、PS1、SSなどのCDメディアのゲームや、モジュールを交換することでNES、SFC、N64など各種ハードのカートリッジ対応する互換ハードです。生産量が少ないうえに予約したのに何年も発送が行われなかったため幻のハードといわれていたこともありますがここ最近はタイミングが合えば比較的すぐ入手できるようになっています。
Polymega
https://polymega.com/

発表直後は全く興味がなかったのですがN64への対応が発表され、運よくN64対応のモジュールを購入できたので本体である「ベースユニット」も購入してみました(ほんとはベースユニット必要なの知らずにN64モジュールだけ買ったのであとからベースユニット買った)。公式サイトの直販からも購入できますが国内代理店のWorld Game Expressなら2024年3月中旬発送予定で現在予約受付中です。

POLYMEGA ポリメガ – World Game Express
https://worldgameexpress.myshopify.com/collections/polymega%E7%89%B9%E9%9B%86

PS1などCDのからのインストールはまあまあな時間がかかりますがN64についてはかかっても10数秒でインストールできるので国内のN64ソフト別バージョン含めて約3日をかけてインストールしました。流石にゴエモンなどの登録されないゲームは認識されなかったのとポケモンスタジアム金銀とトップギアラリーだけ認識が変になっていた以外ほぼすべてのゲームがすんなり認識されました。動作まではほとんど確認していませんがデータベースもゲームの簡単な紹介やスクリーンショットも載せてあり、かなりしっかりしています。

今回インストールのためにN64カートリッジを引っ張り出してきましたが、ダブりも含めて総数400本くらいありました。ポケモンスナップについては40本以上ありました。

ポケモンスナップV1.1を見つけるために、刻印が隠れてわからないやつも数撃ちゃ当たる戦法で事あることに購入していますがこれだけ買っても見つからないので
・販売されてない
・メーカー修理交換用
・店頭用サンプル
・シール印刷用の器械に付属
とかで一般流通してないのではないかと思います。

当時のシール印刷用の機械なんてのこっていないのだろうか…

各種メッセージコンバーター

最近メッセージコンバーターを作るのにはまっていましていくつかのソフトのメッセージコンバーターを作成しました。ゲーム中のメッセージを出力したいのもありますがどちらかというとデバッグ的なメッセージが残っていないかを目的に面白半分でプログラムを組んています。

・n64 ズール 魔獣使い伝説
http://nekokabu.s7.xrea.com/cnv/cnv_n64zool.zip

・SFC ワンダープロジェクトJ
http://nekokabu.s7.xrea.com/cnv/cnv_sfcwpj.zip

・N64 ゆけゆけ!!トラブルメーカーズ
http://nekokabu.s7.xrea.com/cnv/cnv_n64yuke.zip

NDSや3DSなどゲームのデータ容量に制限がなくなってきてシフトJISやUnicodeそのまま使っていることが多いですが、N64,GBA,SFCなど古いゲームは独自の文字コードを使用していることが多々あり、このようなプログラムを使って変換することでゲーム中のメッセージを読むことができます。エミュレーターのコードサーチ機能を使い、名前入力画面で「あ」、「い」、「う」と比較サーチを行ったりGCCODE2を使って表示されている文字列を検索し、文字変換テーブルを作成、改行など特別な動作をプログラミングで補ってきれいに出力できるようにしていく流れになります。なれれば割と簡単に作成できますので興味を持った方はぜひ。

iQue Playerをハックする

以前にiQue Playerを入手したさいに少し触っただけでほったらかしにしていましたが、2018年ごろにiQue Playerがハックされ一時話題になったのを思い出し、「そういやN64のローカライズされたロムが入っているんだったなぁ」と思い立って実際にやってみることにしました。

続きを読む iQue Playerをハックする

WordPress更新で投稿が正しく表示されなくなった

Movable TypeからWordPressへ移行して5年ほどブログをやっていますが、先日気が付くとmoreタグ(<!–more–>)を入れたところに出る「続きを読む 」をクリックしても投稿の全文が表示されなくなったり、コメント欄がなくなったり、タイトルバーに記事のタイトルが表示されなかったり、投稿がアーカイブ扱いになったりと表示に不具合が出るようになりました。

おそらくWordPressが自動更新したせいで不具合出たのかなと思い、下記を参考にバージョンを下げてみることに。

FTPソフト不要。WordPressを簡単にダウングレードするプラグイン「WP Downgrade Specific Core Version」 | ワードプレステーマTCD

ある程度バージョンを下げると正しく表示されたのでどのバージョンから不具合が出るのか確認するとどうやら5.3.2から5.3.3の間で不具合が発生することが分かり、ググってみると下記のサポートの投稿にたどり着きました。

5.3.3以降で投稿がアーカイブと判断される | WordPress.org 日本語

wordpress 5.4.1 からの障害について | WordPress.org 日本語

新しいバージョンからパーマリンクの処理が厳密化され、今までの設定では表示できなくなってしまったようです。
対処方法についても上記を参考にしてパーマリンクの最後にポストIDを追加してRedirectionプラグインで変更前後でURLがちゃんと飛ぶように設定してやることで問題なく表示されるようになりました。

WordPressに移行しました

XREAサーバーのMySQLやPHPのバージョンの関係でこれまで
とても古いバージョンのMovable Typeでブログを運営しておりましたが
このたびXREAサーバーのバージョンアップメンテナンスが実施されたおかげで
ブログをMovable TypeからWordPressに移行しました。

旧アドレスから新アドレスへ転送されるように設定したつもりですが
リンク切れなどありましたらご連絡ください。

仮想コムズリンクドライバ

Eternal SPU Pluginなどで有名だったTakashi Yano氏が開発された仮想コムズリンクドライバのファイルを探しております。公式サイトやinfoseekがなくなった関連でファイルがネット上から見つからなくなってしまいました。
過去のHDDを探してみましたが残念ながら見つかりませんでした。どなたかvcomslnk.zipまたはvcomslnk.vxdを所有している方いませんか?

数人の方からファイル持っていると連絡をいただき、無事vcomslnk.zipを入手することができました。ありがとうございます。
下記URLにアップロードしておくのでほしい方はダウンロードしてください。
http://nekokabu.s7.xrea.com/vcomslnk.zip

ISW13HT「HTC J」を触ってきた

120424_01.jpg
au NAGOYAにいってISW13HT「HTC J」の実機を触ってきました。
黒と赤が展示されていて裏蓋の表面処理が赤はスベスベ、黒はマット加工。
操作はさすがHTC、ぬるぬるのさくさく。
画面は有機ELで発色はすごく鮮やかだが、ペンタイルで若干ギザギザがきになる。
が、DIGNOほどじゃない。
ついでに展示されてた端末を色々いじってきたが、
GPSの精度がほとんどが700mの範囲内だったのに対し、
数十mで測位できたのはISW13HTの20mとXperia acro HDの30mだけだった。
htc J ISW13HT | スマートフォン | au
HTC J ISW13HT – HTC Smartphones

ISW13HT「HTC J」

HTCが公式サイトに、au向けスマートフォンとして発売予定の
ISW13HTの情報をフライング掲載してしまったようだ。
HTC、KDDI向けスマートフォン「HTC J ISW13HT」を発表!(訂正:お漏らしでした)
HTCの携帯は作り込みがしっかりしてて
ヌルヌル動くのでこの間ISW11Fに機種変したところだけど
これに変えたい・・・