45
WRITE8_HANDLER( carjmbre_flipscreen_w )
46
WRITE8_MEMBER(carjmbre_state::carjmbre_flipscreen_w)
47
carjmbre_state *state = space->machine().driver_data<carjmbre_state>();
49
state->m_flipscreen = (data & 1) ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0;
50
space->machine().tilemap().set_flip_all(state->m_flipscreen);
49
m_flipscreen = (data & 1) ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0;
50
machine().tilemap().set_flip_all(m_flipscreen);
53
WRITE8_HANDLER( carjmbre_bgcolor_w )
53
WRITE8_MEMBER(carjmbre_state::carjmbre_bgcolor_w)
55
carjmbre_state *state = space->machine().driver_data<carjmbre_state>();
56
55
data = ~data & 0x3f;
58
if (data != state->m_bgcolor)
57
if (data != m_bgcolor)
62
state->m_bgcolor = data;
64
63
for (i = 0; i < 64; i += 4)
65
palette_set_color(space->machine(), i, palette_get_color(space->machine(), data));
64
palette_set_color(machine(), i, palette_get_color(machine(), data));
67
66
// restore to initial state (black)
68
67
for (i = 0; i < 64; i += 4)
69
palette_set_color(space->machine(), i, RGB_BLACK);
68
palette_set_color(machine(), i, RGB_BLACK);
73
WRITE8_HANDLER( carjmbre_8806_w )
72
WRITE8_MEMBER(carjmbre_state::carjmbre_8806_w)
75
74
// unknown, gets updated at same time as carjmbre_bgcolor_w
78
WRITE8_HANDLER( carjmbre_videoram_w )
77
WRITE8_MEMBER(carjmbre_state::carjmbre_videoram_w)
80
carjmbre_state *state = space->machine().driver_data<carjmbre_state>();
82
state->m_videoram[offset] = data;
83
state->m_cj_tilemap->mark_tile_dirty(offset & 0x3ff);
80
m_videoram[offset] = data;
81
m_cj_tilemap->mark_tile_dirty(offset & 0x3ff);
131
129
//--xx---- unused
132
130
//----xxxx colour
134
for (offs = state->m_spriteram_size - 4; offs >= 0; offs -= 4)
132
for (offs = state->m_spriteram.bytes() - 4; offs >= 0; offs -= 4)
136
134
//before copying the sprites to spriteram the game reorders the first
137
135
//sprite to last, sprite ordering is incorrect if this isn't undone
138
troffs = (offs - 4 + state->m_spriteram_size) % state->m_spriteram_size;
136
troffs = (offs - 4 + state->m_spriteram.bytes()) % state->m_spriteram.bytes();
140
138
//unused sprites are marked with ypos <= 0x02 (or >= 0xfd if screen flipped)
141
139
if (state->m_spriteram[troffs] > 0x02 && state->m_spriteram[troffs] < 0xfd)