summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/srmp6.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/srmp6.cpp')
-rw-r--r--src/mame/drivers/srmp6.cpp304
1 files changed, 155 insertions, 149 deletions
diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp
index 2643a5ee1b6..08154034d1c 100644
--- a/src/mame/drivers/srmp6.cpp
+++ b/src/mame/drivers/srmp6.cpp
@@ -26,8 +26,6 @@ TODO:
- fix DMA operations
- fix video emulation
-Video reference : https://youtu.be/wNm3tu1iGvM
-
Are there other games on this 'System S12' hardware ???
---------------- dump infos ----------------
@@ -72,7 +70,6 @@ Dumped 06/15/2000
#include "emu.h"
#include "cpu/m68000/m68000.h"
-#include "video/bufsprite.h"
#include "sound/nile.h"
#include "emupal.h"
#include "screen.h"
@@ -84,54 +81,51 @@ class srmp6_state : public driver_device
public:
srmp6_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
+ m_sprram(*this, "sprram"),
m_chrram(*this, "chrram"),
m_dmaram(*this, "dmaram"),
m_video_regs(*this, "video_regs"),
- m_nile_region(*this, "nile"),
- m_nile_bank(*this, "nile_bank"),
- m_key_io(*this, "KEY%u", 0U),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_sprram(*this, "sprram")
+ m_palette(*this, "palette")
{ }
void srmp6(machine_config &config);
private:
- std::unique_ptr<u16[]> m_tileram;
- required_shared_ptr<u16> m_chrram;
- optional_shared_ptr<u16> m_dmaram;
- required_shared_ptr<u16> m_video_regs;
- required_region_ptr<u8> m_nile_region;
+ std::unique_ptr<uint16_t[]> m_tileram;
+ required_shared_ptr<uint16_t> m_sprram;
+ required_shared_ptr<uint16_t> m_chrram;
+ optional_shared_ptr<uint16_t> m_dmaram;
+ required_shared_ptr<uint16_t> m_video_regs;
- required_memory_bank m_nile_bank;
- required_ioport_array<4> m_key_io;
+ std::unique_ptr<uint16_t[]> m_sprram_old;
int m_brightness;
- u16 m_input_select;
+ uint16_t m_input_select;
- u16 m_lastb;
- u16 m_lastb2;
+ unsigned short m_lastb;
+ unsigned short m_lastb2;
int m_destl;
- DECLARE_WRITE16_MEMBER(input_select_w);
- DECLARE_READ16_MEMBER(inputs_r);
+ void init_INIT();
+
+ DECLARE_WRITE16_MEMBER(srmp6_input_select_w);
+ DECLARE_READ16_MEMBER(srmp6_inputs_r);
DECLARE_WRITE16_MEMBER(video_regs_w);
DECLARE_READ16_MEMBER(video_regs_r);
- DECLARE_WRITE16_MEMBER(dma_w);
+ DECLARE_WRITE16_MEMBER(srmp6_dma_w);
DECLARE_READ16_MEMBER(tileram_r);
DECLARE_WRITE16_MEMBER(tileram_w);
DECLARE_WRITE16_MEMBER(paletteram_w);
- DECLARE_READ16_MEMBER(irq_ack_r);
+ DECLARE_READ16_MEMBER(srmp6_irq_ack_r);
virtual void machine_start() override;
virtual void video_start() override;
- u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void update_palette();
- u32 process(u8 b,u32 dst_offset);
+ uint32_t process(uint8_t b,uint32_t dst_offset);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- required_device<buffered_spriteram16_device> m_sprram;
void srmp6_map(address_map &map);
};
@@ -143,109 +137,105 @@ static const gfx_layout tiles8x8_layout =
8,8,
(0x100000*16)/0x40,
8,
- { STEP8(0,1) },
- { STEP8(0,8) },
- { STEP8(0,8*8) },
+ { 0,1,2,3,4,5,6,7 },
+ { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
+ { 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64 },
8*64
};
-static inline u8 get_fade(int c, int f) // same as CPS3?
-{
- // bit 7 unknown
- // bit 6 fade enable / disable
- // bit 5 fade mode
- // bit 4-0 fade value
- if (f & 0x40) // Fading enable / disable
- {
- f &= 0x3f;
- c = (f & 0x20) ? (c + (((0x1f - c) * (f & 0x1f)) / 0x1f)) : ((c * f) / 0x1f);
- c = std::max(0, std::min(0x1f, c));
- }
- return c;
-}
-
void srmp6_state::update_palette()
{
- int brg = m_brightness & 0x7f;
+ int8_t r, g ,b;
+ int brg = m_brightness - 0x60;
+ int i;
- for (int i = 0; i < m_palette->entries(); i++)
+ for(i = 0; i < 0x800; i++)
{
- u8 r = m_palette->basemem().read16(i) >> 0 & 0x1F;
- u8 g = m_palette->basemem().read16(i) >> 5 & 0x1F;
- u8 b = m_palette->basemem().read16(i) >> 10 & 0x1F;
-
- if (brg & 0x40)
- {
- r = get_fade(r, brg);
- g = get_fade(g, brg);
- b = get_fade(b, brg);
+ r = m_palette->basemem().read16(i) >> 0 & 0x1F;
+ g = m_palette->basemem().read16(i) >> 5 & 0x1F;
+ b = m_palette->basemem().read16(i) >> 10 & 0x1F;
+
+ if(brg < 0) {
+ r += (r * brg) >> 5;
+ if(r < 0) r = 0;
+ g += (g * brg) >> 5;
+ if(g < 0) g = 0;
+ b += (b * brg) >> 5;
+ if(b < 0) b = 0;
+ }
+ else if(brg > 0) {
+ r += ((0x1F - r) * brg) >> 5;
+ if(r > 0x1F) r = 0x1F;
+ g += ((0x1F - g) * brg) >> 5;
+ if(g > 0x1F) g = 0x1F;
+ b += ((0x1F - b) * brg) >> 5;
+ if(b > 0x1F) b = 0x1F;
}
- m_palette->set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(i, rgb_t(r << 3, g << 3, b << 3));
}
}
void srmp6_state::video_start()
{
- m_tileram = make_unique_clear<u16[]>(0x100000*16/2);
+ m_tileram = make_unique_clear<uint16_t[]>(0x100000*16/2);
m_dmaram.allocate(0x100/2);
+ m_sprram_old = make_unique_clear<uint16_t[]>(0x80000/2);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, tiles8x8_layout, (u8*)m_tileram.get(), 0, m_palette->entries() / 256, 0));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, tiles8x8_layout, (uint8_t*)m_tileram.get(), 0, m_palette->entries() / 256, 0));
m_gfxdecode->gfx(0)->set_granularity(256);
- m_brightness = 0;
-
- save_pointer(NAME(m_tileram), 0x100000*16/2);
- save_item(NAME(m_brightness));
+ m_brightness = 0x60;
}
#if 0
-static int xixi = 0;
+static int xixi=0;
#endif
-u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t srmp6_state::screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int alpha;
int x,y,tileno,height,width,xw,yw,sprite,xb,yb;
- u16 *sprite_list = m_sprram->buffer();
- u16 mainlist_offset = 0;
+ uint16_t *sprite_list = m_sprram_old.get();
+ uint16_t mainlist_offset = 0;
union
{
- s16 a;
- u16 b;
+ int16_t a;
+ uint16_t b;
} temp;
bitmap.fill(0, cliprect);
#if 0
/* debug */
- if (machine().input().code_pressed_once(KEYCODE_Q))
+ if(machine().input().code_pressed_once(KEYCODE_Q))
{
++xixi;
- logerror("%x\n",xixi);
+ printf("%x\n",xixi);
}
- if (machine().input().code_pressed_once(KEYCODE_W))
+ if(machine().input().code_pressed_once(KEYCODE_W))
{
--xixi;
- logerror("%x\n",xixi);
+ printf("%x\n",xixi);
}
#endif
/* Main spritelist is 0x0000 - 0x1fff in spriteram, sublists follow */
while (mainlist_offset<0x2000/2)
{
- u16 *sprite_sublist = &sprite_list[sprite_list[mainlist_offset+1]<<3];
- u16 sublist_length=sprite_list[mainlist_offset+0] & 0x7fff; //+1 ?
- s16 global_x,global_y, flip_x, flip_y;
- u16 global_pal;
+ uint16_t *sprite_sublist = &m_sprram_old[sprite_list[mainlist_offset+1]<<3];
+ uint16_t sublist_length=sprite_list[mainlist_offset+0]&0x7fff; //+1 ?
+ int16_t global_x,global_y, flip_x, flip_y;
+ uint16_t global_pal;
/* end of list marker */
if (sprite_list[mainlist_offset+0] == 0x8000)
break;
- if (sprite_list[mainlist_offset+0] != 0)
+
+ if(sprite_list[mainlist_offset+0]!=0)
{
temp.b=sprite_list[mainlist_offset+2];
global_x=temp.a;
@@ -254,19 +244,19 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
global_pal = sprite_list[mainlist_offset+4] & 0x7;
- if ((sprite_list[mainlist_offset+5] & 0x700) == 0x700)
+ if((sprite_list[mainlist_offset+5] & 0x700) == 0x700)
{
- alpha = pal5bit(sprite_list[mainlist_offset+5] & 0x1F);
+ alpha = (sprite_list[mainlist_offset+5] & 0x1F) << 3;
}
else
{
alpha = 255;
}
- // logerror("%x %x \n",sprite_list[mainlist_offset+1],sublist_length);
+ // printf("%x %x \n",sprite_list[mainlist_offset+1],sublist_length);
- while (sublist_length)
+ while(sublist_length)
{
- sprite=sprite_sublist[0] & 0x7fff;
+ sprite=sprite_sublist[0]&0x7fff;
flip_x=sprite_sublist[1]>>8&1;
flip_y=sprite_sublist[1]>>9&1;
temp.b=sprite_sublist[2];
@@ -276,26 +266,26 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
//x+=global_x;
//y+=global_y;
- width=((sprite_sublist[1]) & 0x3);
- height=((sprite_sublist[1]>>2) & 0x3);
+ width=((sprite_sublist[1])&0x3);
+ height=((sprite_sublist[1]>>2)&0x3);
height = 1 << height;
width = 1 << width;
y-=height*8;
tileno = sprite;
- //tileno += (sprite_list[4] & 0xf)*0x4000; // this makes things worse in places (title screen for example)
+ //tileno += (sprite_list[4]&0xf)*0x4000; // this makes things worse in places (title screen for example)
- for (xw = 0; xw < width; xw++)
+ for(xw=0;xw<width;xw++)
{
- for (yw = 0; yw < height; yw++)
+ for(yw=0;yw<height;yw++)
{
- if (!flip_x)
+ if(!flip_x)
xb=x+xw*8+global_x;
else
xb=x+(width-xw-1)*8+global_x;
- if (!flip_y)
+ if(!flip_y)
yb=y+yw*8+global_y;
else
yb=y+(height-yw-1)*8+global_y;
@@ -304,6 +294,7 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
tileno++;
}
}
+
sprite_sublist+=8;
--sublist_length;
}
@@ -311,9 +302,9 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
mainlist_offset+=8;
}
- m_sprram->copy();
+ memcpy(m_sprram_old.get(), m_sprram, 0x80000);
- if (machine().input().code_pressed_once(KEYCODE_Q))
+ if(machine().input().code_pressed_once(KEYCODE_Q))
{
FILE *p=fopen("tileram.bin","wb");
fwrite(m_tileram.get(), 1, 0x100000*16, p);
@@ -330,23 +321,25 @@ u32 srmp6_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, cons
void srmp6_state::machine_start()
{
- m_nile_bank->configure_entries(0, 16, memregion("nile")->base(), 0x200000);
- save_item(NAME(m_input_select));
+ membank("bank1")->configure_entries(0, 16, memregion("nile")->base(), 0x200000);
}
-WRITE16_MEMBER(srmp6_state::input_select_w)
+WRITE16_MEMBER(srmp6_state::srmp6_input_select_w)
{
m_input_select = data & 0x0f;
}
-READ16_MEMBER(srmp6_state::inputs_r)
+READ16_MEMBER(srmp6_state::srmp6_inputs_r)
{
+ if (offset == 0) // DSW
+ return ioport("DSW")->read();
+
switch (m_input_select) // inputs
{
- case 1<<0: return m_key_io[0]->read();
- case 1<<1: return m_key_io[1]->read();
- case 1<<2: return m_key_io[2]->read();
- case 1<<3: return m_key_io[3]->read();
+ case 1<<0: return ioport("KEY0")->read();
+ case 1<<1: return ioport("KEY1")->read();
+ case 1<<2: return ioport("KEY2")->read();
+ case 1<<3: return ioport("KEY3")->read();
}
return 0;
@@ -355,20 +348,20 @@ READ16_MEMBER(srmp6_state::inputs_r)
WRITE16_MEMBER(srmp6_state::video_regs_w)
{
- switch (offset)
+ switch(offset)
{
case 0x5e/2: // bank switch, used by ROM check
{
LOG(("%x\n",data));
- m_nile_bank->set_entry(data & 0x0f);
+ membank("bank1")->set_entry(data & 0x0f);
break;
}
// set by IT4
case 0x5c/2: // either 0x40 explicitely in many places, or according $2083b0 (IT4)
//Fade in/out (0x40(dark)-0x60(normal)-0x7e?(bright) reset by 0x00?
- if (m_brightness != data)
- {
+ data = (!data)?0x60:(data == 0x5e)?0x60:data;
+ if (m_brightness != data) {
m_brightness = data;
update_palette();
}
@@ -399,17 +392,18 @@ READ16_MEMBER(srmp6_state::video_regs_r)
/* DMA RLE stuff - the same as CPS3 */
-u32 srmp6_state::process(u8 b,u32 dst_offset)
+uint32_t srmp6_state::process(uint8_t b,uint32_t dst_offset)
{
- int l = 0;
+ int l=0;
- u8 *tram=(u8*)m_tileram.get();
+ uint8_t *tram=(uint8_t*)m_tileram.get();
if (m_lastb == m_lastb2) //rle
{
- int rle=(b+1) & 0xff;
+ int i;
+ int rle=(b+1)&0xff;
- for (int i = 0; i <rle; ++i)
+ for(i=0;i<rle;++i)
{
tram[dst_offset + m_destl] = m_lastb;
m_gfxdecode->gfx(0)->mark_dirty((dst_offset + m_destl)/0x40);
@@ -433,17 +427,18 @@ u32 srmp6_state::process(u8 b,u32 dst_offset)
}
-WRITE16_MEMBER(srmp6_state::dma_w)
+WRITE16_MEMBER(srmp6_state::srmp6_dma_w)
{
- u16* dmaram = m_dmaram;
+ uint16_t* dmaram = m_dmaram;
COMBINE_DATA(&dmaram[offset]);
if (offset==13 && dmaram[offset]==0x40)
{
- u32 srctab=2*((((u32)dmaram[5])<<16)|dmaram[4]);
- u32 srcdata=2*((((u32)dmaram[11])<<16)|dmaram[10]);
- u32 len=4*(((((u32)dmaram[7]&3)<<16)|dmaram[6])+1); //??? WRONG!
- int tempidx = 0;
+ const uint8_t *rom = memregion("nile")->base();
+ uint32_t srctab=2*((((uint32_t)dmaram[5])<<16)|dmaram[4]);
+ uint32_t srcdata=2*((((uint32_t)dmaram[11])<<16)|dmaram[10]);
+ uint32_t len=4*(((((uint32_t)dmaram[7]&3)<<16)|dmaram[6])+1); //??? WRONG!
+ int tempidx=0;
/* show params */
LOG(("DMA! %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n",
@@ -467,21 +462,22 @@ WRITE16_MEMBER(srmp6_state::dma_w)
m_lastb = 0xfffe;
m_lastb2 = 0xffff;
- while (1)
+ while(1)
{
- u8 ctrl=m_nile_region[srcdata];
+ int i;
+ uint8_t ctrl=rom[srcdata];
++srcdata;
- for (int i = 0; i < 8; ++i)
+ for(i=0;i<8;++i)
{
- u8 p=m_nile_region[srcdata];
+ uint8_t p=rom[srcdata];
- if (ctrl & 0x80)
+ if(ctrl&0x80)
{
- u8 real_byte;
- real_byte = m_nile_region[srctab+p*2];
+ uint8_t real_byte;
+ real_byte = rom[srctab+p*2];
tempidx+=process(real_byte,tempidx);
- real_byte = m_nile_region[srctab+p*2+1];//px[DMA_XOR((current_table_address+p*2+1))];
+ real_byte = rom[srctab+p*2+1];//px[DMA_XOR((current_table_address+p*2+1))];
tempidx+=process(real_byte,tempidx);
}
else
@@ -492,7 +488,8 @@ WRITE16_MEMBER(srmp6_state::dma_w)
ctrl<<=1;
++srcdata;
- if (tempidx >= len)
+
+ if(tempidx>=len)
{
LOG(("%x\n",srcdata));
return;
@@ -510,38 +507,52 @@ READ16_MEMBER(srmp6_state::tileram_r)
WRITE16_MEMBER(srmp6_state::tileram_w)
{
- //u16 tmp;
+ //uint16_t tmp;
COMBINE_DATA(&m_chrram[offset]);
/* are the DMA registers enabled some other way, or always mapped here, over RAM? */
if (offset >= 0xfff00/2 && offset <= 0xfff1a/2 )
{
offset &=0x1f;
- dma_w(space,offset,data,mem_mask);
+ srmp6_dma_w(space,offset,data,mem_mask);
}
}
WRITE16_MEMBER(srmp6_state::paletteram_w)
{
- int brg = m_brightness & 0x7f;
+ int8_t r, g, b;
+ int brg = m_brightness - 0x60;
m_palette->write16(space, offset, data, mem_mask);
- if (brg & 0x40)
+ if(brg)
{
- u8 r = m_palette->basemem().read16(offset) >> 0 & 0x1F;
- u8 g = m_palette->basemem().read16(offset) >> 5 & 0x1F;
- u8 b = m_palette->basemem().read16(offset) >> 10 & 0x1F;
-
- r = get_fade(r, brg);
- g = get_fade(g, brg);
- b = get_fade(b, brg);
+ r = data >> 0 & 0x1F;
+ g = data >> 5 & 0x1F;
+ b = data >> 10 & 0x1F;
+
+ if(brg < 0) {
+ r += (r * brg) >> 5;
+ if(r < 0) r = 0;
+ g += (g * brg) >> 5;
+ if(g < 0) g = 0;
+ b += (b * brg) >> 5;
+ if(b < 0) b = 0;
+ }
+ else if(brg > 0) {
+ r += ((0x1F - r) * brg) >> 5;
+ if(r > 0x1F) r = 0x1F;
+ g += ((0x1F - g) * brg) >> 5;
+ if(g > 0x1F) g = 0x1F;
+ b += ((0x1F - b) * brg) >> 5;
+ if(b > 0x1F) b = 0x1F;
+ }
- m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
+ m_palette->set_pen_color(offset, rgb_t(r << 3, g << 3, b << 3));
}
}
-READ16_MEMBER(srmp6_state::irq_ack_r)
+READ16_MEMBER(srmp6_state::srmp6_irq_ack_r)
{
m_maincpu->set_input_line(4, CLEAR_LINE);
return 0; // value read doesn't matter
@@ -551,29 +562,26 @@ void srmp6_state::srmp6_map(address_map &map)
{
map(0x000000, 0x0fffff).rom();
map(0x200000, 0x23ffff).ram(); // work RAM
+ map(0x600000, 0x7fffff).bankr("bank1"); // banked ROM (used by ROM check)
+ map(0x800000, 0x9fffff).rom().region("user1", 0);
- map(0x300000, 0x300005).w(FUNC(srmp6_state::input_select_w)); // inputs
- map(0x300000, 0x300001).portr("DSW");
- map(0x300002, 0x300005).r(FUNC(srmp6_state::inputs_r)); // inputs
+ map(0x300000, 0x300005).rw(FUNC(srmp6_state::srmp6_inputs_r), FUNC(srmp6_state::srmp6_input_select_w)); // inputs
+ map(0x480000, 0x480fff).ram().w(FUNC(srmp6_state::paletteram_w)).share("palette");
+ map(0x4d0000, 0x4d0001).r(FUNC(srmp6_state::srmp6_irq_ack_r));
// OBJ RAM: checked [$400000-$47dfff]
map(0x400000, 0x47ffff).ram().share("sprram");
- map(0x480000, 0x480fff).ram().w(FUNC(srmp6_state::paletteram_w)).share("palette");
+ // CHR RAM: checked [$500000-$5fffff]
+ map(0x500000, 0x5fffff).rw(FUNC(srmp6_state::tileram_r), FUNC(srmp6_state::tileram_w)).share("chrram");
+ //AM_RANGE(0x5fff00, 0x5fffff) AM_WRITE(dma_w) AM_SHARE("dmaram")
map(0x4c0000, 0x4c006f).rw(FUNC(srmp6_state::video_regs_r), FUNC(srmp6_state::video_regs_w)).share("video_regs"); // ? gfx regs ST-0026 NiLe
- map(0x4d0000, 0x4d0001).r(FUNC(srmp6_state::irq_ack_r));
map(0x4e0000, 0x4e00ff).rw("nile", FUNC(nile_device::nile_snd_r), FUNC(nile_device::nile_snd_w));
map(0x4e0100, 0x4e0101).rw("nile", FUNC(nile_device::nile_sndctrl_r), FUNC(nile_device::nile_sndctrl_w));
//AM_RANGE(0x4e0110, 0x4e0111) AM_NOP // ? accessed once ($268dc, written $b.w)
-
- // CHR RAM: checked [$500000-$5fffff]
- map(0x500000, 0x5fffff).rw(FUNC(srmp6_state::tileram_r), FUNC(srmp6_state::tileram_w)).share("chrram");
//AM_RANGE(0x5fff00, 0x5fff1f) AM_RAM // ? see routine $5ca8, video_regs related ???
- //AM_RANGE(0x5fff00, 0x5fffff) AM_WRITE(dma_w) AM_SHARE("dmaram")
- map(0x600000, 0x7fffff).bankr("nile_bank"); // banked ROM (used by ROM check)
- map(0x800000, 0x9fffff).rom().region("user1", 0);
//AM_RANGE(0xf00004, 0xf00005) AM_RAM // ?
//AM_RANGE(0xf00006, 0xf00007) AM_RAM // ?
@@ -687,14 +695,12 @@ void srmp6_state::srmp6(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 64*8);
screen.set_visarea(0*8, 42*8-1, 0*8, 30*8-1);
- screen.set_screen_update(FUNC(srmp6_state::screen_update));
+ screen.set_screen_update(FUNC(srmp6_state::screen_update_srmp6));
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800);
GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty);
- BUFFERED_SPRITERAM16(config, m_sprram);
-
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();