--- np2/wince/scrnmng.cpp 2004/07/15 13:48:40 1.9 +++ np2/wince/scrnmng.cpp 2005/02/11 21:17:23 1.12 @@ -43,10 +43,10 @@ static SCRNMNG scrnmng; static SCRNSTAT scrnstat; static SCRNSURF scrnsurf; -static BYTE gx_disable = 1; +static UINT8 gx_disable = 1; extern GXKeyList gx_keylist; -static const TCHAR errmsg[] = STRLITERAL("Error"); +static const TCHAR errmsg[] = _T("Error"); typedef struct { @@ -58,6 +58,69 @@ typedef struct { int dstpos; } DRAWRECT; + +// ---- GX DLL¤Č¤« + +#if !defined(WIN32_PLATFORM_PSPC) || !defined(SIZE_VGA) + +#define GXGETDISPLAYPROPERTIES() GXGetDisplayProperties() +#define GXBEGINDRAW() GXBeginDraw() +#define GXENDDRAW() GXEndDraw() + +#else // PocketPC2003SE VGA + +typedef struct { + WORD wFormat; + WORD wBPP; + VOID *pFramePointer; + int cxStride; + int cyStride; + int cxPixels; + int cyPixels; +} RAWFRAMEBUFFERINFO; + +#define GETRAWFRAMEBUFFER 0x00020001 + +enum { + RFBIFMT_565 = 1, + RFBIFMT_555 = 2, + RFBIFMT_OTHER = 3 +}; + +static RAWFRAMEBUFFERINFO rfbi; + +static GXDisplayProperties GXGETDISPLAYPROPERTIES(void) { + + HDC hdc; + GXDisplayProperties ret; + + hdc = GetDC(NULL); + ExtEscape(hdc, GETRAWFRAMEBUFFER, 0, NULL, sizeof(rfbi), (char *)&rfbi); + ReleaseDC(NULL, hdc); + ret.cxWidth = rfbi.cxPixels; + ret.cyHeight = rfbi.cyPixels; + ret.cbxPitch = rfbi.cxStride; + ret.cbyPitch = rfbi.cyStride; + ret.cBPP = rfbi.wBPP; + ret.ffFormat = 0; + switch(rfbi.wFormat) { + case RFBIFMT_565: + ret.ffFormat |= kfDirect565; + break; + + case RFBIFMT_555: + ret.ffFormat |= kfDirect555; + break; + } + return(ret); +} +#define GXBEGINDRAW() (rfbi.pFramePointer) +#define GXENDDRAW() +#endif + + +// ---- + static BOOL calcdrawrect(DRAWRECT *dr, VRAMHDL s, const RECT_T *rt) { int pos; @@ -98,7 +161,7 @@ static void palcnv(CMNPAL *dst, const RG } } -static void bmp16draw(void *bmp, BYTE *dst, int width, int height, +static void bmp16draw(void *bmp, UINT8 *dst, int width, int height, int xalign, int yalign) { CMNVRAM vram; @@ -132,18 +195,18 @@ BOOL scrnmng_create(HWND hWnd, LONG widt return(FAILURE); } if (GXOpenDisplay(hWnd, GX_FULLSCREEN) == 0) { - MessageBox(hWnd, STRLITERAL("Couldn't GameX Object"), + MessageBox(hWnd, _T("Couldn't GAPI Object"), errmsg, MB_OK | MB_ICONSTOP); return(FAILURE); } - gx_dp = GXGetDisplayProperties(); + gx_dp = GXGETDISPLAYPROPERTIES(); if (gx_dp.cBPP != 16) { - MessageBox(hWnd, STRLITERAL("Only 16bit color support..."), + MessageBox(hWnd, _T("Only 16bit color support..."), errmsg, MB_OK | MB_ICONSTOP); return(FAILURE); } if (!(gx_dp.ffFormat & kfDirect565)) { - MessageBox(hWnd, STRLITERAL("Only 16bit(565) support..."), + MessageBox(hWnd, _T("Only 16bit(565) support..."), errmsg, MB_OK | MB_ICONSTOP); return(FAILURE); } @@ -157,7 +220,7 @@ BOOL scrnmng_create(HWND hWnd, LONG widt scrnmng.rotate = TRUE; } else { - wsprintf(msg, STRLITERAL("Required %dx%d..."), width, height); + wsprintf(msg, _T("Required %dx%d..."), width, height); MessageBox(hWnd, msg, errmsg, MB_OK | MB_ICONSTOP); return(FAILURE); } @@ -242,7 +305,7 @@ const SCRNSURF *scrnmng_surflock(void) { return(NULL); } if (scrnmng.vram == NULL) { - scrnsurf.ptr = (BYTE *)GXBeginDraw() + scrnmng.start; + scrnsurf.ptr = (UINT8 *)GXBEGINDRAW() + scrnmng.start; scrnsurf.xalign = scrnmng.xalign; scrnsurf.yalign = scrnmng.yalign; } @@ -267,9 +330,9 @@ static void draw_onmenu(void) { RECT_T rt; DRAWRECT dr; -const BYTE *p; - BYTE *q; -const BYTE *a; +const UINT8 *p; + UINT8 *q; +const UINT8 *a; int salign; int dalign; int r; @@ -297,7 +360,7 @@ const BYTE *a; return; } p = scrnmng.vram->ptr + (dr.srcpos * 2); - q = (BYTE *)GXBeginDraw() + dr.dstpos; + q = (UINT8 *)GXBEGINDRAW() + dr.dstpos; a = menuvram->alpha + dr.srcpos; salign = menuvram->width - dr.width; dalign = dr.yalign - (dr.width * dr.xalign); @@ -315,7 +378,7 @@ const BYTE *a; q += dalign; a += salign; } while(--dr.height); - GXEndDraw(); + GXENDDRAW(); } void scrnmng_surfunlock(const SCRNSURF *surf) { @@ -338,7 +401,7 @@ void scrnmng_surfunlock(const SCRNSURF * softkbd_paint(&vram, palcnv, TRUE); } #endif - GXEndDraw(); + GXENDDRAW(); } else { if (menuvram) { @@ -384,8 +447,8 @@ BOOL scrnmng_mousepos(LPARAM *lp) { void scrnmng_clear(BOOL logo) { void *bmp; - BYTE *p; - BYTE *q; + UINT8 *p; + UINT8 *q; int y; int x; long yalign; @@ -397,7 +460,7 @@ void scrnmng_clear(BOOL logo) { if (logo) { bmp = (void *)bmpdata_solvedata(nekop2_bmp); } - p = (BYTE *)GXBeginDraw(); + p = (UINT8 *)GXBEGINDRAW(); q = p; y = gx_dp.cyHeight; yalign = gx_dp.cbyPitch - (gx_dp.cbxPitch * gx_dp.cxWidth); @@ -410,7 +473,7 @@ void scrnmng_clear(BOOL logo) { q += yalign; } while(--y); bmp16draw(bmp, p + scrnmng.start, scrnmng.width, scrnmng.height, - scrnmng.xalign, scrnmng.yalign); GXEndDraw(); + scrnmng.xalign, scrnmng.yalign); GXENDDRAW(); if (bmp) { _MFREE(bmp); } @@ -475,10 +538,10 @@ void scrnmng_leavemenu(void) { void scrnmng_menudraw(const RECT_T *rct) { DRAWRECT dr; -const BYTE *p; -const BYTE *q; - BYTE *r; - BYTE *a; +const UINT8 *p; +const UINT8 *q; + UINT8 *r; + UINT8 *a; int salign; int dalign; int x; @@ -491,7 +554,7 @@ const BYTE *q; } p = scrnmng.vram->ptr + (dr.srcpos * 2); q = menuvram->ptr + (dr.srcpos * 2); - r = (BYTE *)GXBeginDraw() + dr.dstpos; + r = (UINT8 *)GXBEGINDRAW() + dr.dstpos; a = menuvram->alpha + dr.srcpos; salign = menuvram->width; dalign = dr.yalign - (dr.width * dr.xalign); @@ -514,7 +577,7 @@ const BYTE *q; r += dalign; a += salign; } while(--dr.height); - GXEndDraw(); + GXENDDRAW(); }