128
145
0x03, 0x01, 0x00, 0x03
131
static CUSTOM_INPUT( prot_r )
133
ddayjlc_state *state = field.machine().driver_data<ddayjlc_state>();
134
return prot_data[state->m_prot_addr];
137
static WRITE8_HANDLER( prot_w )
139
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
140
state->m_prot_addr = (state->m_prot_addr & (~(1 << offset))) | ((data & 1) << offset);
143
static WRITE8_HANDLER( char_bank_w )
145
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
146
state->m_char_bank = data;
149
static WRITE8_HANDLER( ddayjlc_bgram_w )
151
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
148
CUSTOM_INPUT_MEMBER(ddayjlc_state::prot_r)
150
return prot_data[m_prot_addr];
153
WRITE8_MEMBER(ddayjlc_state::prot_w)
155
m_prot_addr = (m_prot_addr & (~(1 << offset))) | ((data & 1) << offset);
158
WRITE8_MEMBER(ddayjlc_state::char_bank_w)
163
WRITE8_MEMBER(ddayjlc_state::ddayjlc_bgram_w)
154
state->m_bg_tilemap->set_scrollx(0, data + 8);
156
state->m_bgram[offset] = data;
157
state->m_bg_tilemap->mark_tile_dirty(offset & 0x3ff);
160
static WRITE8_HANDLER( ddayjlc_videoram_w )
162
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
163
state->m_videoram[offset] = data;
167
static WRITE8_HANDLER(sound_nmi_w)
169
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
170
state->m_sound_nmi_enable = data;
173
static WRITE8_HANDLER(main_nmi_w)
175
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
176
state->m_main_nmi_enable = data;
179
static WRITE8_HANDLER( bg0_w )
181
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
182
state->m_bgadr = (state->m_bgadr & 0xfe) | (data & 1);
185
static WRITE8_HANDLER( bg1_w )
187
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
188
state->m_bgadr = (state->m_bgadr & 0xfd) | ((data & 1) << 1);
191
static WRITE8_HANDLER( bg2_w )
193
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
195
state->m_bgadr = (state->m_bgadr & 0xfb) | ((data & 1) << 2);
196
if (state->m_bgadr > 2)
199
memory_set_bank(space->machine(), "bank1", state->m_bgadr);
202
static WRITE8_HANDLER( sound_w )
204
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
206
soundlatch_w(space, offset, data);
207
device_set_input_line_and_vector(state->m_audiocpu, 0, HOLD_LINE, 0xff);
210
static WRITE8_HANDLER( i8257_CH0_w )
212
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
214
state->m_e00x_d[offset][state->m_e00x_l[offset]] = data;
215
state->m_e00x_l[offset] ^= 1;
218
static WRITE8_HANDLER( i8257_LMSR_w )
220
ddayjlc_state *state = space->machine().driver_data<ddayjlc_state>();
167
m_bg_tilemap->set_scrollx(0, data + 8);
169
m_bgram[offset] = data;
170
m_bg_tilemap->mark_tile_dirty(offset & 0x3ff);
173
WRITE8_MEMBER(ddayjlc_state::ddayjlc_videoram_w)
175
m_videoram[offset] = data;
179
WRITE8_MEMBER(ddayjlc_state::sound_nmi_w)
181
m_sound_nmi_enable = data;
184
WRITE8_MEMBER(ddayjlc_state::main_nmi_w)
186
m_main_nmi_enable = data;
189
WRITE8_MEMBER(ddayjlc_state::bg0_w)
191
m_bgadr = (m_bgadr & 0xfe) | (data & 1);
194
WRITE8_MEMBER(ddayjlc_state::bg1_w)
196
m_bgadr = (m_bgadr & 0xfd) | ((data & 1) << 1);
199
WRITE8_MEMBER(ddayjlc_state::bg2_w)
202
m_bgadr = (m_bgadr & 0xfb) | ((data & 1) << 2);
206
membank("bank1")->set_entry(m_bgadr);
209
WRITE8_MEMBER(ddayjlc_state::sound_w)
212
soundlatch_byte_w(space, offset, data);
213
device_set_input_line_and_vector(m_audiocpu, 0, HOLD_LINE, 0xff);
216
WRITE8_MEMBER(ddayjlc_state::i8257_CH0_w)
219
m_e00x_d[offset][m_e00x_l[offset]] = data;
220
m_e00x_l[offset] ^= 1;
223
WRITE8_MEMBER(ddayjlc_state::i8257_LMSR_w)
224
INT32 src = state->m_e00x_d[0][1] * 256 + state->m_e00x_d[0][0];
225
INT32 dst = state->m_e00x_d[2][1] * 256 + state->m_e00x_d[2][0];
226
INT32 size = (state->m_e00x_d[1][1] * 256 + state->m_e00x_d[1][0]) & 0x3ff;
228
INT32 src = m_e00x_d[0][1] * 256 + m_e00x_d[0][0];
229
INT32 dst = m_e00x_d[2][1] * 256 + m_e00x_d[2][0];
230
INT32 size = (m_e00x_d[1][1] * 256 + m_e00x_d[1][0]) & 0x3ff;
231
235
for(i = 0; i < size; i++)
233
space->write_byte(dst++, space->read_byte(src++));
237
space.write_byte(dst++, space.read_byte(src++));
236
state->m_e00x_l[0] = 0;
237
state->m_e00x_l[1] = 0;
238
state->m_e00x_l[2] = 0;
239
state->m_e00x_l[3] = 0;
243
static ADDRESS_MAP_START( main_cpu, AS_PROGRAM, 8 )
247
static ADDRESS_MAP_START( main_cpu, AS_PROGRAM, 8, ddayjlc_state )
244
248
AM_RANGE(0x0000, 0x7fff) AM_ROM
245
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_BASE_MEMBER(ddayjlc_state, m_mainram)
246
AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE_MEMBER(ddayjlc_state, m_spriteram)
247
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(ddayjlc_videoram_w) AM_BASE_MEMBER(ddayjlc_state, m_videoram)
248
AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(ddayjlc_bgram_w) AM_BASE_MEMBER(ddayjlc_state, m_bgram) /* 9800-981f - videoregs */
249
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("mainram")
250
AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("spriteram")
251
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(ddayjlc_videoram_w) AM_SHARE("videoram")
252
AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(ddayjlc_bgram_w) AM_SHARE("bgram") /* 9800-981f - videoregs */
249
253
AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1") AM_WRITENOP
250
254
AM_RANGE(0xe000, 0xe003) AM_WRITE(i8257_CH0_w)
251
255
AM_RANGE(0xe008, 0xe008) AM_WRITENOP
269
static ADDRESS_MAP_START( sound_cpu, AS_PROGRAM, 8 )
273
static ADDRESS_MAP_START( sound_cpu, AS_PROGRAM, 8, ddayjlc_state )
270
274
AM_RANGE(0x0000, 0x1fff) AM_ROM
271
275
AM_RANGE(0x2000, 0x23ff) AM_RAM
272
AM_RANGE(0x3000, 0x3000) AM_DEVREADWRITE("ay1", ay8910_r, ay8910_data_w)
273
AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_address_w)
274
AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE("ay2", ay8910_r, ay8910_data_w)
275
AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_address_w)
276
AM_RANGE(0x3000, 0x3000) AM_DEVREADWRITE_LEGACY("ay1", ay8910_r, ay8910_data_w)
277
AM_RANGE(0x4000, 0x4000) AM_DEVWRITE_LEGACY("ay1", ay8910_address_w)
278
AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE_LEGACY("ay2", ay8910_r, ay8910_data_w)
279
AM_RANGE(0x6000, 0x6000) AM_DEVWRITE_LEGACY("ay2", ay8910_address_w)
276
280
AM_RANGE(0x7000, 0x7000) AM_WRITE(sound_nmi_w)