aboutsummaryrefslogtreecommitdiff
path: root/backends/dc/input.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/dc/input.cpp')
-rw-r--r--backends/dc/input.cpp250
1 files changed, 0 insertions, 250 deletions
diff --git a/backends/dc/input.cpp b/backends/dc/input.cpp
deleted file mode 100644
index 50587ad59d..0000000000
--- a/backends/dc/input.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/* ScummVM - Scumm Interpreter
- * Dreamcast port
- * Copyright (C) 2002-2004 Marcus Comstedt
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#define RONIN_TIMER_ACCESS
-
-#include <common/stdafx.h>
-#include <common/scummsys.h>
-#include "dc.h"
-
-int handleInput(struct mapledev *pad, int &mouse_x, int &mouse_y,
- byte &shiftFlags, Interactive *inter)
-{
- static const char numpadmap[] = "0000039601740285";
- int lmb=0, rmb=0, newkey=0;
- static int lastkey = 0;
- static byte lastlmb = 0, lastrmb = 0;
- static int8 mouse_wheel = 0, lastwheel = 0;
- shiftFlags = 0;
- for(int i=0; i<4; i++, pad++)
- if(pad->func & MAPLE_FUNC_CONTROLLER) {
- int buttons = pad->cond.controller.buttons;
-
- if(!(buttons & 0x060e)) exit(0);
-
- if(!(buttons & 4)) lmb++;
- if(!(buttons & 2)) rmb++;
-
- if(!(buttons & 8)) newkey = 319;
- else if(!(buttons & 512)) newkey = ' ';
- else if(!(buttons & 1024)) newkey = numpadmap[(buttons>>4)&15];
-
- if(!(buttons & 128)) if(inter) newkey = 1001; else mouse_x++;
- if(!(buttons & 64)) if(inter) newkey = 1002; else mouse_x--;
- if(!(buttons & 32)) if(inter) newkey = 1003; else mouse_y++;
- if(!(buttons & 16)) if(inter) newkey = 1004; else mouse_y--;
-
- mouse_x += ((int)pad->cond.controller.joyx-128)>>4;
- mouse_y += ((int)pad->cond.controller.joyy-128)>>4;
-
- if(pad->cond.controller.ltrigger > 200) newkey = 1005;
- else if(pad->cond.controller.rtrigger > 200) newkey = 1006;
-
- } else if(pad->func & MAPLE_FUNC_MOUSE) {
- int buttons = pad->cond.mouse.buttons;
-
- if(!(buttons & 4)) lmb++;
- if(!(buttons & 2)) rmb++;
-
- if(!(buttons & 8)) newkey = 319;
-
- mouse_x += pad->cond.mouse.axis1;
- mouse_y += pad->cond.mouse.axis2;
- mouse_wheel += pad->cond.mouse.axis3;
-
- if(inter)
- inter->mouse(mouse_x, mouse_y);
-
- pad->cond.mouse.axis1 = 0;
- pad->cond.mouse.axis2 = 0;
- pad->cond.mouse.axis3 = 0;
- } else if(pad->func & MAPLE_FUNC_KEYBOARD) {
- for(int p=0; p<6; p++) {
- int shift = pad->cond.kbd.shift;
- int key = pad->cond.kbd.key[p];
- if(shift & 0x08) lmb++;
- if(shift & 0x80) rmb++;
- if(shift & 0x11) shiftFlags |= OSystem::KBD_CTRL;
- if(shift & 0x44) shiftFlags |= OSystem::KBD_ALT;
- if(shift & 0x22) shiftFlags |= OSystem::KBD_SHIFT;
- if(key >= 4 && key <= 0x1d)
- newkey = key+('a'-4);
- else if(key >= 0x1e && key <= 0x26)
- newkey = key+((shift & 0x22)? ('!'-0x1e) : ('1'-0x1e));
- else if(key >= 0x59 && key <= 0x61)
- newkey = key+('1'-0x59);
- else if(key >= 0x2d && key <= 0x38 && key != 0x31)
- newkey = ((shift & 0x22)?
- "=¯`{ }+*½<>?" :
- "-^@[ ];:§,./")[key - 0x2d];
- else if(key >= 0x3a && key <= 0x43)
- newkey = key+(315-0x3a);
- else if(key >= 0x54 && key <= 0x57)
- newkey = "/*-+"[key-0x54];
- else switch(key) {
- case 0x27: case 0x62:
- newkey = ((shift & 0x22)? '~' : '0'); break;
- case 0x28: case 0x58:
- newkey = 13; break;
- case 0x29:
- newkey = 27; break;
- case 0x2a:
- newkey = 8; break;
- case 0x2b:
- newkey = 9; break;
- case 0x2c:
- newkey = ' '; break;
- case 0x4c:
- if((shift & 0x11) && (shift & 0x44))
- exit(0);
- break;
- case 0x4f:
- if(inter) newkey = 1001; else mouse_x++; break;
- case 0x50:
- if(inter) newkey = 1002; else mouse_x--; break;
- case 0x51:
- if(inter) newkey = 1003; else mouse_y++; break;
- case 0x52:
- if(inter) newkey = 1004; else mouse_y--; break;
- case 0x63:
- newkey = '.'; break;
- case 0x64: case 0x87:
- newkey = ((shift & 0x22)? '_' : '\\'); break;
- case 0x89:
- newkey = ((shift & 0x22)? '|' : '¥'); break;
- }
- }
- }
-
- if(lmb && inter && !lastlmb) {
- newkey = 1000;
- lmb = 0;
- }
-
- if(lmb && !lastlmb) {
- lastlmb = 1;
- return -OSystem::EVENT_LBUTTONDOWN;
- } else if(lastlmb && !lmb) {
- lastlmb = 0;
- return -OSystem::EVENT_LBUTTONUP;
- }
- if(rmb && !lastrmb) {
- lastrmb = 1;
- return -OSystem::EVENT_RBUTTONDOWN;
- } else if(lastrmb && !rmb) {
- lastrmb = 0;
- return -OSystem::EVENT_RBUTTONUP;
- }
-
- if(mouse_wheel != lastwheel)
- if(((int8)(mouse_wheel - lastwheel)) > 0) {
- lastwheel++;
- return -OSystem::EVENT_WHEELDOWN;
- } else {
- --lastwheel;
- return -OSystem::EVENT_WHEELUP;
- }
-
- if(newkey && inter && newkey != lastkey) {
- int transkey = inter->key(newkey, shiftFlags);
- if(transkey) {
- newkey = transkey;
- inter = NULL;
- }
- }
-
- if(!newkey || (lastkey && newkey != lastkey)) {
- int upkey = lastkey;
- lastkey = 0;
- if(upkey)
- return upkey | (1<<30);
- } else if(!lastkey) {
- lastkey = newkey;
- if(newkey >= 1000 || !inter)
- return newkey;
- }
-
- return 0;
-}
-
-bool OSystem_Dreamcast::pollEvent(Event &event)
-{
- unsigned int t = Timer();
-
- if(_timer_active && ((int)(t-_timer_next_expiry))>=0) {
- _timer_duration = _timer_callback(_timer_duration);
- _timer_next_expiry = t+USEC_TO_TIMER(1000*_timer_duration);
- }
-
- if(((int)(t-_devpoll))<0)
- return false;
- _devpoll += USEC_TO_TIMER(17000);
- if(((int)(t-_devpoll))>=0)
- _devpoll = t + USEC_TO_TIMER(17000);
-
- int mask = getimask();
- setimask(15);
- checkSound();
- int e = handleInput(locked_get_pads(), _ms_cur_x, _ms_cur_y,
- event.kbd.flags, (_softkbd_on? &_softkbd : NULL));
- setimask(mask);
- if (_ms_cur_x<0) _ms_cur_x=0;
- if (_ms_cur_x>=_screen_w) _ms_cur_x=_screen_w-1;
- if (_ms_cur_y<0) _ms_cur_y=0;
- if (_ms_cur_y>=_screen_h) _ms_cur_y=_screen_h-1;
- event.mouse.x = _ms_cur_x;
- event.mouse.y = _ms_cur_y;
- if (_overlay_visible) {
- event.mouse.x -= _overlay_x;
- event.mouse.y -= _overlay_y;
- }
- event.kbd.ascii = event.kbd.keycode = 0;
- if(e<0) {
- event.type = (EventType)-e;
- return true;
- } else if(e>0) {
- bool processed = false, down = !(e&(1<<30));
- e &= ~(1<<30);
- if(e < 1000) {
- event.type = (down? EVENT_KEYDOWN : EVENT_KEYUP);
- event.kbd.keycode = e;
- event.kbd.ascii = (e>='a' && e<='z' && (event.kbd.flags & KBD_SHIFT)?
- e &~ 0x20 : e);
- processed = true;
- } else if(down) {
- if(e == 1005)
- setFeatureState(kFeatureVirtualKeyboard,
- !getFeatureState(kFeatureVirtualKeyboard));
- }
- return processed;
- } else if(_ms_cur_x != _ms_old_x || _ms_cur_y != _ms_old_y) {
- event.type = EVENT_MOUSEMOVE;
- _ms_old_x = _ms_cur_x;
- _ms_old_y = _ms_cur_y;
- return true;
- } else {
- event.type = (EventType)0;
- return false;
- }
-}
-