Remove DelaySI hack/option

This commit is contained in:
Logan McNaughton committed 2017-09-14 09:28:15 -06:00
1 parent 35929f06f7
commit 0bcfd3cc78
9 files changed
+22 -60

No files matched your search

-3
View File
@@ -8692,7 +8692,6 @@ GoodName=Mischief Makers (E) [!]
CRC=418BDA98 248A0F58
Players=1
SaveType=Eeprom 4KB
DelaySI=0
[5690D74157C6623E2928A6F0353EF4AF]
GoodName=Mischief Makers (E) [b1]
@@ -8704,7 +8703,6 @@ GoodName=Mischief Makers (U) [!]
CRC=0B93051B 603D81F9
Players=1
SaveType=Eeprom 4KB
DelaySI=0
[CCF012DF82022D4797CE4CC5405E084F]
GoodName=Mischief Makers (U) [b1]
@@ -15997,7 +15995,6 @@ GoodName=Yuke Yuke!! Trouble Makers (J) [!]
CRC=9FE6162D E97E4037
Players=1
SaveType=Eeprom 4KB
DelaySI=0
[6F9E56C8A2B6BA5F6DBE5214E352590D]
GoodName=Yuke Yuke!! Trouble Makers (J) [a1]
+1 -3
View File
@@ -53,7 +53,6 @@ void init_device(struct device* dev,
struct gb_cart* gb_carts,
uint16_t eeprom_id, struct storage_backend* eeprom_storage,
struct clock_backend* clock,
unsigned int delay_si,
/* vi */
unsigned int vi_clock, unsigned int expected_refresh_rate)
{
@@ -87,8 +86,7 @@ void init_device(struct device* dev,
eeprom_id, eeprom_storage,
clock,
rom + 0x40,
&dev->r4300, &dev->ri,
delay_si);
&dev->r4300, &dev->ri);
init_vi(&dev->vi, vi_clock, expected_refresh_rate, &dev->r4300);
}
-1
View File
@@ -78,7 +78,6 @@ void init_device(struct device* dev,
struct gb_cart* gb_carts,
uint16_t eeprom_id, struct storage_backend* eeprom_storage,
struct clock_backend* clock,
unsigned int delay_si,
/* vi */
unsigned int vi_clock, unsigned int expected_refresh_rate);
-2
View File
@@ -142,8 +142,6 @@ int write_pif_ram(void* opaque, uint32_t address, uint32_t value, uint32_t mask)
if (si->pif.ram[0x3f] == 0x08)
{
si->pif.ram[0x3f] = 0;
cp0_update_count(si->r4300);
add_interrupt_event(&si->r4300->cp0, SI_INT, /*0x100*/0x900);
}
else
{
+20 -28
View File
@@ -54,22 +54,13 @@ static void dma_si_write(struct si_controller* si)
*((uint32_t*)(&si->pif.ram[i])) = sl(si->ri->rdram.dram[(si->regs[SI_DRAM_ADDR_REG]+i)/4]);
}
update_pif_write(si);
cp0_update_count(si->r4300);
if (si->delay_si) {
si->regs[SI_STATUS_REG] |= SI_STATUS_DMA_BUSY;
add_interrupt_event(&si->r4300->cp0, SI_INT, /*0x100*/0x900);
} else {
si->regs[SI_STATUS_REG] |= SI_STATUS_INTERRUPT;
signal_rcp_interrupt(si->r4300, MI_INTR_SI);
}
si->regs[SI_STATUS_REG] |= SI_STATUS_DMA_BUSY;
add_interrupt_event(&si->r4300->cp0, SI_INT, /*0x100*/0x900);
}
static void dma_si_read(struct si_controller* si)
{
int i;
if (si->regs[SI_PIF_ADDR_RD64B_REG] != 0x1FC007C0)
{
DebugMessage(M64MSG_ERROR, "dma_si_read(): unknown SI use");
@@ -78,20 +69,9 @@ static void dma_si_read(struct si_controller* si)
update_pif_read(si);
for (i = 0; i < PIF_RAM_SIZE; i += 4)
{
si->ri->rdram.dram[(si->regs[SI_DRAM_ADDR_REG]+i)/4] = sl(*(uint32_t*)(&si->pif.ram[i]));
}
cp0_update_count(si->r4300);
if (si->delay_si) {
si->regs[SI_STATUS_REG] |= SI_STATUS_DMA_BUSY;
add_interrupt_event(&si->r4300->cp0, SI_INT, /*0x100*/0x900);
} else {
si->regs[SI_STATUS_REG] |= SI_STATUS_INTERRUPT;
signal_rcp_interrupt(si->r4300, MI_INTR_SI);
}
si->regs[SI_STATUS_REG] |= SI_STATUS_RD_BUSY;
add_interrupt_event(&si->r4300->cp0, SI_INT, /*0x100*/0x900);
}
@@ -105,12 +85,10 @@ void init_si(struct si_controller* si,
struct clock_backend* clock,
const uint8_t* ipl3,
struct r4300_core* r4300,
struct ri_controller* ri,
unsigned int delay_si)
struct ri_controller* ri)
{
si->r4300 = r4300;
si->ri = ri;
si->delay_si = delay_si;
init_pif(&si->pif,
cins,
@@ -173,12 +151,26 @@ int write_si_regs(void* opaque, uint32_t address, uint32_t value, uint32_t mask)
void si_end_of_dma_event(void* opaque)
{
struct si_controller* si = (struct si_controller*)opaque;
if (si->regs[SI_STATUS_REG] & SI_STATUS_DMA_BUSY)
{
update_pif_write(si);
}
else if (si->regs[SI_STATUS_REG] & SI_STATUS_RD_BUSY)
{
int i;
for (i = 0; i < PIF_RAM_SIZE; i += 4)
{
si->ri->rdram.dram[(si->regs[SI_DRAM_ADDR_REG]+i)/4] = sl(*(uint32_t*)(&si->pif.ram[i]));
}
}
main_check_inputs();
si->pif.ram[0x3f] = 0x0;
/* trigger SI interrupt */
si->regs[SI_STATUS_REG] &= ~SI_STATUS_DMA_BUSY;
si->regs[SI_STATUS_REG] &= ~(SI_STATUS_DMA_BUSY | SI_STATUS_RD_BUSY);
si->regs[SI_STATUS_REG] |= SI_STATUS_INTERRUPT;
raise_rcp_interrupt(si->r4300, MI_INTR_SI);
}
+1 -4
View File
@@ -52,8 +52,6 @@ struct si_controller
struct r4300_core* r4300;
struct ri_controller* ri;
unsigned int delay_si;
};
static uint32_t si_reg(uint32_t address)
@@ -72,8 +70,7 @@ void init_si(struct si_controller* si,
struct clock_backend* clock,
const uint8_t* ipl3,
struct r4300_core* r4300,
struct ri_controller* ri,
unsigned int delay_si);
struct ri_controller* ri);
void poweron_si(struct si_controller* si);
-7
View File
@@ -271,7 +271,6 @@ int main_set_core_defaults(void)
ConfigSetDefaultString(g_CoreConfig, "SaveStatePath", "", "Path to directory where emulator save states (snapshots) are saved. If this is blank, the default value of ${UserConfigPath}/save will be used");
ConfigSetDefaultString(g_CoreConfig, "SaveSRAMPath", "", "Path to directory where SRAM/EEPROM data (in-game saves) are stored. If this is blank, the default value of ${UserConfigPath}/save will be used");
ConfigSetDefaultString(g_CoreConfig, "SharedDataPath", "", "Path to a directory to search when looking for shared data files");
ConfigSetDefaultBool(g_CoreConfig, "DelaySI", 1, "Delay interrupt after DMA SI read/write");
ConfigSetDefaultInt(g_CoreConfig, "CountPerOp", 0, "Force number of cycles per emulated instruction");
ConfigSetDefaultBool(g_CoreConfig, "DisableSpecRecomp", 1, "Disable speculative precompilation in new dynarec");
@@ -961,7 +960,6 @@ m64p_error main_run(void)
{
size_t i;
size_t rdram_size;
unsigned int delay_si;
unsigned int count_per_op;
unsigned int emumode;
unsigned int disable_extra_mem;
@@ -993,10 +991,6 @@ m64p_error main_run(void)
#ifdef NEW_DYNAREC
stop_after_jal = ConfigGetParamBool(g_CoreConfig, "DisableSpecRecomp");
#endif
if (!ROM_PARAMS.delaysi)
delay_si = ROM_PARAMS.delaysi;
else
delay_si = ConfigGetParamBool(g_CoreConfig, "DelaySI");
count_per_op = ConfigGetParamInt(g_CoreConfig, "CountPerOp");
@@ -1088,7 +1082,6 @@ m64p_error main_run(void)
gb_carts,
(ROM_SETTINGS.savetype != EEPROM_16KB) ? 0x8000 : 0xc000, &eep_storage,
&clock,
delay_si,
vi_clock_from_tv_standard(ROM_PARAMS.systemtype), vi_expected_refresh_rate_from_tv_standard(ROM_PARAMS.systemtype));
// Attach rom to plugins
-10
View File
@@ -49,8 +49,6 @@
enum { DEFAULT_COUNT_PER_OP = 2 };
/* by default, extra mem is enabled */
enum { DEFAULT_DISABLE_EXTRA_MEM = 0 };
/* by default, Delay SI is enabled */
enum { DEFAULT_DELAY_SI = 1 };
static romdatabase_entry* ini_search_by_md5(md5_byte_t* md5);
@@ -176,7 +174,6 @@ m64p_error open_rom(const unsigned char* romimage, unsigned int size)
ROM_PARAMS.systemtype = rom_country_code_to_system_type(ROM_HEADER.Country_code);
ROM_PARAMS.countperop = DEFAULT_COUNT_PER_OP;
ROM_PARAMS.disableextramem = DEFAULT_DISABLE_EXTRA_MEM;
ROM_PARAMS.delaysi = DEFAULT_DELAY_SI;
ROM_PARAMS.cheats = NULL;
memcpy(ROM_PARAMS.headername, ROM_HEADER.Name, 20);
@@ -195,7 +192,6 @@ m64p_error open_rom(const unsigned char* romimage, unsigned int size)
ROM_SETTINGS.rumble = entry->rumble;
ROM_PARAMS.countperop = entry->countperop;
ROM_PARAMS.disableextramem = entry->disableextramem;
ROM_PARAMS.delaysi = entry->delaysi;
ROM_PARAMS.cheats = entry->cheats;
}
else
@@ -208,7 +204,6 @@ m64p_error open_rom(const unsigned char* romimage, unsigned int size)
ROM_SETTINGS.rumble = 0;
ROM_PARAMS.countperop = DEFAULT_COUNT_PER_OP;
ROM_PARAMS.disableextramem = DEFAULT_DISABLE_EXTRA_MEM;
ROM_PARAMS.delaysi = DEFAULT_DELAY_SI;
ROM_PARAMS.cheats = NULL;
}
@@ -449,7 +444,6 @@ void romdatabase_open(void)
search->entry.rumble = 0;
search->entry.countperop = DEFAULT_COUNT_PER_OP;
search->entry.disableextramem = DEFAULT_DISABLE_EXTRA_MEM;
search->entry.delaysi = DEFAULT_DELAY_SI;
search->entry.cheats = NULL;
search->entry.set_flags = ROMDATABASE_ENTRY_NONE;
@@ -571,10 +565,6 @@ void romdatabase_open(void)
{
search->entry.disableextramem = atoi(l.value);
}
else if (!strcmp(l.name, "DelaySI"))
{
search->entry.delaysi = atoi(l.value);
}
else if(!strncmp(l.name, "Cheat", 5))
{
size_t len1 = 0, len2 = 0;
-2
View File
@@ -51,7 +51,6 @@ typedef struct _rom_params
char headername[21]; /* ROM Name as in the header, removing trailing whitespace */
unsigned char countperop;
int disableextramem;
int delaysi;
int special_rom;
} rom_params;
@@ -132,7 +131,6 @@ typedef struct
unsigned char rumble; /* 0 - No, 1 - Yes boolean for rumble support. */
unsigned char countperop;
unsigned char disableextramem;
unsigned char delaysi;
uint32_t set_flags;
} romdatabase_entry;