概要

上海の無名店で買った携帯ゲーム機「R36S」に、CFWのROCKNIXを入れようとした記録。

結論としては、買った端末はROCKNIXが対応しているR36Sとは別物のクローン機で、起動させられなかった。ついでに、純正ファームではセーブ機能も動いていないことが分かった。

追記: セーブは動く。付属説明書のホットキー表記が誤りで、正しくは FN+A でセーブ、FN+B でロード。

環境

  • R36S(クローン機、上海で購入)
  • ROCKNIX ROCKNIX-RK3326.aarch64-20260901-a.img.gz
  • 付属の純正SDカードをラズパイに刺して分析

ちなみにSDカードは64GB表記だったが、刺してみると15GB程度しか認識していなかった。本当の容量は調べていないから分からない

やったこと

元のSDカードをバックアップしてから、ROCKNIXのイメージをddで書き込んだ。書き込み自体は正常に完了し、fsckでも問題なし。

ところが本体に挿すと、赤い画面で以下の警告が出て起動しない。

TF card is damaged. Please repair or replace

ROCKNIXのロゴもカーネルログも出ないので、カーネルまで到達していない。extlinux.confの差し替え、パネル用オーバーレイの総当たり、別のカードやスロットなども試したが変化なし。

原因

起動する元カードとROCKNIXのカードを比べたところ、以下の違いがあった。

項目元カードROCKNIX
MBR無し(0xDEADBEEFで埋まっている)正常
FAT32の開始位置1 MiB16 MiB

元カードのMBRは一見壊れているように見えるが、これがこの機種の正常な状態だった。

どうやら本体の内蔵ブートローダはパーティションテーブルを読まず、1 MiB地点のファイルシステムを決め打ちで探しているらしい。ROCKNIXは16 MiB地点から始まるので、何も見つからず「damaged」と判定されると推測される。

追記(真の原因): この端末は GB350 / SF3000 系のクローンで、MIPS系SoC を積んでいる。本物のR36SはARM Cortexなので、ARM向けにビルドされたROCKNIX / ArkOS / JELOS / EmuELEC は1命令も実行できない。パーティション位置の問題ではなく、CPUアーキテクチャの不一致だった。1 MiB地点に置き直しても動かない。

おまけ:純正ファームの中身とセーブ問題

元カードは約15.6GBの単一FAT32で、ROMとルートファイルシステムが同居していた。中身はBuildroot 2021.05 + Rockchipの4.4系カーネルで、ArkOSやROCKNIXとは完全に別系統の作り。

セーブ用ディレクトリはあるものの、中のファイルのタイムスタンプは全て1980-01-01(工場出荷時のまま)。9月に買ってから一度もSDカードに書き込まれていないので、純正ファームはカードを読み取り専用で使っていて、セーブが機能しないと思われる。

追記(誤りだった): タイムスタンプが常に 1980-01-01 なのは、この端末にRTCが無く時刻を保持できないから。書き込まれていないのではなく、日付で新旧を判定できないだけだった。

セーブが効かなかった本当の理由は、付属説明書のキー表が別機種のものだったこと。実際の割り当ては cubegm/setting.xml に書かれている。

<gamemenuhotkey>SELECT+START</gamemenuhotkey>
<quicksavehotkey>FN+A</quicksavehotkey>
<quickloadhotkey>FN+B</quickloadhotkey>
<quicksnaphotkey>FN+START</quicksnaphotkey>
<savestatehotkey>DISABLE</savestatehotkey>
<memorysearchhotkey>R1+START</memorysearchhotkey>

FN+A / FN+B で実機のセーブ・ロードとも成功した。

まとめ

  • 「R36S」という名前で売られていても、中身が別物の個体がある
  • 壊れて見えるMBRが、その機種にとっては正常なこともある
  • cubegm があれば GB350 系クローン。ARM向けCFWは動かない
  • 付属説明書のキー表は信用しない。setting.xml が一次情報
  • RTCの無い機器では、ファイルのタイムスタンプで新旧を判定できない

素人なりの見解はこんな感じ。Discordコミュニティで同様の実績がないか確認しているけど、回答は期待していない。 これだから中華は楽しいんだ