UInt8 coinDeviceRead(CoinDevice* coinDev) { if(coinDev->time == 0 && inputEventGetState(EC_C)) { coinDev->time = boardSystemTime(); } if (coinDev->time != 0) { if ((boardSystemTime() - coinDev->time) < boardFrequency() * 2 / 10) { return 0; } coinDev->time = 0; } return 1; }
static UInt8 getKeyState(int row) { UInt8 keyState = 0; switch (row) { case 0: keyState = (inputEventGetState(EC_0 ) << 0) | (inputEventGetState(EC_1 ) << 1) | (inputEventGetState(EC_2 ) << 2) | (inputEventGetState(EC_3 ) << 3) | (inputEventGetState(EC_4 ) << 4) | (inputEventGetState(EC_5 ) << 5) | (inputEventGetState(EC_6 ) << 6) | (inputEventGetState(EC_7 ) << 7); break; case 1: keyState = (inputEventGetState(EC_8 ) << 0) | (inputEventGetState(EC_9 ) << 1) | (inputEventGetState(EC_SEMICOL) << 2) | (inputEventGetState(EC_COLON ) << 3) | (inputEventGetState(EC_COMMA ) << 4) | (inputEventGetState(EC_CIRCFLX) << 5) | (inputEventGetState(EC_PERIOD ) << 6) | (inputEventGetState(EC_DIV ) << 7); break; case 2: keyState = (inputEventGetState(EC_NEG ) << 0) | (inputEventGetState(EC_A ) << 1) | (inputEventGetState(EC_B ) << 2) | (inputEventGetState(EC_C ) << 3) | (inputEventGetState(EC_D ) << 4) | (inputEventGetState(EC_E ) << 5) | (inputEventGetState(EC_F ) << 6) | (inputEventGetState(EC_G ) << 7); break; case 3: keyState = (inputEventGetState(EC_H ) << 0) | (inputEventGetState(EC_I ) << 1) | (inputEventGetState(EC_J ) << 2) | (inputEventGetState(EC_K ) << 3) | (inputEventGetState(EC_L ) << 4) | (inputEventGetState(EC_M ) << 5) | (inputEventGetState(EC_N ) << 6) | (inputEventGetState(EC_O ) << 7); break; case 4: keyState = (inputEventGetState(EC_P ) << 0) | (inputEventGetState(EC_Q ) << 1) | (inputEventGetState(EC_R ) << 2) | (inputEventGetState(EC_S ) << 3) | (inputEventGetState(EC_T ) << 4) | (inputEventGetState(EC_U ) << 5) | (inputEventGetState(EC_V ) << 6) | (inputEventGetState(EC_W ) << 7); break; case 5: keyState = (inputEventGetState(EC_X ) << 0) | (inputEventGetState(EC_Y ) << 1) | (inputEventGetState(EC_Z ) << 2) | (inputEventGetState(EC_AT ) << 3) | (inputEventGetState(EC_BKSLASH) << 4) | (inputEventGetState(EC_LBRACK ) << 5) | (inputEventGetState(EC_BKSPACE) << 6) | (inputEventGetState(EC_UP ) << 7); break; case 6: keyState = (inputEventGetState(EC_LSHIFT ) << 0) | (inputEventGetState(EC_RSHIFT ) << 0) | (inputEventGetState(EC_CTRL ) << 1) | (inputEventGetState(EC_GRAPH ) << 2) | (inputEventGetState(EC_CODE ) << 3) | (inputEventGetState(EC_ESC ) << 4) | (inputEventGetState(EC_STOP ) << 5) | (inputEventGetState(EC_RETURN ) << 6) | (inputEventGetState(EC_LEFT ) << 7); break; case 7: keyState = (inputEventGetState(EC_F1 ) << 0) | (inputEventGetState(EC_F2 ) << 1) | (inputEventGetState(EC_F3 ) << 2) | (inputEventGetState(EC_F4 ) << 3) | (inputEventGetState(EC_F5 ) << 4) | (inputEventGetState(EC_CLS ) << 5) | (inputEventGetState(EC_INS ) << 6) | (inputEventGetState(EC_DOWN ) << 7); break; case 8: keyState = (inputEventGetState(EC_SPACE ) << 0) | (inputEventGetState(EC_TAB ) << 1) | (inputEventGetState(EC_DEL ) << 2) | (inputEventGetState(EC_CAPS ) << 3) | (inputEventGetState(EC_SELECT ) << 4) | (inputEventGetState(EC_PRINT ) << 5) | (inputEventGetState(EC_RIGHT ) << 7); break; case 9: keyState = (inputEventGetState(EC_NUM0 ) << 0) | (inputEventGetState(EC_NUM1 ) << 1) | (inputEventGetState(EC_NUM2 ) << 2) | (inputEventGetState(EC_NUM3 ) << 3) | (inputEventGetState(EC_NUM4 ) << 4) | (inputEventGetState(EC_NUM5 ) << 5) | (inputEventGetState(EC_NUM6 ) << 6) | (inputEventGetState(EC_NUM7 ) << 7); break; case 10: keyState = (inputEventGetState(EC_NUM8 ) << 0) | (inputEventGetState(EC_NUM9 ) << 1) | (inputEventGetState(EC_NUMADD ) << 2) | (inputEventGetState(EC_NUMSUB ) << 3) | (inputEventGetState(EC_NUMMUL ) << 4) | (inputEventGetState(EC_NUMDIV ) << 5) | (inputEventGetState(EC_NUMPER ) << 6) | (inputEventGetState(EC_NUMCOM ) << 7); break; } return ~keyState; }
static UInt16 read(ColecoJoystick* joystick) { UInt8 state = 16; if (joystick->controller == 0) { state = (inputEventGetState(EC_JOY1_UP) << 0) | (inputEventGetState(EC_JOY1_DOWN) << 1) | (inputEventGetState(EC_JOY1_LEFT) << 2) | (inputEventGetState(EC_JOY1_RIGHT) << 3) | (inputEventGetState(EC_JOY1_BUTTON1) << 4) | (inputEventGetState(EC_JOY1_BUTTON2) << 5); } else { state = (inputEventGetState(EC_JOY2_UP) << 0) | (inputEventGetState(EC_JOY2_DOWN) << 1) | (inputEventGetState(EC_JOY2_LEFT) << 2) | (inputEventGetState(EC_JOY2_RIGHT) << 3) | (inputEventGetState(EC_JOY2_BUTTON1) << 4) | (inputEventGetState(EC_JOY2_BUTTON2) << 5); } return ~state; }
static UInt16 read(ColecoSuperAction* joystick) { UInt16 state = 0; if (joystick->controller == 0) { state = (inputEventGetState(EC_JOY1_UP) << 0) | (inputEventGetState(EC_JOY1_DOWN) << 1) | (inputEventGetState(EC_JOY1_LEFT) << 2) | (inputEventGetState(EC_JOY1_RIGHT) << 3) | (inputEventGetState(EC_JOY1_BUTTON1) << 4) | (inputEventGetState(EC_JOY1_BUTTON2) << 5) | (inputEventGetState(EC_JOY1_BUTTON3) << 6) | (inputEventGetState(EC_JOY1_BUTTON4) << 7) | (inputEventGetState(EC_JOY1_WHEELA) << 8) | (inputEventGetState(EC_JOY1_WHEELB) << 9); } else { state = (inputEventGetState(EC_JOY2_UP) << 0) | (inputEventGetState(EC_JOY2_DOWN) << 1) | (inputEventGetState(EC_JOY2_LEFT) << 2) | (inputEventGetState(EC_JOY2_RIGHT) << 3) | (inputEventGetState(EC_JOY2_BUTTON1) << 4) | (inputEventGetState(EC_JOY2_BUTTON2) << 5) | (inputEventGetState(EC_JOY2_BUTTON3) << 6) | (inputEventGetState(EC_JOY2_BUTTON4) << 7) | (inputEventGetState(EC_JOY2_WHEELA) << 8) | (inputEventGetState(EC_JOY2_WHEELB) << 9); } return ~state; }