@@ -348,7 +348,7 @@ static void StateRestore(int version) {
|
|||||||
|
|
||||||
static DECLFR(ReadLow) {
|
static DECLFR(ReadLow) {
|
||||||
switch (A & 0x7700) {
|
switch (A & 0x7700) {
|
||||||
case 0x5100: return reg[2] | reg[0] | reg[1] | reg[3] ^ 0xff; break;
|
case 0x5100: return reg[2] | reg[0] | reg[1] | (reg[3] ^ 0xff); break;
|
||||||
case 0x5500:
|
case 0x5500:
|
||||||
if (trigger)
|
if (trigger)
|
||||||
return reg[2] | reg[1]; // Lei Dian Huang Bi Ka Qiu Chuan Shuo (NJ046) may broke other games
|
return reg[2] | reg[1]; // Lei Dian Huang Bi Ka Qiu Chuan Shuo (NJ046) may broke other games
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ static uint64 CartList[] =
|
|||||||
|
|
||||||
int DetectPRGbonus(CartInfo *tmp) {
|
int DetectPRGbonus(CartInfo *tmp) {
|
||||||
int x, i = 0;
|
int x, i = 0;
|
||||||
uint64 partialmd5;
|
uint64 partialmd5 = 0;
|
||||||
|
|
||||||
for (x = 0; x < 8; x++)
|
for (x = 0; x < 8; x++)
|
||||||
partialmd5 |= (uint64)tmp->MD5[15 - x] << (x * 8);
|
partialmd5 |= (uint64)tmp->MD5[15 - x] << (x * 8);
|
||||||
|
|||||||
@@ -733,7 +733,6 @@ void retro_get_system_av_info(struct retro_system_av_info *info)
|
|||||||
info->timing.fps = 838977920.0/16777215.0;
|
info->timing.fps = 838977920.0/16777215.0;
|
||||||
else
|
else
|
||||||
info->timing.fps = 1008307711.0/16777215.0;
|
info->timing.fps = 1008307711.0/16777215.0;
|
||||||
info->timing.sample_rate = 32040.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void check_system_specs(void)
|
static void check_system_specs(void)
|
||||||
@@ -1103,24 +1102,23 @@ static void check_variables(bool startup)
|
|||||||
* each player
|
* each player
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned char turbo_p0_toggle[] = {0,0};
|
unsigned char turbo_p0_toggle[] = { 0, 0 };
|
||||||
unsigned char turbo_p1_toggle[] = {0,0};
|
unsigned char turbo_p1_toggle[] = { 0, 0 };
|
||||||
|
|
||||||
static void FCEUD_UpdateInput(void)
|
static void FCEUD_UpdateInput(void)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned p, i;
|
||||||
unsigned char pad[2];
|
unsigned char pad[2];
|
||||||
|
|
||||||
pad[0] = 0;
|
pad[0] = pad[1] = 0;
|
||||||
pad[1] = 0;
|
|
||||||
|
|
||||||
poll_cb();
|
poll_cb();
|
||||||
|
|
||||||
|
for (p = 0; p < 2; p++)
|
||||||
|
{
|
||||||
for ( i = 0; i < 8; i++)
|
for ( i = 0; i < 8; i++)
|
||||||
pad[0] |= input_cb(0, RETRO_DEVICE_JOYPAD, 0, bindmap[i].retro) ? bindmap[i].nes : 0;
|
pad[p] |= input_cb(p, RETRO_DEVICE_JOYPAD, 0, bindmap[i].retro) ? bindmap[i].nes : 0;
|
||||||
|
}
|
||||||
for ( i = 0; i < 8; i++)
|
|
||||||
pad[1] |= input_cb(1, RETRO_DEVICE_JOYPAD, 0, bindmap[i].retro) ? bindmap[i].nes : 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turbo A and Turbo B buttons are
|
* Turbo A and Turbo B buttons are
|
||||||
@@ -1135,53 +1133,55 @@ static void FCEUD_UpdateInput(void)
|
|||||||
*/
|
*/
|
||||||
if (turbo_enabler == 1 || turbo_enabler == 3)
|
if (turbo_enabler == 1 || turbo_enabler == 3)
|
||||||
{
|
{
|
||||||
// Handle turbo buttons - player 1
|
/* Handle turbo buttons - player 1 */
|
||||||
for ( i = 8; i < 10; i++) {
|
for ( i = 8; i < 10; i++)
|
||||||
if(input_cb(0, RETRO_DEVICE_JOYPAD, 0, bindmap[i].retro)) {
|
{
|
||||||
if (turbo_p0_toggle[i-8] == 0) {
|
if (input_cb(0, RETRO_DEVICE_JOYPAD, 0, bindmap[i].retro))
|
||||||
|
{
|
||||||
|
if (turbo_p0_toggle[i-8] == 0)
|
||||||
pad[0] |= bindmap[i].nes;
|
pad[0] |= bindmap[i].nes;
|
||||||
}
|
|
||||||
turbo_p0_toggle[i-8]++;
|
turbo_p0_toggle[i-8]++;
|
||||||
if (turbo_p0_toggle[i-8] > turbo_delay) {
|
if (turbo_p0_toggle[i-8] > turbo_delay)
|
||||||
// Reset the toggle if
|
{
|
||||||
// delay value is reached
|
/* Reset the toggle if
|
||||||
|
* delay value is reached */
|
||||||
pad[0] |= bindmap[i].nes;
|
pad[0] |= bindmap[i].nes;
|
||||||
turbo_p0_toggle[i-8] = 0;
|
turbo_p0_toggle[i-8] = 0;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// If the button is not pressed, just reset the toggle
|
|
||||||
turbo_p0_toggle[i-8] = 0;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
/* If the button is not pressed, just reset the toggle */
|
||||||
|
turbo_p0_toggle[i-8] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (turbo_enabler == 2 || turbo_enabler == 3)
|
if (turbo_enabler == 2 || turbo_enabler == 3)
|
||||||
{
|
{
|
||||||
// Handle turbo buttons - player 2
|
/* Handle turbo buttons - player 2 */
|
||||||
for ( i = 8; i < 10; i++) {
|
for ( i = 8; i < 10; i++)
|
||||||
if(input_cb(1, RETRO_DEVICE_JOYPAD, 0, bindmap[i].retro)) {
|
{
|
||||||
if (turbo_p1_toggle[i-8] == 0) {
|
if (input_cb(1, RETRO_DEVICE_JOYPAD, 0, bindmap[i].retro))
|
||||||
|
{
|
||||||
|
if (turbo_p1_toggle[i-8] == 0)
|
||||||
pad[1] |= bindmap[i].nes;
|
pad[1] |= bindmap[i].nes;
|
||||||
}
|
|
||||||
turbo_p1_toggle[i-8]++;
|
turbo_p1_toggle[i-8]++;
|
||||||
if (turbo_p1_toggle[i-8] > turbo_delay) {
|
if (turbo_p1_toggle[i-8] > turbo_delay)
|
||||||
// Reset the toggle if
|
{
|
||||||
// delay value is reached
|
/* Reset the toggle if
|
||||||
|
* delay value is reached */
|
||||||
pad[1] |= bindmap[i].nes;
|
pad[1] |= bindmap[i].nes;
|
||||||
turbo_p1_toggle[i-8] = 0;
|
turbo_p1_toggle[i-8] = 0;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// If the button is not pressed, just reset the toggle
|
|
||||||
turbo_p1_toggle[i-8] = 0;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
/* If the button is not pressed, just reset the toggle */
|
||||||
|
turbo_p1_toggle[i-8] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JSReturn[0] = pad[0] | (pad[1] << 8);
|
JSReturn[0] = pad[0] | (pad[1] << 8);
|
||||||
|
|
||||||
if (input_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2))
|
if (input_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2))
|
||||||
{
|
|
||||||
FCEU_VSUniCoin(); /* Insert Coin VS System */
|
FCEU_VSUniCoin(); /* Insert Coin VS System */
|
||||||
}
|
|
||||||
|
|
||||||
if (GameInfo->type == GIT_FDS) /* Famicom Disk System */
|
if (GameInfo->type == GIT_FDS) /* Famicom Disk System */
|
||||||
{
|
{
|
||||||
@@ -1190,15 +1190,11 @@ static void FCEUD_UpdateInput(void)
|
|||||||
static bool prevL = false, prevR = false;
|
static bool prevL = false, prevR = false;
|
||||||
|
|
||||||
if (curL && !prevL)
|
if (curL && !prevL)
|
||||||
{
|
|
||||||
FCEU_FDSSelect(); /* Swap FDisk side */
|
FCEU_FDSSelect(); /* Swap FDisk side */
|
||||||
}
|
|
||||||
prevL = curL;
|
prevL = curL;
|
||||||
|
|
||||||
if (curR && !prevR)
|
if (curR && !prevR)
|
||||||
{
|
|
||||||
FCEU_FDSInsert(-1); /* Insert or eject the disk */
|
FCEU_FDSInsert(-1); /* Insert or eject the disk */
|
||||||
}
|
|
||||||
prevR = curR;
|
prevR = curR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user