Previous 199869 Revisions Next

r36264 Thursday 5th March, 2015 at 17:13:53 UTC by Osso
cabal.c, deadang.c: added save state support (nw)
[src/mame/drivers]cabal.c deadang.c
[src/mame/includes]cabal.h deadang.h
[src/mame/video]cabal.c deadang.c

trunk/src/mame/drivers/cabal.c
r244775r244776
4848#include "sound/msm5205.h"
4949#include "includes/cabal.h"
5050
51MACHINE_START_MEMBER(cabal_state,cabal)
52{
53   save_item(NAME(m_last));
54}
55
56MACHINE_START_MEMBER(cabal_state,cabalbl)
57{
58   save_item(NAME(m_sound_command1));
59   save_item(NAME(m_sound_command2));
60}
61
5162MACHINE_RESET_MEMBER(cabal_state,cabalbl)
5263{
5364   m_sound_command1 = m_sound_command2 = 0xff;
r244775r244776
94105}
95106
96107
97WRITE16_MEMBER(cabal_state::cabal_sound_irq_trigger_word_w)
108WRITE16_MEMBER(cabal_state::sound_irq_trigger_word_w)
98109{
99110   m_seibu_sound->main_word_w(space,4,data,mem_mask);
100111
r244775r244776
114125   AM_RANGE(0x40000, 0x437ff) AM_RAM
115126   AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram")
116127   AM_RANGE(0x44000, 0x4ffff) AM_RAM
117   AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(cabal_text_videoram16_w) AM_SHARE("colorram")
118   AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(cabal_background_videoram16_w) AM_SHARE("videoram")
128   AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram")
129   AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram")
119130   AM_RANGE(0x80200, 0x803ff) AM_RAM
120131   AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW")
121132   AM_RANGE(0xa0008, 0xa000f) AM_READ(track_r)
122133   AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS")
123134   AM_RANGE(0xc0000, 0xc0001) AM_WRITE(track_reset_w)
124135   AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
125   AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w)
136   AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w)
126137   AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
127   AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabal_sound_irq_trigger_word_w) // fix coin insertion
138   AM_RANGE(0xe8008, 0xe8009) AM_WRITE(sound_irq_trigger_word_w) // fix coin insertion
128139   AM_RANGE(0xe8000, 0xe800d) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w)
129140ADDRESS_MAP_END
130141
r244775r244776
133144   AM_RANGE(0x40000, 0x437ff) AM_RAM
134145   AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram")
135146   AM_RANGE(0x44000, 0x4ffff) AM_RAM
136   AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(cabal_text_videoram16_w) AM_SHARE("colorram")
137   AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(cabal_background_videoram16_w) AM_SHARE("videoram")
147   AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram")
148   AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram")
138149   AM_RANGE(0x80200, 0x803ff) AM_RAM
139150   AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW")
140151   AM_RANGE(0xa0008, 0xa0009) AM_READ_PORT("JOY")
141152   AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS")
142153   AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */
143   AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w)
154   AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w)
144155   AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
145156   AM_RANGE(0xe8000, 0xe8003) AM_WRITE(cabalbl_sndcmd_w)
146157   AM_RANGE(0xe8004, 0xe8005) AM_READ(soundlatch2_word_r)
r244775r244776
464475
465476   MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
466477   MCFG_CPU_PROGRAM_MAP(sound_map)
478   
479   MCFG_MACHINE_START_OVERRIDE(cabal_state,cabal)
467480
468481   /* video hardware */
469482   MCFG_SCREEN_ADD("screen", RASTER)
r244775r244776
471484   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
472485   MCFG_SCREEN_SIZE(256, 256)
473486   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
474   MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
487   MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update)
475488   MCFG_SCREEN_PALETTE("palette")
476489
477490   MCFG_GFXDECODE_ADD("gfxdecode", "palette", cabal)
r244775r244776
521534
522535   MCFG_QUANTUM_TIME(attotime::from_hz(600))
523536
537   MCFG_MACHINE_START_OVERRIDE(cabal_state,cabalbl)
524538   MCFG_MACHINE_RESET_OVERRIDE(cabal_state,cabalbl)
525539
526540   /* video hardware */
r244775r244776
529543   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
530544   MCFG_SCREEN_SIZE(256, 256)
531545   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
532   MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal)
546   MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update)
533547   MCFG_SCREEN_PALETTE("palette")
534548
535549   MCFG_GFXDECODE_ADD("gfxdecode", "palette", cabal)
r244775r244776
847861}
848862
849863
850GAME( 1988, cabal,   0,     cabal,   cabalj, cabal_state,   cabal,   ROT0, "TAD Corporation", "Cabal (World, Joystick version)", 0 )
851GAME( 1989, cabala,  cabal, cabal,   cabalj, cabal_state,   cabal,   ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", 0 ) // korea?
852GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device,  0,       ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND )
853GAME( 1988, cabalbl2,cabal, cabal,   cabalj, cabal_state,   cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", 0 )
864GAME( 1988, cabal,   0,     cabal,   cabalj, cabal_state,   cabal,   ROT0, "TAD Corporation", "Cabal (World, Joystick version)", GAME_SUPPORTS_SAVE )
865GAME( 1989, cabala,  cabal, cabal,   cabalj, cabal_state,   cabal,   ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", GAME_SUPPORTS_SAVE ) // korea?
866GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device,  0,       ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
867GAME( 1988, cabalbl2,cabal, cabal,   cabalj, cabal_state,   cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", GAME_SUPPORTS_SAVE )
854868
855GAME( 1988, cabalus, cabal, cabal,   cabalt, cabal_state,   cabal,  ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", 0 )
856GAME( 1988, cabalus2,cabal, cabal,   cabalt, cabal_state,   cabal,  ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", 0 )
869GAME( 1988, cabalus, cabal, cabal,   cabalt, cabal_state,   cabal,  ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", GAME_SUPPORTS_SAVE )
870GAME( 1988, cabalus2,cabal, cabal,   cabalt, cabal_state,   cabal,  ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/deadang.c
r244775r244776
6363   AM_RANGE(0x05000, 0x05fff) AM_WRITEONLY
6464   AM_RANGE(0x06000, 0x0600f) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w)
6565   AM_RANGE(0x06010, 0x07fff) AM_WRITEONLY
66   AM_RANGE(0x08000, 0x087ff) AM_WRITE(deadang_text_w) AM_SHARE("videoram")
66   AM_RANGE(0x08000, 0x087ff) AM_WRITE(text_w) AM_SHARE("videoram")
6767   AM_RANGE(0x08800, 0x0bfff) AM_WRITEONLY
6868   AM_RANGE(0x0a000, 0x0a001) AM_READ_PORT("P1_P2")
6969   AM_RANGE(0x0a002, 0x0a003) AM_READ_PORT("DSW")
r244775r244776
7676
7777static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16, deadang_state )
7878   AM_RANGE(0x00000, 0x037ff) AM_RAM
79   AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(deadang_foreground_w) AM_SHARE("video_data")
79   AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(foreground_w) AM_SHARE("video_data")
8080   AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("share1")
81   AM_RANGE(0x08000, 0x08001) AM_WRITE(deadang_bank_w)
81   AM_RANGE(0x08000, 0x08001) AM_WRITE(bank_w)
8282   AM_RANGE(0x0c000, 0x0c001) AM_WRITE(watchdog_reset16_w)
8383   AM_RANGE(0xe0000, 0xfffff) AM_ROM
8484ADDRESS_MAP_END
r244775r244776
206206
207207/* Interrupt Generators */
208208
209TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::deadang_main_scanline)
209TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::main_scanline)
210210{
211211   int scanline = param;
212212
r244775r244776
217217      m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xc8/4);
218218}
219219
220TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::deadang_sub_scanline)
220TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::sub_scanline)
221221{
222222   int scanline = param;
223223
r244775r244776
235235   /* basic machine hardware */
236236   MCFG_CPU_ADD("maincpu", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */
237237   MCFG_CPU_PROGRAM_MAP(main_map)
238   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer1", deadang_state, deadang_main_scanline, "screen", 0, 1)
238   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer1", deadang_state, main_scanline, "screen", 0, 1)
239239
240240   MCFG_CPU_ADD("sub", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */
241241   MCFG_CPU_PROGRAM_MAP(sub_map)
242   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", deadang_state, deadang_sub_scanline, "screen", 0, 1)
242   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", deadang_state, sub_scanline, "screen", 0, 1)
243243
244244   SEIBU3A_SOUND_SYSTEM_CPU(XTAL_14_31818MHz/4)
245245
r244775r244776
251251   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
252252   MCFG_SCREEN_SIZE(32*8, 32*8)
253253   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
254   MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update_deadang)
254   MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update)
255255   MCFG_SCREEN_PALETTE("palette")
256256
257257   MCFG_GFXDECODE_ADD("gfxdecode", "palette", deadang)
r244775r244776
267267/* ROMs */
268268
269269ROM_START( deadang )
270   ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */
270   ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
271271   ROM_LOAD16_BYTE("2.18h",   0x0c0000, 0x10000, CRC(1bc05b7e) SHA1(21833150a1f5ab543999a67f5b3bfbaf703e5508) )
272272   ROM_LOAD16_BYTE("4.22h",   0x0c0001, 0x10000, CRC(5751d4e7) SHA1(2e1a30c20199461fd876849f7563fef1d9a80c2d) )
273273   ROM_LOAD16_BYTE("1.18f",   0x0e0000, 0x10000, CRC(8e7b15cc) SHA1(7e4766953c1adf04be18207a2aa6f5e861ea5f6c) )
274274   ROM_LOAD16_BYTE("3.21f",   0x0e0001, 0x10000, CRC(e784b1fa) SHA1(3f41d31e0b36b9a2fab5e9998bb4146dfa0a97eb) )
275275
276   ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */
276   ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
277277   ROM_LOAD16_BYTE("5.6bh",   0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) )
278278   ROM_LOAD16_BYTE("6.9b",    0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) )
279279
r244775r244776
314314ROM_END
315315
316316ROM_START( leadang )
317   ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */
317   ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
318318   ROM_LOAD16_BYTE("2.18h",   0x0c0000, 0x10000, CRC(611247e0) SHA1(1b9ad50f67ba3a3a9e5a0d6e33f4d4be2fc20446) ) // sldh
319319   ROM_LOAD16_BYTE("4.22h",   0x0c0001, 0x10000, CRC(348c1201) SHA1(277dd77dcbc950299de0fd56a4f66db8f90752ad) ) // sldh
320320   ROM_LOAD16_BYTE("1.18f",   0x0e0000, 0x10000, CRC(fb952d71) SHA1(c6578cddf019872e6005c3a9e8e3e024d17d8c6e) ) // sldh
321321   ROM_LOAD16_BYTE("3.22f",   0x0e0001, 0x10000, CRC(2271c6df) SHA1(774a92bb698606e58d0c74ea07d7eaecf766dddf) )
322322
323   ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */
323   ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
324324   ROM_LOAD16_BYTE("5.6b",    0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) )
325325   ROM_LOAD16_BYTE("6.9b",    0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) )
326326
r244775r244776
361361ROM_END
362362
363363ROM_START( ghunter )
364   ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */
364   ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
365365   ROM_LOAD16_BYTE("ggh-2.h18",   0x0c0000, 0x10000, CRC(7ccc6fee) SHA1(bccc283d82f080157f0521457b04fdd1d63caafe) )
366366   ROM_LOAD16_BYTE("ggh-4.h22",   0x0c0001, 0x10000, CRC(d1f23ad7) SHA1(2668729af797ccab52ac2bf519d43ab2fa9e54ce) )
367367   ROM_LOAD16_BYTE("ggh-1.f18",   0x0e0000, 0x10000, CRC(0d6ff111) SHA1(209d26170446b43d1d463737b447e30aaca614a7) )
368368   ROM_LOAD16_BYTE("ggh-3.f22",   0x0e0001, 0x10000, CRC(66dec38d) SHA1(78dd3143265c3da90d1a0ab2c4f42b4e32716af8) )
369369
370   ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */
370   ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
371371   ROM_LOAD16_BYTE("ggh-5.b6",   0x0e0000, 0x10000, CRC(1f612f3b) SHA1(71840fa0e988828a819d371f082ce31d5a5e3a30) )
372372   ROM_LOAD16_BYTE("ggh-6.b10",  0x0e0001, 0x10000, CRC(63e18e56) SHA1(5183d0909a7c795e76540723fb710a5a75730298) )
373373
r244775r244776
428428
429429/* Game Drivers */
430430
431GAME( 1988, deadang, 0,       deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", 0 )
432GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", 0 )
433GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter (Spain)", 0 )
431GAME( 1988, deadang, 0,       deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", GAME_SUPPORTS_SAVE )
432GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", GAME_SUPPORTS_SAVE )
433GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter (Spain)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/cabal.h
r244775r244776
66public:
77   cabal_state(const machine_config &mconfig, device_type type, const char *tag)
88      : driver_device(mconfig, type, tag),
9      m_spriteram(*this, "spriteram"),
10      m_colorram(*this, "colorram"),
11      m_videoram(*this, "videoram"),
129      m_maincpu(*this, "maincpu"),
1310      m_audiocpu(*this, "audiocpu"),
1411      m_seibu_sound(*this, "seibu_sound"),
r244775r244776
1714      m_msm1(*this, "msm1"),
1815      m_msm2(*this, "msm2"),
1916      m_gfxdecode(*this, "gfxdecode"),
20      m_palette(*this, "palette") { }
17      m_palette(*this, "palette"),
18      m_spriteram(*this, "spriteram"),
19      m_colorram(*this, "colorram"),
20      m_videoram(*this, "videoram") { }
2121
22   required_shared_ptr<UINT16> m_spriteram;
23   required_shared_ptr<UINT16> m_colorram;
24   required_shared_ptr<UINT16> m_videoram;
25
2622   required_device<cpu_device> m_maincpu;
2723   required_device<cpu_device> m_audiocpu;
2824   optional_device<seibu_sound_device> m_seibu_sound;
r244775r244776
3329   required_device<gfxdecode_device> m_gfxdecode;
3430   required_device<palette_device> m_palette;
3531
32   required_shared_ptr<UINT16> m_spriteram;
33   required_shared_ptr<UINT16> m_colorram;
34   required_shared_ptr<UINT16> m_videoram;
35
3636   tilemap_t *m_background_layer;
3737   tilemap_t *m_text_layer;
3838   int m_sound_command1;
3939   int m_sound_command2;
4040   int m_last[4];
41   DECLARE_WRITE16_MEMBER(cabalbl_sndcmd_w);
41   
42   // common
43   DECLARE_WRITE16_MEMBER(flipscreen_w);
44   DECLARE_WRITE16_MEMBER(background_videoram_w);
45   DECLARE_WRITE16_MEMBER(text_videoram_w);
46
47   // cabal specific
4248   DECLARE_WRITE16_MEMBER(track_reset_w);
4349   DECLARE_READ16_MEMBER(track_r);
44   DECLARE_WRITE16_MEMBER(cabal_sound_irq_trigger_word_w);
50   DECLARE_WRITE16_MEMBER(sound_irq_trigger_word_w);
51
52   // cabalbl specific
53   DECLARE_WRITE16_MEMBER(cabalbl_sndcmd_w);
4554   DECLARE_WRITE16_MEMBER(cabalbl_sound_irq_trigger_word_w);
4655   DECLARE_READ8_MEMBER(cabalbl_snd2_r);
4756   DECLARE_READ8_MEMBER(cabalbl_snd1_r);
4857   DECLARE_WRITE8_MEMBER(cabalbl_coin_w);
49   DECLARE_WRITE16_MEMBER(cabal_flipscreen_w);
50   DECLARE_WRITE16_MEMBER(cabal_background_videoram16_w);
51   DECLARE_WRITE16_MEMBER(cabal_text_videoram16_w);
5258   DECLARE_WRITE8_MEMBER(cabalbl_1_adpcm_w);
5359   DECLARE_WRITE8_MEMBER(cabalbl_2_adpcm_w);
60   
5461   DECLARE_DRIVER_INIT(cabal);
5562   DECLARE_DRIVER_INIT(cabalbl2);
63   DECLARE_MACHINE_START(cabal);
64   DECLARE_MACHINE_START(cabalbl);
65   DECLARE_MACHINE_RESET(cabalbl);
66   virtual void video_start();
67   
5668   TILE_GET_INFO_MEMBER(get_back_tile_info);
5769   TILE_GET_INFO_MEMBER(get_text_tile_info);
58   virtual void video_start();
59   DECLARE_MACHINE_RESET(cabalbl);
60   UINT32 screen_update_cabal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
70   
71   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6172   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
73   
6274   void seibu_sound_bootleg(const char *cpu,int length);
6375};
trunk/src/mame/includes/deadang.h
r244775r244776
55public:
66   deadang_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_spriteram(*this, "spriteram"),
9      m_videoram(*this, "videoram"),
10      m_scroll_ram(*this, "scroll_ram"),
11      m_video_data(*this, "video_data"),
128      m_maincpu(*this, "maincpu"),
139      m_subcpu(*this, "sub"),
1410      m_seibu_sound(*this, "seibu_sound"),
1511      m_adpcm1(*this, "adpcm1"),
1612      m_adpcm2(*this, "adpcm2"),
1713      m_gfxdecode(*this, "gfxdecode"),
18      m_palette(*this, "palette") { }
14      m_palette(*this, "palette"),
15      m_spriteram(*this, "spriteram"),
16      m_videoram(*this, "videoram"),
17      m_scroll_ram(*this, "scroll_ram"),
18      m_video_data(*this, "video_data") { }
1919
20   required_shared_ptr<UINT16> m_spriteram;
21   required_shared_ptr<UINT16> m_videoram;
22   required_shared_ptr<UINT16> m_scroll_ram;
23   required_shared_ptr<UINT16> m_video_data;
24
2520   required_device<cpu_device> m_maincpu;
2621   required_device<cpu_device> m_subcpu;
2722   required_device<seibu_sound_device> m_seibu_sound;
2823   required_device<seibu_adpcm_device> m_adpcm1;
2924   required_device<seibu_adpcm_device> m_adpcm2;
30
3125   required_device<gfxdecode_device> m_gfxdecode;
3226   required_device<palette_device> m_palette;
3327
28   required_shared_ptr<UINT16> m_spriteram;
29   required_shared_ptr<UINT16> m_videoram;
30   required_shared_ptr<UINT16> m_scroll_ram;
31   required_shared_ptr<UINT16> m_video_data;
32
3433   tilemap_t *m_pf3_layer;
3534   tilemap_t *m_pf2_layer;
3635   tilemap_t *m_pf1_layer;
3736   tilemap_t *m_text_layer;
38   int m_deadangle_tilebank;
39   int m_deadangle_oldtilebank;
37   int m_tilebank;
38   int m_oldtilebank;
4039
40   DECLARE_WRITE16_MEMBER(foreground_w);
41   DECLARE_WRITE16_MEMBER(text_w);
42   DECLARE_WRITE16_MEMBER(bank_w);
4143   DECLARE_READ16_MEMBER(ghunter_trackball_low_r);
4244   DECLARE_READ16_MEMBER(ghunter_trackball_high_r);
43   DECLARE_WRITE16_MEMBER(deadang_foreground_w);
44   DECLARE_WRITE16_MEMBER(deadang_text_w);
45   DECLARE_WRITE16_MEMBER(deadang_bank_w);
45
4646   DECLARE_DRIVER_INIT(deadang);
4747   DECLARE_DRIVER_INIT(ghunter);
48   virtual void video_start();
49
4850   TILEMAP_MAPPER_MEMBER(bg_scan);
4951   TILE_GET_INFO_MEMBER(get_pf3_tile_info);
5052   TILE_GET_INFO_MEMBER(get_pf2_tile_info);
5153   TILE_GET_INFO_MEMBER(get_pf1_tile_info);
5254   TILE_GET_INFO_MEMBER(get_text_tile_info);
53   virtual void video_start();
54   UINT32 screen_update_deadang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
55   TIMER_DEVICE_CALLBACK_MEMBER(deadang_main_scanline);
56   TIMER_DEVICE_CALLBACK_MEMBER(deadang_sub_scanline);
55
56   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5757   void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
58
59   TIMER_DEVICE_CALLBACK_MEMBER(main_scanline);
60   TIMER_DEVICE_CALLBACK_MEMBER(sub_scanline);
5861};
trunk/src/mame/video/cabal.c
r244775r244776
11/***************************************************************************
22
3  video.c
3  cabal.c
44
55  Functions to emulate the video hardware of the machine.
66
r244775r244776
4848
4949/**************************************************************************/
5050
51WRITE16_MEMBER(cabal_state::cabal_flipscreen_w)
51WRITE16_MEMBER(cabal_state::flipscreen_w)
5252{
5353   if (ACCESSING_BITS_0_7)
5454   {
r244775r244776
6060   }
6161}
6262
63WRITE16_MEMBER(cabal_state::cabal_background_videoram16_w)
63WRITE16_MEMBER(cabal_state::background_videoram_w)
6464{
6565   COMBINE_DATA(&m_videoram[offset]);
6666   m_background_layer->mark_tile_dirty(offset);
6767}
6868
69WRITE16_MEMBER(cabal_state::cabal_text_videoram16_w)
69WRITE16_MEMBER(cabal_state::text_videoram_w)
7070{
7171   COMBINE_DATA(&m_colorram[offset]);
7272   m_text_layer->mark_tile_dirty(offset);
r244775r244776
9797void cabal_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
9898{
9999   int offs,data0,data1,data2;
100   UINT16 *spriteram16 = m_spriteram;
101
102100   for( offs = m_spriteram.bytes()/2 - 4; offs >= 0; offs -= 4 )
103101   {
104      data0 = spriteram16[offs];
105      data1 = spriteram16[offs+1];
106      data2 = spriteram16[offs+2];
102      data0 = m_spriteram[offs];
103      data1 = m_spriteram[offs+1];
104      data2 = m_spriteram[offs+2];
107105
108106      if( data0 & 0x100 )
109107      {
r244775r244776
134132}
135133
136134
137UINT32 cabal_state::screen_update_cabal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
135UINT32 cabal_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
138136{
139137   m_background_layer->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
140138   draw_sprites(bitmap,cliprect);
trunk/src/mame/video/deadang.c
r244775r244776
44
55/******************************************************************************/
66
7WRITE16_MEMBER(deadang_state::deadang_foreground_w)
7WRITE16_MEMBER(deadang_state::foreground_w)
88{
99   COMBINE_DATA(&m_video_data[offset]);
1010   m_pf1_layer->mark_tile_dirty(offset );
1111}
1212
13WRITE16_MEMBER(deadang_state::deadang_text_w)
13WRITE16_MEMBER(deadang_state::text_w)
1414{
15   UINT16 *videoram = m_videoram;
16   COMBINE_DATA(&videoram[offset]);
15   COMBINE_DATA(&m_videoram[offset]);
1716   m_text_layer->mark_tile_dirty(offset );
1817}
1918
20WRITE16_MEMBER(deadang_state::deadang_bank_w)
19WRITE16_MEMBER(deadang_state::bank_w)
2120{
2221   if (ACCESSING_BITS_0_7)
2322   {
24      m_deadangle_tilebank = data&1;
25      if (m_deadangle_tilebank!=m_deadangle_oldtilebank)
23      m_tilebank = data&1;
24      if (m_tilebank!=m_oldtilebank)
2625      {
27         m_deadangle_oldtilebank = m_deadangle_tilebank;
26         m_oldtilebank = m_tilebank;
2827         m_pf1_layer->mark_all_dirty();
2928      }
3029   }
r244775r244776
5756   int color=tile >> 12;
5857   tile=tile&0xfff;
5958
60   SET_TILE_INFO_MEMBER(2,tile+m_deadangle_tilebank*0x1000,color,0);
59   SET_TILE_INFO_MEMBER(2,tile+m_tilebank*0x1000,color,0);
6160}
6261
6362TILE_GET_INFO_MEMBER(deadang_state::get_text_tile_info)
6463{
65   UINT16 *videoram = m_videoram;
66   int tile=(videoram[tile_index] & 0xff) | ((videoram[tile_index] >> 6) & 0x300);
67   int color=(videoram[tile_index] >> 8)&0xf;
64   int tile=(m_videoram[tile_index] & 0xff) | ((m_videoram[tile_index] >> 6) & 0x300);
65   int color=(m_videoram[tile_index] >> 8)&0xf;
6866
6967   SET_TILE_INFO_MEMBER(0,tile,color,0);
7068}
r244775r244776
7977   m_pf2_layer->set_transparent_pen(15);
8078   m_pf1_layer->set_transparent_pen(15);
8179   m_text_layer->set_transparent_pen(15);
80   
81   save_item(NAME(m_tilebank));
82   save_item(NAME(m_oldtilebank));
8283}
8384
8485void deadang_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
8586{
86   UINT16 *spriteram16 = m_spriteram;
8787   int offs,fx,fy,x,y,color,sprite,pri;
8888
8989   for (offs = 0; offs<0x800/2; offs+=4)
9090   {
9191      /* Don't draw empty sprite table entries */
92      if ((spriteram16[offs+3] & 0xff00)!=0xf00) continue;
92      if ((m_spriteram[offs+3] & 0xff00)!=0xf00) continue;
9393
94      switch (spriteram16[offs+2]&0xc000) {
94      switch (m_spriteram[offs+2]&0xc000) {
9595      default:
9696      case 0xc000: pri=0; break; /* Unknown */
9797      case 0x8000: pri=0; break; /* Over all playfields */
r244775r244776
9999      case 0x0000: pri=0xf0|0xcc; break; /* Under middle playfield */
100100      }
101101
102      fx= spriteram16[offs+0]&0x2000;
103      fy= spriteram16[offs+0]&0x4000;
104      y = spriteram16[offs+0] & 0xff;
105      x = spriteram16[offs+2] & 0xff;
102      fx= m_spriteram[offs+0]&0x2000;
103      fy= m_spriteram[offs+0]&0x4000;
104      y = m_spriteram[offs+0] & 0xff;
105      x = m_spriteram[offs+2] & 0xff;
106106      if (fy) fy=0; else fy=1;
107      if (spriteram16[offs+2]&0x100) x=0-(0xff-x);
107      if (m_spriteram[offs+2]&0x100) x=0-(0xff-x);
108108
109      color = (spriteram16[offs+1]>>12)&0xf;
110      sprite = spriteram16[offs+1]&0xfff;
109      color = (m_spriteram[offs+1]>>12)&0xf;
110      sprite = m_spriteram[offs+1]&0xfff;
111111
112112      if (flip_screen()) {
113113         x=240-x;
r244775r244776
123123   }
124124}
125125
126UINT32 deadang_state::screen_update_deadang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
126UINT32 deadang_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
127127{
128128   /* Setup the tilemaps */
129129   m_pf3_layer->set_scrolly(0, ((m_scroll_ram[0x01]&0xf0)<<4)+((m_scroll_ram[0x02]&0x7f)<<1)+((m_scroll_ram[0x02]&0x80)>>7) );


Previous 199869 Revisions Next


© 1997-2024 The MAME Team