Hack fix for Shining Force Final Conflict English trad hang.

This commit is contained in:
gameblabla 2021-03-11 01:58:36 +01:00
parent 9a53420825
commit cb1a393d99
No known key found for this signature in database
GPG Key ID: 55F5ECF22285E516
2 changed files with 16 additions and 4 deletions

View File

@ -32,7 +32,9 @@
#include "shared.h"
#define GAME_DATABASE_CNT 100
uint8_t gaiden_hack = 0;
#define GAME_DATABASE_CNT 101
typedef struct
{
@ -273,7 +275,9 @@ static rominfo_t game_list[GAME_DATABASE_CNT] =
{0x679E1676, 0, DEVICE_PAD2B, MAPPER_SEGA, DISPLAY_NTSC, TERRITORY_DOMESTIC, CONSOLE_SMS2,
"Wonder Boy III - The dragon's Trap"},
{0x22CCA9BB, 0, DEVICE_PAD2B, MAPPER_SEGA, DISPLAY_NTSC, TERRITORY_DOMESTIC, CONSOLE_SMS2,
"Turma da Monica em O Resgate"}
"Turma da Monica em O Resgate"},
{0x23BAC434, 0, DEVICE_PAD2B, MAPPER_SEGA, DISPLAY_NTSC, TERRITORY_EXPORT, CONSOLE_GG,
"Shining Force Final Conflict"}
};
static void set_config()
@ -289,6 +293,7 @@ static void set_config()
sms.device[0] = DEVICE_PAD2B;
sms.device[1] = DEVICE_PAD2B;
sms.use_fm = option.fm;
gaiden_hack = 0;
/* console type detection */
/* SMS Header is located at 0x7ff0 */
@ -344,6 +349,12 @@ static void set_config()
/* these games seem to use different gun position calculation method */
sms.gun_offset = 16;
}
if (strcmp(game_list[i].name, "Shining Force Final Conflict") == 0)
{
gaiden_hack = 1;
}
i = GAME_DATABASE_CNT;
}
}

View File

@ -479,17 +479,18 @@ void mapper_8k_w(uint16_t address, uint8_t data)
void mapper_16k_w(uint16_t address, uint8_t data)
{
extern uint8_t gaiden_hack;
int32_t i;
/* cartridge ROM page (16k) index */
uint16_t page = data % slot.pages;
/* page index increment (SEGA mapper) */
if (slot.fcr[0] & 0x03)
if (slot.fcr[0] & 0x03 && gaiden_hack != 1)
{
page = (page + ((4 - (slot.fcr[0] & 0x03)) << 3)) % slot.pages;
}
/* save frame control register data */
slot.fcr[address] = data;