mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-04 14:37:46 -04:00
add support for 4 player inputs
This commit is contained in:
parent
cfb49ab909
commit
25cfdf0a34
3 changed files with 26 additions and 7 deletions
|
@ -92,6 +92,22 @@ void config_write_keys(FILE *f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kbinds = binds[IN_BIND_OFFS(k, IN_BINDTYPE_PLAYER34)];
|
||||||
|
for (i = 0; kbinds && me_ctrl_actions[i].name != NULL; i++) {
|
||||||
|
mask = me_ctrl_actions[i].mask;
|
||||||
|
if (mask & kbinds) {
|
||||||
|
strncpy(act, me_ctrl_actions[i].name, 31);
|
||||||
|
fprintf(f, "bind %s = player3 %s\n", name, mystrip(act));
|
||||||
|
kbinds &= ~mask;
|
||||||
|
}
|
||||||
|
mask = me_ctrl_actions[i].mask << 16;
|
||||||
|
if (mask & kbinds) {
|
||||||
|
strncpy(act, me_ctrl_actions[i].name, 31);
|
||||||
|
fprintf(f, "bind %s = player4 %s\n", name, mystrip(act));
|
||||||
|
kbinds &= ~mask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
kbinds = binds[IN_BIND_OFFS(k, IN_BINDTYPE_EMU)];
|
kbinds = binds[IN_BIND_OFFS(k, IN_BINDTYPE_EMU)];
|
||||||
for (i = 0; kbinds && emuctrl_actions[i].name != NULL; i++) {
|
for (i = 0; kbinds && emuctrl_actions[i].name != NULL; i++) {
|
||||||
mask = emuctrl_actions[i].mask;
|
mask = emuctrl_actions[i].mask;
|
||||||
|
@ -126,12 +142,12 @@ static int parse_bind_val(const char *val, int *type)
|
||||||
int player, shift = 0;
|
int player, shift = 0;
|
||||||
player = atoi(val + 6) - 1;
|
player = atoi(val + 6) - 1;
|
||||||
|
|
||||||
if ((unsigned int)player > 1)
|
if ((unsigned int)player > 3)
|
||||||
return -1;
|
return -1;
|
||||||
if (player == 1)
|
if (player & 1)
|
||||||
shift = 16;
|
shift = 16;
|
||||||
|
|
||||||
*type = IN_BINDTYPE_PLAYER12;
|
*type = IN_BINDTYPE_PLAYER12 + (player >> 1);
|
||||||
for (i = 0; me_ctrl_actions[i].name != NULL; i++) {
|
for (i = 0; me_ctrl_actions[i].name != NULL; i++) {
|
||||||
if (strncasecmp(me_ctrl_actions[i].name, val + 8, strlen(val + 8)) == 0)
|
if (strncasecmp(me_ctrl_actions[i].name, val + 8, strlen(val + 8)) == 0)
|
||||||
return me_ctrl_actions[i].mask << shift;
|
return me_ctrl_actions[i].mask << shift;
|
||||||
|
|
1
input.h
1
input.h
|
@ -70,6 +70,7 @@ enum {
|
||||||
IN_BINDTYPE_NONE = -1,
|
IN_BINDTYPE_NONE = -1,
|
||||||
IN_BINDTYPE_EMU = 0,
|
IN_BINDTYPE_EMU = 0,
|
||||||
IN_BINDTYPE_PLAYER12,
|
IN_BINDTYPE_PLAYER12,
|
||||||
|
IN_BINDTYPE_PLAYER34,
|
||||||
IN_BINDTYPE_COUNT
|
IN_BINDTYPE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
10
menu.c
10
menu.c
|
@ -1319,9 +1319,9 @@ static char *action_binds(int player_idx, int action_mask, int dev_id)
|
||||||
type = IN_BINDTYPE_EMU;
|
type = IN_BINDTYPE_EMU;
|
||||||
if (player_idx >= 0) {
|
if (player_idx >= 0) {
|
||||||
can_combo = 0;
|
can_combo = 0;
|
||||||
type = IN_BINDTYPE_PLAYER12;
|
type = IN_BINDTYPE_PLAYER12 + (player_idx >> 1);
|
||||||
}
|
}
|
||||||
if (player_idx == 1)
|
if (player_idx & 1)
|
||||||
action_mask <<= 16;
|
action_mask <<= 16;
|
||||||
|
|
||||||
if (dev_id >= 0)
|
if (dev_id >= 0)
|
||||||
|
@ -1459,9 +1459,11 @@ static void key_config_loop(const me_bind_action *opts, int opt_cnt, int player_
|
||||||
|
|
||||||
dev_id = -1; // show all
|
dev_id = -1; // show all
|
||||||
mask_shift = 0;
|
mask_shift = 0;
|
||||||
if (player_idx == 1)
|
if (player_idx & 1)
|
||||||
mask_shift = 16;
|
mask_shift = 16;
|
||||||
bindtype = player_idx >= 0 ? IN_BINDTYPE_PLAYER12 : IN_BINDTYPE_EMU;
|
bindtype = IN_BINDTYPE_EMU;
|
||||||
|
if (player_idx >= 0)
|
||||||
|
bindtype = IN_BINDTYPE_PLAYER12 + (player_idx >> 1);
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue