國(guó)外大神 魔改燈泡主板 玩《毀滅戰(zhàn)士》,太牛了!



大約每?jī)赡昃涂梢詫oom運(yùn)行的大小減半。

游戲移植“最跨界”

1、必須基于現(xiàn)成的設(shè)備,且不是用來(lái)玩Doom或一般游戲的。 2、所選擇的設(shè)備有一個(gè)計(jì)算能力和/或內(nèi)存相當(dāng)有限的微控制器,否則沒(méi)有挑戰(zhàn)性。 3、不能添加額外的微控制器。可以超頻,但不能額外加冷卻裝置。


為了節(jié)省RAM,必須犧牲CPU?
游戲中的對(duì)象結(jié)構(gòu)(mobj_t)優(yōu)化到到92字節(jié),在更復(fù)雜的關(guān)卡地圖上可以省出很多。靜態(tài)對(duì)象,如關(guān)卡bonus和裝飾品,專(zhuān)門(mén)為它們創(chuàng)建了一個(gè)靜態(tài)mobj類(lèi)型,將內(nèi)存需求削減到一半(44字節(jié))。在某些關(guān)卡中,有超過(guò)200個(gè)這樣的對(duì)象。節(jié)省了超過(guò)30kB的內(nèi)存。 對(duì)象(mobj_t和static_mobj_t)使用了內(nèi)存池,動(dòng)態(tài)分配的開(kāi)銷(xiāo)減少到1字節(jié)/對(duì)象,而池內(nèi)只有16個(gè)條目。但為了實(shí)現(xiàn)這一點(diǎn),還必須盡可能使用8位或16位數(shù)組索引,而不是指針。 游戲中的紋理,比如墻面、地面在游戲過(guò)程中會(huì)發(fā)生變化,所以它們需要長(zhǎng)時(shí)間保存在RAM中。但實(shí)際游戲中的紋理數(shù)量是非常有限的。因此,單獨(dú)創(chuàng)建了數(shù)組來(lái)存儲(chǔ)可改變的紋理信息,而其他的靜態(tài)紋理則從外部閃存中讀取。 選用的160×128像素的顯示器本來(lái)需要一個(gè)20kB的緩沖區(qū),但Nicola選擇首先計(jì)算并渲染160×96像素的3D場(chǎng)景,將結(jié)果發(fā)送到顯示器。然后再繪制游戲中的狀態(tài)欄,發(fā)送剩余的160×32像素。這樣就節(jié)省了5個(gè)寶貴的KB,卻不影響性能。 最后,優(yōu)化中徹底刪除了占用16Kb的復(fù)合紋理渲染模塊。
如何攢機(jī)?












參考鏈接:
[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
評(píng)論
圖片
表情
