dec0.cpp : buffered_spriteram16_device for sprite RAM

Minor spacing fixes, Cleanup some naming
This commit is contained in:
cam900 2018-11-15 20:26:10 +09:00
parent e4c33b8d66
commit 710d5e6f16
4 changed files with 61 additions and 61 deletions

View File

@ -350,11 +350,11 @@ WRITE16_MEMBER(dec0_state::dec0_control_w)
switch (offset << 1) switch (offset << 1)
{ {
case 0: /* Playfield & Sprite priority */ case 0: /* Playfield & Sprite priority */
dec0_priority_w(space, 0, data, mem_mask); priority_w(space, 0, data, mem_mask);
break; break;
case 2: /* DMA flag */ case 2: /* DMA flag */
dec0_update_sprites_w(space, 0, 0, mem_mask); m_spriteram->copy();
break; break;
case 4: /* 6502 sound cpu */ case 4: /* 6502 sound cpu */
@ -399,7 +399,7 @@ WRITE16_MEMBER(dec0_automat_state::automat_control_w)
break; break;
case 12: /* DMA flag */ case 12: /* DMA flag */
//dec0_update_sprites_w(space, 0, 0, mem_mask); //m_spriteram->copy();
break; break;
#if 0 #if 0
case 8: /* Interrupt ack (VBL - IRQ 6) */ case 8: /* Interrupt ack (VBL - IRQ 6) */
@ -625,7 +625,7 @@ void dec0_state::slyspy_map(address_map &map)
map(0x308000, 0x3087ff).ram().share("spriteram"); /* Sprites */ map(0x308000, 0x3087ff).ram().share("spriteram"); /* Sprites */
map(0x310000, 0x3107ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x310000, 0x3107ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x314001, 0x314001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x314001, 0x314001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0x314002, 0x314003).w(FUNC(dec0_state::dec0_priority_w)); map(0x314002, 0x314003).w(FUNC(dec0_state::priority_w));
map(0x314008, 0x31400f).r(FUNC(dec0_state::slyspy_controls_r)); map(0x314008, 0x31400f).r(FUNC(dec0_state::slyspy_controls_r));
map(0x31c000, 0x31c00f).r(FUNC(dec0_state::slyspy_protection_r)).nopw(); map(0x31c000, 0x31c00f).r(FUNC(dec0_state::slyspy_protection_r)).nopw();
} }
@ -637,7 +637,7 @@ void dec0_state::midres_map(address_map &map)
map(0x100000, 0x103fff).ram().share("ram"); map(0x100000, 0x103fff).ram().share("ram");
map(0x120000, 0x1207ff).ram().share("spriteram"); map(0x120000, 0x1207ff).ram().share("spriteram");
map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x160000, 0x160001).w(FUNC(dec0_state::dec0_priority_w)); map(0x160000, 0x160001).w(FUNC(dec0_state::priority_w));
map(0x180000, 0x18000f).r(FUNC(dec0_state::midres_controls_r)); map(0x180000, 0x18000f).r(FUNC(dec0_state::midres_controls_r));
map(0x180008, 0x18000f).nopw(); /* ?? watchdog ?? */ map(0x180008, 0x18000f).nopw(); /* ?? watchdog ?? */
map(0x1a0001, 0x1a0001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x1a0001, 0x1a0001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
@ -665,7 +665,7 @@ void dec0_state::midres_map(address_map &map)
void dec0_state::midresb_map(address_map &map) void dec0_state::midresb_map(address_map &map)
{ {
midres_map(map); midres_map(map);
map(0x160010, 0x160011).w(FUNC(dec0_state::dec0_priority_w)); map(0x160010, 0x160011).w(FUNC(dec0_state::priority_w));
map(0x180000, 0x18000f).r(FUNC(dec0_state::dec0_controls_r)); map(0x180000, 0x18000f).r(FUNC(dec0_state::dec0_controls_r));
map(0x180012, 0x180013).noprw(); map(0x180012, 0x180013).noprw();
map(0x180014, 0x180015).w(FUNC(dec0_state::midres_sound_w)); map(0x180014, 0x180015).w(FUNC(dec0_state::midres_sound_w));
@ -814,7 +814,7 @@ void dec0_automat_state::automat_map(address_map &map)
// video regs are moved to here.. // video regs are moved to here..
map(0x400000, 0x400007).w(FUNC(dec0_automat_state::automat_scroll_w)); map(0x400000, 0x400007).w(FUNC(dec0_automat_state::automat_scroll_w));
map(0x400008, 0x400009).w(FUNC(dec0_automat_state::dec0_priority_w)); map(0x400008, 0x400009).w(FUNC(dec0_automat_state::priority_w));
map(0x500000, 0x500001).nopw(); // ??? map(0x500000, 0x500001).nopw(); // ???
@ -1516,8 +1516,8 @@ static const gfx_layout charlayout =
RGN_FRAC(1,4), RGN_FRAC(1,4),
4, /* 4 bits per pixel */ 4, /* 4 bits per pixel */
{ RGN_FRAC(0,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(3,4) }, { RGN_FRAC(0,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(3,4) },
{ 0, 1, 2, 3, 4, 5, 6, 7 }, { STEP8(0,1) },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, { STEP8(0,8) },
8*8 /* every char takes 8 consecutive bytes */ 8*8 /* every char takes 8 consecutive bytes */
}; };
@ -1527,10 +1527,8 @@ static const gfx_layout tilelayout =
RGN_FRAC(1,4), RGN_FRAC(1,4),
4, 4,
{ RGN_FRAC(1,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(2,4) }, { RGN_FRAC(1,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(2,4) },
{ 16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7, { STEP8(16*8,1), STEP8(0,1) },
0, 1, 2, 3, 4, 5, 6, 7 }, { STEP16(0,8) },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
16*16 16*16
}; };
@ -1540,9 +1538,8 @@ static const gfx_layout automat_spritelayout =
RGN_FRAC(1,4), RGN_FRAC(1,4),
4, 4,
{ RGN_FRAC(1,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(2,4) }, { RGN_FRAC(1,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(2,4) },
{ 16*8+7, 16*8+6,16*8+5,16*8+4,16*8+3,16*8+2,16*8+1,16*8+0,7,6,5,4,3,2,1,0}, { STEP8(16*8+7,-1), STEP8(7,-1) },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, { STEP16(0,8) },
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
16*16 16*16
}; };
@ -1611,6 +1608,8 @@ GFXDECODE_END
MACHINE_CONFIG_START(dec0_state::dec0_base) MACHINE_CONFIG_START(dec0_state::dec0_base)
/* video hardware */ /* video hardware */
BUFFERED_SPRITERAM16(config, m_spriteram);
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
//MCFG_SCREEN_REFRESH_RATE(57.41) //MCFG_SCREEN_REFRESH_RATE(57.41)
//MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */) //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
@ -1746,6 +1745,8 @@ MACHINE_CONFIG_START(dec0_automat_state::automat)
/* video hardware */ /* video hardware */
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma) MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
BUFFERED_SPRITERAM16(config, m_spriteram);
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41) // MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */) // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)
@ -1821,6 +1822,8 @@ MACHINE_CONFIG_START(dec0_automat_state::secretab)
/* video hardware */ /* video hardware */
MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma) MCFG_VIDEO_START_OVERRIDE(dec0_state,dec0_nodma)
BUFFERED_SPRITERAM16(config, m_spriteram);
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
// MCFG_SCREEN_REFRESH_RATE(57.41) // MCFG_SCREEN_REFRESH_RATE(57.41)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */) // MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 57.41 Hz, 529us Vblank */)

View File

@ -4,6 +4,7 @@
#include "cpu/h6280/h6280.h" #include "cpu/h6280/h6280.h"
#include "machine/bankdev.h" #include "machine/bankdev.h"
#include "machine/gen_latch.h" #include "machine/gen_latch.h"
#include "video/bufsprite.h"
#include "video/decbac06.h" #include "video/decbac06.h"
#include "video/decmxc06.h" #include "video/decmxc06.h"
#include "sound/msm5205.h" #include "sound/msm5205.h"
@ -71,7 +72,7 @@ protected:
DECLARE_READ16_MEMBER(dec0_controls_r); DECLARE_READ16_MEMBER(dec0_controls_r);
DECLARE_READ16_MEMBER(slyspy_controls_r); DECLARE_READ16_MEMBER(slyspy_controls_r);
DECLARE_WRITE16_MEMBER(dec0_priority_w); DECLARE_WRITE16_MEMBER(priority_w);
private: private:
enum class mcu_type { enum class mcu_type {
@ -85,7 +86,7 @@ private:
optional_device<address_map_bank_device> m_pfprotect; optional_device<address_map_bank_device> m_pfprotect;
optional_device<address_map_bank_device> m_sndprotect; optional_device<address_map_bank_device> m_sndprotect;
required_shared_ptr<uint16_t> m_ram; required_shared_ptr<uint16_t> m_ram;
required_shared_ptr<uint16_t> m_spriteram; required_device<buffered_spriteram16_device> m_spriteram;
optional_shared_ptr<uint8_t> m_robocop_shared_ram; optional_shared_ptr<uint8_t> m_robocop_shared_ram;
optional_shared_ptr<uint8_t> m_hippodrm_shared_ram; optional_shared_ptr<uint8_t> m_hippodrm_shared_ram;
@ -116,7 +117,6 @@ private:
DECLARE_WRITE16_MEMBER(sprite_mirror_w); DECLARE_WRITE16_MEMBER(sprite_mirror_w);
DECLARE_READ16_MEMBER(robocop_68000_share_r); DECLARE_READ16_MEMBER(robocop_68000_share_r);
DECLARE_WRITE16_MEMBER(robocop_68000_share_w); DECLARE_WRITE16_MEMBER(robocop_68000_share_w);
DECLARE_WRITE16_MEMBER(dec0_update_sprites_w);
DECLARE_READ16_MEMBER(ffantasybl_242024_r); DECLARE_READ16_MEMBER(ffantasybl_242024_r);
DECLARE_READ8_MEMBER(slyspy_sound_state_r); DECLARE_READ8_MEMBER(slyspy_sound_state_r);

View File

@ -95,7 +95,8 @@ READ8_MEMBER(dec0_state::hippodrm_prot_r)
WRITE8_MEMBER(dec0_state::hippodrm_prot_w) WRITE8_MEMBER(dec0_state::hippodrm_prot_w)
{ {
switch (offset) { switch (offset)
{
case 4: m_hippodrm_msb = data; break; case 4: m_hippodrm_msb = data; break;
case 5: m_hippodrm_lsb = data; break; case 5: m_hippodrm_lsb = data; break;
} }
@ -196,7 +197,8 @@ void dec0_state::baddudes_i8751_write(int data)
{ {
m_i8751_return = 0; m_i8751_return = 0;
switch (data&0xffff) { switch (data & 0xffff)
{
case 0x714: m_i8751_return = 0x700; break; case 0x714: m_i8751_return = 0x700; break;
case 0x73b: m_i8751_return = 0x701; break; case 0x73b: m_i8751_return = 0x701; break;
case 0x72c: m_i8751_return = 0x702; break; case 0x72c: m_i8751_return = 0x702; break;
@ -226,7 +228,8 @@ void dec0_state::birdtry_i8751_write(int data)
m_i8751_return = 0; m_i8751_return = 0;
switch(data&0xffff) { switch (data & 0xffff)
{
/*"Sprite control"*/ /*"Sprite control"*/
case 0x22a: m_i8751_return = 0x200; break; case 0x22a: m_i8751_return = 0x200; break;
@ -321,7 +324,7 @@ void dec0_state::dec0_i8751_reset()
WRITE16_MEMBER(dec0_state::sprite_mirror_w) WRITE16_MEMBER(dec0_state::sprite_mirror_w)
{ {
COMBINE_DATA(&m_spriteram[offset]); COMBINE_DATA(&m_spriteram->live()[offset]);
} }
/******************************************************************************/ /******************************************************************************/

View File

@ -12,12 +12,6 @@
/******************************************************************************/ /******************************************************************************/
WRITE16_MEMBER(dec0_state::dec0_update_sprites_w)
{
memcpy(m_buffered_spriteram,m_spriteram,0x800);
}
/******************************************************************************/ /******************************************************************************/
@ -368,7 +362,7 @@ uint32_t dec0_state::screen_update_midres(screen_device &screen, bitmap_ind16 &b
} }
WRITE16_MEMBER(dec0_state::dec0_priority_w) WRITE16_MEMBER(dec0_state::priority_w)
{ {
COMBINE_DATA(&m_pri); COMBINE_DATA(&m_pri);
} }
@ -376,14 +370,14 @@ WRITE16_MEMBER(dec0_state::dec0_priority_w)
VIDEO_START_MEMBER(dec0_state,dec0_nodma) VIDEO_START_MEMBER(dec0_state,dec0_nodma)
{ {
save_item(NAME(m_pri)); save_item(NAME(m_pri));
m_buffered_spriteram = m_spriteram; m_buffered_spriteram = m_spriteram->live();
save_pointer(NAME(m_buffered_spriteram), 0x800/2); save_pointer(NAME(m_buffered_spriteram), 0x800/2);
} }
VIDEO_START_MEMBER(dec0_state,dec0) VIDEO_START_MEMBER(dec0_state,dec0)
{ {
save_item(NAME(m_pri)); save_item(NAME(m_pri));
m_buffered_spriteram = auto_alloc_array(machine(), uint16_t, 0x800/2); m_buffered_spriteram = m_spriteram->buffer();
save_pointer(NAME(m_buffered_spriteram), 0x800/2); save_pointer(NAME(m_buffered_spriteram), 0x800/2);
} }