NES專題——NES的遊戲硬件

目錄

摘要

一、墨盒(Cartridges)

二、Famicom磁盤系統(Famicom Disk System )

三、遊戲精靈(Game Genie )

四、控制手柄

五、Zapper(捕捉器)

六、參考資料


 

摘要

本文介紹了NES遊戲機的相關遊戲硬件,本文參考《Nintendo Entertainment System Documentation(任天堂娛樂系統文檔)》,如需進一步的瞭解可以查閱該文檔。

 

一、墨盒(Cartridges)

NES的遊戲都是基於遊戲包的。遊戲本身是存儲在墨盒的ROM芯片內的。一些墨盒還具有RAM功能,由電池供電,以使遊戲得以保存。(感覺叫“墨盒”怪怪的,就是那個遊戲卡帶)。

卡帶

下圖顯示了Famicom和NES的墨盒之間的差異。任天堂爲Famicom設計了一個基本的墨盒,但是其他開發者設計了自己的墨盒,有各種形狀、大小和顏色。任天堂用NES按照標準設計生產了墨盒。儘管NES的更大,但其中大部分只是浪費空間。Famicom盒式磁帶有60針連接,而NES盒式磁帶有72針連接,這使得兩種格式在沒有適配器的情況下不兼容。下圖顯示了NES的內部,從主板的底部看。紅線表示開袋連接到的72針連接器。

插入到NES的卡帶
NES卡帶內部

1、內存映射器(Memory Mappers)

NES有限的內存對於早期的遊戲來說已經足夠了,但是隨着遊戲變得越來越複雜,遊戲變得越來越大,內存也變得不足。爲了允許卡帶包含更多的ROM,NES必須能夠在需要的時候交換內存中的數據。由於NES不能解決$FFFF地址以外的問題,所以切換了卡帶本身的硬件。這種硬件被稱爲內存映射器(memory mapper)或MMC(內存管理芯片)。

內存映射的基本思想是當系統需要訪問ROM庫中當前沒有加載到內存中的數據時,軟件指示需要切換Bank,所選的Bank被加載到內存中的一個頁面中,替換現有的內容。內存映射器的使用是NES長久的因素之一,這使得它能夠克服技術缺陷。

NES使用了一些內存映射器,一個完整的列表可以在附錄c中找到。下面描述了一些更常見的內存映射器,關於它們如何工作的詳細說明可以在附錄D中找到。(附錄C和D在《任天堂娛樂系統文檔》中,詳細瞭解可以看該文檔,圖太多就不在這貼了。)

(1)UNROM交換機是第一個允許對NES遊戲進行Bank交換的芯片。UNROM只允許PRG-ROM的切換。它不支持CHR-ROM。使用UNROM的16 KB PRG-ROM Bank的最大數量是8。

(2)CNROM交換機允許交換CHR-ROM,但不允許交換PRG-ROM。因此,程序代碼的大小並不比不使用內存映射器的遊戲大,因此可以生成更復雜的圖形

(3)MMC1允許同時切換PRG-ROM和CHR-ROM。該芯片還允許更改表鏡像的名稱,並支持保存到RAM芯片。使用MMC1的16 KB PRG-ROM Bank的最大數量是8。MMC1是最常用的內存映射器,被許多遊戲使用,包括“Metroid”和“Legend of Zelda”。

(4)MMC3允許同時切換PRG-ROM和CHR-ROM。該芯片還允許選擇屏幕滾動,即允許部分屏幕移動,而部分保持靜止,並能夠產生irq。使用MMC3的16 KB PRG-ROM Bank的最大數量是32。MMC3是使用次數第二多的芯片,包括《超級馬里奧兄弟2》和《超級馬里奧兄弟3》。

2、文件格式

可以使用模擬器運行的軟件通常被稱爲ROM鏡像,以參考用於存儲它的原始ROM芯片。一個簡單的卡帶內容轉儲不太可能是足夠的,因爲它沒有辦法確定文件的每個部分意味着什麼。出現了兩種不同的文件格式來提供這些信息。iNES文件格式最初是由Marat Fayzullin定義的,用於他的iNES仿真器中。自那以後,大多數仿真器都使用了這種格式,它是ROM映像最常用的格式。INES格式的文件應該有文件擴展名*.nes。該格式在文件的開頭提供一個16字節的neader,其中包含重要信息。描述的格式如下表。

起始字節 長度(字節) 內容
0 3 固定爲“NES”,作爲iNES文件的標識。

3

1 固定爲$1A,同樣作爲文件的標識。
4 1 16KB PRG-ROM Bank的數目,PRG-ROM是用來存儲程序代碼的ROM區域。
5 1 8KB CHR-ROM/VROM Bank的數目,CHR-ROM(字符ROM)和VROM是同義詞,是用來存儲圖像信息(圖案表)的ROM區域。
6 1

ROM 控制字節1:

* Bit 0——表示遊戲使用的鏡像類型,0爲水平鏡像,1爲垂直鏡像。

* Bit 1——內存位置有電池支持的RAM $6000~$7FFF。

* Bit 2——表示存在一個512字節的訓練器在內存地址 $7000~$71FF。

* Bit 3——如果這個位被設置,它將覆蓋Bit 0 使得4個鏡像被使用。

* BIt 4~7——mapper號的低4位。

7 1

ROM 控制字節2:

* Bits 0~3——保留位,永遠爲0。

* Bits 4~7——mapper號的高4位。

8 1 8KB RAM Bank的數目,爲了與以前的iNES格式兼容,爲0時表示RAM的第1頁。
9 7 保留位,永遠爲0。

 如果有訓練器的話,在文件頭之後是512字節的訓練器,否則ROM Bank從這裏開始,從PRG-ROM開始,然後是CHR -ROM。該格式允許多達256種不同的內存映射器(mapper)。每個映射器(mapper)被分配一個特定的數字,通過將控制字節2的第4-7位向左移動4位,然後將控制字節1的第4-7位相加,就可以得到映射器數字。完整的mapper列表和他們的官方iNES mapper編號可以在附錄C中找到,如下表:

mapper列表

“iNES格式有許多問題。它經常被誤用,例如人們在標題中插入他們的名字。最近,Marat Fayzullin在NES開發中的參與似乎有所減少,在沒有對格式進行任何官方更新的情況下,許多開發人員都指定了自己的更改,其他人也在設計自己的映射器編號。這導致格式越來越不準確,”

UNIF(Universal NES Interchange format)的發展。

UNIF格式文件通常具有擴展名*.unf,並且包含一個標識格式和修訂號的頭,後跟一系列塊。每個塊都包含一個ID字符串,用於標識塊的用途、塊的字節長度和數據。這種格式與XML非常相似,儘管塊不是關閉的,而標記是在XML中關閉的。

UNIF格式根據使用的電路板的名稱而不是通過一個數字來標識每個映射器。這確保只能使用正版板。儘管UNIF格式在iNES格式上有了很大的改進,但目前它受到較少模擬器的支持,並且格式中可用的ROM文件也較少。在未來幾年內,iNES格式應逐漸被UNIF取代。

 

二、Famicom磁盤系統(Famicom Disk System )

任天堂在1986年初發布了Famicom磁盤系統,部分是爲了應對芯片價格的上漲,部分是爲了讓Famicom更像一臺電腦,。該系統允許Famicom運行存儲在2.5英寸磁盤上的遊戲,磁盤上有32kb的RAM和8kb的VRAM,而不是傳統的墨盒。Famicom磁盤系統附在Famicom上,Mario Golf磁盤在下圖也可以看到。任天堂希望,由於容量更大,該系統能夠支持更大的遊戲,同時也能爲消費者提供更便宜的價格。這些磁盤也可以重複使用,允許玩家在專門的服務亭用一個新的遊戲替換一個遊戲,只需支付少量費用,而不必支付新磁盤的費用。1986年售出近200萬個磁盤系統。不過,該系統並不受許可證持有者的歡迎,他們必須決定發佈遊戲的格式,任天堂對磁盤系統遊戲的嚴格許可也使得該格式不受歡迎。當半導體價格下降時,同樣價格的盒帶可能比磁盤具有更高的容量。雖然到1990年爲止,已經售出了400多萬個磁盤系統,但盒式磁帶仍然是存儲遊戲的主要方法,Famicom磁盤系統也從未在亞洲以外地區發佈過。

Famicom連接到Famicom磁盤系統

 

“馬里奧高爾夫球”磁盤

 

三、遊戲精靈(Game Genie )

遊戲精靈是一種允許玩家通過調整代碼執行方式來作弊的設備。遊戲精靈是由代碼大師設計的,由Galoob Toys發行。其他欺騙設備通過鎖定給定內存位置的值來工作。例如,如果遊戲將剩餘的生命值存儲在$1000的位置,那麼將此值鎖定爲5將爲玩家提供無限的生命值。然而,遊戲精靈是在ROM而不是RAM上工作的。它監視盒式磁帶端口的地址總線,如果檢測到給定的地址,則將所需的值寫入數據總線。

遊戲精靈

 

四、控制手柄

6502 CPU使用內存映射I/O(輸入/輸出)。這意味着與內存相同的指令和總線用於與I/O設備通信,即寫入特定的內存位置來寫入相應的設備。在NES中,輸入設備的I/O端口爲$4016和$4017,如下表(“$”這個符號在這裏代表十六進制的意思)。

內存地址 操作 功能描述
$4016 可讀可寫

Joypad 1:

* Bit 0——寫入時從joypad讀取數據或導致joypad頻閃。

* Bit 3——指示Zapper是否指向精靈。

* Bit 4——在釋放捕捉器觸發器時清除。

只有Bit 0 參與寫入。

$4017 可讀可寫

Joypad 2:

* Bit 0——寫入時從joypad讀取數據或導致joypad頻閃。

* Bit 3——指示Zapper是否指向精靈。

* Bit 4——在釋放捕捉器觸發器時清除。

只有Bit 0 參與寫入。

原NES使用矩形控制手柄,如下圖所示。鍵盤上有四個按鈕,A,B,開始和選擇,還有一個用於控制移動的四向十字。儘管發佈了許多變體,通常還帶有慢動作和渦輪點火等附加功能,但到目前爲止,最常用的還是原始設計。

原始的NES控制手柄

系統從I/O端口多次讀取以獲取有關控制器的所有信息。前8次讀取中的每一次都按順序A、B、開始、選擇、上、下、左、右指示標準控制器上一個按鈕的狀態。第一個控制器連接到端口$4016,第二個連接到$4017。使用四播放器適配器可以將四個控制器連接到系統,儘管這種情況很少見。在這種情況下,控制器1和控制器3連接到$4016,控制器2和控制器4連接到$4017。接下來的8次讀取將獲得端口上第二個控制器的狀態,否則將忽略它們。

讀取17-20次檢索標識設備是否已連接的簽名,如果已連接,則檢索設備類型。如果joypad連接到$4016,則返回值爲01b;如果一個joypad連接到$4017,則返回值爲10b。在循環重新開始之前,不需要再讀取4次。

從I/O設備讀取數據的過程可以通過使用衝程方法重置。當需要重置時,首先向端口寫入1,然後寫入0表示重置。

 

五、Zapper(捕捉器)

當NES首次在美國推出時,任天堂包括了一種叫做Zapper的輕槍。下圖顯示了Zapper的原始版本,儘管後來顏色變爲橙色。通過使用瞄準鏡瞄準,玩家可以產生相當精確的結果。有幾款遊戲提供了Zapper支持,包括獵鴨、口香糖和狂野槍手。

原始的NES Zapper光槍

“Zapper是通過接收屏幕上的光線來工作的。必須正確調整電視的對比度和亮度控制,否則鏡頭可能無法註冊。(字符應儘可能明亮,背景區域應儘可能暗。)

從本質上說,這個捕獵器的工作原理是在它瞄準的地方測量光的強度。當系統檢測到觸發器被觸發時,它會在屏幕上的精靈周圍畫一個白色框。然後,Zapper可以檢查顏色強度,並確定它是指向屬於背景的白色區域(sprite)還是黑色區域(dark area)。

 

六、參考資料

《Nintendo Entertainment System Documentation(任天堂娛樂系統文檔)》

鏈接:https://pan.baidu.com/s/1QhbK6ADAHqe1mHkKGALH6A  提取碼:rr69

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章