Previous 199869 Revisions Next

r35198 Sunday 22nd February, 2015 at 08:13:41 UTC by Osso
seicross.c: added save state support (nw)
[src/mame/drivers]seicross.c
[src/mame/includes]seicross.h
[src/mame/video]seicross.c

trunk/src/mame/drivers/seicross.c
r243709r243710
6060   memcpy(data, init, sizeof(init));
6161}
6262
63void seicross_state::machine_start()
64{
65   save_item(NAME(m_portb));
66   save_item(NAME(m_irq_mask));
67}
68
6369void seicross_state::machine_reset()
6470{
6571   /* start with the protection mcu halted */
r243709r243710
6874
6975
7076
71READ8_MEMBER(seicross_state::friskyt_portB_r)
77READ8_MEMBER(seicross_state::portB_r)
7278{
7379   return (m_portb & 0x9f) | (ioport("DEBUG")->read_safe(0) & 0x60);
7480}
7581
76WRITE8_MEMBER(seicross_state::friskyt_portB_w)
82WRITE8_MEMBER(seicross_state::portB_w)
7783{
7884   //logerror("PC %04x: 8910 port B = %02x\n", space.device().safe_pc(), data);
7985   /* bit 0 is IRQ enable */
r243709r243710
98104   AM_RANGE(0x0000, 0x77ff) AM_ROM
99105   AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1")
100106   AM_RANGE(0x8820, 0x887f) AM_RAM AM_SHARE("spriteram")
101   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(seicross_videoram_w) AM_SHARE("videoram") /* video RAM */
107   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* video RAM */
102108   AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("row_scroll")
103109   AM_RANGE(0x9880, 0x989f) AM_WRITEONLY AM_SHARE("spriteram2")
104   AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(seicross_colorram_w) AM_SHARE("colorram")
110   AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
105111   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")        /* IN0 */
106112   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")        /* IN1 */
107113   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("TEST")       /* test */
r243709r243710
390396   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */    /* frames per second, vblank duration */)
391397   MCFG_SCREEN_SIZE(32*8, 32*8)
392398   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
393   MCFG_SCREEN_UPDATE_DRIVER(seicross_state, screen_update_seicross)
399   MCFG_SCREEN_UPDATE_DRIVER(seicross_state, screen_update)
394400   MCFG_SCREEN_PALETTE("palette")
395401
396402   MCFG_GFXDECODE_ADD("gfxdecode", "palette", seicross)
r243709r243710
401407   MCFG_SPEAKER_STANDARD_MONO("mono")
402408
403409   MCFG_SOUND_ADD("aysnd", AY8910, 1536000)
404   MCFG_AY8910_PORT_B_READ_CB(READ8(seicross_state, friskyt_portB_r))
405   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(seicross_state, friskyt_portB_w))
410   MCFG_AY8910_PORT_B_READ_CB(READ8(seicross_state, portB_r))
411   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(seicross_state, portB_w))
406412   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
407413
408414   MCFG_DAC_ADD("dac")
r243709r243710
600606}
601607
602608
603GAME( 1981, friskyt,  0,        nvram,    friskyt, driver_device,  0,        ROT0,  "Nichibutsu", "Frisky Tom (set 1)", GAME_NO_COCKTAIL )
604GAME( 1981, friskyta, friskyt,  nvram,    friskyt, driver_device,  0,        ROT0,  "Nichibutsu", "Frisky Tom (set 2)", GAME_NO_COCKTAIL )
605GAME( 1981, friskytb, friskyt,  nvram,    friskyt, seicross_state, friskytb, ROT0,  "Nichibutsu", "Frisky Tom (set 3, encrypted)", GAME_NO_COCKTAIL ) // protection mcu runs encrypted opcodes
606GAME( 1982, radrad,   0,        no_nvram, radrad, driver_device,   0,        ROT0,  "Nichibutsu USA", "Radical Radial", GAME_NO_COCKTAIL )
607GAME( 1984, seicross, 0,        no_nvram, seicross, driver_device, 0,        ROT90, "Nichibutsu / Alice", "Seicross", GAME_NO_COCKTAIL )
608GAME( 1984, sectrzon, seicross, no_nvram, seicross, driver_device, 0,        ROT90, "Nichibutsu / Alice", "Sector Zone", GAME_NO_COCKTAIL )
609GAME( 1981, friskyt,  0,        nvram,    friskyt, driver_device,  0,        ROT0,  "Nichibutsu", "Frisky Tom (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
610GAME( 1981, friskyta, friskyt,  nvram,    friskyt, driver_device,  0,        ROT0,  "Nichibutsu", "Frisky Tom (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
611GAME( 1981, friskytb, friskyt,  nvram,    friskyt, seicross_state, friskytb, ROT0,  "Nichibutsu", "Frisky Tom (set 3, encrypted)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // protection mcu runs encrypted opcodes
612GAME( 1982, radrad,   0,        no_nvram, radrad, driver_device,   0,        ROT0,  "Nichibutsu USA", "Radical Radial", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
613GAME( 1984, seicross, 0,        no_nvram, seicross, driver_device, 0,        ROT90, "Nichibutsu / Alice", "Seicross", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
614GAME( 1984, sectrzon, seicross, no_nvram, seicross, driver_device, 0,        ROT90, "Nichibutsu / Alice", "Sector Zone", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/seicross.h
r243709r243710
55public:
66   seicross_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_maincpu(*this, "maincpu"),
9      m_mcu(*this, "mcu"),
10      m_nvram(*this, "nvram"),
11      m_gfxdecode(*this, "gfxdecode"),
12      m_palette(*this, "palette"),
813      m_spriteram(*this, "spriteram"),
914      m_videoram(*this, "videoram"),
1015      m_row_scroll(*this, "row_scroll"),
1116      m_spriteram2(*this, "spriteram2"),
12      m_colorram(*this, "colorram"),
13      m_maincpu(*this, "maincpu"),
14      m_mcu(*this, "mcu"),
15      m_nvram(*this, "nvram"),
16      m_gfxdecode(*this, "gfxdecode"),
17      m_palette(*this, "palette") { }
17      m_colorram(*this, "colorram") { }
1818
19   required_device<cpu_device> m_maincpu;
20   required_device<cpu_device> m_mcu;
21   optional_device<nvram_device> m_nvram;
22   required_device<gfxdecode_device> m_gfxdecode;
23   required_device<palette_device> m_palette;
24
1925   required_shared_ptr<UINT8> m_spriteram;
2026   required_shared_ptr<UINT8> m_videoram;
2127   required_shared_ptr<UINT8> m_row_scroll;
r243709r243710
2430
2531   UINT8 m_portb;
2632   tilemap_t *m_bg_tilemap;
27   void nvram_init(nvram_device &nvram, void *data, size_t size);
33   UINT8 m_irq_mask;
2834
29   UINT8 m_irq_mask;
30   DECLARE_WRITE8_MEMBER(seicross_videoram_w);
31   DECLARE_WRITE8_MEMBER(seicross_colorram_w);
32   DECLARE_READ8_MEMBER(friskyt_portB_r);
33   DECLARE_WRITE8_MEMBER(friskyt_portB_w);
35   DECLARE_WRITE8_MEMBER(videoram_w);
36   DECLARE_WRITE8_MEMBER(colorram_w);
37   DECLARE_READ8_MEMBER(portB_r);
38   DECLARE_WRITE8_MEMBER(portB_w);
39
3440   TILE_GET_INFO_MEMBER(get_bg_tile_info);
41   
42   INTERRUPT_GEN_MEMBER(vblank_irq);
43
44   virtual void machine_start();
3545   virtual void machine_reset();
3646   virtual void video_start();
3747   DECLARE_PALETTE_INIT(seicross);
38   UINT32 screen_update_seicross(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
39   INTERRUPT_GEN_MEMBER(vblank_irq);
48   DECLARE_DRIVER_INIT(friskytb);
49   
50   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4051   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
41   required_device<cpu_device> m_maincpu;
42   required_device<cpu_device> m_mcu;
43   optional_device<nvram_device> m_nvram;
44   required_device<gfxdecode_device> m_gfxdecode;
45   required_device<palette_device> m_palette;
46
47   DECLARE_DRIVER_INIT(friskytb);
52   
53   void nvram_init(nvram_device &nvram, void *data, size_t size);
4854};
trunk/src/mame/video/seicross.c
r243709r243710
5454   }
5555}
5656
57WRITE8_MEMBER(seicross_state::seicross_videoram_w)
57WRITE8_MEMBER(seicross_state::videoram_w)
5858{
5959   m_videoram[offset] = data;
6060   m_bg_tilemap->mark_tile_dirty(offset);
6161}
6262
63WRITE8_MEMBER(seicross_state::seicross_colorram_w)
63WRITE8_MEMBER(seicross_state::colorram_w)
6464{
6565   /* bit 5 of the address is not used for color memory. There is just */
6666   /* 512k of memory; every two consecutive rows share the same memory */
r243709r243710
9494
9595void seicross_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
9696{
97   UINT8 *spriteram = m_spriteram;
98   UINT8 *spriteram_2 = m_spriteram2;
9997   int offs;
10098
10199   for (offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
102100   {
103      int x = spriteram[offs + 3];
101      int x = m_spriteram[offs + 3];
104102      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
105            (spriteram[offs] & 0x3f) + ((spriteram[offs + 1] & 0x10) << 2) + 128,
106            spriteram[offs + 1] & 0x0f,
107            spriteram[offs] & 0x40,spriteram[offs] & 0x80,
108            x,240-spriteram[offs + 2],0);
103            (m_spriteram[offs] & 0x3f) + ((m_spriteram[offs + 1] & 0x10) << 2) + 128,
104            m_spriteram[offs + 1] & 0x0f,
105            m_spriteram[offs] & 0x40,m_spriteram[offs] & 0x80,
106            x,240-m_spriteram[offs + 2],0);
109107      if(x>0xf0)
110108         m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
111               (spriteram[offs] & 0x3f) + ((spriteram[offs + 1] & 0x10) << 2) + 128,
112               spriteram[offs + 1] & 0x0f,
113               spriteram[offs] & 0x40,spriteram[offs] & 0x80,
114               x-256,240-spriteram[offs + 2],0);
109               (m_spriteram[offs] & 0x3f) + ((m_spriteram[offs + 1] & 0x10) << 2) + 128,
110               m_spriteram[offs + 1] & 0x0f,
111               m_spriteram[offs] & 0x40,m_spriteram[offs] & 0x80,
112               x-256,240-m_spriteram[offs + 2],0);
115113   }
116114
117115   for (offs = m_spriteram2.bytes() - 4; offs >= 0; offs -= 4)
118116   {
119      int x = spriteram_2[offs + 3];
117      int x = m_spriteram2[offs + 3];
120118      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
121            (spriteram_2[offs] & 0x3f) + ((spriteram_2[offs + 1] & 0x10) << 2),
122            spriteram_2[offs + 1] & 0x0f,
123            spriteram_2[offs] & 0x40,spriteram_2[offs] & 0x80,
124            x,240-spriteram_2[offs + 2],0);
119            (m_spriteram2[offs] & 0x3f) + ((m_spriteram2[offs + 1] & 0x10) << 2),
120            m_spriteram2[offs + 1] & 0x0f,
121            m_spriteram2[offs] & 0x40,m_spriteram2[offs] & 0x80,
122            x,240-m_spriteram2[offs + 2],0);
125123      if(x>0xf0)
126124         m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
127               (spriteram_2[offs] & 0x3f) + ((spriteram_2[offs + 1] & 0x10) << 2),
128               spriteram_2[offs + 1] & 0x0f,
129               spriteram_2[offs] & 0x40,spriteram_2[offs] & 0x80,
130               x-256,240-spriteram_2[offs + 2],0);
125               (m_spriteram2[offs] & 0x3f) + ((m_spriteram2[offs + 1] & 0x10) << 2),
126               m_spriteram2[offs + 1] & 0x0f,
127               m_spriteram2[offs] & 0x40,m_spriteram2[offs] & 0x80,
128               x-256,240-m_spriteram2[offs + 2],0);
131129   }
132130}
133131
134UINT32 seicross_state::screen_update_seicross(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
132UINT32 seicross_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
135133{
136134   int col;
137135


Previous 199869 Revisions Next


© 1997-2024 The MAME Team