static void select_setting(menu * menu_obj) { uint64_t state, diff_state, button_was_pressed, i; static uint64_t old_state = 0; state = cell_pad_input_poll_device(0); diff_state = old_state ^ state; button_was_pressed = old_state & diff_state; if(frame_count < special_action_msg_expired) { } else { /* back to ROM menu if CIRCLE is pressed */ if (CTRL_L1(button_was_pressed) || CTRL_CIRCLE(button_was_pressed)) { menuStackindex--; old_state = state; return; } if (CTRL_R1(button_was_pressed)) { switch(menu_obj->enum_id) { case GENERAL_VIDEO_MENU: menuStackindex++; menuStack[menuStackindex] = menu_generalaudiosettings; old_state = state; break; case GENERAL_AUDIO_MENU: menuStackindex++; menuStack[menuStackindex] = menu_emu_settings; old_state = state; break; case EMU_GENERAL_MENU: menuStackindex++; menuStack[menuStackindex] = menu_emu_videosettings; old_state = state; break; case EMU_VIDEO_MENU: menuStackindex++; menuStack[menuStackindex] = menu_emu_audiosettings; old_state = state; break; case EMU_AUDIO_MENU: menuStackindex++; menuStack[menuStackindex] = menu_pathsettings; old_state = state; break; case PATH_MENU: menuStackindex++; menuStack[menuStackindex] = menu_controlssettings; old_state = state; break; case CONTROLS_MENU: break; } } /* down to next setting */ if (CTRL_DOWN(state) || CTRL_LSTICK_DOWN(state)) { menu_obj->selected++; if (menu_obj->selected >= menu_obj->max_settings) menu_obj->selected = menu_obj->first_setting; if (menu_obj->items[menu_obj->selected].page != menu_obj->page) menu_obj->page = menu_obj->items[menu_obj->selected].page; set_text_message("", 7); } /* up to previous setting */ if (CTRL_UP(state) || CTRL_LSTICK_UP(state)) { if (menu_obj->selected == menu_obj->first_setting) menu_obj->selected = menu_obj->max_settings-1; else menu_obj->selected--; if (menu_obj->items[menu_obj->selected].page != menu_obj->page) menu_obj->page = menu_obj->items[menu_obj->selected].page; set_text_message("", 7); } /* if a rom is loaded then resume it */ if (CTRL_L3(state) && CTRL_R3(state)) { if (emulator_initialized) { menu_is_running = 0; is_running = 1; mode_switch = MODE_EMULATION; set_text_message("", 15); } old_state = state; return; } producesettingentry(menu_obj, menu_obj->selected); } display_menubar(menu_obj->enum_id); cellDbgFontDraw(); for ( i = menu_obj->first_setting; i < menu_obj->max_settings; i++) { if(menu_obj->items[i].page == menu_obj->page) { cellDbgFontPuts(menu_obj->items[i].text_xpos, menu_obj->items[i].text_ypos, Emulator_GetFontSize(), menu_obj->selected == menu_obj->items[i].enum_id ? YELLOW : menu_obj->items[i].item_color, menu_obj->items[i].text); cellDbgFontPuts(0.5f, menu_obj->items[i].text_ypos, Emulator_GetFontSize(), menu_obj->items[i].text_color, menu_obj->items[i].setting_text); cellDbgFontDraw(); } } cellDbgFontPuts(0.09f, menu_obj->items[menu_obj->selected].comment_ypos, 0.86f, LIGHTBLUE, menu_obj->items[menu_obj->selected].comment); cellDbgFontPuts(0.09f, 0.91f, Emulator_GetFontSize(), YELLOW, "UP/DOWN - select L3+R3 - resume game X/LEFT/RIGHT - change"); cellDbgFontPuts(0.09f, 0.95f, Emulator_GetFontSize(), YELLOW, "START - default L1/CIRCLE - go back R1 - go forward"); cellDbgFontDraw(); old_state = state; }
//FIXME: Cellframework2 input stuff needs to be changed static int CellinpState(int nCode) { uint32_t numPadsConnected = 0; uint64_t pads_connected = cell_pad_input_pads_connected(); uint64_t new_state_p1 = cell_pad_input_poll_device(0); uint64_t pausemenu_condition = ArcadeJoystick ? (CTRL_SELECT(new_state_p1) && CTRL_START(new_state_p1)) : (CTRL_L2(new_state_p1) && CTRL_R2(new_state_p1) && CTRL_R1(new_state_p1)); if (nCode < 0) return 0; if (DoReset) { if (nCode == FBK_F3) { audio_stop(); is_running = 0; DoReset = false; return 1; } } numPadsConnected = cell_pad_input_pads_connected(); switch (nCode) { case P1_COIN: return CTRL_SELECT(new_state_p1); case P1_START: return CTRL_START(new_state_p1); case P1_UP: return ((CTRL_UP(new_state_p1) | CTRL_LSTICK_UP(new_state_p1)) != 0); case P1_DOWN: return ((CTRL_DOWN(new_state_p1) | CTRL_LSTICK_DOWN(new_state_p1)) != 0); case P1_LEFT: return ((CTRL_LEFT(new_state_p1) | CTRL_LSTICK_LEFT(new_state_p1)) != 0); case P1_RIGHT: return ((CTRL_RIGHT(new_state_p1) | CTRL_LSTICK_RIGHT(new_state_p1)) != 0); case P1_FIRE1: return CTRL_CROSS(new_state_p1); case P1_FIRE2: return CTRL_CIRCLE(new_state_p1); case P1_FIRE3: return CTRL_SQUARE(new_state_p1); case P1_FIRE4: return CTRL_TRIANGLE(new_state_p1); case P1_FIRE5: return CTRL_L1(new_state_p1); case P1_FIRE6: return CTRL_R1(new_state_p1); case 0x88: return CTRL_L2(new_state_p1); case 0x8A: return CTRL_R2(new_state_p1); case 0x3b: return CTRL_L3(new_state_p1); case P1_SERVICE: return CTRL_R3(new_state_p1); case 0x21: return CTRL_R2(new_state_p1); default: break; } if (numPadsConnected > 1) { uint64_t new_state_p2 = cell_pad_input_poll_device(1); switch (nCode) { case P2_COIN: return CTRL_SELECT(new_state_p2); case P2_START: return CTRL_START(new_state_p2); case P2_UP: return ((CTRL_UP(new_state_p2) | CTRL_LSTICK_UP(new_state_p2)) != 0); case P2_DOWN: return ((CTRL_DOWN(new_state_p2) | CTRL_LSTICK_DOWN(new_state_p2)) != 0); case P2_LEFT: return ((CTRL_LEFT(new_state_p2) | CTRL_LSTICK_LEFT(new_state_p2)) != 0); case P2_RIGHT: return ((CTRL_RIGHT(new_state_p2) | CTRL_LSTICK_RIGHT(new_state_p2)) != 0); case P2_FIRE1: return CTRL_CROSS(new_state_p2); case P2_FIRE2: return CTRL_CIRCLE(new_state_p2); case P2_FIRE3: return CTRL_SQUARE(new_state_p2); case P2_FIRE4: return CTRL_TRIANGLE(new_state_p2); case P2_FIRE5: return CTRL_L1(new_state_p2); case P2_FIRE6: return CTRL_R1(new_state_p2); case 0x4088: return CTRL_L2(new_state_p2); case 0x408A: return CTRL_R2(new_state_p2); case 0x408b: return CTRL_L3(new_state_p2); case 0x408c: return CTRL_R3(new_state_p2); } } if (numPadsConnected > 2) { uint64_t new_state_p3 = cell_pad_input_poll_device(2); switch (nCode) { case P3_COIN: return CTRL_SELECT(new_state_p3); case P3_START: return CTRL_START(new_state_p3); case P3_UP: return ((CTRL_UP(new_state_p3) | CTRL_LSTICK_UP(new_state_p3)) != 0); case P3_DOWN: return ((CTRL_DOWN(new_state_p3) | CTRL_LSTICK_DOWN(new_state_p3)) != 0); case P3_LEFT: return ((CTRL_LEFT(new_state_p3) | CTRL_LSTICK_LEFT(new_state_p3)) != 0); case P3_RIGHT: return ((CTRL_RIGHT(new_state_p3) | CTRL_LSTICK_RIGHT(new_state_p3)) != 0); case P3_FIRE1: return CTRL_CROSS(new_state_p3); case P3_FIRE2: return CTRL_CIRCLE(new_state_p3); case P3_FIRE3: return CTRL_SQUARE(new_state_p3); case P3_FIRE4: return CTRL_TRIANGLE(new_state_p3); case P3_FIRE5: return CTRL_L1(new_state_p3); case P3_FIRE6: return CTRL_R1(new_state_p3); case 0x4188: return CTRL_L2(new_state_p3); case 0x418A: return CTRL_R2(new_state_p3); case 0x418b: return CTRL_L3(new_state_p3); case 0x418c: return CTRL_R3(new_state_p3); } } if (numPadsConnected > 3) { uint64_t new_state_p4 = cell_pad_input_poll_device(3); switch (nCode) { case P4_COIN: return CTRL_SELECT(new_state_p4); case P4_START: return CTRL_START(new_state_p4); case P4_UP: return ((CTRL_UP(new_state_p4) | CTRL_LSTICK_UP(new_state_p4)) != 0); case P4_DOWN: return ((CTRL_DOWN(new_state_p4) | CTRL_LSTICK_DOWN(new_state_p4)) != 0); case P4_LEFT: return ((CTRL_LEFT(new_state_p4) | CTRL_LSTICK_LEFT(new_state_p4)) != 0); case P4_RIGHT: return ((CTRL_RIGHT(new_state_p4) | CTRL_LSTICK_RIGHT(new_state_p4)) != 0); case P4_FIRE1: return CTRL_CROSS(new_state_p4); case P4_FIRE2: return CTRL_CIRCLE(new_state_p4); case P4_FIRE3: return CTRL_SQUARE(new_state_p4); case P4_FIRE4: return CTRL_TRIANGLE(new_state_p4); case P4_FIRE5: return CTRL_L1(new_state_p4); case P4_FIRE6: return CTRL_R1(new_state_p4); case 0x4288: return CTRL_L2(new_state_p4); case 0x428A: return CTRL_R2(new_state_p4); case 0x428b: return CTRL_L3(new_state_p4); case 0x428c: return CTRL_R3(new_state_p4); } } return 0; }
static void browser_update(filebrowser_t * b) { static uint64_t old_state = 0; uint64_t state, diff_state, button_was_pressed; state = cell_pad_input_poll_device(0); diff_state = old_state ^ state; button_was_pressed = old_state & diff_state; if(frame_count < special_action_msg_expired) { } else { if (CTRL_LSTICK_DOWN(state)) { if(b->currently_selected < b->file_count-1) { FILEBROWSER_INCREMENT_ENTRY_POINTER(b); set_text_message("", 4); } } if (CTRL_DOWN(state)) { if(b->currently_selected < b->file_count-1) { FILEBROWSER_INCREMENT_ENTRY_POINTER(b); set_text_message("", 7); } } if (CTRL_LSTICK_UP(state)) { if(b->currently_selected > 0) { FILEBROWSER_DECREMENT_ENTRY_POINTER(b); set_text_message("", 4); } } if (CTRL_UP(state)) { if(b->currently_selected > 0) { FILEBROWSER_DECREMENT_ENTRY_POINTER(b); set_text_message("", 7); } } if (CTRL_RIGHT(state)) { b->currently_selected = (MIN(b->currently_selected + 5, b->file_count-1)); set_text_message("", 7); } if (CTRL_LSTICK_RIGHT(state)) { b->currently_selected = (MIN(b->currently_selected + 5, b->file_count-1)); set_text_message("", 4); } if (CTRL_LEFT(state)) { if (b->currently_selected <= 5) b->currently_selected = 0; else b->currently_selected -= 5; set_text_message("", 7); } if (CTRL_LSTICK_LEFT(state)) { if (b->currently_selected <= 5) b->currently_selected = 0; else b->currently_selected -= 5; set_text_message("", 4); } if (CTRL_R1(state)) { b->currently_selected = (MIN(b->currently_selected + NUM_ENTRY_PER_PAGE, b->file_count-1)); set_text_message("", 7); } if (CTRL_R2(state)) { b->currently_selected = (MIN(b->currently_selected + 50, b->file_count-1)); set_text_message("", 7); } if (CTRL_L2(state)) { if (b->currently_selected <= NUM_ENTRY_PER_PAGE) b->currently_selected= 0; else b->currently_selected -= 50; set_text_message("", 7); } if (CTRL_L1(state)) { if (b->currently_selected <= NUM_ENTRY_PER_PAGE) b->currently_selected= 0; else b->currently_selected -= NUM_ENTRY_PER_PAGE; set_text_message("", 7); } if (CTRL_CIRCLE(button_was_pressed)) { old_state = state; filebrowser_pop_directory(b); } if (CTRL_L3(state) && CTRL_R3(state)) { /* if a rom is loaded then resume it */ if (emulator_initialized) { menu_is_running = 0; is_running = 1; mode_switch = MODE_EMULATION; set_text_message("", 15); } } old_state = state; } }