luna_88k: fix video ram addressing

This commit is contained in:
Patrick Mackinlay 2023-03-27 18:41:43 +07:00
parent c971cb8dc8
commit 2e6141abb0

View File

@ -9,6 +9,7 @@
* - Tetsuya Isaki's nono LUNA emulator (http://www.pastel-flower.jp/~isaki/nono/)
*
* TODO:
* - keyboard
* - scsi controller
* - xp i/o controller
* - lance memory
@ -19,7 +20,6 @@
*
* WIP:
* - scsi probe/boot hangs
* - doesn't boot to graphics
*/
/*
@ -345,7 +345,7 @@ void luna_88k_state::luna88k2(machine_config &config)
m_sio->out_int_callback().set(&luna_88k_state::irq<0, 5>, "irq0,5");
// RS-232C-A
RS232_PORT(config, m_serial[0], default_rs232_devices, "terminal");
RS232_PORT(config, m_serial[0], default_rs232_devices, nullptr);
m_sio->out_txda_callback().set(m_serial[0], FUNC(rs232_port_device::write_txd));
m_sio->out_dtra_callback().set(m_serial[0], FUNC(rs232_port_device::write_dtr));
m_sio->out_rtsa_callback().set(m_serial[0], FUNC(rs232_port_device::write_rts));
@ -430,7 +430,6 @@ void luna_88k_state::luna88k2(machine_config &config)
MB89352A(config, m_spc[0], 0);
m_spc[0]->irq_cb().set(spc_irq, FUNC(input_merger_any_high_device::in_w<0>));
m_spc[0]->drq_cb().set(spc_irq, FUNC(input_merger_any_high_device::in_w<2>));
m_spc[0]->set_scsi_port("scsi0");
MB89352A(config, m_spc[1], 0);
@ -471,16 +470,17 @@ u32 luna_88k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, r
{
for (int x = screen.visible_area().min_x; x <= screen.visible_area().max_x; x += 32)
{
u32 const plane0 = m_vram[0 * 0x1'0000 + (x >> 5)];
u32 const plane1 = m_vram[1 * 0x1'0000 + (x >> 5)];
u32 const plane2 = m_vram[2 * 0x1'0000 + (x >> 5)];
u32 const plane3 = m_vram[3 * 0x1'0000 + (x >> 5)];
u32 const plane4 = m_vram[4 * 0x1'0000 + (x >> 5)];
u32 const plane5 = m_vram[5 * 0x1'0000 + (x >> 5)];
u32 const plane6 = m_vram[6 * 0x1'0000 + (x >> 5)];
u32 const plane7 = m_vram[7 * 0x1'0000 + (x >> 5)];
unsigned const offset = (y * 64) + (x >> 5);
u32 const plane0 = m_vram[0 * 0x1'0000 + offset];
u32 const plane1 = m_vram[1 * 0x1'0000 + offset];
u32 const plane2 = m_vram[2 * 0x1'0000 + offset];
u32 const plane3 = m_vram[3 * 0x1'0000 + offset];
u32 const plane4 = m_vram[4 * 0x1'0000 + offset];
u32 const plane5 = m_vram[5 * 0x1'0000 + offset];
u32 const plane6 = m_vram[6 * 0x1'0000 + offset];
u32 const plane7 = m_vram[7 * 0x1'0000 + offset];
// TODO: verify pixel order
for (unsigned p = 0; p < 32; p++)
{
u8 const index
@ -627,7 +627,7 @@ static INPUT_PORTS_START(luna88k)
PORT_DIPNAME(0x80, 0x00, "Start") PORT_DIPLOCATION("SW1:!1")
PORT_DIPSETTING(0x00, "Autoboot")
PORT_DIPSETTING(0x80, "Monitor")
PORT_DIPNAME(0x40, 0x00, "Console") PORT_DIPLOCATION("SW1:!2")
PORT_DIPNAME(0x40, 0x40, "Console") PORT_DIPLOCATION("SW1:!2")
PORT_DIPSETTING(0x00, "Serial")
PORT_DIPSETTING(0x40, "Graphics")
PORT_DIPNAME(0x20, 0x00, "SW1#3") PORT_DIPLOCATION("SW1:!3")
@ -645,7 +645,7 @@ static INPUT_PORTS_START(luna88k)
PORT_DIPNAME(0x02, 0x00, "SW1#7") PORT_DIPLOCATION("SW1:!7")
PORT_DIPSETTING(0x00, DEF_STR(Off))
PORT_DIPSETTING(0x02, DEF_STR(On))
PORT_DIPNAME(0x01, 0x00, "Mode") PORT_DIPLOCATION("SW1:!8")
PORT_DIPNAME(0x01, 0x01, "Mode") PORT_DIPLOCATION("SW1:!8")
PORT_DIPSETTING(0x00, "Diagnostic")
PORT_DIPSETTING(0x01, "Normal")