trunk/src/mame/includes/starfire.h
| r19070 | r19071 | |
| 1 | /*************************************************************************** |
| 1 | 2 | |
| 3 | Star Fire/Fire One system |
| 4 | |
| 5 | ***************************************************************************/ |
| 6 | |
| 2 | 7 | #define STARFIRE_MASTER_CLOCK (20000000) |
| 3 | 8 | #define STARFIRE_CPU_CLOCK (STARFIRE_MASTER_CLOCK / 8) |
| 4 | 9 | #define STARFIRE_PIXEL_CLOCK (STARFIRE_MASTER_CLOCK / 4) |
| r19070 | r19071 | |
| 14 | 19 | { |
| 15 | 20 | public: |
| 16 | 21 | starfire_state(const machine_config &mconfig, device_type type, const char *tag) |
| 17 | | : driver_device(mconfig, type, tag) , |
| 22 | : driver_device(mconfig, type, tag), |
| 18 | 23 | m_starfire_colorram(*this, "colorram"), |
| 19 | | m_starfire_videoram(*this, "videoram"){ } |
| 24 | m_starfire_videoram(*this, "videoram") |
| 25 | { } |
| 20 | 26 | |
| 21 | 27 | read8_delegate m_input_read; |
| 22 | 28 | |
| r19070 | r19071 | |
| 45 | 51 | virtual void video_start(); |
| 46 | 52 | UINT32 screen_update_starfire(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 47 | 53 | TIMER_CALLBACK_MEMBER(starfire_scanline_callback); |
| 54 | INTERRUPT_GEN_MEMBER(vblank_int); |
| 48 | 55 | }; |
trunk/src/mame/drivers/starfire.c
| r19070 | r19071 | |
| 57 | 57 | |
| 58 | 58 | WRITE8_MEMBER(starfire_state::starfire_scratch_w) |
| 59 | 59 | { |
| 60 | | |
| 61 | 60 | /* A12 and A3 select video control registers */ |
| 62 | 61 | if ((offset & 0x1008) == 0x1000) |
| 63 | 62 | { |
| r19070 | r19071 | |
| 69 | 68 | /* Sounds */ |
| 70 | 69 | m_fireone_select = (data & 0x8) ? 0 : 1; |
| 71 | 70 | break; |
| 71 | default: break; |
| 72 | 72 | } |
| 73 | 73 | } |
| 74 | 74 | |
| r19070 | r19071 | |
| 80 | 80 | |
| 81 | 81 | READ8_MEMBER(starfire_state::starfire_scratch_r) |
| 82 | 82 | { |
| 83 | | |
| 84 | 83 | /* A11 selects input ports */ |
| 85 | 84 | if (offset & 0x800) |
| 86 | 85 | return m_input_read(space, offset, 0xff); |
| r19070 | r19071 | |
| 204 | 203 | |
| 205 | 204 | PORT_START("STICKZ") /* IN4 */ /* throttle */ |
| 206 | 205 | PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_REVERSE |
| 206 | |
| 207 | PORT_START("NMI") |
| 208 | PORT_CONFNAME( 0x01, 0x01, "Jumper J6/4G: Enable NMI" ) |
| 209 | PORT_CONFSETTING( 0x00, DEF_STR( No ) ) |
| 210 | PORT_CONFSETTING( 0x01, DEF_STR( Yes ) ) |
| 207 | 211 | INPUT_PORTS_END |
| 208 | 212 | |
| 209 | 213 | |
| r19070 | r19071 | |
| 258 | 262 | * |
| 259 | 263 | *************************************/ |
| 260 | 264 | |
| 265 | INTERRUPT_GEN_MEMBER(starfire_state::vblank_int) |
| 266 | { |
| 267 | // starfire has a jumper for disabling NMI, used to do a complete RAM test |
| 268 | if (ioport("NMI")->read_safe(0x01)) |
| 269 | device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 270 | } |
| 271 | |
| 261 | 272 | static MACHINE_CONFIG_START( starfire, starfire_state ) |
| 262 | 273 | |
| 263 | 274 | /* basic machine hardware */ |
| 264 | 275 | MCFG_CPU_ADD("maincpu", Z80, STARFIRE_CPU_CLOCK) |
| 265 | 276 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 266 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", starfire_state, nmi_line_pulse) |
| 277 | MCFG_CPU_VBLANK_INT_DRIVER("screen", starfire_state, vblank_int) |
| 267 | 278 | |
| 268 | 279 | /* video hardware */ |
| 269 | 280 | MCFG_SCREEN_ADD("screen", RASTER) |
| 270 | 281 | MCFG_SCREEN_RAW_PARAMS(STARFIRE_PIXEL_CLOCK, STARFIRE_HTOTAL, STARFIRE_HBEND, STARFIRE_HBSTART, STARFIRE_VTOTAL, STARFIRE_VBEND, STARFIRE_VBSTART) |
| 271 | 282 | MCFG_SCREEN_UPDATE_DRIVER(starfire_state, screen_update_starfire) |
| 272 | 283 | |
| 273 | | |
| 274 | 284 | /* audio hardware */ |
| 275 | 285 | MACHINE_CONFIG_END |
| 276 | 286 | |
| r19070 | r19071 | |
| 371 | 381 | |
| 372 | 382 | DRIVER_INIT_MEMBER(starfire_state,starfire) |
| 373 | 383 | { |
| 374 | | |
| 375 | 384 | m_input_read = read8_delegate(FUNC(starfire_state::starfire_input_r),this); |
| 376 | 385 | } |
| 377 | 386 | |
| 378 | 387 | DRIVER_INIT_MEMBER(starfire_state,fireone) |
| 379 | 388 | { |
| 380 | | |
| 381 | 389 | m_input_read = read8_delegate(FUNC(starfire_state::fireone_input_r),this); |
| 382 | 390 | |
| 383 | 391 | /* register for state saving */ |
| r19070 | r19071 | |
| 394 | 402 | |
| 395 | 403 | GAME( 1979, starfire, 0, starfire, starfire, starfire_state, starfire, ROT0, "Exidy", "Star Fire (set 1)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
| 396 | 404 | GAME( 1979, starfirea,starfire, starfire, starfire, starfire_state, starfire, ROT0, "Exidy", "Star Fire (set 2)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
| 397 | | GAME( 1979, fireone, 0, starfire, fireone, starfire_state, fireone, ROT0, "Exidy", "Fire One", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
| 405 | GAME( 1979, fireone, 0, starfire, fireone, starfire_state, fireone, ROT0, "Exidy", "Fire One", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
| 398 | 406 | GAME( 1979, starfir2, 0, starfire, starfire, starfire_state, starfire, ROT0, "Exidy", "Star Fire 2", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |