PSP xvi

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

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 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

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

2011年05月13日 更新

DXライブラリPortable v0.5.7を使ってプログラムを書くときに使える雛形です.
これに肉付けをしてゆくと何かのプログラムになります.

あとは、「イラスト鑑賞アプリ」とか「千早が765衣装で吹っ切れた!?PSP」とかのソースコードを見て勉強していただければ何か作れるはずなのでがんばって下さい.

この雛形ソースコードでは無音の実行ファイルが作れます.
システムソフトウェア6.xx以降のPSPでは、扱える文字コードがUNICODEのみ みたいなので、DXライブラリPortable v0.5.7 UTF-8版を使用して文字描画をする事を推奨します


DXLib Portable v0.5.7 での雛形(ダウンロード)
DXLibP_HINAGATA02_zip.txt
拡張子を ZIP で保存&解凍して下さい.

前回からの変更点

「もじゅ~る・いんふぉ」をこの様に書くと うまくいったw↓↓
/*****************************************************************************
* もじゅ~る・いんふぉ / メインコードはユーザモード
*****************************************************************************/
PSP_MODULE_INFO("HINAGATA_DXP_02", PSP_MODULE_USER, 1, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
PSP_HEAP_SIZE_KB(16*1024); // 新規追加
PSP_MAIN_THREAD_STACK_SIZE_KB(512); // 新規追加



PSPSDKに署名機能を追加するには、下記ページを参考にし下さい
>> 署名済みPSP自作ソフトの作り方 @プログラミングで
>> http://nekoyama2gillien.blog36.fc2.com/blog-entry-417.html


実際のソースコードは、続きに書いてあります


main.c
  1. // 正規PSP開発も可能 DXライブラリPortable v0.5.7 プログラミング 雛形
  2. //
  3. // 前回公開した物が正規PSPでは動作しないコードだったので見直し
  4. // ヒープサイズの容量指定とスタックサイズの容量指定を追加したらうまくいった
  5. //
  6. // なにもしませんが、PSP君はやる気になっていますので
  7. // 画像表示命令とかを Action関数に書いてみて下さい
  8. //
  9. // イントラフォントはUTF8コードのみ、みたいです。シフトJISは廃止っぽい(?)
  10. //
  11. // これは BSDライセンスとします
  12. #include <dxlibp.h>
  13. #include "COLORS.H"
  14. /*****************************************************************************
  15. * 関数の登録
  16. *****************************************************************************/
  17. int initton(void);
  18. void ScreenSettings(void);
  19. int main(int argc, char *argp[]);
  20. void action(void);
  21. /*****************************************************************************
  22. * グローバル変数
  23. *****************************************************************************/
  24. /*****************************************************************************
  25. * もじゅ~る・いんふぉ / メインコードはユーザモード
  26. *****************************************************************************/
  27. PSP_MODULE_INFO("HINAGATA_DXP_02", PSP_MODULE_USER, 1, 0);
  28. PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
  29. PSP_HEAP_SIZE_KB(16*1024); // 新規追加
  30. PSP_MAIN_THREAD_STACK_SIZE_KB(512); // 新規追加
  31. /*****************************************************************************
  32. * main
  33. *****************************************************************************/
  34. int main(int argc, char *argp[])
  35. {
  36.   DxLib_Init();
  37.   if(initton() == 0)
  38.     action(); // 初期化成功(正常時)の時だけ action()関数を実行
  39.   DxLib_End();
  40.   return(0);
  41. }
  42. /*****************************************************************************
  43. * グラフィック画面の設定などの関数
  44. *****************************************************************************/
  45. void ScreenSettings()
  46. {
  47.   SetDisplayFormat(DXP_FMT_8888);//画面のピクセルフォーマットを32Bit色モードに
  48.   SetWaitVSyncFlag(TRUE); // 画面更新の際、垂直同期待ちをしてから行なう様に
  49.   SetDrawArea(0,0,480,272); // 描画可能領域を全領域に設定
  50.   SetDrawMode(DX_DRAWMODE_NEAREST); // 描画モードを高速なNEARESTにセットする
  51.   // ↓ 描画の際のブレンドモードを、標準モードに
  52.   SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);
  53.   SetDrawBright(255,255,255); // 描画する色の輝度を最大に
  54.   SetGraphMode(480, 272, DXP_FMT_8888); // フル画面サイズ & 32Bit色モード
  55.   ClearDrawScreen(); // 描画先のグラフィックスをクリアする
  56. }
  57. /*****************************************************************************
  58. * 初期化専門
  59. *****************************************************************************/
  60. int initton(void)
  61. {
  62.   ScreenSettings(); // グラフィック画面の設定など
  63.   // エッジ無しノーマル文字にする(IntraFont)
  64.   ChangeFontType(DX_FONTTYPE_NORMAL);
  65.   // 音楽再生はしません
  66.   return( 0 );
  67. }
  68. /*****************************************************************************
  69. * アクション
  70. *****************************************************************************/
  71. void action(void)
  72. {
  73.   //
  74.   // ここにプログラムを書いてゆきます
  75.   //
  76.   return;
  77. }



Makefile(署名コンパイルします)

TARGET = HINAGATA_DXP_02
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)

PSP_FW_VERSION=271

BUILD_PRX = 1
ENCRYPT = 1

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 = HINAGATA_DXP_02
PSP_EBOOT_ICON = NULL
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


関連記事
スポンサーサイト

[edit]

CM: 10
TB: 0

page top

この記事に対するコメント

ありがとうございます

猫山猫宗さん

雛形ソースありがとうございます。
実は
http://sourceforge.jp/projects/dxlibp/wiki/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E9%9B%86
の「画像描画の基本」と書かれたソースを見て
最初のコードを組んだので
画面モード設定をやらないで画像表示命令を発行していました。

雛形ソースに先日送付したプログラムを組み込んでみましたが
結果は、変わらず・・・orz

もうちょっと調べてみます。

かげさん #- | URL | 2011/03/02 23:52 * edit *

かげさん

画面モードの設定などはしなくても画像の表示は可能ですよ
自分はModuleinfoに二行追加するだけでFWでの画像読み込み・表示に成功しました

獄 #O.GF4sBk | URL | 2011/03/04 08:27 * edit *

PSPの画面モード

PSPの画面モードには、以下の4通りあります

16ビットカラー(赤・緑・青・輝度=4bitずつ)
16ビットカラー(赤・緑・青=5bitずつ、輝度=1bit)
16ビットカラー(赤・青=5bitずつ、緑=6bit、輝度なし)
32ビットカラー(赤・緑・青・輝度=8bitずつ)

ゲームから起動直後は、32ビットカラー(赤・緑・青・輝度=8bitずつ)になっているようですが、自分の思うようにカスタマイズしてやらないとダメですよ

最小プロムラムなら省略しちゃってもいいんだけどね

猫山猫宗 #jjrqi.Ao | URL | 2011/03/04 19:53 * edit *

思わぬ伏兵・・・

>自分はModuleinfoに二行追加するだけでFWでの画像読み込み・表示に成功しました

面倒だから手抜きでやってみる、という事も場合によっては凄い発見になる、ということですな。
ボクはかげさんが署名して音楽を鳴らしていることを知り、Half-Byte Loader より署名のほうが起動率が高いとか思いましたよ。
獄さん&かげさん、ありがチョー。ついでに千早ちゃんのアレも署名起動成功ですよっ

猫山猫宗 #jjrqi.Ao | URL | 2011/03/04 20:02 * edit *

いつの間にかすごいことになってますね。

こっちでも署名起動できました。
そして、UTF8もようやくやり方がわかったんで文字表示も出来るようになりました。

皆さんの試行錯誤のおかげです。
猫山猫宗さん、かげさん、獄さん、
私からもありがとうです。

kyi #- | URL | 2011/03/04 22:16 * edit *

続報

意を決してDXライブラリPortableに
デバッグ文を打ち込み、どこで失敗しているか調査してみました。

LoadGraph → LoadPngImage → dxppng_decode
で dxppng_decode の IDATのブロックで
memalignを使ったところで
メモリ確保後のポインタが取得できていなかった・・・
メモリ確保失敗ばかりはプログラム中で回避できんな・・・orz

他のプログラムを動かしていないし
メモリ確保できないほどメモリを使っているとは思えない。
メモリを確保できなくなるほどメモリリークするような
プログラムを書いちゃいないはずなんだけどなぁ。

>Half-Byte Loader より署名のほうが起動率が高いとか思いましたよ。

実は、まだHalf-Byte Loaderで起動したことがなかったりします。
なんせ、2月の中旬からPSPのプログラムを始めたもので。

仕事でC言語の経験があるので
このブログを中心に環境系を押さえつつサンプルを読み解き
コーディングしてます。

かげさん #HXzvC762 | URL | 2011/03/04 22:29 * edit *

メモリ喰い大作戦!!

メモリ使用率の割合は

MP3翻訳 < OGG翻訳 < PNG翻訳

で良かったっけ?

猫山猫宗 #jjrqi.Ao | URL | 2011/03/05 00:54 * edit *

メモリが原因っぽいような。

あるいは大きい画像を読み込ませようとしてるとか。
画像はたしか512x512以上の画像を読み込ませようとしたらフリーズの墓場に直行してたようなきが・・・。
関係ないかな。

kyi #- | URL | 2011/03/05 09:11 * edit *

画像を表示するだけのプログラムを書いてみました
http://www1.axfc.net/uploader/Ne/so/103335

512x512の制限を解除してあります
大きい画像を使おうとしている場合ならこれで読み込めるはずです

獄 #- | URL | 2011/03/05 15:28 * edit *

png画像表示できました!

原因は、この記事の前回からの変更点
「モジュールインフォの赤字2行分の不足」でした。

単純に3月3日に更新されたところを見落としていた上に
獄さんのコメントの
「Moduleinfoに二行追加するだけで」の部分を
もともとソースにあった
「PSP_MODULE_INFO」と「PSP_MAIN_THREAD_ATTR」
と勘違いしたまま読み進めていたという
2つのポカミスを重ねてしまっていた・・・

kyiさんの512x512の話にも該当しないし
獄さんの512x512の制限解除プログラムも動くし
なんでだろうと思っていて
UTAUスライドショーのソースと見比べていて気がつきました。

猫山猫宗さん、獄さん、kyiさん、
対応、コメント、サンプルプログラムの提示ありがとうございます!

かげさん #- | URL | 2011/03/06 17:36 * edit *

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://nekoyama2gillien.blog36.fc2.com/tb.php/483-f8951bd8
この記事にトラックバックする(FC2ブログユーザー)

page top


h o m e |


 

2017-06