diff options
| author | 2025-10-01 13:32:08 -0400 | |
|---|---|---|
| committer | 2025-10-01 19:32:08 +0200 | |
| commit | e62c2c924f6faf805f14a9a924fe6a7e83a26ae4 (patch) | |
| tree | 757d985259e0f91a616598c1be5a9b059807ec8d | |
| parent | c248948d6500bdcfd54da21fd910432b60cc8d30 (diff) | |
sinclair/screen_ula.cpp: Fixed Timex screen1 selection (#14247)
| -rw-r--r-- | src/mame/sinclair/screen_ula.cpp | 3 | ||||
| -rw-r--r-- | src/mame/sinclair/specnext.cpp | 7 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/mame/sinclair/screen_ula.cpp b/src/mame/sinclair/screen_ula.cpp index b354b0f1012..06b1abbe1fe 100644 --- a/src/mame/sinclair/screen_ula.cpp +++ b/src/mame/sinclair/screen_ula.cpp @@ -94,10 +94,11 @@ void screen_ula_device::draw(screen_device &screen, bitmap_rgb32 &bitmap, const void screen_ula_device::draw_ula(bitmap_rgb32 &bitmap, const rectangle &clip, bool flash, bitmap_ind8 &priority_bitmap, u8 pcode) { const bool hicolor = screen_mode() == 2; // timex hicolor + const bool timex_alt = !m_ula_shadow_en && screen_mode() == 1; flash &= !m_ulanext_en && !m_ulap_en; const rgb_t gt0 = rgbexpand<3,3,3>((m_global_transparent << 1) | 0, 6, 3, 0); const rgb_t gt1 = rgbexpand<3,3,3>((m_global_transparent << 1) | 1, 6, 3, 0); - const u8 *screen_location = m_host_ram_ptr + ((m_ula_shadow_en ? 7 : 5) << 14); + const u8 *screen_location = m_host_ram_ptr + ((m_ula_shadow_en ? 7 : 5) << 14) + (timex_alt ? 0x2000 : 0); const u16 x_min = (((clip.left() - m_offset_h) >> 1) + m_ula_scroll_x) % SCREEN_AREA.width(); for (u16 vpos = clip.top(); vpos <= clip.bottom(); vpos++) diff --git a/src/mame/sinclair/specnext.cpp b/src/mame/sinclair/specnext.cpp index 18f3f942db3..1a28ea21367 100644 --- a/src/mame/sinclair/specnext.cpp +++ b/src/mame/sinclair/specnext.cpp @@ -1038,6 +1038,7 @@ u8 specnext_state::port_ff_r() void specnext_state::port_ff_w(u8 data) { + m_screen->update_now(); m_port_ff_data = data; // ==port_ff_dat_tmx m_ula_scr->port_ff_reg_w(m_port_ff_data); nr_6a_lores_radastan_xor_w(m_nr_6a_lores_radastan_xor); @@ -1972,7 +1973,7 @@ void specnext_state::reg_w(offs_t nr_wr_reg, u8 nr_wr_dat) m_nr_22_line_interrupt_en = BIT(nr_wr_dat, 1); m_nr_23_line_interrupt = (m_nr_23_line_interrupt & ~0x0100) | (BIT(nr_wr_dat, 0) << 8); line_irq_adjust(); - m_port_ff_data = (m_port_ff_data & 0xbf) | (BIT(nr_wr_dat, 1) << 6); + port_ff_w((m_port_ff_data & 0xbf) | (BIT(nr_wr_dat, 1) << 6)); break; case 0x23: m_nr_23_line_interrupt = (m_nr_23_line_interrupt & ~0x00ff) | nr_wr_dat; @@ -2128,7 +2129,7 @@ void specnext_state::reg_w(offs_t nr_wr_reg, u8 nr_wr_dat) m_nr_68_ula_stencil_mode = BIT(nr_wr_dat, 0); break; case 0x69: - m_port_ff_data = (m_port_ff_data & 0xc0) | (nr_wr_dat & 0x3f); + port_ff_w((m_port_ff_data & 0xc0) | (nr_wr_dat & 0x3f)); port_7ffd_reg_w((m_port_7ffd_data & ~0x08) | (BIT(nr_wr_dat, 6) << 3)); port_123b_layer2_en_w(BIT(nr_wr_dat, 7)); break; @@ -2291,7 +2292,7 @@ void specnext_state::reg_w(offs_t nr_wr_reg, u8 nr_wr_dat) m_nr_c4_int_en_0_expbus = BIT(nr_wr_dat, 7); m_nr_22_line_interrupt_en = BIT(nr_wr_dat, 1); line_irq_adjust(); - m_port_ff_data = (m_port_ff_data & 0xbf) | (BIT(~nr_wr_dat, 0) << 6); + port_ff_w((m_port_ff_data & 0xbf) | (BIT(~nr_wr_dat, 0) << 6)); break; case 0xc5: { |
