DXライブラリPortable v0.5.7 UTF8版 サンプルプログラム UTAUスライドショウ(音無し版)
こちらのソースコードは、全角の空白文字も使用しています。
たくさん勉強したい方は、このページを お気に入りに登録しておくといいかもです

main.c
  1. // DXライブラリPortable v0.5.7 UTF8版 サンプルプログラム
  2. // 画像を4枚切り替え表示し、繰り返します
  3. // 終了はLトリガー押しです
  4. //
  5. // 制作:猫山猫宗 2012/01/08(日)
  6. //
  7. // これは BSDライセンスとします
  8. #include <dxlibp.h>
  9. #include "COLORS.H"
  10. #define MAX_GRAPHIC 4 // 使用する画像の枚数(4枚)
  11. /*****************************************************************************
  12. * 関数の登録
  13. *****************************************************************************/
  14. int initton(void);
  15. void ScreenSettings(void);
  16. int GraphicChecker(void);
  17. int main(int argc, char *argp[]);
  18. void action(void);
  19. void games(void);
  20. void games_finish(void);
  21. /*****************************************************************************
  22. * グローバル変数
  23. *****************************************************************************/
  24. int Graph_handle[MAX_GRAPHIC+1]; // 画像のハンドル
  25. const char *Graph_filename[]={
  26.   "./0001.png",   // 00 ねんぷちデフォ子さん画像
  27.   "./0002.png",   // 01 ねんぷち重音テトさん画像
  28.   "./0003.png",   // 02 ねんぷち桃音モモさん画像
  29.   "./0004.png"    // 03 ねんぷち初音ミクさん画像
  30. };
  31.  
  32. /*****************************************************************************
  33. * もじゅ〜る・いんふぉ / メインコードはユーザモード
  34. *****************************************************************************/
  35. PSP_MODULE_INFO("SLIDESHOW", PSP_MODULE_USER, 1, 0);
  36. PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
  37. PSP_HEAP_SIZE_KB(16*1024);
  38. PSP_MAIN_THREAD_STACK_SIZE_KB(512);
  39. /*****************************************************************************
  40. * main
  41. *****************************************************************************/
  42. int main(int argc, char *argp[])
  43. {
  44.   int result; // 結果
  45.   DxLib_Init(); // DXライブラリPortable初期化
  46.   result = initton(); // プログラム初期化
  47.   if(result == 0) {
  48.     // 初期化成功(正常時)の時だけ action()関数を実行
  49.     action();
  50.   }
  51.   else {
  52.     // 初期化失敗(エラー時)↓
  53.     DrawBox(0,0,480,272,DXP_COLOR_RED,TRUE); // 赤色画面
  54.     DrawFormatString(0,100,DXP_COLOR_WHITE
  55.            ,"画像を%d枚 読み込めなかったので終了します",result);
  56.     DrawFormatString(0,140,DXP_COLOR_WHITE,"何かボタンを押して下さい");
  57.     ScreenFlip(); // 表示
  58.     do { // 何か押されるまで待つ do 〜 while
  59.        ProcessMessage();
  60.     }while(CheckHitKeyAll() == 0);
  61.   }
  62.   DxLib_End();
  63.   return(0);
  64. }
  65. /*****************************************************************************
  66. * グラフィック画面の設定などの関数
  67. *****************************************************************************/
  68. void ScreenSettings()
  69. {
  70.   SetDisplayFormat(DXP_FMT_8888); // 画面のピクセルフォーマットを32Bit色モードに
  71.   SetWaitVSyncFlag(TRUE);     // 画面更新の際、垂直同期待ちをしてから行なう様に
  72.   SetDrawArea(0,0,480,272);    // 描画可能領域を全領域に設定
  73.   SetDrawMode(DX_DRAWMODE_NEAREST); // 描画モードを高速なNEARESTにセットする
  74.   SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); // 描画の際のブレンドモードを、標準モードに
  75.   SetDrawBright(255,255,255);   // 描画する色の輝度を最大に
  76.   SetGraphMode(480, 272, DXP_FMT_8888); // フル画面サイズ & 32Bit色モード
  77.   ClearDrawScreen();        // 描画先のグラフィックスをクリアする
  78.   ChangeFontType(DX_FONTTYPE_NORMAL); // エッジ無しノーマル文字にする(IntraFont)
  79. }
  80.   
  81. /*****************************************************************************
  82. * 画像ファイル・チェッカー関数
  83. *
  84. * この関数は画像を1枚でも読み込めなかった場合プログラムを終了してしまいます
  85. *
  86. *****************************************************************************/
  87. int GraphicChecker()
  88. {
  89.   int i;
  90.   int errors;
  91.   errors = 0;
  92.   for(i=0; i<MAX_GRAPHIC; i++) {
  93.     Graph_handle[i] = LoadGraph(Graph_filename[i]);
  94.     DrawBox(0,0,480,272,DXP_COLOR_BLUE,TRUE); // 青色画面
  95.     DrawFormatString(0,100,DXP_COLOR_WHITE,"%d 番目 %s",i,Graph_filename[i]);
  96.     DrawFormatString(0,140,DXP_COLOR_WHITE,"LoadGraph の ハンドル=%d",Graph_handle[i]);
  97.     if(Graph_handle[i] != -1) // 読み込み成功の場合
  98.       DrawFormatString(0,180,XVI_COLOR_YELLOW,"読み込み成功!");
  99.     else {
  100.       DrawFormatString(0,180,DXP_COLOR_RED,"読み込み失敗!");
  101.       ++errors;
  102.     }
  103.     ScreenFlip(); // 表示
  104.     Sleep(800); // 800ミリ秒だけ停止
  105.   }
  106.  
  107.   return( errors ); // エラー数を返り値に(読み込めなかったファイル数)
  108. }
  109.  
  110. /*****************************************************************************
  111. * 初期化専門
  112. *****************************************************************************/
  113. int initton(void)
  114. {
  115.   ScreenSettings(); // グラフィック画面の設定など
  116.  
  117.   // エッジ無しノーマル文字にする(IntraFont)
  118.   ChangeFontType(DX_FONTTYPE_NORMAL);
  119.  
  120.  
  121.  
  122.   // 画像ファイル・チェッカー関数の返り値を得て、それを返り値として復帰
  123.   return( GraphicChecker() );
  124. }
  125.  
  126. /*****************************************************************************
  127. * アクション
  128. *****************************************************************************/
  129. void action(void)
  130. {
  131.   games();
  132.   games_finish();
  133. }
  134.  
  135. /*****************************************************************************
  136. * ゲーム
  137. *
  138. * 画像を描画(4枚を切り替え表示)繰り返し
  139. * Lトリガを押すと、この関数から抜ける事が出来ます
  140. *
  141. *****************************************************************************/
  142. void games(void)
  143. {
  144.   int num,waits;
  145.   num=0;
  146.   while(1) { // 無限ループっぽい
  147.     for(waits=0; waits<60; ++waits) { // 結局、1秒待つ事になります
  148.       DrawGraph( 0,0,Graph_handle[num],FALSE ); // 画像描画
  149.       DrawFormatString(300, 220,DXP_COLOR_BLACK,"Lトリガー押しで終了");
  150.       ScreenFlip(); // 画面表示&垂直同期信号を待つ(1/60秒)
  151.       ProcessMessage(); // パッド読み込み本体
  152.       if(GetInputState()==DXP_INPUT_LTRIGGER)
  153.         return; // Lトリガ押されるとループを抜ける
  154.     }
  155.   ++num; // キャラクタ画像の切り替え
  156.   if(num==4) num=0; // numは 0〜3 になる。
  157.   };
  158. }
  159.  
  160. /*****************************************************************************
  161. * ゲーム終了
  162. *
  163. * 使用した画像ハンドルと音声ハンドルを削除します
  164. *
  165. *****************************************************************************/
  166. void games_finish(void)
  167. {
  168.   int num; // インデックス
  169.  
  170.   // 画像ハンドルを全部削除します
  171.   for(num=0; num<MAX_GRAPHIC; ++num) {
  172.     DeleteGraph(Graph_handle[num]);
  173.   }
  174. }



Makefile
  1. TARGET = SLIDESHOW
  2. OBJS = main.o
  3. PSPSDK=$(shell psp-config --pspsdk-path)
  4. INCS = $(PSPSDK)/include $(PSPSDK)/DXP_v0.5.7/include
  5. INCDIR = $(INCS)
  6. CFLAGS = -Wall -G0 -O3 -fomit-frame-pointer -mgp32 -mlong32
  7. CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
  8. ASFLAGS = $(CFLAGS)
  9. PSP_FW_VERSION=300
  10. BUILD_PRX = 1
  11. #ENCRYPT = 1
  12. LIBDIR = $(PSPSDK)/DXP_v0.5.7/lib
  13. LDFLAGS =
  14. LIBS = $(PSPSDK)/DXP_v0.5.7/lib/dxlibp_UTF8.a
  15. #LIBS = $(PSPSDK)/DXP_v0.5.7/lib/dxlibp.a
  16. LIBS += -lpspgu -lz -lm -lpsprtc -lpspaudio -lpspaudiocodec\
  17.     -lpsputility -lpspvalloc -lpsppower
  18. EXTRA_TARGETS = EBOOT.PBP
  19. PSP_EBOOT_TITLE = UTAU SLIDESHOW DXP (NO SOUND Ver)
  20. PSP_EBOOT_ICON = ICON0.png
  21. PSP_EBOOT_ICON1 = NULL
  22. PSP_EBOOT_UNKPNG= NULL
  23. PSP_EBOOT_PIC1 = NULL
  24. PSP_EBOOT_SND0 = NULL
  25. PSPSDK=$(shell psp-config --pspsdk-path)
  26. include $(PSPSDK)/lib/build.mak
  27. # 以下、任意で(開発しているソースに依存)
  28. main.o : main.c



本家の音無さん・・・(笑)

ぴよ:「音無し・・・ですか・・・・はぁ・・・・。」