欢迎来到扬州恩信交通器材有限公司官网!

在更复杂的关卡地图上可以交通信号灯省出很


  极客们把这款猛男必玩的游戏移植到五花八门的设上,iPod Nano、ATM机、示波器、验孕棒(壳)……

  但是,「全栈野生钢铁侠」Nicola Wrachien看了技术方案以后表示:这个不够硬核。

  所谓“验孕棒”玩《毁灭战士》,其实只用了验孕棒的壳,原有的处理器和屏都被换掉了。交通信号灯

  1、必须基于现成的设,且不是用钙类法来男实玩Doom或一般游戏的。2、所选择的设有一个计算能力和/或内存相当有限的微控制器,否则没有挑星史论战性。3、不能添加额外的微控制器。可以超频,但不能额外加冷却装置。

  但如今电子设大部分的计算能力都相当高,运行Doom不在话下…老哥环顾四周,发现宜家在售的TRDFRI Zigbee灯泡不错。

  这款灯泡可以实现自由控制明暗、颜色,其中的微控制器,刚好是Nicola Wrachien工作的美国半导体商芯科科技的产品。

  Nicola的目标,是能在108kB内存上运行《毁灭战士》张地图。

  随着优化推进,他发现可以将全部地图运行时的RAM使用量控制在108kb以内,而且包括动态和静态、堆栈和帧缓冲区。

  为此,他进行了15项大大小小的优化,这些工作,构成了这次全栈移植《毁灭战士》到灯泡控制的核心。

  首先是对Doom代码本身优化。Doom广泛使用32位,交通信号灯但其实16位或8位指令就足够了。

  其次是枚举的使用非常频繁。移植后的Doom没有使用枚举数据类型,而是将数据大小修剪为能存储的值。

  此外,还减少了画面材质的路径、绘图数、和视觉数。因为后呈现的显示器像素并不高,所以不会对视觉效果产生负面影响。

  还有一点重要的优化:既然如今已经不采用32位指令,而且内存也小于128k,那么也没有必要再用32位指针了。

  游戏中几乎所有的指针都指向4字节对齐的结构,交通信号灯这意味着 16 位指针就足够了。这个策略实际上是为RAM牺牲CPU能力,但处理器0MHz的基频完全没有压力。

  游戏中的对象结构(mobj_t)优化到到92字节,在更复杂的关卡地图上可以省出很多。静态对象,如关卡bonus和装饰品,专门为它们创建了一个静态mobj类型,将内存需求削减到一半(44字节)。在某些关卡中,有超过200个这样的对象。节省了超过30kB的内存。对象(mobj_t和static_mobj_t)使用了内存池,动态分配的开销减少到1字节/对象,而池内只有16个条目。但为了实现这一点,交通信号灯还必须尽可能使用8位或16位数组索引,而不是指针。游戏中的纹理,比如墙面、地面在游戏过程中会发生变化,所以它们需要长时间保存在RAM中。但实际游戏中的纹理数量是非常有限的。因此,单独创建了数组来存储可改变的纹理信息,而其他的静态纹理则从外部闪存中读取。选用的160×128像素的显示器本来需要一个20kB的缓冲区,但Nicola选择首先计算并渲染160×96像素的3D场景,将结果发送到显示器。然后再绘制游戏中的状态栏,发送剩余的160×32像素。这样就节省了5个宝贵的KB,却不影响性能。后,优化中彻底删除了占用16Kb的复合纹理渲染模块。

  内存优化达标,实际上是对CPU进行了降频,此外还禁用了数据缓存,但这也造成出了一个非常严重的问题:读写速度极其依赖于数据接口,而不是实际的CPU能力。交通信号灯

  这款处理器的SPI时钟速率被限制在20MHz,外围总线MHz,但实测后发现这个数字是非常保守的,至少在室温下超频到80MHz完全没压力。

  对游戏本身搞了“削足适履”式的优化,还对CPU进行了极限超频,《毁灭战士》硬核跨界的基础条件终于具了,接下来就是硬件DIY部分。

  步拆灯,交通信号灯同时也要拆分高压AC-DC电源和RF模块+DC-DC转换器。

  由于在输入电压过低时,R25会使DC-DC转换器关闭,因此在这里要把R25移除。

  接下来,只需将DC-DC和RF板焊接到原型板上,当然还需要留出输入、输出、接地电线。

  如果想要更高质量的音频,还可以连接一个低通滤波器。由于空间限制,开发者在这里只留了一个2针接头。

  后,把几块板组装起来,再接上价格友好的TFT 160×128 SPI显示器,就可以进行编程调试了。

  需要注意的是,改装后的设只支持低于30V的直流电压供电,不能在交流电源下运行。

  该设可以用任何兼容JLink(JTAG调试仿真器)的SWD编程器进行编程。

  然后将设通电,设置为YMODEM上传模式,这一步完成之后就能进入游戏了。
以上信息由扬州市旭瑞照明器材有限公司整理编辑,了解更多交通信号灯,红绿灯,标志牌信息请访问http://www.yzxrjt.com


在线客服

在线咨询

全国服务热线:
400-6699-897
咨询电话:
18014982991
二维码

打开微信扫一扫