有哪些硬體限制對軟體設計造成影響的例子?
一切硬體限制,都是錢的問題某廠初次涉足遊戲機行業,為了打下江山,機子配置相當高,但是開發時間緊,成本又有限制,於是採購了現成的PC處理器遊戲機尤其是配置較高的遊戲機,如果買機子不買遊戲,那就是虧錢的。而這機器又採用PC配件,特別容易跑其他軟體,所以必須防止用戶破解自己裝其他軟體。那時也沒有TPM、Secure boot這種花里胡哨的東西,現成的PC處理器要是換BIOS,破解簡直毫不費力。於是某廠就很聰明的想出在南橋里隱藏一個bootrom,CPU訪問啟動地址的時候,南橋會把bootrom映射上來,BIOS裡面相同地址就放個假的bootrom讓他們瞎折騰好了。Bootrom負責最基本的初始化、驗證BIOS其他文件的完整性,然後載入BIOS剩下的代碼。若是驗證失敗,關掉rom然後鎖死CPU。啟動後也要把這個bootrom關掉,這樣就無論如何都不怕rom被dump了。我真是太機智了
然而越是有錢越是想砸錢佔領市場,就越是要把錢花在刀刃上。機器配置和售價大體敲定後,就該壓縮成本了。RAM買這麼好的幹嘛,良率高的話價錢往上漲,不行,你有多少貨我都買,不管穩定頻率是多少。Bootrom是mask rom, 很貴的,做這麼大幹嘛,512位元組你們自己看著辦。
這就很尷尬了。因為RAM不穩,所以每台機器都沒有固定的主頻,而是每次開機現測,哪個頻率穩就選哪個頻率。這個艱巨的任務當然.....放在了bootrom裡面。512位元組已經很緊張了,現在還多出這麼一檔子事,後面驗證BIOS的代碼能不能優化下?於是優化的方案是實現了一個RC5 hash,然後只比對hash最後幾位(空間緊張到完整的hash都放不下)。然後RC5法務那邊說有問題不能用,短期內談不下來,換RC4行不行?好吧就換RC4吧....RC4的hash如果源文件當中修改,最後不修改,那麼hash最後幾位是不會變的......華麗麗的被破解成渣渣了....以及原本驗證失敗後鎖死CPU的方案是把程序計數器加到快滿,然後最後一個指令關閉rom,這樣關閉rom後程序計數器就溢出,因為這時候才剛啟動,沒有人接exception,機器就鎖死了。其實真的是很聰明的方法然而老闆說A社的CPU報價太高,現在已經決定了,I社來當供應商該社的CPU程序計數器溢出是不報錯的,直接繞一圈回來到0接著跑,只要事先在0的地址上布置好代碼,有啥跑啥這下破解的連渣渣都不剩了......
於是該廠雖說以業界良心的名號成功在遊戲主機行業立足,但足足虧了四十億美金....@vczh就是你廠太多了吧。比如為什麼遊戲不用全光線跟蹤?因為硬體跑不動。
上古時代的遊戲機
GPU訪問global memory ,pointer dereference 帶來大幅性能下降,耗時超過10倍。
沒辦法,只能寫出參數超10個的噁心函數,人肉展開介面函數的實現,而不是傳介面,利用介面機制在kernel里執行介面函數。拳皇中的人物變色是如何實現的?
FC 遊戲機的工作原理是怎樣的? - 電子
KONAMI 的《魂斗羅》(Contra)中角色為什麼要「蘿莉式屈腿俯卧」? - 遊戲
《超級馬里奧3》使用了什麼樣的技術可以在128KB中寫進這麼多東西? - 遊戲開發
對以上回答者表示衷心的感謝!
上一家公司媽蛋的硬體組選了個傻逼晶元,沒有da功能,佔用了一個定時器搞pwm替代da,害我要在另一個定時器里實現2個功能,然而定時器頻率太慢電壓轉換性能跟不上,最後還是換晶元了,前後折騰了我一個月
很簡單的例子啊,比如為什麼 FC 超級瑪麗裡面發射火球和加速都是 B 鍵嗎?因為 FC 手柄就八個鍵,右手能按 AB 兩個,沒了。一代問題還不嚴重,到了三代,拿起物體這個動作也只能用 B 鍵,於是你會發現一個鍵給安排了三種操作,吃了火花之後拿起物體就容易誤操作。若是說 SMB3 的操作衝突並不嚴重的話,惡魔城的操作就是手柄按鍵不足的受害者了。副武器用 ↑+B 這麼蛋疼的組合鍵才能發,就是因為手柄的緣故。而且這邊因為 ↑ 本身還會給走樓梯用,FC 惡魔城令人髮指的高難度很大程度就是這個蛋疼的操作導致的。超任一次給手柄新加了四個按鍵,於是 SMW 的旋轉跳就使用了獨立的按鍵(A,原來的跳移動到 B,加速則移動到 X/Y),這個三鍵配置就再沒變過,用到 WiiU。3D 遊戲早期因為沒有搖桿,動作遊戲很流行所謂的坦克式操作,玩過生化危機 1 的肯定深有感觸。
所以你明白為啥老任在 N64 上面研究手柄搞到主機推遲銷售一年了吧。
最典型的莫過於遊戲開發。
遊戲當然也是一種軟體,其受硬體的限制比一般的軟體要大不少,多少人升級硬體配置的目的,不是為了玩遊戲能流暢一些?升級配置是為了打開網頁、運行office,這樣的佔比例太少了。國內某top5的遊戲公司,DirectX 11都出來好久了,但其旗下的大部分遊戲,引擎還都是基於多少年前的DirectX 9。開發工具也是老掉牙的VC++6.0,那會兒VS2013馬上就要出了。為了什麼?還不是為了使用最新的技術,國內好多玩家的機器就跑不動了?等我去翻翻遊戲機那個答案來補充輪子哥
當年顯示一個屏幕的文字會用掉你的一大半內存……誰會想到現在滑鼠拖動框選複製粘貼這樣的操作呢?
所有電子元件都有自己的工作電壓範圍、工作電流範圍、工作溫度範圍,從正確性出發,這些因素都必須被監測、警報、甚至自動處理。但實際上是根本沒辦法100%做到,只能做到非常小的一部分。
硬體設備用久了會因各種問題出現故障,比如內存條。現在民用電腦、手機、路由器等設備,幾乎都用的是無檢錯的普通內存,這類內存用久了會有很大概率出問題,接著又會在很大概率引起程序錯誤、數據損壞等事情。
硬體都這樣了,你讓軟體怎麼辦?更何況軟體方面為了節約時間,人為地忽略各種錯誤處理...魂斗羅趴下的動作
早期3d遊戲裡面妹子的稜錐。
從古至今的所有遊戲
自動控制、機器人控制等控制系統中,其實時控制演算法,至少得在一個控制周期內算完。因此因為運算速度的限制,很多涉及到在線矩陣求逆或在線求解約束優化問題的控制演算法,是近些年才有可能用到實時控制系統中去,而且也是先從控制周期長即採樣頻率低的系統中應用;即使現在的話,有些控制周期短即要求採樣頻率高的系統,也是需要藉助FPGA才可以應用這些演算法。
好奇當年阿波羅號是怎麼在線算卡爾曼濾波的,如果是的話,雖然沒有涉及到上述的如此複雜的在線演算法。當年人稱顯卡危機的Crysis……其實CE2引擎是支持地形破壞的,比如可以拿核彈炸山什麼的,但Crysis中沒有加入這個功能,因為當時的硬體實在是跑不動……
所有的插卡遊戲機?
最大的影響難道不是那個土薔?多少少年迷失在404。
如果現在硬體性能能在同功耗和價格的前提下提高5倍,你日常所用到的所有程序都不會是現在這個樣子了
玩怪物獵人沒有右搖桿
於是在psp時代,衍生了C手
3DS衍生了自動對準,觸摸屏控制視角和龐大的假肢
new 3DS的偽右搖桿我經歷過2g,p3,3g,4,4g,x,但我操作體驗最好的卻是psv上的mhp3在對可靠性要求極高的工業領域,為了節省成本,使用一塊大容量的NAND Flash同時存儲程序和數據,主控晶元還不支持冗餘啟動,校驗碼一旦發生翻轉就不可救,果然幾年之後,開始有設備啟動失敗,批量改造。似乎有些偏題,想說的是,軟體無法完全完成硬體的工作。
計算器
推薦閱讀:
※為什麼 Windows 環境下不能刪除被載入內存的磁碟文件?
※學3d max 要有什麼基礎?
※為什麼反病毒軟體對比瀏覽器等軟體反而更容易被獲得漏洞並利用?
※Instagram 為何不使用下拉更新而用按鈕更新?
※哪個 App 整體都挺好,但卻因為一個小細節讓你特別討厭?