Set VDP Register 1 to 0xE0 after multiple testing.

Sonic's Edusoft relies on this behaviour and it also works properly when that bit is
set to 0xE0.
(All of the known BIOSes set that bit to 0xE0 before booting a cartridge)

Removing said game hack since it is no longer required.
This commit is contained in:
gameblabla 2019-03-09 10:28:21 +01:00
parent 02a6e57e4e
commit ff1201902b
No known key found for this signature in database
GPG Key ID: B24EFBB23B5F76CB
3 changed files with 3 additions and 14 deletions

View File

@ -22,7 +22,7 @@
#include "shared.h"
#define GAME_DATABASE_CNT 98
#define GAME_DATABASE_CNT 97
typedef struct
{
@ -253,12 +253,7 @@ 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"},
/* These games break because they expect the vertical interruption bit to be set by default on the VDP, and wait for an interruption before writing any registers to the VDP.
* Only seems to affect Sonic's Edusoft so far. (Other emulators require a SMS BIOS for that game or a hacked binary) */
{0xD9096263, 0, DEVICE_PAD2B, MAPPER_SEGA, DISPLAY_NTSC, TERRITORY_DOMESTIC, CONSOLE_SMS2,
"Sonic's Edusoft"}
"Turma da Monica em O Resgate"}
};
static void set_config()
@ -274,7 +269,6 @@ static void set_config()
sms.device[0] = DEVICE_PAD2B;
sms.device[1] = DEVICE_PAD2B;
sms.use_fm = option.fm;
sms.vdp_register1_default_value = 0x80;
/* console type detection */
/* SMS Header is located at 0x7ff0 */
@ -330,10 +324,6 @@ static void set_config()
/* these games seem to use different gun position calculation method */
sms.gun_offset = 16;
}
if (strcmp(game_list[i].name, "Sonic's Edusoft") == 0)
{
sms.vdp_register1_default_value = 0xA0;
}
i = GAME_DATABASE_CNT;
}
}

View File

@ -117,7 +117,6 @@ typedef struct
} sio;
uint8_t device[2];
uint8_t gun_offset;
uint8_t vdp_register1_default_value;
} sms_t;
/* BIOS ROM */

View File

@ -81,7 +81,7 @@ void vdp_reset(void)
if (IS_SMS && (bios.enabled != 3))
{
vdp.reg[0] = 0x36;
vdp.reg[1] = sms.vdp_register1_default_value;
vdp.reg[1] = 0xE0;
vdp.reg[2] = 0xFF;
vdp.reg[3] = 0xFF;
vdp.reg[4] = 0xFF;