Previous 199869 Revisions Next

r36220 Tuesday 3rd March, 2015 at 17:14:51 UTC by Osso
tryout.c: added save state support (nw)
[src/mame/drivers]tryout.c
[src/mame/includes]tryout.h
[src/mame/video]tryout.c

trunk/src/mame/drivers/tryout.c
r244731r244732
2525#include "sound/2203intf.h"
2626#include "includes/tryout.h"
2727
28WRITE8_MEMBER(tryout_state::tryout_nmi_ack_w)
28WRITE8_MEMBER(tryout_state::nmi_ack_w)
2929{
3030   m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE );
3131}
3232
33WRITE8_MEMBER(tryout_state::tryout_sound_w)
33WRITE8_MEMBER(tryout_state::sound_w)
3434{
3535   soundlatch_byte_w(space, 0, data);
3636   m_audiocpu->set_input_line(0, HOLD_LINE);
r244731r244732
3838
3939/*this is actually irq/nmi mask, polls only four values at start up (81->01->81->01) and then
4040  stays on this state.*/
41WRITE8_MEMBER(tryout_state::tryout_sound_irq_ack_w)
41WRITE8_MEMBER(tryout_state::sound_irq_ack_w)
4242{
4343//  m_audiocpu->set_input_line(0, CLEAR_LINE);
4444}
r244731r244732
4848    membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x2000);
4949}
5050
51WRITE8_MEMBER(tryout_state::tryout_bankswitch_w)
51WRITE8_MEMBER(tryout_state::bankswitch_w)
5252{
5353    membank("bank1")->set_entry(data & 0x01);
5454}
5555
5656static ADDRESS_MAP_START( main_cpu, AS_PROGRAM, 8, tryout_state )
5757   AM_RANGE(0x0000, 0x07ff) AM_RAM
58   AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(tryout_videoram_w) AM_SHARE("videoram")
58   AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
5959   AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
6060   AM_RANGE(0x4000, 0xbfff) AM_ROM
6161   AM_RANGE(0xc800, 0xc87f) AM_RAM AM_SHARE("spriteram")
6262   AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram2")
63   AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(tryout_vram_r, tryout_vram_w)
63   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
6464   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW")
6565   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("P1")
6666   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P2")
6767   AM_RANGE(0xe003, 0xe003) AM_READ_PORT("SYSTEM")
68   AM_RANGE(0xe301, 0xe301) AM_WRITE(tryout_flipscreen_w)
69   AM_RANGE(0xe302, 0xe302) AM_WRITE(tryout_bankswitch_w)
70   AM_RANGE(0xe401, 0xe401) AM_WRITE(tryout_vram_bankswitch_w)
68   AM_RANGE(0xe301, 0xe301) AM_WRITE(flipscreen_w)
69   AM_RANGE(0xe302, 0xe302) AM_WRITE(bankswitch_w)
70   AM_RANGE(0xe401, 0xe401) AM_WRITE(vram_bankswitch_w)
7171   AM_RANGE(0xe402, 0xe404) AM_WRITEONLY AM_SHARE("gfx_control")
72   AM_RANGE(0xe414, 0xe414) AM_WRITE(tryout_sound_w)
73   AM_RANGE(0xe417, 0xe417) AM_WRITE(tryout_nmi_ack_w)
72   AM_RANGE(0xe414, 0xe414) AM_WRITE(sound_w)
73   AM_RANGE(0xe417, 0xe417) AM_WRITE(nmi_ack_w)
7474   AM_RANGE(0xfff0, 0xffff) AM_ROM AM_REGION("maincpu", 0xbff0) /* reset vectors */
7575ADDRESS_MAP_END
7676
r244731r244732
7878   AM_RANGE(0x0000, 0x07ff) AM_RAM
7979   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
8080   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
81   AM_RANGE(0xd000, 0xd000) AM_WRITE(tryout_sound_irq_ack_w)
81   AM_RANGE(0xd000, 0xd000) AM_WRITE(sound_irq_ack_w)
8282   AM_RANGE(0xc000, 0xffff) AM_ROM
8383ADDRESS_MAP_END
8484
r244731r244732
137137   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
138138   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
139139   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(2)
140   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tryout_state,coin_inserted, 0)
141   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tryout_state,coin_inserted, 0)
140   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tryout_state, coin_inserted, 0)
141   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, tryout_state, coin_inserted, 0)
142142   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
143143   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
144144   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
r244731r244732
201201   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
202202   MCFG_SCREEN_SIZE(256, 256)
203203   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
204   MCFG_SCREEN_UPDATE_DRIVER(tryout_state, screen_update_tryout)
204   MCFG_SCREEN_UPDATE_DRIVER(tryout_state, screen_update)
205205   MCFG_SCREEN_PALETTE("palette")
206206
207207   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tryout)
r244731r244732
242242   ROM_LOAD( "ch14.bpr",     0x00000, 0x0020, CRC(8ce19925) SHA1(12f8f6022f1148b6ba1d019a34247452637063a7) )
243243ROM_END
244244
245GAME( 1985, tryout, 0, tryout, tryout, driver_device, 0, ROT90, "Data East Corporation", "Pro Baseball Skill Tryout (Japan)", GAME_NO_COCKTAIL )
245GAME( 1985, tryout, 0, tryout, tryout, driver_device, 0, ROT90, "Data East Corporation", "Pro Baseball Skill Tryout (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/tryout.h
r244731r244732
33public:
44   tryout_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_videoram(*this, "videoram"),
711      m_spriteram(*this, "spriteram"),
812      m_spriteram2(*this, "spriteram2"),
913      m_gfx_control(*this, "gfx_control"),
10      m_maincpu(*this, "maincpu"),
11      m_audiocpu(*this, "audiocpu"),
12      m_gfxdecode(*this, "gfxdecode"),
13      m_palette(*this, "palette")  { }
14      m_vram(*this, "vram") { }
1415
16   required_device<cpu_device> m_maincpu;
17   required_device<cpu_device> m_audiocpu;
18   required_device<gfxdecode_device> m_gfxdecode;
19   required_device<palette_device> m_palette;
20
1521   required_shared_ptr<UINT8> m_videoram;
1622   required_shared_ptr<UINT8> m_spriteram;
1723   required_shared_ptr<UINT8> m_spriteram2;
1824   required_shared_ptr<UINT8> m_gfx_control;
25   required_shared_ptr<UINT8> m_vram;
1926
2027   tilemap_t *m_fg_tilemap;
2128   tilemap_t *m_bg_tilemap;
2229   UINT8 m_vram_bank;
23   UINT8 *m_vram;
2430   UINT8 *m_vram_gfx;
25   DECLARE_WRITE8_MEMBER(tryout_nmi_ack_w);
26   DECLARE_WRITE8_MEMBER(tryout_sound_w);
27   DECLARE_WRITE8_MEMBER(tryout_sound_irq_ack_w);
28   DECLARE_WRITE8_MEMBER(tryout_bankswitch_w);
29   DECLARE_READ8_MEMBER(tryout_vram_r);
30   DECLARE_WRITE8_MEMBER(tryout_videoram_w);
31   DECLARE_WRITE8_MEMBER(tryout_vram_w);
32   DECLARE_WRITE8_MEMBER(tryout_vram_bankswitch_w);
33   DECLARE_WRITE8_MEMBER(tryout_flipscreen_w);
31   
32   DECLARE_WRITE8_MEMBER(nmi_ack_w);
33   DECLARE_WRITE8_MEMBER(sound_w);
34   DECLARE_WRITE8_MEMBER(sound_irq_ack_w);
35   DECLARE_WRITE8_MEMBER(bankswitch_w);
36   DECLARE_WRITE8_MEMBER(videoram_w);
37   DECLARE_WRITE8_MEMBER(vram_w);
38   DECLARE_WRITE8_MEMBER(vram_bankswitch_w);
39   DECLARE_WRITE8_MEMBER(flipscreen_w);
40
3441   DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
42
3543   TILE_GET_INFO_MEMBER(get_fg_tile_info);
3644   TILE_GET_INFO_MEMBER(get_bg_tile_info);
3745   TILEMAP_MAPPER_MEMBER(get_fg_memory_offset);
3846   TILEMAP_MAPPER_MEMBER(get_bg_memory_offset);
47
3948    virtual void machine_start();
4049    virtual void video_start();
4150   DECLARE_PALETTE_INIT(tryout);
42   UINT32 screen_update_tryout(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
51
52   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4353   void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
44   required_device<cpu_device> m_maincpu;
45   required_device<cpu_device> m_audiocpu;
46   required_device<gfxdecode_device> m_gfxdecode;
47   required_device<palette_device> m_palette;
4854};
trunk/src/mame/video/tryout.c
r244731r244732
1212PALETTE_INIT_MEMBER(tryout_state, tryout)
1313{
1414   const UINT8 *color_prom = memregion("proms")->base();
15   int i;
16
17   for (i = 0;i < palette.entries();i++)
15   
16   for (int i = 0;i < palette.entries();i++)
1817   {
1918      int bit0,bit1,bit2,r,g,b;
2019
r244731r244732
4039
4140TILE_GET_INFO_MEMBER(tryout_state::get_fg_tile_info)
4241{
43   UINT8 *videoram = m_videoram;
44   int code, attr, color;
45
46   code = videoram[tile_index];
47   attr = videoram[tile_index + 0x400];
42   int code = m_videoram[tile_index];
43   int attr = m_videoram[tile_index + 0x400];
4844   code |= ((attr & 0x03) << 8);
49   color = ((attr & 0x4)>>2)+6;
45   int color = ((attr & 0x4)>>2)+6;
5046
5147   SET_TILE_INFO_MEMBER(0, code, color, 0);
5248}
r244731r244732
5652   SET_TILE_INFO_MEMBER(2, m_vram[tile_index] & 0x7f, 2, 0);
5753}
5854
59READ8_MEMBER(tryout_state::tryout_vram_r)
55WRITE8_MEMBER(tryout_state::videoram_w)
6056{
61   return m_vram[offset]; // debug only
62}
63
64WRITE8_MEMBER(tryout_state::tryout_videoram_w)
65{
66   UINT8 *videoram = m_videoram;
67   videoram[offset] = data;
57   m_videoram[offset] = data;
6858   m_fg_tilemap->mark_tile_dirty(offset & 0x3ff);
6959}
7060
71WRITE8_MEMBER(tryout_state::tryout_vram_w)
61WRITE8_MEMBER(tryout_state::vram_w)
7262{
7363   /*  There are eight banks of vram - in bank 0 the first 0x400 bytes
7464   is reserved for the tilemap.  In banks 2, 4 and 6 the game never
r244731r244732
136126   m_gfxdecode->gfx(2)->mark_dirty((offset-0x400/64)&0x7f);
137127}
138128
139WRITE8_MEMBER(tryout_state::tryout_vram_bankswitch_w)
129WRITE8_MEMBER(tryout_state::vram_bankswitch_w)
140130{
141131   m_vram_bank = data;
142132}
143133
144WRITE8_MEMBER(tryout_state::tryout_flipscreen_w)
134WRITE8_MEMBER(tryout_state::flipscreen_w)
145135{
146136   flip_screen_set(data & 1);
147137}
r244731r244732
168158   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tryout_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(tryout_state::get_fg_memory_offset),this),8,8,32,32);
169159   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tryout_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(tryout_state::get_bg_memory_offset),this),16,16,64,16);
170160
171   m_vram=auto_alloc_array(machine(), UINT8, 8 * 0x800);
172161   m_vram_gfx=auto_alloc_array(machine(), UINT8, 0x6000);
173162
174163   m_gfxdecode->gfx(2)->set_source(m_vram_gfx);
175164
176165   m_fg_tilemap->set_transparent_pen(0);
166
167   save_item(NAME(m_vram_bank));
168   save_pointer(NAME(m_vram_gfx), 0x6000);
177169}
178170
179171void tryout_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
180172{
181   UINT8 *spriteram = m_spriteram;
182   UINT8 *spriteram_2 = m_spriteram2;
183173   int offs,fx,fy,x,y,color,sprite,inc;
184174
185175   for (offs = 0;offs < 0x7f;offs += 4)
186176   {
187      if (!(spriteram[offs]&1))
177      if (!(m_spriteram[offs]&1))
188178         continue;
189179
190      sprite = spriteram[offs+1] + ((spriteram_2[offs]&7)<<8);
191      x = spriteram[offs+3]-3;
192      y = spriteram[offs+2];
193      color = 0;//(spriteram[offs] & 8)>>3;
194      fx = (spriteram[offs] & 8)>>3;
180      sprite = m_spriteram[offs+1] + ((m_spriteram2[offs]&7)<<8);
181      x = m_spriteram[offs+3]-3;
182      y = m_spriteram[offs+2];
183      color = 0;//(m_spriteram[offs] & 8)>>3;
184      fx = (m_spriteram[offs] & 8)>>3;
195185      fy = 0;
196186      inc = 16;
197187
r244731r244732
207197      }
208198
209199      /* Double Height */
210      if(spriteram[offs] & 0x10)
200      if(m_spriteram[offs] & 0x10)
211201      {
212202         m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
213203            sprite,
r244731r244732
226216   }
227217}
228218
229UINT32 tryout_state::screen_update_tryout(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
219UINT32 tryout_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
230220{
231221   int scrollx = 0;
232222


Previous 199869 Revisions Next


© 1997-2024 The MAME Team