mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
chihiro.cpp,xbox.cpp: try to complete xbox memory map, eeprom must be ntsc (nw)
This commit is contained in:
parent
05f681781c
commit
b08a496e6c
@ -666,7 +666,7 @@ void chihiro_state::hack_usb()
|
||||
//**************************************************************************
|
||||
|
||||
//ic10
|
||||
const USBStandardDeviceDescriptor ohci_hlean2131qc_device::devdesc = { 0x12,0x01,0x0100,0x60,0x00,0x00,0x40,0x0CA3,0x0002,0x0108,0x01,0x02,0x00,0x01 };
|
||||
const USBStandardDeviceDescriptor ohci_hlean2131qc_device::devdesc = { 0x12,0x01,0x0100,0x60,0x00,0x00,0x40,0x0CA3,0x0002,0x0108,0x01,0x02,0x00,0x01 }; // class 0x60 subclass 0x00
|
||||
const USBStandardConfigurationDescriptor ohci_hlean2131qc_device::condesc = { 0x09,0x02,0x0058,0x01,0x01,0x00,0x80,0x96 };
|
||||
const USBStandardInterfaceDescriptor ohci_hlean2131qc_device::intdesc = { 0x09,0x04,0x00,0x00,0x0A,0xFF,0x00,0x00,0x00 };
|
||||
const USBStandardEndpointDescriptor ohci_hlean2131qc_device::enddesc01 = { 0x07,0x05,0x01,0x02,0x0040,0x00 };
|
||||
@ -725,7 +725,7 @@ int ohci_hlean2131qc_device::handle_nonstandard_request(int endpoint, USBSetupPa
|
||||
printf("Control request: %x %x %x %x %x %x %x\n\r", endpoint, endpoints[endpoint].controldirection, setup->bmRequestType, setup->bRequest, setup->wValue, setup->wIndex, setup->wLength);
|
||||
for (int n = 0; n < setup->wLength; n++)
|
||||
endpoints[endpoint].buffer[n] = 0x50 ^ n;
|
||||
//if ((setup->bRequest == 0x18) && (setup->wValue == 0x8000))
|
||||
endpoints[endpoint].buffer[1] = 0x4b; // bits 4-1 special value, must be 10 xor 15
|
||||
if (setup->bRequest == 0x17)
|
||||
{
|
||||
maximum_send = setup->wIndex;
|
||||
@ -785,7 +785,7 @@ void ohci_hlean2131qc_device::device_start()
|
||||
}
|
||||
|
||||
//pc20
|
||||
const USBStandardDeviceDescriptor ohci_hlean2131sc_device::devdesc = { 0x12,0x01,0x0100,0x60,0x01,0x00,0x40,0x0CA3,0x0003,0x0110,0x01,0x02,0x00,0x01 };
|
||||
const USBStandardDeviceDescriptor ohci_hlean2131sc_device::devdesc = { 0x12,0x01,0x0100,0x60,0x01,0x00,0x40,0x0CA3,0x0003,0x0110,0x01,0x02,0x00,0x01 }; // class 0x60 subclass 0x01
|
||||
const USBStandardConfigurationDescriptor ohci_hlean2131sc_device::condesc = { 0x09,0x02,0x003C,0x01,0x01,0x00,0x80,0x96 };
|
||||
const USBStandardInterfaceDescriptor ohci_hlean2131sc_device::intdesc = { 0x09,0x04,0x00,0x00,0x06,0xFF,0x00,0x00,0x00 };
|
||||
const USBStandardEndpointDescriptor ohci_hlean2131sc_device::enddesc01 = { 0x07,0x05,0x01,0x02,0x0040,0x00 };
|
||||
|
@ -468,6 +468,10 @@ public:
|
||||
DECLARE_WRITE32_MEMBER(geforce_w);
|
||||
DECLARE_READ32_MEMBER(smbus_r);
|
||||
DECLARE_WRITE32_MEMBER(smbus_w);
|
||||
DECLARE_READ32_MEMBER(smbus2_r);
|
||||
DECLARE_WRITE32_MEMBER(smbus2_w);
|
||||
DECLARE_READ32_MEMBER(networkio_r);
|
||||
DECLARE_WRITE32_MEMBER(networkio_w);
|
||||
DECLARE_READ8_MEMBER(superio_read);
|
||||
DECLARE_WRITE8_MEMBER(superio_write);
|
||||
DECLARE_READ8_MEMBER(superiors232_read);
|
||||
@ -480,6 +484,10 @@ public:
|
||||
DECLARE_WRITE32_MEMBER(dummy_w);
|
||||
DECLARE_READ32_MEMBER(ohci_usb_r);
|
||||
DECLARE_WRITE32_MEMBER(ohci_usb_w);
|
||||
DECLARE_READ32_MEMBER(ohci_usb2_r);
|
||||
DECLARE_WRITE32_MEMBER(ohci_usb2_w);
|
||||
DECLARE_READ32_MEMBER(network_r);
|
||||
DECLARE_WRITE32_MEMBER(network_w);
|
||||
|
||||
void smbus_register_device(int address, int(*handler)(xbox_base_state &chs, int command, int rw, int data));
|
||||
int smbus_pic16lc(int command, int rw, int data);
|
||||
|
@ -2351,12 +2351,19 @@ int xbox_base_state::smbus_cx25871(int command, int rw, int data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// let's try to fake the missing eeprom
|
||||
static int dummyeeprom[256] = { 0x94,0x18,0x10,0x59,0x83,0x58,0x15,0xDA,0xDF,0xCC,0x1D,0x78,0x20,0x8A,0x61,0xB8,0x08,0xB4,0xD6,0xA8,
|
||||
0x9E,0x77,0x9C,0xEB,0xEA,0xF8,0x93,0x6E,0x3E,0xD6,0x9C,0x49,0x6B,0xB5,0x6E,0xAB,0x6D,0xBC,0xB8,0x80,0x68,0x9D,0xAA,0xCD,0x0B,0x83,
|
||||
0x17,0xEC,0x2E,0xCE,0x35,0xA8,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,0x00,0x00,
|
||||
0x4F,0x6E,0x6C,0x69,0x6E,0x65,0x6B,0x65,0x79,0x69,0x6E,0x76,0x61,0x6C,0x69,0x64,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
|
||||
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
|
||||
// let's try to fake the missing eeprom, make sure its ntsc
|
||||
static int dummyeeprom[256] = {
|
||||
0x39, 0xe3, 0xcc, 0x81, 0xb0, 0xa9, 0x97, 0x09, 0x57, 0xac, 0x57, 0x12, 0xf7, 0xc2, 0xc0, 0x21, 0xce, 0x0d, 0x0a, 0xdb, 0x20, 0x7a, 0xf3, 0xff,
|
||||
0xdf, 0x67, 0xed, 0xf4, 0xf8, 0x95, 0x5c, 0xd0, 0x9b, 0xef, 0x7b, 0x81, 0xda, 0xd5, 0x98, 0xc1, 0xb1, 0xb3, 0x74, 0x18, 0x86, 0x05, 0xe2, 0x7c,
|
||||
0xd1, 0xad, 0xc9, 0x90, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x00, 0x00,
|
||||
0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xab, 0xcd, 0xef, 0xba, 0xdc, 0xfe, 0xa1, 0xb2, 0xc3, 0xd3, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
int smbus_callback_eeprom(xbox_base_state &chs, int command, int rw, int data)
|
||||
{
|
||||
@ -2445,11 +2452,44 @@ WRITE32_MEMBER(xbox_base_state::smbus_w)
|
||||
}
|
||||
if ((offset == 2) && (mem_mask == 0xff)) // 8 smbus command
|
||||
smbusst.command = data;
|
||||
//if ((offset == 2) && (mem_mask == 0x00ff0000)) ;
|
||||
}
|
||||
|
||||
READ32_MEMBER(xbox_base_state::smbus2_r)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(xbox_base_state::smbus2_w)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* Ethernet controller
|
||||
*/
|
||||
|
||||
READ32_MEMBER(xbox_base_state::network_r)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(xbox_base_state::network_w)
|
||||
{
|
||||
}
|
||||
|
||||
READ32_MEMBER(xbox_base_state::networkio_r)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(xbox_base_state::networkio_w)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* SuperIO
|
||||
*/
|
||||
|
||||
READ8_MEMBER(xbox_base_state::superio_read)
|
||||
{
|
||||
if (superiost.configuration_mode == false)
|
||||
@ -2534,6 +2574,14 @@ WRITE32_MEMBER(xbox_base_state::ohci_usb_w)
|
||||
#endif
|
||||
}
|
||||
|
||||
READ32_MEMBER(xbox_base_state::ohci_usb2_r)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(xbox_base_state::ohci_usb2_w)
|
||||
{
|
||||
}
|
||||
|
||||
ADDRESS_MAP_START(xbox_base_map, AS_PROGRAM, 32, xbox_base_state)
|
||||
AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_SHARE("nv2a_share") // 128 megabytes
|
||||
@ -2542,10 +2590,12 @@ ADDRESS_MAP_START(xbox_base_map, AS_PROGRAM, 32, xbox_base_state)
|
||||
#ifdef USB_HACK_ENABLED
|
||||
AM_RANGE(0xfed00000, 0xfed003ff) AM_READWRITE(ohci_usb_r, ohci_usb_w)
|
||||
#else
|
||||
AM_RANGE(0xfed00000, 0xfed003ff) AM_DEVREADWRITE("ohci_usb", ohci_usb_controller, read, write)
|
||||
AM_RANGE(0xfed00000, 0xfed00fff) AM_DEVREADWRITE("ohci_usb", ohci_usb_controller, read, write)
|
||||
#endif
|
||||
AM_RANGE(0xfe800000, 0xfe85ffff) AM_READWRITE(audio_apu_r, audio_apu_w)
|
||||
AM_RANGE(0xfec00000, 0xfec001ff) AM_READWRITE(audio_ac93_r, audio_ac93_w)
|
||||
AM_RANGE(0xfed08000, 0xfed08fff) AM_READWRITE(ohci_usb2_r, ohci_usb2_w)
|
||||
AM_RANGE(0xfe800000, 0xfe87ffff) AM_READWRITE(audio_apu_r, audio_apu_w)
|
||||
AM_RANGE(0xfec00000, 0xfec00fff) AM_READWRITE(audio_ac93_r, audio_ac93_w)
|
||||
AM_RANGE(0xfef00000, 0xfef003ff) AM_READWRITE(network_r, network_w)
|
||||
AM_RANGE(0xff000000, 0xff0fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -2557,9 +2607,11 @@ ADDRESS_MAP_START(xbox_base_map_io, AS_IO, 32, xbox_base_state)
|
||||
AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, read_cs0, write_cs0)
|
||||
AM_RANGE(0x03f8, 0x03ff) AM_READWRITE8(superiors232_read, superiors232_write, 0xffffffff)
|
||||
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
|
||||
AM_RANGE(0x8000, 0x80ff) AM_READWRITE(dummy_r, dummy_w)
|
||||
AM_RANGE(0xc000, 0xc0ff) AM_READWRITE(smbus_r, smbus_w)
|
||||
AM_RANGE(0xff60, 0xff67) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, bmdma_r, bmdma_w)
|
||||
AM_RANGE(0x8000, 0x80ff) AM_READWRITE(dummy_r, dummy_w) // lpc bridge
|
||||
AM_RANGE(0xc000, 0xc00f) AM_READWRITE(smbus_r, smbus_w)
|
||||
AM_RANGE(0xc200, 0xc21f) AM_READWRITE(smbus2_r, smbus2_w)
|
||||
AM_RANGE(0xe000, 0xe007) AM_READWRITE(networkio_r, networkio_w)
|
||||
AM_RANGE(0xff60, 0xff6f) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, bmdma_r, bmdma_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
void xbox_base_state::machine_start()
|
||||
@ -2569,7 +2621,7 @@ void xbox_base_state::machine_start()
|
||||
nvidia_nv2a = std::make_unique<nv2a_renderer>(machine());
|
||||
memset(pic16lc_buffer, 0, sizeof(pic16lc_buffer));
|
||||
pic16lc_buffer[0] = 'B';
|
||||
pic16lc_buffer[4] = 0; // A/V connector, 2=vga
|
||||
pic16lc_buffer[4] = 0; // A/V connector, 0=scart 2=vga 4=svideo 7=none
|
||||
smbus_register_device(0x10, smbus_callback_pic16lc);
|
||||
smbus_register_device(0x45, smbus_callback_cx25871);
|
||||
smbus_register_device(0x54, smbus_callback_eeprom);
|
||||
@ -2630,7 +2682,7 @@ MACHINE_CONFIG_START(xbox_base, xbox_base_state)
|
||||
|
||||
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
|
||||
MCFG_PCI_BUS_LEGACY_DEVICE(0, "PCI Bridge Device - Host Bridge", pcibridghostbridg_pci_r, pcibridghostbridg_pci_w)
|
||||
MCFG_PCI_BUS_LEGACY_DEVICE(1, "HUB Interface - ISA Bridge", hubintisabridg_pci_r, hubintisabridg_pci_w)
|
||||
MCFG_PCI_BUS_LEGACY_DEVICE(1, "HUB Interface - ISA Bridge", hubintisabridg_pci_r, hubintisabridg_pci_w) // function 0 lpc function 1 smbus
|
||||
MCFG_PCI_BUS_LEGACY_DEVICE(2, "OHCI USB Controller 1", dummy_pci_r, dummy_pci_w)
|
||||
MCFG_PCI_BUS_LEGACY_DEVICE(3, "OHCI USB Controller 2", dummy_pci_r, dummy_pci_w)
|
||||
MCFG_PCI_BUS_LEGACY_DEVICE(4, "MCP Networking Adapter", dummy_pci_r, dummy_pci_w)
|
||||
|
Loading…
Reference in New Issue
Block a user