PSP xvi
PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

記事の間違いを報告 新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク
公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル
TAG>
全記事にタグをつけています http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター
このブログについて
このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。
著作権などの こまかい利用規約については、こちらを開いてお読み下さい
このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ
当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。
このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all
著作権などの こまかい利用規約については、こちらを開いてお読み下さい
このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ
当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。
このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all
PSPプログラミング 実行形式のファイルについての資料
2009/11/04
Wed. 08:07
PSPの実行モジュールは、PlayStation2 の様に、ELF形式のモジュールをベースにしています。
カーネルは、ネイティブコードで書かれた3通りのファイルを実行可能。
【 実行可能なファイル形式 】
・ELF - ベーシックELF形式
ハードコードされたアドレスにリンクされる(一般的には0x8900000番地以降へ)
・prx - カスタマイズされたELF形式
メモリ中のどこにでもリロケートできる。プラグイン等が そう。
・~PSP - 暗号化された実行モジュール
PSPSDK では、ELF や prx は生成できるが、~PSPへの暗号化は出来ません。
【 モジュール情報の構成 】
・モジュール名
・モジュールの属性。カーネルモジュールなど
・関数テーブル(未調査/情報求む)
・ヴァージョン
書き方
PSP_MODULE_INFO(モジュール名, モジュールの属性, ヴァージョン正数, ヴァージョン小数);
PSP_MAIN_THREAD_ATTR( メインスレッドの属性 );
書き方の説明
PSP_MODULE_INFO( )
モジュール情報を設定するマクロ
・モジュール名
英数記号での文字列(モジュールの名前 を 記述)
・モジュールの属性
PSP_MODULE_KERNEL もしくは 0x1000 で カーネルモード
PSP_MODULE_USER もしくは 0 で ユーザーモード
0x0800 で VSH モード
0x1006 もあります (詳細不明)
・ヴァージョン正数
モジュールのヴァージョン情報(正数部分)/おまけで記述する
・ヴァージョン小数
モジュールのヴァージョン情報(小数点以下部分)/おまけで記述する
PSP_MAIN_THREAD_ATTR( )
メインスレッド(main関数を実行するスレッド)の属性を設定するマクロ
カーネルモードなら 0 を記述
ユーザーモードなら THREAD_ATTR_USER を記述
サンプルを書いてみる
カーネルモードのサンプル
PSP_MODULE_INFO("NICEGAME1", PSP_MODULE_KERNEL, 0, 0);
PSP_MAIN_THREAD_ATTR(0);
ユーザーモードのサンプル
PSP_MODULE_INFO("NICEGAME2", PSP_MODULE_USER, 0, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);
実行モジュールをバイナリダンプしてみた。
【 参考にしたページ 】
アセンブリではじめるPSPセミナー(資料)
【 関連記事 】
PSPプログラミング EBOOT.PBPの構造を知ろう!
PSPプログラミング PSP の 1.50カーネルとか、3.xxカーネルとか についての講釈
PSPプログラミング EBOOT.PBP 生成用 Makefile 記述方法
PSPプログラミング プラグイン生成用 Makefile 記述方法
カーネルは、ネイティブコードで書かれた3通りのファイルを実行可能。
【 実行可能なファイル形式 】
・ELF - ベーシックELF形式
ハードコードされたアドレスにリンクされる(一般的には0x8900000番地以降へ)
・prx - カスタマイズされたELF形式
メモリ中のどこにでもリロケートできる。プラグイン等が そう。
・~PSP - 暗号化された実行モジュール
PSPSDK では、ELF や prx は生成できるが、~PSPへの暗号化は出来ません。
【 モジュール情報の構成 】
・モジュール名
・モジュールの属性。カーネルモジュールなど
・関数テーブル(未調査/情報求む)
・ヴァージョン
書き方
PSP_MODULE_INFO(モジュール名, モジュールの属性, ヴァージョン正数, ヴァージョン小数);
PSP_MAIN_THREAD_ATTR( メインスレッドの属性 );
書き方の説明
PSP_MODULE_INFO( )
モジュール情報を設定するマクロ
・モジュール名
英数記号での文字列(モジュールの名前 を 記述)
・モジュールの属性
PSP_MODULE_KERNEL もしくは 0x1000 で カーネルモード
PSP_MODULE_USER もしくは 0 で ユーザーモード
0x0800 で VSH モード
0x1006 もあります (詳細不明)
・ヴァージョン正数
モジュールのヴァージョン情報(正数部分)/おまけで記述する
・ヴァージョン小数
モジュールのヴァージョン情報(小数点以下部分)/おまけで記述する
PSP_MAIN_THREAD_ATTR( )
メインスレッド(main関数を実行するスレッド)の属性を設定するマクロ
カーネルモードなら 0 を記述
ユーザーモードなら THREAD_ATTR_USER を記述
サンプルを書いてみる
カーネルモードのサンプル
PSP_MODULE_INFO("NICEGAME1", PSP_MODULE_KERNEL, 0, 0);
PSP_MAIN_THREAD_ATTR(0);
ユーザーモードのサンプル
PSP_MODULE_INFO("NICEGAME2", PSP_MODULE_USER, 0, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);
実行モジュールをバイナリダンプしてみた。
150.PBP
0000:0000 00 50 42 50 PBP
0000:3251 7E 50 53 50 ~PSP
330.PBP , 550.PBP
0000:0000 00 50 42 50 PBP
0000:3445 7E 50 53 50 ~PSP
某.PBP (Homebrew)
0000:0000 00 50 42 50 PBP
0000:1BFB 45 4C 46 ELF
俺作ゲーム.PBP
000000 00 50 42 50 PBP
003C6C 45 4C 46 ELF
music.prx
000000 7F 45 4C 46 ELF
ScreenShot2.prx
000000 7E 53 43 45 40 ~SCE@
000040 7E 50 53 50 ~PSP
【 参考にしたページ 】
アセンブリではじめるPSPセミナー(資料)
【 関連記事 】
PSPプログラミング EBOOT.PBPの構造を知ろう!
PSPプログラミング PSP の 1.50カーネルとか、3.xxカーネルとか についての講釈
PSPプログラミング EBOOT.PBP 生成用 Makefile 記述方法
PSPプログラミング プラグイン生成用 Makefile 記述方法
- 関連記事
スポンサーサイト
[edit]
« PSPプログラミング 「CFW導入済み 全PSP」対応の Homebrew 作成方法 | PSPプログラミング コンパイルオプションについて調べてみました。 »
この記事に対するコメント
トラックバック
| h o m e |




