int ui_event(void) { static const unsigned map[] = { RETRO_DEVICE_ID_JOYPAD_UP, RETRO_DEVICE_ID_JOYPAD_DOWN, RETRO_DEVICE_ID_JOYPAD_LEFT, RETRO_DEVICE_ID_JOYPAD_RIGHT, RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, RETRO_DEVICE_ID_JOYPAD_X, RETRO_DEVICE_ID_JOYPAD_Y, RETRO_DEVICE_ID_JOYPAD_L, RETRO_DEVICE_ID_JOYPAD_R }; static const input_key keyb_layout[4][10] = { { INPUT_KEY_1, INPUT_KEY_2, INPUT_KEY_3, INPUT_KEY_4, INPUT_KEY_5, INPUT_KEY_6, INPUT_KEY_7, INPUT_KEY_8, INPUT_KEY_9, INPUT_KEY_0 }, { INPUT_KEY_q, INPUT_KEY_w, INPUT_KEY_e, INPUT_KEY_r, INPUT_KEY_t, INPUT_KEY_y, INPUT_KEY_u, INPUT_KEY_i, INPUT_KEY_o, INPUT_KEY_p }, { INPUT_KEY_a, INPUT_KEY_s, INPUT_KEY_d, INPUT_KEY_f, INPUT_KEY_g, INPUT_KEY_h, INPUT_KEY_j, INPUT_KEY_k, INPUT_KEY_l, INPUT_KEY_Return }, { INPUT_KEY_Shift_L, INPUT_KEY_z, INPUT_KEY_x, INPUT_KEY_c, INPUT_KEY_v, INPUT_KEY_b, INPUT_KEY_n, INPUT_KEY_m, INPUT_KEY_Shift_R, INPUT_KEY_space } }; //log_cb( RETRO_LOG_DEBUG, "%s\n", __FUNCTION__ ); if (keyb_send != 0 && perf_cb.get_time_usec() >= keyb_send) { keyb_event.type = INPUT_EVENT_KEYRELEASE; input_event(&keyb_event); keyb_send = 0; } int16_t is_down = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); if (is_down) { if (!select_pressed) { select_pressed = true; keyb_overlay = !keyb_overlay; } } else { select_pressed = false; } if (!keyb_overlay) { unsigned port, id; input_event_t fuse_event; for (port = 0; port < MAX_PADS; port++) { for (id = 0; id < sizeof(map) / sizeof(map[0]); id++) { unsigned device = input_devices[port] & RETRO_DEVICE_MASK; if (device == RETRO_DEVICE_JOYPAD) { is_down = input_state_cb(port, RETRO_DEVICE_JOYPAD, 0, map[id]); if (is_down) { if (!joypad_state[port][id]) { joypad_state[port][id] = true; input_key button = translate(map[id]); if (button == INPUT_KEY_Return || button == INPUT_KEY_space) { fuse_event.type = INPUT_EVENT_KEYPRESS; fuse_event.types.key.native_key = button; fuse_event.types.key.spectrum_key = button; input_event(&fuse_event); } else if (button != INPUT_KEY_NONE) { fuse_event.type = INPUT_EVENT_JOYSTICK_PRESS; fuse_event.types.joystick.which = port; fuse_event.types.joystick.button = button; input_event(&fuse_event); } } } else { if (joypad_state[port][id]) { joypad_state[port][id] = false; input_key button = translate(map[id]); if (button == INPUT_KEY_Return || button == INPUT_KEY_space) { fuse_event.type = INPUT_EVENT_KEYRELEASE; fuse_event.types.key.native_key = button; fuse_event.types.key.spectrum_key = button; input_event(&fuse_event); } else if (button != INPUT_KEY_NONE) { fuse_event.type = INPUT_EVENT_JOYSTICK_RELEASE; fuse_event.types.joystick.which = port; fuse_event.types.joystick.button = button; input_event(&fuse_event); } } } } } } for (port = 0; port < MAX_PADS; port++) { for (id = 0; keysyms_map[id].ui; id++) { unsigned device = input_devices[port] & RETRO_DEVICE_MASK; if (device == RETRO_DEVICE_KEYBOARD) { unsigned ui = keysyms_map[id].ui; is_down = input_state_cb(port, RETRO_DEVICE_KEYBOARD, 0, ui); if (is_down) { if (!keyb_state[ui]) { keyb_state[ui] = true; fuse_event.type = INPUT_EVENT_KEYPRESS; fuse_event.types.key.native_key = keysyms_map[id].fuse; fuse_event.types.key.spectrum_key = keysyms_map[id].fuse; input_event(&fuse_event); } } else { if (keyb_state[ui]) { keyb_state[ui] = false; fuse_event.type = INPUT_EVENT_KEYRELEASE; fuse_event.types.key.native_key = keysyms_map[id].fuse; fuse_event.types.key.spectrum_key = keysyms_map[id].fuse; input_event(&fuse_event); } } } } } } else { unsigned port, id; for (port = 0; port < MAX_PADS; port++) { for (id = 0; id < sizeof(map) / sizeof(map[0]); id++) { unsigned device = input_devices[port] & RETRO_DEVICE_MASK; if (device == RETRO_DEVICE_JOYPAD) { is_down = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, map[id]); if (is_down) { if (!joypad_state[0][id]) { joypad_state[0][id] = true; switch (map[id]) { case RETRO_DEVICE_ID_JOYPAD_UP: keyb_y = (keyb_y - 1) & 3; break; case RETRO_DEVICE_ID_JOYPAD_DOWN: keyb_y = (keyb_y + 1) & 3; break; case RETRO_DEVICE_ID_JOYPAD_LEFT: keyb_x = keyb_x == 0 ? 9 : keyb_x - 1; break; case RETRO_DEVICE_ID_JOYPAD_RIGHT: keyb_x = keyb_x == 9 ? 0 : keyb_x + 1; break; case RETRO_DEVICE_ID_JOYPAD_A: if (keyb_send == 0) { keyb_overlay = false; keyb_event.type = INPUT_EVENT_KEYPRESS; keyb_event.types.key.native_key = keyb_layout[keyb_y][keyb_x]; keyb_event.types.key.spectrum_key = keyb_layout[keyb_y][keyb_x]; input_event(&keyb_event); keyb_send = perf_cb.get_time_usec() + keyb_hold_time; } return 0; } } } else { if (joypad_state[0][id]) { joypad_state[0][id] = false; } } } } } } return 0; }
void retro_poll_mame_input() { //Mouse #if 0 static int mbL=0,mbR=0; int mouse_l; int mouse_r; int16_t mouse_x; int16_t mouse_y; #endif input_poll_cb(); #if 0 mouse_x = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_X); mouse_y = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_Y); mouse_l = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_LEFT); mouse_r = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_RIGHT); if(mouse_enabled) { mouseLX=mouse_x*INPUT_RELATIVE_PER_PIXEL;; mouseLY=mouse_y*INPUT_RELATIVE_PER_PIXEL;; if(mbL==0 && mouse_l) { mbL=1; mouseBUT[0]=0x80; } else if(mbL==1 && !mouse_l) { mouseBUT[0]=0; mbL=0; } if(mbR==0 && mouse_r) { mbR=1; mouseBUT[1]=1; } else if(mbR==1 && !mouse_r) { mouseBUT[1]=0; mbR=0; } } #endif P1_state[KEY_TAB] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2); P1_state[KEY_ENTER] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2); P1_state[KEY_START] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START); P1_state[KEY_COIN] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); P1_state[KEY_BUTTON_1] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); P1_state[KEY_BUTTON_2] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B); P1_state[KEY_BUTTON_3] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X); P1_state[KEY_BUTTON_4] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y); P1_state[KEY_BUTTON_5] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L); P1_state[KEY_BUTTON_6] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R); P1_state[KEY_JOYSTICK_U] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP); P1_state[KEY_JOYSTICK_D] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN); P1_state[KEY_JOYSTICK_L] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT); P1_state[KEY_JOYSTICK_R] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT); P2_state[KEY_TAB] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2); P2_state[KEY_ENTER] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2); P2_state[KEY_START] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START); P2_state[KEY_COIN] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); P2_state[KEY_BUTTON_1] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); P2_state[KEY_BUTTON_2] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B); P2_state[KEY_BUTTON_3] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X); P2_state[KEY_BUTTON_4] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y); P2_state[KEY_BUTTON_5] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L); P2_state[KEY_BUTTON_6] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R); P2_state[KEY_JOYSTICK_U] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP); P2_state[KEY_JOYSTICK_D] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN); P2_state[KEY_JOYSTICK_L] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT); P2_state[KEY_JOYSTICK_R] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT); }
void retro_poll_mame_input() { int i=0,j; input_poll_cb(); if (mouse_enable) { //MOUSE static int mbL=0,mbR=0; int mouse_l; int mouse_r; int16_t mouse_x; int16_t mouse_y; mouse_x = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_X); mouse_y = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_Y); mouse_l = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_LEFT); mouse_r = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_RIGHT); mouseLX=mouse_x*INPUT_RELATIVE_PER_PIXEL;; mouseLY=mouse_y*INPUT_RELATIVE_PER_PIXEL;; if(mbL==0 && mouse_l) { mbL=1; mouseBUT[0]=0x80; } else if(mbL==1 && !mouse_l) { mouseBUT[0]=0; mbL=0; } if(mbR==0 && mouse_r) { mbR=1; mouseBUT[1]=1; } else if(mbR==1 && !mouse_r) { mouseBUT[1]=0; mbR=0; } } //KBD //TODO: handle mods:SHIFT/CTRL/ALT/META/NUMLOCK/CAPSLOCK/SCROLLOCK i=0; do{ retrokbd_state[ktable[i].retro_key_name]=input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0,ktable[i].retro_key_name)?0x80:0; if(retrokbd_state[ktable[i].retro_key_name] && retrokbd_state2[ktable[i].retro_key_name]==0){ ui_ipt_pushchar=ktable[i].retro_key_name; retrokbd_state2[ktable[i].retro_key_name]=1; } else if(!retrokbd_state[ktable[i].retro_key_name] && retrokbd_state2[ktable[i].retro_key_name]==1) retrokbd_state2[ktable[i].retro_key_name]=0; i++; }while(ktable[i].retro_key_name!=-1); //JOY/PAD for(j=0;j<4;j++){ for(i=0;i<MAX_BUTTONS;i++) joystate[j].button[i] = input_state_cb(j, RETRO_DEVICE_JOYPAD, 0,i)?0x80:0; joystate[j].a1[0] = 2*(input_state_cb(j, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X)); joystate[j].a1[1] = 2*(input_state_cb(j, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y)); joystate[j].a2[0] = 2*(input_state_cb(j, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X)); joystate[j].a2[1] = 2*(input_state_cb(j, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y)); } }
void retro_poll_mame_input() { input_poll_cb(); if (mouse_enable) { static int mbL=0,mbR=0; int mouse_l; int mouse_r; int16_t mouse_x; int16_t mouse_y; mouse_x = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_X); mouse_y = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_Y); mouse_l = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_LEFT); mouse_r = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_RIGHT); mouseLX=mouse_x*INPUT_RELATIVE_PER_PIXEL;; mouseLY=mouse_y*INPUT_RELATIVE_PER_PIXEL;; if(mbL==0 && mouse_l) { mbL=1; mouseBUT[0]=0x80; } else if(mbL==1 && !mouse_l) { mouseBUT[0]=0; mbL=0; } if(mbR==0 && mouse_r) { mbR=1; mouseBUT[1]=1; } else if(mbR==1 && !mouse_r) { mouseBUT[1]=0; mbR=0; } } P1_state[KEY_TAB] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2); P1_state[KEY_ENTER] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2); P1_state[KEY_START] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START); P1_state[KEY_COIN] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); P1_state[KEY_BUTTON_1] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); P1_state[KEY_BUTTON_2] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B); P1_state[KEY_BUTTON_3] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X); P1_state[KEY_BUTTON_4] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y); P1_state[KEY_BUTTON_5] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L); P1_state[KEY_BUTTON_6] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R); P1_state[KEY_JOYSTICK_U] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP); P1_state[KEY_JOYSTICK_D] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN); P1_state[KEY_JOYSTICK_L] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT); P1_state[KEY_JOYSTICK_R] = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT); P2_state[KEY_TAB] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2); P2_state[KEY_ENTER] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2); P2_state[KEY_START] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START); P2_state[KEY_COIN] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); P2_state[KEY_BUTTON_1] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); P2_state[KEY_BUTTON_2] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B); P2_state[KEY_BUTTON_3] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X); P2_state[KEY_BUTTON_4] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y); P2_state[KEY_BUTTON_5] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L); P2_state[KEY_BUTTON_6] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R); P2_state[KEY_JOYSTICK_U] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP); P2_state[KEY_JOYSTICK_D] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN); P2_state[KEY_JOYSTICK_L] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT); P2_state[KEY_JOYSTICK_R] = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT); int i=0; do { retrokbd_state[ktable[i].retro_key_name]=input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0,ktable[i].retro_key_name); if(retrokbd_state[ktable[i].retro_key_name] && retrokbd_state2[ktable[i].retro_key_name]==0) { ui_ipt_pushchar=ktable[i].retro_key_name; retrokbd_state2[ktable[i].retro_key_name]=1; } else if(!retrokbd_state[ktable[i].retro_key_name] && retrokbd_state2[ktable[i].retro_key_name]==1) retrokbd_state2[ktable[i].retro_key_name]=0; i++; } while(ktable[i].retro_key_name!=-1); }
void retro_run(void) { input_poll_cb(); ks1.up = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP); ks1.right = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT); ks1.down = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN); ks1.left = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT); ks1.start = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START); ks1.select = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); ks1.a = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); ks1.b = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B); ks1.x = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X); ks1.y = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y); ks2.up = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP); ks2.right = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT); ks2.down = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN); ks2.left = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT); ks2.start = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START); ks2.select = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); ks2.a = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A); ks2.b = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B); ks2.x = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X); ks2.y = input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y); render_game(); }