為什麼魂斗羅只有128KB卻可以實現那麼長的劇情?

2021-10-05 07:56:32 字數 1009 閱讀 7334

個人覺得fc最神奇的遊戲還屬超級瑪麗,32個關卡,每關都不同,各種隱藏要素,好像**區才10多k,資料區10多k。

反彙編看完還是不敢相信這點東西能玩乙個童年… 現在helloworld的二進位制都可能比這大多了。

首先128k並不小,主要消耗儲存空間的不是程式。當然對於128k來說程式大小自然也要考慮,鑑於fc是八位機而且fc採用的是cisc處理器,一條指令就能完成很多事情,所以程式的大小也就現代64位risc處理器的十幾到幾百分之一。

資源才是大戶(包括影象、**、地圖資料、關卡資料等等)。就拿影象和**來說,影象在沒有壓縮之前 消耗儲存空間和畫素深度和大小有關。fc上的影象,畫素深度就2bit的索引而已 ,現在廣泛使用的真彩色是24bit,包含alpha的需要32bit,這裡就差了12倍到16倍。

影象大小更是差距巨大,fc普遍乙個角色也就是寬高十幾個畫素而已,與現在動輒寬高幾千畫素影象資源相比差了數萬倍到數百萬倍,所以影象資源消耗的儲存空間至少差了5~7個數量級。

**的話,fc採用的是8位midi**,而現在普遍用的是pcm**。模擬到影象中,就像向量影象和點陣圖的區別。

總之pcm**的大小和取樣深度、取樣率、通道數以及長度有關,midi僅僅和譜子的複雜度有關,所以fc實際上對空間的要求和現代遊戲相比至少差了5~7個數量級。你把128k放大10w倍到1000w倍,你就不覺得小了。

對於什麼64k 3d程式什麼的,這完全是兩碼事,fc程式小只是因為需求的資源本來就很小而已,而那種64k 3d程式是因為採用procedural generation方法,簡單的說就是通過數學來描述,而不是通過記錄結果的取樣,procedural generation不光需要的儲存空間極小

而且可以做到無限精度,缺點是難以描述複雜事物,並且對算力要求高,而不是用了什麼外星壓縮法。

1.遊戲大量復用圖塊,圖塊還使用調色盤索引,好像每個畫素才占用2bit。

2.程式設計師精心優化各種資料結構,每一bit儲存都不浪費。

3.聲音只儲存發聲通道的調製引數序列,能復用就復用。

4.**全是彙編寫成,直接操作硬體,基本不存在浪費的指令。

為什麼魂斗羅只有128KB卻可以實現那麼長的劇情?

現代程式設計師a和1980年代遊戲程式設計師b的對話 a 為什麼你用128kb能實現這麼多畫面 動畫?b 128kb還不夠麼?其實為了表現力已經相當奢侈了,加了很多不重要的細節。a 就說你們的 這個 我壓到最低位元速率的 也得至少1mb吧。b 你怎麼壓的?一首背景 怎麼可能超過1kb。a 那你實現全...

補碼10000000為什麼可以表示 128?

另外,什麼是補碼?補碼的設計意義是什麼?讓我們忘記公式,來看看作者的回答。很多人並不理解補碼。補碼就是同餘啊。1000000是正128你知道吧,正負128模256是同餘的。加減乘可以直接算也是同餘的定理決定的,而不是湊出來的巧合,哪可能湊出這種東西?8位只能表示256個數,0到255,但我還想表示一...

為什麼byte取值是 128到127

建議你baidu下 補碼 就會比較清楚了,第一位是符號位。00000000 0 11111111 1 10000000 128 01111111 127 負數的補碼 負數的補碼是對其原碼逐位取反,但符號位除外 然後整個數加1。同乙個數字在不同的補碼表示形式裡頭,是不同的。比方說 15的補碼,在8位2...