Famicom Network System controller added
misc fixes to mappers
This commit is contained in:
parent
0b4be4b639
commit
6abfe09caf
|
@ -237,13 +237,8 @@ void Mapper200_Init(CartInfo *info) {
|
||||||
//------------------ Map 201 ---------------------------
|
//------------------ Map 201 ---------------------------
|
||||||
|
|
||||||
static void M201Sync(void) {
|
static void M201Sync(void) {
|
||||||
if (latche & 8) {
|
setprg32(0x8000, latche & 3);
|
||||||
setprg32(0x8000, latche & 3);
|
setchr8(latche & 3);
|
||||||
setchr8(latche & 3);
|
|
||||||
} else {
|
|
||||||
setprg32(0x8000, 0);
|
|
||||||
setchr8(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mapper201_Init(CartInfo *info) {
|
void Mapper201_Init(CartInfo *info) {
|
||||||
|
|
|
@ -47,31 +47,31 @@ static uint8 flash_save=0, flash_state=0, flash_mode=0, flash_bank;
|
||||||
static void (*WLSync)(void);
|
static void (*WLSync)(void);
|
||||||
static void (*WHSync)(void);
|
static void (*WHSync)(void);
|
||||||
|
|
||||||
static INLINE void setfpageptr(int s, uint32 A, uint8 *p) {
|
static INLINE void setfpageptr(int s, uint32 A, uint8 *p) {
|
||||||
uint32 AB = A >> 11;
|
uint32 AB = A >> 11;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
if (p)
|
if (p)
|
||||||
for (x = (s >> 1) - 1; x >= 0; x--) {
|
for (x = (s >> 1) - 1; x >= 0; x--) {
|
||||||
FlashPage[AB + x] = p - A;
|
FlashPage[AB + x] = p - A;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
for (x = (s >> 1) - 1; x >= 0; x--) {
|
for (x = (s >> 1) - 1; x >= 0; x--) {
|
||||||
FlashPage[AB + x] = 0;
|
FlashPage[AB + x] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setfprg16(uint32 A, uint32 V) {
|
void setfprg16(uint32 A, uint32 V) {
|
||||||
if (PRGsize[0] >= 16384) {
|
if (PRGsize[0] >= 16384) {
|
||||||
V &= PRGmask16[0];
|
V &= PRGmask16[0];
|
||||||
setfpageptr(16, A, flashdata ? (&flashdata[V << 14]) : 0);
|
setfpageptr(16, A, flashdata ? (&flashdata[V << 14]) : 0);
|
||||||
} else {
|
} else {
|
||||||
uint32 VA = V << 3;
|
uint32 VA = V << 3;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
for (x = 0; x < 8; x++)
|
for (x = 0; x < 8; x++)
|
||||||
setfpageptr(2, A + (x << 11), flashdata ? (&flashdata[((VA + x) & PRGmask2[0]) << 11]) : 0);
|
setfpageptr(2, A + (x << 11), flashdata ? (&flashdata[((VA + x) & PRGmask2[0]) << 11]) : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void inc_flash_write_count(uint8 bank, uint32 A)
|
void inc_flash_write_count(uint8 bank, uint32 A)
|
||||||
|
|
|
@ -93,6 +93,7 @@ static uint8 HyperShotData=0;
|
||||||
static uint32 MahjongData=0;
|
static uint32 MahjongData=0;
|
||||||
static uint32 FTrainerData=0;
|
static uint32 FTrainerData=0;
|
||||||
static uint8 TopRiderData=0;
|
static uint8 TopRiderData=0;
|
||||||
|
static uint32 FamiNetSysData = 0;
|
||||||
|
|
||||||
static uint8 BWorldData[1+13+1];
|
static uint8 BWorldData[1+13+1];
|
||||||
|
|
||||||
|
@ -104,6 +105,7 @@ static void UpdateHyperShot(void);
|
||||||
static void UpdateMahjong(void);
|
static void UpdateMahjong(void);
|
||||||
static void UpdateFTrainer(void);
|
static void UpdateFTrainer(void);
|
||||||
static void UpdateTopRider(void);
|
static void UpdateTopRider(void);
|
||||||
|
static void UpdateFamiNetSys(void);
|
||||||
|
|
||||||
static uint32 snespad_return[4];
|
static uint32 snespad_return[4];
|
||||||
static uint32 JSreturn=0;
|
static uint32 JSreturn=0;
|
||||||
|
@ -463,6 +465,7 @@ void FCEUD_UpdateInput()
|
||||||
case SIFC_FTRAINERB:
|
case SIFC_FTRAINERB:
|
||||||
case SIFC_FTRAINERA: UpdateFTrainer();break;
|
case SIFC_FTRAINERA: UpdateFTrainer();break;
|
||||||
case SIFC_TOPRIDER: UpdateTopRider();break;
|
case SIFC_TOPRIDER: UpdateTopRider();break;
|
||||||
|
case SIFC_FAMINETSYS: UpdateFamiNetSys(); break;
|
||||||
case SIFC_OEKAKIDS: mouse=true; break;
|
case SIFC_OEKAKIDS: mouse=true; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -566,6 +569,9 @@ void InitInputPorts(bool fourscore)
|
||||||
case SIFC_TOPRIDER:
|
case SIFC_TOPRIDER:
|
||||||
InputDPtr=&TopRiderData;
|
InputDPtr=&TopRiderData;
|
||||||
break;
|
break;
|
||||||
|
case SIFC_FAMINETSYS:
|
||||||
|
InputDPtr = &FamiNetSysData;
|
||||||
|
break;
|
||||||
case SIFC_BWORLD:
|
case SIFC_BWORLD:
|
||||||
InputDPtr=BWorldData;
|
InputDPtr=BWorldData;
|
||||||
break;
|
break;
|
||||||
|
@ -718,6 +724,27 @@ static void UpdateTopRider(void)
|
||||||
TopRiderData|=1<<x;
|
TopRiderData|=1<<x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ButtConfig FamiNetSysButtons[24] =
|
||||||
|
{
|
||||||
|
MK(V),MK(C),MK(X),MK(Z),MK(BL_CURSORUP),MK(BL_CURSORDOWN),MK(BL_CURSORLEFT),MK(BL_CURSORRIGHT),
|
||||||
|
MK(0),MK(1),MK(2),MK(3),MK(4),MK(5),MK(6),MK(7),
|
||||||
|
MK(8),MK(9),MK(ASTERISK),MK(KP_PLUS),MK(KP_DELETE),MK(KP_MINUS),MK(ESCAPE),MK(BACKSPACE)
|
||||||
|
};
|
||||||
|
|
||||||
|
// A B SEL ST * # . C x EndComm
|
||||||
|
// V C X Z * + DEL - x BS
|
||||||
|
|
||||||
|
static void UpdateFamiNetSys(void)
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
FamiNetSysData = 0;
|
||||||
|
for (x = 0; x<24; x++) {
|
||||||
|
if (DTestButton(&FamiNetSysButtons[x]))
|
||||||
|
FamiNetSysData |= 1 << x;
|
||||||
|
}
|
||||||
|
FamiNetSysData &= 0x00BFFFFF; // bit22 must be zero
|
||||||
|
}
|
||||||
|
|
||||||
ButtConfig FTrainerButtons[12]=
|
ButtConfig FTrainerButtons[12]=
|
||||||
{
|
{
|
||||||
MK(O),MK(P),MK(BRACKET_LEFT),
|
MK(O),MK(P),MK(BRACKET_LEFT),
|
||||||
|
|
|
@ -82,8 +82,9 @@ enum ESIFC
|
||||||
SIFC_OEKAKIDS = 12,
|
SIFC_OEKAKIDS = 12,
|
||||||
SIFC_BWORLD = 13,
|
SIFC_BWORLD = 13,
|
||||||
SIFC_TOPRIDER = 14,
|
SIFC_TOPRIDER = 14,
|
||||||
|
SIFC_FAMINETSYS = 15,
|
||||||
|
|
||||||
SIFC_COUNT = SIFC_TOPRIDER
|
SIFC_COUNT = SIFC_FAMINETSYS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,7 +106,8 @@ inline const char* ESIFC_Name(ESIFC esifc)
|
||||||
"Family Trainer B",
|
"Family Trainer B",
|
||||||
"Oeka Kids Tablet",
|
"Oeka Kids Tablet",
|
||||||
"Barcode World",
|
"Barcode World",
|
||||||
"Top Rider"
|
"Top Rider",
|
||||||
|
"Famicom Network Controller"
|
||||||
};
|
};
|
||||||
|
|
||||||
if(esifc >= SIFC_NONE && esifc <= SIFC_COUNT)
|
if(esifc >= SIFC_NONE && esifc <= SIFC_COUNT)
|
||||||
|
|
|
@ -211,6 +211,7 @@ static void SetInput(void) {
|
||||||
{0xb8b9aca3, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Wild Gunman
|
{0xb8b9aca3, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Wild Gunman
|
||||||
{0x5112dc21, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Wild Gunman
|
{0x5112dc21, SI_UNSET, SI_ZAPPER, SIFC_NONE }, // Wild Gunman
|
||||||
{0xaf4010ea, SI_GAMEPAD, SI_POWERPADB, SIFC_UNSET }, // World Class Track Meet
|
{0xaf4010ea, SI_GAMEPAD, SI_POWERPADB, SIFC_UNSET }, // World Class Track Meet
|
||||||
|
{0x67b126b9, SI_GAMEPAD, SI_GAMEPAD, SIFC_FAMINETSYS }, // Famicom Network System
|
||||||
{0x00000000, SI_UNSET, SI_UNSET, SIFC_UNSET }
|
{0x00000000, SI_UNSET, SI_UNSET, SIFC_UNSET }
|
||||||
};
|
};
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
@ -724,7 +725,7 @@ BMAPPINGLocal bmap[] = {
|
||||||
{"F-15 MMC3 Based", 259, BMCF15_Init},
|
{"F-15 MMC3 Based", 259, BMCF15_Init},
|
||||||
{"HP10xx/H20xx Boards", 260, BMCHPxx_Init},
|
{"HP10xx/H20xx Boards", 260, BMCHPxx_Init},
|
||||||
{"810544-CA-1", 261, BMC810544CA1_Init},
|
{"810544-CA-1", 261, BMC810544CA1_Init},
|
||||||
{ "KONAMI QTAi Board", 547, QTAi_Init },
|
{"KONAMI QTAi Board", 547, QTAi_Init },
|
||||||
|
|
||||||
{"", 0, NULL}
|
{"", 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
|
@ -77,6 +77,7 @@ extern INPUTCFC *FCEU_InitFamilyTrainerA(void);
|
||||||
extern INPUTCFC *FCEU_InitFamilyTrainerB(void);
|
extern INPUTCFC *FCEU_InitFamilyTrainerB(void);
|
||||||
extern INPUTCFC *FCEU_InitOekaKids(void);
|
extern INPUTCFC *FCEU_InitOekaKids(void);
|
||||||
extern INPUTCFC *FCEU_InitTopRider(void);
|
extern INPUTCFC *FCEU_InitTopRider(void);
|
||||||
|
extern INPUTCFC *FCEU_InitFamiNetSys(void);
|
||||||
extern INPUTCFC *FCEU_InitBarcodeWorld(void);
|
extern INPUTCFC *FCEU_InitBarcodeWorld(void);
|
||||||
//---------------
|
//---------------
|
||||||
|
|
||||||
|
@ -534,6 +535,9 @@ static void SetInputStuffFC()
|
||||||
case SIFC_TOPRIDER:
|
case SIFC_TOPRIDER:
|
||||||
portFC.driver=FCEU_InitTopRider();
|
portFC.driver=FCEU_InitTopRider();
|
||||||
break;
|
break;
|
||||||
|
case SIFC_FAMINETSYS:
|
||||||
|
portFC.driver = FCEU_InitFamiNetSys();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -688,6 +688,7 @@
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\src\input\cursor.cpp" />
|
<ClCompile Include="..\src\input\cursor.cpp" />
|
||||||
<ClCompile Include="..\src\input\fkb.cpp" />
|
<ClCompile Include="..\src\input\fkb.cpp" />
|
||||||
|
<ClCompile Include="..\src\input\fns.cpp" />
|
||||||
<ClCompile Include="..\src\input\ftrainer.cpp" />
|
<ClCompile Include="..\src\input\ftrainer.cpp" />
|
||||||
<ClCompile Include="..\src\input\hypershot.cpp" />
|
<ClCompile Include="..\src\input\hypershot.cpp" />
|
||||||
<ClCompile Include="..\src\input\mahjong.cpp" />
|
<ClCompile Include="..\src\input\mahjong.cpp" />
|
||||||
|
|
|
@ -1096,6 +1096,9 @@
|
||||||
<ClCompile Include="..\src\drivers\win\header_editor.cpp">
|
<ClCompile Include="..\src\drivers\win\header_editor.cpp">
|
||||||
<Filter>drivers\win</Filter>
|
<Filter>drivers\win</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\src\input\fns.cpp">
|
||||||
|
<Filter>input</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\src\drivers\common\args.h">
|
<ClInclude Include="..\src\drivers\common\args.h">
|
||||||
|
|
Loading…
Reference in New Issue