Previous 199869 Revisions Next

r24050 Wednesday 3rd July, 2013 at 08:09:32 UTC by hap
it needs ALWAYS_UPDATE and partial updates for collision detection
[src/mame/drivers]seabattl.c

trunk/src/mame/drivers/seabattl.c
r24049r24050
55driver by Mariusz Wojcieszek and David Haywood
66
77TODO:
8- collision detection
8- improve collision detection?
99- verify colors
1010- video timing
1111- discrete sound
r24049r24050
190190{
191191   m_colorram[offset] = data;
192192   m_bg_tilemap->mark_tile_dirty(offset);
193};
193}
194194
195195UINT32 seabattl_state::screen_update_seabattl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
196196{
r24049r24050
259259   // bit 0: m.obj - pvi-bkg
260260   // bit 1: pvi-bkg - src.sm.obj
261261   // bit 2: m.obj - src.sm.obj
262   // TODO: are these variables needed? int colx = -1, coly = -1;
263262   for (y = cliprect.min_y; y <= cliprect.max_y; y++)
264263   {
265264      for (x = cliprect.min_x; x <= cliprect.max_x; x++)
r24049r24050
299298void seabattl_state::video_start()
300299{
301300   machine().primary_screen->register_screen_bitmap(m_collision_bg);
302   m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(seabattl_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS,
303         8, 8, 32, 32);
301   m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(seabattl_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
304302   m_bg_tilemap->set_transparent_pen(0);
305303   machine().gfx[1]->set_colorbase(8);
306304   machine().gfx[2]->set_colorbase(24);
r24049r24050
333331
334332READ8_HANDLER(seabattl_state::seabattl_redc_r)
335333{
334   machine().primary_screen->update_partial(machine().primary_screen->vpos());
336335   return m_collision;
337};
336}
338337
339338WRITE8_MEMBER(seabattl_state::seabattl_wrtc_w)
340339{
r24049r24050
344343   // bit 3: inverse image
345344   output_set_lamp_value(0, BIT(data,4) );
346345   m_waveenable = BIT(data, 5);
347};
346}
348347
349348READ8_HANDLER(seabattl_state::seabattl_portd_r)
350349{
350   machine().primary_screen->update_partial(machine().primary_screen->vpos());
351351   m_collision = 0;
352352   return 0;
353};
353}
354354
355355WRITE8_HANDLER(seabattl_state::seabattl_portd_w )
356356{
357   machine().primary_screen->update_partial(machine().primary_screen->vpos());
357358   m_collision = 0;
358};
359}
359360
360361WRITE8_HANDLER(seabattl_state::sound_w )
361362{
r24049r24050
369370   // 5 - bomb
370371   // 6 - unused
371372   // 7 - unused
372};
373}
373374
374375WRITE8_HANDLER(seabattl_state::sound2_w )
375376{
r24049r24050
383384   // 5 - fall aircraft
384385   // 6 - unused
385386   // 7 - unused
386};
387}
387388
388389WRITE8_HANDLER(seabattl_state::time_display_w )
389390{
390391   m_digit5->a_w(data & 0x0f);
391392   m_digit4->a_w((data >> 4) & 0x0f);
392};
393}
393394
394395WRITE8_HANDLER(seabattl_state::score_display_w )
395396{
396397   m_digit3->a_w(data & 0x0f);
397398   m_digit2->a_w((data >> 4) & 0x0f);
398};
399}
399400
400401WRITE8_HANDLER(seabattl_state::score2_display_w )
401402{
402403   m_digit1->a_w(data & 0x0f);
403404   m_digit0->a_w((data >> 4) & 0x0f);
404};
405}
405406
406407READ8_HANDLER(seabattl_state::input_1e05_r)
407408{
r24049r24050
412413   val |= (BIT(dsw1,4) ? 4 : 0);
413414   val |= (BIT(dsw1,7) ? 8 : 0);
414415   return val;
415};
416}
416417
417418READ8_HANDLER(seabattl_state::input_1e06_r)
418419{
r24049r24050
425426   val |= (BIT(dsw1,6) ? 16 : 0);
426427   val |= (BIT(dsw1,7) ? 32 : 0);
427428   return val;
428};
429}
429430
430431READ8_HANDLER(seabattl_state::input_1e07_r)
431432{
r24049r24050
438439   val |= (BIT(dsw0,5) ? 16 : 0);
439440   val |= (BIT(dsw0,4) ? 32 : 0);
440441   return val;
441};
442}
442443
443444static INPUT_PORTS_START( seabattl )
444445   PORT_START("IN0")
r24049r24050
505506   PORT_DIPUNUSED( 0xe0, 0xe0 )
506507
507508   PORT_START("SENSE")
508   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
509   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
509510INPUT_PORTS_END
510511
511512void seabattl_state::machine_start()
r24049r24050
606607   MCFG_CPU_ADD("maincpu", S2650, 14318180/4/2)
607608   MCFG_CPU_PROGRAM_MAP(seabattl_map)
608609   MCFG_CPU_IO_MAP(seabattl_io_map)
609   MCFG_CPU_VBLANK_INT_DRIVER("screen", seabattl_state, seabattl_interrupt)
610   MCFG_CPU_VBLANK_INT_DRIVER("screen", seabattl_state, seabattl_interrupt)
610611
611612   MCFG_PALETTE_LENGTH(26)
612613
r24049r24050
622623   MCFG_DM9368_ADD("tm_unity", digit_time_unity_intf)
623624
624625   /* video hardware */
626   MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
625627   MCFG_SCREEN_ADD("screen", RASTER)
626628   MCFG_SCREEN_REFRESH_RATE(50)
627629   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
r24049r24050
633635   /* sound hardware */
634636   MCFG_SPEAKER_STANDARD_MONO("mono")
635637   MCFG_SOUND_ADD("s2636snd", S2636_SOUND, 0)
636   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
638   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
637639
638640   /* discrete sound */
639641MACHINE_CONFIG_END
r24049r24050
680682   ROM_LOAD( "seawawe.ic9",     0x0000, 0x0800, CRC(7e356dc5) SHA1(71d34fa39ff0b7d0fa6d32ba2b9dc0006a03d1bb) ) // identical to above set
681683ROM_END
682684
683GAME( 1980, seabattl,  0,               seabattl, seabattl, driver_device, 0, ROT0,  "Zaccaria", "Sea Battle (set 1)",                    GAME_NO_SOUND | GAME_NOT_WORKING )
684GAME( 1980, seabattla, seabattl,        seabattl, seabattl, driver_device, 0, ROT0,  "Zaccaria", "Sea Battle (set 2)",                    GAME_NO_SOUND | GAME_NOT_WORKING )
685GAME( 1980, seabattl,  0,        seabattl, seabattl, driver_device, 0, ROT0, "Zaccaria", "Sea Battle (set 1)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_NOT_WORKING )
686GAME( 1980, seabattla, seabattl, seabattl, seabattl, driver_device, 0, ROT0, "Zaccaria", "Sea Battle (set 2)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_NOT_WORKING )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team