diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp index d60d91076d4..dc0ea99767e 100644 --- a/src/mame/drivers/apple2e.cpp +++ b/src/mame/drivers/apple2e.cpp @@ -761,6 +761,7 @@ void apple2e_state::machine_reset() { m_page2 = false; m_video->m_page2 = false; + m_video->m_monohgr = false; m_an0 = m_an1 = m_an2 = m_an3 = false; m_vbl = m_vblmask = false; m_slotc3rom = false; @@ -1080,17 +1081,24 @@ void apple2e_state::update_slotrom_banks() if (!m_intcxrom) { m_c100bank->set_bank(3); - m_c300bank->set_bank(3); m_c400bank->set_bank(3); m_c800bank->set_bank(3); } else { m_c100bank->set_bank(4); - m_c300bank->set_bank(4); m_c400bank->set_bank(4); m_c800bank->set_bank(4); } + + if ((m_intcxrom) || (!m_slotc3rom)) + { + m_c300bank->set_bank(4); + } + else + { + m_c300bank->set_bank(3); + } } } @@ -2039,6 +2047,15 @@ WRITE8_MEMBER(apple2e_state::c080_w) if (data != m_cec_bank) { m_cec_bank = data; + if (data & 0x10) + { + m_video->m_monohgr = false; + } + else + { + m_video->m_monohgr = true; + } + auxbank_update(); update_slotrom_banks(); } @@ -2778,7 +2795,7 @@ WRITE_LINE_MEMBER(apple2e_state::ay3600_data_ready_w) m_transchar = decode[trans]; m_strobe = 0x80; -// printf("new char = %04x (%02x)\n", m_lastchar, m_transchar); + //printf("new char = %04x (%02x)\n", m_lastchar, m_transchar); } } @@ -3057,8 +3074,8 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k') PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s') PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("F4") - PORT_BIT(0x240, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') + PORT_BIT(0x240, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X1") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') @@ -3068,7 +3085,7 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l') PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t') PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("F5") - PORT_BIT(0x340, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') + PORT_BIT(0x340, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X2") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"') @@ -3079,7 +3096,7 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u') PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("CN") PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) - PORT_BIT(0x300, IP_ACTIVE_HIGH, IPT_KEYBOARD) + PORT_BIT(0x300, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X3") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') @@ -3089,7 +3106,7 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n') PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v') PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) - PORT_BIT(0x340, IP_ACTIVE_HIGH, IPT_KEYBOARD) + PORT_BIT(0x340, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X4") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') @@ -3101,7 +3118,7 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("EN") PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("STOP") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) - PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X5") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') @@ -3112,7 +3129,7 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x') PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("F1") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) - PORT_BIT(0x280, IP_ACTIVE_HIGH, IPT_KEYBOARD) + PORT_BIT(0x280, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X6") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') @@ -3123,7 +3140,7 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y') PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("F2") PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(10) - PORT_BIT(0x280, IP_ACTIVE_HIGH, IPT_KEYBOARD) + PORT_BIT(0x280, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X7") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') @@ -3135,7 +3152,7 @@ static INPUT_PORTS_START( ceci ) PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("F3") PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) - PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_START("X8") PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_UNUSED) diff --git a/src/mame/video/apple2.cpp b/src/mame/video/apple2.cpp index 19d07343d00..a88bdabd748 100644 --- a/src/mame/video/apple2.cpp +++ b/src/mame/video/apple2.cpp @@ -1368,6 +1368,12 @@ void a2_video_device::hgr_update(screen_device &screen, bitmap_ind16 &bitmap, co artifact_map_ptr = &m_hires_artifact_map[((vram_row[col + 1] & 0x80) >> 7) * 16]; } + // CEC mono HGR mode + if ((m_monohgr) && (mon_type == 0)) + { + mon_type = 1; + } + switch (mon_type) { case 0: diff --git a/src/mame/video/apple2.h b/src/mame/video/apple2.h index b9bc4b5f44f..d843ce78887 100644 --- a/src/mame/video/apple2.h +++ b/src/mame/video/apple2.h @@ -28,6 +28,8 @@ public: bool m_80col; bool m_altcharset; bool m_an2; + bool m_monohgr; + std::unique_ptr m_hires_artifact_map; std::unique_ptr m_dhires_artifact_map;