mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
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:
parent
4ad7a0ea58
commit
1b89b80e9c
@ -510,7 +510,7 @@ TIMER_CALLBACK_MEMBER(akiko_device::dma_proc)
|
||||
data <<= 8;
|
||||
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 );
|
||||
|
@ -74,7 +74,7 @@ void amiga_fdc::dma_done()
|
||||
void amiga_fdc::dma_write(UINT16 value)
|
||||
{
|
||||
amiga_state *state = machine().driver_data<amiga_state>();
|
||||
(*state->m_chip_ram_w)(state, dskpt, value);
|
||||
state->chip_ram_w(dskpt, value);
|
||||
|
||||
dskpt += 2;
|
||||
dsklen--;
|
||||
@ -88,7 +88,7 @@ void amiga_fdc::dma_write(UINT16 value)
|
||||
UINT16 amiga_fdc::dma_read()
|
||||
{
|
||||
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;
|
||||
dsklen--;
|
||||
|
@ -212,7 +212,7 @@ void amiga_sound_device::sound_stream_update(sound_stream &stream, stream_sample
|
||||
chan->curlocation++;
|
||||
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)
|
||||
chan->curlength--;
|
||||
|
||||
|
@ -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(0xd80000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
|
||||
|
@ -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(0xd80000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
|
||||
|
@ -360,7 +360,7 @@ private:
|
||||
|
||||
typedef void (cubo_state::*input_hack_func)();
|
||||
input_hack_func m_input_hack;
|
||||
|
||||
void chip_ram_w8_hack(offs_t byteoffs, UINT8 data);
|
||||
void cndypuzl_input_hack();
|
||||
void haremchl_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(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write)
|
||||
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(0xa00000, 0xf7ffff) AM_NOP
|
||||
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()
|
||||
{
|
||||
if (m_maincpu->pc < m_chip_ram.bytes())
|
||||
{
|
||||
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())
|
||||
{
|
||||
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));
|
||||
amiga_chip_ram_w8(this, r_A2 + 0x1f, 0x00);
|
||||
UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7f00 + 0) << 16) | (chip_ram_r(r_A5 - 0x7f00 + 2));
|
||||
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())
|
||||
{
|
||||
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));
|
||||
amiga_chip_ram_w8(this, r_A2 + 0x13, 0x00);
|
||||
UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7fe0 + 0) << 16) | (chip_ram_r(r_A5 - 0x7fe0 + 2));
|
||||
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())
|
||||
{
|
||||
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));
|
||||
amiga_chip_ram_w8(this, r_A2 + 0x17, 0x00);
|
||||
UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7fdc + 0) << 16) | (chip_ram_r(r_A5 - 0x7fdc + 2));
|
||||
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())
|
||||
{
|
||||
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));
|
||||
amiga_chip_ram_w8(this, r_A2 + 0x24, 0x00);
|
||||
UINT32 r_A2 = (chip_ram_r(r_A5 - 0x7fa2 + 0) << 16) | (chip_ram_r(r_A5 - 0x7fa2 + 2));
|
||||
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())
|
||||
{
|
||||
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())
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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(0xd80000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
|
||||
|
@ -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(0xd80000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
|
||||
|
@ -326,8 +326,6 @@ class amiga_state : public driver_device
|
||||
public:
|
||||
amiga_state(const machine_config &mconfig, device_type type, const char *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_denise_id(DENISE),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
@ -353,7 +351,6 @@ public:
|
||||
m_p2_mouse_x(*this, "p2_mouse_x"),
|
||||
m_p2_mouse_y(*this, "p2_mouse_y"),
|
||||
m_chip_ram_mask(0),
|
||||
m_chip_ram_mirror(0),
|
||||
m_cia_0_irq(0),
|
||||
m_cia_1_irq(0),
|
||||
m_pot0x(0), m_pot1x(0), m_pot0y(0), m_pot1y(0),
|
||||
@ -373,10 +370,16 @@ public:
|
||||
m_rx_previous(1)
|
||||
{ }
|
||||
|
||||
|
||||
UINT16 (*m_chip_ram_r)(amiga_state *state, offs_t offset);
|
||||
void (*m_chip_ram_w)(amiga_state *state, offs_t offset, UINT16 data);
|
||||
|
||||
/* chip RAM access */
|
||||
UINT16 chip_ram_r(offs_t byteoffs)
|
||||
{
|
||||
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 */
|
||||
UINT8 m_sprite_comparitor_enable_mask;
|
||||
@ -486,14 +489,13 @@ public:
|
||||
HBLANK = 186
|
||||
};
|
||||
|
||||
required_shared_ptr<UINT16> m_chip_ram;
|
||||
required_shared_ptr<UINT16> m_custom_regs;
|
||||
|
||||
emu_timer *m_blitter_timer;
|
||||
|
||||
UINT16 m_agnus_id;
|
||||
UINT16 m_denise_id;
|
||||
|
||||
UINT16 m_custom_regs[256];
|
||||
|
||||
void custom_chip_w(UINT16 offset, UINT16 data, UINT16 mem_mask = 0xffff)
|
||||
{
|
||||
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_y;
|
||||
|
||||
memory_array m_chip_ram;
|
||||
UINT32 m_chip_ram_mask;
|
||||
UINT32 m_chip_ram_mirror;
|
||||
|
||||
int m_cia_0_irq;
|
||||
int m_cia_1_irq;
|
||||
@ -663,8 +665,6 @@ private:
|
||||
|
||||
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 -----------*/
|
||||
|
||||
|
@ -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
|
||||
@ -220,24 +143,14 @@ void amiga_state::machine_start()
|
||||
// add callback for RESET instruction
|
||||
m_maincpu->set_reset_callback(write_line_delegate(FUNC(amiga_state::m68k_reset), this));
|
||||
|
||||
switch (m_maincpu->space(AS_PROGRAM).data_width())
|
||||
{
|
||||
case 16:
|
||||
m_chip_ram_r = amiga_chip_ram16_r;
|
||||
m_chip_ram_w = amiga_chip_ram16_w;
|
||||
break;
|
||||
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");
|
||||
}
|
||||
// set up chip RAM access
|
||||
memory_share *share = memshare("chip_ram");
|
||||
if (share == NULL)
|
||||
fatalerror("Unable to find Amiga chip RAM\n");
|
||||
m_chip_ram.set(*share, 2);
|
||||
m_chip_ram_mask = (m_chip_ram.bytes() - 1) & ~1;
|
||||
|
||||
m_chip_ram_mask = m_chip_ram.mask() & ~1;
|
||||
m_chip_ram_mirror = ~m_chip_ram.mask() & 0x1fffff;
|
||||
|
||||
// setup the timers
|
||||
// set up the timers
|
||||
m_irq_timer = timer_alloc(TIMER_AMIGA_IRQ);
|
||||
m_blitter_timer = timer_alloc(TIMER_AMIGA_BLITTER);
|
||||
m_serial_timer = timer_alloc(TIMER_SERIAL);
|
||||
@ -536,21 +449,21 @@ static UINT32 blit_ascending(amiga_state *state)
|
||||
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_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;
|
||||
}
|
||||
|
||||
/* fetch data for B */
|
||||
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;
|
||||
}
|
||||
|
||||
/* fetch data for C */
|
||||
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;
|
||||
}
|
||||
|
||||
@ -606,7 +519,7 @@ static UINT32 blit_ascending(amiga_state *state)
|
||||
/* write to the destination */
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -661,21 +574,21 @@ static UINT32 blit_descending(amiga_state *state)
|
||||
/* fetch data for A */
|
||||
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;
|
||||
}
|
||||
|
||||
/* fetch data for B */
|
||||
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;
|
||||
}
|
||||
|
||||
/* fetch data for C */
|
||||
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;
|
||||
}
|
||||
|
||||
@ -748,7 +661,7 @@ static UINT32 blit_descending(amiga_state *state)
|
||||
/* write to the destination */
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -840,7 +753,7 @@ static UINT32 blit_line(amiga_state *state)
|
||||
|
||||
/* fetch data for C */
|
||||
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 */
|
||||
tempa = CUSTOM_REG(REG_BLTADAT) >> (CUSTOM_REG(REG_BLTCON0) >> 12);
|
||||
@ -891,7 +804,7 @@ static UINT32 blit_line(amiga_state *state)
|
||||
blitsum |= tempd;
|
||||
|
||||
/* 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 */
|
||||
if (CUSTOM_REG(REG_BLTCON1) & 0x0010)
|
||||
|
@ -240,12 +240,12 @@ int amiga_copper_execute_next(running_machine &machine, int xpos)
|
||||
}
|
||||
|
||||
/* 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;
|
||||
xpos += COPPER_CYCLES_TO_PIXELS(1);
|
||||
|
||||
/* 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;
|
||||
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)
|
||||
{
|
||||
CUSTOM_REG(REG_SPR0DATA + 4 * sprite) = (*state->m_chip_ram_r)(state, 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_SPR0DATA + 4 * sprite) = state->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 0);
|
||||
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;
|
||||
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;
|
||||
|
||||
/* 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_SPR0CTL + 4 * num) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2);
|
||||
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->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2);
|
||||
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));
|
||||
}
|
||||
@ -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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -92,35 +92,35 @@ INLINE void fetch_sprite_data(amiga_state *state, int scanline, int sprite)
|
||||
switch((CUSTOM_REG(REG_FMODE) >> 2) & 0x03)
|
||||
{
|
||||
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_sprdatb[sprite][0] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 4;
|
||||
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]);
|
||||
break;
|
||||
case 1:
|
||||
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][1] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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][1] = (*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) + 0);
|
||||
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;
|
||||
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] );
|
||||
break;
|
||||
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][1] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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][3] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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][1] = (*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) + 0);
|
||||
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;
|
||||
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][3] = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
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->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) + 2);
|
||||
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * sprite) += 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",
|
||||
@ -158,8 +158,8 @@ static void update_sprite_dma(amiga_state *state, int scanline)
|
||||
state->m_sprite_dma_reload_mask &= ~bitmask;
|
||||
|
||||
/* 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_SPR0CTL + 4 * num) = (*state->m_chip_ram_r)(state, CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2);
|
||||
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->chip_ram_r(CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) + 2);
|
||||
CUSTOM_REG_LONG(REG_SPR0PTH + 2 * num) += 4;
|
||||
/* fetch additional words */
|
||||
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)
|
||||
{
|
||||
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;
|
||||
break;
|
||||
case 1:
|
||||
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;
|
||||
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;
|
||||
break;
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
break;
|
||||
}
|
||||
|
@ -952,7 +952,7 @@ static ADDRESS_MAP_START( a1000_mem, AS_PROGRAM, 16, a1000_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
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(0xd80000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
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(0xd80000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
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(0xdd0000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
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(0x00dd0000, 0x00ddffff) AM_READWRITE(scsi_r, scsi_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(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space
|
||||
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(0xd80000, 0xddffff) AM_NOP
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
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(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller)
|
||||
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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
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(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(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(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
|
||||
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(0x00dd4000, 0x00ddffff) AM_NOP
|
||||
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(0x00e80000, 0x00efffff) AM_NOP // zorro2 autoconfig space (installed by devices)
|
||||
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(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write)
|
||||
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(0xa00000, 0xf7ffff) AM_NOP
|
||||
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
|
||||
|
Loading…
Reference in New Issue
Block a user