Merge pull request #303 from LuigiBlood/master

n64.c: Development Disk Drive setting support [LuigiBlood]
This commit is contained in:
R. Belmont 2015-09-06 18:18:16 -04:00
commit b0e1e5d733
2 changed files with 17 additions and 8 deletions

View File

@ -2266,9 +2266,11 @@ void n64_periphs::dd_update_bm()
}
else // dd read, BM Mode 1
{
if(((dd_track_reg & 0xFFF) == 6) && (dd_start_block == 0))
if(((dd_track_reg & 0xFFF) == 6) && (dd_start_block == 0) && ((machine().root_device().ioport("input")->read() & 0x0100) == 0x0000))
{
//only fail read LBA 12 if retail disk drive
dd_status_reg &= ~DD_ASIC_STATUS_DREQ;
dd_buf_status_reg |= DD_BMST_MICRO_STATUS;
}
else if(dd_current_reg < SECTORS_PER_BLOCK)
{
@ -2336,11 +2338,11 @@ void n64_periphs::dd_read_sector()
sector = (UINT8*)machine().root_device().memregion("disk")->base();
sector += dd_track_offset;
sector += dd_start_block * SECTORS_PER_BLOCK * ddZoneSecSize[dd_zone];
sector += (dd_current_reg) * ddZoneSecSize[dd_zone];
sector += (dd_current_reg) * (dd_sector_size + 1);
//logerror("Read Block %d, Sector %d\n", dd_start_block, dd_current_reg);
for(int i = 0; i < ddZoneSecSize[dd_zone]/4; i++)
for(int i = 0; i < (dd_sector_size + 1)/4; i++)
{
dd_sector_data[i] = sector[(i*4 + 0)] << 24 | sector[(i*4 + 1)] << 16 |
sector[(i*4 + 2)] << 8 | sector[(i*4 + 3)];
@ -2421,7 +2423,10 @@ READ32_MEMBER( n64_periphs::dd_reg_r )
ret = dd_seq_ctrl_reg;
break;
case 0x40/4: // ASIC ID
ret = 0x00030000; // Japan Retail Drive
if ((machine().root_device().ioport("input")->read() & 0x0100) == 0x0000)
ret = 0x00030000; // Japan Retail Drive
else
ret = 0x00040000; // Development Drive
break;
}

View File

@ -89,22 +89,26 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( n64 )
PORT_START("input")
PORT_CONFNAME(0x03, 0x01, "Controller Port 0 Device")
PORT_CONFNAME(0x0003, 0x0001, "Controller Port 0 Device")
PORT_CONFSETTING(0x00, "None")
PORT_CONFSETTING(0x01, "Joypad")
PORT_CONFSETTING(0x02, "Mouse")
PORT_CONFNAME(0x0C, 0x00, "Controller Port 1 Device")
PORT_CONFNAME(0x000C, 0x0000, "Controller Port 1 Device")
PORT_CONFSETTING(0x00, "None")
PORT_CONFSETTING(0x04, "Joypad")
PORT_CONFSETTING(0x08, "Mouse")
PORT_CONFNAME(0x30, 0x00, "Controller Port 2 Device")
PORT_CONFNAME(0x0030, 0x0000, "Controller Port 2 Device")
PORT_CONFSETTING(0x00, "None")
PORT_CONFSETTING(0x10, "Joypad")
PORT_CONFSETTING(0x20, "Mouse")
PORT_CONFNAME(0xC0, 0x00, "Controller Port 3 Device")
PORT_CONFNAME(0x00C0, 0x0000, "Controller Port 3 Device")
PORT_CONFSETTING(0x00, "None")
PORT_CONFSETTING(0x40, "Joypad")
PORT_CONFSETTING(0x80, "Mouse")
PORT_CONFNAME(0x0100, 0x0000, "Disk Drive")
PORT_CONFSETTING(0x0000, "Retail")
PORT_CONFSETTING(0x0100, "Development")
//Player 1
PORT_START("P1")