aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/gp32/gp32std_input.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/gp32/gp32std_input.cpp')
-rw-r--r--backends/platform/gp32/gp32std_input.cpp210
1 files changed, 0 insertions, 210 deletions
diff --git a/backends/platform/gp32/gp32std_input.cpp b/backends/platform/gp32/gp32std_input.cpp
deleted file mode 100644
index 41689d9472..0000000000
--- a/backends/platform/gp32/gp32std_input.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * 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$
- *
- */
-
-#include "common/scummsys.h"
-
-#include "gp32std.h"
-#include "gp32std_input.h"
-
-static uint32 buttonState = 0;
-static uint16 buttonPressState = 0;
-
-#define GET_BUTTON_PRESSED(a) (buttonPressState & (a))
-#define ON_BUTTON_PRESSED(a) (buttonPressState |= (a))
-#define OFF_BUTTON_PRESSED(a) (buttonPressState &= ~(a))
-
-#define GET_BUTTON_DOWN(a) (buttonState & (a) << 12)
-#define ON_BUTTON_DOWN(a) buttonState |= ((a) << 12)
-#define OFF_BUTTON_DOWN(a) buttonState &= ~((a) << 12)
-
-#define GET_BUTTON_UP(a) (buttonState & (a))
-#define ON_BUTTON_UP(a) buttonState |= (a)
-#define OFF_BUTTON_UP(a) buttonState &= ~(a)
-
-#define rKEY_A 0x4000
-#define rKEY_B 0x2000
-#define rKEY_L 0x1000
-#define rKEY_R 0x8000
-#define rKEY_UP 0x0800
-#define rKEY_DOWN 0x0200
-#define rKEY_LEFT 0x0100
-#define rKEY_RIGHT 0x0400
-#define rKEY_START 0x0040
-#define rKEY_SELECT 0x0080
-#define rPBDAT (*(volatile unsigned *)0x1560000c)
-#define rPEDAT (*(volatile unsigned *)0x15600030)
-
-/****************************************************************
- GP32 Input mappings - Returns Button Pressed.
-****************************************************************/
-int gp_trapKey() {
- int value = 0;
-
- unsigned long gpb = rPBDAT; // 0x156
- unsigned long gpe = rPEDAT;
-
- if ((gpb & rKEY_LEFT) == 0)
- value |= GPC_VK_LEFT;
- if ((gpb & rKEY_RIGHT) == 0)
- value |= GPC_VK_RIGHT;
- if ((gpb & rKEY_UP) == 0)
- value |= GPC_VK_UP;
- if ((gpb & rKEY_DOWN) == 0)
- value |= GPC_VK_DOWN;
- if ((gpb & rKEY_A) == 0)
- value |= GPC_VK_FA;
- if ((gpb & rKEY_B) == 0)
- value |= GPC_VK_FB;
- if ((gpb & rKEY_L) == 0)
- value |= GPC_VK_FL;
- if ((gpb & rKEY_R) == 0)
- value |= GPC_VK_FR;
- if ((gpe & rKEY_SELECT) == 0)
- value |= GPC_VK_SELECT;
- if ((gpe & rKEY_START) == 0)
- value |= GPC_VK_START;
-
- return value;
-}
-
-bool gp_getButtonEvent(uint32 *nKeyUD, uint16 *nKeyP) {
-// int nKey = GpKeyGet();
- int nKey = gp_trapKey();
-
- const int keyBitMask[10] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200};
-
- for (int i = 0; i < 10; i++) {
- OFF_BUTTON_DOWN(keyBitMask[i]);
- OFF_BUTTON_UP(keyBitMask[i]);
- if (nKey & keyBitMask[i]) {
- if (!GET_BUTTON_PRESSED(keyBitMask[i])) {
-// GPDEBUG("DOWN %d", i);
- ON_BUTTON_PRESSED(keyBitMask[i]);
- ON_BUTTON_DOWN(keyBitMask[i]);
- }
- } else {
- if (GET_BUTTON_PRESSED(keyBitMask[i])) {
-// GPDEBUG("UP %d", i);
- OFF_BUTTON_PRESSED(keyBitMask[i]);
- ON_BUTTON_UP(keyBitMask[i]);
- }
- }
- }
-
-// GPDEBUG("%08x %04x", buttonState, buttonPressState);
- *nKeyUD = buttonState;
- *nKeyP = buttonPressState;
- return true;
-}
-
-#define MAX_EVENTS 32
-
-struct EventQueue {
-protected:
- int front, rear;
- int numElement;
- GP32BtnEvent event[MAX_EVENTS];
-
-public:
- void push(GP32BtnEvent *ev) {
- if ((rear + 1) % MAX_EVENTS == front) {
- GPDEBUG("Queue Overflow!");
- return;
- }
- numElement++;
-
- event[rear].type = ev->type;
- event[rear].button = ev->button;
- rear = (rear + 1) % MAX_EVENTS;
- }
-
- bool isEmpty() {
- return (numElement == 0);
- }
-
- bool isFull() {
- return (numElement == MAX_EVENTS);
- }
-
- bool get(GP32BtnEvent *ev) {
- if (front == rear) {
- return false;
- }
- numElement--;
- ev->type = event[front].type;
- ev->button = event[front].button;
- front = (front + 1) % MAX_EVENTS;
- return true;
- }
-};
-
-EventQueue eventQueue;
-
-bool gp_pumpButtonEvent() {
- int nKey = gp_trapKey();
- GP32BtnEvent ev;
-
- const int keyBitMask[10] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200};
-
- for (int i = 0; i < 10; i++) {
- if (nKey & keyBitMask[i]) {
- if (!GET_BUTTON_PRESSED(keyBitMask[i])) {
- ON_BUTTON_PRESSED(keyBitMask[i]);
- ev.type = BUTTON_DOWN;
- ev.button = keyBitMask[i];
- eventQueue.push(&ev);
- //ON_BUTTON_DOWN(keyBitMask[i]);
- }
- } else {
- if (GET_BUTTON_PRESSED(keyBitMask[i])) {
- OFF_BUTTON_PRESSED(keyBitMask[i]);
- ev.type = BUTTON_UP;
- ev.button = keyBitMask[i];
- eventQueue.push(&ev);
- //ON_BUTTON_UP(keyBitMask[i]);
- }
- }
- }
-
- return true;
-}
-
-bool gp_pollButtonEvent(GP32BtnEvent *ev) {
- gp_pumpButtonEvent();
-
- if (eventQueue.isEmpty()) {
- return false;
- }
-
- eventQueue.get(ev);
-// GPDEBUG("Event poll %d %d", ev->type, ev->button);
-
- return true;
-}
-
-bool gp_getButtonPressed(uint16 button)
-{
- return buttonPressState & button;
-}