Beispiel #1
0
void updateGameOver(void)
{
	static int firstUpdate = 0;
	if(!firstUpdate)
	{
		file_handle scores = open_file("scores.txt", false);
		if( scores == -1)
		{
			printf("UH OH...\n");
		}
		byte dataByte = alt_up_sd_card_read(scores);
		int i = 0;
		char buf[50];
		while(dataByte >= 0 && i < 15)
		{
			buf[i] = dataByte;
			i++;
			dataByte = alt_up_sd_card_read(scores);
		}
		char* test = "99999";
		draw_string(test, FINAL_SCORE_X, FINAL_SCORE_Y);
		draw_string(test, HIGH_SCORE_X, HIGH_SCORE_Y);
		firstUpdate = 1;

	}

	draw_box( 90,  130,  110,  140, back_alpha,  1);
    draw_bmp(cursor_bmp, 0, 240-cursor_bmp->bmp_info_header->height,
    		false, back_alpha, 1);

	if(!button_states[0] ||
			(!prev_controller_state.B_BUTTON && controller_state.B_BUTTON ))
	{
		close_bmp(background_bmp);
		changeState(MAIN_MENU);
	}
	else if(!button_states[1] ||
			(!prev_controller_state.Y_BUTTON && controller_state.Y_BUTTON))
	{
		close_bmp(background_bmp);
		changeState(LOADING_SCREEN);
	}

}
Beispiel #2
0
/*
*******************************************************************************
*                     Parse_Pic_BMP
*
* Description:
*    以路径名来解析图片, 并且把解析处理的图片拷贝到指定的地址,
* 如果指定的地址为NULL, 则可以存放在任何地址。
*
* Parameters:
*    Path           :  input.  图片路径
*    PictureInfo    :  output. 图片解析后的信息
*    Addr			:  input.  存放解析后的图片, 
*
* Return value:
*    void
*
* note:
*    void
*
*******************************************************************************
*/
__s32 Parse_Pic_BMP_ByPath(char *Path, Picture_t *PictureInfo, __u32 Addr)
{
    HBMP_i_t hbmp_buf;
    HBMP  hbmp = NULL;
    
    eLIBs_memset(&hbmp_buf, 0, sizeof(HBMP_i_t));
    hbmp = open_bmp(Path, &hbmp_buf);
    if(hbmp == NULL){
        __wrn("ERR: open_bmp failed\n");
        return -1;
    }

    PictureInfo->BitCount = get_bitcount(hbmp);
	PictureInfo->Width    = get_width(hbmp);
	PictureInfo->Height	  = get_height(hbmp);
	PictureInfo->RowSize  = get_rowsize(hbmp);

	PictureInfo->BufferSize = PictureInfo->RowSize * PictureInfo->Height;
	if(Addr){
		PictureInfo->Buffer = (void *)Addr;
	}else{
		PictureInfo->Buffer = (void *)esMEMS_Balloc(PictureInfo->BufferSize);
	}
	if(PictureInfo->Buffer == NULL){
		__wrn("ERR: wboot_malloc failed\n");
        goto error;
	}

	eLIBs_memset(PictureInfo->Buffer, 0, PictureInfo->BufferSize);

	get_matrix(hbmp, PictureInfo->Buffer);

	close_bmp(hbmp);
	hbmp = NULL;

    return 0;

error:
	close_bmp(hbmp);
	
	return -1;
}
Beispiel #3
0
int main(int argc, char *argv[])
{
	int cols, rows;
	char *pData,*data;
	char r,g,b;

	unsigned int bmpdata1[ROWS][COLS];
	unsigned int pixel;
	unsigned int *pfbmap;
	struct fb_var_screeninfo fbvar;
	int fbfd;
	int i,j,k,t;
	

	if(argc != 2){
		usage();
		return 0;
	}
	
	/* ?��??? ???۸? ???? ?? */
	fbfd = open(FBDEVFILE, O_RDWR);
	
	if(fbfd < 0){
		perror("fbdev open");
		exit(1);
	}

	/* mmap ?Լ??? ?̿??Ͽ? flame buffer?? ?޸????? ???? ?ּҸ? ?????? */
	/* 1 pixel?? 2byte?? ?ʿ??ϹǷ? *2 */
	pfbmap = (unsigned int *)
		mmap(0, COLS*ROWS*4,PROT_READ|PROT_WRITE, MAP_SHARED, fbfd, 0);

	if((unsigned)pfbmap == (unsigned)-1)
	{
		perror("fbdev mmap");
		exit(1);
	}

	/*  bmp????�� ?о? ?帲 */	
	read_bmp(argv[1], &pData, &data, &cols,&rows);


	/**************************** Image 1 *********************************/
	i=0;j=0;k=0;

	for(j=0;j<rows;j++){
		k = j*cols*3; /* ?? ?ȼ??? 3byte?ΰ?�� 2byte?? ?ٲ? */
		printf("cols = %d, rows = %d, k = %d\n", cols, j+1, k);
		/* bmp image?? ?????? ?????ǹǷ? ?ؿ??????? ?о??;? ??. */
		for(i=0;i<cols;i++)
		{ 
			b = *(data + (k + i*3));
			g = *(data + (k + i*3+1));
			r = *(data + (k + i*3+2));

			pixel = (r << 16) | (g << 8) | (b);
			bmpdata1[(rows-1-j)][i] = pixel;
		}
	} 	
	/*  bmp ???Ͽ??? ??�� data?? ?��??? ?????? ?޸𸮷? ī?? ?? */
	//memcpy(pfbmap, bmpdata1, COLS*ROWS*4);
	memcpy(pfbmap, bmpdata1, COLS*ROWS*4);
	
	/*      Ȱ?? ??�� ?޷θ???�� ??��?? ?? ?��??? ???۷? close ?? */
	munmap(pfbmap,ROWS*COLS*4);
	close_bmp(&pData);
	close(fbfd);
	return 0;
}
Beispiel #4
0
int main ()
{
    int i, j, k, t;
    int fbfd;
    int screen_width;
    int screen_height;
    int bits_per_pixel;
    int line_length;
    int coor_x, coor_y;
    int cols = 0, rows = 0;
    int mem_size;

    char *pData, *data;
    char r, g, b;
    unsigned long bmpdata[1280*800];
    unsigned long pixel;
    unsigned char *pfbmap;
    unsigned long *ptr;


    struct fb_var_screeninfo fbvar;
    struct fb_fix_screeninfo fbfix;
    printf("=================================\n");
    printf("Frame buffer Application - Bitmap\n");
    printf("=================================\n\n");


    char* file_name = "bike.bmp";

    read_bmp(file_name, &pData, &data, &cols, &rows);
    printf("Bitmap : cols = %d, rows = %d\n", cols, rows);


    for(j = 0; j < rows; j++)
    {
        k = j * cols * 3;
        t = (rows - 1 - j) * cols; // 가로 size가 작을 수도 있다.

        for(i = 0; i < cols; i++)
        {
            b = *(data + (k + i * 3));
            g = *(data + (k + i * 3 + 1));
            r = *(data + (k + i * 3 + 2));

            pixel = ((r<<16) | (g<<8) | b);
            bmpdata[t+i] = pixel;
        }
    }
    close_bmp(&pData); // 메모리 해제

    if( (fbfd = open(FBDEV_FILE, O_RDWR)) < 0) //
    {
        printf("%s: open error\n", FBDEV_FILE);
        exit(1);
    }

    if( ioctl(fbfd, FBIOGET_VSCREENINFO, &fbvar) )
    {
        printf("%s: ioctl error - FBIOGET_VSCREENINFO \n", FBDEV_FILE);
        exit(1);
    }


    if( ioctl(fbfd, FBIOGET_FSCREENINFO, &fbfix) ) // screen info를 얻어옴
    {
        printf("%s: ioctl error - FBIOGET_FSCREENINFO \n", FBDEV_FILE);
        exit(1);
    }


    if (fbvar.bits_per_pixel != 32)
    {
        fprintf(stderr, "bpp is not 32\n");
        exit(1);
    }

    screen_width = fbvar.xres;
    screen_height = fbvar.yres;
    bits_per_pixel = fbvar.bits_per_pixel;
    line_length  = fbfix.line_length;
    mem_size = line_length * screen_height;

    printf("screen_width : %d\n", screen_width);
    printf("screen_height : %d\n", screen_height);
    printf("bits_per_pixel : %d\n", bits_per_pixel);
    printf("line_length : %d\n", line_length);

    pfbmap = (unsigned char *) mmap(0, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED, fbfd, 0);

	// distance control
	int offset_x = 640;
	int offset_y = (screen_height - rows)/2;



    if ((unsigned)pfbmap == (unsigned)-1)
    {
        perror("fbdev mmap\n");
        exit(1);
    }
    for(coor_y = 0; coor_y < screen_height; coor_y++)
    {

        ptr =  (unsigned long *)pfbmap + (screen_width * coor_y);

        for(coor_x = 0; coor_x < screen_width; coor_x++){
            *ptr++ = 0xFFFFFF;
        }
    }

    for(coor_y = offset_y; coor_y < rows +offset_y; coor_y++) {

        ptr = (unsigned long*)pfbmap + (screen_width * coor_y);

	for(coor_x = 0; coor_x < offset_x; coor_x++){
            *ptr++ = 0xFFFFFF;
        }

        for (coor_x = offset_x; coor_x < cols +offset_x; coor_x++) {

            *ptr++ = bmpdata[coor_x-offset_x + (coor_y-offset_y)*cols];

        }
    }

    munmap( pfbmap, mem_size);
    close( fbfd);
    return 0;
}