diff options
Diffstat (limited to 'backends/platform/ds')
| -rw-r--r-- | backends/platform/ds/arm9/makefile | 4 | ||||
| -rw-r--r-- | backends/platform/ds/arm9/source/dsmain.cpp | 42 | ||||
| -rw-r--r-- | backends/platform/ds/arm9/source/dsoptions.cpp | 4 | ||||
| -rw-r--r-- | backends/platform/ds/arm9/source/osystem_ds.cpp | 33 | ||||
| -rw-r--r-- | backends/platform/ds/arm9/source/osystem_ds.h | 10 | ||||
| -rw-r--r-- | backends/platform/ds/arm9/source/touchkeyboard.cpp | 46 | ||||
| -rw-r--r-- | backends/platform/ds/arm9/source/touchkeyboard.h | 69 | 
7 files changed, 80 insertions, 128 deletions
| diff --git a/backends/platform/ds/arm9/makefile b/backends/platform/ds/arm9/makefile index f28abd2b77..cb41774064 100644 --- a/backends/platform/ds/arm9/makefile +++ b/backends/platform/ds/arm9/makefile @@ -333,8 +333,8 @@ endif  #---------------------------------------------------------------------------------  %.nds: %.bin -	@echo ndstool -c $@ -9 scummvm.bin $(ARM7BIN) -b ../../$(LOGO) "$(shell basename $@);ScummVM 0.9.0;DS Port" -	ndstool -c $@ -9 scummvm.bin $(ARM7BIN) -b ../../$(LOGO) "$(shell basename $@);ScummVM 0.9.1;DS Port" +	@echo ndstool -c $@ -9 scummvm.bin $(ARM7BIN) -b ../../$(LOGO) "$(shell basename $@);ScummVM 0.11.0svn;DS Port" +	ndstool -c $@ -9 scummvm.bin $(ARM7BIN) -b ../../$(LOGO) "$(shell basename $@);ScummVM 0.11.0svn;DS Port"  	dsbuild $@ -l ../ndsloader.bin  	padbin 16 $(basename $@).ds.gba diff --git a/backends/platform/ds/arm9/source/dsmain.cpp b/backends/platform/ds/arm9/source/dsmain.cpp index 153ecfab87..af5addac66 100644 --- a/backends/platform/ds/arm9/source/dsmain.cpp +++ b/backends/platform/ds/arm9/source/dsmain.cpp @@ -333,27 +333,25 @@ void initSprites() {  void saveGameBackBuffer() {  #ifdef DISABLE_SCUMM  	if (savedBuffer == NULL) savedBuffer = new u8[gameWidth * gameHeight]; -	for (int r = 0; r < 200; r++) { +    for (int r = 0; r < gameHeight; r++) {  		memcpy(savedBuffer + (r * gameWidth), ((u8 *) (get8BitBackBuffer())) + (r * 512), gameWidth); -	}  #endif  }  void restoreGameBackBuffer() {  #ifdef DISABLE_SCUMM  	if (savedBuffer) { -		for (int r = 0; r < 200; r++) { -			memcpy(((u8 *) (BG_GFX_SUB)) + (r * 512), savedBuffer + (r * gameWidth), gameWidth); -			memcpy(((u8 *) (get8BitBackBuffer())) + (r * 512), savedBuffer + (r * gameWidth), gameWidth); -		} +        for (int r = 0; r < gameHeight; r++) { +            memcpy(((u8 *) (BG_GFX_SUB)) + (r * 512), savedBuffer + (r * gameWidth), gameWidth); +            memcpy(((u8 *) (get8BitBackBuffer())) + (r * 512), savedBuffer + (r * gameWidth), gameWidth); +        } +		  		delete savedBuffer;  		savedBuffer = NULL;  	} -#endif - -#ifndef DISABLE_SCUMM	 -	memset(get8BitBackBuffer(), 0, 512 * 256); -	memset(BG_GFX_SUB, 0, 512 * 256); +#else +    memset(get8BitBackBuffer(), 0, 512 * 256); +    memset(BG_GFX_SUB, 0, 512 * 256);  	if (Scumm::g_scumm) {  		Scumm::g_scumm->markRectAsDirty(Scumm::kMainVirtScreen, 0, gameWidth - 1, 0, gameHeight - 1, 1);  		Scumm::g_scumm->markRectAsDirty(Scumm::kTextVirtScreen, 0, gameWidth - 1, 0, gameHeight - 1, 1); @@ -996,11 +994,10 @@ void setKeyboardEnable(bool en) {  			// Copy the sub screen VRAM from the top screen - they should always be  			// the same.  			u16* buffer = get8BitBackBuffer(); - -			for (int r = 0; r < (512 * 256) >> 1; r++) { -				BG_GFX_SUB[r] = buffer[r]; -			} -			 +             +            for (int r = 0; r < (512 * 256) >> 1; r++) +                BG_GFX_SUB[r] = buffer[r]; +                  			SUB_DISPLAY_CR &= ~DISPLAY_BG1_ACTIVE;	// Turn off keyboard layer  			SUB_DISPLAY_CR |= DISPLAY_BG3_ACTIVE;	// Turn on game layer  		} else { @@ -1229,7 +1226,7 @@ void addEventsToQueue() {  			if (leftHandedSwap(getKeysChanged()) & KEY_UP) {  				event.type = getKeyEvent(leftHandedSwap(KEY_UP)); -				event.kbd.keycode = SDLK_UP; +				event.kbd.keycode = Common::KEYCODE_UP;  				event.kbd.ascii = 0;  				event.kbd.flags = 0;  				system->addEvent(event); @@ -1237,7 +1234,7 @@ void addEventsToQueue() {  			if (leftHandedSwap(getKeysChanged()) & KEY_DOWN) {  				event.type = getKeyEvent(leftHandedSwap(KEY_DOWN)); -				event.kbd.keycode = SDLK_DOWN; +				event.kbd.keycode = Common::KEYCODE_DOWN;  				event.kbd.ascii = 0;  				event.kbd.flags = 0;  				system->addEvent(event); @@ -1245,7 +1242,7 @@ void addEventsToQueue() {  			if (leftHandedSwap(getKeysDown()) & KEY_A) {  				event.type = getKeyEvent(leftHandedSwap(KEY_A)); -				event.kbd.keycode = SDLK_RETURN; +				event.kbd.keycode = Common::KEYCODE_RETURN;  				event.kbd.ascii = 0;  				event.kbd.flags = 0;  				system->addEvent(event); @@ -1256,8 +1253,8 @@ void addEventsToQueue() {  		if ((getKeysChanged() & KEY_START)) {  			event.type = getKeyEvent(KEY_START); -			event.kbd.keycode = 319;		// F5 -			event.kbd.ascii = 319; +			event.kbd.keycode = Common::KEYCODE_F5; +			event.kbd.ascii = Common::ASCII_F5;  			event.kbd.flags = 0;  			system->addEvent(event);  		} @@ -2315,6 +2312,8 @@ int main(void)  	consolePrintf("-------------------------------\n");  	consolePrintf("ScummVM DS\n");  	consolePrintf("Ported by Neil Millstone\n"); + FIXME: Change this code to make use of base/internal_version.h + resp. uses gScummVMVersion from base/version.h  	consolePrintf("Version 0.10.0SVN ");  #if defined(DS_BUILD_A)  	consolePrintf("build A\n"); @@ -2483,4 +2482,3 @@ int main(void)  int main() {  	DS::main();  } - diff --git a/backends/platform/ds/arm9/source/dsoptions.cpp b/backends/platform/ds/arm9/source/dsoptions.cpp index 58df3dc863..171d1e044c 100644 --- a/backends/platform/ds/arm9/source/dsoptions.cpp +++ b/backends/platform/ds/arm9/source/dsoptions.cpp @@ -158,8 +158,8 @@ void DSOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, uint  		Common::Event event;  		event.type = Common::EVENT_KEYDOWN; -		event.kbd.ascii = SDLK_DOWN; -		event.kbd.keycode = SDLK_DOWN; +		event.kbd.ascii = 0; +		event.kbd.keycode = Common::KEYCODE_DOWN;  		OSystem_DS::instance()->addEvent(event);  		event.type = Common::EVENT_KEYUP; diff --git a/backends/platform/ds/arm9/source/osystem_ds.cpp b/backends/platform/ds/arm9/source/osystem_ds.cpp index 9ff2c5ba63..cad6ad6b78 100644 --- a/backends/platform/ds/arm9/source/osystem_ds.cpp +++ b/backends/platform/ds/arm9/source/osystem_ds.cpp @@ -173,8 +173,8 @@ void OSystem_DS::copyRectToScreen(const byte *buf, int pitch, int x, int y, int  	u16* src = (u16 *) buf;  	if (DS::getKeyboardEnable()) { -	 -		for (int dy = y; dy < y + h; dy++) { +		for (int dy = y; dy < y + h; dy++) +        {  			u16* dest = bg + (dy << 8) + (x >> 1);  			DC_FlushRange(src, w << 1); @@ -185,7 +185,8 @@ void OSystem_DS::copyRectToScreen(const byte *buf, int pitch, int x, int y, int  		}  	} else { -		for (int dy = y; dy < y + h; dy++) { +		for (int dy = y; dy < y + h; dy++) +        {  			u16* dest1 = bg + (dy << 8) + (x >> 1);  			u16* dest2 = bgSub + (dy << 8) + (x >> 1); @@ -473,22 +474,36 @@ Common::SaveFileManager* OSystem_DS::getSavefileManager()  	}  } -bool OSystem_DS::grabRawScreen(Graphics::Surface* surf) { -	surf->create(DS::getGameWidth(), DS::getGameHeight(), 1); +Graphics::Surface *OSystem_DS::lockScreen() { +	// For now, we create a full temporary screen surface, to which we copy the +	// the screen content. Later unlockScreen will copy everything back. +	// Not very nice nor efficient, but at least works, and is not worse +	// than in the bad old times where we used grabRawScreen + copyRectToScreen. +	 +	_framebuffer.create(DS::getGameWidth(), DS::getGameHeight(), 1);  	// Ensure we copy using 16 bit quantities due to limitation of VRAM addressing -	// TODO: Change this to work with the software scalar (hint: video ram format is different) +	 +  	u16* image = (u16 *) DS::get8BitBackBuffer();  	for (int y = 0; y <  DS::getGameHeight(); y++)  	{ -		DC_FlushRange((image + (y * 512)), DS::getGameWidth()); +		DC_FlushRange(image + (y << 8), DS::getGameWidth());  		for (int x = 0; x < DS::getGameWidth() >> 1; x++)  		{ -			*(((u16 *) (surf->pixels)) + y * (DS::getGameWidth() >> 1) + x) = *(image + y * 256 + x); +			*(((u16 *) (_framebuffer.pixels)) + y * (DS::getGameWidth() >> 1) + x) = image[y << 8 + x];  		}  	} -	return true; +	return &_framebuffer; +} + +void OSystem_DS::unlockScreen() { +	// Copy temp framebuffer back to screen +	copyRectToScreen((byte *)_framebuffer.pixels, _framebuffer.pitch, 0, 0, _framebuffer.w, _framebuffer.h); + +	// Free memory +	_framebuffer.free();   }  void OSystem_DS::setFocusRectangle(const Common::Rect& rect) { diff --git a/backends/platform/ds/arm9/source/osystem_ds.h b/backends/platform/ds/arm9/source/osystem_ds.h index b6d6f5b7bc..58b940af2c 100644 --- a/backends/platform/ds/arm9/source/osystem_ds.h +++ b/backends/platform/ds/arm9/source/osystem_ds.h @@ -53,6 +53,8 @@ public:  	DSAudioMixer* _mixer;  	DSTimerManager* _timer; +	Graphics::Surface _framebuffer; +  	static OSystem_DS* _instance;  	typedef void (*SoundProc)(void *param, byte *buf, int len); @@ -127,7 +129,8 @@ public:  	void addEvent(Common::Event& e);  	bool isEventQueueEmpty() { return queuePos == 0; } -	virtual bool grabRawScreen(Graphics::Surface* surf); +	virtual Graphics::Surface *lockScreen(); +	virtual void unlockScreen();  	virtual void setFocusRectangle(const Common::Rect& rect); @@ -159,4 +162,9 @@ void OSystem_DS::colorToRGB(OverlayColor color, uint8 &r, uint8 &g, uint8 &b)  	//consolePrintf("coltorgb\n");  } +namespace DS +{ +bool isCpuScalerEnabled(); +} +  #endif diff --git a/backends/platform/ds/arm9/source/touchkeyboard.cpp b/backends/platform/ds/arm9/source/touchkeyboard.cpp index 3f1d6f8064..8f7af668d8 100644 --- a/backends/platform/ds/arm9/source/touchkeyboard.cpp +++ b/backends/platform/ds/arm9/source/touchkeyboard.cpp @@ -56,9 +56,9 @@ key_data keys[DS_NUM_KEYS] = {  	{35,				17,		0,		'8'},  	{36,				19,		0,		'9'},  	{27,				21,		0,		'0'}, -	{45,				23,		0,		SDLK_MINUS}, -	{50,				25,		0,		SDLK_EQUALS}, -	{52,				27,		0,		SDLK_BACKSPACE}, +	{45,				23,		0,		Common::KEYCODE_MINUS}, +	{50,				25,		0,		Common::KEYCODE_EQUALS}, +	{52,				27,		0,		Common::KEYCODE_BACKSPACE},  	// Top row  	{'Q'-'A' + 1,		4,		2,		'Q'}, @@ -71,8 +71,8 @@ key_data keys[DS_NUM_KEYS] = {  	{'I'-'A' + 1,		18,		2,		'I'},  	{'O'-'A' + 1,		20,		2,		'O'},  	{'P'-'A' + 1,		22,		2,		'P'}, -	{43,				24,		2,		SDLK_LEFTBRACKET}, -	{44,				26,		2,		SDLK_RIGHTBRACKET}, +	{43,				24,		2,		Common::KEYCODE_LEFTBRACKET}, +	{44,				26,		2,		Common::KEYCODE_RIGHTBRACKET},  	// Middle row  	{55,				3,		4,		DS_CAPSLOCK}, @@ -85,9 +85,9 @@ key_data keys[DS_NUM_KEYS] = {  	{'J'-'A' + 1,		17,		4,		'J'},  	{'K'-'A' + 1,		19,		4,		'K'},  	{'L'-'A' + 1,		21,		4,		'L'}, -	{42,				23,		4,		SDLK_SEMICOLON}, -	{41,				25,		4,		SDLK_QUOTE}, -	{46,				27,		4,		SDLK_RETURN}, +	{42,				23,		4,		Common::KEYCODE_SEMICOLON}, +	{41,				25,		4,		Common::KEYCODE_QUOTE}, +	{46,				27,		4,		Common::KEYCODE_RETURN},  	// Bottom row  	{51,				4,		6,		DS_SHIFT}, @@ -98,26 +98,26 @@ key_data keys[DS_NUM_KEYS] = {  	{'B'-'A' + 1,		14,		6,		'B'},  	{'N'-'A' + 1,		16,		6,		'N'},  	{'M'-'A' + 1,		18,		6,		'M'}, -	{38,				20,		6,		SDLK_COMMA}, -	{39,				22,		6,		SDLK_PERIOD}, -	{40,				24,		6,		SDLK_SLASH}, +	{38,				20,		6,		Common::KEYCODE_COMMA}, +	{39,				22,		6,		Common::KEYCODE_PERIOD}, +	{40,				24,		6,		Common::KEYCODE_SLASH},  	// Space bar -	{47,				9,		8,		SDLK_SPACE}, -	{48,				11,		8,		SDLK_SPACE}, -	{48,				13,		8,		SDLK_SPACE}, -	{48,				15,		8,		SDLK_SPACE}, -	{48,				17,		8,		SDLK_SPACE}, -	{49,				19,		8,		SDLK_SPACE}, +	{47,				9,		8,		Common::KEYCODE_SPACE}, +	{48,				11,		8,		Common::KEYCODE_SPACE}, +	{48,				13,		8,		Common::KEYCODE_SPACE}, +	{48,				15,		8,		Common::KEYCODE_SPACE}, +	{48,				17,		8,		Common::KEYCODE_SPACE}, +	{49,				19,		8,		Common::KEYCODE_SPACE},  	// Cursor arrows -	{52,				27,		8,		SDLK_LEFT}, -	{54,				29,		8,		SDLK_DOWN}, -	{53,				31,		8,		SDLK_RIGHT}, -	{51,				29,		6,		SDLK_UP}, +	{52,				27,		8,		Common::KEYCODE_LEFT}, +	{54,				29,		8,		Common::KEYCODE_DOWN}, +	{53,				31,		8,		Common::KEYCODE_RIGHT}, +	{51,				29,		6,		Common::KEYCODE_UP},  	// Close button -	{56,				30,		0,		SDLK_UNKNOWN}, +	{56,				30,		0,		Common::KEYCODE_INVALID},  }; @@ -237,7 +237,7 @@ void addKeyboardEvents() {  				Common::Event event;  //				consolePrintf("Key: %d\n", r); -				if ((keys[r].character == SDLK_UNKNOWN)) { +				if ((keys[r].character == Common::KEYCODE_INVALID)) {  					// Close button  					DS::closed = true;  				} else	if ((keys[r].character >= '0') && (keys[r].character <= '9')) { diff --git a/backends/platform/ds/arm9/source/touchkeyboard.h b/backends/platform/ds/arm9/source/touchkeyboard.h index 53fd25e12a..e8f5fda37e 100644 --- a/backends/platform/ds/arm9/source/touchkeyboard.h +++ b/backends/platform/ds/arm9/source/touchkeyboard.h @@ -25,75 +25,6 @@  namespace DS { -enum  	SDLKey { -  SDLK_UNKNOWN = 0, SDLK_FIRST = 0, SDLK_BACKSPACE = 8, SDLK_TAB = 9, -  SDLK_CLEAR = 12, SDLK_RETURN = 13, SDLK_PAUSE = 19, SDLK_ESCAPE = 27, -  SDLK_SPACE = 32, SDLK_EXCLAIM = 33, SDLK_QUOTEDBL = 34, SDLK_HASH = 35, -  SDLK_DOLLAR = 36, SDLK_AMPERSAND = 38, SDLK_QUOTE = 39, SDLK_LEFTPAREN = 40, -  SDLK_RIGHTPAREN = 41, SDLK_ASTERISK = 42, SDLK_PLUS = 43, SDLK_COMMA = 44, -  SDLK_MINUS = 45, SDLK_PERIOD = 46, SDLK_SLASH = 47, SDLK_0 = 48, -  SDLK_1 = 49, SDLK_2 = 50, SDLK_3 = 51, SDLK_4 = 52, -  SDLK_5 = 53, SDLK_6 = 54, SDLK_7 = 55, SDLK_8 = 56, -  SDLK_9 = 57, SDLK_COLON = 58, SDLK_SEMICOLON = 59, SDLK_LESS = 60, -  SDLK_EQUALS = 61, SDLK_GREATER = 62, SDLK_QUESTION = 63, SDLK_AT = 64, -  SDLK_LEFTBRACKET = 91, SDLK_BACKSLASH = 92, SDLK_RIGHTBRACKET = 93, SDLK_CARET = 94, -  SDLK_UNDERSCORE = 95, SDLK_BACKQUOTE = 96, SDLK_a = 97, SDLK_b = 98, -  SDLK_c = 99, SDLK_d = 100, SDLK_e = 101, SDLK_f = 102, -  SDLK_g = 103, SDLK_h = 104, SDLK_i = 105, SDLK_j = 106, -  SDLK_k = 107, SDLK_l = 108, SDLK_m = 109, SDLK_n = 110, -  SDLK_o = 111, SDLK_p = 112, SDLK_q = 113, SDLK_r = 114, -  SDLK_s = 115, SDLK_t = 116, SDLK_u = 117, SDLK_v = 118, -  SDLK_w = 119, SDLK_x = 120, SDLK_y = 121, SDLK_z = 122, -  SDLK_DELETE = 127, SDLK_WORLD_0 = 160, SDLK_WORLD_1 = 161, SDLK_WORLD_2 = 162, -  SDLK_WORLD_3 = 163, SDLK_WORLD_4 = 164, SDLK_WORLD_5 = 165, SDLK_WORLD_6 = 166, -  SDLK_WORLD_7 = 167, SDLK_WORLD_8 = 168, SDLK_WORLD_9 = 169, SDLK_WORLD_10 = 170, -  SDLK_WORLD_11 = 171, SDLK_WORLD_12 = 172, SDLK_WORLD_13 = 173, SDLK_WORLD_14 = 174, -  SDLK_WORLD_15 = 175, SDLK_WORLD_16 = 176, SDLK_WORLD_17 = 177, SDLK_WORLD_18 = 178, -  SDLK_WORLD_19 = 179, SDLK_WORLD_20 = 180, SDLK_WORLD_21 = 181, SDLK_WORLD_22 = 182, -  SDLK_WORLD_23 = 183, SDLK_WORLD_24 = 184, SDLK_WORLD_25 = 185, SDLK_WORLD_26 = 186, -  SDLK_WORLD_27 = 187, SDLK_WORLD_28 = 188, SDLK_WORLD_29 = 189, SDLK_WORLD_30 = 190, -  SDLK_WORLD_31 = 191, SDLK_WORLD_32 = 192, SDLK_WORLD_33 = 193, SDLK_WORLD_34 = 194, -  SDLK_WORLD_35 = 195, SDLK_WORLD_36 = 196, SDLK_WORLD_37 = 197, SDLK_WORLD_38 = 198, -  SDLK_WORLD_39 = 199, SDLK_WORLD_40 = 200, SDLK_WORLD_41 = 201, SDLK_WORLD_42 = 202, -  SDLK_WORLD_43 = 203, SDLK_WORLD_44 = 204, SDLK_WORLD_45 = 205, SDLK_WORLD_46 = 206, -  SDLK_WORLD_47 = 207, SDLK_WORLD_48 = 208, SDLK_WORLD_49 = 209, SDLK_WORLD_50 = 210, -  SDLK_WORLD_51 = 211, SDLK_WORLD_52 = 212, SDLK_WORLD_53 = 213, SDLK_WORLD_54 = 214, -  SDLK_WORLD_55 = 215, SDLK_WORLD_56 = 216, SDLK_WORLD_57 = 217, SDLK_WORLD_58 = 218, -  SDLK_WORLD_59 = 219, SDLK_WORLD_60 = 220, SDLK_WORLD_61 = 221, SDLK_WORLD_62 = 222, -  SDLK_WORLD_63 = 223, SDLK_WORLD_64 = 224, SDLK_WORLD_65 = 225, SDLK_WORLD_66 = 226, -  SDLK_WORLD_67 = 227, SDLK_WORLD_68 = 228, SDLK_WORLD_69 = 229, SDLK_WORLD_70 = 230, -  SDLK_WORLD_71 = 231, SDLK_WORLD_72 = 232, SDLK_WORLD_73 = 233, SDLK_WORLD_74 = 234, -  SDLK_WORLD_75 = 235, SDLK_WORLD_76 = 236, SDLK_WORLD_77 = 237, SDLK_WORLD_78 = 238, -  SDLK_WORLD_79 = 239, SDLK_WORLD_80 = 240, SDLK_WORLD_81 = 241, SDLK_WORLD_82 = 242, -  SDLK_WORLD_83 = 243, SDLK_WORLD_84 = 244, SDLK_WORLD_85 = 245, SDLK_WORLD_86 = 246, -  SDLK_WORLD_87 = 247, SDLK_WORLD_88 = 248, SDLK_WORLD_89 = 249, SDLK_WORLD_90 = 250, -  SDLK_WORLD_91 = 251, SDLK_WORLD_92 = 252, SDLK_WORLD_93 = 253, SDLK_WORLD_94 = 254, -  SDLK_WORLD_95 = 255, SDLK_KP0 = 256, SDLK_KP1 = 257, SDLK_KP2 = 258, -  SDLK_KP3 = 259, SDLK_KP4 = 260, SDLK_KP5 = 261, SDLK_KP6 = 262, -  SDLK_KP7 = 263, SDLK_KP8 = 264, SDLK_KP9 = 265, SDLK_KP_PERIOD = 266, -  SDLK_KP_DIVIDE = 267, SDLK_KP_MULTIPLY = 268, SDLK_KP_MINUS = 269, SDLK_KP_PLUS = 270, -  SDLK_KP_ENTER = 271, SDLK_KP_EQUALS = 272, SDLK_UP = 273, SDLK_DOWN = 274, -  SDLK_RIGHT = 275, SDLK_LEFT = 276, SDLK_INSERT = 277, SDLK_HOME = 278, -  SDLK_END = 279, SDLK_PAGEUP = 280, SDLK_PAGEDOWN = 281, SDLK_F1 = 282, -  SDLK_F2 = 283, SDLK_F3 = 284, SDLK_F4 = 285, SDLK_F5 = 286, -  SDLK_F6 = 287, SDLK_F7 = 288, SDLK_F8 = 289, SDLK_F9 = 290, -  SDLK_F10 = 291, SDLK_F11 = 292, SDLK_F12 = 293, SDLK_F13 = 294, -  SDLK_F14 = 295, SDLK_F15 = 296, SDLK_NUMLOCK = 300, SDLK_CAPSLOCK = 301, -  SDLK_SCROLLOCK = 302, SDLK_RSHIFT = 303, SDLK_LSHIFT = 304, SDLK_RCTRL = 305, -  SDLK_LCTRL = 306, SDLK_RALT = 307, SDLK_LALT = 308, SDLK_RMETA = 309, -  SDLK_LMETA = 310, SDLK_LSUPER = 311, SDLK_RSUPER = 312, SDLK_MODE = 313, -  SDLK_COMPOSE = 314, SDLK_HELP = 315, SDLK_PRINT = 316, SDLK_SYSREQ = 317, -  SDLK_BREAK = 318, SDLK_MENU = 319, SDLK_POWER = 320, SDLK_EURO = 321, -  SDLK_UNDO = 322, SDLK_LAST -}; - -enum  	SDLMod { -  KMOD_NONE = 0x0000, KMOD_LSHIFT = 0x0001, KMOD_RSHIFT = 0x0002, KMOD_LCTRL = 0x0040, -  KMOD_RCTRL = 0x0080, KMOD_LALT = 0x0100, KMOD_RALT = 0x0200, KMOD_LMETA = 0x0400, -  KMOD_RMETA = 0x0800, KMOD_NUM = 0x1000, KMOD_CAPS = 0x2000, KMOD_MODE = 0x4000, -  KMOD_RESERVED = 0x8000 -}; -  void drawKeyboard(int tileBase, int mapBase, u16* saveSpace);  void restoreVRAM(int tileBase, int mapBase, u16* saveSpace);  void addKeyboardEvents(); | 
