amiga: use memarray for chip RAM and regular array for custom registers (instead of shared_ptr for both) [Alex Jackson]

This commit is contained in:
Alex W. Jackson 2014-10-19 08:14:45 +00:00
parent 4ad7a0ea58
commit 1b89b80e9c
13 changed files with 103 additions and 178 deletions

View File

@ -510,7 +510,7 @@ TIMER_CALLBACK_MEMBER(akiko_device::dma_proc)
data <<= 8; data <<= 8;
data |= buf[i+1]; data |= buf[i+1];
(*amiga->m_chip_ram_w)( amiga, m_cdrom_address[0] + (index*4096) + i, data ); amiga->chip_ram_w(m_cdrom_address[0] + (index*4096) + i, data );
} }
m_cdrom_readmask |= ( 1 << index ); m_cdrom_readmask |= ( 1 << index );

View File

@ -74,7 +74,7 @@ void amiga_fdc::dma_done()
void amiga_fdc::dma_write(UINT16 value) void amiga_fdc::dma_write(UINT16 value)
{ {
amiga_state *state = machine().driver_data<amiga_state>(); amiga_state *state = machine().driver_data<amiga_state>();
(*state->m_chip_ram_w)(state, dskpt, value); state->chip_ram_w(dskpt, value);
dskpt += 2; dskpt += 2;
dsklen--; dsklen--;
@ -88,7 +88,7 @@ void amiga_fdc::dma_write(UINT16 value)
UINT16 amiga_fdc::dma_read() UINT16 amiga_fdc::dma_read()
{ {
amiga_state *state = machine().driver_data<amiga_state>(); amiga_state *state = machine().driver_data<amiga_state>();
UINT16 res = (*state->m_chip_ram_r)(state, dskpt); UINT16 res = state->chip_ram_r(dskpt);
dskpt += 2; dskpt += 2;
dsklen--; dsklen--;

View File

@ -212,7 +212,7 @@ void amiga_sound_device::sound_stream_update(sound_stream &stream, stream_sample
chan->curlocation++; chan->curlocation++;
if (chan->dma_enabled && !(chan->curlocation & 1)) if (chan->dma_enabled && !(chan->curlocation & 1))
{ {
CUSTOM_REG(REG_AUD0DAT + channum * 8) = (*state->m_chip_ram_r)(state, chan->curlocation); CUSTOM_REG(REG_AUD0DAT + channum * 8) = state->chip_ram_r(chan->curlocation);
if (chan->curlength != 0) if (chan->curlength != 0)
chan->curlength--; chan->curlength--;

View File

@ -168,7 +168,7 @@ static ADDRESS_MAP_START( a500_mem, AS_PROGRAM, 16, alg_state )
AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xd80000, 0xddffff) AM_NOP AM_RANGE(0xd80000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)

View File

@ -194,7 +194,7 @@ static ADDRESS_MAP_START( a500_mem, AS_PROGRAM, 16, arcadia_amiga_state )
AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xd80000, 0xddffff) AM_NOP AM_RANGE(0xd80000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)

View File

@ -360,7 +360,7 @@ private:
typedef void (cubo_state::*input_hack_func)(); typedef void (cubo_state::*input_hack_func)();
input_hack_func m_input_hack; input_hack_func m_input_hack;
void chip_ram_w8_hack(offs_t byteoffs, UINT8 data);
void cndypuzl_input_hack(); void cndypuzl_input_hack();
void haremchl_input_hack(); void haremchl_input_hack();
void lsrquiz_input_hack(); void lsrquiz_input_hack();
@ -415,7 +415,7 @@ static ADDRESS_MAP_START( cubo_mem, AS_PROGRAM, 32, cubo_state )
AM_RANGE(0x800010, 0x800013) AM_READ_PORT("DIPSW2") AM_RANGE(0x800010, 0x800013) AM_READ_PORT("DIPSW2")
AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write) AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write)
AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff) AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) AM_SHARE("custom_regs") AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000) AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000)
AM_RANGE(0xa00000, 0xf7ffff) AM_NOP AM_RANGE(0xa00000, 0xf7ffff) AM_NOP
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
@ -1170,12 +1170,24 @@ ROM_END
* *
*************************************/ *************************************/
void cubo_state::chip_ram_w8_hack(offs_t byteoffs, UINT8 data)
{
UINT16 word = chip_ram_r(byteoffs);
if (byteoffs & 1)
word = (word & 0xff00) | data;
else
word = (word & 0x00ff) | (((UINT16)data) << 8);
chip_ram_w(byteoffs, word);
}
void cubo_state::cndypuzl_input_hack() void cubo_state::cndypuzl_input_hack()
{ {
if (m_maincpu->pc < m_chip_ram.bytes()) if (m_maincpu->pc < m_chip_ram.bytes())
{ {
UINT32 r_A5 = m_maincpu->state_int(M68K_A5); UINT32 r_A5 = m_maincpu->state_int(M68K_A5);
(*m_chip_ram_w)(this, r_A5 - 0x7ebe, 0x0000); chip_ram_w(r_A5 - 0x7ebe, 0x0000);
} }
} }
@ -1190,8 +1202,8 @@ void cubo_state::haremchl_input_hack()
if (m_maincpu->pc < m_chip_ram.bytes()) if (m_maincpu->pc < m_chip_ram.bytes())
{ {
UINT32 r_A5 = m_maincpu->state_int(M68K_A5); UINT32 r_A5 = m_maincpu->state_int(M68K_A5);
UINT32 r_A2 = ((*m_chip_ram_r)(this, r_A5 - 0x7f00 + 0) << 16) | ((*m_chip_ram_r)(this, r_A5 - 0x7f00 + 2)); UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7f00 + 0) << 16) | (chip_ram_r(r_A5 - 0x7f00 + 2));
amiga_chip_ram_w8(this, r_A2 + 0x1f, 0x00); chip_ram_w8_hack(r_A2 + 0x1f, 0x00);
} }
} }
@ -1206,8 +1218,8 @@ void cubo_state::lsrquiz_input_hack()
if (m_maincpu->pc < m_chip_ram.bytes()) if (m_maincpu->pc < m_chip_ram.bytes())
{ {
UINT32 r_A5 = m_maincpu->state_int(M68K_A5); UINT32 r_A5 = m_maincpu->state_int(M68K_A5);
UINT32 r_A2 = ((*m_chip_ram_r)(this, r_A5 - 0x7fe0 + 0) << 16) | ((*m_chip_ram_r)(this, r_A5 - 0x7fe0 + 2)); UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7fe0 + 0) << 16) | (chip_ram_r(r_A5 - 0x7fe0 + 2));
amiga_chip_ram_w8(this, r_A2 + 0x13, 0x00); chip_ram_w8_hack(r_A2 + 0x13, 0x00);
} }
} }
@ -1223,8 +1235,8 @@ void cubo_state::lsrquiz2_input_hack()
if (m_maincpu->pc < m_chip_ram.bytes()) if (m_maincpu->pc < m_chip_ram.bytes())
{ {
UINT32 r_A5 = m_maincpu->state_int(M68K_A5); UINT32 r_A5 = m_maincpu->state_int(M68K_A5);
UINT32 r_A2 = ((*m_chip_ram_r)(this, r_A5 - 0x7fdc + 0) << 16) | ((*m_chip_ram_r)(this, r_A5 - 0x7fdc + 2)); UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7fdc + 0) << 16) | (chip_ram_r(r_A5 - 0x7fdc + 2));
amiga_chip_ram_w8(this, r_A2 + 0x17, 0x00); chip_ram_w8_hack(r_A2 + 0x17, 0x00);
} }
} }
@ -1239,8 +1251,8 @@ void cubo_state::lasstixx_input_hack()
if (m_maincpu->pc < m_chip_ram.bytes()) if (m_maincpu->pc < m_chip_ram.bytes())
{ {
UINT32 r_A5 = m_maincpu->state_int(M68K_A5); UINT32 r_A5 = m_maincpu->state_int(M68K_A5);
UINT32 r_A2 = ((*m_chip_ram_r)(this, r_A5 - 0x7fa2 + 0) << 16) | ((*m_chip_ram_r)(this, r_A5 - 0x7fa2 + 2)); UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7fa2 + 0) << 16) | (chip_ram_r(r_A5 - 0x7fa2 + 2));
amiga_chip_ram_w8(this, r_A2 + 0x24, 0x00); chip_ram_w8_hack(r_A2 + 0x24, 0x00);
} }
} }
@ -1255,7 +1267,7 @@ void cubo_state::mgnumber_input_hack()
if (m_maincpu->pc < m_chip_ram.bytes()) if (m_maincpu->pc < m_chip_ram.bytes())
{ {
UINT32 r_A5 = m_maincpu->state_int(M68K_A5); UINT32 r_A5 = m_maincpu->state_int(M68K_A5);
(*m_chip_ram_w)(this, r_A5 - 0x7ed8, 0x0000); chip_ram_w(r_A5 - 0x7ed8, 0x0000);
} }
} }
@ -1270,7 +1282,7 @@ void cubo_state::mgprem11_input_hack()
if (m_maincpu->pc < m_chip_ram.bytes()) if (m_maincpu->pc < m_chip_ram.bytes())
{ {
UINT32 r_A5 = m_maincpu->state_int(M68K_A5); UINT32 r_A5 = m_maincpu->state_int(M68K_A5);
amiga_chip_ram_w8(this, r_A5 - 0x7eca, 0x00); chip_ram_w8_hack(r_A5 - 0x7eca, 0x00);
} }
} }

View File

@ -126,7 +126,7 @@ static ADDRESS_MAP_START( a500_mem, AS_PROGRAM, 16, mquake_state )
AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xd80000, 0xddffff) AM_NOP AM_RANGE(0xd80000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)

View File

@ -216,7 +216,7 @@ static ADDRESS_MAP_START( a500_mem, AS_PROGRAM, 16, upscope_state )
AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xd80000, 0xddffff) AM_NOP AM_RANGE(0xd80000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)

View File

@ -326,8 +326,6 @@ class amiga_state : public driver_device
public: public:
amiga_state(const machine_config &mconfig, device_type type, const char *tag) : amiga_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_chip_ram(*this, "chip_ram", 0),
m_custom_regs(*this, "custom_regs", 0),
m_agnus_id(AGNUS_NTSC), m_agnus_id(AGNUS_NTSC),
m_denise_id(DENISE), m_denise_id(DENISE),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
@ -353,7 +351,6 @@ public:
m_p2_mouse_x(*this, "p2_mouse_x"), m_p2_mouse_x(*this, "p2_mouse_x"),
m_p2_mouse_y(*this, "p2_mouse_y"), m_p2_mouse_y(*this, "p2_mouse_y"),
m_chip_ram_mask(0), m_chip_ram_mask(0),
m_chip_ram_mirror(0),
m_cia_0_irq(0), m_cia_0_irq(0),
m_cia_1_irq(0), m_cia_1_irq(0),
m_pot0x(0), m_pot1x(0), m_pot0y(0), m_pot1y(0), m_pot0x(0), m_pot1x(0), m_pot0y(0), m_pot1y(0),
@ -373,10 +370,16 @@ public:
m_rx_previous(1) m_rx_previous(1)
{ } { }
/* chip RAM access */
UINT16 (*m_chip_ram_r)(amiga_state *state, offs_t offset); UINT16 chip_ram_r(offs_t byteoffs)
void (*m_chip_ram_w)(amiga_state *state, offs_t offset, UINT16 data); {
return EXPECTED(byteoffs < m_chip_ram.bytes()) ? m_chip_ram.read(byteoffs >> 1) : 0xffff;
}
void chip_ram_w(offs_t byteoffs, UINT16 data)
{
if (EXPECTED(byteoffs < m_chip_ram.bytes()))
m_chip_ram.write(byteoffs >> 1, data);
}
/* sprite states */ /* sprite states */
UINT8 m_sprite_comparitor_enable_mask; UINT8 m_sprite_comparitor_enable_mask;
@ -486,14 +489,13 @@ public:
HBLANK = 186 HBLANK = 186
}; };
required_shared_ptr<UINT16> m_chip_ram;
required_shared_ptr<UINT16> m_custom_regs;
emu_timer *m_blitter_timer; emu_timer *m_blitter_timer;
UINT16 m_agnus_id; UINT16 m_agnus_id;
UINT16 m_denise_id; UINT16 m_denise_id;
UINT16 m_custom_regs[256];
void custom_chip_w(UINT16 offset, UINT16 data, UINT16 mem_mask = 0xffff) void custom_chip_w(UINT16 offset, UINT16 data, UINT16 mem_mask = 0xffff)
{ {
custom_chip_w(m_maincpu->space(AS_PROGRAM), offset, data, mem_mask); custom_chip_w(m_maincpu->space(AS_PROGRAM), offset, data, mem_mask);
@ -577,8 +579,8 @@ protected:
optional_ioport m_p2_mouse_x; optional_ioport m_p2_mouse_x;
optional_ioport m_p2_mouse_y; optional_ioport m_p2_mouse_y;
memory_array m_chip_ram;
UINT32 m_chip_ram_mask; UINT32 m_chip_ram_mask;
UINT32 m_chip_ram_mirror;
int m_cia_0_irq; int m_cia_0_irq;
int m_cia_1_irq; int m_cia_1_irq;
@ -663,8 +665,6 @@ private:
extern const char *const amiga_custom_names[0x100]; extern const char *const amiga_custom_names[0x100];
void amiga_chip_ram_w8(amiga_state *state, offs_t offset, UINT8 data);
/*----------- defined in video/amiga.c -----------*/ /*----------- defined in video/amiga.c -----------*/

View File

@ -132,83 +132,6 @@ const char *const amiga_custom_names[0x100] =
/*************************************
*
* Chipmem 16/32 bit access
*
*************************************/
static UINT16 amiga_chip_ram16_r(amiga_state *state, offs_t offset)
{
// logerror("chip ram read %08x\n", offset);
return (offset < state->m_chip_ram.bytes()) ? state->m_chip_ram[offset/2] : 0xffff;
}
static UINT16 amiga_chip_ram32_r(amiga_state *state, offs_t offset)
{
if (offset < state->m_chip_ram.bytes())
{
UINT32 *amiga_chip_ram32 = reinterpret_cast<UINT32 *>(state->m_chip_ram.target());
UINT32 dat = amiga_chip_ram32[offset / 4];
if ( offset & 2 )
return (dat & 0xffff);
return (dat >> 16);
}
return 0xffff;
}
static void amiga_chip_ram16_w(amiga_state *state, offs_t offset, UINT16 data)
{
if (offset < state->m_chip_ram.bytes())
state->m_chip_ram[offset/2] = data;
}
static void amiga_chip_ram32_w(amiga_state *state, offs_t offset, UINT16 data)
{
if (offset < state->m_chip_ram.bytes())
{
UINT32 *amiga_chip_ram32 = reinterpret_cast<UINT32 *>(state->m_chip_ram.target());
UINT32 dat = amiga_chip_ram32[offset / 4];
if ( offset & 2 )
{
dat &= 0xffff0000;
dat |= data;
}
else
{
dat &= 0x0000ffff;
dat |= ((UINT32)data) << 16;
}
amiga_chip_ram32[offset / 4] = dat;
}
}
void amiga_chip_ram_w8(amiga_state *state, offs_t offset, UINT8 data)
{
UINT16 dat;
dat = (*state->m_chip_ram_r)(state, offset);
if (offset & 0x01)
{
dat &= 0xff00;
dat |= data;
}
else
{
dat &= 0x00ff;
dat |= ((UINT16)data) << 8;
}
(*state->m_chip_ram_w)(state, offset, dat);
}
/************************************* /*************************************
* *
* Machine reset * Machine reset
@ -220,24 +143,14 @@ void amiga_state::machine_start()
// add callback for RESET instruction // add callback for RESET instruction
m_maincpu->set_reset_callback(write_line_delegate(FUNC(amiga_state::m68k_reset), this)); m_maincpu->set_reset_callback(write_line_delegate(FUNC(amiga_state::m68k_reset), this));
switch (m_maincpu->space(AS_PROGRAM).data_width()) // set up chip RAM access
{ memory_share *share = memshare("chip_ram");
case 16: if (share == NULL)
m_chip_ram_r = amiga_chip_ram16_r; fatalerror("Unable to find Amiga chip RAM\n");
m_chip_ram_w = amiga_chip_ram16_w; m_chip_ram.set(*share, 2);
break; m_chip_ram_mask = (m_chip_ram.bytes() - 1) & ~1;
case 32:
m_chip_ram_r = amiga_chip_ram32_r;
m_chip_ram_w = amiga_chip_ram32_w;
break;
default:
fatalerror("Invalid data bus width\n");
}
m_chip_ram_mask = m_chip_ram.mask() & ~1; // set up the timers
m_chip_ram_mirror = ~m_chip_ram.mask() & 0x1fffff;
// setup the timers
m_irq_timer = timer_alloc(TIMER_AMIGA_IRQ); m_irq_timer = timer_alloc(TIMER_AMIGA_IRQ);
m_blitter_timer = timer_alloc(TIMER_AMIGA_BLITTER); m_blitter_timer = timer_alloc(TIMER_AMIGA_BLITTER);
m_serial_timer = timer_alloc(TIMER_SERIAL); m_serial_timer = timer_alloc(TIMER_SERIAL);
@ -536,21 +449,21 @@ static UINT32 blit_ascending(amiga_state *state)
if (CUSTOM_REG(REG_BLTCON0) & 0x0800) if (CUSTOM_REG(REG_BLTCON0) & 0x0800)
{ {
//CUSTOM_REG(REG_BLTADAT) = state->m_maincpu->space(AS_PROGRAM).read_word(CUSTOM_REG_LONG(REG_BLTAPTH)); //CUSTOM_REG(REG_BLTADAT) = state->m_maincpu->space(AS_PROGRAM).read_word(CUSTOM_REG_LONG(REG_BLTAPTH));
CUSTOM_REG(REG_BLTADAT) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BLTAPTH)); CUSTOM_REG(REG_BLTADAT) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BLTAPTH));
CUSTOM_REG_LONG(REG_BLTAPTH) += 2; CUSTOM_REG_LONG(REG_BLTAPTH) += 2;
} }
/* fetch data for B */ /* fetch data for B */
if (CUSTOM_REG(REG_BLTCON0) & 0x0400) if (CUSTOM_REG(REG_BLTCON0) & 0x0400)
{ {
CUSTOM_REG(REG_BLTBDAT) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BLTBPTH)); CUSTOM_REG(REG_BLTBDAT) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BLTBPTH));
CUSTOM_REG_LONG(REG_BLTBPTH) += 2; CUSTOM_REG_LONG(REG_BLTBPTH) += 2;
} }
/* fetch data for C */ /* fetch data for C */
if (CUSTOM_REG(REG_BLTCON0) & 0x0200) if (CUSTOM_REG(REG_BLTCON0) & 0x0200)
{ {
CUSTOM_REG(REG_BLTCDAT) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BLTCPTH)); CUSTOM_REG(REG_BLTCDAT) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BLTCPTH));
CUSTOM_REG_LONG(REG_BLTCPTH) += 2; CUSTOM_REG_LONG(REG_BLTCPTH) += 2;
} }
@ -606,7 +519,7 @@ static UINT32 blit_ascending(amiga_state *state)
/* write to the destination */ /* write to the destination */
if (CUSTOM_REG(REG_BLTCON0) & 0x0100) if (CUSTOM_REG(REG_BLTCON0) & 0x0100)
{ {
(*state->m_chip_ram_w)(state, CUSTOM_REG_LONG(REG_BLTDPTH), tempd); state->chip_ram_w(CUSTOM_REG_LONG(REG_BLTDPTH), tempd);
CUSTOM_REG_LONG(REG_BLTDPTH) += 2; CUSTOM_REG_LONG(REG_BLTDPTH) += 2;
} }
} }
@ -661,21 +574,21 @@ static UINT32 blit_descending(amiga_state *state)
/* fetch data for A */ /* fetch data for A */
if (CUSTOM_REG(REG_BLTCON0) & 0x0800) if (CUSTOM_REG(REG_BLTCON0) & 0x0800)
{ {
CUSTOM_REG(REG_BLTADAT) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BLTAPTH)); CUSTOM_REG(REG_BLTADAT) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BLTAPTH));
CUSTOM_REG_LONG(REG_BLTAPTH) -= 2; CUSTOM_REG_LONG(REG_BLTAPTH) -= 2;
} }
/* fetch data for B */ /* fetch data for B */
if (CUSTOM_REG(REG_BLTCON0) & 0x0400) if (CUSTOM_REG(REG_BLTCON0) & 0x0400)
{ {
CUSTOM_REG(REG_BLTBDAT) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BLTBPTH)); CUSTOM_REG(REG_BLTBDAT) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BLTBPTH));
CUSTOM_REG_LONG(REG_BLTBPTH) -= 2; CUSTOM_REG_LONG(REG_BLTBPTH) -= 2;
} }
/* fetch data for C */ /* fetch data for C */
if (CUSTOM_REG(REG_BLTCON0) & 0x0200) if (CUSTOM_REG(REG_BLTCON0) & 0x0200)
{ {
CUSTOM_REG(REG_BLTCDAT) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BLTCPTH)); CUSTOM_REG(REG_BLTCDAT) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BLTCPTH));
CUSTOM_REG_LONG(REG_BLTCPTH) -= 2; CUSTOM_REG_LONG(REG_BLTCPTH) -= 2;
} }
@ -748,7 +661,7 @@ static UINT32 blit_descending(amiga_state *state)
/* write to the destination */ /* write to the destination */
if (CUSTOM_REG(REG_BLTCON0) & 0x0100) if (CUSTOM_REG(REG_BLTCON0) & 0x0100)
{ {
(*state->m_chip_ram_w)(state, CUSTOM_REG_LONG(REG_BLTDPTH), tempd); state->chip_ram_w(CUSTOM_REG_LONG(REG_BLTDPTH), tempd);
CUSTOM_REG_LONG(REG_BLTDPTH) -= 2; CUSTOM_REG_LONG(REG_BLTDPTH) -= 2;
} }
} }
@ -840,7 +753,7 @@ static UINT32 blit_line(amiga_state *state)
/* fetch data for C */ /* fetch data for C */
if (CUSTOM_REG(REG_BLTCON0) & 0x0200) if (CUSTOM_REG(REG_BLTCON0) & 0x0200)
CUSTOM_REG(REG_BLTCDAT) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BLTCPTH)); CUSTOM_REG(REG_BLTCDAT) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BLTCPTH));
/* rotate the A data according to the shift */ /* rotate the A data according to the shift */
tempa = CUSTOM_REG(REG_BLTADAT) >> (CUSTOM_REG(REG_BLTCON0) >> 12); tempa = CUSTOM_REG(REG_BLTADAT) >> (CUSTOM_REG(REG_BLTCON0) >> 12);
@ -891,7 +804,7 @@ static UINT32 blit_line(amiga_state *state)
blitsum |= tempd; blitsum |= tempd;
/* write to the destination */ /* write to the destination */
(*state->m_chip_ram_w)(state, CUSTOM_REG_LONG(REG_BLTDPTH), tempd); state->chip_ram_w(CUSTOM_REG_LONG(REG_BLTDPTH), tempd);
/* always increment along the major axis */ /* always increment along the major axis */
if (CUSTOM_REG(REG_BLTCON1) & 0x0010) if (CUSTOM_REG(REG_BLTCON1) & 0x0010)

View File

@ -240,12 +240,12 @@ int amiga_copper_execute_next(running_machine &machine, int xpos)
} }
/* fetch the first data word */ /* fetch the first data word */
word0 = (*state->m_chip_ram_r)(state, state->m_copper_pc); word0 = state->chip_ram_r(state->m_copper_pc);
state->m_copper_pc += 2; state->m_copper_pc += 2;
xpos += COPPER_CYCLES_TO_PIXELS(1); xpos += COPPER_CYCLES_TO_PIXELS(1);
/* fetch the second data word */ /* fetch the second data word */
word1 = (*state->m_chip_ram_r)(state, state->m_copper_pc); word1 = state->chip_ram_r(state->m_copper_pc);
state->m_copper_pc += 2; state->m_copper_pc += 2;
xpos += COPPER_CYCLES_TO_PIXELS(1); xpos += COPPER_CYCLES_TO_PIXELS(1);
@ -381,8 +381,8 @@ void amiga_sprite_enable_comparitor(running_machine &machine, int which, int ena
INLINE void fetch_sprite_data(amiga_state *state, int scanline, int sprite) INLINE void fetch_sprite_data(amiga_state *state, int scanline, int sprite)
{ {
CUSTOM_REG(REG_SPR0DATA + 4 * sprite) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); CUSTOM_REG(REG_SPR0DATA + 4 * sprite) = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
CUSTOM_REG(REG_SPR0DATB + 4 * sprite) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); CUSTOM_REG(REG_SPR0DATB + 4 * sprite) = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X\n", scanline, sprite, CUSTOM_REG(REG_SPR0DATA + 4 * sprite), CUSTOM_REG(REG_SPR0DATB + 4 * sprite)); if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X\n", scanline, sprite, CUSTOM_REG(REG_SPR0DATA + 4 * sprite), CUSTOM_REG(REG_SPR0DATB + 4 * sprite));
} }
@ -411,8 +411,8 @@ static void update_sprite_dma(amiga_state *state, int scanline)
state->m_sprite_dma_reload_mask &= ~bitmask; state->m_sprite_dma_reload_mask &= ~bitmask;
/* fetch data into the control words */ /* fetch data into the control words */
CUSTOM_REG(REG_SPR0POS + 4 * num) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 0); CUSTOM_REG(REG_SPR0POS + 4 * num) = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 0);
CUSTOM_REG(REG_SPR0CTL + 4 * num) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2); CUSTOM_REG(REG_SPR0CTL + 4 * num) = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) += 4;
if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: pos=%04X ctl=%04X\n", scanline, num, CUSTOM_REG(REG_SPR0POS + 4 * num), CUSTOM_REG(REG_SPR0CTL + 4 * num)); if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: pos=%04X ctl=%04X\n", scanline, num, CUSTOM_REG(REG_SPR0POS + 4 * num), CUSTOM_REG(REG_SPR0CTL + 4 * num));
} }
@ -586,7 +586,7 @@ INLINE UINT8 assemble_even_bitplanes(amiga_state *state, int planes, int ebitoff
INLINE void fetch_bitplane_data(amiga_state *state, int plane) INLINE void fetch_bitplane_data(amiga_state *state, int plane)
{ {
CUSTOM_REG(REG_BPL1DAT + plane) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)); CUSTOM_REG(REG_BPL1DAT + plane) = state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2));
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
} }

View File

@ -92,35 +92,35 @@ INLINE void fetch_sprite_data(amiga_state *state, int scanline, int sprite)
switch((CUSTOM_REG(REG_FMODE) >> 2) & 0x03) switch((CUSTOM_REG(REG_FMODE) >> 2) & 0x03)
{ {
case 0: case 0:
state->m_aga_sprdata[sprite][0] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); state->m_aga_sprdata[sprite][0] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
state->m_aga_sprdatb[sprite][0] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); state->m_aga_sprdatb[sprite][0] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
state->m_aga_sprite_fetched_words = 1; state->m_aga_sprite_fetched_words = 1;
if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X\n", scanline, sprite, state->m_aga_sprdata[sprite][0], state->m_aga_sprdatb[sprite][0]); if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X\n", scanline, sprite, state->m_aga_sprdata[sprite][0], state->m_aga_sprdatb[sprite][0]);
break; break;
case 1: case 1:
case 2: case 2:
state->m_aga_sprdata[sprite][0] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); state->m_aga_sprdata[sprite][0] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
state->m_aga_sprdata[sprite][1] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); state->m_aga_sprdata[sprite][1] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
state->m_aga_sprdatb[sprite][0] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); state->m_aga_sprdatb[sprite][0] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
state->m_aga_sprdatb[sprite][1] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); state->m_aga_sprdatb[sprite][1] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
state->m_aga_sprite_fetched_words = 2; state->m_aga_sprite_fetched_words = 2;
if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X %04X-%04X\n", scanline, sprite, state->m_aga_sprdata[sprite][0], state->m_aga_sprdatb[sprite][0], state->m_aga_sprdata[sprite][1], state->m_aga_sprdatb[sprite][1] ); if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X %04X-%04X\n", scanline, sprite, state->m_aga_sprdata[sprite][0], state->m_aga_sprdatb[sprite][0], state->m_aga_sprdata[sprite][1], state->m_aga_sprdatb[sprite][1] );
break; break;
case 3: case 3:
state->m_aga_sprdata[sprite][0] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); state->m_aga_sprdata[sprite][0] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
state->m_aga_sprdata[sprite][1] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); state->m_aga_sprdata[sprite][1] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
state->m_aga_sprdata[sprite][2] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); state->m_aga_sprdata[sprite][2] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
state->m_aga_sprdata[sprite][3] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); state->m_aga_sprdata[sprite][3] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
state->m_aga_sprdatb[sprite][0] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); state->m_aga_sprdatb[sprite][0] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
state->m_aga_sprdatb[sprite][1] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); state->m_aga_sprdatb[sprite][1] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
state->m_aga_sprdatb[sprite][2] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0); state->m_aga_sprdatb[sprite][2] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
state->m_aga_sprdatb[sprite][3] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2); state->m_aga_sprdatb[sprite][3] = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
state->m_aga_sprite_fetched_words = 4; state->m_aga_sprite_fetched_words = 4;
if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X %04X-%04X %04X-%04X %04X-%04X\n", if (LOG_SPRITE_DMA) logerror("%3d:sprite %d fetch: data=%04X-%04X %04X-%04X %04X-%04X %04X-%04X\n",
@ -158,8 +158,8 @@ static void update_sprite_dma(amiga_state *state, int scanline)
state->m_sprite_dma_reload_mask &= ~bitmask; state->m_sprite_dma_reload_mask &= ~bitmask;
/* fetch data into the control words */ /* fetch data into the control words */
CUSTOM_REG(REG_SPR0POS + 4 * num) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 0); CUSTOM_REG(REG_SPR0POS + 4 * num) = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 0);
CUSTOM_REG(REG_SPR0CTL + 4 * num) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2); CUSTOM_REG(REG_SPR0CTL + 4 * num) = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2);
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) += 4; CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) += 4;
/* fetch additional words */ /* fetch additional words */
switch((CUSTOM_REG(REG_FMODE) >> 2) & 0x03) switch((CUSTOM_REG(REG_FMODE) >> 2) & 0x03)
@ -376,24 +376,24 @@ INLINE void fetch_bitplane_data(amiga_state *state, int plane)
switch (CUSTOM_REG(REG_FMODE) & 0x03) switch (CUSTOM_REG(REG_FMODE) & 0x03)
{ {
case 0: case 0:
aga_bpldat[plane] = (UINT64)(*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)); aga_bpldat[plane] = (UINT64)state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2));
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
break; break;
case 1: case 1:
case 2: case 2:
aga_bpldat[plane] = (UINT64)(*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)) << 16; aga_bpldat[plane] = (UINT64)state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)) << 16;
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
aga_bpldat[plane] |= ((UINT64)(*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2))); aga_bpldat[plane] |= ((UINT64)state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)));
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
break; break;
case 3: case 3:
aga_bpldat[plane] = (UINT64)(*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)) << 48; aga_bpldat[plane] = (UINT64)state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)) << 48;
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
aga_bpldat[plane] |= ((UINT64)(*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2))) << 32; aga_bpldat[plane] |= ((UINT64)state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2))) << 32;
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
aga_bpldat[plane] |= ((UINT64)(*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2))) << 16; aga_bpldat[plane] |= ((UINT64)state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2))) << 16;
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
aga_bpldat[plane] |= (UINT64)(*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2)); aga_bpldat[plane] |= (UINT64)state->chip_ram_r(CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2));
CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2; CUSTOM_REG_LONG(REG_BPL1PTH + plane * 2) += 2;
break; break;
} }

View File

@ -952,7 +952,7 @@ static ADDRESS_MAP_START( a1000_mem, AS_PROGRAM, 16, a1000_state )
ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf80000, 0xfbffff) AM_DEVICE("bootrom", address_map_bank_device, amap16) AM_RANGE(0xf80000, 0xfbffff) AM_DEVICE("bootrom", address_map_bank_device, amap16)
@ -1005,7 +1005,7 @@ static ADDRESS_MAP_START( a2000_mem, AS_PROGRAM, 16, a2000_state )
AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w) AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w)
AM_RANGE(0xd80000, 0xddffff) AM_NOP AM_RANGE(0xd80000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
@ -1020,7 +1020,7 @@ static ADDRESS_MAP_START( a500_mem, AS_PROGRAM, 16, a500_state )
AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xd80000, 0xddffff) AM_NOP AM_RANGE(0xd80000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
@ -1038,7 +1038,7 @@ static ADDRESS_MAP_START( cdtv_mem, AS_PROGRAM, 16, cdtv_state )
AM_RANGE(0xdc8000, 0xdc87ff) AM_MIRROR(0x7800) AM_RAM AM_SHARE("sram") AM_RANGE(0xdc8000, 0xdc87ff) AM_MIRROR(0x7800) AM_RAM AM_SHARE("sram")
AM_RANGE(0xdd0000, 0xddffff) AM_NOP AM_RANGE(0xdd0000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe3ffff) AM_MIRROR(0x40000) AM_RAM AM_SHARE("memcard") AM_RANGE(0xe00000, 0xe3ffff) AM_MIRROR(0x40000) AM_RAM AM_SHARE("memcard")
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x40000) AM_ROM AM_REGION("cdrom", 0) AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x40000) AM_ROM AM_REGION("cdrom", 0)
@ -1058,7 +1058,7 @@ static ADDRESS_MAP_START( a3000_mem, AS_PROGRAM, 32, a3000_state )
AM_RANGE(0x00dc0000, 0x00dcffff) AM_DEVREADWRITE8("rtc", rp5c01_device, read, write, 0x000000ff) AM_RANGE(0x00dc0000, 0x00dcffff) AM_DEVREADWRITE8("rtc", rp5c01_device, read, write, 0x000000ff)
AM_RANGE(0x00dd0000, 0x00ddffff) AM_READWRITE(scsi_r, scsi_w) AM_RANGE(0x00dd0000, 0x00ddffff) AM_READWRITE(scsi_r, scsi_w)
AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w) AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w)
AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) AM_SHARE("custom_regs") AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space
AM_RANGE(0x00f80000, 0x00ffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0x00f80000, 0x00ffffff) AM_ROM AM_REGION("kickstart", 0)
@ -1076,7 +1076,7 @@ static ADDRESS_MAP_START( a500p_mem, AS_PROGRAM, 16, a500p_state )
AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w) AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w)
AM_RANGE(0xd80000, 0xddffff) AM_NOP AM_RANGE(0xd80000, 0xddffff) AM_NOP
AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
@ -1099,7 +1099,7 @@ static ADDRESS_MAP_START( a600_mem, AS_PROGRAM, 16, a600_state )
AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc
AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller) AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller)
AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE("gayle", gayle_device, gayle_id_r, gayle_id_w) AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE("gayle", gayle_device, gayle_id_r, gayle_id_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
@ -1123,7 +1123,7 @@ static ADDRESS_MAP_START( a1200_mem, AS_PROGRAM, 32, a1200_state )
AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc
AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller) AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller)
AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE16("gayle", gayle_device, gayle_id_r, gayle_id_w, 0xffffffff) AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE16("gayle", gayle_device, gayle_id_r, gayle_id_w, 0xffffffff)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) AM_SHARE("custom_regs") AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror32_r) AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror32_r)
AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space
@ -1146,7 +1146,7 @@ static ADDRESS_MAP_START( a4000_mem, AS_PROGRAM, 32, a4000_state )
AM_RANGE(0x00dd1000, 0x00dd3fff) AM_READWRITE16(ide_r, ide_w, 0xffffffff) AM_RANGE(0x00dd1000, 0x00dd3fff) AM_READWRITE16(ide_r, ide_w, 0xffffffff)
AM_RANGE(0x00dd4000, 0x00ddffff) AM_NOP AM_RANGE(0x00dd4000, 0x00ddffff) AM_NOP
AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w) AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w)
AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) AM_SHARE("custom_regs") AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
AM_RANGE(0x00e00000, 0x00e7ffff) AM_WRITENOP AM_READ(rom_mirror32_r) AM_RANGE(0x00e00000, 0x00e7ffff) AM_WRITENOP AM_READ(rom_mirror32_r)
AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // zorro2 autoconfig space (installed by devices) AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // zorro2 autoconfig space (installed by devices)
AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space
@ -1171,7 +1171,7 @@ static ADDRESS_MAP_START( cd32_mem, AS_PROGRAM, 32, cd32_state )
AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32) AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32)
AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write) AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write)
AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff) AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) AM_SHARE("custom_regs") AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff)
AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000) AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000)
AM_RANGE(0xa00000, 0xf7ffff) AM_NOP AM_RANGE(0xa00000, 0xf7ffff) AM_NOP
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)