Previous 199869 Revisions Next

r29503 Wednesday 9th April, 2014 at 18:31:16 UTC by hap
assume portb high bit is read-only
[src/mame/drivers]namcos12.c namcos23.c

trunk/src/mame/drivers/namcos12.c
r29502r29503
10771077
10781078   int m_ttt_cnt;
10791079   UINT32 m_ttt_val[2];
1080   int m_s12_porta;
1081   int m_s12_lastpB;
1080   UINT8 m_sub_porta;
1081   UINT8 m_sub_portb;
10821082
10831083   DECLARE_WRITE16_MEMBER(sharedram_w);
10841084   DECLARE_READ16_MEMBER(sharedram_r);
r29502r29503
12351235{
12361236   m_sub->set_input_line(1, vblank_state ? ASSERT_LINE : CLEAR_LINE);
12371237   m_adc->adtrg_w(vblank_state);
1238   m_s12_lastpB = (m_s12_lastpB & 0x7f) | (vblank_state << 7);
1238   m_sub_portb = (m_sub_portb & 0x7f) | (vblank_state << 7);
12391239}
12401240
12411241static ADDRESS_MAP_START( namcos12_map, AS_PROGRAM, 32, namcos12_state )
r29502r29503
14731473
14741474READ16_MEMBER(namcos12_state::s12_mcu_pa_r)
14751475{
1476   return m_s12_porta;
1476   return m_sub_porta;
14771477}
14781478
14791479WRITE16_MEMBER(namcos12_state::s12_mcu_pa_w)
14801480{
14811481   logerror("pa_w %02x\n", data);
1482   m_s12_porta = data;
1483   m_rtc->ce_w((m_s12_lastpB & 0x20) && (m_s12_porta & 1));
1484   m_settings->ce_w((m_s12_lastpB & 0x20) && !(m_s12_porta & 1));
1482   m_sub_porta = data;
1483   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
1484   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
14851485}
14861486
14871487READ16_MEMBER(namcos12_state::s12_mcu_portB_r)
14881488{
1489   return m_s12_lastpB;
1489   return m_sub_portb;
14901490}
14911491
14921492WRITE16_MEMBER(namcos12_state::s12_mcu_portB_w)
14931493{
1494   m_s12_lastpB = data;
1495   m_rtc->ce_w((m_s12_lastpB & 0x20) && (m_s12_porta & 1));
1496   m_settings->ce_w((m_s12_lastpB & 0x20) && !(m_s12_porta & 1));
1494   m_sub_portb = (m_sub_portb & 0x80) | (data & 0x7f);
1495   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
1496   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
14971497}
14981498
14991499static ADDRESS_MAP_START( s12h8iomap, AS_IO, 16, namcos12_state )
r29502r29503
15371537{
15381538   membank("bank1")->configure_entries(0, memregion( "user2" )->bytes() / 0x200000, memregion( "user2" )->base(), 0x200000 );
15391539
1540   m_s12_porta = 0;
1541   m_s12_lastpB = 0x50;
1540   m_sub_porta = 0;
1541   m_sub_portb = 0x50;
15421542
15431543   m_n_tektagdmaoffset = 0;
15441544   m_n_dmaoffset = 0;
trunk/src/mame/drivers/namcos23.c
r29502r29503
14471447   UINT16 m_c435_buffer[256];
14481448   int m_c435_buffer_pos;
14491449
1450   int m_porta;
1451   int m_lastpb;
1450   UINT8 m_sub_porta;
1451   UINT8 m_sub_portb;
14521452   UINT8 m_tssio_port_4;
14531453
14541454   void update_main_interrupts(UINT32 cause);
r29502r29503
15081508   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
15091509   INTERRUPT_GEN_MEMBER(interrupt);
15101510   TIMER_CALLBACK_MEMBER(c361_timer_cb);
1511   void sub_irq(screen_device &screen, bool state);
1511   void sub_irq(screen_device &screen, bool vblank_state);
15121512   UINT8 nthbyte(const UINT32 *pSource, int offs);
15131513   UINT16 nthword(const UINT32 *pSource, int offs);
15141514   inline INT32 u32_to_s24(UINT32 v);
r29502r29503
22552255   m_render.count[m_render.cur] = 0;
22562256}
22572257
2258void namcos23_state::sub_irq(screen_device &screen, bool state)
2258void namcos23_state::sub_irq(screen_device &screen, bool vblank_state)
22592259{
2260   m_subcpu->set_input_line(1, state ? ASSERT_LINE : CLEAR_LINE);
2261   m_adc->adtrg_w(state);
2262   m_lastpb = (m_lastpb & 0x7f) | (state << 7);
2260   m_subcpu->set_input_line(1, vblank_state ? ASSERT_LINE : CLEAR_LINE);
2261   m_adc->adtrg_w(vblank_state);
2262   m_sub_portb = (m_sub_portb & 0x7f) | (vblank_state << 7);
22632263}
22642264
22652265
r29502r29503
28612861
28622862READ16_MEMBER(namcos23_state::mcu_pa_r)
28632863{
2864   return m_porta;
2864   return m_sub_porta;
28652865}
28662866
28672867WRITE16_MEMBER(namcos23_state::mcu_pa_w)
28682868{
28692869   m_rtc->ce_w(data & 1);
2870   m_porta = data;
2871   m_rtc->ce_w((m_lastpb & 0x20) && (m_porta & 1));
2872   m_settings->ce_w((m_lastpb & 0x20) && !(m_porta & 1));
2870   m_sub_porta = data;
2871   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
2872   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
28732873}
28742874
28752875
r29502r29503
28782878
28792879READ16_MEMBER(namcos23_state::mcu_pb_r)
28802880{
2881   return m_lastpb;
2881   return m_sub_portb;
28822882}
28832883
28842884WRITE16_MEMBER(namcos23_state::mcu_pb_w)
28852885{
2886   m_lastpb = data;
2887   m_rtc->ce_w((m_lastpb & 0x20) && (m_porta & 1));
2888   m_settings->ce_w((m_lastpb & 0x20) && !(m_porta & 1));
2886   m_sub_portb = (m_sub_portb & 0x80) | (data & 0x7f);
2887   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
2888   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
28892889}
28902890
28912891
r29502r29503
32563256   m_jvssense = 1;
32573257   m_main_irqcause = 0;
32583258   m_ctl_vbl_active = false;
3259   m_lastpb = 0x50;
3259   m_sub_portb = 0x50;
32603260   m_tssio_port_4 = 0;
3261   m_porta = 0;
3261   m_sub_porta = 0;
32623262   m_subcpu_running = false;
32633263   m_render.count[0] = m_render.count[1] = 0;
32643264   m_render.cur = 0;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team