diff options
Diffstat (limited to 'backends/platform/wince')
-rw-r--r-- | backends/platform/wince/CEActionsPocket.cpp | 54 | ||||
-rw-r--r-- | backends/platform/wince/CEActionsPocket.h | 2 | ||||
-rw-r--r-- | backends/platform/wince/CEActionsSmartphone.cpp | 48 | ||||
-rw-r--r-- | backends/platform/wince/CEActionsSmartphone.h | 2 | ||||
-rw-r--r-- | backends/platform/wince/CEDevice.cpp | 9 | ||||
-rw-r--r-- | backends/platform/wince/CEgui/PanelKeyboard.cpp | 31 | ||||
-rw-r--r-- | backends/platform/wince/CEgui/PanelKeyboard.h | 3 | ||||
-rw-r--r-- | backends/platform/wince/CEkeys/EventsBuffer.cpp | 7 | ||||
-rw-r--r-- | backends/platform/wince/Makefile | 100 | ||||
-rw-r--r-- | backends/platform/wince/README-WinCE | 506 | ||||
-rw-r--r-- | backends/platform/wince/wince-sdl.cpp | 78 | ||||
-rw-r--r-- | backends/platform/wince/wince-sdl.h | 3 |
12 files changed, 262 insertions, 581 deletions
diff --git a/backends/platform/wince/CEActionsPocket.cpp b/backends/platform/wince/CEActionsPocket.cpp index 2bb79850e3..efada68ad9 100644 --- a/backends/platform/wince/CEActionsPocket.cpp +++ b/backends/platform/wince/CEActionsPocket.cpp @@ -49,7 +49,7 @@ const String pocketActionNames[] = { "Free look", "Zoom up", "Zoom down", - "FT Cheat", + "Multi Function", "Bind Keys", "Cursor Up", "Cursor Down", @@ -99,7 +99,7 @@ GUI::Actions() _action_enabled[POCKET_ACTION_DOWN] = true; _action_enabled[POCKET_ACTION_LEFT] = true; _action_enabled[POCKET_ACTION_RIGHT] = true; - _action_mapping[POCKET_ACTION_LEFTCLICK] = SDLK_RETURN; + _action_mapping[POCKET_ACTION_LEFTCLICK] = SDLK_F1; _action_mapping[POCKET_ACTION_UP] = SDLK_UP; _action_mapping[POCKET_ACTION_DOWN] = SDLK_DOWN; _action_mapping[POCKET_ACTION_LEFT] = SDLK_LEFT; @@ -127,11 +127,12 @@ void CEActionsPocket::initInstanceGame() { bool is_cine = (gameid == "cine"); bool is_touche = (gameid == "touche"); bool is_agi = (gameid == "agi"); + bool is_parallaction = (gameid == "parallaction"); GUI_Actions::initInstanceGame(); // See if a right click mapping could be needed - if (is_sword1 || is_sword2 || is_sky || is_queen || is_comi || is_gob || is_samnmax || is_cine || is_touche) + if (is_sword1 || is_sword2 || is_sky || is_queen || is_comi || is_gob || is_samnmax || is_cine || is_touche || is_parallaction) _right_click_needed = true; // See if a "hide toolbar" mapping could be needed @@ -140,36 +141,39 @@ void CEActionsPocket::initInstanceGame() { // Initialize keys for different actions // Pause - _key_action[POCKET_ACTION_PAUSE].setAscii(VK_SPACE); + _key_action[POCKET_ACTION_PAUSE].setKey(VK_SPACE); _action_enabled[POCKET_ACTION_PAUSE] = true; // Save if (is_simon || is_sword2 || is_gob || is_kyra || is_touche) _action_enabled[POCKET_ACTION_SAVE] = false; else if (is_queen) { _action_enabled[POCKET_ACTION_SAVE] = true; - _key_action[POCKET_ACTION_SAVE].setAscii(286); // F1 key for FOTAQ + _key_action[POCKET_ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); // F1 key for FOTAQ } else if (is_sky) { _action_enabled[POCKET_ACTION_SAVE] = true; - _key_action[POCKET_ACTION_SAVE].setAscii(63); + _key_action[POCKET_ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); } else if (is_cine) { _action_enabled[POCKET_ACTION_SAVE] = true; - _key_action[POCKET_ACTION_SAVE].setAscii(291); // F10 + _key_action[POCKET_ACTION_SAVE].setKey(Common::ASCII_F10, SDLK_F10); // F10 } else if (is_agi) { _action_enabled[POCKET_ACTION_SAVE] = true; - _key_action[POCKET_ACTION_SAVE].setAscii(SDLK_ESCAPE); + _key_action[POCKET_ACTION_SAVE].setKey(Common::ASCII_ESCAPE, SDLK_ESCAPE); + } else if (is_parallaction) { + _action_enabled[POCKET_ACTION_SAVE] = true; + _key_action[POCKET_ACTION_SAVE].setKey('s', SDLK_s); } else { _action_enabled[POCKET_ACTION_SAVE] = true; - _key_action[POCKET_ACTION_SAVE].setAscii(319); // F5 key + _key_action[POCKET_ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); // F5 key } // Quit _action_enabled[POCKET_ACTION_QUIT] = true; // Skip - if (!is_cine) + if (!is_cine && !is_parallaction) _action_enabled[POCKET_ACTION_SKIP] = true; if (is_simon || is_sky || is_sword2 || is_queen || is_sword1 || is_gob || is_saga || is_kyra || is_touche) - _key_action[POCKET_ACTION_SKIP].setAscii(VK_ESCAPE); + _key_action[POCKET_ACTION_SKIP].setKey(VK_ESCAPE); else - _key_action[POCKET_ACTION_SKIP].setAscii(KEY_ALL_SKIP); + _key_action[POCKET_ACTION_SKIP].setKey(KEY_ALL_SKIP); // Hide _action_enabled[POCKET_ACTION_HIDE] = true; // Keyboard @@ -188,9 +192,16 @@ void CEActionsPocket::initInstanceGame() { _action_enabled[POCKET_ACTION_ZOOM_UP] = true; _action_enabled[POCKET_ACTION_ZOOM_DOWN] = true; } - // FT Cheat - _action_enabled[POCKET_ACTION_FT_CHEAT] = true; - _key_action[POCKET_ACTION_FT_CHEAT].setAscii(86); // shift-V + // Multi function key + _action_enabled[POCKET_ACTION_MULTI] = true; + if (is_agi) + _key_action[POCKET_ACTION_MULTI].setKey(SDLK_PAUSE); // agi: show predictive dialog + else if (is_gob) + _key_action[POCKET_ACTION_MULTI].setKey(Common::ASCII_F1, SDLK_F1); // bargon : F1 to start + else if (gameid == "atlantis") + _key_action[POCKET_ACTION_MULTI].setKey(0, SDLK_KP0); // fate of atlantis : Ins to sucker-punch + else + _key_action[POCKET_ACTION_MULTI].setKey('V', SDLK_v, KMOD_SHIFT); // FT cheat : shift-V // Key bind method _action_enabled[POCKET_ACTION_BINDKEYS] = true; } @@ -213,7 +224,7 @@ bool CEActionsPocket::perform(GUI::ActionType action, bool pushed) { case POCKET_ACTION_PAUSE: case POCKET_ACTION_SAVE: case POCKET_ACTION_SKIP: - case POCKET_ACTION_FT_CHEAT: + case POCKET_ACTION_MULTI: EventsBuffer::simulateKey(&_key_action[action], false); return true; @@ -225,7 +236,16 @@ bool CEActionsPocket::perform(GUI::ActionType action, bool pushed) { case POCKET_ACTION_PAUSE: case POCKET_ACTION_SAVE: case POCKET_ACTION_SKIP: - case POCKET_ACTION_FT_CHEAT: + case POCKET_ACTION_MULTI: + if (action == POCKET_ACTION_SAVE && ConfMan.get("gameid") == "parallaction") { + // FIXME: This is a temporary solution. The engine should handle its own menus. + // Note that the user can accomplish this via the virtual keyboard as well, this is just for convenience + GUI::MessageDialog alert("Do you want to load or save the game?", "Load", "Save"); + if (alert.runModal() == GUI::kMessageOK) + _key_action[action].setKey(SDLK_l); + else + _key_action[action].setKey(SDLK_s); + } EventsBuffer::simulateKey(&_key_action[action], true); return true; case POCKET_ACTION_KEYBOARD: diff --git a/backends/platform/wince/CEActionsPocket.h b/backends/platform/wince/CEActionsPocket.h index 0f6430d443..9749ca60ef 100644 --- a/backends/platform/wince/CEActionsPocket.h +++ b/backends/platform/wince/CEActionsPocket.h @@ -48,7 +48,7 @@ enum pocketActionType { POCKET_ACTION_FREELOOK, POCKET_ACTION_ZOOM_UP, POCKET_ACTION_ZOOM_DOWN, - POCKET_ACTION_FT_CHEAT, + POCKET_ACTION_MULTI, POCKET_ACTION_BINDKEYS, POCKET_ACTION_UP, POCKET_ACTION_DOWN, diff --git a/backends/platform/wince/CEActionsSmartphone.cpp b/backends/platform/wince/CEActionsSmartphone.cpp index 3d85ebc68e..227318d552 100644 --- a/backends/platform/wince/CEActionsSmartphone.cpp +++ b/backends/platform/wince/CEActionsSmartphone.cpp @@ -43,7 +43,7 @@ const String smartphoneActionNames[] = { "Save", "Skip", "Zone", - "FT Cheat", + "Multi Function", "Bind Keys", "Keyboard", "Rotate", @@ -117,11 +117,12 @@ void CEActionsSmartphone::initInstanceGame() { bool is_cine = (gameid == "cine"); bool is_touche = (gameid == "touche"); bool is_agi = (gameid == "agi"); + bool is_parallaction = (gameid == "parallaction"); GUI_Actions::initInstanceGame(); // See if a right click mapping could be needed - if (is_sword1 || is_sword2 || is_sky || is_queen || is_comi || is_gob || is_samnmax || is_cine || is_touche) + if (is_sword1 || is_sword2 || is_sky || is_queen || is_comi || is_gob || is_samnmax || is_cine || is_touche || is_parallaction) _right_click_needed = true; // Initialize keys for different actions @@ -130,31 +131,41 @@ void CEActionsSmartphone::initInstanceGame() { _action_enabled[SMARTPHONE_ACTION_SAVE] = false; else if (is_queen) { _action_enabled[SMARTPHONE_ACTION_SAVE] = true; - _key_action[SMARTPHONE_ACTION_SAVE].setAscii(286); // F1 key for FOTAQ + _key_action[SMARTPHONE_ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); // F1 key for FOTAQ } else if (is_sky) { _action_enabled[SMARTPHONE_ACTION_SAVE] = true; - _key_action[SMARTPHONE_ACTION_SAVE].setAscii(63); + _key_action[SMARTPHONE_ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); } else if (is_cine) { _action_enabled[SMARTPHONE_ACTION_SAVE] = true; - _key_action[SMARTPHONE_ACTION_SAVE].setAscii(291); //F10 + _key_action[SMARTPHONE_ACTION_SAVE].setKey(Common::ASCII_F10, SDLK_F10); //F10 } else if (is_agi) { _action_enabled[SMARTPHONE_ACTION_SAVE] = true; - _key_action[SMARTPHONE_ACTION_SAVE].setAscii(SDLK_ESCAPE); + _key_action[SMARTPHONE_ACTION_SAVE].setKey(Common::ASCII_ESCAPE, SDLK_ESCAPE); + } else if (is_parallaction) { + _action_enabled[SMARTPHONE_ACTION_SAVE] = true; + _key_action[SMARTPHONE_ACTION_SAVE].setKey('s', SDLK_s); } else { _action_enabled[SMARTPHONE_ACTION_SAVE] = true; - _key_action[SMARTPHONE_ACTION_SAVE].setAscii(319); // F5 key + _key_action[SMARTPHONE_ACTION_SAVE].setKey(Common::ASCII_F5, SDLK_F5); // F5 key } // Skip _action_enabled[SMARTPHONE_ACTION_SKIP] = true; if (is_simon || is_sky || is_sword2 || is_queen || is_sword1 || is_gob || is_saga || is_kyra || is_touche) - _key_action[SMARTPHONE_ACTION_SKIP].setAscii(VK_ESCAPE); + _key_action[SMARTPHONE_ACTION_SKIP].setKey(VK_ESCAPE); else - _key_action[SMARTPHONE_ACTION_SKIP].setAscii(KEY_ALL_SKIP); + _key_action[SMARTPHONE_ACTION_SKIP].setKey(KEY_ALL_SKIP); // Zone _action_enabled[SMARTPHONE_ACTION_ZONE] = true; - // FT Cheat - _action_enabled[SMARTPHONE_ACTION_FT_CHEAT] = true; - _key_action[SMARTPHONE_ACTION_FT_CHEAT].setAscii(86); // shift-V + // Multi function key + _action_enabled[SMARTPHONE_ACTION_MULTI] = true; + if (is_agi) + _key_action[SMARTPHONE_ACTION_MULTI].setKey(SDLK_PAUSE); // agi: show predictive dialog + else if (is_gob) + _key_action[SMARTPHONE_ACTION_MULTI].setKey(Common::ASCII_F1, SDLK_F1); // bargon : F1 to start + else if (gameid == "atlantis") + _key_action[SMARTPHONE_ACTION_MULTI].setKey(0, SDLK_KP0); // fate of atlantis : Ins to sucker-punch + else + _key_action[SMARTPHONE_ACTION_MULTI].setKey('V', SDLK_v, KMOD_SHIFT); // FT cheat : shift-V // Bind keys _action_enabled[SMARTPHONE_ACTION_BINDKEYS] = true; } @@ -176,7 +187,7 @@ bool CEActionsSmartphone::perform(GUI::ActionType action, bool pushed) { return true; case SMARTPHONE_ACTION_SAVE: case SMARTPHONE_ACTION_SKIP: - case SMARTPHONE_ACTION_FT_CHEAT: + case SMARTPHONE_ACTION_MULTI: EventsBuffer::simulateKey(&_key_action[action], false); return true; } @@ -186,7 +197,16 @@ bool CEActionsSmartphone::perform(GUI::ActionType action, bool pushed) { switch (action) { case SMARTPHONE_ACTION_SAVE: case SMARTPHONE_ACTION_SKIP: - case SMARTPHONE_ACTION_FT_CHEAT: + case SMARTPHONE_ACTION_MULTI: + if (action == SMARTPHONE_ACTION_SAVE && ConfMan.get("gameid") == "parallaction") { + // FIXME: This is a temporary solution. The engine should handle its own menus. + // Note that the user can accomplish this via the virtual keyboard as well, this is just for convenience + GUI::MessageDialog alert("Do you want to load or save the game?", "Load", "Save"); + if (alert.runModal() == GUI::kMessageOK) + _key_action[action].setKey(SDLK_l); + else + _key_action[action].setKey(SDLK_s); + } EventsBuffer::simulateKey(&_key_action[action], true); return true; case SMARTPHONE_ACTION_RIGHTCLICK: diff --git a/backends/platform/wince/CEActionsSmartphone.h b/backends/platform/wince/CEActionsSmartphone.h index 648d0ae4cf..590302ef26 100644 --- a/backends/platform/wince/CEActionsSmartphone.h +++ b/backends/platform/wince/CEActionsSmartphone.h @@ -45,7 +45,7 @@ enum smartphoneActionType { SMARTPHONE_ACTION_SAVE, SMARTPHONE_ACTION_SKIP, SMARTPHONE_ACTION_ZONE, - SMARTPHONE_ACTION_FT_CHEAT, + SMARTPHONE_ACTION_MULTI, SMARTPHONE_ACTION_BINDKEYS, SMARTPHONE_ACTION_KEYBOARD, SMARTPHONE_ACTION_ROTATE, diff --git a/backends/platform/wince/CEDevice.cpp b/backends/platform/wince/CEDevice.cpp index a76360f590..855c601741 100644 --- a/backends/platform/wince/CEDevice.cpp +++ b/backends/platform/wince/CEDevice.cpp @@ -53,15 +53,13 @@ DWORD CEDevice::reg_access(TCHAR *key, TCHAR *val, DWORD data) { return data; cbdata = sizeof(DWORD); - if (RegQueryValueEx(regkey, val, NULL, NULL, (LPBYTE) &tmpval, &cbdata) != ERROR_SUCCESS) - { + if (RegQueryValueEx(regkey, val, NULL, NULL, (LPBYTE) &tmpval, &cbdata) != ERROR_SUCCESS) { RegCloseKey(regkey); return data; } cbdata = sizeof(DWORD); - if (RegSetValueEx(regkey, val, 0, REG_DWORD, (LPBYTE) &data, cbdata) != ERROR_SUCCESS) - { + if (RegSetValueEx(regkey, val, 0, REG_DWORD, (LPBYTE) &data, cbdata) != ERROR_SUCCESS) { RegCloseKey(regkey); return data; } @@ -78,8 +76,7 @@ void CEDevice::backlight_xchg() { REG_disp = reg_access(TEXT("ControlPanel\\Power"), TEXT("Display"), REG_disp); h = CreateEvent(NULL, FALSE, FALSE, TEXT("BackLightChangeEvent")); - if (h) - { + if (h) { SetEvent(h); CloseHandle(h); } diff --git a/backends/platform/wince/CEgui/PanelKeyboard.cpp b/backends/platform/wince/CEgui/PanelKeyboard.cpp index 8a17a4c1c4..79b833f84b 100644 --- a/backends/platform/wince/CEgui/PanelKeyboard.cpp +++ b/backends/platform/wince/CEgui/PanelKeyboard.cpp @@ -35,6 +35,8 @@ namespace CEGUI { PanelKeyboard::PanelKeyboard(WORD reference) : Toolbar() { setBackground(reference); + _state = false; + _lastKey.setKey(0); } @@ -42,6 +44,7 @@ namespace CEGUI { } bool PanelKeyboard::action(int x, int y, bool pushed) { + Key key; if (checkInside(x, y)) { int keyAscii = 0; @@ -62,19 +65,35 @@ namespace CEGUI { keyAscii = VK_BACK; keyCode = keyAscii; } else { // Enter - keyAscii = 13; keyCode = 10; + keyAscii = 13; keyCode = 13; } } if (keyAscii != 0) { - _key.setAscii(keyAscii); - _key.setKeycode(tolower(keyCode)); - return EventsBuffer::simulateKey(&_key, pushed); + if (_state && pushed && keyCode != _lastKey.keycode()) // if cursor is still down and off the current key + return false; + else if (_state && !pushed && keyCode != _lastKey.keycode()) { // cursor is up but off the current key + keyAscii = _lastKey.ascii(); + keyCode = _lastKey.keycode(); + } + _state = pushed; + _lastKey.setKey(keyAscii, tolower(keyCode)); + + key.setKey(keyAscii, tolower(keyCode)); + return EventsBuffer::simulateKey(&key, pushed); } - else + else if (_state && !pushed) { // cursor is in some forbidden region and is up + _state = false; + key = _lastKey; + return EventsBuffer::simulateKey(&key, false); + } else return false; } - else + else if (_state && !pushed) { // cursor left the keyboard area and is up + _state = false; + key = _lastKey; + return EventsBuffer::simulateKey(&key, false); + } else return false; } } diff --git a/backends/platform/wince/CEgui/PanelKeyboard.h b/backends/platform/wince/CEgui/PanelKeyboard.h index fe586b3727..d0182ce5fe 100644 --- a/backends/platform/wince/CEgui/PanelKeyboard.h +++ b/backends/platform/wince/CEgui/PanelKeyboard.h @@ -44,7 +44,8 @@ namespace CEGUI { virtual ~PanelKeyboard(); virtual bool action(int x, int y, bool pushed); private: - Key _key; + bool _state; + Key _lastKey; }; } diff --git a/backends/platform/wince/CEkeys/EventsBuffer.cpp b/backends/platform/wince/CEkeys/EventsBuffer.cpp index c8b09f611a..19978c23dc 100644 --- a/backends/platform/wince/CEkeys/EventsBuffer.cpp +++ b/backends/platform/wince/CEkeys/EventsBuffer.cpp @@ -32,10 +32,9 @@ namespace CEKEYS { SDL_Event ev = {0}; if (!key->keycode()) - key->setKeycode(key->ascii()); - - if (!key->ascii()) - key->setAscii(key->keycode()); + key->setKey(key->ascii(), key->ascii()); + else if (!key->ascii()) + key->setKey(key->keycode()); ev.type = (pushed ? SDL_KEYDOWN : SDL_KEYUP); ev.key.keysym.mod = (SDLMod)key->flags(); diff --git a/backends/platform/wince/Makefile b/backends/platform/wince/Makefile index cc9e2951be..0d9556e967 100644 --- a/backends/platform/wince/Makefile +++ b/backends/platform/wince/Makefile @@ -3,9 +3,20 @@ # $URL$ # $Id$ +######################################################################## +## Set this to point to where the tools are installed on your system + wince_gcc_root = /cygdrive/e/wince-gcc-root -srcdir = ../../.. -VPATH = $(srcdir) + + +######################################################################## +## Do you want a debug build or not? + +#WINCE_DEBUG_BUILD = 1 + + +######################################################################## +## Disable whichever engines you want here #DISABLE_SCUMM = 1 #DISABLE_SKY = 1 @@ -20,10 +31,36 @@ DISABLE_LURE = 1 #DISABLE_SWORD1 = 1 #DISABLE_SWORD2 = 1 #DISABLE_TOUCHE = 1 -DISABLE_PARALLACTION = 1 +#DISABLE_PARALLACTION = 1 DISABLE_CRUISE = 1 + +######################################################################## +## Pick which libraries you want to use here + +USE_MAD = 1 +USE_MPEG2 = 1 +USE_TREMOR = 1 +#USE_TREMOLO = 1 +USE_FLAC = 1 +USE_ZLIB = 1 + + +######################################################################## +## You're probably not going to want to change these defines... + #DISABLE_HQ_SCALERS = 1 +USE_ARM_SOUND_ASM = 1 +USE_ARM_SMUSH = 1 + + +######################################################################## +## Hopefully you shouldn't need to change anything below here. ## +######################################################################## + + +srcdir = ../../.. +VPATH = $(srcdir) CXX = arm-wince-pe-g++ LD = arm-wince-pe-g++ @@ -38,9 +75,19 @@ ECHO = echo -n CAT = cat AS = arm-wince-pe-as -DEFINES := -D_WIN32_WCE=300 -DARM -D__ARM__ -D_ARM_ -DUNICODE -DSCUMM_NEED_ALIGNMENT -DFPM_DEFAULT -DUSE_MAD -DNONSTANDARD_PORT -DUSE_TREMOR -DUSE_VORBIS -DUSE_MPEG2 -DWIN32 -DUSE_ZLIB +######################################################################## +## Set up defines, includes, cflags etc + +DEFINES := -D_WIN32_WCE=300 -DARM -D__ARM__ -D_ARM_ -DUNICODE -DSCUMM_NEED_ALIGNMENT +DEFINES += -DFPM_DEFAULT + +DEFINES += -DNONSTANDARD_PORT +DEFINES += -DWIN32 DEFINES += -D__stdcall= -Dcdecl= -D__cdecl__= -D__cdecl= -Wno-multichar -#DEFINES += -DDEBUG -DUSE_WINDBG -g + +ifdef WINCE_DEBUG_BUILD +DEFINES += -DDEBUG -DUSE_WINDBG -g +endif INCLUDES := -I$(srcdir) -I. -I$(srcdir)/engines -Imissing/gcc -Ilibs/include -Ilibs/include/sdl -ICEgui -ICEkeys -I$(wince_gcc_root)/include @@ -49,7 +96,47 @@ CFLAGS := -O3 -march=armv4 -mtune=xscale CXXFLAGS := $(CFLAGS) LDFLAGS := -Llibs/lib -L$(wince_gcc_root)/lib -LIBS := -lSDL -lzlib -lmad -lmpeg2 -ltremorce --entry WinMainCRTStartup +LIBS := -lSDL + +ifdef USE_ZLIB +DEFINES += -DUSE_ZLIB +LIBS += -lzlib +endif + +ifdef USE_MAD +DEFINES += -DUSE_MAD +LIBS += -lmad +endif + +ifdef USE_MPEG2 +DEFINES += -DUSE_MPEG2 +LIBS += -lmpeg2 +endif + +ifdef USE_TREMOR +DEFINES += -DUSE_TREMOR -DUSE_VORBIS +LIBS += -ltremorce +endif + +ifdef USE_TREMOLO +DEFINES += -DUSE_TREMOR -DUSE_VORBIS +INCLUDES += -Ilibs/include/tremolo +LIBS += -llibTremolo +endif + +ifdef USE_FLAC +DEFINES += -DUSE_FLAC +LIBS += -lFLAC +endif + +ifdef USE_ARM_SMUSH +DEFINES += -DUSE_ARM_SMUSH +endif + +LIBS += --entry WinMainCRTStartup + +######################################################################## +# Targets follow here TARGET = scummvm.exe OBJS := @@ -71,7 +158,6 @@ include $(srcdir)/Makefile.common all: dist dist: $(TARGET) -# bzip2 -fvk $(TARGET) $(STRIP) $(TARGET) PocketSCUMM.o: diff --git a/backends/platform/wince/README-WinCE b/backends/platform/wince/README-WinCE deleted file mode 100644 index b1fc585e22..0000000000 --- a/backends/platform/wince/README-WinCE +++ /dev/null @@ -1,506 +0,0 @@ -ScummVM Windows CE FAQ -Last updated: 2006-06-20 -Release version: 0.9.0 ------------------------------------------------------------------------- - -This document is intended to give common answers to specific ScummVM -issues on Windows CE, in 3 sections - * "General questions" : browse this section to get started and see - general issues - * "Game specific questions" : lists some common game specific issues - * "Support and links" : how to get support if you're still puzzled - ------------------------------------------------------------------------- -General questions ------------------------------------------------------------------------- - -Which devices are supported ? ------------------------------ - -Official build --------------- - -The official build is based on the ARM architecture and should work with any -Pocket PC 2000, Pocket PC 2002, Pocket PC 2003, Pocket PC 2003 SE, Smartphone -2002, Smartphone 2003 or Windows Mobile based device. - -Support for old ARM architectures (Handheld PCs, Palm Size PCs) and other CPUs -(MIPS, SH3) is discontinued. Feel free to generate builds for these -architectures and contact me to include them on ScummVM website. - -Full support ------------- - -* ARM based Windows Mobile handhelds with QVGA resolution (240x320) slower - than 200 MHz (PocketPC platform) - -All AdLib first generation games should work properly on these devices. -Sam'n'Max will be a bit too slow to be played with music. -More recent games (The Dig, Curse of Monkey Island, Broken Sword series) -and all VGA games will probably be too slow to be enjoyable. - -* ARM based Windows Mobile handhelds with QVGA resolution (240x320) faster - than 200 MHz - -All games should work properly on these devices. -VGA games will be resized and the font gets hard to read in this case (be sure -to install the talkie version the game :p) - -* ARM based Windows Mobile handhelds with VGA resolution (640x480) - -All non VGA games should work properly on these devices. They can be resized -with different scalers (not all desktop scalers are supported due to Embedded -Visual C++ very personal interpretation of the C++ standard). -VGA games will be displayed in true VGA mode, which can takes a lot of memory -and slow down the game (especially during scrollings). It will get better in -the next releases or with faster devices. - -* Windows Mobile Smartphones (176x220 or 240x320) - -Early support is provided for all 320x200 games. -The font can get hard to read (you should prefer talkie games, or wear glasses) - -* Support for Windows Mobile 5 is experimental but should work. "Flipping" devices -such as the HTC Wizard or HTC Universal work only in portait (closed) mode for the -moment. - -Partial / Discontinued support ------------------------------- - -Support for the following devices is not complete, not working properly or -discontinued because the device is now obsolete. Feel free to contribute and -improve the port for your favorite device, or use the last release built with -the previous port architecture (0.5.1) which was less resource hungry and -supported more exotic devices. - -* "Paletted" devices (non "true color") - -These devices will be supported through the GDI layer which will slow down the -games a lot. You can try to disable the music/sound effects to get a better -game experience. - -* "Mono" devices - -I don't even think anything will be displayed on these devices :) you can try -and report your success ... - -* MIPS/SH3 devices with QVGA resolution (240x320), "true color" - -Some devices may be a bit too slow, especially if direct screen access (GAPI) -is not supported on these devices. - -* ARM/MIPS/SH3 devices with VGA resolution (640x480) (Palm Size PC / Handheld - PC platform) - -True VGA games will probably be too slow to run properly on these devices even -if they can support them ... - -* ARM/MIPS/SH3 devices with desktop resolution (800x600) (Handheld PC platform) - -No, there will never be ANY scaler supporting 800x600 resolution, because -320x200 games CANNOT be resized to a 800x600 by a simple operation. - -And the device will probably be too slow to perform any kind of graphic -transform anyway :) - -How do I install ScummVM for Windows CE ? ------------------------------------------ - -If the current release includes a .EXE installer, ScummVM for Windows CE -will be installed without hassle. -Otherwise, you'll unzip the release on your desktop computer, and copy -all files on your device. - -If you're using a Pocket PC 2000 operating system, be sure to have GAPI -installed - it's available on Microsoft website http://www.microsoft.com - -How do I install a game ? -------------------------- - -You'll at least need to copy all the data files from your game, in a -sub-directory of your game directory. - -You'll need to put the data files in a directory named after ScummVM game -name (see "Supported Game" section in ScummVM readme) for the games having -"generic" data files (.LFL files). Recent games can be put in any directory. - -You can compress the multimedia files (sound/video) as described in the -ScummVM readme. - -You can compress the audio tracks of Loom or Monkey Island 1 as described in -the ScummVM readme. If you are running these games on a slow device with Ogg -Vorbis compression, it's recommended to sample the files to 11 kHz (this sample -rate is not supported by other versions of ScummVM). - -If you need more details, you can check SirDave's mini-manual online available -at: http://forums.scummvm.org/viewtopic.php?t=936 -and at: http://www.pocketmatrix.com/forums/viewtopic.php?t=8606 - -How do I run a game ? ---------------------- - -If it's the first time you're running ScummVM for Windows CE, have installed or -removed games, you need to rescan your game directory. - * Select Scan, tap the root directory of your games, and tap "Yes" to begin - an automatic scan of the installed games. - -Usually all games are detected and you can start playing right away. If your -game is not detected check its directory name and your data files. - -To play a game, tap on its name then tap the "Play" button or double tap its -name. - -How do I play a game on a Pocket PC or Handheld PC device ? ------------------------------------------------------------ - -The stylus is your mouse cursor, and a tap is a left mouse button click. - -As the Pocket PC lacks some keys, a toolbar is displayed at the bottom of the -screen to make the most common functions just a tap away - * The disk icon opens ScummVM options menu to save your game, or change your - current game settings. - * The movie icon skips a non interactive sequence, the current dialog or - behaves like the ESC key on a regular keyboard - * The sound icon turns all sound effects and music off and on - * The key icon allow you to map a key action to a device button. - * The monkey icon switches between portrait, landscape and inverse landscape - mode. - -You can map additional actions on your device hardware buttons using the -"Options" / "Key" menu in the ScummVM options menu. To associate an action to -a key, tap the action, then the "Map" button and press the hardware key. -The following actions are available - * Pause : pause the game - * Save : open ScummVM option menu - * Quit : quit ScummVM (without saving, be careful when using it) - * Skip : skip a non interactive sequence, the current dialog or - behaves like the ESC key on a regular keyboard - * Hide : hide or display the toolbar - - YOU MUST HIDE THE TOOLBAR TO SCROLL THROUGH THE INVENTORY IN ZAK - - * Keyboard : hide or display the virtual keyboard - - YOU MUST DISPLAY THE KEYBOARD TO FIGHT IN INDIANA JONES 3 - - * Sound : turns all sound effects and music off and on - * Right click : acts as a right mouse button click - - YOU MUST MAP THIS ACTION TO PLAY THE FOLLOWING GAMES - - - SAM & MAX, BENEATH A STEEL SKY, CURSE OF MONKEY ISLAND - - * Cursor : hide or display the mouse cursor - * Free look : go in or out of free-look mode. In this mode, you can tap - the screen to look for interesting locations without walking. - * Zoom up : magnify the upper part of the screen for 640x480 games - rendered on a 320x240 device. - * Zoom down : magnify the lower part of the screen for 640x480 games - rendered on a 320x240 device. - * FT Cheat : win a Full Throttle action sequence - * Bind keys : map a key action to a device button - * Up,Down,Left: - Right, : emulate mouse/stylus behavior - Left Click : - -If you start a game when a Right click mapping is necessary, ScummVM will ask -you to map one of your hardware key to this action before playing. Just press -the key you want to map if you see this message. - -How do I hide the toolbar ? ----------------------------- - -A shortcut is available to hide the toolbar directly from the game screen from -release 0.8.0. Double tapping the stylus at the top of the screen will switch -between a visible toolbar panel, a virtual keyboard, and an invisible panel. -If any part of the screen is obscured by the toolbar (like the load/save game -dialogs) you can use the invisible panel mode to get to it. For 320x200 games -on QVGA Pocket PCs, when the panel is hidden the game screen is resized to -320x240 for better gaming experience. - -How do I play a game on a Microsoft Smartphone device ? -------------------------------------------------------- - -When playing on a Smartphone, the cursor and mouse buttons are emulated by -a set of default keys : - 4 Move up - 6 Move down - 8 Move left - 2 Move right - Hotkey 1 Left mouse button click - Hotkey 2 Right mouse button click - Return/Action Open the key mapping menu - -Note that this means that the input will be "inversed" on a 240x320 (Windows -Mobile 2005) Smartphone. You'll have to remap the keys. - -A few options are also emulated by a set of default keys : - - 0 Options menu - Back Skip - # Zone option - -The cursor will move faster if you keep the key down. You can tweak this -behaviour in the configuration file described below. - -The "Zone" key is a *very* valuable addition allowing you to jump quickly -between three screen zones : the game zone, the verbs zone and the inventory -zone. When you switch to a zone the cursor will be reset to its former location -in this zone. - -There are two more actions available for mapping: - - Keyboard: Shows hides a virtual keyboard which can be use whenever text - input is required in a game, or a dialog. - - Rotate : Flips the screen orientation between normal and inverse landscape. - -You can change the keys mapping during the game in the key mapping menu. - -Note that you'll need to push the Action button (center of the pad) to quit -a Simon game. - -How can I apply a ScummVM command line option (f.e. to change the language) ---------------------------------------------------------------------------- - -See the section regarding the configuration file (scummvm.ini) in ScummVM -README file - the same keywords apply. - -Some parameters are specific to this port : - -game specific section (f.e. [monkey2]) - performance options - -high_sample_rate bool Desktop quality (22 kHz) sound output if set. - 11 kHz otherwise. - The default is 11 kHz. - If you have a fast device, you can set this to - true to enjoy better sound effects and music. -FM_high_quality bool Desktop quality FM synthesis if set. Lower - quality otherwise. The default is low quality. - You can change this if you have a fast device. -sound_thread_priority int Set the priority of the sound thread - (given to SetThreadPriority API) -Smush_force_redraw int Force a Smush frame redraw every X missed - frames. Mainly used for Full Throttle action - sequences. Setting it lower gives more - priority to screen redraws. Setting it higher - gives more priority to stylus/keyboard input. - The default is 30. - -game specific section (f.e. [monkey2]) - game options - -landscape int 0: Portrait, 1: Landscape, 2: Inverse Landscape - -[scummvm] section - keys definition - -You usually do not wish to modify these values directly, as they are set -by the option dialog, and are only given here for reference. - -action_mapping_version int Mapping version linked to ScummVM version. -action_mapping string Hex codes describing the key associated to - each different action. - -[scummvm] section - mouse emulation tuning - -You can tweak these parameters to customize how the cursor is handled. - -repeatTrigger int Number of milliseconds a key must be held to - consider being repeated. - -repeatX int Number of key repeat events before changing - horizontal cursor behaviour. -stepX1 int Horizontal cursor offset value when the key is - not repeated. -stepX2 int Horizontal cursor offset value when the key is - repeated less than repeatX. -stepX3 int Horizontal cursor offset value when the key is - repeated more than repeatX. - - -repeatY int Number of key repeat events before changing - vertical cursor behaviour. -stepY1 int Vertical cursor offset value when the key is - not repeated. -stepY2 int Horizontal cursor offset value when the key is - repeated less than repeatY. -stepY3 int Vertical cursor offset value when the key is - repeated more than repeatY. - -Game xxx is too slow on my device ---------------------------------- - -Even if it shouldn't happen (this port is running almost correctly on a -80 / 120 MHz first generation SPV phone), you can try some things : - - * Disable sound in the engine (see the global README) - * Play with the priority of the sound thread (change the - sound_thread_priority value - the higher the lower priority) - -And don't forget to report your progress in the ScummVM forum ! - ------------------------------------------------------------------------- -Game specific questions ------------------------------------------------------------------------- - --------------------------- --- Beneath a Steel Sky -- --------------------------- - -Introduction movie is too slow or never ends ... -------------------------------------------------- - -Skip it :) - -How can I open the inventory in Beneath a Steel Sky ? ---------------------------------------------------- - -Tap the top of the screen. Check your stylus calibration if you still cannot -open it. - -How can I use an item in Beneath a Steel Sky ? ----------------------------------------------- - -You need to map the right click button (see the General Questions section). - ----------------------------- --- Curse of Monkey Island -- ----------------------------- - -How can I open the inventory in Curse of Monkey Island ? ------------------------------------------------------- - -You need to map the right click button (see the General Questions section). - -I'm experiencing random crashes ... ------------------------------------- - -This game has high memory requirements, and may crash sometimes on low -memory devices. Continue your game with the latest automatically saved -game and everything should be fine. -You can consider removing the music and voice files (VOXDISK.BUN, MUSDISK.BUN) -to lower these requirements. - -Sound synchronization is lost in Curse of Monkey Island videos --------------------------------------------------------------- - -This is a port bug which is very noticeable in VGA mode. It can probably be -fixed with a faster blitting routine or a faster device. - --------------------- --- Full Throttle -- --------------------- - -I'm experiencing random crashes ... ------------------------------------- - -This game has high memory requirements, and may crash sometimes on low -memory devices. Continue your game with the latest automatically saved -game and everything should be fine. -You can consider removing the voice file (MONSTER.SOU) and disable the -music to lower these requirements. - ----------------------------------------- --- Indiana Jones and the Last Crusade -- ----------------------------------------- - -How can I fight in Indiana Jones and the Last Crusade ? ------------------------------------------------------ - -You need to map the keyboard button (see the General Questions section). - ---------------- --- Sam & Max -- ---------------- - -How can I change the current action ? -------------------------------------- - -You need to map the right click button (see the General Questions section). - -How can I exit a mini game ? ----------------------------- - -Use the skip toolbar icon (see the General Questions section). - -------------------- --- Simon 1 and 2 -- --------------------- - -How can I save or quit in Simon ? --------------------------------- - -"Use" (use the use verb :p) the postcard. The ScummVM option dialog is disabled -in Simon games. - -On Smartphone, you'll need to push the Action button (center of the pad) to -quit the game. - -------------- --- The Dig -- -------------- - -I'm experiencing random crashes ... ------------------------------------- - -This game has high memory requirements, and may crash sometimes on low -memory devices. Continue your game with the latest automatically saved -game and everything should be fine. -You can consider removing the music and voice files (VOXDISK.BUN, MUSDISK.BUN) -to lower these requirements. - --------------------- --- Zak Mc Kracken -- --------------------- - -How can I scroll through my inventory items in Zak Mc Kracken ? -------------------------------------------------------------- - -You need to map the hide toolbar button (see the General Questions section) or -double tap at the top of the screen (from 0.8.0+) - --------------------- --- Broken Sword 2 -- --------------------- - -I've installed the movies pack but they are not playing -------------------------------------------------------- - -MPEG 2 playback takes too much memory in the current release, and may prevent -movies from playing in VGA mode. This may get better in the next releases. - ----------------- --- Gobliiins -- ----------------- - -Cursor is grabled after loading a game --------------------------------------- - -Due to a bug in 0.8.0, you'll have to tap the stylus somewhere on the game -screen between 2 letters when entering a code. Otherwise the cursor will get -garbled. - -This has not been retested for 0.8.1 but should be fixed. - ------------------------------------------------------------------------- -Support ------------------------------------------------------------------------- - -Help, I've read everything and ... ------------------------------------ - -Luckily, as there is a huge variety of Windows Mobile devices, a specific forum -is dedicated to this ScummVM port. You can ask your question on the WinCE -ScummVM forum available at http://forums.scummvm.org/viewforum.php?f=6 - -Some older questions and very nice tutorials are still available on the historic -PocketMatrix forum at http://www.pocketmatrix.com/forums/viewforum.php?f=20 -where the community is always glad to help and have dealt with all my bugs for more -than three years now :) - -I think I found a bug, ScummVM crashes in ... ---------------------------------------------- - -See the "Reporting Bugs" section in ScummVM readme. - -If you have a Pocket PC or Handheld PC, be sure to include its resolution (obtained -on the second dialog displayed on the "About" menu) in your bug report. - -If you cannot reproduce this bug on another ScummVM version, you can cross -post your bug report on ScummVM forums. - ------------------------------------------------------------------------- -Good Luck and Happy Adventuring! -The ScummVM team. -http://www.scummvm.org/ ------------------------------------------------------------------------- diff --git a/backends/platform/wince/wince-sdl.cpp b/backends/platform/wince/wince-sdl.cpp index 8ef7412530..2d6e9a4302 100644 --- a/backends/platform/wince/wince-sdl.cpp +++ b/backends/platform/wince/wince-sdl.cpp @@ -314,9 +314,6 @@ void OSystem_WINCE3::initScreenInfos() { _isOzone = 0; SDL_Rect **r; r = SDL_ListModes(NULL, 0); - printf("listmodes: %dx%d\n", r[0]->w, r[0]->h); - //_platformScreenWidth = GetSystemMetrics(SM_CXSCREEN); - //_platformScreenHeight = GetSystemMetrics(SM_CYSCREEN); _platformScreenWidth = r[0]->w; _platformScreenHeight = r[0]->h; } @@ -330,7 +327,7 @@ bool OSystem_WINCE3::isOzone() { OSystem_WINCE3::OSystem_WINCE3() : OSystem_SDL(), _orientationLandscape(0), _newOrientation(0), _panelInitialized(false), - _panelVisible(true), _panelStateForced(false), _forceHideMouse(false), + _panelVisible(true), _panelStateForced(false), _forceHideMouse(false), _unfilteredkeys(false), _freeLook(false), _forcePanelInvisible(false), _toolbarHighDrawn(false), _zoomUp(false), _zoomDown(false), _scalersChanged(false), _monkeyKeyboard(false), _lastKeyPressed(0), _tapTime(0), _saveToolbarState(false), _saveActiveToolbar(NAME_MAIN_PANEL), _rbutton(false), _hasfocus(true), @@ -771,6 +768,7 @@ void OSystem_WINCE3::setFeatureState(Feature f, bool enable) { switch(f) { case kFeatureFullscreenMode: return; + case kFeatureVirtualKeyboard: if (_hasSmartphoneResolution) return; @@ -790,6 +788,12 @@ void OSystem_WINCE3::setFeatureState(Feature f, bool enable) { //_toolbarHandler.setVisible(_saveToolbarState); } return; + + case kFeatureDisableKeyFiltering: + if (_hasSmartphoneResolution) + _unfilteredkeys = enable; + return; + default: OSystem_SDL::setFeatureState(f, enable); } @@ -1583,6 +1587,17 @@ void OSystem_WINCE3::internUpdateScreen() { _forceFull = false; } +Graphics::Surface *OSystem_WINCE3::lockScreen() { + // FIXME: Fingolfing asks: Why is undrawMouse() needed here? + // Please document this. + undrawMouse(); + return OSystem_SDL::lockScreen(); +} + +void OSystem_WINCE3::unlockScreen() { + OSystem_SDL::unlockScreen(); +} + bool OSystem_WINCE3::saveScreenshot(const char *filename) { assert(_hwscreen != NULL); @@ -2067,18 +2082,30 @@ void OSystem_WINCE3::addDirtyRect(int x, int y, int w, int h, bool mouseRect) { OSystem_SDL::addDirtyRect(x, y, w, h, false); } -static int mapKeyCE(SDLKey key, SDLMod mod, Uint16 unicode) +static int mapKeyCE(SDLKey key, SDLMod mod, Uint16 unicode, bool unfilter) { if (GUI::Actions::Instance()->mappingActive()) return key; + if (unfilter) { + switch (key) { + case SDLK_ESCAPE: + return SDLK_BACKSPACE; + case SDLK_F8: + return SDLK_ASTERISK; + case SDLK_F9: + return SDLK_HASH; + } + return key; + } + if (key >= SDLK_KP0 && key <= SDLK_KP9) { return key - SDLK_KP0 + '0'; } else if (key >= SDLK_UP && key <= SDLK_PAGEDOWN) { return key; } else if (unicode) { return unicode; - } else if (key >= 'a' && key <= 'z' && mod & KMOD_SHIFT) { + } else if (key >= 'a' && key <= 'z' && (mod & KMOD_SHIFT)) { return key & ~0x20; } else if (key >= SDLK_NUMLOCK && key <= SDLK_EURO) { return 0; @@ -2113,9 +2140,9 @@ bool OSystem_WINCE3::pollEvent(Common::Event &event) { while(SDL_PollEvent(&ev)) { switch(ev.type) { case SDL_KEYDOWN: - // KMOD_RESERVED is used if the key has been injected by an external buffer debug(1, "Key down %X %s", ev.key.keysym.sym, SDL_GetKeyName((SDLKey)ev.key.keysym.sym)); - if (ev.key.keysym.mod != KMOD_RESERVED) { + // KMOD_RESERVED is used if the key has been injected by an external buffer + if (ev.key.keysym.mod != KMOD_RESERVED && !_unfilteredkeys) { keyEvent = true; _lastKeyPressed = ev.key.keysym.sym; _keyRepeatTime = currentTime; @@ -2125,19 +2152,27 @@ bool OSystem_WINCE3::pollEvent(Common::Event &event) { return true; } - event.type = Common::EVENT_KEYDOWN; - event.kbd.keycode = ev.key.keysym.sym; - event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode); - if (GUI_Actions::Instance()->mappingActive()) event.kbd.flags = 0xFF; + else if (ev.key.keysym.sym == SDLK_PAUSE) { + _lastKeyPressed = 0; + event.type = Common::EVENT_PREDICTIVE_DIALOG; + return true; + } + + event.type = Common::EVENT_KEYDOWN; + if (!_unfilteredkeys) + event.kbd.keycode = (Common::KeyCode)ev.key.keysym.sym; + else + event.kbd.keycode = (Common::KeyCode)mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys); + event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys); return true; case SDL_KEYUP: - // KMOD_RESERVED is used if the key has been injected by an external buffer debug(1, "Key up %X %s", ev.key.keysym.sym, SDL_GetKeyName((SDLKey)ev.key.keysym.sym)); - if (ev.key.keysym.mod != KMOD_RESERVED) { + // KMOD_RESERVED is used if the key has been injected by an external buffer + if (ev.key.keysym.mod != KMOD_RESERVED && !_unfilteredkeys) { keyEvent = true; _lastKeyPressed = 0; @@ -2145,12 +2180,19 @@ bool OSystem_WINCE3::pollEvent(Common::Event &event) { return true; } - event.type = Common::EVENT_KEYUP; - event.kbd.keycode = ev.key.keysym.sym; - event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode); - if (GUI_Actions::Instance()->mappingActive()) event.kbd.flags = 0xFF; + else if (ev.key.keysym.sym == SDLK_PAUSE) { + _lastKeyPressed = 0; + return false; // chew up the show agi dialog key up event + } + + event.type = Common::EVENT_KEYUP; + if (!_unfilteredkeys) + event.kbd.keycode = (Common::KeyCode)ev.key.keysym.sym; + else + event.kbd.keycode = (Common::KeyCode)mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys); + event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys); return true; diff --git a/backends/platform/wince/wince-sdl.h b/backends/platform/wince/wince-sdl.h index 0e8e5e53ba..e74c438807 100644 --- a/backends/platform/wince/wince-sdl.h +++ b/backends/platform/wince/wince-sdl.h @@ -97,6 +97,8 @@ public: void copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h); void showOverlay(); void hideOverlay(); + Graphics::Surface *lockScreen(); + void unlockScreen(); // GUI and action stuff void swap_panel_visibility(); @@ -189,6 +191,7 @@ private: bool _panelInitialized; // only initialize the toolbar once bool _monkeyKeyboard; // forced keyboard for Monkey Island copy protection + bool _unfilteredkeys; // discard key mapping temporarily (agi pred. dialog) static bool _soundMaster; // turn off sound after all calculations // static since needed by the SDL callback int _orientationLandscape; // current orientation |