184
WRITE16_HANDLER( twincobr_txoffs_w )
186
twincobr_state *state = space->machine().driver_data<twincobr_state>();
188
COMBINE_DATA(&state->m_txoffs);
189
state->m_txoffs %= state->m_txvideoram_size;
191
READ16_HANDLER( twincobr_txram_r )
193
twincobr_state *state = space->machine().driver_data<twincobr_state>();
195
return state->m_txvideoram16[state->m_txoffs];
197
WRITE16_HANDLER( twincobr_txram_w )
199
twincobr_state *state = space->machine().driver_data<twincobr_state>();
201
COMBINE_DATA(&state->m_txvideoram16[state->m_txoffs]);
202
state->m_tx_tilemap->mark_tile_dirty(state->m_txoffs);
205
WRITE16_HANDLER( twincobr_bgoffs_w )
207
twincobr_state *state = space->machine().driver_data<twincobr_state>();
209
COMBINE_DATA(&state->m_bgoffs);
210
state->m_bgoffs %= (state->m_bgvideoram_size >> 1);
212
READ16_HANDLER( twincobr_bgram_r )
214
twincobr_state *state = space->machine().driver_data<twincobr_state>();
216
return state->m_bgvideoram16[state->m_bgoffs+state->m_bg_ram_bank];
218
WRITE16_HANDLER( twincobr_bgram_w )
220
twincobr_state *state = space->machine().driver_data<twincobr_state>();
222
COMBINE_DATA(&state->m_bgvideoram16[state->m_bgoffs+state->m_bg_ram_bank]);
223
state->m_bg_tilemap->mark_tile_dirty((state->m_bgoffs+state->m_bg_ram_bank));
226
WRITE16_HANDLER( twincobr_fgoffs_w )
228
twincobr_state *state = space->machine().driver_data<twincobr_state>();
230
COMBINE_DATA(&state->m_fgoffs);
231
state->m_fgoffs %= state->m_fgvideoram_size;
233
READ16_HANDLER( twincobr_fgram_r )
235
twincobr_state *state = space->machine().driver_data<twincobr_state>();
237
return state->m_fgvideoram16[state->m_fgoffs];
239
WRITE16_HANDLER( twincobr_fgram_w )
241
twincobr_state *state = space->machine().driver_data<twincobr_state>();
243
COMBINE_DATA(&state->m_fgvideoram16[state->m_fgoffs]);
244
state->m_fg_tilemap->mark_tile_dirty(state->m_fgoffs);
248
WRITE16_HANDLER( twincobr_txscroll_w )
250
twincobr_state *state = space->machine().driver_data<twincobr_state>();
253
COMBINE_DATA(&state->m_txscrollx);
254
state->m_tx_tilemap->set_scrollx(0,(state->m_txscrollx+state->m_scroll_x) & 0x1ff);
257
COMBINE_DATA(&state->m_txscrolly);
258
state->m_tx_tilemap->set_scrolly(0,(state->m_txscrolly+state->m_scroll_y) & 0x1ff);
262
WRITE16_HANDLER( twincobr_bgscroll_w )
264
twincobr_state *state = space->machine().driver_data<twincobr_state>();
267
COMBINE_DATA(&state->m_bgscrollx);
268
state->m_bg_tilemap->set_scrollx(0,(state->m_bgscrollx+state->m_scroll_x) & 0x1ff);
271
COMBINE_DATA(&state->m_bgscrolly);
272
state->m_bg_tilemap->set_scrolly(0,(state->m_bgscrolly+state->m_scroll_y) & 0x1ff);
276
WRITE16_HANDLER( twincobr_fgscroll_w )
278
twincobr_state *state = space->machine().driver_data<twincobr_state>();
281
COMBINE_DATA(&state->m_fgscrollx);
282
state->m_fg_tilemap->set_scrollx(0,(state->m_fgscrollx+state->m_scroll_x) & 0x1ff);
285
COMBINE_DATA(&state->m_fgscrolly);
286
state->m_fg_tilemap->set_scrolly(0,(state->m_fgscrolly+state->m_scroll_y) & 0x1ff);
290
WRITE16_HANDLER( twincobr_exscroll_w ) /* Extra unused video layer */
184
WRITE16_MEMBER(twincobr_state::twincobr_txoffs_w)
187
COMBINE_DATA(&m_txoffs);
188
m_txoffs %= m_txvideoram_size;
190
READ16_MEMBER(twincobr_state::twincobr_txram_r)
193
return m_txvideoram16[m_txoffs];
195
WRITE16_MEMBER(twincobr_state::twincobr_txram_w)
198
COMBINE_DATA(&m_txvideoram16[m_txoffs]);
199
m_tx_tilemap->mark_tile_dirty(m_txoffs);
202
WRITE16_MEMBER(twincobr_state::twincobr_bgoffs_w)
205
COMBINE_DATA(&m_bgoffs);
206
m_bgoffs %= (m_bgvideoram_size >> 1);
208
READ16_MEMBER(twincobr_state::twincobr_bgram_r)
211
return m_bgvideoram16[m_bgoffs+m_bg_ram_bank];
213
WRITE16_MEMBER(twincobr_state::twincobr_bgram_w)
216
COMBINE_DATA(&m_bgvideoram16[m_bgoffs+m_bg_ram_bank]);
217
m_bg_tilemap->mark_tile_dirty((m_bgoffs+m_bg_ram_bank));
220
WRITE16_MEMBER(twincobr_state::twincobr_fgoffs_w)
223
COMBINE_DATA(&m_fgoffs);
224
m_fgoffs %= m_fgvideoram_size;
226
READ16_MEMBER(twincobr_state::twincobr_fgram_r)
229
return m_fgvideoram16[m_fgoffs];
231
WRITE16_MEMBER(twincobr_state::twincobr_fgram_w)
234
COMBINE_DATA(&m_fgvideoram16[m_fgoffs]);
235
m_fg_tilemap->mark_tile_dirty(m_fgoffs);
239
WRITE16_MEMBER(twincobr_state::twincobr_txscroll_w)
243
COMBINE_DATA(&m_txscrollx);
244
m_tx_tilemap->set_scrollx(0,(m_txscrollx+m_scroll_x) & 0x1ff);
247
COMBINE_DATA(&m_txscrolly);
248
m_tx_tilemap->set_scrolly(0,(m_txscrolly+m_scroll_y) & 0x1ff);
252
WRITE16_MEMBER(twincobr_state::twincobr_bgscroll_w)
256
COMBINE_DATA(&m_bgscrollx);
257
m_bg_tilemap->set_scrollx(0,(m_bgscrollx+m_scroll_x) & 0x1ff);
260
COMBINE_DATA(&m_bgscrolly);
261
m_bg_tilemap->set_scrolly(0,(m_bgscrolly+m_scroll_y) & 0x1ff);
265
WRITE16_MEMBER(twincobr_state::twincobr_fgscroll_w)
269
COMBINE_DATA(&m_fgscrollx);
270
m_fg_tilemap->set_scrollx(0,(m_fgscrollx+m_scroll_x) & 0x1ff);
273
COMBINE_DATA(&m_fgscrolly);
274
m_fg_tilemap->set_scrolly(0,(m_fgscrolly+m_scroll_y) & 0x1ff);
278
WRITE16_MEMBER(twincobr_state::twincobr_exscroll_w)/* Extra unused video layer */
292
280
if (offset == 0) logerror("PC - write %04x to unknown video scroll Y register\n",data);
293
281
else logerror("PC - write %04x to unknown video scroll X register\n",data);
296
284
/******************** Wardner interface to this hardware ********************/
297
WRITE8_HANDLER( wardner_txlayer_w )
285
WRITE8_MEMBER(twincobr_state::wardner_txlayer_w)
299
287
int shift = 8 * (offset & 1);
300
288
twincobr_txoffs_w(space, offset / 2, data << shift, 0xff << shift);
303
WRITE8_HANDLER( wardner_bglayer_w )
291
WRITE8_MEMBER(twincobr_state::wardner_bglayer_w)
305
293
int shift = 8 * (offset & 1);
306
294
twincobr_bgoffs_w(space, offset / 2, data << shift, 0xff << shift);
309
WRITE8_HANDLER( wardner_fglayer_w )
297
WRITE8_MEMBER(twincobr_state::wardner_fglayer_w)
311
299
int shift = 8 * (offset & 1);
312
300
twincobr_fgoffs_w(space, offset / 2, data << shift, 0xff << shift);
315
WRITE8_HANDLER( wardner_txscroll_w )
303
WRITE8_MEMBER(twincobr_state::wardner_txscroll_w)
317
305
int shift = 8 * (offset & 1);
318
306
twincobr_txscroll_w(space, offset / 2, data << shift, 0xff << shift);
321
WRITE8_HANDLER( wardner_bgscroll_w )
309
WRITE8_MEMBER(twincobr_state::wardner_bgscroll_w)
323
311
int shift = 8 * (offset & 1);
324
312
twincobr_bgscroll_w(space, offset / 2, data << shift, 0xff << shift);
327
WRITE8_HANDLER( wardner_fgscroll_w )
315
WRITE8_MEMBER(twincobr_state::wardner_fgscroll_w)
329
317
int shift = 8 * (offset & 1);
330
318
twincobr_fgscroll_w(space, offset / 2, data << shift, 0xff << shift);
333
WRITE8_HANDLER( wardner_exscroll_w ) /* Extra unused video layer */
321
WRITE8_MEMBER(twincobr_state::wardner_exscroll_w)/* Extra unused video layer */