Automatically use the NES 2.0 Expansion Device field to select input devices. Retain CRC-based detection when that information is not available.
This commit is contained in:
committed by
LibretroAdmin
parent
cc4aa99507
commit
a4a98006cf
27
src/ines.c
27
src/ines.c
@@ -204,6 +204,32 @@ static void SetInput(void) {
|
|||||||
};
|
};
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
|
||||||
|
switch(head.ExpDevice) {
|
||||||
|
case 0x03: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_4PLAYER; break;
|
||||||
|
case 0x08: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_ZAPPER; GameInfo->inputfc =SIFC_NONE; break;
|
||||||
|
case 0x0A: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_SHADOW; break;
|
||||||
|
case 0x0B: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_POWERPADB; GameInfo->inputfc =SIFC_NONE; break;
|
||||||
|
case 0x0C: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_POWERPADB; GameInfo->inputfc =SIFC_NONE; break;
|
||||||
|
case 0x0D: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_FTRAINERA; break;
|
||||||
|
case 0x0E: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_FTRAINERB; break;
|
||||||
|
case 0x0F: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_ARKANOID; GameInfo->inputfc =SIFC_NONE; break;
|
||||||
|
case 0x10: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_ARKANOID; break;
|
||||||
|
case 0x12: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_HYPERSHOT; break;
|
||||||
|
case 0x15: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_MAHJONG; break;
|
||||||
|
case 0x16: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_QUIZKING; break;
|
||||||
|
case 0x17: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_OEKAKIDS; break;
|
||||||
|
case 0x18: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_BWORLD; break;
|
||||||
|
case 0x1A: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_FTRAINERA; break;
|
||||||
|
case 0x1B: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_TOPRIDER; break;
|
||||||
|
case 0x23: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_FKB; break;
|
||||||
|
case 0x24: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_PEC586KB; break;
|
||||||
|
case 0x26: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_SUBORKB; break;
|
||||||
|
case 0x27: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_MOUSE; GameInfo->inputfc =SIFC_SUBORKB; break;
|
||||||
|
case 0x28: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_SUBORKB; break;
|
||||||
|
case 0x2A: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_ZAPPER; GameInfo->inputfc =SIFC_NONE; break; /* Emulate "multicart" simply as "Zapper" */
|
||||||
|
case 0x36: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_SUBORKB; break;
|
||||||
|
case 0x40: GameInfo->input[0] =SI_GAMEPAD; GameInfo->input[1] =SI_GAMEPAD; GameInfo->inputfc =SIFC_SUBORKB; break;
|
||||||
|
default:
|
||||||
while (moo[x].input1 >= 0 || moo[x].input2 >= 0 || moo[x].inputfc >= 0) {
|
while (moo[x].input1 >= 0 || moo[x].input2 >= 0 || moo[x].inputfc >= 0) {
|
||||||
if (moo[x].crc32 == iNESCart.CRC32) {
|
if (moo[x].crc32 == iNESCart.CRC32) {
|
||||||
GameInfo->input[0] = moo[x].input1;
|
GameInfo->input[0] = moo[x].input1;
|
||||||
@@ -213,6 +239,7 @@ static void SetInput(void) {
|
|||||||
}
|
}
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define INESB_INCOMPLETE 1
|
#define INESB_INCOMPLETE 1
|
||||||
|
|||||||
Reference in New Issue
Block a user