diff options
author | angelosa <salese_corp_ltd@email.it> | 2017-10-04 21:05:48 +0200 |
---|---|---|
committer | angelosa <salese_corp_ltd@email.it> | 2017-10-05 05:10:29 +0200 |
commit | b6f6b3bfd16f7172d2bc10c71cfe3ab1bc93cca0 (patch) | |
tree | 03c9b2237780f67d98150e0ff2430fe0cf2a4dea | |
parent | 27f564762ab67b879745fafbce5dd797b553bfce (diff) |
smpc.cpp: move IREG & OREG to internal device state (nw)
-rw-r--r-- | src/devices/machine/smpc.cpp | 200 | ||||
-rw-r--r-- | src/devices/machine/smpc.h | 11 | ||||
-rw-r--r-- | src/mame/includes/saturn.h | 4 |
3 files changed, 139 insertions, 76 deletions
diff --git a/src/devices/machine/smpc.cpp b/src/devices/machine/smpc.cpp index b4bc706dcff..30f6045e6ac 100644 --- a/src/devices/machine/smpc.cpp +++ b/src/devices/machine/smpc.cpp @@ -15,6 +15,15 @@ TODO: VBLANK-IN and OUT, for obvious reasons); - clean-ups; +Notes: +SMPC NVRAM contents: +[0] unknown (always 0) +[1] unknown (always 0) +[2] ---- -x-- Button Labels (0=enable) + ---- --x- Audio Out (1=Mono 0=Stereo) + ---- ---x BIOS audio SFXs enable (0=enable) +[3] language select (0=English, 5=Japanese) + *************************************************************************************/ /* SMPC Addresses @@ -171,6 +180,8 @@ DEFINE_DEVICE_TYPE(SMPC_HLE, smpc_hle_device, "smpc_hle", "Sega Saturn SMPC HLE // TODO: this is actually a DEVICE_ADDRESS_MAP, fix once everything is merged static ADDRESS_MAP_START( smpc_regs, 0, 8, smpc_hle_device ) ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x00, 0x0d) AM_WRITE(ireg_w) + AM_RANGE(0x20, 0x5f) AM_READ(oreg_r) AM_RANGE(0x61, 0x61) AM_READ(status_register_r) AM_RANGE(0x63, 0x63) AM_READWRITE(status_flag_r, status_flag_w) AM_RANGE(0x75, 0x75) AM_READWRITE(pdr1_r, pdr1_w) @@ -240,6 +251,8 @@ void smpc_hle_device::device_start() save_item(NAME(m_iosel2)); save_item(NAME(m_exle1)); save_item(NAME(m_exle2)); + save_item(NAME(m_ireg)); + save_item(NAME(m_oreg)); } @@ -256,6 +269,9 @@ void smpc_hle_device::device_reset() m_ddr2 = 0; m_pdr1_readback = 0; m_pdr2_readback = 0; + + memset(m_ireg,0,7); + memset(m_oreg,0,32); } //------------------------------------------------- @@ -276,6 +292,22 @@ device_memory_interface::space_config_vector smpc_hle_device::memory_space_confi // READ/WRITE HANDLERS //************************************************************************** +WRITE8_MEMBER( smpc_hle_device::ireg_w ) +{ + if (!(offset & 1)) // avoid writing to even bytes + return; + + m_ireg[offset >> 1] = data; +} + +READ8_MEMBER( smpc_hle_device::oreg_r ) +{ + if (!(offset & 1)) // avoid reading to even bytes (TODO: is it 0s or 1s?) + return 0x00; + + return m_oreg[offset >> 1]; +} + READ8_MEMBER( smpc_hle_device::status_register_r ) { return m_sr; @@ -382,6 +414,16 @@ uint8_t smpc_hle_device::get_ddr(bool which) } // TODO: trampolines that needs to go away +uint8_t smpc_hle_device::get_ireg(uint8_t offset) +{ + return m_ireg[offset]; +} + +void smpc_hle_device::set_oreg(uint8_t offset, uint8_t data) +{ + m_oreg[offset] = data; +} + void smpc_hle_device::master_sh2_reset(bool state) { m_mshres(state); @@ -413,9 +455,10 @@ void smpc_hle_device::dot_select_request(bool state) m_dotsel(state); } -void smpc_hle_device::master_sh2_nmi(bool state) +void smpc_hle_device::master_sh2_nmi() { - m_mshnmi(state); + m_mshnmi(1); + m_mshnmi(0); } void smpc_hle_device::irq_request() @@ -451,7 +494,7 @@ void saturn_state::smpc_master_on() TIMER_CALLBACK_MEMBER( saturn_state::smpc_slave_enable ) { m_smpc_hle->slave_sh2_reset(param); - m_smpc.OREG[31] = param + 0x02; //read-back for last command issued + m_smpc_hle->set_oreg(31, param + 0x02); m_smpc_hle->sf_ack(false); // printf("%d %d\n",machine().first_screen()->hpos(),machine().first_screen()->vpos()); } @@ -459,15 +502,14 @@ TIMER_CALLBACK_MEMBER( saturn_state::smpc_slave_enable ) TIMER_CALLBACK_MEMBER( saturn_state::smpc_sound_enable ) { m_smpc_hle->sound_reset(param); - - m_smpc.OREG[31] = param + 0x06; //read-back for last command issued + m_smpc_hle->set_oreg(31, param + 0x06); //read-back for last command issued m_smpc_hle->sf_ack(false); } TIMER_CALLBACK_MEMBER( saturn_state::smpc_cd_enable ) { // ... - m_smpc.OREG[31] = param + 0x08; //read-back for last command issued + m_smpc_hle->set_oreg(31,param + 0x08); //read-back for last command issued m_smpc_hle->sf_ack(true); //clear hand-shake flag (TODO: diagnostic wants this to have bit 3 high) } @@ -488,17 +530,14 @@ TIMER_CALLBACK_MEMBER( saturn_state::smpc_change_clock ) m_smpc_hle->dot_select_request(param); if(!m_NMI_reset) - { - m_smpc_hle->master_sh2_nmi(1); - m_smpc_hle->master_sh2_nmi(0); - } + m_smpc_hle->master_sh2_nmi(); m_smpc_hle->slave_sh2_reset(1); m_smpc_hle->system_halt_request(0); /* put issued command in OREG31 */ - m_smpc.OREG[31] = 0x0e + param; + m_smpc_hle->set_oreg( 31, 0x0e + param ); /* clear hand-shake flag */ m_smpc_hle->sf_ack(false); // TODO: VDP1 / VDP2 / SCU / SCSP default power ON values??? @@ -518,7 +557,7 @@ TIMER_CALLBACK_MEMBER( saturn_state::stv_intback_peripheral ) } m_smpc_hle->irq_request(); - m_smpc.OREG[31] = 0x10; /* callback for last command issued */ + m_smpc_hle->set_oreg(31, 0x10); /* callback for last command issued */ m_smpc_hle->sf_ack(false); } @@ -530,31 +569,39 @@ TIMER_CALLBACK_MEMBER( saturn_state::stv_smpc_intback ) // printf("%02x %02x %02x\n",m_smpc.intback_buf[0],m_smpc.intback_buf[1],m_smpc.intback_buf[2]); if(m_smpc.intback_buf[0] != 0) - { - m_smpc.OREG[0] = (0x80) | ((m_NMI_reset & 1) << 6); - + { + m_smpc_hle->set_oreg(0, (0x80) | ((m_NMI_reset & 1) << 6)); + for(i=0;i<7;i++) - m_smpc.OREG[1+i] = m_smpc.rtc_data[i]; + m_smpc_hle->set_oreg(1+i, m_smpc.rtc_data[i]); - m_smpc.OREG[8]=0x00; // CTG0 / CTG1? + m_smpc_hle->set_oreg(8,0); // CTG0 / CTG1? - m_smpc.OREG[9]=0x00; // TODO: system region on Saturn + m_smpc_hle->set_oreg(9,0); // TODO: system region on Saturn - m_smpc.OREG[10]= 0 << 7 | + /* + 0-11 -1-- unknown + -x-- ---- VDP2 dot select + ---- x--- MSHNMI + ---- --x- SYSRES + ---- ---x SOUNDRES + */ + m_smpc_hle->set_oreg(10, 0 << 7 | m_vdp2.dotsel << 6 | 1 << 5 | 1 << 4 | - 0 << 3 | //MSHNMI + 0 << 3 | 1 << 2 | - 0 << 1 | //SYSRES - 0 << 0; //SOUNDRES - m_smpc.OREG[11]= 0 << 6; //CDRES + 0 << 1 | + 0 << 0); + + m_smpc_hle->set_oreg(11,0 << 6); //CDRES for(i=0;i<4;i++) - m_smpc.OREG[12+i]=m_smpc.SMEM[i]; + m_smpc_hle->set_oreg(12+i,m_smpc.SMEM[i]); for(i=0;i<15;i++) - m_smpc.OREG[16+i]=0xff; // undefined + m_smpc_hle->set_oreg(16+i,0xff); // undefined m_smpc.intback_stage = (m_smpc.intback_buf[1] & 8) >> 3; // first peripheral m_smpc_hle->sr_set(0x40 | (m_smpc.intback_stage << 5)); @@ -565,7 +612,7 @@ TIMER_CALLBACK_MEMBER( saturn_state::stv_smpc_intback ) m_smpc_hle->irq_request(); /* put issued command in OREG31 */ - m_smpc.OREG[31] = 0x10; // TODO: doc says 0? + m_smpc_hle->set_oreg(31,0x10); // TODO: doc says 0? /* clear hand-shake flag */ m_smpc_hle->sf_ack(false); } @@ -573,13 +620,13 @@ TIMER_CALLBACK_MEMBER( saturn_state::stv_smpc_intback ) { m_smpc.intback_stage = (m_smpc.intback_buf[1] & 8) >> 3; // first peripheral m_smpc_hle->sr_set(0x40); - m_smpc.OREG[31] = 0x10; + m_smpc_hle->set_oreg(31,0x10); machine().scheduler().timer_set(attotime::from_usec(0), timer_expired_delegate(FUNC(saturn_state::stv_intback_peripheral),this),0); } else { /* Shienryu calls this, it would be plainly illegal on Saturn, I'll just return the command and clear the hs flag for now. */ - m_smpc.OREG[31] = 0x10; + m_smpc_hle->set_oreg(31,0x10); m_smpc_hle->sf_ack(false); } } @@ -629,24 +676,32 @@ TIMER_CALLBACK_MEMBER( saturn_state::intback_peripheral ) uint8_t ctrl1_offset = 0; // this is used when there is segatap or multitap connected uint8_t ctrl2_offset = 0; // this is used when there is segatap or multitap connected - m_smpc.OREG[reg_offset++] = status1; + m_smpc_hle->set_oreg(reg_offset++,status1); + // read ctrl1 for (int i = 0; i < (status1 & 0xf); i++) { uint8_t id = m_ctrl1->read_id(i); - m_smpc.OREG[reg_offset++] = id; + + m_smpc_hle->set_oreg(reg_offset++,id); for (int j = 0; j < (id & 0xf); j++) - m_smpc.OREG[reg_offset++] = m_ctrl1->read_ctrl(j + ctrl1_offset); + m_smpc_hle->set_oreg(reg_offset++,m_ctrl1->read_ctrl(j + ctrl1_offset)); + ctrl1_offset += (id & 0xf); } - m_smpc.OREG[reg_offset++] = status2; + + m_smpc_hle->set_oreg(reg_offset++,status2); + // read ctrl2 for (int i = 0; i < (status2 & 0xf); i++) { uint8_t id = m_ctrl2->read_id(i); - m_smpc.OREG[reg_offset++] = id; + + m_smpc_hle->set_oreg(reg_offset++,id); + for (int j = 0; j < (id & 0xf); j++) - m_smpc.OREG[reg_offset++] = m_ctrl2->read_ctrl(j + ctrl2_offset); + m_smpc_hle->set_oreg(reg_offset++,m_ctrl2->read_ctrl(j + ctrl2_offset)); + ctrl2_offset += (id & 0xf); } @@ -663,10 +718,11 @@ TIMER_CALLBACK_MEMBER( saturn_state::intback_peripheral ) m_smpc_hle->irq_request(); - m_smpc.OREG[31] = 0x10; /* callback for last command issued */ + m_smpc_hle->set_oreg(31,0x10); /* callback for last command issued */ m_smpc_hle->sf_ack(false); } +// TODO: duplicated code TIMER_CALLBACK_MEMBER( saturn_state::saturn_smpc_intback ) { if(m_smpc.intback_buf[0] != 0) @@ -674,30 +730,31 @@ TIMER_CALLBACK_MEMBER( saturn_state::saturn_smpc_intback ) { int i; - m_smpc.OREG[0] = (0x80) | ((m_NMI_reset & 1) << 6); // bit 7: SETTIME (RTC isn't setted up properly) + m_smpc_hle->set_oreg(0, (0x80) | ((m_NMI_reset & 1) << 6)); // bit 7: SETTIME (RTC isn't setted up properly) for(i=0;i<7;i++) - m_smpc.OREG[1+i] = m_smpc.rtc_data[i]; + m_smpc_hle->set_oreg(1+i, m_smpc.rtc_data[i]); - m_smpc.OREG[8]=0x00; //Cartridge code? + m_smpc_hle->set_oreg(8, 0); //Cartridge code? - m_smpc.OREG[9] = m_saturn_region; + m_smpc_hle->set_oreg(9, m_saturn_region); - m_smpc.OREG[10]= 0 << 7 | + m_smpc_hle->set_oreg(10, 0 << 7 | m_vdp2.dotsel << 6 | 1 << 5 | 1 << 4 | - 0 << 3 | //MSHNMI + 0 << 3 | 1 << 2 | - 0 << 1 | //SYSRES - 0 << 0; //SOUNDRES - m_smpc.OREG[11]= 0 << 6; //CDRES + 0 << 1 | + 0 << 0); + + m_smpc_hle->set_oreg(11,0 << 6); //CDRES for(i=0;i<4;i++) - m_smpc.OREG[12+i]=m_smpc.SMEM[i]; + m_smpc_hle->set_oreg(12+i,m_smpc.SMEM[i]); for(i=0;i<15;i++) - m_smpc.OREG[16+i]=0xff; // undefined + m_smpc_hle->set_oreg(16+i,0xff); // undefined } m_smpc.intback_stage = (m_smpc.intback_buf[1] & 8) >> 3; // first peripheral @@ -707,7 +764,7 @@ TIMER_CALLBACK_MEMBER( saturn_state::saturn_smpc_intback ) m_smpc_hle->irq_request(); /* put issued command in OREG31 */ - m_smpc.OREG[31] = 0x10; + m_smpc_hle->set_oreg(31,0x10); /* clear hand-shake flag */ m_smpc_hle->sf_ack(false); } @@ -715,12 +772,12 @@ TIMER_CALLBACK_MEMBER( saturn_state::saturn_smpc_intback ) { m_smpc.intback_stage = (m_smpc.intback_buf[1] & 8) >> 3; // first peripheral m_smpc_hle->sr_set(0x40); - m_smpc.OREG[31] = 0x10; + m_smpc_hle->set_oreg(31,0x10); machine().scheduler().timer_set(attotime::from_usec(0), timer_expired_delegate(FUNC(saturn_state::intback_peripheral),this),0); } else { - printf("SMPC intback bogus behaviour called %02x %02x\n",m_smpc.IREG[0],m_smpc.IREG[1]); +// printf("SMPC intback bogus behaviour called %02x %02x\n",m_smpc.IREG[0],m_smpc.IREG[1]); } } @@ -730,7 +787,7 @@ void saturn_state::smpc_rtc_write() int i; for(i=0;i<7;i++) - m_smpc.rtc_data[i] = m_smpc.IREG[i]; + m_smpc.rtc_data[i] = m_smpc_hle->get_ireg(i); } void saturn_state::smpc_memory_setting() @@ -738,14 +795,13 @@ void saturn_state::smpc_memory_setting() int i; for(i=0;i<4;i++) - m_smpc.SMEM[i] = m_smpc.IREG[i]; + m_smpc.SMEM[i] = m_smpc_hle->get_ireg(i); } void saturn_state::smpc_nmi_req() { - /*NMI is unconditionally requested */ - m_smpc_hle->master_sh2_nmi(1); - m_smpc_hle->master_sh2_nmi(0); + // NMI is unconditionally requested + m_smpc_hle->master_sh2_nmi(); } TIMER_CALLBACK_MEMBER( saturn_state::smpc_nmi_set ) @@ -754,11 +810,10 @@ TIMER_CALLBACK_MEMBER( saturn_state::smpc_nmi_set ) m_NMI_reset = param; /* put issued command in OREG31 */ - m_smpc.OREG[31] = 0x19 + param; + m_smpc_hle->set_oreg(31,0x19 + param); + /* clear hand-shake flag */ m_smpc_hle->sf_ack(false); - - //m_smpc.OREG[0] = (0x80) | ((m_NMI_reset & 1) << 6); } @@ -826,18 +881,18 @@ void saturn_state::smpc_comreg_exec(address_space &space, uint8_t data, uint8_t case 0x10: if(0) { - printf ("SMPC: Status Acquire %02x %02x %02x %d\n",m_smpc.IREG[0],m_smpc.IREG[1],m_smpc.IREG[2],machine().first_screen()->vpos()); +// printf ("SMPC: Status Acquire %02x %02x %02x %d\n" m_smpc_hle->get_ireg(0),m_smpc.IREG[1],m_smpc.IREG[2],machine().first_screen()->vpos()); } int timing; timing = 8; - if(m_smpc.IREG[0] != 0) // non-peripheral data + if( m_smpc_hle->get_ireg(0) != 0) // non-peripheral data timing += 8; /* TODO: At vblank-out actually ... */ - if(m_smpc.IREG[1] & 8) // peripheral data + if( m_smpc_hle->get_ireg(1) & 8) // peripheral data timing += 700; /* TODO: check if IREG[2] is setted to 0xf0 */ @@ -845,7 +900,7 @@ void saturn_state::smpc_comreg_exec(address_space &space, uint8_t data, uint8_t int i; for(i=0;i<3;i++) - m_smpc.intback_buf[i] = m_smpc.IREG[i]; + m_smpc.intback_buf[i] = m_smpc_hle->get_ireg(i); } if(is_stv) @@ -854,7 +909,7 @@ void saturn_state::smpc_comreg_exec(address_space &space, uint8_t data, uint8_t } else { - if(LOG_PAD_CMD) printf("INTBACK %02x %02x %d %d\n",m_smpc.IREG[0],m_smpc.IREG[1],machine().first_screen()->vpos(),(int)machine().first_screen()->frame_number()); + //if(LOG_PAD_CMD) printf("INTBACK %02x %02x %d %d\n",m_smpc.IREG[0],m_smpc.IREG[1],machine().first_screen()->vpos(),(int)machine().first_screen()->frame_number()); machine().scheduler().timer_set(attotime::from_usec(timing), timer_expired_delegate(FUNC(saturn_state::saturn_smpc_intback),this),0); //TODO: is variable time correct? } break; @@ -896,8 +951,8 @@ READ8_MEMBER( saturn_state::stv_SMPC_r ) if(!(offset & 1)) return 0; - if(offset >= 0x21 && offset <= 0x5f) - return_data = m_smpc.OREG[(offset-0x21) >> 1]; + if(offset >= 0x20 && offset <= 0x5f) + return_data = m_smpc_hle->read(space,offset); if (offset == 0x61) // TODO: SR return_data = m_smpc_hle->read(space,offset); @@ -922,8 +977,9 @@ WRITE8_MEMBER( saturn_state::stv_SMPC_w ) // if(LOG_SMPC) printf ("8-bit SMPC Write to Offset %02x with Data %02x\n", offset, data); if(offset >= 1 && offset <= 0xd) - m_smpc.IREG[offset >> 1] = data; + m_smpc_hle->write(space,offset,data); + if(offset == 1) //IREG0, check if a BREAK / CONTINUE request for INTBACK command { if(m_smpc.intback_stage) @@ -938,7 +994,7 @@ WRITE8_MEMBER( saturn_state::stv_SMPC_w ) { if(LOG_PAD_CMD) printf("SMPC: CONTINUE request\n"); machine().scheduler().timer_set(attotime::from_usec(700), timer_expired_delegate(FUNC(saturn_state::stv_intback_peripheral),this),0); /* TODO: is timing correct? */ - m_smpc.OREG[31] = 0x10; + m_smpc_hle->set_oreg(31,0x10); m_smpc_hle->sf_set(); } } @@ -951,7 +1007,7 @@ WRITE8_MEMBER( saturn_state::stv_SMPC_w ) // we've processed the command, clear status flag if(data != 0x10 && data != 0x02 && data != 0x03 && data != 0x08 && data != 0x09 && data != 0xe && data != 0xf && data != 0x19 && data != 0x1a) { - m_smpc.OREG[31] = data; //read-back command + m_smpc_hle->set_oreg(31,data); m_smpc_hle->sf_ack(false); } /*TODO:emulate the timing of each command...*/ @@ -1001,8 +1057,8 @@ READ8_MEMBER( saturn_state::saturn_SMPC_r ) if (!(offset & 1)) // avoid reading to even bytes (TODO: is it 0s or 1s?) return 0x00; - if(offset >= 0x21 && offset <= 0x5f) - return_data = m_smpc.OREG[(offset-0x21) >> 1]; + if(offset >= 0x20 && offset <= 0x5f) + return_data = m_smpc_hle->read(space,offset); if (offset == 0x61) return_data = m_smpc_hle->read(space,offset); @@ -1056,7 +1112,7 @@ WRITE8_MEMBER( saturn_state::saturn_SMPC_w ) return; if(offset >= 1 && offset <= 0xd) - m_smpc.IREG[offset >> 1] = data; + m_smpc_hle->write(space,offset,data); if(offset == 1) //IREG0, check if a BREAK / CONTINUE request for INTBACK command { @@ -1072,7 +1128,7 @@ WRITE8_MEMBER( saturn_state::saturn_SMPC_w ) { if(LOG_PAD_CMD) printf("SMPC: CONTINUE request %02x\n",data); machine().scheduler().timer_set(attotime::from_usec(700), timer_expired_delegate(FUNC(saturn_state::intback_peripheral),this),0); /* TODO: is timing correct? */ - m_smpc.OREG[31] = 0x10; + m_smpc_hle->set_oreg(31,0x10); m_smpc_hle->sf_set(); //TODO: set hand-shake flag? } } @@ -1085,7 +1141,7 @@ WRITE8_MEMBER( saturn_state::saturn_SMPC_w ) // we've processed the command, clear status flag if(data != 0x10 && data != 2 && data != 3 && data != 6 && data != 7 && data != 0x08 && data != 0x09 && data != 0x0e && data != 0x0f && data != 0x19 && data != 0x1a) { - m_smpc.OREG[31] = data; //read-back for last command issued + m_smpc_hle->set_oreg(31,data); //read-back for last command issued m_smpc_hle->sf_ack(false); //clear hand-shake flag } // TODO: emulate the timing of each command... diff --git a/src/devices/machine/smpc.h b/src/devices/machine/smpc.h index f5bcdc1144e..359194bfe6b 100644 --- a/src/devices/machine/smpc.h +++ b/src/devices/machine/smpc.h @@ -74,6 +74,8 @@ public: virtual space_config_vector memory_space_config() const override; // I/O operations + DECLARE_WRITE8_MEMBER( ireg_w ); + DECLARE_READ8_MEMBER( oreg_r ); DECLARE_READ8_MEMBER( status_register_r ); DECLARE_WRITE8_MEMBER( status_flag_w ); DECLARE_READ8_MEMBER( status_flag_r ); @@ -86,6 +88,7 @@ public: DECLARE_WRITE8_MEMBER( iosel_w ); DECLARE_WRITE8_MEMBER( exle_w ); + // TODO: public stuff & trampolines that should be internal to the device DECLARE_WRITE8_MEMBER( write ); DECLARE_READ8_MEMBER( read ); @@ -94,7 +97,7 @@ public: void sf_ack(bool cd_enable); void sf_set(); void master_sh2_reset(bool state); - void master_sh2_nmi(bool state); + void master_sh2_nmi(); void slave_sh2_reset(bool state); void sound_reset(bool state); void system_reset(bool state); @@ -104,7 +107,9 @@ public: bool get_iosel(bool which); uint8_t get_ddr(bool which); - + uint8_t get_ireg(uint8_t offset); + void set_oreg(uint8_t offset,uint8_t data); + // system delegation template <class Object> static devcb_base &set_master_reset_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_mshres.set_callback(std::forward<Object>(cb)); } template <class Object> static devcb_base &set_master_nmi_handler(device_t &device, Object &&cb) { return downcast<smpc_hle_device &>(device).m_mshnmi.set_callback(std::forward<Object>(cb)); } @@ -143,6 +148,8 @@ private: uint8_t m_pdr1_readback, m_pdr2_readback; bool m_iosel1, m_iosel2; bool m_exle1, m_exle2; + uint8_t m_ireg[7]; + uint8_t m_oreg[32]; devcb_write_line m_mshres; devcb_write_line m_mshnmi; diff --git a/src/mame/includes/saturn.h b/src/mame/includes/saturn.h index 2c5d10c26c9..82e358b2a60 100644 --- a/src/mame/includes/saturn.h +++ b/src/mame/includes/saturn.h @@ -138,9 +138,9 @@ public: // uint8_t DDR2; // uint8_t SF; // uint8_t SR; - uint8_t IREG[7]; +// uint8_t IREG[7]; uint8_t intback_buf[7]; - uint8_t OREG[32]; +// uint8_t OREG[32]; int intback_stage; int pmode; uint8_t SMEM[4]; |