mirror of
https://git.checksum.fail/alec/templenes.git
synced 2026-05-26 16:19:28 +00:00
70 lines
1.2 KiB
HolyC
Executable File
70 lines
1.2 KiB
HolyC
Executable File
// vim: set ft=c:
|
|
|
|
class Joypad {
|
|
U8 pointer;
|
|
U8 button_status[8];
|
|
U8 previous_write;
|
|
};
|
|
|
|
Joypad NES_Joypad;
|
|
|
|
U0 initJoypad(Joypad *joypad) {
|
|
joypad->pointer = 0;
|
|
I64 i;
|
|
for(i=0; i<8; ++i) {
|
|
joypad->button_status[i] = 0;
|
|
}
|
|
joypad->previous_write = 0;
|
|
}
|
|
|
|
U0 handleInput(Joypad *joypad) {
|
|
I64 i;
|
|
for(i=0; i<8; ++i) {
|
|
joypad->button_status[i] = 0;
|
|
}
|
|
if (TG_KeyDown(SC_ALT))
|
|
{
|
|
joypad->button_status[0] = 1; //A
|
|
}
|
|
if (TG_KeyDown(SC_CTRL))
|
|
{
|
|
joypad->button_status[1] = 1; //B
|
|
}
|
|
if (TG_KeyDown(SC_TAB))
|
|
{
|
|
joypad->button_status[2] = 1; //SELECT
|
|
}
|
|
if (TG_KeyDown(SC_ENTER))
|
|
{
|
|
joypad->button_status[3] = 1; //START
|
|
}
|
|
if (TG_KeyDown(SC_CURSOR_UP))
|
|
{
|
|
joypad->button_status[4] = 1; //UP
|
|
}
|
|
if (TG_KeyDown(SC_CURSOR_DOWN))
|
|
{
|
|
joypad->button_status[5] = 1; //DOWN
|
|
}
|
|
if (TG_KeyDown(SC_CURSOR_LEFT))
|
|
{
|
|
joypad->button_status[6] = 1; //LEFT
|
|
}
|
|
if (TG_KeyDown(SC_CURSOR_RIGHT))
|
|
{
|
|
joypad->button_status[7] = 1; //RIGHT
|
|
}
|
|
}
|
|
|
|
U0 writeJoypad(Joypad *joypad, U8 data) {
|
|
if( joypad->previous_write == 1 && data == 0) {
|
|
joypad->pointer = 0;
|
|
}
|
|
joypad->previous_write = data;
|
|
}
|
|
|
|
U8 getNextButton(Joypad *joypad) {
|
|
U8 retval = joypad->button_status[ joypad->pointer++ ];
|
|
joypad->pointer = joypad->pointer % 8;
|
|
return retval;
|
|
} |