- メインページ
- モジュール
- データ構造
- ファイル
- ディレクトリ

- ファイル一覧
- グローバル

# dxlibp.h

説明を見る。

    00001
    00019 #ifndef DXLIBP_H__
    00020 #define DXLIBP_H__
    00021
    00022 #include <pspuser.h>
    00023
    00024 /*DXPのコンパイルオプション*/
    00025 #define DXP_BUILDOPTION_FILEHANDLE_MAX      32      //FileRead系関数で同時に開けるファイルハンドルの数
    00026 #define DXP_BUILDOPTION_FILENAMELENGTH_MAX  260     //FileRead系関数で使えるファイル名の長さ
    00027 #define DXP_BUILDOPTION_TEXTURE_MAXNUM      256     //DXPが内部で持つテクスチャの最大枚数
    00028 #define DXP_BUILDOPTION_GHANDLE_MAXNUM      512     //グラフィックスハンドルの最大数
    00029
    00030 /*---定数とマクロ---*/
    00031
    00032 #define RUNCHECK {printfDx("%s,%s,%s,%d¥n",__TIME__,__FILE__,__func__,__LINE__);ScreenCopy();AppLogAdd("%s,%s,%s,%d¥n",__TIME__,__FILE__,__func__,__LINE__);}
    00033
    00034
    00035 #ifndef TRUE
    00036 #define TRUE    (1)
    00037 #endif
    00038 #ifndef FALSE
    00039 #define FALSE   (0)
    00040 #endif
    00041 #ifndef LONGLONG
    00042 #define LONGLONG u64
    00043 #endif
    00044
    00045
    00046 /*Windowsの定義をすこし流用*/
    00047 #define BYTE    u8
    00048 #define WORD    u16
    00049 #define DWORD   u32
    00050
    00051 /* 文字コード定義 */
    00052 #define DXP_CP_SJIS         (0x0d)
    00053 #define DXP_CP_UTF8         (0xff)
    00054
    00055 /* PSPのボタン定義 */
    00056 #define DXP_INPUT_UP        (0x00000010)
    00057 #define DXP_INPUT_RIGHT     (0x00000020)
    00058 #define DXP_INPUT_DOWN      (0x00000040)
    00059 #define DXP_INPUT_LEFT      (0x00000080)
    00060 #define DXP_INPUT_TRIANGLE  (0x00001000)
    00061 #define DXP_INPUT_CIRCLE    (0x00002000)
    00062 #define DXP_INPUT_CROSS     (0x00004000)
    00063 #define DXP_INPUT_SQUARE    (0x00008000)
    00064 #define DXP_INPUT_LTRIGGER  (0x00000100)
    00065 #define DXP_INPUT_RTRIGGER  (0x00000200)
    00066 #define DXP_INPUT_START     (0x00000008)
    00067 #define DXP_INPUT_SELECT    (0x00000001)
    00068
    00069 /* ゲームパッド定義 */
    00070 #define DX_INPUT_PAD1                               (1) /* PSPの入力はPAD1入力として取得することができます。詳しくは本家ライブラリのマニュアルを参照してください。 */
    00071 #define DX_INPUT_PAD2                               (0)
    00072 #define DX_INPUT_PAD3                               (0)
    00073 #define DX_INPUT_PAD4                               (0)
    00074 #define DX_INPUT_PAD5                               (0)
    00075 #define DX_INPUT_PAD6                               (0)
    00076 #define DX_INPUT_PAD7                               (0)
    00077 #define DX_INPUT_PAD8                               (0)
    00078 #define DX_INPUT_KEY                                (0)
    00079 #define DX_INPUT_KEY_PAD1                           (1)
    00080
    00081 /* ゲームパッドのボタン定義 */
    00082 #define PAD_INPUT_DOWN                              (0x00000001)
    00083 #define PAD_INPUT_LEFT                              (0x00000002)
    00084 #define PAD_INPUT_RIGHT                             (0x00000004)
    00085 #define PAD_INPUT_UP                                (0x00000008)
    00086 #define PAD_INPUT_A                                 (0x00000010)
    00087 #define PAD_INPUT_B                                 (0x00000020)
    00088 #define PAD_INPUT_C                                 (0x00000040)
    00089 #define PAD_INPUT_X                                 (0x00000080)
    00090 #define PAD_INPUT_Y                                 (0x00000100)
    00091 #define PAD_INPUT_Z                                 (0x00000200)
    00092 #define PAD_INPUT_L                                 (0x00000400)
    00093 #define PAD_INPUT_R                                 (0x00000800)
    00094 #define PAD_INPUT_START                             (0x00001000)
    00095 #define PAD_INPUT_M                                 (0x00002000)
    00096 #define PAD_INPUT_D                                 (0x00004000)
    00097 #define PAD_INPUT_F                                 (0x00008000)
    00098 #define PAD_INPUT_G                                 (0x00010000)
    00099 #define PAD_INPUT_H                                 (0x00020000)
    00100 #define PAD_INPUT_I                                 (0x00040000)
    00101 #define PAD_INPUT_J                                 (0x00080000)
    00102 #define PAD_INPUT_K                                 (0x00100000)
    00103 #define PAD_INPUT_LL                                (0x00200000)
    00104 #define PAD_INPUT_N                                 (0x00400000)
    00105 #define PAD_INPUT_O                                 (0x00800000)
    00106 #define PAD_INPUT_P                                 (0x01000000)
    00107 #define PAD_INPUT_RR                                (0x02000000)
    00108 #define PAD_INPUT_S                                 (0x04000000)
    00109 #define PAD_INPUT_T                                 (0x08000000)
    00110 #define PAD_INPUT_U                                 (0x10000000)
    00111 #define PAD_INPUT_V                                 (0x20000000)
    00112 #define PAD_INPUT_W                                 (0x40000000)
    00113 #define PAD_INPUT_XX                                (0x80000000)
    00114
    00115
    00116 /*
    00117  * キー定義
    00118  * PSPのボタン入力をキーボード入力として扱うことができます。詳しくは本家ライブラリのマニュアルを参照してください。
    00119 */
    00120 #define KEY_INPUT_BACK                              (0x0E)
    00121 #define KEY_INPUT_TAB                               (0x0F)
    00122 #define KEY_INPUT_RETURN                            (0x1C)
    00123
    00124 #define KEY_INPUT_LSHIFT                            (0x2A)
    00125 #define KEY_INPUT_RSHIFT                            (0x36)
    00126 #define KEY_INPUT_LCONTROL                          (0x1D)
    00127 #define KEY_INPUT_RCONTROL                          (0x9D)
    00128 #define KEY_INPUT_ESCAPE                            (0x01)
    00129 #define KEY_INPUT_SPACE                             (0x39)
    00130 #define KEY_INPUT_PGUP                              (0xC9)
    00131 #define KEY_INPUT_PGDN                              (0xD1)
    00132 #define KEY_INPUT_END                               (0xCF)
    00133 #define KEY_INPUT_HOME                              (0xC7)
    00134 #define KEY_INPUT_LEFT                              (0xCB)
    00135 #define KEY_INPUT_UP                                (0xC8)
    00136 #define KEY_INPUT_RIGHT                             (0xCD)
    00137 #define KEY_INPUT_DOWN                              (0xD0)
    00138 #define KEY_INPUT_INSERT                            (0xD2)
    00139 #define KEY_INPUT_DELETE                            (0xD3)
    00140
    00141 #define KEY_INPUT_MINUS                             (0x0C)
    00142 #define KEY_INPUT_YEN                               (0x7D)
    00143 #define KEY_INPUT_PREVTRACK                         (0x90)
    00144 #define KEY_INPUT_PERIOD                            (0x34)
    00145 #define KEY_INPUT_SLASH                             (0x35)
    00146 #define KEY_INPUT_LALT                              (0x38)
    00147 #define KEY_INPUT_RALT                              (0xB8)
    00148 #define KEY_INPUT_SCROLL                            (0x46)
    00149 #define KEY_INPUT_SEMICOLON                         (0x27)
    00150 #define KEY_INPUT_COLON                             (0x92)
    00151 #define KEY_INPUT_LBRACKET                          (0x1A)
    00152 #define KEY_INPUT_RBRACKET                          (0x1B)
    00153 #define KEY_INPUT_AT                                (0x91)
    00154 #define KEY_INPUT_BACKSLASH                         (0x2B)
    00155 #define KEY_INPUT_COMMA                             (0x33)
    00156 #define KEY_INPUT_CAPSLOCK                          (0x3A)
    00157 #define KEY_INPUT_SYSRQ                             (0xB7)
    00158 #define KEY_INPUT_PAUSE                             (0xC5)
    00159
    00160 #define KEY_INPUT_NUMPAD0                           (0x52)
    00161 #define KEY_INPUT_NUMPAD1                           (0x4F)
    00162 #define KEY_INPUT_NUMPAD2                           (0x50)
    00163 #define KEY_INPUT_NUMPAD3                           (0x51)
    00164 #define KEY_INPUT_NUMPAD4                           (0x4B)
    00165 #define KEY_INPUT_NUMPAD5                           (0x4C)
    00166 #define KEY_INPUT_NUMPAD6                           (0x4D)
    00167 #define KEY_INPUT_NUMPAD7                           (0x47)
    00168 #define KEY_INPUT_NUMPAD8                           (0x48)
    00169 #define KEY_INPUT_NUMPAD9                           (0x49)
    00170 #define KEY_INPUT_MULTIPLY                          (0x37)
    00171 #define KEY_INPUT_ADD                               (0x4E)
    00172 #define KEY_INPUT_SUBTRACT                          (0x4A)
    00173 #define KEY_INPUT_DECIMAL                           (0x53)
    00174 #define KEY_INPUT_DIVIDE                            (0xB5)
    00175 #define KEY_INPUT_NUMPADENTER                       (0x9C)
    00176
    00177 #define KEY_INPUT_F1                                (0x3B)
    00178 #define KEY_INPUT_F2                                (0x3C)
    00179 #define KEY_INPUT_F3                                (0x3D)
    00180 #define KEY_INPUT_F4                                (0x3E)
    00181 #define KEY_INPUT_F5                                (0x3F)
    00182 #define KEY_INPUT_F6                                (0x40)
    00183 #define KEY_INPUT_F7                                (0x41)
    00184 #define KEY_INPUT_F8                                (0x42)
    00185 #define KEY_INPUT_F9                                (0x43)
    00186 #define KEY_INPUT_F10                               (0x44)
    00187 #define KEY_INPUT_F11                               (0x57)
    00188 #define KEY_INPUT_F12                               (0x58)
    00189
    00190 #define KEY_INPUT_A                                 (0x1E)
    00191 #define KEY_INPUT_B                                 (0x30)
    00192 #define KEY_INPUT_C                                 (0x2E)
    00193 #define KEY_INPUT_D                                 (0x20)
    00194 #define KEY_INPUT_E                                 (0x12)
    00195 #define KEY_INPUT_F                                 (0x21)
    00196 #define KEY_INPUT_G                                 (0x22)
    00197 #define KEY_INPUT_H                                 (0x23)
    00198 #define KEY_INPUT_I                                 (0x17)
    00199 #define KEY_INPUT_J                                 (0x24)
    00200 #define KEY_INPUT_K                                 (0x25)
    00201 #define KEY_INPUT_L                                 (0x26)
    00202 #define KEY_INPUT_M                                 (0x32)
    00203 #define KEY_INPUT_N                                 (0x31)
    00204 #define KEY_INPUT_O                                 (0x18)
    00205 #define KEY_INPUT_P                                 (0x19)
    00206 #define KEY_INPUT_Q                                 (0x10)
    00207 #define KEY_INPUT_R                                 (0x13)
    00208 #define KEY_INPUT_S                                 (0x1F)
    00209 #define KEY_INPUT_T                                 (0x14)
    00210 #define KEY_INPUT_U                                 (0x16)
    00211 #define KEY_INPUT_V                                 (0x2F)
    00212 #define KEY_INPUT_W                                 (0x11)
    00213 #define KEY_INPUT_X                                 (0x2D)
    00214 #define KEY_INPUT_Y                                 (0x15)
    00215 #define KEY_INPUT_Z                                 (0x2C)
    00216
    00217 #define KEY_INPUT_0                                 (0x0B)
    00218 #define KEY_INPUT_1                                 (0x02)
    00219 #define KEY_INPUT_2                                 (0x03)
    00220 #define KEY_INPUT_3                                 (0x04)
    00221 #define KEY_INPUT_4                                 (0x05)
    00222 #define KEY_INPUT_5                                 (0x06)
    00223 #define KEY_INPUT_6                                 (0x07)
    00224 #define KEY_INPUT_7                                 (0x08)
    00225 #define KEY_INPUT_8                                 (0x09)
    00226 #define KEY_INPUT_9                                 (0x0A)
    00227
    00228
    00229 /*オンスクリーンキーボードのモード指定*/
    00230 #define DXP_OSK_ALL         (0x00000000)    //全て
    00231 #define DXP_OSK_DIGIT       (0x00000001)    //半角数字
    00232 #define DXP_OSK_SYMBOL      (0x00000002)    //半角記号
    00233 #define DXP_OSK_SMALL       (0x00000004)    //半角小文字
    00234 #define DXP_OSK_LARGE       (0x00000008)    //半角大文字
    00235 #define DXP_OSK_DIGIT2      (0x00000100)    //全角数字
    00236 #define DXP_OSK_SYMBOL2     (0x00000200)    //全角記号
    00237 #define DXP_OSK_SMALL2      (0x00000400)    //全角小文字
    00238 #define DXP_OSK_LARGE2      (0x00000800)    //全角大文字
    00239 #define DXP_OSK_HIRAGANA    (0x00001000)    //ひらがな
    00240 #define DXP_OSK_KATAKANA_H  (0x00002000)    //半角カタカナ
    00241 #define DXP_OSK_KATAKANA    (0x00004000)    //全角カタカナ
    00242 #define DXP_OSK_KANJI       (0x00008000)    //漢字
    00243 #define DXP_OSK_URL         (0x00080000)    //URL入力支援
    00244
    00245
    00246 /* 乱数生成方法の定義。SetRandMode関数に渡します。 */
    00247 #define DXP_RANDMODE_MT (0) //メルセンヌ・ツイスター方式の乱数生成器を使います。おそらく、本家との互換性があります。
    00248 #define DXP_RANDMODE_HW (1) //PSPのハードウェアの乱数生成器を使います。高速です。
    00249
    00250 /* ちょっとした色の定数 */
    00251 #define DXP_COLOR_NONE      0x00000000
    00252 #define DXP_COLOR_BLACK     0xff000000
    00253 #define DXP_COLOR_RED       0xff0000ff
    00254 #define DXP_COLOR_GREEN     0xff00ff00
    00255 #define DXP_COLOR_BLUE      0xffff0000
    00256 #define DXP_COLOR_WHITE     0xffffffff
    00257 #define DXP_COLOR_LITEGRAY  0xffbfbfbf
    00258 #define DXP_COLOR_GRAY      0xff7f7f7f
    00259 #define DXP_COLOR_DARKGRAY  0xff3f3f3f
    00260
    00261 /* フォント周り */
    00262 #define DXP_FONT_ALIGN_LEFT     0x0000      //左寄せ
    00263 #define DXP_FONT_ALIGN_CENTER   0x0200      //中央
    00264 #define DXP_FONT_ALIGN_RIGHT    0x0400      //右寄せ
    00265 #define DXP_FONT_WIDTH_FIX      0x0800      //等幅指定用
    00266 #define DXP_FONT_ALIGN_DEFAULT  (DXP_FONT_ALIGN_LEFT)
    00267 #define DXP_FONT_DEFAULT_SIZE   16
    00268
    00269
    00270 /*描画*/
    00271 #define DX_SCREEN_BACK      0xfffffffe
    00272 /*グラフィックのフォーマット定義*/
    00273 #define DXP_FMT_5650        (0) /* テクスチャ、パレット、描画先*/
    00274 #define DXP_FMT_5551        (1) /* テクスチャ、パレット、描画先*/
    00275 #define DXP_FMT_4444        (2) /* テクスチャ、パレット、描画先*/
    00276 #define DXP_FMT_8888        (3) /* テクスチャ、パレット、描画先*/
    00277 #define DXP_FMT_T4          (4) /* テクスチャのみ */
    00278 #define DXP_FMT_T8          (5) /* テクスチャのみ */
    00279 //#define DXP_FMT_DXT1      (8) /* テクスチャのみ */
    00280 //#define DXP_FMT_DXT3      (9) /* テクスチャのみ */
    00281 //#define DXP_FMT_DXT5      (10)/* テクスチャのみ */
    00282
    00283 /*描画モード定義*/
    00284 #define DX_DRAWMODE_NEAREST     0
    00285 #define DX_DRAWMODE_BILINEAR    1
    00286
    00287 /* 描画ブレンドモード定義 */
    00288 #define DX_BLENDMODE_NOBLEND                        (0)             /* ノーブレンド*/
    00289 #define DX_BLENDMODE_ALPHA                          (1)             /* αブレンド*/
    00290 #define DX_BLENDMODE_ADD                            (2)             /* 加算ブレンド*/
    00291 #define DX_BLENDMODE_SUB                            (3)             /* 減算ブレンド*/
    00292 #define DX_BLENDMODE_MUL                            (4)             /* 乗算ブレンド*/
    00293 #define DX_BLENDMODE_DESTCOLOR                      (8)             /* カラーは更新されない*/
    00294 #define DX_BLENDMODE_INVDESTCOLOR                   (9)             /* 描画先の色の反転値を掛ける*/
    00295 #define DX_BLENDMODE_INVSRC                         (10)            /* 描画元の色を反転する*/
    00296 /*#define DX_BLENDMODE_MULA                         (11)        */
    00297     /* アルファチャンネル考慮付き乗算ブレンドはPSPの制限で実装できませんでした＞＜。*/
    00298
    00299 /* SetGraphModeの戻り値 */
    00300 #define DX_CHANGESCREEN_OK                          (0)                 // 画面変更は成功した
    00301 #define DX_CHANGESCREEN_RETURN                      (-1)                // 画面の変更は失敗し、元の画面モードに戻された
    00302
    00303 /* 再生タイプ */
    00304 #define DX_PLAYTYPE_NORMAL  0
    00305 #define DX_PLAYTYPE_BACK    1
    00306 #define DX_PLAYTYPE_LOOP    3
    00307
    00308 /* 音楽 */
    00309 #define DX_SOUNDDATATYPE_MEMNOPRESS                 (0)
    00310 //#define DX_SOUNDDATATYPE_MEMPRESS                 (1)
    00311 #define DX_SOUNDDATATYPE_FILE                       (3)
    00312
    00313
    00314 /* 構造体定義 */
    00315 typedef struct DATEDATA__
    00316 {
    00317     int Year;
    00318     int Mon;
    00319     int Day;
    00320     int Hour;
    00321     int Min;
    00322     int Sec;
    00323 }DATEDATA;
    00324
    00325
    00326 typedef ScePspFVector3 VECTOR;
    00327 typedef struct MATRIX
    00328 {
    00329     float m[4][4];
    00330 }MATRIX;
    00331
    00332
    00333 #ifdef  __cplusplus
    00334 #define DXPDEFARG(ARG)  =(ARG)      /* C++言語のデフォルト引数を指定するためのマクロ */
    00335 extern "C" {
    00336 #else
    00337 #define DXPDEFARG(ARG)
    00338 #endif
    00339
    00349 int DxLib_Init(void);
    00357 int DxLib_End(void);
    00365 int DxLib_Isinit(void);
    00373 int ProcessMessage(void);
    00376 /*@defgroup 文字コード関連*/
    00386 int SetCodepoint(int codepoint);
    00397 int GetNowCount(void);
    00404 u64 GetNowHiPerformanceCount(void);
    00413 int GetDateTime(DATEDATA *datebuf);
    00420 void Sleep(int ms);
    00425 int SRand(int seed);
    00433 int GetRand(int max);
    00445 int ChangeRandMode(int mode);
    00457 int ChangeCpuSpeed(int freq);
    00462
    00463 static inline VECTOR VGet(float x,float y,float z){VECTOR res = {x,y,z};return res;}
    00471 static inline VECTOR VAdd(VECTOR v1,VECTOR v2){__asm__ volatile ("ulv.q C000,%0¥n  ulv.q C010,%1¥n    vadd.t C000,C000,C010¥n    sv.s S000,0 + %0¥n sv.s S001,4 + %0¥n sv.s S002,8 + %0¥n":"+m"(v1):"m"(v2));return v1;}
    00479 static inline VECTOR VSub(VECTOR v1,VECTOR v2){__asm__ volatile ("ulv.q C000,%0¥n  ulv.q C010,%1¥n    vsub.t C000,C000,C010¥n    sv.s S000,0 + %0¥n sv.s S001,4 + %0¥n sv.s S002,8 + %0¥n":"+m"(v1):"m"(v2));return v1;}
    00487 static inline float VDot(VECTOR v1,VECTOR v2){register float res;__asm__ volatile ("ulv.q C000,%1¥n    ulv.q C010,%2¥n    vdot.t S020,C000,C010¥nmfv %0,S020¥n":"=r"(res):"m"(v1),"m"(v2));return res;}
    00495 static inline VECTOR VCross(VECTOR v1,VECTOR v2){__asm__ volatile ("ulv.q C000,%0¥nulv.q C010,%1¥nvcrsp.t C000,C000,C010¥nsv.s S000,0 + %0¥nsv.s S001,4 + %0¥nsv.s S002,8 + %0¥n":"+m"(v1):"m"(v2));return v1;}
    00503 static inline VECTOR VScale(VECTOR v,float scale){__asm__ volatile ("ulv.q C000,%0¥nmtv %1,S010¥nvscl.t C000,C000,S010¥nsv.s S000,0 + %0¥nsv.s S001,4 + %0¥nsv.s S002,8 + %0¥n":"+m"(v):"r"(scale));return v;}
    00510 static inline float VSize(VECTOR v){float res;__asm__ volatile ("ulv.q C000,%1¥nvdot.t S010,C000,C000¥nvsqrt.s S010,S010¥nsv.s %0,S010¥n":"=r"(res):"m"(v));return res;}
    00517 static inline float VSquareSize(VECTOR v){register float res;__asm__ volatile("ulv.q C000,%1¥nvdot.t S010,C000,C000¥nmfv %0,S010¥n":"=r"(res):"m"(v));return res;}
    00524 static inline VECTOR VNorm(VECTOR v){__asm__ volatile("ulv.q C000,%0¥nvdot.t S010,C000,C000¥nvrsq.s S010,S010¥nvscl.t C000,C000,S010¥nusv.s S000,0 + %0¥nusv.s S001,4 + %0¥nusv.s     S002,   8 + %0¥n":"+m"(v));return v;}
    00532 static inline VECTOR VTransform(VECTOR v,MATRIX m){__asm__ volatile("ulv.q C000,%0¥nvone.s S003¥nulv.q R100,0  + %1¥nulv.q R101,16 + %1¥nulv.q R102,32 + %1¥nulv.q R103,48 + %1¥nvtfm4.q C010,M100,C000¥nsv.s S010,0 + %0¥nsv.s S011,4 + %0¥nsv.s S012,8 + %0¥n":"+m"(v):"m"(m));return v;}
    00540 static inline VECTOR VTransformSR(VECTOR v,MATRIX m){__asm__ volatile("ulv.q C000,%0¥nulv.q R100,0  + %1¥nulv.q R101,16 + %1¥nulv.q R102,32 + %1¥nulv.q R103,48 + %1¥nvtfm3.t C010,M100,C000¥nsv.s S010,0 + %0¥nsv.s S011,4 + %0¥nsv.s S012,8 + %0¥n":"+m"(v):"m"(m));return v;}
    00546 static inline MATRIX MGetIdent(){MATRIX m;__asm__ volatile ("vmidt.q M000¥nusv.q R000,0 + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m));return m;}
    00553 static inline MATRIX MGetScale(VECTOR v){MATRIX m;__asm__ volatile ("ulv.q R100,%1¥nvmov.q R000,R100[x,0,0,0]¥nvmov.q R001,R100[0,y,0,0]¥nvmov.q R002,R100[0,0,z,0]¥nvmov.q R003,R100[0,0,0,1]¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"m"(v));return m;}
    00560 static inline MATRIX MGetTranslate(VECTOR v){MATRIX m;__asm__ volatile("ulv.q R100,%1¥nvmidt.q M000¥nvmov.q R003,R100[x,y,z,1]¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"m"(v));return m;}
    00567 static inline MATRIX MGetRotX(float angle){MATRIX m;__asm__ volatile("mtv %1,S100¥nvcst.s S110,VFPU_2_PI¥nvmul.s S100,S100,S110¥nvmidt.q M000¥nvrot.q R001,S100,[0,c,s,0]¥nvrot.q R002,S100,[0,-s,c,0]¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"r"(angle));return m;}
    00574 static inline MATRIX MGetRotY(float angle){MATRIX m;__asm__ volatile("mtv %1,S100¥nvcst.s S110,VFPU_2_PI¥nvmul.s S100,S100,S110¥nvmidt.q M000¥nvrot.q R000,S100,[c,0,-s,0]¥nvrot.q R002,S100,[s,0,c,0]¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"r"(angle));return m;}
    00581 static inline MATRIX MGetRotZ(float angle){MATRIX m;__asm__ volatile("mtv %1,S100¥nvcst.s S110,VFPU_2_PI¥nvmul.s S100,S100,S110¥nvmidt.q M000¥nvrot.q R000,S100,[c,s,0,0]¥nvrot.q R001,S100,[-s,c,0,0]¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"r"(angle));return m;}
    00589 static inline MATRIX MGetRotAxis(VECTOR v,float angle){MATRIX m;__asm__ volatile("ulv.q R100,%2¥nvdot.t S103,R100,R100¥nvrsq.s S103,S103¥nvscl.t R100,R100,S103¥nmtv %1,S130¥nvcst.s S103,VFPU_2_PI¥nvmul.s S130,S130,S103¥nvrot.p R101,S130,[s,c]¥nvocp.s S121,S111¥nvscl.t R102,R100,S121¥nvmov.q R000,R100[x,y,z,0]¥nvmov.q R001,R100[x,y,z,0]¥nvmov.q R002,R100[x,y,z,0]¥nvmov.q R003,R100[0,0,0,1]¥nvscl.t R000,R000,S102¥nvscl.t R001,R001,S112¥nvscl.t R002,R002,S122¥nvmul.t R102,R101[y,x,-x],R100[1,z,y]¥nvadd.t R000,R000,R102¥nvmul.t R102,R101[-x,y,x],R100[z,1,x]¥nvadd.t R001,R001,R102¥nvmul.t R102,R101[x,-x,y],R100[y,x,1]¥nvadd.t R002,R002,R102¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"r"(angle),"m"(v));return m;}
    00598 static inline MATRIX MGetRotVec2(VECTOR v1,VECTOR v2){MATRIX m;__asm__ volatile ("ulv.q R000,%1¥nulv.q R001,%2¥nvdot.t S002,R000,R000¥nvdot.t S012,R001,R001¥nvrsq.p R002,R002¥nvscl.t R000,R000,S002¥nvscl.t R001,R001,S012¥nvdot.t S002,R000,R001¥nvmul.s S012,S002,S002¥nvocp.p R022,R002¥nvsqrt.s S012,S032¥nvcrsp.t R003,R000,R001¥nvdot.t S032,R003,R003¥nvrsq.s S032,S032¥nvscl.t R003,R003,S032¥nvscl.t R000,R003,S022¥nvmov.q R100,R003[x,y,z,0]¥nvmov.q R101,R003[x,y,z,0]¥nvmov.q R102,R003[x,y,z,0]¥nvmov.q R103,R003[0,0,0,1]¥nvscl.t R100,R100,S000¥nvscl.t R101,R101,S010¥nvscl.t R102,R102,S020¥nvmul.t R000,R002[x,y,-y],R003[1,z,y]¥nvadd.t R100,R100,R000¥nvmul.t R000,R002[-y,x,y],R003[z,1,x]¥nvadd.t R101,R101,R000¥nvmul.t R000,R002[y,-y,x],R003[y,x,1]¥nvadd.t R102,R102,R000¥nusv.q R100,0  + %0¥nusv.q R101,16 + %0¥nusv.q R102,32 + %0¥nusv.q R103,48 + %0¥n":"=m"(m):"m"(v1),"m"(v2));return m;}
    00608 static inline MATRIX MGetAxis1(VECTOR xAxis,VECTOR yAxis,VECTOR zAxis,VECTOR pos){MATRIX m;m.m[0][0] = xAxis.x;m.m[0][1] = xAxis.y;m.m[0][2] = xAxis.z;m.m[0][3] = 0.0f;m.m[1][0] = yAxis.x;m.m[1][1] = yAxis.y;m.m[1][2] = yAxis.z;m.m[1][3] = 0.0f;m.m[2][0] = zAxis.x;m.m[2][1] = zAxis.y;m.m[2][2] = zAxis.z;m.m[2][3] = 0.0f;m.m[3][0] = pos.x;m.m[3][1] = pos.y;m.m[3][2] = pos.z;m.m[3][3] = 1.0f;return m;}
    00618 static inline MATRIX MGetAxis2(VECTOR xAxis,VECTOR yAxis,VECTOR zAxis,VECTOR pos){MATRIX m;__asm__ volatile ("ulv.q C010,%1¥nulv.q C020,%2¥nulv.q C030,%3¥nulv.q C040,%4¥nvdot.t S003,C010,C040[-x,-y,-z]¥nvdot.t S013,C020,C040[-x,-y,-z]¥nvdot.t S023,C030,C040[-x,-y,-z]¥nvmov.q C040,C040[0,0,0,1]¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"m"(xAxis),"m"(yAxis),"m"(zAxis),"m"(pos));return m;}
    00626 static inline MATRIX MAdd(MATRIX m1,MATRIX m2){MATRIX m;__asm__ volatile ("ulv.q R000,0  + %1¥nulv.q R001,16 + %1¥nulv.q R002,32 + %1¥nulv.q R003,48 + %1¥nulv.q R100,0  + %2¥nulv.q R101,16 + %2¥nulv.q R102,32 + %2¥nulv.q R103,48 + %2¥nvadd.q R200,R000,R100¥nvadd.q R201,R001,R101¥nvadd.q R202,R002,R102¥nvadd.q R203,R003,R103¥nusv.q R200,0  + %0¥nusv.q R201,16 + %0¥nusv.q R202,32 + %0¥nusv.q R203,48 + %0¥n":"=m"(m):"m"(m1),"m"(m2));return m;}
    00634 static inline MATRIX MMult(MATRIX m1,MATRIX m2){MATRIX m;__asm__ volatile ("ulv.q R000,0  + %1¥nulv.q R001,16 + %1¥nulv.q R002,32 + %1¥nulv.q R003,48 + %1¥nulv.q R100,0  + %2¥nulv.q R101,16 + %2¥nulv.q R102,32 + %2¥nulv.q R103,48 + %2¥nvmmul.q M200,M000,M100¥nusv.q R200,0  + %0¥nusv.q R201,16 + %0¥nusv.q R202,32 + %0¥nusv.q R203,48 + %0¥n":"=m"(m):"m"(m1),"m"(m2));return m;}
    00642 static inline MATRIX MScale(MATRIX m,float scale){__asm__ volatile ("ulv.q R000,0  + %0¥nulv.q R001,16 + %0¥nulv.q R002,32 + %0¥nulv.q R003,48 + %0¥nmtv S100,%1¥nmscl.q R000,R000,S100¥nmscl.q R001,R001,S100¥nmscl.q R002,R002,S100¥nmscl.q R003,R003,S100¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m):"r"(scale) );return m;}
    00649 static inline MATRIX MTranspose(MATRIX m){__asm__ volatile ("ulv.q R000,0  + %0¥nulv.q R001,16 + %0¥nulv.q R002,32 + %0¥nulv.q R003,48 + %0¥nusv.q C000,0  + %0¥nusv.q C010,16 + %0¥nusv.q C020,32 + %0¥nusv.q C030,48 + %0¥n":"=m"(m));return m;}
    00657 static inline MATRIX MInverse(MATRIX m){register float d;__asm__ volatile ("ulv.q R200,0  + %1¥nulv.q R201,16 + %1¥nulv.q R202,32 + %1¥nulv.q R203,48 + %1¥nvmul.q R100,R201[y,x,x,x],R202[z,z,y,y]¥nvmul.q R100,R203[w,w,w,z],R100¥nvmul.q R101,R201[z,z,y,y],R202[w,w,w,z]¥nvmul.q R101,R203[y,x,x,x],R101¥nvadd.q R100,R100,R101¥nvmul.q R101,R201[w,w,w,z],R202[y,x,x,x]¥nvmul.q R101,R203[z,z,y,y],R101¥nvadd.q R100,R100,R101¥nvmul.q R101,R203[y,x,x,x],R202[z,z,y,y]¥nvmul.q R101,R201[w,w,w,z],R101¥nvsub.q R100,R100,R101¥nvmul.q R101,R203[z,z,y,y],R202[w,w,w,z]¥nvmul.q R101,R201[y,x,x,x],R101¥nvsub.q R100,R100,R101¥nvmul.q R101,R203[w,w,w,z],R202[y,x,x,x]¥nvmul.q R101,R201[z,z,y,y],R101¥nvsub.q R100,R100,R101¥nvdot.q S101,R100,R200[x,-y,z,-w]¥nvabs.s S102,S101¥nmfv %0,S102¥n":"=r"(d):"m"(m));if(d < 0.00001f){__asm__ volatile("vmidt.q M000¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m));return m;}__asm__ volatile("vrcp.s S101,S101¥nvscl.q C000,R100[x,-y,z,-w],S101¥nvmul.q R102,R200[y,x,x,x],R203[w,w,w,z]¥nvmul.q R103,R203[y,x,x,x],R200[w,w,w,z]¥nvsub.q R102,R102,R103¥nvmul.q C010,R102,R202[z,z,y,y]¥nvmul.q R102,R200[z,z,y,y],R203[y,x,x,x]¥nvmul.q R103,R203[z,z,y,y],R200[y,x,x,x]¥nvsub.q R102,R102,R103¥nvmul.q R102,R102,R202[w,w,w,z]¥nvadd.q C010,C010,R102¥nvmul.q R102,R200[w,w,w,z],R203[z,z,y,y]¥nvmul.q R103,R203[w,w,w,z],R200[z,z,y,y]¥nvsub.q R102,R102,R103¥nvmul.q R102,R102,R202[y,x,x,x]¥nvadd.q C010,C010,R102¥nvscl.q C010,C010[-x,y,-z,w],S101¥nvmul.q R102,R200[y,x,x,x],R203[w,w,w,z]¥nvmul.q R103,R203[y,x,x,x],R200[w,w,w,z]¥nvsub.q R102,R102,R103¥nvmul.q C020,R102,R201[z,z,y,y]¥nvmul.q R102,R200[z,z,y,y],R203[y,x,x,x]¥nvmul.q R103,R203[z,z,y,y],R200[y,x,x,x]¥nvsub.q R102,R102,R103¥nvmul.q R102,R102,R201[w,w,w,z]¥nvadd.q C020,C020,R102¥nvmul.q R102,R200[w,w,w,z],R203[z,z,y,y]¥nvmul.q R103,R203[w,w,w,z],R200[z,z,y,y]¥nvsub.q R102,R102,R103¥nvmul.q R102,R102,R201[y,x,x,x]¥nvadd.q C020,C020,R102¥nvscl.q C020,C020[x,-y,z,-w],S101¥nvmul.q R102,R200[y,x,x,x],R202[w,w,w,z]¥nvmul.q R103,R202[y,x,x,x],R200[w,w,w,z]¥nvsub.q R102,R102,R103¥nvmul.q C030,R102,R201[z,z,y,y]¥nvmul.q R102,R200[z,z,y,y],R202[y,x,x,x]¥nvmul.q R103,R202[z,z,y,y],R200[y,x,x,x]¥nvsub.q R102,R102,R103¥nvmul.q R102,R102,R201[w,w,w,z]¥nvadd.q C030,C030,R102¥nvmul.q R102,R200[w,w,w,z],R202[z,z,y,y]¥nvmul.q R103,R202[w,w,w,z],R200[z,z,y,y]¥nvsub.q R102,R102,R103¥nvmul.q R102,R102,R201[y,x,x,x]¥nvadd.q C030,C030,R102¥nvscl.q C030,C030[-x,y,-z,w],S101¥nusv.q R000,0  + %0¥nusv.q R001,16 + %0¥nusv.q R002,32 + %0¥nusv.q R003,48 + %0¥n":"=m"(m));return m;}
    00658
    00671 int GetInputState(void);
    00677 int GetJoypadNum(void);
    00685 int GetJoypadInputState(int inputtype) ;
    00696 int GetJoypadAnalogInput(int *xbuf,int *ybuf,int inputtype);
    00702 int GetJoypadAnalogInputRight(int *xbuf,int* ybuf,int inputtype);
    00709 int SetJoypadInputToKeyInput(int inputtype,int padinput,int keyinput1,int keyinput2,int keyinput3,int keyinput4);
    00715 int StartJoypadVibration(int inputtype,int power,int time);
    00721 int StopJoypadVibration(int inputtype);
    00736 int SetKeyInputToPspInput(int key,int pspbutton);
    00743 int CheckHitKeyAll(void);
    00751 int CheckHitKey(int keycode);
    00760 int GetHitKeyStateAll(char* keystatebuf);
    00789 int GetTextOSK(char *buf,int buflen,int mode,const char *title,const char *init);
    00794 int FileRead_open(const char *filename,int async DXPDEFARG(0));
    00795 int FileRead_size(const char *filename);
    00796 int FileRead_close(int filehandle);
    00797 int FileRead_tell(int filehandle);
    00798 int FileRead_seek(int filehandle,int offset,int origin);
    00799 int FileRead_read(void *buffer,int readsize,int filehandle);
    00800 int FileRead_idle_chk( int filehandle);
    00801 int FileRead_eof(int filehandle);
    00802 int FileRead_gets(char *buffer,int buffersize,int filehandle);
    00803 int FileRead_getc(int filehandle);
    00804 //int   FileRead_scanf(int filehandle,const char *format, ...); //この関数の対応予定はありません。
    00821 int DrawLine(int x1,int y1,int x2,int y2,int color);
    00832 int DrawBox(int x1,int y1,int x2,int y2,int color,int fillflag);
    00843 int DrawCircle(int x,int y,int r,int color,int fillflag);
    00855 int DrawOval(int x,int y,int rx,int ry,int color,int fillflag);
    00867 int DrawTriangle(int x1,int y1,int x2,int y2,int x3,int y3,int color,int fillflag);
    00877 int DrawPixel(int x,int y,int color);
    00884 int GetPixel(int x,int y);
    00895 int LoadGraphScreen(int x,int y,const char* filename,int trans);
    00905 int LoadGraph(const char *FileName);
    00918 int LoadDivGraph(const char *filename,int allnum,int xnum,int ynum,int xsize,int ysize,int *handlebuf);
    00928 int MakeGraph(int xsize,int ysize);
    00939 int DrawGraph(int x,int y,int gh,int trans);
    00950 int DrawTurnGraph(int x,int y,int gh,int trans);
    00963 int DrawExtendGraph(int x1,int y1,int x2,int y2,int gh,int trans);
    00977 int DrawRotaGraph(int x,int y,float scale,float angle,int gh,int trans,int turn DXPDEFARG(0));
    00992 int DrawRotaGraphF(float x,float y,float scale,float angle,int gh,int trans,int turn DXPDEFARG(0));
    01006 int DrawRotaGraph2(int x,int y,int cx,int cy,float scale,float angle,int gh,int trans,int turn DXPDEFARG(0));
    01021 int DrawRotaGraph2F(float x,float y,float cx,float cy,float scale,float angle,int gh,int trans,int turn DXPDEFARG(0));
    01038 int DrawModiGraph(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4,int gh,int trans);
    01056 int DrawModiGraphF(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4, int gh, int trans );
    01072 int DrawRectGraph(int destx,int desty,int srcx,int srcy,int width,int height,int gh,int trans,int turn);
    01082 int DerivationGraph(int srcx,int srcy,int width,int height,int gh);
    01096 int GetDrawScreenGraph(int x1,int y1,int x2,int y2,int gh);
    01106 int GetGraphSize(int gh,int *xbuf,int *ybuf);
    01113 int InitGraph(void);
    01121 int DeleteGraph(int gh);
    01132 int SetDrawMode(int mode);
    01152 int SetDrawBlendMode(int blendmode,int param);
    01163 int SetDrawBright(int red,int green,int blue);
    01172 int SetTransColor(int color);
    01187 int SetGraphMode(int xsize,int ysize,int bpp);
    01196 int GetScreenState(int *xsize,int *ysize,int *bpp);
    01205 int SetDrawArea(int x1,int y1,int x2,int y2);
    01212 int ClearDrawScreen(void);
    01221 int GetColor(int Red,int Green,int Blue);
    01232 int SetDrawScreen(int ghandle);
    01239 int ScreenFlip(void);
    01249 int SetWaitVSyncFlag(int flag);
    01257 int MoveGraphToVRAM(int gh);
    01264 int MoveGraphToDDR(int gh);
    01272 int SwizzleGraph(int gh);
    01280 int UnswizzleGraph(int gh);
    01295 int ConvertGraphFormat(int gh,int psm);
    01302 int WaitGPUSync(void);
    01314 int GetDisplayFormat(void);
    01326 int SetDisplayFormat(int psm);
    01332 void *GetFramebufferAddress(void);
    01338 void *GetDisplaybufferAddress(void);
    01343
    01353 int LoadSoundMem(const char *filename);
    01368 int PlaySoundMem(int handle,int playtype,int rewindflag DXPDEFARG(1));
    01377 int CheckSoundMem(int handle);
    01385 int StopSoundMem(int handle);
    01393 int DeleteSoundMem(int handle);
    01400 int InitSoundMem(void);
    01410 int SetPanSoundMem(int pan,int handle);
    01419 int ChangeVolumeSoundMem(int volume,int handle);
    01429 int SetLoopPosSoundMem(int looppos_s,int handle);
    01439 int SetLoopSamplePosSoundMem(int looppos,int handle);
    01455 int SetCreateSoundDataType(int type);
    01470 int DrawString(int x,int y,const char *String,int color, int EdgeColor DXPDEFARG(0));
    01480 int DrawFormatString(int x,int y,int color,const char *String,...);
    01489 int GetDrawStringWidth(const char *str,int len);
    01498 int GetDrawFormatStringWidth(const char *format, ... );
    01506 int SetFontSize(int size);
    01515 int SetFontThickness(int thickness);
    01525 int ChangeFont(const char *fontname,int charset);
    01539 int ChangeFontType(int type);
    01540
    01552 int CreateFontToHandle(const char *fontname,int size,int thick,int fonttype,int charset DXPDEFARG(DXP_CP_SJIS));
    01561 int DeleteFontToHandle(int handle);
    01573 int DrawStringToHandle(int x,int y,const char *str,int color,int handle,int edgecolor DXPDEFARG(0));
    01584 int DrawFormatStringToHandle(int x,int y,int color,int handle,const char *format,...);
    01594 int GetDrawStringWidthToHandle(const char *str,int len,int handle);
    01604 int GetDrawFormatStringWidthToHandle(int handle,const char *format, ... );
    01611 int InitFontToHandle(void);
    01620 int AppLogAdd(const char *format,...);
    01630 int printfDx(const char *format,...);
    01637 int clsDx(void);
    01639 #ifdef __cplusplus
    01640 }
    01641 #endif
    01642 #endif//DXLIBP_H__