-
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 | |
---|---|---|---|---|
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