--- np2/win9x/subwind.cpp 2004/04/07 13:15:40 1.6 +++ np2/win9x/subwind.cpp 2004/04/09 10:52:21 1.9 @@ -10,6 +10,7 @@ #include "subwind.h" #include "np2class.h" #include "keydisp.h" +#include "memdbg32.h" #include "softkbd.h" @@ -43,7 +44,7 @@ typedef struct { HWND hwnd; WINLOCEX wlex; DD2HDL dd2hdl; -} KDWIN; +} KDISPWIN; typedef struct { int posx; @@ -52,19 +53,17 @@ typedef struct { BYTE type; } KDISPCFG; -static KDWIN kdwin; +static KDISPWIN kdispwin; static KDISPCFG kdispcfg; -static const char np2kdcaption[] = "Key Display"; -static const char np2kdclass[] = "NP2-KeyDispWin"; +static const char kdispapp[] = "Key Display"; +static const char kdispclass[] = "NP2-KeyDispWin"; static const char str_kdclose[] = "&Close"; -static const UINT32 kdwinpal[KEYDISP_PALS] = +static const UINT32 kdisppal[KEYDISP_PALS] = {0x00000000, 0xffffffff, 0xf9ff0000}; -static const char np2kdapp[] = "NP2 keydisp"; - -static const INITBL np2kdini[] = { +static const INITBL kdispini[] = { {"WindposX", INITYPE_SINT32, &kdispcfg.posx, 0}, {"WindposY", INITYPE_SINT32, &kdispcfg.posy, 0}, {"keydmode", INITYPE_UINT8, &kdispcfg.mode, 0}, @@ -74,7 +73,7 @@ static const INITBL np2kdini[] = { static BYTE kdgetpal8(CMNPALFN *self, UINT num) { if (num < KEYDISP_PALS) { - return(kdwinpal[num] >> 24); + return(kdisppal[num] >> 24); } return(0); } @@ -82,7 +81,7 @@ static BYTE kdgetpal8(CMNPALFN *self, UI static UINT32 kdgetpal32(CMNPALFN *self, UINT num) { if (num < KEYDISP_PALS) { - return(kdwinpal[num] & 0xffffff); + return(kdisppal[num] & 0xffffff); } return(0); } @@ -106,11 +105,11 @@ static void kddrawkeys(HWND hWnd, BOOL r if ((draw.right <= 0) || (draw.bottom <= 0)) { return; } - vram = dd2_bsurflock(kdwin.dd2hdl); + vram = dd2_bsurflock(kdispwin.dd2hdl); if (vram) { keydisp_paint(vram, redraw); - dd2_bsurfunlock(kdwin.dd2hdl); - dd2_blt(kdwin.dd2hdl, NULL, &draw); + dd2_bsurfunlock(kdispwin.dd2hdl); + dd2_blt(kdispwin.dd2hdl, NULL, &draw); } } @@ -121,9 +120,9 @@ static void kdsetwinsize(void) { WINLOCEX wlex; wlex = np2_winlocexallwin(hWndMain); - winlocex_setholdwnd(wlex, kdwin.hwnd); + winlocex_setholdwnd(wlex, kdispwin.hwnd); keydisp_getsize(&width, &height); - winloc_setclientsize(kdwin.hwnd, width, height); + winloc_setclientsize(kdispwin.hwnd, width, height); winlocex_move(wlex); winlocex_destroy(wlex); } @@ -133,7 +132,7 @@ static void kdsetdispmode(BYTE mode) { HMENU hmenu; keydisp_setmode(mode); - hmenu = np2class_gethmenu(kdwin.hwnd); + hmenu = np2class_gethmenu(kdispwin.hwnd); CheckMenuItem(hmenu, IDM_KDISPFM, ((mode == KEYDISP_MODEFM)?MF_CHECKED:MF_UNCHECKED)); CheckMenuItem(hmenu, IDM_KDISPMIDI, @@ -235,17 +234,17 @@ static LRESULT CALLBACK kdproc(HWND hWnd case WM_ENTERSIZEMOVE: soundmng_disable(SNDPROC_SUBWIND); - winlocex_destroy(kdwin.wlex); - kdwin.wlex = np2_winlocexallwin(hWnd); + winlocex_destroy(kdispwin.wlex); + kdispwin.wlex = np2_winlocexallwin(hWnd); break; case WM_MOVING: - winlocex_moving(kdwin.wlex, (RECT *)lp); + winlocex_moving(kdispwin.wlex, (RECT *)lp); break; case WM_EXITSIZEMOVE: - winlocex_destroy(kdwin.wlex); - kdwin.wlex = NULL; + winlocex_destroy(kdispwin.wlex); + kdispwin.wlex = NULL; soundmng_enable(SNDPROC_SUBWIND); break; @@ -268,8 +267,8 @@ static LRESULT CALLBACK kdproc(HWND hWnd case WM_DESTROY: np2class_wmdestroy(hWnd); - dd2_release(kdwin.dd2hdl); - kdwin.hwnd = NULL; + dd2_release(kdispwin.dd2hdl); + kdispwin.hwnd = NULL; kdsetdispmode(KEYDISP_MODENONE); break; @@ -279,9 +278,6 @@ static LRESULT CALLBACK kdproc(HWND hWnd return(0L); } - -// ---- - BOOL kdispwin_initialize(HINSTANCE hPreInst) { WNDCLASS wc; @@ -297,7 +293,7 @@ BOOL kdispwin_initialize(HINSTANCE hPreI wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH); wc.lpszMenuName = MAKEINTRESOURCE(IDR_KEYDISP); - wc.lpszClassName = np2kdclass; + wc.lpszClassName = kdispclass; if (!RegisterClass(&wc)) { return(FAILURE); } @@ -312,17 +308,17 @@ void kdispwin_create(void) { BYTE mode; CMNPALFN palfn; - if (kdwin.hwnd != NULL) { + if (kdispwin.hwnd != NULL) { return; } - ZeroMemory(&kdwin, sizeof(kdwin)); - hwnd = CreateWindow(np2kdclass, np2kdcaption, + ZeroMemory(&kdispwin, sizeof(kdispwin)); + hwnd = CreateWindow(kdispclass, kdispapp, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, kdispcfg.posx, kdispcfg.posy, - CW_USEDEFAULT, CW_USEDEFAULT, + KEYDISP_WIDTH, KEYDISP_HEIGHT, NULL, NULL, hInst, NULL); - kdwin.hwnd = hwnd; + kdispwin.hwnd = hwnd; if (hwnd == NULL) { goto kdcre_err1; } @@ -339,14 +335,14 @@ void kdispwin_create(void) { kdsetdispmode(mode); ShowWindow(hwnd, SW_SHOWNOACTIVATE); UpdateWindow(hwnd); - kdwin.dd2hdl = dd2_create(hwnd, KEYDISP_WIDTH, KEYDISP_HEIGHT); - if (kdwin.dd2hdl == NULL) { + kdispwin.dd2hdl = dd2_create(hwnd, KEYDISP_WIDTH, KEYDISP_HEIGHT); + if (kdispwin.dd2hdl == NULL) { goto kdcre_err2; } palfn.get8 = kdgetpal8; palfn.get32 = kdgetpal32; palfn.cnv16 = kdcnvpal16; - palfn.userdata = (long)kdwin.dd2hdl; + palfn.userdata = (long)kdispwin.dd2hdl; keydisp_setpal(&palfn); kdispwin_draw(0); SetForegroundWindow(hWndMain); @@ -362,21 +358,21 @@ kdcre_err1: void kdispwin_destroy(void) { - if (kdwin.hwnd != NULL) { - DestroyWindow(kdwin.hwnd); + if (kdispwin.hwnd != NULL) { + DestroyWindow(kdispwin.hwnd); } } HWND kdispwin_gethwnd(void) { - return(kdwin.hwnd); + return(kdispwin.hwnd); } void kdispwin_draw(BYTE cnt) { BYTE flag; - if (kdwin.hwnd) { + if (kdispwin.hwnd) { if (!cnt) { cnt = 1; } @@ -384,7 +380,7 @@ void kdispwin_draw(BYTE cnt) { if (flag & KEYDISP_FLAGSIZING) { kdsetwinsize(); } - kddrawkeys(kdwin.hwnd, FALSE); + kddrawkeys(kdispwin.hwnd, FALSE); } } @@ -396,7 +392,7 @@ void kdispwin_readini(void) { kdispcfg.posx = CW_USEDEFAULT; kdispcfg.posy = CW_USEDEFAULT; initgetfile(path, sizeof(path)); - ini_read(path, np2kdapp, np2kdini, sizeof(np2kdini)/sizeof(INITBL)); + ini_read(path, kdispapp, kdispini, sizeof(kdispini)/sizeof(INITBL)); } void kdispwin_writeini(void) { @@ -404,7 +400,265 @@ void kdispwin_writeini(void) { char path[MAX_PATH]; initgetfile(path, sizeof(path)); - ini_write(path, np2kdapp, np2kdini, sizeof(np2kdini)/sizeof(INITBL)); + ini_write(path, kdispapp, kdispini, sizeof(kdispini)/sizeof(INITBL)); +} +#endif + + +// ---- memdbg + +#if defined(CPUCORE_IA32) && defined(SUPPORT_MEMDBG32) + +typedef struct { + HWND hwnd; + WINLOCEX wlex; + DD2HDL dd2hdl; + int width; + int height; +} MDBGWIN; + +typedef struct { + int posx; + int posy; + UINT8 type; +} MDBGCFG; + +static MDBGWIN mdbgwin; +static MDBGCFG mdbgcfg; + +static const char mdbgapp[] = "Memory Map"; +static const char mdbgclass[] = "NP2-MemDbgWin"; +static const INITBL mdbgini[] = { + {"WindposX", INITYPE_SINT32, &mdbgcfg.posx, 0}, + {"WindposY", INITYPE_SINT32, &mdbgcfg.posy, 0}, + {"windtype", INITYPE_BOOL, &mdbgcfg.type, 0}}; + + +static void mdpalcnv(CMNPAL *dst, const RGB32 *src, UINT pals, UINT bpp) { + + UINT i; + + switch(bpp) { +#if defined(SUPPORT_16BPP) + case 16: + for (i=0; i