見出し画像

【解決済】Raspberry Pi Zero WにPC98エミュ(SDL版np2)を入れたがエミュの起動に失敗する #PC98

注意事項

記事タイトルの通り未解決です。同じ状態になっている方や解決策をお持ちの方がいることを祈ってそのまま現状をメモっておきます。(追記・注:解決しました。詳細は後述。)

問題概要

上述の通り、下記のサイトを参考に、Raspberry Pi Zero + RASPBERRY PI OS(LEGACY) LITE (Raspberry Pi Imager v1.8.1でインストールできる2023/10/24時点のもの) の環境にSDL版np2を入れてnp2を実行したが、PC-98の「ピーコン」という起動音が鳴り、後述の画面になったまま状態が変化せず、エミュレータが起動しない。

起動画面。ここから状態が変化しない。

リモートからSSHでログインしてps auxコマンドを確認したが、np2プロセスは実行中、ゾンビプロセスにもなっておらず、SSH経由ならこの状態でrebootもshutdownも出来る状態。ただし、直接繋いでいるキーボードの入力は受け付けていない(F11を押下する等も試してみたが、状態変化無し。)

表示されているメッセージを手がかりにすると、どうやらSDL12-kms-dispmanx内のDISPMANX_SetVideoMode関数内でログ出力した後に状態が更新されなくなっているっぽい。
気になるのが、起動メッセージ?中の

Dispmanx: Physical mode: 4 x 516648056

というメッセージ。516648056ってディスプレイの何かの初期値にしては変な数値だなぁ、という感触。ただ、毎回変わるわけでもないのでゴミ値っぽくはなさそう…。
本来の処理が続くのであればディスプレイの画面解像度が640×400に変更されるはずだけどそこまで行っていないことや、上述のログはソースコード的にはSDL12-kms-dispmanx内のOpenGLの初期化関数(bcm_host_init)のコール直後に出力されていることから、OpenGLの設定周りですべきことが出来てないか、やってはいけないことをやってる事が原因のような気はしているのですが、現状ちょっとお手上げ状態です。

(上のリンクで注意喚起されているとおり、OpenGL有効設定周りの初期設定は弄っていないです。)

何かご存じの方がいらっしゃったらコメントいただけると大変助かります。

付記(2023.10.30)

上記でも参考にさせていただいているField Westさんからコメントをいただきまして、インストールしているライブラリ(SDL12-kms-dispmanx)が最新のRASPBERRY PI OS(LEGACY) LITEに対応していないことが原因でしょう、とのご指摘をいただきました(ありがとうございます!)。
ご指定いただいた、Field Westさんが記事作成時に使用したイメージを適用したところ、無事動作いたしました。(Field Westさんの当該記事は更新済み)

PC-98と言えばの時事ネタ。

ちなみに、当該のログ出力は正常動作時は以下のようになっていました。当該の異常値?は出力中のディスプレイの解像度のようですね。これが正しく取得できてないのか…。

正常起動時のログ。1920 x 1200 になっている

この記事が気に入ったらサポートをしてみませんか?