00001
00019 #ifndef DXLIBP_H__
00020 #define DXLIBP_H__
00021
00022 #include <pspuser.h>
00023
00024
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
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
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)
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
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
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
00280
00281
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
00297
00298
00299
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
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)
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
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
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__