(MESS) a7800.c: Reduce tagmap lookups (nw)

This commit is contained in:
Wilbert Pol 2013-02-10 18:56:09 +00:00
parent 39431cdbe7
commit 2c81cb6f60
3 changed files with 151 additions and 116 deletions

View File

@ -8,14 +8,34 @@
#define A7800_H_
#include "machine/6532riot.h"
#include "sound/pokey.h"
#include "sound/tiasound.h"
#include "sound/tiaintf.h"
class a7800_state : public driver_device
{
public:
a7800_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu")
{ }
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pokey(*this, "pokey")
, m_tia(*this, "tia")
, m_region_maincpu(*this, "maincpu")
, m_bank1(*this, "bank1")
, m_bank2(*this, "bank2")
, m_bank3(*this, "bank3")
, m_bank4(*this, "bank4")
, m_bank5(*this, "bank5")
, m_bank6(*this, "bank6")
, m_bank7(*this, "bank7")
, m_io_joysticks(*this, "joysticks")
, m_io_buttons(*this, "buttons")
, m_io_vblank(*this, "vblank")
, m_io_console_buttons(*this, "console_buttons")
, m_bank10(NULL)
, m_bank11(NULL)
{ }
int m_lines;
int m_ispal;
@ -52,7 +72,6 @@ public:
int m_p1_one_button;
int m_p2_one_button;
required_device<cpu_device> m_maincpu;
DECLARE_WRITE8_MEMBER(a7800_RAM0_w);
DECLARE_WRITE8_MEMBER(a7800_cart_w);
DECLARE_READ8_MEMBER(a7800_TIA_r);
@ -73,6 +92,27 @@ public:
DECLARE_WRITE8_MEMBER(riot_button_pullup_w);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( a7800_cart );
protected:
required_device<cpu_device> m_maincpu;
required_device<pokey_device> m_pokey;
required_device<tia_device> m_tia;
required_memory_region m_region_maincpu;
required_memory_bank m_bank1;
required_memory_bank m_bank2;
required_memory_bank m_bank3;
required_memory_bank m_bank4;
required_memory_bank m_bank5;
required_memory_bank m_bank6;
required_memory_bank m_bank7;
required_ioport m_io_joysticks;
required_ioport m_io_buttons;
required_ioport m_io_vblank;
required_ioport m_io_console_buttons;
memory_bank *m_bank10;
memory_bank *m_bank11;
void maria_draw_scanline();
};
/*----------- defined in machine/a7800.c -----------*/

View File

@ -23,10 +23,6 @@
#include "emu.h"
#include "includes/a7800.h"
#include "cpu/m6502/m6502.h"
#include "sound/tiasound.h"
#include "machine/6532riot.h"
#include "sound/pokey.h"
#include "sound/tiaintf.h"
@ -40,12 +36,12 @@
READ8_MEMBER(a7800_state::riot_joystick_r)
{
return machine().root_device().ioport("joysticks")->read();
return m_io_joysticks->read();
}
READ8_MEMBER(a7800_state::riot_console_button_r)
{
return machine().root_device().ioport("console_buttons")->read();
return m_io_console_buttons->read();
}
WRITE8_MEMBER(a7800_state::riot_button_pullup_w)
@ -70,23 +66,25 @@ const riot6532_interface a7800_r6532_interface =
void a7800_state::a7800_driver_init(int ispal, int lines)
{
address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM);
m_ROM = memregion("maincpu")->base();
address_space& space = m_maincpu->space(AS_PROGRAM);
m_ROM = m_region_maincpu->base();
m_ispal = ispal;
m_lines = lines;
m_p1_one_button = 1;
m_p2_one_button = 1;
/* standard banks */
membank("bank5")->set_base(&m_ROM[0x2040]); /* RAM0 */
membank("bank6")->set_base(&m_ROM[0x2140]); /* RAM1 */
membank("bank7")->set_base(&m_ROM[0x2000]); /* MAINRAM */
m_bank5->set_base(&m_ROM[0x2040]); /* RAM0 */
m_bank6->set_base(&m_ROM[0x2140]); /* RAM1 */
m_bank7->set_base(&m_ROM[0x2000]); /* MAINRAM */
/* Brutal hack put in as a consequence of new memory system; fix this */
space.install_readwrite_bank(0x0480, 0x04FF,"bank10");
membank("bank10")->set_base(m_ROM + 0x0480);
m_bank10 = membank("bank10");
m_bank10->set_base(m_ROM + 0x0480);
space.install_readwrite_bank(0x1800, 0x27FF, "bank11");
membank("bank11")->set_base(m_ROM + 0x1800);
m_bank11 = membank("bank11");
m_bank11->set_base(m_ROM + 0x1800);
m_bios_bkup = NULL;
m_cart_bkup = NULL;
@ -122,24 +120,23 @@ DRIVER_INIT_MEMBER(a7800_state,a7800_pal)
void a7800_state::machine_reset()
{
UINT8 *memory;
address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM);
address_space& space = m_maincpu->space(AS_PROGRAM);
m_ctrl_lock = 0;
m_ctrl_reg = 0;
m_maria_flag = 0;
/* set banks to default states */
memory = memregion("maincpu")->base();
membank("bank1")->set_base(memory + 0x4000 );
membank("bank2")->set_base(memory + 0x8000 );
membank("bank3")->set_base(memory + 0xA000 );
membank("bank4")->set_base(memory + 0xC000 );
memory = m_region_maincpu->base();
m_bank1->set_base(memory + 0x4000 );
m_bank2->set_base(memory + 0x8000 );
m_bank3->set_base(memory + 0xA000 );
m_bank4->set_base(memory + 0xC000 );
/* pokey cartridge */
if (m_cart_type & 0x01)
{
pokey_device *pokey = machine().device<pokey_device>("pokey");
space.install_readwrite_handler(0x4000, 0x7FFF, read8_delegate(FUNC(pokey_device::read),pokey), write8_delegate(FUNC(pokey_device::write),pokey));
space.install_readwrite_handler(0x4000, 0x7FFF, read8_delegate(FUNC(pokey_device::read),(pokey_device*)m_pokey), write8_delegate(FUNC(pokey_device::write),(pokey_device*)m_pokey));
}
}
@ -246,7 +243,7 @@ DEVICE_IMAGE_LOAD_MEMBER( a7800_state, a7800_cart )
{
UINT32 len = 0, start = 0;
unsigned char header[128];
UINT8 *memory = image.device().machine().root_device().memregion("maincpu")->base();
UINT8 *memory = m_region_maincpu->base();
const char *pcb_name;
// detect cart type either from xml or from header
@ -391,7 +388,7 @@ WRITE8_MEMBER(a7800_state::a7800_RAM0_w)
WRITE8_MEMBER(a7800_state::a7800_cart_w)
{
UINT8 *memory = memregion("maincpu")->base();
UINT8 *memory = m_region_maincpu->base();
if(offset < 0x4000)
{
@ -401,8 +398,7 @@ WRITE8_MEMBER(a7800_state::a7800_cart_w)
}
else if(m_cart_type & 0x01)
{
pokey_device *pokey = machine().device<pokey_device>("pokey");
pokey->write(space, offset, data);
m_pokey->write(space, offset, data);
}
else
{
@ -421,8 +417,8 @@ WRITE8_MEMBER(a7800_state::a7800_cart_w)
{
data &= 0x07;
}
membank("bank2")->set_base(memory + 0x10000 + (data << 14));
membank("bank3")->set_base(memory + 0x12000 + (data << 14));
m_bank2->set_base(memory + 0x10000 + (data << 14));
m_bank3->set_base(memory + 0x12000 + (data << 14));
/* logerror("BANK SEL: %d\n",data); */
}
else if(( m_cart_type == MBANK_TYPE_ABSOLUTE ) &&( offset == 0x4000 ) )
@ -431,11 +427,11 @@ WRITE8_MEMBER(a7800_state::a7800_cart_w)
/*logerror( "F18 BANK SEL: %d\n", data );*/
if( data & 1 )
{
membank("bank1")->set_base(memory + 0x10000 );
m_bank1->set_base(memory + 0x10000 );
}
else if( data & 2 )
{
membank("bank1")->set_base(memory + 0x14000 );
m_bank1->set_base(memory + 0x14000 );
}
}
else if(( m_cart_type == MBANK_TYPE_ACTIVISION ) &&( offset >= 0xBF80 ) )
@ -445,8 +441,8 @@ WRITE8_MEMBER(a7800_state::a7800_cart_w)
/*logerror( "Activision BANK SEL: %d\n", data );*/
membank("bank3")->set_base(memory + 0x10000 + ( data << 14 ) );
membank("bank4")->set_base(memory + 0x12000 + ( data << 14 ) );
m_bank3->set_base(memory + 0x10000 + ( data << 14 ) );
m_bank4->set_base(memory + 0x12000 + ( data << 14 ) );
}
}
@ -471,20 +467,20 @@ READ8_MEMBER(a7800_state::a7800_TIA_r)
still return a reasonable value */
return 0x00;
case 0x08:
return((ioport("buttons")->read() & 0x02) << 6);
return((m_io_buttons->read() & 0x02) << 6);
case 0x09:
return((ioport("buttons")->read() & 0x08) << 4);
return((m_io_buttons->read() & 0x08) << 4);
case 0x0A:
return((ioport("buttons")->read() & 0x01) << 7);
return((m_io_buttons->read() & 0x01) << 7);
case 0x0B:
return((ioport("buttons")->read() & 0x04) << 5);
return((m_io_buttons->read() & 0x04) << 5);
case 0x0c:
if(((ioport("buttons")->read() & 0x08) ||(ioport("buttons")->read() & 0x02)) && m_p1_one_button)
if(((m_io_buttons->read() & 0x08) ||(m_io_buttons->read() & 0x02)) && m_p1_one_button)
return 0x00;
else
return 0x80;
case 0x0d:
if(((ioport("buttons")->read() & 0x01) ||(ioport("buttons")->read() & 0x04)) && m_p2_one_button)
if(((m_io_buttons->read() & 0x01) ||(m_io_buttons->read() & 0x04)) && m_p2_one_button)
return 0x00;
else
return 0x80;
@ -516,6 +512,6 @@ WRITE8_MEMBER(a7800_state::a7800_TIA_w)
}
break;
}
machine().device<tia_device>("tia")->tia_sound_w(space, offset, data);
m_tia->tia_sound_w(space, offset, data);
m_ROM[offset] = data;
}

View File

@ -83,10 +83,9 @@ void a7800_state::video_start()
***************************************************************************/
static void maria_draw_scanline(running_machine &machine)
void a7800_state::maria_draw_scanline()
{
a7800_state *state = machine.driver_data<a7800_state>();
address_space& space = machine.device("maincpu")->memory().space(AS_PROGRAM);
address_space& space = m_maincpu->space(AS_PROGRAM);
unsigned int graph_adr,data_addr;
int width,hpos,pal,mode,ind;
unsigned int dl;
@ -95,12 +94,12 @@ static void maria_draw_scanline(running_machine &machine)
UINT16 *scanline;
/* set up scanline */
scanline = &state->m_bitmap.pix16(state->m_maria_scanline);
scanline = &m_bitmap.pix16(m_maria_scanline);
for (i = 0; i < 320; i++)
scanline[i] = state->m_maria_backcolor;
scanline[i] = m_maria_backcolor;
/* Process this DLL entry */
dl = state->m_maria_dl;
dl = m_maria_dl;
/* Step through DL's */
while ((READ_MEM(dl + 1) & 0x5F) != 0)
@ -112,7 +111,7 @@ static void maria_draw_scanline(running_machine &machine)
width = ((READ_MEM(dl+3) ^ 0xff) & 0x1F) + 1;
hpos = READ_MEM(dl+4)*2;
pal = READ_MEM(dl+3) >> 5;
state->m_maria_write_mode = (READ_MEM(dl+1) & 0x80) >> 5;
m_maria_write_mode = (READ_MEM(dl+1) & 0x80) >> 5;
ind = READ_MEM(dl+1) & 0x20;
dl+=5;
}
@ -127,9 +126,9 @@ static void maria_draw_scanline(running_machine &machine)
dl+=4;
}
mode = state->m_maria_rm | state->m_maria_write_mode;
mode = m_maria_rm | m_maria_write_mode;
/*logerror("%x DL: ADR=%x width=%x hpos=%x pal=%x mode=%x ind=%x\n",state->m_maria_scanline,graph_adr,width,hpos,pal,mode,ind );*/
/*logerror("%x DL: ADR=%x width=%x hpos=%x pal=%x mode=%x ind=%x\n",m_maria_scanline,graph_adr,width,hpos,pal,mode,ind );*/
for (x=0; x<width; x++) // 20030621 ericball get graphic data first, then switch (mode)
{
@ -139,18 +138,18 @@ static void maria_draw_scanline(running_machine &machine)
if (ind)
{
c = READ_MEM(graph_adr + x) & 0xFF;
data_addr= (state->m_maria_charbase | c) + (state->m_maria_offset << 8);
if( state->m_maria_cwidth )
data_addr= (m_maria_charbase | c) + (m_maria_offset << 8);
if( m_maria_cwidth )
ind_bytes = 2;
}
else
{
data_addr = graph_adr + x + (state->m_maria_offset << 8);
data_addr = graph_adr + x + (m_maria_offset << 8);
}
if ( (state->m_maria_holey & 0x02) && ((data_addr & 0x9000) == 0x9000))
if ( (m_maria_holey & 0x02) && ((data_addr & 0x9000) == 0x9000))
continue;
if ( (state->m_maria_holey & 0x01) && ((data_addr & 0x8800) == 0x8800))
if ( (m_maria_holey & 0x01) && ((data_addr & 0x8800) == 0x8800))
continue;
while (ind_bytes > 0)
@ -163,96 +162,96 @@ static void maria_draw_scanline(running_machine &machine)
case 0x00: /* 160A (160x2) */
case 0x01: /* 160A (160x2) */
c = (d & 0xC0) >> 6;
if (c || state->m_maria_kangaroo)
if (c || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][c];
scanline[hpos + 1] = state->m_maria_palette[pal][c];
scanline[hpos + 0] = m_maria_palette[pal][c];
scanline[hpos + 1] = m_maria_palette[pal][c];
}
inc_hpos_by_2();
c = (d & 0x30) >> 4;
if (c || state->m_maria_kangaroo)
if (c || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][c];
scanline[hpos + 1] = state->m_maria_palette[pal][c];
scanline[hpos + 0] = m_maria_palette[pal][c];
scanline[hpos + 1] = m_maria_palette[pal][c];
}
inc_hpos_by_2();
c = (d & 0x0C) >> 2;
if (c || state->m_maria_kangaroo)
if (c || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][c];
scanline[hpos + 1] = state->m_maria_palette[pal][c];
scanline[hpos + 0] = m_maria_palette[pal][c];
scanline[hpos + 1] = m_maria_palette[pal][c];
}
inc_hpos_by_2();
c = (d & 0x03);
if (c || state->m_maria_kangaroo)
if (c || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][c];
scanline[hpos + 1] = state->m_maria_palette[pal][c];
scanline[hpos + 0] = m_maria_palette[pal][c];
scanline[hpos + 1] = m_maria_palette[pal][c];
}
inc_hpos_by_2();
break;
case 0x02: /* 320D used by Jinks! */
c = pal & 0x04;
if ( d & 0xC0 || pal & 0x03 || state->m_maria_kangaroo )
if ( d & 0xC0 || pal & 0x03 || m_maria_kangaroo )
{
scanline[hpos + 0] = state->m_maria_palette[c][((d & 0x80) >> 6) | ((pal & 2) >> 1)];
scanline[hpos + 1] = state->m_maria_palette[c][((d & 0x40) >> 5) | ((pal & 1) >> 0)];
scanline[hpos + 0] = m_maria_palette[c][((d & 0x80) >> 6) | ((pal & 2) >> 1)];
scanline[hpos + 1] = m_maria_palette[c][((d & 0x40) >> 5) | ((pal & 1) >> 0)];
}
inc_hpos_by_2();
if ( d & 0x30 || pal & 0x03 || state->m_maria_kangaroo )
if ( d & 0x30 || pal & 0x03 || m_maria_kangaroo )
{
scanline[hpos + 0] = state->m_maria_palette[c][((d & 0x20) >> 4) | ((pal & 2) >> 1)];
scanline[hpos + 1] = state->m_maria_palette[c][((d & 0x10) >> 3) | ((pal & 1) >> 0)];
scanline[hpos + 0] = m_maria_palette[c][((d & 0x20) >> 4) | ((pal & 2) >> 1)];
scanline[hpos + 1] = m_maria_palette[c][((d & 0x10) >> 3) | ((pal & 1) >> 0)];
}
inc_hpos_by_2();
if ( d & 0x0C || pal & 0x03 || state->m_maria_kangaroo )
if ( d & 0x0C || pal & 0x03 || m_maria_kangaroo )
{
scanline[hpos + 0] = state->m_maria_palette[c][((d & 0x08) >> 2) | ((pal & 2) >> 1)];
scanline[hpos + 1] = state->m_maria_palette[c][((d & 0x04) >> 1) | ((pal & 1) >> 0)];
scanline[hpos + 0] = m_maria_palette[c][((d & 0x08) >> 2) | ((pal & 2) >> 1)];
scanline[hpos + 1] = m_maria_palette[c][((d & 0x04) >> 1) | ((pal & 1) >> 0)];
}
inc_hpos_by_2();
if ( d & 0x03 || pal & 0x03 || state->m_maria_kangaroo )
if ( d & 0x03 || pal & 0x03 || m_maria_kangaroo )
{
scanline[hpos + 0] = state->m_maria_palette[c][((d & 0x02) << 0) | ((pal & 2) >> 1)];
scanline[hpos + 1] = state->m_maria_palette[c][((d & 0x01) << 1) | ((pal & 1) >> 0)];
scanline[hpos + 0] = m_maria_palette[c][((d & 0x02) << 0) | ((pal & 2) >> 1)];
scanline[hpos + 1] = m_maria_palette[c][((d & 0x01) << 1) | ((pal & 1) >> 0)];
}
inc_hpos_by_2();
break;
case 0x03: /* MODE 320A */
if (d & 0xC0 || state->m_maria_kangaroo)
if (d & 0xC0 || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][(d & 0x80) >> 6];
scanline[hpos + 1] = state->m_maria_palette[pal][(d & 0x40) >> 5];
scanline[hpos + 0] = m_maria_palette[pal][(d & 0x80) >> 6];
scanline[hpos + 1] = m_maria_palette[pal][(d & 0x40) >> 5];
}
inc_hpos_by_2();
if ( d & 0x30 || state->m_maria_kangaroo)
if ( d & 0x30 || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][(d & 0x20) >> 4];
scanline[hpos + 1] = state->m_maria_palette[pal][(d & 0x10) >> 3];
scanline[hpos + 0] = m_maria_palette[pal][(d & 0x20) >> 4];
scanline[hpos + 1] = m_maria_palette[pal][(d & 0x10) >> 3];
}
inc_hpos_by_2();
if (d & 0x0C || state->m_maria_kangaroo)
if (d & 0x0C || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][(d & 0x08) >> 2];
scanline[hpos + 1] = state->m_maria_palette[pal][(d & 0x04) >> 1];
scanline[hpos + 0] = m_maria_palette[pal][(d & 0x08) >> 2];
scanline[hpos + 1] = m_maria_palette[pal][(d & 0x04) >> 1];
}
inc_hpos_by_2();
if (d & 0x03 || state->m_maria_kangaroo)
if (d & 0x03 || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][(d & 0x02)];
scanline[hpos + 1] = state->m_maria_palette[pal][(d & 0x01) << 1];
scanline[hpos + 0] = m_maria_palette[pal][(d & 0x02)];
scanline[hpos + 1] = m_maria_palette[pal][(d & 0x01) << 1];
}
inc_hpos_by_2();
break;
@ -260,50 +259,50 @@ static void maria_draw_scanline(running_machine &machine)
case 0x04: /* 160B (160x4) */
case 0x05: /* 160B (160x4) */
c = (d & 0xC0) >> 6;
if (c || state->m_maria_kangaroo)
if (c || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][c];
scanline[hpos + 1] = state->m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][c];
scanline[hpos + 0] = m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][c];
scanline[hpos + 1] = m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][c];
}
inc_hpos_by_2();
c = (d & 0x30) >> 4;
if (c || state->m_maria_kangaroo)
if (c || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[(pal & 0x04) | (d & 0x03)][c];
scanline[hpos + 1] = state->m_maria_palette[(pal & 0x04) | (d & 0x03)][c];
scanline[hpos + 0] = m_maria_palette[(pal & 0x04) | (d & 0x03)][c];
scanline[hpos + 1] = m_maria_palette[(pal & 0x04) | (d & 0x03)][c];
}
inc_hpos_by_2();
break;
case 0x06: /* MODE 320B */
if (d & 0xCC || state->m_maria_kangaroo)
if (d & 0xCC || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][((d & 0x80) >> 6) | ((d & 0x08) >> 3)];
scanline[hpos + 1] = state->m_maria_palette[pal][((d & 0x40) >> 5) | ((d & 0x04) >> 2)];
scanline[hpos + 0] = m_maria_palette[pal][((d & 0x80) >> 6) | ((d & 0x08) >> 3)];
scanline[hpos + 1] = m_maria_palette[pal][((d & 0x40) >> 5) | ((d & 0x04) >> 2)];
}
inc_hpos_by_2();
if ( d & 0x33 || state->m_maria_kangaroo)
if ( d & 0x33 || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[pal][((d & 0x20) >> 4) | ((d & 0x02) >> 1)];
scanline[hpos + 1] = state->m_maria_palette[pal][((d & 0x10) >> 3) | (d & 0x01)];
scanline[hpos + 0] = m_maria_palette[pal][((d & 0x20) >> 4) | ((d & 0x02) >> 1)];
scanline[hpos + 1] = m_maria_palette[pal][((d & 0x10) >> 3) | (d & 0x01)];
}
inc_hpos_by_2();
break;
case 0x07: /* (320C mode) */
if (d & 0xC0 || state->m_maria_kangaroo)
if (d & 0xC0 || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][(d & 0x80) >> 6];
scanline[hpos + 1] = state->m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][(d & 0x40) >> 5];
scanline[hpos + 0] = m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][(d & 0x80) >> 6];
scanline[hpos + 1] = m_maria_palette[(pal & 0x04) | ((d & 0x0C) >> 2)][(d & 0x40) >> 5];
}
inc_hpos_by_2();
if ( d & 0x30 || state->m_maria_kangaroo)
if ( d & 0x30 || m_maria_kangaroo)
{
scanline[hpos + 0] = state->m_maria_palette[(pal & 0x04) | (d & 0x03)][(d & 0x20) >> 4];
scanline[hpos + 1] = state->m_maria_palette[(pal & 0x04) | (d & 0x03)][(d & 0x10) >> 3];
scanline[hpos + 0] = m_maria_palette[(pal & 0x04) | (d & 0x03)][(d & 0x20) >> 4];
scanline[hpos + 1] = m_maria_palette[(pal & 0x04) | (d & 0x03)][(d & 0x10) >> 3];
}
inc_hpos_by_2();
break;
@ -318,8 +317,8 @@ static void maria_draw_scanline(running_machine &machine)
TIMER_DEVICE_CALLBACK_MEMBER(a7800_state::a7800_interrupt)
{
int frame_scanline;
UINT8 *ROM = machine().root_device().memregion("maincpu")->base();
address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM);
UINT8 *ROM = m_region_maincpu->base();
address_space& space = m_maincpu->space(AS_PROGRAM);
m_maria_scanline++;
@ -391,7 +390,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(a7800_state::a7800_interrupt)
if( ( frame_scanline > 15 ) && m_maria_dodma )
{
if (m_maria_scanline < ( m_lines - 4 ) )
maria_draw_scanline(machine());
maria_draw_scanline();
if( m_maria_offset == 0 )
{
@ -438,7 +437,7 @@ UINT32 a7800_state::screen_update_a7800(screen_device &screen, bitmap_ind16 &bit
READ8_MEMBER(a7800_state::a7800_MARIA_r)
{
UINT8 *ROM = memregion("maincpu")->base();
UINT8 *ROM = m_region_maincpu->base();
switch (offset)
{
case 0x08:
@ -452,7 +451,7 @@ READ8_MEMBER(a7800_state::a7800_MARIA_r)
WRITE8_MEMBER(a7800_state::a7800_MARIA_w)
{
UINT8 *ROM = memregion("maincpu")->base();
UINT8 *ROM = m_region_maincpu->base();
switch (offset)
{
case 0x00:
@ -477,7 +476,7 @@ WRITE8_MEMBER(a7800_state::a7800_MARIA_w)
m_maria_palette[0][3] = data;
break;
case 0x04:
machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC);
m_maincpu->spin_until_trigger(TRIGGER_HSYNC);
m_maria_wsync=1;
break;