Small fixes to fix the FBA button 3 mapping for wof clones

As you may find, the CPS drivers of FBA have some small bugs on button mapping for warriors of fate clone games. Here are my fixes to fix the button 3 mapping to them. for libretro-fba(FBA 0.2.97.38): line:1327-1488

static struct BurnInputInfo WofhfhInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Coin” , BIT_DIGITAL , CpsInp177+6, “p3 coin” }, {“P3 Start” , BIT_DIGITAL , CpsInp177+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp177+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp177+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp177+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp177+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp177+4, “p3 fire 1” }, {“P3 Jump” , BIT_DIGITAL , CpsInp177+5, “p3 fire 2” }, {“P3 Fire” , BIT_DIGITAL , CpsInp177+6, “p3 fire 3” },

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Diagnostic” , BIT_DIGITAL , CpsInp018+6, “diag” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip A” , BIT_DIPSWITCH, &Cpi01A , “dip” }, {“Dip B” , BIT_DIPSWITCH, &Cpi01C , “dip” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

STDINPUTINFO(Wofhfh)

static struct BurnInputInfo WofhInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Coin” , BIT_DIGITAL , CpsInp177+6, “p3 coin” }, // doesn’t work in some sets? {“P3 Start” , BIT_DIGITAL , CpsInp177+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp177+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp177+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp177+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp177+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp177+4, “p3 fire 1” }, {“P3 Jump” , BIT_DIGITAL , CpsInp177+5, “p3 fire 2” }, {“P3 Fire” , BIT_DIGITAL , CpsInp177+6, “p3 fire 3” },

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip A” , BIT_DIPSWITCH, &Cpi01A , “dip” }, {“Dip B” , BIT_DIPSWITCH, &Cpi01C , “dip” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

STDINPUTINFO(Wofh)

static struct BurnInputInfo Wof3jsInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Start” , BIT_DIGITAL , CpsInp177+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp177+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp177+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp177+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp177+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp177+4, “p3 fire 1” }, {“P3 Jump” , BIT_DIGITAL , CpsInp177+5, “p3 fire 2” }, {“P3 Fire” , BIT_DIGITAL , CpsInp177+6, “p3 fire 3” },

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip A” , BIT_DIPSWITCH, &Cpi01A , “dip” }, {“Dip B” , BIT_DIPSWITCH, &Cpi01C , “dip” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

STDINPUTINFO(Wof3js)

// don’t know where this one reads config data from (if at all), reads values at 0x80001a, 0x80001e, 0x80001f (but values make no difference) // if I force it to use EEPROM, the config data gets forgotten static struct BurnInputInfo WofsjbInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Coin” , BIT_DIGITAL , CpsInp01B+6, “p3 coin” }, {“P3 Start” , BIT_DIGITAL , CpsInp01B+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp01B+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp01B+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp01B+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp01B+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp01B+4, “p3 fire 1”}, {“P3 Jump” , BIT_DIGITAL , CpsInp01B+5, “p3 fire 2”}, {“P3 Fire” , BIT_DIGITAL , CpsInp01B+6, “p3 fire 3”},

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Diagnostic” , BIT_DIGITAL , CpsInp018+6, “diag” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

Change them to:

static struct BurnInputInfo WofhfhInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire 3” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire 3” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Coin” , BIT_DIGITAL , CpsInp177+6, “p3 coin” }, {“P3 Start” , BIT_DIGITAL , CpsInp177+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp177+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp177+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp177+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp177+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp177+4, “p3 fire 1” }, {“P3 Jump” , BIT_DIGITAL , CpsInp177+5, “p3 fire 2” }, {“P3 Fire 3” , BIT_DIGITAL , CpsInp177+6, “p3 fire 3” },

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Diagnostic” , BIT_DIGITAL , CpsInp018+6, “diag” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip A” , BIT_DIPSWITCH, &Cpi01A , “dip” }, {“Dip B” , BIT_DIPSWITCH, &Cpi01C , “dip” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

STDINPUTINFO(Wofhfh)

static struct BurnInputInfo WofhInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire 3” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire 3” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Coin” , BIT_DIGITAL , CpsInp177+6, “p3 coin” }, // doesn’t work in some sets? {“P3 Start” , BIT_DIGITAL , CpsInp177+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp177+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp177+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp177+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp177+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp177+4, “p3 fire 1” }, {“P3 Jump” , BIT_DIGITAL , CpsInp177+5, “p3 fire 2” }, {“P3 Fire 3” , BIT_DIGITAL , CpsInp177+6, “p3 fire 3” },

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip A” , BIT_DIPSWITCH, &Cpi01A , “dip” }, {“Dip B” , BIT_DIPSWITCH, &Cpi01C , “dip” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

STDINPUTINFO(Wofh)

static struct BurnInputInfo Wof3jsInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire 3” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire 3” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Start” , BIT_DIGITAL , CpsInp177+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp177+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp177+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp177+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp177+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp177+4, “p3 fire 1” }, {“P3 Jump” , BIT_DIGITAL , CpsInp177+5, “p3 fire 2” }, {“P3 Fire 3” , BIT_DIGITAL , CpsInp177+6, “p3 fire 3” },

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip A” , BIT_DIPSWITCH, &Cpi01A , “dip” }, {“Dip B” , BIT_DIPSWITCH, &Cpi01C , “dip” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

STDINPUTINFO(Wof3js)

// don’t know where this one reads config data from (if at all), reads values at 0x80001a, 0x80001e, 0x80001f (but values make no difference) // if I force it to use EEPROM, the config data gets forgotten static struct BurnInputInfo WofsjbInputList[] = { {“P1 Coin” , BIT_DIGITAL , CpsInp018+0, “p1 coin” }, {“P1 Start” , BIT_DIGITAL , CpsInp018+4, “p1 start” }, {“P1 Up” , BIT_DIGITAL , CpsInp001+3, “p1 up” }, {“P1 Down” , BIT_DIGITAL , CpsInp001+2, “p1 down” }, {“P1 Left” , BIT_DIGITAL , CpsInp001+1, “p1 left” }, {“P1 Right” , BIT_DIGITAL , CpsInp001+0, “p1 right” }, {“P1 Attack” , BIT_DIGITAL , CpsInp001+4, “p1 fire 1” }, {“P1 Jump” , BIT_DIGITAL , CpsInp001+5, “p1 fire 2” }, {“P1 Fire 3” , BIT_DIGITAL , CpsInp001+6, “p1 fire 3” },

{“P2 Coin” , BIT_DIGITAL , CpsInp018+1, “p2 coin” }, {“P2 Start” , BIT_DIGITAL , CpsInp018+5, “p2 start” }, {“P2 Up” , BIT_DIGITAL , CpsInp000+3, “p2 up” }, {“P2 Down” , BIT_DIGITAL , CpsInp000+2, “p2 down” }, {“P2 Left” , BIT_DIGITAL , CpsInp000+1, “p2 left” }, {“P2 Right” , BIT_DIGITAL , CpsInp000+0, “p2 right” }, {“P2 Attack” , BIT_DIGITAL , CpsInp000+4, “p2 fire 1” }, {“P2 Jump” , BIT_DIGITAL , CpsInp000+5, “p2 fire 2” }, {“P2 Fire 3” , BIT_DIGITAL , CpsInp000+6, “p2 fire 3” },

{“P3 Coin” , BIT_DIGITAL , CpsInp01B+6, “p3 coin” }, {“P3 Start” , BIT_DIGITAL , CpsInp01B+7, “p3 start” }, {“P3 Up” , BIT_DIGITAL , CpsInp01B+3, “p3 up” }, {“P3 Down” , BIT_DIGITAL , CpsInp01B+2, “p3 down” }, {“P3 Left” , BIT_DIGITAL , CpsInp01B+1, “p3 left” }, {“P3 Right” , BIT_DIGITAL , CpsInp01B+0, “p3 right” }, {“P3 Attack” , BIT_DIGITAL , CpsInp01B+4, “p3 fire 1”}, {“P3 Jump” , BIT_DIGITAL , CpsInp01B+5, “p3 fire 2”}, {“P3 Fire 3” , BIT_DIGITAL , CpsInp01B+6, “p3 fire 3”},

{“Reset” , BIT_DIGITAL , &CpsReset, “reset” }, {“Diagnostic” , BIT_DIGITAL , CpsInp018+6, “diag” }, {“Service” , BIT_DIGITAL , CpsInp018+2, “service” }, {“Dip C” , BIT_DIPSWITCH, &Cpi01E , “dip” }, };

It’s quite simple, just because “P1/2/3 Fire” is not mapped to button 3 in libretro port, so you need to rename it with " 3" to map it to button 3. Same fixes can be do to fba-libretro(0.2.27.30) and fba_cores_cps1. I am not coder, and I do not know how to push this fix to github. So if any developer of libretro see this, please make a push to github .

I’ll take a look this week.