Previous 199869 Revisions Next

r36086 Monday 23rd February, 2015 at 18:15:49 UTC by Osso
speedatk: added save state support (nw)
[/branches/kale/src/mame/drivers]speedatk.c
[/branches/kale/src/mame/includes]speedatk.h
[/branches/kale/src/mame/video]speedatk.c

branches/kale/src/mame/drivers/speedatk.c
r244597r244598
77driver by Pierpaolo Prazzoli & Angelo Salese, based on early work by David Haywood
88
99TODO:
10 - Video emulation requires a major conversion to the HD46505SP C.R.T. chip (MC6845 clone)
1110 - It's possible that there is only one coin chute and not two,needs a real board to know
1211   more about it.
1312
r244597r244598
7978#include "emu.h"
8079#include "cpu/z80/z80.h"
8180#include "sound/ay8910.h"
82#include "video/mc6845.h"
8381#include "includes/speedatk.h"
8482
8583#define MASTER_CLOCK XTAL_12MHz
8684
85void speedatk_state::machine_start()
86{
87   save_item(NAME(m_mux_data));
88   save_item(NAME(m_km_status));
89   save_item(NAME(m_coin_settings));
90   save_item(NAME(m_coin_impulse));
91}
92
8793UINT8 speedatk_state::iox_key_matrix_calc(UINT8 p_side)
8894{
8995   static const char *const keynames[] = { "P1_ROW0", "P1_ROW1", "P2_ROW0", "P2_ROW1" };
r244597r244598
175181   AM_RANGE(0x8000, 0x8000) AM_READWRITE(key_matrix_r,key_matrix_w)
176182   AM_RANGE(0x8001, 0x8001) AM_READWRITE(key_matrix_status_r,key_matrix_status_w)
177183   AM_RANGE(0x8800, 0x8fff) AM_RAM
178   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(speedatk_videoram_w) AM_SHARE("videoram")
179   AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(speedatk_colorram_w) AM_SHARE("colorram")
184   AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("videoram")
185   AM_RANGE(0xb000, 0xb3ff) AM_RAM AM_SHARE("colorram")
180186ADDRESS_MAP_END
181187
182188
183189static ADDRESS_MAP_START( speedatk_io, AS_IO, 8, speedatk_state )
184190   ADDRESS_MAP_GLOBAL_MASK(0xff)
185   AM_RANGE(0x00, 0x01) AM_WRITE(speedatk_6845_w) //h46505 address / data routing
191   AM_RANGE(0x00, 0x01) AM_WRITE(m6845_w) //h46505 address / data routing
186192   AM_RANGE(0x24, 0x24) AM_WRITE(watchdog_reset_w)
187193   AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r)
188194   AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
r244597r244598
285291   GFXDECODE_ENTRY( "gfx2", 0, charlayout_3bpp,   0, 32 )
286292GFXDECODE_END
287293
288WRITE8_MEMBER(speedatk_state::speedatk_output_w)
294WRITE8_MEMBER(speedatk_state::output_w)
289295{
290296   m_flip_scr = data & 0x80;
291297
r244597r244598
308314   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
309315   MCFG_SCREEN_SIZE(320, 256)
310316   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
311   MCFG_SCREEN_UPDATE_DRIVER(speedatk_state, screen_update_speedatk)
317   MCFG_SCREEN_UPDATE_DRIVER(speedatk_state, screen_update)
312318   MCFG_SCREEN_PALETTE("palette")
313319
314320   MCFG_MC6845_ADD("crtc", H46505, "screen", MASTER_CLOCK/16)   /* hand tuned to get ~60 fps */
r244597r244598
325331
326332   MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/4) //divider is unknown
327333   MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW"))
328   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(speedatk_state, speedatk_output_w))
334   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(speedatk_state, output_w))
329335   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
330336MACHINE_CONFIG_END
331337
r244597r244598
350356   ROM_LOAD( "cb2.bpr",      0x0020, 0x0100, CRC(a604cf96) SHA1(a4ef6e77dcd3abe4c27e8e636222a5ee711a51f5) ) /* lookup table */
351357ROM_END
352358
353GAME( 1984, speedatk, 0, speedatk, speedatk, driver_device, 0, ROT0, "Seta Kikaku Corp.", "Speed Attack! (Japan)", 0 )
359GAME( 1984, speedatk, 0, speedatk, speedatk, driver_device, 0, ROT0, "Seta Kikaku Corp.", "Speed Attack! (Japan)", GAME_SUPPORTS_SAVE )
branches/kale/src/mame/includes/speedatk.h
r244597r244598
1#include "video/mc6845.h"
2
13class speedatk_state : public driver_device
24{
35public:
r244597r244598
35   speedatk_state(const machine_config &mconfig, device_type type, const char *tag)
46      : driver_device(mconfig, type, tag),
5      m_videoram(*this, "videoram"),
6      m_colorram(*this, "colorram"),
77      m_maincpu(*this, "maincpu"),
8      m_crtc(*this, "crtc"),
89      m_gfxdecode(*this, "gfxdecode"),
9      m_palette(*this, "palette") { }
10      m_palette(*this, "palette"),
11      m_videoram(*this, "videoram"),
12      m_colorram(*this, "colorram") { }
1013
14   required_device<cpu_device> m_maincpu;
15   required_device<h46505_device> m_crtc;
16   required_device<gfxdecode_device> m_gfxdecode;
17   required_device<palette_device> m_palette;
18
1119   required_shared_ptr<UINT8> m_videoram;
1220   required_shared_ptr<UINT8> m_colorram;
21   
1322   UINT8 m_crtc_vreg[0x100];
1423   UINT8 m_crtc_index;
1524   UINT8 m_flip_scr;
16
1725   UINT8 m_mux_data;
1826   UINT8 m_km_status;
1927   UINT8 m_coin_settings;
2028   UINT8 m_coin_impulse;
29   
2130   DECLARE_READ8_MEMBER(key_matrix_r);
2231   DECLARE_WRITE8_MEMBER(key_matrix_w);
2332   DECLARE_READ8_MEMBER(key_matrix_status_r);
2433   DECLARE_WRITE8_MEMBER(key_matrix_status_w);
25   DECLARE_WRITE8_MEMBER(speedatk_videoram_w);
26   DECLARE_WRITE8_MEMBER(speedatk_colorram_w);
27   DECLARE_WRITE8_MEMBER(speedatk_6845_w);
28   DECLARE_WRITE8_MEMBER(speedatk_output_w);
34   DECLARE_WRITE8_MEMBER(videoram_w);
35   DECLARE_WRITE8_MEMBER(colorram_w);
36   DECLARE_WRITE8_MEMBER(m6845_w);
37   DECLARE_WRITE8_MEMBER(output_w);
38
39   virtual void machine_start();
2940   virtual void video_start();
3041   DECLARE_PALETTE_INIT(speedatk);
31   UINT32 screen_update_speedatk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
42   
43   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
44   
3245   UINT8 iox_key_matrix_calc(UINT8 p_side);
33   required_device<cpu_device> m_maincpu;
34   required_device<gfxdecode_device> m_gfxdecode;
35   required_device<palette_device> m_palette;
3646};
branches/kale/src/mame/video/speedatk.c
r244597r244598
55*****************************************************************************************/
66#include "emu.h"
77#include "includes/speedatk.h"
8#include "video/mc6845.h"
98
109
1110PALETTE_INIT_MEMBER(speedatk_state, speedatk)
r244597r244598
5049   }
5150}
5251
53WRITE8_MEMBER(speedatk_state::speedatk_videoram_w)
54{
55   m_videoram[offset] = data;
56}
57
58WRITE8_MEMBER(speedatk_state::speedatk_colorram_w)
59{
60   m_colorram[offset] = data;
61}
62
6352void speedatk_state::video_start()
6453{
54   save_item(NAME(m_crtc_vreg));
55   save_item(NAME(m_crtc_index));
56   save_item(NAME(m_flip_scr));
6557}
6658
67WRITE8_MEMBER(speedatk_state::speedatk_6845_w)
59WRITE8_MEMBER(speedatk_state::m6845_w)
6860{
6961   if(offset == 0)
7062   {
7163      m_crtc_index = data;
72      machine().device<mc6845_device>("crtc")->address_w(space,0,data);
64      m_crtc->address_w(space,0,data);
7365   }
7466   else
7567   {
7668      m_crtc_vreg[m_crtc_index] = data;
77      machine().device<mc6845_device>("crtc")->register_w(space,0,data);
69      m_crtc->register_w(space,0,data);
7870   }
7971}
8072
81UINT32 speedatk_state::screen_update_speedatk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
73UINT32 speedatk_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
8274{
8375   int x,y;
8476   int count;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team