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プログラミング RPG TEST v0.01 勇者が歩くよ 【解説】
2010/10/26
Tue. 07:28
はい、解説です
素材は 標準PSPで表示・再生できるフォルダに入れてますでしょうか。
このRPGはまだ開発中なので、素材は EBOOT.PBP と別フォルダが良いと判断してます。
【 今回は、勇者の描画方法についてだけ解説 】
勇者は、上下左右の4方向に3パターンで合計12枚のキャラ絵を使用しています。
配布素材はDXライブラリPortable でも扱いやすい構成になっていましたので、勇者の絵は 背景を透過させただけで殆ど弄っていません。
勇者の絵は、308行目で読み込んでいます。
> LoadDivGraph( GRPH_HERO ,12,3,4,32,48,&HDL_Graph_Hero[0][0]);
↑これです。画像の分割格納読み込みをやっています。
これは、全部で画像を12個に分割し、横3列、縦4行、横幅32ピクセル、縦幅48ピクセルにして、その分割した画像のハンドルを、二次元配列HDL_Graph_Hero に順番に格納させる命令です。
&HDL_Graph_Hero[0][0] は配列の先頭のポインタですよ
注意:画像の分割数は最低でも1です。うっかり0にすると実行時に挙動がおかしくなります。コンパイルエラーにはならないので十分気を付けて下さい。

配布されているこの絵ですが、どう扱えば良いか?
縦は「向き」ですね。向きの定義はこれです。32行目からの部分。
横は「パターン絵」とでも言いましょうか。どこで「モーション絵」になるように定義をしているかと言うと、59行目です。
> int PIC_Walk_Step[4] = { 1,0,1,2 };
↑この数値は、モーション絵のパターン番号の定義です。「Hero_Step」という変数を1ずつカウントして足踏みを実現しています。
「0,1,2,3,0,1,2,3,…」に対応させて「1,0,1,2,1,0,1,2,…」という数値を導けるようにしています。こういうのは変数に入れて定義しておけば簡単に処理できます。
勇者の表示(描画)は、198行目の
> DrawGraph( 224,104,HDL_Graph_Hero[Hero_MUKI][ PIC_Walk_Step[(Hero_Step>>4)] ],TRUE );
です。
PIC_Walk_Step[(Hero_Step>>4)] の (Hero_Step>>4) は何かと言うと Hero_Step÷16 の商を求める計算式の高速版です。2の4乗は16ですから。
16で割っている理由は、足踏みのアニメーション絵の切り替え速度が そのままのHero_Stepの値 では早すぎたからです。
つまり、16/60秒(約 0.3秒)ごとに1枚ずつ、足踏みのアニメーション絵の切り替えをやっているのです。
1モーションに4枚の絵を使っていますので、16/60秒×4倍=64/60秒(約 1.1秒)かかる、という計算になります。
Hero_Step のカウントは 189行目の
> Hero_Step = (++Hero_Step)&(63);
↑これです。増加させたあとの&(63)は、カウンタの周期が1モーション=64フレーム(16フレーム×4パターン絵)だから0~63の範囲になるようにする計算式です。
63(10進数)は、0x3F(16進数)/ 00111111(2進数)です。
つまり、カウンタ値を 00111111(2進数)でマスクして値が63を越えない処理をする均一速度な高速版なのです。
解りやすく書いたら
++Hero_Step;
if(Hero_Step > 63) Hero_Step = 0;
↑こういうことです。if文は、コンパイルすると「条件分岐処理」に機械語翻訳される(アセンブル)ので真の場合と偽の場合とで処理速度が変化します。その為、スピード重視なゲームではif文の羅列はお薦め出来ません。
2進数で考える、左シフト演算や&演算は、ビット演算です。論理ビット演算と算術ビット演算があります。コンピュータが得意な技ですから覚えてくださいね。論理ビット演算は ふつう unsigned数値でやります。算術ビット演算は符号付き数値でやります。
シフト演算については過去記事をおさらいして下さい
背景の描画方法は、解説要らないと判断しましたので省略。
次回は、マップチップを使った背景の実装とスクロール実装をやります。
続きを読むに、RPG_TEST_v0.01 の全ソースコードを貼り付けてあります。以後、必要箇所だけソースコード掲載します。
閲覧推奨ブラウザは、FireFoxです(行番号も表示されるので)。
素材は 標準PSPで表示・再生できるフォルダに入れてますでしょうか。
このRPGはまだ開発中なので、素材は EBOOT.PBP と別フォルダが良いと判断してます。
【 今回は、勇者の描画方法についてだけ解説 】
勇者は、上下左右の4方向に3パターンで合計12枚のキャラ絵を使用しています。
配布素材はDXライブラリPortable でも扱いやすい構成になっていましたので、勇者の絵は 背景を透過させただけで殆ど弄っていません。
勇者の絵は、308行目で読み込んでいます。
> LoadDivGraph( GRPH_HERO ,12,3,4,32,48,&HDL_Graph_Hero[0][0]);
↑これです。画像の分割格納読み込みをやっています。
これは、全部で画像を12個に分割し、横3列、縦4行、横幅32ピクセル、縦幅48ピクセルにして、その分割した画像のハンドルを、二次元配列HDL_Graph_Hero に順番に格納させる命令です。
&HDL_Graph_Hero[0][0] は配列の先頭のポインタですよ
注意:画像の分割数は最低でも1です。うっかり0にすると実行時に挙動がおかしくなります。コンパイルエラーにはならないので十分気を付けて下さい。

配布されているこの絵ですが、どう扱えば良いか?
縦は「向き」ですね。向きの定義はこれです。32行目からの部分。
#define MUKI_SHITA 0 // 下向き
#define MUKI_HIDARI 1 // 左向き
#define MUKI_MIGI 2 // 右向き
#define MUKI_UE 3 // 上向き
横は「パターン絵」とでも言いましょうか。どこで「モーション絵」になるように定義をしているかと言うと、59行目です。
> int PIC_Walk_Step[4] = { 1,0,1,2 };
↑この数値は、モーション絵のパターン番号の定義です。「Hero_Step」という変数を1ずつカウントして足踏みを実現しています。
「0,1,2,3,0,1,2,3,…」に対応させて「1,0,1,2,1,0,1,2,…」という数値を導けるようにしています。こういうのは変数に入れて定義しておけば簡単に処理できます。
勇者の表示(描画)は、198行目の
> DrawGraph( 224,104,HDL_Graph_Hero[Hero_MUKI][ PIC_Walk_Step[(Hero_Step>>4)] ],TRUE );
です。
PIC_Walk_Step[(Hero_Step>>4)] の (Hero_Step>>4) は何かと言うと Hero_Step÷16 の商を求める計算式の高速版です。2の4乗は16ですから。
16で割っている理由は、足踏みのアニメーション絵の切り替え速度が そのままのHero_Stepの値 では早すぎたからです。
つまり、16/60秒(約 0.3秒)ごとに1枚ずつ、足踏みのアニメーション絵の切り替えをやっているのです。
1モーションに4枚の絵を使っていますので、16/60秒×4倍=64/60秒(約 1.1秒)かかる、という計算になります。
Hero_Step のカウントは 189行目の
> Hero_Step = (++Hero_Step)&(63);
↑これです。増加させたあとの&(63)は、カウンタの周期が1モーション=64フレーム(16フレーム×4パターン絵)だから0~63の範囲になるようにする計算式です。
63(10進数)は、0x3F(16進数)/ 00111111(2進数)です。
つまり、カウンタ値を 00111111(2進数)でマスクして値が63を越えない処理をする均一速度な高速版なのです。
解りやすく書いたら
++Hero_Step;
if(Hero_Step > 63) Hero_Step = 0;
↑こういうことです。if文は、コンパイルすると「条件分岐処理」に機械語翻訳される(アセンブル)ので真の場合と偽の場合とで処理速度が変化します。その為、スピード重視なゲームではif文の羅列はお薦め出来ません。
2進数で考える、左シフト演算や&演算は、ビット演算です。論理ビット演算と算術ビット演算があります。コンピュータが得意な技ですから覚えてくださいね。論理ビット演算は ふつう unsigned数値でやります。算術ビット演算は符号付き数値でやります。
シフト演算については過去記事をおさらいして下さい
背景の描画方法は、解説要らないと判断しましたので省略。
次回は、マップチップを使った背景の実装とスクロール実装をやります。
続きを読むに、RPG_TEST_v0.01 の全ソースコードを貼り付けてあります。以後、必要箇所だけソースコード掲載します。
閲覧推奨ブラウザは、FireFoxです(行番号も表示されるので)。
main.c
- /*****************************************************************************
- * main.c DXライブラリPortable v0.5.7版 *
- * RPG TEST v0.01 *
- * *
- * このソースコードはBSDライセンスとします *
- * *
- * 製作:猫山猫三郎猫宗 in 2010.10.24(SUN) *
- *****************************************************************************/
- #include <dxlibp.h>
- #include <stdio.h>
- #include <string.h>
- //#include "mydef.h"
- /*****************************************************************************
- * define
- *****************************************************************************/
- //#define SCRBUF0 (char*)(0)
- #define SCREEN_WIDTH 480 // 横幅は 480ピクセル
- #define SCREEN_HEIGHT 272 // 縦幅は 272ピクセル
- #ifndef PSP_MODULE_KERNEL
- #define PSP_MODULE_KERNEL 0x1000
- #endif
- #ifndef PSP_MODULE_USER
- #define PSP_MODULE_USER 0
- #endif
- #define MP3_EXIST 1 // BGM.mp3 ファイルがある
- #define MP3_NOT_EXIST 0 // BGM.mp3 ファイルが無い
- #define MUKI_SHITA 0 // 下向き
- #define MUKI_HIDARI 1 // 左向き
- #define MUKI_MIGI 2 // 右向き
- #define MUKI_UE 3 // 上向き
- #define Hero_STOP 0 // 勇者 止まる
- #define Hero_MOVE 1 // 勇者 歩く
- #define XVI_COLOR_DARKGREEN 0xFF008000 // 深緑色
- #define XVI_COLOR_YELLOW 0xFF00FFFF // 黄色
- #define XVI_COLOR_LIGHTBLUE 0xFFE6D8AD // 水色
- #define SND_BGM "ms0:/MUSIC/RPG/BGM.mp3" // BGM
- #define GRPH_LOADING "ms0:/PICTURE/RPG/LOADING.png" // なう・ろーでぃんぐ
- #define GRPH_HERO "ms0:/PICTURE/RPG/勇者.png" // 勇者 の スプライト
- #define GRPH_SIBA "ms0:/PICTURE/RPG/芝.png" // 背景 の 芝
- /*****************************************************************************
- * groval
- *****************************************************************************/
- int HDL_Graph_Shiba; // 芝生の画像ハンドル
- int HDL_mp3; // BGM.mp3 のハンドル
- int flag_mp3; // BGM.mp3 ファイルがあれば MP3_EXIST
- int HDL_Graph_Hero[4][3]; // 勇者の画像ハンドル(4方向×3パターン)
- int PIC_Walk_Step[4] = { 1,0,1,2 }; // 歩きのステップ番号に対するパターン絵の指定
- int HDL_Graph_BG; // 背景の画像ハンドル(とりあえず芝生)
- int Hero_MUKI; // 勇者の向き( MUKI_***** )
- int Hero_Step; // 勇者の歩きステップ具合( 0~3 )
- int Hero_MOVE_flag; // 勇者が歩くかどうかのフラグ
- /*****************************************************************************
- * Original Functions
- *****************************************************************************/
- void main(void);
- void messages(void);
- void action(void);
- void Draw_haikei(void);
- void ScreenSettings(void);
- void mp3checker();
- int pic_load(void);
- int initton(void);
- /*****************************************************************************
- * もじゅ~る・いんふぉ / メインコードはユーザモード
- *****************************************************************************/
- PSP_MODULE_INFO("PSP_RPG", PSP_MODULE_USER, 0, 0);
- PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
- //PSP_HEAP_SIZE_KB(-2048);
- //PSP_MAIN_THREAD_STACK_SIZE_KB(512);
- /*****************************************************************************
- * main
- *****************************************************************************/
- void main(void)
- {
- DxLib_Init();
- if(initton() == 0)
- action(); // 初期化成功(正常時)の時だけ action()関数を実行
- DxLib_End();
- }
- /*****************************************************************************
- * sub1 開始前に表示するメッセージ
- *****************************************************************************/
- void messages(void)
- {
- DrawBox(0,0,480,272,DXP_COLOR_BLUE,TRUE); // 青色画面
- DrawFormatString(120, 40,XVI_COLOR_YELLOW,"『RPG TEST v0.01』");
- if(flag_mp3 == MP3_NOT_EXIST)
- DrawFormatString(80, 80,DXP_COLOR_GRAY,"音楽は鳴りません");
- else
- DrawFormatString(80, 80,DXP_COLOR_WHITE,"音楽が鳴ります(ループします)");
- DrawFormatString(80, 120,DXP_COLOR_WHITE,"Lトリガー押しで終了");
- DrawFormatString(80, 180,XVI_COLOR_LIGHTBLUE,"○ボタン押しで始まります");
- ScreenFlip();
- }
- /*****************************************************************************
- * sub2 勇者が歩くよ、どこまでも!!
- *****************************************************************************/
- void action(void)
- {
- Hero_MUKI = MUKI_SHITA; // 下向き
- Hero_Step = 0; // 足踏みのステップ(最初は0で)
- Hero_MOVE_flag = Hero_STOP; // 最初は止まっている
- // 足踏みは、16/60秒単位で行なう作戦
- messages();
- do {
- ProcessMessage(); // パッド読み取り本体
- if((GetInputState()) == DXP_INPUT_LTRIGGER) return; // Lトリガー押されたら終了
- }while((GetInputState()) != DXP_INPUT_CIRCLE); // ○ボタン押しでアニメーション開始
- // BGM.mp3ファイルあれば再生させる
- if(flag_mp3 == MP3_EXIST)
- PlaySoundMem( HDL_mp3, DX_PLAYTYPE_LOOP, TRUE);
- // ここからループします ↓↓
- while(1) {
- ProcessMessage(); // パッド読み取り本体
- switch(GetInputState()) {
- case DXP_INPUT_LTRIGGER: { // Lトリガー押されたら
- if(flag_mp3 == MP3_EXIST) { // mp3再生終了の為の後片付け
- StopSoundMem( HDL_mp3 );
- DeleteSoundMem( HDL_mp3 );
- }
- return; // Lトリガーで抜ける
- }
- case DXP_INPUT_UP: { // ↑レバー入れたら
- if(Hero_MOVE_flag == Hero_STOP) {
- Hero_MUKI = MUKI_UE;
- Hero_MOVE_flag = Hero_MOVE;
- }
- break;
- }
- case DXP_INPUT_DOWN: { // ↓レバー入れたら
- if(Hero_MOVE_flag == Hero_STOP) {
- Hero_MUKI = MUKI_SHITA;
- Hero_MOVE_flag = Hero_MOVE;
- }
- break;
- }
- case DXP_INPUT_LEFT: { // ←レバー入れたら
- if(Hero_MOVE_flag == Hero_STOP) {
- Hero_MUKI = MUKI_HIDARI;
- Hero_MOVE_flag = Hero_MOVE;
- }
- break;
- }
- case DXP_INPUT_RIGHT: { // →レバー入れたら
- if(Hero_MOVE_flag == Hero_STOP) {
- Hero_MUKI = MUKI_MIGI;
- Hero_MOVE_flag = Hero_MOVE;
- }
- break;
- }
- }
- Hero_Step = (++Hero_Step)&(63); // 足踏みで絵が変わるよ
- if(Hero_Step == 0)
- Hero_MOVE_flag = Hero_STOP;
- // 背景を描画
- Draw_haikei();
- // 勇者を表示
- DrawGraph( 224,104,HDL_Graph_Hero[Hero_MUKI][ PIC_Walk_Step[(Hero_Step>>4)] ],TRUE );
- DrawFormatString(240, 220,DXP_COLOR_WHITE,"Lトリガー押しで終了");
- ScreenFlip(); // 垂直同期信号を待つ(1/60秒)1回目
- }
- }
- /*****************************************************************************
- * sub3 背景グラフィックの描画関数
- *****************************************************************************/
- void Draw_haikei()
- {
- unsigned int x,y;
- for(x=0; x<12; x++) {
- for(y=0; y<8; y++) {
- DrawGraph( (x<<5)+48,(y<<5)+8,HDL_Graph_BG,FALSE ); // 芝生を表示
- }
- }
- DrawBox( 0, 0, 48,272,DXP_COLOR_BLACK,TRUE); // 左側の黒い帯
- DrawBox(432, 0,480,272,DXP_COLOR_BLACK,TRUE); // 右側の黒い帯
- DrawBox( 48, 0,432, 8,DXP_COLOR_BLACK,TRUE); // 上側の黒い帯
- DrawBox( 48,264,432,272,DXP_COLOR_BLACK,TRUE); // 下側の黒い帯
- }
- /*****************************************************************************
- * sub3 グラフィック画面の設定などの関数
- *****************************************************************************/
- void ScreenSettings()
- {
- SetDisplayFormat(DXP_FMT_8888); // 画面のピクセルフォーマットを32Bit色モードに
- SetWaitVSyncFlag(TRUE); // 画面更新の際、垂直同期待ちをしてから行なう様に
- SetDrawArea(0,0,480,272); // 描画可能領域を全領域に設定
- // SetDrawMode(DX_DRAWMODE_NEAREST); // 描画モードを高速なNEARESTにセットする
- // SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);// 描画の際のブレンドモードを、標準モードに
- SetDrawBright(255,255,255); // 描画する色の輝度を最大に
- SetGraphMode(480, 272, DXP_FMT_8888); // フル画面サイズ & 32Bit色モード
- ClearDrawScreen(); // 描画先のグラフィックスをクリアする
- ChangeFontType(DX_FONTTYPE_NORMAL); // エッジ無しノーマル文字にする(IntraFont)
- }
- /*****************************************************************************
- * sub4 mp3ファイル・チェッカー関数
- *****************************************************************************/
- void mp3checker()
- {
- // まずは 全てのサウンドハンドルを削除します
- InitSoundMem();
- // ストリーミング再生モードに設定します(チョイ読みしながら再生)
- SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);
- // 再生させる音声ファイルを指定します(mp3ファイルを用意してね)
- if((HDL_mp3 = LoadSoundMem(SND_BGM)) == -1) // もしエラーが発生したら
- flag_mp3 = MP3_NOT_EXIST; // ないよ
- else
- flag_mp3 = MP3_EXIST; // あるよ
- // パンを中央に設定します
- if(flag_mp3 == MP3_EXIST)
- SetPanSoundMem( 0, HDL_mp3);
- }
- /*****************************************************************************
- * sub5 画像データ・ローダー関数
- *****************************************************************************/
- int pic_load(void)
- {
- const char *pic_filename[]={
- GRPH_SIBA, // 背景 の 芝
- GRPH_HERO, // 勇者 の スプライト
- "おわる"
- };
- FILE *fp;
- int i;
- // なう・ろーでぃんぐ画像を表示
- if((LoadGraphScreen(0,0,GRPH_LOADING, FALSE)) == -1) {
- // ↓↓ なう・ろーでぃんぐ画像が無いなら文字で
- DrawBox(0,0,480,272,XVI_COLOR_DARKGREEN,TRUE);
- DrawFormatString(150, 120,DXP_COLOR_WHITE,"なう・ろーでぃんぐ!!");
- }
- ScreenFlip();
- i=0; // インデックス( i=0 は背景画像を含む場合 )
- while(strcmp(pic_filename[i],(const char *)"おわる") != 0) {
- fp=fopen(pic_filename[i],"r");
- if(fp==NULL) {
- fclose(fp);
- DrawBox(0,0,480,272,DXP_COLOR_RED,TRUE); // 赤色画面
- DrawFormatString(100, 90,DXP_COLOR_WHITE,"ファイル %s が無いよ",pic_filename[i]);
- DrawFormatString(100,140,DXP_COLOR_WHITE,"終了します。何か押して!");
- ScreenFlip();
- do { // 何か押されるまで待つ do ~ while
- ProcessMessage();
- }while(CheckHitKeyAll() == 0);
- return(-1); // 終了
- }
- fclose(fp);
- i++;
- }
- // 画像ファイル全部読み込み
- HDL_Graph_BG = LoadGraph(GRPH_SIBA);
- if(LoadDivGraph( GRPH_HERO ,12,3,4,32,48,&HDL_Graph_Hero[0][0]) == -1) {
- // 画像データの読み込みがおかしい場合の処理
- DrawBox(0,0,480,272,DXP_COLOR_RED,TRUE); // 画面を真っ赤にする
- DrawFormatString(10,100,DXP_COLOR_WHITE,"%sの読み込みに失敗しました",GRPH_HERO);
- DrawFormatString(10,180,DXP_COLOR_WHITE,"終了します。何かキーを押して下さい。");
- ScreenFlip();
- // WaitKey(); // キーの入力待ち
- do {
- ProcessMessage();
- }while(CheckHitKeyAll() == 0);
- return(-1); // エラーで抜けます
- }
- DrawBox(0,0,480,272,DXP_COLOR_BLACK,TRUE); // 画面を真っ黒にする
- ScreenFlip();
- Sleep(800); // 800ミリ秒だけ停止(黒い画面でチョイ待ち)
- return(0);
- }
- ///////////////////////////////////////////////////////////////
- // sub6 初期化専門
- ///////////////////////////////////////////////////////////////
- int initton(void)
- {
- ScreenSettings();
- // mp3音楽チェッカー
- mp3checker();
- // 画像データ読み込み
- return( pic_load() );
- }
Makefire
TARGET = PSP_RPG
OBJS = main.o
PSPSDK=$(shell psp-config --pspsdk-path)
INCS = $(PSPSDK)/include $(PSPSDK)/DXP_v0.5.7/include
INCDIR = $(INCS)
CFLAGS = -Wall -G0 -O3 -fomit-frame-pointer -mgp32 -mlong32
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR = $(PSPSDK)/DXP_v0.5.7/lib
LDFLAGS =
LIBS = $(PSPSDK)/DXP_v0.5.7/lib/dxlibp.a
LIBS += -lpspgu -lz -lm -lpsprtc -lpspaudio -lpspaudiocodec\
-lpsputility -lpspvalloc -lpsppower
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = PSP_RPG TEST v0.01
PSP_EBOOT_ICON = ICON0.png
PSP_EBOOT_ICON1 = NULL
PSP_EBOOT_UNKPNG= NULL
PSP_EBOOT_PIC1 = NULL
PSP_EBOOT_SND0 = NULL
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
# 以下、任意で(開発しているソースに依存)
main.o : main.c
- 関連記事
-
- PSPプログラミング RPG TEST v0.01 勇者が歩くよ (2010/10/24)
- PSPプログラミング RPG TEST v0.02 勇者が歩くよ [改] (2012/01/11)
- PSPプログラミング RPGの雛形を作る前に お勉強 (2010/10/22)
- PSPプログラミング RPG TEST v0.01 勇者が歩くよ 【解説】 (2010/10/26)
スポンサーサイト
[edit]
« PSPプログラミング PNG画像について調べました。 | PSPプログラミング RPG TEST v0.01 勇者が歩くよ »
この記事に対するコメント
トラックバック
| h o m e |




