首页 > 代码库 > nes 红白机模拟器 第5篇 全屏显示
nes 红白机模拟器 第5篇 全屏显示
先看一下效果图,全屏是全了,但是效果非常很一般(差)
放大的原理是使用最初级的算法,直接取对应像素法。
1 /** 2 * 生成zoom 缩放表 3 */ 4 int make_zoom_tab() 5 { 6 int i; 7 zoom_x_tab = (int *)malloc(sizeof(int) * NES_DISP_WIDTH); 8 if(NULL == zoom_x_tab) 9 { 10 printf("make zoom_x_tab error\n"); 11 return -1; 12 } 13 for(i=0; i<NES_DISP_WIDTH; i++) 14 { 15 zoom_x_tab[i] = i*lcd_width/NES_DISP_WIDTH; 16 } 17 zoom_y_tab = (int *)malloc(sizeof(int) * NES_DISP_HEIGHT); 18 if(NULL == zoom_y_tab) 19 { 20 printf("make zoom_y_tab error\n"); 21 return -1; 22 } 23 for(i=0; i<NES_DISP_HEIGHT; i++) 24 { 25 zoom_y_tab[i] = i*lcd_height/NES_DISP_HEIGHT; 26 } 27 return 1; 28 } 29 30 static int lcd_fb_display_px(WORD color, int x, int y) 31 { 32 unsigned char *pen8; 33 unsigned short *pen16; 34 //从缩放表中取出对应的颜色值 35 x = zoom_x_tab[x]; 36 y = zoom_y_tab[y]; 37 pen8 = (unsigned char *)(fb_mem + y*line_width + x*px_width); 38 pen16 = (unsigned short *)pen8; 39 *pen16 = color; 40 41 return 0; 42 }
马上更新高级点的放大算法。
nes 红白机模拟器 第5篇 全屏显示
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。