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

ファイル操作編 - ファイルを開く
まずは、ファイルを開く方法から、みっちりと お勉強します。


PSPで、ファイルとして扱えるのは、以下のデバイスです。

デバイス名 ドライブ名
・メモリースティック   "ms0:"
・フラッシュメモリ "flash0:" "flash1:" "flash2:" "flash3:"
・UMDディスク "disc0:"
・赤外線ポート "irda0:"

赤外線ポートがあるのは、PSP-1000のみ

ファイルを扱うには、ファイルハンドルを取得して、そのファイルハンドルで行ないます。
ファイルハンドルは、ファイル構造体へのポインタ (FILE *)、もしくは int で定義します。


● ファイルを読み込みモードで開く関数を ご紹介
・FILE *fp; の場合
  fopen( "ファイル名", "r");
    FILE *fp 用のファイルを開く関数です。
    "ファイル名"には、絶対PATH注1、もしくは相対PATH注2 でファイル名を 書きます
    返り値は、ファイル・オープンエラーなら NULL (== 0x00 )
          正常に ファイル・オープン出来たなら ファイルハンドル
    注1
    絶対PATH とは、ファイル名をデバイス名から 全部表記したもの。フルPATH
    注2
    相対PATH とは、ファイル名をカレントディレクトリを基準として相対的な差分で表記したもの。

・int fp; の場合
  sceIoOpen( "ファイル名", PSP_O_RDONLY, 0777);
    int fp 用のファイルを開く関数です。
    "ファイル名"には、メモリースティック上の PATH を書きます
    返り値は、ファイル・オープンエラーなら NULL (== 0x00 )
          正常に ファイル・オープン出来たなら ファイルハンドル


『ファイル構造体』 を 定義しているヘッダーファイル
C:\pspsdk\psp\sdk\include\libc\stdio.h
typedef struct {
int type;
int fd;
int cnt;
int flag;
int has_putback;
u8 putback;
} FILE;

ファイルを開く例 その1 FILE *fp; 編
FILE  *fd;
fd = fopen("ms0:/seplugins/GAME.txt","r");

解説
"r" は、"read""r"。読み込みモードで開く。

"ms0:/seplugins/GAME.txt" というファイルが無かったら、fd には、 NULL( == 0 ) が入る。
"ms0:/seplugins/GAME.txt" というファイルが存在したら、fd には、ファイルハンドルが入る。


FILE 構造体へのポインタ fd を使用している関数は、下記のヘッダーファイルに書いてあるので
各自、探して読んでみて下さい。

C:\pspsdk\psp\sdk\include\libc\stdio.h



ファイルを開く例 その2 int fp; 編
SceUID  fd;
fd = sceIoOpen("ms0:/MUSIC/Mario OP.mp3", PSP_O_RDONLY, 0777 );

SceUID は、int型です。
C:\pspsdk\psp\sdk\include\kerneltypes.h 内で、定義されています。
/** UIDs are used to describe many different kernel objects. */
typedef int SceUID;

解説
PSP_O_RDONLY は、『読み込みモードで開く』というパラメータ値。

"ms0:/MUSIC/Mario OP.mp3" というファイルが無かったら、fd には、 負の値 が入る。
"ms0:/MUSIC/Mario OP.mp3" というファイルが存在したら、fd には、ファイルハンドルが入る。

【 関連記事 】
PSPプログラミング ファイルを開く手順をM@STERしよう!
PSPプログラミング ファイルサイズの取得をM@STERしよう!
PSPプログラミング メモリの確保(割り当て)をM@STERしよう!
PSPプログラミング ファイルの読み込みをM@STERしよう!
PSPプログラミング ファイルを閉じて・・・・・。
PSPプログラミング 忘れちゃダメよ!メモリの解放

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

[edit]

CM: 18
TB: 0

page top

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

irdaはあの悪名高き赤外線モジュールだったと思います

憂煉 #- | URL | 2009/09/23 20:15 * edit *

Re: タイトルなし

> irdaはあの悪名高き赤外線モジュールだったと思います

イエースっ!!
赤外線モジュール = 無線LAN(WLAN)ではないかと?

子LAN同士でアドホック通信できるし。

猫山猫宗 #G.XhfRxg | URL | 2009/09/24 17:15 * edit *

残念ながら無線LANと赤外線モジュールは全くの別物であります><。

憂煉 #- | URL | 2009/09/24 20:43 * edit *

確かにirdaは赤外線だった気がします。

solve #- | URL | 2009/09/24 21:15 * edit *

おやおや・・・・・。

PSPの取り扱い説明書は、読んだかい?

PSPには、赤外線装置と無線LAN装置が付いている、というのは間違ってる説

↓↓ ココを読むがよろし。
無線LAN研究室
ttp://wlanlab.net/wireless/basic.php

赤外線を使った、無線LANである説。


PSPの無線LANは、IEEE802.11b 規格ですよ。

猫山猫宗 #waiQioXc | URL | 2009/09/24 21:38 * edit *

PSPの赤外線で DIO を倒せるのか?

確かめるしかないぞっ!

震えるぞハート!燃え尽きるほど ヒートォォッ!

猫山猫宗 #waiQioXc | URL | 2009/09/24 21:42 * edit *

結論から言うとirdaと無線LANは別物です。
確かに無線LANの物理層には赤外線に因るものが存在しますが、irdaはInferRed Data Associationの略で完璧に別規格です。

波長で言うならばPSPの無線LANの波長は凡そ12cmであるのに対して、赤外線ポートが扱うのは0.1~0.2μmと非常に短いです。

また、実際にirda0にデータを流し込みまくるプログラムを組んで、デジカメ等で撮影するとその部分が光ります。
(これはデジカメの機種に依っては反応しないかもしれませんが…)

憂煉 #- | URL | 2009/09/25 00:08 * edit *

PSP の取り扱い説明書にはッッ!!

そういう事を聞かされてもっ

PSP-2000 の 主な仕様 の インターフェイス を見ると

DC IN 5V端子
ビデオ / ヘッドホン / マイク端子
Hi-Speed USB
DC OUT端子
メモリースティック デュオ TM スロット
ワイヤレスLAN (IEEE 802.11b)

しか書かれてない模様 (赤外線については触れられていません)
S●NYのコトだから、赤外線 と 無線LAN の新しい意味を開拓しようとしているとか???

猫山猫宗 #dRlocj0I | URL | 2009/09/25 01:49 * edit *

猫山さん…
赤外線機能はPSP-1000にしか無いのですよ…
ttp://www.playstation.com/manual/pdf/PSP-1000-2.7.pdf
↑1000用の説明書にはちゃんと赤外線ポートが記載されてたりします。

憂煉 #- | URL | 2009/09/25 17:21 * edit *

確認しましたので

修正しました。コッソリとwwwww

んで、ヒマだったので、赤外線リモコンで動くチョロQをPSP-1000で遠隔操作している動画を、動画サイトで観てきたのです。
なんで廃止なんだ、赤外線!

んで、知りましたが int main(int argc, char *argv[]);
の、argv[1] と argv[2] には、アドホックモードで赤外線を受信していると値が入るっぽいですな。www

猫山猫宗 #0DT7YplU | URL | 2009/09/25 20:08 * edit *

おおぅ

最近更新するペースが速いですね
ファイル関係はCで使った事があるので殆ど理解できました!

ちょっと質問
・ファイル関係はCの関数使うよりSCE系の関数使う方が良いのかな?
・irda0:にもファイル構成とかあるんですか?

pppm #rkzq7EIc | URL | 2009/09/29 12:33 * edit *

まったリズム・・・(^^;;;;;

> 最近更新するペースが速いですね
> ファイル関係はCで使った事があるので殆ど理解できました!

ファイル操作は、PSPSDK についてはANSI 標準規格で一緒なのかな?違いが無かったようです。

> ちょっと質問
> ・ファイル関係はCの関数使うよりSCE系の関数使う方が良いのかな?
「1バイト読み込み」をするなら、ch=getc(fp); やりませう。FILE *fp。
fopen も sceIoOpen も、元は一緒の関数だったかと思うんですが・・・・・・・??

> ・irda0:にもファイル構成とかあるんですか?
ファイルを開く、閉じるのみです。
ファイル構成はありませぬ。

ノシ

猫山猫宗 #0DT7YplU | URL | 2009/09/30 13:20 * edit *

ほほぅ

ファイル構成が無いんですか。なんだか不思議な感じです。
irda0自体がファイルになってるような感じなんですかねぇ

pppm #rkzq7EIc | URL | 2009/10/01 19:26 * edit *

赤外線に関する質問

こんにちは
毎日プログラミング講座拝見させてもらっています。

この回で赤外線ポートに関することが少し出てきましたが、私は赤外線送信に興味があるので、赤外線出力に関して講座してもらえないでしょうか。

サンプルファイルのirdaとか、どうやったら赤外線のラジコンを動かせるかとかについて解説してもらえるとうれしいです。

サンプルプログラムの赤外線送信部分
if (pad.Buttons != buttonsold) {
unsigned char padHighbyte = pad.Buttons >> 8;
sceIoWrite(fd, &padHighbyte, 1);
buttonsold = pad.Buttons;
}
これってどこにもパルス値(?)を設定している部分とかがないですよね?でも試してみるとうまくいく。不思議です。

ぶしつけな質問で申し訳ありませんが、もしまだ次回の講座内容を決めていなければぜひ赤外線について詳しく教えてください。

よろしくお願いします。

名無しさん #- | URL | 2009/10/16 23:30 * edit *

>unsigned char padHighbyte = pad.Buttons >> 8;
>sceIoWrite(fd, &padHighbyte, 1);

"irda0:" ファイルへの書き込みが、パルス出力の様です。
Lトリガー、Rトリガー、□、△、○、×、
に対して反応している模様。

ファイル編が終わったら、赤外線操作をやってみます。

PSPプログラミング
副題:「テレビのリモコンとしてPSPを利用する!?」

こう、ご期待!!

猫山猫宗 #XqdwbOcU | URL | 2009/10/17 01:41 * edit *

ありがとうございます
これからも毎日チェックします

名無しさん #- | URL | 2009/10/17 09:08 * edit *

512*512でフルカラーBMP読み込む早さ
fread()で読み込む・・・30秒 遅いっ!!
sceIORead()で4バイト境界で読み込む・・・3秒 早っ!!

参考にでもしてください。

名無しさん #wLMIWoss | URL | 2010/12/31 16:29 * edit *

まとめて読み込むから速いのだ!!

別に4バイト境界でなくてもいいんですけどね~

24BIT-BMP は一気読みしてから3バイトずつちょん切ればいいし(^^;;;

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

page top

コメントの投稿

Secret

page top

トラックバック

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

page top


h o m e |


 

2017-03