JELOS KAI RGB10 MAX3とチラシの裏のメモ
先に結論 JELOS Kai for RGB10 MAX3 (RK3566)
BSP対応の最終ソース版はこちら
こっちがメインです、問題なくビルドも完走しました
動作確認もしましたが特に不備はなさそう?Bluetoothは未検証。
バッチリ1.19.1で動作しています。
ファミコンも動作OK
他のゲームも特段の問題は見当たりませんでした
ただRGB30とか353PSをお持ちの人はArkOSでよいと思います。
おまけ
前回記載した1月分ソースにGeolithを追加した
RK3566用JELOSを置いておきます。
ARKOSがないRGB10MAX3用に作ったのですが
最低限の動作確認しかしていないので、一応人柱さん向けです
旧BSPビルドなのもソースで確認済です。
忘備録メモ(ムダに長いので注意)
JELOSのBSPビルドだとGeolith-lrが
Windowsバイナリでビルドされてしまいエラー落ちする。
# packages\emulators\libretro\geolith-lr\package.mk
(略)
make_target() {
cd libretro
make -f ./Makefile platform=${DEVICE_NAME}
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib/libretro
cp geolith_libretro.so ${INSTALL}/usr/lib/libretro/
}
make -f ./Makefile platform=${DEVICE_NAME}
この部分でmakeしているが、${DEVICE_NAME}に何が入るのか?
上記サイトを参照にDEVICE_NAMEを検索してみる(一部のみ記載)
projects\Rockchip\devices\RK3566\options: DEVICE_NAME="RK3566"
projects\Rockchip\devices\RK3566-BSP\options: DEVICE_NAME="RK3566"
定義からRK3566になっていることが判明
GeolithのMakeファイルを確認すると
そのままではRK3566ではMakeの引数がヒットしないのでどうしてるのか?
で、Patchを当ててるのが分かるので確認する。
# /packages/emulators/libretro/geolith-lr/patches/000-platform.patch
(略)
+# @DEVICE@
+else ifeq ($(platform), @DEVICE@)
+ TARGET := $(TARGET_NAME)_libretro.so
+ fpic := -fPIC
+ SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
+ CFLAGS+=-fsigned-char
+ FLAGS += -DARM
+ FLAGS += -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@
+ FLAGS += -fomit-frame-pointer -ffast-math
+
else ifeq ($(platform), emscripten)
TARGET := $(TARGET_NAME)_libretro_$(platform).bc
STATIC_LINKING = 1
Patchの内容はザックリ言うと
RK3566(ビルドのSoCに応じて変動)の引数を有効にして
デバイスにあわせたCPU情報を書き込んでくれるもの
projects\Rockchip\devices\RK3566-BSP\options
case ${TARGET_ARCH} in
aarch64)
TARGET_KERNEL_ARCH="arm64"
TARGET_PATCH_ARCH="aarch64"
TARGET_CPU="cortex-a55"
TARGET_CPU_FLAGS="+crc+crypto+fp+simd"
TARGET_FPU="fp-armv8"
TARGET_FLOAT="hard"
TARGET_FEATURES="64bit"
./Makefile
RK3566-BSP:
unset DEVICE_ROOT
DEVICE_ROOT=RK3566-BSP PROJECT=Rockchip DEVICE=RK3566-BSP ARCH=arm ./scripts/build_distro
DEVICE_ROOT=RK3566-BSP PROJECT=Rockchip DEVICE=RK3566-BSP ARCH=aarch64 ./scripts/build_distro
上記2つのファイルから定義が分かったので当てはめる
+# RK3566-BSP
+else ifeq ($(platform), RK3566-BSP)
+ TARGET := $(TARGET_NAME)_libretro.so
+ fpic := -fPIC
+ SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
+ CFLAGS+=-fsigned-char
+ FLAGS += -DARM
+ FLAGS += -mcpu=cortex-a55 -mtune=cortex-a55
+ FLAGS += -fomit-frame-pointer -ffast-math
+
恐らくこんな感じになると思われる。
1月分では問題なくビルドできたのでRK3566記載は問題ない(ハズ)
最終版のBSPビルドのパッチではRK3566-BSP記載でヒットしなくなる。
ならWindowsだな!ってなった感じ?
解決編
対応策その1
geolith-lr\package.mkに渡すDEVICE_NAME(RK3566)をDEVICE(RK3566-BSP)に書き換える
# packages\emulators\libretro\geolith-lr\package.mk
(略)
make_target() {
cd libretro
make -f ./Makefile platform=${DEVICE}
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib/libretro
cp geolith_libretro.so ${INSTALL}/usr/lib/libretro/
}
対応策その2
Patch側のDEVICE(RK3566-BSP)をDEVICE_NAME(RK3566)に書き換える
対策その1でビルド
ごー!
とりあえず対応策その1でビルド完走です
これでやりたかったことは完了!
ARKOSのビルドを確認(参考)
ARKOSはSoC別にコアビルドが独立してるので読みやすかったです。
Patch適応のコードは書かれてるけど
実際にはファイルがないので、ここは予備的な記述と思われる。
cd geolith-libretro/
geolith_patches=$(find *.patch)
if [[ ! -z "$geolith_patches" ]]; then
for patching in geolith-patch*
do
patch -Np1 < "$patching"
if [[ $? != "0" ]]; then
echo " "
echo "There was an error while applying $patching. Stopping here."
exit 1
fi
rm "$patching"
done
この先を確認するとmakeを編集してるっぽい。
fi
sed -i '/a53/s//a55/g' libretro/Makefile
sed -i '/rpi3_64/s//rk3566/' libretro/Makefile
make -C libretro/ clean
make -C libretro/ platform=rk3566 -j$(nproc)
sed -i '/a53/s//a55/g' libretro/Makefile
libretro/Makefile ファイルの a53 を含む行を探し
その行内のすべての a53 を a55 に置換する。
sed -i '/rpi3_64/s//rk3566/' libretro/Makefile
libretro/Makefile ファイルの rpi3_64 を含む行を探し
その行内の最初の rpi3_64 を rk3566 に置換
つまりRaspberryPi3の64bitビルドを乗っ取ってRK3566にしている
挙動としては問題なくA55最適化されるから問題なし?
ちからわざ(非推奨・旧解決策)
ここに2月ってウソついた1月分のGeolith-lrビルドがあるじゃろ?
それをBSP版のビルドフォルダーにポイ、ソースもぽい!
ビルドスクリプト「お!ビルド済みやな!ほなビルド飛ばしてコピーしとくわ!」
計画通り!
動作確認できました!
しめ
32GBだとメインメモリが足らなくなってきました!!(ドーン
大昔のパソコンは640kbだったというのに。
主な原因はComfyUIでの4倍アップスケール繰り返すと
利用メモリが90%以上になってPCが止まる事
こうなると最悪、主電源切らないとダメ。
再起動できない、電源ボタン長押しでオフも出来ない、というありさま;
もう一つはJELOSのビルドでメモリ不足から挙動が怪しくなること。
エラーから再ビルドでリークするのかメモリが85%以上消費すると挙動不審に
サブPCにubuntu入れて、そっちでやる方がいいんでしょうけどねえ;
PCManagerからメモリ開放してたのですが
いつの時代だよ!?ってなったんで64GBに変更する感じです。(注文済)
N100PCが1台買える金額なの、ホント価格バグってますよね(N100PCが)
そんな感じでビルド話はひと段落かなと。
ディスカッション
コメント一覧
まだ、コメントがありません