n64: Simulation of cpu cycles that would be used during the skipped RDRAM initialization. This allows the initialization of the SI to see a closer to expected system uptime when requested.

This commit is contained in:
Happy 2015-10-30 15:31:02 -06:00
parent c7cf9ee627
commit b9d235eaa7
4 changed files with 63 additions and 42 deletions

View File

@ -2701,6 +2701,11 @@ void mips3_device::handle_special(UINT32 op)
}
}
void mips3_device::burn_cycles(INT32 cycles)
{
execute_burn(cycles);
}
void mips3_device::execute_run()
{
if (m_isdrc)

View File

@ -300,6 +300,7 @@ public:
void clear_fastram(UINT32 select_start);
void mips3drc_set_options(UINT32 options);
void mips3drc_add_hotspot(offs_t pc, UINT32 opcode, UINT32 cycles);
void burn_cycles(INT32 cycles);
protected:
// device-level overrides
@ -313,6 +314,7 @@ protected:
virtual UINT32 execute_input_lines() const { return 6; }
virtual void execute_run();
virtual void execute_set_input(int inputnum, int state);
virtual void execute_burn(INT32 cycles) { m_totalcycles += cycles; }
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; }

View File

@ -1667,6 +1667,20 @@ WRITE32_MEMBER( n64_periphs::pi_reg_w )
READ32_MEMBER( n64_periphs::ri_reg_r )
{
if(offset == 0x0C/4) // RI_SELECT
{
/* This is to 'simulate' the time that RDRAM initialization
would take if the RI registers were not set to skip the RDRAM
testing during device reset. Proper simulation would require
emulating the RDRAM modules and bus stalls for the mips cpu.
The cycle amount chosen represents 1/2 second, which is not
necessarily the time for RDRAM initialization, but rather the
time recommended for letting the SI devices settle after startup.
This allows the initialization routines for the SI to see that a
proper amount of time has passed since system startup. */
machine().device<mips3_device>("maincpu")->burn_cycles(93750000/2);
}
if(offset > 0x1c/4)
{
logerror("ri_reg_r: %08X, %08X at %08X\n", offset, mem_mask, maincpu->safe_pc());

View File

@ -61,18 +61,18 @@ sf7000 // Sega SC-3000 w/ SF-7000 (Japan)
omv1000 // Tsukuda Original Othello Multivision FG-1000
omv2000 // Tsukuda Original Othello Multivision FG-2000
gamegear // Sega GameGear
gamegeaj // Sega GameGear (Japan)
sms // Sega Master System II (NTSC)
sms1 // Sega Master System I (NTSC)
sms1pal // Sega Master System I (PAL)
smspal // Sega Master System II (PAL)
smsj // Sega Master System (Japan) with FM Chip
sg1000m3 // Sega SG-1000 Mark III (Japan)
sms1krfm // Samsung Gam*Boy I (Korea) with FM Chip
sms1kr // Samsung Gam*Boy I (Korea)
smskr // Samsung Gam*Boy II (Korea)
smssdisp // Sega Master System Store Display Unit
//gamegear // Sega GameGear
//gamegeaj // Sega GameGear (Japan)
//sms // Sega Master System II (NTSC)
//sms1 // Sega Master System I (NTSC)
//sms1pal // Sega Master System I (PAL)
//smspal // Sega Master System II (PAL)
//smsj // Sega Master System (Japan) with FM Chip
//sg1000m3 // Sega SG-1000 Mark III (Japan)
//sms1krfm // Samsung Gam*Boy I (Korea) with FM Chip
//sms1kr // Samsung Gam*Boy I (Korea)
//smskr // Samsung Gam*Boy II (Korea)
//smssdisp // Sega Master System Store Display Unit
megadrij // 1988 Sega Mega Drive (Japan)
genesis // 1989 Sega Genesis (USA)
@ -117,7 +117,7 @@ dceu // 1999 Sega Dreamcast (Europe)
dcdev // 1998 Sega HKT-0120 Sega Dreamcast Development Box
dcprt // 1998 Sega Katana Set 5 Prototype
svmu // 1998 Sega Visual Memory Unit
//svmu // 1998 Sega Visual Memory Unit
// Sony
psj // 1994 Sony PlayStation (Japan)
@ -385,7 +385,7 @@ f1
f1e
f2
f10
fp
//fp
// Cambridge Computers
z88 // Z88 (UK)
@ -661,22 +661,22 @@ c64gs // Commodore 64 Games System
c64dtv // Commodore 64 Direct-to-TV
clcd // Commodore LCD
b500 // Commodore B500
b128 // Commodore B128
b256 // Commodore B256
cbm610 // Commodore CBM 610
cbm620 // Commodore CBM 620
cbm620_hu // Commodore CBM 620 (Hungary)
b128hp // Commodore B128HP
b256hp // Commodore B256HP
bx256hp // Commodore BX256HP
cbm710 // Commodore CBM 710
cbm720 // Commodore CBM 720
cbm720_de
cbm720_se // Commodore CBM 720 (Sweden / Finland)
cbm730
p500 // Commodore P500 (proto, a.k.a. C128-40, PET-II)
p500p
//b500 // Commodore B500
//b128 // Commodore B128
//b256 // Commodore B256
//cbm610 // Commodore CBM 610
//cbm620 // Commodore CBM 620
//cbm620_hu // Commodore CBM 620 (Hungary)
//b128hp // Commodore B128HP
//b256hp // Commodore B256HP
//bx256hp // Commodore BX256HP
//cbm710 // Commodore CBM 710
//cbm720 // Commodore CBM 720
//cbm720_de
//cbm720_se // Commodore CBM 720 (Sweden / Finland)
//cbm730
//p500 // Commodore P500 (proto, a.k.a. C128-40, PET-II)
//p500p
c264
plus4
@ -732,8 +732,8 @@ a4000tn
c65 // 1991 C65 / C64DX (Prototype, NTSC)
c64dx // 1991 C65 / C64DX (Prototype, German PAL)
mps1000 // 1986 Commodore MPS-1000 (dot matrix printer)
mps1230 // 1988 Commodore MPS-1230 near-letter-quality dot matrix printer
//mps1000 // 1986 Commodore MPS-1000 (dot matrix printer)
//mps1230 // 1988 Commodore MPS-1230 near-letter-quality dot matrix printer
// Epson
px4 // 1985 Epson PX-4
@ -1785,8 +1785,8 @@ abc806
abc1600
// Be Incorporated
bebox // BeBox Dual603-66
bebox2 // BeBox Dual603-133
//bebox // BeBox Dual603-66
//bebox2 // BeBox Dual603-133
// Tiger Electronics
gamecom // Tiger Game.com
@ -1866,8 +1866,8 @@ bk0010fd
bk0011m
// Bashkiria-2M
b2m
b2mrom
//b2m
//b2mrom
// Radio-86RK
radio86
@ -1897,10 +1897,10 @@ braiplus
irisha
// PK-8020
korvet
kontur
neiva
bk8t
//korvet
//kontur
//neiva
//bk8t
// Vector-06c
vector06
@ -2522,7 +2522,7 @@ uvc
bridgec3
vbrc
vsc
victor9k
//victor9k
phc25
phc25j
pv9234