Miyoo miniにFM-7を移植してみた!

f:id:PocketGriffon:20220411092913j:plain

Miyoo miniを手に入れたので、その上で動くプログラムを作ってみた!

何度も利用しているけれども、今回もFM-7エミュレータを移植してみたよ(^-^)

単に表示されるだけなので、コレを動いたと言って良いのかどうか……(-_-;;

 

何も分からない手探り状態から始めたので、動かすまでにはだいーぶ苦労した(T-T)

 

Wi-Fi無し、有線LAN無し、ssh出来ない…と分かった時、さてどうしようか…と(^^;;

たとえネットワークが繋がったとしてもキーボードもマウスもタッチパネルも無いのだ…。

そういう用途のマシンじゃないから!がというのが答えだろうけど!(^-^;

 

動いてる感じを見つつ、Miyoo miniの構造を想像して、なんとかビルドしたプログラムを動かせるところまでこぎつけられた!

今のところ、私の理解としては以下な感じにまとまった。

 

Linux環境は32bit

SDL1を使用

スクリーンの座標0,0は右下

 

 

Linux環境は32bit

最近、Linuxを使おうとするとデフォルトの環境が64bitな事がある。

RaspberryPiを使う時も64bitがふつーに使えるようになってるし、特に32bitにこだわりがなければ64bitを選択する人が多いだろう。

私も多くのLinux環境は64bitで構築していた。

RaspberryPi4、Pi400、DevTerm、reTerminalなど。

 

Miyoo miniで動くバイナリを作るために(ある程度パワフルな)32bit環境が欲しかった。

しかし手元にあるのはポメラとBanana Pi。Banana Piのパワーがあれば問題なく作れるだろうな…と思ったけれど、今後のことも考えて新規に構築する事にした!

 

余ってたRaspberryPi3を使い、コンパクトな環境を用意!

f:id:PocketGriffon:20220411101815j:plain

この写真を撮りながら思ったが、Raspberry Pi400のSDカードを取り替えて32bitにしたら良かったんじゃないの?って思った!(T-T)

MacのParalelles Desktop上でもいいじゃんとも…orz

…思うところはたくさんあったが!(T^T)

とにかく物理的な32bit環境を準備した!(^^;;

 

SDL1を使用

これが今回一番ハマってしまった!

Miyoo miniのSDカード内(${SD}/miyoo/lib)に動的ライブラリが格納されているんだけど、そこにはSDL1しかなく…。

SDL2はおそらく本体内部に入ってるのかな…とか楽観的に考えていた…。

そしたらホントにSDL1しか無いようだ!(^^;;

f:id:PocketGriffon:20220411111424j:plain

試しにSDL2をSDカード内に入れて、SDL2用のプログラムが動かないか実験してみたが、芋づる式に必要なライブラリが出てきてしまい、うまく解決が出来なかった。すべてstaticなライブラリで動かそうとしても(なぜか…これはホントに何故か…)うまくいかない。

うーん……

 

仕方ないので、SDL2用に書かれたプログラムを、SDL1で動くように修正変更した!!

え?そんな手間が掛かる事までする??と思われそうだが、どーしてもどーしても!自分で書いたプログラムをMiyoo miniで動かしてみたかったのだ(^^;;

 

スクリーンの原点座標は右下

無事にSDL1に対応し、Miyoo mini本体で動かしてみて気がついたのだが、スクリーン座標の0,0が左上ではなく右下になっていた。

f:id:PocketGriffon:20220411103652j:plain

確かSDL2では画面の反転回転が出来た気がするけど、SDL1ではどうやってやるんだ??

調べてみたが良く分からなかったので、プログラムで反転させてしまった!(^^;;

ザッツ力技!

エレガントな解決じゃないなぁ…orz

 

実作業

今回は以下のような手順で作業を進めてみた。

 

まずはMac上で動いていたSDL2対応のFM-7をオリジナルとした。

 

これをSDL1対応に修正

私はSDL1を使ったことがなかったので、チュートリアルのようなサンプルから見始める流れになった(^^; うーん、やっぱり後発のSDL2の方が機能的にまとまってるのね!それを知れただけでも今回は収穫だったかも!!

 

Mac上のSDL1で問題なく動くようになったソースコードを、RaspberryPi3のX-Windowで動かしてみるMakefileの書き方(特にincludeパスなど)に違いはあったけれど、本体プログラムに影響は及ばず。無変更でそのまま動いた!

SDLを使うおかげで、MacLinux(というかUNIX+X-Window)の親和性はとても高い…と今回も感じたね(^-^)

 

RaspberryPi3でビルドして出来た実行バイナリをMiyoo miniのSDへコピーし、Miyoo mini本体から起動

この作業を何度やったことか!(TOT)

動作に問題がある(プロセスが終了する)と何事もなくMiyoo miniのメニューに戻ってしまうため、内部で何が起きて落ちているのかがはっきりしない。

 

さいわい、launch.sh に 「./fm7 >& log.txt」などと書いておけば、動作時のログを残せたので、それを見ながら修正を加えていった。

むしろ何度も何度もSDカードを抜き差しするので、カードスロットは大丈夫かな…と心配になったぞ!(^^;;

 

書いてしまえば数行で済む作業だけど、作業自体の手探り感は半端なかった(T^T)

f:id:PocketGriffon:20220411111658j:plainf:id:PocketGriffon:20220411111639j:plain

f:id:PocketGriffon:20220411111728j:plainf:id:PocketGriffon:20220411111745j:plain

 

おわりに

とりあえずMiyoo miniで何かを動かしてみよう!と思った目的は達成できた!

Funkey Sではほとんど何も出来ずにいたので、自分なりの進展があった気がする!

pocketgriffon.hatenablog.com

 

そういえば先日、ゲームカートリッジのイメージを吸い出せる機材を手に入れた!

普段からあまりゲームをする人ではないのだけど、エミュレータを作りたいと思うマシンはいくつかあるので、そのために…という感じだ!(^-^)

 

吸い出したイメージを利用して、Miyoo miniで動かすという事は是非やってみたい!

 

FM-7開発中、Miyoo miniは一度も充電しなかった。

フル充電状態で開発を始め、終了するまでに4〜5時間くらいはあったと思うけれど、その間何度も電源を入れては動作確認をしていた。

開発終わって充電をしてみたけど、ほとんど満充電状態だった…。

小さな筐体だけど電池は持ちそうだね!(^^)

 

Onion OSやTakiiiiiiii環境でも動かせるのかなぁ…。

フォルダ構成が同じ、または似ていれば動かせる気はするけれども!

どっちかまたは両方を近いうちに試してみたい(^^)

 

ではまた次回!(^-^)ノ