-
Notifications
You must be signed in to change notification settings - Fork 10
hissorii/retrofd
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Latest commit | ||||
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