国外大神 魔改灯泡主板 玩《毁灭战士》,太牛了!
![](https://filescdn.proginn.com/e438f2864a7d14ad764c025902a1e450/3be8e0fa1a4c76a447d14b4297eed995.webp)
![](https://filescdn.proginn.com/797149ac09eb510b30b70b96ab282c60/0873ba07231a3ea4146d0e20d83ed506.webp)
![](https://filescdn.proginn.com/37caa61ab078bec91da47a3fb6bd5a6a/e6c3b0223b67ab9c81beccac179036c8.webp)
大约每两年就可以将Doom运行的大小减半。
![](https://filescdn.proginn.com/637e955aac92fa4367b8aabb108083b7/01107df1c4b24d942a2a420a4df7f514.webp)
游戏移植“最跨界”
![](https://filescdn.proginn.com/9f48fec5f16b766d2a124b55ff43a9fe/3728274aae39ef7008f71bdbd5d52738.webp)
1、必须基于现成的设备,且不是用来玩Doom或一般游戏的。 2、所选择的设备有一个计算能力和/或内存相当有限的微控制器,否则没有挑战性。 3、不能添加额外的微控制器。可以超频,但不能额外加冷却装置。
![](https://filescdn.proginn.com/01179243296329e65c0cda81cc02aa6f/7ea7c86e6dec6de97df31b787a780b39.webp)
![](https://filescdn.proginn.com/ade85ef59a7535bf288e1cfa4a045324/c93f7e0afa56c5175dd26b85fc714d61.webp)
为了节省RAM,必须牺牲CPU?
游戏中的对象结构(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的复合纹理渲染模块。
如何攒机?
![](https://filescdn.proginn.com/a1c5551ff647bce234d1d341a6d39c70/3a041aa8a469d32d81c07a7eab5ba029.webp)
![](https://filescdn.proginn.com/56add1c42491893d26bca15ab7bf180d/877ee03abfd1cd5d36c12b3e346a8585.webp)
![](https://filescdn.proginn.com/b7e11d00857623db97a52f67001039f5/82ef78791a97e9abedf6474d5ccf785e.webp)
![](https://filescdn.proginn.com/f7c4a80a464d38450d77e69ecbe835de/509c06a53a78c684c131ae8b4ee5cfb3.webp)
![](https://filescdn.proginn.com/510b4cad5da3d568403e9926493e423f/e5f8df9ba71a7cd352aa91ea27a75afd.webp)
![](https://filescdn.proginn.com/1010ba2d462884c3793389b5fd27084a/89f968a78f9453bd953996ac5fa1ef83.webp)
![](https://filescdn.proginn.com/46d735aab4c047258148b144c6f4a100/4cca11ba01b1cf76f09cddf47afc9a9d.webp)
![](https://filescdn.proginn.com/5ef3d914722c1428140fcd438f2a36d4/b97ecfdc05b0c94ed212a22d38a042dd.webp)
![](https://filescdn.proginn.com/4e93b6b8f6eb308afdc28e6c2a43d23b/c53e17d2066fbbbce1b1200c6853b9eb.webp)
![](https://filescdn.proginn.com/b54339ad27217663597129069a8066d6/e99715cd50c4ef407f445cea882ca247.webp)
![](https://filescdn.proginn.com/13f23299b7bf7cda14f58cbb874beed2/3fb15e960f23983f9415e77a983a6eec.webp)
![](https://filescdn.proginn.com/4db268a604254df697ae98afbab1b4b3/3ebbc106349906ae61a0ffbf27b5aba2.webp)
参考链接:
[1]https://www.youtube.com/watch?v=7ybybf4tJWw
[2]https://next-hack.com/index.php/2021/06/12/lets-port-doom-to-an-ikea-tradfri-lamp/
[3]https://github.com/next-hack/MG21DOOM
[4]https://hackaday.io/project/180182-hacking-an-ikea-trdfri-lamp-to-run-doom
[5]https://news.ycombinator.com/item?id=27498789
[6]https://www.reddit.com/r/programming/comments/nze7lk/doom_running_on_an_ikea_lamp/
[7]https://gamesystemrequirements.com/game/doom
评论