36
static WRITE8_HANDLER( ddribble_bankswitch_w )
38
memory_set_bank(space->machine(), "bank1", data & 0x0f);
42
static READ8_HANDLER( ddribble_sharedram_r )
44
ddribble_state *state = space->machine().driver_data<ddribble_state>();
45
return state->m_sharedram[offset];
48
static WRITE8_HANDLER( ddribble_sharedram_w )
50
ddribble_state *state = space->machine().driver_data<ddribble_state>();
51
state->m_sharedram[offset] = data;
54
static READ8_HANDLER( ddribble_snd_sharedram_r )
56
ddribble_state *state = space->machine().driver_data<ddribble_state>();
57
return state->m_snd_sharedram[offset];
60
static WRITE8_HANDLER( ddribble_snd_sharedram_w )
62
ddribble_state *state = space->machine().driver_data<ddribble_state>();
63
state->m_snd_sharedram[offset] = data;
66
static WRITE8_HANDLER( ddribble_coin_counter_w )
36
WRITE8_MEMBER(ddribble_state::ddribble_bankswitch_w)
38
membank("bank1")->set_entry(data & 0x0f);
42
READ8_MEMBER(ddribble_state::ddribble_sharedram_r)
44
return m_sharedram[offset];
47
WRITE8_MEMBER(ddribble_state::ddribble_sharedram_w)
49
m_sharedram[offset] = data;
52
READ8_MEMBER(ddribble_state::ddribble_snd_sharedram_r)
54
return m_snd_sharedram[offset];
57
WRITE8_MEMBER(ddribble_state::ddribble_snd_sharedram_w)
59
m_snd_sharedram[offset] = data;
62
WRITE8_MEMBER(ddribble_state::ddribble_coin_counter_w)
68
64
/* b4-b7: unused */
69
65
/* b2-b3: unknown */
70
66
/* b1: coin counter 2 */
71
67
/* b0: coin counter 1 */
72
coin_counter_w(space->machine(), 0,(data) & 0x01);
73
coin_counter_w(space->machine(), 1,(data >> 1) & 0x01);
68
coin_counter_w(machine(), 0,(data) & 0x01);
69
coin_counter_w(machine(), 1,(data >> 1) & 0x01);
76
72
static READ8_DEVICE_HANDLER( ddribble_vlm5030_busy_r )
116
static ADDRESS_MAP_START( cpu0_map, AS_PROGRAM, 8 )
112
static ADDRESS_MAP_START( cpu0_map, AS_PROGRAM, 8, ddribble_state )
117
113
AM_RANGE(0x0000, 0x0004) AM_WRITE(K005885_0_w) /* video registers (005885 #1) */
118
114
AM_RANGE(0x0800, 0x0804) AM_WRITE(K005885_1_w) /* video registers (005885 #2) */
119
AM_RANGE(0x1800, 0x187f) AM_RAM AM_BASE_MEMBER(ddribble_state, m_paletteram) /* palette */
120
AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(ddribble_fg_videoram_w) AM_BASE_MEMBER(ddribble_state, m_fg_videoram) /* Video RAM 1 */
121
AM_RANGE(0x3000, 0x3fff) AM_RAM AM_BASE_MEMBER(ddribble_state, m_spriteram_1) /* Object RAM 1 */
122
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(ddribble_state, m_sharedram) /* shared RAM with CPU #1 */
123
AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(ddribble_bg_videoram_w) AM_BASE_MEMBER(ddribble_state, m_bg_videoram) /* Video RAM 2 */
124
AM_RANGE(0x7000, 0x7fff) AM_RAM AM_BASE_MEMBER(ddribble_state, m_spriteram_2) /* Object RAM 2 */
115
AM_RANGE(0x1800, 0x187f) AM_RAM AM_SHARE("paletteram") /* palette */
116
AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(ddribble_fg_videoram_w) AM_SHARE("fg_videoram") /* Video RAM 1 */
117
AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram_1") /* Object RAM 1 */
118
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("sharedram") /* shared RAM with CPU #1 */
119
AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(ddribble_bg_videoram_w) AM_SHARE("bg_videoram") /* Video RAM 2 */
120
AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("spriteram_2") /* Object RAM 2 */
125
121
AM_RANGE(0x8000, 0x8000) AM_WRITE(ddribble_bankswitch_w) /* bankswitch control */
126
122
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* banked ROM */
127
123
AM_RANGE(0xa000, 0xffff) AM_ROM /* ROM */
130
static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM, 8 )
126
static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM, 8, ddribble_state )
131
127
AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ddribble_sharedram_r, ddribble_sharedram_w) /* shared RAM with CPU #0 */
132
128
AM_RANGE(0x2000, 0x27ff) AM_READWRITE(ddribble_snd_sharedram_r, ddribble_snd_sharedram_w) /* shared RAM with CPU #2 */
133
129
AM_RANGE(0x2800, 0x2800) AM_READ_PORT("DSW1")
141
137
AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
144
static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8 )
145
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_MEMBER(ddribble_state, m_snd_sharedram) /* shared RAM with CPU #1 */
146
AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_r, ym2203_w) /* YM2203 */
147
AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("vlm", vlm5030_data_w) /* Speech data */
140
static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8, ddribble_state )
141
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("snd_sharedram") /* shared RAM with CPU #1 */
142
AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w) /* YM2203 */
143
AM_RANGE(0x3000, 0x3000) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w) /* Speech data */
148
144
AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
251
247
static MACHINE_START( ddribble )
253
249
ddribble_state *state = machine.driver_data<ddribble_state>();
254
UINT8 *ROM = machine.region("maincpu")->base();
255
memory_configure_bank(machine, "bank1", 0, 5, &ROM[0x10000], 0x2000);
250
UINT8 *ROM = state->memregion("maincpu")->base();
251
state->membank("bank1")->configure_entries(0, 5, &ROM[0x10000], 0x2000);
257
253
state->m_filter1 = machine.device("filter1");
258
254
state->m_filter2 = machine.device("filter2");