diff --git a/src/mame/drivers/ssozumo.c b/src/mame/drivers/ssozumo.c index c05e6be2572..7c3b83ecdf9 100644 --- a/src/mame/drivers/ssozumo.c +++ b/src/mame/drivers/ssozumo.c @@ -14,7 +14,13 @@ Driver by Takahiro Nogi (nogi@kt.rim.or.jp) 1999/10/04 #include "sound/dac.h" #include "includes/ssozumo.h" -WRITE8_MEMBER(ssozumo_state::ssozumo_sh_command_w) + +void ssozumo_state::machine_start() +{ + save_item(NAME(m_sound_nmi_mask)); +} + +WRITE8_MEMBER(ssozumo_state::sh_command_w) { soundlatch_byte_w(space, 0, data); m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE); @@ -24,18 +30,18 @@ WRITE8_MEMBER(ssozumo_state::ssozumo_sh_command_w) static ADDRESS_MAP_START( ssozumo_map, AS_PROGRAM, 8, ssozumo_state ) AM_RANGE(0x0000, 0x077f) AM_RAM AM_RANGE(0x0780, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(ssozumo_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(ssozumo_colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(ssozumo_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(ssozumo_colorram_w) AM_SHARE("colorram") + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") + AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") + AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") + AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") AM_RANGE(0x3400, 0x35ff) AM_RAM AM_RANGE(0x3600, 0x37ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITE(ssozumo_flipscreen_w) - AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2") AM_WRITE(ssozumo_sh_command_w) - AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2") AM_WRITE(ssozumo_scroll_w) + AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITE(flipscreen_w) + AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2") AM_WRITE(sh_command_w) + AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2") AM_WRITE(scroll_w) AM_RANGE(0x4030, 0x4030) AM_READ_PORT("DSW1") // AM_RANGE(0x4030, 0x4030) AM_WRITEONLY - AM_RANGE(0x4050, 0x407f) AM_RAM_WRITE(ssozumo_paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0x4050, 0x407f) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") AM_RANGE(0x6000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -69,8 +75,8 @@ static INPUT_PORTS_START( ssozumo ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state,coin_inserted, 0) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state,coin_inserted, 0) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state, coin_inserted, 0) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state, coin_inserted, 0) PORT_START("P2") /* IN1 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) @@ -202,7 +208,7 @@ static MACHINE_CONFIG_START( ssozumo, ssozumo_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8 - 1, 1*8, 31*8 - 1) - MCFG_SCREEN_UPDATE_DRIVER(ssozumo_state, screen_update_ssozumo) + MCFG_SCREEN_UPDATE_DRIVER(ssozumo_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", ssozumo) @@ -281,4 +287,4 @@ ROM_END -GAME( 1984, ssozumo, 0, ssozumo, ssozumo, driver_device, 0, ROT270, "Technos Japan", "Syusse Oozumou (Japan)", 0 ) +GAME( 1984, ssozumo, 0, ssozumo, ssozumo, driver_device, 0, ROT270, "Technos Japan", "Syusse Oozumou (Japan)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/ssozumo.h b/src/mame/includes/ssozumo.h index 4216cfb639e..42771f95f7a 100644 --- a/src/mame/includes/ssozumo.h +++ b/src/mame/includes/ssozumo.h @@ -3,16 +3,21 @@ class ssozumo_state : public driver_device public: ssozumo_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_audiocpu(*this, "audiocpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), m_spriteram(*this, "spriteram"), m_paletteram(*this, "paletteram"), m_videoram(*this, "videoram"), m_colorram(*this, "colorram"), m_videoram2(*this, "videoram2"), - m_colorram2(*this, "colorram2"), - m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_colorram2(*this, "colorram2") { } + + required_device m_maincpu; + required_device m_audiocpu; + required_device m_gfxdecode; + required_device m_palette; required_shared_ptr m_spriteram; required_shared_ptr m_paletteram; @@ -23,27 +28,29 @@ public: tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; - UINT8 m_sound_nmi_mask; - DECLARE_WRITE8_MEMBER(ssozumo_sh_command_w); + + DECLARE_WRITE8_MEMBER(sh_command_w); DECLARE_WRITE8_MEMBER(sound_nmi_mask_w); - DECLARE_WRITE8_MEMBER(ssozumo_videoram_w); - DECLARE_WRITE8_MEMBER(ssozumo_colorram_w); - DECLARE_WRITE8_MEMBER(ssozumo_videoram2_w); - DECLARE_WRITE8_MEMBER(ssozumo_colorram2_w); - DECLARE_WRITE8_MEMBER(ssozumo_paletteram_w); - DECLARE_WRITE8_MEMBER(ssozumo_scroll_w); - DECLARE_WRITE8_MEMBER(ssozumo_flipscreen_w); + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE8_MEMBER(colorram_w); + DECLARE_WRITE8_MEMBER(videoram2_w); + DECLARE_WRITE8_MEMBER(colorram2_w); + DECLARE_WRITE8_MEMBER(paletteram_w); + DECLARE_WRITE8_MEMBER(scroll_w); + DECLARE_WRITE8_MEMBER(flipscreen_w); + DECLARE_INPUT_CHANGED_MEMBER(coin_inserted); + + INTERRUPT_GEN_MEMBER(sound_timer_irq); + TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); + + virtual void machine_start(); virtual void video_start(); DECLARE_PALETTE_INIT(ssozumo); - UINT32 screen_update_ssozumo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(sound_timer_irq); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - required_device m_maincpu; - required_device m_audiocpu; - required_device m_gfxdecode; - required_device m_palette; }; diff --git a/src/mame/video/ssozumo.c b/src/mame/video/ssozumo.c index b638d3d4d8d..61fc6187c76 100644 --- a/src/mame/video/ssozumo.c +++ b/src/mame/video/ssozumo.c @@ -41,31 +41,31 @@ PALETTE_INIT_MEMBER(ssozumo_state, ssozumo) } } -WRITE8_MEMBER(ssozumo_state::ssozumo_videoram_w) +WRITE8_MEMBER(ssozumo_state::videoram_w) { m_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(ssozumo_state::ssozumo_colorram_w) +WRITE8_MEMBER(ssozumo_state::colorram_w) { m_colorram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(ssozumo_state::ssozumo_videoram2_w) +WRITE8_MEMBER(ssozumo_state::videoram2_w) { m_videoram2[offset] = data; m_fg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(ssozumo_state::ssozumo_colorram2_w) +WRITE8_MEMBER(ssozumo_state::colorram2_w) { m_colorram2[offset] = data; m_fg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(ssozumo_state::ssozumo_paletteram_w) +WRITE8_MEMBER(ssozumo_state::paletteram_w) { int bit0, bit1, bit2, bit3, val; int r, g, b; @@ -98,12 +98,12 @@ WRITE8_MEMBER(ssozumo_state::ssozumo_paletteram_w) m_palette->set_pen_color(offs2 + 64, rgb_t(r, g, b)); } -WRITE8_MEMBER(ssozumo_state::ssozumo_scroll_w) +WRITE8_MEMBER(ssozumo_state::scroll_w) { m_bg_tilemap->set_scrolly(0, data); } -WRITE8_MEMBER(ssozumo_state::ssozumo_flipscreen_w) +WRITE8_MEMBER(ssozumo_state::flipscreen_w) { flip_screen_set(data & 0x80); } @@ -138,19 +138,16 @@ void ssozumo_state::video_start() void ssozumo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { - UINT8 *spriteram = m_spriteram; - int offs; - - for (offs = 0; offs < m_spriteram.bytes(); offs += 4) + for (int offs = 0; offs < m_spriteram.bytes(); offs += 4) { - if (spriteram[offs] & 0x01) + if (m_spriteram[offs] & 0x01) { - int code = spriteram[offs + 1] + ((spriteram[offs] & 0xf0) << 4); - int color = (spriteram[offs] & 0x08) >> 3; - int flipx = spriteram[offs] & 0x04; - int flipy = spriteram[offs] & 0x02; - int sx = 239 - spriteram[offs + 3]; - int sy = (240 - spriteram[offs + 2]) & 0xff; + int code = m_spriteram[offs + 1] + ((m_spriteram[offs] & 0xf0) << 4); + int color = (m_spriteram[offs] & 0x08) >> 3; + int flipx = m_spriteram[offs] & 0x04; + int flipy = m_spriteram[offs] & 0x02; + int sx = 239 - m_spriteram[offs + 3]; + int sy = (240 - m_spriteram[offs + 2]) & 0xff; if (flip_screen()) { @@ -169,7 +166,7 @@ void ssozumo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect } } -UINT32 ssozumo_state::screen_update_ssozumo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 ssozumo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);