码迷,mamicode.com
首页 > 其他好文 > 详细

nes 红白机模拟器 第5篇 全屏显示

时间:2017-04-24 12:22:46      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:ima   size   log   color   生成   class   .com   images   ret   

先看一下效果图,全屏是全了,但是效果非常很一般(差)

技术分享

 

放大的原理是使用最初级的算法,直接取对应像素法。

 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篇 全屏显示

标签:ima   size   log   color   生成   class   .com   images   ret   

原文地址:http://www.cnblogs.com/ningci/p/6755623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!