11
11
WRITE8_HANDLER( n8080_video_control_w )
13
n8080_state *state = space->machine->driver_data<n8080_state>();
13
n8080_state *state = space->machine().driver_data<n8080_state>();
15
state->sheriff_color_mode = (data >> 3) & 3;
16
state->sheriff_color_data = (data >> 0) & 7;
17
flip_screen_set_no_update(space->machine, data & 0x20);
15
state->m_sheriff_color_mode = (data >> 3) & 3;
16
state->m_sheriff_color_data = (data >> 0) & 7;
17
flip_screen_set_no_update(space->machine(), data & 0x20);
49
void spacefev_start_red_cannon( running_machine *machine )
49
void spacefev_start_red_cannon( running_machine &machine )
51
n8080_state *state = machine->driver_data<n8080_state>();
51
n8080_state *state = machine.driver_data<n8080_state>();
53
state->spacefev_red_cannon = 1;
54
timer_adjust_oneshot(state->cannon_timer, ATTOTIME_IN_USEC(550 * 68 * 10), 0);
53
state->m_spacefev_red_cannon = 1;
54
state->m_cannon_timer->adjust(attotime::from_usec(550 * 68 * 10));
58
58
static TIMER_CALLBACK( spacefev_stop_red_cannon )
60
n8080_state *state = machine->driver_data<n8080_state>();
60
n8080_state *state = machine.driver_data<n8080_state>();
62
state->spacefev_red_cannon = 0;
63
timer_adjust_oneshot(state->cannon_timer, attotime_never, 0);
62
state->m_spacefev_red_cannon = 0;
63
state->m_cannon_timer->adjust(attotime::never);
67
static void helifire_next_line( running_machine *machine )
67
static void helifire_next_line( running_machine &machine )
69
n8080_state *state = machine->driver_data<n8080_state>();
73
if (state->helifire_sc % 4 == 2)
69
n8080_state *state = machine.driver_data<n8080_state>();
71
state->m_helifire_mv++;
73
if (state->m_helifire_sc % 4 == 2)
75
state->helifire_mv %= 256;
75
state->m_helifire_mv %= 256;
79
79
if (flip_screen_get(machine))
80
state->helifire_mv %= 255;
80
state->m_helifire_mv %= 255;
82
state->helifire_mv %= 257;
82
state->m_helifire_mv %= 257;
85
if (state->helifire_mv == 128)
85
if (state->m_helifire_mv == 128)
87
state->m_helifire_sc++;
92
92
VIDEO_START( spacefev )
94
n8080_state *state = machine->driver_data<n8080_state>();
94
n8080_state *state = machine.driver_data<n8080_state>();
96
state->cannon_timer = timer_alloc(machine, spacefev_stop_red_cannon, NULL);
96
state->m_cannon_timer = machine.scheduler().timer_alloc(FUNC(spacefev_stop_red_cannon));
98
98
flip_screen_set_no_update(machine, 0);
100
state_save_register_global(machine, state->spacefev_red_screen);
101
state_save_register_global(machine, state->spacefev_red_cannon);
100
state->save_item(NAME(state->m_spacefev_red_screen));
101
state->save_item(NAME(state->m_spacefev_red_cannon));
105
105
VIDEO_START( sheriff )
107
n8080_state *state = machine->driver_data<n8080_state>();
107
n8080_state *state = machine.driver_data<n8080_state>();
109
109
flip_screen_set_no_update(machine, 0);
111
state_save_register_global(machine, state->sheriff_color_mode);
112
state_save_register_global(machine, state->sheriff_color_data);
111
state->save_item(NAME(state->m_sheriff_color_mode));
112
state->save_item(NAME(state->m_sheriff_color_data));
116
116
VIDEO_START( helifire )
118
n8080_state *state = machine->driver_data<n8080_state>();
118
n8080_state *state = machine.driver_data<n8080_state>();
122
state_save_register_global(machine, state->helifire_mv);
123
state_save_register_global(machine, state->helifire_sc);
124
state_save_register_global(machine, state->helifire_flash);
125
state_save_register_global_array(machine, state->helifire_LSFR);
122
state->save_item(NAME(state->m_helifire_mv));
123
state->save_item(NAME(state->m_helifire_sc));
124
state->save_item(NAME(state->m_helifire_flash));
125
state->save_item(NAME(state->m_helifire_LSFR));
127
127
for (i = 0; i < 63; i++)
133
133
data = (data << 1) | (bit & 1);
135
state->helifire_LSFR[i] = data;
135
state->m_helifire_LSFR[i] = data;
138
138
flip_screen_set_no_update(machine, 0);
142
VIDEO_UPDATE( spacefev )
142
SCREEN_UPDATE( spacefev )
144
n8080_state *state = screen->machine->driver_data<n8080_state>();
145
UINT8 mask = flip_screen_get(screen->machine) ? 0xff : 0x00;
144
n8080_state *state = screen->machine().driver_data<n8080_state>();
145
UINT8 mask = flip_screen_get(screen->machine()) ? 0xff : 0x00;
150
const UINT8* pRAM = state->videoram;
151
const UINT8* pPROM = screen->machine->region("proms")->base();
150
const UINT8* pRAM = state->m_videoram;
151
const UINT8* pPROM = screen->machine().region("proms")->base();
153
153
for (y = 0; y < 256; y++)
232
232
UINT8 color = pPROM[32 * (y >> 3) + (x >> 3)];
234
if (state->sheriff_color_mode == 1 && !(color & 8))
235
color = state->sheriff_color_data ^ 7;
237
if (state->sheriff_color_mode == 2)
238
color = state->sheriff_color_data ^ 7;
240
if (state->sheriff_color_mode == 3)
234
if (state->m_sheriff_color_mode == 1 && !(color & 8))
235
color = state->m_sheriff_color_data ^ 7;
237
if (state->m_sheriff_color_mode == 2)
238
color = state->m_sheriff_color_data ^ 7;
240
if (state->m_sheriff_color_mode == 3)
243
243
for (n = 0; n < 8; n++)
255
VIDEO_UPDATE( helifire )
255
SCREEN_UPDATE( helifire )
257
n8080_state *state = screen->machine->driver_data<n8080_state>();
258
int SUN_BRIGHTNESS = input_port_read(screen->machine, "POT0");
259
int SEA_BRIGHTNESS = input_port_read(screen->machine, "POT1");
257
n8080_state *state = screen->machine().driver_data<n8080_state>();
258
int SUN_BRIGHTNESS = input_port_read(screen->machine(), "POT0");
259
int SEA_BRIGHTNESS = input_port_read(screen->machine(), "POT1");
261
261
static const int wave[8] = { 0, 1, 2, 2, 2, 1, 0, 0 };
263
unsigned saved_mv = state->helifire_mv;
264
unsigned saved_sc = state->helifire_sc;
263
unsigned saved_mv = state->m_helifire_mv;
264
unsigned saved_sc = state->m_helifire_sc;
284
if (state->helifire_mv % 8 == 4) /* upper half */
284
if (state->m_helifire_mv % 8 == 4) /* upper half */
286
int step = (320 * (state->helifire_mv - 0)) % sizeof state->helifire_LSFR;
286
int step = (320 * (state->m_helifire_mv - 0)) % sizeof state->m_helifire_LSFR;
289
((state->helifire_LSFR[step] & 1) << 6) |
290
((state->helifire_LSFR[step] & 2) << 4) |
291
((state->helifire_LSFR[step] & 4) << 2) |
292
((state->helifire_LSFR[step] & 8) << 0);
289
((state->m_helifire_LSFR[step] & 1) << 6) |
290
((state->m_helifire_LSFR[step] & 2) << 4) |
291
((state->m_helifire_LSFR[step] & 4) << 2) |
292
((state->m_helifire_LSFR[step] & 8) << 0);
294
294
pLine[0x80 + data] |= 0x100;
297
if (state->helifire_mv % 8 == 5) /* lower half */
297
if (state->m_helifire_mv % 8 == 5) /* lower half */
299
int step = (320 * (state->helifire_mv - 1)) % sizeof state->helifire_LSFR;
299
int step = (320 * (state->m_helifire_mv - 1)) % sizeof state->m_helifire_LSFR;
302
((state->helifire_LSFR[step] & 1) << 6) |
303
((state->helifire_LSFR[step] & 2) << 4) |
304
((state->helifire_LSFR[step] & 4) << 2) |
305
((state->helifire_LSFR[step] & 8) << 0);
302
((state->m_helifire_LSFR[step] & 1) << 6) |
303
((state->m_helifire_LSFR[step] & 2) << 4) |
304
((state->m_helifire_LSFR[step] & 4) << 2) |
305
((state->m_helifire_LSFR[step] & 8) << 0);
307
307
pLine[0x00 + data] |= 0x100;
325
325
for (n = 0; n < 8; n++)
327
if (flip_screen_get(screen->machine))
327
if (flip_screen_get(screen->machine()))
329
if ((state->videoram[offset ^ 0x1fff] << n) & 0x80)
329
if ((state->m_videoram[offset ^ 0x1fff] << n) & 0x80)
331
pLine[x + n] = state->colorram[offset ^ 0x1fff] & 7;
331
pLine[x + n] = state->m_colorram[offset ^ 0x1fff] & 7;
336
if ((state->videoram[offset] >> n) & 1)
336
if ((state->m_videoram[offset] >> n) & 1)
338
pLine[x + n] = state->colorram[offset] & 7;
338
pLine[x + n] = state->m_colorram[offset] & 7;
346
helifire_next_line(screen->machine);
346
helifire_next_line(screen->machine());
349
state->helifire_mv = saved_mv;
350
state->helifire_sc = saved_sc;
349
state->m_helifire_mv = saved_mv;
350
state->m_helifire_sc = saved_sc;
355
VIDEO_EOF( helifire )
355
SCREEN_EOF( helifire )
357
n8080_state *state = machine->driver_data<n8080_state>();
358
int n = (machine->primary_screen->frame_number() >> 1) % sizeof state->helifire_LSFR;
357
n8080_state *state = machine.driver_data<n8080_state>();
358
int n = (machine.primary_screen->frame_number() >> 1) % sizeof state->m_helifire_LSFR;