飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3209|回复: 0

好久没来了,回来看看大家(带来一篇烂文)

[复制链接]

该用户从未签到

发表于 2006-9-28 08:35:57 | 显示全部楼层 |阅读模式
这段时间由硬件转网络工程了,(貌似还是和硬件接触的多)
好久没发文章,先来一篇菜文..(别说我骗贴)
文章没什么高深技术,只希望对需要的人有帮助....
如果你懂这个就飘过,如果不懂,可以停留一、二分钟浏览一下

最近看一个游戏引擎(2D方面的),其实以前就研究过,只是他现在更新到16版了.
有对2D游戏感兴趣的可以访问官网:http://relishgames.com
他已经开放源代码

先说一段前话,记得以前14版时,屏蔽run-time logo,只需要在系统初始化之前
hge->System_Initiate()
加下面一段代码
System_SetState((hgeState)14, 0xFACE0FF)
就可以屏蔽logo,但现在的16版已经不能这样做了...
这个logo是版权logo..估计是作者更新了部分代码...但由于他开源..也就方便研究了..
在源代码中,发现有个数组hgelogo[],头两个字节是0x5089,0x474E...
虽然根据上下文来看也能看出他是一个图片文件..但对于类型当时就不是很清楚了
后来在支持论坛搜索了一下相关信息还有放了一篇求助贴,最后隐约想起来,这个是PNG文件的文件头,这才让我想起了一件事,当是在程序员(游戏创造)杂志中看到过一篇关于PNG文件格式的说明...
如果你把一个*.png图片文件,另存为*.bin,用下面这段程序,你也能建立自己的16进制图片信息....他将保存到一个logo.h中

  1. #include <stdio.h>

  2. void main()
  3. {
  4.    unsigned short c;
  5.    unsigned int n=0;
  6.    FILE *fin =fopen("data.bin","rb");
  7.    FILE *fout=fopen("logo.h" ,"wb");
  8.    if(!fin||!fout) {printf("not found data.bin!\n");return;}
  9.    fprintf(fout,"unsigned short logo[]={\r\n");
  10.    while(1)
  11.    {
  12.       fread(&c, sizeof(unsigned short), 1,fin);
  13.       if(feof(fin)) break;
  14.       fprintf(fout,"0x%04X,",c);
  15.       if(++n%16==0) fprintf(fout,"\r\n");
  16.    }
  17.    fseek(fout,-1,SEEK_CUR);
  18.    fprintf(fout,"\r\n};\r\n");
  19.    fclose(fout);
  20.    fclose(fin);
  21. }
复制代码

代码很容易看懂,在此就不做解释了...:lol:
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表