Skip to content

レトロフrなんとかAndorid化計画

Notifications You must be signed in to change notification settings

hissorii/retrofd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ade9d02 · Mar 30, 2016

History

1 Commit
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016
Mar 30, 2016

Repository files navigation

retrofd (レトロ某ゲーム機 android化SDカードイメージ)
                                                                     2016/03/30

本SDカードイメージを使用することにより、レトロゲームカートリッジを装着して
プレイすることのできるゲーム機(以下、レトロ某)をAndroid化します。

もともとレトロ某の中身はAndroidではありますが、Android用の任意のapkファイルを
容易にインストール、実行できるようになります。


0. 注意事項

  0.1 免責

    本ソフトウェア/SDイメージ等を使用したことによる、いかなる損害も作者は
    責任を負いません。
    あくまでも自己責任での使用をお願い致します。

  0.2 データのバックアップ

  ・本体に保存されたクイックセーブ等のデータは、あらかじめバックアップ
    してください

  0.3 本体への影響

  ・本SDカードイメージを使うと、レトロ某本体内の保存領域(GUIの右上の方に
    本体領域として見える3GB程度の領)を/mnt/sdcardとして使用します

  0.4 FACTORY TEST MODE

  ・レトロ某GUIが「FACTORY TEST MODE」で立ち上がると、本体NAND上の
    以下の領域が初期化(クリア)されます。
    /data (mtdblock6), /cache (mtdblock5), /mnt/sdcard (mtdblock9)

    上記領域が初期化されると、工場出荷状態となり本体バージョンが
    初期バージョンに戻ります。

    ※出荷時v1.0であれば、v1.0に、出荷時v1.1であればv1.1に戻ります。
      ただし、システムアップデート(v1.5等)を行っている場合は、
      出荷時バージョンには戻らず、最後にシステムアップデートした時の
      バージョン(v1.6以上ならv1.5)に戻ります。

    また、本体に保存したセーブデータ等もクリアされます。

  ・通常はFACTORY TEST MODEにならない様にしていますが、本体を初期化したい
    場合などは、retrofd.cfgを編集するとFACTORY TEST MODEで立ち上げることも
    できます

  0.5 apkファイルについて

  ・apkはcpu種別がある場合は、ARM用を用意してください
  ・現在の本体Androidバージョンは4.2のような気がします
  ・Google playで公開されているapkをダウンロードする方法等は、各自で調べて
    ください
  ・起動できない、うまく動作しない物も多々あるかと思いますが、その場合は
    あきらめるか各自調査してください(聞かれても答えられません)

  0.6 SDカードイメージの譲渡・再配布等

  ・本SDカードイメージはフルスクラッチで作成していますので、
    自由に譲渡・再配布等が可能です。
    ただし、一度レトロ某で起動したSDカードはpartition 2/3に本体NAND内の
    情報をコピーします。一度レトロ某で起動したSDカードまたはそれを
    イメージ化したものは譲渡・再配布等することを禁じます。

  0.7. ライセンス

  ・本プログラム群は修正BSDライセンスとします


1. 下準備

  1.1 用意するもの

  ・以下を用意してください

    (1) 8GB/16GB/32GB いずれかのサイズのmicroSDカード
    (2) 本SDカードイメージ(SDカードサイズにあうものを選択してください)
    (3) インストールしたいアプリとホームアプリのapkファイル

       ※インストールしたアプリを起動させるため、少なくとも一つは
         ホームアプリをインストールする必要があります
       ※ホームアプリによっては、操作にUSBマウスが必要になる場合があります

  1.2 SDカードイメージのmicroSDカードへの書き込み

  ・本SDカードイメージをWin32 Disk Imager等を用いてSDカードに書き込みます

    ※本SDカードイメージは複数のパーティションに区切られています。
      SDカードを別用途で使う場合はSDFormatter等を用いてフォーマットし直して
      ください。

    ※Windowsで見ると出来上がったSDカードの容量は本来より2GB程小さく見えます
      (Windowsで見ないext4領域で2GB程使っているため)

  1.3 apkファイルのmicroSDカードへの書き込み

  ・作成したSDカードをPCで開きます。
    (WindowsではFAT32の領域(partition 1)のみ見えます)

  ・/retrofd/install_apk/ディレクトリにインストールするapkファイルを
    コピーしてください


2. 起動

  (1) 本SDカードを本体に装着し起動します

  (2) install_apkディレクトリにapkファイルを置いた場合は、自動で
      再起動しますので、GUIが起動してもそのままお待ちください

      ※apkファイルの大きさや量により、GUI起動後、自動再起動まで数分かかる
        場合があります

  (3) ホームアプリをインストールした場合は、ホームアプリ選択画面が出ますので
      ホームアプリかレトロ某GUIのいずれか起動したい方を選択してください

      ※インストールが完了したapkファイルは、インストールの成功・失敗に
        かかわらず/retrofd/install_done/に移動します
      ※インストール結果は/retrofd/install_done/inst_err.txtに出力されます
      ※成功した場合もinst_err.txtにpkg: 〜 は出力されます
      ※インストールが完了したapkファイルは削除して構いません

  (4) インストールしたアプリを起動する場合は、ホームアプリから起動してください

  (5) 以降、新たにアプリをインストールする場合は、ファイラーアプリを
      インストールしてそこからインストールするか、
      SDカードの/retrofd/install_apk/にapkを置いて本体を(再)起動してください

      ※install_apkにapkファイルを置いた場合は、起動後に自動インストール、
        自動再起動します


3. ディレクトリ構成

  3.1 /data, /cache

  ・本体NANDの代わりにSDカードのpartition 2, 3 (ext4)を使用します。
    それぞれ1.5GB弱, 300MB弱確保しています。

  3.2 /mnt/external_sd

  ・SDカードのpartition 1 (FAT32)を使用します。
    SDカード容量から2GB程度少ないサイズがこの領域に割り当てられます。
    (32GBSDカードイメージでは、30GB弱確保されます)

    ※レトロ某GUIでゲームをインストールした場合も、この領域に保存されます

  3.3 /mnt/sdcard

  ・本体NAND (mtdblock9, FAT32)を使用します。
    容量は初期状態で3GB程度です。


4. 設定ファイル retrofd.cfg

・SDカードのFAT32領域にある/retrofd/retrofd.cfgを書き換えることで、
  状態を変化させることができます。

  4.1 RF_CLR_SDP23 (初期値:no)

  ・yesにして起動すると、SDカード上の/dataと/cacheが初期され、本体NANDの
    /data, /cacheをコピーし直し、インストールしたapkは削除されます

    ※本処理を行うと、SDカードに/retrofd/rfd_clr_doneというファイルを
      作成します。後処理としてこのファイルをクリアし、本設定をnoに戻して
      おいてください。

    ※/mnt/sdcardは初期化しません

  4.2 RF_FTM (初期値:no)

  ・yesにすると、レトロ某GUIがFACTORY TEST MODEで起動します。
    レトロ某GUIの画面下に「FACTORY TEST MODE」と表示されます。
    本体NANDの/data, /cache, /mnt/sdcard が初期化されます。
    ========

  4.3 RF_LOGCD (初期値:no)

  ・yesにすると、1秒毎にログ(/mnt/ram/log/配下に置かれる)をチェックし、
    まだSDカードにコピーしていない新しいログがある場合はSDカードの
    FAT32領域/retrofd/log/にコピーします


5. adb有効化、root化

・SDカードのFAT32領域にある/retrofd/local.propを修正することで、
  adbを有効化したりroot化が可能になります。
  デフォルトはadb/root化ともに無効となっています。
  adbを有効にするにはlocal.prop.adbをlocal.propにリネーム、
  adb有効化/root化はlocal.prop.adb_rootedをlocal.propにリネームして
  再起動してください。

  ※root化状態で起動するとゲーム画面が出なくなるなど副作用があります。
    必要な場合のみ有効にしてください。

  ※adbを有効にすると、本体右側のUSB(OTG)ポートがUSBの受け側(非ホスト側)に
    なり、PCと接続できるようになりますが、パッド等の周辺機器は接続できなく
    なります。


6. レトロ某 アップデート

・v1.1~v1.4のような小規模(アップデータが10数MB程度)の場合は、本SDカードを
  使用したままアップデートをすれば、本SDカード上の領域をアップデートします。
  本体NAND上の領域はアップデートしません。

・v1.5のような大型のアップデートの場合は、未検証なので本SDカードを使わずに
  通常の方法でアップデートし、クリーンなSDイメージで環境を再構築するのが
  無難です。


7. ソースファイル

  7.1 rfgui_no_ftm.c

  ・(SDカード上の)/data/dalvik-cache/にあるレトロ某GUIのdexファイルに
    パッチを当て、「FACTORY TEST MODE」にならない様にするプログラム
  ・バイナリ中のRETRON5___BOOTSという文字列(実際にはascii code)を
    別の文字列retrofdretrofd...に置き換えます
  ・-rオプションでパッチを当てていない元の状態に戻します
  ・NDKでbuildします(ndk-build)

  7.2 mk_rfd.sh

  ・Linux等で実行し、本SDカードイメージを作成するスクリプト

    ※fileコマンドの出力結果をsed処理したりしているので、環境によっては
      正しく動かないかも

  7.3 bootscript.sh/retrofd.sh/inst_apk.sh/rfd_logcd.sh

  ・本体起動時に実行されるスクリプト群
  ・/init.rc -> /mountfs.sh -> /data/bootscript.sh -> /data/retrofd.sh ->
    /rfd_tmp/inst_apk.sh -> /rfd_tmp/rfd_logcd.sh の順番で起動されます

    ※後ろ2つはnohup, バックグランドで実行されます

    7.3.1 bootscript.sh

    ・retrofd.sh/local.propが更新されている場合はファイルを置き換えます
    ・retrofd.shを起動します
    ・本ファイルは変更が面倒(ext4領域にあるため)なので必要最低限の処理のみ
      行います
    
    7.3.2 retrofd.sh

    ・(一度だけ)本体NAND上の/data, /cacheをSDカードのpartition 2, 3にコピー
    ・FAT32領域にあるretrofd.sh/local.propがSDカードの/dataにあるものと
      異なる場合はSDカードの/dataのファイルを更新する
    ・スクリプト・実行ファイルを/パーティションにコピーし、実行権をつける
    ・rfgui_no_ftmの呼び出し(FACTORY TEST MODE抑止のパッチあて)
    ・v1.5で導入されたcpu使用パラメータ調整の設定
    ・inst_apk.shのバックグラウンド呼び出し
    ・バックグランド呼び出しは処理を一旦init.rcに戻して、
      zygote -> system_serverを起動させるため
    ・rfd_logcd.shのバックグランド呼び出し

    7.3.3 inst_apk.sh

    ・system_serverプロセスが起動するのを待って、apkファイルを
      インストールします
    ・すべてのapkをインストール完了後、本プロセスは終了します

    7.3.4 rfd_logcd.sh

    ・ログ・コピー・デーモン。kernel/init起動処理完了後も生き続けます。
    ・すべてのretrofdログはSDカードへの書き込み回数を抑制するため、ramfs上の
      /mnt/ram/logに出力します。(リリース版はコメントアウト済みで出力しない)
      だがしかし、adbを有効化しないとログが読めないのは不便であるため、
      retrofd.cfgでRF_LOGCD=yesとした場合は、ログをSDカードのFAT32領域に
      コピーします。(既にコピー済みのログは上書きしない仕様)
    ・ログの監視は1秒毎です。/mnt/ram/logをチェックし、SDカードに未コピーの
      新しいログがある場合はSDカードの/retrofd/log/にコピーします。
    ・ログの出力先はソース内のdstd=~で定義しています。ログの出力先を
      変更したい場合はdstd=~の~の部分を修正してください。


8. 履歴

  2016/03/30 初期リリース(ver1.0)


ひっそりぃ(hissorii)
http://hissorii.blog45.fc2.com (ひっそりぃドットコム)
GitHub: https://github.com/hissorii/retrofd
Twitter: @hissorii_com