Nanashi-soft○プログラマ専用○PSPでプログラミング○
データは外部に置けないとメモリがきついので、外に出します。
現状では、ファイル作成方法がまだ分かっていないらしいです。
●関数定義
今回も関数そのものの定義から始めます。
サンプルのHello Worldの startup.sに定義を追記します。
キー入力の時と同じように、ディスプレイモード用関数が定義されている STUB_START "sceDisplay"の次に追加。
STUB_START "sceDisplay",0x40010000,0x00030005 STUB_FUNC 0x0E20F177,pspDisplaySetMode STUB_FUNC 0x289D82FE,pspDisplaySetFrameBuf STUB_FUNC 0x984C27E7,pspDisplayWaitVblankStart STUB_END STUB_START "IoFileMgrForUser",0x40010000,0x00050005 STUB_FUNC 0x6a638d83,sceIoRead STUB_FUNC 0x42ec03ac,sceIoWrite STUB_FUNC 0x27eb27b8,sceIoLseek STUB_FUNC 0x810c4bc3,sceIoClose STUB_FUNC 0x109f50bc,sceIoOpen STUB_FUNC 0xF27A9C51,sceIoRemove STUB_FUNC 0x6A70004,sceIoMkdir STUB_FUNC 0x1117C65F,sceIoRmdir STUB_FUNC 0x54F5FB11,sceIoDevctl STUB_FUNC 0x779103A0,sceIoRename STUB_END
●ファイルオープン方法
int fd = sceIoOpen("ms0:/psp/game/フォルダ名/ファイル名", O_RDONLY|O_NOWAIT);
どうやらメモリースティックのデバイス名は ms0らしいです。
●データ読込方法
char dummy[1];
sceIoRead(fd, &dummy[0], 1);
とする事で1バイト読み込まれます。
sceIoRead(sceIoOpenの返り値, 読込んだデータを入れる変数ポインタ, 読込むバイト数);
です。
●ファイルクローズ方法
最後は必ず閉じて下さい。
この手のデバイスは、オープンしたまま放っておくとリソースを消費したままになる場合が多いです。
sceIoClose(fd);
これだけです。
●ソース T.BINファイルをを読込む
//file IO
#define O_RDONLY 0x0001
#define O_WRONLY 0x0002
#define O_RDWR 0x0003
#define O_NBLOCK 0x0010
#define O_APPEND 0x0100
#define O_CREAT 0x0200
#define O_TRUNC 0x0400
#define O_NOWAIT 0x8000
int xmain(void)
{
char dummy[1];
〜プログラム〜
int fd = sceIoOpen("ms0:/psp/game/TEST/T.BIN", O_RDONLY|O_NOWAIT);
sceIoRead(fd, &dummy[0], 1);
sceIoClose(fd);
〜プログラム〜
TESTフォルダを作成してアプリとT.BINファイルを置いた場合の例です。
ここまで分れば、後は想像力次第で色々とできるようになるでしょう。