// Set up controllers based on their type (zapper, gamepad, etc.) // For more info, see setInputFC, which sets the JSreturn variable void InitOtherInput(void) { void *InputDPtr; int t; int x; int attrib; for(t=0,x=0;x<2;x++) // For both controllers... { attrib=0; InputDPtr=0; switch(InputType[x]) // Switch on controller type { case SI_POWERPADA: case SI_POWERPADB:InputDPtr=&powerpadbuf[x];break; case SI_GAMEPAD: InputDPtr=&JSreturn; // JSreturn is a global that contains a map of keys and their pressed state // DEBUG -- YES, like we want, we hit this for both controllers break; case SI_ARKANOID:InputDPtr=MouseData;t|=1;break; case SI_ZAPPER:InputDPtr=MouseData; t|=1; attrib=1; break; } FCEUI_SetInput(x,InputType[x],InputDPtr,attrib); // Just updates pointers in Driver's input.c. Example call FCEUI_SetInput(0, SI_GAMEPAD, &JSreturn, 0); } attrib=0; InputDPtr=0; switch(InputType[2]) // Switch on game-specific settings { case SIFC_SHADOW:InputDPtr=MouseData;t|=1;attrib=1;break; case SIFC_OEKAKIDS:InputDPtr=MouseData;t|=1;attrib=1;break; case SIFC_ARKANOID:InputDPtr=MouseData;t|=1;break; case SIFC_FKB:InputDPtr=fkbkeys;break; case SIFC_HYPERSHOT:InputDPtr=&HyperShotData;break; case SIFC_MAHJONG:InputDPtr=&MahjongData;break; case SIFC_QUIZKING:InputDPtr=&QuizKingData;break; case SIFC_TOPRIDER:InputDPtr=&TopRiderData;break; case SIFC_BWORLD:InputDPtr=BWorldData;break; case SIFC_FTRAINERA: case SIFC_FTRAINERB:InputDPtr=&FTrainerData;break; } FCEUI_SetInputFC(InputType[2],InputDPtr,attrib); FCEUI_DisableFourScore(eoptions&EO_NOFOURSCORE); if(t) InitMouse(); }
void InputScreenChanged(int fs) { int x; if (GI) { for (x = 0; x < 2; x++) { if (InputType[x] == SI_ZAPPER) FCEUI_SetInput(x, SI_ZAPPER, MouseData, fs); if (InputType[x] == SI_MOUSE) FCEUI_SetInput(x, SI_MOUSE, MouseData, fs); } if (InputType[2] == SIFC_SHADOW) FCEUI_SetInputFC(SIFC_SHADOW, MouseData, fs); } screenmode = fs; }
void InitOtherInput(void) { void *InputDPtr; int t; int x; int attrib; for(t=0,x=0;x<2;x++) { attrib=0; InputDPtr=0; switch(InputType[x]) { case SI_POWERPADA: case SI_POWERPADB:InputDPtr=&powerpadbuf[x];break; case SI_GAMEPAD:InputDPtr=&JSreturn;break; case SI_ARKANOID:InputDPtr=MouseData;t|=1;break; case SI_ZAPPER:InputDPtr=MouseData; t|=1; attrib=1; break; } FCEUI_SetInput(x,InputType[x],InputDPtr,attrib); } attrib=0; InputDPtr=0; switch(InputType[2]) { case SIFC_SHADOW:InputDPtr=MouseData;t|=1;attrib=1;break; case SIFC_OEKAKIDS:InputDPtr=MouseData;t|=1;attrib=1;break; case SIFC_ARKANOID:InputDPtr=MouseData;t|=1;break; case SIFC_FKB:InputDPtr=fkbkeys;break; case SIFC_HYPERSHOT:InputDPtr=&HyperShotData;break; case SIFC_MAHJONG:InputDPtr=&MahjongData;break; case SIFC_QUIZKING:InputDPtr=&QuizKingData;break; case SIFC_TOPRIDER:InputDPtr=&TopRiderData;break; case SIFC_BWORLD:InputDPtr=BWorldData;break; case SIFC_FTRAINERA: case SIFC_FTRAINERB:InputDPtr=&FTrainerData;break; } FCEUI_SetInputFC(InputType[2],InputDPtr,attrib); FCEUI_DisableFourScore(eoptions&EO_NOFOURSCORE); if(t) InitMouse(); }
//Initializes the emulator with the current input port configuration void InitInputPorts(bool fourscore) { void *InputDPtr; int attrib; if(fourscore) { FCEUI_SetInput(0,SI_GAMEPAD,&JSreturn,0); FCEUI_SetInput(1,SI_GAMEPAD,&JSreturn,0); } else { for(int i=0;i<2;i++) { attrib=0; InputDPtr=0; switch(InputType[i]) { case SI_POWERPADA: case SI_POWERPADB: InputDPtr=&powerpadbuf[i]; break; case SI_GAMEPAD: InputDPtr=&JSreturn; break; case SI_ARKANOID: InputDPtr=MouseData; break; case SI_ZAPPER: InputDPtr=MouseData; break; case SI_MOUSE: InputDPtr=MouseData; break; case SI_SNES_MOUSE: InputDPtr=MouseData; break; case SI_SNES: InputDPtr=snespad_return; break; } FCEUI_SetInput(i,(ESI)InputType[i],InputDPtr,attrib); } } FCEUI_SetInputFourscore(fourscore); attrib=0; InputDPtr=0; switch(InputType[2]) { case SIFC_SHADOW: InputDPtr=MouseData; break; case SIFC_OEKAKIDS: InputDPtr=MouseData; break; case SIFC_ARKANOID: InputDPtr=MouseData; break; case SIFC_FKB: InputDPtr=fkbkeys; break; case SIFC_PEC586KB: case SIFC_SUBORKB: InputDPtr=suborkbkeys; break; case SIFC_HYPERSHOT: InputDPtr=&HyperShotData; break; case SIFC_MAHJONG: InputDPtr=&MahjongData; break; case SIFC_QUIZKING: InputDPtr=&QuizKingData; break; case SIFC_TOPRIDER: InputDPtr=&TopRiderData; break; case SIFC_BWORLD: InputDPtr=BWorldData; break; case SIFC_FTRAINERA: case SIFC_FTRAINERB: InputDPtr=&FTrainerData; break; } FCEUI_SetInputFC((ESIFC)InputType[2],InputDPtr,attrib); }