23
23
static KONAMI_SETLINES_CALLBACK( rollerg_banking );
25
static WRITE8_HANDLER( rollerg_0010_w )
25
WRITE8_MEMBER(rollerg_state::rollerg_0010_w)
27
rollerg_state *state = space->machine().driver_data<rollerg_state>();
28
logerror("%04x: write %02x to 0010\n",cpu_get_pc(&space->device()), data);
27
logerror("%04x: write %02x to 0010\n",cpu_get_pc(&space.device()), data);
30
29
/* bits 0/1 are coin counters */
31
coin_counter_w(space->machine(), 0, data & 0x01);
32
coin_counter_w(space->machine(), 1, data & 0x02);
30
coin_counter_w(machine(), 0, data & 0x01);
31
coin_counter_w(machine(), 1, data & 0x02);
34
33
/* bit 2 enables 051316 ROM reading */
35
state->m_readzoomroms = data & 0x04;
34
m_readzoomroms = data & 0x04;
37
36
/* bit 5 enables 051316 wraparound */
38
k051316_wraparound_enable(state->m_k051316, data & 0x20);
37
k051316_wraparound_enable(m_k051316, data & 0x20);
40
39
/* other bits unknown */
43
static READ8_HANDLER( rollerg_k051316_r )
42
READ8_MEMBER(rollerg_state::rollerg_k051316_r)
45
rollerg_state *state = space->machine().driver_data<rollerg_state>();
47
if (state->m_readzoomroms)
48
return k051316_rom_r(state->m_k051316, offset);
46
return k051316_rom_r(m_k051316, offset);
50
return k051316_r(state->m_k051316, offset);
48
return k051316_r(m_k051316, offset);
53
51
static READ8_DEVICE_HANDLER( rollerg_sound_r )
57
55
return k053260_r(device, 2 + offset);
60
static WRITE8_HANDLER( soundirq_w )
58
WRITE8_MEMBER(rollerg_state::soundirq_w)
62
rollerg_state *state = space->machine().driver_data<rollerg_state>();
63
device_set_input_line_and_vector(state->m_audiocpu, 0, HOLD_LINE, 0xff);
60
device_set_input_line_and_vector(m_audiocpu, 0, HOLD_LINE, 0xff);
66
63
static TIMER_CALLBACK( nmi_callback )
69
66
device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, ASSERT_LINE);
72
static WRITE8_HANDLER( sound_arm_nmi_w )
69
WRITE8_MEMBER(rollerg_state::sound_arm_nmi_w)
74
rollerg_state *state = space->machine().driver_data<rollerg_state>();
75
device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, CLEAR_LINE);
76
space->machine().scheduler().timer_set(attotime::from_usec(50), FUNC(nmi_callback)); /* kludge until the K053260 is emulated correctly */
71
device_set_input_line(m_audiocpu, INPUT_LINE_NMI, CLEAR_LINE);
72
machine().scheduler().timer_set(attotime::from_usec(50), FUNC(nmi_callback)); /* kludge until the K053260 is emulated correctly */
79
static READ8_HANDLER( pip_r )
75
READ8_MEMBER(rollerg_state::pip_r)
84
static ADDRESS_MAP_START( rollerg_map, AS_PROGRAM, 8 )
80
static ADDRESS_MAP_START( rollerg_map, AS_PROGRAM, 8, rollerg_state )
85
81
AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w)
86
82
AM_RANGE(0x0020, 0x0020) AM_READWRITE(watchdog_reset_r,watchdog_reset_w)
87
AM_RANGE(0x0030, 0x0031) AM_DEVREADWRITE("k053260", rollerg_sound_r, k053260_w) /* K053260 */
83
AM_RANGE(0x0030, 0x0031) AM_DEVREADWRITE_LEGACY("k053260", rollerg_sound_r, k053260_w) /* K053260 */
88
84
AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w)
89
85
AM_RANGE(0x0050, 0x0050) AM_READ_PORT("P1")
90
86
AM_RANGE(0x0051, 0x0051) AM_READ_PORT("P2")
92
88
AM_RANGE(0x0053, 0x0053) AM_READ_PORT("DSW1")
93
89
AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSW2")
94
90
AM_RANGE(0x0061, 0x0061) AM_READ(pip_r) /* ????? */
95
AM_RANGE(0x0100, 0x010f) AM_DEVREADWRITE("k053252",k053252_r,k053252_w) /* 053252? */
96
AM_RANGE(0x0200, 0x020f) AM_DEVWRITE("k051316", k051316_ctrl_w)
97
AM_RANGE(0x0300, 0x030f) AM_DEVREADWRITE("k053244", k053244_r, k053244_w)
98
AM_RANGE(0x0800, 0x0fff) AM_READ(rollerg_k051316_r) AM_DEVWRITE("k051316", k051316_w)
99
AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("k053244", k053245_r, k053245_w)
100
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE_GENERIC(paletteram)
91
AM_RANGE(0x0100, 0x010f) AM_DEVREADWRITE_LEGACY("k053252",k053252_r,k053252_w) /* 053252? */
92
AM_RANGE(0x0200, 0x020f) AM_DEVWRITE_LEGACY("k051316", k051316_ctrl_w)
93
AM_RANGE(0x0300, 0x030f) AM_DEVREADWRITE_LEGACY("k053244", k053244_r, k053244_w)
94
AM_RANGE(0x0800, 0x0fff) AM_READ(rollerg_k051316_r) AM_DEVWRITE_LEGACY("k051316", k051316_w)
95
AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE_LEGACY("k053244", k053245_r, k053245_w)
96
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_be_w) AM_SHARE("paletteram")
101
97
AM_RANGE(0x2000, 0x3aff) AM_RAM
102
98
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
103
99
AM_RANGE(0x8000, 0xffff) AM_ROM
106
static ADDRESS_MAP_START( rollerg_sound_map, AS_PROGRAM, 8 )
102
static ADDRESS_MAP_START( rollerg_sound_map, AS_PROGRAM, 8, rollerg_state )
107
103
AM_RANGE(0x0000, 0x7fff) AM_ROM
108
104
AM_RANGE(0x8000, 0x87ff) AM_RAM
109
AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE("k053260", k053260_r,k053260_w)
110
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_r,ym3812_w)
105
AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r,k053260_w)
106
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym3812_r,ym3812_w)
111
107
AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
253
249
static MACHINE_START( rollerg )
255
251
rollerg_state *state = machine.driver_data<rollerg_state>();
256
UINT8 *ROM = machine.region("maincpu")->base();
252
UINT8 *ROM = state->memregion("maincpu")->base();
258
memory_configure_bank(machine, "bank1", 0, 6, &ROM[0x10000], 0x4000);
259
memory_configure_bank(machine, "bank1", 6, 2, &ROM[0x10000], 0x4000);
260
memory_set_bank(machine, "bank1", 0);
254
state->membank("bank1")->configure_entries(0, 6, &ROM[0x10000], 0x4000);
255
state->membank("bank1")->configure_entries(6, 2, &ROM[0x10000], 0x4000);
256
state->membank("bank1")->set_entry(0);
262
258
state->m_maincpu = machine.device("maincpu");
263
259
state->m_audiocpu = machine.device("audiocpu");