Hori 4-Player Adapter support
This commit is contained in:
parent
45e9922ff9
commit
bc086823e4
|
@ -85,8 +85,9 @@ enum ESIFC
|
||||||
SIFC_BWORLD = 13,
|
SIFC_BWORLD = 13,
|
||||||
SIFC_TOPRIDER = 14,
|
SIFC_TOPRIDER = 14,
|
||||||
SIFC_FAMINETSYS = 15,
|
SIFC_FAMINETSYS = 15,
|
||||||
|
SIFC_HORI4PLAYER = 16,
|
||||||
|
|
||||||
SIFC_COUNT = SIFC_FAMINETSYS
|
SIFC_COUNT = SIFC_HORI4PLAYER
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +110,8 @@ inline const char* ESIFC_Name(ESIFC esifc)
|
||||||
"Oeka Kids Tablet",
|
"Oeka Kids Tablet",
|
||||||
"Barcode World",
|
"Barcode World",
|
||||||
"Top Rider",
|
"Top Rider",
|
||||||
"Famicom Network Controller"
|
"Famicom Network Controller",
|
||||||
|
"Hori 4-Player Adapter"
|
||||||
};
|
};
|
||||||
|
|
||||||
if(esifc >= SIFC_NONE && esifc <= SIFC_COUNT)
|
if(esifc >= SIFC_NONE && esifc <= SIFC_COUNT)
|
||||||
|
|
|
@ -372,7 +372,39 @@ static void StrobeSNES(int w)
|
||||||
|
|
||||||
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
//--------Hori 4 player driver for expansion port--------
|
||||||
|
static uint8 Hori4ReadBit[2];
|
||||||
|
static void StrobeHori4(void)
|
||||||
|
{
|
||||||
|
Hori4ReadBit[0] = Hori4ReadBit[1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8 ReadHori4(int w, uint8 ret)
|
||||||
|
{
|
||||||
|
ret &= 1;
|
||||||
|
|
||||||
|
if (Hori4ReadBit[w] < 8)
|
||||||
|
{
|
||||||
|
ret |= ((joy[w] >> (Hori4ReadBit[w])) & 1) << 1;
|
||||||
|
}
|
||||||
|
else if (Hori4ReadBit[w] < 16)
|
||||||
|
{
|
||||||
|
ret |= ((joy[2 + w] >> (Hori4ReadBit[w] - 8)) & 1) << 1;
|
||||||
|
}
|
||||||
|
else if (Hori4ReadBit[w] < 24)
|
||||||
|
{
|
||||||
|
ret |= (((w ? 0x10 : 0x20) >> (7 - (Hori4ReadBit[w] - 16))) & 1) << 1;
|
||||||
|
}
|
||||||
|
if (Hori4ReadBit[w] >= 24) ret |= 2;
|
||||||
|
else Hori4ReadBit[w]++;
|
||||||
|
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
static INPUTCFC HORI4C = { ReadHori4,0,StrobeHori4,0,0,0 };
|
||||||
|
//------------------
|
||||||
|
|
||||||
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
static INPUTC GPC={ReadGP,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
static INPUTC GPC={ReadGP,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
||||||
static INPUTC GPCVS={ReadGPVS,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
static INPUTC GPCVS={ReadGPVS,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
||||||
|
@ -544,6 +576,10 @@ static void SetInputStuffFC()
|
||||||
case SIFC_FAMINETSYS:
|
case SIFC_FAMINETSYS:
|
||||||
portFC.driver = FCEU_InitFamiNetSys();
|
portFC.driver = FCEU_InitFamiNetSys();
|
||||||
break;
|
break;
|
||||||
|
case SIFC_HORI4PLAYER:
|
||||||
|
portFC.driver = &HORI4C;
|
||||||
|
memset(&Hori4ReadBit, 0, sizeof(Hori4ReadBit));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue