Exemple #1
0
void vectrex_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
	switch (id)
	{
	case TIMER_VECTREX_IMAGER_CHANGE_COLOR:
		vectrex_imager_change_color(ptr, param);
		break;
	case TIMER_UPDATE_LEVEL:
		update_level(ptr, param);
		break;
	case TIMER_VECTREX_IMAGER_EYE:
		vectrex_imager_eye(ptr, param);
		break;
	case TIMER_LIGHTPEN_TRIGGER:
		lightpen_trigger(ptr, param);
		break;
	case TIMER_VECTREX_REFRESH:
		vectrex_refresh(ptr, param);
		break;
	case TIMER_VECTREX_ZERO_INTEGRATORS:
		vectrex_zero_integrators(ptr, param);
		break;
	case TIMER_UPDATE_SIGNAL:
		update_signal(ptr, param);
		break;
	default:
		assert_always(FALSE, "Unknown id in vectrex_state::device_timer");
	}
}
Exemple #2
0
void Game::send_new_wave()
{
	EnemyList tmp = level_control->get_new_wave(this);
	enemy_list.insert(enemy_list.end(), tmp.begin(), tmp.end());
	tmp.clear();
	update_level();
}
Exemple #3
0
static GtkToolItem*
level_widget_new()
{
    g_assert(level_widget == NULL);
    level_widget = sugar_toolkit_tool_text_new();
    update_level();
    return GTK_TOOL_ITEM(level_widget);
}
Exemple #4
0
static void
bar_set_level(GcomprisBoard *board)
{
  if (board == NULL)
      return;

  if (level_widget == NULL) {
    g_message("in bar_set_level, level_item uninitialized : should not happen\n");
    return;
  }

  current_level = board->level;
  update_level();
}
Exemple #5
0
// If G1LogLevel has not been set up we will use the values of PrintGC
// and PrintGCDetails for the logging level.
void G1Log::init() {
  if (!FLAG_IS_DEFAULT(G1LogLevel)) {
    // PrintGC flags change won't have any affect, because G1LogLevel
    // is set explicitly
    if (G1LogLevel[0] == '\0' || strncmp("none", G1LogLevel, 4) == 0 && G1LogLevel[4] == '\0') {
      _level = LevelNone;
    } else if (strncmp("fine", G1LogLevel, 4) == 0 && G1LogLevel[4] == '\0') {
      _level = LevelFine;
    } else if (strncmp("finer", G1LogLevel, 5) == 0 && G1LogLevel[5] == '\0') {
      _level = LevelFiner;
    } else if (strncmp("finest", G1LogLevel, 6) == 0 && G1LogLevel[6] == '\0') {
      _level = LevelFinest;
    } else {
      warning("Unknown logging level '%s', should be one of 'fine', 'finer' or 'finest'.", G1LogLevel);
    }
  } else {
    update_level();
  }
}
Exemple #6
0
static void
level_clicked_cb(GtkToolButton *button, gpointer user_data)
{
  beep();

  GcomprisBoard *board = gc_board_get_current();
  if (board == NULL)
      return;

  gint delta = GPOINTER_TO_INT(user_data);
  current_level += delta;

  if (current_level > board->maxlevel)
    current_level = 1;
  else if (current_level < 1)
    current_level = board->maxlevel;

  update_level();

  if (board->plugin->set_level != NULL)
    board->plugin->set_level(current_level);

  gc_bar_play_level_voice(current_level);
}
Exemple #7
0
static void update(Tetris *tetris)
{
    if (tetris->key_quit) {
        Tetris_destroy(tetris);
        exit(0);
    }
    else if (tetris->key_pause) {
        if (tetris->game_state == RUNNING) {
            tetris->game_state = PAUSED;
            Renderer_erase_panel_labels(tetris->renderer);
            Renderer_erase_panel_line_counter(tetris->renderer);
            Renderer_erase_panel_score(tetris->renderer);
            Renderer_erase_panel_level(tetris->renderer);

            Renderer_draw_pause_message(tetris->renderer);
        }
        else if (tetris->game_state == PAUSED) {
            tetris->game_state = RUNNING;
            Renderer_erase_pause_message(tetris->renderer);

            Renderer_draw_panel_labels(tetris->renderer);
            Renderer_draw_panel_line_counter(tetris->renderer,
                                             tetris->lines_completed);
            Renderer_draw_panel_score(tetris->renderer, tetris->score);
            Renderer_draw_panel_level(tetris->renderer, tetris->level);
        }
    }

    if (tetris->game_state != PAUSED) {
        if (collision(COORDINATE_BOTTOM_COLLISION,
                      tetris->current_block,
                      tetris->renderer->buffer)
        ) {
            ++tetris->movement_frame_counter;
            if (tetris->movement_frame_counter == tetris->movement_frame_delay) {
                tetris->movement_frame_counter = 0;

                Renderer_draw_block(tetris->renderer, tetris->current_block);

                int complete_lines = check_complete_lines(tetris);

                next_block(tetris);

                check_game_over(tetris);

                update_score(tetris, complete_lines);
                update_level(tetris);

                Renderer_draw_panel_score(tetris->renderer, tetris->score);
                Renderer_draw_panel_level(tetris->renderer, tetris->level);

                tetris->renderer->buffer->dirty = 1;
            }
        }

        if (!collision(COORDINATE_BOTTOM_COLLISION,
                       tetris->current_block,
                       tetris->renderer->buffer)
        ) {
            ++tetris->gravity_frame_counter;
            if (tetris->gravity_frame_counter == tetris->gravity_frame_delay) {
                tetris->gravity_frame_counter = 0;
                ++tetris->current_block->y;
                tetris->renderer->buffer->dirty = 1;
            }
        }
        if (tetris->key_drop) {
            while (!collision(COORDINATE_BOTTOM_COLLISION,
                              tetris->current_block,
                              tetris->renderer->buffer)
            ) {
                ++tetris->current_block->y;
                tetris->score += 2;
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_rotate
                 && rotate_collision(tetris->current_block,
                                     tetris->renderer->buffer) != 1
        ) {
            Block_rotate(tetris->current_block);
            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_ghost_block) {
            if (tetris->enable_ghost_block) {
                tetris->enable_ghost_block = 0;
            }
            else {
                tetris->enable_ghost_block = 1;
                set_ghost_block(tetris);
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_left
                 && !collision(COORDINATE_LEFT_COLLISION,
                               tetris->current_block,
                               tetris->renderer->buffer)
        ) {
            --tetris->current_block->x;
            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }
            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_right
                 && !collision(COORDINATE_RIGHT_COLLISION,
                               tetris->current_block,
                               tetris->renderer->buffer)
        ) {
            ++tetris->current_block->x;

            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }

            tetris->renderer->buffer->dirty = 1;
        }
        else if (tetris->key_down
                 && !collision(COORDINATE_BOTTOM_COLLISION,
                               tetris->current_block,
                               tetris->renderer->buffer)
        ) {
            ++tetris->current_block->y;

            if (tetris->enable_ghost_block == 1) {
                set_ghost_block(tetris);
            }

            ++tetris->score;

            Renderer_draw_panel_score(tetris->renderer, tetris->score);

            tetris->renderer->buffer->dirty = 1;
        }
    }
}
Exemple #8
0
/* ------------------------------------------------------------------------------------------------------
   Creates a byte from the waveform

   0..255  new byte
   -1      continue
   -2      error
   -3      no more bytes
--------------------------------------------------------------------------------------------------------- */
int byte_decode(int restart, int new_file)
{
	static int t,t_active,t_byte;
	static int byte,n_bytes,c[6];
	int i,j,k,d[7],sampleval;
	double x;

	// t = number of samples read
	// t_byte = sample where byte starts
	// t_active is > 0 when a signal has been detected

	if(restart) {
		t = t_active = 0;
		update_progress(0.0);
		update_status("Attente du signal...");
	}

	// process next sample
	t++;
	sampleval = next_sample(new_file);
	
	if (sampleval == 40000) {
		return -3;
	}
	x = (double)sampleval / 32768.0;
	x = filter(x);
	x = dilate(x);
	x = median(x);
	x = make_decision(x,d);
	b_median(d);
	update_level(x);

	// print_deep_debug("t: %d, d6 %d, d5 %d, x %0.5f\n", t, d[6], d[5], x);
	// activation test
	if(d[6] && t_active == 0) {
		print_deep_debug(" - act - ");
		t_active = t;
		t_byte = 0;
		n_bytes = 0;
		update_status("Analyse du signal...");
	}
	if(t_active == 0) return -1;

	// deactivation test after a long period of inactivity
	if(t > t_active + 10000) {
		update_status("Désactivation pour cause d'inactivité");
		return -2;
	}

	// new byte?
	if(t_byte == 0 && d[5]) { // new byte
		print_deep_debug(" -- new byte -- ");
		t_active = t_byte = t;
		n_bytes++;
		byte = 0;
		for(i = 0;i < 6;i++)
			c[i] = 0;
	}

	// processing a byte?
	if(t_byte > 0) {
		j = (t - t_byte) / 88;  // bit number; the duration of a bit is very close to 2ms=88.2 samples
		if(j >= 10) { // end of the byte
			print_deep_debug(" [b = %d ] ", byte);
			if((byte & 1) == 0) { // first bit (lsb) must be a one
				print_debug("Bad byte start");
				return -2;
			}
			if(byte >= 512) { // last bit (msb) must be a zero
				print_debug("Bad byte finish");
				return -2;
			}
			byte >>= 1;
			t_byte = 0;
			if(n_bytes > 5) {
				return byte;
			}
			if(byte != 0xAA) { // bad synchronization byte
				print_debug("Bad synchronization byte.");
				return -2;
			}
			print_debug("Found good synchronization byte.");
			return -1; // discard synchronization byte
		}