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ドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター
このブログについて
著作権などの こまかい利用規約については、こちらを開いてお読み下さい
このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ
当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。
このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all
PSPプログラミング 32ビットカラーで描画しよう!その3 [ ビットマップ画像 ]
2009/06/17
Wed. 15:30
そいうのんは、PSPSDKの sceGuDrawArray( )関数 を使えば実現できます。GPUを使います。その件は各自で、勉強して下さい。
今回は、Windows標準のビットマップ画像をPSPで表示する、という事を勉強します。
まずは、Windows標準のビットマップ画像のファイル構造を調べてみましょう。
以下。
Windows bitmap - Wikipedia
ビットマップ画像 - Wikipedia
Bitmapファイルフォーマットの資料
-- BMP形式入門 - BMPファイルの中身をちょっと覗いてみる --
ビットマップ画像ファイルは、基本的には、先頭のヘッダー部分と、ビットマップ画像部分の定められたデータ長(1ピクセルあたりのビット数)で構成されており、表示されている画像の画素情報を 非圧縮で そのまま データにしている、という事実。
つまり、24ビットカラーのビットマップ画像の場合、画像データ本体を3バイトづつ(RGB)読んでV-RAM に貼り付ける事で、ビットマップ画像上の1ドットが打てる、という事です(ヘッダー部分は無視するものとします)。
(32ビットカラーのビットマップ画像の場合は4バイトづつ読み込み)
そうそう、PSPとWindowsでは、RGBとBGRの様に、V-RAMの構成が 赤と青の配置が逆ですので そこら辺 注意のこと。
では、完成したプログラムをどうぞ([ 続きを読む ] でプログラムの一部が見れます)。
今回の見どころ
・ファイル操作(BITMAPファイルのオープン、読み込み、クローズ)
・全角文字ライブラリへの機能追加(文字背景色を指定できる様になりました / 透明色も指定可能)
サンプル画像として、私の製作したシュワちゃんPSP壁紙を 24ビットカラーBITMAP画像に変換したのんを同梱しました。
『PSP画面に ビットマップ画像を描画するプログラム』実行画面

↓↓ このBITMAP画像をPSP画面へ表示するッッ!!

『PSP画面に ビットマップ画像を描画するプログラム』のダウンロード
DISP_BITMAP_src.zip 363 KB (371,749 バイト)

(ソースのコンパイルには、全角文字表示ライブラリが必要)
(ソースコード / CFW用の実行ファイル)
ユーザーモード版EBOOT.PBPです。
PSP壁紙(480x272)を、24Bitカラー・ビットマップ画像に変換した画像
(~.BMP)を、このソフトで表示する事が可能でっす!
但し、ファイルは "ms0:/PICTURE/TEST.bmp" 限定。
// main関数の要所とか。
#define UE_KARA 1 // 上から下 のタイプのBitMap
#define SITA_KARA 2 // 下から上 のタイプのBitMap
#define HYOUJI_SURU 5 // BMP画像の表示許可
#define HYOUJI_SINAI 7 // BMP画像の表示中止
#define BMP_FILE "ms0:/PICTURE/TEST.bmp" // 読み込むBITMAP画像ファイルはコレ(TEST.bmp)
///////////////////////////////////////////////////////////////////////
// サブルーチンから抜粋 (ファイル操作テクニック)
///////////////////////////////////////////////////////////////////////
{
char read[14];
unsigned long size;
FILE *fp; // BITMAP画像ファイル読み込み用
// 画像ファイルの読み込み (ファイルを開くテクニック)
if((fp=fopen( BMP_FILE ,"rb"))==NULL)
{
// 画像ファイルが無かったら赤色画面
pgFillvram(RED); // 画面を赤く塗りつぶし
mh_print(100,120,BMP_FILE,BLACK,WHITE); // BITMAPファイル名
mh_print(120,140,"は、開く事が出来ませんでした。",BLACK,WHITE);
goto EXIT;
}
//////// ファイルヘッダー・チェック //////////////
fgets(read,3,fp); // ファイルポインタ fp から2バイト読み込み
mh_print(0,0,read,YELLOW,RED);
mh_print(40, 0,"ファイルのヘッダ部分から、",WHITE,BLACK);
if(strcmp(read,"BM")!=0)
{
mh_print(60,12,"BITMAP画像で無いと判断しました",WHITE,BLACK);
hyouji_flag = HYOUJI_SINAI;
}
else
mh_print(60,12,"BITMAP画像であると判断しました",WHITE,BLACK);
//////// 続く 12バイトを読み飛ばします
fseek(fp,12,SEEK_CUR); // ファイルポインタ fp から12バイト読み飛ばします
//////// 色ビット数[bit]・チェック (2バイトデータの起こしかたテクニック)
size=(long)fgetc(fp)|(long)fgetc(fp)<<8;
//////// BITMAP画像を読み込みつつ、PSP画面に描画する部分
int x,y,col;
unsigned char *pt;
for(y=271;0<=y;y--) // 下から上へ描画するループ
{
pt=pgGetVramAddr(0,y); // (0,y) の V-RAMのアドレスを取得
for(x=0;x<480;x++) // 画面 左端から右端へのループ
{
col=(long)fgetc(fp)<<16|(long)fgetc(fp)<<8|(long)fgetc(fp); // ビットマップ画像データ(1ドット)を読み込みます
*(unsigned long *)pt=col; // PSP画面に1ドット 描画します
pt+=4; // 描画用 V-RAMポインタを、右に1ドットずらします(4バイト足します)
}
}
fclose(fp); // ファイルを閉じる
}
( 全角文字表示ライブラリに機能を一つ追加しました )
【 全角文字表示ライブラリに追加した機能 】
・mh_print( ) 関数に、背景色描画機能を追加しました。
→ パラメーターを、1つ追加しました。
void mh_print(int x,int y,const char *str,long col,long col2);
↑↑↑↑↑
col2 に背景色の色コード(16進数6桁)を記述して下さい。
以前のように、透明で良いなら、-1 を記述して下さい。
白い文字と青い背景色で文字描画をしたいなら、
mh_print( 100, 50, "ひょー", WHITE, BLUE);
の様に記述して下さい。
今まで通り、背景色が透明で良いなら、
mh_print( 100, 50, "ボン!", GREEN, -1);
の様に、-1 を記述して下さい。
- 関連記事
-
- PSPプログラミング 32ビットカラーで描画しよう!その3 [ ビットマップ画像 ] (2009/06/17)
- PSPプログラミング 32ビットカラーで描画しよう!その2 [ 点を打つ ] (2009/06/08)
- PSPプログラミング 家庭用ゲーム機の誕生秘話 (2009/08/14)
- PSPプログラミング 背景の描画について (2009/08/22)
- PSPプログラミング PSPSDKでダイアログ画面を表示してみよう (2010/09/25)
[edit]
« Windows で ゲームプログラミングが出来ちゃう御本を紹介! | PSPプログラミング 32ビットカラーで描画しよう!その2 [ 点を打つ ] »
この記事に対するコメント
ぐはっ
ダウンロードできねぇ~~
ファイルのアップロードしてなかったwwwww
あぷぅしたぁーー
これで一安心!!
トラックバック
| h o m e |




