Beispiel #1
0
void game_init(GameState* gs) {

  // Bind tiles vbo
  glGenBuffers(1, &gs->tiles_vbo);
  glBindBuffer(GL_ARRAY_BUFFER, gs->tiles_vbo);
  glBufferData(GL_ARRAY_BUFFER, sizeof(TILES_VBO)*sizeof(float), TILES_VBO, GL_STATIC_DRAW);

  gs->tiles_sheet = bitmap_load("bmp/tiles.bmp");
  gs->tiles_program = pipeline_new(
    shader_new(SHADER_VERTEX, "shader/tiles.vert"),
    shader_new(SHADER_FRAGMENT, "shader/tiles.frag"));

  pipeline_attribute(gs->tiles_program, "coord", 0);
  pipeline_attribute(gs->tiles_program, "st", 1);
  pipeline_uniform(gs->tiles_program, "pos", 0);
  pipeline_uniform(gs->tiles_program, "tex", 1);
  pipeline_uniform(gs->tiles_program, "tile", 2);

  // Bind player vbo
  glGenBuffers(1, &gs->player_vbo);
  glBindBuffer(GL_ARRAY_BUFFER, gs->player_vbo);
  glBufferData(GL_ARRAY_BUFFER, sizeof(PLAYER_VBO)*sizeof(float), PLAYER_VBO, GL_STATIC_DRAW);

  // load player spritesheet
  gs->player_spritesheet = bitmap_load("bmp/player.bmp");
  gs->player_x = gs->player_y = 0;
  gs->player_vx = gs->player_vy = 0;

  // create player render pipeline
  gs->player_program = pipeline_new(
    shader_new(SHADER_VERTEX, "shader/player.vert"),
    shader_new(SHADER_FRAGMENT, "shader/player.frag"));

  pipeline_attribute(gs->player_program, "coord", 0);
  pipeline_attribute(gs->player_program, "st", 1);
  pipeline_uniform(gs->player_program, "pos", 0);
  pipeline_uniform(gs->player_program, "tex", 1);
  pipeline_uniform(gs->player_program, "dir", 2);

  // Load audio stuff
  gs->bounce_sound = sound_load("sound/bounce.ogg");
  gs->ouch_sound = sound_load("sound/ouch.ogg");
  alGenSources(1, &gs->player_source);

  // Entity stuff
  gs->num_entities = 1;
  gs->ent[0].vbo = gs->player_vbo;
  gs->ent[0].spritesheet = gs->player_spritesheet;
  gs->ent[0].frame = 0;
  gs->ent[0].vx = gs->ent[0].vy = 8;
  gs->ent[0].x = gs->ent[0].y = 8;
  gs->ent[0].program = gs->player_program;
}
Beispiel #2
0
int main(void)
{
    struct sched_param param = { .sched_priority = 0 };
    FILE * fp;
    size_t fb_size;

    if (sched_setscheduler(getpid(), SCHED_FIFO, &param)) {
        perror("failed to set SCHED_FIFO");
        return 1;
    }

    bip = bitmap_load("ball.bmp");
    if (!bip) {
        perror("Failed to load a bitmap");
        return 1;
    }

    fp = fopen("/dev/fbmm0", "r");
    if (!fp) {
        perror("Failed to open fb");
        return 1;
    }

    ioctl(fileno(fp), IOCTL_FB_GETRES, &resolution);
    fb_size = resolution.height * resolution.pitch + resolution.width * 3;

    fb = mmap(NULL, fb_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fileno(fp), 0);
    bf = malloc(fb_size);

    bouncer();

    munmap(fb, 0);

    return 0;
}
Beispiel #3
0
static void main_window_load(Window *window) {
  Layer  *root_layer = window_get_root_layer(window);
  
  bitmap_load(root_layer);
  date_time_load(root_layer);
  battery_load(root_layer);
}
Beispiel #4
0
/** 
 * Load text data, font bitmap and clear list and structure chars 
 * @return TRUE if it completed successfully or FALSE otherwise
 */
bool
scrolltext_once_init (void)
{
  Sint32 i;
  fntscroll *schar;

  scrolltext_free ();

  if (!scrolltext_load ())
    {
      return FALSE;
    }

  /* extract scrolltext font bitmap (12,143 bytes) */
  if (!bitmap_load
      ("graphics/bitmap/fonts/font_scrolltext.spr", &fnt_scroll[0], 1,
       FONT_SCROLLTEXT_MAXOF_GLYPHS))
    {
      return FALSE;
    }

  /* allocate empty string */
  if (scrolltext_emtpy == NULL)
    {
      scrolltext_emtpy = memory_allocation (SCROLLTEXT_EMPTY_LENGTH + 1);
      if (scrolltext_emtpy == NULL)
        {
          LOG_ERR ("scrolltext_emtpy out of memory");
          return FALSE;
        }
      for (i = 0; i < SCROLLTEXT_EMPTY_LENGTH; i++)
        {
          scrolltext_emtpy[i] = ' ';
        }
      scrolltext_emtpy[i] = '\0';
    }

  /* allocate chars elements */
  if (scrolltext_chars == NULL)
    {
      scrolltext_chars =
        (fntscroll *) memory_allocation (SCROLLTEXT_MAXOF_CHARS *
                                         sizeof (fntscroll));
      if (scrolltext_chars == NULL)
        {
          LOG_ERR ("scrolltext_chars out of memory");
          return FALSE;
        }
    }

  /* clear list and chars elements */
  for (i = 0; i < SCROLLTEXT_MAXOF_CHARS; i++)
    {
      schar = &scrolltext_chars[i];
      schar->is_enabled = FALSE;
    }
  scrolltext_numof_chars = 0;
  scrolltext_init ();
  return TRUE;
}
Beispiel #5
0
/*
 * Initialize mixer control thread
 */
int mixer_init(void)
{
    msgqueue_init(&mixerq);
    pthread_t mixerthread;
  
    pthread_mutex_init(&mixer_mutex, NULL);
    pthread_cond_init(&state_cond, NULL);
    pthread_create(&mixerthread, NULL, (void *) mixer_msg_loop, NULL);

    bitmap_load(&volume_control, "gfx/volume.u16");	
    volume_backing.width = volume_control.width;
    volume_backing.height = volume_control.height;
    volume_backing.bitmap = malloc(volume_control.width * volume_control.height * sizeof(__u16));
    volume_backing.x = 0;
    volume_backing.y = 0;

    if (!volume_backing.bitmap) {
        /* out of memory already, we are in trouble...... */
        DBG_PRINTF("mixer: out-of-memory\n");
        return -1;
    }

    set_volume(master_volume, master_volume);

    return 0;
}
void projectile_list_init(){
	if( (projectiles = (projectile_list *)malloc(sizeof(projectile_list))) == NULL)
		return;

	projectile_img = bitmap_load("projectile.bmp");

	projectiles->head = NULL;
	return;
}
Beispiel #7
0
int bitmap_play(char * filename)
{
    char ch;

    if (fb_init())
    {
	printf ("Unable to init framebuffer device\n");
	return 2;
    }

    fb_pixel * bmp_buffer;

    if ((bmp_buffer = bitmap_load(filename)) == NULL)
    {
	fb_uninit();
	printf ("Error while reading bitmap\n");
	return 1;
    }

    fb_clear_screen(screen);

    bitmap_render(bmp_buffer);

    init_keyboard();

    ch=0;
    while (1)
    {
	if (!kbhit()) 
	{
	    ch = readch();
	    if (ch == KEY_ESC) break;
	    if (ch == KEY_UP && position_y >= JUMP_SIZE) position_y-=JUMP_SIZE;
	    if (ch == KEY_DOWN && fb_yres <= (bmp_info.bi_height-position_y-JUMP_SIZE)) position_y+=JUMP_SIZE;
	    if (ch == KEY_LEFT && position_x >= JUMP_SIZE) position_x-=JUMP_SIZE;
	    if (ch == KEY_RIGHT && fb_xres <= (bmp_info.bi_width-position_x-JUMP_SIZE)) position_x+=JUMP_SIZE;
	    ch = 0;
	    bitmap_render(bmp_buffer);
	}
    }

    close_keyboard();

    fflush(stdin);

    fb_clear_screen(screen);

    bitmap_free(bmp_buffer);
    fb_uninit();
    return 0;
}
void start_menu_init(){
	start_menu = create_menu("spaceinvader_font_transparent.bmp");

	button* singleplayer = create_button(512, 250, 500, 90, ALIGN_CENTER, &start_menu_singleplayer_on_click, "Singleplayer", rgb(0xFFFFFF), ALIGN_CENTER);
	menu_add_button(start_menu, singleplayer);
	button* multiplayer = create_button(512, 350, 500, 90, ALIGN_CENTER, &start_menu_multiplayer_on_click, "Multiplayer", rgb(0xFFFFFF), ALIGN_CENTER);
	menu_add_button(start_menu, multiplayer);
	button* highscore = create_button(512, 450, 500, 90, ALIGN_CENTER, &start_menu_highscore_on_click, "Highscores", rgb(0xFFFFFF), ALIGN_CENTER);
	menu_add_button(start_menu, highscore);
	button* options = create_button(512, 550, 500, 90, ALIGN_CENTER, &start_menu_options_on_click, "Options", rgb(0xFFFFFF), ALIGN_CENTER);
	menu_add_button(start_menu, options);
	button* exit = create_button(512, 650, 500, 90, ALIGN_CENTER, &start_menu_exit_on_click, "Exit", rgb(0xFFFFFF), ALIGN_CENTER);
	menu_add_button(start_menu, exit);

	title = bitmap_load("title.bmp");
}
Beispiel #9
0
void boot_init(int* argc, char** argv) {

  int error;

  fail_if(glfwInit() == false);

  // OpenGL version 3
  glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
  glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 0);

  // No window resize
  glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, true);
  // 400% gameboy scale, 5 bit rgb with 1 bit alpha, 8 bit z buffer
  fail_if(glfwOpenWindow(160 * 4, 144 * 4, 5, 5, 5, 1, 8, 0, GLFW_WINDOW) == false);

  glfwSetWindowTitle("");

  glfwEnable(GLFW_AUTO_POLL_EVENTS); // Automatically poll input on swap
  glfwSwapInterval(1); // 0: vsync off, 1: vsync on 

  printf("Renderer: %s\n", glGetString(GL_RENDERER));
  printf("GL Version: %s\n", glGetString(GL_VERSION));
  printf("Using GLSL: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));

  error = glewInit();

  if (error != GLEW_OK) {
    fprintf(stderr, "GLEW error: %s\n", glewGetErrorString(error));
  }

  printf("GL Extension Wrangler: %s\n", glewGetString(GLEW_VERSION));

  // Load audio
  fail_if(alutInit(argc, argv) == false);

  glClearColor(206.0/255.0, 230.0/255.0, 165.0/255.0, 1.0f);
  glEnable(GL_SCISSOR_TEST); // For geom culling
  
  // transparency
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  // z-buffer
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);

  // Set up perspective
  glOrtho(0, 160, 144, 0, -1.0, 1.0);
  glDepthRange(-1.0f, 1.0f);
  glViewport(0, 0, 160 * 4, 144 * 4);

  // This is where Ill put the logo thing
  unsigned logo = bitmap_load("bmp/logo.bmp");
  unsigned logo_vbo;
  float t0, t1, dt;
  float logo_x = 16, logo_y = -80;
  float logo_v[] = {
    0,     0, 0, 1.0 - 0,
    0,   128, 0, 1.0 - 1,
    128, 128, 1, 1.0 - 1,
    128,   0, 1, 1.0 - 0,
  };

  glGenBuffers(1, &logo_vbo);
  glBindBuffer(GL_ARRAY_BUFFER, logo_vbo);
  glBufferData(GL_ARRAY_BUFFER, sizeof(logo_v)*sizeof(float), logo_v, GL_STATIC_DRAW);
 
  Pipeline* logo_program = pipeline_new(
    shader_new(SHADER_VERTEX, "shader/logo.vert"),
    shader_new(SHADER_FRAGMENT, "shader/logo.frag"));

  pipeline_attribute(logo_program, "coord", 0);
  pipeline_attribute(logo_program, "st", 1);
  pipeline_uniform(logo_program, "pos", 0);
  pipeline_uniform(logo_program, "tex", 1);

  glUseProgram(logo_program->id);

  // Bind the logo to texture 0
  glActiveTexture(GL_TEXTURE0);
  glBindTexture(GL_TEXTURE_2D, logo);
  glUniform1i(logo_program->uniform[1], 0);

  // Bind logo vbo
  glBindBuffer(GL_ARRAY_BUFFER, logo_vbo);
  glEnableVertexAttribArray(logo_program->attribute[0]);
  glVertexAttribPointer(logo_program->attribute[0], 2, GL_FLOAT, false, 4*sizeof(float), (void*)0);
  glEnableVertexAttribArray(logo_program->attribute[1]);
  glVertexAttribPointer(logo_program->attribute[1], 2, GL_FLOAT, false, 4*sizeof(float), (void*)(2 * sizeof(float)));

  // load sound
  unsigned sound_source;
  alGenSources(1, &sound_source);
  Sound* ding = sound_load("sound/ding.ogg");

  alSourcei(sound_source, AL_BUFFER, ding->buffer);
  
  glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
  glfwSwapBuffers();

  sleep(1);

  t0 = glfwGetTime();
  while (logo_y < 8) {
    t1 = glfwGetTime();
    dt = t1 - t0;
    t0 = t1;

    logo_y += 50 * dt;

    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);

    glUniform2f(logo_program->uniform[0], roundf(logo_x), roundf(logo_y));

    // Render logo
    glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

    glfwSwapBuffers();
  }

  alSourcePlay(sound_source);

  glDisableVertexAttribArray(logo_program->attribute[0]);
  glDisableVertexAttribArray(logo_program->attribute[1]);

  sleep(1);
}
Beispiel #10
0
static int simplefs_fill_super(struct super_block *sb, void *data, int silent) {
	struct buffer_head *bh;
	struct simplefs_super *rsb;
	struct simplefs_super_info *sbi;
	struct inode *root;
	int i, j, cnt, ret = 0;

	printk(KERN_INFO "simplefs_fill_super\n");
	if (!(bh = sb_bread(sb, SIMPLEFS_SUPER_BNO))) {
		printk(KERN_ERR "Simplefs: unable to read superblock\n");
		return -ENOMEM;
	}
	sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
	if (!sbi) {
		ret = -ENOMEM;
		goto out;
	}
	sbi->s_sb = bh;
	memcpy(&sbi->raw_super, bh->b_data, sizeof(sbi->raw_super));
	sb->s_fs_info = sbi;
	sb->s_blocksize = SIMPLEFS_BLOCKSIZE;
	sb->s_flags = sb->s_flags & ~MS_POSIXACL;

	/*
	 * set up enough so that it can read an inode
	 */
	sb->s_op = &simplefs_super_operations;
	root = simplefs_iget(sb, SIMPLEFS_ROOT_INO);
	if (!root) {
		printk(KERN_ERR "Simplefs: corrupt root inode\n");
		ret = -EINVAL;
		goto failed_root;
	}
	printk(KERN_INFO "simplefs_fill_super -> simplefs_iget ok: %ld\n", root->i_ino);
	
	sb->s_root = d_alloc_root(root);
	if (!sb->s_root) {
		iput(root);
		printk(KERN_ERR "Simplefs: get root dentry failed\n");
		ret = -ENOMEM;
		goto failed_root;
	}
	printk(KERN_INFO "simplefs_fill_super -> d_alloc_root ok\n");

	
	cnt = sbi->raw_super.s_inode_bitmap_blknr + sbi->raw_super.s_block_bitmap_blknr;
	if (!(sbi->s_bitmaps = kzalloc(sizeof(struct buffer_head *) * cnt, GFP_KERNEL)))
		goto failed_bitmap;
	for (i = 0, j = 0; i < cnt; i++) {
		if (!(bh = bitmap_load(sb, SIMPLEFS_SUPER_BNO + 1 + i)))
			goto failed_load;
		sbi->s_bitmaps[j++] = bh;
		printk(KERN_INFO "simplefs_fill_super bitmap ok:%d -> %d\n", cnt, i);
	}
	rsb = &sbi->raw_super;
	printk("fill super ok: (inode %d %d %d) (block %d %d %d)\n",
	       rsb->s_inode_bitmap_blknr, rsb->s_inode_blknr, rsb->s_free_inodes_count,
	       rsb->s_block_bitmap_blknr, rsb->s_block_blknr, rsb->s_free_blocks_count);
	return 0;
 failed_load:
	for (i = 0; i < j; i++) {
		brelse(sbi->s_bitmaps[i]);
	}
 failed_bitmap:
	dput(sb->s_root);
 failed_root:
	kfree(sbi);
 out:
	brelse(bh);
	sbi->s_sb = NULL;
	printk("simplefs get sb failed.\n");
	return ret;
}
Beispiel #11
0
void alien_list_init() {
	direction = 1;

	if ((invaders = (alien_list*) malloc(sizeof(alien_list))) == NULL)
		return;

	invaders->head = NULL;
	invaders->last = NULL;
	invaders->movement_frequency = INITIAL_MOV_FREQ;

	ufo = NULL;

	unsigned char row_pos;
	unsigned char line = 0;
	unsigned char counter;
	int x = INITIAL_X_POS;
	int y = INITIAL_Y_POS;
	enum alien_type type;

	for (counter = 0; counter < ALIENS_PER_ROW * ALIEN_ROWS; counter++) {

		if (counter % ALIENS_PER_ROW == 0) {
			y += ALIEN_HEIGHT + ALIEN_SPACEMENT;
			x = INITIAL_X_POS;
			line++;
		}
		else
			x += ALIEN_WIDTH + ALIEN_SPACEMENT;

		switch(line){
		case 1:
			type = SMALL;
			break;
		case 2: case 3:
			type = MEDIUM;
			break;
		case 4:	case 5:
			type = LARGE;
			break;
		}
		alien_add((alien_init(x, y, type)));
	}

	search_new_extreme(1);
	search_new_extreme(2);

	//initialize small aliens animation
	invaders->small_alien = animation_init();
	animation_add_by_filename(invaders->small_alien, "small_invader1.bmp");
	animation_add_by_filename(invaders->small_alien, "small_invader2.bmp");

	//initialize medium aliens animation
	invaders->medium_alien = animation_init();
	animation_add_by_filename(invaders->medium_alien, "medium_invader1.bmp");
	animation_add_by_filename(invaders->medium_alien, "medium_invader2.bmp");

	//initialize large aliens animation
	invaders->large_alien = animation_init();
	animation_add_by_filename(invaders->large_alien, "large_invader1.bmp");
	animation_add_by_filename(invaders->large_alien, "large_invader2.bmp");

	//initialize ufo image
	ufo_img = bitmap_load("ufo.bmp");

	invaders->destroy = animation_init();
	animation_add_by_filename(invaders->destroy, "explosion.bmp");
}
Beispiel #12
0
int racinix_start()
{
	//vg_exit(); // Fix darker colors first time the mode is changed.
	vg_init(RACINIX_VIDEO_MODE);
	vbe_get_mode_info(RACINIX_VIDEO_MODE, &vmi);

	mouse_position = vectorCreate(vmi.XResolution / 2, vmi.YResolution / 2);

	// Initialize pointers to NULL so that in case of error the program is terminated properly.
	race = NULL;
	bitmap_background = NULL;
	bitmap_mouse_cursor = NULL;
	bitmap_red_car = NULL;
	bitmap_blue_car = NULL;
	bitmap_credits = NULL;
	bitmap_speedometer = NULL;
	font_impact = NULL;
	ad = NULL;

	bitmap_background = bitmap_load(RACINIX_FOLDER_IMAGES "background.bmp");
	if (bitmap_background == NULL)
	{
		return 1;
	}
	bitmap_mouse_cursor = bitmap_load(RACINIX_FOLDER_IMAGES "cursor.bmp");
	if (bitmap_mouse_cursor == NULL)
	{
		return 1;
	}
	bitmap_red_car = bitmap_load(RACINIX_FOLDER_IMAGES "red_car.bmp");
	if (bitmap_red_car == NULL)
	{
		return 1;
	}
	bitmap_blue_car = bitmap_load(RACINIX_FOLDER_IMAGES "blue_car.bmp");
	if (bitmap_blue_car == NULL)
	{
		return 1;
	}
	bitmap_credits = bitmap_load(RACINIX_FOLDER_IMAGES "credits.bmp");
	if (bitmap_credits == NULL)
	{
		return 1;
	}
	bitmap_speedometer = bitmap_load(RACINIX_FOLDER_IMAGES "speedometer.bmp");
	if (bitmap_speedometer == NULL)
	{
		return 1;
	}
	font_impact = font_load(RACINIX_FOLDER_FONTS "impact");
	if (font_impact == NULL)
	{
		return 1;
	}

	if ((ad = ad_create(RACINIX_FILE_ADS, 120, font_impact, RACINIX_COLOR_ORANGE)) == NULL)
	{
		return 1;
	}

	vehicle_keys[0].accelerate = KEY_W;
	vehicle_keys[0].brake = KEY_S;
	vehicle_keys[0].turn_left = KEY_A;
	vehicle_keys[0].turn_right = KEY_D;

	vehicle_keys[1].accelerate = KEY_ARR_UP;
	vehicle_keys[1].brake = KEY_ARR_DOWN;
	vehicle_keys[1].turn_left = KEY_ARR_LEFT;
	vehicle_keys[1].turn_right = KEY_ARR_RIGHT;

	vehicle_colors[0] = VIDEO_GR_RED;
	vehicle_colors[1] = VIDEO_GR_BLUE;

	vehicle_bitmaps[0] = bitmap_red_car;
	vehicle_bitmaps[1] = bitmap_blue_car;
	if (racinix_dispatcher())
	{
		return 1;
	}
	return 0;
}