All Stories

加快XP启动速度

  突然想到的,把一些本来设置成手动的服务改成自动,或许会加快系统启动速度。果然有用,大概是因为有些服务设置成手动后,本来是需要的,在系统启动时,却还需要花时间去检测,或是在启动的后期进行启动服务,所以速度变慢了。  好不容易下到个官方命令行版的svn,上去把CodeBlocks的源代码取下来。唉,如果不是因为可执行安装包下不下来,我才懒得弄呢!不过刚好试用一下svn也好,起码比起CVS要先进,比起VSS它是免费的,比起ClearCase它小巧。  射手网真是个好网站,一般流行的片子,都能找到字幕,哈哈,现在才大致知道应该怎么找字幕。  网上很难找make和gdb的文档!有还是有的,但我想要的是用chm或pdf格式的整理好的,却很少很少。如果以后都像写我的方块那样写游戏,可以先考虑用MinGW是否可行,代价是否很大。一般说来,需要一个好的代码编辑器,所以试试CodeBlocks,需要一个强悍的调试器,就用gdb,还需要良好的工程管理,就用GNU make。不过说实话,VC加上VAX插件,绝对是在Windows环境下最牛x的开发环境,但毕竟,都是要n多money的,而前面提到的那些工具,全是GPL的。可以试一下,也许还需要一个GUI开发库,比如Delphi/BCB中的VCL、VC中的MFC,免费的有wxWidget、Fox、QT等等,但都会拖一个大大的链接库,我不需要跨平台可移植,所以,看winx的表现,似乎是可以把WTL单独剥离出来,给MinGW用的,到时候再看看,说不定,只写DirectX游戏的话,对这方面的要求不多呢!

奇怪的MinGW

  很早以前就尝试过用MinGW,总是因为遇到奇怪的问题解决不了而马上放弃。写个小程序,它硬是不照着人想的那样来,资料又奇少无比。但再想想,连MAME这么大的工程都能用它来编译,为什么呢!  配置好了编译环境,整了个makefile,写个小程序,用来生成HTML格式的文件列表的。遇到好多问题,最怪的就是,它生成的程序居然会自动解决命令行参数,比如*.*,它就自动把当前目录下的所有文件名作为参数传进去了,除非用引号包住。开始不知道原因,硬是以为它调用的库函数有bug-_-b  放弃bjam了,白天看了一下它的文档,跟Boost的耦合太强了,似乎不太适合作为通用的工程管理工具,还是用make算了,文档也多,基本上绝大部分的工作都能完成。

去个同事那拷了20多GB的电子书

  昨天就发邮件打了个招呼,今天下班后,带着我的巨巨外置硬盘去了,想不到这位哥们的硬盘更大,是250GB的,比我的大了90GB,晕!电子书有20多个GB,看了看我的4个分区,本来是想放到专门放文档、资料的分区里的,一看居然只剩下8GB多的空间了,很奇怪,先不管了,放到另外一个空很多的分区里。后来才想起来,前段时间才用eMule下了17GB多的MAME ROM,还有很多其它的Emulator,当然占去了20多GB了。拷完东西,出来给小思宇打电话。把睡袋和垫子拿回来,小思宇说在收拾东西,因为明天就要回去了。真牛,她们领导也竟然真肯让她请假这么久,昏倒。  昨天晚上跟小丫头聊天,说了四五点原因,说得很沉重。其实我在想,如果在不远的以后的某一天,这几点原因中超过一半得到了改善,我可能还是会考虑、会继续。唉!

拿得起,放不下

一盏离愁孤灯伫立在窗口我在门后假装你人还没走旧地如重游月圆更寂寞夜半清醒的烛火不忍苛责我一壶漂泊浪迹天涯难入喉你走之后酒暖回忆思念瘦水向东流时间怎么偷花开就一次成熟我却错过 谁在用琵琶弹奏一曲东风破岁月在墙上剥落看见小时候犹记得那年我们都还很年幼而如今琴声幽幽我的等候你没听过谁在用琵琶弹奏一曲东风破枫叶将故事染色结局我看透篱笆外的古道我牵着你走过荒烟漫草的年头就连分手都很沉默 一壶漂泊浪迹天涯难入喉你走之后酒暖回忆思念瘦水向东流时间怎么偷花开就一次成熟我却错过 谁在用琵琶弹奏一曲东风破岁月在墙上剥落看见小时候犹记得那年我们都还很年幼而如今琴声幽幽我的等候你没听过谁在用琵琶弹奏一曲东风破枫叶将故事染色结局我看透篱笆外的古道我牵着你走过荒烟漫草的年头就连分手都谁在用琵琶弹奏一曲东风破岁月在墙上剥落看见小时候犹记得那年我们都还很年幼而如今琴声幽幽我的等候你没听过谁在用琵琶弹奏一曲东风破枫叶将故事染色结局我看透篱笆外的古道我牵着你走过荒烟漫草的年头就连分手都很沉默

make or bjam?

  早上8点的时候,手机就响了,也不知道是谁,郁闷死了,一个打错的!然后想想就还是起来开始洗澡收拾,9点的时候出门,发了条短信。在梅林倒车,在金地花园下车。回忆一下当时走过的路,嘿嘿,还好还记得怎么走的。但哪个房间就忘了,只是依稀记得好像是10楼的,于是只好打电话问了,果然是在10楼的,呵呵。上去坐了一会儿,看了一会儿电视,都没几个台,因为没装数字电视,关外这点比较好,装了有线电视就可以收到好多个台。有个水电工在修下水管,下去买了个新的。过了11点半,说去吃饭吧,走到下面附近一个自助火锅,还真便宜,一人18元,锅底10元,哈哈,我拿了很多水果,吃了很多蟹肉。  吃完火锅,说去医院吧。于是坐到华强南,福田医院站,乱找了一通,总算找到了所谓的福田人民医院。走到体检科,玩了一下视力表,哈哈,我还有1.5呢。结果被告知下午不体检,只有每天上午8点到10点,郁郁地出来,既然都到了上海宾馆了,就逛一下街吧。去天虹、NICO、曼哈逛了,一直到5点多,累了,走进曼哈的麦当劳,买了可乐和鸡翅,亏了,没用优惠券,郁闷!  逛得腿酸!  突然想学一下make或bjam,或者两个都学一下。因为觉得用命令行只能每次全都编译连接一遍,有点浪费时间!写游戏还真是能学到不少东西,居然已经转换到这个上面来了,呵呵。

VC命令行

  用VC7.1写榜单,榜单一般就是一个cpp文件就搞定了。因为有很多个榜单,所以一个一个建工程似乎稍微麻烦了点,后来想想用make能搞定不,可是我又不熟悉make,只好看看能不能写个批处理文件,用命令行来解决。看了一下LUA发布包里的编译用的批处理文件,再看看IDE里的工程属性,照着写了一个,舒服啊,可以一下把所有的都马上全编译连接了。

让VC7.1编译DLL时不连接C运行时库

  照着写单机的榜单,突然发现从某个修改开始,总是会把C运行时库也连接进来,真麻烦,仔细看看自己的代码,实在没必要拖个DLL呀,何况VC7.1的C库是msvcrt71.dll,是不由Windows携带的,所以要发布这个榜单的同时,就要背负需要同时发布这个dll的负担。在工程属性中把可能想到的所有的编译选项都关掉了,用depends看还是连接进来了。仔细想想,应该跟代码有关系。因为把我的代码贴到其它以前编译过不用连接C库的工程里,最后也会有C库被连接进来的。于是心一狠,在工程属性中设置连接时强制不连接C库,看它最后有什么提示。可以看到有浮点数的应用,就要求连接C库了。刚好这时浮点数的应用很简单,可以转换为整形的计算。然后再编译连接,发现是有要连接另外2个函数了,看看函数名,猜想大概跟程序运行安全相关,再到工程属性中把异常和缓冲区检测都关掉,果然可以编译连接通过了。再一步步试,最后发现是因为打开了缓冲区检测,每当程序中用到了数组的操作,就会有连接C库中的一些函数的要求。  终于搞定!

breaking霹雳舞(1)

  没有艺术细胞呀,四肢僵硬呀,肥肉丛生呀!  摇滚步,战斗舞,排腿,结束动作,hoho~~~

游戏驱动(译)

  终于把这篇也整了,原文在这里,同样,还是有些没懂起的。 游戏驱动by Aaron Giles  可能关于MAME怎样工作的最常见的问题是:我应该怎么编写驱动?为了理解怎么编写驱动,你需要理解驱动是怎样连接到MAME中去的,以及众多的驱动相关的难点是什么。这篇文章向你提供在从最顶层的,驱动需要些什么的概况。以后的文章会讲述这些以外的细节。  开始,你得先看一下driver.c里的代码。实际上这个模块做的,只是生成了MAME支持的所有驱动的指针的列表。问题是每个驱动,需要选声明一下:extern struct GameDriver driver_puckman;extern struct GameDriver driver_puckmana; ...  然后所有的驱动被声明了,我们要这样声明一个驱动的列表:const struct GameDriver *drivers[] = {&driver_puckman, &driver_puckmana, ..., 0 };  使用C语言来做这事很烦人,因为它需要我们为每个驱动添加2个东西到driver.c,在顶部的一个声明和最底部的列表中的表项。实际上,在用一些好用的预处理魔法去简化这些事情前,我们已经这样做了好多年。如果你是一个C专家,你可能会指出来,也可能不会,没关系。重要的是,要把驱动添加到主列表中,你只要用特定的DRIVER宏这样声明一次就行了:DRIVER( puckman ) DRIVER( puckmana ) ...  这样把表项插入到列表中,和其它表项一起,你的驱动就已经可以被MAME通过主驱动列表正式引用了!当然,这也是说你实际上需要一个GameDriver对象,用在MAME其它的地方,用相同的名字,用于成功地连接到应用中。那应该怎样正确地定义一个游戏驱动?  基本的GameDriver结构非常简单。它提供一个很基础的信息列表,关于这个驱动的,记录了绝大部分的描述性数据(游戏名,制造商,年份等)和指向其它用于描述游戏使用的硬件的结构的一些指针。比起你自己定义和使用GameDriver结构,你应该简单地使用宏来填充所有的细节内容。如果你看一下驱动目录中任何一个文件的底部,你会看到大量的这种宏用于描述驱动:GAME( 1980, puckman, 0, pacman,...