紅白機時代的fc遊戲卡帶是類似於u盤的存儲設備嗎?這種遊戲是用什麼語言寫的?


1:不是U盤。U盤用的是USB協議,物理介面是串列通信,數據線加電源線總共才四個點的介面,而FC的卡帶,如下圖。是幾十點介面的。

外殼

裡面的板,最下面那一排裸露的金屬片就是卡帶和FC主機的接觸點,幾十點的介面。是用並聯的方式和FC主機連接的。2:最開始都是用6502的彙編語言編寫,說是6502的彙編是因為MOS6502這款CPU晶元和大家大學學到的《微機原理》里那些X86架構的彙編語言不同。每種不同架構的晶元都有不同的彙編語言,但他們又都叫彙編(Assembly)不要混淆了。
而後期,有了 BASIC for MOS 6502 的解釋器後,有些遊戲開始使用Basic來編寫。而十幾年前流行的文曲星上面好像也是用MOS6502晶元,有些型號的文曲星就自帶Basic解釋器。


不是,是 ROM,PC 極早期的 ROM,卡帶直連匯流排,讀卡帶就是 mov,寫卡帶(那些帶電池的卡)也是 mov。
遊戲多是用 6502 彙編寫成,可能後期用到了 C。


遊戲機卡帶經歷過3個時期
奧德賽時期是一個開關片,裡面是一組導線,這時候的遊戲機是模擬電路組成的,遊戲「程序」是硬體,不是軟體。

ATARI開始包括FC SFC MD在內的所有遊戲卡都是內存,內存分兩種RAM和ROM,後者只可讀不可寫,遊戲卡就是ROM。PCE的卡帶看上去非常薄,那是因為採用了特殊封裝,裡面仍然是ROM。

這是《馬尿全明星》的卡帶,內容如圖所示,下方是兩個ROM,一個是圖像,一個是程序,右上是附加的顯存,CIC是FC的專用密碼鎖,上方的MMC(內存控制器)是一種特殊晶元,由於FC可以直接定址的內存最大為64K,所以超過一定容量的遊戲必須用解碼器在內存的不同頁面進行跳轉(比如74LS161),將解碼電路集成化或者加上各種特殊功能就形成了MMC。
(盜圖勿怪)

SFC後期和N64的ROM使用了特殊的自解壓設計,ROM裡面保存的是壓縮文件,但是CPU可以直接讀取解壓後的文件內容,並且可以直接定址(印象中是,如有錯誤勿怪)。

從DS開始,卡帶的原理變為快閃記憶體,就和現在的SD卡一個結構,裡面是快閃記憶體顆粒,不帶控制器。

FC遊戲基本都是用6502的彙編寫的,有同學堅決不信我也沒辦法。
就我所知FC 86年以後的遊戲都是彙編為主,後期有些用到了C。實際上在N64之前任天堂不希望廠商使用C語言。用BASIC的FC遊戲大多是參加遊戲編程大賽的作品。

這是當初電視節目對NAMCO公司的採訪中錄到的一段源碼。
* THIS ROUTINE CONTROLS ENEMY SHIP MOTION AND ACTION
MOVESHIP
LDX PRIOR0
BPL MSAGAIN
LDX PRIOR1
BPL MSAGAIN
LDX PRIOR2
BPL MSAGAIN
LDX PRIOR3
BPL MSAGAIN
BMI MSOUT

MSAGAIN
CPX #$FF ;ARE WE OUT OF SHIPS
BEQ MSOUT ;BRANCH IF YES
JSR RANDOM
LDA ELFORLNK,X
STA NXTFLNK
LDA ELWHICH,X
BMI NOTGRND
CMP #$20
BNE NOTGRND
JSR MOVEGND ;MOVE GROUND OBJECTS
JMP MSINX
NOTGRND JSR MSANIMAT
JSR MSACTION ;DO THE ACTION FOR THE SHIP
MSINX
LDX NXTFLNK ;GO ON TO THE NEXT SHIP
JMP MSAGAIN
MSOUT RTS ;RETURN TO GAME CONTROL


FC卡帶介面包含PPU匯流排和6502匯流排,就是並行的地址線和數據線。


裡面是ROM存儲器,和地址重映射晶元(mapper),有些有電池記憶的SRAM。


FC的卡帶直接和CPU的內存匯流排和PPU匯流排連接,屬於內存,而不是外存。
FC並沒有第一方的統一開發包,每個廠家需要自己製作開發包。由於FC的RAM空間太小(2048位元組),C語言等高級語言基本沒有優勢可言,多數還是機械語寫的。


1 不是,卡帶是ROM 只讀存儲器,一次性寫入的,無法更改,少部分RPG和SLG有外掛擴展記憶體類似主板的BIOS,由外掛的電池供電(紐扣電池)組裝在卡帶里,售價比一般的卡帶高。FC最大的遊戲只有相當於1M的硬碟容量,在90年這已經是很了不起的容量了。

2 編程語言是basic


fc卡帶裡面也會帶有增強晶元,所以後期的fc遊戲和早期的fc遊戲相比畫面和體積提升相當大。例如MMC5晶元,加了1KB的內存,加了兩個矩形波音源,以及增強的圖像處理能力、支持更大的遊戲體積。


推薦閱讀:

希望自己做個機器人出來,應該對哪些專業知識有所了解?
能否用函數與數組直接實現多個矩陣相乘?
作為一個程序猿,馬克思的歷史唯物主義,唯物辯證法等馬克思哲學思想怎麼和寫代碼結合起來……?
你見過爬蟲的最高境界是什麼?
遊戲外掛編程如何系統學習?

TAG:遊戲 | 任天堂Nintendo | 電子遊戲 | 編程 | 遊戲機 |