Previous 199869 Revisions Next

r36378 Wednesday 11th March, 2015 at 17:59:26 UTC by Osso
ssozumo.c: added save state support (nw)
[src/mame/drivers]ssozumo.c
[src/mame/includes]ssozumo.h
[src/mame/video]ssozumo.c

trunk/src/mame/drivers/ssozumo.c
r244889r244890
1414#include "sound/dac.h"
1515#include "includes/ssozumo.h"
1616
17WRITE8_MEMBER(ssozumo_state::ssozumo_sh_command_w)
17
18void ssozumo_state::machine_start()
1819{
20   save_item(NAME(m_sound_nmi_mask));
21}
22
23WRITE8_MEMBER(ssozumo_state::sh_command_w)
24{
1925   soundlatch_byte_w(space, 0, data);
2026   m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
2127}
r244889r244890
2430static ADDRESS_MAP_START( ssozumo_map, AS_PROGRAM, 8, ssozumo_state )
2531   AM_RANGE(0x0000, 0x077f) AM_RAM
2632   AM_RANGE(0x0780, 0x07ff) AM_RAM AM_SHARE("spriteram")
27   AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(ssozumo_videoram2_w) AM_SHARE("videoram2")
28   AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(ssozumo_colorram2_w) AM_SHARE("colorram2")
29   AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(ssozumo_videoram_w) AM_SHARE("videoram")
30   AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(ssozumo_colorram_w) AM_SHARE("colorram")
33   AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
34   AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
35   AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
36   AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
3137   AM_RANGE(0x3400, 0x35ff) AM_RAM
3238   AM_RANGE(0x3600, 0x37ff) AM_RAM
33   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITE(ssozumo_flipscreen_w)
34   AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2") AM_WRITE(ssozumo_sh_command_w)
35   AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2") AM_WRITE(ssozumo_scroll_w)
39   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITE(flipscreen_w)
40   AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2") AM_WRITE(sh_command_w)
41   AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2") AM_WRITE(scroll_w)
3642   AM_RANGE(0x4030, 0x4030) AM_READ_PORT("DSW1")
3743//  AM_RANGE(0x4030, 0x4030) AM_WRITEONLY
38   AM_RANGE(0x4050, 0x407f) AM_RAM_WRITE(ssozumo_paletteram_w) AM_SHARE("paletteram")
44   AM_RANGE(0x4050, 0x407f) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
3945   AM_RANGE(0x6000, 0xffff) AM_ROM
4046ADDRESS_MAP_END
4147
r244889r244890
6975   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
7076   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
7177   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
72   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state,coin_inserted, 0)
73   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state,coin_inserted, 0)
78   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state, coin_inserted, 0)
79   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, ssozumo_state, coin_inserted, 0)
7480
7581   PORT_START("P2")    /* IN1 */
7682   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
r244889r244890
202208   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
203209   MCFG_SCREEN_SIZE(32*8, 32*8)
204210   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8 - 1, 1*8, 31*8 - 1)
205   MCFG_SCREEN_UPDATE_DRIVER(ssozumo_state, screen_update_ssozumo)
211   MCFG_SCREEN_UPDATE_DRIVER(ssozumo_state, screen_update)
206212   MCFG_SCREEN_PALETTE("palette")
207213
208214   MCFG_GFXDECODE_ADD("gfxdecode", "palette", ssozumo)
r244889r244890
281287
282288
283289
284GAME( 1984, ssozumo, 0, ssozumo, ssozumo, driver_device, 0, ROT270, "Technos Japan", "Syusse Oozumou (Japan)", 0 )
290GAME( 1984, ssozumo, 0, ssozumo, ssozumo, driver_device, 0, ROT270, "Technos Japan", "Syusse Oozumou (Japan)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/ssozumo.h
r244889r244890
33public:
44   ssozumo_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_maincpu(*this, "maincpu"),
7      m_audiocpu(*this, "audiocpu"),
8      m_gfxdecode(*this, "gfxdecode"),
9      m_palette(*this, "palette"),
610      m_spriteram(*this, "spriteram"),
711      m_paletteram(*this, "paletteram"),
812      m_videoram(*this, "videoram"),
913      m_colorram(*this, "colorram"),
1014      m_videoram2(*this, "videoram2"),
11      m_colorram2(*this, "colorram2"),
12      m_maincpu(*this, "maincpu"),
13      m_audiocpu(*this, "audiocpu"),
14      m_gfxdecode(*this, "gfxdecode"),
15      m_palette(*this, "palette") { }
15      m_colorram2(*this, "colorram2") { }
1616
17   required_device<cpu_device> m_maincpu;
18   required_device<cpu_device> m_audiocpu;
19   required_device<gfxdecode_device> m_gfxdecode;
20   required_device<palette_device> m_palette;
21
1722   required_shared_ptr<UINT8> m_spriteram;
1823   required_shared_ptr<UINT8> m_paletteram;
1924   required_shared_ptr<UINT8> m_videoram;
r244889r244890
2328
2429   tilemap_t *m_bg_tilemap;
2530   tilemap_t *m_fg_tilemap;
26
2731   UINT8 m_sound_nmi_mask;
28   DECLARE_WRITE8_MEMBER(ssozumo_sh_command_w);
32   
33   DECLARE_WRITE8_MEMBER(sh_command_w);
2934   DECLARE_WRITE8_MEMBER(sound_nmi_mask_w);
30   DECLARE_WRITE8_MEMBER(ssozumo_videoram_w);
31   DECLARE_WRITE8_MEMBER(ssozumo_colorram_w);
32   DECLARE_WRITE8_MEMBER(ssozumo_videoram2_w);
33   DECLARE_WRITE8_MEMBER(ssozumo_colorram2_w);
34   DECLARE_WRITE8_MEMBER(ssozumo_paletteram_w);
35   DECLARE_WRITE8_MEMBER(ssozumo_scroll_w);
36   DECLARE_WRITE8_MEMBER(ssozumo_flipscreen_w);
35   DECLARE_WRITE8_MEMBER(videoram_w);
36   DECLARE_WRITE8_MEMBER(colorram_w);
37   DECLARE_WRITE8_MEMBER(videoram2_w);
38   DECLARE_WRITE8_MEMBER(colorram2_w);
39   DECLARE_WRITE8_MEMBER(paletteram_w);
40   DECLARE_WRITE8_MEMBER(scroll_w);
41   DECLARE_WRITE8_MEMBER(flipscreen_w);
42   
3743   DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
44   
45   INTERRUPT_GEN_MEMBER(sound_timer_irq);
46   
3847   TILE_GET_INFO_MEMBER(get_bg_tile_info);
3948   TILE_GET_INFO_MEMBER(get_fg_tile_info);
49   
50   virtual void machine_start();
4051   virtual void video_start();
4152   DECLARE_PALETTE_INIT(ssozumo);
42   UINT32 screen_update_ssozumo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
43   INTERRUPT_GEN_MEMBER(sound_timer_irq);
53   
54   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4455   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
45   required_device<cpu_device> m_maincpu;
46   required_device<cpu_device> m_audiocpu;
47   required_device<gfxdecode_device> m_gfxdecode;
48   required_device<palette_device> m_palette;
4956};
trunk/src/mame/video/ssozumo.c
r244889r244890
4141   }
4242}
4343
44WRITE8_MEMBER(ssozumo_state::ssozumo_videoram_w)
44WRITE8_MEMBER(ssozumo_state::videoram_w)
4545{
4646   m_videoram[offset] = data;
4747   m_bg_tilemap->mark_tile_dirty(offset);
4848}
4949
50WRITE8_MEMBER(ssozumo_state::ssozumo_colorram_w)
50WRITE8_MEMBER(ssozumo_state::colorram_w)
5151{
5252   m_colorram[offset] = data;
5353   m_bg_tilemap->mark_tile_dirty(offset);
5454}
5555
56WRITE8_MEMBER(ssozumo_state::ssozumo_videoram2_w)
56WRITE8_MEMBER(ssozumo_state::videoram2_w)
5757{
5858   m_videoram2[offset] = data;
5959   m_fg_tilemap->mark_tile_dirty(offset);
6060}
6161
62WRITE8_MEMBER(ssozumo_state::ssozumo_colorram2_w)
62WRITE8_MEMBER(ssozumo_state::colorram2_w)
6363{
6464   m_colorram2[offset] = data;
6565   m_fg_tilemap->mark_tile_dirty(offset);
6666}
6767
68WRITE8_MEMBER(ssozumo_state::ssozumo_paletteram_w)
68WRITE8_MEMBER(ssozumo_state::paletteram_w)
6969{
7070   int bit0, bit1, bit2, bit3, val;
7171   int r, g, b;
r244889r244890
9898   m_palette->set_pen_color(offs2 + 64, rgb_t(r, g, b));
9999}
100100
101WRITE8_MEMBER(ssozumo_state::ssozumo_scroll_w)
101WRITE8_MEMBER(ssozumo_state::scroll_w)
102102{
103103   m_bg_tilemap->set_scrolly(0, data);
104104}
105105
106WRITE8_MEMBER(ssozumo_state::ssozumo_flipscreen_w)
106WRITE8_MEMBER(ssozumo_state::flipscreen_w)
107107{
108108   flip_screen_set(data & 0x80);
109109}
r244889r244890
138138
139139void ssozumo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
140140{
141   UINT8 *spriteram = m_spriteram;
142   int offs;
143
144   for (offs = 0; offs < m_spriteram.bytes(); offs += 4)
141   for (int offs = 0; offs < m_spriteram.bytes(); offs += 4)
145142   {
146      if (spriteram[offs] & 0x01)
143      if (m_spriteram[offs] & 0x01)
147144      {
148         int code = spriteram[offs + 1] + ((spriteram[offs] & 0xf0) << 4);
149         int color = (spriteram[offs] & 0x08) >> 3;
150         int flipx = spriteram[offs] & 0x04;
151         int flipy = spriteram[offs] & 0x02;
152         int sx = 239 - spriteram[offs + 3];
153         int sy = (240 - spriteram[offs + 2]) & 0xff;
145         int code = m_spriteram[offs + 1] + ((m_spriteram[offs] & 0xf0) << 4);
146         int color = (m_spriteram[offs] & 0x08) >> 3;
147         int flipx = m_spriteram[offs] & 0x04;
148         int flipy = m_spriteram[offs] & 0x02;
149         int sx = 239 - m_spriteram[offs + 3];
150         int sy = (240 - m_spriteram[offs + 2]) & 0xff;
154151
155152         if (flip_screen())
156153         {
r244889r244890
169166   }
170167}
171168
172UINT32 ssozumo_state::screen_update_ssozumo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
169UINT32 ssozumo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
173170{
174171   m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
175172   m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team