PSP Dev Memo

1.50での起動(kxploit)

メモリスティック入れ替えを必要としない1.50での起動方法が公開されました。 http://putoamo.addr.com/index2.html これは、XMB用のEBOOT.PBP(従来の1枚目)のディレクトリとして /PSP/GAME/HOMEBREW%/ を使用し、実行用のEBOOT.PBP(従来の2枚目)のディレクトリとして /PSP/GAME/HOMEBREW/ を使用するものです。HOMEBREWの部分はなんでも良いわけですが、後ろの%が重要ってことです。雰囲気的には、パス名生成にsprintfみたいなのを使っていて、そこを突いたんでしょうか。

やっぱ手を動かさないとダメですねぇ。といいますか、モチベーションが足りない今日この頃。次は何をしたらいいんでしょうねぇ。

1.51での起動

なんとなく思ったんですが、1.51でもXMBでのチェックを通れば起動はできちゃうかもしれません。1.5でのスワップと同じ方法で、1枚目のEBOOT.PBPをアップデータにしておいて、2枚目に起動したいののabosolute elfを入れて、同様に入れ替えしたらどんなもんでしょう。自分でテストしろって話もありますが。だれかやってみた人がいましたら、結果を教えてもらると。

  • アップデータのファイルの名前はupdateしかできません. -- 1.51 2005-06-18 19:45:05 (土)
  • 自作ゲームの名前のファイルをupdateにすると破損データになる -- 1.51 2005-06-18 19:46:34 (土)
  • だからできない -- 1.51 2005-06-18 19:46:56 (土)
  • フォルダ名だった -- 1.51 2005-06-18 20:48:08 (土)
  • 情報ありがとうございます。1枚目にアップデータをPSP/GAME/UPDATEに入れておいて、2枚目のPSP/GAME/UPDATEにabsolute elfが入ったEBOOT.PBPを入れるって感じでもダメでした? -- 2005-06-19 15:17:21 (日)
  • だめでした -- 1.51 2005-06-19 22:42:37 (日)
  • テストどうもです。やっぱ別の方法を考えないとダメですかね。 -- 2005-06-20 00:12:01 (月)
  • ・・・ですかね。 -- 1.51 2005-06-20 19:44:15 (月)
  • 少 し は 勉 強 し ろ ! 教えて君はRead meを読めば一発でわかるだろ!これでわからないのならカスタムファームウェアもできないんだろうな・・・これほど簡単なものないのにw -- ('A` 2006-08-06 10:59:31 (日)

GPUが解析できれば?

GPUが解析されればメチャクチャ速くなるって話があるようですが、少なくともエミュレータにおいては大きな効果はないんじゃないでしょうか。非整数倍率の拡大表示などでは大きな効果がありそうですが、単に表示だけだとすごいというほどの効果はないような。逆にバッテリが早くなくなりそうだし。ある程度は速くなると思いますけどね。

GPUの解析自体は、現時点では困難というわけじゃありません。すごく面倒だけど。あと、結果を基にどんなライブラリを作るかってのは難しそう。

1.5での起動(swaploit)

http://www.only4.info/psp-dev/ において1.5での自作ソフト起動方法が公開されました。これは起動時にメモリスティックを入れ替えることにより起動を可能にしたものです。これは以下の背景事情によると思われます。

  • XMBでMS起動プログラムとして認識するにはPBP形式でなければならない
  • PBP形式ファイルの中には実行ファイルが入っているが、この実行ファイル部分が、1.5では1.0において利用できたabsolute elfだと何故かうまく起動しない
  • システムのプログラムローダはEBOOT.PBPをロードするが、その場合PBP形式でなくても読み込んでしまう。つまり、EBOOT.PBPの中身がabsolute elfでも良い
  • しかし、EBOOT.PBPの中身がabsolute elfだとXMBで認識してくれない
  • なので、まずPBP形式のEBOOT.PBPをXMBに認識させ、それを実行させる途中でabosolute elfなEBOOT.PBPに入れ替えることで実行させてしまおう

という話です。なのでメモリスティックの入れ替えが必要なわけで。XMBでもロード時でも認識してくれるファイルを作ることができれば、1.5でも入れ替えしなくて読めるようになるはずですが、まだ難しいようで。

ちなみに、1.51以降ではチェックが厳しくなっているようで、別な方法を探さないとダメな模様。

ファーム書き換え

現時点においてファームウエアを書き換えることは可能です。適切なプログラムを組めば、1.0,1.5ともに内蔵フラッシュメモリの全域について更新することができます。ですが大変危険なのでオススメはしません。もしそういうプログラムを作ろうとする場合、以下に注意したほうが良いでしょう。

  • 方法によってはフラッシュメモリの全域を書き換えることはできません。いろいろと研究が必要です。
  • フラッシュメモリ内には機体毎に異なるシリアル番号等が書き込まれたエリアがあります。そのあたりを無用に更新しないよう十分な配慮が必要です。
  • 失敗した場合、起動できなくなり(現時点の知識では)修復も不能となります。イッパツで動かす気合が必要です。
  • 方法が一般化すると破壊活動に使われる可能性があります。あまりオープンにしすぎるのも微妙なところです。
    • まぁ時間の問題ですが。
  • 1.5についてはもうちょっと簡単に起動する方法があるかもしれません。そちらのほうがより良いかと。

gp設定について

従来のstartup.sにおいて、_start直後でgpを設定していますが、これは初期開発段階における試行錯誤の残骸です。現時点において、このgp設定がなくても動作するという報告がありますので、おそらくユーザー側で明示的に設定してやらなくても大丈夫なような雰囲気です。とりあえず動けばいい主義者なので、安全側に振ってあるところの再検討は後回しになりがちなため、まだ詳細な検討をしていません。

カーネルは.rodata.sceModuleInfoにあるgp初期値を参照しユーザー側に処理を渡す前に設定していると思われます。これも詳細に確認をしたわけではありませんので注意。単に想像です。

と書いていて思ったんですが、もしかしたらこのへんからカーネルに入り込めるかも。1つの可能性ですね。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sun, 14 Jan 2007 12:20:05 JST (6303d)