diff options
Diffstat (limited to 'src/mame/sinclair/atm.cpp')
-rw-r--r-- | src/mame/sinclair/atm.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/mame/sinclair/atm.cpp b/src/mame/sinclair/atm.cpp index ea2e3ce5307..fddfa0ddb24 100644 --- a/src/mame/sinclair/atm.cpp +++ b/src/mame/sinclair/atm.cpp @@ -95,7 +95,7 @@ void atm_state::atm_port_ff_w(offs_t offset, u8 data) { // Must read current ULA value (which is doesn't work now) from the BUS. // Good enough as non-border case is too complicated and possibly no software uses it. - u8 pen = get_border_color(m_screen->hpos(), m_screen->vpos()); + u8 pen = 0x0f & get_border_color(m_screen->hpos(), m_screen->vpos()); m_palette_data[pen] = data; m_palette->set_pen_color(pen, (BIT(~data, 1) * 0xaa) | (BIT(~data, 6) * 0x55), @@ -181,12 +181,12 @@ u8 atm_state::get_border_color(u16 hpos, u16 vpos) void atm_state::atm_update_video_mode() { - bool zx_scale = m_rg == 0b011; + bool zx_scale = m_rg & 1; bool double_width = BIT(m_rg, 1) && !zx_scale; - u8 border_x = (40 - (32 * !zx_scale)) << double_width; + u8 border_x = (40 - (32 * !zx_scale)) << (double_width ? 1 : 0); u8 border_y = (40 - (4 * !zx_scale)); rectangle scr = get_screen_area(); - m_screen->configure(448 << double_width, m_screen->height(), {scr.left() - border_x, scr.right() + border_x, scr.top() - border_y, scr.bottom() + border_y}, m_screen->frame_period().as_attoseconds()); + m_screen->configure(448 << (double_width ? 1 : 0), m_screen->height(), {scr.left() - border_x, scr.right() + border_x, scr.top() - border_y, scr.bottom() + border_y}, m_screen->frame_period().as_attoseconds()); LOGVIDEO("Video mode: %d\n", m_rg); //spectrum_palette(m_palette); @@ -431,8 +431,6 @@ void atm_state::machine_start() ram_pages_mask = (m_ram->size() - 1) / 0x4000; m_bank_ram[0]->configure_entries(0, ram_pages_mask + 1, m_ram->pointer(), 0x4000); - - m_maincpu->space(AS_PROGRAM).specific(m_program); } void atm_state::machine_reset() @@ -440,12 +438,12 @@ void atm_state::machine_reset() m_beta->enable(); m_beta_drive_selected = 0; + m_port_fe_data = -1; m_port_7ffd_data = 0; m_port_1ffd_data = -1; m_port_77_data = 0; m_br3 = 0; - m_palette_data = { 0xff }; atm_port_77_w(0x4000, 3); // m_port_77_data: CPM=0(on), PEN=0(off), PEN2=1(off); vmode: zx } @@ -505,7 +503,7 @@ void atm_state::atm(machine_config &config) m_maincpu->set_addrmap(AS_IO, &atm_state::atm_io); m_maincpu->set_addrmap(AS_OPCODES, &atm_state::atm_switch); m_maincpu->set_vblank_int("screen", FUNC(atm_state::atm_interrupt)); - m_maincpu->nomreq_cb().set_nop(); + m_maincpu->nomreq_cb().remove(); m_screen->set_raw(X1_128_SINCLAIR / 5, 448, 312, {get_screen_area().left() - 40, get_screen_area().right() + 40, get_screen_area().top() - 40, get_screen_area().bottom() + 40}); subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_atm); |