mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-05 22:41:25 +12:00
cellGem: improve hue handling
This commit is contained in:
parent
fd29382290
commit
0c68a6afdd
2 changed files with 41 additions and 4 deletions
|
@ -939,7 +939,7 @@ error_code cellGemGetTrackerHue(u32 gem_num, vm::ptr<u32> hue)
|
||||||
|
|
||||||
if (!gem.controllers[gem_num].enabled_tracking || gem.controllers[gem_num].hue > 359)
|
if (!gem.controllers[gem_num].enabled_tracking || gem.controllers[gem_num].hue > 359)
|
||||||
{
|
{
|
||||||
return CELL_GEM_ERROR_NOT_A_HUE;
|
return { CELL_GEM_ERROR_NOT_A_HUE, gem.controllers[gem_num].hue };
|
||||||
}
|
}
|
||||||
|
|
||||||
*hue = gem.controllers[gem_num].hue;
|
*hue = gem.controllers[gem_num].hue;
|
||||||
|
@ -1220,14 +1220,42 @@ error_code cellGemTrackHues(vm::cptr<u32> req_hues, vm::ptr<u32> res_hues)
|
||||||
|
|
||||||
for (u32 i = 0; i < CELL_GEM_MAX_NUM; i++)
|
for (u32 i = 0; i < CELL_GEM_MAX_NUM; i++)
|
||||||
{
|
{
|
||||||
if (req_hues[i] == u32{CELL_GEM_DONT_CARE_HUE})
|
if (req_hues[i] == CELL_GEM_DONT_CARE_HUE)
|
||||||
{
|
{
|
||||||
|
gem.controllers[i].enabled_tracking = true;
|
||||||
|
gem.controllers[i].enabled_LED = true;
|
||||||
|
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case 0:
|
||||||
|
gem.controllers[i].hue = 240; // blue
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
gem.controllers[i].hue = 0; // red
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
gem.controllers[i].hue = 120; // green
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
gem.controllers[i].hue = 300; // purple
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res_hues)
|
||||||
|
{
|
||||||
|
res_hues[i] = gem.controllers[i].hue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (req_hues[i] == u32{CELL_GEM_DONT_TRACK_HUE})
|
else if (req_hues[i] == CELL_GEM_DONT_TRACK_HUE)
|
||||||
{
|
{
|
||||||
gem.controllers[i].enabled_tracking = false;
|
gem.controllers[i].enabled_tracking = false;
|
||||||
gem.controllers[i].enabled_LED = false;
|
gem.controllers[i].enabled_LED = false;
|
||||||
|
|
||||||
|
if (res_hues)
|
||||||
|
{
|
||||||
|
res_hues[i] = CELL_GEM_DONT_TRACK_HUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1235,6 +1263,15 @@ error_code cellGemTrackHues(vm::cptr<u32> req_hues, vm::ptr<u32> res_hues)
|
||||||
{
|
{
|
||||||
cellGem.warning("cellGemTrackHues: req_hues[%d]=%d -> this can lead to unexpected behavior", i, req_hues[i]);
|
cellGem.warning("cellGemTrackHues: req_hues[%d]=%d -> this can lead to unexpected behavior", i, req_hues[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gem.controllers[i].enabled_tracking = true;
|
||||||
|
gem.controllers[i].enabled_LED = true;
|
||||||
|
gem.controllers[i].hue = req_hues[i];
|
||||||
|
|
||||||
|
if (res_hues)
|
||||||
|
{
|
||||||
|
res_hues[i] = gem.controllers[i].hue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ enum
|
||||||
};
|
};
|
||||||
|
|
||||||
// Special values for cellGemTrackHues.
|
// Special values for cellGemTrackHues.
|
||||||
enum
|
enum : u32
|
||||||
{
|
{
|
||||||
CELL_GEM_DONT_TRACK_HUE = 2 << 24,
|
CELL_GEM_DONT_TRACK_HUE = 2 << 24,
|
||||||
CELL_GEM_DONT_CARE_HUE = 4 << 24,
|
CELL_GEM_DONT_CARE_HUE = 4 << 24,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue