216
static WRITE8_HANDLER( m63_videoram_w )
218
m63_state *state = space->machine().driver_data<m63_state>();
220
state->m_videoram[offset] = data;
221
state->m_bg_tilemap->mark_tile_dirty(offset);
224
static WRITE8_HANDLER( m63_colorram_w )
226
m63_state *state = space->machine().driver_data<m63_state>();
228
state->m_colorram[offset] = data;
229
state->m_bg_tilemap->mark_tile_dirty(offset);
232
static WRITE8_HANDLER( m63_videoram2_w )
234
m63_state *state = space->machine().driver_data<m63_state>();
236
state->m_videoram2[offset] = data;
237
state->m_fg_tilemap->mark_tile_dirty(offset);
240
static WRITE8_HANDLER( m63_palbank_w )
242
m63_state *state = space->machine().driver_data<m63_state>();
244
if (state->m_pal_bank != (data & 0x01))
246
state->m_pal_bank = data & 0x01;
247
state->m_bg_tilemap->mark_all_dirty();
251
static WRITE8_HANDLER( m63_flipscreen_w )
253
if (flip_screen_get(space->machine()) != (~data & 0x01))
255
flip_screen_set(space->machine(), ~data & 0x01);
256
space->machine().tilemap().mark_all_dirty();
260
static WRITE8_HANDLER( fghtbskt_flipscreen_w )
262
m63_state *state = space->machine().driver_data<m63_state>();
264
flip_screen_set(space->machine(), data);
265
state->m_fg_flag = flip_screen_get(space->machine()) ? TILE_FLIPX : 0;
237
WRITE8_MEMBER(m63_state::m63_videoram_w)
240
m_videoram[offset] = data;
241
m_bg_tilemap->mark_tile_dirty(offset);
244
WRITE8_MEMBER(m63_state::m63_colorram_w)
247
m_colorram[offset] = data;
248
m_bg_tilemap->mark_tile_dirty(offset);
251
WRITE8_MEMBER(m63_state::m63_videoram2_w)
254
m_videoram2[offset] = data;
255
m_fg_tilemap->mark_tile_dirty(offset);
258
WRITE8_MEMBER(m63_state::m63_palbank_w)
261
if (m_pal_bank != (data & 0x01))
263
m_pal_bank = data & 0x01;
264
m_bg_tilemap->mark_all_dirty();
268
WRITE8_MEMBER(m63_state::m63_flipscreen_w)
270
if (flip_screen() != (~data & 0x01))
272
flip_screen_set(~data & 0x01);
273
machine().tilemap().mark_all_dirty();
277
WRITE8_MEMBER(m63_state::fghtbskt_flipscreen_w)
280
flip_screen_set(data);
281
m_fg_flag = flip_screen() ? TILE_FLIPX : 0;
357
static WRITE8_HANDLER( coin_w )
359
coin_counter_w(space->machine(), offset, data & 0x01);
362
static WRITE8_HANDLER( snd_irq_w )
364
m63_state *state = space->machine().driver_data<m63_state>();
365
device_set_input_line(state->m_soundcpu, 0, ASSERT_LINE);
366
space->machine().scheduler().synchronize();
369
static WRITE8_HANDLER( snddata_w )
371
m63_state *state = space->machine().driver_data<m63_state>();
373
if ((state->m_p2 & 0xf0) == 0xe0)
374
ay8910_address_w(state->m_ay1, 0, offset);
375
else if ((state->m_p2 & 0xf0) == 0xa0)
376
ay8910_data_w(state->m_ay1, 0, offset);
377
else if (state->m_ay2 != NULL && (state->m_p1 & 0xe0) == 0x60)
378
ay8910_address_w(state->m_ay2, 0, offset);
379
else if (state->m_ay2 != NULL && (state->m_p1 & 0xe0) == 0x40)
380
ay8910_data_w(state->m_ay2, 0, offset);
381
else if ((state->m_p2 & 0xf0) == 0x70 )
382
state->m_sound_status = offset;
385
static WRITE8_HANDLER( p1_w )
387
m63_state *state = space->machine().driver_data<m63_state>();
391
static WRITE8_HANDLER( p2_w )
393
m63_state *state = space->machine().driver_data<m63_state>();
396
if((state->m_p2 & 0xf0) == 0x50)
373
WRITE8_MEMBER(m63_state::coin_w)
375
coin_counter_w(machine(), offset, data & 0x01);
378
WRITE8_MEMBER(m63_state::snd_irq_w)
380
device_set_input_line(m_soundcpu, 0, ASSERT_LINE);
381
machine().scheduler().synchronize();
384
WRITE8_MEMBER(m63_state::snddata_w)
387
if ((m_p2 & 0xf0) == 0xe0)
388
ay8910_address_w(m_ay1, 0, offset);
389
else if ((m_p2 & 0xf0) == 0xa0)
390
ay8910_data_w(m_ay1, 0, offset);
391
else if (m_ay2 != NULL && (m_p1 & 0xe0) == 0x60)
392
ay8910_address_w(m_ay2, 0, offset);
393
else if (m_ay2 != NULL && (m_p1 & 0xe0) == 0x40)
394
ay8910_data_w(m_ay2, 0, offset);
395
else if ((m_p2 & 0xf0) == 0x70 )
396
m_sound_status = offset;
399
WRITE8_MEMBER(m63_state::p1_w)
404
WRITE8_MEMBER(m63_state::p2_w)
408
if((m_p2 & 0xf0) == 0x50)
398
device_set_input_line(state->m_soundcpu, 0, CLEAR_LINE);
410
device_set_input_line(m_soundcpu, 0, CLEAR_LINE);
402
static READ8_HANDLER( snd_status_r )
414
READ8_MEMBER(m63_state::snd_status_r)
404
m63_state *state = space->machine().driver_data<m63_state>();
405
return state->m_sound_status;
416
return m_sound_status;
408
static READ8_HANDLER( irq_r )
419
READ8_MEMBER(m63_state::irq_r)
410
m63_state *state = space->machine().driver_data<m63_state>();
412
if (state->m_sound_irq)
414
state->m_sound_irq = 0;
420
static READ8_HANDLER( snddata_r )
430
READ8_MEMBER(m63_state::snddata_r)
422
m63_state *state = space->machine().driver_data<m63_state>();
423
switch (state->m_p2 & 0xf0)
425
case 0x60: return soundlatch_r(space, 0); ;
426
case 0x70: return space->machine().region("user1")->base()[((state->m_p1 & 0x1f) << 8) | offset];
434
case 0x60: return soundlatch_byte_r(space, 0); ;
435
case 0x70: return memregion("user1")->base()[((m_p1 & 0x1f) << 8) | offset];
431
static WRITE8_HANDLER( fghtbskt_samples_w )
440
WRITE8_MEMBER(m63_state::fghtbskt_samples_w)
433
m63_state *state = space->machine().driver_data<m63_state>();
436
sample_start_raw(state->m_samples, 0, state->m_samplebuf + ((data & 0xf0) << 8), 0x2000, 8000, 0);
444
m_samples->start_raw(0, m_samplebuf + ((data & 0xf0) << 8), 0x2000, 8000);
439
static WRITE8_HANDLER( nmi_mask_w )
447
WRITE8_MEMBER(m63_state::nmi_mask_w)
441
m63_state *state = space->machine().driver_data<m63_state>();
443
state->m_nmi_mask = data & 1;
450
m_nmi_mask = data & 1;
447
static ADDRESS_MAP_START( m63_map, AS_PROGRAM, 8 )
454
static ADDRESS_MAP_START( m63_map, AS_PROGRAM, 8, m63_state )
448
455
AM_RANGE(0x0000, 0xbfff) AM_ROM
449
456
AM_RANGE(0xd000, 0xdfff) AM_RAM
450
457
AM_RANGE(0xe000, 0xe1ff) AM_RAM
451
AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE_SIZE_MEMBER(m63_state, m_spriteram, m_spriteram_size)
452
AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_BASE_MEMBER(m63_state, m_scrollram)
453
AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE_MEMBER(m63_state, m_videoram2)
454
AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_BASE_MEMBER(m63_state, m_videoram)
455
AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_BASE_MEMBER(m63_state, m_colorram)
458
AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_SHARE("spriteram")
459
AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_SHARE("scrollram")
460
AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_SHARE("videoram2")
461
AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_SHARE("videoram")
462
AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_SHARE("colorram")
456
463
AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_mask_w)
457
464
AM_RANGE(0xf002, 0xf002) AM_WRITE(m63_flipscreen_w)
458
465
AM_RANGE(0xf003, 0xf003) AM_WRITE(m63_palbank_w)
459
466
AM_RANGE(0xf006, 0xf007) AM_WRITE(coin_w)
460
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_WRITE(soundlatch_w)
467
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_WRITE(soundlatch_byte_w)
461
468
AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITENOP /* continues game when in stop mode (cleared by NMI handler) */
462
469
AM_RANGE(0xf802, 0xf802) AM_READ_PORT("DSW1")
463
470
AM_RANGE(0xf803, 0xf803) AM_WRITE(snd_irq_w)
464
471
AM_RANGE(0xf806, 0xf806) AM_READ_PORT("DSW2")
467
static ADDRESS_MAP_START( fghtbskt_map, AS_PROGRAM, 8 )
474
static ADDRESS_MAP_START( fghtbskt_map, AS_PROGRAM, 8, m63_state )
468
475
AM_RANGE(0x0000, 0x5fff) AM_ROM
469
476
AM_RANGE(0x8000, 0xbfff) AM_ROM
470
477
AM_RANGE(0xc000, 0xc7ff) AM_RAM
471
478
AM_RANGE(0xd000, 0xd1ff) AM_RAM
472
AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_BASE_SIZE_MEMBER(m63_state, m_spriteram, m_spriteram_size)
473
AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_BASE_MEMBER(m63_state, m_scrollram)
474
AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE_MEMBER(m63_state, m_videoram2)
475
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_BASE_MEMBER(m63_state, m_videoram)
476
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(m63_colorram_w) AM_BASE_MEMBER(m63_state, m_colorram)
479
AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_SHARE("spriteram")
480
AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_SHARE("scrollram")
481
AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_SHARE("videoram2")
482
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_SHARE("videoram")
483
AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(m63_colorram_w) AM_SHARE("colorram")
477
484
AM_RANGE(0xf000, 0xf000) AM_READ(snd_status_r)
478
485
AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P1")
479
486
AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2")
480
487
AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW")
481
488
AM_RANGE(0xf000, 0xf000) AM_WRITE(snd_irq_w)
482
489
AM_RANGE(0xf001, 0xf001) AM_WRITENOP
483
AM_RANGE(0xf002, 0xf002) AM_WRITE(soundlatch_w)
490
AM_RANGE(0xf002, 0xf002) AM_WRITE(soundlatch_byte_w)
484
491
AM_RANGE(0xf800, 0xf800) AM_WRITENOP
485
492
AM_RANGE(0xf801, 0xf801) AM_WRITE(nmi_mask_w)
486
493
AM_RANGE(0xf802, 0xf802) AM_WRITE(fghtbskt_flipscreen_w)
537
544
PORT_DIPSETTING( 0x04, "x1.2" )
538
545
PORT_DIPSETTING( 0x08, "x1.4" )
539
546
PORT_DIPSETTING( 0x0c, "x1.6" )
540
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:!5,!6") PORT_CONDITION("DSW1",0x04,PORTCOND_EQUALS,0x04) /* coin mode 2 */
547
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:!5,!6") PORT_CONDITION("DSW1",0x04,EQUALS,0x04) /* coin mode 2 */
541
548
PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )
542
549
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
543
550
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
544
551
PORT_DIPSETTING( 0x30, DEF_STR( Free_Play ) ) /* Not documented */
545
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:!7,!8") PORT_CONDITION("DSW1",0x04,PORTCOND_EQUALS,0x04) /* coin mode 2 */
552
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:!7,!8") PORT_CONDITION("DSW1",0x04,EQUALS,0x04) /* coin mode 2 */
546
553
PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
547
554
PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C ) )
548
555
PORT_DIPSETTING( 0x80, DEF_STR( 1C_5C ) )
549
556
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_6C ) )
550
PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!5,!6,!7,!8") PORT_CONDITION("DSW1",0x04,PORTCOND_EQUALS,0x00) /* coin mode 1 */
557
PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:!5,!6,!7,!8") PORT_CONDITION("DSW1",0x04,EQUALS,0x00) /* coin mode 1 */
551
558
PORT_DIPSETTING( 0x60, DEF_STR( 7C_1C ) )
552
559
PORT_DIPSETTING( 0x50, DEF_STR( 6C_1C ) )
553
560
PORT_DIPSETTING( 0x40, DEF_STR( 5C_1C ) )