aboutsummaryrefslogtreecommitdiff
path: root/Source/Pad.c
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-05-22 07:06:17 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2017-05-22 07:06:17 +0200
commitaefe5f8c1c45f4cdeafe08113953a9f03df3c644 (patch)
treec7f609ec694a2180237b77c182705a79f81f4725 /Source/Pad.c
parent3a8f91466126c97427d7cf0c86c36581662981be (diff)
downloadairport-aefe5f8c1c45f4cdeafe08113953a9f03df3c644.tar.gz
* Split screen from now on is only calling GsDrawList() once. The reason for this is that now DMA is used instead of GPIO for drawenv/dispenv management.
* (PSXSDK internals): incorrect bit shifting was being made on 0xE3 and 0xE4 GPU instructions (drawenv management). * (Bugfix): Timers were not being reset properly because pad1_cheat_timer and pad2_cheat_timer were being accidentally reset to NULL on calling memset() for cheatsArray. * Timers are now updated every 100 ms instead of every second. * Mouse sprite should be now drawn on X_SCREEN_RESOLUTION >> 2 in 2-player mode. TODO: check why this isn't working!
Diffstat (limited to 'Source/Pad.c')
-rw-r--r--Source/Pad.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/Source/Pad.c b/Source/Pad.c
index 2a84304..1606535 100644
--- a/Source/Pad.c
+++ b/Source/Pad.c
@@ -10,7 +10,7 @@
#define PAD_ONE 0
#define PAD_TWO 1
-#define PAD_CHEAT_TIMEOUT 2
+#define PAD_CHEAT_TIMEOUT 20 // 2 units * 100 ms/unit = 2000 ms
#define PAD_MAX_CHEATS 16
/* **************************************
@@ -82,13 +82,13 @@ static uint8_t pad1_keys_repeat[NUMBER_OF_KEYS];
static uint8_t pad2_keys_repeat[NUMBER_OF_KEYS];
// These arrays include last 16 buttons pressed by user and keeps them
// for cheating purposes. They are cleaned if no keys are pressed during
-// PAD_CHEAT_TIMEOUT seconds.
+// PAD_CHEAT_TIMEOUT milliseconds.
static unsigned short pad1_cheat_array[CHEAT_ARRAY_SIZE];
static unsigned short pad2_cheat_array[CHEAT_ARRAY_SIZE];
// Pointers to timers which clean padX_cheat_array.
-static TYPE_TIMER * pad1_cheat_timer;
-static TYPE_TIMER * pad2_cheat_timer;
+static TYPE_TIMER* pad1_cheat_timer;
+static TYPE_TIMER* pad2_cheat_timer;
static TYPE_CHEAT * cheatsArray[PAD_MAX_CHEATS];
@@ -349,7 +349,7 @@ uint8_t PadGetKeyIndex(unsigned short key)
}
}
-unsigned short * PadOneGetAddress(void)
+unsigned short* PadOneGetAddress(void)
{
return &pad1;
}
@@ -367,7 +367,8 @@ void PadInit(void)
{
pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray);
pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray);
- memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS);
+
+ memset(cheatsArray,0, sizeof(cheatsArray));
}
void PadCheatHandler(uint8_t n_pad)
@@ -380,23 +381,23 @@ void PadCheatHandler(uint8_t n_pad)
uint8_t keys_released = 0;
unsigned short key;
uint8_t j;
- bool (*released_callback)(unsigned short);
+ bool (*pressed_callback)(unsigned short);
void (*clean_callback)(void);
bool success = false;
- unsigned short * cheat_array;
- TYPE_TIMER * timer;
+ unsigned short* cheat_array;
+ TYPE_TIMER* timer;
switch(n_pad)
{
case PAD_ONE:
- released_callback = &PadOneKeyReleased;
+ pressed_callback = &PadOneKeySinglePress;
cheat_array = pad1_cheat_array;
clean_callback = &PadOneCleanCheatArray;
timer = pad1_cheat_timer;
break;
case PAD_TWO:
- released_callback = &PadTwoKeyReleased;
+ pressed_callback = &PadTwoKeySinglePress;
cheat_array = pad2_cheat_array;
clean_callback = &PadTwoCleanCheatArray;
timer = pad2_cheat_timer;
@@ -404,7 +405,7 @@ void PadCheatHandler(uint8_t n_pad)
default:
dprintf("Invalid pad called for PadCheatHandler()!\n");
- return;
+ return;
}
for(i = 0; i < PAD_MAX_CHEATS; i++)
@@ -430,7 +431,7 @@ void PadCheatHandler(uint8_t n_pad)
for(i = 0; i < sizeof(available_keys) / sizeof(unsigned short); i++)
{
- if(released_callback(available_keys[i]) == true)
+ if(pressed_callback(available_keys[i]) == true)
{
SystemTimerRestart(timer);
key = available_keys[i];
@@ -490,3 +491,8 @@ void PadTwoCleanCheatArray(void)
{
memset(pad2_cheat_array,0,sizeof(unsigned short) * CHEAT_ARRAY_SIZE);
}
+
+unsigned short* PadGetPlayerOneCheatArray(void)
+{
+ return pad1_cheat_array;
+}