115
115
***************************************************************************/
117
WRITE16_HANDLER( bionicc_bgvideoram_w )
119
bionicc_state *state = space->machine().driver_data<bionicc_state>();
121
COMBINE_DATA(&state->m_bgvideoram[offset]);
122
state->m_bg_tilemap->mark_tile_dirty(offset / 2);
125
WRITE16_HANDLER( bionicc_fgvideoram_w )
127
bionicc_state *state = space->machine().driver_data<bionicc_state>();
129
COMBINE_DATA(&state->m_fgvideoram[offset]);
130
state->m_fg_tilemap->mark_tile_dirty(offset / 2);
133
WRITE16_HANDLER( bionicc_txvideoram_w )
135
bionicc_state *state = space->machine().driver_data<bionicc_state>();
137
COMBINE_DATA(&state->m_txvideoram[offset]);
138
state->m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
141
WRITE16_HANDLER( bionicc_paletteram_w )
143
bionicc_state *state = space->machine().driver_data<bionicc_state>();
117
WRITE16_MEMBER(bionicc_state::bionicc_bgvideoram_w)
120
COMBINE_DATA(&m_bgvideoram[offset]);
121
m_bg_tilemap->mark_tile_dirty(offset / 2);
124
WRITE16_MEMBER(bionicc_state::bionicc_fgvideoram_w)
127
COMBINE_DATA(&m_fgvideoram[offset]);
128
m_fg_tilemap->mark_tile_dirty(offset / 2);
131
WRITE16_MEMBER(bionicc_state::bionicc_txvideoram_w)
134
COMBINE_DATA(&m_txvideoram[offset]);
135
m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
138
WRITE16_MEMBER(bionicc_state::bionicc_paletteram_w)
144
140
int r, g, b, bright;
145
data = COMBINE_DATA(&state->m_paletteram[offset]);
141
data = COMBINE_DATA(&m_paletteram[offset]);
147
143
bright = (data & 0x0f);
157
153
b = b * (0x07 + bright) / 0x0e;
160
palette_set_color (space->machine(), offset, MAKE_RGB(r, g, b));
156
palette_set_color (machine(), offset, MAKE_RGB(r, g, b));
163
WRITE16_HANDLER( bionicc_scroll_w )
159
WRITE16_MEMBER(bionicc_state::bionicc_scroll_w)
165
bionicc_state *state = space->machine().driver_data<bionicc_state>();
167
data = COMBINE_DATA(&state->m_scroll[offset]);
162
data = COMBINE_DATA(&m_scroll[offset]);
172
state->m_fg_tilemap->set_scrollx(0, data);
167
m_fg_tilemap->set_scrollx(0, data);
175
state->m_fg_tilemap->set_scrolly(0, data);
170
m_fg_tilemap->set_scrolly(0, data);
178
state->m_bg_tilemap->set_scrollx(0, data);
173
m_bg_tilemap->set_scrollx(0, data);
181
state->m_bg_tilemap->set_scrolly(0, data);
176
m_bg_tilemap->set_scrolly(0, data);
186
WRITE16_HANDLER( bionicc_gfxctrl_w )
181
WRITE16_MEMBER(bionicc_state::bionicc_gfxctrl_w)
188
bionicc_state *state = space->machine().driver_data<bionicc_state>();
190
184
if (ACCESSING_BITS_8_15)
192
flip_screen_set(space->machine(), data & 0x0100);
194
state->m_bg_tilemap->enable(data & 0x2000); /* guess */
195
state->m_fg_tilemap->enable(data & 0x1000); /* guess */
197
coin_counter_w(space->machine(), 0, data & 0x8000);
198
coin_counter_w(space->machine(), 1, data & 0x4000);
186
flip_screen_set(data & 0x0100);
188
m_bg_tilemap->enable(data & 0x2000); /* guess */
189
m_fg_tilemap->enable(data & 0x1000); /* guess */
191
coin_counter_w(machine(), 0, data & 0x8000);
192
coin_counter_w(machine(), 1, data & 0x4000);
210
204
static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
212
UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16;
213
// bionicc_state *state = machine.driver_data<bionicc_state>();
206
bionicc_state *state = machine.driver_data<bionicc_state>();
207
UINT16 *buffered_spriteram = state->m_spriteram->buffer();
215
209
const gfx_element *gfx = machine.gfx[3];
217
for (offs = (machine.generic.spriteram_size - 8) / 2; offs >= 0; offs -= 4)
211
for (offs = (state->m_spriteram->bytes() - 8) / 2; offs >= 0; offs -= 4)
219
213
int tile_number = buffered_spriteram[offs] & 0x7ff;
220
214
if( tile_number != 0x7ff )
259
253
state->m_tx_tilemap->draw(bitmap, cliprect, 0, 0);
263
SCREEN_VBLANK( bionicc )
268
address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM);
270
buffer_spriteram16_w(space, 0, 0, 0xffff);