MCPcopy Create free account
hub / github.com/RPCSX/rpcsx / reset_controller

Method reset_controller

ps3fw/cellGem.cpp:452–550  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

450 }
451
452 void reset_controller(u32 gem_num)
453 {
454 if (gem_num >= CELL_GEM_MAX_NUM)
455 {
456 return;
457 }
458
459 gem_controller& controller = ::at32(controllers, gem_num);
460 controller = {};
461 controller.sphere_rgb = gem_color::get_default_color(gem_num);
462
463 bool is_connected = false;
464
465 switch (g_cfg.io.move)
466 {
467 case move_handler::real:
468 {
469 connected_controllers = 0;
470 std::lock_guard lock(pad::g_pad_mutex);
471 const auto handler = pad::get_pad_thread();
472 for (u32 i = 0; i < std::min<u32>(attribute.max_connect, CELL_GEM_MAX_NUM); i++)
473 {
474 const auto& pad = ::at32(handler->GetPads(), pad_num(i));
475 if (pad && pad->m_pad_handler == pad_handler::move && (pad->m_port_status & CELL_PAD_STATUS_CONNECTED))
476 {
477 connected_controllers++;
478
479 if (gem_num == i)
480 {
481 pad->move_data.magnetometer_enabled = controller.enabled_magnetometer;
482 is_connected = true;
483 }
484 }
485 }
486 break;
487 }
488 case move_handler::fake:
489 {
490 connected_controllers = 0;
491 std::lock_guard lock(pad::g_pad_mutex);
492 const auto handler = pad::get_pad_thread();
493 for (u32 i = 0; i < std::min<u32>(attribute.max_connect, CELL_GEM_MAX_NUM); i++)
494 {
495 const auto& pad = ::at32(handler->GetPads(), pad_num(i));
496 if (pad && (pad->m_port_status & CELL_PAD_STATUS_CONNECTED))
497 {
498 connected_controllers++;
499
500 if (gem_num == i)
501 {
502 is_connected = true;
503 }
504 }
505 }
506 break;
507 }
508 case move_handler::mouse:
509 case move_handler::raw_mouse:

Callers 2

cellGemInitFunction · 0.80
cellGemResetFunction · 0.80

Calls 6

get_pad_threadFunction · 0.85
pad_numFunction · 0.85
port_numFunction · 0.85
get_num_gunsMethod · 0.80
InitMethod · 0.45
initMethod · 0.45

Tested by

no test coverage detected