diff options
| author | XaviDCR92 <xavi.dcr@gmail.com> | 2017-05-22 07:06:17 +0200 |
|---|---|---|
| committer | XaviDCR92 <xavi.dcr@gmail.com> | 2017-05-22 07:06:17 +0200 |
| commit | aefe5f8c1c45f4cdeafe08113953a9f03df3c644 (patch) | |
| tree | c7f609ec694a2180237b77c182705a79f81f4725 /Source/Pad.c | |
| parent | 3a8f91466126c97427d7cf0c86c36581662981be (diff) | |
| download | airport-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.c | 32 |
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; +} |
