diff --git a/src/mame/drivers/arcadecl.c b/src/mame/drivers/arcadecl.c index 616017a93de..f1cdbf99b68 100644 --- a/src/mame/drivers/arcadecl.c +++ b/src/mame/drivers/arcadecl.c @@ -69,6 +69,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "sound/okim6295.h" +#include "video/atarimo.h" #include "includes/arcadecl.h" @@ -155,9 +156,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_BASE_MEMBER(arcadecl_state, m_bitmap) AM_RANGE(0x3c0000, 0x3c07ff) AM_RAM_WRITE(atarigen_expanded_666_paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3e0000, 0x3e07ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3e0800, 0x3effbf) AM_RAM - AM_RANGE(0x3effc0, 0x3effff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x640000, 0x640001) AM_READ_PORT("PLAYER1") AM_RANGE(0x640002, 0x640003) AM_READ_PORT("PLAYER2") AM_RANGE(0x640010, 0x640011) AM_READ_PORT("STATUS") diff --git a/src/mame/drivers/atarisy1.c b/src/mame/drivers/atarisy1.c index ae89d8390dd..52f429290f0 100644 --- a/src/mame/drivers/atarisy1.c +++ b/src/mame/drivers/atarisy1.c @@ -193,10 +193,11 @@ RoadBlasters (aka Future Vette):005* #include "cpu/m6502/m6502.h" #include "machine/atarigen.h" #include "machine/6522via.h" -#include "includes/atarisy1.h" #include "sound/tms5220.h" #include "sound/2151intf.h" #include "sound/pokey.h" +#include "video/atarimo.h" +#include "includes/atarisy1.h" @@ -481,7 +482,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE(atarigen_eeprom_enable_w) AM_RANGE(0x900000, 0x9fffff) AM_RAM AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(atarisy1_state, m_playfield) - AM_RANGE(0xa02000, 0xa02fff) AM_RAM_WRITE(atarisy1_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xa02000, 0xa02fff) AM_READWRITE(atarimo_0_spriteram_r, atarisy1_spriteram_w) AM_RANGE(0xa03000, 0xa03fff) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(atarisy1_state, m_alpha) AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram16_IIIIRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xf00000, 0xf00fff) AM_READWRITE(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom") diff --git a/src/mame/drivers/badlands.c b/src/mame/drivers/badlands.c index c42db4157cf..df44d5ac6b8 100644 --- a/src/mame/drivers/badlands.c +++ b/src/mame/drivers/badlands.c @@ -165,8 +165,9 @@ Measurements - #include "cpu/z80/z80.h" #include "cpu/m68000/m68000.h" #include "cpu/m6502/m6502.h" -#include "includes/badlands.h" #include "sound/2151intf.h" +#include "video/atarimo.h" +#include "includes/badlands.h" @@ -398,7 +399,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0xfee000, 0xfeffff) AM_WRITE(atarigen_eeprom_enable_w) AM_RANGE(0xffc000, 0xffc3ff) AM_RAM_WRITE(atarigen_expanded_666_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(badlands_state, m_playfield) - AM_RANGE(0xfff000, 0xfff1ff) AM_RAM_WRITE(atarimo_0_spriteram_expanded_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xfff000, 0xfff1ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_expanded_w) AM_RANGE(0xfff200, 0xffffff) AM_RAM ADDRESS_MAP_END @@ -660,7 +661,7 @@ static ADDRESS_MAP_START( bootleg_map, AS_PROGRAM, 16 ) AM_RANGE(0xfee000, 0xfeffff) AM_WRITE(atarigen_eeprom_enable_w) AM_RANGE(0xffc000, 0xffc3ff) AM_RAM_WRITE(atarigen_expanded_666_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(badlands_state, m_playfield) - AM_RANGE(0xfff000, 0xfff1ff) AM_RAM_WRITE(atarimo_0_spriteram_expanded_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xfff000, 0xfff1ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_expanded_w) AM_RANGE(0xfff200, 0xffffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/batman.c b/src/mame/drivers/batman.c index 7de28a13708..96a7fed2d3f 100644 --- a/src/mame/drivers/batman.c +++ b/src/mame/drivers/batman.c @@ -20,6 +20,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/batman.h" @@ -147,10 +148,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x100000) AM_WRITE(atarigen_playfield2_latched_msb_w) AM_BASE_MEMBER(batman_state, m_playfield2) AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x100000) AM_WRITE(atarigen_playfield_latched_lsb_w) AM_BASE_MEMBER(batman_state, m_playfield) AM_RANGE(0x3f4000, 0x3f5fff) AM_MIRROR(0x100000) AM_WRITE(atarigen_playfield_dual_upper_w) AM_BASE_MEMBER(batman_state, m_playfield_upper) - AM_RANGE(0x3f6000, 0x3f7fff) AM_MIRROR(0x100000) AM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) - AM_RANGE(0x3f8000, 0x3f8fef) AM_MIRROR(0x100000) AM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(batman_state, m_alpha) + AM_RANGE(0x3f6000, 0x3f7fff) AM_MIRROR(0x100000) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) + AM_RANGE(0x3f8000, 0x3f8eff) AM_MIRROR(0x100000) AM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(batman_state, m_alpha) AM_RANGE(0x3f8f00, 0x3f8f7f) AM_MIRROR(0x100000) AM_BASE_MEMBER(batman_state, m_atarivc_eof_data) - AM_RANGE(0x3f8f80, 0x3f8fff) AM_MIRROR(0x100000) AM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f8f80, 0x3f8fff) AM_MIRROR(0x100000) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f0000, 0x3fffff) AM_MIRROR(0x100000) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/blstroid.c b/src/mame/drivers/blstroid.c index d5fd93c3429..61de155aa0e 100644 --- a/src/mame/drivers/blstroid.c +++ b/src/mame/drivers/blstroid.c @@ -21,6 +21,7 @@ #include "cpu/m68000/m68000.h" #include "machine/atarigen.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/blstroid.h" @@ -108,7 +109,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0xffa000, 0xffa3ff) AM_MIRROR(0x7f8c00) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xffb000, 0xffb3ff) AM_MIRROR(0x7f8c00) AM_READWRITE(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom") AM_RANGE(0xffc000, 0xffcfff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(blstroid_state, m_playfield) - AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xffe000, 0xffffff) AM_MIRROR(0x7f8000) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/cyberbal.c b/src/mame/drivers/cyberbal.c index 5a69bfb9aff..30983d96caa 100644 --- a/src/mame/drivers/cyberbal.c +++ b/src/mame/drivers/cyberbal.c @@ -26,6 +26,7 @@ #include "sound/dac.h" #include "rendlay.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/cyberbal.h" @@ -162,11 +163,11 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(cyberbal_paletteram_0_w) AM_SHARE("share2") AM_BASE_MEMBER(cyberbal_state, m_paletteram_0) AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(atarigen_playfield2_w) AM_SHARE("share3") AM_BASE_MEMBER(cyberbal_state, m_playfield2) AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE(atarigen_alpha2_w) AM_SHARE("share4") AM_BASE_MEMBER(cyberbal_state, m_alpha2) - AM_RANGE(0xff3000, 0xff37ff) AM_RAM_WRITE(atarimo_1_spriteram_w) AM_SHARE("share5") AM_BASE(&atarimo_1_spriteram) + AM_RANGE(0xff3000, 0xff37ff) AM_READWRITE(atarimo_1_spriteram_r, atarimo_1_spriteram_w) AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("share6") AM_RANGE(0xff4000, 0xff5fff) AM_RAM_WRITE(atarigen_playfield_w) AM_SHARE("share7") AM_BASE_MEMBER(cyberbal_state, m_playfield) AM_RANGE(0xff6000, 0xff6fff) AM_RAM_WRITE(atarigen_alpha_w) AM_SHARE("share8") AM_BASE_MEMBER(cyberbal_state, m_alpha) - AM_RANGE(0xff7000, 0xff77ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_SHARE("share9") AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xff7000, 0xff77ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("share10") AM_RANGE(0xffa000, 0xffbfff) AM_READONLY AM_WRITENOP AM_SHARE("share11") AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("share12") @@ -189,11 +190,11 @@ static ADDRESS_MAP_START( extra_map, AS_PROGRAM, 16 ) AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(cyberbal_paletteram_0_w) AM_SHARE("share2") AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(atarigen_playfield2_w) AM_SHARE("share3") AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE(atarigen_alpha2_w) AM_SHARE("share4") - AM_RANGE(0xff3000, 0xff37ff) AM_RAM_WRITE(atarimo_1_spriteram_w) AM_SHARE("share5") + AM_RANGE(0xff3000, 0xff37ff) AM_READWRITE(atarimo_1_spriteram_r, atarimo_1_spriteram_w) AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("share6") AM_RANGE(0xff4000, 0xff5fff) AM_RAM_WRITE(atarigen_playfield_w) AM_SHARE("share7") AM_RANGE(0xff6000, 0xff6fff) AM_RAM_WRITE(atarigen_alpha_w) AM_SHARE("share8") - AM_RANGE(0xff7000, 0xff77ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_SHARE("share9") + AM_RANGE(0xff7000, 0xff77ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("share10") AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("share11") AM_RANGE(0xffc000, 0xffffff) AM_READONLY AM_WRITENOP AM_SHARE("share12") @@ -263,7 +264,7 @@ static ADDRESS_MAP_START( cyberbal2p_map, AS_PROGRAM, 16 ) AM_RANGE(0xfe0000, 0xfe0003) AM_READ(sound_state_r) AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(cyberbal_state, m_playfield) AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(cyberbal_state, m_alpha) - AM_RANGE(0xff3000, 0xff37ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xff3000, 0xff37ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xff3800, 0xffffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/eprom.c b/src/mame/drivers/eprom.c index bb9e069b616..f55da99562f 100644 --- a/src/mame/drivers/eprom.c +++ b/src/mame/drivers/eprom.c @@ -26,6 +26,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/eprom.h" @@ -176,9 +177,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x360030, 0x360031) AM_WRITE(atarigen_sound_w) AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_BASE_GENERIC(paletteram) AM_RANGE(0x3f0000, 0x3f1fff) AM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(eprom_state, m_playfield) - AM_RANGE(0x3f2000, 0x3f3fff) AM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3f2000, 0x3f3fff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3f4000, 0x3f4f7f) AM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(eprom_state, m_alpha) - AM_RANGE(0x3f4f80, 0x3f4fff) AM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f4f80, 0x3f4fff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f8000, 0x3f9fff) AM_WRITE(atarigen_playfield_upper_w) AM_BASE_MEMBER(eprom_state, m_playfield_upper) AM_RANGE(0x3f0000, 0x3f9fff) AM_RAM ADDRESS_MAP_END @@ -202,9 +203,9 @@ static ADDRESS_MAP_START( guts_map, AS_PROGRAM, 16 ) AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_BASE_GENERIC(paletteram) AM_RANGE(0xff0000, 0xff1fff) AM_WRITE(atarigen_playfield_upper_w) AM_BASE_MEMBER(eprom_state, m_playfield_upper) AM_RANGE(0xff8000, 0xff9fff) AM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(eprom_state, m_playfield) - AM_RANGE(0xffa000, 0xffbfff) AM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xffa000, 0xffbfff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xffc000, 0xffcf7f) AM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(eprom_state, m_alpha) - AM_RANGE(0xffcf80, 0xffcfff) AM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0xffcf80, 0xffcfff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0xff0000, 0xff1fff) AM_RAM AM_RANGE(0xff8000, 0xffffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/gauntlet.c b/src/mame/drivers/gauntlet.c index 5cfa075ca5f..e5a97a1fb55 100644 --- a/src/mame/drivers/gauntlet.c +++ b/src/mame/drivers/gauntlet.c @@ -124,6 +124,7 @@ #include "sound/tms5220.h" #include "sound/2151intf.h" #include "sound/pokey.h" +#include "video/atarimo.h" #include "includes/gauntlet.h" @@ -325,11 +326,11 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) /* VBUS */ AM_RANGE(0x900000, 0x901fff) AM_MIRROR(0x2c8000) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(gauntlet_state, m_playfield) - AM_RANGE(0x902000, 0x903fff) AM_MIRROR(0x2c8000) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x902000, 0x903fff) AM_MIRROR(0x2c8000) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x904000, 0x904fff) AM_MIRROR(0x2c8000) AM_RAM AM_RANGE(0x905f6e, 0x905f6f) AM_MIRROR(0x2c8000) AM_RAM_WRITE(gauntlet_yscroll_w) AM_BASE_MEMBER(gauntlet_state, m_yscroll) AM_RANGE(0x905000, 0x905f7f) AM_MIRROR(0x2c8000) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(gauntlet_state, m_alpha) - AM_RANGE(0x905f80, 0x905fff) AM_MIRROR(0x2c8000) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x905f80, 0x905fff) AM_MIRROR(0x2c8000) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x910000, 0x9107ff) AM_MIRROR(0x2cf800) AM_RAM_WRITE(paletteram16_IIIIRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x930000, 0x930001) AM_MIRROR(0x2cfffe) AM_WRITE(gauntlet_xscroll_w) AM_BASE_MEMBER(gauntlet_state, m_xscroll) ADDRESS_MAP_END diff --git a/src/mame/drivers/klax.c b/src/mame/drivers/klax.c index 055e3711a7c..4be17f9bc5d 100644 --- a/src/mame/drivers/klax.c +++ b/src/mame/drivers/klax.c @@ -19,8 +19,9 @@ #include "emu.h" #include "cpu/m68000/m68000.h" -#include "includes/klax.h" #include "sound/okim6295.h" +#include "video/atarimo.h" +#include "includes/klax.h" @@ -93,9 +94,9 @@ static ADDRESS_MAP_START( klax_map, AS_PROGRAM, 16 ) AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w) AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM_WRITE(atarigen_expanded_666_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(klax_state, m_playfield) - AM_RANGE(0x3f0f80, 0x3f0fff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f0f80, 0x3f0fff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_WRITE(atarigen_playfield_upper_w) AM_BASE_MEMBER(klax_state, m_playfield_upper) - AM_RANGE(0x3f2000, 0x3f27ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3f2000, 0x3f27ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3f2800, 0x3f3fff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/offtwall.c b/src/mame/drivers/offtwall.c index cf5b54be650..96a7425464d 100644 --- a/src/mame/drivers/offtwall.c +++ b/src/mame/drivers/offtwall.c @@ -20,6 +20,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/offtwall.h" @@ -295,10 +296,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE(offtwall_atarivc_r, offtwall_atarivc_w) AM_BASE_MEMBER(offtwall_state, m_atarivc_data) AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_WRITE(atarigen_playfield_latched_msb_w) AM_BASE_MEMBER(offtwall_state, m_playfield) AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_BASE_MEMBER(offtwall_state, m_atarivc_eof_data) - AM_RANGE(0x3f5f80, 0x3f5fff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f5f80, 0x3f5fff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_WRITE(atarigen_playfield_upper_w) AM_BASE_MEMBER(offtwall_state, m_playfield_upper) AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM - AM_RANGE(0x3fd000, 0x3fd7ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3fd000, 0x3fd7ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3fd800, 0x3fffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/rampart.c b/src/mame/drivers/rampart.c index 66f5cdcd25c..39d445bf0b7 100644 --- a/src/mame/drivers/rampart.c +++ b/src/mame/drivers/rampart.c @@ -24,9 +24,10 @@ #include "emu.h" #include "cpu/m68000/m68000.h" -#include "includes/rampart.h" #include "sound/okim6295.h" #include "sound/2413intf.h" +#include "video/atarimo.h" +#include "includes/rampart.h" #define MASTER_CLOCK XTAL_14_31818MHz @@ -139,9 +140,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_BASE_MEMBER(rampart_state, m_bitmap) AM_RANGE(0x220000, 0x3bffff) AM_WRITENOP /* the code blasts right through this when initializing */ AM_RANGE(0x3c0000, 0x3c07ff) AM_MIRROR(0x019800) AM_RAM_WRITE(atarigen_expanded_666_paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x3e0000, 0x3e07ff) AM_MIRROR(0x010000) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3e0000, 0x3e07ff) AM_MIRROR(0x010000) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3e0800, 0x3e3f3f) AM_MIRROR(0x010000) AM_RAM - AM_RANGE(0x3e3f40, 0x3e3f7f) AM_MIRROR(0x010000) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3e3f40, 0x3e3f7f) AM_MIRROR(0x010000) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3e3f80, 0x3effff) AM_MIRROR(0x010000) AM_RAM AM_RANGE(0x460000, 0x460001) AM_MIRROR(0x019ffe) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0xff00) AM_RANGE(0x480000, 0x480003) AM_MIRROR(0x019ffc) AM_DEVWRITE8("ymsnd", ym2413_w, 0xff00) diff --git a/src/mame/drivers/relief.c b/src/mame/drivers/relief.c index 2bd043e5c45..c3104aa80b2 100644 --- a/src/mame/drivers/relief.c +++ b/src/mame/drivers/relief.c @@ -20,9 +20,10 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "machine/atarigen.h" -#include "includes/relief.h" #include "sound/okim6295.h" #include "sound/2413intf.h" +#include "video/atarimo.h" +#include "includes/relief.h" /************************************* @@ -165,10 +166,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_WRITE(atarigen_playfield2_latched_msb_w) AM_BASE_MEMBER(relief_state, m_playfield2) AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_WRITE(atarigen_playfield_latched_lsb_w) AM_BASE_MEMBER(relief_state, m_playfield) AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_WRITE(atarigen_playfield_dual_upper_w) AM_BASE_MEMBER(relief_state, m_playfield_upper) - AM_RANGE(0x3f6000, 0x3f67ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3f6000, 0x3f67ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3f6800, 0x3f8eff) AM_RAM AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_BASE_MEMBER(relief_state, m_atarivc_eof_data) - AM_RANGE(0x3f8f80, 0x3f8fff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f8f80, 0x3f8fff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f9000, 0x3fffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/shuuz.c b/src/mame/drivers/shuuz.c index 2ea46f42b67..496fc363246 100644 --- a/src/mame/drivers/shuuz.c +++ b/src/mame/drivers/shuuz.c @@ -19,8 +19,9 @@ #include "emu.h" #include "cpu/m68000/m68000.h" -#include "includes/shuuz.h" #include "sound/okim6295.h" +#include "video/atarimo.h" +#include "includes/shuuz.h" @@ -151,10 +152,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE(shuuz_atarivc_r, shuuz_atarivc_w) AM_BASE_MEMBER(shuuz_state, m_atarivc_data) AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_WRITE(atarigen_playfield_latched_msb_w) AM_BASE_MEMBER(shuuz_state, m_playfield) AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_BASE_MEMBER(shuuz_state, m_atarivc_eof_data) - AM_RANGE(0x3f5f80, 0x3f5fff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f5f80, 0x3f5fff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_WRITE(atarigen_playfield_upper_w) AM_BASE_MEMBER(shuuz_state, m_playfield_upper) AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM - AM_RANGE(0x3fd000, 0x3fd3ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3fd000, 0x3fd3ff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3fd400, 0x3fffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/skullxbo.c b/src/mame/drivers/skullxbo.c index f619a4eaad3..65a5a952f32 100644 --- a/src/mame/drivers/skullxbo.c +++ b/src/mame/drivers/skullxbo.c @@ -20,6 +20,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/skullxbo.h" @@ -151,8 +152,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0xff8000, 0xff9fff) AM_RAM_WRITE(atarigen_playfield_latched_lsb_w) AM_BASE_MEMBER(skullxbo_state, m_playfield) AM_RANGE(0xffa000, 0xffbfff) AM_RAM_WRITE(atarigen_playfield_upper_w) AM_BASE_MEMBER(skullxbo_state, m_playfield_upper) AM_RANGE(0xffc000, 0xffcf7f) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(skullxbo_state, m_alpha) - AM_RANGE(0xffcf80, 0xffcfff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) - AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xffcf80, 0xffcfff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) + AM_RANGE(0xffd000, 0xffdfff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xffe000, 0xffffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/thunderj.c b/src/mame/drivers/thunderj.c index 7d55227e84a..c9f752bcb34 100644 --- a/src/mame/drivers/thunderj.c +++ b/src/mame/drivers/thunderj.c @@ -21,6 +21,7 @@ #include "cpu/m68000/m68000.h" #include "machine/atarigen.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/thunderj.h" @@ -168,10 +169,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_WRITE(atarigen_playfield2_latched_msb_w) AM_BASE_MEMBER(thunderj_state, m_playfield2) AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_WRITE(atarigen_playfield_latched_lsb_w) AM_BASE_MEMBER(thunderj_state, m_playfield) AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_WRITE(atarigen_playfield_dual_upper_w) AM_BASE_MEMBER(thunderj_state, m_playfield_upper) - AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3f6000, 0x3f7fff) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3f8000, 0x3f8eff) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(thunderj_state, m_alpha) AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_BASE_MEMBER(thunderj_state, m_atarivc_eof_data) - AM_RANGE(0x3f8f80, 0x3f8fff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f8f80, 0x3f8fff) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f9000, 0x3fffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/toobin.c b/src/mame/drivers/toobin.c index d85641610f6..c86cc4050c1 100644 --- a/src/mame/drivers/toobin.c +++ b/src/mame/drivers/toobin.c @@ -21,6 +21,7 @@ #include "cpu/m68000/m68000.h" #include "machine/atarigen.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/toobin.h" #define MASTER_CLOCK XTAL_32MHz @@ -111,14 +112,14 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0xc00000, 0xc07fff) AM_RAM_WRITE(atarigen_playfield_large_w) AM_BASE_MEMBER(toobin_state, m_playfield) AM_RANGE(0xc08000, 0xc097ff) AM_MIRROR(0x046000) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(toobin_state, m_alpha) - AM_RANGE(0xc09800, 0xc09fff) AM_MIRROR(0x046000) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xc09800, 0xc09fff) AM_MIRROR(0x046000) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xc10000, 0xc107ff) AM_MIRROR(0x047800) AM_RAM_WRITE(toobin_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xff6000, 0xff6001) AM_READNOP /* who knows? read at controls time */ AM_RANGE(0xff8000, 0xff8001) AM_MIRROR(0x4500fe) AM_WRITE(watchdog_reset16_w) AM_RANGE(0xff8100, 0xff8101) AM_MIRROR(0x4500fe) AM_WRITE(atarigen_sound_w) AM_RANGE(0xff8300, 0xff8301) AM_MIRROR(0x45003e) AM_WRITE(toobin_intensity_w) AM_RANGE(0xff8340, 0xff8341) AM_MIRROR(0x45003e) AM_WRITE(interrupt_scan_w) AM_BASE_MEMBER(toobin_state, m_interrupt_scan) - AM_RANGE(0xff8380, 0xff8381) AM_MIRROR(0x45003e) AM_WRITE(toobin_slip_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0xff8380, 0xff8381) AM_MIRROR(0x45003e) AM_READWRITE(atarimo_0_slipram_r, toobin_slip_w) AM_RANGE(0xff83c0, 0xff83c1) AM_MIRROR(0x45003e) AM_WRITE(atarigen_scanline_int_ack_w) AM_RANGE(0xff8400, 0xff8401) AM_MIRROR(0x4500fe) AM_WRITE(atarigen_sound_reset_w) AM_RANGE(0xff8500, 0xff8501) AM_MIRROR(0x4500fe) AM_WRITE(atarigen_eeprom_enable_w) diff --git a/src/mame/drivers/vindictr.c b/src/mame/drivers/vindictr.c index 79235dd8564..a10fbc8508f 100644 --- a/src/mame/drivers/vindictr.c +++ b/src/mame/drivers/vindictr.c @@ -20,6 +20,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/vindictr.h" @@ -97,9 +98,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x360030, 0x360031) AM_WRITE(atarigen_sound_w) AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE(vindictr_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x8000) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(vindictr_state, m_playfield) - AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x8000) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x8000) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0x3f4000, 0x3f4f7f) AM_MIRROR(0x8000) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(vindictr_state, m_alpha) - AM_RANGE(0x3f4f80, 0x3f4fff) AM_MIRROR(0x8000) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram) + AM_RANGE(0x3f4f80, 0x3f4fff) AM_MIRROR(0x8000) AM_READWRITE(atarimo_0_slipram_r, atarimo_0_slipram_w) AM_RANGE(0x3f5000, 0x3f7fff) AM_MIRROR(0x8000) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/xybots.c b/src/mame/drivers/xybots.c index ae9c2871c41..89602eb2503 100644 --- a/src/mame/drivers/xybots.c +++ b/src/mame/drivers/xybots.c @@ -21,6 +21,7 @@ #include "cpu/m68000/m68000.h" #include "machine/atarigen.h" #include "audio/atarijsa.h" +#include "video/atarimo.h" #include "includes/xybots.h" @@ -89,7 +90,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x010000, 0x03ffff) AM_MIRROR(0x7c0000) AM_ROM AM_RANGE(0xff8000, 0xff8fff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(atarigen_alpha_w) AM_BASE_MEMBER(xybots_state, m_alpha) AM_RANGE(0xff9000, 0xffadff) AM_MIRROR(0x7f8000) AM_RAM - AM_RANGE(0xffae00, 0xffafff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram) + AM_RANGE(0xffae00, 0xffafff) AM_MIRROR(0x7f8000) AM_READWRITE(atarimo_0_spriteram_r, atarimo_0_spriteram_w) AM_RANGE(0xffb000, 0xffbfff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE_MEMBER(xybots_state, m_playfield) AM_RANGE(0xffc000, 0xffc7ff) AM_MIRROR(0x7f8800) AM_RAM_WRITE(paletteram16_IIIIRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_READWRITE(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom") diff --git a/src/mame/machine/atarigen.c b/src/mame/machine/atarigen.c index 728dc2c5e68..397b223659c 100644 --- a/src/mame/machine/atarigen.c +++ b/src/mame/machine/atarigen.c @@ -45,6 +45,7 @@ #include "sound/tms5220.h" #include "sound/okim6295.h" #include "sound/pokey.h" +#include "video/atarimo.h" #include "includes/slapstic.h" #include "atarigen.h" diff --git a/src/mame/machine/atarigen.h b/src/mame/machine/atarigen.h index 534426e0695..37297bc31e5 100644 --- a/src/mame/machine/atarigen.h +++ b/src/mame/machine/atarigen.h @@ -41,7 +41,6 @@ #define __MACHINE_ATARIGEN__ #include "machine/nvram.h" -#include "video/atarimo.h" #include "machine/er2055.h" diff --git a/src/mame/video/arcadecl.c b/src/mame/video/arcadecl.c index 22d3db5508f..8fdf04f07bb 100644 --- a/src/mame/video/arcadecl.c +++ b/src/mame/video/arcadecl.c @@ -9,6 +9,7 @@ #include "emu.h" +#include "video/atarimo.h" #include "includes/arcadecl.h" diff --git a/src/mame/video/atarig42.c b/src/mame/video/atarig42.c index 9d79df92d24..6d5e9611de1 100644 --- a/src/mame/video/atarig42.c +++ b/src/mame/video/atarig42.c @@ -215,7 +215,7 @@ SCREEN_UPDATE( atarig42 ) if (mo[x]) { int pfpri = pri[x]; - int mopri = mo[x] >> ATARIMO_PRIORITY_SHIFT; + int mopri = mo[x] >> ATARIRLE_PRIORITY_SHIFT; if (mopri >= pfpri) pf[x] = mo[x] & ATARIRLE_DATA_MASK; } diff --git a/src/mame/video/atarimo.c b/src/mame/video/atarimo.c index b891953ffbf..c19a8c258ed 100644 --- a/src/mame/video/atarimo.c +++ b/src/mame/video/atarimo.c @@ -94,7 +94,8 @@ struct _atarimo_data int codehighshift; /* shift count for the upper code */ atarimo_entry * spriteram; /* pointer to sprite RAM */ - UINT16 ** slipram; /* pointer to the SLIP RAM pointer */ + UINT16 * sprite_ram; /* pointer to the sprite RAM */ + UINT16 * slip_ram; /* pointer to the SLIP RAM */ UINT16 * codelookup; /* lookup table for codes */ UINT8 * colorlookup; /* lookup table for colors */ UINT8 * gfxlookup; /* lookup table for graphics */ @@ -124,18 +125,6 @@ struct _atarimo_data -/*************************************************************************** - GLOBAL VARIABLES -***************************************************************************/ - -UINT16 *atarimo_0_spriteram; -UINT16 *atarimo_0_slipram; - -UINT16 *atarimo_1_spriteram; -UINT16 *atarimo_1_slipram; - - - /*************************************************************************** STATIC VARIABLES ***************************************************************************/ @@ -403,7 +392,8 @@ void atarimo_init(running_machine &machine, int map, const atarimo_desc *desc) mo->specialcb = desc->specialcb; mo->codehighshift = compute_log(round_to_powerof2(mo->codemask.mask)); - mo->slipram = (map == 0) ? &atarimo_0_slipram : &atarimo_1_slipram; + mo->sprite_ram = auto_alloc_array_clear(machine, UINT16, 0x2000); + mo->slip_ram = auto_alloc_array_clear(machine, UINT16, 0x80); /* allocate the temp bitmap */ mo->bitmap = auto_bitmap_alloc(machine, machine.primary_screen->width(), machine.primary_screen->height(), BITMAP_FORMAT_INDEXED16); @@ -684,7 +674,7 @@ bitmap_t *atarimo_render(int map, const rectangle *cliprect, atarimo_rect_list * else { int slipentry = band & mo->sliprammask; - link = ((*mo->slipram)[slipentry] >> mo->linkmask.shift) & mo->linkmask.mask; + link = (mo->slip_ram[slipentry] >> mo->linkmask.shift) & mo->linkmask.mask; /* start with the cliprect */ bandclip = *cliprect; @@ -982,6 +972,17 @@ int atarimo_get_yscroll(int map) } +/*--------------------------------------------------------------- + atarimo_0_spriteram_r: Read handler for the spriteram. +---------------------------------------------------------------*/ + +READ16_HANDLER( atarimo_0_spriteram_r ) +{ + atarimo_data *mo = &atarimo[0]; + return mo->sprite_ram[offset] & mem_mask; +} + + /*--------------------------------------------------------------- atarimo_0_spriteram_w: Write handler for the spriteram. ---------------------------------------------------------------*/ @@ -989,20 +990,32 @@ int atarimo_get_yscroll(int map) WRITE16_HANDLER( atarimo_0_spriteram_w ) { int entry, idx, bank; + atarimo_data *mo = &atarimo[0]; - COMBINE_DATA(&atarimo_0_spriteram[offset]); - if (atarimo[0].split) + COMBINE_DATA(&mo->sprite_ram[offset]); + if (mo->split) { - entry = offset & atarimo[0].linkmask.mask; - idx = (offset >> atarimo[0].entrybits) & 3; + entry = offset & mo->linkmask.mask; + idx = (offset >> mo->entrybits) & 3; } else { - entry = (offset >> 2) & atarimo[0].linkmask.mask; + entry = (offset >> 2) & mo->linkmask.mask; idx = offset & 3; } - bank = offset >> (2 + atarimo[0].entrybits); - COMBINE_DATA(&atarimo[0].spriteram[(bank << atarimo[0].entrybits) + entry].data[idx]); + bank = offset >> (2 + mo->entrybits); + COMBINE_DATA(&mo->spriteram[(bank << mo->entrybits) + entry].data[idx]); +} + + +/*--------------------------------------------------------------- + atarimo_1_spriteram_r: Read handler for the spriteram. +---------------------------------------------------------------*/ + +READ16_HANDLER( atarimo_1_spriteram_r ) +{ + atarimo_data *mo = &atarimo[1]; + return mo->sprite_ram[offset] & mem_mask; } @@ -1013,20 +1026,21 @@ WRITE16_HANDLER( atarimo_0_spriteram_w ) WRITE16_HANDLER( atarimo_1_spriteram_w ) { int entry, idx, bank; + atarimo_data *mo = &atarimo[1]; - COMBINE_DATA(&atarimo_1_spriteram[offset]); - if (atarimo[1].split) + COMBINE_DATA(&mo->sprite_ram[offset]); + if (mo->split) { - entry = offset & atarimo[1].linkmask.mask; - idx = (offset >> atarimo[1].entrybits) & 3; + entry = offset & mo->linkmask.mask; + idx = (offset >> mo->entrybits) & 3; } else { - entry = (offset >> 2) & atarimo[1].linkmask.mask; + entry = (offset >> 2) & mo->linkmask.mask; idx = offset & 3; } - bank = offset >> (2 + atarimo[1].entrybits); - COMBINE_DATA(&atarimo[1].spriteram[(bank << atarimo[1].entrybits) + entry].data[idx]); + bank = offset >> (2 + mo->entrybits); + COMBINE_DATA(&mo->spriteram[(bank << mo->entrybits) + entry].data[idx]); } @@ -1038,34 +1052,71 @@ WRITE16_HANDLER( atarimo_1_spriteram_w ) WRITE16_HANDLER( atarimo_0_spriteram_expanded_w ) { int entry, idx, bank; + atarimo_data *mo = &atarimo[0]; - COMBINE_DATA(&atarimo_0_spriteram[offset]); + COMBINE_DATA(&mo->sprite_ram[offset]); if (!(offset & 1)) { offset >>= 1; - if (atarimo[0].split) + if (mo->split) { - entry = offset & atarimo[0].linkmask.mask; - idx = (offset >> atarimo[0].entrybits) & 3; + entry = offset & mo->linkmask.mask; + idx = (offset >> mo->entrybits) & 3; } else { - entry = (offset >> 2) & atarimo[0].linkmask.mask; + entry = (offset >> 2) & mo->linkmask.mask; idx = offset & 3; } - bank = offset >> (2 + atarimo[0].entrybits); - COMBINE_DATA(&atarimo[0].spriteram[(bank << atarimo[0].entrybits) + entry].data[idx]); + bank = offset >> (2 + mo->entrybits); + COMBINE_DATA(&mo->spriteram[(bank << mo->entrybits) + entry].data[idx]); } } +/*--------------------------------------------------------------- + atarimo_set_slipram: Set slipram pointer. +---------------------------------------------------------------*/ + +void atarimo_set_slipram(int map, UINT16 *ram) +{ + atarimo_data *mo = &atarimo[map]; + mo->slip_ram = ram; +} + + +/*--------------------------------------------------------------- + atarimo_0_slipram_r: Read handler for the slipram. +---------------------------------------------------------------*/ + +READ16_HANDLER( atarimo_0_slipram_r ) +{ + atarimo_data *mo = &atarimo[0]; + logerror("READ: %04x:%04x\n", offset, mo->slip_ram[offset] & mem_mask); + return mo->slip_ram[offset] & mem_mask; +} + + /*--------------------------------------------------------------- atarimo_0_slipram_w: Write handler for the slipram. ---------------------------------------------------------------*/ WRITE16_HANDLER( atarimo_0_slipram_w ) { - COMBINE_DATA(&atarimo_0_slipram[offset]); + atarimo_data *mo = &atarimo[0]; + logerror("WRITE: %04x:%04x:%04x:%04x\n", offset, mo->slip_ram[offset], data, mem_mask); + COMBINE_DATA(&mo->slip_ram[offset]); +} + + +/*--------------------------------------------------------------- + atarimo_1_slipram_r: Read handler for the slipram. +---------------------------------------------------------------*/ + +READ16_HANDLER( atarimo_1_slipram_r ) +{ + atarimo_data *mo = &atarimo[1]; + return mo->slip_ram[offset] & mem_mask; } @@ -1075,7 +1126,8 @@ WRITE16_HANDLER( atarimo_0_slipram_w ) WRITE16_HANDLER( atarimo_1_slipram_w ) { - COMBINE_DATA(&atarimo_1_slipram[offset]); + atarimo_data *mo = &atarimo[1]; + COMBINE_DATA(&mo->slip_ram[offset]); } diff --git a/src/mame/video/atarimo.h b/src/mame/video/atarimo.h index 2955322131b..7086c243bdf 100644 --- a/src/mame/video/atarimo.h +++ b/src/mame/video/atarimo.h @@ -106,13 +106,20 @@ bitmap_t *atarimo_render(int map, const rectangle *cliprect, atarimo_rect_list * void atarimo_set_bank(int map, int bank); void atarimo_set_xscroll(int map, int xscroll); void atarimo_set_yscroll(int map, int yscroll); +void atarimo_set_slipram(int map, UINT16 *ram); /* atrribute getters */ int atarimo_get_bank(int map); int atarimo_get_xscroll(int map); int atarimo_get_yscroll(int map); -/* write handlers */ +/* read/write handlers */ +READ16_HANDLER( atarimo_0_spriteram_r ); +READ16_HANDLER( atarimo_0_slipram_r ); + +READ16_HANDLER( atarimo_1_spriteram_r ); +READ16_HANDLER( atarimo_1_slipram_r ); + WRITE16_HANDLER( atarimo_0_spriteram_w ); WRITE16_HANDLER( atarimo_0_spriteram_expanded_w ); WRITE16_HANDLER( atarimo_0_slipram_w ); @@ -123,15 +130,4 @@ WRITE16_HANDLER( atarimo_1_slipram_w ); void atarimo_mark_high_palette(bitmap_t *bitmap, UINT16 *pf, UINT16 *mo, int x, int y); -/*************************************************************************** - GLOBAL VARIABLES -***************************************************************************/ - -extern UINT16 *atarimo_0_spriteram; -extern UINT16 *atarimo_0_slipram; - -extern UINT16 *atarimo_1_spriteram; -extern UINT16 *atarimo_1_slipram; - - #endif diff --git a/src/mame/video/atarisy1.c b/src/mame/video/atarisy1.c index 780a34aeda7..59b67d1309e 100644 --- a/src/mame/video/atarisy1.c +++ b/src/mame/video/atarisy1.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/atarisy1.h" @@ -348,7 +349,7 @@ WRITE16_HANDLER( atarisy1_yscroll_w ) WRITE16_HANDLER( atarisy1_spriteram_w ) { int active_bank = atarimo_get_bank(0); - int oldword = atarimo_0_spriteram[offset]; + int oldword = atarimo_0_spriteram_r(space, offset, mem_mask); int newword = oldword; COMBINE_DATA(&newword); @@ -356,7 +357,7 @@ WRITE16_HANDLER( atarisy1_spriteram_w ) if (oldword != newword && (offset >> 8) == active_bank) { /* if modifying a timer, beware */ - if (((offset & 0xc0) == 0x00 && atarimo_0_spriteram[offset | 0x40] == 0xffff) || + if (((offset & 0xc0) == 0x00 && atarimo_0_spriteram_r(space, offset | 0x40, mem_mask) == 0xffff) || ((offset & 0xc0) == 0x40 && (newword == 0xffff || oldword == 0xffff))) { /* if the timer is in the active bank, update the display list */ @@ -434,7 +435,9 @@ READ16_HANDLER( atarisy1_int3state_r ) static void update_timers(running_machine &machine, int scanline) { atarisy1_state *state = machine.driver_data(); - UINT16 *base = &atarimo_0_spriteram[atarimo_get_bank(0) * 64 * 4]; + address_space *space = NULL; + UINT16 mem_mask = 0xffff; + int offset = atarimo_get_bank(0) * 64 * 4; int link = 0, best = scanline, found = 0; UINT8 spritevisit[64]; @@ -445,9 +448,9 @@ static void update_timers(running_machine &machine, int scanline) while (!spritevisit[link]) { /* timers are indicated by 0xffff in entry 2 */ - if (base[link + 0x40] == 0xffff) + if (atarimo_0_spriteram_r(space, offset + link + 0x40, mem_mask) == 0xffff) { - int data = base[link]; + int data = atarimo_0_spriteram_r(space, offset + link, mem_mask); int vsize = (data & 15) + 1; int ypos = (256 - (data >> 5) - vsize * 8 - 1) & 0x1ff; @@ -469,7 +472,7 @@ static void update_timers(running_machine &machine, int scanline) /* link to the next */ spritevisit[link] = 1; - link = base[link + 0xc0] & 0x3f; + link = atarimo_0_spriteram_r(space, offset + link + 0xc0, mem_mask) & 0x3f; } /* if nothing was found, use scanline -1 */ diff --git a/src/mame/video/atarisy2.c b/src/mame/video/atarisy2.c index 5cd9521ae53..68df66ec9bf 100644 --- a/src/mame/video/atarisy2.c +++ b/src/mame/video/atarisy2.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/slapstic.h" #include "includes/atarisy2.h" @@ -96,7 +97,6 @@ VIDEO_START( atarisy2 ) /* initialize banked memory */ state->m_alpha = &state->m_vram[0x0000]; - atarimo_0_spriteram = &state->m_vram[0x0c00]; state->m_playfield = &state->m_vram[0x2000]; /* initialize the playfield */ @@ -264,7 +264,13 @@ WRITE16_HANDLER( atarisy2_slapstic_w ) READ16_HANDLER( atarisy2_videoram_r ) { atarisy2_state *state = space->machine().driver_data(); - return state->m_vram[offset | state->m_videobank]; + int offs = offset | state->m_videobank; + if (offs >= 0xc00 && offs < 0x1000) + { + return atarimo_0_spriteram_r(space, offs - 0x0c00, mem_mask); + } + + return state->m_vram[offs]; } diff --git a/src/mame/video/badlands.c b/src/mame/video/badlands.c index 0655f870ee0..732c0af40d0 100644 --- a/src/mame/video/badlands.c +++ b/src/mame/video/badlands.c @@ -5,6 +5,7 @@ ***************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/badlands.h" diff --git a/src/mame/video/batman.c b/src/mame/video/batman.c index 6a206884804..cda4284be47 100644 --- a/src/mame/video/batman.c +++ b/src/mame/video/batman.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/batman.h" diff --git a/src/mame/video/blstroid.c b/src/mame/video/blstroid.c index f9291ab142e..c5726aad563 100644 --- a/src/mame/video/blstroid.c +++ b/src/mame/video/blstroid.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/blstroid.h" diff --git a/src/mame/video/cyberbal.c b/src/mame/video/cyberbal.c index dd14f7cbcd1..d4f90de9135 100644 --- a/src/mame/video/cyberbal.c +++ b/src/mame/video/cyberbal.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/cyberbal.h" @@ -143,15 +144,12 @@ static void video_start_cyberbal_common(running_machine &machine, int screens) }; cyberbal_state *state = machine.driver_data(); - /* set the slip variables */ - atarimo_0_slipram = &state->m_current_slip[0]; - atarimo_1_slipram = &state->m_current_slip[1]; - /* initialize the playfield */ state->m_playfield_tilemap = tilemap_create(machine, get_playfield_tile_info, tilemap_scan_rows, 16,8, 64,64); /* initialize the motion objects */ atarimo_init(machine, 0, &mo0desc); + atarimo_set_slipram(0, &state->m_current_slip[0]); /* initialize the alphanumerics */ state->m_alpha_tilemap = tilemap_create(machine, get_alpha_tile_info, tilemap_scan_rows, 16,8, 64,32); @@ -166,6 +164,7 @@ static void video_start_cyberbal_common(running_machine &machine, int screens) /* initialize the motion objects */ atarimo_init(machine, 1, &mo1desc); + atarimo_set_slipram(1, &state->m_current_slip[1]); /* initialize the alphanumerics */ state->m_alpha2_tilemap = tilemap_create(machine, get_alpha2_tile_info, tilemap_scan_rows, 16,8, 64,32); diff --git a/src/mame/video/eprom.c b/src/mame/video/eprom.c index 38e524a590d..9fad4de2647 100644 --- a/src/mame/video/eprom.c +++ b/src/mame/video/eprom.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/eprom.h" diff --git a/src/mame/video/gauntlet.c b/src/mame/video/gauntlet.c index 70676abad4d..e702567fc37 100644 --- a/src/mame/video/gauntlet.c +++ b/src/mame/video/gauntlet.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/gauntlet.h" diff --git a/src/mame/video/klax.c b/src/mame/video/klax.c index d577c00f8eb..6263f83b408 100644 --- a/src/mame/video/klax.c +++ b/src/mame/video/klax.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/klax.h" diff --git a/src/mame/video/offtwall.c b/src/mame/video/offtwall.c index b4653b4ce8d..589241959e8 100644 --- a/src/mame/video/offtwall.c +++ b/src/mame/video/offtwall.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/offtwall.h" diff --git a/src/mame/video/rampart.c b/src/mame/video/rampart.c index 5193d75059c..a566f855921 100644 --- a/src/mame/video/rampart.c +++ b/src/mame/video/rampart.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/rampart.h" diff --git a/src/mame/video/relief.c b/src/mame/video/relief.c index 5c2a3398401..38088e71b9f 100644 --- a/src/mame/video/relief.c +++ b/src/mame/video/relief.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/relief.h" diff --git a/src/mame/video/shuuz.c b/src/mame/video/shuuz.c index 0462b2a1529..f3995c5b0dd 100644 --- a/src/mame/video/shuuz.c +++ b/src/mame/video/shuuz.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/shuuz.h" diff --git a/src/mame/video/skullxbo.c b/src/mame/video/skullxbo.c index 5d3f71a2ff8..8b2787578d7 100644 --- a/src/mame/video/skullxbo.c +++ b/src/mame/video/skullxbo.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/skullxbo.h" diff --git a/src/mame/video/thunderj.c b/src/mame/video/thunderj.c index 0854e00d113..80f8ecc3d34 100644 --- a/src/mame/video/thunderj.c +++ b/src/mame/video/thunderj.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/thunderj.h" diff --git a/src/mame/video/toobin.c b/src/mame/video/toobin.c index 3f2f860e398..4f25b5d85ea 100644 --- a/src/mame/video/toobin.c +++ b/src/mame/video/toobin.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/toobin.h" @@ -207,7 +208,7 @@ WRITE16_HANDLER( toobin_yscroll_w ) WRITE16_HANDLER( toobin_slip_w ) { - int oldslip = atarimo_0_slipram[offset]; + int oldslip = atarimo_0_slipram_r(space, offset, mem_mask); int newslip = oldslip; COMBINE_DATA(&newslip); diff --git a/src/mame/video/vindictr.c b/src/mame/video/vindictr.c index b44c170d9f9..eb5d75b6ab7 100644 --- a/src/mame/video/vindictr.c +++ b/src/mame/video/vindictr.c @@ -5,6 +5,7 @@ ****************************************************************************/ #include "emu.h" +#include "video/atarimo.h" #include "includes/vindictr.h" diff --git a/src/mame/video/xybots.c b/src/mame/video/xybots.c index 95add873d14..6a445f9fb7a 100644 --- a/src/mame/video/xybots.c +++ b/src/mame/video/xybots.c @@ -6,6 +6,7 @@ #include "emu.h" #include "machine/atarigen.h" +#include "video/atarimo.h" #include "includes/xybots.h"